o
    g                     @   s~   d Z ddlmZ ddlmZ ddlmZ dd Zedded	d
 edd g d Ze	eee
ddZdd Zdd ZdS )z&A basic implementation of RFC 1924 ;-)    )AddrFormatError)	IPAddress)_zipc                 C   s    dd t t| t|d D S )z2Returns all characters between low and high chars.c                 S   s   g | ]}t |qS  )chr).0ir   r   P/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/netaddr/ip/rfc1924.py
<listcomp>       zchr_range.<locals>.<listcomp>   )rangeord)lowhighr   r   r	   	chr_range   s    r   09AZaz)!#$%&()*+-;<=>?@^_`{|}~V   c                 C   sj   t | }t|}g }|dkr||d  |d }|dksddd t|D }dt| d }|| S )z*Convert a regular IPv6 address to base 85.r   U    c                 S   s   g | ]}t | qS r   )BASE_85)r   wr   r   r	   r
   (   r   z"ipv6_to_base85.<locals>.<listcomp>   r   )r   intappendjoinreversedlen)addripint_val	remainderencodedleading_zeroesr   r   r	   ipv6_to_base85   s   r@   c                 C   sf   t | }t|dkrtd| f d}tt|D ]\}}t| }||d|  7 }qt|d}t|S )zC
    Convert a base 85 IPv6 address to its hexadecimal format.
    r4   z Invalid base 85 IPv6 address: %rr   r0      )listr9   r   	enumerater8   BASE_85_DICTr   str)r:   tokensresultr   numr;   r   r   r	   base85_to_ipv6-   s   
rI   N)__doc__netaddr.corer   
netaddr.ipr   netaddr.compatr   r   r2   dictr   rD   r@   rI   r   r   r   r	   <module>   s   