Ë
    ðLqjŸ%  ã                  óR  — d dl mZ d dlmZmZmZmZmZ d dlm	Z	m
Z
mZmZ d dlZd dlmZ d dlmZmZ d dlmZ d dlmZmZmZmZmZ e
egee   f   Ze
eegee   f   Zeeeeee	f   f   df   Zeeeee eee	f   f      Z! ed	«      Z" G d
„ de«      Z# G d„ d«      Z$ G d„ de«      Z%y)é    )Úannotations)ÚAsyncGeneratorÚAsyncIterableÚ	AwaitableÚMappingÚMutableMapping)ÚAnyÚCallableÚTypeVarÚUnionN)Úcollapse_excgroups)ÚClientDisconnectÚRequest)ÚResponse)ÚASGIAppÚMessageÚReceiveÚScopeÚSendÚTc                  ó,   ‡ — e Zd ZdZdˆ fd„Zdd„Zˆ xZS )Ú_CachedRequesta  
    If the user calls Request.body() from their dispatch function
    we cache the entire request body in memory and pass that to downstream middlewares,
    but if they call Request.stream() then all we do is send an
    empty body so that downstream things don't hang forever.
    c                ól   •— t         ‰| �  ||«       d| _        d| _        | j	                  «       | _        y )NF)ÚsuperÚ__init__Ú_wrapped_rcv_disconnectedÚ_wrapped_rcv_consumedÚstreamÚ_wrapped_rc_stream)ÚselfÚscopeÚreceiveÚ	__class__s      €úe/var/www/html/ai-menu-system/python-ai/venv/lib/python3.12/site-packages/starlette/middleware/base.pyr   z_CachedRequest.__init__   s0   ø€ Ü‰Ñ˜ Ô(Ø).ˆÔ&Ø%*ˆÔ"Ø"&§+¡+£-ˆÕó    c              ƒ  ó0  K  — | j                   rddiS | j                  rQ| j                  rd| _         ddiS | j                  «       ƒ d {  –—† }|d   dk7  rt	        d|d   › �«      ‚d| _         |S t        | dd «      �d| _        d| j                  ddœS | j                  rd| _        dd	ddœS 	 | j                  «       }|j                  «       ƒ d {  –—† }| j                  | _        d|| j                   dœS 7 Œ®7 Œ(# t        $ r d| _         ddicY S w xY w­w)
NÚtypeúhttp.disconnectTzUnexpected message received: Ú_bodyzhttp.requestF©r'   ÚbodyÚ	more_bodyr%   )r   r   Ú_is_disconnectedr"   ÚRuntimeErrorÚgetattrr)   Ú_stream_consumedr   Ú	__anext__r   )r    Úmsgr   Úchunks       r$   Úwrapped_receivez_CachedRequest.wrapped_receive"   s]  è ø€ à×)Ò)ð Ð-Ð.Ð.à×%Ò%ð ×$Ò$ð 26�Ô.ØÐ 1Ð2Ð2ð Ÿ™›×&ˆCØ�6‰{Ð/Ò/ô #Ð%BÀ3ÀvÁ;À-Ð#PÓQÐQØ-1ˆDÔ*ØˆJô �4˜ $Ó'Ð3à)-ˆDÔ&à&ØŸ
™
Ø"ñð ð
 ×"Ò"ð *.ˆDÔ&à&ØØ"ñð ð3ØŸ™›�Ø$×.Ñ.Ó0×0�Ø-1×-BÑ-B�Ô*à*Ø!Ø%)×%:Ñ%:Ð!:ñð ðC 'øð> 1ùô $ò 3Ø15�Ô.ØÐ 1Ð2Ò2ð3üsI   ‚ADÁ	C8Á
A#DÂ.#C< ÃC:Ã%C< Ã7DÃ:C< Ã<DÄDÄDÄD)r!   r   r"   r   ©Úreturnr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r4   Ú__classcell__)r#   s   @r$   r   r      s   ø„ ñõ0÷;3r%   r   c                  ó&   — e Zd Zddd„Zdd„Zdd„Zy)	ÚBaseHTTPMiddlewareNc                óH   — || _         |€| j                  | _        y || _        y ©N)ÚappÚdispatchÚdispatch_func)r    r@   rA   s      r$   r   zBaseHTTPMiddleware.__init__a   s!   € ØˆŒØ.6Ð.>˜TŸ]™]ˆÕÀHˆÕr%   c           
   ƒ  óî  ‡ ‡‡‡	‡
‡‡‡‡K  — ‰d   dk7  r‰ j                  ‰||«      ƒ d {  –—†  y t        ‰|«      }|j                  Št        j                  «       Šd ŠdŠ	dˆˆ	ˆ
ˆˆˆ ˆˆˆf	d„}t        j
                  «       }|\  ŠŠ
‰
5  ‰5  t        «       5  t        j                  «       4 ƒd {  –—† Š‰ j                  ||«      ƒ d {  –—† } |‰‰|«      ƒ d {  –—†  ‰j                  «        ‰
j                  «        d d d «      ƒd {  –—†  d d d «       d d d «       d d d «       ‰�‰	s‰‚y y 7 �Œ7 Œƒ7 Œk7 Œ[7 Œ-# 1 ƒd {  –—†7  sw Y   Œ=xY w# 1 sw Y   ŒAxY w# 1 sw Y   ŒExY w# 1 sw Y   ŒIxY w­w)Nr'   ÚhttpFc              “  ó¸  •	‡‡K  — dˆˆfd„Šdˆfd„Šdˆˆˆˆˆˆfd„}‰j                  |«       	 ‰
j                  «       ƒ d {  –—† }|j                  dd «      }|d   dk(  r|�‰
j                  «       ƒ d {  –—† }|d   d	k(  sJ ‚dˆ
fd
„}t        |d    |«       |¬«      }|d   |_        |S 7 Œj7 Œ8# t        j                  $ r ‰�dŠ	‰‚t        d«      ‚w xY w­w)Nc               “  óV  •‡K  — ‰j                  «       rddiS t        j                  «       4 ƒd {  –—† Šdˆfd„} ‰j                  | ‰j                  «        | ‰«      ƒ d {  –—† }d d d «      ƒd {  –—†  ‰j                  «       rddiS S 7 Œ\7 Œ,7 Œ# 1 ƒd {  –—†7  sw Y   Œ.xY w­w)Nr'   r(   c              “  óf   •K  —  | «       ƒ d {  –—† }‰j                   j                  «        |S 7 Œ ­wr?   )Úcancel_scopeÚcancel)ÚfuncÚresultÚ
task_groups     €r$   Úwrapz[BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect.<locals>.wrapw   s,   øè ø€ Ù'+£v§˜Ø"×/Ñ/×6Ñ6Ô8Ø%˜ð ".ús   ƒ1Ž/�!1)rJ   zCallable[[], Awaitable[T]]r6   r   )Úis_setÚanyioÚcreate_task_groupÚ
start_soonÚwait)rM   ÚmessagerL   Úresponse_sentr4   s     @€€r$   Úreceive_or_disconnectzMBaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnectq   s«   ùè ø€ Ø ×'Ñ'Ô)Ø"Ð$5Ð6Ð6ä ×2Ñ2Ó4÷ :ð :¸
õ&ð
 ×)Ñ)¨$°×0BÑ0BÔCÙ$(¨Ó$9×9�G÷:÷ :ð !×'Ñ'Ô)Ø"Ð$5Ð6Ð6à�ð:øð :øð:ø÷ :÷ :ñ :üsV   „-B)±B²B)µ.BÁ#BÁ$BÁ(B)Á3BÁ4B)ÂBÂB)ÂB&ÂBÂB&Â"B)c              “  óx   •K  — 	 ‰j                  | «      ƒ d {  –—†  y 7 Œ# t        j                  $ r Y y w xY w­wr?   )ÚsendrO   ÚBrokenResourceError)rS   Úsend_streams    €r$   Úsend_no_errorzEBaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.send_no_error„   s7   øè ø€ ðØ%×*Ñ*¨7Ó3×3Ò3ùÜ×0Ñ0ò áðüs(   ƒ:…! ™š! ž:Ÿ! ¡7´:¶7·:c               “  ó¨   •K  — ‰5  	 ‰j                  ‰‰‰«      ƒ d {  –—†  d d d «       y 7 Œ# t        $ r} | ŠY d } ~ Œd } ~ ww xY w# 1 sw Y   y xY w­wr?   )r@   Ú	Exception)ÚexcÚapp_excrU   r!   r    rZ   rY   s    €€€€€€r$   Úcoroz<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro‹   sY   øè ø€ ð !ñ &ð&Ø"Ÿh™h uÐ.CÀ]ÓS×SÐS÷&ð &àSùÜ$ò &Ø"%�ûð&ú÷&ð &üsD   ƒA†Aˆ.ž,Ÿ.£	A¬.®	A·>¹A¾AÁAÁAÁAÚinfor'   úhttp.response.debugTzNo response returned.úhttp.response.startc                óÈ   •K  — ‰2 3 d {  –—† } | d   dk(  r| ­–—  y | d   dk(  s
J d| › �«       ‚| j                  dd«      }|r|­–— | j                  dd«      rŒV y 7 ŒS6 y ­w)	Nr'   zhttp.response.pathsendúhttp.response.bodyzUnexpected message: r+   r%   r,   F)Úget)rS   r+   Úrecv_streams     €r$   Úbody_streamzCBaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.body_stream¤   s~   øè ø€ Ø%0÷ 	ð 	˜'Ø˜v‘Ð*BÒBØ%›ÙØ" 6™?Ð.BÒBÐdÐFZÐ[bÐZcÐDdÓdÐBØ"Ÿ;™; v¨sÓ3�DÙØ"›
Ø"Ÿ;™; {°EÕ:Ùð	ø¡[ùs,   ƒA"†A ŠA‹A ŽAA"ÁA"ÁA Á A"Ústatus)Ústatus_codeÚcontentr`   Úheadersr5   )rS   r   r6   ÚNone)r6   rl   )r6   ÚBodyStreamGenerator)rQ   r"   re   rO   ÚEndOfStreamr.   Ú_StreamingResponseÚraw_headers)Úrequestr_   rS   r`   rg   ÚresponserU   rZ   r^   Úexception_already_raisedrf   rT   r!   r    rY   rL   r4   s         @@€€€€€€€€€r$   Ú	call_nextz.BaseHTTPMiddleware.__call__.<locals>.call_nextp   sö   úè ø€ öõ&÷&ò &ð ×!Ñ! $Ô'ð
<Ø +× 3Ñ 3Ó 5×5�Ø—{‘{ 6¨4Ó0�Ø˜6‘?Ð&;Ò;ÀÐ@PØ$/×$7Ñ$7Ó$9×9�Gð ˜6‘?Ð&;Ò;Ð;Ð;õ
ô *°g¸hÑ6GÑQ\ÓQ^ÐeiÔjˆHØ#*¨9Ñ#5ˆHÔ ØˆOð7 6øð :ùÜ×$Ñ$ò <ØÐ&à/3Ð,Ø!�MÜ"Ð#:Ó;Ð;ð<üs@   …*C°B2 ÁB.Á3B2 Á7B0Á8B2 Á<2CÂ.B2 Â0B2 Â2%CÃC)rq   r   r6   r   )r@   r   r4   rO   ÚEventÚcreate_memory_object_streamr   rP   rB   ÚsetÚclose)r    r!   r"   rW   rq   rt   Ústreamsrr   r^   rs   rf   rT   rY   rL   r4   s   ``      @@@@@@@r$   Ú__call__zBaseHTTPMiddleware.__call__e   sq  ÿøè ø€ Ø�‰=˜FÒ"Ø—(‘(˜5 '¨4Ó0×0Ð0Øä  ¨Ó0ˆØ!×1Ñ1ˆÜŸ™›ˆØ$(ˆØ#(Ð ÷B	õ B	ôH ?D×>_Ñ>_Ó>aˆØ#*Ñ ˆ�[Øñ 	$˜+ñ 	$Ô'9Ó';ñ 	$Ü×.Ñ.Ó0÷ $ð $°JØ!%×!3Ñ!3°G¸YÓ!G×G�Ù˜u o°tÓ<×<Ð<Ø×!Ñ!Ô#Ø×!Ñ!Ô#÷	$÷ $÷	$÷ 	$÷ 	$ð ÐÑ'?ØˆMð (@Ððk 1ùð`$øØGøØ<øð$ø÷ $÷ $ñ $ú÷	$ð 	$ú÷ 	$ð 	$ú÷ 	$ð 	$üsÄ   ‹E5ªD1«AE5Â	E)ÂEÂEÂ0D4Â1EÂ4D<	Ã
D6ÃD<	ÃD8Ã$D<	ÄEÄD:
ÄEÄEÄE)Ä!E5Ä4EÄ6D<	Ä8D<	Ä:EÄ<EÅEÅEÅ
EÅEÅEÅE&	Å"E)Å)E2Å.E5c              ƒ  ó   K  — t        «       ‚­wr?   )ÚNotImplementedError)r    rq   rt   s      r$   rA   zBaseHTTPMiddleware.dispatch¿   s   è ø€ Ü!Ó#Ð#ùs   ‚r?   )r@   r   rA   zDispatchFunction | Noner6   rl   ©r!   r   r"   r   rW   r   r6   rl   )rq   r   rt   ÚRequestResponseEndpointr6   r   )r7   r8   r9   r   rz   rA   © r%   r$   r=   r=   `   s   „ ôMóXôt$r%   r=   c                  ó<   — e Zd Z	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zy)ro   Nc                ól   — || _         || _        || _        || _        | j	                  |«       d | _        y r?   )r`   Úbody_iteratorri   Ú
media_typeÚinit_headersÚ
background)r    rj   ri   rk   rƒ   r`   s         r$   r   z_StreamingResponse.__init__Ä   s7   € ð ˆŒ	Ø$ˆÔØ&ˆÔØ$ˆŒØ×Ñ˜'Ô"Øˆ�r%   c              ƒ  óÜ  K  — | j                   � |d| j                   dœ«      ƒ d {  –—†   |d| j                  | j                  dœ«      ƒ d {  –—†  d}| j                  2 3 d {  –—† }t	        |t
        «      rd} ||«      ƒ d {  –—†  Œ, |d|ddœ«      ƒ d {  –—†  ŒA7 Œ{7 ŒU7 Œ@7 Œ 7 Œ6 |r |dd	ddœ«      ƒ d {  –—†7   | j                  r| j                  «       ƒ d {  –—†7   y y ­w)
Nra   )r'   r`   rb   )r'   rh   rk   TFrd   r*   r%   )r`   ri   rp   r‚   Ú
isinstanceÚdictr…   )r    r!   r"   rW   Úshould_close_bodyr3   s         r$   rz   z_StreamingResponse.__call__Ó   s  è ø€ Ø�9‰9Ð ÙÐ 5¸t¿y¹yÑIÓJ×JÐJÙà-Ø×*Ñ*Ø×+Ñ+ñó
÷ 	
ð 	
ð !ÐØ×-Ñ-÷ 	Yð 	Y�%Ü˜%¤Ô&à$)Ð!Ù˜5“k×!Ð!ØÙÐ 4¸eÐRVÑWÓX×XÑXð! Køð	
øð	Yøð "øàXøð .ñ ÙÐ 4¸cÐPUÑVÓW×WÑWà�?Š?Ø—/‘/Ó#×#Ò#ð ùs�   ‚%C,§B#¨'C,ÁB%ÁC,Á"B-Á&B'Á'B-Á*C,ÂB)Â	C,ÂB+ÂC,Â%C,Â'B-Â)C,Â+C,Â-C,Â?CÃ $C,Ã$C'Ã%C,)éÈ   NNN)rj   ÚAsyncContentStreamri   Úintrk   zMapping[str, str] | Nonerƒ   z
str | Noner`   zMapping[str, Any] | Noner6   rl   r}   )r7   r8   r9   r   rz   r   r%   r$   ro   ro   Ã   sT   „ ð Ø,0Ø!%Ø)-ðà#ðð ðð *ð	ð
 ðð 'ðð 
óô$r%   ro   )&Ú
__future__r   Úcollections.abcr   r   r   r   r   Útypingr	   r
   r   r   rO   Ústarlette._utilsr   Ústarlette.requestsr   r   Ústarlette.responsesr   Ústarlette.typesr   r   r   r   r   r~   ÚDispatchFunctionÚbytesÚstrrm   Ú
memoryviewr‹   r   r   r=   ro   r   r%   r$   ú<module>r˜      sÑ   ðÝ "ç ]Õ ]ß 0Ó 0ã å /ß 8Ý (ß BÕ Bà" G 9¨i¸Ñ.AÐ#AÑBÐ Ø˜WÐ&=Ð>À	È(Ñ@SÐSÑTÐ Ø$ U¨5°.ÀÀcÀÑ2JÐ+JÑ%KÈTÐ%QÑRÐ Ø" 5¨¨e°ZÀÐPSÐUXÐPXÑAYÐ)YÑ#ZÑ[Ð ÙˆCƒL€ôI3�Wô I3÷X`$ñ `$ôF($˜õ ($r%   