§
    bÒ³gDN  ã                  óü  — 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  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_rangec                  ó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     úS/var/www/html/mpstechhub/venv/lib/python3.11/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.reset3   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.ratio9   s
   € õ "Ð!r)   N©r   r   r   r    ©r   r   r   r*   ©r   r*   ©r   r0   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r'   r,   r/   Úpropertyr2   © 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__C   s0   € Ø'(ˆÔØ"#ˆÔØ%&ˆÔà04ˆÔ!Ø,1ˆÔ#Ð#Ð#r)   r   r   r    c                ó*   — |                      ¦   «         S ©N©Úisprintabler$   s     r&   r'   z)TooManySymbolOrPunctuationPlugin.eligibleK   ó   € Ø×$Ò$Ñ&Ô&Ð&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é   )	rB   rC   r   r   r@   Úisdigitr   r   rA   r$   s     r&   r,   z%TooManySymbolOrPunctuationPlugin.feedN   sµ   € ØÐÔ Ñ"ÐÔð ˜Ô2Ò2Ð2ØÕ!=Ð=Ð=å˜iÑ(Ô(ð (ØÐ'Ô'¨1Ñ,Ð'Ô'Ð'à×!Ò!Ñ#Ô# uÐ,Ð,Ý˜iÑ(Ô(ð -å 	Ñ*Ô*¨eÐ3Ð3àÐ"Ô" aÑ'Ð"Ô"à$-ˆÔ!Ð!Ð!r)   c                ó0   — d| _         d| _        d| _        d S ©Nr   )r@   rB   rA   r.   s    r&   r/   z&TooManySymbolOrPunctuationPlugin.reset`   s    € Ø"#ˆÔØ !ˆÔØˆÔÐÐr)   r0   c                ó^   — | j         dk    rdS | j        | j        z   | j         z  }|dk    r|ndS )Nr   ç        ç333333Ó?)rB   r@   rA   )r%   Úratio_of_punctuations     r&   r2   z&TooManySymbolOrPunctuationPlugin.ratioe   sK   € àÔ  AÒ%Ð%Ø�3ð Ô# dÔ&8Ñ8ØÔ!ñ'"Ðð (<¸sÒ'BÐ'BÐ#Ð#ÈÐKr)   Nr5   r3   r4   r6   ©	r7   r8   r9   rE   r'   r,   r/   r;   r2   r<   r)   r&   r>   r>   B   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 rO   ©rB   Ú_accentuated_countr.   s    r&   rE   z!TooManyAccentuatedPlugin.__init__r   s   € Ø%&ˆÔØ'(ˆÔÐÐr)   r   r   r    c                ó*   — |                      ¦   «         S rG   )Úisalphar$   s     r&   r'   z!TooManyAccentuatedPlugin.eligiblev   s   € Ø× Ò Ñ"Ô"Ð"r)   c                óh   — | xj         dz  c_         t          |¦  «        r| xj        dz  c_        d S d S ©Nr   )rB   r
   rY   r$   s     r&   r,   zTooManyAccentuatedPlugin.feedy   sJ   € ØÐÔ Ñ"ÐÔå˜)Ñ$Ô$ð 	)ØÐ#Ô# qÑ(Ð#Ô#Ð#Ð#ð	)ð 	)r)   c                ó"   — d| _         d| _        d S rO   rX   r.   s    r&   r/   zTooManyAccentuatedPlugin.reset   s   € Ø !ˆÔØ"#ˆÔÐÐr)   r0   c                óN   — | j         dk     rdS | j        | j         z  }|dk    r|ndS )Né   rQ   gffffffÖ?rX   )r%   Úratio_of_accentuations     r&   r2   zTooManyAccentuatedPlugin.ratioƒ   s<   € àÔ  1Ò$Ð$Ø�3à'+Ô'>ÀÔAVÑ'VÐØ(=ÀÒ(EÐ(EÐ$Ð$È3ÐNr)   Nr5   r3   r4   r6   rT   r<   r)   r&   rV   rV   q   sŠ   € € € € € ð)ð )ð )ð )ð#ð #ð #ð #ð)ð )ð )ð )ð$ð $ð $ð $ð ðOð Oð Oñ „XðOð Oð Or)   rV   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 rO   )Ú_unprintable_countrB   r.   s    r&   rE   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   re   rB   r$   s     r&   r,   zUnprintablePlugin.feed”   s@   € Ý˜)Ñ$Ô$ð 	)ØÐ#Ô# qÑ(Ð#Ô#ØÐÔ Ñ"ÐÔÐÐr)   c                ó   — d| _         d S rO   )re   r.   s    r&   r/   zUnprintablePlugin.reset™   s   € Ø"#ˆÔÐÐr)   r0   c                ó@   — | j         dk    rdS | j        dz  | j         z  S )Nr   rQ   r`   )rB   re   r.   s    r&   r2   zUnprintablePlugin.ratioœ   s+   € àÔ  AÒ%Ð%Ø�3àÔ'¨!Ñ+¨tÔ/DÑDÐDr)   Nr5   r3   r4   r6   rT   r<   r)   r&   rc   rc   Œ   sŠ   € € € € € ð'ð 'ð 'ð 'ðð ð ð ð#ð #ð #ð #ð
$ð $ð $ð $ð ðEð Eð Eñ „XðEð Eð Er)   rc   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 rO   ©Ú_successive_countrB   Ú_last_latin_characterr.   s    r&   rE   z(SuspiciousDuplicateAccentPlugin.__init__¥   s    € Ø&'ˆÔØ%&ˆÔà15ˆÔ"Ð"Ð"r)   r   r   r    c                óH   — |                      ¦   «         ot          |¦  «        S rG   )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]   )rB   rq   r
   Úisupperrp   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 rO   ro   r.   s    r&   r/   z%SuspiciousDuplicateAccentPlugin.reset¼   s    € Ø!"ˆÔØ !ˆÔØ%)ˆÔ"Ð"Ð"r)   r0   c                ó@   — | j         dk    rdS | j        dz  | j         z  S )Nr   rQ   rL   )rB   rp   r.   s    r&   r2   z%SuspiciousDuplicateAccentPlugin.ratioÁ   s+   € àÔ  AÒ%Ð%Ø�3àÔ&¨Ñ*¨dÔ.CÑCÐCr)   Nr5   r3   r4   r6   rT   r<   r)   r&   rm   rm   ¤   sŠ   € € € € € ð6ð 6ð 6ð 6ð;ð ;ð ;ð ;ð/ð /ð /ð /ð*ð *ð *ð *ð
 ðDð Dð Dñ „XðDð Dð Dr)   rm   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 rO   )Ú"_suspicious_successive_range_countrB   Ú_last_printable_seenr.   s    r&   rE   zSuspiciousRange.__init__Ê   s    € Ø78ˆÔ/Ø%&ˆÔØ04ˆÔ!Ð!Ð!r)   r   r   r    c                ó*   — |                      ¦   «         S rG   rH   r$   s     r&   r'   zSuspiciousRange.eligibleÏ   rJ   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]   )rB   Úisspacer   r   r{   r   Ú is_suspiciously_successive_rangerz   )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 rO   )rB   rz   r{   r.   s    r&   r/   zSuspiciousRange.reseté   s    € Ø !ˆÔØ23ˆÔ/Ø$(ˆÔ!Ð!Ð!r)   r0   c                óD   — | j         dk    rdS | j        dz  | j         z  }|S )Né   rQ   rL   )rB   rz   )r%   Úratio_of_suspicious_range_usages     r&   r2   zSuspiciousRange.ratioî   s8   € àÔ  BÒ&Ð&Ø�3ð Ô3°aÑ7ØÔ!ñ2"Ð'ð /Ð.r)   Nr5   r3   r4   r6   rT   r<   r)   r&   rx   rx   É   s„   € € € € € ð5ð 5ð 5ð 5ð
'ð 'ð 'ð 'ð.ð .ð .ð .ð.)ð )ð )ð )ð
 ð/ð /ð /ñ „Xð/ð /ð /r)   rx   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_watchrB   Ú_bad_character_countÚ_bufferÚ_buffer_accent_countÚ_buffer_glyph_countr.   s    r&   rE   zSuperWeirdWordPlugin.__init__û   sW   € Ø !ˆÔØ$%ˆÔØ()ˆÔ à*/ˆÔ!Ø).ˆÔ à%&ˆÔØ)*ˆÔ!àˆŒØ)*ˆÔ!Ø()ˆÔ Ð Ð r)   r   r   r    c                ó   — dS rg   r<   r$   s     r&   r'   zSuperWeirdWordPlugin.eligible
  rh   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é   g      à?éÿÿÿÿc              3  ó>   K  — | ]}|                      ¦   «         V — Œd S rG   ©rt   )Ú.0Ú_s     r&   ú	<genexpr>z,SuperWeirdWordPlugin.feed.<locals>.<genexpr>7  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   rR   r‰   >   rš   ú-ú<ú=ú>ú|ú~)r[   r�   r
   r‘   rŽ   r   r   r   r   r   r   r’   r~   r   r   rŠ   ÚlenrB   r�   rt   ÚallrŒ   ÚzipÚranger‹   r�   rM   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Š   rB   r�   rŒ   r.   s    r&   r/   zSuperWeirdWordPlugin.reset^  sG   € ØˆŒØ$)ˆÔ!Ø#(ˆÔ Ø ˆÔØˆÔØ !ˆÔØ$%ˆÔ!Ø#$ˆÔ Ð Ð r)   r0   c                óP   — | j         dk    r| j        dk    rdS | j        | j        z  S )Né
   r   rQ   )rŠ   rŒ   r�   rB   r.   s    r&   r2   zSuperWeirdWordPlugin.ratioh  s3   € àÔ˜rÒ!Ð! dÔ&>À!Ò&CÐ&CØ�3àÔ(¨4Ô+@Ñ@Ð@r)   Nr5   r3   r4   r6   rT   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 )ÚCjkInvalidStopPluginu²   
    GB(Chinese) based encoding often render the stop incorrectly when the content does not fit and
    can be easily detected. Searching for the overuse of 'ä¸…' and 'ä¸„'.
    r   r*   c                ó"   — d| _         d| _        d S rO   ©Ú_wrong_stop_countÚ_cjk_character_countr.   s    r&   rE   zCjkInvalidStopPlugin.__init__v  s   € Ø&'ˆÔØ)*ˆÔ!Ð!Ð!r)   r   r   r    c                ó   — dS rg   r<   r$   s     r&   r'   zCjkInvalidStopPlugin.eligiblez  rh   r)   c                ót   — |dv r| xj         dz  c_         d S t          |¦  «        r| xj        dz  c_        d S d S )N>   õ   ä¸„õ   ä¸…r   )rµ   r   r¶   r$   s     r&   r,   zCjkInvalidStopPlugin.feed}  sZ   € Ø˜Ð&Ð&ØÐ"Ô" aÑ'Ð"Ô"ØˆFÝ�)ÑÔð 	+ØÐ%Ô%¨Ñ*Ð%Ô%Ð%Ð%ð	+ð 	+r)   c                ó"   — d| _         d| _        d S rO   r´   r.   s    r&   r/   zCjkInvalidStopPlugin.reset„  s   € Ø!"ˆÔØ$%ˆÔ!Ð!Ð!r)   r0   c                ó:   — | j         dk     rdS | j        | j         z  S )Né   rQ   )r¶   rµ   r.   s    r&   r2   zCjkInvalidStopPlugin.ratioˆ  s&   € àÔ$ rÒ)Ð)Ø�3ØÔ%¨Ô(AÑAÐAr)   Nr5   r3   r4   r6   )
r7   r8   r9   r:   rE   r'   r,   r/   r;   r2   r<   r)   r&   r²   r²   p  s”   € € € € € ðð ð
+ð +ð +ð +ðð ð ð ð+ð +ð +ð +ð&ð &ð &ð &ð ðBð Bð Bñ „XðBð Bð B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_finalrB   Ú_last_alpha_seenÚ_current_ascii_onlyr.   s    r&   rE   z ArchaicUpperLowerPlugin.__init__�  s?   € ØˆŒ	à45ˆÔ,à23ˆÔ*Ø89ˆÔ0à%&ˆÔà,0ˆÔØ)-ˆÔ Ð Ð r)   r   r   r    c                ó   — dS rg   r<   r$   s     r&   r'   z ArchaicUpperLowerPlugin.eligible�  rh   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   TrL   )r[   r   rÂ   rM   rÆ   rÄ   rÃ   rÅ   rÁ   rB   Úisasciirt   Ú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)rB   rÂ   rÃ   rÄ   rÅ   rÁ   rÆ   r.   s    r&   r/   zArchaicUpperLowerPlugin.resetÊ  s?   € Ø !ˆÔØ/0ˆÔ,Ø-.ˆÔ*Ø34ˆÔ0Ø $ˆÔØˆŒ	Ø#'ˆÔ Ð Ð r)   r0   c                ó:   — | j         dk    rdS | j        | j         z  S )Nr   rQ   )rB   rÄ   r.   s    r&   r2   zArchaicUpperLowerPlugin.ratioÓ  s&   € àÔ  AÒ%Ð%Ø�3àÔ7¸$Ô:OÑOÐOr)   Nr5   r3   r4   r6   rT   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 rO   ©rB   Ú_isolated_form_countr.   s    r&   rE   z!ArabicIsolatedFormPlugin.__init__Ü  s   € Ø%&ˆÔØ)*ˆÔ!Ð!Ð!r)   c                ó"   — d| _         d| _        d S rO   rÓ   r.   s    r&   r/   zArabicIsolatedFormPlugin.resetà  s   € Ø !ˆÔØ$%ˆÔ!Ð!Ð!r)   r   r   r    c                ó    — t          |¦  «        S rG   )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]   )rB   r   rÔ   r$   s     r&   r,   zArabicIsolatedFormPlugin.feedç  sJ   € ØÐÔ Ñ"ÐÔå" 9Ñ-Ô-ð 	+ØÐ%Ô%¨Ñ*Ð%Ô%Ð%Ð%ð	+ð 	+r)   r0   c                ó>   — | j         dk     rdS | j        | j         z  }|S )Nr`   rQ   rÓ   )r%   Úisolated_form_usages     r&   r2   zArabicIsolatedFormPlugin.ratioí  s,   € àÔ  1Ò$Ð$Ø�3à%)Ô%>ÀÔAVÑ%VÐà"Ð"r)   Nr5   r3   r4   r6   )	r7   r8   r9   rE   r/   r'   r,   r;   r2   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_thresholdr0   Ú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>I  s+   € ð +ð +ð +Øˆˆ‰
Œ
ð+ð +ð +r)   r   rQ   i   é    rÚ   rÉ   é€   ú
r   c              3  ó$   K  — | ]}|j         V — Œd S rG   )r2   )r™   Údts     r&   r›   zmess_ratio.<locals>.<genexpr>`  s$   è è € Ð!?Ð!?¨r "¤(Ð!?Ð!?Ð!?Ð!?Ð!?Ð!?r)   Úcharset_normalizerzIMess-detector extended-analysis start. intermediary_mean_mess_ratio_calc=z mean_mess_ratio=z maximum_threshold=r½   zStarting with: NzEnding with: iðÿÿÿz: é   )r   Ú__subclasses__r§   r©   rª   r'   r,   Úsumr   Úlogr   Ú	__class__r2   Úround)rï   rð   rñ   Ú	detectorsÚlengthÚmean_mess_ratioÚ!intermediary_mean_mess_ratio_calcr   ÚindexÚdetectorÚloggerrù   s               r&   Ú
mess_ratior  A  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ð   r0   rñ   r    r   r0   )(Ú
__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>   rV   rc   rm   rx   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Bð Bð Bð Bð BÐ-ñ Bô Bð Bð>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)   