+
    O|jLY  ã            (      óú  € ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIH	t	 ^ RI
HtHtHtHtHt ^RIHt ^RIHt ^RIHtHtHt ^RIHt ^R	IHt ^R
IHt ^RIHtH t  ^RI!H"t"H#t# ^RI$H%t%H&t&H't'H(t( ^RI)H*t* ^RI
H+t+H,t,H-t-H.t. ^RI/H0t0H1t1 ^RI2H3t3 ^RI4H5t5 . RDOt6 ! R R]34      t7RRRRRRRRRRRRRRRRR]RR R!RR"RR#^
R$^R%^R&^
R'RER(^R)RR*R/R+ R, llt8RFR- R. llt9 ^ R/I:H;t; ^ R0I<H%t= R1];P|                  R2];P|                  R3];P~                  R4];P~                  /t@R1R R2R5R3R R4R5/tAR6 R7 ltBR: R; ltDRRRRRR/R< R= lltE]! R>4      tF]! R?]R@]F3,          RA7      tG ! RB RC4      tHR#   ]C d
    R8 R9 ltB LJi ; i)Gé    )ÚannotationsN)ÚSequence)ÚAnyÚCallableÚLiteralÚTypeVarÚcast)ÚClientProtocol)ÚHeadersLike)ÚInvalidProxyMessageÚInvalidProxyStatusÚ
ProxyError)ÚClientExtensionFactory)Ú enable_client_permessage_deflate)Úvalidate_subprotocols)Ú
USER_AGENTÚResponse)Ú
CONNECTINGÚEvent)ÚProxyÚ	get_proxyÚparse_proxyÚprepare_connect_request)ÚStreamReader)Ú	BytesLikeÚ
LoggerLikeÚOriginÚSubprotocol)ÚWebSocketURIÚ	parse_uri)Ú
Connection)ÚDeadlineÚClientConnectionc                  ó€   a € ] tR t^tRtR^R^R^
R^/R V 3R llltR]R3R	 R
 lltR V 3R lltR V 3R llt	Rt
V ;t# )r#   aë  
: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 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_queuec               ó4   € V ^8„  d   QhRRRRRRRRRRR	R
RR/# )é   Úsockúsocket.socketÚprotocolr
   r%   úfloat | Noner&   r'   r(   ú*int | None | tuple[int | None, int | None]ÚreturnÚNone© )Úformats   "ÚOC:\Users\alokc\chatbot\backend\venv\Lib\site-packages\websockets/sync/client.pyÚ__annotate__ÚClientConnection.__annotate__8   sP   € ÷ 
ñ 
àð
ð !ð
ð
 $ð
ð #ð
ð $ð
ð >ð
ð 
ñ
ó    c          	     	ój   <€ V  \         P                  ! 4       V n        \        SV `  VVVVVVR 7       R# )©r%   r&   r'   r(   N)Ú	threadingr   Úresponse_rcvdÚsuperÚ__init__)Úselfr+   r-   r%   r&   r'   r(   Ú	__class__s   &&&$$$$€r4   r=   ÚClientConnection.__init__8   s;   ø€ ñ 	Ü&Ÿ_š_Ó.ˆÔÜ‰ÑØØØ'Ø%Ø'Øð 	ö 	
r7   Nc               ó(   € V ^8„  d   QhRRRRRRRR/# )	r*   Úadditional_headersúHeadersLike | NoneÚuser_agent_headerú
str | NoneÚtimeoutr.   r0   r1   r2   )r3   s   "r4   r5   r6   M   s2   € ÷ .ñ .à.ð.ð &ð.ð ð	.ð
 
ñ.r7   c                ó\  € V P                   P                  4       V n        Ve&   V P                  P                  P	                  V4       Ve'   V P                  P                  P                  RV4       V P                  \        R7      ;_uu_ 4        V P                   P                  V P                  4       RRR4       V P                  P                  V4      '       g   \        R4      hV P                   P                  e   V P                   P                  hR#   + '       g   i     Ll; i)z!
Perform the opening handshake.

Nz
User-Agent)Úexpected_statez.timed out while waiting for handshake response)r-   ÚconnectÚrequestÚheadersÚupdateÚ
setdefaultÚsend_contextr   Úsend_requestr;   ÚwaitÚTimeoutErrorÚhandshake_exc)r>   rB   rD   rF   s   &&&&r4   Ú	handshakeÚClientConnection.handshakeM   sÜ   € ð —}‘}×,Ñ,Ó.ˆŒØÒ)Ø�L‰L× Ñ ×'Ñ'Ð(:Ô;ØÒ(Ø�L‰L× Ñ ×+Ñ+¨LÐ:KÔLØ×Ñ¬jÐ×9Õ9Ø�M‰M×&Ñ& t§|¡|Ô4÷ :ð ×!Ñ!×&Ñ& w×/Ò/ÜÐOÓPÐPð �=‰=×&Ñ&Ò2Ø—-‘-×-Ñ-Ð-ñ 3÷ :×9ús   Â&DÄD+	c               ó    € V ^8„  d   QhRRRR/# )r*   Úeventr   r0   r1   r2   )r3   s   "r4   r5   r6   i   s   € ÷ )ñ ) 5ð )¨Tñ )r7   c                ó¶   <€ V P                   f;   \        V\        4      '       g   Q hWn         V P                  P	                  4        R# \
        SV `  V4       R# )z
Process one incoming event.

N)ÚresponseÚ
isinstancer   r;   Úsetr<   Úprocess_event)r>   rV   r?   s   &&€r4   r[   ÚClientConnection.process_eventi   sH   ø€ ð �=‰=Ò Ü˜e¤X×.Ò.Ð.Ð.Ø!ŒMØ×Ñ×"Ñ"Ö$ô ‰GÑ! %Ö(r7   c               ó   € V ^8„  d   QhRR/# )r*   r0   r1   r2   )r3   s   "r4   r5   r6   w   s   € ÷ 	%ñ 	%˜Tñ 	%r7   c                ó˜   <€  \         SV `  4        V P                  P                  4        R#   T P                  P                  4        i ; i)z9
Read incoming data from the socket and process events.

N)r<   Úrecv_eventsr;   rZ   )r>   r?   s   &€r4   r_   ÚClientConnection.recv_eventsw   s:   ø€ ð
	%Ü‰GÑÔ!ð ×Ñ×"Ñ"Ö$øˆD×Ñ×"Ñ"Õ$ús	   ƒ- ­A	)rJ   rX   r;   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r=   r   rS   r[   r_   Ú__static_attributes__Ú__classcell__)r?   s   @r4   r#   r#      s`   ø† ñð2
ð
 ')ð
ð &(ð
ð ')ð
ð AC÷
ò 
ð. 26Ø(2Ø $÷	.÷8)ð )÷	%ö 	%r7   r+   ÚsslÚserver_hostnameÚoriginÚ
extensionsÚsubprotocolsÚcompressionÚdeflaterB   rD   ÚproxyTÚ	proxy_sslÚproxy_server_hostnameÚopen_timeoutr%   r&   r'   Úmax_sizer(   ÚloggerÚcreate_connectionc          .     ót   € V ^8„  d   QhRRRRRRRRR	R
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR R!R"R#R$R%R&/# )'r*   ÚuriÚstrr+   zsocket.socket | Nonerh   ússl_module.SSLContext | Noneri   rE   rj   zOrigin | Nonerk   z'Sequence[ClientExtensionFactory] | Nonerl   zSequence[Subprotocol] | Nonerm   rB   rC   rD   ro   zstr | Literal[True] | Nonerp   rq   rr   r.   r%   r&   r'   rs   r/   r(   rt   zLoggerLike | Noneru   ztype[ClientConnection] | NoneÚkwargsr   r0   r#   r2   )r3   s   "r4   r5   r5   ƒ   s  € ÷ Oñ OØ	ðOð ð	Oð
 
&ðOð  ðOð ðOð 8ðOð /ðOð ðOð +ðOð "ðOð &ðOð  ,ð!Oð" &ð#Oð& ð'Oð(  ð)Oð* ð+Oð,  ð-Oð0 9ð1Oð2 :ð3Oð6 ð7Oð: 5ð;Oð> ð?Oð@ ñAOr7   c          	     ó€  € Vf4   RV9   d-   VP                  R4      p\        P                  ! R\        4       \	        V 4      pVP
                  '       g   Ve   \        R4      hVe   \        V4       VR8X  d   \        V4      pMVe   \        RV 24      hVf   \        P                  ! R4      pVf   \        pVP                  RR	4      pVP                  R
R4      pV'       d'   Vf   Vf   \        R4      hVe   Ve   \        R4      hV'       d   Rp
Ve   Rp
V
RJ d   \        V4      p
\        V4      p VEfp   V'       dk   \        P                  ! \        P                  \        P                   4      pVP#                  VP%                  4       4       Vf   Q hVP'                  V4       MìV
eœ   \)        V
4      pVP*                  R,          R8X  d!   \-        VVVVP                  RR4      R7      pM¥VP*                  R,          R8X  d6   VP*                  R8w  d   Ve   \        R4      h\/        VVV3RV	RVRV/VB pMX\1        R4      hVP3                  RVP%                  4       4       \        P4                  ! VP6                  VP8                  33/ VB pVP#                  R4       V'       g0   VP;                  \        P<                  \        P>                  R4       VP
                  '       d˜   Vf   \@        PB                  ! 4       pVf   VP6                  pVP#                  VP%                  4       4       Vf   VPE                  WR7      pM'\G        WVR7      p\I        \        P                  V4      pVP#                  R4       \K        VVVVVVR7      pV! VVVVVVR7      p TPQ                  TT	TP%                  4       4       TPY                  4        T#   \L         d    Te   TPO                  4        h i ; i  \L         d-    TPS                  4        TPT                  PW                  4        h i ; i)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: 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. You may pass a ``(max_message_size,
        max_fragment_size)`` tuple to set different limits for messages and
        fragments when you expect long messages sent in short fragments.
    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.
    InvalidProxy: If ``proxy`` isn't a valid proxy.
    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:// URIrn   zunsupported compression: zwebsockets.clientÚunixFÚpathzmissing path argumentzpath is incompatible with sockT:Né   NÚsocksÚsource_address)Ú
local_addr:Né   NÚhttpÚhttpsz8proxy_ssl argument is incompatible with an http:// proxyrD   rh   ri   z&parse_proxy returned unsupported proxyrF   ©ri   )rj   rk   rl   rs   rt   r9   )-ÚpopÚwarningsÚwarnÚDeprecationWarningr    ÚsecureÚ
ValueErrorr   r   ÚloggingÚ	getLoggerr#   r   r"   ÚsocketÚAF_UNIXÚSOCK_STREAMÚ
settimeoutrF   rI   r   ÚschemeÚconnect_socks_proxyÚconnect_http_proxyÚAssertionErrorrM   ru   Ú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)rw   r+   rh   ri   rj   rk   rl   rm   rB   rD   ro   rp   rq   rr   r%   r&   r'   rs   r(   rt   ru   rz   Úws_urir}   r~   ÚdeadlineÚproxy_parsedÚsock_2r-   Ú
connections   &$$$$$$$$$$$$$$$$$$$$,        r4   rI   rI   ƒ   s  € ðd ‚{�}¨Ô.Ø�j‰j˜Ó'ˆÜ�ŠØ,Üô	
ô
 �s‹^€FØ�=�=ˆ=˜Sš_ÜÐHÓIÐIàÒÜ˜lÔ+à�iÔÜ5°jÓA‰
Ø	Ò	 ÜÐ4°[°MÐBÓCÐCà‚~Ü×"Ò"Ð#6Ó7ˆàÒ Ü,Ðð —‘˜F EÓ*€DØ—z‘z &¨$Ó/€DçØŠ<˜DšLÜÐ4Ó5Ð5ØÒ $Ò"2ÜÐ=Ó>Ð>çØˆØÒØˆØ�ƒ}Ü˜&Ó!ˆô
 ˜Ó%€Hð`ð ‹<ßÜ—}’}¤V§^¡^´V×5GÑ5GÓH�Ø—‘ × 0Ñ 0Ó 2Ô3ØÒ'Ð'Ð'Ø—‘˜TÕ"àÒ"Ü*¨5Ó1�à×&Ñ& rÕ*¨gÔ5Ü.Ø$ØØ ð $*§:¡:Ð.>ÀÓ#Eô‘Dð "×(Ñ(¨Õ,°Ô6Ø#×*Ñ*¨gÔ5¸)Ò:OÜ(ØVóð ô .Ø$ØØ ñð +<ð	ð
 &ðð )>ðð !ñ‘Dô )Ð)QÓRÐRð ×!Ñ! )¨X×-=Ñ-=Ó-?Ô@Ü×/Ò/Ø—[‘[ &§+¡+Ð.ñàñ�ð
 �O‰O˜DÔ!÷ Ø�O‰OœF×.Ñ.´×0BÑ0BÀDÔIð �=�=ˆ=ØŠ{Ü ×7Ò7Ó9�ØÒ&Ø"(§+¡+�Ø�O‰O˜H×,Ñ,Ó.Ô/ØÒ Ø—‘ t�ÓM‘ä% dÀÔQ�äœFŸM™M¨6Ó2�Ø�O‰O˜DÔ!ô "ØØØ!Ø%ØØô
ˆñ 'ØØØ'Ø%Ø'Øô
ˆ
ð	Ø×ÑØØØ×ÑÓô	
ð ×ÑÔ ØÐøô# ô ØÒØ�J‰JŒLØðûô ô Ø×ÑÔ!Ø×%Ñ%×*Ñ*Ô,Øðús-   Ä;O" ÅE.O" Ê7A O" Ë8B6O" Î/!P Ï"!PÐ7P=c               ó(   € V ^8„  d   QhRRRRRRRR/# )r*   r~   rE   rw   rz   r   r0   r#   r2   )r3   s   "r4   r5   r5   •  s0   € ÷ <ñ <Ø
ð<à	ð<ð ð<ð ñ	<r7   c           	     ó‚   € Vf,   VP                  R4      f   VP                  R4      f   RpMRp\        R	RVRRRV /VB # )
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/``.

rh   r|   zws://localhost/zwss://localhost/rw   r}   Tr~   r2   )ÚgetrI   )r~   rw   rz   s   &&,r4   Úunix_connectr®   •  sM   € ð* ‚{à�:‰:�eÓÒ$¨¯©°MÓ)BÒ)JØ#‰Cà$ˆCÜÑ;�sÐ; Ð;¨DÐ;°FÑ;Ð;r7   )Ú	ProxyType)r   Úsocks5hÚsocks5Úsocks4aÚsocks4Fc          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# ©r*   ro   r   r¦   r   r§   r"   rz   r   r0   r,   r2   )r3   s   "r4   r5   r5   Ð  sA   € ÷ Jñ JØðJàðJð ðJð ð	Jð
 
ñJr7   c           	     óÖ  € \        \        V P                  ,          V P                  V P                  V P
                  V P                  \        V P                  ,          4      pVP                  RVP                  4       4        VP                  ! VP                  VP                  3/ VB #   \        \        \        P                  3 d    h \         d   p\        R4      ThRp?ii ; i)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_RDNSrM   rF   rI   ÚOSErrorrQ   r�   r    r   )ro   r¦   r§   rz   Úsocks_proxyÚexcs   &&&,  r4   r”   r”   Ð  s¹   € ô !Ü˜eŸl™lÕ+Ø�J‰JØ�J‰JØ�N‰NØ�N‰NÜ˜UŸ\™\Õ*ó
ˆð 	×Ñ˜) X×%5Ñ%5Ó%7Ô8ð	JØ×&Ò& v§{¡{°F·K±KÑJÀ6ÑJÐJøÜœ¤v§~¡~Ð6ô 	ØÜô 	JÜÐ?Ó@ÀcÐIûð	Jús   Â'B, Â,)C(ÃC(ÃC#Ã#C(c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# rµ   r2   )r3   s   "r4   r5   r5   ¹  sA   € ÷ Tñ TØðTàðTð ðTð ð	Tð
 
ñTr7   c                ó   € \        R 4      h)z6connecting through a SOCKS proxy requires python-socks)ÚImportError)ro   r¦   r§   rz   s   &&&,r4   r”   r”   ¹  s   € ô ÐRÓSÐSr7   c               ó$   € V ^8„  d   QhRRRRRR/# )r*   r+   r,   r§   r"   r0   r   r2   )r3   s   "r4   r5   r5   ê  s!   € ÷ ñ  ð ¸ð Àhñ r7   c                óö  € \        4       p\        P                  ! VP                  VP                  VP
                  R R7      p  V P                  VP                  4       4       V P                  R4      pV'       d   VP                  V4       MVP                  4        \        V4       Kh    \         ds   p\        TP                  \        4      '       g   Q hTP                  p^ÈTP                  u;8:  d   R8  d   M MTu Rp?T P                  R4       # \!        T4      hRp?i\"        P                   d    \%        R4      h\&         d   p\)        R4      ThRp?ii ; i  T P                  R4       i ; i)T)ro   i   i,  Nz(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ÚStopIterationrY   ÚvalueÚstatus_coder   r�   rQ   r    r   )r+   r§   ÚreaderÚparserÚdatar¾   rX   s   &&     r4   Úread_connect_responserÒ   ê  s(  € Ü‹^€FÜ�^Š^Ø×ÑØ×ÑØ×ÑØô	€FðØØ�O‰O˜H×,Ñ,Ó.Ô/Ø—9‘9˜T“?ˆDßØ× Ñ  Õ&à—‘Ô!Ü�ŽLøÜô /Ü˜#Ÿ)™)¤X×.Ò.Ð.Ð.Ø—9‘9ˆØ�(×&Ñ&Ö,¨×,ØŒOð 	�‰˜Õô % XÓ.Ð.ûÜ�>‰>ô GÜÐEÓFÐFÜô Ü!Ø>ó
àð	ûðûð
 	�‰˜ÕúsU   Á8B, Á=/B, Â,E"Â7AD$ÄE"ÄE% ÄD$Ä$E"Ä;E"ÅE"ÅEÅE"Å"E% Å%E8c               ó8   € V ^8„  d   QhRRRRRRRRR	R
RRRRRR/# )r*   ro   r   r¦   r   r§   r"   rD   rE   rh   ry   ri   rz   r   r0   r,   r2   )r3   s   "r4   r5   r5     sX   € ÷ $ñ $Øð$àð$ð ð$ð
 "ð$ð 
&ð$ð  ð$ð ð$ð ñ$r7   c               ó*  € VP                  R VP                  4       4       \        P                  ! V P                  V P
                  33/ VB pV P                  R8X  dl   Vf   \        P                  ! 4       pVf   V P                  pVP                  VP                  4       4       VP                  WuR7      pVP                  R4       \        WV4      pVP                  V4        \        Wr4       V#   \         d    TP                  4        h i ; i)rF   r…   Nr†   )rM   rF   r�   ru   r—   r˜   r“   rœ   r�   r’   rž   r   ÚsendallrÒ   r    r¡   )	ro   r¦   r§   rD   rh   ri   rz   r+   rJ   s	   &&&$$$,  r4   r•   r•     sì   € ð ×Ñ�i ×!1Ñ!1Ó!3Ô4Ü×#Ò# U§Z¡Z°·±Ð$<ÑGÀÑG€Dð ‡|�|�wÔØŠ;Ü×3Ò3Ó5ˆCØÒ"Ø#Ÿj™jˆOØ�‰˜×(Ñ(Ó*Ô+Ø�‰˜tˆÓEˆØ�‰˜Ôô & eÐ5FÓG€GØ‡L�L�ÔðÜ˜dÔ-ð
 €Køô	 ô Ø�
‰
ŒØðús   Ã(C5 Ã5DÚTÚF.)Úboundc                  ój   € ] tR tRtRtRtRR R lltR R ltR	 R
 ltR R lt	R R lt
R R ltRtR# )rŸ   i7  zf
Socket-like object providing TLS-in-TLS.

Only methods that are used by websockets are implemented.

i   Nc               ó(   € V ^8„  d   QhRRRRRRRR/# )	r*   r+   r,   r|   zssl_module.SSLContextri   rE   r0   r1   r2   )r3   s   "r4   r5   ÚSSLSSLSocket.__annotate__A  s2   € ÷ 2ñ 2àð2ð +ð2ð $ð	2ð
 
ñ2r7   c                	ó  € \         P                  ! 4       V n        \         P                  ! 4       V n        Wn        VP                  V P                  V P                  VR 7      V n        V P                  V P                  P                  4       R# )r†   N)	rœ   Ú	MemoryBIOÚincomingÚoutgoingÚ
ssl_socketÚwrap_bioÚ
ssl_objectÚrun_ioÚdo_handshake)r>   r+   r|   ri   s   &&&&r4   r=   ÚSSLSSLSocket.__init__A  si   € ô #×,Ò,Ó.ˆŒÜ"×,Ò,Ó.ˆŒØŒØ%×.Ñ.Ø�M‰MØ�M‰MØ+ð /ó 
ˆŒð
 	�‰�D—O‘O×0Ñ0Ö1r7   c               ó$   € V ^8„  d   QhRRRRRR/# )r*   ÚfunczCallable[..., T]Úargsr   r0   rÖ   r2   )r3   s   "r4   r5   rÛ   Q  s"   € ÷ ñ Ð+ð °Cð ¸Añ r7   c                	óð  €  RpRp V! V!  pV P                  P	                  4       pV'       d   V P
                  P                  V4       V'       df   V P
                  P                  V P                  4      pV'       d   V P                  P                  V4       MV P                  P                  4        K¶  V'       d   KÀ  X#   \         P                   d    R p LÏ\         P                   d    R p Lçi ; i)TF)rœ   ÚSSLWantReadErrorÚSSLWantWriteErrorrß   Úreadrà   rÕ   rÈ   Úrecv_bufsizerÞ   ÚwriteÚ	write_eof)r>   rç   rè   Ú	want_readÚ
want_writeÚresultrÑ   s   &&*    r4   rã   ÚSSLSSLSocket.run_ioQ  sÇ   € ØØˆIØˆJð"Ù˜t™�ð —=‘=×%Ñ%Ó'ˆDßØ—‘×'Ñ'¨Ô-÷ Ø—‘×+Ñ+¨D×,=Ñ,=Ó>�ßØ—M‘M×'Ñ'¨Õ-à—M‘M×+Ñ+Ô-ÙçÙàˆMøô- ×.Ñ.ô !Ø ’	Ü×/Ñ/ô "Ø!’
ð"ús   ‡C ÃC5ÃC5Ã/C5Ã4C5c               ó    € V ^8„  d   QhRRRR/# )r*   ÚbuflenÚintr0   Úbytesr2   )r3   s   "r4   r5   rÛ   o  s   € ÷ ñ ˜3ð  5ñ r7   c                	óˆ   €  V P                  V P                  P                  V4      #   \        P                   d     R # i ; i)r7   )rã   râ   rì   rœ   ÚSSLEOFError)r>   rõ   s   &&r4   rÈ   ÚSSLSSLSocket.recvo  s:   € ð	Ø—;‘;˜tŸ™×3Ñ3°VÓ<Ð<øÜ×%Ñ%ô 	Úð	ús   ‚%( ¨AÁ Ac               ó    € V ^8„  d   QhRRRR/# )r*   rÑ   r   r0   rö   r2   )r3   s   "r4   r5   rÛ   u  s   € ÷ 8ñ 8˜ð 8 sñ 8r7   c                	óN   € V P                  V P                  P                  V4      # ©N)rã   râ   rî   )r>   rÑ   s   &&r4   ÚsendÚSSLSSLSocket.sendu  s   € Ø�{‰{˜4Ÿ?™?×0Ñ0°$Ó7Ð7r7   c               ó    € V ^8„  d   QhRRRR/# )r*   rÑ   r   r0   r1   r2   )r3   s   "r4   r5   rÛ   x  s   € ÷ 6ñ 6˜Ið 6¨$ñ 6r7   c           
     	ó,  € ^ p\        V4      ;_uu_ 4       q3P                  R4      ;_uu_ 4       p\        V4      pW%8  d   W P                  WBR 4      ,          pK!   RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)r   ÚBN)Ú
memoryviewr	   Úlenrþ   )r>   rÑ   ÚcountÚviewÚ	byte_viewÚamounts   &&    r4   rÕ   ÚSSLSSLSocket.sendallx  sc   € àˆÜ˜×Ô §y¡y°§~¤~¸Ü˜“^ˆFØ”.ØŸ™ 9¨VÐ#4Ó5Õ5’ð !÷ (6×Ñ§~§~ú××Ðús"   –B¯-A/	ÁBÁ/A?Á:BÂB	c               ó    € V ^8„  d   QhRRRR/# )r*   Únamerx   r0   r   r2   )r3   s   "r4   r5   rÛ   ƒ  s   € ÷ .ñ . ð .¨ñ .r7   c                	ó.   € \        V P                  V4      # rý   )Úgetattrrà   )r>   r  s   &&r4   Ú__getattr__ÚSSLSSLSocket.__getattr__ƒ  s   € Ü�t—‘¨Ó-Ð-r7   )rÞ   rß   râ   rà   rý   )ra   rb   rc   rd   re   rí   r=   rã   rÈ   rþ   rÕ   r  rf   r2   r7   r4   rŸ   rŸ   7  s1   † ñð €L÷2õ õ<õ8õ6÷.ñ .r7   rŸ   )rI   r®   r#   i   )NN)IÚ
__future__r   r�   r�   rh   rœ   r:   rˆ   Úcollections.abcr   Útypingr   r   r   r   r	   Úclientr
   Údatastructuresr   Ú
exceptionsr   r   r   Úextensions.baser   Úextensions.permessage_deflater   rK   r   Úhttp11r   r   r-   r   r   ro   r   r   r   r   Ústreamsr   r   r   r   r   rw   r   r    rª   r!   Úutilsr"   Ú__all__r#   rI   r®   Úpython_socksr¯   Úpython_socks.syncr·   ÚSOCKS5ÚSOCKS4r¸   r»   r”   rÁ   rÒ   r•   rÖ   r×   rŸ   r2   r7   r4   Ú<module>r      s(  ðÝ "ã Û Û Û Û Ý $ß 8Õ 8å #Ý (ß LÑ LÝ 4Ý LÝ +ß )ß (ß JÓ JÝ "ß ?Ó ?ß )Ý "Ý ò :€ôb%�zô b%ðJOð "&ð	Oð
 )-ðOð #'ðOð !ðOð ;?ðOð 26ðOð (ðOð .2ðOð %/ðOð )-ðOð  /3ð!Oð" )-ð#Oð& "$ð'Oð( #%ð)Oð* "$ð+Oð, #%ð-Oð0 <Að1Oð2 =?ð3Oð6 !%ð7Oð: 8<÷;O÷d<ð<4JÝ&Ý5ð 	�9×#Ñ#Ø�)×"Ñ"Ø�9×#Ñ#Ø�)×"Ñ"ð	Ðð 	�4Ø�%Ø�4Ø�%ð	ÐõJõ4ðD$ð
 %)ð$ð )-ð$ð #'÷$ñN ˆCƒL€ÙˆC�x  Q Õ'Ô(€÷M.ó M.øðA ô T÷TðTús   Ã!E* Å*E:Å9E: