HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //snap/certbot/5057/lib/python3.12/site-packages/charset_normalizer/__pycache__/md.cpython-312.pyc
�

�F�h�N����ddlmZddlmZddlmZddlmZmZm	Z	ddl
mZmZm
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZGd�d�ZGd	�d
e�ZGd�de�ZGd
�de�Z Gd�de�Z!Gd�de�Z"Gd�de�Z#Gd�de�Z$Gd�de�Z%Gd�de�Z&ed��						d!d��Z'ed��	d"							d#d��Z(y )$�)�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�:�eZdZdZdd�Zdd�Zd	d�Zed
d��Zy)�MessDetectorPluginzy
    Base abstract class used for mess detection plugins.
    All detectors MUST extend and implement given methods.
    c��t�)z@
        Determine if given character should be fed in.
        ��NotImplementedError��self�	characters  ��/build/snapcraft-certbot-c9aaebe726f8beb59a0eb2d8e1671bc4/parts/certbot/install/lib/python3.12/site-packages/charset_normalizer/md.py�eligiblezMessDetectorPlugin.eligible'�
��"�!�c��t�)z�
        The main routine to be executed upon character.
        Insert the logic in witch the text would be considered chaotic.
        rr!s  r$�feedzMessDetectorPlugin.feed-s
��
"�!r'c��t�)zB
        Permit to reset the plugin to the initial state.
        r�r"s r$�resetzMessDetectorPlugin.reset4r&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.
        rr+s r$�ratiozMessDetectorPlugin.ratio:s
��"�!r'N�r#�str�return�bool�r#r0r1�None�r1r4�r1�float)	�__name__�
__module__�__qualname__�__doc__r%r)r,�propertyr.�r'r$rr!s*���
"�"�"��"��"r'rc�>�eZdZdd�Zdd�Zd	d�Zdd�Zed
d��Zy)� TooManySymbolOrPunctuationPluginc�J�d|_d|_d|_d|_d|_y)NrF)�_punctuation_count�
_symbol_count�_character_count�_last_printable_char�_frenzy_symbol_in_wordr+s r$�__init__z)TooManySymbolOrPunctuationPlugin.__init__Ds*��'(���"#���%&���04��!�,1��#r'c�"�|j�S�N��isprintabler!s  r$r%z)TooManySymbolOrPunctuationPlugin.eligibleL����$�$�&�&r'c�8�|xjdz
c_||jk7ro|tvrgt|�r|xjdz
c_||_y|j�dur-t
|�r"t|�dur|xjdz
c_||_y)NrF�)	rCrDrrrA�isdigitrrrBr!s  r$r)z%TooManySymbolOrPunctuationPlugin.feedOs�������"��
��2�2�2��!=�=��i�(��'�'�1�,�'�%.��!�
�!�!�#�u�,��i�(��	�*�e�3��"�"�a�'�"�$-��!r'c�.�d|_d|_d|_y�Nr)rArCrBr+s r$r,z&TooManySymbolOrPunctuationPlugin.resetas��"#��� !�����r'c��|jdk(ry|j|jz|jz}|dk\r|SdS)Nr��333333�?)rCrArB)r"�ratio_of_punctuations  r$r.z&TooManySymbolOrPunctuationPlugin.ratiofsO��� � �A�%��
�#�#�d�&8�&8�8��!�!�'"��(<�s�'B�#�K��Kr'Nr5r/r3r6�	r8r9r:rFr%r)r,r<r.r=r'r$r?r?Cs,��2�'�.�$�
�L��Lr'r?c�>�eZdZdd�Zdd�Zd	d�Zdd�Zed
d��Zy)�TooManyAccentuatedPluginc� �d|_d|_yrP�rC�_accentuated_countr+s r$rFz!TooManyAccentuatedPlugin.__init__ss��%&���'(��r'c�"�|j�SrH)�isalphar!s  r$r%z!TooManyAccentuatedPlugin.eligiblews��� � �"�"r'c�p�|xjdz
c_t|�r|xjdz
c_yy�Nr)rCr
rZr!s  r$r)zTooManyAccentuatedPlugin.feedzs1������"���)�$��#�#�q�(�#�%r'c� �d|_d|_yrPrYr+s r$r,zTooManyAccentuatedPlugin.reset�s�� !���"#��r'c�f�|jdkry|j|jz}|dk\r|SdS)N�rRgffffff�?rY)r"�ratio_of_accentuations  r$r.zTooManyAccentuatedPlugin.ratio�s=��� � �1�$��'+�'>�'>��AV�AV�'V��(=��(E�$�N�3�Nr'Nr5r/r3r6rUr=r'r$rWrWrs,��)�#�)�$��O��Or'rWc�>�eZdZdd�Zdd�Zd	d�Zdd�Zed
d��Zy)�UnprintablePluginc� �d|_d|_yrP)�_unprintable_countrCr+s r$rFzUnprintablePlugin.__init__�s��'(���%&��r'c��y�NTr=r!s  r$r%zUnprintablePlugin.eligible����r'c�n�t|�r|xjdz
c_|xjdz
c_yr^)rrfrCr!s  r$r)zUnprintablePlugin.feed�s,���)�$��#�#�q�(�#�����"�r'c��d|_yrP)rfr+s r$r,zUnprintablePlugin.reset�s
��"#��r'c�Z�|jdk(ry|jdz|jzS)NrrRra)rCrfr+s r$r.zUnprintablePlugin.ratio�s/��� � �A�%���'�'�!�+�t�/D�/D�D�Dr'Nr5r/r3r6rUr=r'r$rdrd�s,��'��#�
$��E��Er'rdc�>�eZdZdd�Zdd�Zd	d�Zdd�Zed
d��Zy)�SuspiciousDuplicateAccentPluginc�.�d|_d|_d|_yrP��_successive_countrC�_last_latin_characterr+s r$rFz(SuspiciousDuplicateAccentPlugin.__init__�s��&'���%&���15��"r'c�<�|j�xrt|�SrH)r\rr!s  r$r%z(SuspiciousDuplicateAccentPlugin.eligible�s��� � �"�:�x�	�':�:r'c�~�|xjdz
c_|j��t|�r�t|j�ru|j�r/|jj�r|xjdz
c_t|�t|j�k(r|xjdz
c_||_yr^)rCrrr
�isupperrqrr!s  r$r)z$SuspiciousDuplicateAccentPlugin.feed�s�������"���&�&�2��y�)��t�9�9�:�� � �"�t�'A�'A�'I�'I�'K��&�&�!�+�&��Y�'�=��9S�9S�+T�T��&�&�!�+�&�%.��"r'c�.�d|_d|_d|_yrPrpr+s r$r,z%SuspiciousDuplicateAccentPlugin.reset�s��!"��� !���%)��"r'c�Z�|jdk(ry|jdz|jzS)NrrRrM)rCrqr+s r$r.z%SuspiciousDuplicateAccentPlugin.ratio�s/��� � �A�%���&�&��*�d�.C�.C�C�Cr'Nr5r/r3r6rUr=r'r$rnrn�s,��6�;�/�*�
�D��Dr'rnc�>�eZdZdd�Zdd�Zd	d�Zdd�Zed
d��Zy)�SuspiciousRangec�.�d|_d|_d|_yrP)�"_suspicious_successive_range_countrC�_last_printable_seenr+s r$rFzSuspiciousRange.__init__�s��78��/�%&���04��!r'c�"�|j�SrHrIr!s  r$r%zSuspiciousRange.eligible�rKr'c�<�|xjdz
c_|j�st|�s|tvrd|_y|j�||_yt|j�}t|�}t
||�r|xjdz
c_||_yr^)rC�isspacerrr|r� is_suspiciously_successive_ranger{)r"r#�unicode_range_a�unicode_range_bs    r$r)zSuspiciousRange.feed�s�������"��
�����i�(��8�8�(,�D�%���$�$�,�(1�D�%��&3�D�4M�4M�&N��&3�I�&>��+�O�_�M��3�3�q�8�3�$-��!r'c�.�d|_d|_d|_yrP)rCr{r|r+s r$r,zSuspiciousRange.reset�s�� !���23��/�$(��!r'c�^�|jdkry|jdz|jz}|S)N�
rRrM)rCr{)r"�ratio_of_suspicious_range_usages  r$r.zSuspiciousRange.ratio�s<��� � �B�&��
�3�3�a�7��!�!�2"�'�/�.r'Nr5r/r3r6rUr=r'r$ryry�s*��5�
'�.�.)�
�/��/r'ryc�>�eZdZdd�Zdd�Zd	d�Zdd�Zed
d��Zy)�SuperWeirdWordPluginc��d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_	y)NrF�)
�_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$rFzSuperWeirdWordPlugin.__init__�sQ�� !���$%���()�� �*/��!�).�� �%&���)*��!����)*��!�()�� r'c��yrhr=r!s  r$r%zSuperWeirdWordPlugin.eligiblerir'c���|j�r�|xj|z
c_t|�r|xjdz
c_|jdur`t|�dust|�rHt
|�dur;t|�dur.t|�dur!t|�durt|�durd|_t
|�s,t|�s!t|�st|�st|�r|xjdz
c_y|jsy|j�st|�st|��r�|j�r�|xjdz
c_t!|j�}|xj"|z
c_|dk\r�|j|zdk\rd|_n�t|jd�rX|jdj'�r;t)d�|jD��dur|xj*dz
c_d|_n+|jdk(rd|_|xj*dz
c_|dk\r�|jrwt-|jt/d	|��D��cgc]\}}|j'�r|��}}}d}|rt!|�|zd
krd}|s|xj*dz
c_d|_|j$rD|xj0dz
c_|xj2t!|j�z
c_d|_d|_d|_d	|_d	|_y|dvr<|j5�dur)t7|�rd|_|xj|z
c_yyyycc}}w)
NrFT���?���c3�<K�|]}|j����y�wrH)ru)�.0�_s  r$�	<genexpr>z,SuperWeirdWordPlugin.feed.<locals>.<genexpr>8s����>�A�A�I�I�K�>�s��rrSr�>r��-�<�=�>�|�~)r\r�r
r�r�rrrrrrr�rrrr��lenrCr�ru�allr��zip�ranger�r�rNr)r"r#�
buffer_length�c�i�camel_case_dst�probable_camel_caseds       r$r)zSuperWeirdWordPlugin.feeds
�������L�L�I�%�L��i�(��)�)�Q�.�)��(�(�E�1��i�(�E�1�^�I�5N��9�%��.��i�(�E�1��	�*�e�3��	�*�e�3��I�&�%�/�+/��(��y�!��Y�'��y�)��y�)��9�%��(�(�A�-�(���|�|������>�)�#<��Y�@W��l�l�����!��!$�T�\�\�!2�M��!�!�]�2�!���!��,�,�}�<��C�04�D�-�#�4�<�<��#3�4����R�(�0�0�2��>����>�>�%�G��,�,��1�,�04�D�-��-�-��2�04�D�-��,�,��1�,���"�t�'?�'?�!$�D�L�L�%��=�2I� J�"���1��y�y�{��"��"�
.3�$�!�s�>�':�]�'J�c�'Q�+/�(�+��,�,��1�,�04�D�-��(�(��$�$��)�$��)�)�S����->�>�)�,1��)�',�D�$��D�L�()�D�%�'(�D�$��@�@��!�!�#�u�,��)�$�(,�D�%��L�L�I�%�L�%�-�
A��1"s�/M1c�t�d|_d|_d|_d|_d|_d|_d|_d|_y)Nr�Fr)r�r�r�r�r�rCr�r�r+s r$r,zSuperWeirdWordPlugin.reset_sA�����$)��!�#(�� � ������ !���$%��!�#$�� r'c�r�|jdkr|jdk(ry|j|jzS)N�
rrR)r�r�r�rCr+s r$r.zSuperWeirdWordPlugin.ratiois7�����r�!�d�&>�&>�!�&C���(�(�4�+@�+@�@�@r'Nr5r/r3r6rUr=r'r$r�r��s.��
*��O&�b%��A��Ar'r�c�B�eZdZdZdd�Zd	d�Zd
d�Zdd�Zedd��Z	y)�CjkUncommonPluginz<
    Detect messy CJK text that probably means nothing.
    c� �d|_d|_yrP�rC�_uncommon_countr+s r$rFzCjkUncommonPlugin.__init__vs��%&���$%��r'c��t|�SrH)rr!s  r$r%zCjkUncommonPlugin.eligiblezs
���i� � r'c�p�|xjdz
c_t|�r|xjdz
c_yyr^)rCrr�r!s  r$r)zCjkUncommonPlugin.feed}s4������"���9�%�� � �A�%� ��&r'c� �d|_d|_yrPr�r+s r$r,zCjkUncommonPlugin.reset�s�� !��� ��r'c�l�|jdkry|j|jz}|dkDr|dzSdS)NrarRr�r�r�)r"�uncommon_form_usages  r$r.zCjkUncommonPlugin.ratio�sD��� � �1�$��%)�%9�%9�D�<Q�<Q�%Q��,?��+D�"�R�'�M�#�Mr'Nr5r/r3r6)
r8r9r:r;rFr%r)r,r<r.r=r'r$r�r�qs1���&�!��!��N��Nr'r�c�>�eZdZdd�Zdd�Zd	d�Zdd�Zed
d��Zy)�ArchaicUpperLowerPluginc�f�d|_d|_d|_d|_d|_d|_d|_y)NFrT)�_buf�_character_count_since_last_sep�_successive_upper_lower_count�#_successive_upper_lower_count_finalrC�_last_alpha_seen�_current_ascii_onlyr+s r$rFz ArchaicUpperLowerPlugin.__init__�s9����	�45��,�23��*�89��0�%&���,0���)-�� r'c��yrhr=r!s  r$r%z ArchaicUpperLowerPlugin.eligible�rir'c�Z�|j�xrt|�}|du}|r�|jdkDr�|jdkr?|j�dur-|jdur|xj
|jz
c_d|_d|_d|_d|_|xjdz
c_	d|_y|jdur|j�durd|_|j��|j�r|jj�s*|j�rM|jj�r3|jdur|xjdz
c_d|_nd|_nd|_|xjdz
c_	|xjdz
c_||_y)NFr�@rTrM)
r\r
r�rNr�r�r�r�r�rC�isasciiru�islower)r"r#�is_concerned�	chunk_seps    r$r)zArchaicUpperLowerPlugin.feed�s��� �(�(�*�J�/?�	�/J�� �E�)�	���=�=��A��4�4��:��%�%�'�5�0��,�,��5��8�8��6�6��8�23�D�.�34�D�0�$(�D�!��D�I��!�!�Q�&�!�'+�D�$���#�#�t�+�	�0A�0A�0C�u�0L�',�D�$�� � �,��!�!�#��(=�(=�(E�(E�(G��!�!�#��(=�(=�(E�(E�(G��9�9��$��6�6�!�;�6� %�D�I� $�D�I�!��	�����"���,�,��1�,� )��r'c�f�d|_d|_d|_d|_d|_d|_d|_y)NrFT)rCr�r�r�r�r�r�r+s r$r,zArchaicUpperLowerPlugin.reset�s9�� !���/0��,�-.��*�34��0� $�����	�#'�� r'c�T�|jdk(ry|j|jzS)NrrR)rCr�r+s r$r.zArchaicUpperLowerPlugin.ratio�s*��� � �A�%���7�7�$�:O�:O�O�Or'Nr5r/r3r6rUr=r'r$r�r��s-��.��(*�T(��P��Pr'r�c�>�eZdZdd�Zdd�Zdd�Zd	d�Zed
d��Zy)�ArabicIsolatedFormPluginc� �d|_d|_yrP�rC�_isolated_form_countr+s r$rFz!ArabicIsolatedFormPlugin.__init__�s��%&���)*��!r'c� �d|_d|_yrPr�r+s r$r,zArabicIsolatedFormPlugin.reset�s�� !���$%��!r'c��t|�SrH)rr!s  r$r%z!ArabicIsolatedFormPlugin.eligible�s
����#�#r'c�p�|xjdz
c_t|�r|xjdz
c_yyr^)rCrr�r!s  r$r)zArabicIsolatedFormPlugin.feed�s1������"��"�9�-��%�%��*�%�.r'c�X�|jdkry|j|jz}|S)NrarRr�)r"�isolated_form_usages  r$r.zArabicIsolatedFormPlugin.ratio�s0��� � �1�$��%)�%>�%>��AV�AV�%V��"�"r'Nr5r/r3r6)	r8r9r:rFr,r%r)r<r.r=r'r$r�r��s*��+�&�$�+��#��#r'r��)�maxsizec��|�|�y||k(ryd|vrd|vryd|vsd|vryd|vsd|vr	d|vsd|vry|jd�|jd�}}|D]}|tvr�||vs�y|dv|dv}}|s|r	d|vsd|vry|r|ryd	|vsd	|vrd|vsd|vry|d
k(s|d
k(ryd|vsd|vs|dvr!|dvrd|vsd|vryd
|vsd
|vry|d
k(s|d
k(ryy)za
    Determine if two Unicode range seen next to each other can be considered as suspicious.
    TF�Latin�	Emoticons�	Combining� )�Hiragana�Katakana�CJK�HangulzBasic 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���/�)���/�!�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'ic	��tj�D�cgc]	}|���}}t|�dz}d}|dkrd}n
|dkrd}nd}t|dzt	|��D]^\}}	|D]%}
|
j|�s�|
j
|��'|	d	kDr|	|zd	k(s	|	|dz
k(s�Ftd
�|D��}||k\s�^n|r�td�}|jtd|�d
|�d|���t|�dkDr8|jtd|dd���|jtd|dd���|D]1}|jt|j�d|j����3t|d�Scc}w)zw
    Compute a mess ratio given a decoded bytes sequence. The maximum threshold does stop the computation earlier.
    rrRi� r�r���
rc3�4K�|]}|j���y�wrH)r.)r��dts  r$r�zmess_ratio.<locals>.<genexpr>es����!?�r�"�(�(�!?�s��charset_normalizerzIMess-detector extended-analysis start. intermediary_mean_mess_ratio_calc=z mean_mess_ratio=z maximum_threshold=�zStarting with: Nz
Ending with: i�z: �)r�__subclasses__r�r�r�r%r)�sumr�logr�	__class__r.�round)
�decoded_sequence�maximum_threshold�debug�md_class�	detectors�length�mean_mess_ratio�!intermediary_mean_mess_ratio_calcr#�index�detector�loggerr�s
             r$�
mess_ratiorFs���$6�#D�#D�#F�+���
�+�I�+��&�'�!�+�F� �O�
��|�13�)�	�4��,.�)�,/�)�� 0�4� 7��v��G���	�5�!�	)�H�� � ��+��
�
�i�(�	)�

�A�I�%�"C�C�q�H�
�f�q�j�
 �!�!?�Y�!?�?�O��"3�3���
��/�0���
�
��
1�1R�0S�Sd�et�du�v!�!2� 3�
5�	
��� �2�%��J�J�u��0@��"�0E�/F�G�H��J�J�u�
�.>�s�u�.E�-F�G�H��	=�B��J�J�u�����b����
�;�<�	=���!�$�$��[+s�E6N)r��
str | Noner�rr1r2)g�������?F)r�r0r�r7r�r2r1r7))�
__future__r�	functoolsr�loggingr�constantrrr	�utilsr
rrr
rrrrrrrrrrrrrrrr?rWrdrnryr�r�r�r�r�rr=r'r$�<module>r	s<��"�����
�����,"�"�D,L�'9�,L�^O�1�O�6E�*�E�0"D�&8�"D�J./�(�./�bsA�-�sA�l N�*� N�FIP�0�IP�X#�1�#�8�4��F��F�2<�F�	�F��F�R�4��IN�4%��4%�.3�4%�BF�4%�
�4%��4%r'