
    bCi$                        S SK r S SKrS SKrS SKrS SKrS SKrS SKJrJr  S SK	J
r
  S SKJr  S SKJr  S SKJrJr  S SKJr  S SKJr  S S	KJrJrJrJrJrJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%  S SK&r&S
SK'J(r(J)r)  S
SK*J+r+  S
SK,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6  S
SK7J8r8  S
SK9J:r:J;r;J<r<  S
SK)J=r=J>r>J?r?J@r@JArA  S
SKBJCrC  S
SKDJErE   S SKFrF\FR                  rGSrJ\(       a  S
SKKJLrL  S
SK9JMrM  S
SKNJOrO   " S S5      rP " S S5      rQ " S S5      rR " S S5      rS " S S 5      rT " S! S"\S5      rU " S# S$\S5      rV " S% S&\S5      rWg! \H a    SrF\IrG N{f = f)'    N)defaultdictdeque)suppress)
HTTPStatus)SimpleCookie)cycleislice)	monotonic)TracebackType)TYPE_CHECKINGAny	AwaitableCallableDefaultDictDictIteratorListLiteralOptionalSetTupleTypeUnioncast   )hdrshelpers)AbstractResolver)
ClientConnectionErrorClientConnectorCertificateErrorClientConnectorErrorClientConnectorSSLErrorClientHttpProxyErrorClientProxyConnectionErrorServerFingerprintMismatchUnixClientConnectorErrorcert_errors
ssl_errors)ResponseHandler)ClientRequestFingerprint_merge_ssl_params)ceil_timeoutget_running_loopis_ip_addressnoopsentinel)EventResultOrError)DefaultResolver)BaseConnectorTCPConnectorUnixConnectorNamedPipeConnector)ClientTimeout)ConnectionKey)Tracec                   H    \ rS rSrSrS\\   SS4S jrS\4S jrS	S jr	Sr
g)
_DeprecationWaiterH   
_awaitable_awaited	awaitablereturnNc                     Xl         SU l        g NFr>   )selfrA   s     K/home/james-whalen/.local/lib/python3.13/site-packages/aiohttp/connector.py__init___DeprecationWaiter.__init__K   s    #    c                 D    SU l         U R                  R                  5       $ NT)r@   r?   	__await__rE   s    rF   rL   _DeprecationWaiter.__await__O   s    ((**rI   c                 ^    U R                   (       d  [        R                  " S[        5        g g )NzDConnector.close() is a coroutine, please use await connector.close())r@   warningswarnDeprecationWarningrM   s    rF   __del___DeprecationWaiter.__del__S   s"    }}MM5" rI   rB   N)__name__
__module____qualname____firstlineno__	__slots__r   r   rG   rL   rS   __static_attributes__ rI   rF   r<   r<   H   s/    *I)C. T +3 +rI   r<   c            
       V   \ rS rSrSrSrSSSSS\S\R                  S	S4
S
 jr	S	\
4S jr\4S\S	S4S jjrS	\S   4S jr\S	\R                  4S j5       r\S	\\R(                     4S j5       r\S	\\   4S j5       rS\/ S4   S	S4S jrSS jrSS jrSS jr\S	\4S j5       rSrg)
Connection\   N	connectorr4   keyr9   protocollooprB   c                     X l         Xl        X@l        X0l        / U l        UR                  5       (       a0  [        R                  " [        R                  " S5      5      U l
        g g )Nr   )_key
_connector_loop	_protocol
_callbacks	get_debug	tracebackextract_stacksys	_getframe_source_traceback)rE   r`   ra   rb   rc   s        rF   rG   Connection.__init__a   sM     	#
4<46>>%.%<%<S]]1=M%ND" rI   c                 "    SU R                    S3$ )NzConnection<>)re   rM   s    rF   __repr__Connection.__repr__q   s    TYYKq))rI   	_warningsc                 v   U R                   b  SU 0nUR                  " SU < 3[        40 UD6  U R                  R	                  5       (       a  g U R
                  R                  U R                  U R                   SS9  U SS.nU R                  b  U R                  US'   U R                  R                  U5        g g )NsourcezUnclosed connection Tshould_closezUnclosed connection)client_connectionmessagesource_traceback)
rh   rQ   ResourceWarningrg   	is_closedrf   _releasere   ro   call_exception_handler)rE   ru   kwargscontexts       rF   rS   Connection.__del__t   s    >>%%FNN1$:OVvVzz##%%OO$$TYYT$R,0=RSG%%1.2.D.D*+JJ--g6 &rI   Tc                     g)z9Force subclasses to not be falsy, to make checks simpler.Tr\   rM   s    rF   __bool__Connection.__bool__   s    rI   c                 N    [         R                  " S[        SS9  U R                  $ )Nz%connector.loop property is deprecated   )
stacklevel)rP   rQ   rR   rg   rM   s    rF   rc   Connection.loop   s#    35GTU	
 zzrI   c                 J    U R                   c  g U R                   R                  $ N)rh   	transportrM   s    rF   r   Connection.transport   s    >>!~~'''rI   c                     U R                   $ r   )rh   rM   s    rF   rb   Connection.protocol   s    ~~rI   callbackc                 B    Ub  U R                   R                  U5        g g r   )ri   append)rE   r   s     rF   add_callbackConnection.add_callback   s    OO""8,  rI   c                     U R                   S S  / sol         U H"  n[        [        5         U" 5         S S S 5        M$     g ! , (       d  f       M6  = fr   )ri   r   	Exception)rE   	callbackscbs      rF   _notify_releaseConnection._notify_release   s=    %)__Q%7"	?B)$ %$ $$s   A  
A	c                     U R                  5         U R                  b7  U R                  R                  U R                  U R                  SS9  S U l        g g )NTrx   )r   rh   rf   r   re   rM   s    rF   closeConnection.close   sE    >>%OO$$TYYT$R!DN &rI   c                     U R                  5         U R                  bK  U R                  R                  U R                  U R                  U R                  R
                  S9  S U l        g g )Nrx   )r   rh   rf   r   re   ry   rM   s    rF   releaseConnection.release   sV    >>%OO$$		4>>8S8S %  "DN	 &rI   c                 j    U R                   S L =(       d    U R                   R                  5       (       + $ r   )rh   is_connectedrM   s    rF   closedConnection.closed   s&    ~~%JT^^-H-H-J)JJrI   )ri   rf   re   rg   rh   ro   rU   )rV   rW   rX   rY   ro   
_transportr)   asyncioAbstractEventLooprG   strrs   rP   r   rS   r   r   propertyrc   r   	Transportr   rb   r   r   r   r   r   boolr   r[   r\   rI   rF   r^   r^   \   s2   JO"O O "	O
 ''O 
O *# * (0 7 7D 7'$-  g//   (8G$5$56 ( (
 (?3  -Xb$h%7 -D -"" K K KrI   r^   c                   "    \ rS rSrSrSS jrSrg)_TransportPlaceholder   z.placeholder for BaseConnector.connect functionNc                     g r   r\   rM   s    rF   r   _TransportPlaceholder.close   s    rI   r\   rU   )rV   rW   rX   rY   __doc__r   r[   r\   rI   rF   r   r      s
    8rI   r   c                   V   \ rS rSrSrSrSrSr\SSSSSS	S
.S\	\
S\4   S\S\S\S\S\\R                      S\SS4S jjr\4S\SS4S jjrS;S jrS\SS4S jrS;S jr   S<S\\\      S\\   S\\   SS4S jjr\S\4S j5       r\S\4S j5       r\S\4S  j5       rS=S! jr S"S#S$\!SS4S% jr"S=S& jr#S\$S   4S' jr%S=S( jr&\S\4S) j5       r'S"S#S\4S* jr(S+\)S,\*S-   S.S/S\+4S0 jr,S"S#S\\!   4S1 jr-S=S2 jr.S"S#S3\!SS4S4 jr/SS5.S"S#S6\!S7\SS4S8 jjr0S+\)S,\*S-   S.S/S\!4S9 jr1S:r2g)>r4      a0  Base connector class.

keepalive_timeout - (optional) Keep-alive timeout.
force_close - Set to True to force close and do reconnect
    after each request (and between redirects).
limit - The total number of simultaneous connections.
limit_per_host - Number of simultaneous connections to one host.
enable_cleanup_closed - Enables clean-up closed ssl transports.
                        Disabled by default.
timeout_ceil_threshold - Trigger ceiling of timeout values when
                         it's above timeout_ceil_threshold.
loop - Optional event loop.
TNg       @Fd   r      keepalive_timeoutforce_closelimitlimit_per_hostenable_cleanup_closedrc   timeout_ceil_thresholdr   r   r   r   r   rc   r   rB   c                   U(       a  Ub  U[         La  [        S5      eOU[         L a  Sn[        U5      nXpl        SU l        UR                  5       (       a/  [        R                  " [        R                  " S5      5      U l
        0 U l        X0l        X@l        [        5       U l        [!        [        5      U l        [%        [&        U5      U l        X l        [!        [,        5      U l        X`l        [2        R4                  " [6        US9U l        [;        5       U l        S U l        S U l         U(       + U l!        / U l"        U RG                  5         g )Nz6keepalive_timeout cannot be set if force_close is Trueg      .@Fr   rc   )$r1   
ValueErrorr.   _timeout_ceil_threshold_closedrj   rk   rl   rm   rn   ro   _conns_limit_limit_per_hostset	_acquiredr   _acquired_per_hostr   float_keepalive_timeout_force_closer   _waitersrg   	functoolspartialr)   _factoryr   cookies_cleanup_handle_cleanup_closed_handle_cleanup_closed_disabled_cleanup_closed_transports_cleanup_closed)rE   r   r   r   r   r   rc   r   s           rF   rG   BaseConnector.__init__   s!     ,1B(1R O  !H,$(!%'=$>>%.%<%<S]]1=M%ND"PR-/2u  	 #'u.?"@' $E*
!))/E#~ ?C FJ#,A(A%MO'rI   ru   c                    U R                   (       a  g U R                  (       d  g U R                  R                  5        Vs/ s H  n[        U5      PM     nnU R	                  5         SU 0nUR
                  " SU < 3[        40 UD6  U USS.nU R                  b  U R                  US'   U R                  R                  U5        g s  snf )Nrw   zUnclosed connector zUnclosed connector)r`   connectionsr{   r|   )
r   r   valuesrepr_closerQ   r}   ro   rg   r   )rE   ru   cconnsr   r   s         rF   rS   BaseConnector.__del__
  s    <<{{"&++"4"4"67"6Qa"67D!,TH5Q&Q +

 !!-*.*@*@G&'

))'2 8s   Cc                 <    [         R                  " S[        5        U $ )NzH"with Connector():" is deprecated, use "async with Connector():" instead)rP   rQ   rR   rM   s    rF   	__enter__BaseConnector.__enter__  s    4	

 rI   excc                 $    U R                  5         g r   )r   )rE   r   s     rF   __exit__BaseConnector.__exit__'  s    rI   c                    #    U $ 7fr   r\   rM   s    rF   
__aenter__BaseConnector.__aenter__*  s
     s   exc_type	exc_valueexc_tracebackc                 @   #    U R                  5       I S h  vN   g  N7fr   )r   )rE   r   r   r   s       rF   	__aexit__BaseConnector.__aexit__-  s      jjls   c                     U R                   $ )z1Ultimately close connection on releasing if True.)r   rM   s    rF   r   BaseConnector.force_close5  s        rI   c                     U R                   $ )zyThe total number for simultaneous connections.

If limit is 0 the connector has no limit.
The default limit size is 100.
)r   rM   s    rF   r   BaseConnector.limit:  s     {{rI   c                     U R                   $ )zThe limit for simultaneous connections to the same endpoint.

Endpoints are the same if they are have equal
(host, port, is_ssl) triple.
)r   rM   s    rF   r   BaseConnector.limit_per_hostC  s     ###rI   c                    U R                   (       a!  U R                   R                  5         SU l         U R                  R                  5       nU R                  nU R
                  (       Ga9  0 nX-
  nU R
                  R                  5        GH  u  pV/ nU H  u  pUR                  5       (       a{  X-
  S:  a_  UR                  n
UR                  5         UR                  (       a0  U R                  (       d  U R                  R                  U
5        M}  M  M  UR                  X45        M  UR                  n
UR                  5         UR                  (       d  M  U R                  (       a  M  U R                  R                  U
5        M     U(       d  GM
  XsU'   GM     X0l        U R
                  (       a2  [        R                  " U SUU R                  U R                   S9U l         gg)zCleanup unused transports.Nr   _cleanupr   )r   cancelrg   timer   r   itemsr   r   r   is_sslr   r   r   r   weakref_handler   )rE   nowtimeoutr   deadlinera   r   aliveprotouse_timer   s              rF   r   BaseConnector._cleanupL  sq     '') $(D jjoo));;;K}H"kk//1
',OE))++#.2(-I!KKM"zz$2O2O $ ? ? F Fy Q 3Pz "LL%):;$)OO	:::d.K.K.K ;;BB9M (- 5',$% 2( &K;;#*#9#9

'+'C'C$D  rI   ra   r9   valc                 |    U R                   nX;  a  g X1   nUR                  U5        U(       d  U R                   U	 g g r   )r   remove)rE   ra   r  acquired_per_hostr   s        rF   _drop_acquired_per_host%BaseConnector._drop_acquired_per_hosty  sC     !33'!&S'', rI   c                 R   U R                   (       a  U R                   R                  5         U R                   H  nUc  M  UR                  5         M     / U l        U R                  (       d<  [
        R                  " U SU R                  U R                  U R                  S9U l         gg)znDouble confirmation for transport close.

Some broken ssl servers may leave socket open without proper close.
Nr   r   )
r   r   r   abortr   r   r   _cleanup_closed_periodrg   r   )rE   r   s     rF   r   BaseConnector._cleanup_closed  s    
 &&''..088I$! 9 +-',,*1*@*@!++

'+'C'C+D' -rI   c                 H    U R                  5         [        [        5       5      $ )zClose all opened transports.)r   r<   r0   rM   s    rF   r   BaseConnector.close  s    !$&))rI   c                    U R                   (       a  g SU l          U R                  R                  5       (       ax   U R                  R	                  5         U R
                  R	                  5         U R                  R	                  5         S U l        U R                  R	                  5         S U l	        g U R                  (       a  U R                  R                  5         U R                  (       a  U R                  R                  5         U R                  R                  5        H  nU H  u  p#UR                  5         M     M      U R
                   H  nUR                  5         M     U R                   H  nUc  M  UR                  5         M     U R                  R	                  5         U R
                  R	                  5         U R                  R	                  5         S U l        U R                  R	                  5         S U l	        g ! U R                  R	                  5         U R
                  R	                  5         U R                  R	                  5         S U l        U R                  R	                  5         S U l	        f = frK   )r   rg   r~   r   clearr   r   r   r   r   r   r   r   r  )rE   datar  t0r   s        rF   r   BaseConnector._close  s   <<	/zz##%%, KKNN  "MM!#'D ++113*.D'1 ##$$++- **++224**,!%IEKKM "& -  ( "<<	(OO% =
 KKNN  "MM!#'D ++113*.D' KKNN  "MM!#'D ++113*.D's   H 2CH ;H A8I>c                     U R                   $ )z+Is connector closed.

A readonly property.
)r   rM   s    rF   r   BaseConnector.closed  s     ||rI   c                    U R                   (       a  U R                   [        U R                  5      -
  nU R                  (       aM  US:  aG  XR                  ;   a8  U R                  R                  U5      nUc   eU R                  [        U5      -
  nU$ U R                  (       aI  XR                  ;   a:  U R                  R                  U5      nUc   eU R                  [        U5      -
  nU$ SnU$ )z
Return number of available connections.

The limit, limit_per_host and the connection key are taken into account.

If it returns less than 1 means that there are no connections
available.
r   r   )r   lenr   r   r   get)rE   ra   	availableacquireds       rF   _available_connections$BaseConnector._available_connections  s     ;;c$..&99I $$M2222266s;+++ 003x=@	  !!c-D-D&D..2237H''',,s8}<I  IrI   reqtracesr:   r   r8   c                 P  #    UR                   nU R                  U5      nUS::  d  X@R                  ;   a  U R                  R	                  5       nU R                  U   R                  U5        U(       a!  U H  nUR                  5       I Sh  vN   M      UI Sh  vN    X@R                  ;   a!  U R                  U   (       d  U R                  U	 U(       a!  U H  nUR                  5       I Sh  vN   M     U R                  U5      n	U	Gc'  [        [        [        5       5      n
U R                  R!                  U
5        U R"                  U   R!                  U
5        U(       a!  U H  nUR%                  5       I Sh  vN   M      U R'                  XU5      I Sh  vN n	U R(                  (       a  U	R+                  5         [-        S5      e U R(                  (       d,  U R                  R                  U
5        U R/                  XJ5        U(       a!  U H  nUR3                  5       I Sh  vN   M     OU(       a  [        [        [        5       5      n
U R                  R!                  U
5        U R"                  U   R!                  U
5        U H  nUR5                  5       I Sh  vN   M     U R                  R                  U
5        U R/                  XJ5        U R                  R!                  U	5        U R"                  U   R!                  U	5        [7        XXR                  5      $  GN GN! [         aH  nX@R                  ;   a2   U R                  U   R                  U5        Ue! [         a     Uef = fUeSnAff = f! X@R                  ;   a#  U R                  U   (       d  U R                  U	 f f f = f GN GN@ GN$! [         aO    U R(                  (       d<  U R                  R                  U
5        U R/                  XJ5        U R1                  5         e f = f GN GN~7f)z'Get from pool or create new connection.r   NzConnector is closed.)connection_keyr  r   rg   create_futurer   send_connection_queued_startBaseExceptionr  r   send_connection_queued_end_getr   r)   r   r   addr   send_connection_create_start_create_connectionr   r   r   r  _release_waitersend_connection_create_endsend_connection_reuseconnr^   )rE   r  r  r   ra   r  futtraceer  placeholders              rF   connectBaseConnector.connect  sm       //4	 >SMM1****,C MM#%%c*#E<<>>> $+		 --'c0Bc*#E::<<< $ 		#=0E0GHKNN{+##C(,,[9#E<<>>> $C"55c7KK<<KKM/0FGG   ||NN))+600B#E::<<< $ "?4I4KL"";/'',00=#E99;;; $%%k2,,S>5!$((/$UJJ77A ?   	--'c*11#6  &  	 --'c0Bc* 1C'
 = ? L ! ||NN))+600B((* = <s   B
P&L)P&L/ L,L/ !AP&0N;1BP&>N>?P&O O0O AP&+P ,A9P&%P#&BP&,L/ /
N9M<	M)'M<)
M73M<6M77M<<NN 4N88P&>P&O APP&#P&c                     U R                   U   nU R                  R                  5       nU(       Ga  UR	                  5       u  pEUR                  5       (       a  X5-
  U R                  :  aZ  UR                  nUR                  5         UR                  (       a,  U R                  (       d  U R                  R                  U5        OoU(       d  U R                   U	 U$ UR                  nUR                  5         UR                  (       a,  U R                  (       d  U R                  R                  U5        U(       a  GM  U R                   U	 g ! [         a     g f = fr   )r   KeyErrorrg   r   popr   r   r   r   r   r   r   r   )rE   ra   r   t1r  r  r   s          rF   r&  BaseConnector._getA  s   	KK$E ZZ__		IE!!##7T444 %IKKMzz$*G*G77>>yI  KK, L!OO	::d&C&C33::9E% e* KK5  		s   E 
EEc                    U R                   (       d  g[        U R                   R                  5       5      n[        R                  " U5        U Hs  nU R                  U5      S:  a  M  U R                   U   nU(       d  M2  UR                  5       nUR                  5       (       d  UR                  S5          gU(       a  MA  Mu     g)z
Iterates over all waiters until one to be released is found.

The one to be released is not finished and
belongs to a host that has available connections.
Nr   )	r   listkeysrandomshuffler  popleftdone
set_result)rE   queuesra   waiterswaiters        rF   r*  BaseConnector._release_waiter`  s     }} dmm((*+vC**3/!3mmC(G' *{{}}%%d+	 ' rI   r  c                     U R                   (       a  g  U R                  R                  U5        U R                  X5        U R	                  5         g ! [
         a     g f = fr   )r   r   r  r  r*  r4  )rE   ra   r  s      rF   _release_acquiredBaseConnector._release_acquiredz  sU    <<	#NN!!%(((4   "  	 	s   ,A 
AArx   rb   ry   c                   U R                   (       a  g U R                  X5        U R                  (       a  SnU(       d  UR                  (       a\  UR                  nUR                  5         UR                  (       a.  U R                  (       d  U R                  R                  U5        g g g U R                  R                  U5      nUc  / =oPR                  U'   UR                  X R                  R                  5       45        U R                  c<  [        R                   " U SU R"                  U R                  U R$                  S9U l        g g )NTr   r   )r   rE  r   ry   r   r   r   r   r   r   r   r  rg   r   r   r   r   r   r   )rE   ra   rb   ry   r   r   s         rF   r   BaseConnector._release  s     <<s-L800 **INNzz$"?"?//66yA #@z KKOOC(E}+--C(LL(JJOO$567##+'.'='=++JJ+/+G+G($ ,rI   c                    #    [        5       e7fr   )NotImplementedError)rE   r  r  r   s       rF   r)   BaseConnector._create_connection  s      "##s   )r   r   r   r   r   r   r   r   r   r   r   r   r   rg   ro   r   r   r   )rB   r4   )NNNrU   )3rV   rW   rX   rY   r   r   ro   r  r1   r   objectr   r   intr   r   r   rG   rP   r   rS   r   r   r   r   r$  r   r   r   r   r   r   r   r)   r  r   r   r   r   r   r  r*   r   r^   r1  r&  r*  rE  r   r)  r[   r\   rI   rF   r4   r4      s    G !
 9A!&+48()5 !u!455 	5
 5 5  $5 w0015 !&5 
5n (0 3 3D 3*S T 
 37-115	4./ M*  .	
 
 !T ! ! s   $ $ $+Z	-"	-)8	-		-.*y *
#/J   / c BQ8 Q8*.w-Q8BQQ8	Q8f H_,E >4#_ #_ #QU #( ### "#
 # 
#J$ $*.w-$BQ$	$rI   r4   c                       \ rS rSrSS\\   SS4S jjrS\S\4S jr	S\
\\4   S	\\\\4      SS4S
 jrS\
\\4   SS4S jrSS jrS\
\\4   S\\\\4      4S jrS\
\\4   S\4S jrSrg)_DNSCacheTablei  NttlrB   c                 ,    0 U l         0 U l        Xl        g r   	_addrs_rr_timestamps_ttl)rE   rP  s     rF   rG   _DNSCacheTable.__init__  s    VX9;	rI   hostc                     XR                   ;   $ r   )rS  )rE   rW  s     rF   __contains___DNSCacheTable.__contains__  s    ~~%%rI   ra   addrsc                     [        U5      [        U5      4U R                  U'   U R                  b  [	        5       U R
                  U'   g g r   )r   r  rS  rU  r
   rT  )rE   ra   r[  s      rF   r'  _DNSCacheTable.add  s>    $U|SZ8s99 $-KDS! !rI   c                     U R                   R                  US 5        U R                  b  U R                  R                  US 5        g g r   )rS  r5  rU  rT  rE   ra   s     rF   r  _DNSCacheTable.remove  s;    3%99   d+ !rI   c                 l    U R                   R                  5         U R                  R                  5         g r   )rS  r  rT  rM   s    rF   r  _DNSCacheTable.clear  s$     rI   c                 f    U R                   U   u  p#[        [        X#5      5      n[        U5        U$ r   )rS  r9  r	   next)rE   ra   rc   lengthr[  s        rF   
next_addrs_DNSCacheTable.next_addrs  s-    ~~c*VD)*T
rI   c                 l    U R                   c  gU R                  U   U R                   -   [        5       :  $ rD   )rU  rT  r
   r_  s     rF   expired_DNSCacheTable.expired  s0    99$tyy09;>>rI   rR  r   rU   )rV   rW   rX   rY   r   r   rG   rL  r   rY  r   r   rM  r   r   r   r'  r  r  rf  ri  r[   r\   rI   rF   rO  rO    s    HUO t 
& &D &0uS#X 0tDcN/C 0 0,%S/ ,d ,!eCHo $tCH~2F ?5c? ?t ?rI   rO  c            !         ^  \ rS rSrSrSSSSSSSSS\SSSSSS	S
.S\S\\   S\S\\	   S\	S\\
   S\\\\
4   S\\\\	4      S\\   S\S\\4   S\S\	S\	S\S\\R&                     S\4 U 4S jjjrS\S   4U 4S jjr\S\	4S j5       r\S\4S j5       r S?S \\   S!\\	   SS4S" jjr S@S \S!\	S#\\S$      S\\\\4      4S% jjrS&\\\	4   S \S!\	S#\\S$      S\\\\4      4
S' jrS(\ S#\S$   S)S*S\!4S+ jr"\#\$RJ                  " S5      S,\S\
4S- j5       5       r&S(\ S\\
   4S. jr'S(\ S\S/   4S0 jr(\)S1.S2\S(\ S)S*S3\*\+   S4\S\\RX                  \!4   4S5 jjr-SAS6 jr.SBS7 jr/S\4S8 jr0S9\RX                  S(\ SS4S: jr1\)4S9\RX                  S(\ S)S*S3\*\+   S\\Rd                  \!4   4
S; jjr3\)S1.S(\ S#\S$   S)S*S3\*\+   S\\RX                  \!4   4
S< jjr4S(\ S#\S$   S)S*S\\Rd                  \!4   4S= jr5S>r6U =r7$ )Cr5   i  a  TCP connector.

verify_ssl - Set to True to check ssl certifications.
fingerprint - Pass the binary sha256
    digest of the expected certificate in DER format to verify
    that the certificate the server presents matches. See also
    https://en.wikipedia.org/wiki/Transport_Layer_Security#Certificate_pinning
resolver - Enable DNS lookups and use this
    resolver
use_dns_cache - Use memory cache for DNS lookups.
ttl_dns_cache - Max seconds having cached a DNS entry, None forever.
family - socket address family
local_addr - local tuple of (host, port) to bind socket to

keepalive_timeout - (optional) Keep-alive timeout.
force_close - Set to True to force close and do reconnect
    after each request (and between redirects).
limit - The total number of simultaneous connections.
limit_per_host - Number of simultaneous connections to one host.
enable_cleanup_closed - Enables clean-up closed ssl transports.
                        Disabled by default.
loop - Optional event loop.
TN
   r   Fr   r   )
verify_sslfingerprintuse_dns_cachettl_dns_cachefamilyssl_contextssl
local_addrresolverr   r   r   r   r   rc   r   rm  rn  ro  rp  rq  rr  rs  rt  ru  r   r   r   r   r   rc   r   c          
         > [         TU ]  U
UUUUUUS9  [        XqXb5      U l        U	c  [	        U R
                  S9n	Xl        X0l        [        US9U l	        0 U l
        XPl        Xl        g )Nr   r   )rP  )superrG   r,   _sslr3   rg   	_resolver_use_dns_cacherO  _cached_hosts_throttle_dns_events_family_local_addr)rE   rm  rn  ro  rp  rq  rr  rs  rt  ru  r   r   r   r   r   rc   r   	__class__s                    rF   rG   TCPConnector.__init__  s{    ( 	/#)"7#9 	 	
 &c{P	&DJJ7H!++>OQ!%rI   rB   c                    > U R                   R                  5        H  nUR                  5         M     [        TU ]  5       $ )zClose all ongoing DNS calls.)r|  r   r   rw  r   )rE   evr  s     rF   r   TCPConnector.close  s3    ++224BIIK 5 w}rI   c                     U R                   $ )zSocket family like AF_INET.)r}  rM   s    rF   rq  TCPConnector.family$  s     ||rI   c                     U R                   $ )z%True if local DNS caching is enabled.)rz  rM   s    rF   ro  TCPConnector.use_dns_cache)  s     """rI   rW  portc                     Ub   Ub  U R                   R                  X45        gUc  Ub  [        S5      eU R                   R                  5         g)z8Remove specified host/port or clear all dns local cache.Nz5either both host and port or none of them are allowed)r{  r  r   r  )rE   rW  r  s      rF   clear_dns_cacheTCPConnector.clear_dns_cache.  sN      0%%tl3!1WXX$$&rI   r  r:   c                 b  #    [        U5      (       a  UUUU R                  SSS./$ U R                  (       d  U(       a"  U H  nUR                  U5      I Sh  vN   M     U R                  R                  XU R                  S9I Sh  vN nU(       a"  U H  nUR                  U5      I Sh  vN   M     U$ X4nX`R                  ;   af  U R                  R                  U5      (       dF  U R                  R                  U5      nU(       a"  U H  nUR                  U5      I Sh  vN   M     U$ [        R                  " U R                  XaX#5      5      n [        R                  " U5      I Sh  vN $  GN N N NV N! [        R                   a    SS jn	UR!                  U	5        e f = f7f)z*Resolve host and return list of addresses.r   )hostnamerW  r  rq  r  flagsNrq  c                     [        [        [        R                  5         U R	                  5         S S S 5        g ! , (       d  f       g = fr   )r   r   r   CancelledErrorresult)r-  s    rF   drop_exception2TCPConnector._resolve_host.<locals>.drop_exceptions  s(    i)?)?@JJL A@@s	   9
A)r-  z$asyncio.Future[List[Dict[str, Any]]]rB   N)r/   r}  rz  send_dns_resolvehost_startry  resolvesend_dns_resolvehost_endr{  ri  rf  send_dns_cache_hitr   create_task_resolve_host_with_throttleshieldr  add_done_callback)
rE   rW  r  r  r.  resra   r  resolved_host_taskr  s
             rF   _resolve_hostTCPConnector._resolve_host9  s      !%  "ll	 	 ""#E::4@@@ $ ..t$,,.OOC#E88>>> $ Jl$$$T-?-?-G-G-L-L''2237F#E224888 $M %00,,SE
		 (:;;;G AO ? 9$ <%% 	! 00@	ss   AF/E5/F/E8	$F/-E:.A7F/%E<&0F/F  0E>1F  4F/8F/:F/<F/>F   ,F,,F/ra   c                   #    XR                   ;   aR  U R                   U   nU(       a"  U H  nUR                  U5      I Sh  vN   M     UR                  5       I Sh  vN   GO[        U R                  5      U R                   U'   U(       a"  U H  nUR                  U5      I Sh  vN   M      U(       a"  U H  nUR                  U5      I Sh  vN   M     U R                  R                  X#U R                  S9I Sh  vN nU(       a"  U H  nUR                  U5      I Sh  vN   M     U R                  R                  X5        U R                   U   R                  5          U R                   R                  U5        U R                  R!                  U5      $  GN\ GNC N N N N! [         a"  nU R                   U   R                  US9  e SnAff = f! U R                   R                  U5        f = f7f)z(Resolve host with a dns events throttle.Nr  )r   )r|  r  waitr2   rg   send_dns_cache_missr  ry  r  r}  r  r{  r'  r   r$  r5  rf  )	rE   ra   rW  r  r  eventr.  r[  r/  s	            rF   r  (TCPConnector._resolve_host_with_throttlez  s     +++--c2E#E224888 $**, .@

-KD%%c*#E33D999 $3!'#>>tDDD "( #nn44T4UU!'#<<TBBB "( ""&&s2))#.224 ))--c2!!,,S11; 9 :
 EU C !  ))#.22q29	 ))--c2s   ?G:FG:F AG:&F#'G:0 F+ F%/F+  F'$F+ %F)&A F+ '7G: G:#G:%F+ 'F+ )F+ +
G5GGG G77G:r  r   r8   c                    #    UR                   (       a  U R                  XU5      I Sh  vN u  pEU$ U R                  XU5      I Sh  vN u  pEU$  N& N
7f)zSCreate connection.

Has same keyword arguments as BaseEventLoop.create_connection.
N)proxy_create_proxy_connection_create_direct_connection)rE   r  r  r   _r  s         rF   r)  TCPConnector._create_connection  sS      99!::3PPHA  ";;CQQHA	 QQs!   'AAAA	AAverifiedc                 *   U (       a  [         R                  " 5       $ [         R                  " [         R                  5      nU=R                  [         R
                  -  sl        U=R                  [         R                  -  sl        SUl        [         R                  Ul	         U=R                  [         R                  -  sl        UR                  5         U$ ! [         a/  n[        R                  " SR                  U5      5         S nANFS nAff = f)NFz{!s}: The Python interpreter is compiled against OpenSSL < 1.0.0. Ref: https://docs.python.org/3/library/ssl.html#ssl.OP_NO_COMPRESSION)rs  create_default_context
SSLContextPROTOCOL_TLS_CLIENToptionsOP_NO_SSLv2OP_NO_SSLv3check_hostname	CERT_NONEverify_modeOP_NO_COMPRESSIONAttributeErrorrP   rQ   formatset_default_verify_paths)r  
sslcontextattr_errs      rF   _make_ssl_contextTCPConnector._make_ssl_context  s     --//(?(?@J#//1#//1(-J%%(]]J"""c&;&;;" //1 " - .4VH-=	 s   $#C 
D#%DDc                    UR                  5       (       a  [        c  [        S5      eUR                  n[        U[        R                  5      (       a  U$ USLa  U R                  S5      $ U R                  n[        U[        R                  5      (       a  U$ USLa  U R                  S5      $ U R                  S5      $ g)a  Logic to get the correct SSL context

0. if req.ssl is false, return None

1. if ssl_context is specified in req, use it
2. if _ssl_context is specified in self, use it
3. otherwise:
    1. if verify_ssl is not specified in req, use self.ssl_context
       (will generate a default context according to self.verify_ssl)
    2. if verify_ssl is True in req, generate a default SSL context
    3. if verify_ssl is False in req, generate a SSL context that
       won't verify
NzSSL is not supported.TF)r   rs  RuntimeError
isinstancer  r  rx  )rE   r  r  s      rF   _get_ssl_contextTCPConnector._get_ssl_context  s     ::<<{"#:;;J*cnn55!!%--e44J*cnn55!!%--e44))$//rI   r+   c                     UR                   n[        U[        5      (       a  U$ U R                  n[        U[        5      (       a  U$ g r   )rs  r  r+   rx  )rE   r  rets      rF   _get_fingerprintTCPConnector._get_fingerprint  s;    ggc;''Jiic;''JrI   client_errorargsr  r   c                :  #     [        UR                  UR                  S9 IS h  vN   U R                  R                  " U0 UD6I S h  vN sS S S 5      IS h  vN   $  N9 N N	! , IS h  vN  (       d  f       g = f! [
         a  n[        UR                  U5      UeS nAf[         a  n[        UR                  U5      UeS nAf[         aF  nUR                  c   [        U[        R                  5      (       a  e U" UR                  U5      UeS nAff = f7fNceil_threshold)r-   sock_connectr  rg   create_connectionr'   r    r!  r(   r"   OSErrorerrnor  r   TimeoutError)rE   r  r   r  r  r   r   s          rF   _wrap_create_connection$TCPConnector._wrap_create_connection  s     	A#$$W5K5K  "ZZ994J6JJ   K     	T1#2D2DcJPSS 	L)#*<*<cBK 	Ayy ZW5I5I%J%Js1137S@	As   D"B  A B   A&
A"A&B  A$B  D B  "A&$B  &A=,A/-A=9B  <D=B   
D
B!!D.CDADDDc                     UR                  5       (       d  gUR                  nUc   eUR                  S:w  a  gU R                  5         g)zRaise a :py:exc:`RuntimeError` on missing ``start_tls()``.

It is necessary for TLS-in-TLS so that it is possible to
send HTTPS queries through HTTPS proxies.

This doesn't affect regular HTTP requests, though.
Nhttps)r   r  scheme_check_loop_for_start_tls)rE   r  	proxy_urls      rF   _fail_on_no_start_tls"TCPConnector._fail_on_no_start_tls  sD     zz||II	$$$w&&&(rI   c                 n     U R                   R                    g ! [         a  n[        S5      UeS nAff = f)Na  An HTTPS request is being sent through an HTTPS proxy. This needs support for TLS in TLS but it is not implemented in your runtime for the stdlib asyncio.

Please upgrade to Python 3.11 or higher. For more details, please see:
* https://bugs.python.org/issue37179
* https://github.com/python/cpython/pull/28073
* https://docs.aiohttp.org/en/stable/client_advanced.html#proxy-support
* https://github.com/aio-libs/aiohttp/discussions/6044
)rg   	start_tlsr  r  )rE   attr_excs     rF   r  &TCPConnector._check_loop_for_start_tls  s<    	JJ   		K 	s    
4/4c                 F     U R                  5         g! [         a     gf = f)NTF)r  r  rM   s    rF   _loop_supports_start_tls%TCPConnector._loop_supports_start_tls.  s,    	**,   		s    
  underlying_transportc                     UR                   R                  R                  S:w  a  g[        USS5      nU(       a  g[        R
                  " S[        U SS9  g)z6Issue a warning if the requested URL has HTTPS scheme.r  N_start_tls_compatibleFa  An HTTPS request is being sent through an HTTPS proxy. This support for TLS in TLS is known to be disabled in the stdlib asyncio (Python <3.11). This is why you'll probably see an error in the log below.

It is possible to enable it via monkeypatching. For more details, see:
* https://bugs.python.org/issue37179
* https://github.com/python/cpython/pull/28073

You can temporarily patch this as follows:
* https://docs.aiohttp.org/en/stable/client_advanced.html#proxy-support
* https://github.com/aio-libs/aiohttp/discussions/6044
   )rw   r   )request_infourlr  getattrrP   rQ   RuntimeWarning)rE   r  r  asyncio_supports_tls_in_tlss       rF   _warn_about_tls_in_tls#TCPConnector._warn_about_tls_in_tls6  s\     &&'1&- #'
# '
G  !	
rI   c                 `  #    U R                  5       n[        [        R                  U R	                  U5      5      n [        UR                  UR                  S9 ISh  vN    U R                  R                  UUUUR                  =(       d    UR                  UR                  S9I Sh  vN nSSS5      ISh  vN   Wc  SnU" UR                  [!        U5      5      eUR#                  U5        Xu4$  N NK! [         a    UR                  5         e f = f N\! , ISh  vN  (       d  f       Nq= f! [$         a  n	['        UR                  U	5      U	eSn	A	f[(         a  n	[+        UR                  U	5      U	eSn	A	f[          aF  n	U	R,                  c   [/        U	[0        R2                  5      (       a  e U" UR                  U	5      U	eSn	A	f[4         aV  n
[7        SUR                  < SUR8                  S SUR:                  < S	UR                  =(       d    S
 SU
< S35      U
eSn
A
ff = f7f)z$Wrap the raw TCP transport with TLS.r  N)server_hostnamessl_handshake_timeoutz:Failed to start TLS (possibly caused by closing transport)z2Cannot initialize a TLS-in-TLS connection to host :dz4 through an underlying connection to an HTTPS proxy z ssl:defaultz [])r   r   rs  r  r  r-   r  r  rg   r  r  rW  totalr$  r   r!  r  connection_mader'   r    r(   r"   r  r  r   r  	TypeErrorr   r  r  )rE   r  r  r   r  	tls_protor  tls_transportmsgr   type_errs              rF   _start_tls_connection"TCPConnector._start_tls_connection[  s     MMO	 #..$*?*?*DE
+	#$$W5K5K *.***>*>,!"(+(;(;(Gsxx.5mm +? + %M	 J $R"3#5#5ws|DD%% ''Y% %  )..0   "  	T1#2D2DcJPSS 	L)#*<*<cBK 	Ayy ZW5I5I%J%Js1137S@ 
	
 (D88,a| ,%%(YYMsww7K)6L M<q"
 
	s   :H."D5 C6 D5 #D%AC:,C8-C:1D5 <D=D5 5H.6D5 8C::DDD5 D2!D$"D2.D5 5
H+?EH+#E::H+AGH+AH&&H++H.c                B  #    U R                  U5      nU R                  U5      nUR                  R                  nUc   eUR	                  S5      (       a  UR                  S5      S-   nUR                  nUc   e U R                  XxUS9I S h  vN n	S nU	 H  nUS   nUS   nU(       a'  UR                  =(       d    US   R                  S5      OS n U R!                  U R"                  UUUUUS   US   US	   UU R$                  UUS
9I S h  vN u  pUR'                  5       (       a  U(       a   UR)                  U5        X4s  $    Uc   eUe N! [         aI  n
U
R                  c   [        U
[        R                  5      (       a  e [        UR                  U
5      U
eS n
A
ff = f N! [         a  n
U
n S n
A
GM(  S n
A
ff = f! [*         aJ  n
UR-                  5         U R.                  (       d  U R0                  R3                  U5        U
n S n
A
GM  S n
A
ff = f7f)Nz...)r  rW  r  r  rq  r  r  )	r   rs  rq  r  r  r  rt  r  r  )r  r  r  raw_hostendswithrstripr  r  r  r  r  r   r  r!   r!  r  r  r   r~  r   checkr%   r   r   r   r   )rE   r  r  r   r  r  rn  rW  r  hostsr   last_exchinfor  transpr  s                   rF   r  &TCPConnector._create_direct_connection  s4     **3/
++C0ww ==;;s#c)Dxx
	I ,,T,GGE )-E=D=D  $$9j(9AA#F &*&B&BMM#" ?..$3#//!- 'C ' !$ zz||%%f- = S V '''Nm H 	Iyy ZW5I5I%J%J 's'9'93?SH	I,! (  1 LLN8877>>vF"Hs   A9H<E EE AH:F-F+F-H4GHE 
F(AF##F((H+F--
G7G 9H GH
H>HHHHc           	      Z  #    U R                  U5        U R                  5       n0 nUR                  b  UR                  nUR                  [        R
                     U[        R
                  '   UR                  nUc   e[        [        R                  UUUR                  U R                  UR                  S9nU R                  U/ U[        S9I S h  vN u  pU	R                  5         UR                  R                  [        R                   S 5      n
U
bN  UR#                  5       (       d  XR                  [        R$                  '   OXR                  [        R$                  '   UR#                  5       (       Ga"  U(       a  U R'                  X5        [        R(                  Ul        UR,                  Ul        [.        R0                  " UR2                  S S S S9n[5        XXR                  5      nUR7                  U5      I S h  vN n UR8                  nUc   eUR;                  UU R<                  S9  UR?                  U5      I S h  vN nS Ul        S Ul          URB                  S:w  ac  URD                  nUc  [G        URB                  5      RH                  n[K        URL                  URN                  URB                  UUR                  S9eU(       d.  URQ                  SS S9nUc  [S        S	5      eURU                  5       nU(       d  URY                  5         U(       dQ  U R[                  U5      nU R]                  U R^                  UUWUR`                  US
9I S h  vN URY                  5         $ U Rc                  UUUS9I S h  vN URY                  5         $ X4$  GN GN GN]! [V         a    URY                  5         e f = f! U(       d  URY                  5         f f = f N N^! [V         a"    URY                  5         URY                  5         e f = f! URY                  5         f = f7f)N)headersauthrc   rs  r  )r  
proxy_authproxy_headers_hash)read_until_eofr      )statusr{   r  socket)r  z)Transport does not expose socket instance)r   rs  sockr  r  )r  r   )2r  r  proxy_headersr  r   HOSTr  r*   METH_GETr  rg   rs  r  r$   r   r5  AUTHORIZATIONr   PROXY_AUTHORIZATIONr  METH_CONNECTmethodr  attrevolver!  r^   sendrh   set_response_paramsr   startr   r  reasonr   phraser#   r  historyget_extra_infor  dupr$  r   r  r  r   rW  r  )rE   r  r  r   runtime_has_start_tlsr  r  	proxy_reqr   r  r  ra   conn
proxy_resprb   respr{   rawsockr  s                      rF   r  %TCPConnector._create_proxy_connection  s     	""3' $ = = ?"$(''G [[3		ii!MM
	 "&!?!?r71K "@ "
 
	 	  $$T%7%7>::<<8<D445>B!!$":":;::<<$++I;  $00IGGIM++""$4TXC d

;D(~~d33JE#>>+++
 ,,#8+/+G+G -  (--d33 "&"&*{{c)"&++"?&0&=&D&DG2&33 LL#';;$+$(LL  1"+":":8T":"R"?". K#  #*++- 1!),!%!6!6s!;J!%!=!= '&$(+ "> " "   " "77 # 8     "W
F 4 48 %  OO% 1!) 1c !   "

r   "s   CP+ND0P+N!P+?O' N$O' P B(N' AP O#P !P+2P O%P 
P+!P+$O' 'OO O  P %P ',PP P((P+)r{  r}  r~  ry  rx  r|  rz  )NNr   )r  r*   rB   NrU   )8rV   rW   rX   rY   r   r1   r   r   bytesrM  r  r   r+   r   r   r   r   rL  r   r   rG   r   r   r   rq  ro  r  r   r   r   r  r  r*   r)   r)  staticmethodr   	lru_cacher  r  r  r!   r   r   r   r  r  r  r  r  BaseTransportr  r  r  r[   __classcell__r  s   @rF   r5   r5     sO   6  '+"'),04804/38@!&+48()%'& '& e_	'&
 '&  }'& '& j)'& 4j01'& U38_-'& +,'& !uf!45'& '& '& '&   $!'&" w001#'&$ !&%'& '&Ry     #t # #
 AE	'SM	'08	'		' GK??"?,4T'],C?	d38n	?B*238_*2 *2 	*2
 g'*2 
d38n	*2X *.w-BQ	 D Z   *M hz6J BM h}6M  )=AA A !	A
 9oA A 
w  /1	2A,)$"$ #
%//#
 #
 
	#
T )=>(%//>( >( !	>(
 9o>( 
w$$o5	6>(L )=NN WN !	N 9oN 
w  /1	2N`B  B *.w-B BQB 	w$$o5	6B  B rI   r5   c                      ^  \ rS rSrSrS\SSS4S\S\S	\\	\
S4   S
\S\S\\R                     SS4U 4S jjjr\S\4S j5       rS\S\S   SSS\4S jrSrU =r$ )r6   ip  aa  Unix socket connector.

path - Unix socket path.
keepalive_timeout - (optional) Keep-alive timeout.
force_close - Set to True to force close and do reconnect
    after each request (and between redirects).
limit - The total number of simultaneous connections.
limit_per_host - Number of simultaneous connections to one host.
loop - Optional event loop.
Fr   r   Npathr   r   r   r   rc   rB   c                 4   > [         TU ]  UUUUUS9  Xl        g )Nr   r   r   r   rc   )rw  rG   _pathrE   r3  r   r   r   r   rc   r  s          rF   rG   UnixConnector.__init__|  s-     	#/) 	 	
 
rI   c                     U R                   $ )zPath to unix socket.r6  rM   s    rF   r3  UnixConnector.path       zzrI   r  r  r:   r   r8   c                   #     [        UR                  UR                  S9 IS h  vN   U R                  R	                  U R
                  U R                  5      I S h  vN u  pES S S 5      IS h  vN   U$  NP N N
! , IS h  vN  (       d  f       W$ = f! [         aT  nUR                  c   [        U[        R                  5      (       a  e [        U R                  UR                  U5      UeS nAff = f7fr  )r-   r  r  rg   create_unix_connectionr   r6  r  r  r  r   r  r&   r3  r!  rE   r  r  r   r  r  r   s          rF   r)   UnixConnector._create_connection  s     
	X#$$W5K5K  "&!B!BMM4::"        	Xyy ZW5I5I%J%J*499c6H6H#NTWW	Xs   C9"B A7B 4A=A9A=%B 0A;1B 5C97B 9A=;B =BBBB C9B 
C6"AC11C66C9r:  rV   rW   rX   rY   r   r1   r   r   r   rL  r   rM  r   r   r   rG   r   r3  r*   r   r)   r)  r[   r0  r1  s   @rF   r6   r6   p  s    	 "8@48  !!45	
   w001 
 $ c   *.w-BQ	 rI   r6   c                      ^  \ rS rSrSrS\SSS4S\S\S	\\	\
S4   S
\S\S\\R                     SS4U 4S jjjr\S\4S j5       rS\S\S   SSS\4S jrSrU =r$ )r7   i  a  Named pipe connector.

Only supported by the proactor event loop.
See also: https://docs.python.org/3/library/asyncio-eventloop.html

path - Windows named pipe path.
keepalive_timeout - (optional) Keep-alive timeout.
force_close - Set to True to force close and do reconnect
    after each request (and between redirects).
limit - The total number of simultaneous connections.
limit_per_host - Number of simultaneous connections to one host.
loop - Optional event loop.
Fr   r   Nr3  r   r   r   r   rc   rB   c                    > [         TU ]  UUUUUS9  [        U R                  [        R
                  5      (       d  [        S5      eXl        g )Nr5  z9Named Pipes only available in proactor loop under windows)rw  rG   r  rg   r   ProactorEventLoopr  r6  r7  s          rF   rG   NamedPipeConnector.__init__  s]     	#/) 	 	
 JJ11
 
 N  
rI   c                     U R                   $ )zPath to the named pipe.r:  rM   s    rF   r3  NamedPipeConnector.path  r<  rI   r  r  r:   r   r8   c                 :  #     [        UR                  UR                  S9 IS h  vN   U R                  R	                  U R
                  U R                  5      I S h  vN u  pE[        R                  " S5      I S h  vN   S S S 5      IS h  vN   [        [         W5      $  N| NF N( N! , IS h  vN  (       d  f       N/= f! [         aI  nUR                  c   [        U[        R                  5      (       a  e [        UR                  U5      UeS nAff = f7f)Nr  r   )r-   r  r  rg   create_pipe_connectionr   r6  r   sleepr  r  r  r  r!   r!  r   r)   r?  s          rF   r)  %NamedPipeConnector._create_connection  s     	I#$$W5K5K  "&!B!BMM4::"  mmA&&& $ OU++% '     	Iyy ZW5I5I%J%J&s'9'93?SH	Is   D"C B#C 4B+B%B+>B'?B+C B)C D#C %B+'B+)C +C1B42C>C DC 
DADDDr:  rA  r1  s   @rF   r7   r7     s    " "8@48  !!45	
   w001 
 0 c  , ,*.w-,BQ,	, ,rI   r7   )Xr   r   r;  rm   rk   rP   collectionsr   r   
contextlibr   httpr   http.cookiesr   	itertoolsr   r	   r   r
   typesr   typingr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   abcr   client_exceptionsr   r    r!   r"   r#   r$   r%   r&   r'   r(   client_protor)   client_reqrepr*   r+   r,   r-   r.   r/   r0   r1   locksr2   ru  r3   rs  r  ImportErrorrL  __all__clientr8   r9   tracingr:   r<   r^   r   r4   rO  r5   r6   r7   r\   rI   rF   <module>r]     s      
   *   % #      $   !   * H H R R % %J S %, (XK XKv s$ s$l$? $?NR
 = R
 j2M 2jB, B,W+  
CJs   >D= =
E
	E
