Ë
    bQêjä\  ã                  ó*  — d dl mZ d dlZ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
mZmZmZmZmZmZ d dlmZ d dlmZ d dlmZmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZ d dl m!Z! d dl"Z"d dl#Z"d dl$m%Z% d dl&m'Z' d dl(m)Z) d dl*m+Z+m,Z,m-Z- d dl.m/Z/ d dl0m1Z1m2Z2m3Z3m4Z4  G d„ d«      Z5 G d„ de5«      Z6 G d„ de5«      Z7 G d„ de5«      Z8 G d„ de5«      Z9e:e;z  e<z  Z=ee=   Z>e
e=   Z?e?e>z  Z@ G d„ de5«      ZA G d„ deB«      ZC G d „ d!eB«      ZD G d"„ d#e5«      ZEy)$é    )ÚannotationsN)ÚAsyncIterableÚAsyncIteratorÚ	AwaitableÚCallableÚIterableÚMappingÚSequence)Úasynccontextmanager)Údatetime)Úformat_datetimeÚ
formatdate)Úpartial)Ú
guess_type)Ú	token_hex)ÚAnyÚLiteral)Úquote)Úcreate_collapsing_task_group)ÚBackgroundTask)Úiterate_in_threadpool)ÚURLÚHeadersÚMutableHeaders)ÚClientDisconnect)ÚMessageÚReceiveÚScopeÚSendc                  óì   — e Zd ZdZdZ	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zddd„Zedd„«       Z		 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z
	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd	„Zdd
„Zy)ÚResponseNúutf-8c                ó€   — || _         |�|| _        || _        | j                  |«      | _        | j                  |«       y ©N)Ústatus_codeÚ
media_typeÚ
backgroundÚrenderÚbodyÚinit_headers©ÚselfÚcontentr%   Úheadersr&   r'   s         úX/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/starlette/responses.pyÚ__init__zResponse.__init__"   s>   € ð 'ˆÔØÐ!Ø(ˆDŒOØ$ˆŒØ—K‘K Ó(ˆŒ	Ø×Ñ˜'Õ"ó    c                óÜ   — |€yt        |t        «      r-|j                  r|j                  d«      S |j	                  «       S t        |t
        «      r|S |j                  | j                  «      S )Nr1   ÚB)Ú
isinstanceÚ
memoryviewÚc_contiguousÚcastÚtobytesÚbytesÚencodeÚcharset©r,   r-   s     r/   r(   zResponse.render1   sY   € Øˆ?ØÜ�gœzÔ*Ø(/×(<Ò(<�7—<‘< Ó$ÐSÀ'Ç/Á/ÓBSÐSÜ�gœuÔ%ØˆNØ�~‰~˜dŸl™lÓ+Ð+r1   c                ó¤  — |€g }d}d}nj|j                  «       D ��cg c]5  \  }}|j                  «       j                  d«      |j                  d«      f‘Œ7 }}}|D �cg c]  }|d   ‘Œ	 }}d|v}d|v}t        | dd «      }	|	�U|rS| j                  dk  sD| j                  dv s6t        t        |	«      «      }
|j                  d|
j                  d«      f«       | j                  }|�Y|rW|j                  d	«      r$d
|j                  «       vr|d| j                  z   z  }|j                  d|j                  d«      f«       || _        y c c}}w c c}w )NTúlatin-1r   s   content-lengths   content-typer)   éÈ   )éÌ   i0  ztext/zcharset=z
; charset=)ÚitemsÚlowerr:   Úgetattrr%   ÚstrÚlenÚappendr&   Ú
startswithr;   Úraw_headers)r,   r.   rH   Úpopulate_content_lengthÚpopulate_content_typeÚkÚvÚhÚkeysr)   Úcontent_lengthÚcontent_types               r/   r*   zResponse.init_headers:   sW  € Øˆ?Ø57ˆKØ&*Ð#Ø$(Ñ!àZa×ZgÑZgÓZi×jÑRVÐRSÐUV˜AŸG™G›I×,Ñ,¨YÓ7¸¿¹À)Ó9LÒMÐjˆKÑjØ"-Ö.˜Q�A�a“DÐ.ˆDÐ.Ø&7¸tÐ&CÐ#Ø$3¸4Ð$?Ð!ä�t˜V TÓ*ˆàÐÙ'Ø×%Ñ%¨Ò+¨t×/?Ñ/?À:Ñ/Mä ¤ T£›^ˆNØ×ÑÐ 1°>×3HÑ3HÈÓ3SÐTÔUà—‘ˆØÐ#Ñ(=Ø×&Ñ& wÔ/°JÀl×FXÑFXÓFZÑ4ZØ ¨t¯|©|Ñ ;Ñ;�Ø×Ñ °×1DÑ1DÀYÓ1OÐPÔQà&ˆÕùó) kùÚ.s   �:EÁEc                óh   — t        | d«      st        | j                  ¬«      | _        | j                  S )NÚ_headers©Úraw)Úhasattrr   rH   rR   )r,   s    r/   r.   zResponse.headersV   s(   € ä�t˜ZÔ(Ü*¨t×/?Ñ/?Ô@ˆDŒMØ�}‰}Ðr1   c                ó8  — t         j                  j                  «       }|||<   |�|||   d<   |�,t        |t        «      rt        |d¬«      ||   d<   n|||   d<   |�|||   d<   |�|||   d<   |rd||   d<   |rd||   d<   |	�!|	j                  «       d	v sJ d
«       ‚|	||   d<   |
r&t        j                  dk  rt        d«      ‚d||   d<   |j                  d¬«      j                  «       }| j                  j                  d|j                  d«      f«       y )Nzmax-ageT©ÚusegmtÚexpiresÚpathÚdomainÚsecureÚhttponly)ÚstrictÚlaxÚnonez1samesite must be either 'strict', 'lax' or 'none'Úsamesite)é   é   z@Partitioned cookies are only supported in Python 3.14 and above.ÚpartitionedÚ )Úheaders
   set-cookier>   )ÚhttpÚcookiesÚSimpleCookier4   r   r   rB   ÚsysÚversion_infoÚ
ValueErrorÚoutputÚstriprH   rF   r:   )r,   ÚkeyÚvalueÚmax_agerY   rZ   r[   r\   r]   ra   rd   ÚcookieÚ
cookie_vals                r/   Ú
set_cookiezResponse.set_cookie\   sY  € ô 04¯|©|×/HÑ/HÓ/JˆØˆˆs‰ØÐØ%,ˆF�3‰K˜	Ñ"ØÐÜ˜'¤8Ô,Ü)8¸ÈÔ)N��s‘˜IÒ&à)0��s‘˜IÑ&ØÐØ"&ˆF�3‰K˜ÑØÐØ$*ˆF�3‰K˜Ñ!ÙØ$(ˆF�3‰K˜Ñ!ÙØ&*ˆF�3‰K˜
Ñ#ØÐØ—>‘>Ó#ð (ñ ð Cð Có	Cð ð
 '/ˆF�3‰K˜
Ñ#ÙÜ×Ñ 'Ò)Ü Ð!cÓdÐdØ)-ˆF�3‰K˜Ñ&à—]‘]¨"�]Ó-×3Ñ3Ó5ˆ
Ø×Ñ×Ñ °
×0AÑ0AÀ)Ó0LÐ MÕNr1   c                ó8   — | j                  |dd||||||¬«	       y )Nr   )rq   rY   rZ   r[   r\   r]   ra   rd   )rt   )r,   ro   rZ   r[   r\   r]   ra   rd   s           r/   Údelete_cookiezResponse.delete_cookie‰   s0   € ð 	�‰ØØØØØØØØØ#ð 	õ 
	
r1   c                ó   ‡— dˆfd„}|S )Nc              “  óZ   •K  — | d   }|dv ri | ¥dd|z   i¥}  ‰| «      ƒ d {  –—†  y 7 Œ­w)NÚtype>   úhttp.response.bodyúhttp.response.startz
websocket.© )ÚmessageÚmessage_typeÚsends     €r/   Úwrappedz5Response._wrap_websocket_denial_send.<locals>.wrapped    s<   øè ø€ Ø" 6™?ˆLØÐLÑLØJ˜WÐJ f¨l¸\Ñ.IÑJ�Ù�w“-×Òús   ƒ +£)¤+)r}   r   ÚreturnÚNoner|   )r,   r   r€   s    ` r/   Ú_wrap_websocket_denial_sendz$Response._wrap_websocket_denial_sendŸ   s   ø€ õ	 ð ˆr1   c              ƒ  ó  K  — |d   dk(  r| j                  |«      } |d| j                  | j                  dœ«      ƒ d {  –—†   |d| j                  dœ«      ƒ d {  –—†  | j                  �| j	                  «       ƒ d {  –—†  y y 7 ŒG7 Œ,7 Œ
­w)Nry   Ú	websocketr{   ©ry   Ústatusr.   rz   )ry   r)   )rƒ   r%   rH   r)   r'   )r,   ÚscopeÚreceiver   s       r/   Ú__call__zResponse.__call__¨   sŒ   è ø€ Ø�‰=˜KÒ'Ø×3Ñ3°DÓ9ˆDÙÐ1¸T×=MÑ=MÐZ^×ZjÑZjÑkÓl×lÐlÙÐ0¸$¿)¹)ÑDÓE×EÐEà�?‰?Ð&Ø—/‘/Ó#×#Ñ#ð 'ð 	møØEøð $ús4   ‚=B¿BÁ BÁB	Á#BÂ BÂBÂ	BÂB)Nr?   NNN©r-   r   r%   Úintr.   úMapping[str, str] | Noner&   ú
str | Noner'   úBackgroundTask | Noner�   r‚   )r-   r   r�   zbytes | memoryviewr$   )r.   r�   r�   r‚   )r�   r   )	re   NNú/NFFr_   F)ro   rD   rp   rD   rq   z
int | NonerY   zdatetime | str | int | NonerZ   rŽ   r[   rŽ   r\   Úboolr]   r‘   ra   ú'Literal['lax', 'strict', 'none'] | Nonerd   r‘   r�   r‚   )r�   NFFr_   F)ro   rD   rZ   rD   r[   rŽ   r\   r‘   r]   r‘   ra   r’   rd   r‘   r�   r‚   )r   r   r�   r   ©rˆ   r   r‰   r   r   r   r�   r‚   )Ú__name__Ú
__module__Ú__qualname__r&   r;   r0   r(   r*   Úpropertyr.   rt   rv   rƒ   rŠ   r|   r1   r/   r!   r!      s†  „ Ø€JØ€Gð ØØ,0Ø!%Ø,0ð#àð#ð ð#ð *ð	#ð
 ð#ð *ð#ð 
ó#ó,ô'ð8 òó ðð Ø"Ø/3ØØ!ØØØ<AØ!ð+Oàð+Oð ð+Oð ð	+Oð
 -ð+Oð ð+Oð ð+Oð ð+Oð ð+Oð :ð+Oð ð+Oð 
ó+Oð` Ø!ØØØ<AØ!ð
àð
ð ð
ð ð	
ð
 ð
ð ð
ð :ð
ð ð
ð 
ó
ó,ô$r1   r!   c                  ó   — e Zd ZdZy)ÚHTMLResponsez	text/htmlN©r”   r•   r–   r&   r|   r1   r/   r™   r™   ²   s   „ Ø�Jr1   r™   c                  ó   — e Zd ZdZy)ÚPlainTextResponsez
text/plainNrš   r|   r1   r/   rœ   rœ   ¶   s   „ Ø�Jr1   rœ   c                  óL   ‡ — e Zd ZdZ	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dˆ fd„Zdd„Zˆ xZS )ÚJSONResponsezapplication/jsonc                ó,   •— t         ‰| �  |||||«       y r$   )Úsuperr0   )r,   r-   r%   r.   r&   r'   Ú	__class__s         €r/   r0   zJSONResponse.__init__½   s   ø€ ô 	‰Ñ˜ +¨w¸
ÀJÕOr1   c                óT   — t        j                  |ddd d¬«      j                  d«      S )NF)ú,ú:)Úensure_asciiÚ	allow_nanÚindentÚ
separatorsr"   )ÚjsonÚdumpsr:   r<   s     r/   r(   zJSONResponse.renderÇ   s-   € Ü�z‰zØØØØØ!ô
÷ ‰&�‹/ð	r1   ©r?   NNNr‹   )r-   r   r�   r9   )r”   r•   r–   r&   r0   r(   Ú__classcell__©r¡   s   @r/   rž   rž   º   sa   ø„ Ø#€Jð
 Ø,0Ø!%Ø,0ðPàðPð ðPð *ð	Pð
 ðPð *ðPð 
õP÷r1   rž   c                  ó:   ‡ — e Zd Z	 	 	 d	 	 	 	 	 	 	 	 	 dˆ fd„Zˆ xZS )ÚRedirectResponsec                ór   •— t         ‰| �  d|||¬«       t        t        |«      d¬«      | j                  d<   y )Nr1   )r-   r%   r.   r'   z:/%#?=@[]!$&'()*+,;)ÚsafeÚlocation)r    r0   r   rD   r.   )r,   Úurlr%   r.   r'   r¡   s        €r/   r0   zRedirectResponse.__init__Ò   s6   ø€ ô 	‰Ñ °+ÀwÐ[eÐÔfÜ#(¬¨S«Ð8MÔ#Nˆ�‰�ZÒ r1   )i3  NN)
r³   z	str | URLr%   rŒ   r.   r�   r'   r�   r�   r‚   )r”   r•   r–   r0   r¬   r­   s   @r/   r¯   r¯   Ñ   sO   ø„ ð Ø,0Ø,0ðOàðOð ðOð *ð	Oð
 *ðOð 
÷Oñ Or1   r¯   c                  óX   — e Zd ZU ded<   	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 d	d„Zd
d„Zdd„Zdd„Zy)ÚStreamingResponseÚAsyncContentStreamÚbody_iteratorNc                ó¼   — t        |t        «      r|| _        nt        |«      | _        || _        |€| j
                  n|| _        || _        | j                  |«       y r$   )r4   r   r·   r   r%   r&   r'   r*   r+   s         r/   r0   zStreamingResponse.__init__æ   sR   € ô �gœ}Ô-Ø!(ˆDÕä!6°wÓ!?ˆDÔØ&ˆÔØ-7Ð-?˜$Ÿ/š/ÀZˆŒØ$ˆŒØ×Ñ˜'Õ"r1   c              ƒ  óB   K  — 	  |«       ƒ d {  –—† }|d   dk(  ry Œ7 Œ­w)Nry   úhttp.disconnectr|   )r,   r‰   r}   s      r/   Úlisten_for_disconnectz'StreamingResponse.listen_for_disconnect÷   s*   è ø€ ØÙ#›I—oˆGØ�v‰Ð"3Ò3Øð Ø%ús   ‚Ž�c              ƒ  óL  K  —  |d| j                   | j                  dœ«      ƒ d {  –—†  | j                  2 3 d {  –—† }t        |t        t
        z  «      s|j                  | j                  «      } |d|ddœ«      ƒ d {  –—†  ŒP7 Œ`7 ŒM7 Œ	6  |ddddœ«      ƒ d {  –—†7   y ­w)Nr{   r†   rz   T©ry   r)   Ú	more_bodyr1   F)r%   rH   r·   r4   r9   r5   r:   r;   )r,   r   Úchunks      r/   Ústream_responsez!StreamingResponse.stream_responseý   sª   è ø€ ÙÐ1¸T×=MÑ=MÐZ^×ZjÑZjÑkÓl×lÐlØ×-Ñ-÷ 	Yð 	Y�%Ü˜e¤U¬ZÑ%7Ô8ØŸ™ T§\¡\Ó2�ÙÐ 4¸eÐRVÑWÓX×XÑXð	 	møð	Yøð Yøð .ñ
 Ð0¸#ÈEÑRÓS×SÒSùsN   ‚$B$¦B§B$·B»B	¼B¿AB$ÂBÂB$Â	BÂB$ÂB$ÂB ÂB$c           	   ƒ  ó4  ‡K  — |d   dk(  rO| j                  |«      }| j                  |«      ƒ d {  –—†  | j                  �| j                  «       ƒ d {  –—†  y t        t	        t
        |j                  di «      j                  dd«      j                  d«      «      «      }|dk\  r	 | j                  |«      ƒ d {  –—†  nst        «       4 ƒd {  –—† Šd	ˆfd„}‰j                  |t        | j                  |«      «        |t        | j                  |«      «      ƒ d {  –—†  d d d «      ƒd {  –—†  | j                  �| j                  «       ƒ d {  –—†  y y 7 �Œ+7 �Œ
7 Œ¤# t        $ r t        «       ‚w xY w7 Œ©7 Œ[7 ŒM# 1 ƒd {  –—†7  sw Y   Œ]xY w7 Œ@­w)
Nry   r…   ÚasgiÚspec_versionú2.0ú.©é   é   c              “  ód   •K  —  | «       ƒ d {  –—†  ‰j                   j                  «        y 7 Œ­wr$   ©Úcancel_scopeÚcancel)ÚfuncÚ
task_groups    €r/   Úwrapz(StreamingResponse.__call__.<locals>.wrap  s'   øè ø€ Ù›&—L�LØ×+Ñ+×2Ñ2Õ4ð !úó   ƒ0Ž.� 0)rÍ   zCallable[[], Awaitable[None]]r�   r‚   )rƒ   rÀ   r'   ÚtupleÚmaprŒ   ÚgetÚsplitÚOSErrorr   r   Ú
start_soonr   r»   )r,   rˆ   r‰   r   rÃ   rÏ   rÎ   s         @r/   rŠ   zStreamingResponse.__call__  s�  øè ø€ Ø�‰=˜KÒ'Ø×3Ñ3°DÓ9ˆDØ×&Ñ& tÓ,×,Ð,Ø�‰Ð*Ø—o‘oÓ'×'Ð'ØäœS¤ e§i¡i°¸Ó&;×&?Ñ&?ÀÐPUÓ&V×&\Ñ&\Ð]`Ó&aÓbÓcˆà˜6Ò!ð)Ø×*Ñ*¨4Ó0×0Ñ0ô 4Ó5÷ Ið I¸õ5ð ×%Ñ% d¬G°D×4HÑ4HÈ$Ó,OÔPÙœ7 4×#=Ñ#=¸wÓGÓH×HÐH÷I÷ Ið �?‰?Ð&Ø—/‘/Ó#×#Ñ#ð 'ð- -ùà'ùð 1ùÜò )Ü&Ó(Ð(ð)úðIøð IøðIø÷ I÷ Iñ Iúð $ús­   ƒ.F±E²#FÁEÁAFÂ)E$ Â=E"Â>E$ ÃFÃE;ÃFÃAFÄ!E=Ä"FÄ&FÄ1E?Ä2#FÅFÅFÅFÅ"E$ Å$E8Å8FÅ=FÅ?FÆFÆF
ÆFÆFr«   )r-   ÚContentStreamr%   rŒ   r.   r�   r&   rŽ   r'   r�   r�   r‚   )r‰   r   r�   r‚   )r   r   r�   r‚   r“   )r”   r•   r–   Ú__annotations__r0   r»   rÀ   rŠ   r|   r1   r/   rµ   rµ   ã   se   … Ø%Ó%ð
 Ø,0Ø!%Ø,0ð#àð#ð ð#ð *ð	#ð
 ð#ð *ð#ð 
ó#ó"óTô$r1   rµ   c                  ó   — e Zd Zddd„Zy)ÚMalformedRangeHeaderc                ó   — || _         y r$   )r-   r<   s     r/   r0   zMalformedRangeHeader.__init__$  s	   € Øˆ�r1   N)zMalformed range header.)r-   rD   r�   r‚   ©r”   r•   r–   r0   r|   r1   r/   rÚ   rÚ   #  s   „ õr1   rÚ   c                  ó   — e Zd Zdd„Zy)ÚRangeNotSatisfiablec                ó   — || _         y r$   )Úmax_size)r,   rà   s     r/   r0   zRangeNotSatisfiable.__init__)  s	   € Ø ˆ�r1   N)rà   rŒ   r�   r‚   rÜ   r|   r1   r/   rÞ   rÞ   (  s   „ ô!r1   rÞ   c                  óü   — e Zd ZdZdZ	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Zedd„«       Z	dd„Z
	 	 	 	 	 	 	 	 	 	 	 	 dd	„Z	 	 	 	 	 	 	 	 	 	 dd
„Zdd„Zedd„«       Zedd„«       Z	 	 	 	 	 	 	 	 	 	 dd„Zy)ÚFileResponsei   éd   Nc	                óÖ  — || _         || _        || _        |€t        |xs |«      d   xs d}|| _        || _        | j                  |«       | j                  j                  dd«       | j                  �Zt        | j                  «      }	|	| j                  k7  r|› d|	› �}
n|› d| j                  › d�}
| j                  j                  d|
«       || _
        |�| j                  |«       y y )	Nr   zapplication/octet-streamzaccept-rangesr9   z; filename*=utf-8''z; filename="ú"zcontent-disposition)rZ   r%   Úfilenamer   r&   r'   r*   r.   Ú
setdefaultr   Ústat_resultÚset_stat_headers)r,   rZ   r%   r.   r&   r'   ræ   rè   Úcontent_disposition_typeÚcontent_disposition_filenameÚcontent_dispositions              r/   r0   zFileResponse.__init__1  sô   € ð ˆŒ	Ø&ˆÔØ ˆŒØÐÜ# HÒ$4°Ó5°aÑ8ÒVÐ<VˆJØ$ˆŒØ$ˆŒØ×Ñ˜'Ô"Ø�‰×Ñ °Ô9Ø�=‰=Ð$Ü+0°·±Ó+?Ð(Ø+¨t¯}©}Ò<Ø)AÐ(BÐBUÐVrÐUsÐ&tÑ#à)AÐ(BÀ,ÈtÏ}É}ÈoÐ]^Ð&_Ð#Ø�L‰L×#Ñ#Ð$9Ð;NÔOØ&ˆÔØÐ"Ø×!Ñ! +Õ.ð #r1   c                óÎ  — t        |j                  «      }t        |j                  d¬«      }t        |j                  «      dz   t        |j                  «      z   }dt	        j
                  |j                  «       d¬«      j                  «       › d�}| j                  j                  d|«       | j                  j                  d|«       | j                  j                  d	|«       y )
NTrW   ú-rå   F)Úusedforsecurityúcontent-lengthúlast-modifiedÚetag)
rD   Úst_sizer   Úst_mtimeÚhashlibÚmd5r:   Ú	hexdigestr.   rç   )r,   rè   rO   Úlast_modifiedÚ	etag_baserò   s         r/   ré   zFileResponse.set_stat_headersP  s³   € Ü˜[×0Ñ0Ó1ˆÜ" ;×#7Ñ#7ÀÔEˆÜ˜×,Ñ,Ó-°Ñ3´c¸+×:MÑ:MÓ6NÑNˆ	Ø”7—;‘;˜y×/Ñ/Ó1À5ÔI×SÑSÓUÐVÐVWÐXˆà�‰×ÑÐ 0°.ÔAØ�‰×Ñ °Ô?Ø�‰×Ñ ¨Õ-r1   c           	   ƒ  óÖ  ‡‡K  — |d   }|dk(  xr |d   j                  «       dk(  }|dk(  xr d|j                  di «      v }|dk(  r| j                  |«      }| j                  €Œ	 t        j
                  j                  t        j                  | j                  «      ƒ d {  –—† }| j                  |«       |j                  }t        j                  |«      s%t        d| j                  › d	�«      ‚| j                  }t        |¬«      }	|	j                  d«      }
|	j                  d«      }| j                   dk7  s/|
�-|dk(  r|d   j                  «       dvs|�*| j#                  |«      st%        | j&                  |||«      Šn¦	 | j)                  |
|j*                  «      }t7        |«      dk(  rt%        | j&                  |||«      Šnbt7        |«      dk(  r/|d   \  }}t%        | j8                  ||||j*                  |«      Šd}n%t%        | j:                  |||j*                  |«      Šd}t=        t?        t@        |j                  di «      j                  dd«      jC                  d«      «      «      }|dk7  s	|s|s|dk\  r ‰«       ƒ d {  –—†  nmtE        «       4 ƒd {  –—† Šd ˆˆfd„}‰jG                  |«       	  |«       ƒ d {  –—† d   dk(  r‰jH                  jK                  «        nŒ1d d d «      ƒd {  –—†  | jL                  �| jM                  «       ƒ d {  –—†  y y 7 �Œ€# t        $ r t        d| j                  › d
�«      ‚w xY w# t,        $ r2} t/        |j0                  d¬«      |||«      ƒ d {  –—†7  cY d }~S d }~wt2        $ r9}t/        ddd|j4                  › �i¬«      } ||||«      ƒ d {  –—†7  cY d }~S d }~ww xY w7 �Œ@7 �Œ/7 �Œ
7 ŒÚ# 1 ƒd {  –—†7  sw Y   ŒêxY w7 ŒÍ­w)!Nry   rg   ÚmethodÚHEADúhttp.response.pathsendÚ
extensionsr…   úFile at path z is not a file.z does not exist.)rˆ   Úrangezif-ranger?   )ÚGETrü   i�  )r%   i   zContent-Rangezbytes */)r%   r.   r   é   FrÂ   rÃ   rÄ   rÅ   rÆ   c               “  ód   •K  —  ‰ «       ƒ d {  –—†  ‰j                   j                  «        y 7 Œ­wr$   rÊ   )Ú	send_filerÎ   s   €€r/   Ústream_filez*FileResponse.__call__.<locals>.stream_file’  s)   øè ø€ Ù#›+×%Ð%Ø×+Ñ+×2Ñ2Õ4ð &úrÐ   rº   )r�   r‚   )'ÚupperrÓ   rƒ   rè   ÚanyioÚ	to_threadÚrun_syncÚosÚstatrZ   ré   Úst_modeÚS_ISREGÚRuntimeErrorÚFileNotFoundErrorr   r%   Ú_should_use_ranger   Ú_handle_simpleÚ_parse_range_headerró   rÚ   rœ   r-   rÞ   rà   rE   Ú_handle_single_rangeÚ_handle_multiple_rangesrÑ   rÒ   rŒ   rÔ   r   rÖ   rË   rÌ   r'   )r,   rˆ   r‰   r   Ú
scope_typeÚsend_header_onlyÚsend_pathsendrè   Úmoder.   Ú
http_rangeÚhttp_if_rangeÚrangesÚexcÚresponseÚstartÚendrÃ   r  r  rÎ   s                      @@r/   rŠ   zFileResponse.__call__Z  s¾  ùè ø€ Ø˜6‘]ˆ
Ø%¨Ñ/ÒU°E¸(±O×4IÑ4IÓ4KÈvÑ4UÐØ" fÑ,ÒhÐ1IÈUÏYÉYÐWcÐegÓMhÐ1hˆØ˜Ò$Ø×3Ñ3°DÓ9ˆDà×ÑÐ#ðSÜ$)§O¡O×$<Ñ$<¼R¿W¹WÀdÇiÁiÓ$P×P�Ø×%Ñ% kÔ2ð #×*Ñ*�Ü—|‘| DÔ)Ü&¨°t·y±y°kÀÐ'QÓRÐRà×*Ñ*ˆKä Ô&ˆØ—[‘[ Ó)ˆ
ØŸ™ JÓ/ˆð ×Ñ Ò#ØÐ!Ø˜fÒ$¨¨x©×)>Ñ)>Ó)@ÈÑ)WØÐ)°$×2HÑ2HÈÔ2Wä × 3Ñ 3°TÐ;KÈ]Ó[‰Ið<Ø×1Ñ1°*¸k×>QÑ>QÓR�ô �6‹{˜aÒÜ# D×$7Ñ$7¸Ð?OÐQ^Ó_‘	Ü�V“ Ò!Ø# A™Y‘
��sÜ# D×$=Ñ$=¸tÀUÈCÐQ\×QdÑQdÐfvÓw�	Ø %‘ä# D×$@Ñ$@À$ÈÐP[×PcÑPcÐeuÓv�	Ø %�äœS¤ e§i¡i°¸Ó&;×&?Ñ&?ÀÐPUÓ&V×&\Ñ&\Ð]`Ó&aÓbÓcˆØ˜ÒÑ#3±}ÈÐX^ÒH^Ù“+×Ñä3Ó5÷ 
ð 
¸ö5ð ×%Ñ% kÔ2ØÙ%›iŸ¨Ñ0Ð4EÒEØ"×/Ñ/×6Ñ6Ô8Øð ÷
÷ 
ð �?‰?Ð&Ø—/‘/Ó#×#Ñ#ð 'ðs Qúä$ò PÜ" ]°4·9±9°+Ð=MÐ#NÓOÐOðPûô. (ò cØLÔ.¨s¯{©{ÈÔLÈUÐT[Ð]aÓb×bÐbÕbûÜ&ò <Ü,¸ÀÐZbÐcf×coÑcoÐbpÐXqÐFrÔs�Ù% e¨W°dÓ;×;Ð;Õ;ûð<úð  ùð
ùð (ùð
ø÷ 
÷ 
ñ 
úð $ús  „A O)Á%;L# Â L Â!L# Â6CO)ÆM	 ÆC)O)ÊOÊO)ÊO
ÊO)Ê$OËOË&OË*O)Ë5OË6#O)ÌO'ÌO)Ì L# Ì##MÍO)Í		OÍ"M?Í4M7Í5M?Í9OÍ:O)Í?OÎ)N?Î4N7Î5N?Î9OÎ:O)Î?OÏO)Ï
O)ÏOÏO)ÏO$ÏOÏO$Ï O)c               óŠ  K  — t        j                  | j                  d¬«      ƒ d {  –—† }	 |­–— t        j                  d¬«      5  |j	                  «       ƒ d {  –—†  d d d «       y 7 ŒB7 Œ# 1 sw Y   y xY w# t        j                  d¬«      5  |j	                  «       ƒ d {  –—†7   d d d «       w # 1 sw Y   w xY wxY w­w)NÚrb)r  T)Úshield)r  Ú	open_filerZ   ÚCancelScopeÚaclose)r,   Úfiles     r/   Ú
_open_filezFileResponse._open_file   sœ   è ø€ ä—_‘_ T§Y¡Y°TÔ:×:ˆð	$Ø‹Jô ×"Ñ"¨$Ô/ñ $Ø—k‘k“m×#Ð#÷$ð $ð ;øð $ø÷$ð $û”×"Ñ"¨$Ô/ñ $Ø—k‘k“m×#Ñ#÷$÷ $ñ $ÿss   ‚%C§A*¨C­A: ²CÁA.ÁA,ÁA.Á!
CÁ,A.Á.A7Á3CÁ:C ÂB4Â%B(
Â&B4Â+	C Â4B=Â9C Ã Cc              ƒ  ó   K  —  |d| j                   | j                  dœ«      ƒ d {  –—†  |r |ddddœ«      ƒ d {  –—†  y |r' |dt        | j                  «      dœ«      ƒ d {  –—†  y | j	                  «       4 ƒd {  –—† }d	}|rR|j                  | j                  «      ƒ d {  –—† }t        |«      | j                  k(  } |d||dœ«      ƒ d {  –—†  |rŒRd d d «      ƒd {  –—†  y 7 ŒÄ7 Œ°7 Œ‰7 Œq7 ŒL7 Œ"7 Œ# 1 ƒd {  –—†7  sw Y   y xY w­w)
Nr{   r†   rz   r1   Fr½   rý   )ry   rZ   T)r%   rH   rD   rZ   r'  ÚreadÚ
chunk_sizerE   )r,   r   r  r  r&  r¾   r¿   s          r/   r  zFileResponse._handle_simpleª  s  è ø€ ÙÐ1¸T×=MÑ=MÐZ^×ZjÑZjÑkÓl×lÐlÙÙÐ 4¸cÐPUÑVÓW×WÑWÙÙÐ 8Ä#ÀdÇiÁiÃ.ÑQÓR×RÑRà—‘Ó(÷ fð f¨DØ �	ÙØ"&§)¡)¨D¯O©OÓ"<×<�EÜ # E£
¨d¯o©oÑ =�IÙÐ(<ÀeÐZcÑdÓe×eÐeò  ÷f÷ fð fð 	møàWøàRøðføð =øàeøðfø÷ f÷ fñ füs�   ‚$D¦C+§D¼C-½(DÁ%C/Á&DÁ?C1Â DÂ#C9Â&C3Â'+C9ÃC5ÃC9ÃDÃ%C7Ã&DÃ-DÃ/DÃ1DÃ3C9Ã5C9Ã7DÃ9DÃ?DÄ DÄDc              ƒ  ó²  K  — t        t        | j                  «      ¬«      }d|› d|dz
  › d|› �|d<   t        ||z
  «      |d<    |dd	|j                  d
œ«      ƒ d {  –—†  |r |ddddœ«      ƒ d {  –—†  y | j                  «       4 ƒd {  –—† }|j                  |«      ƒ d {  –—†  d}|rt|j                  t        | j                  ||z
  «      «      ƒ d {  –—† }	|t        |	«      z  }t        |	«      | j                  k(  xr ||k  } |d|	|dœ«      ƒ d {  –—†  |rŒtd d d «      ƒd {  –—†  y 7 ŒÖ7 ŒÂ7 Œª7 Œ“7 Œa7 Œ"7 Œ# 1 ƒd {  –—†7  sw Y   y xY w­w)NrS   zbytes rî   r  r�   zcontent-rangerð   r{   éÎ   r†   rz   r1   Fr½   T)r   ÚlistrH   rD   rT   r'  Úseekr)  Úminr*  rE   )
r,   r   r  r  Ú	file_sizer  r.   r&  r¾   r¿   s
             r/   r  z!FileResponse._handle_single_range¸  sl  è ø€ ô !¤T¨$×*:Ñ*:Ó%;Ô<ˆØ%+¨E¨7°!°C¸!±G°9¸A¸i¸[Ð#Iˆ�Ñ Ü$'¨¨e©Ó$4ˆÐ Ñ!ÙÐ1¸SÈWÏ[É[ÑYÓZ×ZÐZÙÙÐ 4¸cÐPUÑVÓW×WÑWà—‘Ó(÷ fð f¨DØ—i‘i Ó&×&Ð&Ø �	ÙØ"&§)¡)¬C°·±ÀÀuÁÓ,MÓ"N×N�EØœS ›ZÑ'�EÜ # E£
¨d¯o©oÑ =Ò MÀ%È#Á+�IÙÐ(<ÀeÐZcÑdÓe×eÐeò	  ÷f÷ fð fð	 	[øàWøðføØ&øð Oøð føðfø÷ f÷ fñ füs£   ‚AEÁD4ÁEÁ3D6Á4EÂD8ÂEÂEÂ&D:Â'3EÃD<ÃA EÄD>ÄEÄ#EÄ.E Ä/EÄ6EÄ8EÄ:EÄ<EÄ>EÅ EÅEÅEÅ	EÅEc           	   ƒ  óÊ  K  — t        d«      }| j                  |||| j                  d   «      \  }}t        t	        | j
                  «      ¬«      }d|› �|d<   t        |«      |d<    |dd|j                  dœ«      ƒ d {  –—†  |r |d	d
ddœ«      ƒ d {  –—†  y | j                  «       4 ƒd {  –—† }	|D ]Å  \  }
} |d	 ||
|«      ddœ«      ƒ d {  –—†  |	j                  |
«      ƒ d {  –—†  |
|k  rs|	j                  t        | j                  ||
z
  «      «      ƒ d {  –—† }|st        d| j                  › d�«      ‚|
t        |«      z  }
 |d	|ddœ«      ƒ d {  –—†  |
|k  rŒs |d	dddœ«      ƒ d {  –—†  ŒÇ  |d	d|› d�j!                  d«      ddœ«      ƒ d {  –—†  d d d «      ƒd {  –—†  y 7 �Œ77 �Œ$7 �Œ7 Œì7 ŒÕ7 Œ¢7 Œg7 ŒO7 Œ(7 Œ# 1 ƒd {  –—†7  sw Y   y xY w­w)Né   zcontent-typerS   zmultipart/byteranges; boundary=rð   r{   r,  r†   rz   r1   Fr½   Trÿ   z is shorter than expected.s   
ú--r>   )r   Úgenerate_multipartr.   r   r-  rH   rD   rT   r'  r.  r)  r/  r*  r  rZ   rE   r:   )r,   r   r  r0  r  ÚboundaryrO   Úheader_generatorr.   r&  r  r  r¿   s                r/   r  z$FileResponse._handle_multiple_rangesË  s  è ø€ ô ˜R“=ˆØ+/×+BÑ+BØ�H˜i¨¯©°nÑ)Eó,
Ñ(ˆÐ(ô !¤T¨$×*:Ñ*:Ó%;Ô<ˆØ$CÀHÀ:Ð"Nˆ�ÑÜ$'¨Ó$7ˆÐ Ñ!ÙÐ1¸SÈWÏ[É[ÑYÓZ×ZÐZÙÙÐ 4¸cÐPUÑVÓW×WÑWà—‘Ó(÷ ð ¨DØ"(ò 	c‘J�E˜3ÙÐ(<ÑFVÐW\Ð^aÓFbÐquÑvÓw×wÐwØŸ)™) EÓ*×*Ð*Ø #š+Ø&*§i¡i´°D·O±OÀSÈ5Á[Ó0QÓ&R× R˜Ù$Ü".°¸t¿y¹y¸kÐIcÐ/dÓ"eÐeØ¤ U£Ñ+˜Ù"Ð,@È%Ð^bÑ#cÓd×dÐdð   #›+ñ Ð(<ÀgÐ\`ÑaÓb×bÑbð	cñ à 4Ø"$ X J¨bÐ 1× 8Ñ 8¸Ó CØ%*ñó÷ ð ÷÷ ð ð	 	[ùàWùðùàwøØ*øà Røð eøØbøðøðø÷ ÷ ñ üsÞ   ‚A>G#Â F7ÂG#ÂF:ÂG#Â0F=Â1G#Â4GÃG ÃGÃ,GÃ-4GÄ!GÄ"<GÅGÅ	GÅ)GÅ8GÅ9(GÆ!G
Æ"GÆ&G#Æ1GÆ2G#Æ:G#Æ=G#Ç GÇGÇGÇGÇGÇ
GÇG#ÇG ÇGÇG ÇG#c                ór   — |j                  d«      ry|| j                  d   k(  xs || j                  d   k(  S )NzW/Frñ   rò   )rG   r.   )r,   r  s     r/   r  zFileResponse._should_use_rangeñ  s>   € Ø×#Ñ# DÔ)ØØ §¡¨_Ñ =Ñ=ÒfÀÐRV×R^ÑR^Ð_eÑRfÑAfÐfr1   c                ó   ‡— g }	 |j                  dd«      \  }}|j                  «       j	                  «       }|dk7  rt        d«      ‚|j                  d«      dz   | j                  kD  rg S | j                  |‰«      }t        |«      dk(  rt        d«      ‚t        ˆfd„|D «       «      rt        ‰«      ‚t        d	„ |D «       «      rt        d
«      ‚t        |«      dk(  r|S |j                  «        |d   g}|dd  D ]7  \  }}|d   \  }	}
||
k  r|	t        |
|«      f|d<   Œ%|j                  ||f«       Œ9 |S # t        $ r t        «       ‚w xY w)Nú=r  r9   zOnly support bytes ranger£   r   z%Range header: range must be requestedc              3  óF   •K  — | ]  \  }}d |cxk  xr ‰k  nc  –— Œ y­w)r   Nr|   )Ú.0r  Ú_r0  s      €r/   ú	<genexpr>z3FileResponse._parse_range_header.<locals>.<genexpr>  s"   øè ø€ ÒC±°°q�A˜Ö* Ô*Ô+ÑCùs   ƒ!c              3  ó,   K  — | ]  \  }}||k\  –— Œ y ­wr$   r|   )r;  r  r  s      r/   r=  z3FileResponse._parse_range_header.<locals>.<genexpr>  s   è ø€ Ò5¡
  sˆu˜�|Ñ5ùs   ‚z)Range header: start must be less than endéÿÿÿÿ)rÔ   rl   rÚ   rn   rB   ÚcountÚ
max_rangesÚ_parse_rangesrE   ÚanyrÞ   ÚsortÚmaxrF   )Úclsr  r0  r  ÚunitsÚrange_Úresultr  r  Ú
last_startÚlast_ends     `        r/   r  z FileResponse._parse_range_headerö  sf  ø€ à(*ˆð	)Ø&×,Ñ,¨S°!Ó4‰MˆE�6ð —‘“×#Ñ#Ó%ˆà�GÒÜ&Ð'AÓBÐBà�<‰<˜Ó˜qÑ  3§>¡>Ò1ØˆIà×"Ñ" 6¨9Ó5ˆäˆv‹;˜!ÒÜ&Ð'NÓOÐOäÓC¸FÔCÔCÜ% iÓ0Ð0äÑ5¨fÔ5Ô5Ü&Ð'RÓSÐSäˆv‹;˜!ÒØˆMð 	�‰ŒØ)/°©¨ˆØ   ˜*ò 	,‰JˆE�3Ø#)¨"¡:Ñ ˆJ˜Ø˜Ò Ø(¬#¨h¸Ó*<Ð=��r’
à—‘˜u c˜lÕ+ð	,ð ˆøôG ò 	)Ü&Ó(Ð(ð	)ús   …D9 Ä9Ec                ó®  — g }|j                  d«      D ]¯  }|j                  «       }|r|dk(  rŒd|vrŒ |j                  dd«      \  }}|j                  «       }|j                  «       }	 |rt        |«      nt        |t        |«      z
  d«      }|r|rt        |«      |k  rt        |«      dz   n|}|j	                  ||f«       Œ± |S # t
        $ r Y Œ¿w xY w)Nr£   rî   r  r   )rÔ   rn   rŒ   rE  rF   rl   )	rF  rH  r0  r  ÚpartÚ	start_strÚend_strr  r  s	            r/   rB  zFileResponse._parse_ranges   sß   € à(*ˆà—L‘L Ó%ò 	ˆDØ—:‘:“<ˆDñ ˜4 3š;Øð ˜$‰Øà!%§¡¨C°Ó!3ÑˆI�wØ!Ÿ™Ó)ˆIØ—m‘m“oˆGðÙ*3œ˜Iœ¼¸YÌÈWËÑ=UÐWXÓ9Y�Ù*3¹ÄCÈÃLÐS\ÒD\”c˜'“l QÒ&Ðbk�Ø—‘˜u c˜lÕ+ð%	ð. ˆøô	 ò áðús   Á*ACÃ	CÃCc                ó²   ‡‡‡‡— t        ‰«      }d|z   t        ‰«      z   t        t        ‰«      «      z   Št        ˆfd„|D «       «      d|z   z   }|ˆˆˆfd„fS )aÏ  
        Multipart response headers generator.

        ```
        --{boundary}\r\n
        Content-Type: {content_type}\r\n
        Content-Range: bytes {start}-{end-1}/{max_size}\r\n
        \r\n
        ..........content...........\r\n
        --{boundary}\r\n
        Content-Type: {content_type}\r\n
        Content-Range: bytes {start}-{end-1}/{max_size}\r\n
        \r\n
        ..........content...........\r\n
        --{boundary}--
        ```
        é1   c              3  óŽ   •K  — | ]<  \  }}t        t        |«      «      t        t        |d z
  «      «      z   ‰z   ||z
  z   –— Œ> y­w)r  N)rE   rD   )r;  r  r  Ústatic_header_part_lens      €r/   r=  z2FileResponse.generate_multipart.<locals>.<genexpr>W  sK   øè ø€ ò 
ñ ��sô ”�U“‹_œs¤3 s¨Q¡w£<Ó0Ñ0Ð3IÑIØ�U‰{õñ
ùs   ƒAArÈ   c                óL   •— d‰› d‰› d| › d|dz
  › d‰› d�j                  d«      S )	Nr3  z
Content-Type: z
Content-Range: bytes rî   r  r�   z

r>   )r:   )r  r  r5  rP   rà   s     €€€r/   ú<lambda>z1FileResponse.generate_multipart.<locals>.<lambda>`  sL   ø€ ðØ€*ð Øˆnð Ø�W˜A˜c A™g˜Y a¨ zð 2ð÷ ‰f�YÓð r1   )rE   rD   Úsum)r,   r  r5  rà   rP   Úboundary_lenrO   rS  s     ```  @r/   r4  zFileResponse.generate_multipart=  sn   û€ ô0 ˜8“}ˆØ!# lÑ!2´S¸Ó5FÑ!FÌÌSÐQYË]ÓI[Ñ![ÐÜó 
ð %ô
ó 
ð
 �Ññ
ˆð õ ð

ð 
	
r1   )r?   NNNNNÚ
attachment)rZ   zstr | os.PathLike[str]r%   rŒ   r.   r�   r&   rŽ   r'   r�   ræ   rŽ   rè   zos.stat_result | Nonerê   rD   r�   r‚   )rè   zos.stat_resultr�   r‚   r“   )r�   z%AsyncIterator[anyio.AsyncFile[bytes]])r   r   r  r‘   r  r‘   r�   r‚   )r   r   r  rŒ   r  rŒ   r0  rŒ   r  r‘   r�   r‚   )
r   r   r  úlist[tuple[int, int]]r0  rŒ   r  r‘   r�   r‚   )r  rD   r�   r‘   )r  rD   r0  rŒ   r�   rY  )rH  rD   r0  rŒ   r�   rY  )
r  zSequence[tuple[int, int]]r5  rD   rà   rŒ   rP   rD   r�   z'tuple[int, Callable[[int, int], bytes]])r”   r•   r–   r*  rA  r0   ré   rŠ   r   r'  r  r  r  r  Úclassmethodr  rB  r4  r|   r1   r/   râ   râ   -  s|  „ Ø€JØ€Jð
 Ø,0Ø!%Ø,0Ø#Ø-1Ø(4ð/à$ð/ð ð/ð *ð	/ð
 ð/ð *ð/ð ð/ð +ð/ð #&ð/ð 
ó/ó>.óC$ðL ò$ó ð$ófðfØðfØ!$ðfØ+.ðfØ;>ðfØRVðfà	ófð&$àð$ð &ð$ð ð	$ð
 ð$ð 
ó$óLgð
 ò'ó ð'ðR òó ðð8+
à)ð+
ð ð+
ð ð	+
ð
 ð+
ð 
1ô+
r1   râ   )FÚ
__future__r   rõ   Úhttp.cookiesrg   r©   r
  r  rj   Úcollections.abcr   r   r   r   r   r	   r
   Ú
contextlibr   r   Úemail.utilsr   r   Ú	functoolsr   Ú	mimetypesr   Úsecretsr   Útypingr   r   Úurllib.parser   r  Úanyio.to_threadÚstarlette._utilsr   Ústarlette.backgroundr   Ústarlette.concurrencyr   Ústarlette.datastructuresr   r   r   Ústarlette.requestsr   Ústarlette.typesr   r   r   r   r!   r™   rœ   rž   r¯   rD   r9   r5   ÚContentÚSyncContentStreamr¶   r×   rµ   Ú	ExceptionrÚ   rÞ   râ   r|   r1   r/   ú<module>ro     sü   ðÝ "ã Û Û Û 	Û Û 
ß j× jÑ jÝ *Ý ß 3Ý Ý  Ý ß Ý ã Û å 9Ý /Ý 7ß AÑ AÝ /ß 9Ó 9÷Q$ñ Q$ôh�8ô ô˜ô ô�8ô ô.	O�xô 	Oð �‰+˜
Ñ
"€Ø˜WÑ%Ð Ø" 7Ñ+Ð Ø"Ð%6Ñ6€ô=$˜ô =$ô@˜9ô ô
!˜)ô !ô
{
�8õ {
r1   