U
    ;g3                     @   s  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dlm	Z	 dZ
dZe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    N)OptionalUnion   )idnadata)intranges_contain	   s   xn--u   [.。．｡]c                   @   s   e Zd ZdZdS )	IDNAErrorz5Base exception for all IDNA-encoding related problemsN__name__
__module____qualname____doc__ r   r   I/opt/bot/vods_filmes/script/venv/lib/python3.8/site-packages/idna/core.pyr      s   r   c                   @   s   e Zd ZdZdS )IDNABidiErrorz;Exception when bidirectional requirements are not satisfiedNr	   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 usedNr	   r   r   r   r   r      s   r   c                   @   s   e Zd ZdZdS )InvalidCodepointContextzCException when the codepoint is not valid in the context it is usedNr	   r   r   r   r   r       s   r   )cpreturnc                 C   s0   t t| }|dkr,t 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
   |  dS )Npunycode)encoder    r   r   r   	_punycode2   s    r$   c                 C   s
   d | S )NzU+{:04X})formatr#   r   r   r   _unot6   s    r&   )labelr   c                 C   s   t | dkrdS dS )N?   FTlenr'   r   r   r   valid_label_length:   s    r,   )r'   trailing_dotr   c                 C   s   t | |rdndkrdS dS )N      FTr)   )r'   r-   r   r   r   valid_string_length@   s    r0   F)r'   	check_ltrr   c           	      C   s^  d}t | dD ]:\}}t|}|dkr<tdt| ||dkrd}q|sV|sVdS t| d }|dkrrd}n |d	krd}ntd
t| d}d }t | dD ]\}}t|}|r|dkrtd||dkrd}n|dkrd}|dkrJ|s|}n||krJtdq|dkr.td||dkr>d}q|dkrd}q|sZtddS )NFr    z1Unknown directionality in label {} at position {})RALANTr   )r3   r4   Lz=First codepoint in label {} must be directionality L, R or AL)
r3   r4   r5   ENESCSETONBNNSMzGInvalid direction for codepoint at position {} in a right-to-left label)r3   r4   r7   r5   r=   )r5   r7   z2Can not mix numeral types in a right-to-left label)r6   r7   r8   r9   r:   r;   r<   r=   zGInvalid direction for codepoint at position {} in a left-to-right label)r6   r7   z0Label ends with illegal codepoint directionality)	enumerater   bidirectionalr   r%   repr)	r'   r1   
bidi_labelidxr   	directionrtlvalid_endingnumber_typer   r   r   
check_bidiF   sP    






rG   c                 C   s"   t | 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_combiner   s    rJ   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   -z)Label must not start or end with a hyphenT)r   r+   r   r   r   check_hyphen_ok   s
    rO   c                 C   s   t 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    rR   )r'   posr   c                 C   sL  t | | }|dkr|dkr:tt | |d  tkr:dS d}t|d ddD ]J}tjt | | }|t dkrvqNqN|t dt d	fkrd} qqN qqN|sdS d}t|d t| D ]P}tjt | | }|t dkrqq|t d
t d	fkrd} q
q q
q|S |dkrD|dkr@tt | |d  tkr@dS dS dS d S )Ni   r   r   TFrN   Tr6   Dr3   i   )r   r   _virama_combining_classranger   joining_typesgetr*   )r'   rS   cp_valueokijoining_typer   r   r   valid_contextj   s@    


r^   )r'   rS   	exceptionr   c                 C   s  t | | }|dkrdd|  k r0t| d k r`n n,t | |d  dkr`t | |d  dkr`dS dS |dkr|t| d k rt| dkrt| |d  dS dS |d	ks|d
kr|dkrt| |d  dS dS |dkr| D ]6}|dkrqt|ds
t|ds
t|dr dS qdS d|  kr.dkrhn n6| D ],}dt |  krVdkr6n n dS q6dS d|  krdkrn n6| D ],}dt |  krdkrn n dS qdS dS )N   r   r   l   TFiu  Greeki  i  Hebrewi0  u   ・HiraganaKatakanaHani`  ii  i  i  )r   r*   r   )r'   rS   r_   rZ   r   r   r   r   valid_contexto   s@     (
" 
 
rg   c                 C   sL  t | ttfr| d} t| dkr,tdt|  t|  t|  t	| D ]\}}t
|}t|tjd rpqLqLt|tjd rz,t| |stdt||d t| W n2 tk
r   tdt||d t| Y nX qLt|tjd	 r t| |s>td
t||d t| qLtdt||d t| qLt|  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 {}CONTEXTO-Codepoint {} not allowed at position {} in {}z-Codepoint {} at position {} of {} not allowed)
isinstancebytes	bytearraydecoder*   r   rR   rO   rJ   r>   r   r   r   codepoint_classesr^   r   r%   r&   r@   r   rg   r   rG   )r'   rS   r   rZ   r   r   r   check_label   sD    

  rq   c                 C   sf   z(|  d}t| t|s$td|W S  tk
r<   Y nX t|  tt|  }t|sbtd|S )NasciizLabel too long)r"   ulabelr,   r   UnicodeEncodeErrorrq   _alabel_prefixr$   r'   label_bytesr   r   r   alabel  s    
rx   c                 C   s   t | ttfs@z| d}W qD tk
r<   t|  |  Y S X n| }| }|tr|t	td  }|srt
d|dd dkrt
dnt| |dS z|d} W n tk
r   t
dY nX t|  | S )Nrr   z5Malformed A-label, no Punycode eligible content foundrN   rM   z"A-label must not end with a hyphenr!   zInvalid A-label)rl   rm   rn   r"   rt   rq   lower
startswithru   r*   r   ro   UnicodeErrorrv   r   r   r   rs   /  s,    


rs   T)domain
std3_rulestransitionalr   c                 C   s(  ddl m } d}t| D ] \}}t|}z||dk r:|nt||dfd  }|d }	d}
t|dkrp|d }
|	d	ks|	d
kr|r|	dkr|s|
dkr||7 }n@|
dk	r|	dks|	dkr|r|	d
kr|r||
7 }n|	dkrt W q tk
r   tdt	||d t
| Y qX qtd|S )zBRe-map the characters in the string according to UTS46 processing.r   )	uts46datar2      ZN   rK   VrU   3rH   Irk   rP   )r   r>   r   bisectbisect_leftr*   
IndexErrorr   r%   r&   r@   r   rQ   )r|   r}   r~   r   outputrS   char
code_pointuts46rowstatusreplacementr   r   r   uts46_remapL  sT    $


r   )r    strictuts46r}   r~   r   c           	      C   s   t | ts6zt| d} W n tk
r4   tdY nX |rFt| ||} d}g }|r^| d}n
t| }|rv|dgkr~td|d dkr|d= d}|D ]$}t|} | r||  qtd	q|r|d
 d	|} t
| |std| S )Nrr   zGshould pass a unicode string to the function rather than a byte string.F.r2   Empty domainrN   TEmpty label       .zDomain too long)rl   strUnicodeDecodeErrorr   r   split_unicode_dots_rerx   appendjoinr0   )	r    r   r   r}   r~   r-   resultlabelsr'   r   r   r   r"   n  s8    





r"   )r    r   r   r}   r   c                 C   s   zt | tst| d} W n tk
r4   tdY nX |rFt| |d} d}g }|s^t| }n
| d}|rv|dgkr~td|d s|d= d}|D ]$}t|} | r||  qtd	q|r|d d	|S )
Nrr   zInvalid ASCII in A-labelFr   r2   r   rN   Tr   )
rl   r   r   r   r   r   r   rs   r   r   )r    r   r   r}   r-   r   r   r'   r   r   r   ro     s2    



ro   )F)F)TF)FFFF)FFF)*r   rer   typingr   r   r2   r   	intrangesr   rV   ru   compiler   r{   r   r   r   r   intr   r   boolr   rm   r$   r&   r,   r0   rG   rJ   rO   rR   r^   rg   rn   rq   rx   rs   r   r"   ro   r   r   r   r   <module>   sd   
F,*'$    )   