U f3@sddlZddlZddlZddlmZmZddlmZddlm Z dZ dZ e dZ Gd d d eZGd d d eZGd ddeZGdddeZeedddZeeedddZeedddZeedddZeeefedddZeeefeedd d!ZdBeeed#d$d%Zeedd&d'Zeedd(d)Zeddd*d+Z eeed,d-d.Z!dCeeeed/d0d1Z"eeee#fddd2d3Z$eedd4d5Z%eeee#fedd6d7Z&dDeeeed9d:d;Z'dEeeee#feeeeed<d=d>Z(dFeeee#feeeed?d@dAZ)dS)GN)OptionalUnion)idnadata)intranges_contain sxn--u [.。.。]c@seZdZdZdS) IDNAErrorz5Base exception for all IDNA-encoding related problemsN__name__ __module__ __qualname____doc__rr:/opt/alt/python38/lib/python3.8/site-packages/idna/core.pyrsrc@seZdZdZdS) IDNABidiErrorz;Exception when bidirectional requirements are not satisfiedNr rrrrrsrc@seZdZdZdS)InvalidCodepointzd}q|dkrd}q|sZtddS)NFrz1Unknown directionality in label {} at position {})RALANTr)r3r4Lz=First codepoint in label {} must be directionality L, R or AL) r3r4r5ENESCSETONBNNSMzGInvalid direction for codepoint at position {} in a right-to-left label)r3r4r7r5r=)r5r7z2Can not mix numeral types in a right-to-left label)r6r7r8r9r:r;r<r=zGInvalid direction for codepoint at position {} in a left-to-right label)r6r7z0Label ends with illegal codepoint directionality) enumerater bidirectionalrr%repr) r'r1 bidi_labelidxr directionrtl valid_ending number_typerrr check_bidiFsP        rGcCs"t|dddkrtddS)NrMz0Label begins with an illegal combining characterT)rcategoryrr+rrrcheck_initial_combinersrJcCs<|dddkrtd|ddks0|ddkr8tdd S) Nz--z4Label has disallowed hyphens in 3rd and 4th positionr-z)Label must not start or end with a hyphenT)rr+rrrcheck_hyphen_oks rOcCstd||krtddS)NNFCz%Label must be in Normalization Form C)r normalizerr+rrr check_nfcsrR)r'posrcCsLt||}|dkr|dkr:tt||dtkr:dSd}t|dddD]J}tjt||}|tdkrvqNqN|tdtd fkrd}qqNqqN|sdSd}t|dt|D]P}tjt||}|tdkrqq|td td fkrd}q qq q|S|d krD|dkr@tt||dtkr@dSdSdSdS) Ni rrTFrNTr6Dr3i )rr_virama_combining_classranger joining_typesgetr*)r'rScp_valueoki joining_typerrrvalid_contextjs@      r^)r'rS exceptionrcCst||}|dkrdd|kr0t|dkr`nn,t||ddkr`t||ddkr`dSdS|dkr|t|dkrt|dkrt||ddSdS|d ks|d kr|dkrt||dd SdS|d kr|D]6}|d krqt|ds t|ds t|drdSqdSd|kr.dkrhnn6|D],}dt|krVdkr6nndSq6dSd|krdkrnn6|D],}dt|krdkrnndSqdSdS)NrrlTFiuGreekiiHebrewi0u・HiraganaKatakanaHani`iiii)rr*r)r'rSr_rZrrrrvalid_contextos@  ( "    rgc CsLt|ttfr|d}t|dkr,tdt|t|t|t |D]\}}t |}t |t j drpqLqLt |t j drz,t||stdt||dt|Wn2tk rtdt||dt|YnXqLt |t j d r t||s>td t||dt|qLtd t||dt|qLt|dS) Nzutf-8rz Empty LabelPVALIDCONTEXTJz*Joiner {} not allowed at position {} in {}rzrrrcodepoint_classesr^rr%r&r@rrgrrG)r'rSrrZrrr check_labelsD     rqcCsfz(|d}t|t|s$td|WStk r<YnXt|tt|}t|sbtd|S)NasciizLabel too long)r"ulabelr,rUnicodeEncodeErrorrq_alabel_prefixr$r' label_bytesrrralabels  rxcCst|ttfs@z|d}WqDtk r<t||YSXn|}|}|tr|t td}|srt d| dddkrt dnt|| dSz| d}Wnt k rt dYnXt||S)Nrrz5Malformed A-label, no Punycode eligible content foundrNrMz"A-label must not end with a hyphenr!zInvalid A-label) rlrmrnr"rtrqlower startswithrur*rro UnicodeErrorrvrrrrs/s,    rsT)domain std3_rules transitionalrc Cs(ddlm}d}t|D]\}}t|}z||dkr:|nt||dfd}|d} d} t|dkrp|d} | d ks| d kr|r| d kr|s| dkr||7}n@| dk r| d ks| d kr|r| d kr|r|| 7}n| d krtWqtk rtdt ||dt |YqXqt d|S)zBRe-map the characters in the string according to UTS46 processing.r) uts46datar2ZNrKVrU3rHIrkrP) rr>rbisect bisect_leftr* IndexErrorrr%r&r@rrQ) r|r}r~routputrSchar code_pointuts46rowstatus replacementrrr uts46_remapLsT $     r)r strictuts46r}r~rc Cst|ts6zt|d}Wntk r4tdYnX|rFt|||}d}g}|r^|d}n t|}|rv|dgkr~td|ddkr|d=d}|D]$}t|}|r||qtd q|r|d d |}t ||std |S) NrrzGshould pass a unicode string to the function rather than a byte string.F.r2 Empty domainrNT Empty label.zDomain too long) rlstrUnicodeDecodeErrorrrsplit_unicode_dots_rerxappendjoinr0) r rrr}r~r-resultlabelsr'rrrr"ns8          r")r rrr}rcCszt|tst|d}Wntk r4tdYnX|rFt||d}d}g}|s^t|}n |d}|rv|dgkr~td|ds|d=d}|D]$}t|}|r||qtd q|r|dd |S) NrrzInvalid ASCII in A-labelFrr2rrNTr) rlrrrrrrrsrr)r rrr}r-rrr'rrrros2       ro)F)F)TF)FFFF)FFF)*rrertypingrrr2r intrangesrrVrucompilerr{rrrrintrrboolrrmr$r&r,r0rGrJrOrRr^rgrnrqrxrsrr"rorrrrsd   F,*'$  )