Ë
    úmxiG&  ã                  óì  — U d dl mZ d dlZd dlZd dlmZmZmZmZ d dl	Z
d dlmZmZ d dlmZmZmZ er
d dlmZmZmZ  ej,                  d«      ZdZd	ed
<   dd„Zdd„Z G d„ de
j8                  j:                  «      Z G d„ de
j8                  j<                  «      Z G d„ de
j8                  j<                  «      Z  G d„ de
j8                  j<                  «      Z! G d„ de!«      Z"g d¢Z# G d„ de!«      Z$y)é    )ÚannotationsN)ÚTYPE_CHECKINGÚAnyÚFinalÚcast)ÚconfigÚ	file_util)Úallowlisted_originsÚ emit_endpoint_deprecation_noticeÚis_xsrf_enabled)Ú	AwaitableÚCallableÚSequencez(?:\.html$|^manifest\.json$)i€3ár   Ú"STATIC_ASSET_CACHE_MAX_AGE_SECONDSc                 ó\   — t        j                  d«       xs t        j                  d«      S )a0  True if cross-origin requests from any origin are allowed.

    We only allow ALL cross-origin requests when CORS protection has been
    disabled with server.enableCORS=False or if using the Node server in dev
    mode. When in dev mode, we have a dev and prod port, which count as two
    origins.
    zserver.enableCORSúglobal.developmentMode)r   Ú
get_option© ó    úR/home/htdocs/ttos/venv/lib/python3.12/site-packages/streamlit/web/server/routes.pyÚallow_all_cross_origin_requestsr   )   s0   € ô × Ñ Ð!4Ó5Ð5ò ¼×9JÑ9JØ ó:ð r   c                ó<   — t        | t        «      sy| t        «       v S )NF)Ú
isinstanceÚstrr
   )Úorigins    r   Úis_allowed_originr   7   s   € Ü�fœcÔ"ØØÔ(Ó*Ð*Ð*r   c                  óT   ‡ — e Zd Z	 	 d	 	 	 	 	 	 	 dˆ fd„Zdd„Zdˆ fd„Zd	ˆ fd„Zˆ xZS )
ÚStaticFileHandlerc                ó4   •— || _         t        ‰| �	  ||«       y ©N)Ú_reserved_pathsÚsuperÚ
initialize)ÚselfÚpathÚdefault_filenameÚreserved_pathsÚ	__class__s       €r   r#   zStaticFileHandler.initialize>   s   ø€ ð  .ˆÔä‰Ñ˜4Ð!1Õ2r   c                ó¦   — t        |«      dk(  }|st        j                  |«      r| j                  dd«       y| j                  ddt        › �«       y)z¨Disable cache for HTML files and manifest.json.

        Other assets like JS and CSS are suffixed with their hash, so they can
        be cached indefinitely.
        r   úCache-Controlúno-cachezpublic, immutable, max-age=N)ÚlenÚNO_CACHE_PATTERNÚsearchÚ
set_headerr   )r$   r%   Úis_index_urls      r   Úset_extra_headersz#StaticFileHandler.set_extra_headersH   sM   € ô ˜4“y A‘~ˆÙÔ+×2Ñ2°4Ô8Ø�O‰O˜O¨ZÕ8ð �O‰OØØ-Ô.PÐ-QÐRõr   c                ó4  •‡— 	 t         ‰| �  ||«      S # t        j                  j                  $ ræ}|j
                  dk(  rÑ| j                  Št        j                  j                  dk7  r*‰j                  t        j                  j                  d«      Št        ˆfd„| j                  D «       «      r‚ | j                  | j                  xs d«      | _        | j                  | j                  | j                  «      }t         ‰| �  ||«      cY d }~S ‚ d }~ww xY w)Né”  ú/c              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr    )Úendswith)Ú.0ÚxÚurl_paths     €r   ú	<genexpr>z;StaticFileHandler.validate_absolute_path.<locals>.<genexpr>e   s   øè ø€ ÒJ°�x×(Ñ(¨×+ÑJùs   ƒú
index.html)r"   Úvalidate_absolute_pathÚtornadoÚwebÚ	HTTPErrorÚstatus_coder%   ÚosÚsepÚreplaceÚanyr!   Úparse_url_pathr&   Úget_absolute_pathÚroot)r$   rG   Úabsolute_pathÚer9   r(   s       @€r   r<   z(StaticFileHandler.validate_absolute_pathY   sÚ   ù€ ð	Ü‘7Ñ1°$¸ÓFÐFøÜ�{‰{×$Ñ$ò 	ð �}‰} Ò#ØŸ9™9�ô —7‘7—;‘; #Ò%Ø'×/Ñ/´·±·±¸SÓA�HÜÓJ°T×5IÑ5IÔJÔJØà ×/Ñ/°×0EÑ0EÒ0UÈÓV�”	Ø $× 6Ñ 6°t·y±yÀ$Ç)Á)Ó L�Ü‘wÑ5°d¸MÓJÕJàûð!	ús!   „ ”D±CDÄDÄDÄDc                ó¸   •— |dk(  rDt         j                  j                  t        j                  «       d«      }| j                  |«       y t        ‰| �  |fi |¤Ž y )Nr3   r;   )rA   r%   Újoinr	   Úget_static_dirÚrenderr"   Úwrite_error)r$   r@   ÚkwargsÚ
index_filer(   s       €r   rN   zStaticFileHandler.write_errorn   sF   ø€ Ø˜#ÒÜŸ™Ÿ™¤i×&>Ñ&>Ó&@À,ÓOˆJØ�K‰K˜
Õ#ä‰GÑ Ñ6¨vÓ6r   )Nr   )r%   r   r&   ú
str | Noner'   zSequence[str]ÚreturnÚNone)r%   r   rR   rS   )rG   r   rH   r   rR   rQ   )r@   ÚintrO   r   rR   rS   )Ú__name__Ú
__module__Ú__qualname__r#   r1   r<   rN   Ú__classcell__)r(   s   @r   r   r   =   sJ   ø„ ð (,Ø(*ð	3àð3ð %ð3ð &ð	3ð
 
õ3óõ"÷*7ñ 7r   r   c                  óF   — e Zd Zej                  j
                  dd„«       Zy)ÚAddSlashHandlerc                 ó   — y r    r   ©r$   s    r   ÚgetzAddSlashHandler.getw   ó   € àr   N©rR   rS   )rU   rV   rW   r=   r>   Úaddslashr]   r   r   r   rZ   rZ   v   s   „ Ø‡[�[×Ñòó ñr   rZ   c                  óF   — e Zd Zej                  j
                  dd„«       Zy)ÚRemoveSlashHandlerc                 ó   — y r    r   r\   s    r   r]   zRemoveSlashHandler.get}   r^   r   Nr_   )rU   rV   rW   r=   r>   Úremoveslashr]   r   r   r   rb   rb   |   s   „ Ø‡[�[×Ñòó ñr   rb   c                  ó    — e Zd ZdZdd„Zdd„Zy)Ú_SpecialRequestHandlerz2Superclass for "special" endpoints, like /healthz.c                óü   — | j                  dd«       t        «       r| j                  dd«       y t        | j                  j                  j                  d«      x}«      r| j                  dt        d|«      «       y y )Nr*   r+   zAccess-Control-Allow-OriginÚ*ÚOriginr   )r/   r   r   ÚrequestÚheadersr]   r   )r$   r   s     r   Úset_default_headersz*_SpecialRequestHandler.set_default_headers…   sc   € Ø�‰˜¨Ô4Ü*Ô,Ø�O‰OÐ9¸3Õ?Ü¨¯©×)=Ñ)=×)AÑ)AÀ(Ó)KÐK˜vÔLØ�O‰OÐ9¼4ÀÀvÓ;NÕOð Mr   c                óF   — | j                  d«       | j                  «        y)a  /OPTIONS handler for preflight CORS checks.

        When a browser is making a CORS request, it may sometimes first
        send an OPTIONS request, to check whether the server understands the
        CORS protocol. This is optional, and doesn't happen for every request
        or in every browser. If an OPTIONS request does get sent, and is not
        then handled by the server, the browser will fail the underlying
        request.

        The proper way to handle this is to send a 204 response ("no content")
        with the CORS headers attached. (These headers are automatically added
        to every outgoing response, including OPTIONS responses,
        via set_default_headers().)

        See https://developer.mozilla.org/en-US/docs/Glossary/Preflight_request
        éÌ   N)Ú
set_statusÚfinishr\   s    r   Úoptionsz_SpecialRequestHandler.optionsŒ   s   € ð" 	�‰˜ÔØ�‰�r   Nr_   )rU   rV   rW   Ú__doc__rl   rq   r   r   r   rf   rf   ‚   s   „ Ù<óPôr   rf   c                  ó,   — e Zd Zdd„Zdd„Zdd„Zdd„Zy)ÚHealthHandlerc                ó   — || _         y)z¦Initialize the handler.

        Parameters
        ----------
        callback : callable
            A function that returns True if the server is healthy

        N)Ú	_callback)r$   Úcallbacks     r   r#   zHealthHandler.initialize¢   s   € ð "ˆ�r   c              ƒ  ó@   K  — | j                  «       ƒ d {  –—†  y 7 Œ­wr    ©Úhandle_requestr\   s    r   r]   zHealthHandler.get­   ó   è ø€ Ø×!Ñ!Ó#×#Ò#úó   ‚–—c              ƒ  ó@   K  — | j                  «       ƒ d {  –—†  y 7 Œ­wr    ry   r\   s    r   ÚheadzHealthHandler.head²   r{   r|   c              ƒ  ó@  K  — | j                   j                  rAd| j                   j                  vr)d| j                   j                  v rdnd}t        | |¬«       | j                  «       ƒ d {  –—† \  }}|r‚| j	                  |«       | j                  d«       t        «       rU| j                  j                  di «      } | j                  | j                  j                  dd	«      | j                  fi |¤Ž y y | j                  d
«       | j	                  |«       y 7 Œ®­w)Nz_stcore/zscript-health-checkz/_stcore/script-health-checkz/_stcore/health)Únew_pathéÈ   Úxsrf_cookie_kwargsÚxsrf_cookie_nameÚ_streamlit_xsrfi÷  )rj   Úurir   rv   Úwritero   r   Úsettingsr]   Ú
set_cookieÚ
xsrf_token)r$   r€   ÚokÚmsgÚcookie_kwargss        r   rz   zHealthHandler.handle_requestµ   sõ   è ø€ Ø�<‰<×Ò 
°$·,±,×2BÑ2BÑ Bð )¨D¯L©L×,<Ñ,<Ñ<ñ /à&ð ô
 -¨T¸HÕEàŸ™Ó(×(‰ˆˆCÙØ�J‰J�sŒOØ�O‰O˜CÔ ô Ô Ø $§¡× 1Ñ 1Ð2FÈÓ K�Ø�—‘Ø—M‘M×%Ñ%Ð&8Ð:KÓLØ—O‘Oñð $óð !ð �O‰O˜CÔ Ø�J‰J�s�Oð+ )ús   ‚A+DÁ-DÁ.B/DN)rw   z)Callable[[], Awaitable[tuple[bool, str]]]rR   rS   r_   )rU   rV   rW   r#   r]   r~   rz   r   r   r   rt   rt   ¡   s   „ ó	"ó$ó
$ôr   rt   )zhttps://devel.streamlit.testzhttps://*.streamlit.apptestzhttps://*.streamlitapp.testzhttps://*.streamlitapp.comzhttps://share.streamlit.iozhttps://share-demo.streamlit.iozhttps://share-head.streamlit.ioz"https://share-staging.streamlit.iozhttps://*.demo.streamlit.runzhttps://*.head.streamlit.runzhttps://*.staging.streamlit.runzhttps://*.streamlit.runzhttps://*.demo.streamlit.appzhttps://*.head.streamlit.appzhttps://*.staging.streamlit.appzhttps://*.streamlit.appc                  ó   — e Zd Zdd„Zdd„Zy)ÚHostConfigHandlerc                ó¶   — t         j                  «       | _        t        j                  d«      r+d| j                  vr| j                  j                  d«       y y y )Nr   zhttp://localhost)Ú _DEFAULT_ALLOWED_MESSAGE_ORIGINSÚcopyÚ_allowed_originsr   r   Úappendr\   s    r   r#   zHostConfigHandler.initializeî   sT   € ä @× EÑ EÓ GˆÔô ×ÑÐ6Ô7Ø"¨$×*?Ñ*?Ñ?ð ×!Ñ!×(Ñ(Ð);Õ<ð @ð 8r   c           
   ƒ  ót   K  — | j                  | j                  dddddd dœ«       | j                  d«       y ­w)NFÚ )ÚallowedOriginsÚuseExternalAuthTokenÚenableCustomParentMessagesÚenforceDownloadInNewTabÚ
metricsUrlÚblockErrorDialogsÚresourceCrossOriginModer�   )r†   r’   ro   r\   s    r   r]   zHostConfigHandler.getù   sB   è ø€ Ø�
‰
à"&×"7Ñ"7Ø(-à.3Ø+0Ø Ø%*ð ,0ñô	
ð 	�‰˜Õùs   ‚68Nr_   )rU   rV   rW   r#   r]   r   r   r   rŽ   rŽ   í   s   „ ó	=ôr   rŽ   )rR   Úbool)r   r   rR   r�   )%Ú
__future__r   rA   ÚreÚtypingr   r   r   r   Útornado.webr=   Ú	streamlitr   r	   Ú streamlit.web.server.server_utilr
   r   r   Úcollections.abcr   r   r   Úcompiler-   r   Ú__annotations__r   r   r>   r   ÚRequestHandlerrZ   rb   rf   rt   r�   rŽ   r   r   r   ú<module>r¨      sØ   ðö #ã 	Û 	ß 2Ó 2ã ç '÷ñ ñ ß=Ñ=ð �2—:‘:Ð=Ó>Ð ð -?Ð " EÓ >óó+ô67˜Ÿ™×5Ñ5ô 67ôr�g—k‘k×0Ñ0ô ô˜Ÿ™×3Ñ3ô ô˜WŸ[™[×7Ñ7ô ô>2Ð*ô 2òj$Ð  ô.Ð.õ r   