
    2Bh                     x    S SK r S SKrS SKJrJrJr   " S S5      r " S S5      r " S S5      r " S	 S
5      r	g)    N)
NoMoreDataChunkMissingTerminatorInvalidChunkSizec                   <    \ rS rSrS rS rS rS rS
S jrS r	S	r
g)ChunkedReader   c                 p    Xl         U R                  U5      U l        [        R                  " 5       U l        g N)reqparse_chunkedparserioBytesIObuf)selfr   unreaders      D/var/www/html/env/lib/python3.13/site-packages/gunicorn/http/body.py__init__ChunkedReader.__init__   s&    ((2::<    c                 P   [        U[        5      (       d  [        S5      eUS:  a  [        S5      eUS:X  a  gU R                  (       am  U R
                  R                  5       U:  aO   U R
                  R                  [        U R                  5      5        U R
                  R                  5       U:  a  MO  U R
                  R                  5       nUS U X!S  pC[        R                  " 5       U l        U R
                  R                  U5        U$ ! [         a    S U l         Mm  f = f)Nzsize must be an integer typer   Size must be positive.r   )
isinstanceint	TypeError
ValueErrorr   r   tellwritenextStopIterationgetvaluer   r   r   sizedataretrests        r   readChunkedReader.read   s    $$$:;;!856619;;((--/D(HHNN4#45 ((--/D( xx  "$KeT::<t
 % "&DKs   ).D D%$D%c                    [         R                  " 5       nUR                  U5        UR                  5       R	                  S5      nUR                  5       S S S:H  nUS:  a\  U(       dU  U R                  X5        UR                  5       R	                  S5      nUR                  5       S S S:H  nUS:  a	  U(       d  MU  U(       a#  UR                  UR                  5       SS  5        gU R                  R                  UR                  5       S U SS9U R                  l	        UR                  UR                  5       US-   S  5        g )	Ns   

      
r   r   T)from_trailer   )
r   r   r   r!   findget_dataunreadr   parse_headerstrailers)r   r   r$   r   idxdones         r   parse_trailersChunkedReader.parse_trailers(   s    jjl		$lln!!+.||~bq!W,AgdMM((,,.%%k2C<<>"1%0D Agdd OOCLLN12./ HH223<<>$33GVZ2[sQwx01r   c              #     #    U R                  U5      u  p#US:  a  U[        U5      :  aD  U[        U5      -  nUv   UR                  5       nU(       d
  [        5       eU[        U5      :  a  MD  US U v   X2S  n[        U5      S:  a-  UR                  5       nU(       d  OX4-  n[        U5      S:  a  M-  US S S:w  a  [	        US S 5      eU R                  XSS  S9u  p#US:  a  M  g g 7f)Nr   r*   r+   )r$   )parse_chunk_sizelenr'   r   r   )r   r   r#   r&   new_datas        r   r   ChunkedReader.parse_chunked8   s     ,,X6QhT"D	!
}}$,& T" u+;Dd)a-#==? 	 d)a-
 BQx7",T"1X6600QR0ILT# Qhs   A+C+/AC+61C+)C+Nc                    [         R                  " 5       nUb  UR                  U5        UR                  5       R	                  S5      nUS:  a8  U R                  X5        UR                  5       R	                  S5      nUS:  a  M8  UR                  5       nUS U X$S-   S  peUR                  SS5      tpxU(       a  UR                  S5      n[        S U 5       5      (       a  [        U5      e[        U5      S:X  a  [        U5      e[        US5      nUS:X  a   U R                  X5        g	Xv4$ ! [         a     g	f = f)
Nr+   r   r*      ;   s    	c              3   *   #    U  H	  oS ;  v   M     g7f)s   0123456789abcdefABCDEFN ).0ns     r   	<genexpr>1ChunkedReader.parse_chunk_size.<locals>.<genexpr>^   s     F:a11:s      )r   N)r   r   r   r!   r.   r/   splitrstripanyr   r9   r   r5   r   )	r   r   r$   r   r3   line
rest_chunk
chunk_size	chunk_exts	            r   r8   ChunkedReader.parse_chunk_sizeM   s.   jjlIIdOlln!!'*AgMM((,,.%%g.C Ag ||~:t!GH~j "&D!!4
#**62JF:FFF":..z?a":..R(
?##H9 ''  s   D1 1
D>=D>c                 h    UR                  5       nU(       d
  [        5       eUR                  U5        g r
   )r'   r   r   )r   r   r   r$   s       r   r/   ChunkedReader.get_datal   s#    }},		$r   )r   r   r   r
   )__name__
__module____qualname____firstlineno__r   r'   r5   r   r8   r/   __static_attributes__r@   r   r   r   r      s!     
,2 J*(>r   r   c                        \ rS rSrS rS rSrg)LengthReaders   c                     Xl         X l        g r
   )r   length)r   r   rY   s      r   r   LengthReader.__init__t   s     r   c                 0   [        U[        5      (       d  [        S5      e[        U R                  U5      nUS:  a  [        S5      eUS:X  a  g[        R                  " 5       nU R                  R                  5       nU(       aI  UR                  U5        UR                  5       U:  a  O#U R                  R                  5       nU(       a  MI  UR                  5       nUS U X!S  pTU R                  R                  U5        U =R                  U-  sl        U$ )Nsize must be an integral typer   r   r   )r   r   r   minrY   r   r   r   r   r'   r   r   r!   r0   )r   r#   r   r$   r%   r&   s         r   r'   LengthReader.readx   s    $$$;<<4;;%!856619jjl}}!!#IIdOxxzT!==%%'D	 d llnJE
TT"t
r   )rY   r   NrP   rQ   rR   rS   r   r'   rT   r@   r   r   rV   rV   s   s    r   rV   c                        \ rS rSrS rS rSrg)	EOFReader   c                 R    Xl         [        R                  " 5       U l        SU l        g )NF)r   r   r   r   finished)r   r   s     r   r   EOFReader.__init__   s     ::<r   c                    [        U[        5      (       d  [        S5      eUS:  a  [        S5      eUS:X  a  gU R                  (       aY  U R
                  R                  5       nUS U X!S  pC[        R                  " 5       U l        U R
                  R                  U5        U$ U R                  R                  5       nU(       a]  U R
                  R                  U5        U R
                  R                  5       U:  a  O#U R                  R                  5       nU(       a  M]  U(       d  SU l        U R
                  R                  5       nUS U X!S  pC[        R                  " 5       U l        U R
                  R                  U5        U$ )Nr\   r   r   r   T)r   r   r   r   rd   r   r!   r   r   r   r   r'   r   r"   s        r   r'   EOFReader.read   s(   $$$;<<!856619==88$$&DUdT%[zz|DHHHNN4 J}}!!#HHNN4 xx}}%==%%'D	 d  DMxx  "$KeT::<t
r   )r   rd   r   Nr_   r@   r   r   ra   ra      s    
r   ra   c                   N    \ rS rSrS rS rS r\rS rSS jr	SS jr
SS	 jrS
rg)Body   c                 D    Xl         [        R                  " 5       U l        g r
   )readerr   r   r   )r   rl   s     r   r   Body.__init__   s    ::<r   c                     U $ r
   r@   )r   s    r   __iter__Body.__iter__   s    r   c                 H    U R                  5       nU(       d
  [        5       eU$ r
   )readliner    )r   r%   s     r   __next__Body.__next__   s    mmo/!
r   c                     Uc  [         R                  $ [        U[        5      (       d  [	        S5      eUS:  a  [         R                  $ U$ )Nr\   r   )sysmaxsizer   r   r   )r   r#   s     r   getsizeBody.getsize   s@    <;;D#&&;<<AX;;r   Nc                    U R                  U5      nUS:X  a  gXR                  R                  5       :  aY  U R                  R                  5       nUS U X!S  pC[        R
                  " 5       U l        U R                  R                  U5        U$ XR                  R                  5       :  a]  U R                  R                  S5      nU(       d  O:U R                  R                  U5        XR                  R                  5       :  a  M]  U R                  R                  5       nUS U X!S  pC[        R
                  " 5       U l        U R                  R                  U5        U$ )Nr   r      )	rx   r   r   r!   r   r   r   rl   r'   r"   s        r   r'   	Body.read   s   ||D!19((--/!88$$&DUdT%[zz|DHHHNN4 JXX]]_$;;##D)DHHNN4 	 XX]]_$ xx  "$KeT::<t
r   c                 2   U R                  U5      nUS:X  a  gU R                  R                  5       n[        R                  " 5       U l        / n UR                  SSU5      nUS:  a  US-   O[        U5      U:  a  UOSnU(       a2  UR                  US U 5        U R                  R                  X$S  5        ONUR                  U5        U[        U5      -  nU R                  R                  [        SU5      5      nU(       d  OM  SR                  U5      $ )Nr   r   r>      
r{   )rx   r   r!   r   r   r.   r9   appendr   rl   r'   r]   join)r   r#   r$   r%   r3   s        r   rr   Body.readline   s    ||D!19xx  "::<))E1d+C AX#'3t93D4!C

4:&tDz*JJtCID;;##CdO4D  xx}r   c                     / nU R                  5       nU(       aS  UR                  S5      nUS:  a  UR                  U5        SnOUS US-    X4S-   S  p5UR                  U5        U(       a  MS  U$ )Nr~   r   r   r>   )r'   r.   r   )r   r#   r%   r$   posrI   s         r   	readlinesBody.readlines  sn    yy{))E"CQw

4 !(37^T'(^d

4  d 
r   )r   rl   r
   )rP   rQ   rR   rS   r   ro   rs   r   rx   r'   rr   r   rT   r@   r   r   ri   ri      s,      D02r   ri   )
r   rv   gunicorn.http.errorsr   r   r   r   rV   ra   ri   r@   r   r   <module>r      sE   
 
 
4 4d dN <# #LU Ur   