403Webshell
Server IP : 202.61.199.114  /  Your IP : 216.73.217.139
Web Server : nginx/1.22.1
System : Linux de.arni-solutions.de 6.1.0-49-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64
User : web20 ( 1018)
PHP Version : 8.4.23
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /proc/3951580/cwd/tmp/calpy/tinyhtml5/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /proc/3951580/cwd/tmp/calpy/tinyhtml5/__pycache__/inputstream.cpython-311.pyc
�

Υ=j~a����ddlZddlZddlmZmZddlmZddlmZm	Z	ddl
Z
ddlmZm
Z
mZed�eD����Zed�eD����Zed	�e	D����Zeed
dg��zZejd��Zhd
�Zejd��ZiZd�ZGd�d��ZGd�de��ZGd�de��ZGd�d��ZGd�d��Zd�Z dS)�N)�BytesIO�StringIO)�Path)�
ascii_letters�ascii_uppercase�)�EOF�ReparseError�space_charactersc#�>K�|]}|���V��dS�N��encode��.0�items  �H/tmp/claude-1015/pip-target-jmvfl800/lib/python/tinyhtml5/inputstream.py�	<genexpr>rs*����"N�"N�T�4�;�;�=�=�"N�"N�"N�"N�"N�"N�c#�>K�|]}|���V��dSr
rrs  rrr
s*����H�H�$����
�
�H�H�H�H�H�Hrc#�>K�|]}|���V��dSr
rrs  rrrs*����!L�!L�D�$�+�+�-�-�!L�!L�!L�!L�!L�!Lr�>�<u�[---Ÿ﷐-﷯￾￿🿾🿿𯿾𯿿𿿾𿿿񏿾񏿿񟿾񟿿񯿾񯿿񿿾񿿿򏿾򏿿򟿾򟿿򯿾򯿿򿿾򿿿󏿾󏿿󟿾󟿿󯿾󯿿󿿾󿿿􏿾􏿿�-�]> ���������	�
���
������������	�
���
���z[	-
 -/:-@\[-`{-~]c��t|t��r`t|��dkrMt|�����r,tt|�����fi|��St|t��rt|���fi|��Stt|d��r|�d��n|t��r
t|fi|��St|fi|��S)N���readr)
�
isinstance�str�lenr�is_file�HTMLUnicodeInputStream�	read_text�hasattrr<�HTMLBinaryInputStream)�source�kwargss  r�HTMLInputStreamrG&s����&�#���7�3�v�;�;��#4�#4��f���9M�9M�9O�9O�#4�%�d�6�l�l�&<�&<�&>�&>�I�I�&�I�I�I�	�F�D�	!�	!�7�%�f�&6�&6�&8�&8�C�C�F�C�C�C�	�g�f�f�&=�&=�I�F�K�K��N�N�N�6�3�	O�	O�7�%�f�7�7��7�7�7�$�V�6�6�v�6�6�6rc�J�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d
d
�Zd�ZdS)rAz�Provides a Unicode stream of characters to the HTMLTokenizer.

    This class takes care of character encoding and removing or replacing
    incorrect byte-sequences and also provides column and line tracking.

    c��dg|_td��df|_|�|��|_|���dS)z�Initialise the HTMLInputStream.

        Create a normalized stream from source for use by tinyhtml5.

        source can be either a file-object, local filename or a string.

        r�utf-8�certainN)�	new_lines�lookup_encoding�encoding�open_stream�stream�reset)�selfrErFs   r�__init__zHTMLUnicodeInputStream.__init__9sG������(��1�1�9�=��
��&�&�v�.�.����
�
�����rc�h�d|_d|_d|_g|_d|_d|_d|_dS)N�r)�chunk�
chunk_size�chunk_offset�errors�previous_number_lines�previous_number_columns�_buffered_character�rRs rrQzHTMLUnicodeInputStream.resetIsA����
����������&'��"�'(��$�$(�� � � rc�D�t|d��r|nt|��S)zuProduce a file object from source.

        source can be either a file object, local filename or a string.

        r<)rCr�rRrEs  rrOz"HTMLUnicodeInputStream.open_streamWs%��!���0�0�F�v�v�h�v�6F�6F�Frc��|j}|�dd|��}|j|z}|�dd|��}|dkr|j|z}n||dzz
}||fS)N�
r���r)rV�countrZ�rfindr[)rR�offsetrV�number_lines�
position_line�last_line_position�position_columns       r�	_positionz HTMLUnicodeInputStream._position_sv���
���{�{�4��F�3�3���2�\�A�
�"�[�[��q�&�9�9����#�#�"�:�V�C�O�O�$�(:�Q�(>�?�O���/�/rc�J�|�|j��\}}|dz|fS)z9Return (line, col) of the current position in the stream.r)rjrX)rR�line�columns   r�positionzHTMLUnicodeInputStream.positionjs)���~�~�d�&7�8�8���f��q��&�!�!rc��|j|jkr|���stS|j}|j|}|dz|_|S)zlRead one character from the stream or queue if available.

        Return EOF when EOF is reached.

        r)rXrW�
read_chunkr	rV)rRrX�	characters   rrqz HTMLUnicodeInputStream.characterosR������/�/��?�?�$�$�
��
��(���J�|�,�	�(�1�,����rc���|�|j��\|_|_d|_d|_d|_|j�d��}|jr|j|z}d|_n|sdSt|��dkrBt|d��}|dksd|cxkrd	krnn|d|_|dd�}ttt�
|������D]}|j�d
���|�dd��}|�d
d��}||_t|��|_dS)NrUri(Frrb�
i�i��zinvalid-codepointz
ra�
T)rjrWrZr[rVrXrPr<r\r?�ord�range�invalid_unicode_re�findallrY�append�replace)rR�data�last�_s    rrpz!HTMLUnicodeInputStream.read_chunk�sr��CG�>�>��O�D�D�@��"�D�$@���
��������{����&�&���#�	��+�d�2�D�'+�D�$�$��	��5��t�9�9�q�=�=��t�B�x�=�=�D��t�|�|�v��7�7�7�7��7�7�7�7�7�+/��8��(��C�R�C�y���s�-�5�5�d�;�;�<�<�=�=�	4�	4�A��K���2�3�3�3�3��|�|�F�D�)�)���|�|�D�$�'�'����
��d�)�)����trFc��	t||f}n\#t$rOd�d�|D����}|sd|��}tjd|�d���}|x}t||f<YnwxYwg}	|�|j|j��}|�|j|jkrn�nN|�	��}||jkr/|�
|j|j|���||_n=|�
|j|jd���|���sn��d�|��S)aReturn a string of characters from the stream.

        String goes up to but does not include any character in 'characters' or
        EOF. 'characters' must be a container that supports the 'in' method and
        iteration over its characters.

        rUc�4�g|]}dt|��d����S)z\x�02x)ru)rrqs  r�
<listcomp>z6HTMLUnicodeInputStream.chars_until.<locals>.<listcomp>�s*��T�T�T�I�7�3�y�>�>�7�7�7�T�T�Tr�^�[z]+TN)�characters_until_regex�KeyError�join�re�compile�matchrVrXrW�endryrp)rR�
characters�opposite�regex�resultr�r�s       r�chars_untilz"HTMLUnicodeInputStream.chars_until�s|��	P�/��X�0F�G�J�J���	P�	P�	P��G�G�T�T��T�T�T�U�U�E��
$�#�E�����J�}�5�}�}�}�-�-�E�JO�O�J�/��X�0F�G�G�G�	P������	��$�$�T�Z��1B�C�C�E��}��$���7�7��8��i�i�k�k���$�/�)�)��M�M�$�*�T�->�s�-B�"C�D�D�D�(+�D�%��
�M�M�$�*�T�%6�%7�%7�8�9�9�9��?�?�$�$�
��+	�.�w�w�v���s��AA+�*A+c���|turT|jdkr!||jz|_|xjdz
c_dS|xjdzc_|j|j|ksJ�dSdS)Nrr)r	rXrVrW)rR�chars  r�ungetzHTMLUnicodeInputStream.unget�s}���s�?�?�� �A�%�%�
"�D�J�.��
����1�$������!�!�Q�&�!�!��z�$�"3�4��<�<�<�<��?�=�<rN)F)
�__name__�
__module__�__qualname__�__doc__rSrQrOrjrnrqrpr�r��rrrArA1s������������ (�(�(�G�G�G�	0�	0�	0�"�"�"�
���"#�#�#�J,�,�,�,�\
=�
=�
=�
=�
=rrAc�N��eZdZdZ			dd�Z�fd�Zd�Zd�Zd�Zd	�Z	d
�Z
�xZS)rDz�Provide a binary stream of characters to the HTMLTokenizer.

    This class takes care of character encoding and removing or replacing
    incorrect byte-sequences and also provides column and line tracking.

    N�windows-1252c��|�|��|_d|_||_||_||_||_||_|���|_	|j	d�J�|�
��dS)Nir)rO�
raw_stream�number_bytes_meta�override_encoding�transport_encoding�same_origin_parent_encoding�likely_encoding�default_encoding�determine_encodingrNrQ)rRrEr�r�r�r�r�rFs        rrSzHTMLBinaryInputStream.__init__�s���
�*�*�6�2�2���
"&���!2���"4���+F��(�.��� 0����/�/�1�1��
��}�Q��+�+�+�	
�
�
�����rc���|jdjj}||jd��|_t�����dS)Nrrz)rN�
codec_info�streamreaderr�rP�superrQ)rRr��	__class__s  �rrQzHTMLBinaryInputStream.resets?����}�Q�'�2�?��"�l�4�?�I�>�>���
���
�
�����rc��t|d��r:t|d��r|���r|S|���}t|��S)Nr<�seekable)rCr�r<rr_s  rrOz!HTMLBinaryInputStream.open_stream	sU���6�6�"�"�	#��v�z�*�*�
�v���/@�/@�
��
��[�[�]�]�F��v���rc�$�|���df}|d�|St|j��df}|d�|St|j��df}|d�|S|���df}|d�|St|j��df}|d�"|dj�d��s|St|j��df}|d�|St|j	��df}|d�|Std��dfS)NrKr�	tentativezutf-16r�)
�
detect_bomrMr�r��detect_encoding_metar��name�
startswithr�r�)rRrNs  rr�z(HTMLBinaryInputStream.determine_encodings;���?�?�$�$�i�/���A�;�"��O�#�4�#9�:�:�I�E���A�;�"��O�#�4�#:�;�;�Y�F���A�;�"��O��,�,�.�.��;���A�;�"��O�#�4�#C�D�D�k�Q���A�;�"�8�A�;�+;�+F�+F�x�+P�+P�"��O�#�4�#7�8�8�+�E���A�;�"��O�#�4�#8�9�9�;�F���A�;�"��O��~�.�.��;�;rc��|jddksJ�t|��x}�dS|jdvrtd��}|�J�dS||jdkr|jddf|_dS|j�d��|df|_|���t
d|jd�d|�����)NrrK��utf-16be�utf-16lerJrzEncoding changed from z to )rNrMr�r��seekrQr
)rR�new_encodings  r�change_encodingz%HTMLBinaryInputStream.change_encoding8s����}�Q��9�,�,�,�,�+�L�9�9�9�L�B��F��� 8�8�8�*�7�3�3�L��+�+�+�+�+�
�T�]�1�-�
-�
-�!�]�1�-�y�9�D�M�M�M��O� � ��#�#�#�)�9�5�D�M��J�J�L�L�L��M���q�)9�M�M�|�M�M�O�O�
Orc
��tjdtjdtjdtjdtjdi}|j�d��}t|t��sJ�dD]L}|�
|d|���x}r+|j�|��t|��cS�M|j�d	��dS)
z�Attempt to detect at BOM at the start of the stream.

        If an encoding can be determined from the BOM return the name of the
        encoding otherwise return None.

        rJr�r�zutf-32lezutf-32be�)�r��Nr)
�codecs�BOM_UTF8�BOM_UTF16_LE�BOM_UTF16_BE�BOM_UTF32_LE�BOM_UTF32_BEr�r<r=�bytes�getr�rM)rR�boms�stringr�rNs     rr�z HTMLBinaryInputStream.detect_bomHs���
�O�W�������������
����%�%�a�(�(���&�%�(�(�(�(�(��	1�	1�D��8�8�F�5�D�5�M�2�2�2�x�
1���$�$�T�*�*�*�&�x�0�0�0�0�0�
1�	
����Q�����rc� �|j�|j��}t|t��sJ�t|��}|j�d��|���}|�|jdvrtd��}|S)z1Report the encoding declared by the meta element.rNr�rJ)
r�r<r�r=r��EncodingParserr��get_encodingr�rM)rR�buffer�parserrNs    rr�z*HTMLBinaryInputStream.detect_encoding_metaes�����%�%�d�&<�=�=���&�%�(�(�(�(�(���'�'������Q�����&�&�(�(����H�M�5M�$M�$M�&�w�/�/�H��r)NNNNr�)r�r�r�r�rSrQrOr�r�r�r��
__classcell__)r�s@rrDrD�s����������KO�CG�"0�����2�����
���&<�&<�&<�PO�O�O�  � � �:������rrDc��eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	e
e	e��Ze
d���Ze
fd	�Zd
�Zd�Zd�Zd
S)�
EncodingBytesz�Bytes-like object with an associated position and various extra methods.

    If the position is ever greater than the string length then an exception is
    raised.

    c��t|t��sJ�t�||�����Sr
)r=r��__new__�lower)�cls�values  rr�zEncodingBytes.__new__{s4���%��'�'�'�'�'��}�}�S�%�+�+�-�-�0�0�0rc��d|_dS)Nrb�rj)rRr�s  rrSzEncodingBytes.__init__s
������rc�r�|jdzx}|_|t|��krt�|||dz�S�Nr�rjr?�
StopIteration�rRrns  r�__next__zEncodingBytes.__next__�s@��$(�N�Q�$6�6��4�>��s�4�y�y� � ����H�X��\�)�*�*rc�>�|jdz
x|_}|||dz�Sr�r�r�s  r�previouszEncodingBytes.previous�s)��$(�N�Q�$6�6�����H�X��\�)�*�*rc�n�|jt|��krt�td|��|_dS�Nr)rjr?r��maxr�s  r�set_positionzEncodingBytes.set_position�s0���>�S��Y�Y�&�&����Q��)�)����rc�h�|jt|��krt�|jdkr|jSdSr�r�r]s r�get_positionzEncodingBytes.get_position�s8���>�S��Y�Y�&�&����>�Q����>�!��rc�0�||j|jdz�Sr�)rnr]s r�current_bytezEncodingBytes.current_byte�s���D�M�$�-�!�"3�3�4�4rc��|j}|t|��kr2|||dz�}||vr	||_|S|dz
}|t|��k�2||_dS)zSkip past a list of characters.rN�rnr?rj�rRr�rnrqs    r�skipzEncodingBytes.skip�so���=����T���"�"��X�h��l�2�3�I��
�*�*�!)��� � ���M�H���T���"�"�"����trc��|j}|t|��kr2|||dz�}||vr	||_|S|dz
}|t|��k�2||_dSr�r�r�s    r�
skip_untilzEncodingBytes.skip_until�so���=����T���"�"��X�h��l�2�3�I��J�&�&�!)��� � ���M�H���T���"�"�"����trc�z�|�||j��x}r|xjt|��z
c_|S)z�Look for a sequence of bytes at the start of a string.

        If the bytes are found return True and advance the position to the byte
        after the match. Otherwise return False and leave the position alone.

        )r�rnr?)rRr�r�s   r�match_byteszEncodingBytes.match_bytes�s<���_�_�U�D�M�:�:�:�6�	(��M�M�S��Z�Z�'�M�M��
rc��	|�||j��t|��zdz
|_n#t$rt
�wxYwdS)z�Look for the next sequence of bytes matching a given sequence.

        If a match is found advance the position to the last byte of the match.

        rT)�indexrnr?rj�
ValueErrorr�)rRr�s  r�jump_tozEncodingBytes.jump_to�sV��	 �!�Z�Z��t�}�=�=��E�
�
�J�Q�N�D�N�N���	 �	 �	 ���	 �����ts	�36�AN)r�r�r�r�r�rSr�r�r�r��propertyrnr��space_characters_bytesr�r�r�r�r�rrr�r�ss���������1�1�1����+�+�+�+�+�+�*�*�*�
"�"�"��x��l�3�3�H�
�5�5��X�5�5�
�
�
�
�	�	�	�	�	�	�
�
�
�
�
rr�c�H�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�ZdS)r�z@Mini parser for detecting character encoding from meta elements.c�<�t|��|_d|_dSr
)r�r{rN�rRr{s  rrSzEncodingParser.__init__�s��!�$�'�'��	���
�
�
rc��d|jvrdS|j|j|j|j|j|jd�}|jD]�}d}	|j�d��n#t$rYn]wxYw|���D]?\}}|j�	|��r 	|��}n#t$rd}YnwxYw�@|sn��|j
S)N�<meta)s<!--r�s</s<!s<?rTrF)r{�handle_comment�handle_meta�handle_possible_end_tag�handle_other�handle_possible_start_tagr�r��itemsr�rN)rR�method_dispatchr}�keep_parsing�key�methods      rr�zEncodingParser.get_encoding�s4���4�9�$�$��4��(��&��/��$��$��0�

�
����	�	�A��L�
��	�!�!�$�'�'�'�'�� �
�
�
����
����.�4�4�6�6�
�
���V��9�(�(��-�-���'-�v�x�x�����(����',���������	� �
���
��}�s#�A�
A(�'A(�
B+�+B;�:B;c�6�|j�d��S)zSkip over comments.s-->�r{r�r]s rr�zEncodingParser.handle_comment�s���y� � ��(�(�(rc���|jjtvrdSd}d}	|���x}�dS|ddkr|ddk}|r|�	||_dSn�|ddkr#|d}t|��}|�	||_dSnb|ddkrVt
t|d����}|���x}�t|��}|�
|r	||_dS|}��)	NTFrs
http-equivrscontent-type�charsetscontent)	r{r�r��
get_attributerNrM�ContentAttributeParserr��parse)rR�
has_pragma�pending_encoding�	attribute�tentative_encoding�codec�content_parsers       rr�zEncodingParser.handle_meta�s0���9�!�)?�?�?��4��
���	1�!�/�/�1�1�1�	�:��t���|�}�,�,�&�q�\�_�<�
��!�"2�">�$4�D�M� �5���1���+�+�%.�q�\�"�'�(:�;�;���$�$)�D�M� �5�%��1���+�+�!7�
�i�PQ�l�8S�8S�!T�!T��*8�*>�*>�*@�*@�@�&�M�+�,>�?�?�E��(�%�)�,1�D�M�#(�5�+0�(�1	1rc�.�|�d���S)NF��end_tag)�handle_possible_tagr]s rr�z(EncodingParser.handle_possible_start_tags���'�'��'�6�6�6rc�V�t|j��|�d���S)NTr)�nextr{rr]s rr�z&EncodingParser.handle_possible_end_tags&���T�Y�����'�'��'�5�5�5rc� �|j}|jtvr,|r(|���|���dS|�t��}|dkr|���n	|����n�dS)NTr)r{r��ascii_letters_bytesr�r�r��spaces_angle_bracketsr)rRrr{rqs    rrz"EncodingParser.handle_possible_tags����y����$7�7�7��
$��
�
�����!�!�#�#�#��4��O�O�$9�:�:�	�����
�M�M�O�O�O�O�
��%�%�'�'�/��
��trc�6�|j�d��S)Nrrr]s rr�zEncodingParser.handle_other5s���y� � ��&�&�&rc��|j}|�ttdg��z��}|�t	|��dksJ�|dvrdSg}g}	|dkr|rn�|tvr|���}nu|dvrd�|��dfS|tvr(|�|�����n|�dS|�|��t|��}��|dkr+|�
��d�|��dfSt|��|���}|x}d	vr�	t|��}||kr9t|��d�|��d�|��fS|tvr(|�|�����n|�|����|d
krd�|��dfS|tvr(|�|�����n|�dS|�|��	t|��}|tvr*d�|��d�|��fS|tvr(|�|�����n|�dS|�|����)z{Return a (name, value) pair for the next attribute in the stream.

        If no attribute is found, return None.

        �/Nr)rNT�=)rrr)�'�"r)r{r�r��	frozensetr?r��ascii_uppercase_bytesryr�rr�r)rRr{rq�attribute_name�attribute_value�quotes      rrzEncodingParser.get_attribute8s����y���I�I�4�y�$��7H�7H�H�I�I�	�� �C�	�N�N�a�$7�$7�$7�$7���$�$��4�����	#��D� � �^� ���4�4�4� �I�I�K�K�	���l�*�*��x�x��/�/��4�4��3�3�3��%�%�i�o�o�&7�&7�8�8�8�8��"��t��%�%�i�0�0�0��T�
�
�I�!	#�$�����M�M�O�O�O��8�8�N�+�+�S�0�0��T�
�
�
��I�I�K�K�	���E�<�/�/�
6� ��J�J�	���%�%���J�J�J��8�8�N�3�3�S�X�X�o�5N�5N�N�N��"7�7�7�#�*�*�9�?�?�+<�+<�=�=�=�=�$�*�*�9�5�5�5�
6��$�
�
��8�8�N�+�+�S�0�0�
�/�
/�
/��"�"�9�?�?�#4�#4�5�5�5�5�
�
��4��"�"�9�-�-�-�		2��T�
�
�I��1�1�1��x�x��/�/����/�1J�1J�J�J��3�3�3��&�&�y���'8�'8�9�9�9�9��"��t��&�&�y�1�1�1�		2rN)
r�r�r�r�rSr�r�r�r�r�rr�rr�rrr�r��s�������J�J�������>)�)�)�1�1�1�B7�7�7�6�6�6����.'�'�'�L2�L2�L2�L2�L2rr�c��eZdZd�Zd�ZdS)rc�B�t|t��sJ�||_dSr
)r=r�r{r�s  rrSzContentAttributeParser.__init__�s#���$��&�&�&�&�&���	�	�	rc���	|j�d��|jxjdz
c_|j���|jjdksdS|jxjdz
c_|j���|jjdvrb|jj}|jxjdz
c_|jj}|j�|��r|j||jj�SdS|jj}	|j�t��|j||jj�S#t$r|j|d�cYSwxYw#t$rYdSwxYw)Nrrr)rr)r{r�rnr�r�r�r�r�)rRr!�old_positions   rrzContentAttributeParser.parse�s���	��I���j�)�)�)��I���!�#����I�N�N�����9�)�T�1�1��t��I���!�#����I�N�N�����y�%��5�5��	�.���	�"�"�a�'�"�"�#�y�1���9�$�$�U�+�+� ��9�\�$�)�2D�%D�E�E��4� $�y�1��4��I�(�(�)?�@�@�@��9�\�$�)�2D�%D�E�E��$�4�4�4��9�\�]�]�3�3�3�3�4������	�	�	��4�4�	���s=�AE�BE�:E�7D?�?E�E�E�E�
E,�+E,N)r�r�r�rSrr�rrrr�s2�������������rrc���t|t��r(	|�d��}n#t$rYdSwxYw|�&	t	j|��S#t$rYdSwxYwdS)z�Return the Python codec name corresponding to an encoding.

    Return None if the string doesn't correspond to a valid encoding.

    �asciiN)r=r��decode�UnicodeDecodeError�webencodings�lookup�AttributeError)rNs rrMrM�s����(�E�"�"��	����w�/�/�H�H��!�	�	�	��4�4�	������	��&�x�0�0�0���	�	�	��4�4�	�����s�-�
;�;�A�
A#�"A#)!r�r��iorr�pathlibrr�rrr*�	constantsr	r
rrr�rrrr�rw�non_bmp_invalid_codepoints�ascii_punctuation_rer�rGrArDr�r�r�rrMr�rr�<module>r2sg��
�
�
�
�	�	�	�	� � � � � � � � �������1�1�1�1�1�1�1�1�����:�:�:�:�:�:�:�:�:�:�#��"N�"N�=M�"N�"N�"N�N�N���i�H�H�-�H�H�H�H�H��!�	�!L�!L�O�!L�!L�!L�L�L��.���D�$�<�1H�1H�H���R�Z�=�>�>��N�N�N��"�r�z�O�Q�Q����7�7�7�o=�o=�o=�o=�o=�o=�o=�o=�dM�M�M�M�M�2�M�M�M�`V�V�V�V�V�E�V�V�V�rx2�x2�x2�x2�x2�x2�x2�x2�v#�#�#�#�#�#�#�#�L����r

Youez - 2016 - github.com/yon3zu
LinuXploit