ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     3
]<                  @   sX   d Z ddlmZmZ ddlmZmZ dZ	dZ
dd Zdd	 Zd
d Zdd Zdd ZdS )z=Fallback routines for Python's standard library socket module    )unpackpack)_bytes_join_is_str   
   c             C   s>   t | stdtt|  t| dkr0tddtd|  S )zR
    Convert an IP address from 32-bit packed binary format to string format.
    zstring type expected, not %s   z*invalid length of packed IP address stringz%d.%d.%d.%dZ4B)r   	TypeErrorstrtypelen
ValueError_unpack)	packed_ip r   /usr/lib/python3.6/fbsocket.py	inet_ntoa   s
    r   c             C   s*  g }g }d }d}xZt | D ]N\}}|dkr@|d kr6|}|d7 }n|dkrV|j||f d }d}|j| qW |dkr|j||f t|dkr&|jdd d |d }x |D ]}|d |d kr|}qW |\}	}
|d|
 dg ||
|	 d   }|d dkr|jdd |d dkr&|jd |S )	Nr   0   c             S   s   | d S )Nr   r   )xr   r   r   <lambda>9   s    z&_compact_ipv6_tokens.<locals>.<lambda>)key )	enumerateappendr   sortinsert)tokensZ
new_tokensZ	positionsZstart_indexZ
num_tokensidxtokenZbest_positionZpositionZlengthZ	start_idxr   r   r   _compact_ipv6_tokens   s:    

"
r!   c       
      C   s
  | t krt|S | tk rt|dks0t| r8tddd td|D }ttd|}d}x0tt	|D ] \}}|}|d| > }||B }qlW d|  k odkn  s|d	? dkrt
ddd |dd D  }t|}	|dd |	g }djt|S td|  dS )zBConvert an packed IP address of the given family to string format.   z*invalid length of packed IP address stringc             S   s   g | ]}d | qS )z%xr   ).0ir   r   r   
<listcomp>V   s    zinet_ntop.<locals>.<listcomp>z>8Hr   i  l        >2Hc             S   s   g | ]}t |d qS )r"   )int)r#   r$   r   r   r   r%   b   s    r   N:zunknown address family %d)r'   r*   )AF_INETr   AF_INET6r   r   r   r   listr   reversed_packjoinr!   )
afr   r   wordsZint_valr$   ZnumwordZpacked_ipv4ipv4_strr   r   r   	inet_ntopL   s$    
$r5   c             C   s   t | rtd|  }| jd}t|dkrg }xv|D ]n}|jdsX|jdr\t|dkr\|yt|}W n tk
r   |Y nX |d? dkr||jtd	| q4W t|S |td
t	|  dS )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.
    zillegal IP address string %r.r   Z0xr   r      r   Bz#argument should be a string, not %sN)
r   r   splitr   
startswithr(   r   r/   r   r   )	ip_stringinvalid_addrr   r2   r    Zoctetr   r   r   _inet_pton_af_inetk   s$    

 
r=   c             C   sX  | t krt|S | tkrHtd| }g }t|s6|d|krB|d|kr|dkr`dj d S y|jd\}}W n tk
r   |Y nX g }g }|dkr|jd}|dkr|jd}t|od|d krt|j }|j	d
t
d|dd d   |j	d
t
d|dd d   t|t| }	d|	  ko>dkn  sJ|dt|t|  }
dd |D dd t|
D  dd |D  }yBx<|| D ]0}t|d}d|  kodkn  s|qW W n tk
r   |Y nX nRd|kr<|jd}d|kr|dd }|dd  dddddgkr8||d! j d"krN|t|dkr`|t|j }|j	d
t
d|dd d   |j	d
t
d|dd d   dd |D }nt|dkr|yBdd |D }x.|D ]&}d|  kodkn  s|qW W n tk
r*   |Y nX dd |D }n|t|S td|  dS )#z|
    Convert an IP address from string format to a packed string suitable for
    use with low-level network functions.
    zillegal IP address string %rr   z:: r"   r   r)   r6   r   z%xz>Hr   r   r   r7   c             S   s   g | ]}t d t|dqS )z>Hr"   )r/   r(   )r#   r$   r   r   r   r%      s    zinet_pton.<locals>.<listcomp>c             S   s   g | ]}d j  qS )z  )encode)r#   r$   r   r   r   r%      s    c             S   s   g | ]}t d t|dqS )z>Hr"   )r/   r(   )r#   r$   r   r   r   r%      s    i  Nr   ffff   c             S   s   g | ]}t d t|dqS )z>Hr"   )r/   r(   )r#   r$   r   r   r   r%      s    c             S   s   g | ]}t |d qS )r"   )r(   )r#   r    r   r   r   r%      s    c             S   s   g | ]}t d |qS )z>H)r/   )r#   r$   r   r   r   r%      s    zUnknown address family %dr   rA   r   r   r   )r   r@   )r+   r=   r,   r   r   r?   r9   r   popr   r   ranger(   lowerr   )r1   r;   r<   valuesprefixsuffixZl_prefixZl_suffixr4   Ztoken_countZgap_sizer    r3   r   Zipv6_prefixr   r   r   	inet_pton   s    




  



  

rH   N)__doc__structr   r   r   r/   Znetaddr.compatr   r   r+   r,   r   r!   r5   r=   rH   r   r   r   r   <module>   s   /"