Ë
    Dü´j§‰  ã                  ó’  — U d dl mZ d dlmZ d dlmZ ddlmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZmZmZm Z m!Z!m"Z"m#Z# eez  ez  ez  ez  Z$de%d<    G d	„ d
«      Z& ed¬«      d)d„«       Z' e(d«      D � cg c]  }  e& e)| «      «      ‘Œ c} Z*de%d<    G d„ d«      Z+ G d„ de+«      Z, G d„ de+«      Z- G d„ de+«      Z. G d„ de+«      Z/ G d„ de+«      Z0 G d„ de+«      Z1 G d„ d e+«      Z2 G d!„ d"e+«      Z3 G d#„ d$e+«      Z4 G d%„ d&e+«      Z5 ed¬«      	 	 	 	 	 	 d*d'„«       Z6	 d+	 	 	 	 	 	 	 d,d(„Z7yc c} w )-é    )Úannotations)Ú	lru_cache)Ú	getLoggeré   )ÚCOMMON_CJK_CHARACTERSÚCOMMON_SAFE_ASCII_CHARACTERSÚTRACEÚCompatibleFamillyRangeÚ_ACCENTUATEDÚ_ARABICÚ_ARABIC_ISOLATED_FORMÚ&_BASIC_LATIN_COMPATIBLE_RANGE_FAMILIESÚ_CJKÚ_COMPATIBLE_RANGE_FAMILIESÚ#_COMPATIBLE_WITH_ANY_RANGE_FAMILIESÚ_HANGULÚ_HALFWIDTH_KATAKANAÚ	_HIRAGANAÚ	_KATAKANAÚ_LATINÚ	_LIGATUREÚ_RANGE_FAMILIESÚ_SENTENCE_OPEN_PUNCTUATIONÚ_SUPERSCRIPTÚ_THAI)Ú_character_flagsÚis_emoticonÚis_punctuationÚis_separatorÚ	is_symbolÚremove_accentÚunicode_rangeÚintÚ_GLYPH_MASKc                  ó6  — e Zd ZU dZdZded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded <   ded!<   ded"<   d%d#„Zy$)&ÚCharInfoz>Pre-computed character properties shared across all detectors.)Ú	characterÚ	printableÚalphaÚupperÚlowerÚspaceÚdigitÚis_asciiÚcase_variableÚflagsÚaccentuatedÚlatinÚis_cjkÚis_katakanaÚis_halfwidth_katakanaÚ	is_arabicÚis_ligatureÚis_superscriptÚis_sentence_open_punctuationÚis_glyphÚpunctÚsymÚrangeÚsepÚemoticonÚsafeÚ
common_cjkÚ
unaccentedÚstrr'   Úboolr(   r)   r*   r+   r,   r-   r.   r/   r#   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   ú
str | Noner=   r>   r?   r@   rA   rB   c                óú	  — || _         t        |«      }|dk  �rwd| _        d| _        || _        d| _        d| _        |t        v | _        d| _	        d| _
        d| _        d| _        d| _        d| _        d| _        d| _        d|cxk  rdk  rVn nSd| _        d| _        d| _        d| _        d| _        d| _        d| _        t0        | _        d| _        d| _        d| _        �núd|cxk  rdk  rVn nSd| _        d| _        d| _        d| _        d| _        d| _        d| _        t0        | _        d| _        d| _        d| _        �n™d|cxk  rd	k  rRn nOd| _        d| _        d| _        d| _        d| _        d| _        d| _        d
| _        d| _        d| _        d| _        �n<|dk(  sd|cxk  rdk  rUn nRd| _        d| _        d| _        d| _        d| _        |dk(  | _        d| _        d
| _        d| _        d| _        d| _        �n×|j;                  «       | _        d| _        d| _        d| _        d| _        d| _        d| _        d
| _        d| _        | j,                  rt=        |«      nd| _        | j,                  rt?        |«      nd| _        �nLd| _        d| _        |j;                  «       | _        |jA                  «       | _        |jC                  «       | _        |jE                  «       | _        |jG                  «       | _        |jI                  «       | _        | j&                  | j$                  k7  | _        tK        |«      }| j"                  rd| _        ntM        |«      | _        || _        tO        |tP        z  «      | _        tO        |t0        z  «      | _        tO        |tR        z  «      | _	        tO        |tT        z  «      | _
        tO        |tV        z  «      | _        tO        |tX        z  «      | _        tO        |tZ        z  «      | _        tO        |t\        z  «      | _        tO        |t^        z  «      | _        tO        |t`        z  «      | _        | j4                  r| j                  rtc        |«      | _        n|| _        | j                  xr |td        v | _        | j,                  r!t=        |«      | _        t?        |«      | _        nd| _        d| _        tg        |«      | _4        tk        |«      | _6        y)zkCompute all properties for *character* (built once per codepoint,
        every branch assigns every slot).é€   TFéA   éZ   éa   éz   é0   é9   r   é    é	   é   N)7r'   Úordr.   r1   rB   r?   rA   r   r@   r3   r4   r5   r6   r7   r8   r9   r:   r)   r*   r+   r,   r-   r(   r/   r   r0   r2   r;   r<   Úisprintabler   r    ÚisalphaÚisupperÚislowerÚisspaceÚisdigitr   r   rD   r   r   r   r   r   r   r   r   r$   r!   r   r"   r=   r   r>   )Úselfr'   Úor0   s       úS/root/workspace/ytshorts/venv/lib/python3.12/site-packages/charset_normalizer/md.pyÚ__init__zCharInfo.__init__k   sL  € ð #ˆŒô �Y“ˆØˆs‹7Ø ˆDŒMØ$ˆDÔØ'ˆDŒOØ!ˆDŒMØ#ˆDŒOØ!Ô%AÐAˆDŒIØˆDŒKØ$ˆDÔØ).ˆDÔ&Ø"ˆDŒNØ$ˆDÔØ"'ˆDÔØ05ˆDÔ-Ø!ˆDŒMà�QŒ}˜"�}à!�”
Ø!�”
Ø"�”
Ø"�”
Ø"�”
Ø!%�”Ø%)�Ô"Ü#�”
Ø!�”
Ø"�”
Ø �–Ø�q”˜C•à!�”
Ø"�”
Ø!�”
Ø"�”
Ø"�”
Ø!%�”Ø%)�Ô"Ü#�”
Ø!�”
Ø"�”
Ø �–Ø�q”˜B•à"�”
Ø"�”
Ø"�”
Ø"�”
Ø!�”
Ø!%�”Ø%*�Ô"Ø�”
Ø"�”
Ø"�”
Ø �–Ø�b’˜Q !œ\ r�\à"�”
Ø"�”
Ø"�”
Ø!�”
Ø"�”
Ø!" b¡�”Ø%*�Ô"Ø�”
Ø"�”
Ø"�”
Ø �–ð "+×!6Ñ!6Ó!8�”Ø"�”
Ø"�”
Ø"�”
Ø"�”
Ø"�”
Ø%*�Ô"Ø�”
Ø"�”
Ø:>¿.º.œ^¨IÔ6Èe�”
Ø37·>²>œ9 YÔ/Àu�–ð "ˆDŒMØˆDŒIØ&×2Ñ2Ó4ˆDŒNØ"×*Ñ*Ó,ˆDŒJØ"×*Ñ*Ó,ˆDŒJØ"×*Ñ*Ó,ˆDŒJØ"×*Ñ*Ó,ˆDŒJØ"×*Ñ*Ó,ˆDŒJØ!%§¡¨t¯z©zÑ!9ˆDÔô *¨)Ó4ˆEØ�zŠzØ %�•ä +¨IÓ 6�”ØˆDŒJÜ# E¬LÑ$8Ó9ˆDÔÜ˜e¤f™nÓ-ˆDŒJÜ˜u¤t™|Ó,ˆDŒKÜ# E¬IÑ$5Ó6ˆDÔÜ)-¨eÔ6IÑ.IÓ)JˆDÔ&Ü! %¬'¡/Ó2ˆDŒNÜ# E¬IÑ$5Ó6ˆDÔÜ"& u¬|Ñ';Ó"<ˆDÔÜ04°UÔ=WÑ5WÓ0XˆDÔ-Ü  ¬Ñ!4Ó5ˆDŒMà�zŠz˜d×.Ò.Ü"/°	Ó":�•à"+�”à"Ÿk™kÒP¨iÔ;PÐ.PˆDŒOð �~Š~Ü+¨IÓ6�”
Ü$ YÓ/�•à"�”
Ø �”ä" 9Ó-ˆŒ
Ü 	Ó*ˆ�ó    N)r'   rC   ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__Ú__annotations__r[   © r\   rZ   r&   r&   ,   s©   … ÙHð€Ið> ƒNØƒOØƒKØƒKØƒKØƒKØƒKØƒNØÓØƒJØÓØƒKØƒLØÓØÓØƒOØÓØÓØ"&Ó&ØƒNØƒKØ	ƒIØÓØ	ƒIØƒNØ
ƒJØÓØƒOôH+r\   r&   N)Úmaxsizec                ó   — t        | «      S )zBBuild (once per codepoint) and cache the CharInfo for *character*.)r&   )r'   s    rZ   Ú
_char_inforh   ø   s   € ô �IÓÐr\   rG   zlist[CharInfo]Ú_ASCII_CHAR_INFOc                  ó6   — e Zd ZdZdZdd„Zdd„Zed	d„«       Zy)
ÚMessDetectorPluginzy
    Base abstract class used for mess detection plugins.
    All detectors MUST extend and implement given methods.
    re   c                ó   — t         ‚)z‰
        The main routine to be executed upon character.
        Insert the logic in witch the text would be considered chaotic.
        ©ÚNotImplementedError©rX   r'   Úinfos      rZ   Ú	feed_infozMessDetectorPlugin.feed_info  s
   € ô
 "Ð!r\   c                ó   — t         ‚)zB
        Permit to reset the plugin to the initial state.
        rm   ©rX   s    rZ   ÚresetzMessDetectorPlugin.reset  s
   € ô "Ð!r\   c                ó   — t         ‚)z…
        Compute the chaos ratio based on what your feed() has seen.
        Must NOT be lower than 0.; No restriction gt 0.
        rm   rs   s    rZ   ÚratiozMessDetectorPlugin.ratio  s
   € ô "Ð!r\   N©r'   rC   rp   r&   r]   r^   ©r]   r^   ©r]   Úfloat)	r_   r`   ra   rb   rc   rq   rt   Úpropertyrv   re   r\   rZ   rk   rk     s,   „ ñð
 €Ió"ó"ð ò"ó ñ"r\   rk   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zed	d„«       Zy)
Ú TooManySymbolOrPunctuationPlugin©Ú_punctuation_countÚ_symbol_countÚ_character_countÚ_last_printable_charc                ó<   — d| _         d| _        d| _        d | _        y ©Nr   r~   rs   s    rZ   r[   z)TooManySymbolOrPunctuationPlugin.__init__*  s"   € Ø'(ˆÔØ"#ˆÔØ%&ˆÔà04ˆÕ!r\   c                ó6  — | xj                   dz  c_         || j                  k7  rn|j                  sb|j                  r| xj                  dz  c_        || _        y|j
                  s-|j                  r!|j                  s| xj                  dz  c_        || _        y)ú1Optimized feed using pre-computed character info.r   é   N)	r�   r‚   r@   r;   r   r-   r<   r?   r€   ro   s      rZ   rq   z*TooManySymbolOrPunctuationPlugin.feed_info1  sw   € à×Ò Ñ"Õà˜×1Ñ1Ò1¸$¿)º)Ø�zŠzØ×'Ò'¨1Ñ,Õ'ð %.ˆÕ!ð —Z’Z D§H¢H°T·]²]Ø×"Ò" aÑ'Õ"à$-ˆÕ!r\   c                ó.   — d| _         d| _        d| _        y r„   )r   r�   r€   rs   s    rZ   rt   z&TooManySymbolOrPunctuationPlugin.reset=  s   € Ø"#ˆÔØ !ˆÔØˆÕr\   c                ó€   — | j                   dk(  ry| j                  | j                  z   | j                   z  }|dk\  r|S dS )Nr   ç        ç333333Ó?)r�   r   r€   )rX   Úratio_of_punctuations     rZ   rv   z&TooManySymbolOrPunctuationPlugin.ratioB  sO   € à× Ñ  AÒ%Øð ×#Ñ# d×&8Ñ&8Ñ8Ø×!Ñ!ñ'"Ðð (<¸sÒ'BÐ#ÐKÈÐKr\   Nrx   rw   ry   ©	r_   r`   ra   rc   r[   rq   rt   r{   rv   re   r\   rZ   r}   r}   "  s.   „ ð€Ió5ó
.óð
 òLó ñLr\   r}   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zed	d„«       Zy)
ÚTooManyAccentuatedPlugin©r�   Ú_accentuated_countc                ó    — d| _         d| _        y r„   r�   rs   s    rZ   r[   z!TooManyAccentuatedPlugin.__init__Q  s   € Ø%&ˆÔØ'(ˆÕr\   c                ór   — | xj                   dz  c_         |j                  r| xj                  dz  c_        yy©r†   r   N)r�   r1   r‘   ro   s      rZ   rq   z"TooManyAccentuatedPlugin.feed_infoU  s2   € à×Ò Ñ"Õà×ÒØ×#Ò# qÑ(Ö#ð r\   c                ó    — d| _         d| _        y r„   r�   rs   s    rZ   rt   zTooManyAccentuatedPlugin.reset\  s   € Ø !ˆÔØ"#ˆÕr\   c                óf   — | j                   dk  ry| j                  | j                   z  }|dk\  r|S dS )Né   rŠ   gffffffÖ?r�   )rX   Úratio_of_accentuations     rZ   rv   zTooManyAccentuatedPlugin.ratio`  s=   € à× Ñ  1Ò$Øà'+×'>Ñ'>À×AVÑAVÑ'VÐØ(=ÀÒ(EÐ$ÐNÈ3ÐNr\   Nrx   rw   ry   r�   re   r\   rZ   r�   r�   N  s,   „ Ø:€Ió)ó)ó$ð òOó ñOr\   r�   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zed	d„«       Zy)
ÚUnprintablePlugin©Ú_unprintable_countr�   Ú_has_escapec                ó.   — d| _         d| _        d| _        y ©Nr   Fr›   rs   s    rZ   r[   zUnprintablePlugin.__init__l  s   € Ø'(ˆÔØ%&ˆÔØ!&ˆÕr\   c                ó´   — |dk(  rd| _         |j                  s+|j                  s|dk7  r|dk7  r| xj                  dz  c_        | xj                  dz  c_        y)r†   úTúu   ï»¿r   N)r�   r(   r,   rœ   r�   ro   s      rZ   rq   zUnprintablePlugin.feed_infoq  sT   € à˜ÒØ#ˆDÔð —’Ø—J’JØ˜VÒ#Ø˜XÒ%à×#Ò# qÑ(Õ#Ø×Ò Ñ"Ör\   c                ó    — d| _         d| _        y rŸ   )rœ   r�   rs   s    rZ   rt   zUnprintablePlugin.reset  s   € Ø"#ˆÔØ ˆÕr\   c                ót   — | j                   dk(  ry| j                  ry| j                  dz  | j                   z  S )Nr   rŠ   ç      ð?r—   )r�   r�   rœ   rs   s    rZ   rv   zUnprintablePlugin.ratioƒ  s;   € à× Ñ  AÒ%Øà×ÒØà×'Ñ'¨!Ñ+¨t×/DÑ/DÑDÐDr\   Nrx   rw   ry   r�   re   r\   rZ   rš   rš   i  s,   „ ØI€Ió'ó
#ó!ð òEó ñEr\   rš   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zed	d„«       Zy)
ÚSuspiciousDuplicateAccentPlugin©Ú_successive_countr�   Ú_last_latin_characterÚ_last_was_accentuatedc                ó<   — d| _         d| _        d | _        d| _        y rŸ   r¨   rs   s    rZ   r[   z(SuspiciousDuplicateAccentPlugin.__init__–  s"   € Ø&'ˆÔØ%&ˆÔà6:ˆÔ"Ø+0ˆÕ"r\   c                ó„  — | xj                   dz  c_         | j                  �‡|j                  r{| j                  ro|j                  r+| j                  j                  r| xj
                  dz  c_        |j                  | j                  j                  k(  r| xj
                  dz  c_        || _        |j                  | _        yr”   )r�   rª   r1   r«   r*   r©   rB   ro   s      rZ   rq   z)SuspiciousDuplicateAccentPlugin.feed_info�  s–   € à×Ò Ñ"Õà×&Ñ&Ð2Ø× Ò Ø×*Ò*à�zŠz˜d×8Ñ8×>Ò>Ø×&Ò&¨!Ñ+Õ&Ø�‰ $×"<Ñ"<×"GÑ"GÒGØ×&Ò&¨!Ñ+Õ&Ø%)ˆÔ"Ø%)×%5Ñ%5ˆÕ"r\   c                ó<   — d| _         d| _        d | _        d| _        y rŸ   r¨   rs   s    rZ   rt   z%SuspiciousDuplicateAccentPlugin.reset¬  s"   € Ø!"ˆÔØ !ˆÔØ%)ˆÔ"Ø%*ˆÕ"r\   c                óZ   — | j                   dk(  ry| j                  dz  | j                   z  S )Nr   rŠ   r‡   )r�   r©   rs   s    rZ   rv   z%SuspiciousDuplicateAccentPlugin.ratio²  s/   € à× Ñ  AÒ%Øà×&Ñ&¨Ñ*¨d×.CÑ.CÑCÐCr\   Nrx   rw   ry   r�   re   r\   rZ   r§   r§   Ž  s.   „ ð€Ió1ó6ó+ð òDó ñDr\   r§   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zed	d„«       Zy)
ÚSuspiciousRange©Ú"_suspicious_successive_range_countr�   Ú_last_printable_seenÚ_last_printable_rangec                ó<   — d| _         d| _        d | _        d | _        y r„   r²   rs   s    rZ   r[   zSuspiciousRange.__init__Â  s"   € Ø78ˆÔ/Ø%&ˆÔØ04ˆÔ!Ø15ˆÕ"r\   c                óz  — | xj                   dz  c_         |j                  s|j                  s|j                  rd| _        d| _        y| j                  €|| _        |j                  | _        y| j
                  }|j                  }||k7  s|€!t        ||«      r| xj                  dz  c_        || _        || _        yr”   )	r�   r,   r;   r@   r´   rµ   r=   Ú is_suspiciously_successive_ranger³   )rX   r'   rp   Úunicode_range_aÚunicode_range_bs        rZ   rq   zSuspiciousRange.feed_infoÈ  sª   € à×Ò Ñ"Õà�:Š:˜Ÿš t§y¢yØ(,ˆDÔ%Ø)-ˆDÔ&Øà×$Ñ$Ð,Ø(1ˆDÔ%Ø)-¯©ˆDÔ&Øà&*×&@Ñ&@ˆØ&*§j¡jˆð ˜oÒ-°Ð1HÜ/°ÀÔQØ×7Ò7¸1Ñ<Õ7à$-ˆÔ!Ø%4ˆÕ"r\   c                ó<   — d| _         d| _        d | _        d | _        y r„   )r�   r³   r´   rµ   rs   s    rZ   rt   zSuspiciousRange.resetá  s"   € Ø !ˆÔØ23ˆÔ/Ø$(ˆÔ!Ø%)ˆÕ"r\   c                ó^   — | j                   dk  ry| j                  dz  | j                   z  }|S )NrP   rŠ   r‡   )r�   r³   )rX   Úratio_of_suspicious_range_usages     rZ   rv   zSuspiciousRange.ratioç  s<   € à× Ñ  BÒ&Øð ×3Ñ3°aÑ7Ø×!Ñ!ñ2"Ð'ð /Ð.r\   Nrx   rw   ry   r�   re   r\   rZ   r±   r±   º  s,   „ ð€Ió6ó5ó2*ð ò/ó ñ/r\   r±   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zed	d„«       Zy)
ÚSuperWeirdWordPlugin©Ú_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_countÚ_buffer_first_lowerÚ_buffer_has_non_asciiÚ_buffer_last_char_ligatureÚ_buffer_has_internal_ligatureÚ_is_current_word_invalidÚ_invalid_word_countc                ó  — d| _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        d | _        d| _	        d| _
        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        y rŸ   rÀ   rs   s    rZ   r[   zSuperWeirdWordPlugin.__init__
  sš   € Ø !ˆÔØ$%ˆÔØ()ˆÔ à*/ˆÔ!Ø).ˆÔ à%&ˆÔØ)*ˆÔ!à#$ˆÔØ-1ˆÔØ38ˆÔ*Ø)*ˆÔ!Ø()ˆÔ Ø()ˆÔ Ø).ˆÔ Ø+0ˆÔ"Ø05ˆÔ'Ø38ˆÔ*Ø.3ˆÔ%Ø()ˆÕ r\   c                óÜ  — |j                   �r| j                  rd| _        |j                  | _        | j                  dk(  r|j
                  | _        | xj                  dz  c_        || _        |j                  r| xj                  dz  c_	        |j                  sd| _        |j                  | _        |j                  r| xj                  dz  c_        |j                  r| xj                   dz  c_        y| j"                  s|j$                  r|j                  rd| _        y| j                  sy|j&                  s|j(                  r| j                  rd| _        d| _        |j.                  s|j0                  s|j2                  �r| xj4                  dz  c_        | j                  }| xj6                  |z  c_        |dk\  rÞ| j                  |z  dk\  rd| _        nÄ| j                  rF| j                  j9                  «       r,| j                  |k7  r| xj:                  dz  c_        d| _        nr| j                   dk(  rd| _        | xj:                  dz  c_        nF| j                  r:| j                  r.| j                  |dz
  k(  r| xj:                  dz  c_        d| _        |dk\  rM| j"                  rA| j                  dkD  xr | j                  |z  dk  }|s| xj:                  dz  c_        d| _        | j*                  r1| xj<                  dz  c_        | xj>                  |z  c_        d	| _        | j,                  r| xj@                  dz  c_         d	| _        d	| _        d| _        d| _        d	| _        d| _        d| _        d| _	        d	| _        d	| _        d	| _        d	| _        y|d
vrE|jB                  s8|jD                  r+d| _        | xj                  dz  c_        || _        d	| _        yyyy)r†   Tr   r   Né   ç      à?é   r‹   F>   Ú_ú-ú<ú=ú>ú|ú~)#r)   rÏ   rÐ   r7   rÇ   r+   rÍ   rÈ   r*   rÌ   r.   rÎ   r1   rÉ   rÊ   r:   rË   rÅ   r2   r9   r8   rÄ   rÑ   r,   r;   r>   rÁ   r�   rT   rÃ   rÂ   rÆ   rÒ   r-   r<   )rX   r'   rp   Úbuffer_lengthÚprobable_camel_caseds        rZ   rq   zSuperWeirdWordPlugin.feed_info"  s„  € à�:‹:Ø×.Ò.Ø59�Ô2Ø.2×.>Ñ.>ˆDÔ+Ø×"Ñ" aÒ'Ø+/¯:©:�Ô(Ø×Ò 1Ñ$ÕØ%.ˆDÔ"à�zŠzØ×(Ò(¨AÑ-Õ(Ø—=’=Ø-1�Ô*à15×1AÑ1AˆDÔ.à×ÒØ×)Ò)¨QÑ.Õ)Ø�}Š}Ø×(Ò(¨AÑ-Õ(ð ð ×-Ò-°t·z²zÀT×EUÒEUØ+/�Ô(ØØ×"Ò"ØØ×,Ò,Ø×Ò D×$FÒ$Fà(,ˆDÔ%Ø,0ˆDÔ)Ø�:Š:˜Ÿš t§x£xØ×Ò Ñ!ÕØ!%×!4Ñ!4ˆMà×!Ò! ]Ñ2Õ!à Ò!Ø×,Ñ,¨}Ñ<ÀÒCØ04�DÕ-à×6Ò6Ø×.Ñ.×6Ñ6Ô8Ø×0Ñ0°MÒAà×,Ò,°Ñ1Õ,Ø04�DÕ-Ø×-Ñ-°Ò2Ø04�DÔ-Ø×,Ò,°Ñ1Ö,à×.Ò.Ø×0Ò0Ø×0Ñ0°MÀAÑ4EÒEð
 ×,Ò,°Ñ1Õ,Ø04�DÔ-Ø Ò" t×'?Ò'?à×,Ñ,¨qÑ0ò HØ×0Ñ0°=Ñ@ÀCÑGð %ñ
 ,Ø×,Ò,°Ñ1Õ,Ø04�DÔ-à×(Ò(Ø×$Ò$¨Ñ)Õ$Ø×)Ò)¨]Ñ:Õ)Ø,1�Ô)Ø×,Ò,Ø×(Ò(¨AÑ-Õ(Ø05�Ô-à',ˆDÔ$Ø"#ˆDÔØ%)ˆDÔ"Ø16ˆDÔ.Ø()ˆDÔ%Ø'(ˆDÔ$Ø'(ˆDÔ$Ø',ˆDÔ$Ø).ˆDÔ&Ø.3ˆDÔ+Ø16ˆDÕ.àÐ@Ñ@Ø—J’JØ—’à(,ˆDÔ%Ø×Ò 1Ñ$ÕØ%.ˆDÔ"Ø16ˆDÕ.ð ð ð Ar\   c                ó  — d| _         d | _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _	        d| _
        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        y rŸ   )rÇ   rÈ   rÉ   rÄ   rÅ   rÂ   rÁ   r�   rÆ   rÃ   rÊ   rË   rÌ   rÍ   rÎ   rÏ   rÐ   rÑ   rÒ   rs   s    rZ   rt   zSuperWeirdWordPlugin.reset†  sš   € ØˆÔØ!%ˆÔØ-2ˆÔ*Ø$)ˆÔ!Ø#(ˆÔ Ø ˆÔØˆÔØ !ˆÔØ$%ˆÔ!Ø#$ˆÔ Ø$%ˆÔ!Ø#$ˆÔ Ø#$ˆÔ Ø#(ˆÔ Ø%*ˆÔ"Ø*/ˆÔ'Ø-2ˆÔ*Ø(-ˆÔ%Ø#$ˆÕ r\   c                óŒ   — | j                   ry| j                  dk  r| j                  dk(  ry| j                  | j                  z  S )Nr¥   é
   r   rŠ   )rÒ   rÁ   rÃ   rÆ   r�   rs   s    rZ   rv   zSuperWeirdWordPlugin.ratio›  sC   € à×#Ò#Øà×Ñ˜rÒ! d×&>Ñ&>À!Ò&CØà×(Ñ(¨4×+@Ñ+@Ñ@Ð@r\   Nrx   rw   ry   r�   re   r\   rZ   r¿   r¿   ó  s0   „ ð€Ió,*ó0b7óH%ð* òAó ñAr\   r¿   c                  ó>   — e Zd ZdZdZdd„Zd	d„Zdd„Zed
d„«       Z	y)ÚCjkUncommonPluginz<
    Detect messy CJK text that probably means nothing.
    ©r�   Ú_uncommon_countc                ó    — d| _         d| _        y r„   ræ   rs   s    rZ   r[   zCjkUncommonPlugin.__init__­  s   € Ø%&ˆÔØ$%ˆÕr\   c                ór   — | xj                   dz  c_         |j                  s| xj                  dz  c_        yyr”   )r�   rA   rç   ro   s      rZ   rq   zCjkUncommonPlugin.feed_info±  s0   € à×Ò Ñ"Õà�ŠØ× Ò  AÑ%Ö ð r\   c                ó    — d| _         d| _        y r„   ræ   rs   s    rZ   rt   zCjkUncommonPlugin.reset¸  s   € Ø !ˆÔØ ˆÕr\   c                ól   — | j                   dk  ry| j                  | j                   z  }|dkD  r|dz  S dS )NrÕ   rŠ   rÖ   é   ræ   )rX   Úuncommon_form_usages     rZ   rv   zCjkUncommonPlugin.ratio¼  sD   € à× Ñ  1Ò$Øà%)×%9Ñ%9¸D×<QÑ<QÑ%QÐð +>ÀÒ*CÐ" QÑ&ÐLÈÐLr\   Nrx   rw   ry   ©
r_   r`   ra   rb   rc   r[   rq   rt   r{   rv   re   r\   rZ   rå   rå   ¦  s3   „ ñð 8€Ió&ó&ó!ð òMó ñMr\   rå   c                  ó>   — e Zd ZdZdZdd„Zd	d„Zdd„Zed
d„«       Z	y)ÚSuspiciousKatakanaPluginzDDetect implausible halfwidth Katakana and uncommon CJK combinations.©Ú_katakana_countÚ_halfwidth_katakana_countÚ
_cjk_countÚ_uncommon_cjk_countc                ó<   — d| _         d| _        d| _        d| _        y r„   rñ   rs   s    rZ   r[   z!SuspiciousKatakanaPlugin.__init__Ò  s!   € Ø$%ˆÔØ./ˆÔ&Ø ˆŒØ()ˆÕ r\   c                óø   — |j                   r7| xj                  dz  c_        |j                  r| xj                  dz  c_        y| xj                  dz  c_        |j
                  s| xj                  dz  c_        yyr”   )r4   rò   r5   ró   rô   rA   rõ   ro   s      rZ   rq   z"SuspiciousKatakanaPlugin.feed_infoØ  sd   € à×ÒØ× Ò  AÑ%Õ Ø×)Ò)Ø×.Ò.°!Ñ3Õ.Øà�Š˜1Ñ�Ø�ŠØ×$Ò$¨Ñ)Ö$ð r\   c                ó<   — d| _         d| _        d| _        d| _        y r„   rñ   rs   s    rZ   rt   zSuspiciousKatakanaPlugin.resetä  s!   € Ø ˆÔØ)*ˆÔ&ØˆŒØ#$ˆÕ r\   c                ó˜   — | j                   dk\  r;| j                   | j                  k(  r"d| j                  cxk  r| j                  k(  ry yy)NrÕ   é   r¥   rŠ   )ró   rò   rô   rõ   rs   s    rZ   rv   zSuspiciousKatakanaPlugin.ratioê  sK   € ð ×*Ñ*¨aÒ/Ø×.Ñ.°$×2FÑ2FÒFØ�T—_‘_Ô@¨×(@Ñ(@Ò@àð Añ r\   Nrx   rw   ry   rî   re   r\   rZ   rð   rð   È  s/   „ ÙNð€Ió*ó
*ó%ð òó ñr\   rð   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zed	d„«       Zy)
ÚArchaicUpperLowerPlugin©Ú_bufÚ_character_count_since_last_sepÚ_successive_upper_lower_countÚ#_successive_upper_lower_count_finalr�   Ú_last_alpha_seen_upperÚ_last_alpha_seen_lowerÚ_current_ascii_onlyc                ót   — d| _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        y )NFr   Trý   rs   s    rZ   r[   z ArchaicUpperLowerPlugin.__init__  sA   € ØˆŒ	à45ˆÔ,à23ˆÔ*Ø89ˆÔ0à%&ˆÔà,1ˆÔ#Ø,1ˆÔ#Ø)-ˆÕ r\   c                ó  — |j                   xr |j                  }| }|r‡| j                  dkD  rx| j                  dk  r7|j                  s+| j                  s| xj
                  | j                  z  c_        d| _        d| _        d| _        | xj                  dz  c_        d| _        y| j                  r|j                  sd| _        | j                  dkD  rh|j                  r| j                  s|j                  r=| j                  r1| j                  r| xj                  dz  c_        d| _        nd| _        nd| _        | xj                  dz  c_        | xj                  dz  c_        |j                  | _        |j                  | _        y)r†   r   é@   Fr   TNr‡   )r)   r/   rÿ   r-   r  r  r   rþ   r�   r.   r*   r  r+   r  )rX   r'   rp   Úis_concernedÚ	chunk_seps        rZ   rq   z!ArchaicUpperLowerPlugin.feed_info  sE  € à!ŸZ™ZÒ>¨D×,>Ñ,>ˆØ*Ð*ˆ	á˜×=Ñ=ÀÒAà×4Ñ4¸Ò:ØŸ
š
Ø×0Ò0à×8Ò8Ø×6Ñ6ñÕ8ð 23ˆDÔ.Ø34ˆDÔ0ØˆDŒIØ×!Ò! QÑ&Õ!Ø'+ˆDÔ$àà×#Ò#¨D¯MªMØ',ˆDÔ$à×/Ñ/°!Ò3Ø—
’
˜t×:Ò:Ø—
’
˜t×:Ò:à—9’9Ø×6Ò6¸!Ñ;Õ6Ø %�D•Ià $�D•Ià!�”	à×Ò Ñ"ÕØ×,Ò,°Ñ1Õ,Ø&*§j¡jˆÔ#Ø&*§j¡jˆÕ#r\   c                ót   — d| _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        y )Nr   FT)r�   rÿ   r   r  r  r  rþ   r  rs   s    rZ   rt   zArchaicUpperLowerPlugin.reset;  sA   € Ø !ˆÔØ/0ˆÔ,Ø-.ˆÔ*Ø34ˆÔ0Ø&+ˆÔ#Ø&+ˆÔ#ØˆŒ	Ø#'ˆÕ r\   c                óT   — | j                   dk(  ry| j                  | j                   z  S )Nr   rŠ   )r�   r  rs   s    rZ   rv   zArchaicUpperLowerPlugin.ratioE  s*   € à× Ñ  AÒ%Øà×7Ñ7¸$×:OÑ:OÑOÐOr\   Nrx   rw   ry   r�   re   r\   rZ   rü   rü   ö  s/   „ ð	€Ió.ó)1óV(ð òPó ñPr\   rü   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zed	d„«       Zy)
ÚArabicIsolatedFormPlugin©r�   Ú_isolated_form_countc                ó    — d| _         d| _        y r„   r  rs   s    rZ   r[   z!ArabicIsolatedFormPlugin.__init__P  s   € Ø%&ˆÔØ)*ˆÕ!r\   c                ó    — d| _         d| _        y r„   r  rs   s    rZ   rt   zArabicIsolatedFormPlugin.resetT  s   € Ø !ˆÔØ$%ˆÕ!r\   c                ó€   — | xj                   dz  c_         |j                  t        z  r| xj                  dz  c_        yyr”   )r�   r0   r   r  ro   s      rZ   rq   z"ArabicIsolatedFormPlugin.feed_infoX  s6   € à×Ò Ñ"Õà�:‰:Ô-Ò-Ø×%Ò%¨Ñ*Ö%ð .r\   c                óX   — | j                   dk  ry| j                  | j                   z  }|S )Nr—   rŠ   r  )rX   Úisolated_form_usages     rZ   rv   zArabicIsolatedFormPlugin.ratio_  s0   € à× Ñ  1Ò$Øà%)×%>Ñ%>À×AVÑAVÑ%VÐà"Ð"r\   Nrx   rw   ry   )	r_   r`   ra   rc   r[   rt   rq   r{   rv   re   r\   rZ   r  r  M  s*   „ Ø<€Ió+ó&ó+ð ò#ó ñ#r\   r  c                óº   — | �|€yt         |    }t         |   }||k(  ry|t        v s|t        v ryt        ||«      t        v ry| dk(  r|t        vS |dk(  r|t        vS y)z_
    Determine if two Unicode ranges seen next to each other can be considered suspicious.
    TFzBasic Latin)r   r   r
   r   r   )r¹   rº   Ú	familly_aÚ	familly_bs       rZ   r¸   r¸   i  sˆ   € ð Ð /Ð"9Øä$ _Ñ5€IÜ$ _Ñ5€Ià�IÒØð 	Ô8Ñ8ØÔ;Ñ;àä˜i¨Ó3Ô7QÑQØð ˜-Ò'ØÔ FÐFÐFà˜-Ò'ØÔ FÐFÐFàr\   c           
     óö  — t        | «      }|dk  rd}n
|dk  rd}nd}| j                  «       }t        }t        }t	        «       }t        «       }	t        «       }
t        «       }t        «       }t        «       }t        «       }t        «       }t        «       }t        «       }|j                  }|	j                  }|
j                  }|j                  }|j                  }|j                  }|j                  }|j                  }|j                  }|j                  }t        d||«      D �]|  }| |||z    D ]æ  }t!        |«      }|dk  r||   }n ||«      } |||«        |||«       |r|j"                  r	 |||«       ŒK |||«       |j"                  r |||«        |||«       |j$                  sŒ |||«       |j&                  r	 |||«       |j(                  r |||«        |||«       n|j*                  r	 |||«       |j,                  sŒÞ |||«       Œè |j.                  |	j.                  z   |
j.                  z   |j.                  z   |j.                  z   |j.                  z   |j.                  z   |j.                  z   |j.                  z   |j.                  z   } | |k\  s�Œ} n¤ |d   }! |d|!«       |s	 |d|!«        |d|!«       |j.                  |	j.                  z   |
j.                  z   |j.                  z   |j.                  z   |j.                  z   |j.                  z   |j.                  z   |j.                  z   |j.                  z   } |r§t1        d	«      }"|"j3                  t4        d
|› d| › d|› �«       |dkD  r8|"j3                  t4        d| dd › �«       |"j3                  t4        d| dd › �«       ||	|
|||||||f
D ]1  }#|"j3                  t4        |#j6                  › d|#j.                  › �«       Œ3 t9        | d«      S )zw
    Compute a mess ratio given a decoded bytes sequence. The maximum threshold does stop the computation earlier.
    iÿ  rN   i   r  rG   r   rã   ú
Úcharset_normalizerzIMess-detector extended-analysis start. intermediary_mean_mess_ratio_calc=z mean_mess_ratio=z maximum_threshold=é   zStarting with: NzEnding with: iðÿÿÿz: rú   )ÚlenÚisasciiri   rh   r}   r�   rš   r§   r±   r¿   rå   rð   rü   r  rq   r=   rQ   r(   r)   r2   r3   r4   r6   rv   r   Úlogr	   Ú	__class__Úround)$Údecoded_sequenceÚmaximum_thresholdÚdebugÚseq_lenÚstepÚis_pure_asciiÚ
ascii_infoÚ	char_infoÚd_spÚd_taÚd_upÚd_sdaÚd_srÚd_swÚd_cuÚd_skÚd_auÚd_aiÚ	d_sp_feedÚ	d_ta_feedÚ	d_up_feedÚ
d_sda_feedÚ	d_sr_feedÚ	d_sw_feedÚ	d_cu_feedÚ	d_sk_feedÚ	d_au_feedÚ	d_ai_feedÚblock_startr'   Ú	codepointrp   Úmean_mess_ratioÚnl_infoÚloggerÚdts$                                       rZ   Ú
mess_ratiorC  �  s2  € ô Ð'Ó(€Gà�‚}Ø‰Ø	�4ŠØ‰àˆð
 +×2Ñ2Ó4€Mô
 "€JÜ€Iô .NÓ-O€DÜ%=Ó%?€DÜ/Ó1€DÜ-LÓ-N€EÜ+Ó-€DÜ!5Ó!7€DÜ/Ó1€DÜ%=Ó%?€DÜ$;Ó$=€DÜ%=Ó%?€Dð —‘€IØ—‘€IØ—‘€IØ—‘€JØ—‘€IØ—‘€IØ—‘€IØ—‘€IØ—‘€IØ—‘€Iä˜Q ¨Ó.ó N
ˆØ)¨+¸ÀdÑ8JÐKò )	/ˆIô ! ›^ˆIØ˜3ŠØ! )Ñ,‘á  Ó+�ñ �i Ô&Ù�i Ô&áà—>’>Ù˜i¨Ô.Øá�i Ô&ð �~Š~Ù˜) TÔ*Ù˜) TÔ*ð �z‹zÙ˜) TÔ*à—:’:Ù˜y¨$Ô/à—;’;Ù˜i¨Ô.Ù˜i¨Õ.Ø×%Ò%Ù˜i¨Ô.à—>“>Ù˜i¨Õ.ðS)	/ðX �J‰JØ�j‰jñà�j‰jñð �k‰kñð �j‰jñ	ð
 �j‰jñð �j‰jñð �j‰jñð �j‰jñð �j‰jñ	ð 	ð Ð/Ô/ÙðuN
ðz ˜R‘.ˆÙ�$˜Ô ÙÙ�d˜GÔ$Ù�$˜Ô ð �J‰JØ�j‰jñà�j‰jñð �k‰kñð �j‰jñ	ð
 �j‰jñð �j‰jñð �j‰jñð �j‰jñð �j‰jñ	ð 	ñ ÜÐ/Ó0ˆà�
‰
Üð1Ø15°Ð6GÈÐGXð Y!Ø!2Ð 3ð5ô	
ð �RŠ<Ø�J‰J”u Ð0@ÀÀ"Ð0EÐ/FÐGÔHØ�J‰J”u Ð.>¸s¸uÐ.EÐ-FÐGÔHà˜˜t U¨D°$¸¸dÀDÈ$ÐOò 	=ˆBØ�J‰J”u §¡ ¨b°·±°
Ð;Õ<ð	=ô � !Ó$Ð$r\   )r'   rC   r]   r&   )r¹   rE   rº   rE   r]   rD   )gš™™™™™É?F)r!  rC   r"  rz   r#  rD   r]   rz   )8Ú
__future__r   Ú	functoolsr   Úloggingr   Úconstantr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Úutilsr   r   r   r   r    r!   r"   r$   rd   r&   rh   r=   Úchrri   rk   r}   r�   rš   r§   r±   r¿   rå   rð   rü   r  r¸   rC  )Ú
_codepoints   0rZ   ú<module>rK     s»  ðÞ "å Ý ÷÷ ÷ ÷ ÷ õ ÷.÷ ñ ð ˜'‘> IÑ-°	Ñ9¸EÑA€ˆSÓ A÷G+ñ G+ñX �4Ôòó ðñ 16°c³
ö$Ø",�H‰S�‹_Õò$Ð �.ó ÷
"ñ "ô<)LÐ'9ô )LôXOÐ1ô Oô6"EÐ*ô "EôJ)DÐ&8ô )DôX6/Ð(ô 6/ôrpAÐ-ô pAôfMÐ*ô MôD+Ð1ô +ô\TPÐ0ô TPôn#Ð1ô #ñ8 �4Ôð Øð Ø2<ð à	ò ó ð ðH JOðZ%ØðZ%Ø.3ðZ%ØBFðZ%à
ôZ%ùò]$s   ÂE