
    h                     j   % S SK r S SKrS SKrS SK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  S SKJr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#J$r$  SSK%J&r&J'r'J(r(J)r)J*r*J+r+J,r,  SSK-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6  SSK7J8r8J9r9  SSK:J;r;J<r<  SSK=J>r>  Sr?\S   r@\A" \R                  5      rC\\\D      \ES'   \R                  " S5      rG\\D   \ES'   \R                  " S\G S35      rI\\\D      \ES'   \R                  " S\R                  5      rK\\\D      \ES'   \R                  " S\R                  5      rL\\\D      \ES'   \R                  " S5      rM\\\N      \ES'    " S S\5      rO " S  S!\5      rP\" S"\O\P5      rQ " S# S$\5      rR " S% S&\5      rS " S' S(5      rTS)\\D   S*\U4S+ jrV " S, S-\ R                  \\Q   5      rX " S. S/\X\O   5      rY " S0 S1\X\P   5      rZ " S2 S35      r[ " S4 S55      r\\Yr]\Zr^\Or_\Pr` \*(       d  SS6KaJYrYJZrZJOrOJPrP  \Yrb\Zrc\Ord\Pregg! \f a     gf = f)7    N)suppress)IntEnum)AnyClassVarFinalGenericListLiteral
NamedTupleOptionalPatternSetTupleTypeTypeVarUnion)CIMultiDictCIMultiDictProxyistr)URL   )hdrs)BaseProtocol)
HAS_BROTLIBrotliDecompressorZLibDecompressor)_EXC_SENTINELDEBUGEMPTY_BODY_METHODSEMPTY_BODY_STATUS_CODESNO_EXTENSIONSBaseTimerContextset_exception)	BadHttpMessageBadHttpMethodBadStatusLineContentEncodingErrorContentLengthErrorInvalidHeaderInvalidURLErrorLineTooLongTransferEncodingError)HttpVersionHttpVersion10)EMPTY_PAYLOADStreamReader)
RawHeaders)HeadersParser
HttpParserHttpRequestParserHttpResponseParserRawRequestMessageRawResponseMessage)   
   
ASCIISETz!#$%&'*+-.^_`|~_TCHAR_SPECIALSz
[0-9A-Za-zz]+TOKENREzHTTP/(\d)\.(\d)VERSREz\d+DIGITSs   [0-9a-fA-F]+	HEXDIGITSc                       \ rS rSr% \\S'   \\S'   \\S'   S\S'   \\S'   \\S'   \	\   \S	'   \\S
'   \\S'   \
\S'   Srg)r6   Q   methodpathversionCIMultiDictProxy[str]headersraw_headersshould_closecompressionupgradechunkedurl N)__name__
__module____qualname____firstlineno__str__annotations__r-   r1   boolr   r   __static_attributes__rM       E/var/www/html/env/lib/python3.13/site-packages/aiohttp/http_parser.pyr6   r6   Q   s=    K
I$$#MM	HrV   r6   c                   |    \ rS rSr% \\S'   \\S'   \\S'   \\   \S'   \	\S'   \
\S'   \\   \S'   \
\S	'   \
\S
'   Srg)r7   ^   rD   codereasonrF   rG   rH   rI   rJ   rK   rM   N)rN   rO   rP   rQ   r-   rS   intrR   r   r1   rT   r   rU   rM   rV   rW   r7   r7   ^   s=    
IKc""#MMrV   r7   _MsgTc                   $    \ rS rSrSrSrSrSrSrg)
ParseStatem   r   r         rM   N)	rN   rO   rP   rQ   
PARSE_NONEPARSE_LENGTHPARSE_CHUNKEDPARSE_UNTIL_EOFrU   rM   rV   rW   r_   r_   m   s    JLMOrV   r_   c                   (    \ rS rSrSrSrSrSrSrSr	g)	
ChunkStateu   r   r   ra   rb      rM   N)
rN   rO   rP   rQ   PARSE_CHUNKED_SIZEPARSE_CHUNKED_CHUNKPARSE_CHUNKED_CHUNK_EOFPARSE_MAYBE_TRAILERSPARSE_TRAILERSrU   rM   rV   rW   rh   rh   u   s    NrV   rh   c                   `    \ rS rSr    SS\S\S\S\SS4
S jjrS	\\   S\	S
\
4   4S jrSrg)r2   }   max_line_sizemax_headersmax_field_sizelaxreturnNc                 4    Xl         X l        X0l        X@l        g N)rr   rs   rt   _lax)selfrr   rs   rt   ru   s        rW   __init__HeadersParser.__init__~   s     +&,	rV   linesrE   c           	      ,   [        5       n/ nSnUS   n[        U5      nU(       Ga   UR                  SS5      u  px[        U5      S:X  a  [	        U5      eUS   US   1SS1-  (       a  [	        U5      eUR                  S5      n[        U5      U R                  :  aQ  [        SR                  UR                  S	S
5      5      [        U R                  5      [        [        U5      5      5      eUR                  SS5      n	[        R                  U	5      (       d  [	        U5      e[        U5      n
US-  nX   nU R                  =(       a    U=(       a    US   S;   nU(       a  U/nU(       a  U
[        U5      -  n
XR                  :  aH  [        SR                  UR                  S	S
5      5      [        U R                  5      [        U
5      5      eUR                  U5        US-  nXF:  a  X   nU(       a  US   S;   nOSnO	U(       a  M  SR                  U5      nOWXR                  :  aH  [        SR                  UR                  S	S
5      5      [        U R                  5      [        U
5      5      eUR!                  S5      nUR                  SS5      nSU;   d  SU;   d  SU;   a  [	        U5      eUR#                  X5        UR                  Xx45        U(       a  GM  [%        U5      ['        U5      4$ ! [         a    [	        U5      S ef = f)Nr      :r       	   s    	zrequest header name {}utf8backslashreplaceutf-8surrogateescape)r   r   zrequest header field {}rV   
 )r   lensplit
ValueErrorr)   lstriprt   r+   formatdecoderR   r<   	fullmatchry   appendjoinstripaddr   tuple)rz   r}   rF   rG   	lines_idxline
line_countbnamebvaluenameheader_lengthcontinuation
bvalue_lstvalues                 rW   parse_headersHeadersParser.parse_headers   s    %0M	QxZ
4 $

4 3 5zQ#E** a%)$Aw.#D))]]6*F5zD///!,33V-?@ ++,E
O  <<):;D$$T**#E**KM NI#D  99DD$q'W2DL $X
"!SY.M$':'::)5<< %V5G H   3 34.  %%d+ NI -$/+/7g+=L") #l* *- #6#66%188!LL1CD D//0M*  \\&)FMM'+<=E u}5#F++KK$/_ db !)5+=>>[  4#D)t34s   K< <L)ry   rt   rs   rr   )     r   F)rN   rO   rP   rQ   r\   rT   r{   r	   bytesr   r1   r   rU   rM   rV   rW   r2   r2   }   sl     " "

 
 	

 
 

\?%[\?	&
2	3\?rV   r2   rF   rv   c                 d    U R                  [        R                  S5      R                  5       S;   $ )z)Check if the upgrade header is supported. >   tcp	websocket)getr   UPGRADElower)rF   s    rW   _is_supported_upgrader      s&    ;;t||R(..04HHHrV   c                      \ rS rSr% Sr\\   \S'                S'S\\	   S\\
R                     S\S\S	\S
\S\\   S\\   S\\   S\\\      S\S\S\SS4S jjr\R&                  S\\   S\4S j5       r\R&                  S\S\4S j5       rS\\   4S jrSS\R6                  \R8                  \R:                  4S\S\S\S\S\S \S\ \\ \\!4      \\4   4S! jjr"S\\   S\ S"\#\\   \\   \\4   4S# jr$S$\SS4S% jr%S&r&g)(r3      Fru   Nprotocollooplimitrr   rs   rt   timerrZ   rB   payload_exceptionresponse_with_bodyread_until_eofauto_decompressrv   c                    Xl         X l        X@l        XPl        X`l        Xpl        Xl        Xl        Xl        Xl	        Xl
        / U l        SU l        SU l        S U l        S U l        Xl        X0l        [%        XEX`R&                  5      U l        g )NrV   F)r   r   rr   rs   rt   r   rZ   rB   r   r   r   _lines_tail	_upgraded_payload_payload_parser_auto_decompress_limitr2   ru   _headers_parser)rz   r   r   r   rr   rs   rt   r   rZ   rB   r   r   r   r   s                 rW   r{   HttpParser.__init__   s      !	*&,
	!2"4,#%
<@ /, 
rV   r}   c                     g rx   rM   )rz   r}   s     rW   parse_messageHttpParser.parse_message  s    :=rV   tec                     g rx   rM   rz   r   s     rW   _is_chunked_teHttpParser._is_chunked_te  s    /2rV   c                    U R                   b"  U R                   R                  5         S U l         g U R                  (       a%  U R                  R	                  U R                  5        U R                  (       ab  U R                  S   S:w  a  U R                  R	                  S5        [        [        5         U R                  U R                  5      sS S S 5        $ g ! , (       d  f       g = f)Nr   z
rV   )r   feed_eofr   r   r   r   	Exceptionr   rz   s    rW   r   HttpParser.feed_eof  s    +  ))+#'D   zz""4::.{{;;r?f,KK&&s+i(--dkk: )( )(s   4C
C(r8   rV   dataSEPEMPTYCONTENT_LENGTHMETH_CONNECTSEC_WEBSOCKET_KEY1c                 
  ^^ / nU R                   (       a  U R                   U-   Ssol         [        U5      nSn	U R                  n
SnX:  Ga  U R                  Gc  U R                  (       Gd  UR                  X)5      nX:X  a!  U R                  (       d  U[        U5      -   n	M]  X:  Ga  U(       a  [        S5      eXU nUS:X  a  UR                  S5      nU R                  R                  U5        U[        U5      -   n	U R                  S   U:X  Ga   U R                  U R                  5      mU R                  R                  5         S[        [           4UU4S	 jjnU" 5       nUTR                  ;   a  [        U5      eTR                   =(       a    [#        TR                  5      U l        [%        TS
U R&                  5      n[%        TSS5      nU R(                  c   eU[*        ;   =(       d    [-        U=(       a	    U[.        ;   5      nU(       d  Ub  US:  d  TR0                  (       a  U R                  (       d  [3        U R(                  U R4                  U
U R6                  S9n[9        UUTR0                  UTR:                  U R<                  U R>                  U R@                  U RB                  S9	nURD                  (       d  UU l        GO:UU:X  a  [G        T[H        5      (       d   e[3        U R(                  U R4                  U
U R6                  S9nSU l        [9        UTR&                  TR:                  U R@                  U RB                  S9U l        OU(       d  Uc  U RJ                  (       a  [3        U R(                  U R4                  U
U R6                  S9n[9        UUTR0                  UTR:                  U R<                  U R>                  U R@                  U RB                  S9	nURD                  (       d  UU l        O[L        nUR                  TU45        TRN                  nOXS  U l         UnOU R                  c%  U R                  (       a  U R                  (       a   eOxU(       ah  X:  ac  U R                  (       a   eU R                  c   e U R                  RQ                  XS  U5      u  nnU(       a  Sn	[        U5      nS U l        GM  OOX:  a  GM  U(       a
  X:  a  XS  nOUnXpR                  U4$ ! U R                  R                  5         f = f! [R         aX  nUnU RT                  b  U RU                  [W        U5      5      n[Y        U R                  RZ                  UU5        SnSn S nANS nAff = f)NrV   r   FzData after `Connection: close`r9      r   rv   c                     > TR                   R                  T5      n U c  g [        R                  U 5      (       d  [	        T5      e[        U 5      $ rx   )rF   r   r>   r   r)   r\   )
length_hdrr   msgs    rW   get_content_length0HttpParser.feed_data.<locals>.get_content_length_  sF    ),)HJ)1'+
 $*#3#3J#?#?&3N&C C#&z?2rV   rB   rZ   )r   r   r   )lengthrK   rB   rI   rZ   r   r   ru   T)rB   rI   r   ru   ).r   r   r   r   r   findr   r$   rstripr   r   clearr   r\   rF   r)   rJ   r   getattrrB   r   r    rT   r   rK   r0   r   r   HttpPayloadParserrI   rZ   r   r   ru   done
isinstancer6   r   r/   rH   	feed_dataBaseExceptionr   rR   r#   payload)rz   r   r   r   r   r   r   messagesdata_len	start_posr   rH   posr   r   r   rB   rZ   
empty_bodyr   payload_parsereofunderlying_excreraised_excr   s       `                   @rW   r   HttpParser.feed_data.  s    ::#zzD0#D*t9	yy" ##+DNNNii/#DKK #c#hI##,-MNN  #.De|#{{51KK&&t, #c#hI {{2%/0)-););DKK)HC KK--/3HSM 3 3 "4!5-<"/0B"CC), *9NKK: ")h!D&sFA6#}}888%)-D%D &"Cv1C'CI
  *$0VaZCKK$(NN&2 $&*jj%)&*kk	'G .? ''-(+'-,/OO%)YY373J3J040E0E$(HH
.N $2#6#67E 4#|3#-c3D#E#EE#E&2 $&*jj%)&*kk	'G .2DN3D ''*zz,/OO040E0E$(HH4D0 ",4CVCV&2 $&*jj%)&*kk	'G .? ''-(+'-,/OO%)YY373J3J040E0E$(HH
.N $2#6#67E 4&3G g7'*'7'7!%j!1DJ D %%-$..;;& ).;;&++777 $ 4 4 > >tJ?OQT UIC  !I"4yH+/D(	  C "F I(
#DD--[ !KK--/d % #1L--9'+'='=c.>Q'R!,,44$& CDs%   T !T  T 
V*AU==VrE   c           
        ^ U R                   R                  U5      u  mnSnSnSnSn[        R                  [        R                  [        R
                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  4
n[        U4S jU 5       S5      nUb  [        SU S35      eTR                  [        R                   5      n	U	(       aN  U	R#                  5       n
U
S:X  a  SnO5U
S:X  a  SnO,U
S	:X  a&  TR                  [        R$                  5      (       a  SnTR                  [        R&                  5      nU(       a  UR#                  5       nUS
;   a  UnTR                  [        R                  5      nUb7  U R)                  U5      (       a  Sn[        R                  T;   a  [        S5      eTX#XEU4$ )zParses RFC 5322 headers from a stream.

Line continuations are supported. Returns list of header name
and value pairs. Header name is in upper case.
NFc              3   j   >#    U  H(  n[        TR                  US 5      5      S:  d  M$  Uv   M*     g7f)rM   r   N)r   getall).0hrF   s     rW   	<genexpr>+HttpParser.parse_headers.<locals>.<genexpr>
  s*     P:aW^^Ar5J1Ka1O:s   #3	3zDuplicate 'z' header found.closeTz
keep-aliverJ   )gzipdeflatebrz6Transfer-Encoding can't be present with Content-Length)r   r   r   r   CONTENT_LOCATIONCONTENT_RANGECONTENT_TYPEETAGHOSTMAX_FORWARDSSERVERTRANSFER_ENCODING
USER_AGENTnextr$   r   
CONNECTIONr   r   CONTENT_ENCODINGr   )rz   r}   rG   
close_connencodingrJ   rK   
singletonsbad_hdrconnvencr   rF   s                @rW   r   HttpParser.parse_headers  s     $33AA%H

 !!IIIIKK""OO

 P:PRVW ;wi!GHH {{4??+

AG|!
l""
iGKK$=$= kk$//0))+C// [[//0>""2&&""g-$L  (WMMrV   valc                     Xl         g)zJSet connection upgraded (to websocket) mode.

:param bool val: new state.
N)r   )rz   r  s     rW   set_upgradedHttpParser.set_upgraded.  s	    
 rV   )r   r   r   r   r   r   r   r   rZ   r   rt   rs   rr   rB   r   r   r   r   r   )NNi   r   r   r   NNNNTFT)'rN   rO   rP   rQ   ru   r   rT   rS   r   r   asyncioAbstractEventLoopr\   r"   rR   r   r   r{   abcabstractmethodr	   r   r]   r   r   r   r   r   r   r   _SEPr   r   r0   r   r1   r   r  rU   rM   rV   rW   r3   r3      s$   C$ ,048! ",0" $;?#'$ $%
<(%
 w001%
 	%

 %
 %
 %
 ()%
 sm%
 %
 $D$78%
 !%
 %
 %
 
%
N 	=4;=5= =222 2(5/ & #22 --#'#:#:|.|. |. 	|.
 |. |. !|. 
tE%-./u<	=|.|@N%[@N	Xd^Xc]DRVV
@ND  rV   r3   c                   B    \ rS rSrSrS\\   S\4S jrS\	S\
4S jrSrg	)
r4   i6  zRead request status line.

Exception .http_exceptions.BadStatusLine
could be raised in case of any errors in status line.
Returns RawRequestMessage.
r}   rv   c                 6   US   R                  SS5      n UR                  SSS9u  p4n[	        U5      U R
                  :  a2  [        S[        U R
                  5      [        [	        U5      5      5      e[        R                  U5      (       d  [        U5      e[        R                  U5      nUc  [        U5      e[        [        UR                  S5      5      [        UR                  S5      5      5      nUS	:X  a  [        R                   " US
S9nOUR#                  S5      (       a@  UR%                  S5      u  pnU	R%                  S5      u  pn[        R                   " U	UUS
S9nOXUS:X  a  US:X  a  [        US
S9nOA[        US
S9nUR&                  S:X  a'  [)        UR+                  SS9R                  S5      5      eU R-                  U5      u  nnnnnnUc  U[.        ::  a  S
nOSn[1        UUUUUUUUUU5
      $ ! [         a    [        U5      S ef = f)Nr   r   r    ra   maxsplitStatus line is too longr   CONNECTT)	authorityencoded/#?)rC   query_stringfragmentr   *OPTIONS)r   r   )errorslatin1F)r   r   r   r%   r   rr   r+   rR   r<   r   r=   r&   r-   r\   groupr   build
startswith	partitionschemer*   encoder   r.   r6   )rz   r}   r   rB   rC   rD   match	version_orL   	path_part_hash_separatorurl_fragment_question_mark_separatorqs_partrF   rG   r   rI   rJ   rK   s                       rW   r   HttpRequestParser.parse_message>  s*   Qxw(9:	0$(JJsQJ$?!F' t9t))))3t/A/A+BCD	N 
   ((''   )=%%EKKN 3SQ5HI	Y ))dD9C__S!! 8<~~c7J4I;D;N;Ns;S8I ))$%	C S[Vy0dD)C dD)CzzR%KK'8K9@@J  u%	
 =M) 
 	
G  	0%4/	0s   H Hr   c                     UR                  SSS9S   R                  S5      R                  5       S:X  a  g[        S5      e)	N,r   r  r    	rK   Tz'Request has invalid `Transfer-Encoding`)rsplitr   r   r$   r   s     rW   r    HttpRequestParser._is_chunked_te  s?    99S19%b)//6<<>)KFGGrV   rM   N)rN   rO   rP   rQ   __doc__r	   r   r6   r   rR   rT   r   rU   rM   rV   rW   r4   r4   6  s9    S
4; S
3D S
jH H HrV   r4   c                      ^  \ rS rSrSr\(       + r SS\S\\	   S\
S\
S\\\\\4      \\4   4
U 4S jjjrS	\\   S\4S
 jrS\S\4S jrSrU =r$ )r5   i  zRead response status line and headers.

BadStatusLine could be raised in case of any errors in status line.
Returns RawResponseMessage.
r   r   argskwargsrv   c                 P   > Uc  [         (       a  SOSn[        TU ]  " X/UQ70 UD6$ )Nr8   r9   )r   superr   )rz   r   r   r?  r@  	__class__s        rW   r   HttpResponseParser.feed_data  s/     ;"U'Cw <T<V<<rV   r}   c                    US   R                  SS5      n UR                  SS9u  p4 UR                  SS9u  pE[        U5      U R                  :  a2  [        S[        U R                  5      [        [        U5      5      5      e[        R                  U5      nUc  [        U5      e[        [        UR                  S5      5      [        UR                  S5      5      5      n[        U5      S	:w  d  [        R                  U5      (       d  [        U5      e[        U5      nU R                  U5      u  n	n
nnnnUcR  U[         ::  a  S
nOESUs=::  a  S:  d  O  US;   a  SnO-["        R$                  U	;   d  ["        R&                  U	;   a  SnOS
n[)        UUUR	                  5       U	U
UUUU5	      $ ! [         a    [        U5      S ef = f! [         a    UR	                  5       nSn GNf = f)Nr   r   r   r   r  r   r  ra   rb   Td      >   0     F)r   r   r   r&   r   r   rr   r+   rR   r=   r   r-   r\   r*  r>   r   r.   r   r   r  r7   )rz   r}   r   rD   statusr[   r0  r1  status_irF   rG   r   rI   rJ   rK   s                  rW   r    HttpResponseParser.parse_message  s   Qxw(9:	0"jj!j4OG	#\\1\5NF
 v;+++)3t/A/A+BCFDT 
   )=%%EKKN 3SQ5HI	 v;!6#3#3F#;#;%%v; u%	
 =M)&3&(j*@$$/43I3IW3T !LLN

 
	
_  	0%4/	0
  	\\^FF	s   F1 G 1GG+*G+r   c                 h    UR                  SSS9S   R                  S5      R                  5       S:H  $ )Nr9  r   r  r   r:  rK   )r;  r   r   r   s     rW   r   !HttpResponseParser._is_chunked_te  s3    yyqy)"-33E:@@BiOOrV   rM   rx   )rN   rO   rP   rQ   r=  r   ru   r   r   r  r   r   r	   r7   r0   rT   r   r   rR   r   rU   __classcell__)rC  s   @rW   r5   r5     s     )C
 #	=	= d^	= 		=
 	= 
tE,l:;<dEI	J	= 	==
4; =
3E =
~P P P PrV   r5   c                       \ rS rSr        SS\S\\   S\S\\   S\\   S\\   S	\S
\S\SS4S jjr	SS jr
 SS\S\S\S\\\4   4S jjrSrg)r   i  Nr   r   rK   rI   rZ   rB   r   r   ru   rv   c
                 :   SU l         [        R                  U l        [        R
                  U l        SU l        SU l        Xl	        Xl
        SU l        U(       a$  U(       a  U R                  (       a  [        X5      n
OUn
U(       d-  [        R                  U l        U
R                  5         SU l        ObU(       a  [        R                  U l        OEUbB  [        R                   U l        X l         U R                   S:X  a  U
R                  5         SU l        Xl        g )Nr   rV   FT)_lengthr_   rf   _typerh   rk   _chunk_chunk_size_chunk_tailr   ry   r   DeflateBufferrc   r   re   rd   r   )rz   r   r   rK   rI   rZ   rB   r   r   ru   real_payloads              rW   r{   HttpPayloadParser.__init__  s     //
 33 /		 +$2G2G?L@L #L "#..DJ!!#DI#11DJ#00DJ!L||q %%' 	#rV   c                    U R                   [        R                  :X  a  U R                  R	                  5         g U R                   [        R
                  :X  a  [        S5      eU R                   [        R                  :X  a  [        S5      eg )Nz2Not enough data for satisfy content length header.z3Not enough data for satisfy transfer length header.)	rS  r_   rf   r   r   rd   r(   re   r,   r   s    rW   r   HttpPayloadParser.feed_eof"  so    ::333LL!!#ZZ:222$D  ZZ:333'E  4rV   chunkr   	CHUNK_EXTc                 
   U R                   [        R                  :X  a  U R                  n[	        U5      nXE:  aQ  XE-
  U l        U R
                  R                  X5        U R                  S:X  a  U R
                  R                  5         g gSU l        U R
                  R                  US U U5        U R
                  R                  5         SXS  4$ U R                   [        R                  :X  Ga  U R                  (       a  U R                  U-   nSU l	        U(       Ga  U R                  [        R                  :X  Ga  UR                  U5      nUS:  Gao  UR                  USU5      nUS:  a7  US U nSXU =n	;   a'  [        SU	< 35      n
[        U R
                  U
5        U
eOUS U nU R                   (       a  UR#                  5       n[$        R&                  " [(        U5      (       d6  [+        US U R-                  SS5      5      n
[        U R
                  U
5        U
e[/        [1        U5      S	5      nX[	        U5      -   S  nUS:X  aB  [        R2                  U l
        U R                   (       a  UR5                  S
5      (       a  USS  nO=[        R6                  U l
        Xl        U R
                  R;                  5         OXl	        gU R                  [        R6                  :X  a  U R8                  n[	        U5      nXE:  a%  XE-
  U l        U R
                  R                  X5        gSU l        U R
                  R                  US U U5        XS  n[        R<                  U l
        U R
                  R?                  5         U R                  [        R<                  :X  ai  U R                   (       a  UR5                  S
5      (       a  USS  nUS [	        U5       U:X  a$  U[	        U5      S  n[        R                  U l
        OXl	        gU R                  [        R2                  :X  ai  US [	        U5       nX:X  a*  U R
                  R                  5         SU[	        U5      S  4$ U(       d  gXS S :X  a  Xl	        g[        R@                  U l
        U R                  [        R@                  :X  aD  UR                  U5      nUS:  a&  X[	        U5      -   S  n[        R2                  U l
        OXl	        gU(       a  GM  gU R                   [        RB                  :X  a%  U R
                  R                  U[	        U5      5        g)Nr   )TrV   TrV   r9   z"Unexpected LF in chunk-extension: asciir      r   r   )FrV   )"rS  r_   rd   rR  r   r   r   r   re   rV  rT  rh   rk   r   r$   r#   ry   r   rer   r?   r,   r   r\   r   rn   r,  rl   rU  begin_http_chunk_receivingrm   end_http_chunk_receivingro   rf   )rz   r\  r   r]  required	chunk_lenr   isize_bextexcsizeheads                rW   r   HttpPayloadParser.feed_data.  su    ::000||HE
I$'3&&u8<<1$LL))+$ %r k  !&&uYh'7B%%'U9--- ZZ:333((50#&  ;;*"?"??**S/Cax!JJy!S96%*2AYF$)<=&4&H$P'" !.dllC @&)	  > &+4C[F99%+\\^F!||Iv>>"7 %ds 2 27<M N#C *$,,<"%I"5="5 %CHn&6 719*4*I*IDK#yyU-=-=e-D-D(-ab	*4*H*HDK/3, LLCCE+0() ;;*"@"@@#//H #E
I++3+?(..u@)+,(..uYh/?J %i 0&0&H&H==? ;;*"D"DDyyU%5%5e%<%< %ab	Zs3x(C/ %c#hj 1&0&C&C+0()
 ;;*"A"AA 3s8,D{--/#U3s8:%666  )2Aw+/()",";";DK ;;*";";;**S/Cax %CHn&6 7&0&E&E+0()I %T  ZZ:555LL""5#e*5rV   )	r   rT  rU  rV  ry   rR  rS  r   r   )NFNNNTTFrv   N)r8      ;)rN   rO   rP   rQ   r0   r   r\   rT   rR   r{   r   r   r  r   r   rU   rM   rV   rW   r   r     s     !%%)" $#' $,$,$ ,$ 	,$
 c],$ sm,$ ,$ !,$ ,$ ,$ 
,$\
 EIDD!%D<AD	tU{	D DrV   r   c                       \ rS rSr% Sr\\S'   S\S\\	   SS4S jr
\4S	\S
\SS4S jjrS\S\SS4S jrSS jrSS jrSS jrSrg)rW  i  zDDeflateStream decompress stream and feed data into specified stream.decompressoroutr  rv   Nc                     Xl         SU l        X l        SU l        U   US:X  a&  [        (       d  [        S5      e[        5       U l        g [        US9U l        g )Nr   Fr   zECan not decode content-encoding: brotli (br). Please install `Brotli`)r  )	rq  rj  r  _started_decodingr   r'   r   rp  r   )rz   rq  r  s      rW   r{   DeflateBuffer.__init__  sW    	 !&t:*.  !3 4D 0( CDrV   ri  	exc_causec                 0    [        U R                  X5        g rx   )r#   rq  )rz   ri  ru  s      rW   r#   DeflateBuffer.set_exception  s    
 	dhh/rV   r\  rj  c                    U(       d  g U =R                   U-  sl         U R                  (       d5  U R                  S:X  a%  US   S-  S:w  a  [        U R                  SS9U l         U R                  R                  U5      nSU l        U(       a&  U R                  R                  U[        U5      5        g g ! [         a    [        SU R                  -  5      ef = f)Nr   r         T)r  suppress_deflate_headerz#Can not decode content-encoding: %s)rj  rs  r  r   rp  decompress_syncr   r'   rq  r   r   )rz   r\  rj  s      rW   r   DeflateBuffer.feed_data  s    		T	 &&*a3!# !1!D	%%55e<E "&HHuc%j1   	&5E 	s   %B5 5#Cc                 P   U R                   R                  5       nU(       d  U R                  S:  a[  U R                  R	                  U[        U5      5        U R                  S:X  a&  U R                   R                  (       d  [        S5      eU R                  R                  5         g )Nr   r   )
rp  flushrj  rq  r   r   r  r   r'   r   )rz   r\  s     rW   r   DeflateBuffer.feed_eof  sp    !!'')DIIMHHuc%j1}}	)$2C2C2G2G*955rV   c                 8    U R                   R                  5         g rx   )rq  rb  r   s    rW   rb  (DeflateBuffer.begin_http_chunk_receiving  s    ++-rV   c                 8    U R                   R                  5         g rx   )rq  rc  r   s    rW   rc  &DeflateBuffer.end_http_chunk_receiving  s    ))+rV   )rs  rp  r  rq  rj  rm  )rN   rO   rP   rQ   r=  r   rS   r0   r   rR   r{   r   r   r#   r   r\   r   r   rb  rc  rU   rM   rV   rW   rW  rW    s}    NDL DHSM Dd D( $100 !0 
	02u 2C 2D 2@.,rV   rW  )r4   r5   r6   r7   )gr  r  ra  string
contextlibr   enumr   typingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   	multidictr   r   r   yarlr   r   r   base_protocolr   compression_utilsr   r   r   helpersr   r   r   r    r!   r"   r#   http_exceptionsr$   r%   r&   r'   r(   r)   r*   r+   r,   http_writerr-   r.   streamsr/   r0   typedefsr1   __all__r  set	printabler:   rR   rS   escaper;   compiler<   ASCIIr=   r>   r?   r   r6   r7   r]   r_   rh   r2   rT   r   ABCr3   r4   r5   r   rW  HttpRequestParserPyHttpResponseParserPyRawRequestMessagePyRawResponseMessagePy_http_parserHttpRequestParserCHttpResponseParserCRawRequestMessageCRawResponseMessageCImportErrorrM   rV   rW   <module>r     sh   
  	      " : 9   ' O O  
 
 
 4 0   ~ 0 01%C/ 1 !ii(9:s :!zzJ6Gr*JKws|	 K jj);RXXFgcl F jj:gcl :#%::.>#?	5  ?

 
	 	 	*,>?  i? i?XI#3C#8 IT I
E'%. EP
aH
#45 aHHVP$67 VPr DK, K,\ ( ) ' ) 		
 	
 /0.0   		s   H) )H21H2