
    Eqg                        d dl mZmZ d dlmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZ ddlZddlZddlZddlZddlmZmZmZmZ dedeee         eeef         fdZd	ed
edefdZdedefdZ G d de          Z 	 	 d+dedededede f
dZ!d,dededdfdZ"dededededdf
dZ# G d d e          Z$d-d!ed"ed#ede$fd$Z%d%eddfd&Z& G d' d(e          Z'd)ede'fd*Z(dS ).   )EmailSyntaxErrorValidatedEmail)EMAIL_MAX_LENGTHLOCAL_PART_MAX_LENGTHDOMAIN_MAX_LENGTHDOT_ATOM_TEXTDOT_ATOM_TEXT_INTLATEXT_REATEXT_INTL_DOT_REATEXT_HOSTNAME_INTL
QTEXT_INTLDNS_LABEL_LENGTH_LIMITDOT_ATOM_TEXT_HOSTNAMEDOMAIN_NAME_REGEXDOMAIN_LITERAL_CHARS    N)OptionalTuple	TypedDictUnionemailreturnc                 D   dt           dt          t           df         dt          t           t           f         fd}dt           dt          t           t          f         fd} || d          \  }}|                    d          r|                                } ||          \  }}|sCd	 |D             }|r5t          d
d                    t          |                    z   dz             t          |d           d|vrt          d          |                    d          }|d         dk    rt          d          |dd                              d          } ||d          \  }	}
nd }||}
}	|
                    d          r
|
dd          }
 ||	          \  }	}||	|
|fS )Ntextspecials.r   c                    d}d}d}t          |           D ]m\  }}t          j        d| |d                    d         |k    r||z  }2|r ||z  }|dk    r|sd}D|dk    r|sd}d}Qd}T|dk    r||z  }d}b||v r n||z  }nt          |          t          |           k    rt	          d          | t          |          d          }||fS )	NF NFCr   \T"z%An email address must have an @-sign.)	enumerateunicodedata	normalizelenr   )r   r   inside_quoteescaped	left_partic
right_parts           H/var/www/html/env/lib/python3.11/site-packages/email_validator/syntax.py split_string_at_unquoted_specialz5split_email.<locals>.split_string_at_unquoted_special1   s   
 	dOO 	 	DAq $UDH55a8A==Q		 Q	99W9"GG#XXgX#(L#GG#GGcQ	#hQ		y>>SYY&&"#JKKK #i..//*
*$$    c           
      N   d}d}d}t          |           D ]\  }}|rq|r||z  }d}|dk    rd}|dk    rR|t          |           dz
  k    r:t          dd                    d	 | |dz   d          D                       z              n||z  }x|d
k    r	|dk    rd}||z  }||fS )NFr   r   Tr    r   z,Extra character(s) found after close quote: , c              3   4   K   | ]}t          |          V  d S Nsafe_character_display.0r)   s     r+   	<genexpr>z=split_email.<locals>.unquote_quoted_string.<locals>.<genexpr>o   s-      :k:kYZ;QRS;T;T:k:k:k:k:k:kr-   r   )r!   r$   r   join)r   quotedr&   valuer(   r)   s         r+   unquote_quoted_stringz*split_email.<locals>.unquote_quoted_string]   s   
 dOO 	 	DAq  QJE#GG$YY"GG#XXCIIM))./]15:k:k^bcdghchcici^j:k:k:k1k1k0l m m mEQJEEaAHH
f}r-   )@<r<   c                 l    h | ]1}t          j        |          s|d k    s|dk    "t          |          2S ) .r
   matchr3   r4   s     r+   	<setcomp>zsplit_email.<locals>.<setcomp>   sM        q)) /03hh188 'q));C88r-   z>The display name contains invalid characters when not quoted: r/   r?   Tallow_space>zoAn open angle bracket at the start of the email address has to be followed by a close angle bracket at the end.r>   z0There can't be anything after the email address.r   )r;   r;   )	strr   bool
startswithrstripr   r7   sortedcheck_unsafe_chars)r   r,   r:   r'   r*   display_namedisplay_name_quoted	bad_chars	addr_spec
local_partdomain_partis_quoted_local_parts               r+   split_emailrT      sX   H*%s *%eCHo *%RWX[]`X`Ra *% *% *% *%XC E#t),<    < =<UJOOIz S!! '8$$&&	 -B,A),L,L)) # 	N %  I
  N&'gjnjsjstz  |E  uF  uF  kG  kG  (G  JM  (M  N  N  N 	<T:::: j  "  $U  V  V  V&&s++
b>S  "#UVVV qrrN))#..	 #C"B9f"U"U
KK
 "+ZK
c"" &!!""o (='<Z'H'H$J$[2FFFr-   addrlimitc                 L    t          |           |z
  }|dk    rdnd}d| d| dS )zEHelper function to return an error message related to invalid length.r   sr   (
 character
 too many))r$   )rU   rV   diffsuffixs       r+   get_length_reasonr^      s<    t99uD1HHSS"F1t11v1111r-   r)   c                 V   | dk    rd|  dS t          j        |           d         dv rt          |           S t          |           dk     r&dt          |           d                                }n%dt          |           d                                }t          j        | |          S )	Nr   r    r   LNPSi  zU+04x08x)r"   categoryreprorduppername)r)   hs     r+   r3   r3      s    DyyAzzzAq!%999Aww 1vvQ##%%Q##%% Aq!!!r-   c                   :    e Zd ZU eed<   ee         ed<   eed<   dS )LocalPartValidationResultrQ   ascii_local_partsmtputf8N)__name__
__module____qualname__rG   __annotations__r   rH    r-   r+   rn   rn      s2         OOOsm###NNNNNr-   rn   TFlocalallow_smtputf8allow_empty_localquoted_local_partc                    t          |           dk    r|st          d          | | ddS t          |           t          k    r)t          | t                    }t          d| d          t	          j        |           r| | ddS d}d}t          j        |           rY|sRd	 | D             }|r5t          d
d                    t          |                    z   dz             t          d          d}d}n|rd | D             }|r5t          dd                    t          |                    z   dz             d | D             }|r9d}|s5t          d
d                    t          |                    z   dz             d}|rzt          | |dk               	 | 
                    d           n"# t          $ r}t          d          |d}~ww xY w|dk    rdt          j        dd|           z   dz   } | |s| nd|dS d | D             }|r5t          dd                    t          |                    z   dz             t          | ddd           t          d          )z;Validates the syntax of the local part of an email address.r   z*There must be something before the @-sign.F)rQ   ro   rp   rV   z0The email address is too long before the @-sign r?   Nc                 T    h | ]%}t          j        |          t          |          &S ru   r@   r4   s     r+   rB   z,validate_email_local_part.<locals>.<setcomp>  s@       ~a((&q))  r-   zBInternationalized characters before the @-sign are not supported: r/   zAInternationalized characters before the @-sign are not supported.zdot-atomTc                 T    h | ]%}t          j        |          t          |          &S ru   )r   rA   r3   r4   s     r+   rB   z,validate_email_local_part.<locals>.<setcomp>$  sA     
 
 
#A&&
"1%%
 
 
r-   zKThe email address contains invalid characters in quotes before the @-sign: c                 d    h | ]-}d t          |          cxk    rdk    n t          |          .S )    ~   )ri   r3   r4   s     r+   rB   z,validate_email_local_part.<locals>.<setcomp>-  sO     
 
 
#a&&''''C'''' #1%%'''r-   r8   rC   utf8z0The email address contains an invalid character.r    z(["\\])z\\\1c                 T    h | ]%}t          j        |          t          |          &S ru   )r   rA   r3   r4   s     r+   rB   z,validate_email_local_part.<locals>.<setcomp>a  sA        &q))q!!  r-   zAThe email address contains invalid characters before the @-sign: z(An email address cannot start with a {}.z@An email address cannot have a {} immediately before the @-sign.is_hostnamez@The email address contains invalid characters before the @-sign.)r$   r   r   r^   r   rA   r	   r7   rK   rL   encode
ValueErrorresubcheck_dot_atom)	rv   rw   rx   ry   reasonvalidrequires_smtputf8rO   es	            r+   validate_email_local_partr      s0    5zzQ  	Q"#OPPP
   %
 
 	
 5zz)))"50EFFF[RX[[[\\\ 5!! 
   %
 
 	
  E&& 4 	h   I
  R&'knrnwnwx~  @I  yJ  yJ  oK  oK  (K  NQ  (Q  R  R  R ##fggg   
 

 

 
 
	
  	W"#psws|s|  ~D  EN  ~O  ~O  tP  tP  $P  SV  $V  W  W  W
 

 
 
	
  	R $ " R&'knrnwnwx~  @I  yJ  yJ  oK  oK  (K  NQ  (Q  R  R  R   
 	5u/@BBBB
	^LL     	^ 	^ 	^"#UVV\]]	^ H"&We<<<sBE  -> HD)
 
 	
   I
  Ibeienenouv  pA  pA  fB  fB   B  EH   H  I  I  	I 5D  GI  W\  ]  ]  ]  ] ]
^
^^s   F3 3
G=GGrX   rD   c           	      J   t                      }t          |           D ]\  }}t          j        |          }|d         dv r$|d         dk    r|dk    r|                    |           L|dk    r|s|                    |           j|d         dk    r|                    |           |d         dk    r|                    |           |                    |           |r?t          dd                    d	 t          |          D                       z   d
z             d S )Nr   r`   MZsZCz.The email address contains unsafe characters: r/   c              3   4   K   | ]}t          |          V  d S r1   r2   r4   s     r+   r6   z%check_unsafe_chars.<locals>.<genexpr>  s+      *`*`+A!+D+D*`*`*`*`*`*`r-   r?   )setr!   r"   rg   addr   r7   rK   )rX   rD   rO   r(   r)   rg   s         r+   rL   rL   r  sd    I! * *1'**A;...a[C
 Avva     !a   a[C
 MM!a[C MM! MM! hO!%*`*`fU^N_N_*`*`*`!`!` acf g h h 	hh hr-   labelstart_descr	end_descrr   c                    |                      d          r"t          |                    d                    |                     d          r"t          |                    d                    d| v rt          d          |r|                      d          r"t          |                    d                    |                     d          r"t          |                    d                    d| v sd| v rt          d	          d S d S )
Nr?   periodz..z2An email address cannot have two periods in a row.-hyphenz.-z-.zFAn email address cannot have a period and a hyphen next to each other.)endswithr   formatrI   )r   r   r   r   s       r+   r   r     s   ~~c ;y//99::: ={11(;;<<<u}}STTT m>># 	?"9#3#3H#=#=>>>C   	A";#5#5h#?#?@@@5==DEMM"#klllm m *Mr-   c                   $    e Zd ZU eed<   eed<   dS )DomainNameValidationResultascii_domaindomainN)rq   rr   rs   rG   rt   ru   r-   r+   r   r     s%         KKKKKr-   r   r   test_environmentglobally_deliverablec                 &   d | D             }|r5t          dd                    t          |                    z   dz             t          |            | }	 t	          j        | dd          } n+# t          j        $ r}t          d| d          |d	}~ww xY wd
 | D             }|r5t          dd                    t          |                    z   dz             t          | ddd           |                     d          D ]1}t          j
        d|t          j                  rt          d          2t          j
        |           r| }n	 d                    d |                     d          D                       }n+# t          j        $ r}t          d| d          |d	}~ww xY wt          j
        |          st          d          t          |          t          k    rf||k    r)t          |t                    }t          d| d          t          |          t          z
  }	|	dk    rdnd}
t          d|	 d|
 d          |                    d          D ]C}t          |          t           k    r)t          |t                     }t          d| d          D|r>d|vr|dk    r|st          d          t#          j        |          st          d           dd!lm} |D ]8}|dk    r|r||k    s|                    d|z             rt          d"          9	 t	          j        |                    d#                    }n+# t          j        $ r}t          d$| d          |d	}~ww xY wd% | D             }|r5t          dd                    t          |                    z   dz             t          |            	 t	          j        |           n+# t          j        $ r}t          d&| d          |d	}~ww xY w||d'S )(z<Validates the syntax of the domain part of an email address.c                 T    h | ]%}t          j        |          t          |          &S ru   r   rA   r3   r4   s     r+   rB   z-validate_email_domain_name.<locals>.<setcomp>  A       "(++q!!  r-   z7The part after the @-sign contains invalid characters: r/   r?   F)
std3_rulestransitionalz7The part after the @-sign contains invalid characters ().Nc                 T    h | ]%}t          j        |          t          |          &S ru   r   r4   s     r+   rB   z-validate_email_domain_name.<locals>.<setcomp>  r   r-   zSThe part after the @-sign contains invalid characters after Unicode normalization: z?An email address cannot have a {} immediately after the @-sign.z&An email address cannot end with a {}.Tr   z
(?!xn)..--zAn email address cannot have two letters followed by two dashes immediately after the @-sign or after a period, except Punycode.c              3   d   K   | ]+}t          j        |                              d           V  ,dS )asciiN)idnaalabeldecode)r5   r   s     r+   r6   z-validate_email_domain_name.<locals>.<genexpr>
  sN       $ $ E""))'22$ $ $ $ $ $r-   z&The part after the @-sign is invalid (zSThe email address contains invalid characters after the @-sign after IDNA encoding.r{   z/The email address is too long after the @-sign r   r   rX   z0The email address is too long after the @-sign ( bytez too many after IDNA encoding).zDAfter the @-sign, periods cannot be separated by so many characters testz@The part after the @-sign is not valid. It should have a period.zRThe part after the @-sign is not valid. It is not within a valid top-level domain.)SPECIAL_USE_DOMAIN_NAMESz[The part after the @-sign is a special-use or reserved name that cannot be used with email.r   z-The part after the @-sign is not valid IDNA (c                 T    h | ]%}t          j        |          t          |          &S ru   r   r4   s     r+   rB   z-validate_email_domain_name.<locals>.<setcomp>`  r   r-   zXThe part after the @-sign became invalid after normalizing to international characters ()r   r   )r   r7   rK   rL   r   uts46_remap	IDNAErrorr   splitr   rA   Ir   r$   r   r^   r   r   searchr   r   r   r   r   )r   r   r   rO   original_domainr   r   r   r   r\   rX   r   ddomain_i18ns                 r+   validate_email_domain_namer     s   
   I
  X[_[d[dekluevev[w[wwz}}~~~ v Og!&UOOO> g g g^YZ^^^__effg
   I
  [tw{  xA  xA  BH  IR  BS  BS  xT  xT   T  WZ   Z  [  [  	[ 6\  _G  UY  Z  Z  Z  Z c"" g g8M5"$// 	g"  $f  g  g  g	g #F++ z	Z88 $ $#\\#..$ $ $  LL ~ 	Z 	Z 	Z"#QA#Q#Q#QRRXYY	Z &+L99 	z"#xyyy <,,,?**&|;LMMMF"#^U[#^#^#^___|$$'88DaiiSA"  $DVZ  $D  $Dab  $D  $D  $D  E  E  E ##C(( u uu::...&u4JKKKF"#sjp#s#s#sttt /  y l""LF,B,BGW,B"#efff !'55 	y"#wxxx +*****% B B;;+;1 5 5cAg > >"  $A  B  B  B ]k,"5"5g">">??> ] ] ]TqTTTUU[\\]   I
  X[_[d[dekluevev[w[wwz}}~~~vHK    > H H Hz{  A  A  GH  	HH %  s`   A. .B=BB2F F)F$$F)('M M8M33M8O# #P2PPaddrinfoc                 .   | j         d f| j        df| j        p| j        pddz   | j        z   dfg}|D ]\  }}t          |          }t          |                    d                    }|t          z
  }|dk    r|||k    rt          |t                    }nk|St          d |D                       }t          d	||z            }|d	k    rd
nd}	||k    r
d| d|	 d}n#d| d| d|	 d}n|d	k    rd
nd}	|d| d|	 dz  }t          d| d          d S )Nzafter normalizationr   r;   z9when the part after the @-sign is converted to IDNA ASCIIr   r   r{   c              3   Z   K   | ]&}t          |                    d                     V  'dS )r   N)r$   r   r4   s     r+   r6   z(validate_email_length.<locals>.<genexpr>  s6      ??Q3qxx//00??????r-   r   rX   rY   rZ   r[   r   z (r   zThe email address is too long r?   )original
normalizedro   rQ   r   r$   r   r   r^   maxr   )
r   addresses_to_checkrU   r   addr_lenaddr_utf8_lenr\   mbpcmcharsr]   s
             r+   validate_email_lengthr   |  s   2 
	D!		34

#
@x':
@bC	G(J_	_  b]  	^ + O Oft99DKK//00//!88~(m";"; +47GHHH ??$?????Q-- $qbT>>CCCCCCFFLLL$LL&LLLFF
 !%qb<t<<&<<<<"#MF#M#M#MNNN5 	O Or-   c                   H    e Zd ZU eej        ej        f         ed<   eed<   dS )DomainLiteralValidationResultdomain_addressr   N)	rq   rr   rs   r   	ipaddressIPv4AddressIPv6Addressrt   rG   ru   r-   r+   r   r     s5         )/1FFGGGGKKKKKr-   r   domain_literalc                 N   t          j        d|           rE	 t          j        |           }n&# t          $ r}t          d| d          |d }~ww xY w|d| ddS |                     d          rR	 t          j        | dd                    }n&# t          $ r}t          d	| d
          |d }~ww xY w|d|j         ddS d| vrt          d          d | D             }|r5t          dd	                    t          |                    z   dz             t          d          )Nz
^[0-9\.]+$zRThe address in brackets after the @-sign is not valid: It is not an IPv4 address (z') or is missing an address literal tag.[])r   r   zIPv6:   z<The IPv6 address in brackets after the @-sign is not valid (r   z[IPv6::z\The part after the @-sign in brackets is not an IPv4 address and has no address literal tag.c                 T    h | ]%}t          j        |          t          |          &S ru   )r   rA   r3   r4   s     r+   rB   z0validate_email_domain_literal.<locals>.<setcomp>  sA       #)!,,q!!  r-   zCThe part after the @-sign contains invalid characters in brackets: r/   r?   zNThe part after the @-sign contains an invalid address literal tag in brackets.)r   rA   r   r   r   r   rI   r   
compressedr7   rK   )r   rU   r   rO   s       r+   validate_email_domain_literalr     s    
x~.. 

	k(88DD 	k 	k 	k"  $cxy  $c  $c  $c  d  d  jk  k	k
 #!$kkk
 
 	
   )) 
	p();<<DD 	p 	p 	p"#gbc#g#g#ghhnoo	p #1t111
 
 	
 .  }~~~   I
  Kdgkgpgpqw  yB  rC  rC  hD  hD   D  GJ   J  K  K  	K k
l
lls,   , 
AA

A1B 
B1B,,B1)TFF)F)FT))exceptions_typesr   r   rfc_constantsr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r"   r   r   typingr   r   r   r   rG   rH   rT   intr^   r3   rn   r   rL   r   r   r   r   r   r   ru   r-   r+   <module>r      s   > > > > > > > >\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 
			          4 4 4 4 4 4 4 4 4 4 4 4cGs cGuXc]Cd%BC cG cG cG cGL2C 2 2 2 2 2 2"c "c " " " ""    	    bg8=^_ ^_S ^_$ ^_Z^ ^_15^_B[^_ ^_ ^_ ^_B1h 1h# 1hD 1hT 1h 1h 1h 1hhm# mC mC md mW[ m m m m&       
{ {s {d {bf {  sM { { { {|<ON <Ot <O <O <O <O~    I   
9m# 9m:W 9m 9m 9m 9m 9m 9mr-   