§
    JŠtjxX  ã                  ó–  — d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
mZmZmZmZ ddlmZ ddlmZmZ ddlmZmZ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" ddl#m$Z$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/m0Z0 ddl1m2Z2 ddl3m4Z4 g d¢Z5 G d„ de2¦  «        Z6dddddddde!ddddddddddddœd_dD„Z7	 	 d`dadF„Z8	 d dGl9m:Z: d dHl;m,Z< e:j=        e:j=        e:j>        e:j>        dIœZ?ddJddJdIœZ@dbdQ„ZAn# eB$ r dbdR„ZAY nw xY w	 dcdddT„ZCdedV„ZDddddWœdfdX„ZE edY¦  «        ZF edZed[eFf         ¬\¦  «        ZG G d]„ d^¦  «        ZHdS )gé    )ÚannotationsN)ÚSequence)ÚAnyÚCallableÚLiteralÚTypeVarÚcasté   )ÚClientProtocol)ÚHeadersÚHeadersLike)ÚInvalidProxyMessageÚInvalidProxyStatusÚ
ProxyError)ÚClientExtensionFactory)Ú enable_client_permessage_deflate)Úbuild_authorization_basicÚ
build_hostÚvalidate_subprotocols)Ú
USER_AGENTÚResponse)Ú
CONNECTINGÚEvent)ÚStreamReader)Ú
LoggerLikeÚOriginÚSubprotocol)ÚProxyÚWebSocketURIÚ	get_proxyÚparse_proxyÚ	parse_urié   )Ú
Connection)ÚDeadline)ÚconnectÚunix_connectÚClientConnectionc                  óX   ‡ — e Zd ZdZdddddœdˆ fd„Zdedfdd„Zd ˆ fd„Zd!ˆ fd„Zˆ xZ	S )"r(   a1  
    :mod:`threading` implementation of a WebSocket client connection.

    :class:`ClientConnection` provides :meth:`recv` and :meth:`send` methods for
    receiving and sending messages.

    It supports iteration to receive messages::

        for message in websocket:
            process(message)

    The iterator exits normally when the connection is closed with close code
    1000 (OK) or 1001 (going away) or without a close code. It raises a
    :exc:`~websockets.exceptions.ConnectionClosedError` when the connection is
    closed with any other code.

    The ``ping_interval``, ``ping_timeout``, ``close_timeout``, and
    ``max_queue`` arguments have the same meaning as in :func:`connect`.

    Args:
        socket: Socket connected to a WebSocket server.
        protocol: Sans-I/O connection.

    é   é
   é   ©Úping_intervalÚping_timeoutÚclose_timeoutÚ	max_queueÚsocketúsocket.socketÚprotocolr   r.   úfloat | Noner/   r0   r1   ú*int | None | tuple[int | None, int | None]ÚreturnÚNonec               óŠ   •— |  t          j        ¦   «         | _        t          ¦   «                              ||||||¬¦  «         d S )Nr-   )Ú	threadingr   Úresponse_rcvdÚsuperÚ__init__)Úselfr2   r4   r.   r/   r0   r1   Ú	__class__s          €úT/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/websockets/sync/client.pyr=   zClientConnection.__init__6   sX   ø€ ð 	Ð%Ý&œ_Ñ.Ô.ˆÔÝ‰Œ×ÒØØØ'Ø%Ø'Øð 	ñ 	
ô 	
ð 	
ð 	
ð 	
ó    NÚadditional_headersúHeadersLike | NoneÚuser_agent_headerú
str | NoneÚtimeoutc                óî  — |                       t          ¬¦  «        5  | j                             ¦   «         | _        |�| j        j                             |¦  «         |� | j        j                             d|¦  «         | j                             | j        ¦  «         ddd¦  «         n# 1 swxY w Y   | j	         
                    |¦  «        st          d¦  «        ‚| j        j        �| j        j        ‚dS )z1
        Perform the opening handshake.

        )Úexpected_stateNú
User-Agentz.timed out while waiting for handshake response)Úsend_contextr   r4   r&   ÚrequestÚheadersÚupdateÚ
setdefaultÚsend_requestr;   ÚwaitÚTimeoutErrorÚhandshake_exc)r>   rB   rD   rF   s       r@   Ú	handshakezClientConnection.handshakeK   s*  € ð ×Ò­jÐÑ9Ô9ð 	5ð 	5Øœ=×0Ò0Ñ2Ô2ˆDŒLØ!Ð-Ø”Ô$×+Ò+Ð,>Ñ?Ô?Ð?Ø Ð,Ø”Ô$×/Ò/°Ð>OÑPÔPÐPØŒM×&Ò& t¤|Ñ4Ô4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð Ô!×&Ò& wÑ/Ô/ð 	QÝÐOÑPÔPÐPð Œ=Ô&Ð2Ø”-Ô-Ð-ð 3Ð2s   œBB)Â)B-Â0B-Úeventr   c                óÊ   •— | j         €9t          |t          ¦  «        sJ ‚|| _         | j                             ¦   «          dS t          ¦   «                              |¦  «         dS )z.
        Process one incoming event.

        N)ÚresponseÚ
isinstancer   r;   Úsetr<   Úprocess_event)r>   rT   r?   s     €r@   rY   zClientConnection.process_eventg   se   ø€ ð Œ=Ð Ý˜e¥XÑ.Ô.Ð.Ð.Ð.Ø!ˆDŒMØÔ×"Ò"Ñ$Ô$Ð$Ð$Ð$õ ‰GŒG×!Ò! %Ñ(Ô(Ð(Ð(Ð(rA   c                ó¸   •— 	 t          ¦   «                              ¦   «          | j                             ¦   «          dS # | j                             ¦   «          w xY w)zI
        Read incoming data from the socket and process events.

        N)r<   Úrecv_eventsr;   rX   )r>   r?   s    €r@   r[   zClientConnection.recv_eventsu   sV   ø€ ð
	%Ý‰GŒG×ÒÑ!Ô!Ð!ð Ô×"Ò"Ñ$Ô$Ð$Ð$Ð$øˆDÔ×"Ò"Ñ$Ô$Ð$Ð$øøøs	   ƒ > ¾A)r2   r3   r4   r   r.   r5   r/   r5   r0   r5   r1   r6   r7   r8   )rB   rC   rD   rE   rF   r5   r7   r8   )rT   r   r7   r8   )r7   r8   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r=   r   rS   rY   r[   Ú__classcell__)r?   s   @r@   r(   r(      s¿   ø€ € € € € ðð ð< ')Ø%'Ø&(Ø@Bð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð. 26Ø(2Ø $ð	.ð .ð .ð .ð .ð8)ð )ð )ð )ð )ð )ð	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%rA   r(   ÚdeflateTr+   r*   i   r,   )ÚsockÚsslÚserver_hostnameÚoriginÚ
extensionsÚsubprotocolsÚcompressionrB   rD   ÚproxyÚ	proxy_sslÚproxy_server_hostnameÚopen_timeoutr.   r/   r0   Úmax_sizer1   ÚloggerÚcreate_connectionÚuriÚstrrb   úsocket.socket | Nonerc   ússl_module.SSLContext | Nonerd   rE   re   úOrigin | Nonerf   ú'Sequence[ClientExtensionFactory] | Nonerg   úSequence[Subprotocol] | Nonerh   rB   rC   rD   ri   ústr | Literal[True] | Nonerj   rk   rl   r5   r.   r/   r0   rm   ú
int | Noner1   r6   rn   úLoggerLike | Nonero   útype[ClientConnection] | NoneÚkwargsr   r7   c          	     óJ  — |€3d|v r/|                      d¦  «        }t          j        dt          ¦  «         t	          | ¦  «        }|j        s|�t          d¦  «        ‚|                      dd¦  «        }|                      dd¦  «        }|r&|€|€t          d¦  «        ‚|�|�t          d	¦  «        ‚|�t          |¦  «         |d
k    rt          |¦  «        }n|�t          d|› �¦  «        ‚|rd}
|�d}
|
du rt          |¦  «        }
t          |¦  «        }|€t          }	 |�€e|rjt          j        t          j        t          j        ¦  «        }|                     |                     ¦   «         ¦  «         |€J ‚|                     |¦  «         nä|
�œt%          |
¦  «        }|j        dd…         dk    r(t)          ||||                      dd¦  «        ¬¦  «        }n˜|j        dd…         dk    r0|j        dk    r|�t          d¦  «        ‚t+          |||f|	||dœ|¤Ž}nUt-          d¦  «        ‚|                     d|                     ¦   «         ¦  «         t          j        |j        |j        ffi |¤Ž}|                     d¦  «         |s+|                     t          j        t          j        d¦  «         |j        r |€t=          j        ¦   «         }|€|j        }|                     |                     ¦   «         ¦  «         |€|                      ||¬¦  «        }n,tC          |||¬¦  «        }tE          t          j        |¦  «        }|                     d¦  «         tG          ||||||¬¦  «        } |||||||¬¦  «        }n%# tH          $ r |�| %                    ¦   «          ‚ w xY w	 | &                    ||	|                     ¦   «         ¦  «         n<# tH          $ r/ | '                    ¦   «          |j(         )                    ¦   «          ‚ w xY w| *                    ¦   «          |S )aá  
    Connect to the WebSocket server at ``uri``.

    This function returns a :class:`ClientConnection` instance, which you can
    use to send and receive messages.

    :func:`connect` may be used as a context manager::

        from websockets.sync.client import connect

        with connect(...) as websocket:
            ...

    The connection is closed automatically when exiting the context.

    Args:
        uri: URI of the WebSocket server.
        sock: Preexisting TCP socket. ``sock`` overrides the host and port
            from ``uri``. You may call :func:`socket.create_connection` to
            create a suitable TCP socket.
        ssl: Configuration for enabling TLS on the connection.
        server_hostname: Host name for the TLS handshake. ``server_hostname``
            overrides the host name from ``uri``.
        origin: Value of the ``Origin`` header, for servers that require it.
        extensions: List of supported extensions, in order in which they
            should be negotiated and run.
        subprotocols: List of supported subprotocols, in order of decreasing
            preference.
        compression: The "permessage-deflate" extension is enabled by default.
            Set ``compression`` to :obj:`None` to disable it. See the
            :doc:`compression guide <../../topics/compression>` for details.
        additional_headers (HeadersLike | None): Arbitrary HTTP headers to add
            to the handshake request.
        user_agent_header: Value of  the ``User-Agent`` request header.
            It defaults to ``"Python/x.y.z websockets/X.Y"``.
            Setting it to :obj:`None` removes the header.
        proxy: If a proxy is configured, it is used by default. Set ``proxy``
            to :obj:`None` to disable the proxy or to the address of a proxy
            to override the system configuration. See the :doc:`proxy docs
            <../../topics/proxies>` for details.
        proxy_ssl: Configuration for enabling TLS on the proxy connection.
        proxy_server_hostname: Host name for the TLS handshake with the proxy.
            ``proxy_server_hostname`` overrides the host name from ``proxy``.
        open_timeout: Timeout for opening the connection in seconds.
            :obj:`None` disables the timeout.
        ping_interval: Interval between keepalive pings in seconds.
            :obj:`None` disables keepalive.
        ping_timeout: Timeout for keepalive pings in seconds.
            :obj:`None` disables timeouts.
        close_timeout: Timeout for closing the connection in seconds.
            :obj:`None` disables the timeout.
        max_size: Maximum size of incoming messages in bytes.
            :obj:`None` disables the limit.
        max_queue: High-water mark of the buffer where frames are received.
            It defaults to 16 frames. The low-water mark defaults to ``max_queue
            // 4``. You may pass a ``(high, low)`` tuple to set the high-water
            and low-water marks. If you want to disable flow control entirely,
            you may set it to ``None``, although that's a bad idea.
        logger: Logger for this client.
            It defaults to ``logging.getLogger("websockets.client")``.
            See the :doc:`logging guide <../../topics/logging>` for details.
        create_connection: Factory for the :class:`ClientConnection` managing
            the connection. Set it to a wrapper or a subclass to customize
            connection handling.

    Any other keyword arguments are passed to :func:`~socket.create_connection`.

    Raises:
        InvalidURI: If ``uri`` isn't a valid WebSocket URI.
        OSError: If the TCP connection fails.
        InvalidHandshake: If the opening handshake fails.
        TimeoutError: If the opening handshake times out.

    NÚssl_contextzssl_context was renamed to sslz-ssl argument is incompatible with a ws:// URIÚunixFÚpathzmissing path argumentz(path and sock arguments are incompatiblera   zunsupported compression: Té   ÚsocksÚsource_address)Ú
local_addré   ÚhttpÚhttpsz8proxy_ssl argument is incompatible with an http:// proxy©rD   rc   rd   zunsupported proxyrF   ©rd   )re   rf   rg   rm   rn   r-   )+ÚpopÚwarningsÚwarnÚDeprecationWarningr"   ÚsecureÚ
ValueErrorr   r   r    r%   r(   r2   ÚAF_UNIXÚSOCK_STREAMÚ
settimeoutrF   r&   r!   ÚschemeÚconnect_socks_proxyÚconnect_http_proxyÚAssertionErrorrN   ro   ÚhostÚportÚ
setsockoptÚIPPROTO_TCPÚTCP_NODELAYÚ
ssl_moduleÚcreate_default_contextÚwrap_socketÚSSLSSLSocketr	   r   Ú	ExceptionÚcloserS   Úclose_socketÚrecv_events_threadÚjoinÚstart_keepalive)rp   rb   rc   rd   re   rf   rg   rh   rB   rD   ri   rj   rk   rl   r.   r/   r0   rm   r1   rn   ro   r{   Úws_urir~   r   ÚdeadlineÚproxy_parsedÚsock_2r4   Ú
connections                                 r@   r&   r&   �   sû  € ð\ €{�}¨Ð.Ð.Ø�jŠj˜Ñ'Ô'ˆÝŒØ,Ýñ	
ô 	
ð 	
õ
 �s‰^Œ^€FØŒ=ð J˜S˜_ÝÐHÑIÔIÐIð —’˜F EÑ*Ô*€DØ—z’z &¨$Ñ/Ô/€Dàð IØˆ<˜D˜LÝÐ4Ñ5Ô5Ð5ØÐ $Ð"2ÝÐGÑHÔHÐHàÐÝ˜lÑ+Ô+Ð+à�iÒÐÝ5°jÑAÔAˆ
ˆ
Ø	Ð	 ÝÐB°[ÐBÐBÑCÔCÐCàð ØˆØÐØˆØ�€}€}Ý˜&Ñ!Ô!ˆõ
 ˜Ñ%Ô%€HàÐ Ý,Ðð\ð ‰<Øð (Ý”}¥V¤^µVÔ5GÑHÔH�Ø—’ × 0Ò 0Ñ 2Ô 2Ñ3Ô3Ð3ØÐ'Ð'Ð'Ø—’˜TÑ"Ô"Ð"Ð"ØÐ"Ý*¨5Ñ1Ô1�ØÔ& r¨ rÔ*¨gÒ5Ð5å.Ø$ØØ ð $*§:¢:Ð.>ÀÑ#EÔ#Eðñ ô �D�Dð "Ô(¨¨!¨Ô,°Ò6Ð6à#Ô*¨gÒ5Ð5¸)Ð:OÝ(ØVñô ð õ .Ø$ØØ ðð +<Ø%Ø(=ðð ð !ðð �D�Dõ )Ð)<Ñ=Ô=Ð=à×!Ò! )¨X×-=Ò-=Ñ-?Ô-?Ñ@Ô@Ð@ÝÔ/Ø”[ &¤+Ð.ðð àðð �ð �OŠO˜DÑ!Ô!Ð!ð ð 	JØ�OŠO�FÔ.µÔ0BÀDÑIÔIÐIð Œ=ð 	"Øˆ{Ý Ô7Ñ9Ô9�ØÐ&Ø"(¤+�Ø�OŠO˜H×,Ò,Ñ.Ô.Ñ/Ô/Ð/ØÐ Ø—’ t¸_�ÑMÔM��å% d¨CÀÐQÑQÔQ�å�FœM¨6Ñ2Ô2�Ø�OŠO˜DÑ!Ô!Ð!õ "ØØØ!Ø%ØØð
ñ 
ô 
ˆð 'Ð&ØØØ'Ø%Ø'Øð
ñ 
ô 
ˆ
ˆ
øõ ð ð ð ØÐØ�JŠJ‰LŒLˆLØðøøøð
	Ø×ÒØØØ×ÒÑÔñ	
ô 	
ð 	
ð 	
øõ
 ð ð ð Ø×ÒÑ!Ô!Ð!ØÔ%×*Ò*Ñ,Ô,Ð,Øðøøøð
 ×ÒÑ Ô Ð ØÐs   Ä I"N Î"N%Î))O Ï9Pr   c                ó„   — |€/|                      d¦  «        €|                      d¦  «        €d}nd}t          d|d| dœ|¤ŽS )	aÚ  
    Connect to a WebSocket server listening on a Unix socket.

    This function accepts the same keyword arguments as :func:`connect`.

    It's only available on Unix.

    It's mainly useful for debugging servers listening on Unix sockets.

    Args:
        path: File system path to the Unix socket.
        uri: URI of the WebSocket server. ``uri`` defaults to
            ``ws://localhost/`` or, when a ``ssl`` is provided, to
            ``wss://localhost/``.

    Nrc   r}   zws://localhost/zwss://localhost/T)rp   r~   r   © )Úgetr&   )r   rp   r{   s      r@   r'   r'   ˆ  sU   € ð* €{à�:Š:�eÑÔÐ$¨¯ª°MÑ)BÔ)BÐ)JØ#ˆCˆCà$ˆCÝÐ;�s ¨DÐ;Ð;°FÐ;Ð;Ð;rA   )Ú	ProxyType)r   )Úsocks5hÚsocks5Úsocks4aÚsocks4Fr   r¥   r   r¦   r%   r3   c           	     ó’  — t          t          | j                 | j        | j        | j        | j        t          | j                 ¦  «        }|                     d| 	                    ¦   «         ¦  «         	  |j
        |j        |j        fi |¤ŽS # t          t          t          j	        f$ r ‚ t          $ r}t          d¦  «        |‚d}~ww xY w)z0Connect via a SOCKS proxy and return the socket.rF   z failed to connect to SOCKS proxyN)Ú
SocksProxyÚSOCKS_PROXY_TYPESr’   r–   r—   ÚusernameÚpasswordÚSOCKS_PROXY_RDNSrN   rF   r&   ÚOSErrorrQ   r2   rŸ   r   )ri   r¥   r¦   r{   Úsocks_proxyÚexcs         r@   r“   r“   ¸  sØ   € õ !Ý˜eœlÔ+ØŒJØŒJØŒNØŒNÝ˜Uœ\Ô*ñ
ô 
ˆð 	×Ò˜) X×%5Ò%5Ñ%7Ô%7Ñ8Ô8Ð8ð	JØ&�;Ô& v¤{°F´KÐJÐJÀ6ÐJÐJÐJøÝ�¥v¤~Ð6ð 	ð 	ð 	ØÝð 	Jð 	Jð 	JÝÐ?Ñ@Ô@ÀcÐIøøøøð	Jøøøs   Á2B Â&CÂ1CÃCc                ó    — t          d¦  «        ‚)Nz-python-socks is required to use a SOCKS proxy)ÚImportError)ri   r¥   r¦   r{   s       r@   r“   r“   Ó  s   € õ ÐIÑJÔJÐJrA   Úbytesc                ój  — t          |j        |j        |j        d¬¦  «        }t	          ¦   «         }t          |j        |j        |j        ¦  «        |d<   |�||d<   | j        �&| j        €J ‚t          | j        | j        ¦  «        |d<   d|› d�                     ¦   «         | 	                    ¦   «         z   S )NT)Úalways_include_portÚHostrI   zProxy-AuthorizationzCONNECT z HTTP/1.1
)
r   r–   r—   r�   r   rµ   r¶   r   ÚencodeÚ	serialize)ri   r¥   rD   r–   rL   s        r@   Úprepare_connect_requestrÃ   Ü  s¹   € õ
 �f”k 6¤;°´ÐSWÐXÑXÔX€DÝ‰iŒi€GÝ  ¤¨f¬k¸6¼=ÑIÔI€GˆF�OØÐ$Ø 1ˆ�ÑØ„~Ð!ØŒ~Ð)Ð)Ð)Ý)BØŒN˜EœNñ*
ô *
ˆÐ%Ñ&ð *�dÐ)Ð)Ð)×0Ò0Ñ2Ô2°W×5FÒ5FÑ5HÔ5HÑHÐHrA   r   c                óò  — t          ¦   «         }t          j        |j        |j        |j        d¬¦  «        }	 	 |                      |                     ¦   «         ¦  «         |                      d¦  «        }|r| 	                    |¦  «         n| 
                    ¦   «          t          |¦  «         Œx# t          $ rh}t          |j        t          ¦  «        sJ ‚|j        }d|j        cxk    rdk     rn n|cY d }~|                      d ¦  «         S t!          |¦  «        ‚d }~wt"          j        $ r t%          d¦  «        ‚t&          $ r}t)          d¦  «        |‚d }~ww xY w# |                      d ¦  «         w xY w)	NF)Úinclude_bodyTi   éÈ   i,  z(timed out while connecting to HTTP proxyz0did not receive a valid HTTP response from proxy)r   r   ÚparseÚ	read_lineÚ
read_exactÚread_to_eofr‘   rF   ÚrecvÚ	feed_dataÚfeed_eofÚnextÚStopIterationrW   ÚvalueÚstatus_coder   r2   rQ   rŸ   r   )rb   r¦   ÚreaderÚparserÚdatarº   rV   s          r@   Úread_connect_responserÕ   ï  s´  € Ý‰^Œ^€FÝŒ^ØÔØÔØÔØð	ñ ô €Fðð	Ø�OŠO˜H×,Ò,Ñ.Ô.Ñ/Ô/Ð/Ø—9’9˜T‘?”?ˆDØð "Ø× Ò  Ñ&Ô&Ð&Ð&à—’Ñ!Ô!Ð!Ý�‰LŒLˆLð	øõ ð /ð /ð /Ý˜#œ)¥XÑ.Ô.Ð.Ð.Ð.Ø”9ˆØ�(Ô&Ð,Ð,Ò,Ð,¨Ò,Ð,Ð,Ð,Ð,ØˆOˆOˆOˆOˆOð 	�Š˜ÑÔÐÐõ % XÑ.Ô.Ð.øøøøÝŒ>ð Gð Gð GÝÐEÑFÔFÐFÝð ð ð Ý!Ø>ñ
ô 
àð	øøøøðøøøøð
 	�Š˜ÑÔÐÐøøøsB   ·A9B0 Â0
EÂ:9DÃ3EÃ4E ÄDÄ*EÅEÅEÅE ÅE6r‡   c               ó<  — |                      d|                     ¦   «         ¦  «         t          j        | j        | j        ffi |¤Ž}| j        dk    rq|€t          j        ¦   «         }|€| j        }| 	                    |                     ¦   «         ¦  «         | 
                    ||¬¦  «        }| 	                    d ¦  «         |                     t          | ||¦  «        ¦  «         	 t          ||¦  «         n## t          $ r |                     ¦   «          ‚ w xY w|S )NrF   r†   rˆ   )rN   rF   r2   ro   r–   r—   r’   r›   rœ   r‘   r�   ÚsendallrÃ   rÕ   rŸ   r    )ri   r¥   r¦   rD   rc   rd   r{   rb   s           r@   r”   r”     s'  € ð ×Ò�i ×!1Ò!1Ñ!3Ô!3Ñ4Ô4Ð4ÝÔ# U¤Z°´Ð$<ÐGÐGÀÐGÐG€Dð „|�wÒÐØˆ;ÝÔ3Ñ5Ô5ˆCØÐ"Ø#œjˆOØ�Š˜×(Ò(Ñ*Ô*Ñ+Ô+Ð+Ø�Š˜t°_ˆÑEÔEˆØ�Š˜ÑÔÐð 	‡L‚LÕ(¨°Ð8IÑJÔJÑKÔKÐKðÝ˜d HÑ-Ô-Ð-Ð-øÝð ð ð Ø�
Š
‰ŒˆØðøøøð €Ks   Ã(C9 Ã9 DÚTÚF.)Úboundc                  óJ   — e Zd ZdZdZ	 ddd„Zdd„Zd d„Zd!d„Zd"d„Z	d#d„Z
dS )$rž   zr
    Socket-like object providing TLS-in-TLS.

    Only methods that are used by websockets are implemented.

    i   Nrb   r3   r}   ússl_module.SSLContextrd   rE   r7   r8   c                ó   — t          j        ¦   «         | _        t          j        ¦   «         | _        || _        |                     | j        | j        |¬¦  «        | _        |                      | j        j        ¦  «         d S )Nrˆ   )	r›   Ú	MemoryBIOÚincomingÚoutgoingÚ
ssl_socketÚwrap_bioÚ
ssl_objectÚrun_ioÚdo_handshake)r>   rb   r}   rd   s       r@   r=   zSSLSSLSocket.__init__E  ss   € õ #Ô,Ñ.Ô.ˆŒÝ"Ô,Ñ.Ô.ˆŒØˆŒØ%×.Ò.ØŒMØŒMØ+ð /ñ 
ô 
ˆŒð
 	�Š�D”OÔ0Ñ1Ô1Ð1Ð1Ð1rA   ÚfuncúCallable[..., T]Úargsr   rØ   c                ó�  — 	 d}d}	  ||Ž }n)# t           j        $ r d}Y nt           j        $ r d}Y nw xY w| j                             ¦   «         }|r| j                             |¦  «         |rV| j                             | j        ¦  «        }|r| j	         
                    |¦  «         n| j	                             ¦   «          ŒÂ|rŒÅ|S )NTF)r›   ÚSSLWantReadErrorÚSSLWantWriteErrorrà   Úreadrá   r×   rË   Úrecv_bufsizerß   ÚwriteÚ	write_eof)r>   ræ   rè   Ú	want_readÚ
want_writeÚresultrÔ   s          r@   rä   zSSLSSLSocket.run_ioU  s  € ð	ØˆIØˆJð"Ø˜˜t˜��øÝÔ.ð !ð !ð !Ø �	�	�	ÝÔ/ð "ð "ð "Ø!�
�
�
ð"øøøð ”=×%Ò%Ñ'Ô'ˆDØð .Ø”×'Ò'¨Ñ-Ô-Ð-ð ð Ø”×+Ò+¨DÔ,=Ñ>Ô>�Øð .Ø”M×'Ò'¨Ñ-Ô-Ð-Ð-à”M×+Ò+Ñ-Ô-Ð-Øàð ØàˆMs   ‡ �3 3²3ÚbuflenÚintr½   c                óp   — 	 |                       | j        j        |¦  «        S # t          j        $ r Y dS w xY w)NrA   )rä   rã   rì   r›   ÚSSLEOFError)r>   ró   s     r@   rË   zSSLSSLSocket.recvs  sE   € ð	Ø—;’;˜tœÔ3°VÑ<Ô<Ð<øÝÔ%ð 	ð 	ð 	Ø�3�3ð	øøøs   ‚" ¢5´5rÔ   c                óB   — |                       | j        j        |¦  «        S ©N)rä   rã   rî   )r>   rÔ   s     r@   ÚsendzSSLSSLSocket.sendy  s   € Ø�{Š{˜4œ?Ô0°$Ñ7Ô7Ð7rA   c                ó*  — d}t          |¦  «        5 }|                     d¦  «        5 }t          |¦  «        }||k     r&||                      ||d …         ¦  «        z  }||k     °&d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )Nr   ÚB)Ú
memoryviewr	   Úlenrù   )r>   rÔ   ÚcountÚviewÚ	byte_viewÚamounts         r@   r×   zSSLSSLSocket.sendall|  s  € àˆÝ˜ÑÔð 	6  t§y¢y°¡~¤~ð 	6¸Ý˜‘^”^ˆFØ˜&’.�.Ø˜Ÿš 9¨U¨V¨VÔ#4Ñ5Ô5Ñ5�ð ˜&’.�.ð	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6ð 	6ð 	6s4   ’B¨<A0Á$BÁ0A4	Á4BÁ7A4	Á8BÂBÂBÚnamerq   c                ó,   — t          | j        |¦  «        S rø   )Úgetattrrá   )r>   r  s     r@   Ú__getattr__zSSLSSLSocket.__getattr__‡  s   € Ý�t”¨Ñ-Ô-Ð-rA   rø   )rb   r3   r}   rÜ   rd   rE   r7   r8   )ræ   rç   rè   r   r7   rØ   )ró   rô   r7   r½   )rÔ   r½   r7   rô   )rÔ   r½   r7   r8   )r  rq   r7   r   )r\   r]   r^   r_   rí   r=   rä   rË   rù   r×   r  r«   rA   r@   rž   rž   ;  s§   € € € € € ðð ð €Lð '+ð	2ð 2ð 2ð 2ð 2ð ð ð ð ð<ð ð ð ð8ð 8ð 8ð 8ð6ð 6ð 6ð 6ð.ð .ð .ð .ð .ð .rA   rž   ).rp   rq   rb   rr   rc   rs   rd   rE   re   rt   rf   ru   rg   rv   rh   rE   rB   rC   rD   rE   ri   rw   rj   rs   rk   rE   rl   r5   r.   r5   r/   r5   r0   r5   rm   rx   r1   r6   rn   ry   ro   rz   r{   r   r7   r(   )NN)r   rE   rp   rE   r{   r   r7   r(   )
ri   r   r¥   r   r¦   r%   r{   r   r7   r3   rø   )ri   r   r¥   r   rD   rE   r7   r½   )rb   r3   r¦   r%   r7   r   )ri   r   r¥   r   r¦   r%   rD   rE   rc   rs   rd   rE   r{   r   r7   r3   )IÚ
__future__r   r2   rc   r›   r:   rŠ   Úcollections.abcr   Útypingr   r   r   r   r	   Úclientr   Údatastructuresr   r   Ú
exceptionsr   r   r   Úextensions.baser   Úextensions.permessage_deflater   rL   r   r   r   Úhttp11r   r   r4   r   r   Ústreamsr   r   r   r   rp   r   r   r    r!   r"   r©   r$   Úutilsr%   Ú__all__r(   r&   r'   Úpython_socksr­   Úpython_socks.syncr³   ÚSOCKS5ÚSOCKS4r´   r·   r“   r¼   rÃ   rÕ   r”   rØ   rÙ   rž   r«   rA   r@   ú<module>r     s  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8à #Ð #Ð #Ð #Ð #Ð #Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø LÐ LÐ LÐ LÐ LÐ LØ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø "Ð "Ð "Ð "Ð "Ð "Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð ð :Ð
9Ð
9€ðb%ð b%ð b%ð b%ð b%�zñ b%ô b%ð b%ðR "&Ø(,Ø"&à Ø:>Ø15Ø'à-1Ø$.Ø(,Ø.2Ø(,à!#Ø"$Ø!#Ø"$à Ø<>à $à7;ð;Dð Dð Dð Dð Dð DðP Øð<ð <ð <ð <ð <ð<3KØ&Ð&Ð&Ð&Ð&Ð&Ø5Ð5Ð5Ð5Ð5Ð5ð Ô#ØÔ"ØÔ#ØÔ"ð	ð Ðð ØØØð	ð ÐðJð Jð Jð Jð Jøð2 ð Kð Kð KðKð Kð Kð Kð Kð KðKøøøð %)ðIð Ið Ið Ið Ið&ð ð ð ðN %)Ø(,Ø"&ð#ð #ð #ð #ð #ð #ðL €GˆC�L„L€Ø€GˆC�x  Q Ô'Ð(Ñ(Ô(€ðM.ð M.ð M.ð M.ð M.ñ M.ô M.ð M.ð M.ð M.s   Ã2C: Ã:	DÄD