Ë –+ý¬²Á+0ã ój—dZddlZdZ ddlZej sed«‚ejejddlmZ m Z m Z dZddlmZddlmZmZmZmZmZmZmZmZ m!Z"d Z#d Z$d Z%e Z&d Z'd Z(d Z)de#zdz Z*e#e$zZ+de$zdz Z,e-e.de#dz«D�cgc]}|e*de#|z zdz z f‘Œc}«Z/e-e.de#dz«D�cgc]}e*de#|z zdz z |f‘Œc}«Z0e-e.de#dz«D�cgc]}|de#|z zdz f‘Œc}«Z1e-e.de#dz«D�cgc]}de#|z zdz |f‘Œc}«Z2Gd„de3«Z4Gd„de4«Z5Gd„de4«Z6d%d„Z7d%d„Z8d&d„Z9d„Z:d„Z;d„Z8Hz) is not a valid 128-bit unsigned integer!) rÚ int_to_packedrÚ _inet_ntoprÚlistÚ_structÚunpackrÚword_sepÚjoinÚ ExceptionÚ ValueError)Úint_valÚdialectr.r3ÚwordsÚwordÚtokenss r"Ú int_to_strrD˜s­€ð€Üˆà €Dð UÜ" 7Ó+ˆ Ø �?Š?äœh¨ Ó3ˆDð €Kô œŸ™¨¨zÓ:Ó;ˆEÙ:?Ó@¹%°$�g×&Ñ&¨Ó-¸%ˆFÐ@Ü—=‘= Ó(‰Dð €Kùò Aøä òUÜÊ'ÐSÓTÐTðUús"Œ'B µ#B ÁBÁ.B ÂB  B%có¨—t|t«}t|jdd««}|j «|gd¢z}dj |«S)z“ :param int_val: An unsigned integer. :return: The reverse DNS lookup for an IPv6 address in network byte order integer form. rÚ)Úip6ÚarparFÚ.)rDr&r8ÚreplaceÚreverser<)r?r.rCs r"Ú int_to_arparL¶sI€ô �gœ|Ó ,€DÜ �$—,‘,˜s BÓ'Ó (€FØ ‡N�NÔà Ò)Ñ )€FØ �8‰8�FÓ Ðr!cóH—t|dd«}tjdg|¢­ŽS)z• :param int_val: the integer to be packed. :return: a packed string that is equivalent to value represented by an unsigned integer. éé ú>4I)rr9Úpack)r?rAs r"r6r6Ås&€ô ˜ ! RÓ (€EÜ �<‰<˜Ð & Ò &Ð&r!cóž—ttjd|««}d}tt |««D]\}}|}|d|zz}||z}Œ|S)a :param packed_int: a packed string containing an unsigned integer. It is assumed that string is packed in network byte order. :return: An unsigned integer equivalent to value of network address represented by packed binary string. rPrrO)r8r9r:Ú enumerateÚreversed)r3rAr?ÚiÚnumrBs r"r2r2ÐsW€ô ”—‘  zÓ2Ó 3€Eà€GÜœH U›OÖ,‰ˆˆ3؈Ø�r˜A‘v‰~ˆØ˜D‘.‰ð-ð €Nr!có,—t|tt«S©N)Ú _valid_wordsÚ word_sizeÚ num_words©rAs r"rrãs€Ü ˜œy¬)Ó 4Ð4r!cóX—|€ t«d}|€ t«d}t|||«S)Nr[rZ)ÚglobalsÚ _int_to_words)r?r[rZs r"rrçs5€ØÐÜ“I˜kÑ*ˆ ØÐÜ“I˜kÑ*ˆ Ü ˜ )¨YÓ 7Ð7r!có,—t|tt«SrX)Ú _words_to_intrZr[r\s r"r r ïs€Ü ˜¤ ¬9Ó 5Ð5r!có,—t|tt«SrX)Ú _valid_bitsÚwidthr;©Úbitss r"r r ós€Ü �tœU¤HÓ -Ð-r!có,—t|tt«SrX)Ú _bits_to_intrdr;res r"r r ÷s€Ü ˜œe¤XÓ .Ð.r!cóL—|€ t«d}t|tt|«S)Nr;)r^Ú _int_to_bitsrZr[)r?r;s r"r r ûs%€ØÐÜ“9˜ZÑ(ˆÜ ˜¤¬I°xÓ @Ð@r!có"—t|t«SrX)Ú _valid_binrd©Úbin_vals r"r r s€Ü �gœuÓ %Ð%r!có"—t|t«SrX)Ú _int_to_binrd)r?s r"rró€Ü �w¤Ó &Ð&r!có"—t|t«SrX)Ú _bin_to_intrdrms r"rr rqr!)rrX)NN)=rÚstructr9Ú OPT_IMPORTSÚsocketÚ_socketÚhas_ipv6r=rrr,rr7Únetaddr.fbsocketÚ netaddr.corerÚnetaddr.strategyrrYrr_r rar rcr rhr rjr rlrrprrsrdrZr;ÚfamilyÚ family_nameÚversionÚ word_baseÚmax_intr[Úmax_wordÚdictÚrangeÚprefix_to_netmaskÚnetmask_to_prefixÚprefix_to_hostmaskÚhostmask_to_prefixÚobjectrr$r&r0r4rDrLr6r2)rUs0r"Úr‰sdðñ óà€ ð \Ûð × Ò Ù˜Ó(Ð(Ø ×ÒØ ×ÒßRÑRà€Kõ)÷ ÷ õ ð €ð € ð €ð €ð€ ð €ð € ð ˆU‰(�Q‰,€ð �YÑ € ð ˆi‰<˜!Ñ €ñÉÈqÐRWÐZ[ÑR[ÔI\Ó]ÑI\ÀA˜1˜g¨¨u°q©yÑ)9¸AÑ)=Ñ>Ò?ÐI\Ñ]Ó^ÐñÉÈqÐRWÐZ[ÑR[ÔI\Ó]ÑI\ÀA˜7 a¨E°A©IÑ&6¸Ñ&:Ñ;¸QÒ?ÐI\Ñ]Ó^ÐñÁÀaÈÐQRÉÔ@SÓTÑ@S¸1˜A  e¨a¡iÑ 0°1Ñ 4Ò6Ð@SÑTÓUÐñÁÀaÈÐQRÉÔ@SÓTÑ@S¸1˜Q 5¨1¡9Ñ-°Ñ1°AÒ6Ð@SÑTÓUÐô�6ôô� ôô�<ôóó* %ó ò< ò'òò&5ó8ò6ò.ò/óAò &ò'ó'øðaò\ß[Ô[ð\üò^^ùò^ùòUùòUs)Š