+
   ʎ綐c                    s   ^ RI Ht ^ RI Ht ^ RI Ht ^ RI Ht ^ RI Ht ^ RI Ht ^ RI Ht ^ RI Ht ^ R	I	t	^ R	I
t
^ R	It^ R	It^ R	It^ R	It^ R	It^ R	It^ R	It^ R	It^ R	It^ R	ItR
sR R ltR R ltRt ^ R	ItRtRt ^ R	ItRtRt ^ R	ItRtRt ^ R	I t RtRt! ^ R	I"t"Rt!]"PF                  ! 4       t$Rt% ^ R	I&t&Rt%]PN                  ! R
4      t(]	PR                  PU                  ]	PR                  PW                  ],4      R4      t-]P\                  ! R4      t/]/]-RR3t0]/]-RR3t1]/]-RR3t2/ RRRRRRR/bRRRRRRR /bR!RRRRRR"/bR#RRRRRR$/bR%RRRRRR&/bR'RRRR(RR)/bR*RRRR(RR+/bR,RRRR(RR/bR-RRRR(RR./bR/RRRR(RR0/bR1RRRR2RR3/bR4RRRR2RR5/bR6RRRR2RR7/bR8RRRR9RR:/bR;RRRR9RR(/bR<RRRR9RR/bR=RRRR>RR?/bR@RRRR>RRA/RBRRRR>RRC/RDRRRR>RRE/RFRRRR>RRG/RHRRRR>RR/RIRRRR>RRJ/RKRRRRLRRM/RNRRRRLRR+/RORRRRLRRP/RQRRRRLRR/RRRRRRSRRT/RURRRRSRRV/RWRRRRSRRX//Ct3RY. R|ORZ. R|OR[R\.R]R\.R^R_.R`R`.RaRa.RbRa.RcRc.RdRc.ReRe.RfRf.RgRg.RhRh.RiRi./t4R}t50 R~mt6Rt7Rt8]!'       d	   RRj Rk llt9Rl Rm lt:RRn Ro llt;Rp Rq lt<]Pz                  ! R	Rr7      Rs Rt l4       t>]Pz                  ! R	Rr7      Ru Rv l4       t? ! Rw Rx4      t@RtARy Rz ltB]CR{8X  d
   ]B! 4        R	# R	#   ] d     ELsi ; i  ] d     ELxi ; i  ]3 d    Rt ELi ; i  ]3 d    Rt ELi ; i  ]3 d    Rt! ELi ; i  ]3 d    Rt% ELi ; i)    )Any)List)Tuple)Dict)Set)Optional)Iterable)CallableNzibus-typing-boosterc                0    V ^8  d   QhR\         R\         /#    textreturnstrformat   "2/usr/share/ibus-typing-booster/engine/itb_emoji.py__annotate__r   0   s     . .C .C .    c                 s8    \         P                  ! \        V 4      # N)gettextZdgettext
DOMAINNAMEr      &r   _r   0   s    J--r   c                r	   r
   r   r   r   r   r   r   4   s      S S r   c                 s    V # r    r   r   r   N_r   4   s	    
 Kr   FTz../datazibus-typing-booster/dataz/usr/share/unicode/ucdz/usr/share/unicode/z/usr/share/unicode/emojiz/usr/share/unicode/ucd/z/usr/share/unicode/cldr/common/z/local/mfabian/src/cldr/common/CcvalidmajorZOtherminorZControlZCfZFormatZCnzNot assignedCozPrivate useCsZ	SurrogateZLlZLetterZ	LowercaseZLmZModifierZLoZLtZ	TitlecaseZLuZ	UppercaseZMcZMarkzSpacing combiningZMeZ	EnclosingZMnZ
NonspacingZNdZNumberzDecimal digitZNlZNoZPcZPunctuationZ	ConnectorZPdZDashZPeZCloseZPfzFinal quoteZPizInitial quoteZPoZPsZOpenZScZSymbolZCurrencyZSkZSmZMathZSoZZlZ	SeparatorZLineZZpZ	ParagraphZZsZSpacez1.0z2.0z3.0z9.0z4.0z5.0z10.0z11.0z12.0z12.1z13.0z13.1z14.0z15.0z15.1z16.0z17.0c                s<    V ^8  d   QhR\         R\         R\         /# )r   r   targetr   r   r   r   r   r   r     s!     ) )S )# ) )r   c                 s    \         '       d   VR 8X  d   V # Rp\        P                  V 4       F  pW#V,          ,          pK  	  V# )orig )IMPORT_PYKAKASI_SUCCESSFULKAKASI_INSTANCEZconvert)r   r$   resultZitems   &&  r   kakasi_convertr*     sB    H *)Vv-=K#++D1D6l"F 2r   c                s0    V ^8  d   QhR\         R\        /# )r   	codepointr   )intboolr   r   r   r   r   6  s     8 8 8 8r   c           	      sz    \        \         UUu. uF  w  rYu;8*  ;'       d    V8*  Mu NK  	  upp4      # u uppi r   )anyVALID_RANGES)r+   xZy   &  r   	_in_ranger2   6  s3    2 )56		1	68 86s    7
c                s    V ^8  d   QhR\         \        ,          R\         \        ,          R\        R\        \        \        \        \
        .\
        3,          ,          3,          /# )r   dirnames	basenamessubdirr   )r   r   r   r   r   r   r   r   r   r   r   R  sR     1 13-1C=1 1 #33%*1E(F#FG1r   c           	      s|   V EF  pV  EF  p\         P                  P                  \         P                  P                  WBV4      4      p\         P                  P	                  V4      '       Ed   VP                  R 4      '       d-   \        P                  RV4       V\        P                  3u u # VP                  R4      '       d9   \        '       d-   \        P                  RV4       V\        P                  3u u # VP                  R4      '       d9   \        '       d-   \        P                  RV4       V\        P                  3u u # \        P                  RV4       V\        3u u # VR ,           p\         P                  P	                  V4      '       d-   \        P                  RV4       V\        P                  3u u # \        '       d[   VR,           p\         P                  P	                  V4      '       d-   \        P                  RV4       V\        P                  3u u # \        '       g   EK9  VR,           p\         P                  P	                  V4      '       g   EKj  \        P                  RV4       V\        P                  3u u # 	  EK  	  \        P                  RW4       R# )	.gzzFound gzip file: %s.bz2zFound bzip2 file: %s.xzzFound xz file: %szFound uncompressed file: %szCould not find any "%s" in "%s")r&   N)ospathZ
expanduserjoinZexistsZendswithLOGGERZdebuggzipZopenIMPORT_BZ2_SUCCESSFULbz2IMPORT_LZMA_SUCCESSFULlzmawarning)	r3   r4   r5   basenamedirnameZ	base_pathZgz_pathZbz2_pathZxz_paths	   &&&      r   _find_path_and_open_functionrE   R  s   $ G**Wh79Iww~~i((%%e,,LL!6	B%tyy11%%f--2G2GLL!7C%sxx00%%e,,1G1GLL!4i@%tyy11:IF!4((%'Gww~~g&&2G<++$$$v-77>>(++LL!7B$chh//%%#e+77>>'**LL!4g>#TYY//9   < NN4iJr   c                r	   )r   languager   r   r   r   r   r   r     s        r   c                 s   \         p\        P                  ! V 4      pVP                  pVP                  '       d   VR VP                  ,           ,          p\        P
                  ! V .4       F{  pVR,           3p\        WRR7      w  rgV'       g   K&  \        P                  P                  V4      P                  V4      '       g   K\  \        P                  P                  V4      u # 	  R# )r   .xmlannotationsr5   r&   )CLDR_ANNOTATION_DIRNAMESitb_utilZparse_localerF   Zscriptexpand_languagesrE   r9   r:   rC   
startswithZabspath)rF   r3   ZlocaleZacceptable_match	_languager4   r:   Zdummy_open_functions   &       r   find_cldr_annotation_pathrO     s     (H""8,F}}}C&--//..z:	')	&B'7#4BGG$$T*556FGG77??4(( ; r   Zmaxsizec                <    V ^8  d   QhR\         R\         R\        /# r   labelmatch_stringr   r   floatr   r   r   r   r     s!     . .# .S .U .r   c                 s0   \         P                  ! V P                  4       4      p R p\        V P	                  4       4      pV P                  RR4      p\        VP	                  RR7      \        RR7      p\        V4      pW68X  d
   VR,          pV F&  pWp8X  g   K  T\        V4      ^8X  d   RMR	,          pK(  	  T pTp	V F  pVP                  V4      p
V
^ 8  d]   V
^ 8X  g   W^,
          ,          R8X  dB   Y*^ 8X  d   R
MR,          pV\        V4      ,          pVRV
 W\        V4      ,           R ,           pV	P                  V4      p
V
^ 8  g   K  Y*^ 8X  d   RMR,          pV\        V4      ,          pV	RV
 W\        V4      ,           R ,           p	K  	  V# )         r&   NZsepT)keyZreverseg     @@g     r@      i@g      ^@g      Y@g      D@g      4@)	rK   remove_accentslowersetsplitreplacesortedlenfind)rS   rT   total_scoreZlabel_wordsZlabel_no_spacesZ	word_listZword_setwordZ	tmp_labelZtmp_no_spacesZmatch_starts   &&         r   _match_classicrf     s    ##EKKM2EKekkm$KmmC,O|))d)3dKI9~H v =C	Na$75UBK	  I#MnnT*!a91_#=#Dq(8ueCs4y(
 &l{3icRVi@W@X6YY	 $((.!!#34=K3t9$K
 *,;7-VYZ^V_H_H`:aaM- . r   c                rQ   rR   rU   r   r   r   r   r     s!     ? ?C ?s ?u ?r   c                 s    \         P                  ! V P                  4       4      p \        P                  P                  W4      # r   )rK   r\   r]   	rapidfuzzZfuzzZtoken_set_ratio)rS   rT      &&r   _match_rapidfuzzri     s/     ##EKKM2E>>))%>>r   c                   st  a  ] tR tRt o RVV 3R lR lltRWV 3R lR lltRXV 3R lR lltV 3R lR	 lt]P                  ! R
R7      RXV 3R lR ll4       t
V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R  lR! ltV 3R" lR# ltV 3R$ lR% ltV 3R& lR' ltV 3R( lR) ltRYV 3R* lR+ lltRYV 3R, lR- llt]P                  ! R
R7      V 3R. lR/ l4       tRZV 3R0 lR1 lltRZV 3R2 lR3 lltRZV 3R4 lR5 lltRZV 3R6 lR7 lltR[V 3R8 lR9 llt V 3R: lR; lt!V 3R< lR= lt"V 3R> lR? lt#V 3R@ lRA lt$V 3RB lRC lt%V 3RD lRE lt&V 3RF lRG lt'V 3RH lRI lt(V 3RJ lRK lt)V 3RL lRM lt*V 3RN lRO lt+V 3RP lRQ lt,V 3RR lRS lt-RTt.V t/RU# )\EmojiMatcheri  c                sp   < V ^8  d   QhRS[ S[,          RS[RS[RS[RS[RS[RS[RS[R	S[R
S[RS[RR/# )r   	languagesunicode_dataunicode_data_allunikemet	nameslistemoji_unicode_minemoji_unicode_max	cldr_datavariation_selectorromajimatch_algorithmr   N)r   r   r-   r   __classdict__   "r   r   EmojiMatcher.__annotate__  s     U$ U$(3- U$#U$#'U$  U$ !	U$
 %(U$ %(U$ !U$ &)U$ U$ #&U$ 9=U$r   c                s   Wn         / V n        \        P                  ! V P                   4       F  p\        P
                  ! \        V.R 7      pV'       dU   RV,           R,           \        ,           R,           V9   d.    \        P                  ! \        V.R 7      V P                  V&   K|  RV P                  V&   K  	  W0n	        W`n
        Wpn        Wn        Wn        / V n        . V n        \         '       da   V P                    FP  p\"        P$                  ! V4      '       g   K!  V P                  P'                  \"        P(                  ! V4      4       KR  	  / V n        / V n        \.        V n        RV n        V P5                  V4       V'       dQ   V P7                  4        V P9                  4        V'       d   V P;                  4        V'       d   V P=                  4        V P?                  4        V PA                  4        V PC                  4        V PE                  4        V PG                  4        V PI                  4        V'       dL   \        P                  ! V P                   4       F'  pV PK                  VR4       V PK                  VR4       K)  	  V PM                  4        R#   \        3 d    RT P                  T&    EK  i ; i))rk   Z/z/LC_MESSAGES/z.moN      N@rH   ZannotationsDerived)'
_languages_gettext_translationsrK   rL   r   rc   r   ZtranslationOSError_unicode_data_all_emoji_unicode_min_emoji_unicode_max_variation_selector_romaji_unicode_blocks_enchant_dictsIMPORT_ENCHANT_SUCCESSFULenchantZdict_existsappendr   _emoji_dict_candidate_cacherf   _match_function_good_match_scoreset_match_algorithm_load_unicode_data_load_name_aliases_load_unikemet_load_nameslist_load_unicode_emoji_data_load_unicode_emoji_sequences!_load_unicode_emoji_zwj_sequences_load_derived_age_load_unicode_emoji_test_load_emojione_data_load_cldr_annotation_data_load_unicode_blocks)selfrk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rF   Zmo_files   &&&&&&&&&&&&  r   __init__ZEmojiMatcher.__init__  s3   4 $57" 11$//BHll:(DG(No5
BUJ@;B;N;N"xj<:D..x8
 8<**84# C$ "2"3"3#5 13 $$ OO&&x00''..w||H/EF , CENP 	:H(,  1 ##%##%##%$$&%%'**,..0 %%'  "$55dooF//-H//:NO G 	!!#W  { @;?D..x8@s   >*J##KKc                $   < V ^8  d   QhRS[ RR/# )r   namer   Nr   rv   rx   r   r   ry   <  s       d r   c                s    / V n         VR 8X  d!   \        '       d   \        V n        RV n        R# VR8X  d   RV n        \
        V n        R# RV n        \
        V n        R# )rg   rz   NZclassicr[   )r   IMPORT_RAPIDFUZZ_SUCCESSFULri   r   r   rf   )r   r   rh   r   r   Z EmojiMatcher.set_match_algorithm<  s[     !#;$?$?#3D %)D"9%*D"#1D !&-r   c                r   )r   rs   r   Nr   rv   rx   r   r   ry   S  s     6 6 6$ 6r   c                s     / V n         Wn        R # r   )r   r   )r   rs   rh   r   set_variation_selectorZ#EmojiMatcher.set_variation_selectorS  s      !##5 r   c                s0   < V ^8  d   QhRS[ S[,          /# r   r   )r   r   rv   rx   r   r   ry   f  s     % %tCy %r   c                s,    \        V P                  4      # r   )listr{   )r   r   r   get_languagesZEmojiMatcher.get_languagesf  s    2 DOO$$r   i  rP   c                ,   < V ^8  d   QhRS[ RS[ RS[ /# )r   emoji_stringrs   r   r   rv   rx   r   r   ry     s*     Z Z #Z9<ZJMZr   c                sP   VR	9   d   V# VP                  R R4      P                  RR4      pVR
9  d   V# RV^ ,          u;8:  d
   R8:  d    V#  . pVR8X  d   RMR p\        V4       F  w  rVVP                  V4       V\        V4      ^,
          8H  pV'       g   W^,           ,          MRpV\        9   p	V\        9  g   KZ  RV P                  V4      9   g   Kr  VR8X  g   RV P                  V4      9  g   K  V	'       d   K  VP                  V4       K  	  RP                  V4      # )   ︎   ️r&   emojir   u   🇦u   🇿EmojiZEmoji_Presentation>   r   r   )r   r   )r`   	enumerater   rb   SKIN_TONE_MODIFIERS
propertiesr;   )
r   r   rs   r)   Zselectorindex	characterZis_lastZnext_characterZis_skin_tone_nexts
   &&&       r   variation_selector_normalizeZ)EmojiMatcher.variation_selector_normalize  s   L //#++Hb9AA(BO%66<?:l: ; 1W<8( ), 7EMM)$s<0144G<C\!)4N .2E E!44ty99'61,DOOI4NN))h' !8 wwvr   c                sF   < V ^8  d   QhRS[ S[S[3,          RS[RS[RR/# )r   emoji_dict_key
values_keyvaluesr   N)r   r   r   rv   rx   r   r   ry     s;     %, %,!#s(O%, %, 	%, !	%,r   c                sz   V'       d   V'       d	   V'       g   R # V P                  V^ ,          RR7      V^,          3p V P                  V,          p\        V\        4      '       d/   W%9  d   . WR&   WR,          pV F  pWv9  g   K  Wg.,          pK  	  R # W5V&   R #   \         d    / pYPP                  T&    Lgi ; i)Nr&   rs   )r   r   ZKeyErrorZ
isinstancer   )r   r   r   r   Znormalized_keyZ
inner_dictZexistingvalues   &&&&    r   _add_to_emoji_dictZEmojiMatcher._add_to_emoji_dict  s     Zv--q!b . :1	:)).9J
 fd##+)+
&!-H('H  
 &,z"  	:J/9^,	:s   B B:9B:c                   < V ^8  d   QhRR/# r   r   Nr   rv   rx   r   r   ry     s     (7 (7 (7r   c           
     s.   \         pRp\        W4      w  r4V'       d   Vf   R#  V! VRRR7      ;_uu_ 4       p\        P                  ! R4      p\        P                  ! R4      pRpRp	V F  p
VP	                  V
4      pV'       d,   VP                  4       w  r\        \        V^4      4      pVR3p	WP                  9  d   KY  VP	                  V
4      pV'       g   Kt  VP                  R	4      pVP                  R
4       F%  pV P                  V	R	VP                  4       .4       K'  	  K  	  RRR4       R#   + '       g   i     R# ; i  \        \        3 d8   p\        P!                  RTTP"                  P$                  T4        Rp?R# Rp?ii ; i)NamesList.txtNrtutf-8ZmodeZencodingz([0-9A-F]+)\s(\S.*\S)z\s+=\ (?P<names>\S.*\S)r&   ennames,z-Error while loading NamesList from %s: %s: %s)r   )r&   r   )UNICODE_DATA_DIRNAMESrE   recompilematchgroupschrr,   r   groupr_   r   stripr}   IOErrorr<   	exception	__class____name__)r   r3   r4   r:   open_functionZnameslist_fileZcode_point_line_patternZname_line_patternr   r   liner   codepoint_stringZ_official_namer   r   error   &                r   r   ZEmojiMatcher._load_nameslist  sl    )&	 <!!},	7tg7 7:H*,**5M*N'$&JJ/I$J!!!++D399$?E;@<<>8('*3/?+D'E*6)=%-=-== -33D9Eu %G 4$)KK$4D 33 .$**,I %5 ,7 7 7 7( ! 	7?eoo..7 7	7s<   E B"D8AD8.E 8E		E 	E F,FFc                r   r   r   rv   rx   r   r   ry   =  s     +7 +7 +7r   c           
     s   \         pRp\        W4      w  r4V'       d   Vf   R#  V! VRRR7      ;_uu_ 4       pV EFA  pVP                  R4      ^ ,          P                  4       pV'       g   K4   R VP	                  R^4       4       w  rxp	\        \        TR,          ^4      4      p
T
R	3pYP                  9   g   K  TR
8X  d@   T	P                  R4      p	T	P	                  R4       F  pT P                  TRT.4       K  	  K  TR8X  g   K  RT	9  d   T P                  TRT	.4       K  R T	P	                  R^4       4       w  rT P                  TRT.4       T P                  TRTP                  R4      .4       EKD  	  RRR4       R#   \
         d     EK_  i ; i  + '       g   i     R# ; i  \        \        3 d7   p\        P                  RY?P                  P                  T4        Rp?R# Rp?ii ; i)Unikemet.txtNr   r   r   #c              3   @   "   T F  qP                  4       x  K  	  R # 5ir   r   .0part   & r   	<genexpr>.EmojiMatcher._load_unikemet.<locals>.<genexpr>M  s      8J5HTJJLL5H   Z	:r   NNr   ZkEH_DescZ.r   r   ZkEH_FuncrX   keywordsc              3   r   r   r   r   r   r   r   r   ^  s      9R=PTJJLL=Pr   z()*Error while loading Blocks from %s: %s: %s)r   )r   rE   	partitionr   r_   
ValueErrorr   r,   r   r   r}   r   r<   r   r   r   )r   r3   r4   r:   r   Zunikemet_filer   r   Ztagr   r   r   r   ZfunctionZdescriptionr   s   &               r   r   ZEmojiMatcher._load_unikemet=  s   (%	 <!!},#	7tg7 7:G)D>>#.q1779D !8J59ZZa5H8J4(u $'s+;B+?'C#DL&2D%9N%)9)99*,$)KK$4E(-C(8 $ 7 7$2GdV!E )9 !J."%/ $ 7 7$2J!I9R=B[[a=P9R 5 $ 7 7$2J
!L $ 7 7$2J%0%6%6t%<$=!?5 *7 7 & ! !7 7 7> ! 	7<oo..7 7	7sf   F2 7F0F-F>A
FA4FF2 F	FF	FF/	)F2 /F2 2G9+G44G9c                r   r   r   rv   rx   r   r   ry   j  s      7  7d  7r   c           
     sH   \         pR
p\        W4      w  r4V'       d   Vf   R#  V! VRRR7      ;_uu_ 4       p\        P                  ! R4      pV F  pVP	                  R4      ^ ,          P                  4       pV'       g   K3  VP                  V4      pV'       g   KN  VP                  4       w  rp\        V	^4      p\        V
^4      pVV P                  \        W^,           4      &   \        W^,           4       F8  p\        V4      pVR3pVV P                  9   g   K%  V P                  VRV4       K:  	  K  	  RRR4       R#   + '       g   i     R# ; i  \        \        3 d8   p\         P#                  R	TTP$                  P&                  T4        Rp?R# Rp?ii ; i)
Blocks.txtNr   r   r   z%([0-9A-F]+)\.\.([0-9A-F]+);\ (\S.*\S)r   r   blockr   )r   )r   rE   r   r   r   r   r   r   r,   r   ranger   r   r   r}   r   r<   r   r   r   )r   r3   r4   r:   r   Zblocks_fileZblocks_patternr   r   Zblock_startZ	block_end
block_nameZ	start_intZend_intr+   r   r   r      &                 r   r   Z!EmojiMatcher._load_unicode_blocksj  sw   (#	 <!!},	7tg7 7:E!#,T!U'D>>#.q1779D *006Eu=B\\^:
$'R$8	"%i"4=G ,,!)q[9;).yA+)FI+.y>L.:D-AN-1A1AA $ 7 7$2GZ!I	 *G (7 7 7 7( ! 	7<eoo..7 7	7sB   E A"EA<E E;E E	E E F!*,FF!c                r   r   r   rv   rx   r   r   ry     s     .1 .14 .1r   c           	     s   \         pRp\        W4      w  r4V'       d   Vf   R#  V! VRRR7      ;_uu_ 4       pV F  pVP                  R4      ^ ,          P                  4       pV'       g   K3   R VP	                  R^4       4       w  rxRT9   d,   TP	                  R4      w  r\        T	^4      \        T
^4      rM\        T^4      ;r\        Y^,           4       F7  p\        T4      pTR	3pYP                  9   g   K$  T P                  TR
T4       K9  	  K  	  RRR4       R#   \
         d     K  i ; i  + '       g   i     R# ; i  \         d7   p\        P                  RTP                  P                  T4        Rp?R# Rp?ii ; i)DerivedAge.txtNr   r   r   r   c              3   r   r   r   r   r   r   r   Z1EmojiMatcher._load_derived_age.<locals>.<genexpr>  s      =I5GTJJLL5Gr   ;..r   uversionz&Error while loading DerivedAge: %s: %s)r   )r   rE   r   r   r_   r   r,   r   r   r   r   	Exceptionr<   r   r   r   )r   r3   r4   r:   r   Zderived_age_filer   r   unicode_version	start_hexend_hexstartendr+   r   r   r   r   r   r   ZEmojiMatcher._load_derived_age  s    )'	 <!!},	1tg7 7:J,D>>#.q1779D !=I59ZZQ5G=I9( //-=-C-CD-I*	%(B%7Wb9Is&)*:B&??%*5'%:	'*9~*6)=)-=-== 33 .
OM	 &; -7 7 & ! !7 7 7,  	18((%1 1	1s_   E
 6D6/D$
A0D6?D6E
 $D3	/D62D3	3D66E	E
 E
 
F+FFc                r   r   r   rv   rx   r   r   ry     s     1 1D 1r   c           	     s   \         pRp\        W4      w  r4V'       d   Vf   R#  V! VRRR7      ;_uu_ 4       pV F  pVP                  R4      ^ ,          P                  4       pV'       g   K3   R VP	                  R^4       4       w  rxp	\        \        T^4      4      p
T
R3pYP                  9   g   K{  T P                  TR	TP                  4       .4       K  	  RRR4       R#   \
         d     K  i ; i  + '       g   i     R# ; i  \         d7   p\        P                  R
TP                  P                  T4        Rp?R# Rp?ii ; i)NameAliases.txtNr   r   r   r   c              3   r   r   r   r   r   r   r   Z2EmojiMatcher._load_name_aliases.<locals>.<genexpr>  s      @I5GTJJLL5Gr   r   r   r   z'Error while loading NameAliases: %s: %s)r   )r   rE   r   r   r_   r   r   r,   r   r   r]   r   r<   r   r   r   )r   r3   r4   r:   r   Zname_aliases_filer   r   aliasZ_alias_typer   r   r   s   &            r   r   ZEmojiMatcher._load_name_aliases  sD   ((	 <!!},	1tg7 7:K-D>>#.q1779D !@I59ZZQ5G@I<( $'s+;R'@#AL&2D%9N%)9)99//*Gekkm_F .7 7 & ! !7 7 7   	19((%1 1	1s^   D 6C8/C&&C86&C8D &C5	1C84C5	5C88D		D 	D E+EEc                r   r   r   rv   rx   r   r   ry     s     01 01D 01r   c                s   \         pRp\        W4      w  r4V'       d   Vf   R#  V! VRRR7      ;_uu_ 4       p\        P                  ! V\        4       EF:  pVP                  4       P                  R4      p\        V4      ^8  d   K5  V^ ,          pV^,          p	V^,          p
V^
,          p\        \        V^4      4      pV
R9   d   Kw  V P                  '       g(   \        V
,          R,          '       g   V\        9  d   K  VR3pV P                  VRV	P                  4       .4       V'       d#   V P                  VRVP                  4       .4       V P                  VR	V
\        V
,          R
,          \        V
,          R,          .4       EK=  	  RRR4       R#   + '       g   i     R# ; i  \         d7   p\         P#                  RTP$                  P&                  T4        Rp?R# Rp?ii ; i)UnicodeData.txtNr   r   r   r   r   r   r   ucategoriesr    r!   z'Error while loading UnicodeData: %s: %s)r   )r   r"   r#   )r   rE   	itertoolschainUNICODE_DATA_EXTRA_LINESr   r_   rb   r   r,   r~   UNICODE_CATEGORIESVALID_CHARACTERSr   r]   r   r<   r   r   r   )r   r3   r4   r:   r   Zunicode_data_filer   fieldsr   r   categoryZold_namer   r   r   s   &              r   r   ZEmojiMatcher._load_unicode_data  s   ((	 <!!},(	1tg7 7:K%OO,=,DFD!ZZ\//4F6{R' '-ay$!!9D%ayH%bzH#&s+;R'@#AL#55 ! 222$6x$@$I$I ,4D D &2D%9N++&$**,A//*Ghnn6F5GI++&%$.x8A.x8A(CD9F7 7 7 7H  	19((%1 1	1sH   F1 B$FF7:F2A!FF1 F.	(F1 .F1 1G2<+G--G2c                r   r   r   rv   rx   r   r   ry     s     51 51$ 51r   c           	     s.   \         pRp\        W4      w  r4V'       d   Vf   R#  V! VRRR7      ;_uu_ 4       pVP                  4        EFT  pRp\        P                  ! R4      pVP                  V4      p	V	'       d)   V	P                  R4      '       d   V	P                  R4      pVP                  R4      ^ ,          P                  4       pV'       g   K   R VP                  R	^4       4       w  rR
T
9   d,   T
P                  R
4      w  r\        T^4      \        T^4      rM\        T
^4      ;r\        Y^,           4       FV  p\        T4      pTR3pT P                  TRT.4       T'       g   K0  T P                  TRT4       T P                  TRT4       KX  	  EKW  	  RRR4       R#   \         d     EKr  i ; i  + '       g   i     R# ; i  \         d7   p\         P#                  RTP$                  P&                  T4        Rp?R# Rp?ii ; i)emoji-data.txtNr   r   r   r&   eversionr   c              3   r   r   r   r   r0   r   r   r   Z8EmojiMatcher._load_unicode_emoji_data.<locals>.<genexpr>'        =C/A!GGII/Ar   r   r   r   r   r   z*Error while loading emoji-data.txt: %s: %s)r   z9[^;]*;[^;]*#\s*E(?P<eversion>[0-9]+\.[0-9]+)\s*\[[0-9]+\])UNICODE_EMOJI_DATA_DIRNAMESrE   Z	readlinesr   r   r   r   r   r   r_   r   r,   r   r   r   r   r<   r   r   r   )r   r3   r4   r:   r   Zunicode_emoji_data_filer   emoji_versionpatternr   r   property_stringr   r   r   r   r+   r   r   r   s   &                   r   r   Z%EmojiMatcher._load_unicode_emoji_data  s    /'	 <!!},)	1tg7 7:Q3==?D$&M jj()G $MM$/EZ!8!8(-J(?>>#.q1779D !=C/3zz#q/A=C9( //-=-C-CD-I*	%(B%7Wb9Is&)*:B&??%*5q&%9	'*9~*6)=//*L?:KM(= 33 .
MK !33 .
MK &:+ @7 7  & ! !!7 7 7J  	1<((%1 1	1sl   G AF?>F?F?F,2A<F?3/F?"G ,F<	7F?;F<	<F??G	
G G H+HHc                r   r   r   rv   rx   r   r   ry   C  s     =1 =1t =1r   c                s   \         pRp\        W4      w  r4V'       d   Vf   R#  V! VRRR7      ;_uu_ 4       pV EF  pRp\        P                  ! R4      pVP	                  V4      p	V	'       d)   V	P                  R4      '       d   V	P                  R4      pVP                  R4      ^ ,          P                  4       pV'       g   K   R VP                  R	^4       4       w  rpTR
8X  d   K  T
R8X  d
   TR8X  d   RpRpT
P                  R4       F  pT\        \        T^4      4      ,          pK!  	  T'       g   EK  TR3pT P                  TRT.4       T P                  TRTP                  4       .4       T'       g   EKI  T P                  TRT4       TpT\        9   d   \        T,          R,          pT P                  TRT4       EK  	  RRR4       R#   \         d     EK  i ; i  + '       g   i     R# ; i  \         d7   p\         P#                  RTP$                  P&                  T4        Rp?R# Rp?ii ; i)emoji-sequences.txtNr   r   r   r&   r   r   c              3   r   r   r   r   r   r   r   Z=EmojiMatcher._load_unicode_emoji_sequences.<locals>.<genexpr>`  r   r   r   ZBasic_Emojiz0023 FE0F 20E3zkeycap:z	keycap: #rX   r   r   r   r   z/Error while loading emoji-sequences.txt: %s: %s)r   ?[^;]*;[^;]*;[^;]*#\s*E(?P<eversion>[0-9]+\.[0-9]+)\s*\[[0-9]+\]r   rE   r   r   r   r   r   r   r_   r   r   r,   r   r]   !EMOJI_VERSION_TO_UNICODE_VERSIONSr   r<   r   r   r   )r   r3   r4   r:   r   Zunicode_emoji_sequences_filer   r   r   r   
codepointsr   r   r   r+   r   r   r   r   r   r   Z*EmojiMatcher._load_unicode_emoji_sequencesC  s7    /,	 <!!},1	1$& & *F8D$&M jj()G $MM$/EZ!8!8(-J(?>>#.q1779D !=C/3zz#q/A=C9
T '-7 !%55$):K*#%L%/%5%5c%:	$C	2,>(?? &;#|*6)=//*L?:KM//*Gdjjl^E(= 33 .
MK
 /<O,0QQ2S$1333537 33 .
OMO 9	& &$ & ! !%& & &Z  	1A((%1 1	1ss   H AG->G-G-	G%AG-??G-AG-H G*	%G-)G*	*G--G>	8H >H I+H==Ic                r   r   r   rv   rx   r   r   ry     s     91 914 91r   c                sV   \         pRp\        W4      w  r4V'       d   Vf   R#  V! VRRR7      ;_uu_ 4       pV EFv  pRp\        P                  ! R4      pVP	                  V4      p	V	'       d)   V	P                  R4      '       d   V	P                  R4      pVP                  R4      ^ ,          P                  4       pV'       g   K   R VP                  R	^4       4       w  rpRpT
P                  R
4       F  pT\        \        T^4      4      ,          pK!  	  T'       g   K  TR3pT P                  TRT.4       T P                  TRTP                  4       .4       T'       g   EK/  T P                  TRT4       TpT\        9   d   \        T,          R,          pT P                  TRT4       EKy  	  RRR4       R#   \         d     EK  i ; i  + '       g   i     R# ; i  \         d7   p\         P#                  RTP$                  P&                  T4        Rp?R# Rp?ii ; i)emoji-zwj-sequences.txtNr   r   r   r&   r   r   c              3   r   r   r   r   r   r   r   ZAEmojiMatcher._load_unicode_emoji_zwj_sequences.<locals>.<genexpr>  r   r   r   rX   r   r   r   r   z3Error while loading emoji-zwj-sequences.txt: %s: %s)r  r   r  r  )r   r3   r4   r:   r   Z unicode_emoji_zwj_sequences_filer   r   r   r   r  r   r   r   r+   r   r   r   r   r   r   Z.EmojiMatcher._load_unicode_emoji_zwj_sequences  s    /0	 <!!},-	1$& & *J<D$&M jj()G $MM$/EZ!8!8(-J(?>>#.q1779D !=C/3zz#q/A=C9
T $&L%/%5%5c%:	$C	2,>(?? &;#|*6)=//*L?:KM//*Gdjjl^E(= 33 .
MK
 /<O,0QQ2S$1333537 33 .
OMG =	& &$ & ! !%& & &R  	1E((%1 1	1sr   G' AG>GG	G %;G%?G*AG6G'  G	GG	GG$	G' $G' 'H(2+H##H(c                r   r   r   rv   rx   r   r   ry     s     b1 b1$ b1r   c                sH   \         pR/p\        W4      w  r4V'       d   Vf   R#  V! VRRR7      ;_uu_ 4       pRpRp^ pR\        R4      R\        R4      R	\        R4      R
\        R4      R\        R4      R\        R4      R\        R4      R\        R4      R\        R4      R\        R4      R\        R4      R\        R4      R\        R4      /p	R\        R4      /p
V EF  p\        P                  ! R4      pVP                  V4      pV'       d9   VP                  R4      '       d"   VP                  R4      P                  4       pKk  \        P                  ! R 4      pVP                  V4      pV'       d9   VP                  R!4      '       d"   VP                  R!4      P                  4       pK  Rp\        P                  ! R04      pVP                  V4      pV'       d7   VP                  R"4      '       d    VP                  R"4      P                  4       pVP                  R#4      ^ ,          P                  4       pV'       g   EKj   R$ VP                  R%^4       4       w  ppTR&8w  d   EK  T^,          pRpTP                  R'4       F  pT\        \        T^4      4      ,          pK!  	  T'       g   EK  TR(3pY,          .pYz9   d   TP                  Y,          4       T P                  TR)\        T4      4       T P                  TR*T4       T P!                  TT4       T'       d#   T P                  TR+TP#                  4       .4       T P%                  T4      R8X  d   \&        P)                  R,T4       T P+                  T4      R8X  g   EK  \&        P)                  R-T4       EK  	  RRR4       R#   \         d     EK  i ; i  + '       g   i     R# ; i  \,         d7   p\&        P/                  R.TP0                  P2                  T4        Rp?R# Rp?ii ; i)1emoji-test.txtNr   r   r   r&   zSmileys & PeoplepeoplezSmileys & EmotionzPeople & BodyzAnimals & NaturenaturezFood & DrinkfoodzTravel & PlacestravelZ
ActivitiesactivityZObjectsobjectsZSymbolssymbolsZFlagsflagsZ	ModifiersmodifierZ	ComponentZRegionalregionalzperson-sportz# group:(?P<group>.+)$r   z# subgroup:(?P<subgroup>.+)$subgroupr   r   c              3   r   r   r   r   r   r   r   Z8EmojiMatcher._load_unicode_emoji_test.<locals>.<genexpr>  s      7C/A!GGII/Ar   r   zfully-qualifiedrX   r   
cldr_order
categoriesr   u;   Emoji “%s” lacks emoji version, this should not happen!u=   Emoji “%s” lacks Unicode version, this should not happen!z*Error while loading emoji-test.txt: %s: %s)r  z<[^#]+#\s+\S+\s+E(?P<eversion>[0-9]+\.[0-9]+)\s+(?P<name>.+)$)r   rE   r   r   r   r   r   r   r   r_   r   r   r,   r   r   r   (_add_translated_categories_to_emoji_dictr]   r   r<   rB   r   r   r   r   r   )r   r3   r4   r:   r   Zunicode_emoji_test_filer   r  r  Zcldr_group_to_emojione_categoryZ"cldr_subgroup_to_emojione_categoryr   r   r   r   r  r   r   r+   r   r  r   s   &                     r   r   Z%EmojiMatcher._load_unicode_emoji_test  s    /'	 <!!},U	1tg7 7:Q
&8'H#R\&8"BvJ%r(| "Z.r)}r)}R[JJ:3/  #R
^62 4D jj)BCG#MM$/EW!5!5 %G 4 : : <  jj)HIG#MM$/EZ!8!8#(;;z#:#@#@#B D jj./G $MM$/EV!4!4${{6288:>>#.q1779D !7C/3zz#q/A7C3
O '*;; !!OJ#%L%/%5%5c%:	$C	2,>(?? &;#|*6)=&E&L%M
#I&-- B LN//*L#j/K//*L*FEE(*6 33 .$**,I--l;rA"NN ,E+79  //=C"NN ,E+79o 4/7 7^ & ! !_7 7 7b  	1<((%1 1	1s   O  C0O)AO9OA(O9AOO
N9&AO:COO/O  9O		OO			OO	O  O   P!++PP!c                r   r   r   rv   rx   r   r   ry   !  s     g* g*T g*r   c                s   \         \        3pRp\        W4      w  r4V'       d   Vf   R# V! VRRR7      ;_uu_ 4       p\        P                  ! V4      pRRR4       XP                  4        EFW  w  rxVR,          R,          p	RP                  V	P                  R4       U
u. uF  p
\        \        V
^4      4      NK  	  up
4      pVR	,          P                  4       p\        P                  ! R
RV4      P                  R4      pV.pVR,          P                  RR4      P                  R4      pVR,           Uu. uF$  pVP                  RR4      P                  R4      NK&  	  ppVR,          pW9  d
   W.,          pW9  d
   W.,          pVV,            F  pVV9  g   K  VV.,          pK  	  VR,          .p\        \!        \#        VR,          4      4      4      pRV9   d   VP%                  R4       VR,          pVR8X  d   Rp\'        V4      ^8X  d   VR9   d   R.pV\(        9   d   R.p\'        V4      ^8X  d   V^,          R8X  d   V^ ,          R9   d   . pV P+                  VR3RV4       V P+                  VR3RV4       V P+                  VR3RV4       V P+                  VR3RV4       V P-                  VV4       EKZ  	  R#   + '       g   i     EL; iu up
i u upi ) 
emoji.jsonNr   r   r   Zcode_pointsZfully_qualifiedr&   Z-r   z	 ?[(,)] ?rX   	shortnamer   Z:Zshortname_alternatesZasciir   r   Zorderu   🏳🌈u   🏳‍🌈uh   🇦🇧🇨🇩🇪🇫🇬🇭🇮🇯🇰🇱🇲🇳🇴🇵🇶🇷🇸🇹🇺🇻🇼🇽🇾🇿r  r  r   z#*0123456789r   r   r  emoji_order)r  zemojione.json)USER_DATADIRDATADIRrE   jsonZloaditemsr;   r_   r   r,   r]   r   subr   r`   ra   r   r^   Zremoverb   r   r   r  )r   r3   r4   r:   r   Zemoji_one_fileZemojioneZdummy_emojione_keyZemojione_valuer  r+   r   display_nameZ
match_namer   r  r0   ZaliasesZascii_aliasesr   r  r   r  s   &                      r   r   Z EmojiMatcher._load_emojione_data!  s    
 !'* 4	 <!!},4'3 36Dyy0H3 3;..2B.'67HIJ779C9I9I#9N$9NIC	2&'9N$ L *&1779LdLAGGLJ!NE&$WS#.uuSz  !//E FH F1 yyc*005 F  H*73M&%%$ =00%eW$E 1 )45J d3~j'A#BCDHX~ #(1Kz)
  0L!Q&$  )S  S )\
22 )\
L!Q&<?h+F$Q>9  
##t$gu6##t$lJ@##t$j(<##t$m[B 99j*k 3C3 3 3$$Hs   K
 K
9*K#
K	c                s:   < V ^8  d   QhRS[ RS[S[ ,          RR/# )r   r   r  r   Nr   r   rv   rx   r   r   ry     s)     29 29 #2915c29?C29r   c                s   \        R 4      \        R4      \        R4      \        R4      \        R4      \        R4      \        R4      \        R4      \        R4      \        R	4      .
p\        P                  ! V P                  4       F  pV P                  V,          '       g   K  V P                  V,          P
                  p. pV F  pV! V4      pVP                  V4       VR
8X  g   K%  \        '       g   K3  \        VRR7      p	W8w  d   VP                  V	4       V P                  '       g   Kk  \        VRR7      P                  4       p
W8w  g   K  VP                  V
4       K  	  V P                  W3RV4       K  	  R# )r  r  r	  r  r  r  r  r  r  r
  jahirar$   hepburnr  N)r   rK   rL   r{   r|   r   r   r'   r*   r   r]   r   )r   r   r  Z_dummy_categories_to_translaterF   Z
translatorZtranslated_categoriesr   Z
translatedhiraganart   s   &&&        r   r  Z5EmojiMatcher._add_translated_categories_to_emoji_dict  s=    zNwKvJzNxLyMxLzNyMxL)*
&. !11$//BH))(33!77AII
(*% *H!+H!5J)00<4',F,F#1*V#L#1188B<<<%3 *9&>>Ceg #%3 5 < <V D !+ ''!, "79! Cr   c                s*   < V ^8  d   QhRS[ RS[ RR/# )r   rF   r5   r   Nr   rv   rx   r   r   ry     s'     F1 F13 F1 F1 F1r   c           
     s   \         pVR ,           3p\        W4VR7      w  rVV'       d   Vf   R# \        P                  P	                  V4      P                  RR4      P                  RR4      P                  RR4      P                  R R4      pVP                  R4      pVR9   ;'       d    \        pVR8H  ;'       d    \        p	 V! VR	R
R7      ;_uu_ 4       p
\        P                  ! R4      pV
 EF  pVP                  V4      pV'       g   K  VP                  R4      pW3p\        P                  ! VP                  R4      4      pVR8X  d   Ka  V'       d   VP                  4       pVP                  R4      '       d   VP!                  4       .pRpM0VP#                  R4       Uu. uF  pVP!                  4       NK  	  ppRpV'       d8   V F.  p\$        P&                  ! V4      pV P)                  VVVV.4       K0  	  EK  V	'       d}   V F%  p\+        VRR7      pV P)                  VVVV.4       K'  	  V P,                  '       d=   V F3  p\+        VRR7      P                  4       pV P)                  VVVV.4       K5  	  EK  EK  V P)                  VVV4       EK  	  RRR4       R# u upi   + '       g   i     R# ; i  \.         d7   p\0        P3                  RTP4                  P6                  T4        Rp?R# Rp?ii ; i)rG   rI   Nr6   r&   r7   r8   r   r  r   r   r   Zemojistringcontentu	   ↑↑↑Zttsr   Z|r   r   r!  r"  z0Error while loading cldr annotation data: %s: %s)ZzhZzh_Hantzh.*<annotation cp="(?P<emojistring>[^"]+)"\s*(?P<tts>type="tts"){0,1}[^>]*>(?P<content>.+)</annotation>.*)rJ   rE   r9   r:   rC   r`   rM   IMPORT_PINYIN_SUCCESSFULr'   r   r   r   r   htmlZunescaper]   r   r_   pinyingetr   r*   r   r   r<   r   r   r   )r   rF   r5   r3   r4   r:   r   Z
is_englishZ
add_pinyinZadd_japanese_phoneticsZcldr_annotation_filer   r   r   r   r   r$  Zcontent_partsrS   r   Z
pinyin_strr#  rt   r   s   &&&                     r   r   Z'EmojiMatcher._load_cldr_annotation_data  s    ,&(	 <!0}, 77##D)112w#G2&w $ 	
 ((.
!22OO7O
!)T!1!P!P6P1	1tg7 7:N**( 1D#MM$/E  #(;;}#=L&2%=N"mmEKK	,BCG+- !")--/{{5)))0(9 'BI--PSBT(UBT$BT(U *!$1D)/D)9J 33 .j7IK %2 0$1D'5d6'JH 33 .h7GI %2  <<<(5)7$(*<<AEG !' $ 7 7$2ED&>!K )6 ( //*E=BE 17 70 )V17 7 7Z  	1B((%1 1	1sh   K BJ/&J/'J/(J*
J/>J/<J/	AJ/ K *J//K 	:K  K L+K??Lc                \   < V ^8  d   QhRS[ RS[RS[ RS[RS[S[P
                  ,          /# r   query_stringmatch_limittrigger_characters
spellcheckr   r   r,   r-   r   rK   PredictionCandidaterv   rx   r   r   ry     sO     { {{ { !$	{
 {
 *.h.J.J)K{r   c                s    WW43V P                   9   d   V P                   WW43,          # V P                  VVVVR 7      pVV P                   VVVV3&   V# ))r+  r,  r-  r.  )r   _candidates)r   r+  r,  r-  r.  
candidatess   &&&&& r   r2  ZEmojiMatcher.candidates  s    Z (:G$$%((+=*K L L%%%#1!	 & #
 &	 		 	
 r   c                r)  r*  r/  rv   rx   r   r   ry     sO     g! g!g! g! !$	g!
 g!
 *.h.J.J)Kg!r   c           	     s  a aaa VR ,          '       d   VR ,          V9   d
   VR,          pVR*R '       d   VR*R V9   d   VRR* pV'       g   . # S P                  VRR7      p\        P                  ! RRV4      pVR3S P                  9   d   S P	                  WR7      pV# TpV'       Ed   VP                  RR	7       F  o\        S4      ^8  g   K  \        '       g   K#  SP                  4       o\        ;QJ d*    VV3R
 lS P                   4       F  '       g   K   RM	  RM! VV3R
 lS P                   4       4      '       d   K  S P                   UUu0 uF=  pVP                  S4       F%  p\        V4      ^8  g   K  VP                  4       kK'  	  K?  	  p	ppVRRP                  V	4       2,          pK  	  \        P                  ! VP                  4       4      p. pS P                  P!                  4        EF  w  op
V'       ga   \        ;QJ d.    VV 3R lVP                  4        4       F  '       g   K   RM#	  RM! VV 3R lVP                  4        4       4      '       d   Ko  RpRpRpRpRpRpV
P#                  R. 4       FC  pS P%                  VV4      pV'       g   VS P&                  8  d   Tp\)        VRV,          4      pKE  	  V
P#                  R. 4       F4  pS P%                  VV4      pVS P&                  8  d   Tp\)        VV4      pK6  	  V
P#                  R. 4       F4  pS P%                  VV4      pVS P&                  8  d   Tp\)        VV4      pK6  	  V
P#                  R. 4       F4  pS P%                  VV4      pVS P&                  8  d   Tp\)        VV4      pK6  	  V
P#                  RR4      pV'       d2   S P%                  VV4      pVS P&                  8  d   Tp\)        VV4      p\        ;QJ d&    V 3R lS^ ,           4       F  '       g   K   RM	  RM! V 3R lS^ ,           4       4      '       d
   VR,          pV^ 8  g   EK^  RV
9   d   V
R,          ^ ,          pMS P+                  S^ ,          4      p\        S^ ,          4      ^8X  dB   \        P,                  ! S^ ,          4      '       d   R\/        S^ ,          4      R R2V,           pVV9  d   VRV,           R,           ,          pVV9  d   VRV,           R,           ,          pVV9  d   VRV,           R,           ,          pVV9  d   VRV,           R,           ,          pVV9  d   VRV,           R,           ,          pVP1                  \        P2                  ! S P                  S^ ,          S P4                  4      VVR7      4       EK  	   \7        V^4      p^ Tu;8:  d   R 8:  d   M MR!Tu;8:  d   R"8:  g   M R#Tu;8:  d   R$8:  g   M R%Tu;8:  d   R&8:  g   M \9        V4      pS P+                  V4      pV'       g&    \:        P*                  ! V4      P                  4       pV'       d
   RV,           pVP1                  \        P2                  ! VS P&                  R',          RVP?                  4        V 2R7      4       \A        VV 3R( lR)7      RV pV# u uppi   \<        3 d     Li ; i  \<        3 d     L<i ; i)+:N   N:r3  NNNr&   r   u	   [＿_\s]+rX   r   )r,  rY   c              3   sx   <"   T F/  pVP                  S4      ;'       g    VP                  S4      x  K1  	  R # 5ir   )Zcheck)r   dicre   
word_titles   & r   r   +EmojiMatcher._candidates.<locals>.<genexpr>  s4      ?*=3  #yyGG#))J2GG*=s   ::TFc              3   s   <a"   T F]  o\         ;QJ d.    V3R  lSP                  S4       4       F  '       d   K   RM#	  RM! V3R  lSP                  S4       4       4      x  K_  	  R# 5i)c              3   s.   <"   T F
  pSV9  x  K  	  R # 5ir   r   )r   rS   token   & r   r   Z5EmojiMatcher._candidates.<locals>.<genexpr>.<genexpr>  s      N)L ".)Ls   FTN)Zallget_all_label_words)r   r7  	emoji_keyr   s   &@r   r   r6    s`      ;%9E  N)-)A)A))LN N)-)A)A))LN N N%9s   A)#A)/A)rW   r   g       @r   r  r   r   c              3   sL   <"   T F  pR SP                  V4      9   x  K  	  R# 5i)r   N)r   )r   r   r   r8  r   r   r6    s     W,Y7dooi88,s   !$g      @U+04Xu    “u   ”z {Z} []phrase	user_freqcommenti i   i  i   i i   i g      $@c                 s   < V P                   ) SP                  V P                  4      \        V P                  4      ) V P                  3# r   )rA  r  r@  rb   rB  r0   r      &r   <lambda>Z*EmojiMatcher._candidates.<locals>.<lambda>#  s5    ++)ahh-			r   rZ   r  )!r   r   r  r   similarr_   rb   r   Ztitler.   r   Zsuggestr]   r;   rK   r\   r  r(  r   r   Zmaxr   is_invisibleordr   r0  r   r,   r   unicodedatar   Zupperra   )r   r+  r,  r-  r.  r2  rT   r4  r0   Zsuggestionsemoji_valuerd   Zname_good_matchZucategory_good_matchZcategory_good_matchZkeyword_good_matchZblock_good_matchr   scoreZ	ucategoryr   Zkeywordr   r  r+   ZcharZsorted_candidatesr:  re   r5  s   f&&&&                      @@@r   r1  ZEmojiMatcher._candidates  s\    R 04F F'+Lbc!26H!H',LI 88R 9 1 vvlC>$4#3#33lLJ#:$**t*4 t9q=%>%>!%J3 ?*.*=*=?333 ?*.*=*=? ? ?
 (,':':'':%([[%6"1vz &AGGI%6 &': $ ' %!CHH[,A+B(CC# 5$  ..|/A/A/CD
&*&6&6&<&<&>"I{C ;%1%7%7%9;CCC ;%1%7%7%9; ; ; K O#% "$!#!#4,,T<@&5D4J4J+J&*O!+sU{;	 5
 )__]B?	,,YED222+4(!+u5	 @
 (OOL"=,,X|DD222*2'!+u5	 >
 '??:r:,,WlCD222)0&!+u5	 ;
  OOGR0E,,ULAD222',$!+u5sW)TU,WsssW)TU,WWWs"Qk)#.w#7#:L#'99Yq\#:L	!%*$11)A,?? ')Yq\):3(?q$A&2%3L #,6 F_$<u$DDL'|; D+?$?#$EEL&l: D+>$>$DDL%\9 D+=$=$CCL#<7 D+;$;c$AAL!!(">"><<!!002 *(#* +[ '?h	L"-Iy,H,"i969#y;G;$	=X=9~yy*//5;;= :D!!(">">"44t; !3!3!5 6tf=#? @ #  ! {'R '=  } 		sP   &[[[- &A[- >$[ "[- *A[- [*'[- )[**[- -[<;[<c                sL   < V ^8  d   QhRS[ S[S[3,          RS[S[,          /# )r   r:  r   )r   r   r   rv   rx   r   r   ry   :  s'     
 
U38_ 
S 
r   c                s  a V P                   P                  VR 4      oSf   \        4       # . ROp\        P                  ! \        P                  P                  V3R lV 4       4      SP                  RR4      .4      pV UUu0 uFG  qD'       g   K  VP                  4       P                  4        F  p\        P                  ! V4      kK  	  KI  	  upp# u uppi )Nc              3   sH   <"   T F  pSP                  V. 4      x  K  	  R # 5ir   )r(  )r   ZfieldrK  r8  r   r   Z3EmojiMatcher.get_all_label_words.<locals>.<genexpr>B  s     @++s   "r   r&   )r   r   r  r   )
r   r(  r^   r   r   Zfrom_iterabler]   r_   rK   r\   )r   r:  r   Z
all_labelsrS   re   rK  s   &&    @r   r9  Z EmojiMatcher.get_all_label_words9  s     &&**9d;5LC__OO))@@B__Wb)*,
 $
#u *++- ##D)- *#
 	
 
s   	C?Cc                <   < V ^8  d   QhRS[ RS[ RS[S[ ,          /# r   r   rF   r   r  rv   rx   r   r   ry   J  s&     + +# + +d3i +r   c                s   V P                  VR R7      pV'       d7   \        V P                  P                  W3/ 4      P                  R. 4      4      # \        P
                  ! V P                  4       FE  p\        V P                  P                  W3/ 4      P                  R. 4      4      pV'       g   KC  Vu # 	  \        V4      ^8X  d'    \        P                  ! V4      P                  4       .# . #   \         d    . u # i ; i)r&   r   r   )r   r   r   r(  rK   rL   r{   rb   rJ  r   r]   r   )r   r   rF   rN   r      &&&  r   r   ZEmojiMatcher.namesJ  s    8 88R 9 1((,,("..1c'2.>@ @!224??CI))--)2//2s7B/?AEu	 D
 |!#((6<<>?? 	  	s   $C3 3DDc                r   rN  r   rv   rx   r   r   ry   w  s'     J J J JS Jr   c                sL    V P                  WR 7      pV'       d
   V^ ,          # R# ))rF   r&   )r   )r   r   rF   r   s   &&& r   r   ZEmojiMatcher.namew  s$    N 

<
;8Or   c                rM  rN  r  rv   rx   r   r   ry     s&     & &S &C &c &r   c                z   V P                  VR R7      pV'       d7   \        V P                  P                  W3/ 4      P                  R. 4      4      # \        P
                  ! V P                  4       FE  p\        V P                  P                  W3/ 4      P                  R. 4      4      pV'       g   KC  Vu # 	  . # )r&   r   r   r   r   r   r(  rK   rL   r{   )r   r   rF   rN   r   rO  r   r   ZEmojiMatcher.keywords  s    8 88R 9 1((,,("..1c*b.AC C!224??CID,,00!-r3363z23FHHx	 D
 	r   c                rM  rN  r  rv   rx   r   r   ry     s&     # #s #c #49 #r   c                rP  )r&   r   r  rQ  )r   r   rF   rN   r  rO  r   r  ZEmojiMatcher.categories  s    2 88R 9 1((,,("..1c,.CE E!224??CId..22)2//2s</DFJz!!	 D
 	r   c          	      sV   < V ^8  d   QhRS[ RS[RS[RS[S[P
                  ,          /# )r   r   r,  show_keywordsr   r/  rv   rx   r   r   ry   	  sD     e ee e  	e ,00L0L+M	er   c           	     s  a aa S P                  VR R7      p/ p/ p\        P                  ! S P                  4      oRpS F  p\	        4       WW&   W3pVS P
                  9  d   K%  V Fl  p	V	S P
                  V,          9   g   K  S P
                  V,          V	,           F1  p
WW,          P                  V
4       V	R8X  g   K#  V
\        9   g   K0   Kj  	  Kn  	  K  	  S P
                  P                  4        EF  w  rV^ ,          pV^,          pRV9   d   VR,          ^ ,          pMS P                  V4      p\        V4      ^8X  d4   \        P                  ! V4      '       d   R\        V4      R R2V,           pWV3pW8X  d!   S P                  VS P                  R7      .WO&   V FM  p	W9   g   K  W,           F6  p
WV,          9   g   K  W9   d   WO,          P                  V
4       K1  V
.WO&   K8  	  KO  	  EK  	  . pS P                  V4      o\!        VP                  4       VVV 3R lR7      R	V  F  pS P                  V^ ,          ^ ,          S P                  R7      pV'       d=   V^ ,          ^,          R
,           RP#                  V^,          4      ,           R,           pMV^ ,          ^,          p\        V^,          4      pVP                  \        P$                  ! V\'        V4      VR7      4       K  	  V# )r&   r   r   r   r;  r<  rX   c                 sR  < SP                  V ^ ,          ^,          4      \        V ^,          4      ) \        SP                  V ^ ,          ^ ,          4      S,
          4      5SP                  V ^ ,          ^ ,          4      \        V ^ ,          ^ ,          4      ) V ^ ,          ^,          3# )r    )r   rb   Zabsr  )csicldr_order_emoji_stringexpanded_languagesr   s   &r   rE  Z&EmojiMatcher.similar.<locals>.<lambda>	  s    &,,SVAY7#a&kM$//#a&)434 5 5OOCF1I.#a&)n$F1I	!r   rF  Nr=  , r>  r?  )r   r  r   )r   rK   rL   r{   r^   r   Zaddr   r  r   rb   rH  rI  r   r   r  ra   r;   r0  rV   )r   r   r,  rR  Zcandidate_scoresZoriginal_labels
label_keysrF   r:  	label_keyrS   Zsimilar_keyZsimilar_key_valueZsimilar_stringZsimilar_nameZ
scores_keyr2  rS  r   r   rL  rT  rU  s   f&&&                 @@r   rG  ZEmojiMatcher.similar	  s   X 88R 9 1BD/1%66tG>
*H(+O%%0I 0 00'	 0 0 ;;!%!1!1)!<Y!G!G'155e<%6$)-?$? "# "H ( +2 /3.>.>.D.D.F*K(^N"1~H++09!<#yy8N#q( --n== #%S%8$=Q ?".!/ ,8J- 55$+/+C+C 6 E0F , (	1!2!=!= H$==)= 0 < C CE J@Ew 0 < "> (5 /GD :<
"&//,"? &&(	  K!C 55Aq	#'#;#; 6 =E 1vay4'$))CF*;;cA1vayAKEh::edD E)!, r   c          	      sr   < V ^8  d   QhRS[ S[S[ S[S[ S[S[S[,          3,          3,          3,          /# r   )r   r   r   rv   rx   r   r   ry   	  s8     A# A#S$sDd3i4H/H*I%I J A#r   c                s  a  Rp/ pV EF  pS P                   P                  4        EFy  w  rES P                  V^ ,          S P                  R7      pS P	                  V4      '       g   KC  \        V4      ^8  d$   Rp\         F  pW9   g   K  RpK  	  V'       d   Kv  V^,          p	W9  d   / W)&   W59   g   K  W2V	,          9  d   / W),          V&   VR 8X  dk   RP                  WS,          4      p
V
W),          V,          9  d   V.VV	,          V,          V
&   K  VV	,          V,          V
,          P                  V4       EK  WS,           FS  pWV	,          V,          9  d   V.VV	,          V,          V&   K-  VV	,          V,          V,          P                  V4       KU  	  EK|  	  EK  	  VP                  4        FD  w  rV F9  pW,           F*  p\        W,          V,          V 3R lR7      W,          V&   K,  	  K;  	  KF  	  V# )r   r   FTrV  c                 s*   < SP                  V 4      V 3# r   )r  rC  rD  r   rE  Z-EmojiMatcher.emoji_by_label.<locals>.<lambda>4
  s     OOA.'r   rF  )r   r  r   r   )
r   r  r   r   unicode_version_in_rangerb   r   r;   r   ra   )r   rW  Zemoji_by_label_dictrX  r:  rK  r   Zhas_skin_tone_modifierr  rF   Zucategory_label_fullrS   Zlanguage_values   f            r   emoji_by_labelZEmojiMatcher.emoji_by_label	  s/    H
JL#I*.*:*:*@*@*B&	99aL'+'?'? : A 44U;;u:>-2*$7#,592 %8 .
 !$Q<646'1+ H(EECE+5i@ M1/3yy'204,0#6#@#KL
 BG 0 (*$-/ )=>
 0 (*$-/ )=> ?EfUm%0%;%;E$,I),TT 7<W !4$,!.(1!3 -2!3
 !4$,!.(1!3 -2!3 4:6%= &<M +C $d )<(A(A(C$H+	+66E7=&1%88N-e4 7 , )D #"r   c                &   < V ^8  d   QhRS[ RS[/# r   r   r   r   r,   rv   rx   r   r   ry   :
  s        r   c                    V P                  VR R7      pVR3V P                  9   d@   RV P                  VR3,          9   d&   \        V P                  VR3,          R,          4      # R# )r&   r   r   r      r   r   r,   r   r   rh   r   r  ZEmojiMatcher.emoji_order:
  sl    & 88R 9 14 D$4$44!T%5%5|T6J%KKt''t(<=mLMMr   c                r[  r\  r]  rv   rx   r   r   ry   T
  s      s s r   c                r^  )r&   r   r   r  r_  r`  ra  rh   r   r  ZEmojiMatcher.cldr_orderT
  sl    , 88R 9 14 D$4$44 D$4$4lD5I$JJt''t(<=lKLLr   c                6   < V ^8  d   QhRS[ RS[S[ ,          /# r\  r  rv   rx   r   r   ry   q
  s      s tCy r   c                    V P                  VR R7      pVR3V P                  9   d@   RV P                  VR3,          9   d&   \        V P                  VR3,          R,          4      # . # )r&   r   r   r   r   r   r   ra  rh   r   r   ZEmojiMatcher.propertiesq
  sn     88R 9 1D!T%5%55!T%5%5|T6J%KK((,)=>|LMM	r   c                rb  r\  r  rv   rx   r   r   ry   
  s      S T#Y r   c                rc  )r&   r   r   r   rd  ra  rh   r   unicode_categoryZEmojiMatcher.unicode_category
  sn     88R 9 1D!T%5%55"d&6&6d7K&LL((,)=>}MNN	r   c                &   < V ^8  d   QhRS[ RS[ /# r\  r   rv   rx   r   r   ry   
  s      # # r   c                    V P                  VR R7      pVR3V P                  9   d@   RV P                  VR3,          9   d&   \        V P                  VR3,          R,          4      # R # )r&   r   r   r   r   r   r   ra  rh   r   r   ZEmojiMatcher.emoji_version
  l     88R 9 1D!T%5%554#3#3\44H#IIt''t(<=jIJJr   c                rf  r\  r   rv   rx   r   r   ry   
  s      C C r   c                rg  )r&   r   r   r   rh  ra  rh   r   r   ZEmojiMatcher.unicode_version
  ri  r   c                r[  r\  r   r-   rv   rx   r   r   ry   
  s      S T r   c                s   V P                  V4      pV'       g   R # \        P                  ! RV4       Uu. uF  p\        V4      NK  	  pp\        P                  ! RV P                  4       Uu. uF  p\        V4      NK  	  pp\        P                  ! RV P
                  4       Uu. uF  p\        V4      NK  	  ppV^ .^\        V4      ,
          ,          ,          pV^ .^\        V4      ,
          ,          ,          pV^ .^\        V4      ,
          ,          ,          pYTu;8:  d
   V8:  d    R#  R # R # u upi u upi u upi )Fz\d+T)r   r   Zfindallr,   r   r   rb   )r   r   r   ZnumberZversionZmin_versionZmax_versions   &&     r   rY  Z%EmojiMatcher.unicode_version_in_range
  s6    ..|< **V_=?= K= 	 ?
 **VT-D-DEGE KE 	 G
 **VT-D-DEGE KE 	 G 	A3!c'l*++sa#k"2233sa#k"22330[0 1%?GGs   D6.D;'E c                rf  r\  r   rv   rx   r   r   ry   
  s      # # r   c                s    V P                  VR R7      p\        V4      ^8w  d   R # \        V4      pV P                  P	                  4        F  w  r4W#9   g   K  Vu # 	  R # )r&   r   )r   rb   rI  r   r  )r   r   r+   Zblock_ranger   s   &&   r   unicode_blockZEmojiMatcher.unicode_block
  sf     88R 9 1|!%	'+';';'A'A'C#K'!! (D r   c                r[  r\  rj  rv   rx   r   r   ry   
  s     " " " "r   c                sH    \        V P                  V4      4      ^8  d   R# R# )r3  TF)rb   skin_tone_variantsra  rh   r   skin_tone_modifier_supportedZ)EmojiMatcher.skin_tone_modifier_supported
  s#    @ t&&|459r   c                rb  r\  r  rv   rx   r   r   ry   
  s#     H: H:s H:tCy H:r   c                s   V'       d   V\         9   d   V.# V P                  VR R7      pRV P                  V4      9   d?   R\         ,            Uu. uF&  pV P                  W,           V P                  R7      NK(  	  up# VR,          \         9   dV   VR3V P                  9   dC   R\         ,            Uu. uF*  pV P                  VRR V,           V P                  R7      NK,  	  up# VP                  R4      p\        V4      ^8  Ed!   \        V4      ^8:  Ed   \          F+  p\        V4       F  w  rVVP                  VR 4      W5&   K  	  K-  	  . p\        V4      ^8X  d^   V P                  V^ ,          4       FA  pV P                  V^,          4       F"  p	VP                  VR,           V	,           4       K$  	  KC  	  \        V4      ^8X  d   V P                  V^ ,          4       Fn  pV P                  V^,          4       FO  p	V P                  V^,          4       F0  p
VP                  VR,           V	,           R,           V
,           4       K2  	  KQ  	  Kp  	  \        V4      ^8X  d   V P                  V^ ,          4       F  pV P                  V^,          4       F|  p	V P                  V^,          4       F]  p
V P                  V^,          4       F>  pVP                  VR,           V	,           R,           V
,           R,           V,           4       K@  	  K_  	  K~  	  K  	  V'       d   V# V P                  VV P                  R7      .# u upi u upi )r&   r   Emoji_Modifier_Baser   N   ‍r&   r  )r   r   r   r   r   r_   rb   r   r`   rl  r   )r   r   ZtoneZemoji_partsr  ZiZ
emoji_partrl  Zvariant0Zvariant1Zvariant2Zvariant3s   &&          r   rl  ZEmojiMatcher.skin_tone_variants
  s]   ^ |/BB >!88R 9 1 DOOL$AA
 "$77	9 8D 11 ''+'?'? 2 A 8	9 9
 "!44"D)T-=-==
 "$77	9 8D 11 "%,'+'?'? 2 A 8	9 9
 #((2{q S%5%:/%.{%;MA%/%7%7"%EKN &< 0 "$;1$ $ 7 7A GH$($;$;KN$K*11$&'&'( %L !H ;1$ $ 7 7A GH$($;$;KN$K(,(?(?A(OH.55 ("*!+"*!+ #+!+ #+	!+, )P %L !H ;1$ $ 7 7A GH$($;$;KN$K(,(?(?A(OH,0,C,CKPQN,S 2 9 9$,&.%/&.%/ '/%/ '/	%/
 '/%/ '/%/!0 -T )P %L !H "))11#77 2 9 : 	:e99s   ,M20M
c                r   r   r   rv   rx   r   r   ry     s        D  r   c           
     s    ^ p\        V P                  P                  4       4       F6  w  r#\        RV R\        VP                  4       4       24       V^,          pK8  	  \        RV 24       R# )r    zkey=z value=zcount=N)ra   r   r  print)r   ZcountrZ   r   s   &   r   debug_loading_dataZEmojiMatcher.debug_loading_data  sb     !1!1!7!7!9:JCDWVEKKM%:$;<=QJE ; 	ugr   c                r   r   r   rv   rx   r   r   ry     s     %D %DT %Dr   c           
     s   \        R 4       \        R4       \        R 4       \        R4       \        V P                  P                  4       4       EF  w  rV^,          R8X  g   K  V^ ,          \        ^ ,          ,           R3V P                  9   dH   RV P                  V^ ,          4      9  d+   \        RV^ ,           R\        V^ ,          4      R R24       RV P                  V^ ,          4      9   d^   R	V P                  V^ ,          \        ^ ,          ,           R3,          9  d+   \        RV^ ,           R\        V^ ,          4      R R
24       RV P                  V^ ,          4      9   d>   R	V P                  V^ ,          R3,          9  d   \        RV^ ,           R24       EKZ  EK]  R	V P                  V^ ,          R3,          9   g   EK  RV^ ,          9   g   EK  \        RV^ ,           R24       EK  	  R# )z2--------------------------------------------------zPossible bugs in emojione.json:Z
r   rn  u	   emoji “u   ” (U+r<  zW) has skintones in emojione but not the Emoji_Modifier_Base property in emoji-data.txt.r  zW) has the property Emoji_Modifier_Base in emoji-data.txt but no skin tones in emojione.ZEmoji_ZWJ_Sequenceu   ZWJ sequence “u(   ” from unicode.org missing in emojionero  u&   ” in emojione but not in unicode.orgN)rq  ra   r   r  r   r   rI  )r   r:  Zdummy_emoji_valuer1   r   list_emoji_one_bugsZ EmojiMatcher.list_emoji_one_bugs  s    	BC/0BCd,243C3C3I3I3K,L(I|t#q\$7$::DA++,-#'??9Q<#@A $$-aL>Yq\9J38O P<< =
 )DOOIaL,II%T-=-=&q\,?,BBDI.K K $$-aL>Yq\9J38O P-- .
 (4??9Q<+HH%#'#3#3Yq\44H#IJ 01 ?E E FJ
 ' ,,ilD-ABC (IaL 8 01 ?C C D9 -Mr   )r   r   r   r   r   r|   r   r{   r   r   r   r~   r   N))Zen_USTFFTz0.0z100.0Tr   Trg   )rg   )r   )i   r&   Frp  )i  T)0r   Z
__module__Z__qualname__Z__firstlineno__r   r   r   r   	functools	lru_cacher   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r2  r1  r9  r   r   r   r  rG  rZ  r  r  r   re  r   r   rY  rk  rm  rl  rr  rs  Z__static_attributes__Z__classdictcell__)rw   s   @r   rj   rj     s    U$ U$n .6 6&% %P )Z Z *Zx%, %,N(7 (7V+7 +7Z 7  7D.1 .1`1 1<01 01d51 51n=1 =1~91 91vb1 b1Hg* g*R29 29hF1 F1P{ {zg! g!l )
 *
 + +ZJ JX& &P# #Je eNA# A#F 4 :     @ " "HH: H:V   %D %Dr   rj   c                s    V ^8  d   QhRR/# r   r   r   r   r   r   r     s     A Ad Ar   c                  s   \         P                  ! \        P                  R 7      p \        P                  \         P                  4       \        P                  V 4       \        '       d)   ^ RI	p^ RI
pVP                  4       pVP                  4        ^ p \         '       g   \        P#                  R4       MH\$        '       g   \        P#                  R4       M&^ RIpRsTP*                  pTP-                  TR7      w  rH\        '       dg   XP/                  4        XP1                  T4      p	T	P3                  4        T	P5                  R4       T	P7                  R^24       T	P7                  R^4       \        P#                  R	\8        P:                  P=                  4       4       \        P#                  R
\        P>                  P=                  4       4       \        P#                  R\        P@                  P=                  4       4       \        P#                  R\B        P=                  4       4       \        P#                  R\D        P=                  4       4       \        PF                  ! T4       R# ))ZstreamNz5Skipping doctests because rapidfuzz is not available.z3Skipping doctests because enchant is not available.r&   )ZoptionflagsZ
cumulativeZ	itb_emojir   z(itb_util.remove_accents() cache info: %sz:EmojiMatcher.variation_selector_normalize() cache info: %sz1EmojiMatcher.get_all_label_words() cache info: %sz_match_classic() cache info: %sz!_match_rapidfuzz() cache info: %s)$loggingZStreamHandlersysZstderrr<   ZsetLevelZDEBUGZ
addHandler	BENCHMARKcProfilepstatsZProfileZenablerj   rr  rs  r   Zinfor   doctestr   ZREPORT_NDIFFZtestmodZdisableZStatsZ
strip_dirsZ
sort_statsZprint_statsrK   r\   Z
cache_infor   r9  rf   ri   Zexit)
Zlog_handlerry  rz  ZprofileZfailedZmatcherr{  r  Z
_attemptedZstatss
             r   mainr|    s    ''szz:K
OOGMM"
k"y""$F )(KL&&IJ 
$$&5AyW%&+r*)R(
KK2**,. KKD11<<>@ KK;((3357 KK)!!#% KK+##%' HHVr   Z__main__)z6.0z6.1z7.0z8.0)2)$   r}  )i   i   )  r~  )  r  )i	  i	  )	  r  )
  r  )  r  )?  r  )  r  )i    io   )ip   i   )i   i   )i   i   )i !  iO!  )iP!  i!  )i!  i!  )i "  i"  )i #  i#  )i6#  iz#  )i $  i?$  )i@$  i_$  )i`$  i$  )i %  i%  )i%  i%  )i%  i%  )i &  i&  )i&  i&  )iT&  i_&  )i`&  ig&  )i0&  i7&  )i&  i&  )i&  i&  )i '  i'  )i'  i'  )i'  i'  )i (  i(  )i )  i)  )i)  i)  )i *  i*  )i +  i+  )8  r  )  r  )i  r  )i  i`  )i  i )i  iO )iP i )i i )i  i >   u   ﷺu   ﷻu   ﷽u   𰻝u   𰻞)uN   30EDE;<CJK Ideograph Extension G> biáng Traditional Chinese;Lo;0;L;;;;;N;;;;;uM   30EDD;<CJK Ideograph Extension G> biáng Simplified Chinese;Lo;0;L;;;;;N;;;;;)u   🏻u   🏼u   🏽u   🏾u   🏿)r%   rp  )DZtypingr   r   r   r   r   r   r   r   r9   rw  r   rt  r   r=   r  rJ  r&  rv  r   rK   r   r   r   r>   r?   ZImportErrorr@   rA   r   rg   r   r   r'   ZpykakasiZkakasir(   r%  r'  Z	getLoggerr<   r:   r;   rD   Z__file__r  Zxdg_save_data_pathr  r   r   rJ   r   r  r/   r   r   r   r*   r2   rE   rO   ru  rf   ri   rj   rx  r|  r   r   r   r   <module>r     s  2         	 
 	         "
.  	   	! $ ("& " & $ # '!%oo'O ! %# 
		0	1
'',,rwwx0)
<**+EF'   '    '
 &%' !7E7GWi
@! 	7D'7GX
>! 	7E7GWn
E	!
 	7E7GWm
D! 	7E7GWk
B! 	7E7Hg{
C! 	7E7Hgz
B! 	7E7Hgw
?! 	7E7Hg{
C! 	7E7Hg{
C! 	7E7FG5H
I! 	7E7FG[
A! 	7E7FG\
B! 	7E7Hg
G!  	7E7Hgx
@!!$ 	7D'8Wg
>%!& 	7D'=';
G'!( 	7D'='6
B7D'='7
C7D'='=
I7D'='?
K7D'='7
C7D'='6
B7D'8Wj
A7D'8Wj
A7D'8Wf
=7D'8Wg
>7D';
@7D';
E7D';
AA! J 
' 
'	E7	E7	F8 VH
VH VH
VH VH
VH
VH
VH
VH
VH3% !<4l  
 ? )V881fL T". #.` T"? #?
S'D S'DjN 	AF zF {]  		  		 	~ ("'( 	~ & %& 	~ '!&' 	~ %$%sl   2K! ;K/ K= L L 0L0 !K,+K,/K:9K:=
L
L
LL
L-,L-0
L>=L>