python (3.11.7)

(root)/
lib/
python3.11/
__pycache__/
ipaddress.cpython-311.opt-2.pyc

eC%	dZddlZdZdZGddeZGddeZd	Zd2dZdZ	d
Z
dZdZdZ
dZdZdZdZdZGddZdaejGddeZejGddeZGddZee_GddZGd d!eeZGd"d#eZGd$d%eeZGd&d'Zee_ee_Gd(d)ZGd*d+eeZ Gd,d-e Z!Gd.d/eeZ"Gd0d1Z#e#e _e#e"_dS)3z1.0N ceZdZdS)AddressValueErrorN__name__
__module____qualname__=/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/ipaddress.pyrr//rrceZdZdS)NetmaskValueErrorNrrrr
rrrrrc		t|S#ttf$rYnwxYw	t|S#ttf$rYnwxYwt	|d)Nz. does not appear to be an IPv4 or IPv6 address)IPv4AddressrrIPv6Address
ValueErroraddresss r

ip_addressrs
7###01




7###01



QQQ
R
RR&&9A
A
Tc		t||S#ttf$rYnwxYw	t||S#ttf$rYnwxYwt	|d)Nz. does not appear to be an IPv4 or IPv6 network)IPv4NetworkrrIPv6Networkr)rstricts  r

ip_networkr9s
7F+++01




7F+++01



QQQ
R
RRs'';AAc		t|S#ttf$rYnwxYw	t|S#ttf$rYnwxYwt	|d)Nz0 does not appear to be an IPv4 or IPv6 interface)
IPv4Interfacerr
IPv6Interfacerrs r
ip_interfacer!Vs(
W%%%01




W%%%01



SSS
T
TTrcj		|dS#t$rtdwxYw)Nz&Address negative or too large for IPv4to_bytes
OverflowErrorrrs r
v4_int_to_packedr'xsOC"""CCCABBBC2cj		|dS#t$rtdwxYw)Nz&Address negative or too large for IPv6r$rs r
v6_int_to_packedr+sOC###CCCABBBCr(c	t|d}t|dkrtd||S)N/zOnly one '/' permitted in )strsplitlenr)raddrs  r
_split_optional_netmaskr3sIKw<<c""D
4yy1}} HW H HIIIKrc#K	t|}t|x}}|D]}|j|jdzkr||fV|}|} ||fVdSN)iternext_ip)	addressesitfirstlastips     r
_find_address_ranger?s|
iB88ED
6TX\!!+E
+rcf	|dkr|St|||dz
zS)Nrr6)min
bit_length)numberbitss  r
_count_righthand_zero_bitsrEs>	{{tvg*6688999rc#lK	t|trt|tstd|j|jkrt|d|d||krt	d|jdkrt
}n"|jdkrt}nt	d|j}|j}|j}||krmtt||||z
dzdz
}||||z
f}|V|d|zz
}|dz
|jkrdS||kkdSdS)	Nz1first and last must be IP addresses, not networks and  are not of the same versionz*last IP address must be greater than firstr#zunknown IP versionr6)
isinstance_BaseAddress	TypeErrorversionrrr_max_prefixlenr9rArErB	_ALL_ONES)r<r=r>ip_bits	first_intlast_intnbitsnets        r
summarize_address_rangerUs2|
,
,M
l
+
+MKLLL}$$&''	't||EFFF}
	!		
-..."G	IxH
x

.y'BB	)A-99;;a?AAb)Wu_-..			Q%Z	q=BL((Ex





rc#zK	t|}i}|re|}|}||}||||<n||kr||=|||ed}t|D]}||j|jkr|V|}dSN)listpopsupernetgetappendsortedvaluesbroadcast_address)r:to_mergesubnetsrTrZexistingr=s       r
_collapse_addresses_internalrcs0IHG
	&llnn<<>>;;x(( #GH
__!OOH%%%	&Dgnn&&''%)>>>			rcL	g}g}g}|D]2}t|trI|r1|dj|jkrt|d|dd||a|j|jkry|r1|dj|jkrt|d|dd	||j#t$r||j	YwxYw|r1|dj|jkrt|d|dd||4tt|}|r8t|D](\}}|
t||)t||zS)NrGrH)rJrK_versionrLr\
_prefixlenrNr>AttributeErrornetwork_addressr]setr?extendrUrc)r:addrsipsnetsr>r<r=s       r
collapse_addressesro0s"
E
C
Db,''	
/s2w'2;66!#SWWW!.///JJrNNNN
]b/
/
/
/s2w'2;66!#SWWW!.///
/

25!!!!!
/
/
/

2-.....
/
0R)R[88!#T"XXX!/000KKOOOOS

C?.s33	?	?KE4LL0==>>>>'555s/C

$C10C1c	t|tr|St|tr|St
SrW)rJ_BaseNetwork_get_networks_keyrK_get_address_keyNotImplemented)objs r
get_mixed_type_keyrvfsW"#|$$&$$&&&	C	&	&&##%%%rceZdZ	dZedZedZedZedZdZ	dZ
edZed	Z
ed
ZedZedZed
ZdZdS)_IPAddressBaserc,	|SrW)_explode_shorthand_ip_stringselfs r
explodedz_IPAddressBase.explodedsH00222rc"	t|SrWr/r{s r

compressedz_IPAddressBase.compressedsI4yyrc,	|SrW)_reverse_pointerr{s r
reverse_pointerz_IPAddressBase.reverse_pointers	$$&&&rcFdt|fz}t|)Nz%200s has no version specifiedtypeNotImplementedErrorr|msgs  r
rMz_IPAddressBase.versions".$t**>!#&&&rc|dkrd}t|||jfz||jkr!d}t|||j|jfzdS)Nrz-%d (< 0) is not permitted as an IPv%d addressz2%d (>= 2**%d) is not permitted as an IPv%d address)rrfrOrN)r|rrs   r
_check_int_addressz!_IPAddressBase._check_int_addresssnQ;;AC#C7DM*B$BCCCT^##FC#C7D4G+/=+:%:;;
;$#rcjt|}||krd}t|||||jfzdS)Nz6%r (len %d != %d) is not permitted as an IPv%d address)r1rrf)r|rexpected_lenaddress_lenrs     r
_check_packed_addressz$_IPAddressBase._check_packed_addresssS'll,&&JC#C7K+7+H%HII
I'&rc(	|j|j|z	zSrW)rO)cls	prefixlens  r
_ip_int_from_prefixz"_IPAddressBase._ip_int_from_prefixs	}
 :;;rc	t||j}|j|z
}||z	}d|zdz
}||kr4|jdz}||d}d}t||z|S)Nr6bigz&Netmask pattern %r mixes zeroes & ones)rErNr%r)	rip_inttrailing_zeroesrleading_onesall_onesbyteslendetailsrs	         r
_prefix_from_ip_intz"_IPAddressBase._prefix_from_ip_ints
	5V585GII&8	0Na'8##)Q.Hooh66G:CS7]+++rc,d|z}t|d)Nz%r is not a valid netmask)r)rnetmask_strrs   r
_report_invalid_netmaskz&_IPAddressBase._report_invalid_netmasks)K7$$$.rc@	|r|s||	t|}n%#t$r||YnwxYwd|cxkr|jksn|||SNr)isasciiisdigitrintrrN)r
prefixlen_strrs   r
_prefix_from_prefix_stringz)_IPAddressBase._prefix_from_prefix_strings
	%%''	7M,A,A,C,C	7''
666	7M**II	7	7	7''
66666	7Y4444#"44444''
666sAA21A2cT		||}n%#t$r||YnwxYw	||S#t$rYnwxYw||jz}	||S#t$r||YdSwxYwrW)_ip_int_from_stringrrrrrO)rip_strrs   r
_prefix_from_ip_stringz%_IPAddressBase._prefix_from_ip_strings
		0,,V44FF 	0	0	0''/////	0	**6222			D		#-	0**6222	0	0	0''//////	0s/;;A
A! A!/BB'&B'c	t|ttfr	||jfSt|tst|}t
|dkr|S|d|jfS)Nr6r)rJbytesrrNtupler3r1)rrs  r
_split_addr_prefixz!_IPAddressBase._split_addr_prefixsx	gs|,,	/C...'5))	7.g66Gw<<!Nqz3---rc0|jt|ffSrW	__class__r/r{s r

__reduce__z_IPAddressBase.__reduce__-s~D		|++rN)rr	r
	__slots__propertyr}rrrMrrclassmethodrrrrrrrrrr
rxrxsYI
33X3X''X'''X';;;III
<
<[
<[0//[/[000[0B..[..,,,,,rrxc`eZdZ	dZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
fdZxZS)
rKrc|jSrWr9r{s r
__int__z_BaseAddress.__int__>s	xrcr	|j|jko|j|jkS#t$r
tcYSwxYwrW)r9rfrhrtr|others  r
__eq__z_BaseAddress.__eq__AsP	"H	)8
7
9	"	"	"!!!!	"s"66ct|tstS|j|jkrt	|d|d|j|jkr|j|jkSdSNrGrHF)rJrKrtrfrLr9rs  r
__lt__z_BaseAddress.__lt__Hsp%..	"!!=EN**!TT555*++
+8uy  8ei''urct|tstS|t||zSrWrJrrtrrs  r
__add__z_BaseAddress.__add__T7%%%	"!!~~c$ii%/000rct|tstS|t||z
SrWrrs  r
__sub__z_BaseAddress.__sub__Yrrc@|jjdt|dSN()rrr/r{s r
__repr__z_BaseAddress.__repr__^">222CIIII>>rcPt||jSrW)r/_string_from_ip_intr9r{s r
__str__z_BaseAddress.__str__as 4++DH55666rc^ttt|jSrW)hashhexrr9r{s r
__hash__z_BaseAddress.__hash__ds CDH

&&'''rc|j|fSrWrfr{s r
rsz_BaseAddress._get_address_keygs
t$$rc |j|jffSrW)rr9r{s r
rz_BaseAddress.__reduce__js~{**rc	|r|ddkrtt||Stddl}|dat|}|s!t
|S|\}}}|dkr|j	dkrd}nd}|dkr|j
}n
|j
dz}|r||dzd	z
z
}|r|d
z
}tt||d|||S)Nresrz(#?)(_?)([xbnX])nr#bxr6r.0)formatr/_address_fmt_rerecompile	fullmatchsuper
__format__groupsrfrNr)	r|fmtrm	alternategroupingfmt_basepadlenrs	        r
rz_BaseAddress.__format__ms;
		*c"gnn#d))S)))"III jj);<<O%%c**	+77%%c***()

%	8Xs??}!!s??(FF(A-F	&fkAo%F	aKFc$iiI!L!L!L!L(!L!LMMMr)rr	r
rrrrrrrrrrsrr
__classcell__rs@r
rKrK3sI"""111
111
???777(((%%%+++/N/N/N/N/N/N/N/N/NrrKceZdZ	dZdZdZdZdZdZdZ	dZ
d	Zd
Ze
jdZe
jdZed
ZedZedZedZedZedZdZdZdZd$dZd$dZedZedZdZ dZ!edZ"edZ#ed Z$ed!Z%ed"Z&ed#Z'dS)%rqc@|jjdt|dSrrr{s r
rz_BaseNetwork.__repr__rrc$d|j|jfzSN%s/%d)rirr{s r
rz_BaseNetwork.__str__s$.???rc#K	t|j}t|j}t|dz|D]}||VdSr5rrir_range_address_classr|network	broadcastrs    r
hostsz_BaseNetwork.hostssq	d*++.//	w{I..	)	)A%%a((((((	)	)rc#Kt|j}t|j}t||dzD]}||VdSr5rrs    r
__iter__z_BaseNetwork.__iter__sjd*++.//	w	A
..	)	)A%%a((((((	)	)rc(t|j}t|j}|dkr0||z|krtd|||zS|dz
}||z|krtd|||zS)Nrzaddress out of ranger6)rrir_
IndexErrorr)r|rrrs    r
__getitem__z_BaseNetwork.__getitem__sd*++.//	66{Y&& !7888&&w{333
FA1}w&& !7888&&y1}555rct|tstS|j|jkrt	|d|d|j|jkr|j|jkS|j|jkr|j|jkSdSr)rJrqrtrfrLrinetmaskrs  r
rz_BaseNetwork.__lt__s%..	"!!=EN**!TT555*++
+5#888'%*???<5=((<%-//urc	|j|jko9|j|jko)t|jt|jkS#t$r
t
cYSwxYwrW)rfrirrrhrtrs  r
rz_BaseNetwork.__eq__su	"MU^3<(E,AA<%%U]););;
=	"	"	"!!!!	"sA	AA A cntt|jt|jzSrW)rrrirr{s r
rz_BaseNetwork.__hash__s*C,--DL0A0AABBBrc|j|jkrdSt|trdS|j|jjz|jjkSNF)rfrJrqr9rrirs  r
__contains__z_BaseNetwork.__contains__sM=EN**5e\**	L59t|//43G3KKKrcL	|j|vp|j|vp|j|vp|j|vSrWrir_rs  r
overlapsz_BaseNetwork.overlapssE8#u,7"e+
6%-5+t3	7rcz|t|jt|jzSrW)rrrihostmaskr{s r
r_z_BaseNetwork.broadcast_addresss9""3t';#<#<#&t}#5#5$677	7rc`|t|j|jzSrW)rrrrOr{s r
rz_BaseNetwork.hostmasks'""3t|#4#4t~#EFFFrc$d|j|jfzSr)rirgr{s r
with_prefixlenz_BaseNetwork.with_prefixlens$.@@@rc$|jd|jSNr-)rirr{s r
with_netmaskz_BaseNetwork.with_netmasks...==rc$|jd|jSr)rirr{s r

with_hostmaskz_BaseNetwork.with_hostmasks...

>>rc\	t|jt|jz
dzSr5)rr_rir{s r

num_addressesz_BaseNetwork.num_addressess+44)**S1E-F-FFJJrcFdt|fz}t|)Nz%%200s has no associated address classrrs  r
rz_BaseNetwork._address_classs$
6d
E!#&&&rc|jSrW)rgr{s r
rz_BaseNetwork.prefixlens
rc#K	|j|jkst|d|dt|tstd|z||st|d|||krdS||jd|j}|	\}}||kr||kr||r|V|	\}}nI||r|V|	\}}ntd|d|d|||kr||k||kr|VdS||kr|VdStd|d|d|)	NrGrHz%s is not a network objectz not contained in r-z Error performing exclusion: s1: z s2: z other: )rfrLrJrq	subnet_ofrrrirraAssertionError)r|rs1s2s    r
address_excludez_BaseNetwork.address_excludes"	F}..!TT555*++
+%..	B85@AAAt$$	GEFFFD==F5+@+@+@+0??!<==BEkkbEkkr""

6BB$$
6BB%n&(bb"""ee&5666EkkbEkk;;HHHHH
5[[HHHHH!."$""bbb%%"122
2rc	|j|jkrt|d|d|j|jkrdS|j|jkrdS|j|jkrdS|j|jkrdSdS)NrGz are not of the same typerer6r)rfrLrirrs  r
compare_networksz_BaseNetwork.compare_networksgs	@=EN**!TT555*++
+%"7772%"7771<%-''2<%-''1qrc,	|j|j|jfSrW)rfrirr{s r
rrz_BaseNetwork._get_networks_keys	
t3T\BBrr6Nc#K	|j|jkr|VdS|9||jkrtd|dkrtd||jz
}|dkrtd|j|z}||jkrtd||fzt|j}t|jdz}t|jdz|z	}t|||D]}|||f}|VdS)Nznew prefix must be longerr6(cannot set prefixlen_diff and new_prefixrzprefix length diff must be > 0z0prefix length diff %d is invalid for netblock %s)	rgrNrrrir_rrr)	r|prefixlen_diff
new_prefix
new_prefixlenstartendstepnew_addrcurrents	         r
raz_BaseNetwork.subnetssR	2?d111JJJF!DO++ !<==="" !KLLL'$/9NA=>>>.8
4...B!4F))**
*D())$())A-DM""Q&>9eS$//		Hnnh
%>??GMMMM		rch	|jdkr|S|9||jkrtd|dkrtd|j|z
}|j|z
}|dkrtd|j|fz|t	|jt	|j|zz|fS)Nrznew prefix must be shorterr6r#z;current prefixlen is %d, cannot have a prefixlen_diff of %d)rgrrrrrir)r|r$r%r&s    r
rZz_BaseNetwork.supernets	(?aK!DO++ !=>>>"" !KLLL!_z9N7
1M0122
2~~$%%T\):):n)LM	rc4	|jjo|jjSrW)riis_multicastr_r{s r
r.z_BaseNetwork.is_multicasts%	$14&3	5rc	|j|jkrt|d|d|j|jko|j|jkS#t$rtd|d|wxYw)NrGrHz*Unable to test subnet containment between )rfrLrir_rh)ars  r

_is_subnet_ofz_BaseNetwork._is_subnet_ofs	4zQZ''1 J J1 J J JKKK%)::?'1+>>
@	4	4	43'(33/03344
4	4sAA A'c0	|||SrWr1rs  r
rz_BaseNetwork.subnet_ofs?!!$...rc0	|||SrWr3rs  r
supernet_ofz_BaseNetwork.supernet_ofsA!!%...rc4	|jjo|jjSrW)riis_reservedr_r{s r
r7z_BaseNetwork.is_reserved%	$03&2	4rc4	|jjo|jjSrW)ri
is_link_localr_r{s r
r:z_BaseNetwork.is_link_local+s%	$25&4	6rcP	tfdjjDS)Nc3<K|]}j|voj|vVdSrWr	).0priv_networkr|s  r
	<genexpr>z*_BaseNetwork.is_private.<locals>.<genexpr>?sWJJ#'<7:)\9JJJJJJrany
_constants_private_networksr{s`r

is_privatez_BaseNetwork.is_private6sQ	JJJJ'+'HJJJJJ	Jrc	|jSrWrDr{s r
	is_globalz_BaseNetwork.is_globalC	?""rc4	|jjo|jjSrW)riis_unspecifiedr_r{s r
rJz_BaseNetwork.is_unspecifiedNs%	$36&5	7rc4	|jjo|jjSrW)riis_loopbackr_r{s r
rLz_BaseNetwork.is_loopbackZr8r)r6N)(rr	r
rrrrrrrrrr
	functoolscached_propertyr_rrrrrrrrrr rrrarZr.staticmethodr1rr5r7r:rDrGrJrLrrr
rqrqs???@@@
)
)
))))666


"""CCC
L
L
L777777GGGAAXA>>X>??X?KKXK''X'XI2I2I2V...`CCC3333j''''R	5	5X	5	4	4\	4//////	4	4X	466X6
J
JX
J##X#	7	7X	7	4	4X	4	4	4rrqceZdZgZdS)_BaseConstantsN)rr	r
rCrrr
rQrQgsrrQceZdZ	dZdZdezdz
ZeZiZdZ	e
dZe
dZe
dZ
e
d	Zd
ZedZedZd
S)_BaseV4rr#r.r6c t|SrWrr{s r
rzz$_BaseV4._explode_shorthand_ip_strings4yyrc	||jvrt|tr,|}d|cxkr|jksn||n<	||}n%#t$r||}YnwxYwt|	|}||f|j|<|j|Sr)
_netmask_cacherJrrNrrrrrrrargrrs    r

_make_netmaskz_BaseV4._make_netmasks	c(((#s##
@	Y<<<<#*<<<<<//	:::@ # > >s C CII(@@@!$ : :3 ? ?III@"#"9"9)"D"DEEG&-y&8Cs#!#&&s
A##BBcF	|std|d}t|dkrtd|z	tt|j|dS#t$r}t|d|dd}~wwxYw)NAddress cannot be empty.r#zExpected 4 octets in %rr in )rr0r1r
from_bytesmap_parse_octetr)rroctetsexcs    r
rz_BaseV4._ip_int_from_strings		?#$=>>>c""v;;!#$=$FGGG	J>>#c&6"?"?GGG	J	J	J####vv$>??TI	Js-A<<
B BB c	|std|r|sd}t||zt|dkrd}t||z|dkr |ddkrd}t||zt	|d}|d	krtd
|z|S)NzEmpty octet not permittedz#Only decimal digits permitted in %rz$At most 3 characters permitted in %rrrz%Leading zeros are not permitted in %r
zOctet %d (> 255) not permitted)rrrr1r)r	octet_strr	octet_ints    r
r`z_BaseV4._parse_octets		:8999!!##	.	(9(9(;(;	.7CS9_---y>>A8CS9_---	! 3 39CS9_---	2&&	s??=	IJJJrc	|	dtt|ddS)Nr\r#r)joinr_r/r%)rrs  r
rz_BaseV4._string_from_ip_ints3	xxCE!:!:;;<<<rc	t|dddd}d|dzS)Nr\rez
.in-addr.arpa)r/r0rj)r|reverse_octetss  r
rz_BaseV4._reverse_pointersB	
T--ddd3xx''/99rc|jSrWrNr{s r

max_prefixlenz_BaseV4.max_prefixlen""rc|jSrWrr{s r
rMz_BaseV4.version
}rN)rr	r
rrf
IPV4LENGTHrOrNrVrzrrYrr`rrrrorMrrr
rSrSosIHJ!#INN''['2JJ[J2!![!F
=
=[
=:::##X#XrrSceZdZ	dZdZedZedZeej	dZ
eej	dZedZedZ
ed	Zed
ZdS)r)r9__weakref__c	t|tr||||_dSt|tr7||dt||_dSt|}d|vrtd||	||_dS)Nr#r-Unexpected '/' in )
rJrrr9rrr^r/rrr|raddr_strs   r
__init__zIPv4Address.__init__s
	gs##	##G,,,DHFgu%%	&&w222~~g..DHFw<<(??#$D$D$DEEE++H55rc,	t|jSrW)r'r9r{s r
packedzIPv4Address.packed%8)))rc 	||jjvSrW)rB_reserved_networkr{s r
r7zIPv4Address.is_reserved*s	t888rcP	tfdjjDS)Nc3 K|]}|vV	dSrWrr=rTr|s  r
r?z)IPv4Address.is_private.<locals>.<genexpr>?'LL343;LLLLLLrr@r{s`r
rDzIPv4Address.is_private5s2	LLLL$/*KLLLLLLrc.||jjvo|jSrW)rB_public_networkrDr{s r
rGzIPv4Address.is_globalAs4?::R4??RRrc 	||jjvSrWrB_multicast_networkr{s r
r.zIPv4Address.is_multicastF	t999rc$	||jjkSrW)rB_unspecified_addressr{s r
rJzIPv4Address.is_unspecifiedQs	t;;;rc 	||jjvSrW)rB_loopback_networkr{s r
rLzIPv4Address.is_loopback\s	t888rc 	||jjvSrWrB_linklocal_networkr{s r
r:zIPv4Address.is_link_localf	t999rN)rr	r
rrzrr|r7rM	lru_cacherDrGr.rJrLr:rrr
rrs69&I!6!6!6F**X*99X9YMMXMYSSXS::X:<<X<99X9::X:::rrceZdZdZejdZdZdZdZ	dZ
ejZe
dZe
dZe
d	Ze
d
ZdS)rc||\}}t||t||fd|_|jj|_|jj|_dSNF)r)rrrzrrrrgr|rr2masks    r
rzzIPv4Interface.__init__sc,,W55
dT4((("D$<>>>|+,1rc|jjSrWrrr{s r
rzIPv4Interface.hostmask{
|$$rcJd||j|jfzSrrr9rgr{s r
rzIPv4Interface.__str__s+$2248<</++	+rct||}|tus|s|S	|j|jkS#t$rYdSwxYwr)rrrtrrhr|r
address_equals   r
rzIPv4Interface.__eq__e#**477
N**-*  	<5=00			55		:
AAct||}|turtS	|j|jkp|j|jko|S#t$rYdSwxYwr)rrrtrrhr|raddress_lesss   r
rzIPv4Interface.__lt__sz"))$66>))!!	L5=0CLEM1Bl
D			55	s!A
AAcht|j|jt|jjfSrWrr9rgrrrir{s r
rzIPv4Interface.__hash__(TXtDL4P0Q0QRSSSrc*t|jSrW)rr9r{s r
r>zIPv4Interface.ip48$$$rcJ||jd|jSrrr{s r
rzIPv4Interface.with_prefixlen,2248<<<<//+	+rcJ||jd|jSrrr9rr{s r
rzIPv4Interface.with_netmask,2248<<<<,,(	(rcJ||jd|jSrrr9rr{s r
rzIPv4Interface.with_hostmask,2248<<<<--)	)rN)rr	r
rzrMrNrrrrrrxrrr>rrrrrr
rrqs222%%%+++





TTT *J
%%X%++X+((X())X)))rrc\eZdZ	eZddZeejdZ	dS)rTc	||\}t|_||\|_|_t
|j}|t
|jz|kr=|rtd|zt|t
|jz|_|j|jdz
kr|j	|_
dS|j|jkrfd|_
dSdS)N%s has host bits setr6c$tgSrW)rr2sr
<lambda>z&IPv4Network.__init__.<locals>.<lambda>+d"3"3!4r)rrrirYrrgrrrNrrr|rrrr|r2s     @r
rzzIPv4Network.__init__s!	D,,W55
d*400(,(:(:4(@(@%doT)**C%%%//
F !7$!>???'2636t|3D3D4E(F(F$?t2Q677DJJJ
_!4
5
54444DJJJ6
5rcn	|jtdvo|jtdvo|jS)N
100.64.0.0/10)rirr_rDr{s r
rGzIPv4Network.is_globalsM	)[-I-IIK*k/.J.JJL$O#	%rNT)
rr	r
rrrzrrMrrGrrr
rrsf	!N25252525hY
%
%X
%
%
%rrceZdZedZedZedZedZededededededed	ed
ededed
edededgZedZ	e
dZdS)_IPv4Constantsz169.254.0.0/16z127.0.0.0/8z224.0.0.0/4rz	0.0.0.0/8z
10.0.0.0/8z
172.16.0.0/12z192.0.0.0/29z192.0.0.170/31z192.0.2.0/24z192.168.0.0/16z
198.18.0.0/15z198.51.100.0/24z203.0.113.0/24z240.0.0.0/4z255.255.255.255/32z0.0.0.0N)rr	r
rrrrrrCrrrrrr
rrs8$%566#M22$]33!k/22O	K  L!!M""$%%O$$N##$%%N##$%%O$$%&&$%%M""())
"$M22&;y11rrceZdZ	dZdZdezdz
ZdZedZ	eZ
iZedZ
edZed	Zed
ZeddZd
ZdZedZedZedZdS)_BaseV6rrIr.r6r0123456789ABCDEFabcdefc8	||jvrt|tr,|}d|cxkr|jksn||n||}t
||}||f|j|<|j|Sr)rVrJrrNrrrrrWs    r
rYz_BaseV6._make_netmask=s	c(((#s##
@	Y<<<<#*<<<<<//	:::::3??	!#"9"9)"D"DEEG&-y&8Cs#!#&&rc	|std|d}d}t||krd||fz}t|d|dvr	t|j}n'#t$r}t|d|dd}~wwxYw|d|d	z	d
zz|d|d
zz|jdz}t||krd|dz
|fz}t|d}tdt|dz
D]"}	||	s|d
|z}t||	}#||}
t||z
dz
}|ds|
dz}
|
rd}t||z|ds|dz}|rd}t||z|j|
|zz
}|dkrd}t||jdz
|fzn~t||jkrd}t||j|fz|dsd}t||z|dsd}t||zt|}
d}d}	d}
t|
D]%}	|
d	z}
|
|	||	z}
&|
d	|zz}
t|dD]%}	|
d	z}
|
|	||	z}
&|
S#t$r}t|d|dd}~wwxYw)Nr[:rdz At least %d parts expected in %rr\rer]%xr*r6z!At most %d colons permitted in %rz At most one '::' permitted in %rrz0Leading ':' only permitted as part of '::' in %rz1Trailing ':' only permitted as part of '::' in %rz/Expected at most %d other parts with '::' in %rz,Exactly %d parts expected without '::' in %r)rr0r1rrYr9r\
_HEXTET_COUNTr
_parse_hextetr)rrparts
_min_partsripv4_intrb
_max_parts
skip_indexiparts_hiparts_lo
parts_skippedrs              r
rz_BaseV6._ip_int_from_stringQs		?#$=>>>S!!
u::
""4
F7KKC#C(((%)
N&uyy{{337$
N
N
N'ccc66(BCCM
NLL(b.F!:;<<<LLF!23444
&*
u::
""5Av8NNC#C(((
q#e**q.))		A8
)<vEC+C000
!!H5zzJ.2H8
:A
:LC+C&L9999
:A
:MC+C&L999-H1DEMq  G's/@/BF.K(KLLL!5zzS...D's/@&.I(IJJJ8
6H'f5559
6I'f5555zzHHM	JF8__
6
62
#++E!H555rM))FH9a((
6
62
#++E!H555M	J	J	J####vv$>??TI	Js1&B
B)B$$B)0A7K((
L2LLc	|j|std|zt|dkrd}t||zt	|dS)NzOnly hex digits permitted in %rr#z$At most 4 characters permitted in %rr*)_HEX_DIGITS
issupersetrr1r)r
hextet_strrs   r
rz_BaseV6._parse_hextetsq	))*55	M>KLLLz??Q8CS:-...:r"""rc	d}d}d}d}t|D]'\}}|dkr|dz
}|dkr|}||kr|}|}#d}d}(|dkr2||z}|t|kr|dgz
}dg|||<|dkrdg|z}|S)Nrerrr6)	enumerater1)	rhextetsbest_doublecolon_startbest_doublecolon_lendoublecolon_startdoublecolon_lenindexhextetbest_doublecolon_ends	         r
_compress_hextetsz_BaseV6._compress_hextetss	"$ &w//	'	'ME6}}1$$**(-%"%999+:(->*"#$&!!!##$:$8%9 $s7||33B4DF4G*+??@%**$.rNc	|t|j}||jkrtdd|zfdt	dddD}||}d|S)NzIPv6 address is too large%032xc	Lg|] }dt||dzdz!S)rr#r*)rr=rhex_strs  r

<listcomp>z/_BaseV6._string_from_ip_int.<locals>.<listcomp>s4KKKa4#ga!enb111KKKrrrr#r)rr9rOrrrrj)rrrrs   @r
rz_BaseV6._string_from_ip_ints	>\\FCM!!8999F"KKKK5B??KKK''00xx   rc	t|trt|j}n9t|trt|j}nt|}||}d|zfdtdddD}t|ttfrdd	||j
fzSd	|S)Nrc*g|]}||dzS)r#rrs  r
rz8_BaseV6._explode_shorthand_ip_string.<locals>.<listcomp>0s%999A1Q3999rrrr#rr)rJrr/rir r>rrrqrjrg)r|rrrrs    @r
rzz$_BaseV6._explode_shorthand_ip_strings	dK((	-..FF
m
,
,	\\FFYYF))&11F"9999q"a999d\=9::	@chhuoot???xxrc|	|jddddd}d|dzS)Nrerrr\z	.ip6.arpa)r}replacerj)r|
reverse_charss  r
rz_BaseV6._reverse_pointer5sB	

ddd+33C<<
xx
&&44rcx	|d\}}}|sd}n|rd|vrtd|z||fS)N%zInvalid IPv6 address: "%r")	partitionr)rr2sepscope_ids    r
_split_scope_idz_BaseV6._split_scope_id>sb
	%..s33c8	KHH	KSH__#$@6$IJJJX~rc|jSrWrnr{s r
roz_BaseV6.max_prefixlenRrprc|jSrWrr{s r
rMz_BaseV6.versionVrrrrW)rr	r
rrf
IPV6LENGTHrOr	frozensetrrNrVrrYrrrrrzrrOrrrorMrrr
rr)sUIHJ!#IM)455KNN''['&eJeJ[eJN##[#2--[-^!!![!20555\&##X#XrrceZdZ	dZdZfdZdZfdZdZe	dZ
e	dZe	d	Ze	d
Z
e	dZe	dZe	ejd
Ze	dZe	dZe	dZe	dZe	dZe	dZxZS)r)r9	_scope_idruc	t|tr%||||_d|_dSt|t
r?||dt|d|_d|_dSt|}d|vrtd||
|\}|_|||_dS)Nr*rr-rw)rJrrr9rrrr^r/rrrrxs   r
rzzIPv6Address.__init__as	"gs##	##G,,,DH!DNFgu%%	&&w333~~gu55DH!DNFw<<(??#$D$D$DEEE#'#7#7#A#A $.++H55rcpt}|jr
|dz|jzn|S)Nr)rrr)r|rrs  r
rzIPv6Address.__str__s3""04Jv|dn,,FJrc8t|j|jfSrW)rr9rr{s r
rzIPv6Address.__hash__sTXt~.///rct|}|turtS|sdS|jt	|ddkS)NFr)rrrtrgetattr)r|rrrs   r
rzIPv6Address.__eq__sOu--
N**!!	5~T!B!BBBrc0|jt|ffSrWrr{s r
rzIPv6Address.__reduce__sT--rc	|jSrW)rr{s r
rzIPv6Address.scope_ids	~rc,	t|jSrW)r+r9r{s r
r|zIPv6Address.packedr}rc 	||jjvSrWrr{s r
r.zIPv6Address.is_multicastrrcP	tfdjjDS)Nc3 K|]}|vV	dSrWr)r=rr|s  r
r?z*IPv6Address.is_reserved.<locals>.<genexpr>s'II419IIIIIIr)rArB_reserved_networksr{s`r
r7zIPv6Address.is_reserveds2	IIIIdo&HIIIIIIrc 	||jjvSrWrr{s r
r:zIPv6Address.is_link_localrrc 	||jjvSrW)rB_sitelocal_networkr{s r

is_site_localzIPv6Address.is_site_locals		t999rcp	j}||jStfdjjDS)Nc3 K|]}|vV	dSrWrrs  r
r?z)IPv6Address.is_private.<locals>.<genexpr>rr)ipv4_mappedrDrArBrC)r|rs` r
rDzIPv6Address.is_privatesI	&"))LLLL$/*KLLLLLLrc	|jSrWrFr{s r
rGzIPv6Address.is_globalrHrc	|jdkSrrr{s r
rJzIPv6Address.is_unspecified	x1}rc	|jdkSr5rr{s r
rLzIPv6Address.is_loopbackrrcR	|jdz	dkrdSt|jdzS)Nrrr9rr{s r
rzIPv6Address.ipv4_mappeds4	
HNv%%448j0111rc	|jdz	dkrdSt|jdz	dzt|jdzfS)N`i @rrr{s r
teredozIPv6Address.teredosS	
HNz))4TX^z9::TXI
2335	5rcX	|jdz	dkrdSt|jdz	dzS)Npi Prrr{s r
	sixtofourzIPv6Address.sixtofour's8	
HO&&4DHNj8999r)rr	r
rrzrrrrrrr|r.r7r:r	rMrrDrGrJrLrrrrrs@r
rr[s93I&6&6&6PKKKKK000CCCCC...		X	**X*::X:JJXJ::X:::X:YMMXM##X#XX
2
2X
255X5
:
:X
:
:
:
:
:rrceZdZdZejdZfdZdZdZ	dZ
ejZe
dZe
dZe
d	Ze
d
Ze
dZe
dZxZS)
r c||\}}t||t||fd|_|jj|_|jj|_dSr)rrrzrrrrgrs    r
rzzIPv6Interface.__init__7rrc|jjSrWrr{s r
rzIPv6Interface.hostmask?rrcXdt|jfzSr)rrrg)r|rs r
rzIPv6Interface.__str__Cs*%''//++/++	+rct||}|tus|s|S	|j|jkS#t$rYdSwxYwr)rrrtrrhrs   r
rzIPv6Interface.__eq__Grrct||}|tur|S	|j|jkp|j|jko|S#t$rYdSwxYwr)rrrtrrhrs   r
rzIPv6Interface.__lt__Ssz"))$66>))	L5=0CLEM1Bl
D			55	s!A


AAcht|j|jt|jjfSrWrr{s r
rzIPv6Interface.__hash___rrc*t|jSrW)rr9r{s r
r>zIPv6Interface.ipdrrcJ||jd|jSrrr{s r
rzIPv6Interface.with_prefixlenhrrcJ||jd|jSrrr{s r
rzIPv6Interface.with_netmaskmrrcJ||jd|jSrrr{s r
rzIPv6Interface.with_hostmaskrrrc0|jdko|jjSr)r9rrJr{s r
rJzIPv6Interface.is_unspecifiedwsx1}<!<<rc0|jdko|jjSr5)r9rrLr{s r
rLzIPv6Interface.is_loopback{sx1}9!99r)rr	r
rzrMrNrrrrrrxrrr>rrrrJrLrrs@r
r r 5s@222%%%+++++





TTT *J
%%X%++X+((X())X)==X=::X:::::rr c8eZdZ	eZddZdZedZdS)rTc	||\}t|_||\|_|_t
|j}|t
|jz|kr=|rtd|zt|t
|jz|_|j|jdz
kr|j	|_
dS|j|jkrfd|_
dSdS)Nrr6c$tgSrW)rrsr
rz&IPv6Network.__init__.<locals>.<lambda>rr)rrrirYrrgrrrNrrrs     @r
rzzIPv6Network.__init__s
	<,,W55
d*400(,(:(:4(@(@%doT)**C%%%//
F !7$!>???'2636t|3D3D4E(F(F$?t2Q677DJJJ
_ 3
3
34444DJJJ4
3rc#K	t|j}t|j}t|dz|dzD]}||VdSr5rrs    r
rzIPv6Network.hostssu	d*++.//	w{IM22	)	)A%%a((((((	)	)rc4	|jjo|jjSrW)rir	r_r{s r
r	zIPv6Network.is_site_locals%		$25&4	6rNr)	rr	r
rrrzrrr	rrr
rrs_	!N.5.5.5.5`
)
)
)66X666rrcLeZdZedZedZededededededed	ed
ededg
Zeded
edededededededededededededgZedZdS)_IPv6Constantsz	fe80::/10zff00::/8z::1/128z::/128z
::ffff:0:0/96z100::/64z	2001::/23z2001:2::/48z
2001:db8::/32z2001:10::/28zfc00::/7z::/8z100::/8z200::/7z400::/6z800::/5z1000::/4z4000::/3z6000::/3z8000::/3zA000::/3zC000::/3zE000::/4zF000::/5zF800::/6zFE00::/9z	fec0::/10N)	rr	r
rrrrCrrrrr
r/r/s$[11$Z00	IHO$$JK  M""O$$N##JK  
	F[[33II 6 6IJ 7 7JZ!8!8JZ!8!8JZ!8!8JZ!8!8J	%[11rr/r)$__version__rMrsrrrrrrr!r'r+r3r?rErUrcrorvrxrtotal_orderingrKrqrQrBrSrrrrrrr rr/rrr
<module>r2sW



00000
00000000
000SSS:SSSS:UUUDCCC(
C
C
C (
:
:
: 444n...b363636l2o,o,o,o,o,o,o,o,d
hNhNhNhNhN>hNhNhNVD4D4D4D4D4>D4D4D4N
)JJJJJJJJZr:r:r:r:r:'<r:r:r:j@)@)@)@)@)K@)@)@)FO%O%O%O%O%'<O%O%O%d22222222>('ooooooood	W:W:W:W:W:'<W:W:W:tH:H:H:H:H:KH:H:H:VY6Y6Y6Y6Y6'<Y6Y6Y6x22222222B('r