Ë
    $V.jô#  ã                  óZ  — d dl mZ d dlZd dlZd dlmZmZ d dlmZ d dl	m
Z
mZ d dlmZmZ d dlmZmZmZmZmZ ej*                  egej,                  e   f   Zej*                  eegej,                  e   f   Z ej2                  d«      Z G d	„ d
e«      Z G d„ d«      Z G d„ de«      Zy)é    )ÚannotationsN)ÚObjectReceiveStreamÚObjectSendStream)Úcollapse_excgroups)ÚClientDisconnectÚRequest)ÚAsyncContentStreamÚ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      €ú[C:\xampp\htdocs\tradingbinance\backend\.venv\Lib\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   r.   Ú__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:   r;   s      r   r   zBaseHTTPMiddleware.__init___   s!   € ØˆŒØ.6Ð.>˜TŸ]™]ˆÕÀHˆÕr   c              ƒ  ó  ‡ ‡‡‡‡	K  — ‰d   dk7  r‰ j                  ‰||«      ƒ d {  –—†  y t        ‰|«      }|j                  Š	t        j                  «       Šdˆˆˆ ˆˆ	fd„}t        «       5  t        j                  «       4 ƒd {  –—† Š‰ j                  ||«      ƒ d {  –—† } |‰‰	|«      ƒ d {  –—†  ‰j                  «        d d d «      ƒd {  –—†  d d d «       y 7 Œ¸7 Œ[7 ŒC7 Œ37 Œ# 1 ƒd {  –—†7  sw Y   Œ%xY w# 1 sw Y   y xY w­w)Nr!   Úhttpc              “  ó  •‡‡‡	‡
‡K  — d Št        j                  «       \  ŠŠ	dˆˆfd„Šdˆ	ˆfd„}dˆfd„Š
dˆˆˆˆˆ
ˆfd„}‰j                  |«       ‰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 Œk7 Œ9# t         j
                  $ r ‰�‰‚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r9   )Úcancel_scopeÚcancel)ÚfuncÚresultÚ
task_groups     €r   Úwrapz[BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect.<locals>.wrapx   s,   øè ø€ Ù'+£v§˜Ø"×/Ñ/×6Ñ6Ô8Ø%˜ð ".ús   ƒ1Ž/�!1)rD   z(typing.Callable[[], typing.Awaitable[T]]r0   r   )Úis_setÚanyioÚcreate_task_groupÚ
start_soonÚwait)rG   ÚmessagerF   Úresponse_sentr.   s     @€€r   Úreceive_or_disconnectzMBaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnectr   sœ   ùè ø€ Ø ×'Ñ'Ô)Ø"Ð$5Ð6Ð6ä ×2Ñ2×4Ô4¸
õ&ð
 ×)Ñ)¨$°×0BÑ0BÔCÙ$(¨Ó$9×9�G÷ 5×4ð !×'Ñ'Ô)Ø"Ð$5Ð6Ð6à�ð 5øð :øð 5ø×4×4Ñ4üsV   „-B)±B²B)µ.BÁ#BÁ$BÁ(B)Á3BÁ4B)ÂBÂB)ÂB&ÂBÂB&Â"B)c               “  ób   •K  — ‰j                  «       ƒ d {  –—†  ‰ j                  «        y 7 Œ­wr9   )rL   Úclose)Úrecv_streamrN   s   €€r   Ú"close_recv_stream_on_response_sentzZBaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.close_recv_stream_on_response_sent…   s*   øè ø€ Ø#×(Ñ(Ó*×*Ð*Ø×!Ñ!Õ#ð +ús   ƒ/—-˜/c              “  óx   •K  — 	 ‰j                  | «      ƒ d {  –—†  y 7 Œ# t        j                  $ r Y y w xY w­wr9   )ÚsendrI   ÚBrokenResourceError)rM   Ú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  — ‰4 ƒd {  –—†  	 ‰j                  ‰‰‰«      ƒ d {  –—†  d d d «      ƒd {  –—†  y 7 Œ17 Œ# t        $ r} | ŠY d } ~ Œ%d } ~ ww xY w7 Œ!# 1 ƒd {  –—†7  sw Y   y xY w­wr9   )r:   Ú	Exception)ÚexcÚapp_excrO   r   r   rX   rW   s    €€€€€€r   Úcoroz<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro�   sX   øè ø€ ÷ 'š;ð&Ø"Ÿh™h uÐ.CÀ]ÓS×SÐS÷ 'Ÿ;™;øàSùÜ$ò &Ø"%�ûð&úð 'øŸ;Ÿ;™;üsq   ƒA/Š<‹A/ŽA�A ¦>§A «A/¶A·A/¾A Á 	AÁ	AÁAÁAÁAÁA/ÁA,Á A#Á!A,Á(A/Úinfor!   úhttp.response.debugzNo response returned.úhttp.response.startc                ó
  •K  — ‰4 ƒd {  –—†  ‰2 3 d {  –—† } | d   dk(  sJ ‚| j                  dd«      }|r|­–— | j                  dd«      rŒ? d d d «      ƒd {  –—†  ‰�‰‚y 7 Œ[7 ŒR6 Œ7 Œ# 1 ƒd {  –—†7  sw Y   ŒxY w­w)Nr!   úhttp.response.bodyr%   r   r&   F)Úget)rM   r%   r\   rR   s     €€r   Úbody_streamzCBaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.body_stream¨   s†   øè ø€ ß&š;Ù)4÷ "˜gØ& v™Ð2FÒFÐFÐFØ&Ÿ{™{¨6°3Ó7˜ÙØ"&›JØ&Ÿ{™{¨;¸Õ>Ø!÷ 'Ÿ;ð Ð&Ø!�Mð 'ð 'øð"ø¨øð 'øŸ;Ÿ;™;üsj   ƒBŠA&‹BŽA.‘A*•A(–A*™6A.ÁA.ÁBÁA,Á
BÁ(A*Á*A.Á,BÁ.B Á4A7Á5B Á<BÚstatus)Ústatus_codeÚcontentr^   Úheadersr/   )r0   ÚNone)rM   r   r0   ri   )r0   z"typing.AsyncGenerator[bytes, None])	rI   Úcreate_memory_object_streamrK   r   rc   ÚEndOfStreamr(   Ú_StreamingResponseÚraw_headers)ÚrequestrS   r]   rM   r^   rd   Úresponser\   rO   rR   rX   rW   rN   r   r   rF   r.   s          @@@@@€€€€€r   Ú	call_nextz.BaseHTTPMiddleware.__call__.<locals>.call_nextl   s  ýè ø€ Ø(,ˆGô (-×'HÑ'HÓ'JÑ$ˆK˜öö&$õ÷&ò &ð ×!Ñ!Ð"DÔEØ×!Ñ! $Ô'ð<Ø +× 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ð5 6øð :ùÜ×$Ñ$ò <ØÐ&Ø!�MÜ"Ð#:Ó;Ð;ð<üsB   ˆADÁ$C' Á7C#Á83C' Â+C%Â,C' Â03DÃ#C' Ã%C' Ã'#D
Ä
D)rn   r   r0   r
   )	r:   r   r.   rI   ÚEventr   rJ   r<   Úset)
r   r   r   rU   rn   rp   ro   rN   rF   r.   s
   ``     @@@r   Ú__call__zBaseHTTPMiddleware.__call__c   så   üè ø€ Ø�‰=˜FÒ"Ø—(‘(˜5 '¨4Ó0×0Ð0Øä  ¨Ó0ˆØ!×1Ñ1ˆÜŸ™›ˆ÷K	ñ K	ôZ  Õ!Ü×.Ñ.×0Ô0°JØ!%×!3Ñ!3°G¸YÓ!G×G�Ù˜u o°tÓ<×<Ð<Ø×!Ñ!Ô#÷ 1×0÷ "Ð!ði 1øðj 1øØGøØ<øð 1ø×0×0Ñ0ú÷ "Ð!üs”   ‡D
¦C§AD
Á,C>ÂC!ÂC>Â	C)ÂC#Â C)Â1C%Â2C)ÃC>ÃC'ÃC>Ã
D
Ã!C>Ã#C)Ã%C)Ã'C>Ã)C;	Ã/C2Ã0C;	Ã7C>Ã>DÄD
c              ƒ  ó   K  — t        «       ‚­wr9   )ÚNotImplementedError)r   rn   rp   s      r   r;   zBaseHTTPMiddleware.dispatch¿   s   è ø€ Ü!Ó#Ð#ùs   ‚r9   )r:   r   r;   zDispatchFunction | Noner0   ri   ©r   r   r   r   rU   r   r0   ri   )rn   r   rp   ÚRequestResponseEndpointr0   r
   )r1   r2   r3   r   rs   r;   © r   r   r7   r7   ^   s   „ ôMóZ$ôx$r   r7   c                  ó<   — e Zd Z	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zy)rl   Nc                ól   — || _         || _        || _        || _        | j	                  |«       d | _        y r9   )r^   Úbody_iteratorrf   Ú
media_typeÚinit_headersÚ
background)r   rg   rf   rh   r|   r^   s         r   r   z_StreamingResponse.__init__Ä   s7   € ð ˆŒ	Ø$ˆÔØ&ˆÔØ$ˆŒØ×Ñ˜'Ô"Øˆ�r   c              ƒ  óŠ  K  — | j                   � |d| j                   dœ«      ƒ d {  –—†   |d| j                  | j                  dœ«      ƒ d {  –—†  | j                  2 3 d {  –—† } |d|ddœ«      ƒ d {  –—†  Œ7 ŒV7 Œ07 Œ7 Œ6  |ddd	dœ«      ƒ d {  –—†7   | j                  r| j	                  «       ƒ d {  –—†7   y y ­w)
Nr_   )r!   r^   r`   )r!   re   rh   rb   Tr$   r   F)r^   rf   rm   r{   r~   )r   r   r   rU   r-   s        r   rs   z_StreamingResponse.__call__Ó   sÏ   è ø€ Ø�9‰9Ð ÙÐ 5¸t¿y¹yÑIÓJ×JÐJÙà-Ø×*Ñ*Ø×+Ñ+ñó
÷ 	
ð 	
ð  ×-Ò-÷ 	Y�%ÙÐ 4¸eÐRVÑWÓX×XÑXð Køð	
øð	YøØXøð .ñ Ð0¸#ÈEÑRÓS×SÑSà�?Š?Ø—/‘/Ó#×#Ò#ð ùso   ‚%C§A>¨'CÁB ÁCÁ BÁ$BÁ%BÁ(CÁ8BÁ9CÂ CÂBÂCÂCÂBÂ$CÂ;B>Â<C)éÈ   NNN)rg   r	   rf   Úintrh   ztyping.Mapping[str, str] | Noner|   z
str | Noner^   z&typing.Mapping[str, typing.Any] | Noner0   ri   rv   )r1   r2   r3   r   rs   rx   r   r   rl   rl   Ã   sT   „ ð Ø37Ø!%Ø7;ðà#ðð ðð 1ð	ð
 ðð 5ðð 
óô$r   rl   )Ú
__future__r   ÚtypingrI   Ú	anyio.abcr   r   Ústarlette._utilsr   Ústarlette.requestsr   r   Ústarlette.responsesr	   r
   Ústarlette.typesr   r   r   r   r   ÚCallableÚ	Awaitablerw   ÚDispatchFunctionÚTypeVarr   r   r7   rl   rx   r   r   Ú<module>r�      sŸ   ðÝ "ã ã ß ;å /ß 8ß <ß BÕ Bà Ÿ/™/¨7¨)°V×5EÑ5EÀhÑ5OÐ*OÑPÐ Ø—?‘? GÐ-DÐ#EÀv×GWÑGWÐX`ÑGaÐ#aÑbÐ Ø€F‡N�N�3Ó€ôI3�Wô I3÷Xb$ñ b$ôJ!$˜õ !$r   