+
    Di%!                        ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RI	H
t
 ^ RIt^ RIt^ RIHt ^ RIHtHt ^ RIHt ^ RIHtHtHt ^ R	IHtHtHt ]
]R
3,          t ! R R]4      t ! R R4      tR# )    )annotationsN)	parsedate)Union)get_route_path)URLHeaders)HTTPException)FileResponseRedirectResponseResponse)ReceiveScopeSendzos.PathLike[str]c                  2   a  ] tR t^tRtR V 3R lltRtV ;t# )NotModifiedResponsec                   V ^8  d   QhRR/# )   headersr    )formats   "s/Users/tonyclaw/.openclaw/workspace/services/omi-webhook/venv/lib/python3.14/site-packages/starlette/staticfiles.py__annotate__ NotModifiedResponse.__annotate__    s     
 
 
    c           	     	   < \         ST `  R VP                  4        UUu/ uF  w  r#W P                  9   g   K  W#bK  	  uppR7       R# u uppi )i0  )status_coder   N)super__init__itemsNOT_MODIFIED_HEADERS)selfr   namevalue	__class__s   &&  r   r   NotModifiedResponse.__init__    sD    4;MMOiO[TtOhOhGh[T[Oi 	 	
is
   A	A	r   )zcache-controlzcontent-locationdateetagexpiresvary)__name__
__module____qualname____firstlineno__r    r   __static_attributes____classcell__)r$   s   @r   r   r      s    
 
r   r   c            
          ] tR t^'tRRRRRRRRRR/R	 R
 lltRR R lltR R ltR R ltR R ltR R lt	RR R llt
R R ltR R ltRtR# )StaticFiles	directoryNpackageshtmlF	check_dirTfollow_symlinkc               0    V ^8  d   QhRRRRRRRRRRR	R
/# )r   r2   PathLike | Noner3   "list[str | tuple[str, str]] | Noner4   boolr5   r6   returnNoner   )r   s   "r   r   StaticFiles.__annotate__(   sP     J J #J 5	J
 J J J 
Jr   c               	    Wn         W n        V P                  W4      V n        W0n        R V n        WPn        V'       d=   Ve7   \        P                  P                  V4      '       g   \        RV R24      hR# R# R# )FNDirectory 'z' does not exist)r2   r3   get_directoriesall_directoriesr4   config_checkedr6   ospathisdirRuntimeError)r!   r2   r3   r4   r5   r6   s   &$$$$$r   r   StaticFiles.__init__(   sn     # #33IH	#,.rww}}Y7O7OYK7GHII 8P.9r   c               $    V ^8  d   QhRRRRRR/# )r   r2   r8   r3   r9   r;   zlist[PathLike]r   )r   s   "r   r   r=   :   s(      " 5 
	r   c                B   . pVe   VP                  V4       T;'       g    .  F  p\        V\        4      '       d   Vw  rEMRp\        P                  P                  V4      pVf   Q RV: R24       hVP                  f   Q RV: R24       h\        P                  P                  \        P                  P                  VP                  RV4      4      p\        P                  P                  V4      '       g   Q RV: RV: R24       hVP                  V4       K  	  V# )z
Given `directory` and `packages` arguments, return a list of all the
directories that should be used for serving static files from.
staticszPackage z could not be found.z..r?   z' in package )append
isinstancetuple	importlibutil	find_specoriginrC   rD   normpathjoinrE   )r!   r2   r3   directoriespackagestatics_dirspecpackage_directorys   &&&     r   r@   StaticFiles.get_directories:   s     y)~~2~G'5))'.$'>>++G4D#Ox{:N%OO#;;*VhwkAU,VV* " 0 0dkk4Q\1] ^77==!233 k_M'DXY3 01 & r   c               (    V ^8  d   QhRRRRRRRR/# )	r   scoper   receiver   sendr   r;   r<   r   )r   s   "r   r   r=   W   s(     - -E -G -4 -D -r   c                  "   VR,          R8X  g   Q hV P                   '       g    V P                  4       G Rj  xL
  RV n         V P                  V4      pV P                  WA4      G Rj  xL
 pV! WV4      G Rj  xL
  R#  LH L L
5i)z
The ASGI entry point.
typehttpNT)rB   check_configget_pathget_response)r!   r[   r\   r]   rD   responses   &&&&  r   __call__StaticFiles.__call__W   s}      V}&&&"""##%%%"&D}}U#**477ut,,, & 8,s8   "BBB0B)B*B:B;BBBc                    V ^8  d   QhRRRR/# )r   r[   r   r;   strr   )r   s   "r   r   r=   e   s     F Fe F Fr   c                    \        V4      p\        P                  P                  \        P                  P                  ! VP                  R4      !  4      # )z
Given the ASGI scope, return the `path` string to serve up,
with OS specific path separators, and any '..', '.' components removed.
/)r   rC   rD   rR   rS   split)r!   r[   
route_paths   && r   rb   StaticFiles.get_pathe   s;    
 $E*
wwj.>.>s.C DEEr   c               $    V ^8  d   QhRRRRRR/# )r   rD   rh   r[   r   r;   r   r   )r   s   "r   r   r=   m   s!     (- (-s (-5 (-X (-r   c                R  "   VR,          R9  d   \        RR7      h \        P                  P                  V P                  V4      G Rj  xL
 w  r4T'       d9   \        P                  ! TP                  4      '       d   T P                  Y4T4      # T'       Ed"   \        P                  ! TP                  4      '       d   T P                  '       d   \        P                   P#                  TR4      p\        P                  P                  T P                  T4      G Rj  xL
 w  r4Te   \        P                  ! TP                  4      '       dl   TR,          P%                  R	4      '       g<   \'        TR
7      pTP)                  TP                   R	,           R7      p\+        TR7      # T P                  Y4T4      # T P                  '       dp   \        P                  P                  T P                  R4      G Rj  xL
 w  r4T'       d4   \        P                  ! TP                  4      '       d   \-        Y4RR7      # \        RR7      h EL  \
         d    \        RR7      h\         d3   pTP                  \        P                  8X  d   \        RR7      hThRp?ii ; i EL L5i)zP
Returns an HTTP response, given the incoming path, method and request headers.
methodi  )r   Ni  i  z
index.htmlrD   rj   r[   )rD   )urlz404.html)stat_resultr   )GETHEAD)r	   anyio	to_threadrun_synclookup_pathPermissionErrorOSErrorerrnoENAMETOOLONGstatS_ISREGst_modefile_responseS_ISDIRr4   rC   rD   rS   endswithr   replacer   r
   )r!   rD   r[   	full_pathrs   exc
index_pathrr   s   &&&     r   rc   StaticFiles.get_responsem   s     ?/1C00		+0??+C+CDDTDTVZ+[%["I 4<<(;(;<<%%ieDD[T\\+*=*=>>4999 dL9J+0??+C+CDDTDTV`+a%a"I&4<<8K8K+L+LV}--c22E*C++388c>+:C+44)))%HH999+0??+C+CDDTDTV`+a%a"It||K,?,?@@#ITWXX,,A &\ 	1C00 	yyE...#44I	 &b &bs   J'-I I	I J'%J' J'%J'J'AJ' J"!/J'J'/AJ'-J';J%<3J'0J'	I J,J--JJJ'%J'c                    V ^8  d   QhRRRR/# )r   rD   rh   r;   z!tuple[str, os.stat_result | None]r   )r   s   "r   r   r=      s       (I r   c                	L   V P                    F  p\        P                  P                  W!4      pV P                  '       d@   \        P                  P                  V4      p\        P                  P                  V4      pM>\        P                  P                  V4      p\        P                  P                  V4      p\        P                  P                  WB.4      \        V4      8w  d   K   V\        P                  ! V4      3u # 	  R#   \        \        3 d     EK  i ; i) )r   N)rA   rC   rD   rS   r6   abspathrealpath
commonpathrh   r~   FileNotFoundErrorNotADirectoryError)r!   rD   r2   joined_pathr   s   &&   r   ry   StaticFiles.lookup_path   s    --I'',,y7K"""GGOOK8	GGOOI6	GG,,[9	GG,,Y7	ww!!9"89S^K "'')"444 .  &'9: s   /DD#"D#c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )r   r   PathLikers   zos.stat_resultr[   r   r   intr;   r   r   )r   s   "r   r   r=      s<       $ 	
  
r   c                	    \        VR 7      p\        WVR7      pV P                  VP                  V4      '       d   \	        VP                  4      # V# )rq   )r   rs   )r   r
   is_not_modifiedr   r   )r!   r   rs   r[   r   request_headersrd   s   &&&&&  r   r   StaticFiles.file_response   sJ     ".	P[\ 0 0/BB&x'7'788r   c                   V ^8  d   QhRR/# )r   r;   r<   r   )r   s   "r   r   r=      s     [ [D [r   c                  "   V P                   f   R#  \        P                  P                  \        P
                  V P                   4      G Rj  xL
 p\
        P                  ! TP                  4      '       gB   \
        P                  ! TP                  4      '       g   \        RT P                    R24      hR# R#  Lm  \         d    \        RT P                    R24      hi ; i5i)z
Perform a one-off configuration check that StaticFiles is actually
pointed at a directory, so that we can raise loud errors rather than
just returning 404 responses.
NzStaticFiles directory 'z' does not exist.zStaticFiles path 'z' is not a directory.)r2   rv   rw   rx   rC   r~   r   rF   r   r   S_ISLNK)r!   rs   s   & r   ra   StaticFiles.check_config   s      >>!	\ % 8 8$.. QQK [0011T\\+BUBU5V5V!3DNN3CCXYZZ 6W1 R  	\!88HHYZ[[	\s:   C';B? B=B? %C':%C' C'=B? ?%C$$C'c               $    V ^8  d   QhRRRRRR/# )r   response_headersr   r   r;   r:   r   )r   s   "r   r   r=      s"       ' VZ r   c                D   VP                  R4      ;p'       d;   VR,          pYCP                  R4       Uu. uF  qUP                  R4      NK  	  up9   #  \        VR,          4      p\        VR,          4      pVe   Ve	   Wg8  d   R# R# u upi   \         d     R# i ; i)	zu
Given the request and response headers, return `True` if an HTTP
"Not Modified" response could be returned instead.
zif-none-matchr'   ,z W/zif-modified-sincezlast-modifiedTF)getrk   stripr   KeyError)r!   r   r   if_none_matchr'   tagif_modified_sincelast_modifieds   &&&     r   r   StaticFiles.is_not_modified   s    
 ,//@@=@#F+D8K8KC8PQ8PIIe,8PQQQ	 )/:M*N O%&6&GHM ,1JO`Oq  R  		s   B2B BB)rA   rB   r2   r6   r4   r3   )NN)   )r*   r+   r,   r-   r   r@   re   rb   rc   ry   r   ra   r   r.   r   r   r   r1   r1   '   so    J &*J 8<	J
 J J  %J$:-F(-T$[  r   r1   ) 
__future__r   r|   importlib.utilrN   rC   r~   email.utilsr   typingr   rv   anyio.to_threadstarlette._utilsr   starlette.datastructuresr   r   starlette.exceptionsr	   starlette.responsesr
   r   r   starlette.typesr   r   r   rh   r   r   r1   r   r   r   <module>r      s]    "   	  !    + 1 . H H 0 0(()
( 
"r rr   