o
    CD©i  ã                   @   s&   d dl Z d dlZddd„Zdd„ ZdS )é    Nc                 C   sº   | dkr	| d } nt | ƒdkr| dd… t|ƒ } n	|  d¡t|ƒ } dd„ }tt | ƒd ƒt d|| ¡ }|rVd	}t |d¡D ]}|tt |ƒƒ | }q@t|| d
 dƒS t|d
 dƒS )z^
    Perform first and second level encoding of name as specified in RFC 1001 (Section 4)
    Ú*z               é   Nc                 S   s*   t |  d¡ƒ}tj|d?  tj|d@   S )Nr   é   r   )ÚordÚgroupÚstringÚascii_uppercase©ÚmÚs© r   úB/var/www/Datamplify/venv/lib/python3.10/site-packages/nmb/utils.pyÚ_do_first_level_encoding   s   z-encode_name.<locals>._do_first_level_encodingé   Ú.Ú ú Úascii)ÚlenÚchrÚljustÚreÚsubr   ÚsplitÚbytes)ÚnameÚtypeÚscoper   Úencoded_nameÚencoded_scoper   r   r   r   Úencode_name   s   
r    c                 C   s˜   t | d ƒ}|dksJ ‚dd„ }t d|| dd… ¡}| d dkr&d	|d
fS d
}d	}	 t | | ƒ}|dkr6nd| ||| …  }|| }q+|d ||fS )Nr   é    c                 S   s:   |   d¡}tt|d ƒtdƒ d> t|d ƒtdƒ B ƒS )Nr   ÚAr   é   )r   r   r   r	   r   r   r   Ú_do_first_level_decoding"   s   
0z-decode_name.<locals>._do_first_level_decodingz..r#   é!   r   é"   r   r   )r   r   r   )r   Úname_lengthr$   Údecoded_nameÚdecoded_domainÚoffsetÚdomain_lengthr   r   r   Údecode_name   s    
ûr,   )N)r   r   r    r,   r   r   r   r   Ú<module>   s   
