+
     	iY                    f  a  0 t $ ^ RIHt ^ RIt^ RIHt ^ RIHt ]P                  R)8  d   ^ RI	H
t
 M ^ RIH
t
 ^RIHtHtHtHtHtHtHtHtHtHt ^RIHtHtHtHtHtHtHtH t H!t!H"t"H#t#H$t$H%t%H&t&H't' ]],          ],          ],          ],          t(R	])R
&    ! R R4      t*]
 ! R R]*4      4       t+]
 ! R R]*4      4       t,]
 ! R R]*4      4       t-]
 ! R R]*4      4       t.]
 ! R R]*4      4       t/]
 ! R R]*4      4       t0]
 ! R R]*4      4       t1]
 ! R R]*4      4       t2]
 ! R R]*4      4       t3]! RR 7      R! R" l4       t4]5;QJ d"    . R# ]*Pm                  4        4       F  NK  	  5M! R# ]*Pm                  4        4       4      t7R$])R%&   ]! R&R 7      R*R' R( ll4       t8R#   ] d    R t
 ELui ; i)+    )annotationsN)	lru_cache)	getLogger)finalc                    V # N )clss   &[/Users/agent/.openclaw/workspace/venv/lib/python3.14/site-packages/charset_normalizer/md.pyr   r      s    J    )
COMMON_SAFE_ASCII_CHARACTERSTRACEUNICODE_SECONDARY_RANGE_KEYWORD_ACCENTUATED_CJK_HANGUL	_HIRAGANA	_KATAKANA_LATIN_THAI)_character_flagsis_accentuated	is_arabicis_arabic_isolated_formis_case_variableis_cjkis_emoticonis_latinis_punctuationis_separator	is_symbolis_unprintableremove_accentunicode_rangeis_cjk_uncommonint_GLYPH_MASKc                  X    ] tR t^4tRtR
tR R ltR R ltR R lt]	R R	 l4       t
R
tR# )MessDetectorPluginzm
Base abstract class used for mess detection plugins.
All detectors MUST extend and implement given methods.
c                    V ^8  d   QhRRRR/#    	characterstrreturnboolr	   )formats   "r   __annotate__MessDetectorPlugin.__annotate__<   s     " "# "$ "r   c                    \         h)z0
Determine if given character should be fed in.
NotImplementedErrorselfr-   s   &&r   eligibleMessDetectorPlugin.eligible<   
     "!r   c                    V ^8  d   QhRRRR/# r,   r-   r.   r/   Noner	   )r1   s   "r   r2   r3   B   s     " "c "d "r   c                    \         h)zq
The main routine to be executed upon character.
Insert the logic in witch the text would be considered chaotic.
r5   r7   s   &&r   feedMessDetectorPlugin.feedB   s
    
 "!r   c                   V ^8  d   QhRR/# r,   r/   r>   r	   )r1   s   "r   r2   r3   I   s     " "t "r   c                    \         h)z2
Permit to reset the plugin to the initial state.
r5   r8   s   &r   resetMessDetectorPlugin.resetI   r;   r   c                   V ^8  d   QhRR/# r,   r/   floatr	   )r1   s   "r   r2   r3   P   s     " "u "r   c                    \         h)zm
Compute the chaos ratio based on what your feed() has seen.
Must NOT be lower than 0.; No restriction gt 0.
r5   rE   s   &r   ratioMessDetectorPlugin.ratioO   s
     "!r   r	   N)__name__
__module____qualname____firstlineno____doc__	__slots__r9   r@   rF   propertyrL   __static_attributes__r	   r   r   r)   r)   4   s1    
 I""" " "r   r)   c                  `    ] tR t^XtRtR R ltR R ltR R ltR R lt]	R	 R
 l4       t
RtR# ) TooManySymbolOrPunctuationPluginc                   V ^8  d   QhRR/# rC   r	   )r1   s   "r   r2   -TooManySymbolOrPunctuationPlugin.__annotate__b   s     2 2$ 2r   c                	L    ^ V n         ^ V n        ^ V n        RV n        RV n        R# r   NF_punctuation_count_symbol_count_character_count_last_printable_char_frenzy_symbol_in_wordrE   s   &r   __init__)TooManySymbolOrPunctuationPlugin.__init__b   s*    '("#%&04!,1#r   c                    V ^8  d   QhRRRR/# r+   r	   )r1   s   "r   r2   rY   j        ' '# '$ 'r   c                	"    VP                  4       # r   isprintabler7   s   &&r   r9   )TooManySymbolOrPunctuationPlugin.eligiblej       $$&&r   c                    V ^8  d   QhRRRR/# r=   r	   )r1   s   "r   r2   rY   m   s     . .c .d .r   c                	r   V ;P                   ^,          un         WP                  8w  d   V\        9  d}   \        V4      '       d   V ;P                  ^,          un        MQVP                  4       '       g<   \        V4      '       d+   \        V4      '       g   V ;P                  ^,          un        Wn        R#    N)	r_   r`   r   r   r]   isdigitr!   r   r^   r7   s   &&r   r@   %TooManySymbolOrPunctuationPlugin.feedm   s    " 222!==i((''1,'%%''i((#I..""a'"$-!r   c                   V ^8  d   QhRR/# rC   r	   )r1   s   "r   r2   rY      s      t r   c                	0    ^ V n         ^ V n        ^ V n        R# r   N)r]   r_   r^   rE   s   &r   rF   &TooManySymbolOrPunctuationPlugin.reset   s    "# !r   c                   V ^8  d   QhRR/# rI   r	   )r1   s   "r   r2   rY      s     L Lu Lr   c                	    V P                   ^ 8X  d   R# V P                  V P                  ,           V P                   ,          pVR8  d   V# R# )r           333333?)r_   r]   r^   )r8   ratio_of_punctuations   & r   rL   &TooManySymbolOrPunctuationPlugin.ratio   sO      A% ##d&8&88!!'" (<s'B#KKr   )r_   ra   r`   r]   r^   Nr\   rN   rO   rP   rQ   rS   rb   r9   r@   rF   rT   rL   rU   r	   r   r   rW   rW   X   s3    I2'.$
 L Lr   rW   c                  `    ] tR t^tRtR R ltR R ltR R ltR R lt]	R	 R
 l4       t
RtR# )TooManyAccentuatedPluginc                   V ^8  d   QhRR/# rC   r	   )r1   s   "r   r2   %TooManyAccentuatedPlugin.__annotate__   s     ) )$ )r   c                	"    ^ V n         ^ V n        R# rs   r_   _accentuated_countrE   s   &r   rb   !TooManyAccentuatedPlugin.__init__   s    %&'(r   c                    V ^8  d   QhRRRR/# r+   r	   )r1   s   "r   r2   r      s     # ## #$ #r   c                	"    VP                  4       # r   )isalphar7   s   &&r   r9   !TooManyAccentuatedPlugin.eligible   s      ""r   c                    V ^8  d   QhRRRR/# r=   r	   )r1   s   "r   r2   r      s     ) )c )d )r   c                	    V ;P                   ^,          un         \        V4      '       d   V ;P                  ^,          un        R# R# rm   )r_   r   r   r7   s   &&r   r@   TooManyAccentuatedPlugin.feed   s4    ")$$##q(# %r   c                   V ^8  d   QhRR/# rC   r	   )r1   s   "r   r2   r      s     $ $t $r   c                	"    ^ V n         ^ V n        R# rs   r   rE   s   &r   rF   TooManyAccentuatedPlugin.reset   s     !"#r   c                   V ^8  d   QhRR/# rI   r	   )r1   s   "r   r2   r      s     O Ou Or   c                	x    V P                   ^8  d   R# V P                  V P                   ,          pVR8  d   V# R# )   rw   gffffff?r   )r8   ratio_of_accentuations   & r   rL   TooManyAccentuatedPlugin.ratio   s=      1$'+'>'>AVAV'V(=(E$N3Nr   )r   r_   Nr   r{   r	   r   r   r}   r}      s1    :I)#)$ O Or   r}   c                  `    ] tR t^tRtR R ltR R ltR R ltR R lt]	R	 R
 l4       t
RtR# )UnprintablePluginc                   V ^8  d   QhRR/# rC   r	   )r1   s   "r   r2   UnprintablePlugin.__annotate__   s     ' '$ 'r   c                	"    ^ V n         ^ V n        R# rs   _unprintable_countr_   rE   s   &r   rb   UnprintablePlugin.__init__   s    '(%&r   c                    V ^8  d   QhRRRR/# r+   r	   )r1   s   "r   r2   r            # $ r   c                	    R # Tr	   r7   s   &&r   r9   UnprintablePlugin.eligible       r   c                    V ^8  d   QhRRRR/# r=   r	   )r1   s   "r   r2   r      s     # #c #d #r   c                	    \        V4      '       d   V ;P                  ^,          un        V ;P                  ^,          un        R# rm   )r"   r   r_   r7   s   &&r   r@   UnprintablePlugin.feed   s/    )$$##q(#"r   c                   V ^8  d   QhRR/# rC   r	   )r1   s   "r   r2   r      s     $ $t $r   c                	    ^ V n         R# rs   )r   rE   s   &r   rF   UnprintablePlugin.reset   s
    "#r   c                   V ^8  d   QhRR/# rI   r	   )r1   s   "r   r2   r      s     E Eu Er   c                	p    V P                   ^ 8X  d   R# V P                  ^,          V P                   ,          # r   rw   r_   r   rE   s   &r   rL   UnprintablePlugin.ratio   s/      A%''!+t/D/DDDr   r   Nr   r{   r	   r   r   r   r      s1    :I'#
$ E Er   r   c                  `    ] tR t^tRtR R ltR R ltR R ltR R lt]	R	 R
 l4       t
RtR# )SuspiciousDuplicateAccentPluginc                   V ^8  d   QhRR/# rC   r	   )r1   s   "r   r2   ,SuspiciousDuplicateAccentPlugin.__annotate__   s     1 1$ 1r   c                	>    ^ V n         ^ V n        RV n        RV n        R# r[   _successive_countr_   _last_latin_character_last_was_accentuatedrE   s   &r   rb   (SuspiciousDuplicateAccentPlugin.__init__   s"    &'%&15"+0"r   c                    V ^8  d   QhRRRR/# r+   r	   )r1   s   "r   r2   r      s     ; ;# ;$ ;r   c                	H    VP                  4       ;'       d    \        V4      # r   )r   r   r7   s   &&r   r9   (SuspiciousDuplicateAccentPlugin.eligible   s      "::x	'::r   c                    V ^8  d   QhRRRR/# r=   r	   )r1   s   "r   r2   r      s     9 9c 9d 9r   c                	   V ;P                   ^,          un         \        V4      pV P                  e   V'       d   V P                  '       d   VP	                  4       '       d:   V P                  P	                  4       '       d   V ;P
                  ^,          un        \        V4      \        V P                  4      8X  d   V ;P
                  ^,          un        Wn        W n        R# rm   )r_   r   r   r   isupperr   r#   )r8   r-   current_accentuateds   && r   r@   $SuspiciousDuplicateAccentPlugin.feed   s    "$29$=&&2#***  ""t'A'A'I'I'K'K&&!+&Y'=9S9S+TT&&!+&%."%8"r   c                   V ^8  d   QhRR/# rC   r	   )r1   s   "r   r2   r      s     + +t +r   c                	>    ^ V n         ^ V n        RV n        RV n        R# r[   r   rE   s   &r   rF   %SuspiciousDuplicateAccentPlugin.reset   s"    !" !%)"%*"r   c                   V ^8  d   QhRR/# rI   r	   )r1   s   "r   r2   r      s     D Du Dr   c                	p    V P                   ^ 8X  d   R# V P                  ^,          V P                   ,          # r   )r_   r   rE   s   &r   rL   %SuspiciousDuplicateAccentPlugin.ratio   s/      A%&&*d.C.CCCr   )r_   r   r   r   Nr   r{   r	   r   r   r   r      s3    I1;9 + D Dr   r   c                  `    ] tR t^tRtR R ltR R ltR R ltR R lt]	R	 R
 l4       t
RtR# )SuspiciousRangec                   V ^8  d   QhRR/# rC   r	   )r1   s   "r   r2   SuspiciousRange.__annotate__  s     6 6$ 6r   c                	>    ^ V n         ^ V n        RV n        RV n        R# rs   "_suspicious_successive_range_countr_   _last_printable_seen_last_printable_rangerE   s   &r   rb   SuspiciousRange.__init__  s"    78/%&04!15"r   c                    V ^8  d   QhRRRR/# r+   r	   )r1   s   "r   r2   r   	  re   r   c                	"    VP                  4       # r   rg   r7   s   &&r   r9   SuspiciousRange.eligible	  rj   r   c                    V ^8  d   QhRRRR/# r=   r	   )r1   s   "r   r2   r     s     5 5c 5d 5r   c                	   V ;P                   ^,          un         VP                  4       '       g   \        V4      '       g   V\        9   d   RV n        RV n        R# V P                  f   Wn        \        V4      V n        R# V P
                  p\        V4      p\        W#4      '       d   V ;P                  ^,          un        Wn        W0n        R# rm   )	r_   isspacer   r   r   r   r$    is_suspiciously_successive_ranger   )r8   r-   unicode_range_aunicode_range_bs   &&  r   r@   SuspiciousRange.feed  s    " i((88(,D%)-D&$$,(1%)6y)AD&&*&@&@&3I&>+OMM33q83$-!%4"r   c                   V ^8  d   QhRR/# rC   r	   )r1   s   "r   r2   r   &  s     * *t *r   c                	>    ^ V n         ^ V n        RV n        RV n        R# rs   )r_   r   r   r   rE   s   &r   rF   SuspiciousRange.reset&  s"     !23/$(!%)"r   c                   V ^8  d   QhRR/# rI   r	   )r1   s   "r   r2   r   -  s     / /u /r   c                	t    V P                   ^8:  d   R# V P                  ^,          V P                   ,          pV# )   rw   )r_   r   )r8   ratio_of_suspicious_range_usages   & r   rL   SuspiciousRange.ratio,  s<      B& 33a7!!2"' /.r   )r_   r   r   r   Nr   r{   r	   r   r   r   r      s1    I6'54* / /r   r   c                  `    ] tR tRtRtR R ltR R ltR R ltR R	 lt]	R
 R l4       t
RtR# )SuperWeirdWordPlugini8  c                   V ^8  d   QhRR/# rC   r	   )r1   s   "r   r2   !SuperWeirdWordPlugin.__annotate__J  s     * *$ *r   c                	    ^ V n         ^ V n        ^ V n        RV n        RV n        ^ V n        ^ V n        ^ V n        RV n        RV n	        ^ V n
        ^ V n        ^ V n        R# )r   FN_word_count_bad_word_count_foreign_long_count_is_current_word_bad_foreign_long_watchr_   _bad_character_count_buffer_length_buffer_last_char_buffer_last_char_accentuated_buffer_accent_count_buffer_glyph_count_buffer_upper_countrE   s   &r   rb   SuperWeirdWordPlugin.__init__J  sj     !$%() */!). %&)*!#$-138*)*!() () r   c                    V ^8  d   QhRRRR/# r+   r	   )r1   s   "r   r2   r   \  r   r   c                	    R # r   r	   r7   s   &&r   r9   SuperWeirdWordPlugin.eligible\  r   r   c                    V ^8  d   QhRRRR/# r=   r	   )r1   s   "r   r2   r   _  s     N7 N7c N7d N7r   c                	   VP                  4       '       Ed   V ;P                  ^,          un        Wn        VP                  4       '       d   V ;P                  ^,          un        \        V4      p\        V\        ,          4      pW0n        V'       d   V ;P                  ^,          un	        V P                  '       g6   V\        ,          '       d	   V'       d   V\        ,          '       g   RV n
        V\        ,          '       d   V ;P                  ^,          un        R# V P                  '       g   R# VP                  4       '       g$   \        V4      '       g   \!        V4      '       Ed   V P                  '       Ed   V ;P"                  ^,          un        V P                  pV ;P$                  V,          un        V^8  d   V P                  V,          R8  d	   RV n        MV P                  '       dS   V P                  P                  4       '       d3   V P                  V8w  d"   V ;P(                  ^,          un        RV n        M1V P                  ^8X  d!   RV n        V ;P(                  ^,          un        V^8  dh   V P                  '       dV   V P                  ^ 8  ;'       d    V P                  V,          R8*  pV'       g!   V ;P(                  ^,          un        RV n        V P&                  '       d:   V ;P*                  ^,          un        V ;P,                  V,          un        RV n        RV n
        ^ V n        RV n        RV n        ^ V n	        ^ V n        ^ V n        R# VR9  d[   VP/                  4       '       gC   \1        V4      '       d0   RV n        V ;P                  ^,          un        Wn        RV n        R# R# R# R# )rn   TN      ?rx   F>   -<=>_|~)r   r   r   r   r   r   r0   r   r   r   r   r   r'   r   r   r   r    r   r_   r   r   r   r   ro   r!   )r8   r-   flagschar_accentuatedbuffer_lengthprobable_camel_caseds   &&    r   r@   SuperWeirdWordPlugin.feed_  s   1$%."  ""((A-())4E%)%,*>%?1A.))Q.),,,&..-=,,+/({""((A-(""">)#<#<Y@W@W!!!!!%!4!4M!!]2!!,,}<C04D- 666..668800MA,,1,04D---204D-,,1,"t'?'?'?,,q0 H H00=@CG %
 ,,,1,04D-((($$)$))]:),1)',D$"#D%)D"16D.()D%'(D$'(D$@@%%'')$$(,D%1$%."16D. % ( Ar   c                   V ^8  d   QhRR/# rC   r	   )r1   s   "r   r2   r     s     % %t %r   c                	    ^ V n         RV n        RV n        RV n        RV n        ^ V n        ^ V n        ^ V n        ^ V n        ^ V n	        ^ V n
        ^ V n        ^ V n        R# r[   )r   r   r   r   r   r   r   r_   r   r   r   r   r   rE   s   &r   rF   SuperWeirdWordPlugin.reset  sj    !%-2*$)!#(   !$%!#$ $%!#$ #$ r   c                   V ^8  d   QhRR/# rI   r	   )r1   s   "r   r2   r     s     A Au Ar   c                	    V P                   ^
8:  d   V P                  ^ 8X  d   R# V P                  V P                  ,          # )
   rw   )r   r   r   r_   rE   s   &r   rL   SuperWeirdWordPlugin.ratio  s7    r!d&>&>!&C((4+@+@@@r   )r   r   r   r   r   r   r   r   r_   r   r   r   r   Nr   r{   r	   r   r   r   r   8  s5    I *$N7`% A Ar   r   c                  d    ] tR tRtRtRtR R ltR R ltR R ltR	 R
 lt	]
R R l4       tRtR# )CjkUncommonPlugini  z4
Detect messy CJK text that probably means nothing.
c                   V ^8  d   QhRR/# rC   r	   )r1   s   "r   r2   CjkUncommonPlugin.__annotate__  s     & &$ &r   c                	"    ^ V n         ^ V n        R# rs   r_   _uncommon_countrE   s   &r   rb   CjkUncommonPlugin.__init__  s    %&$%r   c                    V ^8  d   QhRRRR/# r+   r	   )r1   s   "r   r2   r    s     ! !# !$ !r   c                	    \        V4      # r   )r   r7   s   &&r   r9   CjkUncommonPlugin.eligible  s    i  r   c                    V ^8  d   QhRRRR/# r=   r	   )r1   s   "r   r2   r    s      c d r   c                	    V ;P                   ^,          un         \        V4      '       d   V ;P                  ^,          un        R# R# rm   )r_   r%   r  r7   s   &&r   r@   CjkUncommonPlugin.feed  s7    "9%%  A%  &r   c                   V ^8  d   QhRR/# rC   r	   )r1   s   "r   r2   r    s     ! !t !r   c                	"    ^ V n         ^ V n        R# rs   r  rE   s   &r   rF   CjkUncommonPlugin.reset  s     ! r   c                   V ^8  d   QhRR/# rI   r	   )r1   s   "r   r2   r    s     N Nu Nr   c                	    V P                   ^8  d   R# V P                  V P                   ,          pVR8  d
   V^
,          # R# )r   rw   r   r  )r8   uncommon_form_usages   & r   rL   CjkUncommonPlugin.ratio  sD      1$%)%9%9D<Q<Q%Q ,?+D"R'M#Mr   r  N)rN   rO   rP   rQ   rR   rS   rb   r9   r@   rF   rT   rL   rU   r	   r   r   r  r    s8     8I&!! N Nr   r  c                  `    ] tR tRtRtR R ltR R ltR R ltR R	 lt]	R
 R l4       t
RtR# )ArchaicUpperLowerPlugini  c                   V ^8  d   QhRR/# rC   r	   )r1   s   "r   r2   $ArchaicUpperLowerPlugin.__annotate__  s     . .$ .r   c                	h    R V n         ^ V n        ^ V n        ^ V n        ^ V n        RV n        RV n        R# )FNT_buf_character_count_since_last_sep_successive_upper_lower_count#_successive_upper_lower_count_finalr_   _last_alpha_seen_current_ascii_onlyrE   s   &r   rb    ArchaicUpperLowerPlugin.__init__  s9    	45,23*890%&,0)- r   c                    V ^8  d   QhRRRR/# r+   r	   )r1   s   "r   r2   r$    r   r   c                	    R # r   r	   r7   s   &&r   r9    ArchaicUpperLowerPlugin.eligible  r   r   c                    V ^8  d   QhRRRR/# r=   r	   )r1   s   "r   r2   r$    s     (* (*c (*d (*r   c                	   VP                  4       ;'       d    \        V4      pV'       * pV'       d   V P                  ^ 8  d   V P                  ^@8:  dL   VP                  4       '       g6   V P                  '       g$   V ;P
                  V P                  ,          un        ^ V n        ^ V n        RV n        RV n        V ;P                  ^,          un	        RV n        R# V P                  '       d   VP                  4       '       g   RV n        V P                  e   VP                  4       '       d!   V P                  P                  4       '       g7   VP                  4       '       d\   V P                  P                  4       '       d<   V P                  '       d"   V ;P                  ^,          un        RV n        MRV n        MRV n        V ;P                  ^,          un	        V ;P                  ^,          un        Wn        R# r   NFT)r   r   r(  ro   r,  r*  r)  r+  r'  r_   isasciir   islower)r8   r-   is_concerned	chunk_seps   &&  r   r@   ArchaicUpperLowerPlugin.feed  s   &..0PP5Ei5P**	==A44:!))++00088668 23D.34D0$(D!DI!!Q&!'+D$###I,=,=,?,?',D$  ,!!##(=(=(E(E(G(G!!##(=(=(E(E(G(G99966!;6 %DI $DI!	",,1, )r   c                   V ^8  d   QhRR/# rC   r	   )r1   s   "r   r2   r$  2  s     ( (t (r   c                	h    ^ V n         ^ V n        ^ V n        ^ V n        RV n        RV n        RV n        R# r3  )r_   r(  r)  r*  r+  r'  r,  rE   s   &r   rF   ArchaicUpperLowerPlugin.reset2  s9     !/0,-.*340 $	#' r   c                   V ^8  d   QhRR/# rI   r	   )r1   s   "r   r2   r$  <  s     P Pu Pr   c                	b    V P                   ^ 8X  d   R# V P                  V P                   ,          # r   )r_   r*  rE   s   &r   rL   ArchaicUpperLowerPlugin.ratio;  s*      A%77$:O:OOOr   )r'  r_   r(  r,  r+  r)  r*  Nr&  r{   r	   r   r   r"  r"    s4    I.(*T( P Pr   r"  c                  `    ] tR tRtRtR R ltR R ltR R ltR R	 lt]	R
 R l4       t
RtR# )ArabicIsolatedFormPluginiC  c                   V ^8  d   QhRR/# rC   r	   )r1   s   "r   r2   %ArabicIsolatedFormPlugin.__annotate__G  s     + +$ +r   c                	"    ^ V n         ^ V n        R# rs   r_   _isolated_form_countrE   s   &r   rb   !ArabicIsolatedFormPlugin.__init__G  s    %&)*!r   c                   V ^8  d   QhRR/# rC   r	   )r1   s   "r   r2   rB  K  s     & &t &r   c                	"    ^ V n         ^ V n        R# rs   rD  rE   s   &r   rF   ArabicIsolatedFormPlugin.resetK  s     !$%!r   c                    V ^8  d   QhRRRR/# r+   r	   )r1   s   "r   r2   rB  O  s     $ $# $$ $r   c                	    \        V4      # r   )r   r7   s   &&r   r9   !ArabicIsolatedFormPlugin.eligibleO  s    ##r   c                    V ^8  d   QhRRRR/# r=   r	   )r1   s   "r   r2   rB  R  s     + +c +d +r   c                	    V ;P                   ^,          un         \        V4      '       d   V ;P                  ^,          un        R# R# rm   )r_   r   rE  r7   s   &&r   r@   ArabicIsolatedFormPlugin.feedR  s4    ""9--%%*% .r   c                   V ^8  d   QhRR/# rI   r	   )r1   s   "r   r2   rB  Y  s     # #u #r   c                	f    V P                   ^8  d   R# V P                  V P                   ,          pV# )r   rw   rD  )r8   isolated_form_usages   & r   rL   ArabicIsolatedFormPlugin.ratioX  s0      1$%)%>%>AVAV%V""r   rD  N)rN   rO   rP   rQ   rS   rb   rF   r9   r@   rT   rL   rU   r	   r   r   r@  r@  C  s/    <I+&$+ # #r   r@     )maxsizec               $    V ^8  d   QhRRRRRR/# )r,   r   z
str | Noner   r/   r0   r	   )r1   s   "r   r2   r2   c  s)     F FF2<F	Fr   c                   V e   Vf   R# W8X  d   R# RV 9   d
   RV9   d   R# RV 9   g   RV9   d   R# RV 9   g   RV9   d   RV 9   g   RV9   d   R# V P                  R4      VP                  R4      r2V F  pV\        9   d   K  WC9   g   K   R# 	  V R9   VR9   reV'       g	   V'       d   RV 9   g   RV9   d   R# V'       d   V'       d   R# RV 9   g   RV9   d!   RV 9   g   RV9   d   R# V R	8X  g   VR	8X  d   R# RV 9   g   RV9   g   V R9   d8   VR9   d1   R
V 9   g   R
V9   d   R# RV 9   g   RV9   d   R# V R	8X  g   VR	8X  d   R# R# )zY
Determine if two Unicode range seen next to each other can be considered as suspicious.
TFLatin	Emoticons	Combining CJKHangulzBasic LatinPunctuationForms)HiraganaKatakana)ra  r`  )splitr   )r   r   keywords_range_akeywords_range_belrange_a_jp_charsrange_b_jp_charss   &&     r   r   r   b  sw    /"9)/!g&@o%)G 	?"g&@&+*H 	c"c" '
 00!	  	
	

 	33 ' 	, E_$<,?"h/&AO#u'?m+-/O 	 E_$<3377O+}/Oo%O)Cm+-/Or   c              #  $   "   T F  qx  K  	  R # 5ir   r	   ).0md_classs   & r   	<genexpr>rk    s      @@H@s   z$tuple[type[MessDetectorPlugin], ...]_DETECTOR_CLASSESi   c               (    V ^8  d   QhRRRRRRRR/# )r,   decoded_sequencer.   maximum_thresholdrJ   debugr0   r/   r	   )r1   s   "r   r2   r2     s,     5% 5%5%.35%BF5%
5%r   c           	     ^   \          Uu. uF	  q3! 4       NK  	  pp\        V 4      pVR8  d   ^ pMVR8  d   ^@pM^p\        ^ WV4       Fa  pWWv,             F6  pV F-  p	V	P                  V4      '       g   K  V	P	                  V4       K/  	  K8  	  \        R V 4       4      p
W8  g   Ka   MG	  V F-  p	V	P                  R4      '       g   K  V	P	                  R4       K/  	  \        R V 4       4      p
V'       d   \        R4      pVP                  \        RV RV
 R	V 24       V^8  d=   VP                  \        R
V R,           24       VP                  \        RV RR  24       V F2  pVP                  \        VP                   RVP                   24       K4  	  \        V
^4      # u upi )zo
Compute a mess ratio given a decoded bytes sequence. The maximum threshold does stop the computation earlier.
i  rT  c              3  8   "   T F  qP                   x  K  	  R # 5ir   rL   ri  dts   & r   rk  mess_ratio.<locals>.<genexpr>       ;2hh   
c              3  8   "   T F  qP                   x  K  	  R # 5ir   rs  rt  s   & r   rk  rv    rw  rx  charset_normalizerzIMess-detector extended-analysis start. intermediary_mean_mess_ratio_calc=z mean_mess_ratio=z maximum_threshold=zStarting with: :N   NzEnding with: Nz: i)rl  lenranger9   r@   sumr   logr   	__class__rL   round)rn  ro  rp  rj  	detectorsseq_lenstepblock_startr-   detectormean_mess_ratiologgerru  s   &&&          r   
mess_ratior    s    GX*XFW(8:FWI*X '(G}	4Q.)8JKI%$$Y//MM), & L
 ;;;/ / "H  &&d# " ;;;/0

1156GGX Y!!2 35	
 R<JJu0@0E/FGHJJu.>su.E-FGHBJJub
;<  !$$] +Ys   F*)   r   )g?F)9__conditional_annotations__
__future__r   sys	functoolsr   loggingr   version_infotypingr   typing_extensionsImportErrorconstantr   r   r   r   r   r   r   r   r   r   utilsr   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r'   __annotations__r)   rW   r}   r   r   r   r   r  r"  r@  r   tuple__subclasses__rl  r  )r  s   @r   <module>r     s5   " " 
  v+      & '>I-	9EAS A!" !"H 4L'9 4L 4Ln O1 O O: E* E E4 -D&8 -D -D` :/( :/ :/z JA- JA JAZ "N* "N "NJ SP0 SP SPl #1 # #< 4F FT ;@% @/>>@@%% @/>>@@ ; 7 
 45% 5%O  	s   F" "
F0/F0