ok

Mini Shell

Direktori : /opt/cloudlinux/venv/lib64/python3.11/site-packages/aiohttp/__pycache__/
Upload File :
Current File : //opt/cloudlinux/venv/lib64/python3.11/site-packages/aiohttp/__pycache__/connector.cpython-311.pyc

�

�܋f>����ddlZddlZddlZddlZddlZddlZddlmZmZddl	m
Z
ddlmZddl
mZddlmZmZddlmZddlmZdd	lmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%ddl&Z&d
dl'm(Z(m)Z)d
dl*m+Z+d
d
l,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6d
dl7m8Z8d
dl9m:Z:m;Z;m<Z<d
dl)m=Z=m>Z>m?Z?m@Z@mAZAd
dlBmCZCd
dlDmEZE	ddlFZFeFjGZGn#eH$rdZFeIZGYnwxYwdZJerd
dlKmLZLd
dl9mMZMd
dlNmOZOGd�d��ZPGd�d��ZQGd�d��ZRGd�d��ZSGd�d ��ZTGd!�d"eS��ZUGd#�d$eS��ZVGd%�d&eS��ZWdS)'�N)�defaultdict�deque)�suppress)�
HTTPStatus)�SimpleCookie)�cycle�islice)�	monotonic)�
TracebackType)�
TYPE_CHECKING�Any�	Awaitable�Callable�DefaultDict�Dict�Iterator�List�Literal�Optional�Set�Tuple�Type�Union�cast�)�hdrs�helpers)�AbstractResolver)
�ClientConnectionError�ClientConnectorCertificateError�ClientConnectorError�ClientConnectorSSLError�ClientHttpProxyError�ClientProxyConnectionError�ServerFingerprintMismatch�UnixClientConnectorError�cert_errors�
ssl_errors)�ResponseHandler)�
ClientRequest�Fingerprint�_merge_ssl_params)�ceil_timeout�get_running_loop�
is_ip_address�noop�sentinel)�EventResultOrError)�DefaultResolver)�
BaseConnector�TCPConnector�
UnixConnector�NamedPipeConnector)�
ClientTimeout)�
ConnectionKey)�Tracec�B�eZdZdZdeeddfd�Zdefd�Zdd�ZdS)	�_DeprecationWaiter��
_awaitable�_awaited�	awaitable�returnNc�"�||_d|_dS�NFr=)�selfr@s  �H/opt/cloudlinux/venv/lib64/python3.11/site-packages/aiohttp/connector.py�__init__z_DeprecationWaiter.__init__Ks��#�����
�
�
�c�B�d|_|j���S�NT)r?r>�	__await__�rDs rErJz_DeprecationWaiter.__await__Os����
���(�(�*�*�*rGc�L�|jstjdt��dSdS)NzDConnector.close() is a coroutine, please use await connector.close())r?�warnings�warn�DeprecationWarningrKs rE�__del__z_DeprecationWaiter.__del__Ss<���}�	��M�5�"�
�
�
�
�
�	�	rG�rAN)	�__name__�
__module__�__qualname__�	__slots__rr
rFrJrP�rGrEr<r<Hsn������*�I��)�C�.��T�����+�3�+�+�+�+������rGr<c
�H�eZdZdZdZdddddedejddf
d	�Zde	fd
�Z
efdeddfd�Z
ded
fd�Zedejfd���Zedeejfd���Zedeefd���Zdegdfddfd�Zdd�Zdd�Zdd�Zedefd���ZdS)�
ConnectionN�	connectorr4�keyr9�protocol�looprAc���||_||_||_||_g|_|���r-t
jtj	d����|_
dSdS)Nr)�_key�
_connector�_loop�	_protocol�
_callbacks�	get_debug�	traceback�
extract_stack�sys�	_getframe�_source_traceback)rDrYrZr[r\s     rErFzConnection.__init__asi����	�#�����
�4<���46����>�>���	O�%.�%<�S�]�1�=M�=M�%N�%N�D�"�"�"�	O�	OrGc��d|j�d�S)NzConnection<�>)r^rKs rE�__repr__zConnection.__repr__qs��)�T�Y�)�)�)�)rG�	_warningsc�2�|j��d|i}|jd|��tfi|��|j���rdS|j�|j|jd���|dd�}|j�
|j|d<|j�	|��dSdS)N�sourcezUnclosed connection T��should_closezUnclosed connection)�client_connection�message�source_traceback)
rarN�ResourceWarningr`�	is_closedr_�_releaser^rh�call_exception_handler)rDrl�kwargs�contexts    rErPzConnection.__del__ts����>�%���%�F��I�N�:�$�:�:�O�V�V�v�V�V�V��z�#�#�%�%�
����O�$�$�T�Y���T�$�R�R�R�,0�=R�S�S�G��%�1�.2�.D��*�+��J�-�-�g�6�6�6�6�6�&�%rGTc��dS)z9Force subclasses to not be falsy, to make checks simpler.TrVrKs rE�__bool__zConnection.__bool__�s���trGc�H�tjdtd���|jS)Nz%connector.loop property is deprecated�)�
stacklevel)rMrNrOr`rKs rEr\zConnection.loop�s.���
�3�5G�TU�	
�	
�	
�	
��z�rGc�,�|j�dS|jjS�N)ra�	transportrKs rEr�zConnection.transport�s���>�!��4��~�'�'rGc��|jSr�)rarKs rEr[zConnection.protocol�s
���~�rG�callbackc�B�|�|j�|��dSdSr�)rb�append)rDr�s  rE�add_callbackzConnection.add_callback�s,�����O�"�"�8�,�,�,�,�,� �rGc��|jdd�gc}|_|D]8}tt��5|��ddd��n#1swxYwY�9dSr�)rbr�	Exception)rD�	callbacks�cbs   rE�_notify_releasezConnection._notify_release�s���%)�_�Q�Q�Q�%7��"�	�4�?��	�	�B��)�$�$�
�
������
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��	�	s�A�A	�A	c��|���|j�0|j�|j|jd���d|_dSdS)NTro)r�rar_rvr^rKs rE�closezConnection.close�sP���������>�%��O�$�$�T�Y���T�$�R�R�R�!�D�N�N�N�&�%rGc��|���|j�:|j�|j|j|jj���d|_dSdS)Nro)r�rar_rvr^rprKs rE�releasezConnection.release�s`���������>�%��O�$�$��	�4�>���8S�
%�
�
�
�"�D�N�N�N�	&�%rGc�H�|jdup|j���Sr�)ra�is_connectedrKs rE�closedzConnection.closed�s%���~��%�J�T�^�-H�-H�-J�-J�)J�JrGrQ)rRrSrTrh�
_transportr)�asyncio�AbstractEventLooprF�strrkrMr
rPrr{�propertyr\r�	Transportr�r[rr�r�r�r��boolr�rVrGrErXrX\s����������J�O�"�O��O�"�	O�
�'�O�
�
O�O�O�O� *�#�*�*�*�*�(0�7�7��7�D�7�7�7�7��'�$�-�������g�/�����X���(�8�G�$5�6�(�(�(��X�(�
��(�?�3�����X��-�X�b�$�h�%7�-�D�-�-�-�-�����"�"�"�"�"�"�"�"��K��K�K�K��X�K�K�KrGrXc��eZdZdZdd�ZdS)�_TransportPlaceholderz.placeholder for BaseConnector.connect functionrANc��dSr�rVrKs rEr�z_TransportPlaceholder.close�s���rGrQ)rRrSrT�__doc__r�rVrGrEr�r��s.������8�8�
�
�
�
�
�
rGr�c�f�eZdZdZdZdZdZeddddddd	�d
ee	de
fdeded
edede
ejde
ddfd�Zefdeddfd�Zd9d�Zdeddfd�Zd9d�Z			d:de
eede
ede
eddfd�Zedefd���Zedefd���Zedefd���Zd;d �Zd!d"d#e ddfd$�Z!d;d%�Z"de#dfd&�Z$d;d'�Z%edefd(���Z&d!d"defd)�Z'd*e(d+e)d,d-d.de*fd/�Z+d!d"de
e fd0�Z,d;d1�Z-d!d"d2e ddfd3�Z.dd4�d!d"d5e d6eddfd7�Z/d*e(d+e)d,d-d.de fd8�Z0dS)<r4a\Base connector class.

    keepalive_timeout - (optional) Keep-alive timeout.
    force_close - Set to True to force close and do reconnect
        after each request (and between redirects).
    limit - The total number of simultaneous connections.
    limit_per_host - Number of simultaneous connections to one host.
    enable_cleanup_closed - Enables clean-up closed ssl transports.
                            Disabled by default.
    timeout_ceil_threshold - Trigger ceiling of timeout values when
                             it's above timeout_ceil_threshold.
    loop - Optional event loop.
    TNg@F�dr���keepalive_timeout�force_close�limit�limit_per_host�enable_cleanup_closedr\�timeout_ceil_thresholdr�r�r�r�r�r\r�rAc���|r|�|turtd���n|turd}t|��}||_d|_|���r+t
jtj	d����|_
i|_||_||_
t��|_t!t��|_t%t&|��|_||_t!t,��|_||_t3jt6|���|_t;��|_d|_d|_ ||_!g|_"|�#��dS)Nz6keepalive_timeout cannot be set if force_close is Trueg.@Fr�r\)$r1�
ValueErrorr.�_timeout_ceil_threshold�_closedrcrdrerfrgrh�_conns�_limit�_limit_per_host�set�	_acquiredr�_acquired_per_hostr�float�_keepalive_timeout�_force_closer�_waitersr`�	functools�partialr)�_factoryr�cookies�_cleanup_handle�_cleanup_closed_handle�_cleanup_closed_disabled�_cleanup_closed_transports�_cleanup_closed)rDr�r�r�r�r�r\r�s        rErFzBaseConnector.__init__�sa���	)� �,�1B�(�1R�1R� �O�����!�H�,�,�$(�!���%�%��'=��$�����>�>���	O�%.�%<�S�]�1�=M�=M�%N�%N�D�"�PR������-���/2�u�u���
����	
��#'�u�.?�"@�"@���'���$�E�*�*��
���
�!�)�/��E�E�E��
�#�~�~���?C���FJ��#�,A�(A��%�MO��'��������rGrlc�0�|jrdS|jsdSd�|j���D��}|���d|i}|jd|��t
fi|��||dd�}|j�
|j|d<|j�|��dS)Nc�,�g|]}t|����SrV)�repr)�.0�cs  rE�
<listcomp>z)BaseConnector.__del__.<locals>.<listcomp>s��7�7�7�Q��a���7�7�7rGrnzUnclosed connector zUnclosed connector)rY�connectionsrrrs)	r�r��values�_closerNrtrhr`rw)rDrl�connsrxrys     rErPzBaseConnector.__del__
s����<�	��F��{�	��F�7�7�$�+�"4�"4�"6�"6�7�7�7�����
�
�
��D�!���	��5�T�5�5��Q�Q�&�Q�Q�Q�� �+�
�
��
�!�-�*.�*@�G�&�'��
�)�)�'�2�2�2�2�2rGc�:�tjdt��|S)NzH"with Connector():" is deprecated, use "async with Connector():" instead)rMrNrOrKs rE�	__enter__zBaseConnector.__enter__s%���
�
4��	
�	
�	
�
�rG�excc�.�|���dSr�)r�)rDr�s  rE�__exit__zBaseConnector.__exit__'s�����
�
�
�
�
rGc��
K�|Sr�rVrKs rE�
__aenter__zBaseConnector.__aenter__*s�����rG�exc_type�	exc_value�
exc_tracebackc��>K�|����d{V��dSr�)r�)rDr�r�r�s    rE�	__aexit__zBaseConnector.__aexit__-s.�����j�j�l�l���������rGc��|jS)z1Ultimately close connection on releasing if True.)r�rKs rEr�zBaseConnector.force_close5s
��� � rGc��|jS)z�The total number for simultaneous connections.

        If limit is 0 the connector has no limit.
        The default limit size is 100.
        )r�rKs rEr�zBaseConnector.limit:s���{�rGc��|jS)z�The limit for simultaneous connections to the same endpoint.

        Endpoints are the same if they are have equal
        (host, port, is_ssl) triple.
        )r�rKs rEr�zBaseConnector.limit_per_hostCs
���#�#rGc��|jr |j���d|_|j���}|j}|jr�i}||z
}|j���D]�\}}g}|D]�\}}	|���re|	|z
dkrD|j}
|�	��|j
r!|js|j�
|
���f|�
||	f���~|j}
|�	��|j
r!|js|j�
|
����|r|||<��||_|jr*tj|d||j|j���|_dSdS)zCleanup unused transports.Nr�_cleanup�r�)r��cancelr`�timer�r��itemsr�r�r��is_sslr�r�r�r�weakref_handler�)rD�now�timeoutr��deadlinerZr��alive�proto�use_timer�s           rEr�zBaseConnector._cleanupLs�����	(�� �'�'�)�)�)�$(�D� ��j�o�o�����)���;�	&��K��W�}�H�"�k�/�/�1�1�
-�
-�
��U���',�
N�
N�O�E�8��)�)�+�+�N�#�h�.��2�2�(-��I�!�K�K�M�M�M�"�z�R�$�2O�R� $� ?� F� F�y� Q� Q� Q��!�L�L�%��):�;�;�;�;�$)�O�	����
�
�
��:�N�d�.K�N� �;�B�B�9�M�M�M���-�',�K��$��%�D�K��;�	�#*�#9�����
�'+�'C�$�$�$�D� � � �	�	rGrZr9�valc�r�|j}||vrdS||}|�|��|s
|j|=dSdSr�)r��remove)rDrZr��acquired_per_hostr�s     rE�_drop_acquired_per_hostz%BaseConnector._drop_acquired_per_hostys]��!�3���'�'�'��F�!�#�&��
���S�����	-��'��,�,�,�	-�	-rGc��|jr|j���|jD]}|�|����g|_|js/tj|d|j|j|j	���|_dSdS)z~Double confirmation for transport close.

        Some broken ssl servers may leave socket open without proper close.
        Nr�r�)
r�r�r��abortr�rr��_cleanup_closed_periodr`r�)rDr�s  rEr�zBaseConnector._cleanup_closed�s���
�&�	1��'�.�.�0�0�0��8�	"�	"�I��$����!�!�!��*,��'��,�	�*1�*@��!��+��
�'+�'C�+�+�+�D�'�'�'�	�	rGc�`�|���tt����S)zClose all opened transports.)r�r<r0rKs rEr�zBaseConnector.close�s!�����
�
�
�!�$�&�&�)�)�)rGc��|jrdSd|_	|j���ru	|j���|j���|j���d|_|j���d|_	dS|jr|j�
��|j	r|j	�
��|j���D]}|D]\}}|�����|jD]}|����|jD]}|�|�
���	|j���|j���|j���d|_|j���d|_	dS#|j���|j���|j���d|_|j���d|_	wxYwrI)r�r`rur��clearr�r�r�r�r�r�r�r�r�)rD�datar��t0r�s     rEr�zBaseConnector._close�sP���<�	��F����	/��z�#�#�%�%�
��,
�K�������N� � �"�"�"��M���!�!�!�#'�D� ��+�1�1�3�3�3�*.�D�'�'�'�1�#�
.��$�+�+�-�-�-��*�
5��+�2�2�4�4�4���*�*�,�,�
"�
"��!%�"�"�I�E�2��K�K�M�M�M�M�"���
�
�����
�
�
�
�!�<�
&�
&�	��(��O�O�%�%�%��
&�

�K�������N� � �"�"�"��M���!�!�!�#'�D� ��+�1�1�3�3�3�*.�D�'�'�'��
�K�������N� � �"�"�"��M���!�!�!�#'�D� ��+�1�1�3�3�3�*.�D�'�.�.�.�.s�G� B6G�A4H?c��|jS)z;Is connector closed.

        A readonly property.
        )r�rKs rEr�zBaseConnector.closed�s���|�rGc�t�|jrh|jt|j��z
}|jrD|dkr>||jvr5|j�|��}|�J�|jt|��z
}nH|jr?||jvr6|j�|��}|�J�|jt|��z
}nd}|S)z�
        Return number of available connections.

        The limit, limit_per_host and the connection key are taken into account.

        If it returns less than 1 means that there are no connections
        available.
        rNr)r��lenr�r�r��get)rDrZ�	available�acquireds    rE�_available_connectionsz$BaseConnector._available_connections�s����;�	���c�$�.�&9�&9�9�I��$�
A���M�M��4�2�2�2��2�6�6�s�;�;���+�+�+� �0�3�x�=�=�@�	��
�
!�	�c�T�-D�&D�&D��.�2�2�3�7�7�H��'�'�'��,�s�8�}�}�<�I�I��I��rG�req�tracesr:r�r8c��K�|j}|�|��}|dks
||jv�r|j���}|j|�|��|r|D]}|����d{V���	|�d{V��nO#t$rB}||jvr2	|j|�|��n#t$rYnwxYw|�d}~wwxYw	||jvr|j|s|j|=n##||jvr|j|s|j|=wxYw|r|D]}|�
���d{V���|�|��}	|	��yttt����}
|j�|
��|j|�|
��|r|D]}|����d{V���	|�|||���d{V��}	|jr#|	���t-d���	|js0|j�|
��|�||
��nZ#t$rM|jsD|j�|
��|�||
��|����wxYw|r|D]}|����d{V���n�|r�ttt����}
|j�|
��|j|�|
��|D]}|����d{V���|j�|
��|�||
��|j�|	��|j|�|	��t7|||	|j��S)z'Get from pool or create new connection.rNzConnector is closed.)�connection_keyr�r�r`�
create_futurer��send_connection_queued_start�
BaseExceptionr�r��send_connection_queued_end�_getrr)r�r��addr��send_connection_create_start�_create_connectionr�r�rr��_release_waiter�send_connection_create_end�send_connection_reuseconnrX)rDr�r�r�rZr��fut�trace�er��placeholders           rE�connectzBaseConnector.connect�s������ ���/�/��4�4�	���>�>�S�D�M�1�1��*�*�*�,�,�C�
�M�#��%�%�c�*�*�*��
?�#�?�?�E��<�<�>�>�>�>�>�>�>�>�>�>�
+��	�	�	�	�	�	�	�	�� �	
�	
�	
��$�-�'�'���
�c�*�1�1�#�6�6�6�6��%����������������	
������$�-�'�'��
�c�0B�'��
�c�*����$�-�'�'��
�c�0B�'��
�c�*�*�*�*�*��
=�#�=�=�E��:�:�<�<�<�<�<�<�<�<�<�<��	�	�#�����=���0E�0G�0G�H�H�K��N���{�+�+�+��#�C�(�,�,�[�9�9�9��
?�#�?�?�E��<�<�>�>�>�>�>�>�>�>�>�>�
C�"�5�5�c�6�7�K�K�K�K�K�K�K�K���<�H��K�K�M�M�M�/�0F�G�G�G�H��|�C��N�)�)�+�6�6�6��0�0��k�B�B�B���!�
�
�
��|�+��N�)�)�+�6�6�6��0�0��k�B�B�B��(�(�*�*�*��
�����
=�#�=�=�E��:�:�<�<�<�<�<�<�<�<�<�<���
?�"�?�4I�4K�4K�L�L����"�"�;�/�/�/��'��,�0�0��=�=�=�#�<�<�E��9�9�;�;�;�;�;�;�;�;�;�;���%�%�k�2�2�2��,�,�S�+�>�>�>�����5�!�!�!����$�(�(��/�/�/��$��U�D�J�7�7�7s\�
B�D�
C�	C�' C�C�
C�C�C�C�C�D� D"�AI�AJ2c�(�	|j|}n#t$rYdSwxYw|j���}|r�|���\}}|���r^||z
|jkrD|j}|���|j	r!|j
s|j�|��nO|s|j|=|S|j}|���|j	r!|j
s|j�|��|��|j|=dSr�)
r��KeyErrorr`r��popr�r�r�r�r�r�r�r�)rDrZr��t1r�r�r�s       rErzBaseConnector._getAsA��	��K��$�E�E���	�	�	��4�4�	�����Z�_�_�
�
���	F��	�	���I�E�2��!�!�#�#�
F���7�T�4�4�4� %��I��K�K�M�M�M��z�J�$�*G�J��7�>�>�y�I�I�I�� �-� �K��,� �L�!�O�	����
�
�
��:�F�d�&C�F��3�:�:�9�E�E�E�%�	F�*
�K����ts�
�
�c�l�|jsdSt|j�����}tj|��|D]m}|�|��dkr�|j|}|rB|���}|���s|�d��dS|�B�ndS)z�
        Iterates over all waiters until one to be released is found.

        The one to be released is not finished and
        belongs to a host that has available connections.
        Nr)	r��list�keys�random�shuffler��popleft�done�
set_result)rD�queuesrZ�waiters�waiters     rErzBaseConnector._release_waiter`s����}�	��F��d�m�(�(�*�*�+�+����v�����		�		�C��*�*�3�/�/�!�3�3���m�C�(�G��
� ���*�*���{�{�}�}���%�%�d�+�+�+��F�F�	�
��		�		rGr�c���|jrdS	|j�|��|�||��|���dS#t
$rYdSwxYwr�)r�r�r�r�rr)rDrZr�s   rE�_release_acquiredzBaseConnector._release_acquiredzs����<�	��F�	#��N�!�!�%�(�(�(��(�(��e�4�4�4�
� � �"�"�"�"�"���	�	�	�
�D�D�	���s�0A�
A�Aror[rpc��|jrdS|�||��|jrd}|s|jrI|j}|���|jr#|js|j�	|��dSdSdS|j
�|��}|�gx}|j
|<|�	||j�
��f��|j�/tj|d|j|j|j���|_dSdS)NTr�r�)r�rr�rpr�r�r�r�r�r�r�r�r`r�r�rr�r�r�)rDrZr[rpr�r�s      rErvzBaseConnector._release�sD���<�	��F����s�H�-�-�-���	 ��L��	�8�0�	� �*�I��N�N�����z�
B�$�"?�
B��/�6�6�y�A�A�A�A�A�
B�
B�
B�
B��K�O�O�C�(�(�E��}�+-�-����C�(��L�L�(�D�J�O�O�$5�$5�6�7�7�7��#�+�'.�'=����+��J�+/�+G�(�(�(��$�$�$�,�+rGc��"K�t���r�)�NotImplementedError)rDr�r�r�s    rErz BaseConnector._create_connection�s����"�#�#�#rG)rAr4)NNNrQ)1rRrSrTr�r�rhr�r1r�objectr�r��intrr�r�rFrMr
rPr�r�r�rrrr�r�r�r�r�r�r)r�r�rr�r�r�r�r*rrXrrrrrvrrVrGrEr4r4�s���������G���!��
9A�!���&+�48�()�5�5�5�!���u�!4�5�5��	5�
�5��
5� $�5��w�0�1�5�!&�5�
�5�5�5�5�n(0�3�3��3�D�3�3�3�3�*�����S��T���������
37�-1�15�	���4�
�.�/���M�*�� �
�.�	�

������!�T�!�!�!��X�!���s�����X���$��$�$�$��X�$�+�+�+�+�Z	-�"�	-�)8�	-�	
�	-�	-�	-�	-�����.*�y���*�*�*�*�
#/�#/�#/�#/�J�������X���/��c�����BQ8� �Q8�*.�w�-�Q8�BQ�Q8�	�Q8�Q8�Q8�Q8�f���H�_�,E�����>����4
#�_�
#�_�
#�QU�
#�
#�
#�
#�(#�#�#�#�
�#�"�#�
�#�
�
#�#�#�#�J$� �$�*.�w�-�$�BQ�$�	�$�$�$�$�$�$rGr4c��eZdZddeeddfd�Zdedefd�Zde	e
efdee
e
efddfd	�Zde	e
efddfd
�Zdd�Zde	e
efdee
e
effd�Zde	e
efdefd
�ZdS)�_DNSCacheTableN�ttlrAc�0�i|_i|_||_dSr�)�	_addrs_rr�_timestamps�_ttl)rDr's  rErFz_DNSCacheTable.__init__�s��VX���9;�����	�	�	rG�hostc��||jvSr�)r))rDr,s  rE�__contains__z_DNSCacheTable.__contains__�s���t�~�%�%rGrZ�addrsc��t|��t|��f|j|<|j�t	��|j|<dSdSr�)rr�r)r+r
r*)rDrZr/s   rErz_DNSCacheTable.add�sF��$�U�|�|�S��Z�Z�8���s���9� �$-�K�K�D��S�!�!�!�!� rGc��|j�|d��|j�|j�|d��dSdSr�)r)rr+r*�rDrZs  rEr�z_DNSCacheTable.remove�sI������3��%�%�%��9� ��� � ��d�+�+�+�+�+�!� rGc�j�|j���|j���dSr�)r)r�r*rKs rEr�z_DNSCacheTable.clear�s1������������� � � � � rGc�~�|j|\}}tt||����}t|��|Sr�)r)rr	�next)rDrZr\�lengthr/s     rE�
next_addrsz_DNSCacheTable.next_addrs�s9���~�c�*���f��V�D�&�)�)�*�*���T�
�
�
��rGc�^�|j�dS|j||jzt��kSrC)r+r*r
r2s  rE�expiredz_DNSCacheTable.expired�s-���9���5����$�t�y�0�9�;�;�>�>rGr�rQ)rRrSrTrr�rFr#r�r.rr�r$rrr
rr�r�r7r9rVrGrEr&r&�s>��������H�U�O��t�����
&��&�D�&�&�&�&�0�u�S�#�X��0�t�D��c��N�/C�0��0�0�0�0�,�%��S��/�,�d�,�,�,�,�!�!�!�!��e�C��H�o��$�t�C��H�~�2F�����?�5��c��?�?�t�?�?�?�?�?�?rGr&c!����eZdZdZdddddddddeddddddd	�d
edeeded
eededee	de
eee	fdeee
efdeede
deefdededededeejdef �fd�Zdedf�fd�Zedefd���Zedefd���Z	d<dee
d eeddfd!�Z	d=de
d ed"eed#deee
effd$�Zd%ed"ed#d&d'defd(�Z e!e"j#d��d)ede	fd*�����Z$d%edee	fd+�Z%d%eded,fd-�Z&e'd.�d/ed%ed&d'd0e(e)d1edeej*effd2�Z+d>d4�Z,d?d5�Z-defd6�Z.d7ej*d%eddfd8�Z/e'fd7ej*d%ed&d'd0e(e)deej0eff
d9�Z1e'd.�d%ed"ed#d&d'd0e(e)deej*eff
d:�Z2d%ed"ed#d&d'deej0effd;�Z3�xZ4S)@r5a/TCP connector.

    verify_ssl - Set to True to check ssl certifications.
    fingerprint - Pass the binary sha256
        digest of the expected certificate in DER format to verify
        that the certificate the server presents matches. See also
        https://en.wikipedia.org/wiki/Transport_Layer_Security#Certificate_pinning
    resolver - Enable DNS lookups and use this
        resolver
    use_dns_cache - Use memory cache for DNS lookups.
    ttl_dns_cache - Max seconds having cached a DNS entry, None forever.
    family - socket address family
    local_addr - local tuple of (host, port) to bind socket to

    keepalive_timeout - (optional) Keep-alive timeout.
    force_close - Set to True to force close and do reconnect
        after each request (and between redirects).
    limit - The total number of simultaneous connections.
    limit_per_host - Number of simultaneous connections to one host.
    enable_cleanup_closed - Enables clean-up closed ssl transports.
                            Disabled by default.
    loop - Optional event loop.
    TN�
rFr�r�)�
verify_ssl�fingerprint�
use_dns_cache�
ttl_dns_cache�family�ssl_context�ssl�
local_addr�resolverr�r�r�r�r�r\r�r<r=r>r?r@rArBrCrDr�r�r�r�r�r\r�c	�$��t���|
|||
|||���t||||��|_|	�t	|j���}	|	|_||_t|���|_	i|_
||_||_dS)Nr�r�)r')
�superrFr,�_sslr3r`�	_resolver�_use_dns_cacher&�
_cached_hosts�_throttle_dns_events�_family�_local_addr)rDr<r=r>r?r@rArBrCrDr�r�r�r�r�r\r��	__class__s                 �rErFzTCPConnector.__init__�s����(	�����/�#��)�"7��#9�	�	
�	
�	
�&�c�:�{�K�P�P��	���&�D�J�7�7�7�H�!���+���+�
�>�>�>���OQ��!����%����rGrAc���|j���D]}|����t�����S)zClose all ongoing DNS calls.)rKr�r�rFr�)rD�evrNs  �rEr�zTCPConnector.closesB����+�2�2�4�4�	�	�B��I�I�K�K�K�K��w�w�}�}���rGc��|jS)zSocket family like AF_INET.)rLrKs rEr@zTCPConnector.family$s���|�rGc��|jS)z%True if local DNS caching is enabled.)rIrKs rEr>zTCPConnector.use_dns_cache)s
���"�"rGr,�portc��|� |�|j�||f��dS|�|�td���|j���dS)z8Remove specified host/port or clear all dns local cache.Nz5either both host and port or none of them are allowed)rJr�r�r�)rDr,rSs   rE�clear_dns_cachezTCPConnector.clear_dns_cache.se����� 0���%�%�t�T�l�3�3�3�3�3�
�
��!1��W�X�X�X���$�$�&�&�&�&�&rGr�r:c��|K�t|��r||||jddd�gS|jsn|r |D]}|�|���d{V���|j�|||j����d{V��}|r |D]}|�|���d{V���|S||f}||jvrX|j�|��s>|j�	|��}|r |D]}|�
|���d{V���|S||jvrK|j|}|r |D]}|�
|���d{V���|����d{V���nUt|j��|j|<|r |D]}|�|���d{V���	|r |D]}|�|���d{V���|j�|||j����d{V��}	|r |D]}|�|���d{V���|j�||	��|j|���n4#t$$r'}
|j|�|
����d}
~
wwxYw	|j�|��n#|j�|��wxYw|j�	|��S)Nr)�hostnamer,rSr@r��flags)r@)r�)r/rLrI�send_dns_resolvehost_startrH�resolve�send_dns_resolvehost_endrJr9r7�send_dns_cache_hitrK�waitr2r`�send_dns_cache_missrr�rr)rDr,rSr�r�resrZ�result�eventr/rs           rE�
_resolve_hostzTCPConnector._resolve_host9s���������
	�!%� � �"�l���
��	�	
��"�	��
A�#�A�A�E��:�:�4�@�@�@�@�@�@�@�@�@�@���.�.�t�T�$�,�.�O�O�O�O�O�O�O�O�C��
?�#�?�?�E��8�8��>�>�>�>�>�>�>�>�>�>��J��T�l���4�%�%�%��0B�0J�0J�3�0O�0O�%��'�2�2�3�7�7�F��
9�#�9�9�E��2�2�4�8�8�8�8�8�8�8�8�8�8��M��$�+�+�+��-�c�2�E��
9�#�9�9�E��2�2�4�8�8�8�8�8�8�8�8�8�8��*�*�,�,���������.@��
�-K�-K�D�%�c�*��
:�#�:�:�E��3�3�D�9�9�9�9�9�9�9�9�9�9�
3��E�!'�E�E��#�>�>�t�D�D�D�D�D�D�D�D�D�D�"�n�4�4�T�4���4�U�U�U�U�U�U�U�U���C�!'�C�C��#�<�<�T�B�B�B�B�B�B�B�B�B�B��"�&�&�s�E�2�2�2��)�#�.�2�2�4�4�4�4�� �
�
�
��)�#�.�2�2�q�2�9�9�9������	
����5��)�-�-�c�2�2�2�2���)�-�-�c�2�2�2�2�����!�,�,�S�1�1�1s+�B&H5�4J�5
I&�?"I!�!I&�&J�J!r�r�r8c��K�|jr!|�|||���d{V��\}}n |�|||���d{V��\}}|S)zcCreate connection.

        Has same keyword arguments as BaseEventLoop.create_connection.
        N)�proxy�_create_proxy_connection�_create_direct_connection)rDr�r�r��_r�s      rErzTCPConnector._create_connection�st�����9�	R�!�:�:�3���P�P�P�P�P�P�P�P�H�A�u�u�!�;�;�C���Q�Q�Q�Q�Q�Q�Q�Q�H�A�u��rG�verifiedc���|rtj��Stjtj��}|xjtjzc_|xjtjzc_d|_tj|_		|xjtj
zc_n>#t$r1}tj
d�|����Yd}~nd}~wwxYw|���|S)NFz�{!s}: The Python interpreter is compiled against OpenSSL < 1.0.0. Ref: https://docs.python.org/3/library/ssl.html#ssl.OP_NO_COMPRESSION)rB�create_default_context�
SSLContext�PROTOCOL_TLS_CLIENT�options�OP_NO_SSLv2�OP_NO_SSLv3�check_hostname�	CERT_NONE�verify_mode�OP_NO_COMPRESSION�AttributeErrorrMrN�format�set_default_verify_paths)rh�
sslcontext�attr_errs   rE�_make_ssl_contextzTCPConnector._make_ssl_context�s���	��-�/�/�/����(?�@�@�J����#�/�1������#�/�1���(-�J�%�%(�]�J�"�
��"�"�c�&;�;�"�"�"��!�
�
�
��
�-�.4�V�H�-=�-=�	������������
����
�/�/�1�1�1��s�B�
C�&'C�Cc�t�|���r�t�td���|j}t|tj��r|S|dur|�d��S|j}t|tj��r|S|dur|�d��S|�d��SdS)a*Logic to get the correct SSL context

        0. if req.ssl is false, return None

        1. if ssl_context is specified in req, use it
        2. if _ssl_context is specified in self, use it
        3. otherwise:
            1. if verify_ssl is not specified in req, use self.ssl_context
               (will generate a default context according to self.verify_ssl)
            2. if verify_ssl is True in req, generate a default SSL context
            3. if verify_ssl is False in req, generate a SSL context that
               won't verify
        NzSSL is not supported.TF)r�rB�RuntimeError�
isinstancerkryrG)rDr�rws   rE�_get_ssl_contextzTCPConnector._get_ssl_context�s����:�:�<�<�	��{�"�#:�;�;�;���J��*�c�n�5�5�
"�!�!���%�%��-�-�e�4�4�4���J��*�c�n�5�5�
"�!�!���%�%��-�-�e�4�4�4��)�)�$�/�/�/��4rGr+c�~�|j}t|t��r|S|j}t|t��r|SdSr�)rBr|r+rG)rDr��rets   rE�_get_fingerprintzTCPConnector._get_fingerprint�sC���g���c�;�'�'�	��J��i���c�;�'�'�	��J��trG��client_error�argsr�rxc���K�	t|j|j���4�d{V��|jj|i|���d{V��cddd���d{V��S#1�d{V��swxYwYdS#t
$r}t
|j|��|�d}~wt$r}t|j|��|�d}~wt$r9}|j�t|tj��r�||j|��|�d}~wwxYw�N��ceil_threshold)r-�sock_connectr�r`�create_connectionr'r r�r(r"�OSError�errnor|r��TimeoutError)rDr�r�r�r�rxr�s       rE�_wrap_create_connectionz$TCPConnector._wrap_create_connection�s�����	A�#��$�W�5K����
K�
K�
K�
K�
K�
K�
K�
K�:�T�Z�9�4�J�6�J�J�J�J�J�J�J�J�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K����
K�
K�
K�
K�
K�
K���	T�	T�	T�1�#�2D�c�J�J�PS�S������	L�	L�	L�)�#�*<�c�B�B��K������	A�	A�	A��y� �Z��W�5I�%J�%J� ���,�s�1�3�7�7�S�@�����	A���sQ�!A#�A�A#�
A�A#�A�A#�#
C,�-B�
C,�B&�&
C,�34C'�'C,r*c��|���sdS|j}|�J�|jdkrdS|���dS)z�Raise a :py:exc:`RuntimeError` on missing ``start_tls()``.

        It is necessary for TLS-in-TLS so that it is possible to
        send HTTPS queries through HTTPS proxies.

        This doesn't affect regular HTTP requests, though.
        N�https)r�rd�scheme�_check_loop_for_start_tls)rDr��	proxy_urls   rE�_fail_on_no_start_tlsz"TCPConnector._fail_on_no_start_tls�sW���z�z�|�|�	��F��I�	��$�$�$���w�&�&��F��&�&�(�(�(�(�(rGc�d�	|jjdS#t$r}td��|�d}~wwxYw)Na�An HTTPS request is being sent through an HTTPS proxy. This needs support for TLS in TLS but it is not implemented in your runtime for the stdlib asyncio.

Please upgrade to Python 3.11 or higher. For more details, please see:
* https://bugs.python.org/issue37179
* https://github.com/python/cpython/pull/28073
* https://docs.aiohttp.org/en/stable/client_advanced.html#proxy-support
* https://github.com/aio-libs/aiohttp/discussions/6044
)r`�	start_tlsrtr{)rD�attr_excs  rEr�z&TCPConnector._check_loop_for_start_tls�sT��	��J� � � � ���	�	�	��	K����
�����	���s��
/�*�/c�R�	|���dS#t$rYdSwxYw)NTF)r�r{rKs rE�_loop_supports_start_tlsz%TCPConnector._loop_supports_start_tls
sD��	��*�*�,�,�,��4���	�	�	��5�5�	���s��
&�&�underlying_transportc��|jjjdkrdSt|dd��}|rdSt	jdt|d���dS)z6Issue a warning if the requested URL has HTTPS scheme.r�N�_start_tls_compatibleFaAn HTTPS request is being sent through an HTTPS proxy. This support for TLS in TLS is known to be disabled in the stdlib asyncio (Python <3.11). This is why you'll probably see an error in the log below.

It is possible to enable it via monkeypatching. For more details, see:
* https://bugs.python.org/issue37179
* https://github.com/python/cpython/pull/28073

You can temporarily patch this as follows:
* https://docs.aiohttp.org/en/stable/client_advanced.html#proxy-support
* https://github.com/aio-libs/aiohttp/discussions/6044
�)rnr~)�request_info�urlr��getattrrMrN�RuntimeWarning)rDr�r��asyncio_supports_tls_in_tlss    rE�_warn_about_tls_in_tlsz#TCPConnector._warn_about_tls_in_tlss{�����&�'�1�1��F�&-� �#��'
�'
�#�'�	��F��
�

G�
���!	
�	
�	
�	
�	
�	
rGc���K�|���}ttj|�|����}	t|j|j���4�d{V��	|j�	||||j
p|j|j����d{V��}n##t$r|����wxYw	ddd���d{V��n#1�d{V��swxYwY|� d}||jt!|�����|�|��n�#t$$r}	t'|j|	��|	�d}	~	wt($r}	t+|j|	��|	�d}	~	wt $r9}	|	j�t/|	t0j��r�||j|	��|	�d}	~	wt4$r<}
t7d|j�d|jd�d|j�d	|jpd
�d|
�d���|
�d}
~
wwxYw||fS)
z$Wrap the raw TCP transport with TLS.r�N)�server_hostname�ssl_handshake_timeoutz:Failed to start TLS (possibly caused by closing transport)z2Cannot initialize a TLS-in-TLS connection to host �:�dz4 through an underlying connection to an HTTPS proxy z ssl:�defaultz [�])r�rrBrkr}r-r�r�r`r�r�r,�totalrr�r�r��connection_mader'r r(r"r�r|r�r��	TypeErrorrrSrd)rDr�r�r�r��	tls_protorw�
tls_transport�msgr��type_errs           rE�_start_tls_connectionz"TCPConnector._start_tls_connection:s6�����M�M�O�O�	��#�.�$�*?�*?��*D�*D�E�E�
�+	�#��$�W�5K����
�
�
�
�
�
�
�
�
�*.�*�*>�*>�,�!�"�(+�(;�(G�s�x�.5�m�+?�+�+�%�%�%�%�%�%�M�M��%����)�.�.�0�0�0������"�	
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�J�$�R��"�l�3�#5�w�s�|�|�D�D�D��%�%��
�
�
�
��/�	T�	T�	T�1�#�2D�c�J�J�PS�S������	L�	L�	L�)�#�*<�c�B�B��K������	A�	A�	A��y� �Z��W�5I�%J�%J� ���,�s�1�3�7�7�S�@������
	�
	�
	�
(�"��8�"�"� #��N�"�"�%(�Y�"�"�7:�w�7K�)�"�"��"�"�"���
�
�����
	����&�i�'�'sx�!D�&C�(6B�C� B?�?C�D�
C�D�"C�#D�
G+�(D>�>
G+�E!�!
G+�.4F"�"
G+�/7G&�&G+c��K�|�|��}|�|��}|jj}|�J�|�d��r|�d��dz}|j}|�J�tj|�	|||���|j
���}		tj|	���d{V��}
nr#tj$rdd�}|	�
|���t$r=}|j�t!|tj��r�t%|j|��|�d}~wwxYwd}
|
D�]}|d	}|d
}|r"|jp|d�d��nd}	|�|j|||||d|d
|d||j||����d{V��\}}n#t$$r}|}
Yd}~��d}~wwxYw|���rh|rf	|�|��nO#t4$rB}|���|js|j�|��|}
Yd}~��d}~wwxYw||fcS|
�J�|
�)Nz..�.)r�r�r
�$asyncio.Future[List[Dict[str, Any]]]rAc��tttj��5|���ddd��dS#1swxYwYdSr�)rr�r��CancelledErrorr`)r
s rE�drop_exceptionz>TCPConnector._create_direct_connection.<locals>.drop_exception�s����i��)?�@�@�!�!��J�J�L�L�L�!�!�!�!�!�!�!�!�!�!�!�!����!�!�!�!�!�!s�A�A�	Ar,rSrWr@r�rX)	r�rBr@r�rXr�rCr�r�)r
r�rAN)r}r�r��raw_host�endswith�rstriprSr��
ensure_futurerbr`�shieldr��add_done_callbackr�r�r|r�r!r�r�r�r�rMr��checkr%r�r�r�r�)rDr�r�r�r�rwr=r,rS�
host_resolved�hostsr�r��last_exc�hinfor��transpr�s                  rErfz&TCPConnector._create_direct_connectionzs5�����*�*�3�/�/�
��+�+�C�0�0���w��������=�=����	*��;�;�s�#�#�c�)�D��x�������-����t�T�&��9�9��
�
�
�
�
�	I�"�.��7�7�7�7�7�7�7�7�E�E���%�	�	�	�
!�
!�
!�
!�
�+�+�N�;�;�;���	I�	I�	I��y� �Z��W�5I�%J�%J� ��'�s�'9�3�?�?�S�H�����	I����)-���,	�,	�E���=�D���=�D����$�9��j�(9�A�A�#�F�F�F��
�
�&*�&B�&B��M���#�"� ��?���.���.�$3�#�/��!-�'C�
'�
'�
!�
!�
!�
!�
!�
!�
�����(�
�
�
������������
�����z�z�|�|�
��
���%�%�f�-�-�-�-��0�����L�L�N�N�N��8�G��7�>�>�v�F�F�F�"�H��H�H�H�H����������5�=� � � ��'�'�'��NsI�'C�2D1�48D,�,D1�2AF9�9
G�G
�
G�)G?�?
I�	7I�Ic���K�|�|��|���}i}|j�|j}|jtj|tj<|j}|�J�ttj|||j	|j
|j���}|�|g|t����d{V��\}}	|	���|j�tjd��}
|
�=|���s|
|jtj<n|
|jtj<|����r�|r|�||��tj|_|j|_t/j|jddd���}t5|||	|j
��}|�|���d{V��}
	|j}|�J�|�||j���|
�|���d{V��}d|_d|_ 	|j!dkrJ|j"}|�tG|j!��j$}tK|
j&|j'|j!||j����|s<|�(dd���}|�tSd	���|�*��}n##tV$r|�,���wxYw|s|�,��n#|s|�,��wwxYw|sU|�-|��}|�.|j/||||j0|�
���d{V��	|
�,��S|�1|||����d{V��	|
�,��S#tV$r*|
�,��|�,���wxYw#|
�,��wxYw||	fS)N)�headers�authr\rBr�)rd�
proxy_auth�proxy_headers_hash)�read_until_eofr���)�statusrrr��socket)r�z)Transport does not expose socket instance)r�rB�sockr�r�)r�r�)2r�r��
proxy_headersr�r�HOSTrdr*�METH_GETr�r`rBrfr$r�r�
AUTHORIZATIONr��PROXY_AUTHORIZATIONr��METH_CONNECT�methodr��attr�evolver�rX�sendra�set_response_paramsr��startr�r��reasonr�phraser#r��history�get_extra_infor{�duprr�r}r�r�r,r�)rDr�r�r��runtime_has_start_tlsr�r��	proxy_reqr�r�r�rZ�conn�
proxy_respr[�resprr�rawsockrws                   rErez%TCPConnector._create_proxy_connection�s�����	
�"�"�3�'�'�'� $� =� =� ?� ?��"$����(��'�G� �[���3���	���i������!��M���������

�
�
�	�"&�!?�!?��r�7�1K�"@�"
�"
�
�
�
�
�
�
��	�5�	������� �$�$�T�%7��>�>�����:�:�<�<�
C�8<���D�4�5�5�>B�	�!�$�":�;��:�:�<�<�Y	#�$�
<��+�+�I�s�;�;�;� $�0�I���G�I�M��+��"�$�4�TX����C��d�C���
�;�;�D�(�~�~�d�3�3�3�3�3�3�3�3�J�E
#��>���+�+�+�
�,�,�#8�+/�+G�-����(�-�-�d�3�3�3�3�3�3�3�3��"&���"&���*��{�c�)�)�"&�+��"�?�&0���&=�&=�&D�G�2�&�3� �L�#'�;�$+�$(�L�����1�0�"+�":�":�8�T�":�"R�"R��"�?�".� K�#�#��#*�+�+�-�-����$�����O�O�%�%�%������1�*�!���)�)�)���1�*�!���)�)�)�)�*����-�
�!%�!6�!6�s�!;�!;�J�!%�!=�!=��
� '�&�$�(+���
">�"�"��������"� � �"�"�"�"�"�7�7���#�8����������� � �"�"�"�"��s!�
�
�
�� � �"�"�"��
�
�����
�����r� � �"�"�"�"�����%��sQ�AN�O�#BJ7�6K1�7 K�K1�O�1L
�
AO�$O�4O�O�O$)NNr�)r�r*rANrQ)5rRrSrTr�r1r�r�bytesr$rkrr+rr�rr�r#r�r�rFrr�r�r@r>rUrrr
rbr*r)r�staticmethodr��	lru_cacheryr}r�r!rr�r�r�r�r�r�r��
BaseTransportr�rfre�
__classcell__�rNs@rEr5r5�sa���������6 �'+�"�')��,0�48�04�/3�8@�!���&+�48�()�%'&�'&�'&��'&��e�_�	'&�
�'&� ��}�
'&��'&��j�)�'&��4��j�0�
1�'&��U�3��8�_�-�'&��+�,�'&�!��u�f�!4�5�'&��'&��'&��'&�  $�!'&�"�w�0�1�#'&�$!&�%'&�'&�'&�'&�'&�'&�R�y����������������X���#�t�#�#�#��X�#�
AE�	'�	'��S�M�	'�08��
�	'�	
�	'�	'�	'�	'�GK�J2�J2��J2�"�J2�,4�T�'�]�,C�J2�	
�d�3��8�n�	�J2�J2�J2�J2�X� ��*.�w�-��BQ��	�������Y������D��Z�������\��*�M��h�z�6J�����B�M��h�}�6M�����)=�A�A�A��A��A�!�	A�
�9�o�A��
A�
�w� �/�1�	2�A�A�A�A�,)�)�)�)�$����"�$�����#
�%�/�#
��#
�
�	#
�#
�#
�#
�T)=�>(�>(�%�/�>(��>(�!�	>(�
�9�o�>(�
�w�$�o�5�	6�
>(�>(�>(�>(�L)=�
Y�Y�Y�
�Y��W�
�Y�!�	Y��9�o�
Y�
�w� �/�1�	2�Y�Y�Y�Y�vB � �B �*.�w�-�B �BQ�B �	�w�$�o�5�	6�B �B �B �B �B �B �B �B rGr5c���eZdZdZdedddfdededeee	dfd	e
d
e
deej
ddf�fd
�
Zedefd���Zdededdddefd�Z�xZS)r6a�Unix socket connector.

    path - Unix socket path.
    keepalive_timeout - (optional) Keep-alive timeout.
    force_close - Set to True to force close and do reconnect
        after each request (and between redirects).
    limit - The total number of simultaneous connections.
    limit_per_host - Number of simultaneous connections to one host.
    loop - Optional event loop.
    Fr�rN�pathr�r�r�r�r\rAc�b��t���|||||���||_dS)N�r�r�r�r�r\)rFrF�_path�rDr�r�r�r�r�r\rNs       �rErFzUnixConnector.__init__fsB���	�����#�/��)��	�	
�	
�	
���
�
�
rGc��|jS)zPath to unix socket.�r�rKs rEr�zUnixConnector.pathx����z�rGr�r�r:r�r8c��K�	t|j|j���4�d{V��|j�|j|j���d{V��\}}ddd���d{V��n#1�d{V��swxYwYnP#t$rC}|j�t|tj��r�t|j
|j|��|�d}~wwxYw|Sr�)r-r�r�r`�create_unix_connectionr�r�r�r�r|r�r�r&r�r��rDr�r�r�rgr�r�s       rErz UnixConnector._create_connection}s�����
	X�#��$�W�5K����
�
�
�
�
�
�
�
�"&��!B�!B��M�4�:�"�"���������5�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
����
�
�
�
����	X�	X�	X��y� �Z��W�5I�%J�%J� ��*�4�9�c�6H�#�N�N�TW�W�����	X����
�s:�!A8�/A&�A8�&
A0�0A8�3A0�4A8�8
C�>C�C�rRrSrTr�r1r�r�rr#r�r$rr�r�rFr�r�r*rr)rr�r�s@rEr6r6Zs�������	�	�"�8@���48�������!����!4�5�	�
���
��w�0�1��
�������$��c�����X��� ��*.�w�-��BQ��	��������rGr6c���eZdZdZdedddfdededeee	dfd	e
d
e
deej
ddf�fd
�
Zedefd���Zdededdddefd�Z�xZS)r7a�Named pipe connector.

    Only supported by the proactor event loop.
    See also: https://docs.python.org/3/library/asyncio-eventloop.html

    path - Windows named pipe path.
    keepalive_timeout - (optional) Keep-alive timeout.
    force_close - Set to True to force close and do reconnect
        after each request (and between redirects).
    limit - The total number of simultaneous connections.
    limit_per_host - Number of simultaneous connections to one host.
    loop - Optional event loop.
    Fr�rNr�r�r�r�r�r\rAc���t���|||||���t|jtj��st
d���||_dS)Nr�z9Named Pipes only available in proactor loop under windows)rFrFr|r`r��ProactorEventLoopr{r�r�s       �rErFzNamedPipeConnector.__init__�sw���	�����#�/��)��	�	
�	
�	
���J��1�
�
�	��N���
���
�
�
rGc��|jS)zPath to the named pipe.r�rKs rEr�zNamedPipeConnector.path�r�rGr�r�r:r�r8c���K�	t|j|j���4�d{V��|j�|j|j���d{V��\}}tjd���d{V��ddd���d{V��n#1�d{V��swxYwYnJ#t$r=}|j
�t|tj��r�t|j|��|�d}~wwxYwtt |��S)Nr�r)r-r�r�r`�create_pipe_connectionr�r�r��sleepr�r�r|r�r!r�rr)r�s       rErz%NamedPipeConnector._create_connection�s�����	I�#��$�W�5K����

'�

'�

'�

'�

'�

'�

'�

'�"&��!B�!B��M�4�:�"�"���������5��m�A�&�&�&�&�&�&�&�&�&�

'�

'�

'�

'�

'�

'�

'�

'�

'�

'�

'�

'�

'�

'�

'�

'�

'�

'�

'�

'�

'�

'�

'����

'�

'�

'�

'����	I�	I�	I��y� �Z��W�5I�%J�%J� ��&�s�'9�3�?�?�S�H�����	I����
�O�U�+�+�+s;�!B�A	B�.B�
B
�
B�
B
�B�
C�8C�Cr�r�s@rEr7r7�s���������""�8@���48�������!����!4�5�	�
���
��w�0�1��
�������0��c�����X��,� �,�*.�w�-�,�BQ�,�	�,�,�,�,�,�,�,�,rGr7)Xr�r�rrfrdrM�collectionsrr�
contextlibr�httpr�http.cookiesr�	itertoolsrr	r�r
�typesr�typingrr
rrrrrrrrrrrrrr��rr�abcr�client_exceptionsrr r!r"r#r$r%r&r'r(�client_protor)�
client_reqrepr*r+r,r-r.r/r0r1�locksr2rDr3rBrk�ImportErrorr#�__all__�clientr8r9�tracingr:r<rXr�r4r&r5r6r7rVrGrE�<module>rs�����������
�
�
�
�
�
�
�
���������*�*�*�*�*�*�*�*�������������%�%�%�%�%�%�#�#�#�#�#�#�#�#�����������������������������������������������$������������!�!�!�!�!�!�������������������������*�)�)�)�)�)�H�H�H�H�H�H�H�H�H�H�R�R�R�R�R�R�R�R�R�R�R�R�R�R�%�%�%�%�%�%�%�%�%�%�%�%���J�J�J���J�J������
�C��J�J�J�����
S����%�%�%�%�%�%�,�,�,�,�,�,���������������(XK�XK�XK�XK�XK�XK�XK�XK�v
�
�
�
�
�
�
�
�s$�s$�s$�s$�s$�s$�s$�s$�l$?�$?�$?�$?�$?�$?�$?�$?�N|	 �|	 �|	 �|	 �|	 �=�|	 �|	 �|	 �~2�2�2�2�2�M�2�2�2�jB,�B,�B,�B,�B,��B,�B,�B,�B,�B,s�>C
�
	C�C

Zerion Mini Shell 1.0