
    rp0jr                     
   % S SK r S SKrS SKrS SKrS SKrS SKJr  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  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*J+r+  SSK,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5  SSK6J7r7J8r8J9r9  SSK:J;r;J<r<  SSK=J>r>  \(       a  SSK?J@r@  SrA\S   rB\C" \R                  5      rE\\C\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'   \R                  " S 5      rQ\\	\F      \GS!'   \R" 1 S"k5      rS\\R\F      \GS#'    " S$ S%\5      rT " S& S'\5      rU\" S(\T\U5      rV " S) S*\5      rW " S+ S,\5      rX " S- S.\5      rY " S/ S05      rZS1\\F   S2\[4S3 jr\ " S4 S5\ R                  \\V   5      r^ " S6 S7\^\T   5      r_ " S8 S9\^\U   5      r` " S: S;5      ra " S< S=5      rb\_rc\`rd\Tre\Urf \)(       d  SS>KgJ_r_J`r`JTrTJUrU  \_rh\`ri\Trj\Urkgg! \l a     gf = f)?    N)suppress)IntEnum)Pattern)TYPE_CHECKINGAnyClassVarFinalGenericLiteral
NamedTupleTypeVar)CIMultiDictCIMultiDictProxyistr)URL   )hdrs)BaseProtocol)
HAS_BROTLIHAS_ZSTDBrotliDecompressorZLibDecompressorZSTDDecompressor)_EXC_SENTINELDEBUGDEFAULT_CHUNK_SIZEEMPTY_BODY_METHODSEMPTY_BODY_STATUS_CODESNO_EXTENSIONSBaseTimerContextset_exception)	BadHttpMessageBadHttpMethodBadStatusLineContentEncodingErrorContentLengthErrorInvalidHeaderInvalidURLErrorLineTooLongTransferEncodingError)HttpVersionHttpVersion10HttpVersion11)EMPTY_PAYLOADStreamReader)
RawHeaders)ResponseHandler)HeadersParser
HttpParserHttpRequestParserHttpResponseParserRawRequestMessageRawResponseMessage)   
   
ASCIISETz!#$%&'*+-.^_`|~_TCHAR_SPECIALSz
[0-9A-Za-zz]+TOKENREzHTTP/(\d)\.(\d)VERSREz\d+DIGITSs   [0-9a-fA-F]+	HEXDIGITSz[\x00-\x08\x0a-\x1f\x7f]_FIELD_VALUE_FORBIDDEN_CTL_RE>
   etaghostserver
user-agentcontent-typemax-forwardscontent-rangecontent-lengthcontent-locationtransfer-encodingSINGLETON_HEADERSc                       \ rS rSr% \\S'   \\S'   \\S'   S\S'   \\S'   \\S'   \S	-  \S
'   \\S'   \\S'   \	\S'   Sr
g	)r6   o   methodpathversionCIMultiDictProxy[str]headersraw_headersshould_closeNcompressionupgradechunkedurl )__name__
__module____qualname____firstlineno__str__annotations__r+   r0   boolr   __static_attributes__rY       M/home/wildlama/miniconda3/lib/python3.13/site-packages/aiohttp/http_parser.pyr6   r6   o   s=    K
I$$tMM	Hrb   r6   c                   |    \ rS rSr% \\S'   \\S'   \\S'   \\   \S'   \	\S'   \
\S'   \S-  \S	'   \
\S
'   \
\S'   Srg)r7   |   rP   codereasonrR   rS   rT   NrU   rV   rW   rY   )rZ   r[   r\   r]   r+   r_   intr^   r   r0   r`   ra   rY   rb   rc   r7   r7   |   s=    
IKc""tMMrb   r7   _MsgTc                        \ rS rSrSrSrSrSrg)PayloadState   r   r      rY   N)rZ   r[   r\   r]   PAYLOAD_COMPLETEPAYLOAD_NEEDS_INPUTPAYLOAD_HAS_PENDING_INPUTra   rY   rb   rc   rk   rk      s     !rb   rk   c                   $    \ rS rSrSrSrSrSrSrg)
ParseState   r   r   rm      rY   N)	rZ   r[   r\   r]   
PARSE_NONEPARSE_LENGTHPARSE_CHUNKEDPARSE_UNTIL_EOFra   rY   rb   rc   rr   rr      s    JLMOrb   rr   c                   (    \ rS rSrSrSrSrSrSrSr	g)	
ChunkState   r   r   rm   rt      rY   N)
rZ   r[   r\   r]   PARSE_CHUNKED_SIZEPARSE_CHUNKED_CHUNKPARSE_CHUNKED_CHUNK_EOFPARSE_MAYBE_TRAILERSPARSE_TRAILERSra   rY   rb   rc   rz   rz      s    Nrb   rz   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)r   r   r   _lax)selfr   r   r   r   s        rc   __init__HeadersParser.__init__   s     +&,	rb   linesrQ   c                 d   [        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R                  SS	5      n	[        R                  U	5      (       d  [	        U5      eUS-  nX   nU R                  =(       a    U=(       a    US   S
;   n
U
(       a  [        U5      nU/nU
(       a  U[        U5      -  nXR                  :  a3  US-   SR                  U5      -   n[        US S S-   U R                  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UR                  S5      nUR                  SS	5      nU R                  (       a  SU;   d  SU;   d  SU;   a  [	        U5      eO%[        R!                  U5      (       a  [	        U5      eU R                  (       d,  X;   a'  U	R#                  5       [$        ;   a  ['        SU	 S3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    	utf-8surrogateescape)r   r   s   : rb   d      ...
 zDuplicate 'z' header found.)r   lensplit
ValueErrorr'   lstripdecoder<   	fullmatchr   r   joinr)   appendstripr@   searchlowerrK   r"   addr   tuple)r   r   rR   rS   	lines_idxline
line_countbnamebvaluenamecontinuationheader_length
bvalue_lstheader_linevalues                  rc   parse_headersHeadersParser.parse_headers   s    %0M	Z
4 $

4 3 5zQ#E** a%)$Aw.#D))]]6*F<<):;D$$T**#E** NI#D  99DD$q'W2DL  #F$X
"!SY.M$':'::&+emchhz6J&J)'-68K8K  %%d+ NI -$/+/7g+=L"# #l$ *-\\&)FMM'+<=E yy5=DEMVu_'// 6E.55e<<#F++99TZZ\EV5V${4&%HIIKK$/ dB !)5+=>>{  4#D)t34s   J J/)r   r   r   r   )  i   r   F)rZ   r[   r\   r]   rh   r`   r   listbytesr   r0   r   ra   rY   rb   rc   r2   r2      sl     " "

 
 	

 
 

L?%[L?	&
2	3L?rb   r2   rR   r   c                     U R                  [        R                  S5      nUR                  5       =(       a    UR	                  5       S;   $ )z)Check if the upgrade header is supported. >   tcp	websocket)getr   UPGRADEisasciir   )rR   us     rc   _is_supported_upgrader      s3    DLL"%A99;<1779(<<<rb   c                   0   \ rS rSr% Sr\\   \S'                 S*S\S-  S\	R                  S-  S\S\S	\S
\S\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+S jrS+S jrS\S-  4S jrSS\R8                  \R:                  \R<                  4S\S\S \S!\ S"\S#\ S\!\\!\\"4      \\4   4S$ jjr#S\\   S\!S%\$\S-  \S-  \\4   4S& jr%S'\SS4S( jr&S)r'g),r3   i  Fr   Nprotocollooplimitr   r   r   timerrf   rN   payload_exceptionresponse_with_bodyread_until_eofauto_decompressmax_msg_queue_sizer   c                 P   Xl         X l        X@l        XPl        X`l        XPl        Xpl        Xl        Xl        Xl        Xl	        Xl
        / U l        SU l        SU l        S U l        S U l        SU l        Xl        X0l        ['        XEX`R(                  5      U l        Xl        SU l        g )Nrb   Fr   )r   r   r   r   r   r   rf   rN   r   r   r   _lines_tail	_upgraded_payload_payload_parser_payload_has_more_data_auto_decompress_limitr2   r   _headers_parser_max_msg_queue_size_msg_in_flight)r   r   r   r   r   r   r   r   rf   rN   r   r   r   r   r   s                  rc   r   HttpParser.__init__  s    " !	*&,&
	!2"4,#%
9=&+# /, 
 $6 rb   r   c                     g r   rY   )r   r   s     rc   parse_messageHttpParser.parse_message4  s    :=rb   tec                     g r   rY   r   r   s     rc   _is_chunked_teHttpParser._is_chunked_te7  s    /2rb   c                 V    U R                   c   eU R                   R                  5         g r   )r   pause_readingr   s    rc   r   HttpParser.pause_reading:  s&    ##///**,rb   c                 P    U R                   S:  a  U =R                   S-  sl         gg)z;Protocol drained a queued message; free a slot for parsing.r   r   N)r   r   s    rc   message_consumedHttpParser.message_consumed>  s&    "1$ #rb   c                    U R                   b=  U R                   R                  5         U R                   R                  (       a  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
rb   )	r   feed_eofdoner   r   r   r   	Exceptionr   r   s    rc   r   HttpParser.feed_eofC  s    +  ))+##(('+$  zz""4::.{{;;r?f,KK&&s+i(--dkk: )( )(s   C55
Dr8   rb   dataSEPEMPTYCONTENT_LENGTHMETH_CONNECTSEC_WEBSOCKET_KEY1c                 6  ^^ / nU R                   (       a  U R                   U-   Ssol         [        U5      nSn	U R                  n
U R                  nSnX:  d  U R                  (       Gaa  U R
                  Gc  U R                  (       Gdo  U R                  (       a%  U R                  U R                  :  a  XS  U l         GO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5      U:  a  [        US S S-   U5      eU R                  R                  U5        U R                  n[        U R                  5      U R                   :  a  [        S	5      eU[        U5      -   n	U R                  S
   U:X  Ga  U R                   [        U R                  5      -
  n U R#                  U R                  5      mU R                  R%                  5         S[&        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        [1        TSU R2                  5      n[1        TSS5      nU R4                  c   eU[6        ;   =(       d    [9        U=(       a	    U[:        ;   5      nU(       d  Ub  US:  d  TR<                  (       a  U R                  (       d  [?        U R4                  U R@                  U
U RB                  S9n[E        UUTR<                  UTRF                  U RH                  U RJ                  U RL                  U RN                  U RP                  U R                  U R                  UU RB                  S9nURR                  (       d  UU l        GOUU:X  a  [U        T[V        5      (       d   e[?        U R4                  U R@                  U
U RB                  S9nSU l        [E        UTR2                  TRF                  U RL                  U RN                  U RP                  U R                  U R                  UU RB                  S9
U l        OU(       d  Uc  U RX                  (       a  [?        U R4                  U R@                  U
U RB                  S9n[E        UUTR<                  UTRF                  U RH                  U RJ                  U RL                  U RN                  U RP                  U R                  U R                  UU RB                  S9nURR                  (       d  UU l        O[Z        nUR                  TU45        U R                  (       a  U =R                  S-  sl        TR\                  nGOXS  U l         [        U R                   5      U R                  :  a&  [        U R                   S S S-   U R                  5      eUnOU R
                  c%  U R                  (       a  U R                  (       a   eOU R                  (       a   eU R
                  c   e U R
                  R_                  XS  U5      u  nnU[j        Rp                  :H  U l        U[j        Rl                  La  O0Sn	[        U5      nS U l        X:  a  GMM  U R                  (       a  GMa  U(       a
  X:  a  XS  nOUnXpR                  U4$ ! U R                  R%                  5         f = f! [`         a  nUnU Rb                  b  U Rc                  [e        U5      5      n[g        U R
                  Rh                  UU5        [j        Rl                  nSn[U        U[*        [n        45      (       a  e  S nAGN$S nAff = f)Nrb   r   FzData after `Connection: close`r9      r   r   zToo many headers receivedr   r   c                     > TR                   R                  T5      n U c  g [        R                  U 5      (       d  [	        T5      e[        U 5      $ r   )rR   r   r>   r   r'   rh   )
length_hdrr   msgs    rc   get_content_length0HttpParser.feed_data.<locals>.get_content_length  sF    ),)HJ)1'+
 $*#3#3J#?#?&3N&C C#&z?2rb   rN   rf   )r   r   r   )lengthrW   rN   rU   rf   r   r   r   headers_parserr   r   max_trailersr   T)	rN   rU   r   r   r   r   r   r   r   r   )9r   r   r   r   r   r   r   r   r   findr   r"   rstripr)   r   r   r   r   clearrh   rR   r'   rV   r   getattrrN   r   r   r`   r   rW   r/   r   r   HttpPayloadParserrU   rf   r   r   r   r   r   
isinstancer6   r   r.   rT   	feed_datar   r   r^   r!   payloadrk   rn   r*   rp   )r   r   r   r   r   r   r   messagesdata_len	start_posr   max_line_lengthrT   posr   r   r   r   rN   rf   
empty_bodyr  payload_parserpayload_stateunderlying_excreraised_excr   s       `                     @rc   r  HttpParser.feed_dataT  s    ::#zzD0#D*t9	yy,,"d&A&A&A ##+DNNN,,++t/G/GG
 "&j!1DJii/#DKK #c#hI##,-MNN  #.De|#{{514y?2)$t*v*=OOKK&&t,&*&9&9O4;;'$*:*::,-HII #c#hI {{2%/'+'7'7#dkk:J'J0)-););DKK)HC KK--/3C$J 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.2.@.@/3/B/B-9&*kk.N  $2#6#67E 4#|3#-c3D#E#EE#E&2 $&*jj%)&*kk	'G .2DN3D ''*zz,/OO040E0E$(HH/3/C/C.2.@.@/3/B/B-9&*kk4D0 ",4CVCV&2 $&*jj%)&*kk	'G .? ''-(+'-,/OO%)YY373J3J040E0E$(HH/3/C/C.2.@.@/3/B/B-9&*kk.N  $2#6#67E 4&3G g733 //14/'*'7'7!%j!1DJ4::););;)$**Tc*:V*CTEWEWXX D %%-$..;;&  ;;&++777*.*>*>*H*HZ(#+'M4, "\%K%KK + !(E(EE 	t9'+$c "d&A&A&Af I(
#DD--W !KK--/N ! 2@L--9'+'='=c.>Q'R!,,44$& %1$A$AMD!&8M(N  s%   %[, !\ ,\
^A8^^rQ   c                 6   U R                   R                  U5      u  p#SnSnSnSnUR                  [        R                  S5      nU(       a  U V	V
s1 s HS  n	S U	R                  S5       5         H3  n
U
(       d  M  U
R                  5       (       d  M#  U
R                  5       iM5     MU     nn	n
SU;   a  SnOSU;   a  SnS	U;   a&  UR                  [        R                  5      (       a  SnUR                  [        R                  S
5      nUR                  5       (       a  UR                  5       S;   a  UnUR                  [        R                  5      nUb7  U R                  U5      (       a  Sn[        R                  U;   a  [        S5      eX#XEXg4$ s  sn
n	f )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.
NFrY   c              3   B   #    U  H  oR                  S 5      v   M     g7f) 	N)r   ).0parts     rc   	<genexpr>+HttpParser.parse_headers.<locals>.<genexpr>Z  s     R<QDjj//<Qs   ,closeTz
keep-aliverV   r   >   brgzipzstddeflatez6Transfer-Encoding can't be present with Content-Length)r   r   getallr   
CONNECTIONr   r   r   r   r   CONTENT_ENCODINGTRANSFER_ENCODINGr   r   r"   )r   r   rR   rS   
close_connencodingrV   rW   conn_values
conn_valuetokenconn_tokensencr   s                 rc   r   HttpParser.parse_headersC  s{     $33AA%H
 nnT__b9 #."-JRJ<L<LS<QRE  #]]_ R "-   +%!
,"
 K'GKK,E,E kk$//4;;==SYY[,MMH [[//0>""2&&""g-$L  jGMMAs   'F=FFvalc                     Xl         g)zJSet connection upgraded (to websocket) mode.

:param bool val: new state.
N)r   )r   r)  s     rc   set_upgradedHttpParser.set_upgradedy  s	    
 rb   )r   r   r   r   r   r   r   r   r   r   r   rf   r   r   r   r   rN   r   r   r   r   r   )NNi   r      r   NNNNTFTr   r   N)(rZ   r[   r\   r]   r   r   r`   r_   r   asyncioAbstractEventLooprh   r    r^   typeBaseExceptionr   abcabstractmethodr   r   ri   r   r   r   r   r   r   r   r   r   _SEPr   r   r/   r  r0   r   r+  ra   rY   rb   rc   r3   r3     s6   C$ )-15!")-!8<#'$ $"#+ %+  ''$.+  	+ 
 +  +  +   $&+  Dj+  d
+   .5+  !+  +  +   +   
!+ Z 	=4;=5= =222 2-%
%$, ( #22 --#'#:#:m.m. m. 	m.
 m. m. !m. 
tE%-./u<	=m.^4N%[4N	TD[#*dDP
4Nl  rb   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   i  zRead request status line.

Exception .http_exceptions.BadStatusLine
could be raised in case of any errors in status line.
Returns RawRequestMessage.
r   r   c                    US   R                  SS5      n UR                  SSS9u  p4n[        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[&        :X  a  [(        R*                  U;  a  [-        S5      e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    rm   maxsplitr   CONNECTT)	authorityencoded/#?)rO   query_stringfragmentr=  *OPTIONS)r=  r   )errorslatin1z!Missing 'Host' header in request.F)r   r   r   r#   r<   r   r=   r$   r+   rh   groupr   build
startswith	partitionschemer(   encoder   r-   r   HOSTr"   r,   r6   )r   r   r   rN   rO   rP   match	version_orX   	path_part_hash_separatorurl_fragment_question_mark_separatorqs_partrR   rS   r  rU   rV   rW   s                       rc   r   HttpRequestParser.parse_message  s   Qxw(9:	0$(JJsQJ$?!F'
   ((''   )=%%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)	
 %$))7*B !DEE=M) 
 	
C  	0%4/	0s   G" "G9r   c                     UR                  SSS9S   R                  S5      nUR                  5       (       a  UR                  5       S:X  a  g[	        S5      e)	Nr  r   r9  r   r  rW   Tz'Request has invalid `Transfer-Encoding`)rsplitr   r   r   r"   r   s     rc   r    HttpRequestParser._is_chunked_te  sK    YYsQY'+11%8::<<BHHJ)3FGGrb   rY   N)rZ   r[   r\   r]   __doc__r   r   r6   r   r^   r`   r   ra   rY   rb   rc   r4   r4     s9    Q
4; Q
3D Q
fH H Hrb   r4   c                      ^  \ rS rSr% SrS\S'   \(       + r S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.
r1   r   Nr   r   argskwargsr   c                 P   > Uc  [         (       a  SOSn[        TU ]  " X/UQ70 UD6$ )Nr8   r9   )r   superr  )r   r   r   r[  r\  	__class__s        rc   r  HttpResponseParser.feed_data  s/     ;"U'Cw <T<V<<rb   r   c                 L   US   R                  SS5      n UR                  SS9u  p4 UR                  SS9u  pE[
        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Nhf = f)Nr   r   r   r   r9  r   rm   rt   Tr      >   0     F)r   r   r   r$   r   r=   r   r+   rh   rG  r   r>   r   r,   r   r   r   r7   )r   r   r   rP   statusrg   rN  rO  status_irR   rS   r  rU   rV   rW   s                  rc   r    HttpResponseParser.parse_message  s   Qxw(9:	0"jj!j4OG	#\\1\5NF   )=%%EKKN 3SQ5HI	 v;!6#3#3F#;#;%%v; uQRy)	
 =M)&3&(j*@$$/43I3IW3T !LLN

 
	
U  	0%4/	0
  	\\^FF	s   E) F )F F#"F#r   c                 h    UR                  SSS9S   R                  S5      R                  5       S:H  $ )Nr  r   r9  r   r  rW   )rW  r   r   r   s     rc   r   !HttpResponseParser._is_chunked_te6  s3    yyqy)"-33E:@@BiOOrb   rY   r   )rZ   r[   r\   r]   rY  r_   r   r   r   r5  r   r   r   r7   r/   r`   r  r   r^   r   ra   __classcell__)r_  s   @rc   r5   r5     s       )C
  	=	= D[	= 		=
 	= 
tE,l:;<dEI	J	= 	=8
4; 8
3E 8
tP P P Prb   r5   c                        \ rS rSr        SSSS\S.S\S\S-  S\S	\S-  S
\S-  S\S-  S\S\S\S\	S\S\S\S\SS4S jjjr
SS jrSS jr SS\S\S\S\\\4   4S jjrSrg) r  i;  Nr   r-  )r   r   r   r   r  r   rW   rU   rf   rN   r   r   r   r   r   r   r   r   r   c
                   SU l         SU l        [        R                  U l        [
        R                  U l        SU l        SU l	        Xl
        Xl        Xl        Xl        Xl        Xl        SU l        / U l        SU l        SU l        U(       a#  U(       a  U R                  (       a  [)        XUS9nOUnU(       d-  [        R*                  U l        UR-                  5         SU l        OhU(       a  [        R.                  U l        OKUbH  [        R0                  U l        X l         X l        U R                   S:X  a  UR-                  5         SU l        Xl        g )Nr   Frb   )max_decompress_sizeT)_length_pausedrr   rx   _typerz   r}   _chunk_chunk_size_chunk_tailr   r   r   _max_line_size_max_field_size_max_trailers_more_data_available_trailer_linesr   _eof_pendingDeflateBufferru   r   rw   rv   _length_expectedr  )r   r  r   rW   rU   rf   rN   r   r   r   r   r   r   r   r   real_payloads                   rc   r   HttpPayloadParser.__init__<  s   $ //
 33 /	-+-)$)!+-	! +$2G2G9F%:L #L "#..DJ!!#DI#11DJ#00DJ!L$*!||q %%' 	#rb   c                     SU l         g )NT)ro  r   s    rc   r   HttpPayloadParser.pause_readingy  s	    rb   c                 T   U R                   [        R                  :X  a  SU l        U R                  (       aM  U R
                  (       a  SU l        g U R                  R                  SS5      U l        U R                  (       a  MM  U R                  R                  5         SU l	        SU l        g U R                   [        R                  :X  a5  U R                  U R                  -
  n[        SU SU R                   S35      eU R                   [        R                  :X  a  [        S5      eg )	NTFrb   r   z;Not enough data to satisfy content length header (received z of z bytes).z2Not enough data to satisfy transfer length header.)rp  rr   rx   ry  rw  ro  r  r  r   r   rv   r{  rn  r&   rw   r*   )r   receiveds     rc   r   HttpPayloadParser.feed_eof|  s    ::333 $D++<<#(DL,0LL,B,B3,J)	 +++
 LL!!#DI %DZZ:222,,t||;H$%Jd4+@+@*AK  ZZ:333'D  4rb   chunkr   	CHUNK_EXTc                    U R                   [        R                  :X  Ga,  U R                  (       a  U R                  U-   nSU l        U R                  n[        U[        U5      -
  S5      U l        U R                  R                  USU U5      U l	        U R                  (       ag  U R                  (       a"  SU l
        XS U l        [        R                  S4$ U R                  R                  SS5      U l	        U R                  (       a  Mg  U R                  S:X  a.  U R                  R                  5         [        R                  XS 4$ GO\U R                   [        R                  :X  Ga;  U R                  (       a  U R                   ["        R$                  :w  ak  U R&                  nU R                   ["        R(                  :X  a  U R*                  n[        U R                  5      U:  a  [-        U R                  SS S-   U5      eU R                  U-   nSU l        U(       d  U R                  (       Gap  U R                   ["        R.                  :X  Ga  UR1                  U5      nUS:  Ga  X`R&                  :  a  [-        USS S-   U R&                  5      eUR1                  USU5      nUS:  a7  USU nSXU =n	;   a'  [3        SU	< 35      n
[5        U R                  U
5        U
eOUSU nU R6                  (       a  UR9                  5       n[:        R<                  " [>        U5      (       d6  [3        USU RA                  S	S
5      5      n
[5        U R                  U
5        U
e[C        [E        U5      S5      nX[        U5      -   S nUS:X  aB  ["        R(                  U l        U R6                  (       a  URG                  S5      (       a  USS nON["        R$                  U l        Xl$        U R                  RK                  5         OXl        [        RL                  S4$ U R                   ["        R$                  :X  a  U R                  (       a  SU l
        Xl        [        R                  S4$ U RH                  n[        U[        U5      -
  S5      U l$        U R                  R                  USU U5      U l	        XS nU R                  (       a  GM  U RH                  (       a  SU l
        [        RL                  S4$ ["        RN                  U l        U R                  RQ                  5         U R                   ["        RN                  :X  a  U R6                  (       a  URG                  S5      (       a  USS nUS[        U5       U:X  a$  U[        U5      S n["        R.                  U l        Od[        U5      [        U5      :  d  XS[        U5       :w  a#  [3        S5      n
[5        U R                  U
5        U
eXl        [        RL                  S4$ U R                   ["        R(                  :X  GaZ  UR1                  U5      nUS:  a  Xl        [        RL                  S4$ USU nX[        U5      -   S nUS:X  a  URS                  S5      n[        U5      U R*                  :  a  [-        USS S-   U R*                  5      eU RT                  RW                  U5        [        U RT                  5      U RX                  :  a  [[        S5      eU RT                  S   S:X  an   U R\                  R_                  U RT                  5      u  pU RT                  Ra                  5         U R                  R                  5         [        R                  U4$ U(       a  GM\  U R                  (       a  GMp  GOU R                   [        Rb                  :X  a  U R                  R                  U[        U5      5      U l	        U R                  (       a^  U R                  (       a  SU l
        [        R                  S4$ U R                  R                  SS5      U l	        U R                  (       a  M^  U Rd                  (       a:  U R                  R                  5         SU l3        SU l2        [        R                  S4$ [        RL                  S4$ ! U RT                  Ra                  5         f = f)a  Receive a chunk of data to process.

Return:
    PayloadState - The current state of payload processing.
                   This function may be called with empty bytes after returning
                   PAYLOAD_HAS_PENDING_INPUT to continue processing after a pause.
    bytes - If payload is complete, this is the unconsumed bytes intended for the
            next message/payload, b"" otherwise.
rb   r   NFr   r   r9   z"Unexpected LF in chunk-extension: asciir      r   r   z3Chunk size mismatch: expected CRLF after chunk datazToo many trailers receivedr   T)4rp  rr   rv   rs  rn  maxr   r  r  rw  ro  rk   rp   r   rn   rw   rq  rz   r~   rt  r   ru  r)   r}   r   r*   r!   r   r   rer   r?   r   rh   r   rI  rr  begin_http_chunk_receivingro   r   end_http_chunk_receivingr   rx  r   rv  r"   r   r   r   rx   ry  r   )r   r  r   r  requiredr  r	  isize_bextexcsizer   trailersraw_trailerss                  rc   r  HttpPayloadParser.feed_data  sK    ::000((50#& ||Hx#e*4a8DL(,(>(>ix ()D% ++<<#(DL',Y'7D$'AA3FF,0LL,B,B3,J) +++ ||q %%'#44eI6FFF ! ZZ:333;;*"@"@@&*&9&9O{{j&?&??*.*>*>4++,>) ,,Tc2V;_  ((50#& 4444;;*"?"??**S/Cax !4!44"-eDSkF.BDDWDW"XX!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(+??DD ;;*"@"@@||',+0(+EEsJJ#//H'*8c%j+@!'DD$040F0Fix((1D- "),E00 ''',+??DD","D"DDKLL99; ;;*"D"DDyyU%5%5e%<%< %ab	Zs3x(C/ %c#hj 1&0&C&CUs3x/5#e*<M3M3Q &dllC8!	+0(+??DD;;*";";;**S/CQw+0(+??DD #;D!C."23Ee|#{{514y4#7#77)$t*v*=t?S?STT''..t44../$2D2DD,-IJJ **2.#58595I5I5W5W $ 3 362H !//557--/+<<eCCi %4444n ZZ:555(,(>(>uc%j(QD%++<<#(DL'AA3FF,0LL,B,B3,J)	 +++   %%' 	$)!#44c99//44' !//557s   'b: :c)r   rq  rr  rs  ry  r   r   rn  r{  ru  rt  rv  rw  ro  rx  rp  r   r  )NFNNNTTFr.  )r8      ;)rZ   r[   r\   r]   r   r/   rh   r`   r^   r2   r   r   r   r   r5  r   rk   r  ra   rY   rb   rc   r  r  ;  s$    ""&!#' $;$ ""'!;$;$ d
;$ 	;$
 4Z;$ Dj;$ d
;$ !;$ ;$ ;$ &;$ ;$ ;$ ;$  !;$" 
#;$z. EIv5v5!%v5<Av5	|U"	#v5 v5rb   r  c            	           \ rS rSr% Sr\\S'   \4S\S\	S-  S\
SS4S	 jjr\4S
\S\SS4S jjrS\S\
S\4S jrSS jrSS jrSS jrSrg)rz  iK  zDDeflateStream decompress stream and feed data into specified stream.decompressoroutr"  Nrm  r   c                 6   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        O:US:X  a&  [        (       d  [        S5      e[        5       U l        O[        US9U l        X0l        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"  )r  r  total_compressed_bytesr"  _started_decodingr   r%   r   r  r   r   r   _max_decompress_size)r   r  r"  rm  s       rc   r   DeflateBuffer.__init__P  s     	%)YY" !&t:*.  !3 4D8*6  !1 2D 0( CD$7!rb   r  	exc_causec                 0    [        U R                  X5        g r   )r!   r  )r   r  r  s      rc   r!   DeflateBuffer.set_exceptionp  s    
 	dhh/rb   r  r  c                    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                  nU[        R                  :  a  SO[        U R                  U5      n U R                  R                  XS9nSU l        U(       a%  U R                  R                  U[!        U5      5        U R                  R"                  $ ! [         a    [        SU R                  -  5      ef = f)	Nr  r         T)r"  suppress_deflate_header)
max_lengthz#Can not decode content-encoding: %s)r  r  r  r  r"  r   r  
_low_watersysmaxsizer  r  decompress_syncr   r%   r  r   data_available)r   r  r  	low_waterr  s        rc   r  DeflateBuffer.feed_dataw  s   		T	*.))' &&*a3!# !1!D HH''	ckk)As43L3Li/X 		%%55e5SE "&HHuc%j1  ///  	&5E 	s   :D #D?c                 
   U R                   R                  5       nU(       a   eU R                  S:  a6  U R                  S:X  a&  U R                   R                  (       d  [        S5      eU R                  R                  5         g )Nr   r  )r  flushr  r"  eofr%   r  r   )r   r  s     rc   r   DeflateBuffer.feed_eof  s`    !!'') y99q=}}	)$2C2C2G2G*955rb   c                 8    U R                   R                  5         g r   )r  r  r   s    rc   r  (DeflateBuffer.begin_http_chunk_receiving  s    ++-rb   c                 8    U R                   R                  5         g r   )r  r  r   s    rc   r  &DeflateBuffer.end_http_chunk_receiving  s    ))+rb   )r  r  r  r"  r  r  r.  )rZ   r[   r\   r]   rY  r   r_   r   r/   r^   rh   r   r   r2  r!   r   r`   r  r   r  r  ra   rY   rb   rc   rz  rz  K  s    N $6	88 *8 !	8
 
8F $100 !0 
	0!0u !0C !0D !0F.,rb   rz  )r4   r5   r6   r7   )mr3  r/  r  stringr  
contextlibr   enumr   r   typingr   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    r!   http_exceptionsr"   r#   r$   r%   r&   r'   r(   r)   r*   http_writerr+   r,   r-   streamsr.   r/   typedefsr0   client_protor1   __all__r5  set	printabler:   r^   r_   escaper;   compiler<   ASCIIr=   r>   r?   r   r@   	frozensetrK   r6   r7   ri   rk   rr   rz   r2   r`   r   ABCr3   r4   r5   r  rz  HttpRequestParserPyHttpResponseParserPyRawRequestMessagePyRawResponseMessagePy_http_parserHttpRequestParserCHttpResponseParserCRawRequestMessageCRawResponseMessageCImportErrorrY   rb   rc   <module>r     s   
  	  
   	 	 	 : 9   ' 	 	 	
 
 
 C B 0  - ~ 0 01%C/ 1 !ii(9:s :!zzJ6Gr*JKws|	 K jj);RXXFgcl F jj:gcl :#%::.>#?	5  ?57ZZ6 uWS\2  ,5, 53(  

 
	 	 	*,>?"7 "  Y? Y?x=#3C#8 =T =z'%. zzaH
#45 aHHSP$67 SPlM5 M5``, `,F ( ) ' ) 		
 	
 /0.0   		s   I9 9JJ