????

Your IP : 3.14.141.163


Current Path : /opt/cloudlinux/venv/lib/python3.11/site-packages/aiohttp/__pycache__/
Upload File :
Current File : //opt/cloudlinux/venv/lib/python3.11/site-packages/aiohttp/__pycache__/http_parser.cpython-311.pyc

�

If�����UddlZddlZddlZddlZddlmZddlmZddlm	Z	m
Z
mZmZm
Z
mZmZmZmZmZmZmZmZmZddlmZmZmZddlmZddlmZdd	lm Z dd
l!m"Z"m#Z#m$Z$ddl%m&Z&m'Z'm(Z(m)Z)m*Z*ddl+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3dd
l4m5Z5m6Z6ddl7m8Z8ddl9m:Z:m;Z;ddl<m=Z=dZ>edZ?e@ejA��ZBeeeCeDd<ejEd��ZFeeCeDd<ejGdeF�d���ZHeeeCeDd<ejGdejI��ZJeeeCeDd<ejGdejI��ZKeeeCeDd<ejGd��ZLeeeMeDd<Gd�d e��ZNGd!�d"e��ZOed#eNeO��ZPGd$�d%e��ZQGd&�d'e��ZRGd(�d)��ZSGd*�d+ejTeeP��ZUGd,�d-eUeN��ZVGd.�d/eUeO��ZWGd0�d1��ZXGd2�d3��ZYeVZZeWZ[eNZ\eOZ]	e'sdd4l^mVZVmWZWmNZNmOZOeVZ_eWZ`eNZaeOZbdSdS#ec$rYdSwxYw)5�N)�suppress)�IntEnum)�Any�ClassVar�Final�Generic�List�Literal�
NamedTuple�Optional�Pattern�Set�Tuple�Type�TypeVar�Union)�CIMultiDict�CIMultiDictProxy�istr)�URL�)�hdrs)�BaseProtocol)�
HAS_BROTLI�BrotliDecompressor�ZLibDecompressor)�DEBUG�
NO_EXTENSIONS�BaseTimerContext�method_must_be_empty_body�status_code_must_be_empty_body)�BadHttpMessage�
BadStatusLine�ContentEncodingError�ContentLengthError�
InvalidHeader�InvalidURLError�LineTooLong�TransferEncodingError)�HttpVersion�
HttpVersion10)�internal_logger)�
EMPTY_PAYLOAD�StreamReader)�
RawHeaders)�
HeadersParser�
HttpParser�HttpRequestParser�HttpResponseParser�RawRequestMessage�RawResponseMessage)�
�
�ASCIISETz!#$%&'*+-.^_`|~�_TCHAR_SPECIALSz
[0-9A-Za-zz]+�TOKENREzHTTP/(\d)\.(\d)�VERSREz\d+�DIGITSs[0-9a-fA-F]+�	HEXDIGITSc��eZdZUeed<eed<eed<ded<eed<eed<eeed<eed	<eed
<e	ed<dS)
r4�method�path�version�CIMultiDictProxy[str]�headers�raw_headers�should_close�compression�upgrade�chunked�urlN)
�__name__�
__module__�__qualname__�str�__annotations__r*r/�boolrr���J/opt/cloudlinux/venv/lib64/python3.11/site-packages/aiohttp/http_parser.pyr4r4Os}��������K�K�K�

�I�I�I�
����
$�$�$�$����������#�����
�M�M�M�
�M�M�M�	�H�H�H�H�HrQr4c��eZdZUeed<eed<eed<eeed<eed<e	ed<e
eed<e	ed<e	ed	<d
S)r5rA�code�reasonrCrDrErFrGrHN)rJrKrLr*rN�intrMrr/rOrrPrQrRr5r5\sy�������
����

�I�I�I��K�K�K�
�c�
"�"�"�"����������#�����
�M�M�M�
�M�M�M�M�MrQr5�_MsgTc��eZdZdZdZdZdZdS)�
ParseStaterr��N)rJrKrL�
PARSE_NONE�PARSE_LENGTH�
PARSE_CHUNKED�PARSE_UNTIL_EOFrPrQrRrYrYks"�������J��L��M��O�O�OrQrYc�"�eZdZdZdZdZdZdZdS)�
ChunkStaterrrZr[�N)rJrKrL�PARSE_CHUNKED_SIZE�PARSE_CHUNKED_CHUNK�PARSE_CHUNKED_CHUNK_EOF�PARSE_MAYBE_TRAILERS�PARSE_TRAILERSrPrQrRrarass+���������������N�N�NrQrac	�Z�eZdZ			ddedededdfd�Zd	eeded
effd�Z	dS)
r0����
max_line_size�max_headers�max_field_size�returnNc�0�||_||_||_dS�N)rkrlrm)�selfrkrlrms    rR�__init__zHeadersParser.__init__|s"��+���&���,����rQ�linesrBc	���t��}g}d}|d}t|��}|�r	|�dd��\}}n#t$rt	|��d�wxYwt|��dkrt	|���|d|dhddhzrt	|���|�d��}t|��|jkrdtd�|�	d	d
����t|j��tt|�������|�	dd��}	t�|	��st	|���t|��}
|dz
}||}|o	|dd
v}|r�|g}|r�|
t|��z
}
|
|jkrWtd�|�	d	d
����t|j��t|
�����|�
|��|dz
}||kr||}|r
|dd
v}nd}n|��d�|��}nb|
|jkrWtd�|�	d	d
����t|j��t|
�����|�d��}|�	dd��}
d|
vsd|
vsd|
vrt	|���|�|	|
��|�
||f��|��t#|��t%|��fS)Nr�:r���� �	s 	zrequest header name {}�utf8�backslashreplace�utf-8�surrogateescape)rwrxzrequest header field {}rQ�
�
�)r�len�split�
ValueErrorr&�lstriprmr(�format�decoderMr:�	fullmatch�append�join�strip�addr�tuple)rqrsrCrD�	lines_idx�line�
line_count�bname�bvalue�name�
header_length�continuation�
bvalue_lst�values              rR�
parse_headerszHeadersParser.parse_headers�s���%0�M�M�����	��Q�x����Z�Z�
��O	0�
4� $�
�
�4�� 3� 3�
��v�v���
4�
4�
4�#�D�)�)�t�3�
4�����5�z�z�Q���#�E�*�*�*��a��%��)�$��A�w�.�
*�#�D�)�)�)��]�]�6�*�*�F��5�z�z�D�/�/�/�!�,�3�3����V�-?�@�@�����+�,�,���E�
�
�O�O�����<�<��):�;�;�D��$�$�T�*�*�
+�#�E�*�*�*���K�K�M�
��N�I���#�D� �6�D��G�w�$6�L�� 
�$�X�
�"��!�S��Y�Y�.�M�$�t�':�:�:�)�5�<�<� %���V�5G� H� H��� �� 3�4�4��
�.�.�����%�%�d�+�+�+���N�I� �:�-�-�$�Y�/���>�+/��7�g�+=�L��"���)#��*���*�-�-��� �4�#6�6�6�%�1�8�8�!�L�L��1C�D�D����D�/�0�0��M�*�*�����\�\�&�)�)�F��M�M�'�+<�=�=�E��u�}�}���
�
��5���#�F�+�+�+��K�K��e�$�$�$�����v��/�/�/�_�O	0�b!��)�)�5��+=�+=�>�>s�A�A#)rirjri)
rJrKrLrVrrr	�bytesrr/r�rPrQrRr0r0{s�������"� �"�	-�-��-��-��	-�

�-�-�-�-�\?��%�[�\?�	�&�
�2�	3�\?�\?�\?�\?�\?�\?rQr0c��eZdZUdZeeed<														d(deed	ee	j
d
ededed
edeedeedee
dedeeededededdfd�Zejdeedefd���Zdeefd�Zddejejejfdededed ed!e
d"edeeeeefeeffd#�Z deeded$e!eeee
eeffd%�Z"d&eddfd'�Z#dS))r1F�laxN�rirjT�protocol�loop�limitrkrlrm�timerrTr?�readall�payload_exception�response_with_body�read_until_eof�auto_decompressrnc�<�||_||_||_||_||_||_||_|	|_|
|_||_	||_
|
|_g|_d|_
d|_d|_d|_||_||_t'|||��|_dS)NrQF)r�r�rkrlrmr�rTr?r�r�r�r��_lines�_tail�	_upgraded�_payload�_payload_parser�_auto_decompress�_limitr0�_headers_parser)rqr�r�r�rkrlrmr�rTr?r�r�r�r�r�s               rRrrzHttpParser.__init__�s���"!��
���	�*���&���,�����
���	�������!2���"4���,���#%�����
������
�<@��� /������,�]�K��X�X����rQrsc��dSrprP)rqrss  rR�
parse_messagezHttpParser.parse_messages���rQc��|j�!|j���d|_n�|jr|j�|j��|jrq|jddkr|j�d��tt��5|�|j��cddd��S#1swxYwYdS)Nrvz
rQ)r��feed_eofr�r�r�r�	Exceptionr��rqs rRr�zHttpParser.feed_eofs����+�� �)�)�+�+�+�#'�D� � ��z�
/���"�"�4�:�.�.�.��{�
;��;�r�?�f�,�,��K�&�&�s�+�+�+��i�(�(�;�;��-�-�d�k�:�:�;�;�;�;�;�;�;�;�;�;�;�;����;�;�;�;��ts�B<�<C�Cr6rQ�data�SEP�EMPTY�CONTENT_LENGTH�METH_CONNECT�SEC_WEBSOCKET_KEY1c�F	���g}|jr|j|zdc}|_t|��}d}	|j}
|	|k�rG|j��?|j�s7|�||	��}||	kr|js|t|��z}	�M||	k�r�||	|�}|dkr|�d��}|j�|��|t|��z}	|jd|k�r�	|�	|j���|j�
��n#|j�
��wxYwdttf��fd�}
|
��}|�j
vrt|����j|_t!�d|j��}t!�d	d��}|j�J�t'|��pt)|ot+|����}|s�|�|dks�jrt�jsmt/|j|j|
|j�
��}t5||�j|�j|j|j|j|j|j ��
�
}|j!s||_n�||krotE�tF��sJ�t/|j|j|
|j�
��}d|_t5|�j�jd|j|j �
��|_nz|sq|�o|j$rht/|j|j|
|j�
��}t5||�j|�j|jd|j|j|j ��
�
}|j!s||_ntJ}|��|f���n||	d�|_|}�n|j�|jr
|jrJ�n�|r�|	|kr�|jrJ�|j�J�	|j�&||	d�|��\}}n�#tN$rt}|j(�@|jj)�*|�(tW|������n|jj)�*|��d}d}Yd}~nd}~wwxYw|rd}	t|��}d|_��Enn|	|k��G|r|	|kr||	d�}n|}||j|fS)NrQrr7�
rvrnc����j����}|�dSt�|��st	����t|��Srp)rC�getr<r�r&rV)�
length_hdrr��msgs ��rR�get_content_lengthz0HttpParser.feed_data.<locals>.get_content_lengthPsT���),�����)H�)H�J�)�1�'+�t�
$*�#3�#3�J�#?�#?�D�&3�N�&C�&C� C�#&�z�?�?�2rQr?rT)r�r�r�)	�lengthrHr?rFrTr�r�r�r�T)r?rFr�r�r�),r�r�r�r�r��findr��rstripr�r��clearrrVrCr&rG�getattrr?r�r!rOr rHr.r�r��HttpPayloadParserrFrTr�r�r�r��done�
isinstancer4r�r-�	feed_data�
BaseExceptionr��payload�
set_exceptionrM)rqr�r�r�r�r�r��messages�data_len�	start_posr��posr�r�r�r?rT�
empty_bodyr��payload_parser�eof�excr�s    `                 @rRr�zHttpParser.feed_data#s��������:�	6�#�z�D�0�#��D�$�*��t�9�9���	��y���(�"�"��#�+�D�N�+��i�i��Y�/�/���)�#�#�D�K�#� #�c�#�h�h��I���)�#�#��	�#�
�.�D��e�|�|�#�{�{�5�1�1���K�&�&�t�,�,�,� #�c�#�h�h��I��{�2��%�/�/�0�)-�);�);�D�K�)H�)H�C� �K�-�-�/�/�/�/��D�K�-�-�/�/�/�/����3�H�S�M�3�3�3�3�3�3�3�"4�!3�!5�!5��-���<�<�"/�0B�"C�"C�C�),����!(��h���!D�!D��&�s�F�A�6�6��#�}�8�8�8�%C�D�%I�%I�&�T�"�H�'@��'H�'H�N�N�
� *�@4�#�/�F�Q�J�J�"�{�5?�$'�K�5?�'3� $�
�&*�j�%)�&*�k�	'�'�'�G�.?� '�'-�(+��'-�,/�O�%)�Y�(,��37�3J�04�0E�$(�H�.�.�.�N�$2�#6�F�7E�� 4��#�|�3�3�#-�c�3D�#E�#E�E�E�#E�&2� $�
�&*�j�%)�&*�k�	'�'�'�G�.2�D�N�3D� '�'*�z�,/�O�(,�04�0E�$(�H�
4�4�4�D�0�0�",�4���4�CV��&2� $�
�&*�j�%)�&*�k�	'�'�'�G�.?� '�'-�(+��'-�,/�O�%)�Y�(,�37�3J�04�0E�$(�H�.�.�.�N�$2�#6�F�7E�� 4��&3�G� ����g��7�7�7��!%�i�j�j�!1�D�J� �D���%�-�$�.�-��;�&�&����
�)�h�.�.��;�&�&���+�7�7�7�� $� 4� >� >�t�I�J�J�?O�QT� U� U�I�C����$�	�	�	��-�9��,�4�B�B� �2�2�3�s�8�8�<�<������,�4�B�B�3�G�G�G��C��D�D�D�D�D�D�����	������ !�I�"�4�y�y�H�+/�D�(��	��y�(�"�"�|�	�I��(�(��	�
�
�#�D�D��D�����-�-s%�.D"�"D=�7&O�
Q�(A*Q�QrBc
���
�|j�|��\�
}d}d}d}d}tjtjtjtjtjtjtj	tj
tjtjf
}t�
fd�|D��d��}|�td|�d�����
�tj��}	|	rM|	���}
|
dkrd}n0|
dkrd}n'|
d	kr!�
�tj��rd}�
�tj��}|r|���}|d
vr|}�
�tj��}|�Gd|���krd}ntd���tj�
vrtd
����
|||||fS)z�Parses RFC 5322 headers from a stream.

        Line continuations are supported. Returns list of header name
        and value pairs. Header name is in upper case.
        NFc3�j�K�|]-}t��|d����dk�)|V��.dS)rPrN)r��getall)�.0�hrCs  �rR�	<genexpr>z+HttpParser.parse_headers.<locals>.<genexpr>�sC�����P�P�a��W�^�^�A�r�5J�5J�1K�1K�a�1O�1O��1O�1O�1O�1O�P�PrQzDuplicate 'z' header found.�closeTz
keep-aliverG)�gzip�deflate�brrHz'Request has invalid `Transfer-Encoding`z6Transfer-Encoding can't be present with Content-Length)r�r�rr��CONTENT_LOCATION�
CONTENT_RANGE�CONTENT_TYPE�ETAG�HOST�MAX_FORWARDS�SERVER�TRANSFER_ENCODING�
USER_AGENT�nextr"r��
CONNECTION�lower�UPGRADE�CONTENT_ENCODING)rqrsrD�
close_conn�encodingrGrH�
singletons�bad_hdr�conn�v�enc�terCs             @rRr�zHttpParser.parse_headers�s���� $�3�A�A�%�H�H�����
�������

���!������I��I����K��"��O�
�
��P�P�P�P�:�P�P�P�RV�W�W���� �!G�w�!G�!G�!G�H�H�H��{�{�4�?�+�+���	��
�
���A��G�|�|�!�
�
��l�"�"�"�
�
��i���G�K�K���$=�$=�����k�k�$�/�0�0���	��)�)�+�+�C��/�/�/����[�[��/�
0�
0��
�>��B�H�H�J�J�&�&����$�%N�O�O�O��"�g�-�-�$�L������j�(�G�W�M�MrQ�valc��||_dS)zZSet connection upgraded (to websocket) mode.

        :param bool val: new state.
        N)r�)rqr�s  rR�set_upgradedzHttpParser.set_upgradeds��
����rQ)NNr�rirjriNNNFNTFT)$rJrKrLr�rrOrNrr�asyncio�AbstractEventLooprVrrMrr�rr�abc�abstractmethodr	r�rWr�r�rr�r�r��_SEPrrr.r�r/r�r�rPrQrRr1r1�s���������C��$�����,0�48��!� �"�,0�"� $��;?�#'�$� $�%Y�%Y��<�(�%Y��w�0�1�%Y��	%Y�
�%Y��
%Y��%Y��(�)�%Y��s�m�%Y���
�%Y��%Y�$�D��$7�8�%Y�!�%Y��%Y��%Y� 
�!%Y�%Y�%Y�%Y�N	��
�4��;�
�5�
�
�
���
��(�5�/�����&��#�2� �-�#'�#:�v.�v.��v.��v.��	v.�
�v.��
v.�!�v.�
�t�E�%��-�.�/��u�<�	=�v.�v.�v.�v.�pBN��%�[�BN�	���X�d�^�X�c�]�D�RV�V�
�BN�BN�BN�BN�H���������rQr1c�.�eZdZdZdeedefd�ZdS)r2z�Read request status line.

    Exception .http_exceptions.BadStatusLine
    could be raised in case of any errors in status line.
    Returns RawRequestMessage.
    rsrnc��|d�dd��}	|�dd���\}}}n#t$rt|��d�wxYwt	|��|jkr=t
dt|j��tt	|�������t�	|��st|���t�	|��}|�t|���tt|�
d����t|�
d������}|d	krtj|d
���}n�|�d��rK|�d
��\}	}
}|	�d��\}	}}
tj|	|
|d
���}np|dkr|dkrt|d
���}nRt|d
���}|jdkr6t'|�d����d�����|�|��\}}}}}}|�|t,krd
}nd}t/||||||||||�
�
S)Nrr{r|� rZ��maxsplit�Status line is too longr�CONNECTT)�	authority�encoded�/�#�?)r@�query_string�fragmentr�*�OPTIONS)r�)�errors�latin1F)r�r�r�r#r�rkr(rMr:r�r;r*rV�groupr�build�
startswith�	partition�schemer'�encoder�r+r4)rqrsr�r?r@rA�match�	version_orI�	path_part�_hash_separator�url_fragment�_question_mark_separator�qs_partrCrDr�rFrGrHs                    rRr�zHttpRequestParser.parse_message/s����Q�x���w�(9�:�:��	0�$(�J�J�s�Q�J�$?�$?�!�F�D�'�'���	0�	0�	0���%�%�4�/�	0�����t�9�9�t�)�)�)��)�3�t�/A�+B�+B�C��D�	�	�N�N���
�
� � ��(�(�	(���'�'�'�� � ��)�)���=���%�%�%���E�K�K��N�N� 3� 3�S����Q���5H�5H�I�I�	��Y����)�d�D�9�9�9�C�C�
�_�_�S�
!�
!�	�8<�~�~�c�7J�7J�4�I���;D�;N�;N�s�;S�;S�8�I�/���)��$�%��	���C�C��S�[�[�V�y�0�0��d�D�)�)�)�C�C��d�D�)�)�)�C��z�R���%��K�K�'8�K�9�9�@�@��J�J����
���u�%�%�	
��������=��M�)�)������ �����������
�
�	
s	�:�AN)rJrKrL�__doc__r	r�r4r�rPrQrRr2r2'sM��������S
�4��;�S
�3D�S
�S
�S
�S
�S
�S
rQr2c���eZdZdZeZ	ddedeede	de	de
ee
ee
feeff
�fd�
Zd	eedefd
�Z�xZS)r3z�Read response status line and headers.

    BadStatusLine could be raised in case of any errors in status line.
    Returns RawResponseMessage.
    Nr�r��args�kwargsrnc�Z��|�trdnd}t��j||g|�Ri|��S)Nr6r7)r�superr�)rqr�r�rr�	__class__s     �rRr�zHttpResponseParser.feed_data�sA����;�"�-�'�'��C� �u�w�w� ��s�<�T�<�<�<�V�<�<�<rQrsc��|d�dd��}	|�d���\}}n#t$rt|��d�wxYw	|�d���\}}n&#t$r|���}d}YnwxYwt|��|jkr=tdt|j��tt|�������t�
|��}|�t|���tt|�
d����t|�
d������}t|��d	kst�
|��st|���t|��}|�|��\}	}
}}}
}|�|t k}t#|||���|	|
|||
|�	�	S)
Nrr{r|rr�rrrZr[)r�r�r�r#r�r�rkr(rMr;r�r*rVrr<r�r+r5)rqrsr�rA�statusrUrr�status_irCrDr�rFrGrHs               rRr�z HttpResponseParser.parse_message�s���Q�x���w�(9�:�:��	0�"�j�j�!�j�4�4�O�G�V�V���	0�	0�	0���%�%�4�/�	0����	�#�\�\�1�\�5�5�N�F�F�F���	�	�	��\�\�^�^�F��F�F�F�	�����v�;�;��+�+�+��)�3�t�/A�+B�+B�C��F���DT�DT���
�
� � ��)�)���=���%�%�%���E�K�K��N�N� 3� 3�S����Q���5H�5H�I�I�	��v�;�;�!���6�#3�#3�F�#;�#;����%�%�%��v�;�;��
���u�%�%�	
��������=���.�E�!����L�L�N�N�������

�

�
	
s�8�A�A1�1 B�Brp)rJrKrLrrr�r�rr�rrr	r5r.rOr�r��
__classcell__)r"s@rRr3r3�s�����������)�C�
#�	=�	=��	=��d�^�	=��		=�
�	=�
�t�E�,�l�:�;�<�d�E�I�	J�
	=�	=�	=�	=�	=�	=�4
�4��;�4
�3E�4
�4
�4
�4
�4
�4
�4
�4
rQr3c��eZdZ									ddedeededeedeed	eed
ededed
eddfd�Zdd�Z		dde
dede
deee
ffd�Z
dS)r�NFTr�r�rHrFrTr?r�r�r�r�rnc��d|_tj|_tj|_d|_d|_|	|_	|
|_
d|_|r|r|j	rt||��}n|}|s-tj|_|�
��d|_n�|rtj|_n�|�?tj|_||_|jdkr|�
��d|_n^|r|dkrtj|_nD|dvr@t#jd��tj|_|�
��d|_||_dS)NrrQFT��)�PUT�POSTz6Content-Length or Transfer-Encoding header is required)�_lengthrYr\�_typerarc�_chunk�_chunk_size�_chunk_tailr��_laxr��
DeflateBufferr�r^r]r_r,�warningr�)rqr�r�rHrFrTr?r�r�r�r��real_payloads            rRrrzHttpPayloadParser.__init__�so������*��
� �3��������� /�����	���	��	#�+�	#�$�2G�	#�?L���@�@�L�L�#�L�"�	!�#�.�D�J��!�!�#�#�#��D�I�I�
�	!�#�1�D�J�J�
�
�#�0�D�J�!�D�L��|�q� � ��%�%�'�'�'� ��	���
!�4�3�;�;�'�7��
�
��?�*�*��'�L����(�2��
��%�%�'�'�'� ��	�#����rQc��|jtjkr|j���dS|jtjkrt
d���|jtjkrtd���dS)Nz2Not enough data for satisfy content length header.z3Not enough data for satisfy transfer length header.)	r-rYr_r�r�r]r%r^r)r�s rRr�zHttpPayloadParser.feed_eofs����:��3�3�3��L�!�!�#�#�#�#�#�
�Z�:�2�
2�
2�$�D���
��Z�:�3�
3�
3�'�E���
�4�
3rQr6�;�chunkr��	CHUNK_EXTc�

�|jtjkr�|j}t	|��}||krM||z
|_|j�||��|jdkr|j���dS�n�d|_|j�|d|�|��|j���d||d�fS|jtjk�r�|j	r|j	|z}d|_	|�r�|j
tjk�rz|�
|��}|dk�rU|�
|d|��}|dkr|d|�}n
|d|�}|jr|���}t!jt$|��sGt'|d|��dd����}	|j�|	��|	�t-t/|��d��}
||t	|��zd�}|
dkr8tj|_
|jr|�d��r
|d	d�}n;tj|_
|
|_|j���n	||_	d
S|j
tjkr�|j}t	|��}||kr'||z
|_|j�||��d
Sd|_|j�|d|�|��||d�}|jr|�d��r
|d	d�}tj|_
|j���|j
tjkrM|dt	|���|kr)|t	|��d�}tj|_
n	||_	d
S|j
tjkr{|dt	|���}||kr2|j���d|t	|��d�fS|sd
S||dd	�kr	||_	d
Stj|_
|j
tjkrP|�
|��}|dkr,||t	|��zd�}tj|_
n	||_	d
S|���n=|jtj kr(|j�|t	|����d
S)Nr)TrQTrQ�asciir|�r�r)FrQ)!r-rYr]r,r�r�r�r�r^r0r.rarcr�r1r��rer�r=r)r�r�rVr�rfrrdr/�begin_http_chunk_receivingre�end_http_chunk_receivingrgr_)rqr7r�r8�required�	chunk_lenr��i�size_br��size�heads            rRr�zHttpPayloadParser.feed_datas����:��0�0�0��|�H��E�
�
�I��9�$�$�'�)�3�����&�&�u�i�8�8�8��<�1�$�$��L�)�)�+�+�+�$�9�%� !�����&�&�u�Y�h�Y�'7��B�B�B���%�%�'�'�'��U�8�9�9�-�-�-��Z�:�3�
3�
3���
'��(�5�0��#&�� ��]
*��;�*�"?�?�?��*�*�S�/�/�C��a�x�x�!�J�J�y�!�S�9�9����6�6�%*�2�A�2�Y�F�F�%*�4�C�4�[�F��9�4�%+�\�\�^�^�F�!�|�I�v�>�>�&�"7� %�d�s�d�� 2� 2�7�<M� N� N�#�#�C�!�L�6�6�s�;�;�;�"%�I�"�5��=�=�"�5�5�� %�c�C��H�H�n�&6�&6� 7���1�9�9�*4�*I�D�K�#�y�2�U�-=�-=�e�-D�-D�2�(-�a�b�b�	���*4�*H�D�K�/3�D�,� �L�C�C�E�E�E�E�+0��(�)�z��;�*�"@�@�@�#�/�H� #�E�
�
�I��)�+�+�+3�i�+?��(���.�.�u�i�@�@�@�)�z�+,��(���.�.�u�Y�h�Y�/?��J�J�J� %�h�i�i� 0���9�.��)9�)9�%�)@�)@�.�$)�!�"�"�I�E�&0�&H�����=�=�?�?�?��;�*�"D�D�D��Z�s�3�x�x�Z�(�C�/�/� %�c�#�h�h�j�j� 1��&0�&C����+0��(�)�z�
�;�*�"A�A�A� ��3�s�8�8��,�D��s�{�{���-�-�/�/�/�#�U�3�s�8�8�:�:�%6�6�6� �*�)�z��s�2�A�2�w���+/��(�)�z�",�";�D�K��;�*�";�;�;��*�*�S�/�/�C��a�x�x� %�c�C��H�H�n�&6�&6� 7��&0�&E����+0��(�)�z�{�]
*��@�Z�:�5�
5�
5��L�"�"�5�#�e�*�*�5�5�5��zrQ)	NFNNNFTTF�rnN)r6r6)rJrKrLr.rrVrOrMrrr�r�r�rr�rPrQrRr�r��s/������!%��%)�"� $��#'� $��8$�8$��8$���
�8$��	8$�
�c�]�8$��s�m�
8$���
�8$��8$�!�8$��8$��8$�
�8$�8$�8$�8$�t
�
�
�
�EI�}�}��}�!%�}�<A�}�	�t�U�{�	�}�}�}�}�}�}rQr�c�z�eZdZUdZeed<dedeeddfd�Z	de
ddfd	�Zd
ede
ddfd�Zdd
�Zdd�Zdd�ZdS)r2zDDeflateStream decompress stream and feed data into specified stream.�decompressor�outr�rnNc���||_d|_||_d|_||dkr+tstd���t
��|_dSt|���|_dS)NrFr�zECan not decode content-encoding: brotli (br). Please install `Brotli`)r�)	rHrCr��_started_decodingrr$rrGr)rqrHr�s   rRrrzDeflateBuffer.__init__�s~�������	� ��
�!&����F��t����
�*�.����!3� 4� 4�D���� 0�(� C� C� C�D���rQr�c�:�|j�|��dSrp)rHr�)rqr�s  rRr�zDeflateBuffer.set_exception�s������s�#�#�#�#�#rQr7rCc��|sdS|xj|z
c_|js5|jdkr*|ddzdkrt|jd���|_	|j�|��}n%#t$rtd|jz���wxYwd|_|r*|j�	|t|����dSdS)Nr�r��T)r��suppress_deflate_headerz#Can not decode content-encoding: %s)rCrJr�rrG�decompress_syncr�r$rHr�r�)rqr7rCs   rRr�zDeflateBuffer.feed_data�s���	��F��	�	�T��	�	��&�		��
��*�*��a��3��!�#�#�!1����!�!�!�D��	��%�5�5�e�<�<�E�E���	�	�	�&�5��
�E���
�	����
"&����	2��H���u�c�%�j�j�1�1�1�1�1�	2�	2s�A-�-"Bc� �|j���}|s|jdkrN|j�|t|����|jdkr|jjstd���|j�	��dS)Nrr�)
rG�flushrCrHr�r�r�r�r$r�)rqr7s  rRr�zDeflateBuffer.feed_eof�s����!�'�'�)�)���	6�D�I��M�M��H���u�c�%�j�j�1�1�1��}�	�)�)�$�2C�2G�)�*�9�5�5�5���������rQc�8�|j���dSrp)rHr=r�s rRr=z(DeflateBuffer.begin_http_chunk_receiving�s����+�+�-�-�-�-�-rQc�8�|j���dSrp)rHr>r�s rRr>z&DeflateBuffer.end_http_chunk_receiving�s����)�)�+�+�+�+�+rQrE)rJrKrLrrrNr.rrMrrr�r�r�rVr�r�r=r>rPrQrRr2r2�s��������N�N�����D�L�D�H�S�M�D�d�D�D�D�D�"$��$�4�$�$�$�$�2�u�2�C�2�D�2�2�2�2�@����.�.�.�.�,�,�,�,�,�,rQr2)r2r3r4r5)dr�r�r<�string�
contextlibr�enumr�typingrrrrr	r
rrr
rrrrr�	multidictrrr�yarlrrr�
base_protocolr�compression_utilsrrr�helpersrrrr r!�http_exceptionsr"r#r$r%r&r'r(r)�http_writerr*r+�logr,�streamsr-r.�typedefsr/�__all__r��set�	printabler8rMrN�escaper9�compiler:�ASCIIr;r<r=r�r4r5rWrYrar0�ABCr1r2r3r�r2�HttpRequestParserPy�HttpResponseParserPy�RawRequestMessagePy�RawResponseMessagePy�_http_parser�HttpRequestParserC�HttpResponseParserC�RawRequestMessageC�RawResponseMessageC�ImportErrorrPrQrR�<module>rts��
�
�
�
�
�����	�	�	�	�
�
�
�
���������������������������������������������":�9�9�9�9�9�9�9�9�9�������������'�'�'�'�'�'�O�O�O�O�O�O�O�O�O�O���������������	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�4�3�3�3�3�3�3�3� � � � � � �0�0�0�0�0�0�0�0� � � � � � ����~����C�� 0�1�1��%��C��/�1�1�1�(�b�i�(9�:�:���s��:�:�:�)�r�z�*J��*J�*J�*J�K�K���w�s�|�	�K�K�K�(�b�j�);�R�X�F�F���g�c�l��F�F�F�(�b�j����:�:���g�c�l��:�:�:�#-�2�:�.>�#?�#?�	�5���� �?�?�?�

�

�

�

�

�
�

�

�

�	�	�	�	�	��	�	�	�	���*�,>�?�?��������������������g?�g?�g?�g?�g?�g?�g?�g?�T�������'�%�.����D
[
�[
�[
�[
�[
�
�#4�5�[
�[
�[
�|I
�I
�I
�I
�I
��$6�7�I
�I
�I
�XD�D�D�D�D�D�D�D�NG,�G,�G,�G,�G,�G,�G,�G,�T(��)��'��)��	��1�	
�	
�	
�	
�	
�	
�	
�	
�	
�	
�	
�	
�/��0��.��0����1�1���	�	�	��D�D�	���s�3I
�
I�I