Ë
    êmxicl  ã                   ó  — 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+jh                  r
d dl+m5Z5m6Z6m7Z7  G d„ de«      Z8 G d„ de«      Z9 G d„ de«      Z: G d„ dejv                  «      Z<e=dk(  r ej|                  e:«        e	«        yy)é    )Ú_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                 ó(   •— t         ‰| �  d|¬«       y ©NéW  ©r%   ©ÚsuperÚ__init__©Úselfr%   Ú	__class__s     €úP/home/htdocs/ttos/venv/lib/python3.12/site-packages/tornado/simple_httpclient.pyr-   zHTTPTimeoutError.__init__5   ó   ø€ Ü‰Ñ˜ gÐÕ.ó    c                 ó"   — | j                   xs 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$   ,   s'   ø„ ñð/ ð /¨õ /ð)˜÷ )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                 ó(   •— t         ‰| �  d|¬«       y r(   r+   r.   s     €r1   r-   zHTTPStreamClosedError.__init__H   r2   r3   c                 ó"   — | j                   xs dS )NúStream closedr*   r6   s    r1   r7   zHTTPStreamClosedError.__str__K   s   € Ø�|‰|Ò.˜Ð.r3   r8   r?   s   @r1   rA   rA   <   s'   ø„ ñ	ð/ ð /¨õ /ð/˜÷ /r3   rA   c                   ó0  ‡ — 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                 ól  •— t         ‰| �  |¬«       || _        t        j                  «       | _        i | _        i | _        || _        || _	        || _
        |r|| _        d| _        nt        «       | _        d| _        |�t        | j                  |¬«      | _        t        | j                  ¬«      | _        y )N)rK   FT)rJ   Úmapping)rJ   )r,   Ú
initializerG   ÚcollectionsÚdequeÚqueueÚactiveÚwaitingrI   rL   rM   rJ   Úown_resolverr   r   r   Ú
tcp_client)	r/   rG   rH   rI   rJ   rK   rL   rM   r0   s	           €r1   rP   z SimpleAsyncHTTPClient.initializev   sµ   ø€ ô 	‰Ñ HÐÔ-Ø&ˆÔä×ÑÓð 	Œ
ð ð 	Œð ð 	Œð  /ˆÔØ.ˆÔØ*ˆÔñ Ø$ˆDŒMØ %ˆDÕä$›JˆDŒMØ $ˆDÔØÐ'Ü,ØŸ™Ð0@ôˆDŒMô $¨T¯]©]Ô;ˆ�r3   c                 ó¢   •— t         ‰| �  «        | j                  r| j                  j                  «        | j                  j                  «        y ©N)r,   ÚcloserV   rJ   rW   )r/   r0   s    €r1   rZ   zSimpleAsyncHTTPClient.closeœ   s5   ø€ Ü‰‰ŒØ×ÒØ�M‰M×ÑÔ!Ø�‰×ÑÕr3   ÚrequestÚcallbackc                 óÚ  — t        «       }| j                  j                  |||f«       |j                  €J ‚|j                  €J ‚d }t        | j                  «      | j                  k\  r”t        |j                  |j                  «      xs |j                  xs |j                  }|rV| j                  j                  | j                  j                  «       |z   t        j                  | j                  |d«      «      }|||f| j                  |<   | j!                  «        | j                  rAt#        j$                  dt        | j                  «      t        | j                  «      fz  «       y y )Nzin request queuezImax_clients limit reached, request queued. %d active, %d queued requests.)ÚobjectrS   ÚappendÚconnect_timeoutÚrequest_timeoutÚlenrT   rG   ÚminÚio_loopÚadd_timeoutÚtimeÚ	functoolsÚpartialÚ_on_timeoutrU   Ú_process_queuer   Údebug)r/   r[   r\   ÚkeyÚtimeout_handleÚtimeouts         r1   Ú
fetch_implz SimpleAsyncHTTPClient.fetch_impl¢   sA  € ô ‹hˆØ�
‰
×Ñ˜3 ¨Ð2Ô3Ø×&Ñ&Ð2Ð2Ð2Ø×&Ñ&Ð2Ð2Ð2ØˆÜˆt�{‰{Ó˜t×/Ñ/Ò/ä�G×+Ñ+¨W×-DÑ-DÓEò +Ø×*Ñ*ò+à×*Ñ*ð ñ
 Ø!%§¡×!9Ñ!9Ø—L‘L×%Ñ%Ó'¨'Ñ1Ü×%Ñ% d×&6Ñ&6¸Ð=OÓPó"�ð % h°Ð?ˆ�‰�SÑØ×ÑÔØ�:Š:Ü�M‰Mð1Ü47¸¿¹Ó4DÄcÈ$Ï*É*ÃoÐ3VñWõð r3   c                 óÈ  — | j                   rÖt        | j                  «      | j                  k  r³| j                   j	                  «       \  }}}|| j
                  vrŒ[| j                  |«       ||f| j                  |<   t        j                  | j                  |«      }| j                  |||«       | j                   r$t        | j                  «      | j                  k  rŒ±y y y y rY   )rS   rb   rT   rG   ÚpopleftrU   Ú_remove_timeoutrg   rh   Ú_release_fetchÚ_handle_request)r/   rl   r[   r\   Úrelease_callbacks        r1   rj   z$SimpleAsyncHTTPClient._process_queue½   sº   € Ø�jŠjœS §¡Ó-°×0@Ñ0@Ò@Ø%)§Z¡Z×%7Ñ%7Ó%9Ñ"ˆC�˜(Ø˜$Ÿ,™,Ñ&ØØ× Ñ  Ô%Ø '¨Ð2ˆD�K‰K˜ÑÜ(×0Ñ0°×1DÑ1DÀcÓJÐØ× Ñ  Ð*:¸HÔEð �jŠjœS §¡Ó-°×0@Ñ0@Ô@ˆjÐ@ˆjr3   c                 ó   — t         S rY   )Ú_HTTPConnectionr6   s    r1   Ú_connection_classz'SimpleAsyncHTTPClient._connection_classÇ   s   € ÜÐr3   ru   Úfinal_callbackc           
      óŽ   —  | j                  «       | |||| j                  | j                  | j                  | j                  «       y rY   )rx   rI   rW   rL   rM   )r/   r[   ru   ry   s       r1   rt   z%SimpleAsyncHTTPClient._handle_requestÊ   sE   € ð 	!ˆ×ÑÓ ØØØØØ× Ñ Ø�O‰OØ× Ñ Ø×Ñõ		
r3   rl   c                 ó>   — | j                   |= | j                  «        y rY   )rT   rj   )r/   rl   s     r1   rs   z$SimpleAsyncHTTPClient._release_fetchÛ   s   € Ø�K‰K˜ÐØ×ÑÕr3   c                 óœ   — || j                   v r>| j                   |   \  }}}|�| j                  j                  |«       | j                   |= y y rY   )rU   rd   Úremove_timeout)r/   rl   r[   r\   rm   s        r1   rr   z%SimpleAsyncHTTPClient._remove_timeoutß   sL   € Ø�$—,‘,ÑØ04·±¸SÑ0AÑ-ˆG�X˜~ØÐ)Ø—‘×+Ñ+¨NÔ;Ø—‘˜SÑ!ð	 r3   Úinfoc                 óD  — | j                   |   \  }}}| j                  j                  |||f«       |rd|› �nd}t        |dt	        |«      | j
                  j                  «       |j                  z
  ¬«      }| j
                  j                  ||«       | j                   |= y)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)	rU   rS   Úremover   r$   rd   rf   Ú
start_timeÚadd_callback)r/   rl   r~   r[   r\   rm   Úerror_messageÚtimeout_responses           r1   ri   z!SimpleAsyncHTTPClient._on_timeoutæ   s™   € ð -1¯L©L¸Ñ,=Ñ)ˆ�˜>Ø�
‰
×Ñ˜3 ¨Ð2Ô3á-1˜( 4 &Ñ)°yˆÜ'ØØÜ" =Ó1ØŸ™×*Ñ*Ó,¨w×/AÑ/AÑAô	
Ðð 	�‰×!Ñ! (Ð,<Ô=Ø�L‰L˜Ñr3   )é
   Ni  @NNNN©r&   NrY   )r9   r:   r;   r<   Úintr   r   r=   r   r   rP   rZ   r   r   r   ro   rj   Útyperx   rt   r^   rs   rr   ri   r>   r?   s   @r1   rF   rF   O   s_  ø„ ñ$ðP Ø59Ø(Ø'+Ø-1Ø)-Ø'+ñ$<àð$<ð # 4¨¨S¨¡>Ñ2ð$<ð ð	$<ð
 ˜8Ñ$ð$<ð ˜4  S ™>Ñ*ð$<ð " #™ð$<ð   ‘}ð$<ð 
õ$<õL ðØ"ðØ.6¸°~ÀtÐ7KÑ.Lðà	óó6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!jD                  e!jF                  f   d!e!jH                  ddfd"„Z%defd#„Z&d(d$„Z'd(d%„Z(d&e)ddfd'„Z*y)*rw   >   ÚGETÚPUTÚHEADÚPOSTÚPATCHÚDELETEÚOPTIONSÚclientr[   ru   Nry   rI   rW   rL   rM   r&   c	                 óö  — t        j                  «       | _        | j                  j                  «       | _        t        j                  «       | _        || _        || _        || _        || _	        || _
        || _        || _        || _        d | _        d | _        g | _        d | _        d | _        d | _        t        j                  «       j)                  t+        j,                  | j/                  «       «      d„ «       y )Nc                 ó"   — | j                  «       S rY   ©Úresult)Úfs    r1   ú<lambda>z*_HTTPConnection.__init__.<locals>.<lambda>  s   € °q·x±x³z€ r3   )r   Úcurrentrd   rf   r„   Ústart_wall_timer”   r[   ru   ry   rI   rW   rL   rM   ÚcodeÚheadersÚchunksÚ_decompressorÚ_timeoutÚ	_sockaddrÚ
add_futurer   Úconvert_yieldedÚrun)	r/   r”   r[   ru   ry   rI   rW   rL   rM   s	            r1   r-   z_HTTPConnection.__init__ÿ   sÈ   € ô —~‘~Ó'ˆŒØŸ,™,×+Ñ+Ó-ˆŒÜ#Ÿy™y›{ˆÔØˆŒØˆŒØ 0ˆÔØ,ˆÔØ.ˆÔØ$ˆŒØ.ˆÔØ*ˆÔØˆŒ	ØˆŒØˆŒØ!ˆÔàˆŒØˆŒÜ�‰Ó×#Ñ#Ü×Ñ §¡£
Ó+Ñ-Aõ	
r3   c           	   ƒ   ó|  K  — 	 t         j                  j                  t        | j                  j
                  «      «      | _        | j                  j                  dvr"t        d| j                  j
                  z  «      ‚| j                  j                  }d|v r|j                  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                  j                  «      }d }| j                  j*                  rXt-        | j                  j*                  «      r| j                  j*                  }n"t        d| j                  j*                  ›�«      ‚| j                  j.                  rK| j                  j0                  r5t3        | j                  j.                  | j                  j0                  «      }	n\| j                  j.                  r| j                  j.                  }	n/| j                  j0                  r| j                  j0                  }	nd}	|	rL| j4                  j7                  | j8                  |	z   t;        j<                  | j>                  d«      «      | _         | jB                  jE                  ||||| jF                  |¬«      ƒ d {  –—† }
| jH                  €|
jK                  «        y |
| _&        | jL                  jO                  | jP                  «       | jS                  «        | jH                  €y | j                  j0                  r`| j4                  j7                  | j8                  | j                  j0                  z   t;        j<                  | j>                  d«      «      | _         | j                  jT                  | jV                  vr8| j                  jX                  s"t[        d| j                  jT                  z  «      ‚dD ]'  }t]        | j                  |d «      sŒt_        d|z  «      ‚ d| j                  j`                  vrd| j                  j`                  d<   d| j                  j`                  vr…d| j                  j                  v r@| j                  j                  j                  d«      d	   | j                  j`                  d<   n-| j                  j                  | j                  j`                  d<   d\  }}| j                  jb                  �-| j                  jb                  | j                  jd                  }}nF| j                  jf                  �0| j                  jf                  }| j                  jh                  xs d}|�ˆ|€J ‚| j                  jj                  dvr t        d| j                  jj                  «      ‚dt        tm        jn                  t        jp                  ||«      «      «      z   | j                  j`                  d<   | j                  jr                  r.| j                  jr                  | j                  j`                  d<   nE| j                  j`                  ju                  d«      € dtv        › �| j                  j`                  d<   | j                  jX                  s|| j                  jT                  dv }| j                  jx                  d uxs | j                  jz                  d u}|r|r|r,|s*t        d|rd nd›d!| j                  jT                  ›d"�«      ‚| j                  j|                  rd#| j                  j`                  d$<   | j                  jx                  �?t        t�        | j                  jx                  «      «      | j                  j`                  d%<   | j                  jT                  d&k(  r1d'| j                  j`                  vrd(| j                  j`                  d'<   | j                  j‚                  rd)| j                  j`                  d*<   | j                  j„                  xs d+| j                  j†                  rd,| j                  j†                  z   ndz   }| j‰                  |
«      | _E        t        jŒ                  | j                  jT                  |d«      }| jŠ                  j�                  || j                  j`                  «       | j                  j|                  r$| jŠ                  j‘                  | «      ƒ d {  –—†  y | j“                  d-«      ƒ d {  –—†  y 7 �Œv7 Œ"7 Œ
# t”        $ r%  | j–                  t™        jš                  «       Ž s‚ Y y w xY w­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_optionsrI   Ú	source_ipzduring requestzunknown method %s)Ú
proxy_hostÚ
proxy_portÚproxy_usernameÚproxy_passwordÚproxy_auth_modez%s not supportedÚ
ConnectionrZ   Ú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   r`   ra   rc   rd   re   r„   rg   rh   ri   r¡   rW   ÚconnectrI   ry   rZ   ÚstreamÚset_close_callbackÚon_connection_closerr   Ú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=   rb   Ú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¯   rn   rÔ   rl   rÝ   rÞ   Úbody_expectedÚbody_presentÚreq_pathÚ
start_lines                     r1   r¥   z_HTTPConnection.run   s­  è ø€ ð^	Ü Ÿ,™,×/Ñ/´¸¿¹×9IÑ9IÓ0JÓKˆDŒKØ�{‰{×!Ñ!Ð):Ñ:Ü Ð!=ÀÇÁ×@PÑ@PÑ!PÓQÐQð —[‘[×'Ñ'ˆFØ�f‰}Ø&,×&7Ñ&7¸Ó&<Ñ#�˜!˜VÜ!×5Ñ5°fÓ=‰JˆD�$Øˆ|Ø"Ÿk™k×0Ñ0°GÒ;‘sÀ�Ü�x‰x˜ TÔ*à˜A˜b�z�Ø#'ˆDÔ à�|‰|×&Ñ&¨%Ñ/Ü—^‘^‘ä×%Ñ%�à×/Ñ/°·±×0BÑ0BÓCˆKàˆIØ�|‰|×-Ò-Ü˜tŸ|™|×=Ñ=Ô>Ø $§¡× >Ñ >‘Iå$àŸ<™<×9Ò9ð<óð ð
 �|‰|×+Ò+°·±×0LÒ0LÜØ—L‘L×0Ñ0°$·,±,×2NÑ2Nó‘ð —‘×-Ò-ØŸ,™,×6Ñ6‘Ø—‘×-Ò-ØŸ,™,×6Ñ6‘à�ÙØ $§¡× 8Ñ 8Ø—O‘O gÑ-Ü×%Ñ% d×&6Ñ&6Ð8JÓKó!�”ð  Ÿ?™?×2Ñ2ØØØØ'Ø $× 4Ñ 4Ø#ð 3ó ÷ ˆFð ×"Ñ"Ð*à—‘”ØØ ˆDŒKØ�K‰K×*Ñ*¨4×+CÑ+CÔDØ× Ñ Ô"Ø×"Ñ"Ð*ØØ�|‰|×+Ò+Ø $§¡× 8Ñ 8Ø—O‘O d§l¡l×&BÑ&BÑBÜ×%Ñ% d×&6Ñ&6Ð8HÓIó!�”ð
 —‘×#Ñ#¨4×+BÑ+BÑBØŸ™×>Ò>äÐ2°T·\±\×5HÑ5HÑHÓIÐIðò H�ô ˜4Ÿ<™<¨¨dÕ3Ü-Ð.@À3Ñ.FÓGÐGðHð  4§<¡<×#7Ñ#7Ñ7Ø5<�—‘×$Ñ$ \Ñ2Ø˜TŸ\™\×1Ñ1Ñ1Ø˜$Ÿ+™+×,Ñ,Ñ,Ø37·;±;×3EÑ3E×3PÑ3PÐQTÓ3UØñ4�D—L‘L×(Ñ(¨Ò0ð 48·;±;×3EÑ3E�D—L‘L×(Ñ(¨Ñ0Ø!+ÑˆH�hØ�{‰{×#Ñ#Ð/Ø%)§[¡[×%9Ñ%9¸4¿;¹;×;OÑ;O˜(‘Ø—‘×+Ñ+Ð7ØŸ<™<×5Ñ5�ØŸ<™<×5Ñ5Ò;¸�ØÐ#ØÐ+Ð+Ð+Ø—<‘<×)Ñ)°Ñ@Ü$Ð%?ÀÇÁ×AWÑAWÓXÐXØ8@Ä8Ü×$Ñ$Ü ×9Ñ9¸(ÀHÓMóóDñ 9�—‘×$Ñ$ _Ñ5ð
 �|‰|×&Ò&Ø59·\±\×5LÑ5L�—‘×$Ñ$ \Ò2Ø—‘×%Ñ%×)Ñ)¨,Ó7Ð?Ø7?Ä¸yÐ5I�—‘×$Ñ$ \Ñ2Ø—<‘<×9Ò9ð !%§¡× 3Ñ 3Ð7OÐ O�à—L‘L×%Ñ%¨TÐ1ò >Ø—|‘|×1Ñ1¸Ð=ð ñ "©,Ù ©å$ñ &3™6¸Ñ:¸D¿L¹L×<OÓ<OðQóð ð
 �|‰|×/Ò/Ø1?�—‘×$Ñ$ XÑ.Ø�|‰|× Ñ Ð,ô :=¼SÀÇÁ×ARÑARÓ=SÓ9T�—‘×$Ñ$Ð%5Ñ6à—‘×#Ñ# vÒ-Ø"¨$¯,©,×*>Ñ*>Ñ>ð 8ð —‘×$Ñ$ ^Ñ4ð �|‰|×/Ò/Ø:@�—‘×$Ñ$Ð%6Ñ7ØŸ™×(Ñ(Ò/¨CØ-1¯[©[×->Ò->��t—{‘{×(Ñ(Ò(ÀBñˆHð #×5Ñ5°fÓ=ˆDŒOÜ!×2Ñ2°4·<±<×3FÑ3FÈÐRTÓUˆJØ�O‰O×)Ñ)¨*°d·l±l×6JÑ6JÔKØ�|‰|×/Ò/Ø—o‘o×3Ñ3°DÓ9×9Ñ9à×&Ñ& tÓ,×,Ñ,ðUùðP :øà,ùÜò 	Ø)�4×)Ñ)¬3¯<©<«>Ñ:Øñ ;ð	üsŒ   ‚f<„L
f ÌfÌ f Ì/f<Ì0Af Í8f<Í9C,f Ñ&S>f å$få%f å)f<å*f å>f	å?f æf<æf æf æ	f æ+f9æ6f<æ8f9æ9f<rÅ   c                 ó  — |dk(  �r„| j                   j                  �| j                   j                  S | j                   j                  rH| j                   j                  €2| 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                   j
                  «       t        t        d«      r#|xj                   t        j"                  z  c_        |S y )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‘L×)Ñ)Ð1Ø—L‘L×,Ñ,Ð4Ø—L‘L×+Ñ+Ð3ä+Ð+Ü×0Ñ0Ü—‘×'Ñ'°·±×0EÑ0EôˆGð —<‘<×-Ò-Ø).�Ô&Ü&)§m¡m�Ô#Ø�|‰|×'Ñ'Ð3Ø×'Ñ'Ø—L‘L×,Ñ,¨d¯l©l×.EÑ.Eôô ”sÐ/Ô0à—’¤3×#8Ñ#8Ñ8•ØˆNØr3   r~   c                 ó~   — d| _         |rd|› �nd}| j                  �!| j                  t        t        |«      d«       yy)z¯Timeout callback of _HTTPConnection instance.

        Raise a `HTTPTimeoutError` when a timeout occurs.

        :info string key: More detailed timeout information.
        Nr€   r5   )r¡   ry   rô   r$   )r/   r~   r†   s      r1   ri   z_HTTPConnection._on_timeoutà  sG   € ð ˆŒÙ-1˜( 4 &Ñ)°yˆØ×ÑÐ*Ø×"Ñ"Ü Ô"2°=Ó"AÀ4õð +r3   c                 óv   — | j                   �-| j                  j                  | j                   «       d | _         y y rY   )r¡   rd   r}   r6   s    r1   rr   z_HTTPConnection._remove_timeoutî  s.   € Ø�=‰=Ð$Ø�L‰L×'Ñ'¨¯©Ô6Ø ˆD�Mð %r3   rÔ   c                 óÔ   — |j                  d«       t        |dt        d| j                  | j                  t        | j                  j                  «      ¬«      | j                  «      }|S )NT)Úno_keep_aliverL   rM   Ú
decompress)	Úset_nodelayr   r   rL   rM   Úboolr[   rê   r¢   )r/   rÔ   rî   s      r1   rí   z"_HTTPConnection._create_connectionó  s`   € Ø×Ñ˜4Ô Ü$ØØÜ%Ø"Ø $× 4Ñ 4Ø"×0Ñ0Ü §¡× @Ñ @ÓAô	ð �N‰Nó

ˆ
ð Ðr3   Ú
start_readc              ƒ   ó&  K  — | j                   j                  �0| j                  j                  | j                   j                  «       nQ| j                   j                  �;| j                   j	                  | j                  j                  «      }|�
|ƒ d {  –—†  | j                  j                  «        |r%	 | j                  j                  | «      ƒ d {  –—†  y y 7 ŒF7 Œ# t        $ r%  | j                  t        j                  «       Ž s‚ Y y w xY w­wrY   )r[   rç   rî   Úwriterè   Úfinishrñ   r   rô   rõ   rö   )r/   r  Úfuts      r1   rò   z_HTTPConnection._write_body  sØ   è ø€ Ø�<‰<×ÑÐ(Ø�O‰O×!Ñ! $§,¡,×"3Ñ"3Õ4Ø�\‰\×'Ñ'Ð3Ø—,‘,×,Ñ,¨T¯_©_×-BÑ-BÓCˆCØˆØ—	�	Ø�‰×ÑÔ ÙðØ—o‘o×3Ñ3°DÓ9×9Ñ9ð ð øð :ùÜ$ò Ø-�t×-Ñ-¬s¯|©|«~Ñ>Øñ ?ðüsH   ‚BDÂCÂ DÂ7C  ÃCÃC  ÃDÃC  Ã +DÄDÄDÄDc                 óR   — | j                   �| j                   }d | _          |«        y y rY   )ru   )r/   ru   s     r1   Ú_releasez_HTTPConnection._release  s-   € Ø× Ñ Ð,Ø#×4Ñ4ÐØ$(ˆDÔ!ÙÕð -r3   Úresponsec                 óœ   — | j                  «        | j                  �0| j                  }d | _        | j                  j                  ||«       y y rY   )r  ry   rd   r…   )r/   r  ry   s      r1   Ú_run_callbackz_HTTPConnection._run_callback  sC   € Ø�‰ŒØ×ÑÐ*Ø!×0Ñ0ˆNØ"&ˆDÔØ�L‰L×%Ñ% n°hÕ?ð +r3   ÚtypzOptional[Type[BaseException]]ÚvalueÚtbc           	      óÀ  — | j                   �Ã| j                  «        t        |t        «      r$|j                  €t        d«      }n|j                  }| j                  t        | j                  d|| j                  j                  «       | j                  z
  | j                  ¬«      «       t        | d«      r| j                  j                  «        yt        |t        «      S )NrD   r)   )r�   r‚   r„   rÔ   T)ry   rr   Ú
isinstancer   Ú
real_errorrA   r!  r   r[   rd   rf   r„   rœ   r  rÔ   rZ   )r/   r"  r#  r$  s       r1   rô   z!_HTTPConnection._handle_exception  s¾   € ð ×ÑÐ*Ø× Ñ Ô"Ü˜%Ô!2Ô3Ø×#Ñ#Ð+Ü1°/ÓB‘Eà!×,Ñ,�EØ×ÑÜØ—L‘LØØØ!%§¡×!2Ñ!2Ó!4°t·±Ñ!FØ#×3Ñ3ôôô �t˜XÔ&ð —‘×!Ñ!Ô#Øô ˜eÔ%6Ó7Ð7r3   c                 óð   — | j                   �:d}| j                  j                  r| j                  j                  ‚	 t        |«      ‚y # t        $ r$  | j                  t        j                  «       Ž  Y y w xY w)NzConnection closed)ry   rÔ   r�   rA   rô   rõ   rö   )r/   r%   s     r1   rÖ   z#_HTTPConnection.on_connection_closeB  sl   € Ø×ÑÐ*Ø)ˆGØ�{‰{× Ò Ø—k‘k×'Ñ'Ð'ð8Ü+¨GÓ4Ð4ð +øô )ò 8Ø&�×&Ñ&¬¯©«Ó7ð8ús   ¼A Á*A5Á4A5Ú
first_linerž   c              ƒ   ó`  K  — t        |t        j                  «      sJ ‚| j                  j                  r)|j
                  dk(  r| j                  d«      ƒ d {  –—†  y |j
                  | _        |j                  | _        || _        | j                  «       ry | j                  j                  �}| j                  j                  d|z  «       | j                  j                  «       D ]&  \  }}| j                  j                  |› d|› d�«       Œ( | j                  j                  d«       y y 7 ŒÓ­w)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Ø�<‰<×+Ò+°
·±À3Ò0FØ×"Ñ" 5Ó)×)Ð)ØØ—O‘OˆŒ	Ø ×'Ñ'ˆŒØˆŒà×'Ñ'Ô)Øà�<‰<×'Ñ'Ð3à�L‰L×(Ñ(¨¸*Ñ)DÔEØŸ™×,Ñ,Ó.ò >‘��1Ø—‘×,Ñ,°¨s°"°Q°C°t¨_Õ=ð>à�L‰L×(Ñ(¨Õ0ð 4ð *ús   ‚AD.ÁD,ÁCD.c                 ó  — | j                   j                  rp| j                   j                  €J ‚| j                  dv xrH | j                   j                  dkD  xr- | j                  d uxr | j                  j                  d«      d uS y)N)é-  é.  é/  i3  i4  r   ÚLocationF)r[   Úfollow_redirectsÚmax_redirectsr�   rž   ræ   r6   s    r1   r.  z'_HTTPConnection._should_follow_redirectc  s‚   € Ø�<‰<×(Ò(Ø—<‘<×-Ñ-Ð9Ð9Ð9à—	‘	Ð6Ð6ò =Ø—L‘L×.Ñ.°Ñ2ò=à—L‘L¨Ð,ò=ð —L‘L×$Ñ$ ZÓ0¸Ð<ð	ð r3   c           
      ó$  ‡— | j                   €J ‚dj                  | j                  «      }| j                  «        t	        | j
                  d| j
                  «      }| j                  «       �rÒt        | j
                  t        «      sJ ‚| j                  €J ‚t        j                  | j
                  j
                  «      }t        j                  j                  | j
                  j                  | j                  d   «      |_        | j
                  j                  €J ‚| j
                  j                  dz
  |_        |j                  d= | j                   dk(  r| j
                  j                   dk7  s'| j                   dv rF| j
                  j                   d	k(  r-d
|_        d |_        dD ]  }	 | j
                  j                  |= Œ ||_        | j(                  Šd | _        | j+                  «        | j,                  €J ‚| j,                  j/                  |d¬«      }|j1                  ˆfd„«       | j3                  «        y | j
                  j4                  rt7        «       }nt7        |«      }t9        || j                   t	        | dd «      | j                  | j:                  j=                  «       | j>                  z
  | j@                  || j
                  j                  ¬«      }| jC                  |«       | j3                  «        y # t$        $ r Y �Œfw xY w)Nr3   Úoriginal_requestr8  r«   r¶   r7  r�   )r5  r6  r�   r�   )r»   r¼   zContent-EncodingzTransfer-EncodingF)Úraise_errorc                 ó0   •—  ‰| j                  «       «      S rY   r—   )r™   ry   s    €r1   rš   z(_HTTPConnection.finish.<locals>.<lambda>›  s   ø€ ©N¸1¿8¹8»:Ó,F€ r3   r-  )r-  rž   r‚   r„   ÚbufferÚeffective_url)"r�   ÚjoinrŸ   rr   rÛ   r[   r.  r&  r
   rž   ÚcopyrÀ   rÁ   ÚurljoinrÃ   r:  r×   rç   rÚ   r<  ry   r  r”   ÚfetchÚadd_done_callbackÚ_on_end_requestÚstreaming_callbackr   r   rd   rf   r„   rœ   r!  )	r/   Údatar<  Únew_requestÚhr  r?  r  ry   s	           @r1   r  z_HTTPConnection.finishn  sƒ  ø€ Ø�y‰yÐ$Ð$Ð$Ø�x‰x˜Ÿ™Ó$ˆØ×ÑÔÜ" 4§<¡<Ð1CÀTÇ\Á\ÓRÐØ×'Ñ'Õ)Ü˜dŸl™l¬MÔ:Ð:Ð:Ø—<‘<Ð+Ð+Ð+ÜŸ)™) D§L¡L×$8Ñ$8Ó9ˆKÜ$Ÿl™l×2Ñ2Ø—‘× Ñ  $§,¡,¨zÑ":óˆKŒOð —<‘<×-Ñ-Ð9Ð9Ð9Ø(,¯©×(BÑ(BÀQÑ(FˆKÔ%Ø×#Ñ# FÐ+ð —	‘	˜SÒ  T§\¡\×%8Ñ%8¸FÒ%BØ—	‘	˜ZÑ'¨D¯L©L×,?Ñ,?À6Ò,Ià%*�Ô"Ø#'�Ô ðò 	�AðØ ŸL™L×0Ñ0°Ñ3ð	ð ,<ˆKÔ(Ø!×0Ñ0ˆNØ"&ˆDÔØ�M‰MŒOØ—;‘;Ð*Ð*Ð*Ø—+‘+×#Ñ# K¸UÐ#ÓCˆCØ×!Ñ!Ó"FÔGØ× Ñ Ô"ØØ�<‰<×*Ò*Ü“Y‰Fä˜T“]ˆFÜØØ�I‰IÜ˜4 ¨4Ó0Ø—L‘LØŸ™×*Ñ*Ó,¨t¯©Ñ>Ø×+Ñ+ØØŸ,™,×*Ñ*ô	
ˆð 	×Ñ˜8Ô$Ø×ÑÕøô5 $ò Úðús   Æ,LÌ	LÌLc                 ó8   — | j                   j                  «        y rY   )rÔ   rZ   r6   s    r1   rF  z_HTTPConnection._on_end_request¯  s   € Ø�‰×ÑÕr3   Úchunkc                 óÀ   — | j                  «       ry | j                  j                  �| j                  j                  |«       y | j                  j	                  |«       y rY   )r.  r[   rG  rŸ   r_   )r/   rL  s     r1   Údata_receivedz_HTTPConnection.data_received²  sE   € Ø×'Ñ'Ô)àØ�<‰<×*Ñ*Ð6Ø�L‰L×+Ñ+¨EÕ2à�K‰K×Ñ˜uÕ%r3   r‰   rY   )+r9   r:   r;   rØ   r   rF   r   r   r   rŠ   r   r-   r¥   r=   r   r   r   r  Ú
SSLContextrÑ   ri   rr   r   r   rí   r  rò   r  r!  ÚBaseExceptionr   rô   rÖ   r   r,  rï   ÚHTTPHeadersr3  r.  r  rF  ÚbytesrN  © r3   r1   rw   rw   ü   s´  „ ÚUÐð
àÐ.Ñ/ð
ð ð
ð # 2 t 8Ñ,ð	
ð
 ! , °Ð!5Ñ6ð
ð ð
ð ð
ð ð
ð ð
ð 
ó
óB_ðBØðà	ˆt�T˜#˜s˜(‘^ S§^¡^Ð3Ñ	4óñ> ¨¡ð ¸ó ó!ð
¨ð °oó ð¨Dð °Tó óð@ lð @°tó @ð"8à,ð"8ð ˜Ñ&ð"8ð �]Ñ#ð	"8ð
 
ó"8óH8ð1à˜(×4Ñ4°h×6OÑ6OÐOÑPð1ð ×%Ñ%ð1ð 
ó	1ð.	¨ó 	ó?óBð& 5ð &¨Tô &r3   rw   Ú__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â   rQ   rB  rg   rÊ   rÎ   r  rõ   rf   Úior   Úurllib.parserÀ   Útypingr   r   r   r   r   r   Útypesr   ÚTYPE_CHECKINGr    r!   r"   r$   rA   rF   ÚHTTPMessageDelegaterw   r9   Ú	configurerS  r3   r1   ú<module>re     sÒ   ðÝ #ß  ÷÷ õ ß NÝ !ß 8÷ó õ  Ý 'ã Û Û Û Û 	Û Û 
Û 
Û Ý Û ç =× =Ý Û à	×Òß)Ñ)ô)�yô )ô /˜Iô /ô&j˜Oô jôZ}&�h×2Ñ2ô }&ð@ ˆzÒØ€O×ÑÐ3Ô4Ù…Fð r3   