python (3.11.7)

(root)/
lib/
python3.11/
email/
__pycache__/
_parseaddr.cpython-311.opt-1.pyc

eEdZgdZddlZddlZdZdZdZgdZgdZddddd	d
dd	ddd
ddd
dZ	dZ
dZdZdZ
dZGddZGddeZdS)zcEmail address parsing code.

Lifted directly from rfc822.py.  This should eventually be rewritten.
)	mktime_tz	parsedateparsedate_tzquoteN z, )janfebmaraprmayjunjulaugsepoctnovdecjanuaryfebruarymarchaprilr
junejulyaugust	septemberoctobernovemberdecember)montuewedthufrisatsunipiiiiDi)UTUTCGMTZASTADTESTEDTCSTCDTMSTMDTPSTPDTc`t|}|sdS|dd|d<t|S)zQConvert a date string to a time tuple.

    Accounts for military timezones.
    N	r)
_parsedate_tztuple)dataress  D/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/email/_parseaddr.pyrr-s<


C
1v~A::c
|sdS|}|sdS|dds!|dtvr|d=n7|dd}|dkr|d|dzd|d<t|dkr;|dd}t|dkr
||ddz}t|dkrm|d}|d}|d	kr|d}|dkr|d|||dg|dd<n|d
t|dkrdS|dd}|\}}}}}|r|r|sdS|}|tvr!||}}|tvrdSt	|dz}|dkr|dz}|d	dkr
|dd	}|d
}|dkr||}}|d	dkr|dd	}|sdS|d
s||}}|d	dkr
|dd	}|d
}t|dkr|\}	}
d}nt|dkr|\}	}
}nqt|dkr\d|dvrR|dd}t|dkr|\}	}
d}nt|dkr|\}	}
}ndSdS	t|}t|}t|	}	t|
}
t|}n#t$rYdSwxYw|dkr|dkr|dz
}n|dz
}d}|
}|tvrt|}n>	t|}n#t$rYnwxYw|dkr|drd}|r"|dkrd	}
|}nd}
|
|dzdz|dzdzzz}||||	|
|ddd	|g
S)aConvert date to extended time tuple.

    The last (additional) element is the time zone offset in seconds, except if
    the timezone was specified as -0000.  In that case the last element is
    None.  This indicates a UTC timestamp that explicitly declaims knowledge of
    the source timezone, as opposed to a +0000 timestamp that indicates the
    source timezone really was UTC.

    Nr,-+r:0.dDilii<)splitendswithlower	_daynamesrfindlenfindappend_monthnamesindexisdigitint
ValueErrorupper
_timezones
startswith)r9istuffsddmmyytmtzthhtmmtsstzoffsettzsigns              r;r7r79st::<<DtAw$Q

9 < <GGGMM#661gacddmDG
4yyA~~Q

c""u::??48#D
4yyA~~G
FF3KK77sAq55"1"qu~DHHKKOOO
4yy1}}t8DRRR2"t	B	RXXZZB
[  4			2			"B	Bww
b	"v}}
W
A1uuRB	"v}}
W	4
a5==??RB	"v}}
W	#B
2ww!||
c	RAc33	RA#A,,
U[[

r77a<<JS#CC
WW\\ OS#ss4t
WW
WW#hh#hh#hhtt
Cxx
77$JBB
$JBH	B	Zb>	2wwHH			D	Q;;2==--;HJa<<F yHHFx}d2hnb5HHIBS#q!R::s%6AN
NNO((
O54O5cbt|}t|tr
|ddS|S)z&Convert a time string to a time tuple.Nr6)r
isinstancer8r9ts  r;rrs3TA!U!ur<c|dtj|dddzStj|}||dz
S)zETurn a 10-tuple as returned by parsedate_tz() into a POSIX timestamp.r6N)rD)timemktimecalendartimegmrms  r;rrsEAw{48e+,,,OD!!47{r<cV|ddddS)zPrepare string to be used in a quoted string.

    Turns backslash and double quote characters into quoted pairs.  These
    are the only characters that need to be quoted inside a quoted string.
    Does not add the surrounding double quotes.
    \z\\"z\")replace)strs r;rrs(;;tV$$,,S%888r<cdeZdZdZdZdZdZdZdZdZ	dZ
dd
ZdZdZ
d
ZddZdZdS)
AddrlistClassaAddress parser class by Ben Escoto.

    To understand what this class does, it helps to have a copy of RFC 2822 in
    front of you.

    Note: this class interface is deprecated and may be removed in the future.
    Use email.utils.AddressList instead.
    cd|_d|_d|_d|_|j|jz|_|j|jz|jz|_|jdd|_||_g|_	dS)zInitialize a new instance.

        `field' is an unparsed address header field, containing
        one or more addresses.
        z()<>@,:;."[]rz 	z
rJrN)
specialsposLWSCRFWSatomendsrx
phraseendsfieldcommentlistselfrs  r;__init__zAddrlistClass.__init__sw(
8dg%
047:
-//R88
r<cg}|jt|jkr|j|j|jdzvrJ|j|jdvr%||j|j|xjdz
c_nD|j|jdkr-|j|nn|jt|jkt|S)z&Skip white space and extract comments.z

r?()	r~rSrrrUr
getcommentEMPTYSTRINGjoin)rwslists  r;gotonextzAddrlistClass.gotonextshTZ((z$(#tx&'888:dh'v55MM$*TX"6777A
DH%,, ''(9(9::::hTZ(('''r<cg}|jt|jkrN|}|r||z
}n|d|jt|jkN|S)zVParse all addresses.

        Returns a list containing all of the addresses.
        )rr)r~rSr
getaddressrU)rresultads   r;getaddrlistzAddrlistClass.getaddrlistsp
hTZ((""B
("

h'''hTZ((
r<cg|_||j}|j}|}|g}|jt	|jkr,|r(t|j|dfg}n|j|jdvrF||_||_|}t|j|fg}n|j|jdkrg}t	|j}|xjdz
c_|jt	|jkrz||j|kr'|j|jdkr|xjdz
c_n4||	z}|jt	|jkzn|j|jdkrx|
}|jr?t|dzd|jzd	z|fg}nrt||fg}nT|r)t|j|dfg}n)|j|j|jvr|xjdz
c_||jt	|jkr&|j|jd
kr|xjdz
c_|S)zParse the next address.rz.@rGr?;<z (r)r>)rrr~
getphraselistrSrSPACErgetaddrspecrgetrouteaddrr})roldposoldclplist
returnlistaddrspecfieldlen	routeaddrs        r;rzAddrlistClass.getaddresss

 ""$$


8s4:&&
H$zz$*:;;U1XFG

Z
!T
)
)DH$D''))H ::d&677BCJJ
Z
!S
(
(J4:HHHMHH(S__,,

8h&&4:dh+?3+F+FHHMHH'$//*;*;;
(S__,,Z
!S
(
())++I
>$zz%0047"xx(899 :<? @AJLM

 %zz%00)<=


$zz$*:;;U1XFG

DH%66A


8c$*oo%%$*TX*>#*E*EHHMHHr<c|j|jdkrdSd}|xjdz
c_|d}|jt|jkr|r|d}n|j|jdkr|xjdz
c_n|j|jdkr|xjdz
c_d}nL|j|jd	kr|xjdz
c_n%|}|xjdz
c_n1||jt|jk|S)
zParse a route address (Return-path value).

        This method just skips all the route stuff and returns the addrspec.
        rNFr?r>@TrG)rr~rrS	getdomainr)rexpectrouteadlists   r;rzAddrlistClass.getrouteaddrGs:
:dh3&&FA


hTZ((
   #DH%,,A
DH%,,A
"DH%,,A
))++A
MMOOO!hTZ(($
r<cg}||jt|jkrzd}|j|jdkrX|r.|ds||d|xjdz
c_d}n|j|jdkr8|dt|znq|j|j|j	vr1|r.|ds|nr||
|}|r|r|||jt|jkz|jt|jks|j|jdkrt|S|d|xjdz
c_||
}|stSt||zS)	zParse an RFC 2822 addr-spec.TrJrDr?Frwz"%s"r)rr~rSrstrippoprUrgetquotergetatomrrr)raslistpreserve_wswsdomains     r;rzAddrlistClass.getaddrspecgs

hTZ((Kz$(#s**!&*"2"2"4"4!JJLLL

c"""A
#DH%,,

fuT]]__'='==>>>>DH%66!&*"2"2"4"4!JJLLL

dllnn---B
"r
"

b!!!%hTZ(((8s4:&&$*TX*>#*E*E##F+++

cA


!!	''&00r<c>g}|jt|jkrd|j|j|jvr|xjdz
c_n|j|jdkr-|j|n|j|jdkr(||n|j|jdkr&|xjdz
c_|dn^|j|jdkrtS|j|j|j	vrnE||
|jt|jkdt|S)z-Get the complete domain name from an address.r?r[rJr)r~rSrrrrUrgetdomainliteralrrrr)rsdlists  r;rzAddrlistClass.getdomainsdhTZ((z$(#tx//A
DH%,, ''(9(9::::DH%,,

d33556666DH%,,A


c""""DH%,,#"DH%66

dllnn---#hTZ(($'''r<Tc|j|j|krdSdg}d}|xjdz
c_|jt|jkr|r(||j|jd}n|j|j|vr|xjdz
c_n|r>|j|jdkr(|||j|jdkrd}n%||j|j|xjdz
c_|jt|jkt
|S)aParse a header fragment delimited by special characters.

        `beginchar' is the start character for the fragment.
        If self is not looking at an instance of `beginchar' then
        getdelimited returns the empty string.

        `endchars' is a sequence of allowable end-delimiting characters.
        Parsing stops when one of these is encountered.

        If `allowcomments' is non-zero, embedded RFC 2822 comments are allowed
        within the parsed fragment.
        rFr?rrvT)rr~rSrUrrr)r	begincharendchars
allowcommentsslistrs      r;getdelimitedzAddrlistClass.getdelimitedsI:dh9,,2A
hTZ((
3TZ1222DH%11A

34:dh#73#>#>T__..///DH%--TZ1222HHMHHhTZ(( &&&r<c0|dddS)z1Get a quote-delimited fragment from self's field.rwz"
Frrs r;rzAddrlistClass.getquotes  eU333r<c0|dddS)z7Get a parenthesis-delimited fragment from self's field.rz)
Trrs r;rzAddrlistClass.getcomments  eT222r<c6d|dddzS)z!Parse an RFC 2822 domain-literal.z[%s]rz]
Frrs r;rzAddrlistClass.getdomainliterals))#ue<<<<r<NcVdg}||j}|jt|jkrg|j|j|vrnR||j|j|xjdz
c_|jt|jkgt
|S)aParse an RFC 2822 atom.

        Optional atomends specifies a different set of end token delimiters
        (the default is to use self.atomends).  This is used e.g. in
        getphraselist() since phrase endings must not include the `.' (which
        is legal in phrases).rNr?)rr~rSrrUrr)rratomlists   r;rzAddrlistClass.getatoms4}HhTZ((z$(#x//
48 4555HHMHHhTZ(()))r<cfg}|jt|jkr|j|j|jvr|xjdz
c_n|j|jdkr(||n|j|jdkr-|j|nG|j|j|jvrnK||	|j|jt|jk|S)zParse a sequence of RFC 2822 phrases.

        A phrase is a sequence of words, which are in turn either RFC 2822
        atoms or quoted-strings.  Phrases are canonicalized by squeezing all
        runs of continuous whitespace into one space.
        r?rwr)
r~rSrrrUrrrrr)rrs  r;rzAddrlistClass.getphraselistshTZ((z$(#tx//A
DH%,,T]]__----DH%,, ''(9(9::::DH%88T\\$/::;;;hTZ((r<)TN)__name__
__module____qualname____doc__rrrrrrrrrrrrrr<r;r{r{s&(((999v@$1$1$1L(((.#'#'#'#'J444333===****(r<r{c<eZdZdZdZdZdZdZdZdZ	dZ
d	S)
AddressListz@An AddressList encapsulates a list of parsed RFC 2822 addresses.ct|||r||_dSg|_dSr)r{rraddresslistrs  r;rzAddressList.__init__sHtU+++	"#//11D!Dr<c*t|jSr)rSrrs r;__len__zAddressList.__len__	s4#$$$r<ctd}|jdd|_|jD]%}||jvr|j|&|SrrrrUrothernewaddrxs    r;__add__zAddressList.__add__s`d##".qqq1"	.	.A(((#**1---r<c`|jD]%}||jvr|j|&|Sr)rrUrrrs   r;__iadd__zAddressList.__iadd__s?"	+	+A((( ''***r<c~td}|jD]%}||jvr|j|&|Srrrs    r;__sub__zAddressList.__sub__sLd##!	.	.A)))#**1---r<c`|jD]%}||jvr|j|&|Sr)rremovers   r;__isub__zAddressList.__isub__$s?"	+	+AD$$$ ''***r<c|j|Sr)r)rrWs  r;__getitem__zAddressList.__getitem__+s&&r<N)rrrrrrrrrrrrr<r;rrsJJ"""%%%'''''r<r)r__all__rqrsrr
COMMASPACErVrQr\rr7rrrr{rrr<r;<module>rsN


III

>==	AQA$$$$$



z;z;z;z999kkkkkkkkZ	-'-'-'-'-'--'-'-'-'-'r<