§
     ! h,Q  ã                  ó   — d dl mZ d dlmZ d dlmZ ddlmZmZ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  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¦  «        Z" G d„ de¦  «        Z# G d„ de¦  «        Z$ G d„ de¦  «        Z% G d„ de¦  «        Z& ed¬¦  «        d-d"„¦   «         Z' ed#¬¦  «        	 d.d/d+„¦   «         Z(d,S )0é    )Úannotations)Ú	lru_cache)Ú	getLoggeré   )ÚCOMMON_SAFE_ASCII_CHARACTERSÚTRACEÚUNICODE_SECONDARY_RANGE_KEYWORD)Úis_accentuatedÚ	is_arabicÚis_arabic_isolated_formÚis_case_variableÚis_cjkÚis_emoticonÚ	is_hangulÚis_hiraganaÚis_katakanaÚis_latinÚis_punctuationÚis_separatorÚ	is_symbolÚis_thaiÚis_unprintableÚremove_accentÚunicode_rangeÚis_cjk_uncommonc                  óB   — e Zd ZdZdd„Zdd„Zdd	„Zedd„¦   «         ZdS )ÚMessDetectorPluginzy
    Base abstract class used for mess detection plugins.
    All detectors MUST extend and implement given methods.
    Ú	characterÚstrÚreturnÚboolc                ó   — t           ‚)z@
        Determine if given character should be fed in.
        ©ÚNotImplementedError©Úselfr   s     úOc:\xampp_lite_8_4\www\timesheet\venv\Lib\site-packages\charset_normalizer/md.pyÚeligiblezMessDetectorPlugin.eligible'   ó
   € õ "Ð!ó    ÚNonec                ó   — t           ‚)z‰
        The main routine to be executed upon character.
        Insert the logic in witch the text would be considered chaotic.
        r#   r%   s     r'   ÚfeedzMessDetectorPlugin.feed-   s
   € õ
 "Ð!r*   c                ó   — t           ‚)zB
        Permit to reset the plugin to the initial state.
        r#   ©r&   s    r'   ÚresetzMessDetectorPlugin.reset4   r)   r*   Úfloatc                ó   — t           ‚)z…
        Compute the chaos ratio based on what your feed() has seen.
        Must NOT be lower than 0.; No restriction gt 0.
        r#   r/   s    r'   ÚratiozMessDetectorPlugin.ratio:   s
   € õ "Ð!r*   N©r   r   r    r!   ©r   r   r    r+   ©r    r+   ©r    r1   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r(   r-   r0   Úpropertyr3   © r*   r'   r   r   !   sz   € € € € € ðð ð
"ð "ð "ð "ð"ð "ð "ð "ð"ð "ð "ð "ð ð"ð "ð "ñ „Xð"ð "ð "r*   r   c                  óF   — e Zd Zdd„Zdd„Zdd„Zdd	„Zedd„¦   «         ZdS )Ú TooManySymbolOrPunctuationPluginr    r+   c                óL   — d| _         d| _        d| _        d | _        d| _        d S )Nr   F)Ú_punctuation_countÚ_symbol_countÚ_character_countÚ_last_printable_charÚ_frenzy_symbol_in_wordr/   s    r'   Ú__init__z)TooManySymbolOrPunctuationPlugin.__init__D   s0   € Ø'(ˆÔØ"#ˆÔØ%&ˆÔà04ˆÔ!Ø,1ˆÔ#Ð#Ð#r*   r   r   r!   c                ó*   — |                      ¦   «         S ©N©Úisprintabler%   s     r'   r(   z)TooManySymbolOrPunctuationPlugin.eligibleL   ó   € Ø×$Ò$Ñ&Ô&Ð&r*   c                ó(  — | xj         dz  c_         || j        k    ro|t          vrft          |¦  «        r| xj        dz  c_        nF|                     ¦   «         du r0t          |¦  «        r!t          |¦  «        du r| xj        dz  c_        || _        d S )Nr   Fé   )	rC   rD   r   r   rA   Úisdigitr   r   rB   r%   s     r'   r-   z%TooManySymbolOrPunctuationPlugin.feedO   sµ   € ØÐÔ Ñ"ÐÔð ˜Ô2Ò2Ð2ØÕ!=Ð=Ð=å˜iÑ(Ô(ð (ØÐ'Ô'¨1Ñ,Ð'Ô'Ð'à×!Ò!Ñ#Ô# uÐ,Ð,Ý˜iÑ(Ô(ð -å 	Ñ*Ô*¨eÐ3Ð3àÐ"Ô" aÑ'Ð"Ô"à$-ˆÔ!Ð!Ð!r*   c                ó0   — d| _         d| _        d| _        d S ©Nr   )rA   rC   rB   r/   s    r'   r0   z&TooManySymbolOrPunctuationPlugin.reseta   s    € Ø"#ˆÔØ !ˆÔØˆÔÐÐr*   r1   c                ó^   — | j         dk    rdS | j        | j        z   | j         z  }|dk    r|ndS )Nr   ç        ç333333Ó?)rC   rA   rB   )r&   Úratio_of_punctuations     r'   r3   z&TooManySymbolOrPunctuationPlugin.ratiof   sK   € àÔ  AÒ%Ð%Ø�3ð Ô# dÔ&8Ñ8ØÔ!ñ'"Ðð (<¸sÒ'BÐ'BÐ#Ð#ÈÐKr*   Nr6   r4   r5   r7   ©	r8   r9   r:   rF   r(   r-   r0   r<   r3   r=   r*   r'   r?   r?   C   sŠ   € € € € € ð2ð 2ð 2ð 2ð'ð 'ð 'ð 'ð.ð .ð .ð .ð$ð ð ð ð
 ðLð Lð Lñ „XðLð Lð Lr*   r?   c                  óF   — e Zd Zdd„Zdd„Zdd„Zdd	„Zedd„¦   «         ZdS )ÚTooManyAccentuatedPluginr    r+   c                ó"   — d| _         d| _        d S rP   ©rC   Ú_accentuated_countr/   s    r'   rF   z!TooManyAccentuatedPlugin.__init__s   s   € Ø%&ˆÔØ'(ˆÔÐÐr*   r   r   r!   c                ó*   — |                      ¦   «         S rH   )Úisalphar%   s     r'   r(   z!TooManyAccentuatedPlugin.eligiblew   s   € Ø× Ò Ñ"Ô"Ð"r*   c                óh   — | xj         dz  c_         t          |¦  «        r| xj        dz  c_        d S d S ©Nr   )rC   r
   rZ   r%   s     r'   r-   zTooManyAccentuatedPlugin.feedz   sJ   € ØÐÔ Ñ"ÐÔå˜)Ñ$Ô$ð 	)ØÐ#Ô# qÑ(Ð#Ô#Ð#Ð#ð	)ð 	)r*   c                ó"   — d| _         d| _        d S rP   rY   r/   s    r'   r0   zTooManyAccentuatedPlugin.reset€   s   € Ø !ˆÔØ"#ˆÔÐÐr*   r1   c                óN   — | j         dk     rdS | j        | j         z  }|dk    r|ndS )Né   rR   gffffffÖ?rY   )r&   Úratio_of_accentuations     r'   r3   zTooManyAccentuatedPlugin.ratio„   s<   € àÔ  1Ò$Ð$Ø�3à'+Ô'>ÀÔAVÑ'VÐØ(=ÀÒ(EÐ(EÐ$Ð$È3ÐNr*   Nr6   r4   r5   r7   rU   r=   r*   r'   rW   rW   r   sŠ   € € € € € ð)ð )ð )ð )ð#ð #ð #ð #ð)ð )ð )ð )ð$ð $ð $ð $ð ðOð Oð Oñ „XðOð Oð Or*   rW   c                  óF   — e Zd Zdd„Zdd„Zdd„Zdd	„Zedd„¦   «         ZdS )ÚUnprintablePluginr    r+   c                ó"   — d| _         d| _        d S rP   )Ú_unprintable_countrC   r/   s    r'   rF   zUnprintablePlugin.__init__Ž   s   € Ø'(ˆÔØ%&ˆÔÐÐr*   r   r   r!   c                ó   — dS ©NTr=   r%   s     r'   r(   zUnprintablePlugin.eligible’   ó   € Øˆtr*   c                ód   — t          |¦  «        r| xj        dz  c_        | xj        dz  c_        d S r^   )r   rf   rC   r%   s     r'   r-   zUnprintablePlugin.feed•   s@   € Ý˜)Ñ$Ô$ð 	)ØÐ#Ô# qÑ(Ð#Ô#ØÐÔ Ñ"ÐÔÐÐr*   c                ó   — d| _         d S rP   )rf   r/   s    r'   r0   zUnprintablePlugin.resetš   s   € Ø"#ˆÔÐÐr*   r1   c                ó@   — | j         dk    rdS | j        dz  | j         z  S )Nr   rR   ra   )rC   rf   r/   s    r'   r3   zUnprintablePlugin.ratio�   s+   € àÔ  AÒ%Ð%Ø�3àÔ'¨!Ñ+¨tÔ/DÑDÐDr*   Nr6   r4   r5   r7   rU   r=   r*   r'   rd   rd   �   sŠ   € € € € € ð'ð 'ð 'ð 'ðð ð ð ð#ð #ð #ð #ð
$ð $ð $ð $ð ðEð Eð Eñ „XðEð Eð Er*   rd   c                  óF   — e Zd Zdd„Zdd„Zdd„Zdd	„Zedd„¦   «         ZdS )ÚSuspiciousDuplicateAccentPluginr    r+   c                ó0   — d| _         d| _        d | _        d S rP   ©Ú_successive_countrC   Ú_last_latin_characterr/   s    r'   rF   z(SuspiciousDuplicateAccentPlugin.__init__¦   s    € Ø&'ˆÔØ%&ˆÔà15ˆÔ"Ð"Ð"r*   r   r   r!   c                óH   — |                      ¦   «         ot          |¦  «        S rH   )r\   r   r%   s     r'   r(   z(SuspiciousDuplicateAccentPlugin.eligible¬   s!   € Ø× Ò Ñ"Ô"Ð:¥x°	Ñ':Ô':Ð:r*   c                ól  — | xj         dz  c_         | j        �•t          |¦  «        r†t          | j        ¦  «        rr|                     ¦   «         r)| j                             ¦   «         r| xj        dz  c_        t          |¦  «        t          | j        ¦  «        k    r| xj        dz  c_        || _        d S r^   )rC   rr   r
   Úisupperrq   r   r%   s     r'   r-   z$SuspiciousDuplicateAccentPlugin.feed¯   sÂ   € ØÐÔ Ñ"ÐÔàÔ&Ð2Ý˜yÑ)Ô)ð 3å˜tÔ9Ñ:Ô:ð 3ð × Ò Ñ"Ô"ð , tÔ'A×'IÒ'IÑ'KÔ'Kð ,ØÐ&Ô&¨!Ñ+Ð&Ô&å˜YÑ'Ô'­=¸Ô9SÑ+TÔ+TÒTÐTØÐ&Ô&¨!Ñ+Ð&Ô&Ø%.ˆÔ"Ð"Ð"r*   c                ó0   — d| _         d| _        d | _        d S rP   rp   r/   s    r'   r0   z%SuspiciousDuplicateAccentPlugin.reset½   s    € Ø!"ˆÔØ !ˆÔØ%)ˆÔ"Ð"Ð"r*   r1   c                ó@   — | j         dk    rdS | j        dz  | j         z  S )Nr   rR   rM   )rC   rq   r/   s    r'   r3   z%SuspiciousDuplicateAccentPlugin.ratioÂ   s+   € àÔ  AÒ%Ð%Ø�3àÔ&¨Ñ*¨dÔ.CÑCÐCr*   Nr6   r4   r5   r7   rU   r=   r*   r'   rn   rn   ¥   sŠ   € € € € € ð6ð 6ð 6ð 6ð;ð ;ð ;ð ;ð/ð /ð /ð /ð*ð *ð *ð *ð
 ðDð Dð Dñ „XðDð Dð Dr*   rn   c                  óF   — e Zd Zdd„Zdd„Zdd„Zdd	„Zedd„¦   «         ZdS )ÚSuspiciousRanger    r+   c                ó0   — d| _         d| _        d | _        d S rP   )Ú"_suspicious_successive_range_countrC   Ú_last_printable_seenr/   s    r'   rF   zSuspiciousRange.__init__Ë   s    € Ø78ˆÔ/Ø%&ˆÔØ04ˆÔ!Ð!Ð!r*   r   r   r!   c                ó*   — |                      ¦   «         S rH   rI   r%   s     r'   r(   zSuspiciousRange.eligibleÐ   rK   r*   c                óD  — | xj         dz  c_         |                     ¦   «         st          |¦  «        s	|t          v r	d | _        d S | j        €	|| _        d S t          | j        ¦  «        }t          |¦  «        }t          ||¦  «        r| xj        dz  c_        || _        d S r^   )rC   Úisspacer   r   r|   r   Ú is_suspiciously_successive_ranger{   )r&   r   Úunicode_range_aÚunicode_range_bs       r'   r-   zSuspiciousRange.feedÓ   s¾   € ØÐÔ Ñ"ÐÔð ×ÒÑÔð	å˜iÑ(Ô(ð	ð Õ8Ð8Ð8à(,ˆDÔ%ØˆFàÔ$Ð,Ø(1ˆDÔ%ØˆFå&3°DÔ4MÑ&NÔ&NˆÝ&3°IÑ&>Ô&>ˆå+¨O¸_ÑMÔMð 	9ØÐ3Ô3°qÑ8Ð3Ô3à$-ˆÔ!Ð!Ð!r*   c                ó0   — d| _         d| _        d | _        d S rP   )rC   r{   r|   r/   s    r'   r0   zSuspiciousRange.resetê   s    € Ø !ˆÔØ23ˆÔ/Ø$(ˆÔ!Ð!Ð!r*   r1   c                óD   — | j         dk    rdS | j        dz  | j         z  }|S )Né   rR   rM   )rC   r{   )r&   Úratio_of_suspicious_range_usages     r'   r3   zSuspiciousRange.ratioï   s8   € àÔ  BÒ&Ð&Ø�3ð Ô3°aÑ7ØÔ!ñ2"Ð'ð /Ð.r*   Nr6   r4   r5   r7   rU   r=   r*   r'   ry   ry   Ê   s„   € € € € € ð5ð 5ð 5ð 5ð
'ð 'ð 'ð 'ð.ð .ð .ð .ð.)ð )ð )ð )ð
 ð/ð /ð /ñ „Xð/ð /ð /r*   ry   c                  óF   — e Zd Zdd„Zdd„Zdd„Zdd	„Zedd„¦   «         ZdS )ÚSuperWeirdWordPluginr    r+   c                ó’   — d| _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _	        d S )Nr   FÚ )
Ú_word_countÚ_bad_word_countÚ_foreign_long_countÚ_is_current_word_badÚ_foreign_long_watchrC   Ú_bad_character_countÚ_bufferÚ_buffer_accent_countÚ_buffer_glyph_countr/   s    r'   rF   zSuperWeirdWordPlugin.__init__ü   sW   € Ø !ˆÔØ$%ˆÔØ()ˆÔ à*/ˆÔ!Ø).ˆÔ à%&ˆÔØ)*ˆÔ!àˆŒØ)*ˆÔ!Ø()ˆÔ Ð Ð r*   r   r   r!   c                ó   — dS rh   r=   r%   s     r'   r(   zSuperWeirdWordPlugin.eligible  ri   r*   c                óÆ  — |                      ¦   «         �r| xj        |z  c_        t          |¦  «        r| xj        dz  c_        | j        du r|t          |¦  «        du st          |¦  «        r\t          |¦  «        du rKt          |¦  «        du r:t          |¦  «        du r)t          |¦  «        du rt          |¦  «        du rd| _        t          |¦  «        s<t          |¦  «        s-t          |¦  «        st          |¦  «        st          |¦  «        r| xj        dz  c_        d S | j        sd S |                     ¦   «         st          |¦  «        st          |¦  «        �r¸| j        �r°| xj        dz  c_        t!          | j        ¦  «        }| xj        |z  c_        |dk    r©| j        |z  dk    rd| _        n“t          | j        d         ¦  «        rW| j        d                              ¦   «         r8t)          d„ | j        D ¦   «         ¦  «        du r| xj        dz  c_        d| _        n"| j        dk    rd| _        | xj        dz  c_        |dk    ri| j        rbd	„ t-          | j        t/          d
|¦  «        ¦  «        D ¦   «         }d}|rt!          |¦  «        |z  dk    rd}|s| xj        dz  c_        d| _        | j        r9| xj        dz  c_        | xj        t!          | j        ¦  «        z  c_        d| _        d| _        d| _        d
| _        d
| _        d S |dvr>|                     ¦   «         du r*t7          |¦  «        rd| _        | xj        |z  c_        d S d S d S d S )Nr   FTé   ç      à?éÿÿÿÿc              3  ó>   K  — | ]}|                      ¦   «         V — Œd S rH   ©ru   )Ú.0Ú_s     r'   ú	<genexpr>z,SuperWeirdWordPlugin.feed.<locals>.<genexpr>8  s*   è è € Ð>Ð>¨A˜AŸIšI™KœKÐ>Ð>Ð>Ð>Ð>Ð>r*   é   c                ó@   — g | ]\  }}|                      ¦   «         ¯|‘ŒS r=   rš   )r›   ÚcÚis      r'   ú
<listcomp>z-SuperWeirdWordPlugin.feed.<locals>.<listcomp>@  s:   € ð "ð "ð "á˜˜1Ø—y’y‘{”{ð"Øð"ð "ð "r*   r   rS   rŠ   >   rœ   ú-ú<ú=ú>ú|ú~)r\   r‘   r
   r’   r�   r   r   r   r   r   r   r“   r   r   r   r‹   ÚlenrC   rŽ   ru   Úallr�   ÚzipÚrangerŒ   r�   rN   r   )r&   r   Úbuffer_lengthÚcamel_case_dstÚprobable_camel_caseds        r'   r-   zSuperWeirdWordPlugin.feed  s
  € Ø×ÒÑÔñ 	ØˆLŒL˜IÑ%ˆLŒLÝ˜iÑ(Ô(ð /ØÐ)Ô)¨QÑ.Ð)Ô)àÔ(¨EÐ1Ð1Ý˜iÑ(Ô(¨EÐ1Ð1µ^ÀIÑ5NÔ5NÐ1Ý˜9Ñ%Ô%¨Ð.Ð.Ý˜iÑ(Ô(¨EÐ1Ð1Ý 	Ñ*Ô*¨eÐ3Ð3Ý 	Ñ*Ô*¨eÐ3Ð3Ý˜IÑ&Ô&¨%Ð/Ð/à+/�Ô(å�yÑ!Ô!ð.å˜YÑ'Ô'ð.õ ˜yÑ)Ô)ð.õ ˜yÑ)Ô)ð	.õ
 ˜9Ñ%Ô%ð.ð Ð(Ô(¨AÑ-Ð(Ô(ØˆFØŒ|ð 	ØˆFà×ÒÑÔð5	&Ý#1°)Ñ#<Ô#<ð5	&Ý@LÈYÑ@WÔ@Wñ5	&àŒlñ5	&ð ÐÔ Ñ!ÐÔÝ!$ T¤\Ñ!2Ô!2ˆMàÐ!Ô! ]Ñ2Ð!Ô!à Ò!Ð!ØÔ,¨}Ñ<ÀÒCÐCØ04�DÔ-Ð-õ # 4¤<°Ô#3Ñ4Ô4ð	2àœ RÔ(×0Ò0Ñ2Ô2ð	2õ Ð>Ð>°´Ð>Ñ>Ô>Ñ>Ô>À%ÐGÐGàÐ,Ô,°Ñ1Ð,Ô,Ø04�DÔ-Ð-ØÔ-°Ò2Ð2Ø04�DÔ-ØÐ,Ô,°Ñ1Ð,Ô,Ø Ò"Ð" tÔ'?Ð"ð"ð "å # D¤Lµ%¸¸=Ñ2IÔ2IÑ JÔ Jð"ñ "ô "�ð
 .3Ð$à!ð 0¥s¨>Ñ':Ô':¸]Ñ'JÈcÒ'QÐ'QØ+/Ð(à+ð 5ØÐ,Ô,°Ñ1Ð,Ô,Ø04�DÔ-àÔ(ð 2ØÐ$Ô$¨Ñ)Ð$Ô$ØÐ)Ô)­S°´Ñ->Ô->Ñ>Ð)Ô)Ø,1�Ô)à',ˆDÔ$ØˆDŒLØ()ˆDÔ%Ø'(ˆDÔ$Ð$Ð$àÐ@Ð@Ð@Ø×!Ò!Ñ#Ô# uÐ,Ð,Ý˜)Ñ$Ô$ð -ð )-ˆDÔ%ØˆLŒL˜IÑ%ˆLŒLˆLˆLð AÐ@Ø,Ð,Ð,Ð,r*   c                óv   — d| _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        d S )NrŠ   Fr   )r‘   rŽ   r�   rŒ   r‹   rC   r�   r�   r/   s    r'   r0   zSuperWeirdWordPlugin.reset_  sG   € ØˆŒØ$)ˆÔ!Ø#(ˆÔ Ø ˆÔØˆÔØ !ˆÔØ$%ˆÔ!Ø#$ˆÔ Ð Ð r*   r1   c                óP   — | j         dk    r| j        dk    rdS | j        | j        z  S )Né
   r   rR   )r‹   r�   r�   rC   r/   s    r'   r3   zSuperWeirdWordPlugin.ratioi  s3   € àÔ˜rÒ!Ð! dÔ&>À!Ò&CÐ&CØ�3àÔ(¨4Ô+@Ñ@Ð@r*   Nr6   r4   r5   r7   rU   r=   r*   r'   rˆ   rˆ   û   s�   € € € € € ð*ð *ð *ð *ðð ð ð ðO&ð O&ð O&ð O&ðb%ð %ð %ð %ð ðAð Að Añ „XðAð Að Ar*   rˆ   c                  óJ   — e Zd ZdZdd„Zdd„Zdd	„Zdd
„Zedd„¦   «         Z	dS )ÚCjkUncommonPluginz<
    Detect messy CJK text that probably means nothing.
    r    r+   c                ó"   — d| _         d| _        d S rP   ©rC   Ú_uncommon_countr/   s    r'   rF   zCjkUncommonPlugin.__init__v  s   € Ø%&ˆÔØ$%ˆÔÐÐr*   r   r   r!   c                ó    — t          |¦  «        S rH   )r   r%   s     r'   r(   zCjkUncommonPlugin.eligiblez  s   € Ý�iÑ Ô Ð r*   c                óh   — | xj         dz  c_         t          |¦  «        r| xj        dz  c_        d S d S r^   )rC   r   r·   r%   s     r'   r-   zCjkUncommonPlugin.feed}  sI   € ØÐÔ Ñ"ÐÔå˜9Ñ%Ô%ð 	ØÐ Ô  AÑ%Ð Ô ØˆFð	ð 	r*   c                ó"   — d| _         d| _        d S rP   r¶   r/   s    r'   r0   zCjkUncommonPlugin.reset„  s   € Ø !ˆÔØ ˆÔÐÐr*   r1   c                óT   — | j         dk     rdS | j        | j         z  }|dk    r|dz  ndS )Nra   rR   r—   r²   r¶   )r&   Úuncommon_form_usages     r'   r3   zCjkUncommonPlugin.ratioˆ  sC   € àÔ  1Ò$Ð$Ø�3à%)Ô%9¸DÔ<QÑ%QÐð ,?ÀÒ+DÐ+DÐ" RÑ'Ð'È#ÐMr*   Nr6   r4   r5   r7   )
r8   r9   r:   r;   rF   r(   r-   r0   r<   r3   r=   r*   r'   r´   r´   q  s”   € € € € € ðð ð&ð &ð &ð &ð!ð !ð !ð !ðð ð ð ð!ð !ð !ð !ð ðNð Nð Nñ „XðNð Nð Nr*   r´   c                  óF   — e Zd Zdd„Zdd„Zdd„Zdd	„Zedd„¦   «         ZdS )ÚArchaicUpperLowerPluginr    r+   c                óh   — d| _         d| _        d| _        d| _        d| _        d | _        d| _        d S )NFr   T)Ú_bufÚ_character_count_since_last_sepÚ_successive_upper_lower_countÚ#_successive_upper_lower_count_finalrC   Ú_last_alpha_seenÚ_current_ascii_onlyr/   s    r'   rF   z ArchaicUpperLowerPlugin.__init__•  s?   € ØˆŒ	à45ˆÔ,à23ˆÔ*Ø89ˆÔ0à%&ˆÔà,0ˆÔØ)-ˆÔ Ð Ð r*   r   r   r!   c                ó   — dS rh   r=   r%   s     r'   r(   z ArchaicUpperLowerPlugin.eligible¢  ri   r*   c                ó  — |                      ¦   «         ot          |¦  «        }|du }|r| j        dk    rt| j        dk    r4|                     ¦   «         du r| j        du r| xj        | j        z  c_        d| _        d| _        d | _        d| _        | xj	        dz  c_	        d| _        d S | j        du r| 
                    ¦   «         du rd| _        | j        �Š|                     ¦   «         r| j                             ¦   «         s-|                     ¦   «         rB| j                             ¦   «         r)| j        du r| xj        dz  c_        d| _        nd| _        nd| _        | xj	        dz  c_	        | xj        dz  c_        || _        d S )NFr   é@   r   TrM   )r\   r   rÁ   rN   rÅ   rÃ   rÂ   rÄ   rÀ   rC   Úisasciiru   Úislower)r&   r   Úis_concernedÚ	chunk_seps       r'   r-   zArchaicUpperLowerPlugin.feed¥  sË  € Ø ×(Ò(Ñ*Ô*ÐJÕ/?À	Ñ/JÔ/JˆØ  EÐ)ˆ	àð 	˜Ô=ÀÒAÐAàÔ4¸Ò:Ð:Ø×%Ò%Ñ'Ô'¨5Ð0Ð0ØÔ,°Ð5Ð5àÐ8Ô8ØÔ6ñÐ8Ô8ð 23ˆDÔ.Ø34ˆDÔ0Ø$(ˆDÔ!ØˆDŒIØÐ!Ô! QÑ&Ð!Ô!Ø'+ˆDÔ$àˆFàÔ# tÐ+Ð+°	×0AÒ0AÑ0CÔ0CÀuÐ0LÐ0LØ',ˆDÔ$àÔ Ð,Ø×!Ò!Ñ#Ô#ð 	"¨Ô(=×(EÒ(EÑ(GÔ(Gð 	"Ø×!Ò!Ñ#Ô#ð	"Ø(,Ô(=×(EÒ(EÑ(GÔ(Gð	"ð ”9 Ð$Ð$ØÐ6Ô6¸!Ñ;Ð6Ô6Ø %�D”I�Ià $�D”I�Ià!�”	àÐÔ Ñ"ÐÔØÐ,Ô,°Ñ1Ð,Ô,Ø )ˆÔÐÐr*   c                óh   — d| _         d| _        d| _        d| _        d | _        d| _        d| _        d S )Nr   FT)rC   rÁ   rÂ   rÃ   rÄ   rÀ   rÅ   r/   s    r'   r0   zArchaicUpperLowerPlugin.resetÏ  s?   € Ø !ˆÔØ/0ˆÔ,Ø-.ˆÔ*Ø34ˆÔ0Ø $ˆÔØˆŒ	Ø#'ˆÔ Ð Ð r*   r1   c                ó:   — | j         dk    rdS | j        | j         z  S )Nr   rR   )rC   rÃ   r/   s    r'   r3   zArchaicUpperLowerPlugin.ratioØ  s&   € àÔ  AÒ%Ð%Ø�3àÔ7¸$Ô:OÑOÐOr*   Nr6   r4   r5   r7   rU   r=   r*   r'   r¾   r¾   ”  s‹   € € € € € ð.ð .ð .ð .ðð ð ð ð(*ð (*ð (*ð (*ðT(ð (ð (ð (ð ðPð Pð Pñ „XðPð Pð Pr*   r¾   c                  óF   — e Zd Zdd„Zdd„Zdd„Zdd	„Zedd„¦   «         ZdS )ÚArabicIsolatedFormPluginr    r+   c                ó"   — d| _         d| _        d S rP   ©rC   Ú_isolated_form_countr/   s    r'   rF   z!ArabicIsolatedFormPlugin.__init__á  s   € Ø%&ˆÔØ)*ˆÔ!Ð!Ð!r*   c                ó"   — d| _         d| _        d S rP   rÒ   r/   s    r'   r0   zArabicIsolatedFormPlugin.resetå  s   € Ø !ˆÔØ$%ˆÔ!Ð!Ð!r*   r   r   r!   c                ó    — t          |¦  «        S rH   )r   r%   s     r'   r(   z!ArabicIsolatedFormPlugin.eligibleé  s   € Ý˜Ñ#Ô#Ð#r*   c                óh   — | xj         dz  c_         t          |¦  «        r| xj        dz  c_        d S d S r^   )rC   r   rÓ   r%   s     r'   r-   zArabicIsolatedFormPlugin.feedì  sJ   € ØÐÔ Ñ"ÐÔå" 9Ñ-Ô-ð 	+ØÐ%Ô%¨Ñ*Ð%Ô%Ð%Ð%ð	+ð 	+r*   r1   c                ó>   — | j         dk     rdS | j        | j         z  }|S )Nra   rR   rÒ   )r&   Úisolated_form_usages     r'   r3   zArabicIsolatedFormPlugin.ratioò  s,   € àÔ  1Ò$Ð$Ø�3à%)Ô%>ÀÔAVÑ%VÐà"Ð"r*   Nr6   r4   r5   r7   )	r8   r9   r:   rF   r0   r(   r-   r<   r3   r=   r*   r'   rÐ   rÐ   à  s„   € € € € € ð+ð +ð +ð +ð&ð &ð &ð &ð$ð $ð $ð $ð+ð +ð +ð +ð ð#ð #ð #ñ „Xð#ð #ð #r*   rÐ   é   )Úmaxsizer�   ú
str | Noner‚   r    r!   c                óÊ  — | �|€dS | |k    rdS d| v rd|v rdS d| v sd|v rdS d| v sd|v r
d| v sd|v rdS |                       d¦  «        |                      d¦  «        }}|D ]}|t          v rŒ||v r dS Œ| dv |dv }}|s|r
d	| v sd	|v rdS |r|rdS d
| v sd
|v rd	| v sd	|v rdS | dk    s|dk    rdS d	| v sd	|v s| dv r&|dv r"d| v sd|v rdS d| v sd|v rdS | dk    s|dk    rdS dS )za
    Determine if two Unicode range seen next to each other can be considered as suspicious.
    NTFÚLatinÚ	EmoticonsÚ	Combiningú )ÚHiraganaÚKatakanaÚCJKÚHangulzBasic Latin)râ   rá   ÚPunctuationÚForms)Úsplitr	   )r�   r‚   Úkeywords_range_aÚkeywords_range_bÚelÚrange_a_jp_charsÚrange_b_jp_charss          r'   r€   r€   ü  s  € ð Ð /Ð"9Øˆtà˜/Ò)Ð)Øˆuà�/Ð!Ð! g°Ð&@Ð&@Øˆuà�oÐ%Ð%¨¸Ð)GÐ)GØˆuð 	�?Ð"Ð" g°Ð&@Ð&@Ø�Ð&Ð&¨+¸Ð*HÐ*Hàˆuð 	×Ò˜cÑ"Ô"Ø×Ò˜cÑ"Ô"ð 'Ðð
 ð ð ˆØÕ0Ð0Ð0ØØÐ!Ð!Ð!Ø�5�5ð "ð
 	ð
ð	
ð
 	Ð3Ð3ð 'Ðð 	ð Ð,ð Ø�Ð Ð  E¨_Ð$<Ð$<àˆuØð Ð,ð Øˆuà�?Ð"Ð" h°/Ð&AÐ&AØ�OÐ#Ð# u°Ð'?Ð'?Ø�5Ø˜mÒ+Ð+¨À-Ò/OÐ/OØ�5ð 	�Ð Ð  E¨_Ð$<Ð$<ØÐ3Ð3Ð3ØÐ7Ð7Ð7à˜OÐ+Ð+¨}ÀÐ/OÐ/OØ�5Ø�oÐ%Ð%¨°OÐ)CÐ)CØ�5Ø˜mÒ+Ð+¨À-Ò/OÐ/OØ�5àˆ4r*   i   çš™™™™™É?FÚdecoded_sequencer   Úmaximum_thresholdr1   Údebugc           	     óZ  — d„ t                                ¦   «         D ¦   «         }t          | ¦  «        dz   }d}|dk     rd}n|dk    rd}nd}t          | d	z   t	          |¦  «        ¦  «        D ]m\  }}|D ],}	|	                     |¦  «        r|	                     |¦  «         Œ-|d
k    r	||z  d
k    s	||dz
  k    r!t          d„ |D ¦   «         ¦  «        }||k    r nŒn|rÁt          d¦  «        }
|
 	                    t          d|› d|› d|› �¦  «         t          | ¦  «        dk    rL|
 	                    t          d| dd…         › �¦  «         |
 	                    t          d| dd…         › �¦  «         |D ],}|
 	                    t          |j        › d|j        › �¦  «         Œ-t          |d¦  «        S )zw
    Compute a mess ratio given a decoded bytes sequence. The maximum threshold does stop the computation earlier.
    c                ó"   — g | ]} |¦   «         ‘ŒS r=   r=   )r›   Úmd_classs     r'   r¢   zmess_ratio.<locals>.<listcomp>N  s+   € ð +ð +ð +Øˆˆ‰
Œ
ð+ð +ð +r*   r   rR   i   é    rÙ   rÈ   é€   ú
r   c              3  ó$   K  — | ]}|j         V — Œd S rH   )r3   )r›   Údts     r'   r�   zmess_ratio.<locals>.<genexpr>e  s$   è è € Ð!?Ð!?¨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   Ú__subclasses__r©   r«   r¬   r(   r-   Úsumr   Úlogr   Ú	__class__r3   Úround)rî   rï   rð   Ú	detectorsÚlengthÚmean_mess_ratioÚ!intermediary_mean_mess_ratio_calcr   ÚindexÚdetectorÚloggerrø   s               r'   Ú
mess_ratior  F  s1  € ð+ð +Ý#5×#DÒ#DÑ#FÔ#Fð+ñ +ô +€Iõ Ð&Ñ'Ô'¨!Ñ+€Fà €Oà�‚|€|Ø13Ð)Ð)Ø	�4ŠˆØ,.Ð)Ð)à,/Ð)åÐ 0°4Ñ 7½¸v¹¼ÑGÔGð ð Ñˆ	�5Ø!ð 	)ð 	)ˆHØ× Ò  Ñ+Ô+ð )Ø—’˜iÑ(Ô(Ð(øð �AŠIˆI˜%Ð"CÑCÀqÒHÐHØ�f˜q‘jÒ Ð Ý!Ð!?Ð!?°YÐ!?Ñ!?Ô!?Ñ?Ô?ˆOàÐ"3Ò3Ð3Ø�øàð =ÝÐ/Ñ0Ô0ˆà�
Š
Ýð5Ø1Rð5ð 5Øetð5ð 5à!2ð5ð 5ñ	
ô 	
ð 	
õ ÐÑ Ô  2Ò%Ð%Ø�JŠJ•uÐGÐ0@ÀÀ"ÀÔ0EÐGÐGÑHÔHÐHØ�JŠJ•uÐGÐ.>¸s¸u¸uÔ.EÐGÐGÑHÔHÐHàð 	=ð 	=ˆBØ�JŠJ•u ¤Ð;Ð;°´Ð;Ð;Ñ<Ô<Ð<Ð<å� !Ñ$Ô$Ð$r*   N)r�   rÛ   r‚   rÛ   r    r!   )rí   F)rî   r   rï   r1   rð   r!   r    r1   ))Ú
__future__r   Ú	functoolsr   Úloggingr   Úconstantr   r   r	   Úutilsr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r?   rW   rd   rn   ry   rˆ   r´   r¾   rÐ   r€   r  r=   r*   r'   ú<module>r     s¢  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð,"ð "ð "ð "ð "ñ "ô "ð "ðD,Lð ,Lð ,Lð ,Lð ,LÐ'9ñ ,Lô ,Lð ,Lð^Oð Oð Oð Oð OÐ1ñ Oô Oð Oð6Eð Eð Eð Eð EÐ*ñ Eô Eð Eð0"Dð "Dð "Dð "Dð "DÐ&8ñ "Dô "Dð "DðJ./ð ./ð ./ð ./ð ./Ð(ñ ./ô ./ð ./ðbsAð sAð sAð sAð sAÐ-ñ sAô sAð sAðl Nð  Nð  Nð  Nð  NÐ*ñ  Nô  Nð  NðFIPð IPð IPð IPð IPÐ0ñ IPô IPð IPðX#ð #ð #ð #ð #Ð1ñ #ô #ð #ð8 €�4ÐÑÔðFð Fð Fñ ÔðFðR €�4ÐÑÔàINð4%ð 4%ð 4%ð 4%ñ Ôð4%ð 4%ð 4%r*   