+
    ‰4i¶Z  ã                   óð   € ^ RI t ^ RIt^ RIt^ RIt^ RIHtHtHtHtH	t	 R t
R tR tR tR tR tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!R t"R t#R t$R t%R t&R# ) é    N)Ú	IPAddressÚ	IPNetworkÚIPRangeÚIPSetÚcidr_excludec                  ór  € \        R R4      p \        R 4      R\        R4      \        R4      \        R4      RR\        R4      \        R	4      \        R
4      .
p\        V P	                  4       4      p\        V4      pV\        . RO4      8X  g   Q hW#8X  g   Q hVP                  4       V9   g   Q hW#8w  g   Q hR# )ú	192.0.2.1ú
192.0.2.15ú192.0.2.2/31z192.0.2.4/31ú	192.0.2.6ú	192.0.2.7ú	192.0.2.8ú	192.0.2.9ú
192.0.2.10ú
192.0.2.11z192.0.2.12/30N)z192.0.2.1/32r   z192.0.2.4/30z192.0.2.8/29)r   r   r   r   ÚcidrsÚpop)Úrange1Úip_listÚset1Úset2s       Ú?/usr/lib/python3/dist-packages/netaddr/tests/ip/test_ip_sets.pyÚtest_ipset_basic_apir   
   s»   € Ü�[ ,Ó/€Fô 	�+ÓØÜ�.Ó!Ü�+ÓÜ�+ÓØØÜ�,ÓÜ�,ÓÜ�/Ó"ð€Gô �—‘“Ó €Dä�‹>€Dà”5ò	
óô ð ð ð Œ<Ðˆ<Ø�8‰8‹:˜ÔÐÐØŒ<ÐŠ<ó    c                  ó˜   € \        4       \        . 4      8X  g   Q h\        . 4      p \        . 4      V 8X  g   Q h\        V 4      ^ 8X  g   Q hR# )r   N)r   Úlen)Ú	empty_sets    r   Útest_ipset_emptyr   ,   sC   € Ü‹7”e˜B“iÔÐÐÜ�b“	€IÜ�‹9˜	Ô!Ð!Ð!Üˆy‹>˜QÔÐÒr   c                  ó´  € \        R .4      \        R.4      8X  g   Q h\        \        R 4      .4      \        R.4      8X  g   Q h\        \        R 4      .4      \        R.4      8X  g   Q h\        \        R4      4      \        R.4      8X  g   Q h\        \        R4      .4      \        R.4      8X  g   Q h\        \        R.4      4      \        R.4      8X  g   Q h\        \        RR4      4      \        RR.4      8X  g   Q h\        \        RR	4      4      \        R
.4      8X  g   Q h\        \        RR4      .4      \        \        RR4      4      8X  g   Q hR# )ú	192.0.2.0ú192.0.2.0/32z	1234::/32ú192.0.2.0/24ú10.0.0.0z	10.0.1.31ú10.0.0.0/24z10.0.1.0/27ú0.0.0.0ú255.255.255.255ú	0.0.0.0/0N)r   r   r   r   © r   r   Útest_ipset_constructorr)   3   s:  € Ü�+�Ó¤5¨.Ð)9Ó#:Ô:Ð:Ð:Ü”)˜KÓ(Ð)Ó*¬e°^Ð4DÓ.EÔEÐEÐEÜ”)˜KÓ(Ð)Ó*¬e°^Ð4DÓ.EÔEÐEÐEÜ”˜;Ó'Ó(¬E°;°-Ó,@Ô@Ð@Ð@Ü”)˜NÓ+Ð,Ó-´¸Ð7GÓ1HÔHÐHÐHÜ”˜Ð'Ó(Ó)¬U°NÐ3CÓ-DÔDÐDÐDÜ”˜ [Ó1Ó2´e¸]ÈMÐ<ZÓ6[Ô[Ð[Ð[Ü”˜Ð$5Ó6Ó7¼5À+ÀÓ;OÔOÐOÐOÜ”'˜* kÓ2Ð3Ó4¼¼gÀjÐR]Ó>^Ó8_Ô_Ð_Ò_r   c                  ó   € \        \        R R.4      4      . \        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R	4      N\        R
4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R 4      N\        R!4      N8X  g   Q hR"# )#ú192.0.2.0/28z::192.0.2.0/124r    r	   ú	192.0.2.2ú	192.0.2.3ú	192.0.2.4ú	192.0.2.5r   r   r   r   r   r   ú
192.0.2.12ú
192.0.2.13ú
192.0.2.14r
   ú::192.0.2.0z::192.0.2.1ú::192.0.2.2z::192.0.2.3ú::192.0.2.4z::192.0.2.5z::192.0.2.6z::192.0.2.7z::192.0.2.8z::192.0.2.9z::192.0.2.10z::192.0.2.11z::192.0.2.12z::192.0.2.13z::192.0.2.14z::192.0.2.15N)Úlistr   r   r(   r   r   Útest_ipset_iterationr7   ?   s(  € Ü”�~Ð'8Ð9Ó:Ó;ð !@Ü�+Óð!@ä�+Óð!@ô 	�+Óð!@ô 	�+Óð	!@ô
 	�+Óð!@ô 	�+Óð!@ô 	�+Óð!@ô 	�+Óð!@ô 	�+Óð!@ô 	�+Óð!@ô 	�,Óð!@ô 	�,Óð!@ô 	�,Óð!@ô 	�,Óð!@ô 	�,Óð!@ô  	�,Óð!!@ô" 	�-Ó ð#!@ô$ 	�-Ó ð%!@ô& 	�-Ó ð'!@ô( 	�-Ó ð)!@ô* 	�-Ó ð+!@ô, 	�-Ó ð-!@ô. 	�-Ó ð/!@ô0 	�-Ó ð1!@ô2 	�-Ó ð3!@ô4 	�-Ó ð5!@ô6 	�.Ó!ð7!@ô8 	�.Ó!ð9!@ô: 	�.Ó!ð;!@ô< 	�.Ó!ð=!@ô> 	�.Ó!ð?!@ô@ 	�.Ó!ðA!@ô !ð !ò !r   c                  ó`  € \        4       p V P                  R 4       V \        R.4      8X  g   Q hV P                  R 4       V \        . 4      8X  g   Q hV P                  \        RR4      4       V \        R.4      8X  g   Q hV P                  \        RR4      4       V \        R.4      8X  g   Q hR# )	r    r!   r#   ú
10.0.0.255r$   z
10.0.0.128z10.10.10.10ú10.0.0.0/25N)r   ÚaddÚremover   ©Ús1s    r   Ú(test_ipset_member_insertion_and_deletionr?   d   s—   € Ü	‹€BØ‡F�Fˆ;ÔØ”˜Ð'Ó(Ô(Ð(Ð(à‡I�IˆkÔØ”�r“Œ?Ðˆ?à‡F�FŒ7�:˜|Ó,Ô-Ø”˜�Ó'Ô'Ð'Ð'à‡I�IŒg�l MÓ2Ô3Ø”˜�Ó'Ô'Ð'Ò'r   c                  óú   € \        R R4      p V P                  4       \        R4      \        R4      \        R4      .8X  g   Q h\        R.4      pV  Uu. uF  p\	        V4      W!9   3NK  	  up. RO8X  g   Q hR# u upi )ú192.0.1.255ú
192.0.2.16z192.0.1.255/32r+   z192.0.2.16/32N))rA   F)r    T)r	   T)r,   T)r-   T)r.   T)r/   T)r   T)r   T)r   T)r   T)r   T)r   T)r0   T)r1   T)r2   T)r
   T)rB   F)r   r   r   r   Ústr)ÚiprangeÚipsetÚips      r   Útest_ipset_membershiprG   s   s‡   € Ü�m \Ó2€Gà�=‰=‹?ÜÐ"Ó#Ü�.Ó!Ü�/Ó"ðô ð ð ô �>Ð"Ó#€Eá-4Ó5©W rŒS�‹W�b‘kÓ"©WÑ5ò :ô ð ò ùÒ5s   ÁA8c                  óÒ   € \        R .4      p \        R4      V 9   g   Q h\        R4      V 9   g   Q h\        R4      V 9   g   Q h\        R4      V 9   g   Q h\        R4      V 9  g   Q hR# )r'   ú10.0.0.1r%   z255.255.255.0r$   ú::1N©r   r   r   ©rE   s    r   Útest_ipset_membership_largestrM   ”   sm   € Ü�;�-Ó €Eä�ZÓ  EÔ)Ð)Ð)Ü�YÓ 5Ô(Ð(Ð(Ü�_Ó%¨Ô.Ð.Ð.Ü�]Ó# uÔ,Ð,Ð,Ü�UÓ 5Ô(Ð(Ò(r   c                  óÒ   € \        R .4      p \        R4      V 9   g   Q h\        R 4      V 9   g   Q h\        R4      V 9  g   Q h\        R4      V 9  g   Q h\        R4      V 9  g   Q hR# )z10.0.0.42/32z	10.0.0.42z	10.0.0.41z	10.0.0.43z10.0.0.42/31NrK   rL   s    r   Útest_set_membership_smallestrO   ž   sn   € Ü�>Ð"Ó#€Eä�[Ó! UÔ*Ð*Ð*Ü�^Ó$¨Ô-Ð-Ð-ä�[Ó!¨Ô.Ð.Ð.Ü�[Ó!¨Ô.Ð.Ð.Ü�^Ó$¨EÔ1Ð1Ò1r   c                  ó˜  € \        R .4      \        R.4      8X  g   Q h\        R .4      \        R.4      ,          \        R.4      8X  g   Q h\        R .4      \        R.4      ,          \        R.4      ,          \        RR.4      8X  g   Q h\        R .4      \        R.4      ,          \        R.4      ,          \        R.4      8X  g   Q h\        R .4      \        R.4      ,          \        R.4      ,          \        R.4      8X  g   Q h\        R	.4      \        R
.4      ,          \        R.4      ,          \        RR.4      8X  g   Q hR# )r    r!   r	   z192.0.2.0/31r-   z192.0.2.3/32z192.0.2.3/30z192.0.2.0/30z192.0.2.3/31r"   ú192.0.3.0/24ú192.0.4.0/24z192.0.2.0/23N©r   r(   r   r   Útest_ipset_unionsrT   ©   sW  € Ü�+�Ó¤5¨.Ð)9Ó#:Ô:Ð:Ð:Ü�+�Ó¤%¨¨Ó"6Õ6¼%ÀÐ@PÓ:QÔQÐQÐQÜ�+�Ó¤%¨¨Ó"6Õ6¼À¸}Ó9MÕMÔQVØ	˜Ð(óRô ð ð ô �+�Ó¤%¨¨Ó"6Õ6¼ÀÐ?OÓ9PÕPÔTYØ	ÐóUô ð ð ô �+�Ó¤%¨¨Ó"6Õ6¼ÀÐ?OÓ9PÕPÔTYØ	ÐóUô ð ð ô �.Ð!Ó"¤U¨NÐ+;Ó%<Õ<¼uÀnÐEUÓ?VÕVÔZ_Ø	˜Ð(ó[ô ð ò r   c                  óÈ  € \        \        R 4      P                  ^4      4      p V R,          p\        V4      pV\        . RO4      8X  g   Q h\        R .4      V,          \        . RO4      8X  g   Q h\        R .4      V,          pV\        . RO4      8X  g   Q hW#,          \        R .4      8X  g   Q hW#,          \        . 4      8X  g   Q hW#,          \        R .4      8X  g   Q hR# )r"   :NNé   N)r+   z192.0.2.32/28z192.0.2.64/28z192.0.2.96/28z192.0.2.128/28z192.0.2.160/28z192.0.2.192/28z192.0.2.224/28)z192.0.2.16/28z192.0.2.48/28z192.0.2.80/28z192.0.2.112/28z192.0.2.144/28z192.0.2.176/28z192.0.2.208/28z192.0.2.240/28)r6   r   Úsubnetr   )Ú	adj_cidrsÚ
even_cidrsÚevensÚoddss       r   Ú+test_ipset_unions_intersections_differencesr\   º   sò   € Ü”Y˜~Ó.×5Ñ5°bÓ9Ó:€IØ˜3•€JÜ�*Ó€Eà”Eò		
óô ð ð ô �.Ð!Ó" UÕ*¬eò		
ó/ô ð ð ô �.Ð!Ó" UÕ*€DØ”5ò		
óô ð ð ð �<œ5 .Ð!1Ó2Ô2Ð2Ð2Ø�<œ5 ›9Ô$Ð$Ð$Ø�<œ5 .Ð!1Ó2Ô2Ð2Ò2r   c                  ó  € \        R R.4      p \        RR.4      pV P                  V4      '       g   Q hVP                  V 4      '       g   Q hVP                  V 4      '       d   Q hV P                  V4      '       d   Q h\        R.4      p\        . RO4      p\        . RO4      pWC,          pW%,          pVP                  4        Uu. uF,  p\	        \        \        Ww^ ,          VR,          34      4      NK.  	  up. R	NR
NRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNR NR!NR"NR#NR$NR%NR&NR'NR(NR)NR*NR+NR,NR-NR.NR/NR0NR1NR2NR3NR4NR5NR6NR7NR8NR9NR:NR;NR<N8X  g   Q hW&,          \        . R=O4      8X  g   Q hR# u upi )>r"   rR   r    ú	192.0.4.0r'   N)ú
10.0.0.0/8ú172.16.0.0/12r"   ú192.168.0.0/16ú239.192.0.0/14)ú225.0.0.0/8ú226.0.0.0/7ú228.0.0.0/6ú234.0.0.0/7ú236.0.0.0/7ú238.0.0.0/8ú240.0.0.0/4éÿÿÿÿ)z	0.0.0.0/5r%   z7.255.255.255)z	8.0.0.0/7z8.0.0.0z9.255.255.255)z
11.0.0.0/8z11.0.0.0z11.255.255.255)z
12.0.0.0/6z12.0.0.0z15.255.255.255)ú
16.0.0.0/4z16.0.0.0z31.255.255.255)ú
32.0.0.0/3z32.0.0.0z63.255.255.255)ú
64.0.0.0/2z64.0.0.0z127.255.255.255)z128.0.0.0/3z	128.0.0.0z159.255.255.255)z160.0.0.0/5z	160.0.0.0z167.255.255.255)z168.0.0.0/6z	168.0.0.0z171.255.255.255)z172.0.0.0/12z	172.0.0.0z172.15.255.255)z172.32.0.0/11z
172.32.0.0z172.63.255.255)z172.64.0.0/10z
172.64.0.0z172.127.255.255)z172.128.0.0/9z172.128.0.0z172.255.255.255)z173.0.0.0/8z	173.0.0.0z173.255.255.255)z174.0.0.0/7z	174.0.0.0z175.255.255.255)z176.0.0.0/4z	176.0.0.0z191.255.255.255)z192.0.0.0/23z	192.0.0.0rA   )rQ   z	192.0.3.0z192.0.3.255)z192.0.4.0/22r^   z192.0.7.255)z192.0.8.0/21z	192.0.8.0z192.0.15.255)z192.0.16.0/20z
192.0.16.0z192.0.31.255)z192.0.32.0/19z
192.0.32.0z192.0.63.255)z192.0.64.0/18z
192.0.64.0z192.0.127.255)z192.0.128.0/17z192.0.128.0z192.0.255.255)z192.1.0.0/16z	192.1.0.0z192.1.255.255)z192.2.0.0/15z	192.2.0.0z192.3.255.255)z192.4.0.0/14z	192.4.0.0z192.7.255.255)z192.8.0.0/13z	192.8.0.0z192.15.255.255)z192.16.0.0/12z
192.16.0.0z192.31.255.255)z192.32.0.0/11z
192.32.0.0z192.63.255.255)z192.64.0.0/10z
192.64.0.0z192.127.255.255)z192.128.0.0/11z192.128.0.0z192.159.255.255)z192.160.0.0/13z192.160.0.0z192.167.255.255)z192.169.0.0/16z192.169.0.0z192.169.255.255)z192.170.0.0/15z192.170.0.0z192.171.255.255)z192.172.0.0/14z192.172.0.0z192.175.255.255)z192.176.0.0/12z192.176.0.0z192.191.255.255)z192.192.0.0/10z192.192.0.0z192.255.255.255)z193.0.0.0/8z	193.0.0.0z193.255.255.255)z194.0.0.0/7z	194.0.0.0z195.255.255.255)z196.0.0.0/6z	196.0.0.0z199.255.255.255)z200.0.0.0/5z	200.0.0.0z207.255.255.255)z208.0.0.0/4z	208.0.0.0z223.255.255.255)z224.0.0.0/8z	224.0.0.0z224.255.255.255)z232.0.0.0/7z	232.0.0.0z233.255.255.255)z239.0.0.0/9z	239.0.0.0z239.127.255.255)z239.128.0.0/10z239.128.0.0z239.191.255.255)z239.196.0.0/14z239.196.0.0z239.199.255.255)z239.200.0.0/13z239.200.0.0z239.207.255.255)z239.208.0.0/12z239.208.0.0z239.223.255.255)z239.224.0.0/11z239.224.0.0z239.255.255.255)r_   r`   r"   ra   rc   rd   re   rf   rg   rh   rb   ri   )r   Ú
issupersetÚissubsetÚ
iter_cidrsÚtupleÚmaprC   )r>   Ús2Úipv4_addr_spaceÚprivateÚreservedÚunavailableÚ	availableÚcidrs           r   Ú test_ipset_supersets_and_subsetsrz   ì   sƒ  € Ü	� Ð/Ó	0€BÜ	�˜[Ð)Ó	*€Bà�=‰=˜×ÒÐÐØ�;‰;�r�?Š?Ðˆ?Ø�}‰}˜R× Ò Ð Ð Ø�{‰{˜2�ŠÐÐä˜[˜MÓ*€OÜÚ[ó€Gô ò	
ó
€Hð Õ$€KØÕ-€IàCL×CWÑCWÔCYÓZÑCY¸4ŒE”#”c˜D q¥'¨4°­8Ð4Ó5Ö6ÑCYÑZð 5_Ø1ð5_à1ð5_ð 	5ð5_ð 	5ð	5_ð
 	5ð5_ð 	5ð5_ð 	6ð5_ð 	8ð5_ð 	8ð5_ð 	8ð5_ð 	8ð5_ð 	:ð5_ð 	;ð5_ð 	<ð5_ð 	8ð5_ð  	8ð!5_ð" 	8ð#5_ð$ 	5ð%5_ð& 	5ð'5_ð( 	5ð)5_ð* 	6ð+5_ð, 	8ð-5_ð. 	8ð/5_ð0 	9ð15_ð2 	;ð35_ð4 	7ð55_ð6 	7ð75_ð8 	7ð95_ð: 	8ð;5_ð< 	:ð=5_ð> 	:ð?5_ð@ 	;ðA5_ðB 	=ðC5_ðD 	=ðE5_ðF 	=ðG5_ðH 	=ðI5_ðJ 	=ðK5_ðL 	=ðM5_ðN 	=ðO5_ðP 	8ðQ5_ðR 	8ðS5_ðT 	8ðU5_ðV 	8ðW5_ðX 	8ðY5_ðZ 	8ð[5_ð\ 	8ð]5_ð^ 	8ð_5_ð` 	=ða5_ðb 	=ðc5_ðd 	=ðe5_ðf 	=ðg5_ðh 	=ði5_ô 5ð 5ð 5ðn Õ&¬%ò	
ó+ô ð ò ùòo [s   Ã2Fc                  ór  € \        . RO4      p \        . R	O4      pW,          \        . R
O4      8X  g   Q hW,          \        . R
O4      8X  g   Q hW,          \        RR.4      8X  g   Q hW,
          \        RR.4      8X  g   Q hW,
          \        RR.4      8X  g   Q hW,          \        . RO4      8X  g   Q hR# )r    r!   ú192.0.2.2/32ú192.0.2.4/32ú::192.0.2.0/128ú::192.0.2.2/128ú::192.0.2.4/128N©r    r3   r,   r4   ©r,   r4   r.   r5   )r!   r|   r}   r~   r   r€   ©r!   r}   r~   r€   rS   ©r>   rs   s     r   Ú"test_combined_ipv4_and_ipv6_ipsetsr…   P  sÃ   € Ü	ÒGÓ	H€BÜ	ÒGÓ	H€Bà�7”eò	
ó	ô 	ð 	ð 	ð �7”eò	
ó	ô 	ð 	ð 	ð �7”e˜^Ð->Ð?Ó@Ô@Ð@Ð@Ø�7”e˜^Ð->Ð?Ó@Ô@Ð@Ð@Ø�7”e˜^Ð->Ð?Ó@Ô@Ð@Ð@Ø�7”eÒbÓcÔcÐcÒcr   c                  ó4  € \        . RO4      p \        . RO4      pW,          \        R.4      8X  g   Q hV P                  V4      '       d   Q h\        R R.4      p\        RR.4      pW#,          \        . 4      8X  g   Q hVP                  V4      '       g   Q hR# )r    r	   r-   r.   r|   N)r    r	   r,   )r,   r-   r.   )r   Ú
isdisjoint©r>   rs   Ús3Ús4s       r   Útest_disjointed_ipsetsr‹   p  sŒ   € Ü	Ò6Ó	7€BÜ	Ò6Ó	7€Bà�7”e˜^Ð,Ó-Ô-Ð-Ð-Ø�}‰}˜R× Ò Ð Ð ä	�˜[Ð)Ó	*€BÜ	�˜[Ð)Ó	*€Bà�7”e˜B“iÔÐÐØ�=‰=˜×ÒÐÒr   c                  ó¸  € \        R .4      p \        R.4      pV P                  V4       V \        R.4      8X  g   Q hV P                  . R
O4       V \        R.4      8X  g   Q h\        RR.4      p\        R.4      pVP                  \        RR4      4       W28X  g   Q h\        R.4      pVP                  \        RR4      \        RR4      .4       WB8X  g   Q hR	# )z192.0.2.0/25z192.0.2.128/25r"   ú192.0.1.0/24z192.0.0.0/22r    z192.0.2.255z192.0.2.100z
192.0.2.50N)z192.0.0.0/24r�   rQ   )r   Úupdater   )r>   rs   Úexpectedr‰   rŠ   s        r   Útest_ipset_updatesr�   ~  sÐ   € Ü	�ÐÓ	 €BÜ	Ð Ð!Ó	"€Bà‡I�Iˆb„MØ”˜Ð'Ó(Ô(Ð(Ð(à‡I�IÒ>Ô?Ø”˜Ð'Ó(Ô(Ð(Ð(ä�n nÐ5Ó6€Hä	�ÐÓ	 €BØ‡I�IŒg�k =Ó1Ô2ØŒ>Ðˆ>ä	�ÐÓ	 €BØ‡I�IŒw�{ MÓ2´G¸LÈ-Ó4XÐYÔZØŒ>ÐŠ>r   c                  ó¾   € \        R .4      p V P                  \        RR4      4       V \        R.4      8X  g   Q hV P                  4        V \        . 4      8X  g   Q hR# )ú10.0.0.0/16z10.1.0.0z10.1.255.255z10.0.0.0/15N)r   rŽ   r   ÚclearrL   s    r   Útest_ipset_clearr”   “  sQ   € Ü�=�/Ó"€EØ	‡L�L”˜ ^Ó4Ô5Ø”E˜=˜/Ó*Ô*Ð*Ð*à	‡K�K„MØ”E˜"“IÔÐÒr   c                  ó,  € \        R .4      p V P                  R4       V \        . RNRNRNRNRNRNRNR	NR
NRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNR NR!N4      8X  g   Q hV P                  4       p\        V4      ^ 8X  g   Q h\	        V4      . \        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R	4      N\        R
4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R4      N\        R 4      N\        R!4      N8X  g   Q hV\        R R4      8X  g   Q hV P                  R"4       V \        . R#NR$NR%NR&NR'NR(NR)NR*NR+NR,NR-NR.NR/NR0NR1NR2NR3NR4NR5NR6NR7NR8NR9NR:NR;NR<NR=NR>NR?NR@NRANRNRNRNRNRNRNR	NR
NRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNR NR!N4      8X  g   Q h\        \	        V P                  4       4      4      ^>8X  g   Q hV P                  R4       V P                  R"4       V \        R .4      8X  g   Q hRB# )Cr'   r&   z	0.0.0.0/1z128.0.0.0/2z192.0.0.0/3z224.0.0.0/4z240.0.0.0/5z248.0.0.0/6z252.0.0.0/7z254.0.0.0/8z255.0.0.0/9z255.128.0.0/10z255.192.0.0/11z255.224.0.0/12z255.240.0.0/13z255.248.0.0/14z255.252.0.0/15z255.254.0.0/16z255.255.0.0/17z255.255.128.0/18z255.255.192.0/19z255.255.224.0/20z255.255.240.0/21z255.255.248.0/22z255.255.252.0/23z255.255.254.0/24z255.255.255.0/25z255.255.255.128/26z255.255.255.192/27z255.255.255.224/28z255.255.255.240/29z255.255.255.248/30z255.255.255.252/31z255.255.255.254/32r%   ú
0.0.0.1/32z
0.0.0.2/31z
0.0.0.4/30z
0.0.0.8/29z0.0.0.16/28z0.0.0.32/27z0.0.0.64/26z0.0.0.128/25z
0.0.1.0/24z
0.0.2.0/23z
0.0.4.0/22z
0.0.8.0/21z0.0.16.0/20z0.0.32.0/19z0.0.64.0/18z0.0.128.0/17z
0.1.0.0/16z
0.2.0.0/15z
0.4.0.0/14z
0.8.0.0/13z0.16.0.0/12z0.32.0.0/11z0.64.0.0/10z0.128.0.0/9z	1.0.0.0/8z	2.0.0.0/7z	4.0.0.0/6z	8.0.0.0/5rk   rl   rm   N)r   r<   rp   r   r6   r   r   r;   )r>   r   s     r   Útest_ipset_cidr_fracturingr—   œ  sã  € Ü	�ˆ}Ó	€BØ‡I�IÐÔ Ø”ð!	
Øð!	
àð!	
ð ð!	
ð ð	!	
ð
 ð!	
ð ð!	
ð ð!	
ð ð!	
ð ð!	
ð ð!	
ð ð!	
ð ð!	
ð ð!	
ð ð!	
ð ð!	
ð  ð!!	
ð" ð#!	
ð$ ð%!	
ð& ð'!	
ð( ð)!	
ð* ð+!	
ð, ð-!	
ð. ð/!	
ð0 ð1!	
ð2 ð3!	
ð4 !ð5!	
ð6 !ð7!	
ð8 !ð9!	
ð: !ð;!	
ð< !ð=!	
ð> !ð?!	
ð@ !ðA!	
ó#ô #ð #ð #ðJ �M‰M‹O€EÜˆu‹:˜ÔÐÐÜ�‹;ð !Ü�+Óð!ä�-Ó ð!ô 	�-Ó ð!ô 	�-Ó ð	!ô
 	�-Ó ð!ô 	�-Ó ð!ô 	�-Ó ð!ô 	�-Ó ð!ô 	�-Ó ð!ô 	Ð"Ó#ð!ô 	Ð"Ó#ð!ô 	Ð"Ó#ð!ô 	Ð"Ó#ð!ô 	Ð"Ó#ð!ô 	Ð"Ó#ð!ô  	Ð"Ó#ð!!ô" 	Ð"Ó#ð#!ô$ 	Ð$Ó%ð%!ô& 	Ð$Ó%ð'!ô( 	Ð$Ó%ð)!ô* 	Ð$Ó%ð+!ô, 	Ð$Ó%ð-!ô. 	Ð$Ó%ð/!ô0 	Ð$Ó%ð1!ô2 	Ð$Ó%ð3!ô4 	Ð&Ó'ð5!ô6 	Ð&Ó'ð7!ô8 	Ð&Ó'ð9!ô: 	Ð&Ó'ð;!ô< 	Ð&Ó'ð=!ô> 	Ð&Ó'ð?!ô@ 	Ð&Ó'ðA!ô !ð !ð !ðF ”L Ð.?Ó@Ô@Ð@Ð@à‡I�IˆiÔà”ð?	
Øð?	
àð?	
ð ð?	
ð ð	?	
ð
 ð?	
ð ð?	
ð ð?	
ð ð?	
ð ð?	
ð ð?	
ð ð?	
ð ð?	
ð ð?	
ð ð?	
ð ð?	
ð  ð!?	
ð" ð#?	
ð$ ð%?	
ð& ð'?	
ð( ð)?	
ð* ð+?	
ð, ð-?	
ð. ð/?	
ð0 ð1?	
ð2 ð3?	
ð4 ð5?	
ð6 ð7?	
ð8 ð9?	
ð: ð;?	
ð< ð=?	
ð> ð??	
ð@ ðA?	
ðB ðC?	
ðD ðE?	
ðF ðG?	
ðH ðI?	
ðJ ðK?	
ðL ðM?	
ðN ðO?	
ðP ðQ?	
ðR ðS?	
ðT ðU?	
ðV ðW?	
ðX ðY?	
ðZ ð[?	
ð\ ð]?	
ð^ ð_?	
ð` ða?	
ðb ðc?	
ðd ðe?	
ðf ðg?	
ðh ði?	
ðj ðk?	
ðl ðm?	
ðn ðo?	
ðp !ðq?	
ðr !ðs?	
ðt !ðu?	
ðv !ðw?	
ðx !ðy?	
ðz !ð{?	
ð| !ð}?	
óAô Að Að AôF Œt�B—M‘M“OÓ$Ó%¨Ô+Ð+Ð+à‡F�FÐÔØ‡F�Fˆ9Ôà”˜�}Ó%Ô%Ð%Ò%r   c                  ód  € \        R R.4      p V P                  4       \        RR4      8X  g   Q hV P                  4       '       g   Q hV P	                  R4       V \        . RO4      8X  g   Q hV P                  4       '       d   Q h\
        P                  ! \        4      ;_uu_ 4        V P                  4        RRR4       \        V P                  4       4      \        RR4      \        RR4      .8X  g   Q h\        R.4      pVP                  4       '       g   Q hVP                  4       \        R	R
4      8X  g   Q h\        4       pVP                  4       '       g   Q hVP                  4       e   Q h\        \        RR4      4      pVP                  4       '       g   Q hR#   + '       g   i     Lð; i)r:   ú10.0.0.128/25r#   r9   z	10.0.0.16Nz	10.0.0.15z	10.0.0.17r'   r%   r&   z10.0.0.8)z10.0.0.0/28z10.0.0.17/32z10.0.0.18/31z10.0.0.20/30z10.0.0.24/29z10.0.0.32/27z10.0.0.64/26r™   )
r   rD   r   Úiscontiguousr<   ÚpytestÚraisesÚ
ValueErrorr6   Úiter_iprangesrˆ   s       r   Útest_ipset_with_iprangerŸ   8  sl  € Ü	�˜Ð/Ó	0€BØ�:‰:‹<œ7 :¨|Ó<Ô<Ð<Ð<à�?‰?×ÒÐÐà‡I�IˆkÔØ”ò		
óô ð ð ð �‰× Ò Ð Ð ä	�Š”z×	"Õ	"Ø
�
‰
Œ÷ 
#ô �× Ñ Ó"Ó#Ü�
˜KÓ(Ü�˜\Ó*ð(ô ð ð ô
 
�ˆ}Ó	€BØ�?‰?×ÒÐÐØ�:‰:‹<œ7 9Ð.?Ó@Ô@Ð@Ð@ä	‹€BØ�?‰?×ÒÐÐØ�:‰:‹<ÒÐÐä	Œw�z :Ó.Ó	/€BØ�?‰?×ÒÐÒ÷# 
#×	"ús   Â&FÆF/	c                  óˆ   € \        R R.4      p \        P                  ! V 4      p\        P                  ! V4      pW8X  g   Q hR# )r’   ú	fe80::/64N)r   ÚpickleÚdumpsÚloads)Úip_dataÚbufÚip_data_unpickleds      r   Útest_ipset_picklingr¨   b  s:   € Ü�] KÐ0Ó1€GÜ
�,Š,�wÓ
€CÜŸš SÓ)ÐØÔ'Ð'Ò'r   c                  óf   € \        R .4      p \        R.4      pW8”  g   Q hW8  d   Q hW8w  g   Q hR# )zfc00::/2zfc00::/3NrS   r„   s     r   Útest_ipset_comparisonrª   i  s6   € Ü	�
ˆ|Ó	€BÜ	�
ˆ|Ó	€BàŒ7€Nˆ7ØŒwÐˆ;ØŒ8€OŠ8r   c                  óþ  € \        R .4      p V P                  R4       V \        R.4      8X  g   Q h\        \        R4      4      p\        \        R4      4      p\        \        R4      4      p\        W.4      pV\        RR.4      8X  g   Q hVP                  V4       V\        . R	O4      8X  g   Q hVP	                  V4       V\        RR.4      8X  g   Q hVP                  V.4       V\        . R	O4      8X  g   Q hR# )
r:   r$   rI   zfe80::ú10.0.0.2ú10.0.0.1/32ú
fe80::/128ú10.0.0.2/32N)r­   r¯   r®   )r   r;   Úintr   r<   rŽ   )r>   Úinteger1Úinteger2Úinteger3rs   s        r   Ú;test_ipset_adding_and_removing_members_ip_addresses_as_intsr´   r  sç   € Ü	�ˆÓ	€Bà‡F�Fˆ=ÔØ”˜�Ó'Ô'Ð'Ð'ä”9˜ZÓ(Ó)€HÜ”9˜XÓ&Ó'€HÜ”9˜ZÓ(Ó)€Hä	�Ð#Ó	$€BØ”˜ |Ð4Ó5Ô5Ð5Ð5à‡F�Fˆ8ÔØ”ÒCÓDÔDÐDÐDà‡I�IˆhÔØ”˜ }Ð5Ó6Ô6Ð6Ð6à‡I�IˆxˆjÔØ”ÒCÓDÔDÐDÒDr   c                  óX  € \        . RO4      p \        . RO4      p\        . RO4      p\        RR.4      p\        . RO4      p\        RR.4      p\        R.4      p\        V4      '       g   Q h\        \        4       4      '       d   Q hW,          \        RR.4      8X  g   Q hW#,          \        RR	.4      8X  g   Q hW2,          \        RR	.4      8X  g   Q hW%,          \        R
R.4      8X  g   Q hWR,          \        R
R.4      8X  g   Q hW#,
          \        . RO4      8X  g   Q hW2,
          \        . 4      8X  g   Q hW$,
          \        . RO4      8X  g   Q hW%,
          \        . RO4      8X  g   Q hWR,
          \        . 4      8X  g   Q hW,          \        . RO4      8X  g   Q h\        . 4      \        . 4      ,          \        . 4      8X  g   Q h\        R.4      \        . 4      ,          \        R.4      8X  g   Q h\        R.4      \        R.4      ,          \        . 4      8X  g   Q hW#,          \        . RO4      8X  g   Q hW2,          \        . RO4      8X  g   Q hW$,          \        . RO4      8X  g   Q hW%,          \        . RO4      8X  g   Q hWR,          \        . RO4      8X  g   Q hR# )r    ú	10.0.0.64ú	10.0.0.66z	10.0.0.65z	10.0.0.67z2405:8100::/32r|   r   ú10.0.0.64/32ú10.0.0.66/32ú10.0.0.65/32ú10.0.0.67/32r–   Nr�   r‚   )ú0.0.0.1z10.0.0.64/30z255.255.255.1)r¶   r·   z111.111.111.111)r–   rº   r»   ú255.255.255.1/32)r–   r¸   r¹   r½   rƒ   )r–   rº   r»   z111.111.111.111/32r½   )r   Úbool)r>   rs   r‰   rŠ   Ús4bÚs5Ús6s          r   Ú1test_ipset_operations_with_combined_ipv4_and_ipv6rÂ   ‰  sb  € Ü	ÒGÓ	H€BÜ	ÒGÓ	H€BÜ	Ò;Ó	<€BÜ	�˜[Ð)Ó	*€BÜ
Ò=Ó
>€CÜ	�˜[Ð)Ó	*€BÜ	Ð Ð!Ó	"€Bä��8Š8€Oˆ8Ü”E“G�}Š}ÐÐð �7”e˜^Ð->Ð?Ó@Ô@Ð@Ð@Ø�7”e˜^¨^Ð<Ó=Ô=Ð=Ð=Ø�7”e˜^¨^Ð<Ó=Ô=Ð=Ð=Ø�7”e˜^¨^Ð<Ó=Ô=Ð=Ð=Ø�7”e˜^¨^Ð<Ó=Ô=Ð=Ð=ð �7”eÒ^Ó_Ô_Ð_Ð_Ø�7”e˜B“iÔÐÐØ�8”uÒ_Ó`Ô`Ð`Ð`Ø�7”eÒ^Ó_Ô_Ð_Ð_Ø�7”e˜B“iÔÐÐð �7”eÒbÓcÔcÐcÐcÜ�‹9”u˜R“yÕ ¤E¨"£IÔ-Ð-Ð-Ü�,�Ó ¤5¨£9Õ,´°|°nÓ0EÔEÐEÐEÜ�,�Ó ¤5¨,¨Ó#8Õ8¼EÀ"»IÔEÐEÐEØ�7”eÒ^Ó_Ô_Ð_Ð_Ø�7”eÒ^Ó_Ô_Ð_Ð_Ø�8”uÚ`óô ð ð ð �7”eÒ^Ó_Ô_Ð_Ð_Ø�7”eÒ^Ó_Ô_Ð_Ò_r   c                  ób  € \        \        4       P                  4       4      . 8X  g   Q h\        \        \        R 4      .4      P                  4       4      \	        R R 4      .8X  g   Q h\        \        \        R 4      \        R4      .4      P                  4       4      \	        R R4      .8X  g   Q hR# )rI   r¬   N)r6   r   rž   r   r   r(   r   r   Ú"test_converting_ipsets_to_iprangesrÄ   ±  s˜   € Ü”“×%Ñ%Ó'Ó(¨BÔ.Ð.Ð.Ü””y Ó,Ð-Ó.×<Ñ<Ó>Ó?ÄGÈJÐXbÓDcÐCdÔdÐdÐdÜ””y Ó,¬i¸
Ó.CÐDÓE×SÑSÓUÓVÜ�
˜JÓ'ð[ô ð ò r   c            	      ó¾  € \        \        \        R 4      \        \        P                  ^4      4      4      p \
        P                  ! \        4      ;_uu_ 4        \        V 4       RRR4       \        \        \        R 4      \        \        P                  ^,
          ^4      4      4      p\        V4      \        P                  8X  g   Q hR#   + '       g   i     Lo; i)z::0N)	r   r   r   ÚsysÚmaxsizer›   rœ   Ú
IndexErrorr   r„   s     r   Ú3test_len_on_ipset_failure_with_large_ipv6_addressesrÉ   ¹  s„   € Ü	Œw”y Ó'¬´3·;±;ÀÓ)BÓCÓ	D€BÜ	�Š”z×	"Õ	"ÜˆBŒ÷ 
#ô 
Œw”y Ó'¬´3·;±;Àµ?ÀAÓ)FÓGÓ	H€BÜˆr‹7”c—k‘kÔ!Ð!Ò!÷	 
#×	"ús   ÁCÃC	c            	      ó°   € \        \        \        ^^4      \        ^^4      .4      P                  4       4      \	        RR4      \	        RR4      .8X  g   Q hR# )é   r¼   rJ   N)r6   r   r   rž   r   r(   r   r   Ú#test_ipset_ipv4_and_ipv4_separationrÌ   Â  sR   € Ü””y  A“¬	°!°Q«Ð8Ó9×GÑGÓIÓJÜ�	˜9Ó%Ü��uÓðOô ð ò r   c                  óP  € \        R .4      p \        P                  ! \        4      ;_uu_ 4        \	        V 4       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  ^*4       RRR4       R#   + '       g   i     LN; i  + '       g   i     R# ; i©rI   N)r   r›   rœ   Ú	TypeErrorÚhashrŽ   r=   s    r   Útest_ipset_exceptionsrÑ   É  sd   € Ü	�
ˆ|Ó	€Bô 
�Š”y×	!Õ	!ÜˆRŒ÷ 
"ô 
�Š”y×	!Õ	!Ø
�	‰	�"Œ÷ 
"Ñ	!÷	 
"×	!ú÷ 
"×	!Ð	!ús   ¯BÁ%BÂB	ÂB%	c                  ó:   € \        R .4      p V ^*8X  d   Q hV ^*8g   R# rÎ   rS   r=   s    r   Ú)test_ipset_comparison_with_int_is_invalidrÓ   Õ  s!   € Ü	�
ˆ|Ó	€BØ�RŒxÐˆ<Øˆ"„Hr   c                  óÊ   € \        \        R 4      4      p V P                  \        R4      4       \        V P	                  4       4      \        R4      \        R4      .8X  g   Q hR# )z
10.1.2.3/8z192.168.1.2/16r_   ra   N©r   r   r;   r6   rp   r=   s    r   Ú'test_ipset_converts_to_cidr_networks_v4rÖ   Û  sV   € Ü	Œy˜Ó&Ó	'€BØ‡F�FŒ9Ð%Ó&Ô'Ü�—‘“Ó Ü�,ÓÜÐ"Ó#ð%ô ð ò r   c                  óÊ   € \        \        R 4      4      p V P                  \        R4      4       \        V P	                  4       4      \        R4      \        R4      .8X  g   Q hR# )zfe80::4242/64zfe90::4343/64r¡   z	fe90::/64NrÕ   r=   s    r   Ú'test_ipset_converts_to_cidr_networks_v6rØ   ä  sT   € Ü	Œy˜Ó)Ó	*€BØ‡F�FŒ9�_Ó%Ô&Ü�—‘“Ó Ü�+ÓÜ�+Óð%ô ð ò r   c                  óB   € \         P                  ! \        4       4       R # )N)ÚweakrefÚrefr   r(   r   r   Útest_ipset_is_weak_referencablerÜ   í  s   € Ü‡K‚K”“Ör   )'r¢   rÆ   rÚ   r›   Únetaddrr   r   r   r   r   r   r   r)   r7   r?   rG   rM   rO   rT   r\   rz   r…   r‹   r�   r”   r—   rŸ   r¨   rª   r´   rÂ   rÄ   rÉ   rÌ   rÑ   rÓ   rÖ   rØ   rÜ   r(   r   r   Ú<module>rÞ      s·   ðÛ Û 
Û ã ç FÕ FòòDò	`ò"òJ(òòB)ò2òò"/3òdaòHdò@òò*òY&òx'òT(òòEò.%`òPò"òò	òòòôr   