
    *Gj                        U d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlZddlZddlZddlmZ ddlmZmZmZmZmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	l m!Z! dd
l"m#Z# ddl$m%Z% ddl&m'Z'm(Z( ddl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 ddl2m3Z3 ddl4m5Z5m6Z6 ddl7Z7ddl8m9Z9m:Z:m;Z; ddl<m=Z> ddl?m@Z@ ddlAmBZB ddlCmDZD ejE        dk    rddlZFnddlFZFdZG ejH                    dk    ZI ejH                    dk    ZJejE        dk    ZKdZL e/d          ZM e/d          ZN ejO        dd          ZPePjQ        ZQ eRe
jS        T                    d                    ZU eVd d!g eWd"d#          R           ZXeBjY        ZZej[        j\        p/ej[        j]         o" eRe
jS        T                    d$                    Z^d%  eWdd&          D             Z_d'  eWdd(          D              e`d)          hz  Zad*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d; e`d<          hZbe_eaz  ebz  Zc G d= d>          ZdddAeedBeedCeedDeefdEZf G dF dG edGg dH                    Zg	 ddAeedBeedCeedDegfdJZhdKe@dDeie@egdz  f         fdLZjdDe	j	        dz  fdMZk e7jl        dNdNdNO           G dP dQ                      ZmdRe	j	        dz  dSeedDegfdTZndDeoeeemf         fdUZpdKe@dDeie@egdz  f         fdVZq e7jl        dNdNdNO           G dW dX                      Zr ejs        dYZ          d[eedDerfd\            Zt G d] d^e          Zu ejs        dYZ          d_eedDeieee'eeeef         f         fd`            Zvddae*dbeedz  dDeedz  fdcZw ejx        dd          Zyde  eWd(d)          D             dfhz  ZzdgeedDeefdhZ{	 ddieedjeRdkeedleedDeef
dmZ|dSeedz  dDeRfdnZ}dSeedDeRfdoZ~daedz  edp<   d?adDeefdqZddtZ	 ddvedweedxedyej        dzedDej        dz  fd{Z	 dd|eg e*f         dxedyej        dzedDej        dz  f
d}Zd~edxededDefdZ G d d          Z G d de+d                   Z G d de          Z G d de          Z	 ddedz  dedDeFj        fdZ G d d          ZdddeMdDdfdZ e            Z G d de.          ZefdddededDdfdZej         G d de,eM                               Z G d deeM                   Z G d deeM                   Z G d deeM                   Z G d deeeee*         z  e*f                   ZdZ ejx        e          Zde dZ ejx        e          Z ejx        d*e d          ZdZ e7jl        dNdNdNO           G d d                      ZdeedDdfdZdeedz  dDej        dz  fdZejs        deededDeRfd            ZdeededDeRfdZdS )zVarious helper functions    N)
namedtuple)Callable	GeneratorIterableIteratorMapping)suppress)EmailMessage)HeaderParser)HTTP)	parsedateceil)Path)MappingProxyTypeTracebackType)AnyContextManagerGenericOptionalProtocolTypeVarget_argsoverload)quote)
getproxiesproxy_bypass)	MultiDictMultiDictProxyMultiMapping)under_cached_propertyURL   )hdrs)client_logger      )	BasicAuthChainMapProxyETagreifyDarwinWindowsi   _T_S	_SENTINELsentinelAIOHTTP_NO_EXTENSIONS   i0  d      PYTHONASYNCIODEBUGc                 ,    h | ]}t          |          S  chr.0is     W/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/aiohttp/helpers.py	<setcomp>rA   V   s    &&&1A&&&       c                 ,    h | ]}t          |          S r:   r;   r=   s     r@   rA   rA   W   s    $$$!s1vv$$$rB          ()<>@,;:\"/[]?={} 	   c                   &    e Zd Zded         fdZdS )noopreturn)NNNc              #      K   d V  d S Nr:   selfs    r@   	__await__znoop.__await__s   s      rB   N)__name__
__module____qualname__r   ra   r:   rB   r@   r[   r[   r   s5        9%56      rB   r[    utf-8loginpasswordencodingr\   c                     d| v rt          d          |  d|                     |          }dt          j        |                              |          z   S )zEncode HTTP Basic Authentication credentials as an Authorization header value.

    Returns a string of the form ``"Basic <base64>"`` suitable for use as the
    value of the ``Authorization`` (or ``Proxy-Authorization``) header.
    rN   z2A ":" is not allowed in login (RFC 7617#section-2)zBasic )
ValueErrorencodebase64	b64encodedecode)rg   rh   ri   credss       r@   encode_basic_authrq   w   sa     e||MNNN!!x!!((22Ef&u--44X>>>>rB   c            	            e Zd ZdZ	 ddedededd f fdZedd	ededd fd
            Zedddedede	d          fd            Z
defdZ xZS )r*   z!Http basic authentication helper.re   latin1rg   rh   ri   r\   c                     |t          d          |t          d          d|v rt          d          t          j        dt          d           t	                                          | |||          S )Nz"None is not allowed as login valuez%None is not allowed as password valuerN   z5A ":" is not allowed in login (RFC 1945#section-11.1)zBasicAuth is deprecated and will be removed in aiohttp 4.0; use aiohttp.encode_basic_auth() with headers={'Authorization': ...} instead   )
stacklevel)rk   warningswarnDeprecationWarningsuper__new__)clsrg   rh   ri   	__class__s       r@   r{   zBasicAuth.__new__   s     =ABBBDEEE%<<TUUU5 	
 	
 	
 	
 wwsE8X>>>rB   auth_headerc                    	 |                     dd          \  }}n# t          $ r t          d          w xY w|                                dk    rt          d|z            	 t          j        |                    d          d                              |          }n"# t          j        $ r t          d	          w xY w	 |                     d
d          \  }}n# t          $ r t          d          w xY wt          |||          S )z<Create a BasicAuth object from an Authorization HTTP header.rX   r$   z%Could not parse authorization header.basiczUnknown authorization method %sasciiT)validatezInvalid base64 encoding.rN   zInvalid credentials.)
splitrk   lowerrm   	b64decoderl   ro   binasciiError_basic_auth_no_warn)r|   r~   ri   	auth_typeencoded_credentialsdecodedusernamerh   s           r@   ro   zBasicAuth.decode   sM   	F-8->->sA-F-F*I** 	F 	F 	FDEEE	F ??''>JKKK	9&#**733d  fX G ~ 	9 	9 	97888	9	5
 ")sA!6!6Hhh 	5 	5 	53444	5 #8Xx@@@s     6$<B! !C C C8ri   urlc                    t          |t                    st          d          |j        	|j        dS t          |j        pd|j        pd|          S )zCreate BasicAuth from url.zurl should be yarl.URL instanceNre   )
isinstancer#   	TypeErrorraw_userraw_passwordr   userrh   )r|   r   ri   s      r@   from_urlzBasicAuth.from_url   s[     #s## 	?=>>> <C$4$<4"38>r3<3E2xPPPrB   c                 B    t          | j        | j        | j                  S )zEncode credentials.)rq   rg   rh   ri   r_   s    r@   rl   zBasicAuth.encode   s     T]DMJJJrB   re   rs   )rs   )rb   rc   rd   __doc__strr{   classmethodro   r#   r   r   rl   __classcell__r}   s   @r@   r*   r*      s$       ++ >F? ??#&?7:?	? ? ? ? ? ?* A A A A; A A A [A8 3; Q Q Q3 QS Q@U Q Q Q [QK K K K K K K K KrB   r*   rg   rh   ri   rs   c                 H    t                               t          | ||f          S )zConstruct a BasicAuth without emitting the deprecation warning.

    For internal use only. Bypasses BasicAuth.__new__ so that aiohttp's own
    machinery doesn't trigger deprecation warnings in user code.
    )tupler{   r*   r   s      r@   r   r      s     ==UHh$?@@@rB   r   c                     | j         | j        | dfS |                     d          t          | j        pd| j        pd          fS )zIRemove user and password from URL if present and return BasicAuth object.Nre   )r   r   	with_userr   r   rh   )r   s    r@   strip_auth_from_urlr      sN     | 0 8Dy== 3CHNCLDVTV W WWWrB   c                     t           j                            d          } | t          |           }nP	 t          j                    }n-# t
          $ r }t          j        d|           Y d}~dS d}~ww xY w|t          rdndz  }	 t          j	        t          |                    S # t          j        $ r}t          j        d|           Y d}~nzd}~wt          $ rj}d}t          j        t                    5  |                                }ddd           n# 1 swxY w Y   | s|rt          j        d|           Y d}~nd}~ww xY wdS )	zLoad netrc from file.

    Attempt to load it from the path specified by the env-var
    NETRC or in the default location in the user's home directory.

    Returns None if it couldn't be found or fails to parse.
    NETRCNzHCould not resolve home directory when trying to look for .netrc file: %s_netrcz.netrczCould not parse .netrc file: %sFzCould not read .netrc file: %s)osenvirongetr   homeRuntimeErrorr&   debug
IS_WINDOWSnetrcr   NetrcParseErrorwarningOSError
contextlibr	   is_file)	netrc_env
netrc_pathhome_direnetrc_existss        r@   netrc_from_envr      s    
w''I)__

		y{{HH 	 	 	5  
 44444	 Z!EXF
G{3z??+++  D D D?CCCCCCCC G G G )) 	0 	0%--//L	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0  	G 	G !"BAFFFG 4s_   A 
A1A,,A1 B$ $E3CED?5D
D?D	D?D	D??ET)auto_attribsfrozenslotsc                   *    e Zd ZU eed<   edz  ed<   dS )	ProxyInfoproxyN
proxy_auth)rb   rc   rd   r#   __annotations__r*   r:   rB   r@   r   r     s,         JJJD      rB   r   	netrc_objhostc                     | t          d          |                     |          }|t          d|d          |\  }}}|s||n|}|d}t          ||          S )z
    Return :py:class:`~aiohttp.BasicAuth` credentials for ``host`` from ``netrc_obj``.

    :raises LookupError: if ``netrc_obj`` is :py:data:`None` or if no
            entry is found for the ``host``.
    NzNo .netrc file foundzNo entry for z found in the `.netrc` file.re   )LookupErrorauthenticatorsr   )r   r   auth_from_netrcrg   accountrh   r   s          r@   basicauth_from_netrcr     s     0111..t44ON$NNNOOO.E7H ?'/uuH x222rB   c                     d t                                                      D             } t                      }d |                                 D             }i }|                                D ]\  }}|\  }}|j        dv r.t	          j        d|j                                        |           A|r2|0|j        )	 t          ||j                  }n# t          $ r d }Y nw xY wt          ||          ||<   |S )Nc                 <    i | ]\  }}|d v 	|t          |          S ))httphttpswswssr"   r>   kvs      r@   
<dictcomp>z$proxies_from_env.<locals>.<dictcomp>+  s:       Aq... 	
3q66...rB   c                 4    i | ]\  }}|t          |          S r:   )r   r   s      r@   r   z$proxies_from_env.<locals>.<dictcomp>1  s'    IIIda&q))IIIrB   )r   r   z)%s proxies %s are not supported, ignoring)r   itemsr   schemer&   r   upperr   r   r   r   )
proxy_urlsr   strippedretprotovalr   auths           r@   proxies_from_envr   *  s/    LL&&((  J
   IIIj6F6F6H6HIIIH
Cnn&& , ,
st<+++!;U\=O=O=Q=QSX    	 z% /	5:FFDD"      DDD ud++E

Js   :CCCc                     | j         ,t          | j                   rt          d| j         d          t                      }	 || j                 }|j        |j        fS # t          $ r t          d| d          w xY w)z5Get a permitted proxy for the given URL from the env.NzProxying is disallowed for ``zNo proxies found for `z` in the env)r   r   r   r   r   r   r   KeyError)r   proxies_in_env
proxy_infos      r@   get_env_proxy_for_urlr   D  s    
xSX 6 6FFFFGGG%''N7#CJ/
 !666  H H HF3FFFGGGHs   A A<c                   8    e Zd ZU eed<   eed<   eed<   ded<   dS )MimeTypetypesubtypesuffixzMultiDictProxy[str]
parametersN)rb   rc   rd   r   r   r:   rB   r@   r   r   R  s9         
IIILLLKKK%%%%%%rB   r   8   )maxsizemimetypec           	         | s,t          dddt          t                                          S |                     d          }t                      }|dd         D ]k}|s|                    d          \  }}}|                    |                                                                |                    d                     l|d                                                                         }|d	k    rd
}|                    d          \  }}}	|	                    d          \  }	}}
t          ||	|
t          |                    S )a  Parses a MIME type into its components.

    mimetype is a MIME type string.

    Returns a MimeType object.

    Example:

    >>> parse_mimetype('text/html; charset=utf-8')
    MimeType(type='text', subtype='html', suffix='',
             parameters={'charset': 'utf-8'})

    re   )r   r   r   r   rM   r$   NrU   z "r   *z*/*rQ   +)r   r   r   r   	partitionaddr   strip)r   partsparamsitemkey_valuefulltypemtypestyper   s              r@   parse_mimetyper   Z  sJ     
R~ikk7R7R
 
 
 	
 NN3E&[[Fabb	 ; ; 	s++Q

399;;$$&&D(9(9::::Qx~~%%''H3((--OE1es++E1fE&^F=S=S   rB   c                   ,     e Zd Zd fdZdefdZ xZS )EnsureOctetStreamr\   Nc                 r    t                                                       |                     d           d S Nzapplication/octet-stream)rz   __init__set_default_type)r`   r}   s    r@   r  zEnsureOctetStream.__init__  s4    899999rB   c                 
   |                      dd                                          }|                    d          \  }}}|                                }|                    d          dk    r|                                 S |S )a  Re-implementation from Message

        Returns application/octet-stream in place of plain/text when
        value is wrong.

        The way this class is used guarantees that content-type will
        be present so simplify the checks wrt to the base implementation.
        zcontent-typere   rM   rQ   r$   )r   r   r   r   countget_default_type)r`   r   ctyper   s       r@   get_content_typez"EnsureOctetStream.get_content_type  sw     ,,2244 ooc**q!;;sq  ((***rB   r\   N)rb   rc   rd   r  r   r  r   r   s   @r@   r   r     sX        : : : : : :
#        rB   r   rawc                    t          t          t                                        d|            }|                                }|                    d          }t          |dd                   }|t          |          fS )zParse Content-Type header.

    Returns a tuple of the parsed content type and a
    MappingProxyType of parameters. The default returned value
    is `application/octet-stream`
    )policyzContent-Type: r:   r$   N)r   r   r   parsestrr  
get_paramsdictr   )r	  msgcontent_typer   content_dicts        r@   parse_content_typer    sz     (
6
6
6
?
?@VQT@V@V
W
WC''))L^^BFqrr
##L),7777rB   objdefaultc                     t          | dd           }|rAt          |t                    r,|d         dk    r |d         dk    rt          |          j        S |S )Nnamer   rI   rJ   )getattrr   r   r   r  )r  r  r  s      r@   guess_filenamer    sW    3%%D 
4%% $q'S..T"X__DzzNrB   z[^\041\043-\133\135-\176]c                 ,    h | ]}t          |          S r:   r;   r=   s     r@   rA   rA     s    ...qCFF...rB   	contentc                     t           t          |           k    st          d|           t                              d |           S )a  Return 7-bit content as quoted-string.

    Format content into a quoted-string as defined in RFC5322 for
    Internet Message Format. Notice that this is not the 8-bit HTTP
    format, but the 7-bit email format. Content must be in usascii or
    a ValueError is raised.
    zbad content for quoted-string c                 2    d|                      d          z   S )NrO   r   )group)xs    r@   <lambda>zquoted_string.<locals>.<lambda>  s    dQWWQZZ&7 rB   )QCONTENTsetrk   not_qtext_resub)r  s    r@   quoted_stringr&    sF     s7||##E'EEFFF77AAArB   disptypequote_fields_charsetr   c                 ~   | rt           t          |           k    st          d|           | }|rg }|                                D ]=\  }}|rt           t          |          k    st          d|d|          |r|                                dk    r-t          |d|          }|                    |d|z  f           |	 t          |          }|                    |d|z  f           # t          $ rE d                    |dt          |d|          f          }|                    |d	z   |f           Y w xY w|	                    d
d          	                    dd          }|                    |d|z  f           ?d                    d |D                       }	d                    ||	f          }|S )ak  Sets ``Content-Disposition`` header for MIME.

    This is the MIME payload Content-Disposition header from RFC 2183
    and RFC 7579 section 4.2, not the HTTP Content-Disposition from
    RFC 6266.

    disptype is a disposition type: inline, attachment, form-data.
    Should be valid extension token (see RFC 2183)

    quote_fields performs value quoting to 7-bit MIME headers
    according to RFC 7578. Set to quote_fields to False if recipient
    can take 8-bit file names and field values.

    _charset specifies the charset to use when quote_fields is True.

    params is a dict with disposition params.
    zbad content disposition type z"bad content disposition parameter rU   filenamere   r   z"%s"z''r   rO   z\\rP   z\"z; c              3   @   K   | ]}d                      |          V  dS )rU   N)join)r>   pairs     r@   	<genexpr>z-content_disposition_header.<locals>.<genexpr>  s,      ??tCHHTNN??????rB   )
TOKENr#  rk   r   r   r   appendr&  r-  replace)
r'  r(  r)  r   r   lparamsr   r   qvalsparamss
             r@   content_disposition_headerr6    s   (  GECMM11EEEFFFE , 	5 	5HC Wus3xx// !Uc!U!Uc!U!UVVV 599;;*,, b8<<<DNNC$#78888=,S11  Vd]';<<<< & : : :!ww%tU3X-N-N-NO     c	4'899999	: {{40088eDDVd]34444))??w?????		5'*++Ls   C//AD>=D>c                 b    | sdS d| v p'|                      dd                                          S )zCheck if host looks like an IP Address.

    This check is only meant as a heuristic to ensure that
    a host is not a domain name.
    FrN   .re   )r2  isdigit)r   s    r@   is_ip_addressr:    s<      u $;9$,,sB//77999rB   c                 d   |                      d          }t          |          dk    rdS |D ]}dt          |          cxk    rdk    r+n n(|                                r|                                s dS |d         dk    rt          |          dk    r dS t	          |          dk    r dS d	S )
zCheck if host is a canonical dotted-quad IPv4 address.

    Rejects the legacy numeric forms that ``socket`` still accepts and
    maps onto an address, e.g. ``2130706433``, ``017700000001``, ``127.1``.
    r8     Fr$   r(   r   0   T)r   lenisasciir9  int)r   r   parts      r@   is_canonical_ipv4_addressrC    s     JJsOOE
5zzQu 	 	 SYY####!#####DLLNN#$,,..#557c>>c$ii1nn55t99s??55 4rB   _cached_current_datetimec                      t          t          j                              } | t          k    r:d}d}t          j        |           ^}}}}}}}	}
d||	         |||         ||||fz  a| at          S )N)MonTueWedThuFriSatSun)re   JanFebMarAprMayJunJulAugSepOctNovDecz#%s, %02d %3s %4d %02d:%02d:%02d GMT)rA  timerD  gmtime_cached_formatted_datetime)now_weekdayname
_monthnameyearmonthdayhhmmsswdtails              r@   rfc822_formatted_timerg    s     dikk

C
&&& I

  37+c2B2B/eS"b"b4%JuN
 &
" $' %%rB   infotuple[weakref.ref[object], str]c                     | \  }} |            }|Gt          t                    5   t          ||                       d d d            d S # 1 swxY w Y   d S d S r^   )r	   	Exceptionr  )rh  refr  obs       r@   _weakref_handlern  D  s    IC	B	~i   	  	 GB	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  ~s   AAA   rm  r  timeoutlooptimeout_ceil_thresholdc                     |b|dk    r\|                                 |z   }||k    rt          |          }|                    |t          t	          j        |           |f          S d S Nr   )rY  r   call_atrn  weakrefrl  )rm  r  rp  rq  rr  whens         r@   weakref_handlerx  L  sc     w{{yy{{W$,,,::D||D/GKOOT3JKKK4rB   cbc                     ||dk    rd S |                                 }t          |||          }|                    ||           S rt  )rY  calculate_timeout_whenru  )ry  rp  rq  rr  r\  rw  s         r@   
call_laterr|  \  sI     'Q,,t
))++C!#w0FGGD<<b!!!rB   	loop_timetimeout_ceiling_thresholdc                 :    | |z   }||k    rt          |          S |S )z$Calculate when to execute a timeout.r   )r}  rp  r~  rw  s       r@   r{  r{  i  s+     wD***DzzKrB   c            	           e Zd ZdZdZ	 ddej        dedz  deddfd	Zd
e	d         de
de
ddfdZddZdej        dz  fdZddZddZdS )TimeoutHandlezTimeout handle_timeout_loop_ceil_threshold
_callbacksro  rq  rp  Nceil_thresholdr\   c                 >    || _         || _        || _        g | _        d S r^   r  )r`   rq  rp  r  s       r@   r  zTimeoutHandle.__init__z  s*      
-  	rB   callback).Nargskwargsc                 @    | j                             |||f           d S r^   )r  r1  )r`   r  r  r  s       r@   registerzTimeoutHandle.register  s'     	$788888rB   c                 8    | j                                          d S r^   )r  clearr_   s    r@   closezTimeoutHandle.close  s    rB   c                     | j         }|\|dk    rV| j                                        |z   }|| j        k    rt	          |          }| j                            || j                  S d S rt  )r  r  rY  r  r   ru  __call__)r`   rp  rw  s      r@   startzTimeoutHandle.start  se    -7Q;;:??$$w.D$...Dzz:%%dDM:::4rB   BaseTimerContextc                     | j         ;| j         dk    r0t          | j                  }|                     |j                   |S t                      S rt  )r  TimerContextr  r  rp  	TimerNoop)r`   timers     r@   r  zTimeoutHandle.timer  sH    =$):): ,,EMM%-(((L;;rB   c                     | j         D ]:\  }}}t          t                    5   ||i | d d d            n# 1 swxY w Y   ;| j                                          d S r^   )r  r	   rk  r  )r`   ry  r  r  s       r@   r  zTimeoutHandle.__call__  s     $ 	$ 	$Bf)$$ $ $D#F###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 	s   	7;	;	ro  r  )r\   r  )rb   rc   rd   r   	__slots__asyncioAbstractEventLoopfloatr  r   r   r  r  TimerHandler  r  r  r:   rB   r@   r  r  u  s       FI !"	 '  	
 
   9 +9479CF9	9 9 9 9
       w*T1                  rB   r  c                       e Zd ZdZddZdS )r  r:   r\   Nc                     dS )z0Raise TimeoutError if timeout has been exceeded.Nr:   r_   s    r@   assert_timeoutzBaseTimerContext.assert_timeout  s      rB   r  )rb   rc   rd   r  r  r:   rB   r@   r  r    s-        I? ? ? ? ? ?rB   r  c                   T    e Zd ZdZdefdZdee         dz  dedz  dedz  ddfdZ	dS )	r  r:   r\   c                     | S r^   r:   r_   s    r@   	__enter__zTimerNoop.__enter__  s    rB   exc_typeNexc_valexc_tbc                     d S r^   r:   )r`   r  r  r  s       r@   __exit__zTimerNoop.__exit__  s	     	rB   )
rb   rc   rd   r  r  r  r   BaseExceptionr   r  r:   rB   r@   r  r    s        I+    }%, % $	
 
     rB   r  c            	           e Zd ZdZdZdej        ddfdZddZde	fdZ
d	ee         dz  d
edz  dedz  dedz  fdZddZdS )r  z&Low resolution timeout context managerr  _tasks
_cancelled_cancellingrq  r\   Nc                 >    || _         g | _        d| _        d| _        d S )NFr   r  )r`   rq  s     r@   r  zTimerContext.__init__  s%    
/1rB   c                 .    | j         rt          j        ddS )z7Raise TimeoutError if timer has already been cancelled.N)r  r  TimeoutErrorr_   s    r@   r  zTimerContext.assert_timeout  s!    ? 	1&D0	1 	1rB   c                 
   t          j        | j                  }|t          d          t          j        dk    r|                                | _        | j        rt           j	        d | j
                            |           | S )N)rq  z4Timeout context manager should be used inside a taskr'   )r  current_taskr  r   sysversion_info
cancellingr  r  r  r  r1  r`   tasks     r@   r  zTimerContext.__enter__  s}    #444<UVVVw&&  $00D? 	1&D04   rB   r  r  r  c                     d }| j         r| j                                         }|t          j        u rG| j        r@|J t
          j        dk    r|                                | j        k    rd S t          j	        |d S )Nr'   )
r  popr  CancelledErrorr  r  r  uncancelr  r  )r`   r  r  r  
enter_tasks        r@   r  zTimerContext.__exit__  s     04
; 	+**Jw---$/-))) 7** &&((4+;;;4&G3trB   c                 |    | j         s4t          | j                  D ]}|                                 d| _         d S d S NT)r  r#  r  cancelr  s     r@   rp  zTimerContext.timeout  sI     	#DK((  "DOOO		# 	#rB   r  )rb   rc   rd   r   r  r  r  r  r  r  r  r   r  r   boolr  rp  r:   rB   r@   r  r    s        00@IW6 4    1 1 1 1
+    "}%, % $	
 
   0# # # # # #rB   r  delayr  c                     | | dk    rt          j        d           S t          j                    }|                                }|| z   }| |k    rt          |          }t          j        |          S rt  )async_timeoutrp  r  get_running_looprY  r   
timeout_at)r  r  rq  r\  rw  s        r@   ceil_timeoutr    sm     }

$T***#%%D
))++C;D~Dzz#D)))rB   c                      e Zd ZU dZ eg d          Zee         ed<   dZ	edz  ed<   dZ
eeef         dz  ed<   eZedz  ez  ed<   dedz  d	dfd
Zed	efd            Zed	edz  fd            Zed	edz  fd            ZdS )HeadersMixinzMixin for handling headers.)_content_type_content_dict_stored_content_type_headersNr  r  r  r	  r\   c                     || _         |d| _        i | _        d S t          |          \  }}|| _        |                                | _        d S r   )r  r  r  r  copy)r`   r	  r  content_mapping_proxys       r@   _parse_content_typez HeadersMixin._parse_content_type  sZ    $'!;!;D!#D2DS2I2I/L/!-D!6!;!;!=!=DrB   c                     | j                             t          j                  }| j        |k    r|                     |           | j        J | j        S )z7The value of content part for Content-Type HTTP header.)r  r   r%   CONTENT_TYPEr  r  r  r`   r	  s     r@   r  zHeadersMixin.content_type&  sV     m 122$++$$S)))!---!!rB   c                     | j                             t          j                  }| j        |k    r|                     |           | j        J | j                            d          S )z7The value of charset part for Content-Type HTTP header.Ncharset)r  r   r%   r  r  r  r  r  s     r@   r  zHeadersMixin.charset/  sd     m 122$++$$S)))!---!%%i000rB   c                 p    | j                             t          j                  }|dnt	          |          S )z(The value of Content-Length HTTP header.N)r  r   r%   CONTENT_LENGTHrA  )r`   content_lengths     r@   r  zHeadersMixin.content_length8  s3     **4+>??%-tt3~3F3FFrB   )rb   rc   rd   r   	frozensetATTRSr    r   r   r  r  r  r3   r  r2   r  propertyr  r  rA  r  r:   rB   r@   r  r    s8        %%IPPPQQE3 $M3:$$$+/M4S>D(///3;#*y0;;;
>sTz 
>d 
> 
> 
> 
> "c " " " X" 1t 1 1 1 X1 Gd
 G G G XG G GrB   r  futzasyncio.Future[_T]resultc                 \    |                                  s|                     |           d S d S r^   )done
set_result)r  r  s     r@   r  r  ?  s4    88:: v rB   c                   &    e Zd Z	 ddededdfdZdS )ErrorableProtocol.exc	exc_causer\   Nc                     d S r^   r:   )r`   r  r  s      r@   set_exceptionzErrorableProtocol.set_exceptionH  s	     srB   .)rb   rc   rd   r  r  r:   rB   r@   r  r  G  sN         $'  ! 
	     rB   r  z&asyncio.Future[_T] | ErrorableProtocolr  r  c                     t          j        |           r|                                 rdS |t          u }||u }|s	|s||_        |                     |           dS )zSet future exception.

    If the future is marked as complete, this function is a no-op.

    :param exc_cause: An exception that is a direct cause of ``exc``.
                      Only set if provided.
    N)r  isfuturer  _EXC_SENTINEL	__cause__r  )r  r  r  exc_is_sentinelexc_causes_itselfs        r@   r  r  O  sq       =0Oy( "#4 "!crB   c                   n    e Zd ZU dZdZee         ed<   ddedee	         dz  fdZ
ded	efd
Zd	efdZdS )BaseKeyzBase for concrete context storage key classes.

    Each storage is provided with its own sub-class for the sake of some additional type safety.
    )_name_t__orig_class__r  Nr  tc                     t          j                    }|r'|j        j        dk    r|j        d         }n	|j        }|'|dz   |z   | _        || _        d S )Nz<module>rb   r8  )inspectcurrentframef_codeco_name	f_globalsf_backr  r  )r`   r  r  framemodules        r@   r  zBaseKey.__init__t  se    $&& 	!|#z11#oj9LE	  	! c\D(
rB   otherr\   c                 P    t          |t                    r| j        |j        k     S dS r  )r   r  r  )r`   r   s     r@   __lt__zBaseKey.__lt__  s(    eW%% 	,:++trB   c                 r   | j         }|Ft          t                    5  t          | j                  d         }d d d            n# 1 swxY w Y   |d}nIt          |t                    r%|j        dk    r|j        }n!|j         d|j         }nt          |          }d| j
        j         d| j         d| dS )	Nr   z<<Unknown>>builtinsr8  rI   rG   z, type=z)>)r  r	   AttributeErrorr   r  r   r   rc   rd   reprr}   rb   r  )r`   r  t_reprs      r@   __repr__zBaseKey.__repr__  s   G9.)) 5 5T011!45 5 5 5 5 5 5 5 5 5 5 5 5 5 5 9"FF4   	|z))L;;1>;;!WWFJ4>*JJTZJJJJJJs   AA	A	r^   )rb   rc   rd   r   r  r   objectr   r   r0   r  r  r  r  r:   rB   r@   r  r  f  s          
 2I
 L   
 
S 
T"X_ 
 
 
 
F t    
K# K K K K K KrB   r  c                       e Zd ZdZdS )AppKeyz.Keys for static typing support in Application.Nrb   rc   rd   r   r:   rB   r@   r  r    s        8888rB   r  c                       e Zd ZdZdS )
RequestKeyz*Keys for static typing support in Request.Nr  r:   rB   r@   r  r    s        4444rB   r  c                       e Zd ZdZdS )ResponseKeyz+Keys for static typing support in Response.Nr  r:   rB   r@   r  r    s        5555rB   r  c            	          e Zd ZdZdeeeee         z  ef                  ddfdZ	ddZ
edee         defd            Zededefd	            Zdeee         z  defd
Zedee         dedeez  fd            Zeddee         dddedz  fd            Zeddededefd            Zddeee         z  dedefdZdefdZdeeee         z           fdZdedefdZdefdZdefdZdS )r+   )_mapsmapsr\   Nc                 .    t          |          | _        d S r^   )r   r  )r`   r  s     r@   r  zChainMapProxy.__init__  s    4[[


rB   c                 2    t          d| j         d          )NzInheritance class z  from ChainMapProxy is forbidden)r   rb   )r|   s    r@   __init_subclass__zChainMapProxy.__init_subclass__  s$    OOOO
 
 	
rB   r   c                     d S r^   r:   r`   r   s     r@   __getitem__zChainMapProxy.__getitem__  s    25#rB   c                     d S r^   r:   r  s     r@   r  zChainMapProxy.__getitem__  s    ,/CrB   c                 h    | j         D ]}	 ||         c S # t          $ r Y w xY wt          |          r^   )r  r   )r`   r   mappings      r@   r  zChainMapProxy.__getitem__  sT    z 	 	Gs|###   smms   
""r  c                     d S r^   r:   r`   r   r  s      r@   r   zChainMapProxy.get  s    <?CrB   .c                     d S r^   r:   r  s      r@   r   zChainMapProxy.get  s    FIcrB   c                     d S r^   r:   r  s      r@   r   zChainMapProxy.get  s    8;rB   c                 8    	 | |         S # t           $ r |cY S w xY wr^   )r   r  s      r@   r   zChainMapProxy.get  s5    	9 	 	 	NNN	s   
 c                 R    t           t                      j        | j                   S r^   )r?  r#  unionr  r_   s    r@   __len__zChainMapProxy.__len__  s    ;355;
+,,,rB   c                 |    i }t          | j                  D ]}|                    |           t          |          S r^   )reversedr  updateiter)r`   dr  s      r@   __iter__zChainMapProxy.__iter__  s@    *,
++ 	 	GHHWAwwrB   c                 D    t          fd| j        D                       S )Nc              3       K   | ]}|v V  	d S r^   r:   )r>   mr   s     r@   r/  z-ChainMapProxy.__contains__.<locals>.<genexpr>  s'      003!8000000rB   anyr  r  s    `r@   __contains__zChainMapProxy.__contains__  s(    0000TZ000000rB   c                 *    t          | j                  S r^   r.  r_   s    r@   __bool__zChainMapProxy.__bool__  s    4:rB   c                 h    d                     t          t          | j                            }d| dS )Nz, zChainMapProxy(rH   )r-  mapr  r  )r`   r  s     r@   r  zChainMapProxy.__repr__  s0    ))Cdj1122*****rB   r  r  r^   )rb   rc   rd   r  r   r   r   r  r   r  r  r   r0   r  r1   r   rA  r$  r   r*  r	  r  r0  r2  r  r:   rB   r@   r+   r+     s2       I!XgcF3K.?.D&EF !4 ! ! ! !
 
 
 

 5vbz5b555 X5/s/s/// X/sVBZ/ C     ?vbz?B?27??? X?IIvbzIDI29III XI;;s;S;3;;; X; sVBZ' #     - - - - -(3#45    1 14 1 1 1 1$    +# + + + + + +rB   r+   z[!\x23-\x7E\x80-\xff]+z(W/)?"(z)"z)(?:\s*,\s*|$)|(.)r   c                   (    e Zd ZU eed<   dZeed<   dS )r,   r   Fis_weakN)rb   rc   rd   r   r   r6  r  r:   rB   r@   r,   r,     s+         JJJGTrB   r,   r   c                 z    | t           k    r-t                              |           st          d| d          d S d S )NzValue z, is not a valid etag. Maybe it contains '"'?)ETAG_ANY	_ETAGC_RE	fullmatchrk   )r   s    r@   validate_etag_valuer;    sN    !4!4U!;!;KUKKK
 
 	
 rB   date_strc                     | et          |           }|Tt          t                    5  t          j        |dd         dt          j        j        icddd           S # 1 swxY w Y   dS )z/Process a date string, return a datetime objectN   tzinfo)r   r	   rk   datetimetimezoneutc)r<  	timetuples     r@   parse_http_daterD    s    h''	 *%% W W()BQB-V@Q@UVVW W W W W W W W W W W W W W W W4s   (AA!$A!methodcodec                 b    |t           v p&| t          v pd|cxk    odk     nc o| t          j        v S )z-Check if a request must return an empty body.r7   ,  )EMPTY_BODY_STATUS_CODESEMPTY_BODY_METHODSr%   METH_CONNECT_ALLrE  rF  s     r@   must_be_empty_bodyrM    sS     	'' 	C''	C4#A&D,A"ArB   c                 P    |t           v pd|cxk    odk     nc o| t          j        v S )zrCheck if a Content-Length header should be removed.

    This should always be a subset of must_be_empty_body
    r7   rH  )rI  r%   rK  rL  s     r@   should_remove_content_lengthrO    sC     ** tc=f(==rB   )re   rf   r   r^   )Trf   )rh  ri  r\   Nr  )r   r  rm   r   r   r@  enum	functoolsr  r   r   platformrer  rY  rw   rv  collectionsr   collections.abcr   r   r   r   r   r	   email.messager
   email.parserr   email.policyr   email.utilsr   mathr   pathlibr   typesr   r   typingr   r   r   r   r   r   r   r   urllib.parser   urllib.requestr   r   attr	multidictr   r   r    propcache.apir!   r-   yarlr#   re   r%   logr&   r  r  __all__systemIS_MACOSr   PY_311DEFAULT_CHUNK_SIZEr0   r1   Enumr2   r3   r  r   r   NO_EXTENSIONSr  rangerI  METH_HEAD_ALLrJ  flagsdev_modeignore_environmentDEBUGCHARr<   CTL
SEPARATORSr0  r[   r   rq   r*   r   r   r   r   sr   r   r  r   r   r   	lru_cacher   r   r  r  compiler$  r"  r&  r6  r:  rC  rD  rA  r   r[  rg  rn  r	  r  r  r  rx  r|  r{  r  r  r  r  Timeoutr  r  r  r  r  r  r  total_orderingr  r  r  r  r+   _ETAGCr9  _QUOTED_ETAGQUOTED_ETAG_RELIST_QUOTED_ETAG_REr8  r,   r;  rD  rM  rO  r:   rB   r@   <module>r~     s
                     				  				 



    " " " " " " L L L L L L L L L L L L L L       & & & & & & % % % % % %       ! ! ! ! ! !             1 1 1 1 1 1 1 1	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	       3 3 3 3 3 3 3 3  = = = = = = = = = = 8 8 8 8 8 8                  w#####
98?(X_)+
		W	$
  WT]]WT]]DIk:..	RZ^^$;<<== $)S#$@c3$@$@AA  ' 	 		$$Sbjnn=Q.R.R)S)S 
 '&a&&&$$uuQ||$$$CHH(  CFF'
* 	s
Z       
	? 	?S 	?C 	? 	?RU 	? 	? 	? 	?BK BK BK BK BK

;(I(I(IJJ BK BK BKL 5=A AAA.1AA A A AXS XU3	D0@+@%A X X X X(d* ( ( ( (V T$d333! ! ! ! ! ! ! 43!
3EK$$6 3c 3i 3 3 3 3:$sI~.    47s 7uS)d2B-B'C 7 7 7 7 T$d333& & & & & & & 43& R   $S $X $ $ $ ! $N       2 R   8C 8E#/?S/I*I$J 8 8 8 ! 8  cDj C$J     rz677..EE$--...$7
B3 
B3 
B 
B 
B 
B ?F0 00!%08;0QT00 0 0 0f
:d
 
:t 
: 
: 
: 
:C D    , (, #* + + + %&s %& %& %& %&P        %& 
  
#	
 " 4   ( %&	
" 
"S
"
" 
#
" "	
"
 4
" 
" 
" 
"			  %	 		 	 	 	1  1  1  1  1  1  1  1 h? ? ? ? ?~&89 ? ? ?         ># ># ># ># >## ># ># >#D 23* *4<*).** * * *,G ,G ,G ,G ,G ,G ,G ,G^( "     
          - 	1	  
	   . .K .K .K .K .Kgbk .K .K .Kb9 9 9 9 9WR[ 9 9 95 5 5 5 5 5 5 56 6 6 6 6'"+ 6 6 6;+ ;+ ;+ ;+ ;+GC&+-s23 ;+ ;+ ;+~ 
#BJv	$&$$$L)) bj!Fl!F!F!FGG  T$d333       43

s 
t 
 
 
 
cDj X->-E     s # $    	 	C 	D 	 	 	 	 	 	rB   