
    4bh>                        	 g d Z ddlZddlZddlZddlZddlZddlZddlZddl	m
Z
 ddl	mZ ddl	mZ ddl	mZmZmZ ddlmZ dZd	Zd	Zd
ZdZ ej0                  d      Z ej0                  d      Zd Zd Zd&dZd Zd ZdZ dddZ!d Z"d Z#d Z$d Z%d'dZ&d(dZ'd)dZ(d Z)dddZ*d Z+d  Z,d)d!Z- ej0                  d"ej\                        Z/d# Z0	 	 d*d$Z1d)d%Z2y)+)collapse_rfc2231_valuedecode_paramsdecode_rfc2231encode_rfc2231
formataddr
formatdateformat_datetimegetaddresses
make_msgid	mktime_tz	parseaddr	parsedateparsedate_tzparsedate_to_datetimeunquote    N)quote)AddressList)r   )r   r   _parsedate_tz)Charsetz,  z
'z[][\\()<>@,:;".]z[\\"]c                 F    	 	 | j                          y# t        $ r Y yw xY w)NFT)encodeUnicodeEncodeError)ss    5/opt/python-3.12.12/usr/lib/python3.12/email/utils.py_has_surrogatesr   4   s(    E	
 s    	  c                 J    | j                  dd      }|j                  dd      S )Nutf-8surrogateescapereplace)r   decode)stringoriginal_bytess     r   	_sanitizer%   A   s(    
 ]]7,=>N  )44    c                 X   	 | \  }}|j                  d       |rM	 |j                  d       d}t        j                  |      rd}t        j	                  d|      }|||d|dS |S # t
        $ r7 t        |t              rt        |      }|j                  |      }|d|dcY S w xY w)Nasciir   "z\\\g<0>z <>)
r   
specialsresearch	escapesresubr   
isinstancestrr   header_encode)paircharsetnameaddressquotesencoded_names         r   r   r   M   s     MD'NN7	CKK  F  &==T2D$*D&'BBN " 	7'3'!'*"006L ,g66		7s   A) )=B)(B)c              #      K   d}d}t        |       D ]!  \  }}|r|d|z   f d}|dk(  rd}||f # |r|df y y w)Nr   F\T)	enumerate)addrposescapechs       r   _iter_escaped_charsr?   n   sb     
CFT?Rr	""F4ZF)O # Dk s   >A c                     	 d| vr| S d}d }g }t        |       D ]0  \  }}|dk(  s||}||k7  r|j                  | ||        |dz   }d }2 |t        |       k  r|j                  | |d         dj                  |      S )Nr)   r      r   )r?   appendlenjoin)r;   startopen_posresultr<   r>   s         r   _strip_quoted_realnamesrH   }   s    *
$EHF&t,R9H$MM$uX"67a - s4yd56l#776?r&   T)strictc                   	 |s3t         j                  d | D              }t        |      }|j                  S | D cg c]  }t	        |       } }t        |       } t         j                  |       }t        |      }t        |j                        }d}| D ]$  }t        |      }|d|j                  d      z   z  }& t        |      |k7  rdgS |S c c}w )Nc              3   2   K   | ]  }t        |        y w)Nr0   ).0vs     r   	<genexpr>zgetaddresses.<locals>.<genexpr>   s     :kc!fks   r   rA   ,r   r   )

COMMASPACErD   _AddressListaddresslistr0   _pre_parse_validation_post_parse_validationrH   countrC   )fieldvaluesrI   allarN   r;   rG   ns           r   r	   r	      s    " oo:k::}}#./;a3q6;K/'4K??;'DTA#AMM2F 	
A $A&	Q  6{azM% 0s   Cc                     t        |       } d}t        |       D ]"  \  }}|dk(  r|dz  }|dk(  s|dz  }|dk  s" y |dk(  S )Nr   (rA   )F)rH   r?   )r;   opensr<   r>   s       r   _check_parenthesisr`      sZ    "4(DE&t,R9QJE3YQJEqy - QJr&   c                 T    g }| D ]   }t        |      sd}|j                  |       " |S )Nz('', ''))r`   rB   )email_header_fieldsaccepted_valuesrN   s      r   rU   rU      s4    O !!$Aq! !
 r&   c                 L    g }| D ]  }d|d   v rd}|j                  |        |S )N[rA   rQ   )rB   )parsed_email_header_tuplesrc   rN   s      r   rV   rV      s9    O (!A$;Aq! (
 r&   c           	      `    dg d| d      | d   g d| d   dz
     | d   | d   | d	   | d
   |fz  S )Nz"%s, %02d %s %04d %02d:%02d:%02d %s)MonTueWedThuFriSatSun      )JanFebMarAprMayJunJulAugSepOctNovDecrA   r             )	timetuplezones     r   _format_timetuple_and_zoner      sZ    /9)A,G!	33<Q<!3C	E!ilIaL)A,3  r&   c                 
   	 | t        j                          } t        j                  j                  | t        j                  j                        }|r|j                         }d}n|s|j                  d       }t        ||      S )NF)tzinfo)timedatetimefromtimestamptimezoneutc
astimezoner!   r   )timeval	localtimeusegmtdts       r   r   r      sp    " ))+				(	((2C2C2G2G	HB]]_ZZtZ$2v&&r&   c                    	 | j                         }|rA| j                  '| j                  t        j                  j                  k7  rt        d      d}n | j                  d}n| j                  d      }t        ||      S )Nz%usegmt option requires a UTC datetimeGMTz-0000z%z)r   r   r   r   r   
ValueErrorstrftimer   )r   r   nowr   s       r   r   r     ss     ,,.C99		X->->-B-B BDEE		{{4 %c400r&   c                     	 t        t        j                         dz        }t        j                         }t	        j
                  d      }| d} nd| z   } |t        j                         }d|||| |fz  }|S )Nd   @   r   .z<%d.%d.%d%s@%s>)intr   osgetpidrandomgetrandbitssocketgetfqdn)idstringdomainr   pidrandintmsgids         r   r
   r
   "  sw     $))+c/"G
))+C  $G>~!#w& IIELr&   c           	          t        |       }|t        dt        |       z        |^ }}|t        j                  |d d  S t        j                  |d d dt        j                  t        j
                  |            iS )Nz!Invalid date value or format "%s"ro   r   )seconds)r   r   r0   r   r   	timedelta)dataparsed_date_tzdtupletzs       r   r   r   9  s    "4(N<s4yHII KVR	z  &!*--fRaj F$$X%7%7%CDF Fr&   c                   	 |st        |       j                  }|sy|d   S t        | t              r| d   } t        | t              syt        | g      d   } t        t        |       j                        }|rt        |      dkD  ry|d   S )NrQ   r   rA   )rS   rT   r/   listr0   rU   rV   rC   )r;   rI   addrss      r   r   r   D  s     T"..Qx$AwdC  $(+D"<#5#A#ABECJN8Or&   c                     	 t        |       dkD  rn| j                  d      r6| j                  d      r%| dd j                  dd      j                  dd      S | j                  d      r| j                  d      r| dd S | S )	NrA   r)   z\\r9   z\"<r*   )rC   
startswithendswithr!   rL   s    r   r   r   c  su    &
3x!|>>#3<<#4q9$$VT2::5#FF>>#3<<#4q9Jr&   c                 Z    	 | j                  t        d      }t        |      dk  rd d | fS |S )Nrp   )splitTICKrC   )r   partss     r   r   r   o  s1    -GGD!E
5zQT1}Lr&   c                 x    	 t         j                  j                  | d|xs d      } ||| S |d}|d|d| S )Nr   r(   )safeencodingr   )urllibparser   )r   r3   languages      r   r   r   w  sP     	120B7CA8+ (A..r&   z&^(?P<name>\w+)\*((?P<num>[0-9]+)\*?)?$c                     	 | d   g}i }| dd  D ]  \  }}|j                  d      }t        |      }t        j                  |      }|rG|j	                  dd      \  }}|t        |      }|j                  |g       j                  |||f       |j                  |dt        |      z  f        |r|j                         D ]  \  }}g }d}	|j                          |D ]<  \  }}
}|r#t        j                  j                  |
d	      }
d
}	|j                  |
       > t        t        j                  |            }|	r)t        |      \  }}}|j                  |||d|z  ff       |j                  |d|z  f        |S )Nr   rA   *r4   numz"%s"Fzlatin-1)r   T)r   r   rfc2231_continuationmatchgroupr   
setdefaultrB   r   itemssortr   r   EMPTYSTRINGrD   r   )params
new_paramsrfc2231_paramsr4   valueencodedmor   continuationsextendedr   r3   r   s                r   r   r     s    )J Nabze--$!''-/ID##h%%dB/66UG7LMtVeEl%:;< " #1#7#7#9D-EH  $1Q ,,Q,CA#HQ $1 +**512E+9%+@(5!!4'8Ve^)L"MN!!4%"89/ $:0 r&   c                     t        | t              rt        |       dk7  rt        |       S | \  }}}||}t	        |d      }	 t        |||      S # t        $ r t        |      cY S w xY w)Nr}   zraw-unicode-escape)r/   tuplerC   r   bytesr0   LookupError)r   errorsfallback_charsetr3   r   textrawbytess          r   r   r     st    eU#s5zQu~ $GXt #T/0H8Wf-- t}s   A A%$A%c                     	 |dd l }|j                  ddd       | t        j                  j                         } | j	                         S )Nr   z$The 'isdst' parameter to 'localtime'z>{name} is deprecated and slated for removal in Python {remove})r}      )messageremove)warnings_deprecatedr   r   r   )r   isdstr   s      r   r   r     sU     2T 	 	
 
z""$==?r&   )r   )NFF)F)NN)r!   zus-ascii)3__all__r   rer   r   r   r   urllib.parser   email._parseaddrr   r   rS   r   r   r   r   email.charsetr   rR   r   UEMPTYSTRINGCRLFr   compiler+   r-   r   r%   r   r?   rH   supports_strict_parsingr	   r`   rU   rV   r   r   r   r
   r   r   r   r   r   ASCIIr   r   r   r   r   r&   r   <module>r      s  
 $ 
 	      " 8 & C C "

RZZ+,
BJJx 		5B2  (, )X	':1&.F # >/ "rzz"KHH .` *3,64r&   