???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................3

  \                 @   s   d dl Z dd Zdd Zdd Zdd	 Zd
d ZdZdd Zdd Zdd Z	dd Z
dd Zdd Zdd ZG dd de jZG dd de jZG dd  d e jZG d!d" d"ee jZG d#d$ d$ee jZd%d& ZdS )'    Nc             C   sT   t  }t }x2| D ]*}t|dk r2|jt| q|j| qW t|}t||fS )N   )	bytearraysetordappendaddsortedbytes)strbaseextendedc r   */usr/lib64/python3.6/encodings/punycode.py	segregate
   s    
r   c             C   s*   d}x | D ]}t ||k r
|d7 }q
W |S )Nr      )r   )r
   maxresr   r   r   r   selective_len   s
    
r   c             C   sR   t | }xD|d7 }||krdS | | }||kr:|d |fS ||k r
|d7 }q
W d S )Nr   r   )r   r   )len)r
   charindexposlr   r   r   r   selective_find   s    r   c             C   s   d}g }d}x~|D ]v}d }}t |}t| |}	|	d ||  }
xBt| |||\}}|dkr^P |
|| 7 }
|j|
d  |}d}
qBW |}qW |S )Nr   r   r   r   r   r   )r   r   r   r   )r
   r   ZoldcharresultZoldindexr   r   r   r   Zcurlendeltar   r   r   insertion_unsort0   s$    

r   c             C   s,   d| d  | }|dk rdS |dkr(dS |S )N$   r      r   )jbiasr   r   r   r   TF   s      r#   s$   abcdefghijklmnopqrstuvwxyz0123456789c             C   sr   t  }d}xbt||}| |k r4|jt|   t|S |jt|| | d|     | | d|  } |d7 }qW d S )Nr   r   r   )r   r#   r   digitsr	   )Nr"   r   r!   tr   r   r   generate_generalized_integerN   s    
r'   c             C   s\   |r| d } n| d } | | | 7 } d}x| dkrB| d } |d7 }q(W |d|  | d   }|S )Ni     r   i  #   r   &   r   )r   firstnumcharsZ	divisionsr"   r   r   r   adapt[   s    

r-   c             C   sT   t  }d}x@t|D ]4\}}t||}|j| t||dk| | d }qW t|S )NH   r   r   )r   	enumerater'   extendr-   r	   )Zbaselendeltasr   r"   Zpointsr   sr   r   r   generate_integersj   s    

r3   c             C   s8   t | \}}t| |}tt||}|r4|d | S |S )N   -)r   r   r3   r   )textr   r   r1   r   r   r   punycode_encodeu   s    
r6   c       
      C   s   d}d}d}xyt | | }W n, tk
rJ   |dkr>td|d d fS X |d7 }d|  kofdkn  rv|d }nDd|  kodkn  r|d	 }n"|dkrtd
| |  n|d fS t||}	||| 7 }||	k r||fS |d|	  }|d7 }qW d S )Nr   r   strictzincomplete punicode stringA   Z   0   9      z Invalid extended code point '%s'r   )r   
IndexErrorUnicodeErrorr#   )
r   extposr"   errorsr   wr!   r   digitr&   r   r   r   decode_generalized_number   s2    


rC   c       	      C   s   d}d	}d}d}x|t |k rt||||\}}|d kr<| S ||d 7 }||t | d  7 }|dkr|dkrxtd| td}|t | d  }| d | t| | |d   } t||dkt | }|}qW | S )
Nr   r   r.   r   i r7   zInvalid character U+%x?r   )r   rC   r>   r   chrr-   )	r   r   r@   r   r   r"   r?   Znewposr   r   r   r   insertion_sort   s(     rF   c             C   s   t | tr| jd} t | tr&t| } | jd}|dkrLd}t| dj }n.t| d | d|}t| |d d  dj }t|||S )Nasciir4   r    r   )
isinstancer
   encode
memoryviewr	   rfindupperrF   )r5   r@   r   r   r   r   r   r   punycode_decode   s    



rN   c               @   s    e Zd ZdddZdddZdS )	Codecr7   c             C   s   t |}|t|fS )N)r6   r   )selfinputr@   r   r   r   r   rJ      s    zCodec.encodec             C   s*   |dkrt d| t||}|t|fS )Nr7   replaceignorezUnsupported error handling )r7   rR   rS   )r>   rN   r   )rP   rQ   r@   r   r   r   r   decode   s    
zCodec.decodeN)r7   )r7   )__name__
__module____qualname__rJ   rT   r   r   r   r   rO      s   
rO   c               @   s   e Zd ZdddZdS )IncrementalEncoderFc             C   s   t |S )N)r6   )rP   rQ   finalr   r   r   rJ      s    zIncrementalEncoder.encodeN)F)rU   rV   rW   rJ   r   r   r   r   rX      s   rX   c               @   s   e Zd ZdddZdS )IncrementalDecoderFc             C   s$   | j dkrtd| j  t|| j S )Nr7   rR   rS   zUnsupported error handling )r7   rR   rS   )r@   r>   rN   )rP   rQ   rY   r   r   r   rT      s    
zIncrementalDecoder.decodeN)F)rU   rV   rW   rT   r   r   r   r   rZ      s   rZ   c               @   s   e Zd ZdS )StreamWriterN)rU   rV   rW   r   r   r   r   r[      s   r[   c               @   s   e Zd ZdS )StreamReaderN)rU   rV   rW   r   r   r   r   r\      s   r\   c            	   C   s    t jdt jt jttttdS )NZpunycode)namerJ   rT   incrementalencoderincrementaldecoderstreamwriterstreamreader)	codecs	CodecInforO   rJ   rT   rX   rZ   r[   r\   r   r   r   r   getregentry   s    rd   )rb   r   r   r   r   r#   r$   r'   r-   r3   r6   rC   rF   rN   rO   rX   rZ   r[   r\   rd   r   r   r   r   <module>   s&   
