
    *Gj{|                        U 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	m
Z
mZ d dlmZ d dlmZ d dlmZmZmZmZmZmZmZ d dlmZ d dl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(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 d	dl5m6Z6 d	dl7m8Z8 d	dl9m:Z:m;Z; d	dl<m=Z=m>Z> d	dl?m@Z@mAZAmBZBmCZCmDZD d	dlEmFZFmGZG d	dlHmIZI dZJerd	dlKmLZL d	dlMmNZN d	dlOmPZP  ed          ZQ ejR        ddd           G d d                      ZSeTeUz  eVz  eSz  ZWejX        ejY        z   dz   ZZeeT         e[d<   d eZ d!Z\eeT         e[d"<   d#]                    d$^                    d% d& e_ e`d'd(                    z   D                                 ZaeeT         e[d)<   d*ZbeeT         e[d+<   d,eb d-ea d.ZceeT         e[d/<   d0e\ d1e\ d-ec d2ZdeeT         e[d3<    eje        d4          ZfeeeT                  e[d5<    eje        ed          ZgeeeT                  e[d6<    G d7 d8eeTe0e         z  ef         e/          Zh G d9 d:eh          ZidS );    N)IteratorMappingMutableMapping)Pattern)MappingProxyType)TYPE_CHECKINGAnyFinalOptionalTypeVarcastoverload)	parse_qsl)CIMultiDictCIMultiDictProxy	MultiDictMultiDictProxyMultiMapping)URL   )hdrs)parse_cookie_header)AbstractStreamWriter)	_SENTINELDEBUGDEFAULT_CHUNK_SIZEETAG_ANYLIST_QUOTED_ETAG_REChainMapProxyETagHeadersMixin
RequestKeyparse_http_datereifysentinelset_exception)RawRequestMessage)HttpVersion)BodyPartReaderMultipartReader)EmptyStreamReaderStreamReader)DEFAULT_JSON_DECODERJSONDecoderLooseHeaders
RawHeadersStrOrURL)HTTPRequestEntityTooLargeNotAppKeyWarning)StreamResponse)BaseRequest	FileFieldRequest)Application)RequestHandler)UrlMappingMatchInfo_TT)auto_attribsfrozenslotsc                   X    e Zd ZU eed<   eed<   ej        ed<   eed<   ee         ed<   dS )r6   namefilenamefilecontent_typeheadersN)__name__
__module____qualname__str__annotations__ioBufferedReaderr        [/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/aiohttp/web_request.pyr6   r6   E   sP         
IIIMMM

c""""""rM   r6   z!#$%&'*+.^_`|~-_TCHAR[z]+_TOKENz[{}] c              #   4   K   | ]}t          |          V  d S N)chr).0cs     rN   	<genexpr>rX   U   s(      KKSVVKKKKKKrM   )	       !   #      _QDTEXTz
\\[\t !-~]_QUOTED_PAIRz"(?:|z)*"_QUOTED_STRING(z)=(z)(:\d{1,4})?_FORWARDED_PAIRz\\([\t !-~])_QUOTED_PAIR_REPLACE_RE_FORWARDED_PAIR_REc                      e Zd ZU ej        ej        ej        ej        ej        hZ	e
j         eg d          z  ZdZee         dz  ed<   dZedz  ed<    e            Zee         ed<   ddddddded	ed
ddedddej        dedeee         ez  ef         dz  dedz  dedz  dedz  ddfdZe e e e e e e ddee!z  de"e!z  de#e!z  dee!z  dee!z  dee!z  dee!z  dd fdZ$e%ded            Z&e%dfd            Z'e%dej(        dz  fd            Z)e%defd            Z*e%defd             Z+e,defd!            Z-e,de.fd"            Z/e,dej        fd#            Z0e1d$ee2         de2fd%            Z3e1d$edefd&            Z3d$eee2         z  defd'Z3e1d$ee2         d(e2ddfd)            Z4e1d$ed(eddfd*            Z4d$eee2         z  d(eddfd+Z4d$eee2         z  ddfd,Z5defd-Z6de7eee         z           fd.Z8e,de9fd/            Z:e,de;e<eef         d0f         fd1            Z=e,defd2            Z>e,defd3            Z?e,de@fd4            ZAe,defd5            ZBe,dedz  fd6            ZCe,de.fd7            ZDe,defd8            ZEe,defd9            ZFe,defd:            ZGe,dgd<            ZHe,defd=            ZIe,deJe         fd>            ZKe,deLfd?            ZMe,deNjN        dz  fd@            ZOe,deNjN        dz  fdA            ZPeQdBede7eR         fdC            ZSeTdDedz  de;eRd0f         dz  fdE            ZUe,de;eRd0f         dz  fdF            ZVe,de;eRd0f         dz  fdG            ZWe,deNjN        dz  fdH            ZXe,de9fdI            ZYe,de<eef         fdJ            ZZe,de[fdK            Z\e,defdL            Z]e%de9fdM            Z^e%de9fdN            Z_e,de9fdO            Z`dhdPZadefdQZbdefdRZceddSdTeedefdUZfdegfdVZhdidXZidjdYedZedefd[Zjdefd\Zkd]elde9fd^Zmde9fd_Znd`eoddfdaZpdbeqddfdcZrdhddZsdS )kr5   )_message	_protocol_payload_writer_payload_headers_method_version_rel_url_post_read_bytes_state_cache_task_client_max_size_loop_transport_sslcontext_transport_peernameNro   rp   _seen_str_keysi   )client_max_sizestateschemehostremotemessagepayloadprotocolr9   payload_writertaskasyncio.Task[None]loopry   rz   r{   r|   r}   returnc                r   || _         || _        || _        || _        |j        | _        |j        | _        |j        | _	        i | _
        |j        }|j        rp|	|                    |	          }|
|                    |
          }|| j
        d<   |j        | j
        d<   |j        | j
        d<   |                                | _        n|| _        |	
|	| j
        d<   |

|
| j
        d<   |i n|| _        || _        || _        || _        |j        | _        |j        | _        |j        | _        ||| j
        d<   d S d S )Nurlr|   r{   r}   )rg   rh   ri   rj   rD   rk   methodrl   versionrm   rr   r   absolutewith_scheme	with_hostr|   r{   relativern   rq   rs   rt   ru   ssl_contextrv   peernamerw   sockname_transport_sockname)selfr~   r   r   r   r   r   ry   rz   r{   r|   r}   r   s                rN   __init__zBaseRequest.__init__   sN     !-/6~&(k< 	+!oof--mmD)) "%DK"%(DK$'JDK!LLNNDMMDM!(.H%&*F#!Mbbu
 /
%-%9"#+#4 #+#4 $*DK!!! rM   r   rel_urlrD   r{   r|   r}   ry   r   r   rD   c                   | j         rt          d          i }|t          ur||d<   |t          ur&t          |          }	|	|d<   t	          |	          |d<   |t          urSt          t          |                    |d<   t          d |d                                         D                       |d<    | j	        j
        di |}
i }|t          ur||d<   |t          ur||d	<   |t          ur||d
<   |t          u r| j        } | j        |
| j        | j        | j        | j        | j        f|| j                                        d|S )a  Clone itself with replacement some attributes.

        Creates and returns a new instance of Request object. If no parameters
        are given, an exact copy is returned. If a parameter is not passed, it
        will reuse the one from the current request object.
        z.Cannot clone request after reading its contentr   r   pathrD   c              3   p   K   | ]1\  }}|                     d           |                     d           fV  2dS )utf-8N)encode)rV   kvs      rN   rX   z$BaseRequest.clone.<locals>.<genexpr>   sW       ' 'Aq '""AHHW$5$56' ' ' ' ' 'rM   raw_headersr{   r|   r}   )ry   rz   rL   )rp   RuntimeErrorr%   r   rH   r   r   tupleitemsrg   _replacert   	__class__rj   rh   ri   rs   ru   rq   copy)r   r   r   rD   r{   r|   r}   ry   dctnew_urlr~   kwargss               rN   clonezBaseRequest.clone   s   "  	QOPPP !!"CM(""w<<G CJg,,CK(""-k'.B.BCCC	N!& ' '	N0022' ' ' " "C
 )$-(//3//!!%F8x!F6N!!%F8h&&"3Ot~MN JJ

 ,+""$$

 

 

 

 
	
rM   c                     | j         S rT   )rs   r   s    rN   r   zBaseRequest.task   s
    zrM   c                     | j         S rT   )rh   r   s    rN   r   zBaseRequest.protocol  s
    ~rM   c                 ,    | j         d S | j         j        S rT   )rh   	transportr   s    rN   r   zBaseRequest.transport  s    >!4~''rM   c                     | j         S rT   )ri   r   s    rN   writerzBaseRequest.writer  s    ##rM   c                     | j         S rT   )rt   r   s    rN   ry   zBaseRequest.client_max_size  s    $$rM   c                 H    t          j        dt          d           | j        S )NzRequest.message is deprecated   
stacklevel)warningswarnDeprecationWarningrg   r   s    rN   r~   zBaseRequest.message  s$    57IVWXXXX}rM   c                     | j         S rT   )rn   r   s    rN   r   zBaseRequest.rel_url  s
    }rM   c                 H    t          j        dt          d           | j        S )Nz#request.loop property is deprecated   r   )r   r   r   ru   r   s    rN   r   zBaseRequest.loop  s.    13ERS	
 	
 	
 	
 zrM   keyc                     d S rT   rL   r   r   s     rN   __getitem__zBaseRequest.__getitem__(  s    69crM   c                     d S rT   rL   r   s     rN   r   zBaseRequest.__getitem__+  s    ,/CrM   c                     | j         |         S rT   rq   r   s     rN   r   zBaseRequest.__getitem__.  s    {3rM   valuec                     d S rT   rL   r   r   r   s      rN   __setitem__zBaseRequest.__setitem__1  s    CF3rM   c                     d S rT   rL   r   s      rN   r   zBaseRequest.__setitem__4  s    9<rM   c                     t          |t                    sI|t          j        vr;t          j                            |           t          j        dt          d           || j        |<   d S )NzIt is recommended to use web.RequestKey instances for keys.
https://docs.aiohttp.org/en/stable/web_advanced.html#request-s-storager   )categoryr   )	
isinstancer"   r5   rx   addr   r   r3   rq   r   s      rN   r   zBaseRequest.__setitem__7  sr    #z** 	s+:T/T/T&**3///M' *    !CrM   c                     | j         |= d S rT   r   r   s     rN   __delitem__zBaseRequest.__delitem__C  s    KrM   c                 *    t          | j                  S rT   )lenrq   r   s    rN   __len__zBaseRequest.__len__F  s    4;rM   c                 *    t          | j                  S rT   )iterrq   r   s    rN   __iter__zBaseRequest.__iter__I  s    DK   rM   c                     | j         dk    S )z5A bool indicating if the request is handled with SSL.https)r{   r   s    rN   securezBaseRequest.secureN  s     {g%%rM   .c                    g }| j         j                            t          j        d          D ]}t          |          }d}d}i }|                    t          j        |                     d|cxk    r|k     rOn Pt          
                    ||          }||r|                    d|          }n|                                \  }}	}
|	d         dk    r#t                              d|	dd	                   }	|
r|	|
z  }	|	||                                <   |t          |                    d                    z  }d
}nw||         dk    r1d}i }|                    t          j        |                     |dz  }n:||         dk    rd}|dz  }n&||         dv r|dz  }n|                    d|          }d|cxk    r|k     I t#          |          S )a  A tuple containing all parsed Forwarded header(s).

        Makes an effort to parse Forwarded headers as specified by RFC 7239:

        - It adds one (immutable) dictionary per Forwarded 'field-value', ie
          per proxy. The element corresponds to the data in the Forwarded
          field-value added by the first proxy encountered by the client. Each
          subsequent item corresponds to those added by later proxies.
        - It checks that every value has valid syntax in general as specified
          in section 4: either a 'token' or a 'quoted-string'.
        - It un-escapes found escape sequences.
        - It does NOT validate 'by' and 'for' contents as specified in section
          6.
        - It does NOT validate 'host' contents (Host ABNF).
        - It does NOT validate 'proto' contents for valid URI scheme names.

        Returns a tuple containing one or more immutable dicts
        rL   r   FN,"z\1r   T;z 	)rg   rD   getallr   	FORWARDEDr   appendtypesr   re   matchfindgroupsrd   sublowergroupr   )r   elemsfield_valuelengthposneed_separatorelemr   r@   r   ports              rN   	forwardedzBaseRequest.forwardedS  s   ( =077KK %	5 %	5K%%FC"N#%DLL/55666s####V#####*00cBB$% .)..sC88,1LLNN)eT 8s??$;$?$?uQrT{$S$SE *!TME-2TZZ\\*s5;;q>>222)- %,,%*NDLL!7!=!=>>>1HCC %,,%*N1HCC %.. 1HCC &**344C? s####V####@ U||rM   c                     | j         rdS dS )a  A string representing the scheme of the request.

        Hostname is resolved in this order:

        - overridden value by .clone(scheme=new_scheme) call.
        - type of connection to peer: HTTPS if socket is SSL, HTTP otherwise.

        'http' or 'https'.
        r   http)rv   r   s    rN   r{   zBaseRequest.scheme  s     % 	76rM   c                     | j         S )zyRead only property for getting HTTP method.

        The value is upper-cased str like 'GET', 'POST', 'PUT' etc.
        )rl   r   s    rN   r   zBaseRequest.method  s     |rM   c                     | j         S )zxRead only property for getting HTTP version of request.

        Returns aiohttp.protocol.HttpVersion instance.
        )rm   r   s    rN   r   zBaseRequest.version  s     }rM   c                 "   | j         j                            t          j                  }||S | j        }|dS t          |t                    r4t          |          dk    rd|d          dS t          |d                   S t          |          S )a  Hostname of the request.

        Hostname is resolved in this order:

        - overridden value by .clone(host=new_host) call.
        - HOST HTTP header
        - local socket address the request arrived on
          (transport ``sockname``)
        - empty string if no transport information is available

        For example, 'example.com' or 'localhost:8080'.

        For historical reasons, the port number may be included.
        NrR      rP   r   ])
rg   rD   getr   HOSTr   r   r   r   rH   )r   r|   r   s      rN   r|   zBaseRequest.host  s      }$((33K+2h&& 	$ 8}}!!)8A;))))x{###8}}rM   c                     | j         dS t          | j         t          t          f          rt	          | j         d                   S t	          | j                   S )zRemote IP of client initiated HTTP request.

        The IP is resolved in this order:

        - overridden value by .clone(remote=new_remote) call.
        - peername of opened socket
        Nr   )rw   r   listr   rH   r   s    rN   r}   zBaseRequest.remote  sR     #+4d.u>> 	4t/23334+,,,rM   c                 r    t          j        | j        | j                                      | j                  S )zThe full URL of the request.)r{   	authority)r   buildr{   r|   joinrn   r   s    rN   r   zBaseRequest.url  s-    
 ytyAAAFFt}UUUrM   c                     | j         j        S )z_The URL including *PATH INFO* without the host or scheme.

        E.g., ``/app/blog``
        )rn   r   r   s    rN   r   zBaseRequest.path  s     }!!rM   c                 *    t          | j                  S )zXThe URL including PATH_INFO and the query string.

        E.g, /app/blog?id=10
        )rH   rn   r   s    rN   path_qszBaseRequest.path_qs  s     4=!!!rM   c                     | j         j        S )zThe URL including raw *PATH INFO* without the host or scheme.

        Warning, the path is unquoted and may contains non valid URL characters

        E.g., ``/my%2Fpath%7Cwith%21some%25strange%24characters``
        )rg   r   r   s    rN   raw_pathzBaseRequest.raw_path  s     }!!rM   MultiMapping[str]c                     | j         j        S )z7A multidict with all the variables in the query string.)rn   queryr   s    rN   r  zBaseRequest.query  s     }""rM   c                     | j         j        S )z:The query string in the URL.

        E.g., id=10
        )rn   query_stringr   s    rN   r  zBaseRequest.query_string  s     }))rM   c                     | j         S )z4A case-insensitive multidict proxy with all headers.)rk   r   s    rN   rD   zBaseRequest.headers       }rM   c                     | j         j        S )z$A sequence of pairs for all headers.)rg   r   r   s    rN   r   zBaseRequest.raw_headers  s     }((rM   c                 d    t          | j                            t          j                            S )zyThe value of If-Modified-Since HTTP header, or None.

        This header is represented as a `datetime` object.
        )r#   rD   r   r   IF_MODIFIED_SINCEr   s    rN   if_modified_sincezBaseRequest.if_modified_since  s%     t|//0FGGHHHrM   c                 d    t          | j                            t          j                            S )z{The value of If-Unmodified-Since HTTP header, or None.

        This header is represented as a `datetime` object.
        )r#   rD   r   r   IF_UNMODIFIED_SINCEr   s    rN   if_unmodified_sincezBaseRequest.if_unmodified_since  s%     t|//0HIIJJJrM   etag_headerc              #     K   | t           k    rt          dt                     V  dS t          j        |           D ]B}|                    ddd          \  }}}|r dS t          t          |          |          V  CdS )z'Extract `ETag` objects from raw header.F)is_weakr   r   r   r   N)r   r    r   finditerr   bool)r  r   r  r   garbages        rN   _etag_valueszBaseRequest._etag_values&  s       (""       
 -5kBB 
 
*/++aA*>*>'  EE MM      
 
rM   header_valuec                 N    |sd S t          |                     |                    S rT   )r   r  )clsr  s     rN   _if_match_or_none_implz"BaseRequest._if_match_or_none_impl;  s-      	4S%%l33444rM   c                 p    |                      | j                            t          j                            S )zxThe value of If-Match HTTP header, or None.

        This header is represented as a `tuple` of `ETag` objects.
        )r  rD   r   r   IF_MATCHr   s    rN   if_matchzBaseRequest.if_matchD  s*     **4<+;+;DM+J+JKKKrM   c                 p    |                      | j                            t          j                            S )z}The value of If-None-Match HTTP header, or None.

        This header is represented as a `tuple` of `ETag` objects.
        )r  rD   r   r   IF_NONE_MATCHr   s    rN   if_none_matchzBaseRequest.if_none_matchL  s+     **4<+;+;D<N+O+OPPPrM   c                 d    t          | j                            t          j                            S )zpThe value of If-Range HTTP header, or None.

        This header is represented as a `datetime` object.
        )r#   rD   r   r   IF_RANGEr   s    rN   if_rangezBaseRequest.if_rangeT  s$     t|//>>???rM   c                     | j         j         S )zIs keepalive enabled by client?)rg   should_closer   s    rN   
keep_alivezBaseRequest.keep_alive\  s     =---rM   c                     t          | j                            t          j        d                    }t          d |D                       S )zMReturn request cookies.

        A read-only dictionary-like object.
        rR   c                 $    i | ]\  }}||j         S rL   )r   )rV   r@   morsels      rN   
<dictcomp>z'BaseRequest.cookies.<locals>.<dictcomp>k  s      O O Ofv| O O OrM   )r   rD   r   r   COOKIEr   )r   parseds     rN   cookieszBaseRequest.cookiesa  sB     %T\%5%5dk2%F%FGG O O O O OPPPrM   c                    | j                             t          j                  }d\  }}|	 d}t	          j        ||t          j                  d         \  }}n# t          $ r t          d          w xY w|rt          |          nd}|rt          |          nd}||| }d}|||dz  }||k    rt          d          ||cxu rn nt          d          t          ||d          S )	zMThe content of Range HTTP header.

        Return a slice instance.

        )NNNz^bytes=(\d*)-(\d*)$r   zrange not in acceptable formatr   zstart cannot be after endz"No start or end of range specified)rk   r   r   RANGErefindallASCII
IndexError
ValueErrorintslice)r   rngstartendpatterns        rN   
http_rangezBaseRequest.http_rangem  s*    m
++
s?C0Zbh??B
ss C C C !ABBBC "+#c(((tC"'1CJJJTE} S_qC<<$%@AAA######## !EFFFUC###s   +A A3c                     | j         S )zReturn raw payload stream.)rj   r   s    rN   contentzBaseRequest.content  r  rM   c                 n    t          j        dt          d           | j                                         S )@Return True if request's HTTP BODY can be read, False otherwise.z$Deprecated, use .can_read_body #2005r   r   )r   r   r   rj   at_eofr   s    rN   has_bodyzBaseRequest.has_body  s?     	24FST	
 	
 	
 	
 =''))))rM   c                 6    | j                                          S )r=  )rj   r>  r   s    rN   can_read_bodyzBaseRequest.can_read_body  s     =''))))rM   c                 8    t          | j                  t          uS )z6Return True if request has HTTP BODY, False otherwise.)typerj   r+   r   s    rN   body_existszBaseRequest.body_exists  s     DM""*;;;rM   c                    K   | j                                         s:| j                                          d{V  | j                                         8dS dS )zKRelease request.

        Eat unread part of HTTP BODY if present.
        N)rj   r>  readanyr   s    rN   releasezBaseRequest.release  sp      
 -&&(( 	*-''))))))))) -&&(( 	* 	* 	* 	* 	*rM   c                   K   | j         | j        r| j                            | j                   t	                      }	 | j                                         d{V }|                    |           | j        r.t          |          }|| j        k    rt          | j                  |snmt          |          | _         | j         S )z_Read request body if present.

        Returns bytes object with full request content.
        N)
rp   rt   rj   set_read_chunk_size	bytearrayrF  extendr   r2   bytes)r   bodychunk	body_sizes       rN   readzBaseRequest.read  s      
 # $ I11$2GHHH;;D"m3355555555E"""( O #D		I 4#88878MNNN   %T{{DrM   c                 v   K   |                                   d{V }| j        pd}|                    |          S )z1Return BODY as text using encoding from .charset.Nr   )rP  charsetdecode)r   
bytes_bodyencodings      rN   textzBaseRequest.text  sE      99;;&&&&&&
<*7  ***rM   )loadsrW  c                P   K   |                                   d{V } ||          S )zReturn BODY as JSON.N)rV  )r   rW  rM  s      rN   jsonzBaseRequest.json  s3      YY[[      uT{{rM   c                    K   t          | j        | j        | j        | j        j        | j        j        t                    S )z3Return async iterator to process BODY as multipart.)ry   max_field_sizemax_headersmax_size_error_cls)r*   rk   rj   rt   rh   r[  r\  r2   r   s    rN   	multipartzBaseRequest.multipart  s@      MM 1>828
 
 
 	
rM   MultiDictProxy[_Post]c                 `	  K   | j         | j         S | j        | j        vr't          t	                                | _         | j         S | j        }|dvr't          t	                                | _         | j         S t	                      }|dk    r|                                  d{V }| j        }d}|                                 d{V x}X|j	        
                    t          j                  }t          |t                    r|j        t!          d          |j        r| j                            dt(          j                   d{V }|                    t.                     d{V x}	r|                    |	          2 3 d{V }
| j                            d|j        |
           d{V  |t5          |
          z  }d|cxk     r|k     r8n P| j                            d|j                   d{V  t9          |          6 |                    t.                     d{V x}	| j                            d|j        d           d{V  |d}t=          |j        |j        t?          t@          j!        |          ||j	                  }|"                    |j        |           nTtG                      }|                                 d{V x}	rb|t5          |	          z  }d|cxk     r|k     rn nt9          |          |$                    |	           |                                 d{V x}	btG                      }|                    |          2 3 d{V }|$                    |           6 ||%                    d          rE|&                    d	
          }|"                    |j        |'                    |                     n+|"                    |j        |           nt!          d          |                                 d{V x}Xno| (                                 d{V }|rS| j)        pd	}|$                    tU          |+                                '                    |          d|                     t          |          | _         | j         S )zReturn POST parameters.N)rR   z!application/x-www-form-urlencodedmultipart/form-datara  r   zMultipart field missing name.)sizezapplication/octet-streamztext/r   )defaultz8To decode nested multipart you need to use custom readerT)keep_blank_valuesrU  ),ro   rl   POST_METHODSr   r   rC   r^  rt   nextrD   r   r   CONTENT_TYPEr   r)   r@   r2  rA   ru   run_in_executortempfileTemporaryFile
read_chunkr   decode_iterwriter   closer2   seekr6   r   rJ   rK   r   rJ  rK  
startswithget_charsetrS  rP  rR  r   rstrip)r   rC   outr^  max_sizerb  fieldfield_cttmprN  decoded_chunkffraw_datar   drR  datas                    rN   postzBaseRequest.post  s     :!:<t000'	44DJ:(  
 
 

 (	44DJ: )000"nn........I,HD"+.."2"222222225? =,,T->??e^44 9z)()HIII ~ -7$(J$>$> ("8% %       .3-=-=CU-=-V-V'V'V'V'V'V'VVe N7<7H7H7O7O N N N N N N Nm&*j&@&@$(#)]'" '" !" !" !" !" !" !" !" !%M(:(: :#$x#6#6#6#6$#6#6#6#6#6*.**D*DT39*U*U$U$U$U$U$U$U$U*CH*M*M$M $7 8P .3-=-=CU-=-V-V'V'V'V'V'V'VVe N #j88sxKKKKKKKKK#+'AH&!J!N !2C88$!M  
B//// $-;;-2-=-=-?-?'?'?'?'?'?'??e 3 CJJ.D 82222d22222&?&I&I I$OOE222	 .3-=-=-?-?'?'?'?'?'?'??e 3 !*','8'8'B'B , , , , , , ,!!LLOOOO (C $+x/B/B7/K/K+&+&7&7&7&H&HGGGEJW0E0EFFFFGGEJ6666$R  u #,.."2"222222225?| $$$$$$D ,1'

,,W55*.!(     $C((
zs   H#N r@   rc  c                 Z    | j         }||S |j        }||S |                    ||          S )z"Extra info from protocol transport)rh   r   get_extra_info)r   r@   rc  r   r   s        rN   r  zBaseRequest.get_extra_infoA  s=    >N&	N''g666rM   c                     | j                             dd                              d          }d| j        j         d| j         d| dS )Nasciibackslashreplace< z >)r   r   rS  r   rE   rl   )r   ascii_encodable_paths     rN   __repr__zBaseRequest.__repr__M  sZ    #y//9KLLSS 
  
 U4>*TTT\TT<PTTTTrM   otherc                 B    t          |           t          |          k    S rT   )id)r   r  s     rN   __eq__zBaseRequest.__eq__S  s    $xx2e99$$rM   c                     dS )NTrL   r   s    rN   __bool__zBaseRequest.__bool__V  s    trM   responsec                 
   K   d S rT   rL   )r   r  s     rN   _prepare_hookzBaseRequest._prepare_hookY  s      rM   excc                 0    t          | j        |           d S rT   )r&   rj   )r   r  s     rN   _cancelzBaseRequest._cancel\  s    dmS)))))rM   c                     | j         | j        dk    rd S | j                                         D ]3\  }}t          |t                    r|j                                         4d S )Nra  )ro   rC   r   r   r6   rB   rn  )r   	file_namefile_field_objects      rN   _finishzBaseRequest._finish_  su    :!26K!K!KF -1J,<,<,>,> 	/ 	/(I(+Y77 /!&,,...	/ 	/rM   )r   r   )r   r9   )r   r   )r   N)r   r_  rT   )trE   rF   rG   r   
METH_PATCH	METH_POSTMETH_PUT
METH_TRACEMETH_DELETEre  r!   ATTRS	frozensetro   r   _PostrI   rp   rL  setrx   rH   r'   r,   r   asyncioAbstractEventLoopr3  dictr"   r	   r   r%   r   r1   r/   r   propertyr   r   	Transportr   r   ry   r$   r~   r   r   r   r   r;   r   r   r   r   r   r   r  r   r   r   r   r{   r   r(   r   r|   r}   r   r   r   r   r  r  r   rD   r0   r   datetimer
  r  staticmethodr    r  classmethodr  r  r  r!  r$  r+  r4  r9  r;  r?  rA  rD  rG  rP  rV  r-   r.   rY  r*   r^  r}  r  r  objectr  r  r4   r  BaseExceptionr  r  rL   rM   rN   r5   r5   k   sS        L 	
 	
 	
" " E* +/E>% 4'... $K$$$"suuNCH$$$  '9=!!6+ 6+ 6+"6+ 6+ #	6+
 -6+ #6+ '6+ 6+ JsOc)3./$66+ d
6+ Dj6+ d
6+ 
6+ 6+ 6+ 6+v #+(0,4"* ("*+39
 9
 9
 i9
 I%	9

 	)9
 i9
 Io9
 i9
 y9
 
9
 9
 9
 9
v    X    X (7,t3 ( ( ( X(
 $, $ $ $ X$ % % % % X% *    U     U g/    U 9z"~9"999 X9/s/s/// X/ sZ^3           Fz"~FbFTFFF XF<s<3<4<<< X<
!sZ^3 
!C 
!D 
! 
! 
! 
!sZ^3              !(3C#89 ! ! ! !
 & & & & U& :5c!2C!78 : : : U:x     U     U     U c    U< -d
 - - - U- VS V V V UV "c " " " U" " " " " U" "# " " " U" # # # U# *c * * * U* )#.    U )Z ) ) ) U) I8#4t#; I I I UI KX%6%= K K K UK # (4.    \( 5:5	tSy	D	 5 5 5 [5 L%c	*T1 L L L UL QuT3Y/$6 Q Q Q UQ @(+d2 @ @ @ U@ .D . . . U. 	Qc* 	Q 	Q 	Q U	Q !$E !$ !$ !$ U!$F     U *$ * * * X* *t * * * X* <T < < < U<* * * * E        .+C + + + + 2F   ; #    
	
 	
 	
 	
 	
b b b bH
7 
73 
7 
7 
7 
7 
7 
7U# U U U U%F %t % % % %$    N t    *= *T * * * *
/ 
/ 
/ 
/ 
/ 
/rM   r5   c                   8    e Zd ZU ej         edg          z  ZdZed         ed<   e	rde
deddf fdZeeeeeeedd	e
ez  d
eez  deez  de
ez  de
ez  de
ez  deez  dd f fdZedd            Zedd            Zedefd            ZdeddfdZ xZS )r7   _match_infoNr:   r@   valr   c                     || j         vr-t          j        d| j        j         d| dt
          d           t                                          ||           d S )NzSetting custom .z attribute is discouragedr   r   )r  r   r   r   rE   r   super__setattr__)r   r@   r  r   s      rN   r  zRequest.__setattr__t  sx    4:%%%dn&= % % % % %& 	    GGc*****rM   r   r   r   rD   r{   r|   r}   ry   c          	          t                                          |||||||          }t          t          |          }	| j        |	_        |	S )Nr   )r  r   r   r7   r  )r   r   r   rD   r{   r|   r}   ry   retnew_retr   s             rN   r   zRequest.clone~  sW     ggmm+  
 
 w$$".rM   c                     | j         }|J |S )zResult of route resolving.)r  r   
match_infos     rN   r  zRequest.match_info  s     %
%%%rM   r8   c                 &    | j         }|J |j        S )zApplication instance.)r  current_appr  s     rN   appzRequest.app  s!     %
%%%%%rM   c                     | j         }|J |j        }| j        }|                    |          }t	          t          |d |dz                                }t          |          S )Nr   )r  appsr  indexr   reversedr   )r   r  lstr  idxsublists         rN   config_dictzRequest.config_dict  sb    %
%%%ohiinnxIcAgI//00W%%%rM   r  c                 ~   K   | j         }|d S |j        D ]'}|j        x}r|                    | |           d {V  (d S rT   )r  _appson_response_preparesend)r   r  r  r  r  s        rN   r  zRequest._prepare_hook  so      %
F# 	? 	?C&)&==" ?)..tX>>>>>>>>>	? 	?rM   )r   r:   )r   r8   )rE   rF   rG   r5   r  r  r  r   rI   r   rH   r	   r  r%   r   r1   r/   r3  r   r$   r  r  r  r   r  r4   r  __classcell__)r   s   @rN   r7   r7   l  s        		=/ : ::E37K/0777 
+	+C 	+c 	+d 	+ 	+ 	+ 	+ 	+ 	+ #+(0,4"* ("*+3   i I%	
 	) i Io i y 
     0    U & & & X& &] & & & X&?N ?t ? ? ? ? ? ? ? ?rM   r7   )jr  r  rJ   r.  stringri  r   r   collections.abcr   r   r   r   r   typingr   r	   r
   r   r   r   r   urllib.parser   attr	multidictr   r   r   r   r   yarlr   rR   r   _cookie_helpersr   abcr   helpersr   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   http_parserr'   http_writerr(   r^  r)   r*   streamsr+   r,   typedefsr-   r.   r/   r0   r1   web_exceptionsr2   r3   web_responser4   __all__web_appr8   web_protocolr9   web_urldispatcherr:   r;   sr6   rH   rL  rJ  r  digitsascii_lettersrO   rI   rQ   formatr   r   ranger^   r_   ra   rc   compilerd   re   r5   r7   rL   rM   rN   <module>r     si     				 				     = = = = = = = = = =       " " " " " " O O O O O O O O O O O O O O O O O O " " " " " "                           0 0 0 0 0 0 % % % % % %                              + * * * * * $ $ $ $ $ $ 6 6 6 6 6 6 6 6 4 4 4 4 4 4 4 4              H G G G G G G G ( ( ( ( ( (
1  7$$$$$$,,,,,,666666 WT]] T$d333# # # # # # # 43# 	ei)+]V%99<NNc
 N N N %&___c
 $ $ $nnHHKK/%%dD8I8I2J2JJKKKKK s    )eCj ( ( (@\@@G@@@c
 @ @ @ V6UUfUU~UUUs U U U/9rz//J/J ws|, J J J +5"*_*E*E E'#,' E E E~/ ~/ ~/ ~/ ~/.z#!6!;<l ~/ ~/ ~/BH? H? H? H? H?k H? H? H? H? H?rM   