+
    j>                     &   ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHtH	t	H
t
 ^ RIHtHt ^ RIHt Rt]P                   ! R4      t]P$                  ! ]4      t ! R R	4      t ! R
 R] P,                  4      tR tR tR tR tR t ! R R4      tR# )    N)TOKEN_RE)ConfigurationProblemInvalidHeaderInvalidHeaderName)SERVER_SOFTWARESERVER)utili?z[ \t\x21-\x7e\x80-\xff]*c                   <   a  ] tR t^t o RR ltR tR tR tRtV t	R# )FileWrapperc                h    Wn         W n        \        VR 4      '       d   VP                  V n        R# R# )closeN)filelikeblksizehasattrr   )selfr   r   s   &&&G/var/www/idalgo/venv/lib/python3.14/site-packages/gunicorn/http/wsgi.py__init__FileWrapper.__init__   s)     8W%%!DJ &    c                l    V P                   P                  V P                  4      pV'       d   V# \        hN)r   readr   
IndexError)r   keydatas   && r   __getitem__FileWrapper.__getitem__#   s(    }}!!$,,/Kr   c                    V # r    r   s   &r   __iter__FileWrapper.__iter__)   s    r   c                l    V P                   P                  V P                  4      pV'       d   V# \        hr   )r   r   r   StopIteration)r   r   s   & r   __next__FileWrapper.__next__,   s(    }}!!$,,/Kr   )r   r   r   N)i    )
__name__
__module____qualname____firstlineno__r   r   r!   r%   __static_attributes____classdictcell____classdict__s   @r   r   r      s     ( r   r   c                   ,   a  ] tR t^3t o R tR tRtV tR# )WSGIErrorsWrapperc                b   \         P                  ! R 4      pVP                  p. V n        VP                  R8X  d3   V P                  P                  \        P                  4       VR,          pV F<  p\        VR4      '       g   K  V P                  P                  VP                  4       K>  	  R# )zgunicorn.error-:   NNstreamN)
logging	getLoggerhandlersstreamserrorlogappendsysstderrr   r4   )r   cfgr9   r7   hs   &&   r   r   WSGIErrorsWrapper.__init__5   s     $$%56$$<<3LL

+|HAq(####AHH- r   c                    V P                    F%  p VP                  V4       VP	                  4        K'  	  R#   \         d$    TP                  TP                  R 4      4        LCi ; i)zUTF-8N)r8   writeUnicodeErrorencodeflush)r   r   r4   s   && r   rA   WSGIErrorsWrapper.writeE   sR    llF3T" LLN #   3T[[123s   8+A&%A&)r8   N)r'   r(   r)   r*   r   rA   r+   r,   r-   s   @r   r0   r0   3   s     .  r   r0   c                 b    R \        V 4      RR
RRRV P                  ^8  RRR\        RRR	\        /# )zwsgi.errorszwsgi.versionzwsgi.multithreadFzwsgi.multiprocesszwsgi.run_oncezwsgi.file_wrapperzwsgi.input_terminatedTr   r3   r   )r0   workersr   r   )r=   s   &r   base_environrI   N   sB    (-EckkAo[?	 	r   c                 "   \        V4      pTP                  R V P                  RTRV P                  RV P                  RV P
                  RRRP                  V P                   Uu. uF  p\        V4      NK  	  up4      ,          /4       V# u upi )z
wsgi.inputzgunicorn.socketREQUEST_METHODQUERY_STRINGRAW_URISERVER_PROTOCOLzHTTP/%s.)	rI   updatebodymethodqueryurijoinversionstr)reqsockr=   envvs   &&&  r   default_environr\   [   s}    
s
CJJchh4#**		3779sxx0MAQ0M'NN  J 1Ns   $B$c                     V P                   pV'       g   / # R VR,          RVR,          R\        VR,          4      RVR,          R\        VR	,          4      /# )
PROXY_PROTOCOLproxy_protocolREMOTE_ADDRclient_addrREMOTE_PORTclient_port
PROXY_ADDR
proxy_addr
PROXY_PORT
proxy_port)proxy_protocol_inforW   )rX   infos   & r   proxy_environrj   h   s^    ""D	 	$/0tM*s4./d<(c$|,- r   c                   a aa V VV3R lpV# )a  Create a wsgi.early_hints callback for sending 103 Early Hints.

This allows WSGI applications to send 103 Early Hints responses
before the final response, enabling browsers to preload resources.

Args:
    req: The request object
    sock: The socket to write to
    resp: The Response object to check if headers have been sent

Returns:
    A callback function that accepts a list of (name, value) header tuples
    and sends a 103 Early Hints response.

Note:
    - Early hints are only sent for HTTP/1.1 or later clients
    - HTTP/1.0 clients will silently ignore the callback
    - Multiple calls are allowed (sending multiple 103 responses)
    - Calls after response has started are silently ignored
c                ^  < SP                   '       d   R# SP                  R	8  d   R# RpV  F  w  r#\        V\        4      '       d   VP	                  R4      p\        V\        4      '       d   VP	                  R4      p\
        P                  ! V4      '       g   \        RV,          4      h\        P                  V4      '       g   \        RV,          4      hVP                  R4      pW RV R2P                  R4      ,          pK  	  VR,          p\        P                  ! SV4       R# )
aE  Send 103 Early Hints response.

Args:
    headers: List of (name, value) header tuples, typically Link headers
             Example: [('Link', '</style.css>; rel=preload; as=style')]

Raises:
    InvalidHeaderName: If a header name is not a valid HTTP token.
    InvalidHeader: If a header value contains invalid characters.
Ns   HTTP/1.1 103 Early Hints
latin-1%r 	: 
   
)r3   r3   )headers_sentrV   
isinstancebytesdecoder   	fullmatchr   HEADER_VALUE_REr   striprC   r	   rA   )headersresponsenamevaluerX   resprY   s   &   r   send_early_hints4_make_early_hints_callback.<locals>.send_early_hints   s      ;; 3"KD$&&{{9-%''Y/
 %%d++'t44",,U33
 $D4K00KK&E&5'.55i@@H' #( 	G

4"r   r   )rX   rY   r~   r   s   fff r   _make_early_hints_callbackr   w   s    *+#Z r   c                    \        WV4      p\        WV4      pR p\        P                  P	                  RR4      pV P
                  '       d   VP                  R4       V P                   Fe  w  rV	R8X  d   T
pM$V	R8X  d   T
pMV	R8X  d   WR&   K&  V	R8X  d   WR&   K3  R	V	P                  R
R4      ,           pW9   d   Wk,          : RV
: 2p
WV&   Kg  	  V P                  VR&   \        V\        4      '       d   W&R&   MK\        V\        4      '       d   VP                  4       VR&   M!V^ ,          VR&   \        V^,          4      VR&   \        V\        4      '       d   VP                  R4      p\        V4      ^8X  d   V'       dz   VP                  R4      p\        V4      ^8X  dX   V P                  R8X  d   VP!                  ^P4       MFV P                  R8X  d   VP!                  R4       M#VP!                  R4       MVP!                  R4       V^ ,          VR&   \        V^,          4      VR&   V P"                  pV'       d9   VP%                  V4      '       g   \'        RV: RV: 24      hV\        V4      R  p\(        P*                  ! V4      VR&   WR&   VP-                  \/        V 4      4       \1        WV4      VR&   \3        V R4      '       d   V P4                  VR&   V P6                  VR&   WV3# )NSCRIPT_NAME s   HTTP/1.1 100 Continue

HOSTzCONTENT-TYPECONTENT_TYPEzCONTENT-LENGTHCONTENT_LENGTHHTTP_r2   _,zwsgi.url_schemer`   rb   :httphttpsi  SERVER_NAMESERVER_PORTzRequest path z! does not start with SCRIPT_NAME 	PATH_INFOzwsgi.early_hintspriority_weightzgunicorn.http2.priority_weightz"gunicorn.http2.priority_depends_on)Responser\   osenvironget_expected_100_continuesendrz   replaceschemert   rW   ru   rv   splitlenr:   path
startswithr   r	   unquote_to_wsgi_strrP   rj   r   r   r   priority_depends_on)rX   rY   clientserverr=   r~   r   hostscript_namehdr_name	hdr_valuer   	path_infos   &&&&&        r   creater      s   Cs#D c-G D**..3K
!!!		23
  #{{vD&#K'&/N#))(1$% ((c22>#*<<;I #  +( "%G &#!'	FE	"	"!'!'!$VAY &#c"v;!Cv;!#zzV+b)w.c*b) b!#AYGM ^GM I##K00&K)* * c+./0	33I>GK(M NN=%& #=S"MG s%&&474G4G018;8O8O45=r   c                   r   a  ] tR tRt o R tR tR tRR ltR tR t	R	 t
R
 tR tR tR tR tR tRtV tR# )r   i   c                    Wn         W n        \        V n        R V n        RV n        RV n        . V n        RV n        R V n	        ^ V n
        RV n        W0n        R # )NF)rX   rY   r   rV   statuschunked
must_closerz   rs   response_lengthsentupgrader=   )r   rX   rY   r=   s   &&&&r   r   Response.__init__"  sR    	!#	r   c                    R V n         R# )TN)r   r    s   &r   force_closeResponse.force_close0  s	    r   c                4   V P                   '       g!   V P                  P                  4       '       d   R # V P                  f   V P                  '       d   R# V P                  P
                  R8X  d   R# V P                  ^8  g   V P                  R9   d   R# R # )TFHEAD   i0  )r   rX   should_closer   r   rR   status_coder    s   &r   r   Response.should_close3  sk    ???dhh3355+t|||88??f$c!T%5%5%Cr   Nc                   V'       dV    V P                   '       d@   V P                  '       d.   \        P                  ! V^ ,          V^,          V^,          4       RpMV P                   e   \	        R4      hWn          \        V P                   P                  4       ^ ,          4      V n        V P                  V4       V P                  4       V n        V P                  #   Rpi ; i  \         d    RT n         LMi ; i)r   NzResponse headers already set!)r   rs   r	   reraiseAssertionErrorintr   r   
ValueErrorprocess_headers
is_chunkedr   rA   )r   r   rz   exc_infos   &&&&r   start_responseResponse.start_response>  s     ;;;4#4#4#4LL!hqk8A;G[[$ !@AA
	$"4;;#4#4#6q#9:D 	W%(zz!    	$#D	$s'   C C -C >/C& C#&C;:C;c                   V EF  w  r#\        V\        4      '       g   \        R V,          4      h\        P                  ! V4      '       g   \        RV,          4      h\        V\        4      '       g   \        R V,          4      h\        P	                  V4      '       g   \        RV,          4      hVP                  R4      pVP                  4       pVR8X  d   \        V4      V n        M{\        P                  ! V4      '       d`   VR8X  d   VP                  4       R8X  d   RV n        M8VR8X  d2   VP                  4       R8X  d   V P                  P!                  W#34       EKe  V P                  P!                  W#34       EK  	  R# )	z%r is not a stringrn   ro   zcontent-length
connectionr   T	websocketN)rt   rW   	TypeErrorr   rw   r   rx   r   ry   lowerr   r   r	   
is_hoppishr   rz   r:   )r   rz   r|   r}   lnames   &&   r   r   Response.process_headersV  s*   "KDdC(( 4t ;<<%%d++'t44eS)) 4u <==",,U33#D5L11 KK&EJJLE(('*5z$&&L({{}	1'+i'{{}3++TM: LL.; #r   c                    V P                   e   R# V P                  P                  R8:  d   R# V P                  P                  R8X  d   R# V P                  R9   d   R# R# )NFr   TrG   r   )r   rX   rV   rR   r   r    s   &r   r   Response.is_chunkedv  sQ     +XX'XX__&+ r   c                   V P                   '       d   R pMV P                  4       '       d   RpMRpRV P                  P                  ^ ,          : RV P                  P                  ^,          : RV P                  : R2RV P                  ,          R\
        P                  ! 4       ,          R	V,          .pV P                  '       d   VP                  R
4       V# )r   r   z
keep-alivezHTTP/rO    rq   zServer: %s
z
Date: %s
zConnection: %s
zTransfer-Encoding: chunked
)	r   r   rX   rV   r   r	   	http_dater   r:   )r   r   rz   s   &  r   default_headersResponse.default_headers  s    <<<"J   J%J $(88#3#3A#6#6#'88#3#3A#6#6Et||+T^^-- :-
 <<<NN;<r   c           
     r   V P                   '       d   R # V P                  4       pTP                  V P                   UUu. uF  w  r#V: RV: R2NK  	  upp4       RRP	                  V4      ,          p\
        P                  ! V P                  \
        P                  ! VR4      4       RV n         R # u uppi )Nrp   rq   z%s
r   rm   T)	rs   r   extendrz   rU   r	   rA   rY   to_bytestring)r   tosendkr[   
header_strs   &    r   send_headersResponse.send_headers  s    %%'Fq!,FG/


499d00YGH 	 Gs   B3
c                   V P                  4        \        V\        4      '       g   \        R V,          4      h\	        V4      pTpV P
                  eP   V P                  V P
                  8  d   R# \        V P
                  V P                  ,
          V4      pW28  d   VRV pV P                  '       d
   V^ 8X  d   R# V ;P                  V,          un        \        P                  ! V P                  WP                  4       R# )z%r is not a byteN)r   rt   ru   r   r   r   r   minr   r	   rA   rY   )r   argarglenr   s   &&  r   rA   Response.write  s    #u%%.455S+yyD000--		96BF'6l <<<FaK		V	

499c<<0r   c                2    V P                   P                  R J# )F)r=   sendfiler    s   &r   can_sendfileResponse.can_sendfile  s    xx  --r   c                   V P                   P                  '       g   V P                  4       '       g   R # \        P                  ! VP
                  4      '       g   R # VP
                  P                  4       p \        P                  ! V^ \        P                  4      pV P                  f*   \        P                  ! V4      P                  pWC,
          pMV P                  p V P!                  4        V P#                  4       '       d4   RV,          pV P$                  P'                  VP)                  R4      4       V^ 8  d(   V P$                  P+                  VP
                  W5R7       V P#                  4       '       d   V P$                  P'                  R4       \        P                  ! W#\        P,                  4       R#   \        \        P                  3 d     R # i ; i)Fz%X
zutf-8)offsetcountrr   T)r=   is_sslr   r	   
has_filenor   filenor   lseekSEEK_CURr   fstatst_sizeOSErrorioUnsupportedOperationr   r   rY   sendallrC   r   SEEK_SET)r   respiterr   r   filesizenbytes
chunk_sizes   &&     r   r   Response.sendfile  sS   88???$"3"3"5"5x0011""))+	XXfa5F##+88F+33!*-- 	??!F*JIIj//89A:IIx00N??IIg&
-! 001 		s   8AG G G G c                l    V P                  V4      '       g   V F  pV P                  V4       K  	  R # R # r   )r   rA   )r   r   items   && r   
write_fileResponse.write_file  s,    }}X&& 

4  ! 'r   c                    V P                   '       g   V P                  4        V P                  '       d$   \        P                  ! V P
                  R 4       R# R# )r   N)rs   r   r   r	   write_chunkrY   r    s   &r   r   Response.close  s<       <<<TYY, r   )r=   r   rz   rs   r   rX   r   r   rY   r   r   r   rV   r   )r'   r(   r)   r*   r   r   r   r   r   r   r   r   rA   r   r   r   r   r+   r,   r-   s   @r   r   r      sM     	0/@"(!1..B!
- -r   r   )r   r5   r   rer;   gunicorn.http.messager   gunicorn.http.errorsr   r   r   gunicornr   r   r	   BLKSIZEcompilerx   r6   r'   logr   	RawIOBaser0   rI   r\   rj   r   r   r   r   r   r   <module>r     s   
 
  	 	 
 * W W ,   **89! 0 6

BJaHI- I-r   