o
    tBh2                     @   s0  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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dd Zdd Zdd Zdd Zdd Zdd Zd7ddZd d! Zd"d# Zd$d% Zd&d' Zd7d(d)Zd*d+ Zd,d- Z d.d/ Z!d8d1d2Z"d9d3d4Z#d:d5d6Z$dS );   )idnadata    N)UnionOptional)intranges_contain	   s   xn--u   [.。．｡]c                   @      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/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/idna/core.pyr	          r	   c                   @   r   )IDNABidiErrorz= Exception when bidirectional requirements are not satisfied Nr
   r   r   r   r   r      r   r   c                   @   r   )InvalidCodepointz> Exception when a disallowed or unallocated codepoint is used Nr
   r   r   r   r   r      r   r   c                   @   r   )InvalidCodepointContextzE Exception when the codepoint is not valid in the context it is used Nr
   r   r   r   r   r      r   r   c                 C   s0   t t| }|dkrt t| std|S )Nr   z Unknown character in unicodedata)unicodedata	combiningchrname
ValueError)cpvr   r   r   _combining_class    s
   r   c                 C   s   t t| tj| S )N)r   ordr   scripts)r   scriptr   r   r   
_is_script(   s   r    c                 C   s
   |  dS )Npunycode)encodesr   r   r   	_punycode,      
r%   c                 C   s
   d | S )NzU+{:04X})formatr#   r   r   r   _unot0   r&   r(   c                 C   s   t | dkrdS dS )N?   FTlenlabelr   r   r   valid_label_length5   s   r.   c                 C   s   t | |rdndkrdS dS )N      FTr*   )r-   trailing_dotr   r   r   valid_string_length<   s   r2   Fc           	      C   sP  d}t | dD ]\}}t|}|dkrtdt| ||dv r$d}q|s+|s+dS t| d }|dv r9d}n|d	kr@d}n	td
t| d}d }t | dD ]M\}}t|}|r|dvrhtd||dv rod}n|dkrud}|dv r|s~|}qR||krtdqR|dvrtd||dv rd}qR|dkrd}qR|stddS )NFr    z1Unknown directionality in label {} at position {})RALANTr   )r4   r5   Lz=First codepoint in label {} must be directionality L, R or AL)
r4   r5   r6   ENESCSETONBNNSMzGInvalid direction for codepoint at position {} in a right-to-left label)r4   r5   r8   r6   r>   )r6   r8   z2Can not mix numeral types in a right-to-left label)r7   r8   r9   r:   r;   r<   r=   r>   zGInvalid direction for codepoint at position {} in a left-to-right label)r7   r8   z0Label ends with illegal codepoint directionality)	enumerater   bidirectionalr   r'   repr)	r-   	check_ltr
bidi_labelidxr   	directionrtlvalid_endingnumber_typer   r   r   
check_bidiC   sV   

rI   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   rL   c                 C   s<   | dd dkrt d| d dks| d dkrt 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
   rQ   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   rT   c                 C   s,  t | | }|dkr||dkrtt | |d  tkrdS d}t|d ddD ]!}tjt | | }|t dkr9q&|t dt d	fv rGd} nq&|sLdS d}t|d t| D ]"}tjt | | }|t dkrjqW|t d
t d	fv ryd} |S qW|S |dkr|dkrtt | |d  tkrdS dS dS )Ni   r   r   TFrP   Tr7   Dr4   i   )r   r   _virama_combining_classranger   joining_typesgetr+   )r-   poscp_valueokijoining_typer   r   r   valid_contextj   sB   r`   c                 C   s  t | | }|dkr3d|  k rt| d k r1n dS t | |d  dkr1t | |d  dkr1dS dS |dkrP|t| d k rNt| dkrNt| |d  dS dS |d	ksX|d
krg|dkret| |d  dS dS |dkr| D ]}|dkrtqmt|dst|dst|dr dS qmdS d|  krdkrn n| D ]}dt |  krdkr dS  qqdS d|  krdkrn dS | D ]}dt |  krdkr dS  qqdS dS )N   r   r   l   TFiu  Greeki  i  Hebrewi0  u   ・HiraganaKatakanaHani`  ii  i  i  )r   r+   r    )r-   r[   	exceptionr\   r   r   r   r   valid_contexto   sJ   (ri   c                 C   s<  t | ttfr| d} t| dkrtdt|  t|  t|  t	| D ]q\}}t
|}t|tjd r7q&t|tjd rlzt| |sTtdt||d t| W q& tyk   tdt||d t| w t|tjd	 rt| |std
t||d t| q&tdt||d t| 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 {}CONTEXTO-Codepoint {} not allowed at position {} in {}z-Codepoint {} at position {} of {} not allowed)
isinstancebytes	bytearraydecoder+   r	   rT   rQ   rL   r?   r   r   r   codepoint_classesr`   r   r'   r(   rA   r   ri   r   rI   )r-   r[   r   r\   r   r   r   check_label   s:   


rs   c                 C   s|   z|  d}t| t|std|W S  ty   Y nw | s$tdt| } t|  t| }t| }t|s<td|S )NasciizLabel too longzNo Input)	r"   ulabelr.   r	   UnicodeEncodeErrorstrrs   r%   _alabel_prefixr-   label_bytesr   r   r   alabel  s$   
r{   c                 C   s   t | ttfsz| d}W n ty   t|  |  Y S w | }| }|trE|t	td  }|s7t
d|dd dkrDt
dn	t| |dS |d} t|  | S )Nrt   z5Malformed A-label, no Punycode eligible content foundrP   rO   z"A-label must not end with a hyphenr!   )rn   ro   rp   r"   rv   rs   lower
startswithrx   r+   r	   rq   ry   r   r   r   ru   %  s*   


ru   Tc                 C   s  ddl m } d}t| D ]{\}}t|}z]||dk r|n	t||dfd  }|d }	d}
t|dkr7|d }
|	d	ksK|	d
krA|rK|	dkrP|sP|
du rP||7 }n |
duri|	dksd|	dkr^|rd|	d
kri|ri||
7 }n|	dkrpt W q ty   tdt	||d t
| w td|S )zBRe-map the characters in the string according to UTS46 processing.r   )	uts46datar3      ZN   rM   VrV   3rJ   Irm   rR   )r~   r?   r   bisectbisect_leftr+   
IndexErrorr   r'   r(   rA   r   rS   )domain
std3_rulestransitionalr~   outputr[   char
code_pointuts46rowstatusreplacementr   r   r   uts46_remap@  s>   

r   c           	      C   s   t | ttfr| d} |rt| ||} d}g }|r | d}nt| }|r,|dgkr0td|d dkr;|d= d}|D ]}t|} | rK|	|  q=td|rV|	d	 d

|} t| |sdtd| S )Nrt   F.r3   Empty domainrP   TEmpty label       .zDomain too long)rn   ro   rp   rq   r   split_unicode_dots_rer	   r{   appendjoinr2   )	r$   strictuts46r   r   r1   resultlabelsr-   r   r   r   r"   a  s2   




r"   c                 C   s   t | ttfr| d} |rt| |d} d}g }|s t| }n| d}|r,|dgkr0td|d s9|d= d}|D ]}t|} | rI|	|  q;td|rT|	d d
|S )	Nrt   Fr   r3   r   rP   Tr   )rn   ro   rp   rq   r   r   r   r	   ru   r   r   )r$   r   r   r   r1   r   r   r-   r   r   r   rq     s,   



rq   )F)TF)FFFF)FFF)%r3   r   r   r   retypingr   r   	intrangesr   rW   rx   compiler   UnicodeErrorr	   r   r   r   r   r    r%   r(   r.   r2   rI   rL   rQ   rT   r`   ri   rs   r{   ru   r   r"   rq   r   r   r   r   <module>   s>    

<	
,+ 

!