
    z%i/                        	 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 dZ d!dZ!d"dZ"d Z#d Z$d Z%d Z&d"dZ' ej0                  dejP                        Z)d Z*	 	 d#dZ+d"dZ,y)$)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    ?/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/email/utils.py_has_surrogatesr   3   s(    B	
 s    	  c                 J    | j                  dd      }|j                  dd      S )Nutf-8surrogateescapereplace)r   decode)stringoriginal_bytess     r   	_sanitizer%   @   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   L   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                 j    	 t         j                  d | D              }t        |      }|j                  S )Nc              3   2   K   | ]  }t        |        y w)Nr0   ).0vs     r   	<genexpr>zgetaddresses.<locals>.<genexpr>p   s     6Q#a&6s   )
COMMASPACEjoin_AddressListaddresslist)fieldvaluesallas      r   r	   r	   n   s-    A
//6+6
6CSA==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Dec   r             )	timetuplezones     r   _format_timetuple_and_zonerb   u   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`   rd   rf   rh   ri   
ValueErrorstrftimerb   )rn   rm   nowra   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>)intre   osgetpidrandomgetrandbitssocketgetfqdn)idstringdomainrk   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"rM   rd   )seconds)r   rq   r0   rf   rh   	timedelta)dataparsed_date_tzdtupletzs       r   r   r      s    "4(N<s4yHII KVR	z  &!*--fRaj F$$X%7%7%CDF Fr&   c                 >    	 t        |       j                  }|sy|d   S )N)r   r   r   )r@   rA   )addraddrss     r   r   r      s(     **E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 )	Nr[   r)   z\\\z\"<r*   )len
startswithendswithr!   r:   s    r   r   r      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 )NrN   )splitTICKr   )r   partss     r   r   r      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      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   r[   *r4   numz"%s"Fzlatin-1)r   T)r   r   rfc2231_continuationmatchgrouprx   
setdefaultappendr   itemssortr   r   EMPTYSTRINGr?   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  +**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/   tupler   r   bytesr0   LookupError)r   errorsfallback_charsetr3   r   textrawbytess          r   r   r   4  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_deprecatedrf   rs   rj   )rn   isdstr   s      r   rl   rl   N  sU     2T 	 	
 
z""$==?r&   )r   )NFF)F)NN)r!   zus-ascii)-__all__ry   rere   r{   r}   rf   urllib.parser   email._parseaddrr   r   r@   r   r   r   r   email.charsetr   r>   r   UEMPTYSTRINGCRLFr   compiler+   r-   r   r%   r   r	   rb   r   r   r
   r   r   r   r   r   ASCIIr   r   r   rl   r_   r&   r   <module>r      s   
 $ 
 	      " 8 & C C "

RZZ+,
BJJx 		5D':1&.F
/ "rzz"KHH .` *3,64r&   