
    gw,                        S SK Jr  S SKrS SKJrJr  S SKJr  \R                  " S\R                  S9r
\R                  " S5      r\R                  " S5      rS	rS
\-   rS\-   rS\-   rSrSr\R                  " S5      r\R                  " S5      r\" \SSS.5      r\" \SSSSSSSSSSS.
5      r " S S5      rSS.S\\\4   S\S\4S jjrg)    )defaultdictN)OptionalUnion)URLz^([a-z0-9.+-]+:))flagsz:[0-9]*$z^(//?(?!/)[^?\s]*)(\?[^\s]*)?$)<>"` 
	){}|\^r   )')%/?;#)r   r   r      z^[+a-z0-9A-Z_-]{0,63}$z^([+a-z0-9A-Z_-]{0,63})(.*)$T)
javascriptzjavascript:)
httphttpsftpgopherfilezhttp:zhttps:zftp:zgopher:zfile:c                   F    \ rS rSrSS jrS\S\SS 4S jrS\SS4S	 jrS
r	g)
MutableURLh   returnNc                 t    S U l         SU l        S U l        S U l        S U l        S U l        S U l        S U l        g )NF)protocolslashesauthporthostnamehashsearchpathname)selfs    ,lib/python3.13/site-packages/mdurl/_parse.py__init__MutableURL.__init__i   s:    '+"#'	#'	'+#'	%)'+    urlslashes_denote_hostc                 b
   SnSnUnUR                  5       nU(       d~  [        UR                  S5      5      S:X  a`  [        R	                  U5      nU(       aD  UR                  S5      U l        UR                  S5      (       a  UR                  S5      U l        U $ Sn[        R	                  U5      nU(       a4  UR                  5       nUR                  5       nXpl
        U[        U5      S  nU(       d#  U(       d  [        R                  " SU5      (       a9  UR                  S5      nU(       a!  U(       a  [        U   (       d  USS  nSU l        [        U   (       Gd?  U(       d  U(       Ga0  [        U   (       Gd!  S	n	[!        [        ["        5      5       H2  n
UR%                  ["        U
   5      nUS	:w  d  M#  U	S	:X  d  X:  d  M0  Un	M4     U	S	:X  a  UR'                  S
5      nOUR'                  S
SU	S-   5      nUS	:w  a  US U nX\S-   S  nXl        S	n	[!        [        [*        5      5       H2  n
UR%                  [*        U
   5      nUS	:w  d  M#  U	S	:X  d  X:  d  M0  Un	M4     U	S	:X  a  [        U5      n	XYS-
     S:X  a  U	S-  n	US U	 nXYS  nU R-                  U5        U R.                  =(       d    SU l        U R.                  R                  S5      =(       a    U R.                  R1                  S5      nU(       Gdb  U R.                  R                  S5      n[        U5      nSn
U
U:  Ga3  UU
   nU(       d  U
S-  n
M  [2        R                  U5      (       d  Sn[        U5      nSnUU:  a-  [5        UU   5      S:  a  US-  nOUUU   -  nUS-  nUU:  a  M-  [2        R                  U5      (       d  US U
 nUU
S-   S  n[6        R                  U5      nU(       aA  UR9                  UR                  S5      5        UR;                  SUR                  S5      5        U(       a  SR=                  U5      U-   nSR=                  U5      U l        OU
S-  n
U
U:  a  GM3  [        U R.                  5      [>        :  a  SU l        U(       a  U R.                  SS	 U l        UR%                  S5      nUS	:w  a  UUS  U l         US U nUR%                  S5      nUS	:w  a  UUS  U l        US U nU(       a  XPl        [        U   (       a)  U R.                  (       a  U R                  (       d  SU l        U $ )N Fr         z^//[^@/]+@[^@/]+z//T@r   :[].   xr   )!striplensplitSIMPLE_PATH_PATTERNmatchgroupr.   r-   PROTOCOL_PATTERNlowerr'   re
startswithHOSTLESS_PROTOCOLr(   SLASHED_PROTOCOLrangeHOST_ENDING_CHARSfindrfindr)   NON_HOST_CHARS
parse_hostr+   endswithHOSTNAME_PART_PATTERNordHOSTNAME_PART_STARTappendinsertjoinHOSTNAME_MAX_LENr,   )r/   r4   r5   lower_protor(   restsimple_pathprotoproto_matchhost_endihecat_signr)   hostipv6_hostname	hostpartslpartnewpartkjvalid_partsnot_hostbitr,   qms                              r0   parseMutableURL.parses   s    zz|"s399S>':a'?-33D9K + 1 1! 4$$Q''"-"3"3A"6DK&,,T2%%'E++-K!ME
%D %2995H$+O+Oood+G*;E*BABx# ''&6u&=&=& H3012ii 1! 45"9(b.CN"H 3 2~**S/ **S!X\: "}HW~aKM* 	 H3~./iiq 12"9(b.CN"H 0
 2~t9qL!S(A	?D	?D OOD! !MM/RDM !MM44S9 dmm>T>T?M
 ! MM//4		N!e$Q<DQ 077=="$I!e"47|c1 !(3 '47 2FA  !e  5;;GDD*3BQ-K'0Q'9H"5"<"<T"BC" + 2 2399Q< @ (399Q< @''*xx'9D'@,/HH[,ADM!FA? !eB 4==!$44 "  $a 3 yy~2:TUDI;DYYs^8rs)DK9D MK(T]]4==DMr3   re   c                     [         R                  U5      nU(       a/  UR                  5       nUS:w  a
  USS  U l        US [	        U5      *  nU(       a  Xl        g g )Nr<   r8   )PORT_PATTERNr-   rG   r*   rC   r+   )r/   re   
port_matchr*   s       r0   rS   MutableURL.parse_host  sV    !((.
##%Ds{ H	3t9*%D M r3   )r)   r,   r+   r.   r*   r'   r-   r(   )r%   N)
__name__
__module____qualname____firstlineno__r1   strboolrq   rS   __static_attributes__ r3   r0   r#   r#   h   s9    ,h h4 hL hT!s !t !r3   r#   F)r5   r4   r5   r%   c          
      *   [        U [        5      (       a  U $ [        5       nUR                  X5        [        UR                  UR
                  UR                  UR                  UR                  UR                  UR                  UR                  5      $ )N)
isinstancer   r#   rq   r'   r(   r)   r*   r+   r,   r-   r.   )r4   r5   us      r0   	url_parser   (  se    #s
AGGC%	

AIIqvvqvvqzz166188QZZ r3   )collectionsr   rJ   typingr   r   
mdurl._urlr   compile
IGNORECASErH   rt   rE   DELIMSUNWISEAUTO_ESCAPErR   rO   r[   rU   rW   r|   rL   rM   r#   r{   r   r~   r3   r0   <module>r      s&  T $ 	 "  ::1G zz+& jj!BC  
5 
)6	1 vo
 +[8#  

#<= jj!@A      "}! }!@ DI 5c? D S r3   