
    2h                      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       K/var/www/auris/envauris/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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 {}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	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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)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   headers_parserT)rB   rI   r   ru   r   )0r   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   r   done
isinstancer6   r   r/   rH   	feed_dataBaseExceptionr   rR   r#   payloadr,   )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/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?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_upgraded5  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 --#'#:#:C.C. C. 	C.
 C. C. !C. 
tE%-./u<	=C.J@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   i=  zRead request status line.

Exception .http_exceptions.BadStatusLine
could be raised in case of any errors in status line.
Returns RawRequestMessage.
r}   rv   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    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_messageE  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    	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   =  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@  rA  	__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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  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[   r1  r2  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; 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;  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__)rD  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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   r   rv   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   rV   FT)_lengthr_   rf   _typerh   rk   _chunk_chunk_size_chunk_tailr   ry   r   _trailer_linesr   DeflateBufferrc   r   re   rd   r   )rz   r   r   rK   rI   rZ   rB   r   r   ru   r   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 )Nz1Not enough data to satisfy content length header.z2Not enough data to satisfy transfer length header.)	rT  r_   rf   r   r   rd   r(   re   r,   r   s    rW   r   HttpPayloadParser.feed_eof-  so    ::333LL!!#ZZ:222$C  ZZ:333'D  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[-        [/        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   )TrV   TrV   r9   z"Unexpected LF in chunk-extension: asciir      r   r   )FrV   r   )&rT  r_   rd   rS  r   r   r   r   re   rW  rU  rh   rk   r   r,   r#   ry   r   rer   r?   r   r\   r   ro   r-  rl   rV  begin_http_chunk_receivingrm   end_http_chunk_receivingr   rX  r   r   r   r   rf   )rz   r^  r   r_  required	chunk_lenr   isize_bextexcsizer   trailersraw_trailerss                  rW   r   HttpPayloadParser.feed_data9  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   rU  rV  rW  r   ry   rS  rX  rT  r   r   )NFNNNTTFrv   N)r8      ;)rN   rO   rP   rQ   r0   r   r\   rT   rR   r2   r{   r   r   r  r   r   rU   rM   rV   rW   r   r     s     !%%)" $#' $0$0$ 0$ 	0$
 c]0$ sm0$ 0$ !0$ 0$ 0$ &0$ 
0$d
 EI}}!%}<A}	tU{	} }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)rY  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	  )	rt  rl  r	  _started_decodingr   r'   r   rs  r   )rz   rt  r	  s      rW   r{   DeflateBuffer.__init__  sW    	 !&t:*.  !3 4D 0( CDrV   rk  	exc_causec                 0    [        U R                  X5        g rx   )r#   rt  )rz   rk  rx  s      rW   r#   DeflateBuffer.set_exception  s    
 	dhh/rV   r^  rl  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)rl  rv  r	  r   rs  decompress_syncr   r'   rt  r   r   )rz   r^  rl  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   )
rs  flushrl  rt  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   )rt  rd  r   s    rW   rd  (DeflateBuffer.begin_http_chunk_receiving   s    ++-rV   c                 8    U R                   R                  5         g rx   )rt  re  r   s    rW   re  &DeflateBuffer.end_http_chunk_receiving  s    ))+rV   )rv  rs  r	  rt  rl  rp  )rN   rO   rP   rQ   r>  r   rS   r0   r   rR   r{   r   r   r#   r   r\   r   r   rd  re  rU   rM   rV   rW   rY  rY    s}    NDL DHSM Dd D( $100 !0 
	02u 2C 2D 2@.,rV   rY  )r4   r5   r6   r7   )gr  r  rc  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   rY  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
L'%. L^
aH
#45 aHHVP$67 VPr| |~K, K,\ ( ) ' ) 		
 	
 /0.0   		s   H) )H21H2