+
    Nj                        ^ 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H
t
 ^ RIHt ^ RIHt ^RIHt R	 R
 lt]P                   ! R]4       R R lt]! . ]! ^!4      O^%N^N54      P)                  4       t]! R]4      t]! R]R,           4      t]! R]R,           4      t]! R]R,           4      tR R ltR R ltR]P8                  P:                  9  d&   ]P8                  P:                  P=                  R4       R R ltR R lt R# )    )annotationsN)quote)unquote)	urlencode)urlsplit)
urlunsplit)iter_multi_itemsc                    V ^8  d   QhRRRR/# )   eUnicodeErrorreturnztuple[str, int] )formats   "O/data/cameron/venvs/serve_omidlab/lib/python3.14/site-packages/werkzeug/urls.py__annotate__r      s      l      c                x    \        V P                  V P                  V P                   RR7      pWP                  3# )zJUsed in :func:`uri_to_iri` after unquoting to re-quote any
invalid bytes.
 safe)r   objectstartend)r   outs   & r   _codec_error_url_quoter      s/     155)
3C:r   werkzeug.url_quotec               $    V ^8  d   QhRRRRRR/# )r   namestrcharsr   zt.Callable[[str], str]r   )r   s   "r   r   r      s"      S  1G r   c                   a RP                  R \        V4       4       4      p\        P                  ! RV R2\        P                  4      oR V3R llpRV  2Vn        V# )zCreate a function that unquotes all percent encoded characters except those
given. This allows working with unquoted characters if possible while not changing
the meaning of a given part of a URL.
|c              3  <   "   T F  p\        V4      R  x  K  	  R# 5i)02XN)ord).0cs   & r   	<genexpr>%_make_unquote_part.<locals>.<genexpr>"   s     >1#a&s   z((?:%(?:z))+)c                    V ^8  d   QhRRRR/# )r   valuer    r   r   )r   s   "r   r   (_make_unquote_part.<locals>.__annotate__%   s        r   c                   < \        SP                  V 4      4      p. pV F:  pVP                  \        VR R4      4       VP                  \	        VR4      4       K<  	  RP                  V4      # )zutf-8r   r   )itersplitappendr   nextjoin)r,   partsr   partpatterns   &   r   _unquote_partial,_make_unquote_part.<locals>._unquote_partial%   s]    W]]5)*DJJwtW.BCDJJtE2'  wws|r   	_unquote_)r3   sortedrecompileI__name__)r   r!   choicesr7   r6   s   &&  @r   _make_unquote_partr@      s\    
 hh>u>>Gjj8G9D12448G  #,D6 2r   fragmentqueryz&=+#pathz/?#userz:@/?#c                    V ^8  d   QhRRRR/# )r   urir    r   r   )r   s   "r   r   r   =   s     1E 1EC 1EC 1Er   c                2   \        V 4      p\        VP                  4      p\        VP                  4      p\        VP                  4      pVP                  '       d   \        VP                  4      pMRpRV9   d   RV R2pVP                  '       d   V RVP                   2pVP                  '       dK   \        VP                  4      pVP                  '       d   \        VP                  4      pV RV 2pV RV 2p\        VP                  WRW434      # )a  Convert a URI to an IRI. All valid UTF-8 characters are unquoted,
leaving all reserved and invalid characters quoted. If the URL has
a domain, it is decoded from Punycode.

>>> uri_to_iri("http://xn--n3h.net/p%C3%A5th?q=%C3%A8ry%DF")
'http://\u2603.net/p\xe5th?q=\xe8ry%DF'

:param uri: The URI to convert.

.. versionchanged:: 3.0
    Passing a tuple or bytes, and the ``charset`` and ``errors`` parameters,
    are removed.

.. versionchanged:: 2.3
    Which characters remain quoted is specific to each part of the URL.

.. versionchanged:: 0.15
    All reserved and invalid characters remain quoted. Previously,
    only some reserved characters were preserved, and invalid bytes
    were replaced instead of left quoted.

.. versionadded:: 0.6
r   :[]@)r   _unquote_pathrC   _unquote_queryrB   _unquote_fragmentrA   hostname_decode_idnaportusername_unquote_userpasswordr   scheme)rF   r4   rC   rB   rA   netlocauthrT   s   &       r   
uri_to_irirX   =   s    0 SME$D5;;'E 0H~~~enn-
f}VHAzzz81UZZL)~~~U^^,>>>$U^^4HV1XJ'D66(#u||V5CDDr   c                    V ^8  d   QhRRRR/# )r   irir    r   r   )r   s   "r   r   r   q   s     4E 4EC 4EC 4Er   c                p   \        V 4      p\        VP                  RR7      p\        VP                  RR7      p\        VP                  RR7      pVP
                  '       d,   VP
                  P                  R4      P                  R4      pMRpRV9   d   R	V R
2pVP                  '       d   V RVP                   2pVP                  '       dO   \        VP                  RR7      pVP                  '       d   \        VP                  RR7      pV RV 2pV RV 2p\        VP                  WRW434      # )a  Convert an IRI to a URI. All non-ASCII and unsafe characters are
quoted. If the URL has a domain, it is encoded to Punycode.

>>> iri_to_uri('http://\u2603.net/p\xe5th?q=\xe8ry%DF')
'http://xn--n3h.net/p%C3%A5th?q=%C3%A8ry%DF'

:param iri: The IRI to convert.

.. versionchanged:: 3.0
    Passing a tuple or bytes, the ``charset`` and ``errors`` parameters,
    and the ``safe_conversion`` parameter, are removed.

.. versionchanged:: 2.3
    Which characters remain unquoted is specific to each part of the URL.

.. versionchanged:: 0.15
    All reserved characters remain unquoted. Previously, only some reserved
    characters were left unquoted.

.. versionchanged:: 0.9.6
   The ``safe_conversion`` parameter was added.

.. versionadded:: 0.6
z%!$&'()*+,/:;=@r   z%!$&'()*+,/:;=?@z%!#$&'()*+,/:;=?@idnaasciir   rH   rI   rJ   z%!$&'()*+,;=rK   )r   r   rC   rB   rA   rO   encodedecoderQ   rR   rT   r   rU   )rZ   r4   rC   rB   rA   rV   rW   rT   s   &       r   
iri_to_urir`   q   s   2 SME "34D%++$67EU^^*=>H~~~&&v.55g>
f}VHAzzz81UZZL)~~~U^^.9>>>U^^.AHV1XJ'D66(#u||V5CDDr   zitms-servicesc                    V ^8  d   QhRRRR/# )r   domainr    r   r   )r   s   "r   r   r      s        r   c                    V P                  R 4      p TP                  R4      #   \         d    T u # i ; i  \         d     Mi ; i. pTP	                  R4       FV  p TP                  TP                  R4      4       K&    \         d%    TP                  TP                  R 4      4        KT  i ; i	  RP                  T4      # )r]   r\      ..)r^   UnicodeEncodeErrorr_   UnicodeDecodeErrorr0   r1   r3   )rb   datar4   r5   s   &   r   rP   rP      s    }}W%
{{6""     E

4 	/LLV,-! 	/LLW-.	/ ! 88E?s-   % 8 55AA  B+B10B1c                    V ^8  d   QhRRRR/# )r   rB   z1t.Mapping[str, str] | t.Iterable[tuple[str, str]]r   r    r   )r   s   "r   r   r      s     1 1G 1C 1r   c                r    \        V 4       Uu. uF  q^,          f   K  VNK  	  pp\        VRR7      # u upi )   z!$'()*,/:;?@r   )r	   r   )rB   xitemss   &  r   
_urlencodern      s6    (/D/1Q4QQ/EDU00 Es   44)!
__future__r   codecsr;   typingturllib.parseurllibr   r   r   r   r   datastructuresr	   r   register_errorr@   bytesranger_   _always_unsaferN   rM   rL   rS   rX   r`   parseuses_netlocr1   rP   rn   r   r   r   <module>r|      s    "  	      " ! # ,   *,B C2 1t1d1D1299;&z>B #G^f-DE"6>E+AB"6>G+CD1Eh4Et &,,222
LL##O421r   