3
ãdel2  ã               @   s  d dl mZ ddlZddlZddlZddlmZmZ d dlm	Z	 dZ
dZejdƒZG d	d
„ d
eƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZeedœdd„Zeeedœdd„Zeedœdd„Zeedœdd„Zeeef edœdd„Zeeef eedœd d!„ZdBeeed#œd$d%„Zeedœd&d'„Zeedœd(d)„Zeddœd*d+„Z eeed,œd-d.„Z!dCeeeed/œd0d1„Z"eeee#f ddœd2d3„Z$eedœd4d5„Z%eeee#f edœd6d7„Z&dDeeeed9œd:d;„Z'dEeeee#f eeeeed<œd=d>„Z(dFeeee#f eeeed?œd@dA„Z)dS )Gé   )Úidnadataé    N)ÚUnionÚOptional)Úintranges_containé	   s   xn--u   [.ã€‚ï¼Žï½¡]c               @   s   e Zd ZdZdS )Ú	IDNAErrorz7 Base exception for all IDNA-encoding related problems N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© r   r   ú@/var/www/agendate/envp3/lib/python3.6/site-packages/idna/core.pyr      s   r   c               @   s   e Zd ZdZdS )ÚIDNABidiErrorz= Exception when bidirectional requirements are not satisfied N)r	   r
   r   r   r   r   r   r   r      s   r   c               @   s   e Zd ZdZdS )ÚInvalidCodepointz> Exception when a disallowed or unallocated codepoint is used N)r	   r
   r   r   r   r   r   r   r      s   r   c               @   s   e Zd ZdZdS )ÚInvalidCodepointContextzE Exception when the codepoint is not valid in the context it is used N)r	   r
   r   r   r   r   r   r   r      s   r   )ÚcpÚreturnc             C   s0   t jt| ƒƒ}|dkr,t jt| ƒƒs,tdƒ‚|S )Nr   z Unknown character in unicodedata)ÚunicodedataÚ	combiningÚchrÚnameÚ
ValueError)r   Úvr   r   r   Ú_combining_class    s
    r   )r   Úscriptr   c             C   s   t t| ƒtj| ƒS )N)r   Úordr   Úscripts)r   r   r   r   r   Ú
_is_script'   s    r   )Úsr   c             C   s
   | j dƒS )NÚpunycode)Úencode)r   r   r   r   Ú	_punycode*   s    r"   c             C   s
   dj | ƒS )NzU+{:04X})Úformat)r   r   r   r   Ú_unot-   s    r$   )Úlabelr   c             C   s   t | ƒdkrdS dS )Né?   FT)Úlen)r%   r   r   r   Úvalid_label_length1   s    r(   )r%   Útrailing_dotr   c             C   s   t | ƒ|rdndkrdS dS )Néþ   éý   FT)r'   )r%   r)   r   r   r   Úvalid_string_length7   s    r,   F)r%   Ú	check_ltrr   c       	      C   sn  d}xHt | dƒD ]:\}}tj|ƒ}|dkr>tdjt| ƒ|ƒƒ‚|dkrd}qW | r^| r^dS tj| d	 ƒ}|dkrzd}n |d
krˆd}ntdjt| ƒƒƒ‚d}d }x¸t | dƒD ]ª\}}tj|ƒ}|�r$|dkrÜtdj|ƒƒ‚|dk� rìd}n|dk� rúd}|dk�rX|�s|}n||k�rXtdƒ‚q®|dk�r<tdj|ƒƒ‚|dk�rLd}q®|dkr®d}q®W |�sjtdƒ‚dS )NFr   Ú z1Unknown directionality in label {} at position {}ÚRÚALÚANTr   ÚLz=First codepoint in label {} must be directionality L, R or ALÚENÚESÚCSÚETÚONÚBNÚNSMzGInvalid direction for codepoint at position {} in a right-to-left labelz2Can not mix numeral types in a right-to-left labelzGInvalid direction for codepoint at position {} in a left-to-right labelz0Label ends with illegal codepoint directionality)r/   r0   r1   )r/   r0   )
r/   r0   r1   r3   r4   r5   r6   r7   r8   r9   )r/   r0   r3   r1   )r1   r3   )r2   r3   r4   r5   r6   r7   r8   r9   )r2   r3   )Ú	enumerater   Úbidirectionalr   r#   Úrepr)	r%   r-   Ú
bidi_labelÚidxr   Ú	directionÚrtlÚvalid_endingÚnumber_typer   r   r   Ú
check_bidi=   sP    








rC   c             C   s"   t j| d ƒd dkrtdƒ‚dS )Nr   ÚMz0Label begins with an illegal combining characterT)r   Úcategoryr   )r%   r   r   r   Úcheck_initial_combinerx   s    rF   c             C   s<   | dd… dkrt dƒ‚| d dks0| d
 dkr8t dƒ‚d	S )Né   é   z--z4Label has disallowed hyphens in 3rd and 4th positionr   ú-r   z)Label must not start or end with a hyphenTéÿÿÿÿ)r   )r%   r   r   r   Úcheck_hyphen_ok~   s
    rK   c             C   s   t jd| ƒ| krtdƒ‚d S )NÚNFCz%Label must be in Normalization Form C)r   Ú	normalizer   )r%   r   r   r   Ú	check_nfc†   s    rN   )r%   Úposr   c             C   s:  t | | ƒ}|dk� rü|dkr:tt | |d  ƒƒtkr:dS d}xTt|d ddƒD ]@}tjjt | | ƒƒ}|t dƒkrvqP|t dƒt dƒgkrPd}P qPW |sœdS d}xVt|d t| ƒƒD ]@}tjjt | | ƒƒ}|t dƒkrÚq´|t d	ƒt dƒgkr´d}P q´W |S |d
k�r2|dk�r.tt | |d  ƒƒtk�r.dS dS dS d S )Ni   r   r   TFÚTr2   ÚDr/   i   rJ   rJ   )r   r   Ú_virama_combining_classÚranger   Újoining_typesÚgetr'   )r%   rO   Úcp_valueÚokÚiÚjoining_typer   r   r   Úvalid_contextj‹   s<    


rZ   )r%   rO   Ú	exceptionr   c             C   sÄ  t | | ƒ}|dkrdd|  k o.t| ƒd k n  r`t | |d  ƒdkr`t | |d  ƒdkr`dS dS |dkrž|t| ƒd k ršt| ƒdkršt| |d  dƒS dS |d	ks®|d
krÌ|dkrÈt| |d  dƒS dS |dk�rx<| D ]4}|dkrêqÜt|dƒ�st|dƒ�st|dƒrÜdS qÜW dS d|  k�o,dkn  �rlx2| D ]*}dt |ƒ  k�oVdkn  �r:dS �q:W dS d|  k�o€dkn  �rÀx2| D ]*}dt |ƒ  k�oªdkn  �rŽdS �qŽW dS dS )Né·   r   r   él   TFiu  ÚGreekió  iô  ÚHebrewiû0  u   ãƒ»ÚHiraganaÚKatakanaÚHani`  ii  ið  iù  )r   r'   r   )r%   rO   r[   rV   r   r   r   r   Úvalid_contexto¶   s@     (

"
 

 
rc   c             C   sR  t | ttfƒr| jdƒ} t| ƒdkr,tdƒ‚t| ƒ t| ƒ t| ƒ � xþt	| ƒD ]ò\}}t
|ƒ}t|tjd ƒrtqPqPt|tjd ƒræy,t| |ƒs®tdjt|ƒ|d t| ƒƒƒ‚W n2 tk
râ   tdjt|ƒ|d t| ƒƒƒ‚Y nX qPt|tjd	 ƒ�r$t| |ƒ�sBtd
jt|ƒ|d t| ƒƒƒ‚qPtdjt|ƒ|d t| ƒƒƒ‚qPW t| ƒ d S )Nzutf-8r   zEmpty LabelÚPVALIDÚCONTEXTJz*Joiner {} not allowed at position {} in {}r   z<Unknown codepoint adjacent to joiner {} at position {} in {}ÚCONTEXTOz-Codepoint {} not allowed at position {} in {}z-Codepoint {} at position {} of {} not allowed)Ú
isinstanceÚbytesÚ	bytearrayÚdecoder'   r   rN   rK   rF   r:   r   r   r   Úcodepoint_classesrZ   r   r#   r$   r<   r   rc   r   rC   )r%   rO   r   rV   r   r   r   Úcheck_labelà   s0    

  "rl   c             C   s|   y&| j dƒ}t|ƒ t|ƒs$tdƒ‚|S  tk
r:   Y nX | sHtdƒ‚t| ƒ} t| ƒ t| ƒ}t| }t|ƒsxtdƒ‚|S )NÚasciizLabel too longzNo Input)	r!   Úulabelr(   r   ÚUnicodeEncodeErrorÚstrrl   r"   Ú_alabel_prefix)r%   Úlabel_bytesr   r   r   Úalabelÿ   s"    
rs   c             C   sÔ   t | ttfƒs<y| jdƒ}W q@ tk
r8   t| ƒ | S X n| }|jƒ }|jtƒrŠ|t	tƒd … }|snt
dƒ‚|jdƒd dkrœt
dƒ‚nt|ƒ |jdƒS y|jdƒ} W n tk
rÆ   t
dƒ‚Y nX t| ƒ | S )	Nrm   z5Malformed A-label, no Punycode eligible content foundr   rI   z"A-label must not end with a hyphenr    zInvalid A-labelrJ   )rg   rh   ri   r!   ro   rl   ÚlowerÚ
startswithrq   r'   r   rj   ÚUnicodeError)r%   rr   r   r   r   rn     s,    


rn   T)ÚdomainÚ
std3_rulesÚtransitionalr   c             C   s4  ddl m } d}�xt| ƒD �]\}}t|ƒ}yÀ||dk r>|ntj||dfƒd  }|d }	d}
t|ƒdkrt|d }
|	d	ks |	d
krŠ| s |	dkrª| rª|
dkrª||7 }nB|
dk	rÞ|	dksÔ|	dkrÈ| sÔ|	d
krÞ|rÞ||
7 }n|	dkrìtƒ ‚W q tk
�r"   tdjt	|ƒ|d t
| ƒƒƒ‚Y qX qW tjd|ƒS )zBRe-map the characters in the string according to UTS46 processing.r   )Ú	uts46datar.   é   ÚZNé   rG   ÚVrQ   Ú3rD   ÚIz-Codepoint {} not allowed at position {} in {}rL   )rz   r:   r   ÚbisectÚbisect_leftr'   Ú
IndexErrorr   r#   r$   r<   r   rM   )rw   rx   ry   rz   ÚoutputrO   ÚcharÚ
code_pointÚuts46rowÚstatusÚreplacementr   r   r   Úuts46_remap4  s4    


"rŠ   )r   ÚstrictÚuts46rx   ry   r   c       	      C   sò   t | tƒs6yt| dƒ} W n tk
r4   tdƒ‚Y nX |rFt| ||ƒ} d}g }|r^| jdƒ}n
tj| ƒ}| sx|dgkr€tdƒ‚|d dkr–|d= d}x,|D ]$}t|ƒ} | r¸|j| ƒ qœtd	ƒ‚qœW |rÒ|jd
ƒ dj	|ƒ} t
| |ƒsîtdƒ‚| S )Nrm   zGshould pass a unicode string to the function rather than a byte string.FÚ.r.   zEmpty domainr   TzEmpty labeló    ó   .zDomain too longrJ   rJ   )rg   rp   ÚUnicodeDecodeErrorr   rŠ   ÚsplitÚ_unicode_dots_rers   ÚappendÚjoinr,   )	r   r‹   rŒ   rx   ry   r)   ÚresultÚlabelsr%   r   r   r   r!   T  s8    





r!   )r   r‹   rŒ   rx   r   c             C   sØ   yt | tƒst| dƒ} W n tk
r4   tdƒ‚Y nX |rFt| |dƒ} d}g }|s^tj| ƒ}n
| jdƒ}| sx|dgkr€tdƒ‚|d
 s’|d= d}x,|D ]$}t|ƒ} | r´|j| ƒ q˜td	ƒ‚q˜W |rÎ|jdƒ dj	|ƒS )Nrm   zInvalid ASCII in A-labelFr�   r.   zEmpty domainr   TzEmpty labelrJ   rJ   )
rg   rp   r�   r   rŠ   r’   r‘   rn   r“   r”   )r   r‹   rŒ   rx   r)   r•   r–   r%   r   r   r   rj   u  s2    



rj   )F)F)TF)FFFF)FFF)*r.   r   r�   r   ÚreÚtypingr   r   Ú	intrangesr   rR   rq   Úcompiler’   rv   r   r   r   r   Úintr   rp   Úboolr   rh   r"   r$   r(   r,   rC   rF   rK   rN   rZ   rc   ri   rl   rs   rn   rŠ   r!   rj   r   r   r   r   Ú<module>   s<   
;+* $!