
    F2jr'                      d dl mZ d dlZd dlZd dlZd dlmZmZ d dlmZm	Z	 d dlm
Z ddlmZmZ ddlmZ dd	lmZmZmZmZmZmZmZ dd
lmZmZmZmZmZmZm Z  ddl!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( ddl)m*Z*m+Z+m,Z, ddl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 ddl5m6Z6m7Z7m8Z8 ddl9m:Z: ddl;m<Z< ddl=m>Z>m?Z?m@Z@mAZA ddlBmCZCmDZD ddl=mEZEmFZFmGZG ejH        rddlImJZJ  e,            ZK G d deE          ZLdS )    )annotationsN)datetimetimezone)
SOCK_DGRAMSOCK_STREAM)timeout   )sslCertificate)HTTPHeaderDict)DEFAULT_BLOCKSIZEDEFAULT_KEEPALIVE_DELAYUDP_DEFAULT_BLOCKSIZE	responsesHTTP1_ONLY_HEADERSDEFAULT_BACKGROUND_WATCH_WINDOWDEFAULT_KEEPALIVE_IDLE_WINDOW)HTTP1ProtocolHTTP2ProtocolHTTP3ProtocolHTTPOverQUICProtocolHTTPOverTCPProtocolHTTPProtocolFactoryQuicTLSConfig)ConnectionTerminatedDataReceivedEarlyHeadersReceivedEventHandshakeCompletedHeadersReceivedStreamResetReceived)AsyncSocketSSLAsyncSocket_has_complete_support_dgram)EarlyResponseIncompleteReadInvalidHeaderMustDowngradeErrorProtocolErrorResponseNotReadySSLError)parse_alt_svcresolve_cert_reqs	parse_url)enable_keepalive)AsyncSubTimeout   )ConnectionInfoHttpVersionQuicPreemptiveCacheTypeResponsePromise)_HAS_HTTP3_SUPPORT_HAS_SYS_AUDIT   )AsyncBaseBackendAsyncDirectStreamAccessAsyncLowLevelResponse)_TYPE_SOCKET_OPTIONSc                      e Zd Zej        ej        ej        gZdddefe	j
        ddeeeddx fdZedyd            Zedyd            Zedyd            Zedzd            Zd{d Zd|d"Z	 	 	 	 	 	 	 	 	 	 	 	 d}d~d5Zddd8Zd|d9Z	 	 	 ddd>Zd|d?ZdddBZd@ddCddddDddPZ	 	 dddUZddXZ	 dd@d@dYdd_Z	 ddddZ ddeZ!	 	 dddjZ"dddkddpZ#d@dqdduZ$d|dvZ%d|dwZ& xZ'S )AsyncHfaceBackendNsocket_optionsdisabled_svnpreemptive_quic_cachekeepalive_delaybackground_watch_delaykeepalive_idle_windowhoststrport
int | Noner   int | float | Nonesource_addresstuple[str, int] | None	blocksizeintrA   _TYPE_SOCKET_OPTIONS | NonerB   set[HttpVersion] | NonerC   QuicPreemptiveCacheType | NonerD   float | int | NonerE   rF   c                  t                      rt          s/|t                      }|                    t          j                   t                                          |||||||||	|
|           d | _        d | _	        d | _
        d | _        g | _        d | _        d | _        d| _        d | _        d| _        d | _        d | _        d | _        d | _        d S )Nr@   F)r6   _HAS_DGRAM_SUPPORTsetaddr3   h3super__init___proxy_protocol	_protocol_svn
_stream_id_AsyncHfaceBackend__headers(_AsyncHfaceBackend__expected_body_length)_AsyncHfaceBackend__remaining_body_length%_AsyncHfaceBackend__authority_bit_set%_AsyncHfaceBackend__legacy_host_entry$_AsyncHfaceBackend__protocol_bit_set'_AsyncHfaceBackend__custom_tls_settings!_AsyncHfaceBackend__alt_authority_AsyncHfaceBackend__origin_port _max_tolerable_delay_for_upgrade)selfrG   rI   r   rL   rN   rA   rB   rC   rD   rE   rF   	__class__s               d/home/thesage/.hermes/hermes-agent/venv/lib/python3.11/site-packages/urllib3/backend/_async/hface.pyrZ   zAsyncHfaceBackend.__init__G   s      "## 	-+= 	-#"uu[^,,,)%"7+#9"7 	 	
 	
 	
 <@LP(,	&* 5726#37$). 15 (- <@"7;)- ?C---    returnboolc                ~    | j         dS | j                                         s| j                                          S dS NF)r\   is_availablehas_expiredri   s    rk   is_saturatedzAsyncHfaceBackend.is_saturated   sC    >!5 ~**,, 	4~113333url   c                F    | j         dS | j                                         S rp   )r\   expect_pongrs   s    rk   rv   zAsyncHfaceBackend.expect_pong   s#    >!5~))+++rl   c                ,    | j         d uo| j         j        S N)r\   multiplexedrs   s    rk   is_multiplexedz AsyncHfaceBackend.is_multiplexed   s    ~T)Hdn.HHrl   c                    | j         | j        S 	 | j                                         }n# t          $ r
 | j        cY S w xY w| j        |k    r|n| j        S )z
        The remote may require us to a lower blocksize
        than defined. This property will avoid relying
        too much on defined blocksize.
        )r\   rN   max_frame_sizeNotImplementedError)ri   remote_max_sizes     rk   r|   z AsyncHfaceBackend.max_frame_size   sq     >!>!	""n;;==OO" 	" 	" 	">!!!	" #'.?"B"BVs   * >>AsyncSocket | Nonec                N  K   | j         t          j        | j        vr| j        dk    r| j        r`| j        | j        f| j        v rK| j        | j        | j        pdf         | _        | j        r#t          j        | _         | j        d         | _        n^t          j	        | j        v rKt          j
        | j        v r8| j        | j        pdf| _        t          j        | _         | j        d         | _        | j         t          j        k    r{| j        t          k    rt          | _        t          | _        | j        rK| j        j        | j        k    r6d | _         d | _        | j        t          k    rt          | _        t$          | _        n(| j        t          k    rt          | _        t$          | _        d S )Nhttps  r8   )r]   r3   rX   _disabled_svnscheme_preemptive_quic_cacherG   rI   rf   h11h2rN   r   r   r   socket_kind	_response	authorityr   rs   s    rk   	_new_connzAsyncHfaceBackend._new_conn   s}      Id&888w&& +4Y	*d.III'+'BY	 0S1($ ' = +DI%)%9!%<DI4#555Nd&888(,	493C'D$'N	 03	9&&~!222!6)D ~ /$.":di"G"G 	!%>%:::%6DN#. ~!666!2*Dtrl   Nonec                  K   | j         
J d            | j        J | j        J | j        d S t	                      }t          | j                  t          u }t          j        | j	        v }t          j
        | j	        v }d }|rA|s| j        t          j
        k    rd S t          j
        }|                     d          | _        n| j        t          j        k    rd S |s)|r't          j        }|                     d          | _        | j        s<| j        t          j        k    r't          j
        }|                     d          | _        | j        r | j        | j        j        v| j        j                                        | _        | j        j        ,| xj        | j        j                                        z  c_        t%          | j        d          | _        nd| _        |t          j        k    r=| j        6| j        | j        | j        | j        pdf<   | j        | j        pdf| j        vrd S || _        | j        pd| _        | j        d         | _        |                                  d {V  d S d S )	Nz<attempt to call _upgrade() prior to successful getresponse()h2c)svcrX   r   g      ?r   r8   )r   sockr]   rf   r6   typer"   r3   rX   r   r    _AsyncHfaceBackend__altsvc_prober   	conn_infoestablished_latencytotal_secondsrh   tls_handshake_latencymaxr   rG   rI   rg   close)ri   has_h3_supportis_plain_socketis_h3_disabledis_h2_disabledupgradable_svns         rk   _upgradezAsyncHfaceBackend._upgrade   s     ~))J *)) y$$$y$$$ +F ,-- ty//[8 %4+==$4+==-1 	E kn!<!<(^N#'#6#6 $7 $ $D   yKN**! En E!,'+':':t':'D'D$ ' EDI,H,H!,'+':':t':'D'D$ '	
 *N6B N6DDFF 5 >7C99<JJLL99 9<99 955
 9<5//.:, /DI<L0MN 	49#34D<WWW&DI!%!1cD,Q/DI**,,O'	 '	rl   ssl_contextssl.SSLContext | Noneca_certs
str | Noneca_cert_dirca_cert_dataNone | str | bytesssl_minimum_versionssl_maximum_version	cert_filestr | bytes | Nonekey_filekey_passwordcert_fingerprintassert_hostname"None | str | typing.Literal[False]	cert_reqsint | str | Nonec                   | j         t          j        urdS d}d}|st          |          t          j        k    rd}	 ||                                nd}|duod|v o|d         dk    }n# t          t          f$ r d}Y nw xY w|sM|K|I|G|sEt	          j	        t          j
                  }t          |d          r|                                 nd}|r
t          |dd          pd}|j        t          j        k    rd}|U|S|Q	 |                    d          }n# t          t          f$ r g }Y nw xY w|rd                    d	 |D                       }|t          |d
          r|j        du rd}t          |d          rF	 |                                 n0# t&          $ r |                    d           Y nt          $ r Y nw xY wt+          | j        d|           t/          |||t1          |t2                    r|                                n||||	|
|t1          |t6                    r|ndt1          |t2                    r|nd| j        pd| j                  | _        | j        j         | _         dS )z^Meant to support TLS over QUIC meanwhile cpython does not ship with its native implementation.FTNx509_car   load_default_certshostname_checks_common_name
c              3  >   K   | ]}t          j        |          V  d S rx   )r
   DER_cert_to_PEM_cert).0certs     rk   	<genexpr>z0AsyncHfaceBackend._custom_tls.<locals>.<genexpr>v  s>       - -;?066- - - - - -rl   check_hostnameset_fingerprintzchrome:stablecontextg     r@)insecurecafilecapathcadatacertfilekeyfilekeypasswordr   cert_use_common_nameverify_hostnamer   idle_timeoutech_config_list)!r]   r3   rX   r-   r
   	CERT_NONEcert_store_statsAttributeErrorr}   
SSLContextPROTOCOL_TLS_CLIENThasattrr   getattrverify_modeget_ca_certsjoinr   http_header_for_fingerprint
ValueErrorr   setattrr   r   
isinstancerH   encodern   _keepalive_delay_ech_configre   r   is_verified)ri   r   r   r   r   r   r   r   r   r   r   r   r   r   allow_insecure
cert_statsssl_ctx_have_certsctx_root_certificatess                     rk   _custom_tlszAsyncHfaceBackend._custom_tls-  ss     9KN**5$$ 	""3I">">#-"O"O!N	'2=2I,,...t  $& .+.y)A-  
 	' 	' 	' "'		' 	# #$& % .)@AAK{$899 #..0000" (	7%BEJJSe ! &#-77!%K$7L<P/9D9Q9QRV9W9W))"' / / / -/)))	/ ) #'99 - -CX- - - $ $L
  'K)9:: (.%77"' {$566 ;;====! A A A//@@@@@%   D
 DIy+666%2#,,,<&&((($-!5/400OO/3//OO.7% ,+&
 &
 &
"0  $9BBts;   ,A) )A?>A?D D10D1F G9	GGrX   r   c                *   | j         J | j         j                            d          D ]i}t          |          D ]W\  }}||k    r|                    d          \  }}|r|| j        k    r2	 |t          |          fc c S # t          $ r Y Tw xY wjdS )zFDetermine if remote yield support for an alternative service protocol.Nzalt-svc:)r   msggetlistr,   splitrG   rO   r   )ri   r   alt_svcprotocolalt_authorityserverrI   s          rk   __altsvc_probez AsyncHfaceBackend.__altsvc_probe  s     ~)))~)11)<< 	 	G+8+A+A  '-s??,22377  f	11!3t99,,,,,,!   D  ts   -B
BBc                  K   | j         d | _        d | _        n| j        
J d            | j        
J d            | j        t	          | j        t
                    }|r3| j                                        }||dk    r1t          j        t                    | _        t          j        | _        n>|dk    r1t          j        t                    | _        t          j        | _        nt          d| d          t          j        | j        vr1t          j        t                    | _        t          j        | _        nt          j        | j        vr1t          j        t                    | _        t          j        | _        nlt!          d          t          j        | j        vr1t          j        t                    | _        t          j        | _        nt          j        | j        vr0t          j        t                    | _        t          j        | _        nt!          d          | j        t          j        k    rt          j        t                    | _        n| j        t          j        k    r~| j        J | j        | j        \  }}| j        }n| j        | j        }}t          j        t,          | j        j        r| j        j        n|t1          |          f|| j        	          | _        t3                      | _        | j        | j        _        t9          | d
          r5| j        r.| j        d         | j        _        | j        d         | j        _        | j        t          j        urd }t9          | j        d          rt9          | j        j         d          r | j        j         j!        dk    | j        _"        nOt9          | j        j         d          r)| j        j         #                                | j        _"        nd| j        _"        | j        j         $                    d          | j        _%        	 | j        j         $                    d          | j        _&        n# tN          $ r d | j        _&        Y nw xY wd | j        _(        | j        j         )                                }t9          | j        j         d          rZt9          | j        j         j*        d          r:| j        j         j*        +                                }tY          |          }tZ          t]          d |D                       nd}	|	r| j        j&        s&|r$|d         /                                | j        _&        |dk    r|d         0                                }
t	          |
tb                    r|
| j        _2        n3t9          tf          d          rtg          j4        |
          | j        _2        |d         /                                | j        _5        n|dk    r|d         | j        _2        |r|d         | j        _)        |d         dk    rtf          j6        j7        | j        _8        n|d         dk    rtf          j6        j9        | j        _8        n\|d         dk    rtf          j6        j:        | j        _8        n4|d         dk    rtf          j6        j;        | j        _8        nd | j        _8        | j        j(        @t9          | j        d          r+| j        <                                d d         | j        _(        | j        | j        t          j        k    rF| j        Ct          j        | j        v r0t          j        t                    | _        t          j        | _        nwt          j        t                    | _        t          j        | _        | j=        rA| j>        r:t          | j        t1          | j>                  t1          | j=                             | j        | j        _        | j        j%        rNt9          | d
          r>| j        r7t          jA        t          jC                  | j        d         z
  | j        _D        t          jF                    | _G        d S | jH        | j        I                    | jH                   	 | J                    t          d            d {V  n# t          t          t          t          t          f$ r}| j        | j        t          j        k    r(| jP        !| j        | jQ        pd!f}|| jP        v r| jP        |= d | _        t          j        | jR        vst          j        | jR        vr!t          d"| j         d#| j         d$          | d }~ww xY wt          jF                    | _G        | jH        | j        I                    | jT                   d | _H        t	          | j        t                    r | j        $                    d          | j        _%        | j        $                    d          | j        _&        | j        <                                d d         | j        _(        | j        )                                | j        _)        tf          j6        j;        | j        _8        | j        #                                | j        _"        | j        V                    d          | j        _5        | j        V                    d          | j        _2        | j        j%        rUt9          | d
          rG| j        jD        s=t          jA        t          jC                  | j        d         z
  | j        _D        d S d S d S d S )%Nz:_post_conn() must be called when socket is closed or unsetzEprobable attempt to call _post_conn() prior to successful _new_conn()r   zhttp/1.1zUnsupported ALPN 'z<' during handshake. Did you try to reach a non-HTTP server ?zNo compatible protocol are enabled to emit request. You currently are connected using TCP TLS and must have HTTP/1.1 or/and HTTP/2 enabled to pursue.zNo compatible protocol are enabled to emit request. You currently are connected using TCP Unencrypted and must have HTTP/1.1 or/and HTTP/2 enabled to pursue.)remote_addressserver_name
tls_config_connect_timingsr   r8   sslobj
ech_statusacceptedech_acceptedFT)binary_form_sslobjget_verified_chainc              3  @   K   | ]}t          |t                    V  d S rx   )r   r   )r   crts     rk   r   z/AsyncHfaceBackend._post_conn.<locals>.<genexpr>A  s,      JJSJsK88JJJJJJrl   PEM_cert_to_DER_certzTLSv1.0zTLSv1.1zTLSv1.2zTLSv1.3getpeernamer1   tzr?   )receive_firstr   z#The server yielded its support for z[ through the Alt-Svc header while unable to do so. To remediate that issue, either disable z" or reach out to the server admin.)W_tunnel_hostr]   r\   r   r   r#   selected_alpn_protocolr   newr   r3   r   r   r   r)   r   RuntimeErrorrX   re   rf   rG   rI   r   r   rO   r2   r   http_versionr   r   resolution_latencyr   r   r   tls_ech_acceptedr   getpeercertcertificate_dercertificate_dictr   destination_addresscipherr   r   lenr   allget_infopublic_bytesbytesissuer_certificate_derr
   r   issuer_certificate_dict
TLSVersionTLSv1tls_versionTLSv1_1TLSv1_2TLSv1_3r   _background_watch_delay_keepalive_idle_windowr/   r   nowr   utcr   time	monotonic_connected_atrh   
settimeout"_AsyncHfaceBackend__exchange_untilr   TimeoutErrorSocketTimeoutConnectionRefusedErrorConnectionResetErrorr   rg   rB   r(   r   r   getissuercert)ri   is_tcp_tls_connalpn_rI   r   cipher_tuplechaincert_in_chain_countparsed_certsissuer_public_bytesealt_keys                rk   
_post_connzAsyncHfaceBackend._post_conn  s     ( DI!DNN>))L *)) y$$S %$$
 9(NCCO )#'9#C#C#E#E#t||)<)@)O)O$/N		++)<)@)O)O$/O		+ssss   #d.@@@)<)@)O)O$/O		$t/AAA)<)@)O)O$/N		*^   ?$*<<<%8%<]%K%KDN +DII ^4+===%8%<]%K%KDN +DII&b  
 yKN**!4!8!G!Gkn,,1==='3"2GAt!YFF#'9diDF!4!8!  5E$2BB#D			$ !'#9
" 
" 
" ())&*i#4+,, 	J1F 	J040Ea0HDN-151Fq1IDN.9KN**8<Lty(++ 5I49+\:: <	(3zA N33 TY-~>> <6:i6F6S6S6U6UDN336;DN3151A1M1M $ 2N 2 2.;6:i6F6R6R$) 7S 7 7DN33 " ; ; ;6:DN333; 6:2#y/6688 49+Y77 IGI$,.B= = I !I,4GGIIE/25zz' '2 JJEJJJJJJ" ! $ I#~> RCV R>CAh>O>O>Q>QDN;.2227(2G2G2I2I/)*=uEE "$7 !% E E ").D!E!E "$'$<=P$Q$Q !% E FK1XEVEVEXEXDNB,q00@Ea= 6(4Q%?i//141EDN..!!_	11141GDN..!!_	11141GDN..!!_	11141GDN..15DN.~19g	=? ?9 6:Y5J5J5L5LRaR5P2 >!TY+/%A%A~%+/T=O*O*O!4!8!G!G'N		!4!8!G!G'O	/ D4O $	D788D899   +/)DN' .D"455 ) LHL111D4I"4MM 4 "&!1!1DF 0<I  !FGGG$	''"# (          
 " 
 	 	 	 #/ I//3?#y$*<*CDG$"=== 7@ "&
  O4+<<<"~T->>>,qdi q qCG9q q q   ?	B "^--0<I  ...  	- dn&:;; 	-1^-G-G  .H . .DN* /3n.H.H! /I / /DN+ 261F1F1H1H!1LDN.$(N$9$9$;$;DN!),)?DN&.2n.I.I.K.KDN+59^5Q5Q! 6R 6 6DN2 59N4P4P  5Q 5 5DN1
 N*	011	 N8	 ---0Eb0II N000	 	 	 	 	 	s+   9*Q$ $Q=<Q=5"c #f;Bffhttpheaderstyping.Mapping[str, str] | Noner   c                    | j         rt          d          t          j        | j        vr$| j                            t          j                   || _        || _        |r	|| _        d S i | _        d S )Nz.Can't set up tunnel for established connection)	r   r   r3   rX   r   rW   r   _tunnel_port_tunnel_headers)ri   rG   rI   r0  r   s        rk   
set_tunnelzAsyncHfaceBackend.set_tunnel  s     9 	@  
 >!333"";>222(,(, 	&#*D   #%D   rl   c                "  K   | j         J | j        J | j        J | j        J | j        t
          j        k    rt          d          | j                                         | _	        dd| j         d| j         
                    d          fg}| j                                        D ]S\  }}|                    |                                
                                |
                    d          f           T| j                             | j	        |d           |                     t"          dt"          fd	           d {V }d }|D ]M}t%          |t"                    r6|j        D ].\  }}|d
k    r#t)          |                                          } n/N|d uod|cxk    odk     nc }	|	sI|                                  d {V  |r|t.          v rt.          |         nd}
t1          d| d|
           d | _        d | _         d | _        d S )Nz7Unable to establish a tunnel using other than HTTP/1.1.)   :method   CONNECT
   :authorityr   ascii
iso-8859-1TF)r   event_type_collectablerespect_end_stream_signal   :status   ,  UnknownzTunnel connection failed:  )r\   r   r   r3  r]   r3   r   r}   get_available_stream_idr^   r   r4  itemsappendlowersubmit_headersr  r    r   r0  rO   decoder   r   OSError_protocol_factory)ri   req_contextheadervalueeventsstatusevent
raw_header	raw_valuetunnel_acceptedmessages              rk   _tunnelzAsyncHfaceBackend._tunnel  s     ~)))y$$$ ,,, ,,,9''%M   .@@BB %$::t'8::AA'JJ
 "17799 	V 	VMFE 5 5 7 7l9S9STUUUU%%O	
 	
 	
 ,,$3#5&+ - 
 
 
 
 
 
 
 
 " 	 	E%11 -2]  )J	!Z//!$Y%5%5%7%7!8!8 0 !'d 2 Lv8K8K8K8K8K8K8K8K 	K**,,%+R)0C0C	&!!  IvIIIIJJJ 	!%rl   Fexpect_framec                  K   | j         | j        dS | j                                         }| j                             |sdnd           	 | j                             | j                   d{V }n?# t          $ r Y | j                             |           dS t          t          f$ r d}Y nw xY w| j                             |           n# | j                             |           w xY w|s| j        	                                 dS 	 t          |t                    r |D ]}| j                            |           n| j                            |           n## | j                                        $ r Y dS w xY w	 | j                                        }|sn4	 | j                             |           d{V  n# t           $ r Y dS w xY wPt#          j                    | _        | j                                        S )a  This method should be called by a thread using TrafficPolice when it is idle.
        Multiplexed protocols can receive incoming data unsolicited. Like when using QUIC
        or when reaching a WebSocket.
        This method return True if there is any event ready to unpack for the connection.
        Some server implementation may be aggressive toward "idle" session
        this is especially true when using QUIC.
        For example, google/quiche expect regular ACKs, otherwise will
        deduct that network conn is dead.
        see: https://github.com/google/quiche/commit/c4bb0723f0a03e135bc9328b59a39382761f3de6
             https://github.com/google/quiche/blob/92b45f743288ea2f43ae8cdc4a783ef252e41d93/quiche/quic/core/quic_connection.cc#L6322
        NFgMbP?g?rl   )r   r\   
gettimeoutr  recvrN   r   ConnectionAbortedErrorr"  connection_lostr   listbytes_received
exceptionsbytes_to_sendsendallrI  r  r  _last_used_athas_pending_event)ri   rV  bck_timeout	peek_datagro_segmentdata_outs         rk   peek_and_reactz AsyncHfaceBackend.peek_and_react1  sb      9 65i**,, 		,?UUC@@@	."innT^<<<<<<<<II 	 	 	 I  ----- '(<= 	 	 	III	 I  ----DI  ---- 	N**,,,5	)T** 9#, ? ?KN11+>>>>? --i888~((** 	 	 	55			~3355H i''1111111111   uu		 "^--~//111s[   %A1 0C 1
B-;C B-*C ,B--C C'AE E87E8 F: :
GGT)r   r<  r=  maximal_data_in_readdata_in_len_from	stream_id
event_type%type[Event] | tuple[type[Event], ...]r   r<  ,type[Event] | tuple[type[Event], ...] | Noner=  rh  ri  $typing.Callable[[Event], int] | Nonerj  list[Event]c          	     Z  K   | j         | j        J | j        | j         | j        }| j        t          j        u t          d          }	                                }
d&fd}||dk    s|dk    sd}d}g }g }|dk    r|S |r|dk     rd}d}d}	 d}                    |
          s|s |             d{V  |	r	                                nd}t          ||          }	 |4 d{V                      |           d{V }ddd          d{V  n# 1 d{V swxY w Y   nd# t          t          t          f$ rJ}t          |t                    r)|t           u st          |t"                    rt           |v r|d}Y d}~nd}~ww xY w|j        rd	}|sc|s| j        Dt          d          r4	                                  nl# |
$ r}t+          |          |d}~ww xY w                                 n9t          |t.                    r|D ]}||t1          |          z  }	                     |           -# |
$ rQ}t          |d          r,t          |d          rt5          |j        |j                  |t+          |          |d}~ww xY wnt1          |          }| j        dz  |dz  z   | _        |||z  }	                     |           nY# |
$ rQ}t          |d          r,t          |d          rt5          |j        |j                  |t+          |          |d}~ww xY w|r |             d{V                      |
          D ]}t          |d          }|st          |t>                    rd| _        |                                   d{V  |j!        dk    rR|P|tD          u st          |t"                    r2tD          |v r)|#                    tE          |dd	                     |c S |rU|dk    rOt          |t"                    r	tH          |v s	|tH          u r(tK          d |D                       st+          d          |j!        dk    r$|j&        rd|j&        v rtO          |j&                  |j!        dk    r$| j        t          j        k    rtQ          d          	 |j&        rzd|j&        v rq|j&        )                    dd          *                    d          }d t#          |+                    d                    D             \  }}t5          |||z
            n# tX          tZ          f$ r Y nw xY wt+          |j&                  |rt          |t\                    r| j        t          j/        k    r|j!        d k    s | j        t          j        k    r5|j!        d!k    r*t          j0        | j1        vrte          d"| j                   t+          d#|j3         d$ti          |j!                   d%          |s|#                    |           n]t          ||          r8|#                    |           |r 	 | ||          z  }n&# tj          $ r Y nw xY wn|#                    |           |duo||k    }|rt          ||          s|r/|s|r|r|j6        r|r
 j7        |  |c S m|r
 j7        |  |c S |r|j6        r|r|r
 j7        |  |c S |r&|j6        r||||j3        k    r|r
 j7        |  |c S )'zThis method simplify socket exchange in/out based on what the protocol state machine orders.
        Can be used for the initial handshake for instance.N
next_timerrm   r   c                   K   g } 	                                  }|sn|                     |           -r0t          |           dk    r                    |            d {V  d S | D ]}                    |           d {V  d S )NTr8   )r_  rE  r	  r`  )tbsrf  chunkis_h3r   r   s      rk   send_pendingz8AsyncHfaceBackend.__exchange_until.<locals>.send_pending  s      !C%#1133 

8$$$	%
  .SAll3'''''''''''  . .E,,u----------. .rl   r   r?   FTrj  rl   eof_receivedexpected_lengthactual_length)partialexpectedgffffff?g333333?rj  
end_streamc              3  @   K   | ]}t          |t                    V  d S rx   )r   r    r   r,  s     rk   r   z5AsyncHfaceBackend.__exchange_until.<locals>.<genexpr>,  s,      #S#SqJq/$B$B#S#S#S#S#S#Srl   z-Remote end closed connection without responsei  rL  i*  zQTLS over QUIC did not succeed (Error 298). Chain certificate verification failed.z%without sending complete message bodyz=peer closed connection without sending complete message body  z()c              3     K   | ]B}t          d                     d |D                                                                 V  CdS )r  c              3  B   K   | ]}|                                 |V  d S rx   )isdigit)r   cs     rk   r   z?AsyncHfaceBackend.__exchange_until.<locals>.<genexpr>.<genexpr>M  s/      +H+H!AIIKK+HA+H+H+H+H+H+Hrl   N)rO   r   strip)r   r&  s     rk   r   z5AsyncHfaceBackend.__exchange_until.<locals>.<genexpr>L  se       2 2$% !$BGG+H+Hq+H+H+H$H$H$N$N$P$P Q Q2 2 2 2 2 2rl   z,    i  z8The remote server is unable to serve this resource over zStream z# was reset by remote peer. Reason: .rm   r   )8r   r\   rN   r]   r3   rX   r   r^  rb  rq  r0   rY  rZ  r"  r!  r   r   tupletimer_firedr   rx  r)   r[  r\  r	  r]  r&   rz  ry  _recv_size_emarN  r   r   
error_coder   rE  r    anyrT  r'   r+   replacer  r   r   
IndexErrorr!   r   r   rB   r(   rj  hexr   r~  reshelve)ri   rk  r   r<  r=  rh  ri  rj  rN   _has_next_timer
_proto_excrv  data_in_lenrN  reshelve_eventsreach_socketrq  subdata_inr,  udp_gro_segmentincoming_buffer_sizerP  stream_related_eventr   receivedr|  target_cap_reachedru  r   r   s                               @@@rk   __exchange_untilz"AsyncHfaceBackend.__exchange_untilj  s
      y$)C)CC>yN		[^+!(L99((**
	. 	. 	. 	. 	. 	. 	. 	.  +(A--1E1K1K'+$  ')1$$M 	$$81$<$<(-%#' #}	"!&L--	-BB X)$ )&,..(((((((6EOX002224
%dJEE"" = = = = = = = =(,		)(<(<"<"<"<"<"<"<= = = = = = = = = = = = = = = = = = = = = = = = = = = +(* " " "
 "!%9::  "&888&z599 9 !3j @ @  !GGGGGG" ? # 8:  
3$."<' .C C"<:$113333) : : : #0"2"29:
 !002222!'400 &:/6 > >O/7 +s?/C/C C> ( 7 7 H H H H#- 
> 
> 
> $+1.?#@#@ !-W$%F" F" !- +901121B+& +& +& ,-%- '4A&6&6A =
>>$ 037||, /#58Ls8RR + ,3'+??K:$33G<<<<) 	: 	: 	:  'q*;<< ) !?B B ) '5,-OaFW'" '" '"'(!) #0"2"29	: ! )&,..(((((((!9== a" a"-4UK-H-H$+ g
5BV0W0W g N **,,&&&&&&&
 (A--%1&,66 *:u = = 7 %1J$>$> ( ) #+/      & %#sNN !+:u = = + %4z$A$A *o = = ##S#SF#S#S#S S S !> ,K  
 (C//!M 0$55+EM::: )S00TY+.5P5P&o  !M G5= X X"'-"7"7 _ "# # $eDkk  
2 2).syy)?)?2 2 2.Hh
 #1(0)1H)<# # #  '
3    (666) j@S.T.T  	[^338HC8O8O	[^338HF8R8R&?$2CCC"4 f[_[d f f# #  (n%/nnVYZ_ZjVkVknnn   . 6MM%((((!%)?@@ 	6e,,,+ %% +/?/?/F/F F#1 % % % $%% (..u555 )4 <#';; #
  "":eZ#@#@ ""EW "" /	!5	! 1	!
 !+ *. D 1 1? C C#)MMM & <))?;;!MMM("(" 2"
 ' <))?;;!MMM(	"(	" -4.:!U_44& <))?;;!MMM{}	"s   ,D4 4D"D4 "
D,,D4 /D,0D4 4FA FF?G G/G**G/6IJ"AJJ"K( (L>-AL99L>	BUUU$Y33
Z ?Z methodurl	skip_hostskip_accept_encodingc                @   g | _         d| _        d| _        d| _        d| _        d| _        t          j        t          j	                  | _
        | j        | j        | j        }}nR| j        | j        }}|                    d          r/t!          |          }|j        |k    r|j        |j        p| j        }}d|                    d          fg| _         |s_|                    d          }| j                             d|| j        k    s||n|d	|                                 z   f           d
| _        | j                             d| j                            d          fd|                    d          fg           |s| j                             d           dS dS )zNInternally fhace translate this into what putrequest does. e.g. initial trame.NFr   r/  r7  r:  idnar9  r   Ts   :schemes   :path)s   accept-encodings   identity)r_   r`   ra   rc   rb   rd   r   r  r   r  _start_last_requestr   r3  rG   rI   
startswithr.   default_portr   rE  extendr   )	ri   r  r  r  r  rG   rI   
parsed_urlr   s	            rk   
putrequestzAsyncHfaceBackend.putrequest  s    &*#'+$#' #( "'#+<8<#@#@#@ (*D,=$DDDI$D~~f%% W 's^^
?d**!+*/2VTEV$D w//0
  	,#{{622IN!!!t000DL I"ZZZ%6%6%8%88	   (,D$ K&&w// 3::g../	
 	
 	
 $ 	N!!    	 	rl   rL  valuesc                   |                                 }t          |t                    r|                    d          n|}| j        t
          j        k    }|s|t          v rd S | j        I|dk    rC	 t          |d                   | _        n# t          $ r t          d|d          d          w xY w| j        |dk    rt          |d         t                    r!|d                             d          | _        nVt          |d         t                    r|d         | _        n-t          |d                                       d          | _        d S |D ]}t          |t                    r|                    d          }n:t          |t                    r|}n"t          |                              d          }|                    d	          ry|d
k    rd| _        d }| j        D ](\  }}	|                    d	          s n||k    r||	f} n)|| j                            |           | j                            d||f           | j                            ||f           d S )Nr:  s   content-lengthr   z#Invalid content-length set. Given 'z' when only digits are allowed.s   hostr  r;     :s	   :protocolT)rF  r   rH   r   r]   r3   r   r   r`   rO   r   r)   rc   r  r  rd   r_   removeinsertrE  )
ri   rL  r  encoded_headersupport_te_chunkedrM  encoded_valueitem_to_remove_k_vs
             rk   	putheaderzAsyncHfaceBackend.putheader  s    3=fc3J3JVw///PV $(9#? " 	!333&.>EV3V3V.1&)nn++   #d&)ddd   %-.G2K2K&)S)) O+1!9+;+;F+C+C((F1Iu-- O+1!9((+.vay>>+@+@+N+N(F $	 $	E%%% @ %\ : :E5)) @ % #E

 1 1, ? ?((.. !\11.2D+!%"n  FB==.. ^++*,b , "-N)).999%%&%    %%&%   ?$	 $	s   1B $B0)encode_chunkedexpect_body_afterwardmessage_bodybytes | Noner  r  ResponsePromise | Nonec                 K   | j         |                                  d {V  | j        |                                  d {V  | j         | j        J | j                                        | _        | o| j         }| j        wd }| j        D ](\  }}|dk    r||f} n|	                    d          s n)|| j        
                    |           | j                            dd| j        f           d| _        | j        st          d          	 | j                            | j        | j        |           n4# | j                                        $ r}t          |          |d }~ww xY w	 g }		 | j                                        }
|
sn|	                    |
           2| j        t&          j        u r4t+          |	          dk    r!| j                             |	           d {V  n%|	D ]"}| j                             |           d {V  #t/          j                    | _        nT# t4          $ rG}t7          | | j        | j                  }|| j        |j        <   || j        |j        <   ||_         |d }~ww xY w|sz| j!        r8| j"        r1tG          j$        tJ          j&                  | j!        z
  | j"        _'        t7          | | j        | j                  }|| j        |j        <   || j        |j        <   |S d S )	Nr9  r  r	   T)zOurllib3.future do not support emitting HTTP requests without the `Host` header zKIt was only permitted in HTTP/1.0 and prior. This client support HTTP/1.1+.r}  r8   r   )(r   connectr\   r.  rC  r^   rd   rc   r_   r  r  r  rb   r)   rG  r^  r_  rE  r]   r3   rX   r	  r`  r  r  ra  BrokenPipeErrorr5   	_promisesuid_promises_per_streamrj  promiser  r   r   r  r   r  request_sent_latency)ri   r  r  r  should_end_streamexisting_authoritycursor_headercursor_valuer,  rs  bufrt  rps                rk   
endheaderszAsyncHfaceBackend.endheaders+  s      9,,..        >!//#########y$)C)CC .@@BB &%Ed.E*E 	
 #/!%/3~  +| M11*7)F&E$//55 E "-%%&8999N!!!mT5M%NOOO'+D$' 	  	*N)), *    
 ~((** 	* 	* 	*"")	*	2C n2244 

3	  yKN**s3xx!||i'',,,,,,,,,,  3 3E)++E2222222222 "&!1!1D  	 	 	 tGGB%'DN26"68D%bl3AIG	 % 		' DN LHL111D4LL 3 !tGGB%'DN26"68D%bl3Its2   'D; ;E,E''E,0B!H* *
I;4AI66I;_AsyncHfaceBackend__bufr  _AsyncHfaceBackend__stream_id _AsyncHfaceBackend__close_streamc                   K    j         J  j        J t           j         d          }d fd} j                             |t	          |                    du r|r j                                         nd }t           j        ||          }|4 d {V   j                             j                   d {V }d d d           d {V  n# 1 d {V swxY w Y   |j	        rt          |t                    r |D ]}	 j                             |	           n j                             |            |             d {V   j                             |t	          |                    du  j                             |||           	  j                                         }
|
sn! j                            |
           d {V  =t!          j                     _        d S )Nrq  rm   r   c                    K   	 j                                         } | sd S j                            |            d {V  >rx   r\   r_  r   r`  rf  ri   s    rk   rv  z2AsyncHfaceBackend.__write_st.<locals>.send_pending  Y      2>7799 Ei''111111111	2rl   Tr}  r  )r\   r   r   should_wait_remote_flow_controlr	  rq  r0   rY  rN   r  r   r\  r]  submit_datar_  r`  r  r  ra  )ri   r  r  r  r  rv  rq  r  r  re  rf  s   `          rk   
__write_stzAsyncHfaceBackend.__write_st  s      ~)))y$$$!$.,??	2 	2 	2 	2 	2 	2 N::;E

SS  9HQ22444TJ!$)ZFFC ? ? ? ? ? ? ? ? $	t~ > >>>>>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  '4(( 7#* ? ?KN11+>>>>? --g666,..       # N::;E

SS & 	""% 	# 	
 	
 	
	.~3355H )##H---------	. "^--s   &C
CCc                  K   | j         J | j        J | j                             |           	 | j                                         }|sn!| j                            |           d{V  =	 | j        |= n# t          $ r Y nw xY w| j                                         r|                                  d{V  t          j
                    | _        dS )zKill a stream properly.Nrw  )r\   r   submit_stream_resetr_  r`  _pending_responsesKeyErrorrr   r   r  r  ra  )ri   r  rf  s      rk   
__abort_stzAsyncHfaceBackend.__abort_st  s     ~)))y$$$**[*AAA	.~3355H )##H---------	.	'44 	 	 	D	 >%%'' 	**,,!^--s   /A8 8
BB_AsyncHfaceBackend__amt&_AsyncHfaceBackend__respect_end_signal#_AsyncHfaceBackend__dummy_operation/tuple[list[bytes], bool, HTTPHeaderDict | None]c           	       K   |rr	 | j         |= n# t          $ r Y nw xY w| j        L| j                                        r3| j                                        r|                                  d{V  g ddfS d}|                     t          dt          t          f|d ||           d{V }t          j
                    | _        |r|d         j        rd}	 | j         |= n# t          $ r Y nw xY w| j        n| j                                        r4| j                                        r|                                  d{V  n!| j        r|                                  d{V  d}|rd}t          |d         t                    rd}n0t          |          dk    rt          |d         t                    rd}|t!                      }||         j        D ]N\  }	}
|	d	         d
k    r|                    |	                    d          |
                    d                     O|                    |           |sg d|fS d |D             ||fS )af  Allows us to defer the body loading after constructing the response object.

        Returns the body as a list of per-frame chunks (not concatenated):
        the caller feeds them straight into its ``BytesQueueBuffer`` so
        contiguity is produced lazily and, for frame-aligned reads,
        zero-copy. Joining here would defeat that buffer.
        NTFc                *    t          | j                  S rx   )r	  data)xs    rk   <lambda>z-AsyncHfaceBackend.__read_st.<locals>.<lambda>  s    s16{{ rl   )r   r<  rh  ri  rj  r=  r?   r1   r   :   r:  r;  c                    g | ]	}|j         
S  )r  r  s     rk   
<listcomp>z/AsyncHfaceBackend.__read_st.<locals>.<listcomp>4  s    $$$QV$$$rl   )r  r  r\   is_idlerr   r   r  r   r    r  r  ra  r~  r   r   r	  r   r0  rW   rH  pop)ri   r  r  r  r  eotrN  trailersidxrQ  rR  s              rk   	__read_stzAsyncHfaceBackend.__read_st  s     $  
	"+K88    ~)>))++ '0J0J0L0L '**,,&&&&&&&tT>!=A=R=R$ "'22!&: >S >
 >
 8
 8
 8
 8
 8
 8
 "^-- 	*fRj+ 	*C+K88    ~)>))++ *0J0J0L0L ***,,&&&&&&&&\ *--//))))))) 	.C&*o66 V!!j_&M&M! )++-3C[-@  )J	!!},,  &--g66	8H8H8V8V    

3 .tX-- %$V$$$
 	
s    
C   
C-,C-r  early_response_callbackr  r  Gtyping.Callable[[AsyncLowLevelResponse], typing.Awaitable[None]] | Noner;   c               R  K   | j         | j        | j        st                      t	                      }d }| j        s| j        }n|r|j        nd }|                     t          t          fdt          t          fd|           d {V                                 }t          j                    | _        |j        D ]e\  }}|"|d         dk    r|dk    rt!          |          })|                    |                    d          |                    d                     ft'          |t                    o|d	k    }	|a	 |	r| j        |j                 }n| j                            |j                  }n:# t*          $ r}
t-          d
|j         d          |
d }
~
ww xY w|	s| j        |j        = |t-          d          |j        }d}|j        D ]\  }}|dk    r|} n|d	k    s|dk    r1d|cxk    rdk     r$n n!t3          |j        | j        | j                  }nd }	 t8          |         }n# t*          $ r d}Y nw xY w|	r||Wt;          |                    d          || j        ||d | j        | j         |j        	  	        }||_!         ||           d {V  tD          #                    | ||           d {V S t;          |                    d          || j        |||s	|| j        nd | j        | j         |j        || j$                  | _%        | j%        |_&        || j%        _!        | j        |j'        = |rV| j        (                                r| )                                 d {V  n6| j*        r| +                                 d {V  n| j%        | j,        |j        <   | j%        S )NTF)r   r<  r=  rj  r   r  r>  r:  r;  e   zResponse received (stream: z) but no promise in-flightz@Got an HTTP response without a status code. This is a violation.rl   r7  r8  r?  r@  rA  )bodyr   rI   rj  r  )r   rI   rj  dsastream_abort)-r   r\   r  r*   r   rz   r^   rj  r  r    r   r  r  r  ra  r0  rO   rW   rH  r   r  r  r)   r~  request_headersr:   _AsyncHfaceBackend__read_st_AsyncHfaceBackend__write_str   r;   	_http_vsnrG   rI   from_promiser>   getresponse_AsyncHfaceBackend__abort_str   responser  rr   r   r  r   r  )ri   r  r  r0  rO  rj  
head_eventrQ  rR  is_early_responser,  r  	http_verbr  reasonearly_responses                   rk   r  zAsyncHfaceBackend.getresponse9  s      9 6dn 6"$$$ ""!" 	?II-4>))$I ''#( ##(( +0# (         #%% 	$ "^--%/%7 	X 	X!J	~*Q-4"7"7++ ^^FJ--g66	8H8H8V8VWWWW z#788JVs] 	 ?$ R"7
8LMGG"7;;J<PQQG   #b*2Fbbb 
 % A-g.?@ >R   #	%,%< 	 	!J	Z''%	 ( S==Y*44#:M:M:M:M#:M:M:M:M:M2I!3 3CC C	#F+FF 	 	 	FFF	  	&2!6$$W--N"i%/
" 
" 
" /6+--n=========*66g?V 7          /W%%N"%?#+DNN4i'
 
 
  >&-# N7;' 	H~))++ &jjll"""""""" &mmoo%%%%%%%9=D#G$56~s*   =4E2 2
F<FFH+ +H:9H:)r  r  bytes | bytearrayr  c                  K    j          j         j        t          d           j         j         j         _        t           j        d          }d fd}	  j                             j        t          |                    du r|r j        	                                nd}t           j         ||          }|4 d{V   j                              j                   d{V }ddd          d{V  n# 1 d{V swxY w Y   |j        rt          |t                    s j                            |           n|D ]} j                            |            j                             j        t$          f          r j        r8 j        r1t+          j        t.          j        	           j        z
   j        _        t5            j         j                  }	|	 j        |	j        <   |	 j        |	j        <   tA          |	
           |             d{V   j                             j        t          |                    du ʉ j        r xj        t          |          z  c_         j        !                     j        ||           tD          rtG          j$        d |           d}
	  j        %                                }|sn<	  j         &                    |           d{V  n# tN          $ r}|}
Y d}~nd}~ww xY wX|s|
r j        r8 j        r1t+          j        t.          j        	           j        z
   j        _        t5            j         j                  }	|	 j        |	j        <   |	 j        |	j        <   |
r	|	|
_(        |
|	S n4#  j        )                                $ r}tU          |          |d}~ww xY wdS )z4We might be receiving a chunk constructed downstreamNz,Trying to send data from a closed connectionrq  rm   r   c                    K   	 j                                         } | sd S j                            |            d {V  >rx   r  r  s    rk   rv  z,AsyncHfaceBackend.send.<locals>.send_pending  r  rl   T)rj  
excl_eventr   )r  r}  zhttp.client.sendr  )+r   r^   r\   r   ra   r`   r   r  r	  rq  r0   rY  rN   r  r   r\  r]  rb  r   r  r   r   r  r   r  r  r5   r_   r  r  r  rj  r%   r  r7   sysauditr_  r`  r  r  r^  r)   )ri   r  r  r  rv  rq  r  r  re  r  remote_pipe_shutdownrf  r,  s   `            rk   sendzAsyncHfaceBackend.send  s@      9 74>;Q >  
 (0+7+/+FD(!$.,??	2 	2 	2 	2 	2 	2R	>>OSYY   
 =LUT^66888QU
%di\JJ C C C C C C C C$(INN4>$B$BBBBBBBGC C C C C C C C C C C C C C C C C C C C C C C C C C C ? !'400 CN11'::::'. C C55kBBBB >33"o;O:Q 4   4 / DN $LHL999D<TT ; )tOOB-/DN26*>@D-bl;'3333"lnn$$$$$$$E >>OSYY   H + :,,D		9,,N&& '     :	,dD999;? 	->7799 -)++H5555555555& - - -+,((((((-	-  * +   5558PP N7 %T4?DNKK)+rv&:<)",7' /35(0..	 ~((** 	 	 	 	
 tsi   A+N  	&D/N  
DN  DGN   K< ;N  <
LLN  LBN   O<OOc                  K   | j         | j        dS | j                                        rdS 	 | j                                         n/# t          $ r Y dS | j                                        $ r Y dS w xY w	 | j                                        }|sn?	 | j                             |           d{V  n# t          t          j
        f$ r Y nw xY w[t          j                    | _        dS )z8Send a ping frame if possible. Otherwise, fail silently.N)r   r\   rr   pingr}   r^  r_  r`  rI  r
   r+   r  r  ra  )ri   
ping_frames     rk   r  zAsyncHfaceBackend.ping?  s6     9 6F>%%'' 	F	N!!!!" 	 	 	FF~((** 	 	 	FF		5577J i''
3333333333    		 "^--s)   A	 	
A5A54A5 B7 7CCc                  K   | j         r| j        	 | j                                         	 | j                                        }|sn?	 | j                             |           d {V  n# t
          t          j        f$ r Y nw xY w[n4# | j                                        $ r}t          |          |d }~ww xY w	 | j         
                                 | j                                          d {V  n# t
          $ r Y nw xY wd | _        d | _        i | _        i | _        i | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        t/          j                    | _        d| _        d | _        d S )NTg        )r   r\   submit_closer_  r`  rI  r
   SSLEOFErrorr^  r)   r   wait_for_closer^   r  r  r  re   r   r`   ra   r  _cached_http_vsnr  r  r  ra  r  r   )ri   goodbye_framer,  s      rk   r   zAsyncHfaceBackend.close^  s     9 	~)"N//111

"(,(D(D(F(F, "!""&)"3"3M"B"BBBBBBBBB#O  " " " "E	"
"	 ~0022 2 2 2'**12 	!!! i..0000000000    $&!"$%)"&*#'+$#'  $!!^--!s;   B 	 A* *BBB9$B44B9=8C6 6
DD)rG   rH   rI   rJ   r   rK   rL   rM   rN   rO   rA   rP   rB   rQ   rC   rR   rD   rS   rE   rK   rF   rK   )rm   rn   )rm   rO   )rm   r   r  )NNNNNNNNNNNN)r   r   r   r   r   r   r   r   r   rJ   r   rJ   r   r   r   r   r   r   r   r   r   r   r   r   rm   rn   )rX   )r   rH   rm   rM   )NNr/  )
rG   rH   rI   rJ   r0  r1  r   rH   rm   r   )F)rV  rn   rm   rn   )rk  rl  r   rn   r<  rm  r=  rn   rh  rJ   ri  rn  rj  rJ   rm   ro  )FF)
r  rH   r  rH   r  rn   r  rn   rm   r   )rL  rH   r  rH   rm   r   rx   )r  r  r  rn   r  rn   rm   r  )r  r  r  rO   r  rn   rm   r   )r  rO   rm   r   )TF)
r  rJ   r  rJ   r  rn   r  rn   rm   r  )r  r  r  r  rm   r;   )r  r  r  rn   rm   r  )(__name__
__module____qualname__r3   r   r   rX   supported_svnr   r9   default_socket_optionsr   r   r   rZ   propertyrt   rv   rz   r|   r   r   r   r   r.  r5  rU  rg  r  r  r  r  r  r  r  r  r  r  r   __classcell__)rj   s   @rk   r>   r>   D   s        _knknEM
  &(15*9C "804@D.E5T4Q9C 9C 9C 9C 9C 9C 9C 9Cv    X , , , X,
 I I I XI W W W XW , , , ,\V V V Vt .2#"&+/*.*.(,'++/'+>B&*{ { { { {z    0V V V Vv  37& & & & &2<& <& <& <&|72 72 72 72 72z $OS*.+/AE $t" t" t" t" t" t"t	  %*@ @ @ @ @DG G G GV &*]  %&+] ] ] ] ] ]@ FK1. 1. 1. 1. 1.f. . . .< &*"'`
 `
 `
 `
 `
J +/ Q Q Q Q Q Qn 	q q q q q qf. . . .>+  +  +  +  +  +  +  + rl   r>   )M
__future__r   r	  r  typingr   r   socketr   r   r   r   contrib.anytlsr
   r   _collectionsr   	_constantr   r   r   r   r   r   r   contrib.hfacer   r   r   r   r   r   r   contrib.hface.eventsr   r   r   r   r   r    r!   contrib.ssar"   r#   r$   r^  r%   r&   r'   r(   r)   r*   r+   utilr,   r-   r.   util.socket_stater/   util.sub_timeoutr0   _baser2   r3   r4   r5   hfacer6   r7   r9   r:   r;   TYPE_CHECKING_typingr<   rU   r>   r  rl   rk   <module>r-     sK   " " " " " " 



   ' ' ' ' ' ' ' ' * * * * * * * * + + + + + + . . . . . . . . * * * * * *                                                    T S S S S S S S S S                  @ ? ? ? ? ? ? ? ? ? 1 1 1 1 1 1 / / / / / /            7 6 6 6 6 6 6 6 S S S S S S S S S S	 0//////0022 E  E  E  E  E ( E  E  E  E  E rl   