Ë
    @Øïif  ã                   ó  — d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
mZmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZ ddddd	ej4                  d
efd„Z G d„ d«      Z G d„ d«      Z	 d dlmZ y# e $ r eZY yw xY w)é    N)Údeque)ÚDequeÚIterableÚOptionalÚTuple)ÚASGIReceiveCallableÚASGIReceiveEventÚASGISendCallableÚASGISendEventÚEnvironÚExcInfoÚHTTPRequestEventÚHTTPResponseBodyEventÚHTTPResponseStartEventÚ	HTTPScopeÚStartResponseÚWSGIAppÚscoper   Úmessager	   ÚbodyÚreturnc                 ó†  — | d   d| d   j                  d«      j                  d«      | d   j                  d«      d| d	   z  d
| j                  dd«      |t        j                  ddddœ}| j                  d«      }|€d}|d   |d<   |d   |d<   | j                  d«      }|�|d   |d<   | j                  dg «      D ]‚  \  }}|j                  d«      }|dk(  rd}	n+|dk(  rd}	n#d|j                  «       j                  dd«      z  }	|j                  d«      }
|	|v r||	   }t        |t        «      sJ ‚|d z   |
z   }
|
||	<   Œ„ |S )!zH
    Builds a scope and request message into a WSGI environ object.
    ÚmethodÚ ÚpathÚutf8Úlatin1Úquery_stringÚasciizHTTP/%sÚhttp_version)é   r   ÚschemeÚhttpTF)ÚREQUEST_METHODÚSCRIPT_NAMEÚ	PATH_INFOÚQUERY_STRINGÚSERVER_PROTOCOLzwsgi.versionzwsgi.url_schemez
wsgi.inputzwsgi.errorszwsgi.multithreadzwsgi.multiprocesszwsgi.run_onceÚserver)Ú	localhostéP   r   ÚSERVER_NAMEr!   ÚSERVER_PORTÚclientÚREMOTE_ADDRÚheaderszcontent-lengthÚCONTENT_LENGTHzcontent-typeÚCONTENT_TYPEzHTTP_%sú-Ú_ú,)	ÚencodeÚdecodeÚgetÚsysÚstdoutÚupperÚreplaceÚ
isinstanceÚstr)r   r   r   Úenvironr)   r.   ÚnameÚvalueÚname_strÚcorrected_nameÚ	value_strÚcorrected_name_environs               úQ/var/www/html/aiagents/fe/lib/python3.12/site-packages/uvicorn/middleware/wsgi.pyÚbuild_environrG      s‹  € ð   ™/ØØ˜6‘]×)Ñ)¨&Ó1×8Ñ8¸ÓBØ˜nÑ-×4Ñ4°WÓ=Ø$ u¨^Ñ'<Ñ<ØØ Ÿ9™9 X¨vÓ6ØÜ—z‘zØ Ø!Øñ€Gð  �Y‰Y�xÓ €FØ€~Ø"ˆØ# A™Y€GˆMÑØ# A™Y€GˆMÑð �Y‰Y�xÓ €FØÐØ!'¨¡ˆ�Ñð —y‘y ¨BÓ/ò ,‰ˆˆeØŸ™ HÓ-ˆØÐ'Ò'Ø-‰NØ˜Ò'Ø+‰Nà&¨¯©Ó)9×)AÑ)AÀ#ÀsÓ)KÑKˆNð Ÿ™ hÓ/ˆ	Ø˜WÑ$Ø%,¨^Ñ%<Ð"ÜÐ4´cÔ:Ð:Ð:Ø.°Ñ4°yÑ@ˆIØ"+ˆ�Òð,ð  €Nó    c                   ó6   — e Zd Zddedefd„Z	 	 	 	 	 	 	 	 dd„Zy)Ú_WSGIMiddlewareÚappÚworkersc                 ó�   — t        j                  dt        «       || _        t        j
                  j                  |¬«      | _        y )NzgUvicorn's native WSGI implementation is deprecated, you should switch to a2wsgi (`pip install a2wsgi`).)Úmax_workers)ÚwarningsÚwarnÚDeprecationWarningrK   Ú
concurrentÚfuturesÚThreadPoolExecutorÚexecutor)ÚselfrK   rL   s      rF   Ú__init__z_WSGIMiddleware.__init__O   s:   € Ü�‰ð>äô	
ð
 ˆŒÜ"×*Ñ*×=Ñ=È'Ð=ÓRˆ�rH   Nc              ƒ   óˆ   K  — |d   dk(  sJ ‚t        | j                  | j                  |«      } |||«      ƒ d {  –—†  y 7 Œ­w)NÚtyper#   )ÚWSGIResponderrK   rU   )rV   r   ÚreceiveÚsendÚinstances        rF   Ú__call__z_WSGIMiddleware.__call__X   s@   è ø€ ð �V‰} Ò&Ð&Ð&Ü  §¡¨4¯=©=¸%Ó@ˆÙ�w Ó%×%Ò%ús   ‚8AºA »A)é
   )r   r   r[   r   r\   r
   r   N)Ú__name__Ú
__module__Ú__qualname__r   ÚintrW   r^   © rH   rF   rJ   rJ   N   sC   „ ñS˜Gð S¨có Sð&àð&ð 'ð&ð !ð	&ð
 
ô&rH   rJ   c            	       óª   — e Zd Zdedej
                  j                  ddfd„Z	 	 	 	 	 	 dd„Zdd	„Z		 dd
e
deee
e
f      dee   ddfd„Zdededdfd„Zy)rZ   rK   rU   r   r   c                 óè   — || _         || _        || _        d | _        d | _        t        j                  «       | _        t        «       | _	        t        j                  «       | _        d| _        d | _        y )NF)rK   rU   r   ÚstatusÚresponse_headersÚasyncioÚEventÚ
send_eventr   Ú
send_queueÚget_event_loopÚloopÚresponse_startedÚexc_info)rV   rK   rU   r   s       rF   rW   zWSGIResponder.__init__d   s]   € ð ˆŒØ ˆŒØˆŒ
ØˆŒØ $ˆÔÜ!Ÿ-™-›/ˆŒÜ<A»GˆŒÜ/6×/EÑ/EÓ/GˆŒ	Ø %ˆÔØ+/ˆ�rH   r   Nc              ƒ   óì  K  —  |«       ƒ d {  –—† }t        j                  |j                  dd«      «      }|j                  dd«      }|rx|j                  dt         j                  «       |rE |«       ƒ d {  –—† }|j                  |j                  dd«      «       |j                  dd«      }|rŒE|j                  d«       t        | j                  ||«      }t        j                  «       | _
        | j                  j                  | j                  | j                  || j                  «      }| j                  j                  | j!                  |«      «      }		 t        j"                  |d «      ƒ d {  –—†  | j$                  j'                  d «       | j(                  j+                  «        t        j"                  |	d «      ƒ d {  –—†  | j,                  �9| j,                  d   j/                  | j,                  d   | j,                  d   «      ‚y 7 �Œ7 �Œ�7 Œ£7 ŒR# | j$                  j'                  d «       | j(                  j+                  «        t        j"                  |	d «      ƒ d {  –—†7   w xY w­w)Nr   rH   Ú	more_bodyFr   r!   é   )ÚioÚBytesIOr8   ÚseekÚSEEK_ENDÚwriterG   r   ri   rm   rn   Úrun_in_executorrU   ÚwsgiÚstart_responseÚcreate_taskÚsenderÚwait_forrl   Úappendrk   Úsetrp   Úwith_traceback)
rV   r[   r\   r   r   rr   Úbody_messager?   rz   r}   s
             rF   r^   zWSGIResponder.__call__u   sì  è ø€ ñ +2«)§OˆÜ�z‰z˜'Ÿ+™+ f¨cÓ2Ó3ˆØ—K‘K ¨UÓ3ˆ	ÙØ�I‰I�aœŸ™Ô%Ùá!›)—Oð ð —
‘
˜<×+Ñ+¨F°CÓ8Ô9Ø(×,Ñ,¨[¸%Ó@�	ò ð �I‰I�aŒLÜ §
¡
¨G°TÓ:ˆÜ×*Ñ*Ó,ˆŒ	Ø�y‰y×(Ñ(Ø�M‰M˜4Ÿ9™9 g¨t×/BÑ/Bó
ˆð —‘×&Ñ& t§{¡{°4Ó'8Ó9ˆð	1Ü×"Ñ" 4¨Ó.×.Ð.à�O‰O×"Ñ" 4Ô(Ø�O‰O×ÑÔ!Ü×"Ñ" 6¨4Ó0×0Ð0Ø�=‰=Ð$Ø—-‘- Ñ"×1Ñ1°$·-±-ÀÑ2BÀDÇMÁMÐRSÑDTÓUÐUð %ð1 %4ùð $ùð /øð 1ùð �O‰O×"Ñ" 4Ô(Ø�O‰O×ÑÔ!Ü×"Ñ" 6¨4Ó0×0Ò0üst   ‚I4�HŽA)I4Á7HÁ89I4Â2B'I4ÅH Å3HÅ4H Å8AI4ÇHÇAI4ÈI4ÈH ÈI4ÈAI1É*I-É+I1É1I4c              ƒ   ó  K  — 	 | j                   r.| j                   j                  «       }|€y  ||«      ƒ d {  –—†  n<| j                  j                  «       ƒ d {  –—†  | j                  j	                  «        Œw7 ŒB7 Œ!­w©N)rl   Úpopleftrk   ÚwaitÚclear)rV   r\   r   s      rF   r}   zWSGIResponder.sender“   sk   è ø€ ØØ�ŠØŸ/™/×1Ñ1Ó3�Ø�?ØÙ˜7“m×#Ñ#à—o‘o×*Ñ*Ó,×,Ð,Ø—‘×%Ñ%Ô'ð ð
 $øà,ús!   ‚6A?¸A;¹"A?ÁA=Á A?Á=A?rg   rh   rp   c                 óŽ  — || _         | j                  s¬d| _        |j                  dd«      \  }}t        |«      }|D ��cg c]'  \  }}|j	                  d«      |j	                  d«      f‘Œ) }	}}d||	dœ}
| j
                  j                  |
«       | j                  j                  | j                  j                  «       y y c c}}w )NTú r!   r   zhttp.response.start)rY   rg   r0   )rp   ro   Úsplitrc   r6   rl   r   rn   Úcall_soon_threadsaferk   r€   )rV   rg   rh   rp   Ústatus_code_strr4   Ústatus_coder@   rA   r0   Úhttp_response_start_events              rF   r{   zWSGIResponder.start_responsež   sÄ   € ð !ˆŒØ×$Ò$Ø$(ˆDÔ!Ø!'§¡¨c°1Ó!5ÑˆO˜QÜ˜oÓ.ˆKð $4÷á�D˜%ð —‘˜WÓ% u§|¡|°GÓ'<Ò=ðˆGñ ð
 .Ø%Ø"ñAÐ%ð
 �O‰O×"Ñ"Ð#<Ô=Ø�I‰I×*Ñ*¨4¯?©?×+>Ñ+>Õ?ð %ùós   Á ,Cr?   r{   c                 ór  — | j                  ||«      D ]R  }d|ddœ}| j                  j                  |«       | j                  j	                  | j
                  j                  «       ŒT ddddœ}| j                  j                  |«       | j                  j	                  | j
                  j                  «       y )Nzhttp.response.bodyT)rY   r   rr   rH   F)rK   rl   r   rn   r‹   rk   r€   )rV   r?   r{   ÚchunkÚresponse_bodyÚ
empty_bodys         rF   rz   zWSGIResponder.wsgiµ   s    € Ø—X‘X˜g ~Ó6ò 	@ˆEà,ØØ!ñ4ˆMð
 �O‰O×"Ñ" =Ô1Ø�I‰I×*Ñ*¨4¯?©?×+>Ñ+>Õ?ð	@ð )ØØñ-
ˆ
ð
 	�‰×Ñ˜zÔ*Ø�	‰	×&Ñ& t§¡×':Ñ':Õ;rH   )r[   r   r\   r
   r   N)r\   r
   r   Nr„   )r`   ra   rb   r   rR   rS   rT   rW   r^   r}   r>   r   r   r   r   r{   r   r   rz   rd   rH   rF   rZ   rZ   c   s¶   „ ð0àð0ð ×$Ñ$×7Ñ7ð0ð ó	0ð"VØ,ðVØ4FðVà	óVó<	(ð '+ñ	@àð@ð # 5¨¨c¨¡?Ñ3ð@ð ˜7Ñ#ð	@ð
 
ó@ð.<˜Gð <°]ð <Àtô <rH   rZ   )ÚWSGIMiddleware)!ri   Úconcurrent.futuresrR   rt   r9   rO   Úcollectionsr   Útypingr   r   r   r   Úuvicorn._typesr   r	   r
   r   r   r   r   r   r   r   r   r   ru   rG   rJ   rZ   Úa2wsgir“   ÚModuleNotFoundErrorrd   rH   rF   ú<module>rš      sŽ   ðÛ Û Û 	Û 
Û Ý ß 3Ó 3÷÷ ÷ ó ð 2Øð2Ø!3ð2Ø;=¿:¹:ð2àó2÷j&ñ &÷*b<ñ b<ðJ%Þ%øØò %Ø$‚Nð%ús   Á.A5 Á5A?Á>A?