
    %h                        S SK Jr  S SKrS SKJr  SSKJr  SSKJ	r	  SSK
Jr  SS jr  S         SS	 jjr   S           SS
 jjr  S     SS jjrg)    )annotationsN)quote   )
_plain_int)SecurityError)
uri_to_iric                   U (       d  g U R                  S5      S   R                  S5      R                  S5      n [	        U[
        5      (       a  U/nU H  nUR                  S5      (       a  USS nS	nOSn UR                  S5      S   R                  S5      R                  S5      nX :X  d$  U(       d  Md  U R                  SU 35      (       d  M    g	   g! [         a     gf = f! [         a       gf = f)
zCheck if a host matches a list of trusted names.

:param hostname: The name to check.
:param trusted_list: A list of valid names to match. If a name
    starts with a dot it will match all subdomains.

.. versionadded:: 0.9
F:r   idnaascii.   NT)	partitionencodedecodeUnicodeEncodeError
isinstancestr
startswithendswith)hostnametrusted_listrefsuffix_matchs       M/var/www/auris/envauris/lib/python3.13/site-packages/werkzeug/sansio/utils.pyhost_is_trustedr      s     %%c*1-44V<CCGL ,$$$~>>#ab'CL L	--$Q'..v6==gFC ?||0A0AAcU)0L0L  +   " 		s#   2C :2C*
C'&C'*
C87C8c                <   SnUb  UnO-Ub*  US   nSU;   a  US   S:w  a  SU S3nUS   b
  U SUS    3nU S;   a  UR                  S	5      (       a  USS
 nO!U S;   a  UR                  S5      (       a  USS nUb   [        XC5      (       d  [        SU< S35      eU$ )a<  Return the host for the given parameters.

This first checks the ``host_header``. If it's not present, then
``server`` is used. The host will only contain the port if it is
different than the standard port for the protocol.

Optionally, verify that the host is trusted using
:func:`host_is_trusted` and raise a
:exc:`~werkzeug.exceptions.SecurityError` if it is not.

:param scheme: The protocol the request used, like ``"https"``.
:param host_header: The ``Host`` header value.
:param server: Address of the server. ``(host, port)``, or
    ``(path, None)`` for unix sockets.
:param trusted_hosts: A list of trusted host names.

:return: Host, with port if necessary.
:raise ~werkzeug.exceptions.SecurityError: If the host is not
    trusted.

.. versionchanged:: 3.1.3
    If ``SERVER_NAME`` is IPv6, it is wrapped in ``[]``.
 Nr   r
   []r   >   wshttpz:80>   wsshttpsz:443zHost z is not trusted.)r   r   r   )schemehost_headerservertrusted_hostshosts        r   get_hostr,   1   s    : D		ay $;47c>tfA;D!9 V1VAYK(DDMM%$8$8CRy	#	#f(=(=CRy t33%x/? @AAK    c                   U SU/nUc+  UR                  S5        [        SR                  U5      5      $ UR                  [        UR	                  S5      SS95        UR                  S5        Uc  [        SR                  U5      5      $ UR                  [        UR                  S5      SS95        U(       a*  UR                  S5        UR                  [        USS95        [        SR                  U5      5      $ )a[  Recreate the URL for a request. If an optional part isn't
provided, it and subsequent parts are not included in the URL.

The URL is an IRI, not a URI, so it may contain Unicode characters.
Use :func:`~werkzeug.urls.iri_to_uri` to convert it to ASCII.

:param scheme: The protocol the request used, like ``"https"``.
:param host: The host the request was made to. See :func:`get_host`.
:param root_path: Prefix that the application is mounted under. This
    is prepended to ``path``.
:param path: The path part of the URL after ``root_path``.
:param query_string: The portion of the URL after the "?".
z:///r   z!$&'()*+,/:;=@%)safe?z!$&'()*+,/:;=?@%)appendr   joinr   rstriplstrip)r'   r+   	root_pathpathquery_stringurls         r   get_current_urlr:   i   s    ( 5$
C

3"''#,'' JJuY%%c*1BCDJJsO|"''#,''JJuT[[%,=>?

3

5,>?@bggcl##r-   c                b    US:X  d  U c  g [        S[        U 5      5      $ ! [         a     gf = f)a  Return the ``Content-Length`` header value as an int. If the header is not given
or the ``Transfer-Encoding`` header is ``chunked``, ``None`` is returned to indicate
a streaming request. If the value is not an integer, or negative, 0 is returned.

:param http_content_length: The Content-Length HTTP header.
:param http_transfer_encoding: The Transfer-Encoding HTTP header.

.. versionadded:: 2.2
chunkedNr   )maxr   
ValueError)http_content_lengthhttp_transfer_encodings     r   get_content_lengthrA      s?     *.A.I1j!4566 s   ! 
..)r   
str | Noner   zt.Iterable[str]returnbool)NN)
r'   r   r(   rB   r)   ztuple[str, int | None] | Noner*   zt.Iterable[str] | NonerC   r   )NNN)r'   r   r+   r   r6   rB   r7   rB   r8   zbytes | NonerC   r   )r?   rB   r@   rB   rC   z
int | None)
__future__r   typingturllib.parser   	_internalr   
exceptionsr   urlsr   r   r,   r:   rA    r-   r   <module>rM      s    "   " & #R -1,0	555 *5 *	5
 	5v !!%($($
($ ($ 	($
 ($ 	($X '+)-#& r-   