
    F\h                     8   S r SSKrS rS rS rS rS rSrS	 rS
 r	S r
S rS rS rS r " S S\R                  5      r " S S\R                   5      r " S S\R"                  5      r " S S\\R$                  5      r " S S\\R&                  5      rS rg)uX   Codec for the Punycode encoding, as specified in RFC 3492

Written by Martin v. Löwis.
    Nc                     [        5       n[        5       nU  H?  n[        U5      S:  a  UR                  [        U5      5        M.  UR	                  U5        MA     [        U5      n[        U5      U4$ )z 3.1 Basic code point segregation   )	bytearraysetordappendaddsortedbytes)strbaseextendedcs       )/usr/lib/python3.13/encodings/punycode.py	segregater   
   s[    ;DuHq6C<KKALLO	 
 hH;      c                 H    SnU  H  n[        U5      U:  d  M  US-  nM     U$ )z@Return the length of str, considering only characters below max.r      )r   )r   maxresr   s       r   selective_lenr      s,    
Cq6C<1HC  Jr   c                 h    [        U 5      n US-  nX4:X  a  gX   nXQ:X  a  US-   U4$ XQ:  a  US-  nM'  )a  Return a pair (index, pos), indicating the next occurrence of
char in str. index is the position of the character considering
only ordinals up to and including char, and pos is the position in
the full string. index/pos is the starting position in the full
string.r   )r   )len)r   charindexposlr   s         r   selective_findr      sN     	CA
q8H97C<XQJE r   c                     Sn/ nSnU H_  nS=pg[        U5      n[        X5      n	U	S-   X-
  -  n
 [        XXg5      u  pgUS:X  a  O!XU-
  -  n
UR                  U
S-
  5        UnSn
M6  UnMa     U$ )z3.2 Insertion unsort codingr   r   r   r   )r   r   r   r   )r   r   oldcharresultoldindexr   r   r   r   curlendeltas              r   insertion_unsortr&   0   s    GFH1vs)dn-&sU7IE{X%%EMM%'"HE    Mr   c                 8    SU S-   -  U-
  nUS:  a  gUS:  a  gU$ )N$   r       )jbiasr   s      r   Tr-   F   s+    
A,
C
Qwq
RxJr   s$   abcdefghijklmnopqrstuvwxyz0123456789c                     [        5       nSn [        X15      nX:  a#  UR                  [        U    5        [	        U5      $ UR                  [        X@U-
  SU-
  -  -      5        X-
  SU-
  -  n US-  nMg  )(3.3 Generalized variable-length integersr   r   r(   )r   r-   r   digitsr   )Nr,   r"   r+   ts        r   generate_generalized_integerr3   N   sx    [F	A
aJ5MM&)$= fQq5R!V"4567UQ	Q r   c                     U(       a  U S-  n OU S-  n X U-  -  n SnU S:  a  U S-  n US-  nU S:  a  M  USU -  U S-   -  -   nU$ )Ni     r   i  #   r(   &   r*   )r%   firstnumchars	divisionsr,   s        r   adaptr;   [   si    #!	hEI
#+R	 #+ U
urz23DKr   c                     [        5       nSn[        U5       H5  u  pE[        XS5      nUR                  U5        [	        XTS:H  X-   S-   5      nM7     [        U5      $ )z3.4 Bias adaptationH   r   r   )r   	enumerater3   extendr;   r   )baselendeltasr"   r,   pointsr%   ss          r   generate_integersrD   j   sZ     [FD"6*(5aUAIw~a'78 + =r   c                 ~    [        U 5      u  p[        X5      n[        [        U5      U5      nU(       a  US-   U-   $ U$ )N   -)r   r&   rD   r   )textr   r   rA   s       r   punycode_encoderH   u   s>    t_NDd-F TF3Hd{X%%Or   c           
      r   SnSnSn  X   nUS-  nSUs=::  a  S::  a	  O  OUS-
  nO:S	Us=::  a  S
::  a	  O  OUS-
  nO$US:X  a  [        SXS-
  USXS-
      S35      eUS4$ [        Xb5      n	XHU-  -  nX:  a  X4$ USU	-
  -  nUS-  nM  ! [          a!    US:X  a  [        SXUS-   S5      eUS-   S4s $ f = f)r/   r   r   strictpunycodezincomplete punycode stringNA   Z   0   9      zInvalid extended code point ''r(   )
IndexErrorUnicodeDecodeErrorr-   )
r   extposr,   errorsr"   wr+   r   digitr2   s
             r   decode_generalized_numberrX      s   F	A	A
	$#D 	!444KET!T!2IEx$Z!8V'DXUVhEWDXXY%Z\ \ 4<aJ!)9>!aL	Q/   	$!(Xvax)EG GA:t##		$s   B (B65B6c           	         SnSnSnSnU[        U5      :  a  [        XXR5      u  pxUc  U $ XHS-   -  nX4[        U 5      S-   -  -  nUS:  a&  US:X  a  [        S	XS-
  US
US 35      e[        S5      nU[        U 5      S-   -  nU SU [	        U5      -   XS -   n [        XS:H  [        U 5      5      nUnU[        U5      :  a  M  U $ )z3.2 Insertion sort codingr   r   r=   r   Nr   i rJ   rK   zInvalid character U+x?)r   rX   rS   r   chrr;   )	r   r   rU   r   r   r,   rT   newposr%   s	            r   insertion_sortr^      s     D
CDF
3x=
 1(26@= KQwD	A&&(?!(a%*4(35 5 s8DSY]#DSzCI%T
2Uq[3t95% 3x=
 & Kr   c                 X   [        U [        5      (       a  U R                  S5      n [        U [        5      (       a  [	        U 5      n U R                  S5      nUS:X  a  SnU R                  5       nO& [        U S U SU5      nXS-   S  R                  5       n [        X4U5      $ ! [         a2  n[        SXR                  UR                  UR                  5      S eS nAff = f! [         a<  nUS-   n[        SU XeR                  -   XeR                  -   UR                  5      S eS nAff = f)NasciirF   r    r   rK   )
isinstancer   encode
memoryviewr   rfindupperrS   startendreasonr^   )rG   rU   r   r   r   excoffsets          r   punycode_decoderl      s   ${{7#$
##T{
**T
C
by::<	;tDSz7F3D A<%%'7df55 " 	;$WdIIsww%(ZZ16:;	;  7q T!'		!16''>!$-26	77s0   2B$ C# $
C .-CC #
D)-7D$$D)c                   (    \ rS rSrSS jrSS jrSrg)Codec   c                 2    [        U5      nU[        U5      4$ N)rH   r   selfinputrU   r   s       r   rc   Codec.encode   s    e$CJr   c                 Z    US;  a  [        SU 35      e[        X5      nU[        U5      4$ N)rJ   replaceignorezUnsupported error handling: )UnicodeErrorrl   r   rr   s       r   decodeCodec.decode   s6    88!=fXFGGe,CJr   r*   N)rJ   )__name__
__module____qualname____firstlineno__rc   r{   __static_attributes__r*   r   r   rn   rn      s    r   rn   c                       \ rS rSrSS jrSrg)IncrementalEncoder   c                     [        U5      $ rq   )rH   rs   rt   finals      r   rc   IncrementalEncoder.encode   s    u%%r   r*   NF)r}   r~   r   r   rc   r   r*   r   r   r   r      s    &r   r   c                       \ rS rSrSS jrSrg)IncrementalDecoder   c                 |    U R                   S;  a  [        SU R                    35      e[        XR                   5      $ rw   )rU   rz   rl   r   s      r   r{   IncrementalDecoder.decode   s5    ;;==!=dkk]KLLukk22r   r*   Nr   )r}   r~   r   r   r{   r   r*   r   r   r   r      s    3r   r   c                       \ rS rSrSrg)StreamWriter   r*   Nr}   r~   r   r   r   r*   r   r   r   r          r   r   c                       \ rS rSrSrg)StreamReader   r*   Nr   r*   r   r   r   r      r   r   r   c            
          [         R                  " S[        5       R                  [        5       R                  [
        [        [        [        S9$ )NrK   )namerc   r{   incrementalencoderincrementaldecoderstreamwriterstreamreader)	codecs	CodecInforn   rc   r{   r   r   r   r   r*   r   r   getregentryr      s6    w~~w~~--!! r   )__doc__r   r   r   r   r&   r-   r0   r3   r;   rD   rH   rX   r^   rl   rn   r   r   r   r   r   r*   r   r   <module>r      s   
 
!$, 
1	><74
FLL 
&22 &322 3	5,, 		5,, 	
	r   