
    q*i                     r   % 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$J%r%J&r&  SSK'J(r(J)r)J*r*J+r+J,r,J-r-J.r.  SSK/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8  SSK9J:r:J;r;  SSK<J=r=J>r>  SSK?J@r@  SrA\S   rB\C" \R                  5      rE\\\F      \GS'   \R                  " S5      rI\\F   \GS'   \R                  " S\I S35      rK\\\F      \GS'   \R                  " S\R                  5      rM\\\F      \GS'   \R                  " S\R                  5      rN\\\F      \GS'   \R                  " S5      rO\\\P      \GS'    " S S\5      rQ " S  S!\5      rR\" S"\Q\R5      rS " S# S$\5      rT " S% S&\5      rU " S' S(5      rVS)\\F   S*\W4S+ jrX " S, S-\ R                  \\S   5      rZ " S. S/\Z\Q   5      r[ " S0 S1\Z\R   5      r\ " S2 S35      r] " S4 S55      r^\[r_\\r`\Qra\Rrb \,(       d  SS6KcJ[r[J\r\JQrQJRrR  \[rd\\re\Qrf\Rrggg! \h 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HAS_ZSTDBrotliDecompressorZLibDecompressorZSTDDecompressor)_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)r8   W   methodpathversionCIMultiDictProxy[str]headersraw_headersshould_closecompressionupgradechunkedurl N)__name__
__module____qualname____firstlineno__str__annotations__r/   r3   boolr   r   __static_attributes__rO       S/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/aiohttp/http_parser.pyr8   r8   W   s=    K
I$$#MM	HrX   r8   c                   |    \ rS rSr% \\S'   \\S'   \\S'   \\   \S'   \	\S'   \
\S'   \\   \S'   \
\S	'   \
\S
'   Srg)r9   d   rF   codereasonrH   rI   rJ   rK   rL   rM   rO   N)rP   rQ   rR   rS   r/   rU   intrT   r   r3   rV   r   rW   rO   rX   rY   r9   r9   d   s=    
IKc""#MMrX   r9   _MsgTc                   $    \ rS rSrSrSrSrSrSrg)
ParseStates   r   r         rO   N)	rP   rQ   rR   rS   
PARSE_NONEPARSE_LENGTHPARSE_CHUNKEDPARSE_UNTIL_EOFrW   rO   rX   rY   ra   ra   s   s    JLMOrX   ra   c                   (    \ rS rSrSrSrSrSrSrSr	g)	
ChunkState{   r   r   rc   rd      rO   N)
rP   rQ   rR   rS   PARSE_CHUNKED_SIZEPARSE_CHUNKED_CHUNKPARSE_CHUNKED_CHUNK_EOFPARSE_MAYBE_TRAILERSPARSE_TRAILERSrW   rO   rX   rY   rj   rj   {   s    NrX   rj   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)r4      max_line_sizemax_headersmax_field_sizelaxreturnNc                 4    Xl         X l        X0l        X@l        g N)rt   ru   rv   _lax)selfrt   ru   rv   rw   s        rY   __init__HeadersParser.__init__   s     +&,	rX   linesrG   c           	      *   [        5       n/ nSnX   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 {}rX   
 )r   lensplit
ValueErrorr+   lstriprv   r-   formatdecoderT   r>   	fullmatchr{   appendjoinstripaddr   tuple)r|   r   rH   rI   	lines_idxline
line_countbnamebvaluenameheader_lengthcontinuation
bvalue_lstvalues                 rY   parse_headersHeadersParser.parse_headers   s    %0M	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)r{   rv   ru   rt   )     r   F)rP   rQ   rR   rS   r^   rV   r}   r	   bytesr   r3   r   rW   rO   rX   rY   r4   r4      sl     " "

 
 	

 
 

\?%[\?	&
2	3\?rX   r4   rH   rx   c                 d    U R                  [        R                  S5      R                  5       S;   $ )z)Check if the upgrade header is supported. >   tcp	websocket)getr   UPGRADElower)rH   s    rY   _is_supported_upgrader      s&    ;;t||R(..04HHHrX   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)(r5      Frw   Nprotocollooplimitrt   ru   rv   timerr\   rD   payload_exceptionresponse_with_bodyread_until_eofauto_decompressrx   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 )NrX   F)r   r   rt   ru   rv   r   r\   rD   r   r   r   _lines_tail	_upgraded_payload_payload_parser_auto_decompress_limitr4   rw   _headers_parser)r|   r   r   r   rt   ru   rv   r   r\   rD   r   r   r   r   s                 rY   r}   HttpParser.__init__   s      !	*&,
	!2"4,#%
<@ /, 
rX   r   c                     g rz   rO   )r|   r   s     rY   parse_messageHttpParser.parse_message  s    :=rX   tec                     g rz   rO   r|   r   s     rY   _is_chunked_teHttpParser._is_chunked_te!  s    /2rX   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
rX   )r   feed_eofr   r   r   r   	Exceptionr   r|   s    rY   r   HttpParser.feed_eof$  s    +  ))+#'D   zz""4::.{{;;r?f,KK&&s+i(--dkk: )( )(s   4C
C(r:   rX   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a6   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                  U RD                  S9
nURF                  (       d  UU l        GOPUU:X  a  [I        T[J        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                  U RD                  S9U l        OU(       d  Uc  U RL                  (       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                  U RD                  S9
nURF                  (       d  UU l        O[N        nUR                  TU45        TRP                  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                  RS                  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! [T         at  nUnU RV                  b  U RW                  [Y        U5      5      n[[        U R                  R\                  UU5        SnSn[I        U[        [^        45      (       a  e  S nANS nAff = f)NrX   r   FzData after `Connection: close`r;      r   rx   c                     > TR                   R                  T5      n U c  g [        R                  U 5      (       d  [	        T5      e[        U 5      $ rz   )rH   r   r@   r   r+   r^   )
length_hdrr   msgs    rY   get_content_length0HttpParser.feed_data.<locals>.get_content_lengthe  sF    ),)HJ)1'+
 $*#3#3J#?#?&3N&C C#&z?2rX   rD   r\   )r   r   r   )	lengthrM   rD   rK   r\   r   r   rw   headers_parserT)rD   rK   r   rw   r   )0r   r   r   r   r   findr   r&   rstripr   r   clearr   r^   rH   r+   rL   r   getattrrD   r   r"   rV   r!   rM   r2   r   r   HttpPayloadParserrK   r\   r   r   rw   r   done
isinstancer8   r   r1   rJ   	feed_dataBaseExceptionr   rT   r%   payloadr.   )r|   r   r   r   r   r   r   messagesdata_len	start_posr   rJ   posr   r   r   rD   r\   
empty_bodyr   payload_parsereofunderlying_excreraised_excr   s       `                   @rY   r   HttpParser.feed_data4  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/3/C/C.N $2#6#67E 4#|3#-c3D#E#EE#E&2 $&*jj%)&*kk	'G .2DN3D ''*zz,/OO040E0E$(HH/3/C/C4D0 ",4CVCV&2 $&*jj%)&*kk	'G .? ''-(+'-,/OO%)YY373J3J040E0E$(HH/3/C/C.N $2#6#67E 4&3G g7'*'7'7!%j!1DJ D %%-$..;;& ).;;&++777 $ 4 4 > >tJ?OQT UIC&  !I"4yH+/D(	  Q "T I(
#DD--i !KK--/j % #1L--9'+'='=c.>Q'R!,,44$& CD!&8M(N  s%   T" 8!U "T>
V?A*V::V?rG   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)rO   r   N)r   getall).0hrH   s     rY   	<genexpr>+HttpParser.parse_headers.<locals>.<genexpr>  s*     P:aW^^Ar5J1Ka1O:s   #3	3zDuplicate 'z' header found.closeTz
keep-aliverL   )gzipdeflatebrzstdz6Transfer-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   )r|   r   rI   
close_connencodingrL   rM   
singletonsbad_hdrconnvencr   rH   s                @rY   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77 [[//0>""2&&""g-$L  (WMMrX   valc                     Xl         g)zJSet connection upgraded (to websocket) mode.

:param bool val: new state.
N)r   )r|   r  s     rY   set_upgradedHttpParser.set_upgraded;  s	    
 rX   )r   r   r   r   r   r   r   r   r\   r   rv   ru   rt   rD   r   r   r   r   r   )NNi   r   r   r   NNNNTFT)'rP   rQ   rR   rS   rw   r   rV   rU   r   r   asyncioAbstractEventLoopr^   r$   rT   r   r   r}   abcabstractmethodr	   r   r_   r   r   r   r   r   r   r   _SEPr   r   r2   r   r3   r   r  rW   rO   rX   rY   r5   r5      s$   C$ ,048! ",0" $;?#'$ $%
<(%
 w001%
 	%

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

Exception .http_exceptions.BadStatusLine
could be raised in case of any errors in status line.
Returns RawRequestMessage.
r   rx   c                 <   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SS  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    rc   maxsplitStatus line is too longr   CONNECTT)	authorityencoded/#?)rE   query_stringfragmentr$  *OPTIONS)r$  r   )errorslatin1F)r   r   r   r'   r   rt   r-   rT   r>   r   r?   r(   r/   r^   groupr   build
startswith	partitionschemer,   encoder   r0   r8   )r|   r   r   rD   rE   rF   match	version_orN   	path_part_hash_separatorurl_fragment_question_mark_separatorqs_partrH   rI   r   rK   rL   rM   s                       rY   r   HttpRequestParser.parse_messageK  s0   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  uQRy)	
 =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    	rM   Tz'Request has invalid `Transfer-Encoding`)rsplitr   r   r&   r   s     rY   r    HttpRequestParser._is_chunked_te  s?    99S19%b)//6<<>)KFGGrX   rO   N)rP   rQ   rR   rS   __doc__r	   r   r8   r   rT   rV   r   rW   rO   rX   rY   r6   r6   C  s9    S
4; S
3D S
jH H HrX   r6   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$ )r7   i  zRead response status line and headers.

BadStatusLine could be raised in case of any errors in status line.
Returns RawResponseMessage.
r   r   argskwargsrx   c                 P   > Uc  [         (       a  SOSn[        TU ]  " X/UQ70 UD6$ )Nr:   r;   )r    superr   )r|   r   r   rC  rD  	__class__s        rY   r   HttpResponseParser.feed_data  s/     ;"U'Cw <T<V<<rX   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SS  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!  rc   rd   Tr[      >   0     F)r   r   r   r(   r   r   rt   r-   rT   r?   r   r/   r^   r.  r@   r   r0   r   r   r  r9   )r|   r   r   rF   statusr]   r4  r5  status_irH   rI   r   rK   rL   rM   s                  rY   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; uQRy)	
 =M)&3&(j*@$$/43I3IW3T !LLN

 
	
_  	0%4/	0
  	\\^FF	s   F4 G 4GG.-G.r   c                 h    UR                  SSS9S   R                  S5      R                  5       S:H  $ )Nr=  r   r  r   r>  rM   )r?  r   r   r   s     rY   r   !HttpResponseParser._is_chunked_te  s3    yyqy)"-33E:@@BiOOrX   rO   rz   )rP   rQ   rR   rS   rA  r    rw   r   r   r  r   r   r	   r9   r2   rV   r   r   rT   r   rW   __classcell__)rG  s   @rY   r7   r7     s     )C
 #	=	= d^	= 		=
 	= 
tE,l:;<dEI	J	= 	==
4; =
3E =
~P P P PrX   r7   c                       \ rS rSr        S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   rM   rK   r\   rD   r   r   rw   r   rx   c
                T   SU l         [        R                  U l        [        R
                  U l        SU l        SU l        Xl	        Xl
        Xl        / U l        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   rX   FT)_lengthra   rh   _typerj   rm   _chunk_chunk_size_chunk_tailr   r{   r   _trailer_linesr   DeflateBufferre   r   rg   rf   r   )r|   r   r   rM   rK   r\   rD   r   r   rw   r   real_payloads               rY   r}   HttpPayloadParser.__init__  s     //
 33 /	-+-	 +$2G2G?L@L #L "#..DJ!!#DI#11DJ#00DJ!L||q %%' 	#rX   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 )Nz1Not enough data to satisfy content length header.z2Not enough data to satisfy transfer length header.)	rV  ra   rh   r   r   rf   r*   rg   r.   r   s    rY   r   HttpPayloadParser.feed_eof3  so    ::333LL!!#ZZ:222$C  ZZ:333'D  4rX   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[-        [/        U5      S	5      nX[	        U5      -   S  nUS:X  aB  [        R0                  U l
        U R                   (       a  UR3                  S
5      (       a  USS  nO=[        R4                  U l
        Xl        U R
                  R9                  5         OXl	        gU R                  [        R4                  :X  a  U R6                  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R3                  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                  [        R0                  :X  a  UR                  U5      nUS:  a  Xl	        gUS U nX[	        U5      -   S  nUS:X  a  UR?                  S
5      nU R@                  RC                  U5        U R@                  S   S:X  a`   U RD                  RG                  U R@                  5      u  pU R@                  RI                  5         U R
                  R                  5         SU4$ U(       a  GM  gU R                   [        RJ                  :X  a%  U R
                  R                  U[	        U5      5        g! U R@                  RI                  5         f = f)Nr   )TrX   TrX   r;   z"Unexpected LF in chunk-extension: asciir      r   r   )FrX   r   )&rV  ra   rf   rU  r   r   r   r   rg   rY  rW  rj   rm   r   r.   r%   r{   r   rer   rA   r   r^   r   rq   r0  rn   rX  begin_http_chunk_receivingro   end_http_chunk_receivingr   rZ  r   r   r   r   rh   )r|   r`  r   ra  required	chunk_lenr   isize_bextexcsizer   trailersraw_trailerss                  rY   r   HttpPayloadParser.feed_data?  s    ::000||HE
I$'3&&u8<<1$LL))+$ %d ]  !&&uYh'7B%%'U9--- ZZ:333((50#&  ;;*"?"??**S/Cax!JJy!S96%*2AYF$)<=&;&H$P'" !.dllC @&)	  > &+4C[F99%+\\^F!||Iv>>"7 %ds 2 27<M N#C *$,,<"%I"5="5 %CHn&6 719*4*C*CDK#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();;*";";;**S/CQw+0() #;D!C."23Ee|#{{51''..t4 **2.#58595I5I5W5W $ 3 362H !//557--/#U{*{ %F  ZZ:555LL""5#e*5 !//557s   #'U U-)r   rW  rX  rY  r   r{   rU  rZ  rV  r   r   )NFNNNTTFrx   N)r:      ;)rP   rQ   rR   rS   r2   r   r^   rV   rT   r4   r}   r   r   r  r   r   rW   rO   rX   rY   r   r      s     !%%)" $#' $0$0$ 0$ 	0$
 c]0$ sm0$ 0$ !0$ 0$ 0$ &0$ 
0$d
 EI}}!%}<A}	tU{	} }rX   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)r[  i  zDDeflateStream decompress stream and feed data into specified stream.decompressoroutr  rx   Nc                 *   Xl         SU l        U R                  Ul        X l        SU l        U   US:X  a&  [
        (       d  [        S5      e[        5       U l        g 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   zRCan not decode content-encoding: zstandard (zstd). Please install `backports.zstd`)r  )rv  rn  total_compressed_bytesr  _started_decodingr   r)   r   ru  r   r   r   )r|   rv  r  s      rY   r}   DeflateBuffer.__init__  s    	%)YY" !&t:*.  !3 4D8*6  !1 2D 0( CDrX   rm  	exc_causec                 0    [        U R                  X5        g rz   )r%   rv  )r|   rm  r{  s      rY   r%   DeflateBuffer.set_exception  s    
 	dhh/rX   r`  rn  c                    U(       d  g U =R                   U-  sl         U R                   U R                  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)rn  rv  rx  ry  r  r   ru  decompress_syncr   r)   r   r   )r|   r`  rn  s      rY   r   DeflateBuffer.feed_data  s    		T	*.))' &&*a3!# !1!D	%%55e<E "&HHuc%j1   	&5E 	s    C #C3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   )
ru  flushrn  rv  r   r   r  r   r)   r   )r|   r`  s     rY   r   DeflateBuffer.feed_eof  sp    !!'')DIIMHHuc%j1}}	)$2C2C2G2G*955rX   c                 8    U R                   R                  5         g rz   )rv  rf  r   s    rY   rf  (DeflateBuffer.begin_http_chunk_receiving  s    ++-rX   c                 8    U R                   R                  5         g rz   )rv  rg  r   s    rY   rg  &DeflateBuffer.end_http_chunk_receiving  s    ))+rX   )ry  ru  r  rv  rn  rr  )rP   rQ   rR   rS   rA  r   rU   r2   r   rT   r}   r   r   r%   r   r^   r   r   rf  rg  rW   rO   rX   rY   r[  r[    s}    NDL DHSM Dd D8 $100 !0 
	02u 2C 2D 2B.,rX   r[  )r6   r7   r8   r9   )ir  r  re  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   r   r   helpersr   r    r!   r"   r#   r$   r%   http_exceptionsr&   r'   r(   r)   r*   r+   r,   r-   r.   http_writerr/   r0   streamsr1   r2   typedefsr3   __all__r  set	printabler<   rT   rU   escaper=   compiler>   ASCIIr?   r@   rA   r   r8   r9   r_   ra   rj   r4   rV   r   ABCr5   r6   r7   r   r[  HttpRequestParserPyHttpResponseParserPyRawRequestMessagePyRawResponseMessagePy_http_parserHttpRequestParserCHttpResponseParserCRawRequestMessageCRawResponseMessageCImportErrorrO   rX   rY   <module>r     sl   
  	      " : 9   '   
 
 
 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
L'%. L^
aH
#45 aHHVP$67 VPr| |~T, T,n ( ) ' ) 		
 	
 /0.0   		s   H- -H65H6