Ë
    ÓŠð^7   ã                   óN   — d Z ddlmZmZ ddlmZmZ dZ	dZ
d„ Zd„ Zd„ Zd	„ Zd
„ Zy)z=Fallback routines for Python's standard library socket moduleé    )ÚunpackÚpack)Ú_bytes_joinÚ_is_stré   é
   c                 ó–   — t        | «      st        dt        | «      z  «      ‚t        | «      dk7  rt	        d«      ‚dt        d| «      z  S )zR
    Convert an IP address from 32-bit packed binary format to string format.
    zstring type expected, not %sé   ú*invalid length of packed IP address stringz%d.%d.%d.%dÚ4B)r   Ú	TypeErrorÚtypeÚlenÚ
ValueErrorÚ_unpack)Ú	packed_ips    ú2/usr/lib/python3/dist-packages/netaddr/fbsocket.pyÚ	inet_ntoar      sK   € ô �9ÔÜÐ6¼¸i»ÑHÓIÐIä
ˆ9ƒ~˜ÒÜÐEÓFÐFàœ7 4¨Ó3Ñ3Ð3ó    c                 óî  — g }g }d }d}t        | «      D ]A  \  }}|dk(  r
|€|}|dz  }n|dkD  r|j                  ||f«       d }d}|j                  |«       ŒC |dkD  r|j                  ||f«       t        |«      dk7  rw|j                  d„ ¬«       |d   }|D ]  }|d   |d   kD  sŒ|}Œ |\  }	}
|d|
 dgz   ||
|	z   d  z   }|d   dk(  r|j	                  dd«       |d   dk(  r|j                  d«       |S )Nr   Ú0é   c                 ó   — | d   S )Nr   © )Úxs    r   ú<lambda>z&_compact_ipv6_tokens.<locals>.<lambda>9   s
   €  Q q¡T€ r   )ÚkeyÚ éÿÿÿÿ)Ú	enumerateÚappendr   ÚsortÚinsert)ÚtokensÚ
new_tokensÚ	positionsÚstart_indexÚ
num_tokensÚidxÚtokenÚbest_positionÚpositionÚlengthÚ	start_idxs              r   Ú_compact_ipv6_tokensr/      sR  € Ø€Jà€IØ€KØ€Jô   Ó'ò !‰
ˆˆUØ�CŠ<ØÐ"Ø!�Ø˜!‰O‰Jà˜AŠ~Ø× Ñ  *¨kÐ!:Ô;ØˆKØˆJà×Ñ˜%Õ ð!ð �A‚~Ø×Ñ˜* kÐ2Ô3ô ˆ9ƒ~˜Òà�‰™>ˆÔ*Ø! !™ˆØ!ò 	)ˆHØ˜‰{˜]¨1Ñ-Ó-Ø (‘ð	)ð ,Ñˆ�Ø  )Ð,°¨tÑ3°jÀÈVÑASÐATÐ6UÑUˆ
ð �a‰=˜BÒØ×Ñ˜a Ô$à�b‰>˜RÒØ×Ñ˜bÔ!àÐr   c           
      óD  — | t         k(  rt        |«      S | t        k(  rìt        |«      dk7  st	        |«      st        d«      ‚t        d|«      D �cg c]  }d|z  ‘Œ	 }}t        t        d|«      «      }d}t        t        |«      «      D ]  \  }}|}|d|z  z  }||z  }Œ d|cxk  rdk  s
n |dz	  dk(  r;t        d	g|d
d D �cg c]  }t        |d«      ‘Œ c}¢­Ž }t        |«      }	|dd
 |	gz   }dj                  t        |«      «      S t        d| z  «      ‚c c}w c c}w )zBConvert an packed IP address of the given family to string format.é   r   z>8Hú%xr   éÿÿ  l   ÿÿ é    z>2HéþÿÿÿNú:zunknown address family %d)ÚAF_INETr   ÚAF_INET6r   r   r   r   Úlistr    ÚreversedÚ_packÚintÚjoinr/   )
Úafr   Úir$   ÚwordsÚint_valÚnumÚwordÚpacked_ipv4Úipv4_strs
             r   Ú	inet_ntoprF   L   s4  € à	ŒW‚}ä˜Ó#Ð#Ø	ŒxŠäˆy‹>˜RÒ¤w¨yÔ'9ÜÐIÓJÐJä$+¨E°9Ó$=Ö>˜q�$˜“(Ð>ˆÐ>ô ”W˜U IÓ.Ó/ˆØˆÜ¤¨£Ó0ò 	%‰FˆAˆsØˆDØ˜2 ™6‘>ˆDØ ‘n‰Gð	%ð
 �GÔ)˜zÔ)¨W¸©]¸fÒ-Dä ÐJ¸VÀBÀC¸[Ö(I¸¬¨Q°­Ò(IÒJˆKÜ  Ó-ˆHØ˜A˜b�\ X JÑ.ˆFà�x‰xÔ,¨VÓ4Ó5Ð5äÐ4°rÑ9Ó:Ð:ùò% ?ùò )Js   ÁDÃD
c                 ó°  — t        | «      r¦t        d| z  «      }| j                  d«      }t        |«      dk(  rwg }|D ]e  }|j	                  d«      s|j	                  d«      rt        |«      dkD  r|‚	 t        |«      }|dz	  dk7  r|‚|j                  t        d	|«      «       Œg t        |«      S |‚t        d
t        | «      z  «      ‚# t        $ r |‚w xY w)a  
    Convert an IP address in string format (123.45.67.89) to the 32-bit packed
    binary format used in low-level network functions. Differs from inet_aton
    by only support decimal octets. Using octal or hexadecimal values will
    raise a ValueError exception.
    úillegal IP address string %rú.r
   Ú0xr   r   é   r   ÚBz#argument should be a string, not %s)
r   r   Úsplitr   Ú
startswithr<   r!   r;   r   r   )Ú	ip_stringÚinvalid_addrr$   r@   r*   Úoctets         r   Ú_inet_pton_af_inetrR   k   sì   € ô ˆyÔÜ!Ð"@À9Ñ"LÓMˆà—‘ Ó%ˆô ˆv‹;˜!ÒØˆEØò 
0�Ø×#Ñ# DÔ)¨e×.>Ñ.>¸sÔ.CÌÈEË
ÐUVÊØ&Ð&ð'Ü ›J�Eð ˜Q‘J 1Ò$Ø&Ð&Ø—‘œU 3¨Ó.Õ/ð
0ô ˜uÓ%Ð%àÐä
Ð:¼TÀ)»_ÑLÓ
MÐMøô "ò 'Ø&Ð&ð'ús   Á3C	Ã	Cc                 ó(  — | t         k(  rt        |«      S | t        k(  �rt        d|z  «      }g }t	        |«      s|‚d|v r|‚d|v �rµ|dk(  rdj                  «       dz  S 	 |j                  d«      \  }}g }g }|dk7  r|j                  d«      }|dk7  r|j                  d«      }t        |«      rhd|d	   v rat        |j                  «       «      }|j                  d
t        d|dd «      d   z  «       |j                  d
t        d|dd «      d   z  «       t        |«      t        |«      z   }	d|	cxk  rdk  s|‚ |‚dt        |«      t        |«      z   z
  }
|D �cg c]  }t        dt        |d«      «      ‘Œ c}t        |
«      D �cg c]  }dj                  «       ‘Œ c}z   |D �cg c]  }t        dt        |d«      «      ‘Œ c}z   }	 ||z   D ]  }t        |d«      }d|cxk  rdk  rŒ|‚ |‚ 	 t        |«      S d|v �r8|j                  d«      }d|v r½|dd	 }|dd	 g d¢k7  r|‚|d	   j                  «       dvr|‚t        |«      dk7  r|‚t        |j                  «       «      }|j                  d
t        d|dd «      d   z  «       |j                  d
t        d|dd «      d   z  «       |D �cg c]  }t        dt        |d«      «      ‘Œ }}nt        |«      dk7  r|‚	 |D �cg c]  }t        |d«      ‘Œ }}|D ]  }d|cxk  rdk  rŒ|‚ |‚ 	 |D �cg c]  }t        d|«      ‘Œ }}t        |«      S |‚t        d| z  «      ‚# t        $ r |‚w xY wc c}w c c}w c c}w # t        $ r |‚w xY wc c}w c c}w # t        $ r |‚w xY wc c}w )z|
    Convert an IP address from string format to a packed string suitable for
    use with low-level network functions.
    rH   r   z::ú r1   r   r6   rI   r   r2   z>Hr   r   r
   é   rK   z  r3   N)r   r   r   r   r   )r   ÚffffzUnknown address family %d)r7   rR   r8   r   r   ÚencoderM   r   Úpopr!   r   r;   r<   ÚrangeÚlowerr   )r>   rO   rP   ÚvaluesÚprefixÚsuffixÚl_prefixÚl_suffixrE   Útoken_countÚgap_sizer?   r*   rC   r$   Úipv6_prefixs                   r   Ú	inet_ptonrc   �   s  € ð
 
ŒW‚}ä! )Ó,Ð,Ø	Œx‹Ü!Ð"@À9Ñ"LÓMˆàˆä�yÔ!ØÐà�)ÑàÐà�9ÒØ˜DÒ à—}‘}“¨Ñ+Ð+ð#Ø!*§¡°Ó!6‘�˜ð ˆHØˆHà˜Š|Ø!Ÿ<™<¨Ó,�à˜Š|Ø!Ÿ<™<¨Ó,�ô �8Œ} ¨°©Ñ!4Ü-¨h¯l©l«nÓ=�Ø—‘ ¤w¨t°X¸aÀ°]Ó'CÀAÑ'FÑ FÔGØ—‘ ¤w¨t°X¸aÀ°]Ó'CÀAÑ'FÑ FÔGä˜h›-¬#¨h«-Ñ7ˆKà˜Ô, uÒ,Ø"Ð"ð -Ø"Ð"àœS ›]¬S°«]Ñ:Ñ<ˆHð 3;Ö;¨Q”�tœS  B›ZÕ(Ò;Ü.3°H«oÖ>¨�×"Ñ"Õ$Ò>ñ?à2:Ö;¨Q”�tœS  B›ZÕ(Ò;ñ<ð ð
#Ø%¨Ñ0ò +�EÜ˜u b›>�DØ Ô.¨Ó.Ø*Ð*ð /Ø*Ð*ñ+ôZ ˜6Ó"Ð"ðK �iÒØ"Ÿ™¨Ó-�à˜)Ñ#Ø"(¨¨" +�KØ" 3 BÐ'Ò+DÒDØ*Ð*à" 2‘×,Ñ,Ó.°mÑCØ*Ð*ô ˜6“{ aÒ'Ø*Ð*ä1°&·*±*³,Ó?�HØ—M‘M $¬°°xÀÀ!°}Ó)EÀaÑ)HÑ"HÔIØ—M‘M $¬°°xÀÀ!°}Ó)EÀaÑ)HÑ"HÔIà?EÖF¸!œe D¬#¨a°«*Õ5ÐF�FÑFô ˜6“{ aÒ'Ø*Ð*ð'Ø:@ÖA°œc %¨�nÐA�FÐAØ!'ò /˜Ø  EÔ3¨VÓ3Ø".Ð.ð  4Ø".Ð.ñ/ð 39Ö9¨Qœ%  a�.Ð9�Ð9ô ˜6Ó"Ð"ð #Ð"ô Ð4°rÑ9Ó:Ð:øô] ò #Ø"Ð"ð#üò4 <ùÚ>ùÚ;øô ò #Ø"Ð"ð#üò. Gùò Bøô
 "ò 'Ø&Ð&ð'üò :s`   Á M	 ÅMÆMÆ'M"Ç
M' Ç*M' Ê3M6Ë$N  Ë(M;Ë;N  ÌN  ÌNÍ	MÍ'M3Í;N  Î NN)Ú__doc__Ústructr   r   r   r;   Únetaddr.compatr   r   r7   r8   r   r/   rF   rR   rc   r   r   r   ú<module>rg      s8   ðñ Dç 3ç /à
€Ø€ò
4ò,ò^;ò>NóDi;r   