§
    ‹Ÿjcl  ã                   ó  — d dl mZ d dlmZmZ d dlmZ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 d dlmZmZ d dlmZmZmZmZ d d	lmZ d d
lmZ d dlZd dlZd dl Z d dl!Z!d dl"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)Z*d dl+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 d dl2m3Z3 d dl+Z+e+j4        r
d dl+m5Z5m6Z6m7Z7  G d„ de¦  «        Z8 G d„ de¦  «        Z9 G d„ de¦  «        Z: G d„ dej;        ¦  «        Z<e=dk    r ej>        e:¦  «          e	¦   «          dS dS )é    )Ú_unicode)ÚgenÚversion)ÚHTTPResponseÚ	HTTPErrorÚAsyncHTTPClientÚmainÚ_RequestProxyÚHTTPRequest)Úhttputil)ÚHTTP1ConnectionÚHTTP1ConnectionParameters)ÚIOLoop)ÚStreamClosedErrorÚIOStream)ÚResolverÚOverrideResolverÚ_client_ssl_defaultsÚis_valid_ip)Úgen_log)Ú	TCPClientN)ÚBytesIO)ÚDictÚAnyÚCallableÚOptionalÚTypeÚUnion)ÚTracebackType)ÚDequeÚTupleÚListc                   ó8   ‡ — e Zd ZdZdeddfˆ fd„Zdefd„Zˆ xZS )ÚHTTPTimeoutErrorzÃError raised by SimpleAsyncHTTPClient on timeout.

    For historical reasons, this is a subclass of `.HTTPClientError`
    which simulates a response code of 599.

    .. versionadded:: 5.1
    ÚmessageÚreturnNc                 óN   •— t          ¦   «                              d|¬¦  «         d S ©NéW  ©r%   ©ÚsuperÚ__init__©Úselfr%   Ú	__class__s     €úf/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/tornado/simple_httpclient.pyr-   zHTTPTimeoutError.__init__5   ó&   ø€ Ý‰Œ×Ò˜ gÐÑ.Ô.Ð.Ð.Ð.ó    c                 ó   — | j         pdS )NÚTimeoutr*   ©r/   s    r1   Ú__str__zHTTPTimeoutError.__str__8   s   € ØŒ|Ð(˜yÐ(r3   ©Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústrr-   r7   Ú__classcell__©r0   s   @r1   r$   r$   ,   sp   ø€ € € € € ðð ð/ ð /¨ð /ð /ð /ð /ð /ð /ð)˜ð )ð )ð )ð )ð )ð )ð )ð )r3   r$   c                   ó8   ‡ — e Zd ZdZdeddfˆ fd„Zdefd„Zˆ xZS )ÚHTTPStreamClosedErroraZ  Error raised by SimpleAsyncHTTPClient when the underlying stream is closed.

    When a more specific exception is available (such as `ConnectionResetError`),
    it may be raised instead of this one.

    For historical reasons, this is a subclass of `.HTTPClientError`
    which simulates a response code of 599.

    .. versionadded:: 5.1
    r%   r&   Nc                 óN   •— t          ¦   «                              d|¬¦  «         d S r(   r+   r.   s     €r1   r-   zHTTPStreamClosedError.__init__H   r2   r3   c                 ó   — | j         pdS )NúStream closedr*   r6   s    r1   r7   zHTTPStreamClosedError.__str__K   s   € ØŒ|Ð.˜Ð.r3   r8   r?   s   @r1   rA   rA   <   sp   ø€ € € € € ð	ð 	ð/ ð /¨ð /ð /ð /ð /ð /ð /ð/˜ð /ð /ð /ð /ð /ð /ð /ð /r3   rA   c                   ór  ‡ — e Zd ZdZ	 	 	 	 	 	 	 ddedeeeef                  dedee         d	eeee	f                  d
ee         dee         ddfˆ fd„Z
dˆ fd„Zdedeegdf         ddfd„Zdd„Zdefd„Zdedeg df         deegdf         ddfd„Zdeddfd„Zdeddfd„Zddedee         ddfd„Zˆ xZS )ÚSimpleAsyncHTTPClienta«  Non-blocking HTTP client with no external dependencies.

    This class implements an HTTP 1.1 client on top of Tornado's IOStreams.
    Some features found in the curl-based AsyncHTTPClient are not yet
    supported.  In particular, proxies are not supported, connections
    are not reused, and callers cannot select the network interface to be
    used.

    This implementation supports the following arguments, which can be passed
    to ``configure()`` to control the global singleton, or to the constructor
    when ``force_instance=True``.

    ``max_clients`` is the number of concurrent requests that can be
    in progress; when this limit is reached additional requests will be
    queued. Note that time spent waiting in this queue still counts
    against the ``request_timeout``.

    ``defaults`` is a dict of parameters that will be used as defaults on all
    `.HTTPRequest` objects submitted to this client.

    ``hostname_mapping`` is a dictionary mapping hostnames to IP addresses.
    It can be used to make local DNS changes when modifying system-wide
    settings like ``/etc/hosts`` is not possible or desirable (e.g. in
    unittests). ``resolver`` is similar, but using the `.Resolver` interface
    instead of a simple mapping.

    ``max_buffer_size`` (default 100MB) is the number of bytes
    that can be read into memory at once. ``max_body_size``
    (defaults to ``max_buffer_size``) is the largest response body
    that the client will accept.  Without a
    ``streaming_callback``, the smaller of these two limits
    applies; with a ``streaming_callback`` only ``max_body_size``
    does.

    .. versionchanged:: 4.2
        Added the ``max_body_size`` argument.
    é
   Né  @Úmax_clientsÚhostname_mappingÚmax_buffer_sizeÚresolverÚdefaultsÚmax_header_sizeÚmax_body_sizer&   c                 ó”  •— t          ¦   «                              |¬¦  «         || _        t          j        ¦   «         | _        i | _        i | _        || _        || _	        || _
        |r|| _        d| _        nt          ¦   «         | _        d| _        |�t          | j        |¬¦  «        | _        t          | j        ¬¦  «        | _        d S )N)rM   FT)rL   Úmapping)rL   )r,   Ú
initializerI   ÚcollectionsÚdequeÚqueueÚactiveÚwaitingrK   rN   rO   rL   Úown_resolverr   r   r   Ú
tcp_client)	r/   rI   rJ   rK   rL   rM   rN   rO   r0   s	           €r1   rR   z SimpleAsyncHTTPClient.initializev   sÚ   ø€ õ 	‰Œ×Ò HÐÑ-Ô-Ð-Ø&ˆÔåÔÑÔð 	Œ
ð ð 	Œð ð 	Œð  /ˆÔØ.ˆÔØ*ˆÔð ð 	%Ø$ˆDŒMØ %ˆDÔÐå$™JœJˆDŒMØ $ˆDÔØÐ'Ý,ØœÐ0@ðñ ô ˆDŒMõ $¨T¬]Ð;Ñ;Ô;ˆŒˆˆr3   c                 óº   •— t          ¦   «                              ¦   «          | j        r| j                             ¦   «          | j                             ¦   «          d S ©N)r,   ÚcloserX   rL   rY   )r/   r0   s    €r1   r\   zSimpleAsyncHTTPClient.closeœ   sM   ø€ Ý‰Œ�Š‰ŒˆØÔð 	"ØŒM×ÒÑ!Ô!Ð!ØŒ×ÒÑÔÐÐÐr3   ÚrequestÚcallbackc                 ó|  — t          ¦   «         }| j                             |||f¦  «         |j        €J ‚|j        €J ‚d }t          | j        ¦  «        | j        k    rxt          |j        |j        ¦  «        p|j        p|j        }|rN| j	         
                    | j	                             ¦   «         |z   t          j        | j        |d¦  «        ¦  «        }|||f| j        |<   |                      ¦   «          | j        r?t#          j        dt          | j        ¦  «        t          | j        ¦  «        fz  ¦  «         d S d S )Nzin request queuezImax_clients limit reached, request queued. %d active, %d queued requests.)ÚobjectrU   ÚappendÚconnect_timeoutÚrequest_timeoutÚlenrV   rI   ÚminÚio_loopÚadd_timeoutÚtimeÚ	functoolsÚpartialÚ_on_timeoutrW   Ú_process_queuer   Údebug)r/   r]   r^   ÚkeyÚtimeout_handleÚtimeouts         r1   Ú
fetch_implz SimpleAsyncHTTPClient.fetch_impl¢   s^  € õ ‰hŒhˆØŒ
×Ò˜3 ¨Ð2Ñ3Ô3Ð3ØÔ&Ð2Ð2Ð2ØÔ&Ð2Ð2Ð2ØˆÝˆtŒ{ÑÔ˜tÔ/Ò/Ð/å�GÔ+¨WÔ-DÑEÔEð +ØÔ*ð+àÔ*ð ð
 ð Ø!%¤×!9Ò!9Ø”L×%Ò%Ñ'Ô'¨'Ñ1ÝÔ% dÔ&6¸Ð=OÑPÔPñ"ô "�ð % h°Ð?ˆŒ�SÑØ×ÒÑÔÐØŒ:ð 	ÝŒMð1Ý47¸¼Ñ4DÔ4DÅcÈ$Ì*ÁoÄoÐ3VñWñô ð ð ð ð	ð 	r3   c                 ó”  — | j         r¼t          | j        ¦  «        | j        k     r¡| j                              ¦   «         \  }}}|| j        vrŒK|                      |¦  «         ||f| j        |<   t          j        | j	        |¦  «        }|  
                    |||¦  «         | j         r#t          | j        ¦  «        | j        k     °�d S d S d S d S r[   )rU   rd   rV   rI   ÚpopleftrW   Ú_remove_timeoutri   rj   Ú_release_fetchÚ_handle_request)r/   rn   r]   r^   Úrelease_callbacks        r1   rl   z$SimpleAsyncHTTPClient._process_queue½   sê   € ØŒjð 	F�S ¤Ñ-Ô-°Ô0@Ò@Ð@Ø%)¤Z×%7Ò%7Ñ%9Ô%9Ñ"ˆC�˜(Ø˜$œ,Ð&Ð&ØØ× Ò  Ñ%Ô%Ð%Ø '¨Ð2ˆDŒK˜ÑÝ(Ô0°Ô1DÀcÑJÔJÐØ× Ò  Ð*:¸HÑEÔEÐEð Œjð 	F�S ¤Ñ-Ô-°Ô0@Ò@Ð@Ð@Ð@ð 	Fð 	FÐ@Ð@ð 	Fð 	Fr3   c                 ó   — t           S r[   )Ú_HTTPConnectionr6   s    r1   Ú_connection_classz'SimpleAsyncHTTPClient._connection_classÇ   s   € ÝÐr3   rw   Úfinal_callbackc           
      óv   —  |                       ¦   «         | |||| j        | j        | j        | j        ¦  «         d S r[   )rz   rK   rY   rN   rO   )r/   r]   rw   r{   s       r1   rv   z%SimpleAsyncHTTPClient._handle_requestÊ   sQ   € ð 	!ˆ×ÒÑ Ô ØØØØØÔ ØŒOØÔ ØÔñ		
ô 		
ð 		
ð 		
ð 		
r3   rn   c                 ó>   — | j         |= |                      ¦   «          d S r[   )rV   rl   )r/   rn   s     r1   ru   z$SimpleAsyncHTTPClient._release_fetchÛ   s$   € ØŒK˜ÐØ×ÒÑÔÐÐÐr3   c                 ó†   — || j         v r7| j         |         \  }}}|�| j                             |¦  «         | j         |= d S d S r[   )rW   rf   Úremove_timeout)r/   rn   r]   r^   ro   s        r1   rt   z%SimpleAsyncHTTPClient._remove_timeoutß   sV   € Ø�$”,ÐÐØ04´¸SÔ0AÑ-ˆG�X˜~ØÐ)Ø”×+Ò+¨NÑ;Ô;Ð;Ø”˜SÐ!Ð!Ð!ð	 Ðr3   Úinfoc                 ó8  — | j         |         \  }}}| j                             |||f¦  «         |rd|› �nd}t          |dt	          |¦  «        | j                             ¦   «         |j        z
  ¬¦  «        }| j                             ||¦  «         | j         |= dS )zâTimeout callback of request.

        Construct a timeout HTTPResponse when a timeout occurs.

        :arg object key: A simple object to mark the request.
        :info string key: More detailed timeout information.
        úTimeout r5   r)   )ÚerrorÚrequest_timeN)	rW   rU   Úremover   r$   rf   rh   Ú
start_timeÚadd_callback)r/   rn   r€   r]   r^   ro   Úerror_messageÚtimeout_responses           r1   rk   z!SimpleAsyncHTTPClient._on_timeoutæ   s¶   € ð -1¬L¸Ô,=Ñ)ˆ�˜>ØŒ
×Ò˜3 ¨Ð2Ñ3Ô3Ð3à-1Ð@Ð) 4Ð)Ð)Ð)°yˆÝ'ØØÝ" =Ñ1Ô1Øœ×*Ò*Ñ,Ô,¨wÔ/AÑAð	
ñ 
ô 
Ðð 	Œ×!Ò! (Ð,<Ñ=Ô=Ð=ØŒL˜ÐÐÐr3   )rG   NrH   NNNN©r&   Nr[   )r9   r:   r;   r<   Úintr   r   r=   r   r   rR   r\   r   r   r   rq   rl   Útyperz   rv   r`   ru   rt   rk   r>   r?   s   @r1   rF   rF   O   s(  ø€ € € € € ð$ð $ðP Ø59Ø(Ø'+Ø-1Ø)-Ø'+ð$<ð $<àð$<ð # 4¨¨S¨¤>Ô2ð$<ð ð	$<ð
 ˜8Ô$ð$<ð ˜4  S œ>Ô*ð$<ð " #œð$<ð   ”}ð$<ð 
ð$<ð $<ð $<ð $<ð $<ð $<ðL ð  ð  ð  ð  ð  ðØ"ðØ.6¸°~ÀtÐ7KÔ.Lðà	ðð ð ð ð6Fð Fð Fð Fð 4ð ð ð ð ð
àð
ð # 2 t 8Ô,ð
ð ! , °Ð!5Ô6ð	
ð
 
ð
ð 
ð 
ð 
ð" &ð ¨Tð ð ð ð ð" 6ð "¨dð "ð "ð "ð "ðð ˜vð ¨X°c¬]ð Àdð ð ð ð ð ð ð ð r3   rF   c                   ó¸  — e Zd Zh d£Zdee         dedeg df         deegdf         de	de
d	e	d
e	ddfd„Zd(d„Zdededeeef         ej        f         fd„Zd)dee         ddfd„Zd(d„Zdedefd„Zdeddfd„Zd(d„Zdeddfd„Zdddee         dee         defd„Zd(d„Z d ee!j"        e!j#        f         d!e!j$        ddfd"„Z%defd#„Z&d(d$„Z'd(d%„Z(d&e)ddfd'„Z*dS )*ry   >   ÚGETÚPUTÚHEADÚPOSTÚPATCHÚDELETEÚOPTIONSÚclientr]   rw   Nr{   rK   rY   rN   rO   r&   c	                 óþ  — t          j        ¦   «         | _        | j                             ¦   «         | _        t          j        ¦   «         | _        || _        || _        || _        || _	        || _
        || _        || _        || _        d | _        d | _        g | _        d | _        d | _        d | _        t          j        ¦   «                              t+          j        |                      ¦   «         ¦  «        d„ ¦  «         d S )Nc                 ó*   — |                       ¦   «         S r[   ©Úresult)Úfs    r1   ú<lambda>z*_HTTPConnection.__init__.<locals>.<lambda>  s   € °q·x²x±z´z€ r3   )r   Úcurrentrf   rh   r†   Ústart_wall_timer•   r]   rw   r{   rK   rY   rN   rO   ÚcodeÚheadersÚchunksÚ_decompressorÚ_timeoutÚ	_sockaddrÚ
add_futurer   Úconvert_yieldedÚrun)	r/   r•   r]   rw   r{   rK   rY   rN   rO   s	            r1   r-   z_HTTPConnection.__init__ÿ   sä   € õ ”~Ñ'Ô'ˆŒØœ,×+Ò+Ñ-Ô-ˆŒÝ#œy™{œ{ˆÔØˆŒØˆŒØ 0ˆÔØ,ˆÔØ.ˆÔØ$ˆŒØ.ˆÔØ*ˆÔØˆŒ	ØˆŒØˆŒØ!ˆÔàˆŒØˆŒÝŒÑÔ×#Ò#ÝÔ §¢¡
¤
Ñ+Ô+Ð-AÐ-Añ	
ô 	
ð 	
ð 	
ð 	
r3   c           	   ƒ   óB  K  — 	 t           j                             t          | j        j        ¦  «        ¦  «        | _        | j        j        dvrt          d| j        j        z  ¦  «        ‚| j        j	        }d|v r| 
                    d¦  «        \  }}}t          j        |¦  «        \  }}|€| j        j        dk    rdnd}t          j        d|¦  «        r
|dd	…         }|| _        | j        j        d
u rt"          j        }nt"          j        }|                      | j        j        ¦  «        }d }| j        j        rBt-          | j        j        ¦  «        r| j        j        }nt          d| j        j        ›�¦  «        ‚| j        j        r1| j        j        r%t3          | j        j        | j        j        ¦  «        }	n4| j        j        r| j        j        }	n| j        j        r| j        j        }	nd}	|	r@| j                             | j        |	z   t;          j        | j        d¦  «        ¦  «        | _         | j!         "                    ||||| j#        |¬¦  «        ƒ d {V —†}
| j$        €|
 %                    ¦   «          d S |
| _&        | j&         '                    | j(        ¦  «         |  )                    ¦   «          | j$        €d S | j        j        rJ| j                             | j        | j        j        z   t;          j        | j        d¦  «        ¦  «        | _         | j        j*        | j+        vr(| j        j,        st[          d| j        j*        z  ¦  «        ‚dD ]*}t]          | j        |d ¦  «        rt_          d|z  ¦  «        ‚Œ+d| j        j0        vrd| j        j0        d<   d| j        j0        vrZd| j        j	        v r3| j        j	         
                    d¦  «        d	         | j        j0        d<   n| j        j	        | j        j0        d<   d\  }}| j        j1        �| j        j1        | j        j2        }}n&| j        j3        �| j        j3        }| j        j4        pd}|�p|€J ‚| j        j5        dvrt          d| j        j5        ¦  «        ‚dt          tm          j7        t          j8        ||¦  «        ¦  «        ¦  «        z   | j        j0        d<   | j        j9        r| j        j9        | j        j0        d<   n6| j        j0         :                    d¦  «        €dtv          › �| j        j0        d<   | j        j,        sV| j        j*        dv }| j        j<        d up| j        j=        d u}|r|r|r&|s$t          d|rd nd›d!| j        j*        ›d"�¦  «        ‚| j        j>        rd#| j        j0        d$<   | j        j<        �3t          t�          | j        j<        ¦  «        ¦  «        | j        j0        d%<   | j        j*        d&k    rd'| j        j0        vrd(| j        j0        d'<   | j        jA        rd)| j        j0        d*<   | j        jB        pd+| j        jC        rd,| j        jC        z   ndz   }|  D                    |
¦  «        | _E        t          jF        | j        j*        |d¦  «        }| jE         G                    || j        j0        ¦  «         | j        j>        r"| jE         H                    | ¦  «        ƒ d {V —† d S |  I                    d-¦  «        ƒ d {V —† d S # t”          $ r   | jK        t™          jM        ¦   «         Ž s‚ Y d S w xY w).N)ÚhttpÚhttpszUnsupported url scheme: %sú@r©   i»  éP   z^\[.*\]$é   éÿÿÿÿFz=Unrecognized IPv4 or IPv6 address for network_interface, got r   zwhile connecting)ÚafÚssl_optionsrK   Ú	source_ipzduring requestzunknown method %s)Ú
proxy_hostÚ
proxy_portÚproxy_usernameÚproxy_passwordÚproxy_auth_modez%s not supportedÚ
Connectionr\   ÚHost)NNÚ )NÚbasiczunsupported auth_mode %szBasic ÚAuthorizationz
User-AgentzTornado/)r‘   r’   r�   z
Body must znot zbe None for method z+ (unless allow_nonstandard_methods is true)z100-continueÚExpectúContent-Lengthr‘   úContent-Typez!application/x-www-form-urlencodedÚgzipzAccept-Encodingú/ú?T)NÚurllibÚparseÚurlsplitr   r]   ÚurlÚparsedÚschemeÚ
ValueErrorÚnetlocÚ
rpartitionr   Úsplit_host_and_portÚreÚmatchÚparsed_hostnameÚ
allow_ipv6ÚsocketÚAF_INETÚ	AF_UNSPECÚ_get_ssl_optionsÚnetwork_interfacer   rb   rc   re   rf   rg   r†   ri   rj   rk   r¢   rY   ÚconnectrK   r{   r\   ÚstreamÚset_close_callbackÚon_connection_closert   ÚmethodÚ_SUPPORTED_METHODSÚallow_nonstandard_methodsÚKeyErrorÚgetattrÚNotImplementedErrorrŸ   ÚusernameÚpasswordÚauth_usernameÚauth_passwordÚ	auth_modeÚbase64Ú	b64encodeÚencode_username_passwordÚ
user_agentÚgetr   ÚbodyÚbody_producerÚexpect_100_continuer=   rd   Údecompress_responseÚpathÚqueryÚ_create_connectionÚ
connectionÚRequestStartLineÚwrite_headersÚread_responseÚ_write_bodyÚ	ExceptionÚ_handle_exceptionÚsysÚexc_info)r/   rÈ   ÚuserpassÚ_ÚhostÚportr®   r¯   r°   rp   rÕ   rn   rÞ   rß   Úbody_expectedÚbody_presentÚreq_pathÚ
start_lines                     r1   r¦   z_HTTPConnection.run   s³  è è € ð^	Ý œ,×/Ò/µ¸¼Ô9IÑ0JÔ0JÑKÔKˆDŒKØŒ{Ô!Ð):Ð:Ð:Ý Ð!=ÀÄÔ@PÑ!PÑQÔQÐQð ”[Ô'ˆFØ�fˆ}ˆ}Ø&,×&7Ò&7¸Ñ&<Ô&<Ñ#�˜!˜VÝ!Ô5°fÑ=Ô=‰JˆD�$Øˆ|Ø"œkÔ0°GÒ;Ð;�s�sÀ�ÝŒx˜ TÑ*Ô*ð "à˜A˜b˜D”z�Ø#'ˆDÔ àŒ|Ô&¨%Ð/Ð/Ý”^��åÔ%�à×/Ò/°´Ô0BÑCÔCˆKàˆIØŒ|Ô-ð Ý˜tœ|Ô=Ñ>Ô>ð Ø $¤Ô >�I�Iå$˜*àœ<Ô9Ð9ð<ñô ð ð
 Œ|Ô+ð 	°´Ô0Lð 	ÝØ”LÔ0°$´,Ô2Nñô ��ð ”Ô-ð Øœ,Ô6��Ø”Ô-ð Øœ,Ô6��à�Øð Ø $¤× 8Ò 8Ø”O gÑ-ÝÔ% dÔ&6Ð8JÑKÔKñ!ô !�”ð  œ?×2Ò2ØØØØ'Ø $Ô 4Ø#ð 3ñ ô ð ð ð ð ð ð ˆFð Ô"Ð*à—’‘”�Ø�Ø ˆDŒKØŒK×*Ò*¨4Ô+CÑDÔDÐDØ× Ò Ñ"Ô"Ð"ØÔ"Ð*Ø�ØŒ|Ô+ð Ø $¤× 8Ò 8Ø”O d¤lÔ&BÑBÝÔ% dÔ&6Ð8HÑIÔIñ!ô !�”ð
 ”Ô#¨4Ô+BÐBÐBØœÔ>ð Cõ Ð2°T´\Ô5HÑHÑIÔIÐIðð Hð H�õ ˜4œ<¨¨dÑ3Ô3ð HÝ-Ð.@À3Ñ.FÑGÔGÐGðHà 4¤<Ô#7Ð7Ð7Ø5<�”Ô$ \Ñ2Ø˜Tœ\Ô1Ð1Ð1Ø˜$œ+Ô,Ð,Ð,Ø37´;Ô3E×3PÒ3PÐQTÑ3UÔ3UØô4�D”LÔ(¨Ñ0Ð0ð 48´;Ô3E�D”LÔ(¨Ñ0Ø!+ÑˆH�hØŒ{Ô#Ð/Ø%)¤[Ô%9¸4¼;Ô;O˜(��Ø”Ô+Ð7Øœ<Ô5�Øœ<Ô5Ð;¸�ØÐ#ØÐ+Ð+Ð+Ø”<Ô)°Ð@Ð@Ý$Ð%?ÀÄÔAWÑXÔXÐXØ8@Å8ÝÔ$Ý Ô9¸(ÀHÑMÔMñô ñDô Dñ 9�”Ô$ _Ñ5ð
 Œ|Ô&ð JØ59´\Ô5L�”Ô$ \Ñ2Ð2Ø”Ô%×)Ò)¨,Ñ7Ô7Ð?Ø5IÅÐ5IÐ5I�”Ô$ \Ñ2Ø”<Ô9ð ð !%¤Ô 3Ð7OÐ O�à”LÔ%¨TÐ1ð >Ø”|Ô1¸Ð=ð ð "ð ¨,ð Ø ðØ)6ðõ %˜*ð &3Ð:˜6˜6¸Ð:Ð:¸D¼LÔ<OÐ<OÐ<OðQñô ð ð
 Œ|Ô/ð @Ø1?�”Ô$ XÑ.ØŒ|Ô Ð,õ :=½SÀÄÔARÑ=SÔ=SÑ9TÔ9T�”Ô$Ð%5Ñ6à”Ô# vÒ-Ð-Ø"¨$¬,Ô*>Ð>Ð>ð 8ð ”Ô$ ^Ñ4ð Œ|Ô/ð AØ:@�”Ô$Ð%6Ñ7ØœÔ(Ð/¨CØ-1¬[Ô->ÐF��t”{Ô(Ñ(Ð(ÀBñˆHð #×5Ò5°fÑ=Ô=ˆDŒOÝ!Ô2°4´<Ô3FÈÐRTÑUÔUˆJØŒO×)Ò)¨*°d´lÔ6JÑKÔKÐKØŒ|Ô/ð -Ø”o×3Ò3°DÑ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9à×&Ò& tÑ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,øÝð 	ð 	ð 	Ø)�4Ô)­3¬<©>¬>Ð:ð Øðð ð ð	øøøs&   „I0[4 É6A[4 Ê9P[4 Û[4 Û4&\Ü\rÆ   c                 ó&  — |dk    �r	| j         j        �| j         j        S | j         j        r+| j         j        €| j         j        €| j         j        €t          S t          j        t          j	        j
        | j         j        ¬¦  «        }| j         j        sd|_        t          j        |_        | j         j        �*|                     | j         j        | j         j        ¦  «         t          t          d¦  «        r|xj        t          j        z  c_        |S d S )Nr©   )ÚcafileFÚOP_NO_COMPRESSION)r]   r¯   Úvalidate_certÚca_certsÚclient_certÚ
client_keyr   ÚsslÚcreate_default_contextÚPurposeÚSERVER_AUTHÚcheck_hostnameÚ	CERT_NONEÚverify_modeÚload_cert_chainÚhasattrÚoptionsr  )r/   rÆ   Ússl_ctxs      r1   rÒ   z _HTTPConnection._get_ssl_optionsÁ  s  € ð �WÒÑØŒ|Ô'Ð3Ø”|Ô/Ð/ð ”Ô*ð,à”LÔ)Ð1Ø”LÔ,Ð4Ø”LÔ+Ð3å+Ð+ÝÔ0Ý”Ô'°´Ô0Eðñ ô ˆGð ”<Ô-ð 4Ø).�Ô&Ý&)¤m�Ô#ØŒ|Ô'Ð3Ø×'Ò'Ø”LÔ,¨d¬lÔ.Eñô ð õ •sÐ/Ñ0Ô0ð 9à�”¥3Ô#8Ñ8�”ØˆNØˆtr3   r€   c                 óŠ   — d| _         |rd|› �nd}| j        �+|                      t          t          |¦  «        d¦  «         dS dS )z¯Timeout callback of _HTTPConnection instance.

        Raise a `HTTPTimeoutError` when a timeout occurs.

        :info string key: More detailed timeout information.
        Nr‚   r5   )r¢   r{   rõ   r$   )r/   r€   rˆ   s      r1   rk   z_HTTPConnection._on_timeoutà  sf   € ð ˆŒØ-1Ð@Ð) 4Ð)Ð)Ð)°yˆØÔÐ*Ø×"Ò"Ý Õ"2°=Ñ"AÔ"AÀ4ñô ð ð ð ð +Ð*r3   c                 ód   — | j         �(| j                             | j         ¦  «         d | _         d S d S r[   )r¢   rf   r   r6   s    r1   rt   z_HTTPConnection._remove_timeoutî  s5   € ØŒ=Ð$ØŒL×'Ò'¨¬Ñ6Ô6Ð6Ø ˆDŒMˆMˆMð %Ð$r3   rÕ   c                 óÂ   — |                      d¦  «         t          |dt          d| j        | j        t          | j        j        ¦  «        ¬¦  «        | j        ¦  «        }|S )NT)Úno_keep_aliverN   rO   Ú
decompress)	Úset_nodelayr   r   rN   rO   Úboolr]   rë   r£   )r/   rÕ   rï   s      r1   rî   z"_HTTPConnection._create_connectionó  sk   € Ø×Ò˜4Ñ Ô Ð Ý$ØØÝ%Ø"Ø $Ô 4Ø"Ô0Ý ¤Ô @ÑAÔAð	ñ ô ð ŒNñ

ô 

ˆ
ð Ðr3   Ú
start_readc              ƒ   ó¶  K  — | j         j        �%| j                             | j         j        ¦  «         n:| j         j        �.| j                              | j        j        ¦  «        }|�|ƒ d {V —† | j                             ¦   «          |rP	 | j                             | ¦  «        ƒ d {V —† d S # t          $ r   | j        t          j
        ¦   «         Ž s‚ Y d S w xY wd S r[   )r]   rè   rï   Úwriteré   Úfinishrò   r   rõ   rö   r÷   )r/   r  Úfuts      r1   ró   z_HTTPConnection._write_body  s  è è € ØŒ<ÔÐ(ØŒO×!Ò! $¤,Ô"3Ñ4Ô4Ð4Ð4ØŒ\Ô'Ð3Ø”,×,Ò,¨T¬_Ô-BÑCÔCˆCØˆØ�	�	�	�	�	�	�	ØŒ×ÒÑ Ô Ð Øð 	ðØ”o×3Ò3°DÑ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9øÝ$ð ð ð Ø-�tÔ-­s¬|©~¬~Ð>ð Øðð ð ðøøøð	ð 	s   Â
 B, Â,&CÃCc                 óH   — | j         �| j         }d | _          |¦   «          d S d S r[   )rw   )r/   rw   s     r1   Ú_releasez_HTTPConnection._release  s9   € ØÔ Ð,Ø#Ô4ÐØ$(ˆDÔ!ØÐÑÔÐÐÐð -Ð,r3   Úresponsec                 ó’   — |                       ¦   «          | j        �+| j        }d | _        | j                             ||¦  «         d S d S r[   )r  r{   rf   r‡   )r/   r   r{   s      r1   Ú_run_callbackz_HTTPConnection._run_callback  sN   € Ø�Š‰ŒˆØÔÐ*Ø!Ô0ˆNØ"&ˆDÔØŒL×%Ò% n°hÑ?Ô?Ð?Ð?Ð?ð +Ð*r3   ÚtypzOptional[Type[BaseException]]ÚvalueÚtbc           	      ó¾  — | j         �Â|                      ¦   «          t          |t          ¦  «        r|j        €t          d¦  «        }n|j        }|                      t          | j        d|| j	         
                    ¦   «         | j        z
  | j        ¬¦  «        ¦  «         t          | d¦  «        r| j                             ¦   «          dS t          |t          ¦  «        S )NrD   r)   )rƒ   r„   r†   rÕ   T)r{   rt   Ú
isinstancer   Ú
real_errorrA   r"  r   r]   rf   rh   r†   r�   r  rÕ   r\   )r/   r#  r$  r%  s       r1   rõ   z!_HTTPConnection._handle_exception  sç   € ð ÔÐ*Ø× Ò Ñ"Ô"Ð"Ý˜%Õ!2Ñ3Ô3ð -ØÔ#Ð+Ý1°/ÑBÔB�E�Eà!Ô,�EØ×ÒÝØ”LØØØ!%¤×!2Ò!2Ñ!4Ô!4°t´Ñ!FØ#Ô3ðñ ô ñô ð õ �t˜XÑ&Ô&ð $ð ”×!Ò!Ñ#Ô#Ð#Ø�4õ ˜eÕ%6Ñ7Ô7Ð7r3   c                 óÀ   — | j         �Vd}| j        j        r| j        j        ‚	 t          |¦  «        ‚# t          $ r  | j        t          j        ¦   «         Ž  Y d S w xY wd S )NzConnection closed)r{   rÕ   rƒ   rA   rõ   rö   r÷   )r/   r%   s     r1   r×   z#_HTTPConnection.on_connection_closeB  s}   € ØÔÐ*Ø)ˆGØŒ{Ô ð (Ø”kÔ'Ð'ð8Ý+¨GÑ4Ô4Ð4øÝ(ð 8ð 8ð 8Ø&�Ô&­¬©¬Ð7Ð7Ð7Ð7Ð7ð8øøøð +Ð*s   £2 ²%AÁAÚ
first_linerŸ   c              ƒ   ó  K  — t          |t          j        ¦  «        sJ ‚| j        j        r(|j        dk    r|                      d¦  «        ƒ d {V —† d S |j        | _        |j        | _        || _        |  	                    ¦   «         rd S | j        j
        �x| j         
                    d|z  ¦  «         | j                             ¦   «         D ]%\  }}| j         
                    |› d|› d�¦  «         Œ&| j         
                    d¦  «         d S d S )Néd   Fz
%s %s %s
z: z
)r'  r   ÚResponseStartLiner]   rê   rž   ró   ÚreasonrŸ   Ú_should_follow_redirectÚheader_callbackÚget_all)r/   r*  rŸ   ÚkÚvs        r1   Úheaders_receivedz _HTTPConnection.headers_receivedL  s(  è è € õ
 ˜*¥hÔ&@ÑAÔAÐAÐAÐAØŒ<Ô+ð 	°
´À3Ò0FÐ0FØ×"Ò" 5Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ØˆFØ”OˆŒ	Ø Ô'ˆŒØˆŒà×'Ò'Ñ)Ô)ð 	ØˆFàŒ<Ô'Ð3àŒL×(Ò(¨¸*Ñ)DÑEÔEÐEØœ×,Ò,Ñ.Ô.ð >ð >‘��1Ø”×,Ò,°¨_¨_°Q¨_¨_¨_Ñ=Ô=Ð=Ð=ØŒL×(Ò(¨Ñ0Ô0Ð0Ð0Ð0ð 4Ð3r3   c                 ó¶   — | j         j        rL| j         j        €J ‚| j        dv o4| j         j        dk    o$| j        d uo| j                             d¦  «        d uS dS )N)é-  é.  é/  i3  i4  r   ÚLocationF)r]   Úfollow_redirectsÚmax_redirectsrž   rŸ   rç   r6   s    r1   r/  z'_HTTPConnection._should_follow_redirectc  sw   € ØŒ<Ô(ð 	Ø”<Ô-Ð9Ð9Ð9à”	Ð6Ð6ð =Ø”LÔ.°Ò2ð=à”L¨Ð,ð=ð ”L×$Ò$ ZÑ0Ô0¸Ð<ð	ð ˆur3   c           
      óH  ‡— | j         €J ‚d                     | j        ¦  «        }|                      ¦   «          t	          | j        d| j        ¦  «        }|                      ¦   «         �rˆt          | j        t          ¦  «        sJ ‚| j	        €J ‚t          j
        | j        j        ¦  «        }t          j                             | j        j        | j	        d         ¦  «        |_        | j        j        €J ‚| j        j        dz
  |_        |j	        d= | j         dk    r| j        j        dk    s| j         dv rA| j        j        d	k    r1d
|_        d |_        dD ] }	 | j        j	        |= Œ# t$          $ r Y Œw xY w||_        | j        Šd | _        |                      ¦   «          | j        €J ‚| j                             |d¬¦  «        }|                     ˆfd„¦  «         |                      ¦   «          d S | j        j        rt7          ¦   «         }nt7          |¦  «        }t9          || j         t	          | dd ¦  «        | j	        | j                             ¦   «         | j        z
  | j         || j        j        ¬¦  «        }|  !                    |¦  «         |                      ¦   «          d S )Nr3   Úoriginal_requestr9  r¬   r·   r8  r�   )r6  r7  r‘   rŽ   )r¼   r½   zContent-EncodingzTransfer-EncodingF)Úraise_errorc                 ó>   •—  ‰|                       ¦   «         ¦  «        S r[   r˜   )rš   r{   s    €r1   r›   z(_HTTPConnection.finish.<locals>.<lambda>›  s   ø€ ¨N¨N¸1¿8º8¹:¼:Ñ,FÔ,F€ r3   r.  )r.  rŸ   r„   r†   ÚbufferÚeffective_url)"rž   Újoinr    rt   rÜ   r]   r/  r'  r
   rŸ   ÚcopyrÁ   rÂ   ÚurljoinrÄ   r;  rØ   rè   rÛ   r=  r{   r  r•   ÚfetchÚadd_done_callbackÚ_on_end_requestÚstreaming_callbackr   r   rf   rh   r†   r�   r"  )	r/   Údatar=  Únew_requestÚhr  r@  r   r{   s	           @r1   r  z_HTTPConnection.finishn  s±  ø€ ØŒyÐ$Ð$Ð$Ø�xŠx˜œÑ$Ô$ˆØ×ÒÑÔÐÝ" 4¤<Ð1CÀTÄ\ÑRÔRÐØ×'Ò'Ñ)Ô)ñ *	Ý˜dœl­MÑ:Ô:Ð:Ð:Ð:Ø”<Ð+Ð+Ð+Ýœ) D¤LÔ$8Ñ9Ô9ˆKÝ$œl×2Ò2Ø”Ô  $¤,¨zÔ":ñô ˆKŒOð ”<Ô-Ð9Ð9Ð9Ø(,¬Ô(BÀQÑ(FˆKÔ%ØÔ# FÐ+ð ”	˜SÒ Ð  T¤\Ô%8¸FÒ%BÐ%BØ”	˜ZÐ'Ð'¨D¬LÔ,?À6Ò,IÐ,Ià%*�Ô"Ø#'�Ô ðð 	ð 	�AðØ œLÔ0°Ð3Ð3øÝ#ð ð ð Ø˜ðøøøà+;ˆKÔ(Ø!Ô0ˆNØ"&ˆDÔØ�MŠM‰OŒOˆOØ”;Ð*Ð*Ð*Ø”+×#Ò# K¸UÐ#ÑCÔCˆCØ×!Ò!Ð"FÐ"FÐ"FÐ"FÑGÔGÐGØ× Ò Ñ"Ô"Ð"ØˆFØŒ<Ô*ð 	#Ý‘Y”YˆFˆFå˜T‘]”]ˆFÝØØŒIÝ˜4 ¨4Ñ0Ô0Ø”LØœ×*Ò*Ñ,Ô,¨t¬Ñ>ØÔ+ØØœ,Ô*ð	
ñ 	
ô 	
ˆð 	×Ò˜8Ñ$Ô$Ð$Ø×ÒÑÔÐÐÐs   ÅE%Å%
E2Å1E2c                 ó8   — | j                              ¦   «          d S r[   )rÕ   r\   r6   s    r1   rG  z_HTTPConnection._on_end_request¯  s   € ØŒ×ÒÑÔÐÐÐr3   Úchunkc                 ó¶   — |                       ¦   «         rd S | j        j        �| j                             |¦  «         d S | j                             |¦  «         d S r[   )r/  r]   rH  r    ra   )r/   rM  s     r1   Údata_receivedz_HTTPConnection.data_received²  s^   € Ø×'Ò'Ñ)Ô)ð 	àˆFØŒ<Ô*Ð6ØŒL×+Ò+¨EÑ2Ô2Ð2Ð2Ð2àŒK×Ò˜uÑ%Ô%Ð%Ð%Ð%r3   rŠ   r[   )+r9   r:   r;   rÙ   r   rF   r   r   r   r‹   r   r-   r¦   r=   r   r   r   r  Ú
SSLContextrÒ   rk   rt   r   r   rî   r  ró   r  r"  ÚBaseExceptionr   rõ   r×   r   r-  rð   ÚHTTPHeadersr4  r/  r  rG  ÚbytesrO  © r3   r1   ry   ry   ü   s¼  € € € € € ØUÐUÐUÐð
àÐ.Ô/ð
ð ð
ð # 2 t 8Ô,ð	
ð
 ! , °Ð!5Ô6ð
ð ð
ð ð
ð ð
ð ð
ð 
ð
ð 
ð 
ð 
ðB_ð _ð _ð _ðBØðà	ˆt�T˜#˜s˜(”^ S¤^Ð3Ô	4ðð ð ð ð>ð  ¨¤ð ¸ð ð ð ð ð!ð !ð !ð !ð
¨ð °oð ð ð ð ð¨Dð °Tð ð ð ð ðð ð ð ð@ lð @°tð @ð @ð @ð @ð"8à,ð"8ð ˜Ô&ð"8ð �]Ô#ð	"8ð
 
ð"8ð "8ð "8ð "8ðH8ð 8ð 8ð 8ð1à˜(Ô4°hÔ6OÐOÔPð1ð Ô%ð1ð 
ð	1ð 1ð 1ð 1ð.	¨ð 	ð 	ð 	ð 	ð?ð ?ð ?ð ?ðBð ð ð ð& 5ð &¨Tð &ð &ð &ð &ð &ð &r3   ry   Ú__main__)?Útornado.escaper   Útornador   r   Útornado.httpclientr   r   r   r	   r
   r   r   Útornado.http1connectionr   r   Útornado.ioloopr   Útornado.iostreamr   r   Útornado.netutilr   r   r   r   Útornado.logr   Útornado.tcpclientr   rã   rS   rC  ri   rË   rÏ   r  rö   rh   Úior   Úurllib.parserÁ   Útypingr   r   r   r   r   r   Útypesr   ÚTYPE_CHECKINGr    r!   r"   r$   rA   rF   ÚHTTPMessageDelegatery   r9   Ú	configurerT  r3   r1   ú<module>rf     s  ðØ #Ð #Ð #Ð #Ð #Ð #Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð Ø NÐ NÐ NÐ NÐ NÐ NÐ NÐ NØ !Ð !Ð !Ð !Ð !Ð !Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8ðð ð ð ð ð ð ð ð ð ð ð ð  Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'à €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð à =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø Ð Ð Ð Ð Ð Ø €€€à	Ôð *Ø)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ð)ð )ð )ð )ð )�yñ )ô )ð )ð /ð /ð /ð /ð /˜Iñ /ô /ð /ð&jð jð jð jð j˜Oñ jô jð jðZ}&ð }&ð }&ð }&ð }&�hÔ2ñ }&ô }&ð }&ð@ ˆzÒÐØ€OÔÐ3Ñ4Ô4Ð4Ø€D�F„F€F€F€Fð Ðr3   