o
    Ù9šZ€  ã                   @   sœ   d dl T d dlZG dd„ ded  ƒZG dd„ deƒZG dd„ deƒZG d	d
„ d
eƒZG dd„ deƒZ	dd„ e
dƒD ƒZdd„ e
dƒD ƒZdd„ Zdd„ ZdS )é    )Ú*Nc                   @   s$   e Zd ZdZdd„ Zedd„ ƒZdS )ÚHexDisplayedIntegerúUsed internally.c                 C   s   dt | | jƒ ¡  S )NÚ0x)ÚformatÚfmtstrÚupper©Úself© r   úC/var/www/html/env/lib/python3.10/site-packages/construct/lib/hex.pyÚ__str__   s   zHexDisplayedInteger.__str__c                 C   s   t | ƒ}||_|S ©N)r   r   )Úintvaluer   Úobjr   r   r   Únew
   s   zHexDisplayedInteger.newN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ústaticmethodr   r   r   r   r   r      s
    r   c                   @   ó   e Zd ZdZdd„ ZdS )ÚHexDisplayedBytesr   c                 C   s&   t | dƒsdtt | ¡ƒf | _| jS )NÚrenderúunhexlify(%s)©ÚhasattrÚ
trimstringÚbinasciiÚhexlifyr   r	   r   r   r   r      s   
zHexDisplayedBytes.__str__N©r   r   r   r   r   r   r   r   r   r      ó    r   c                   @   r   )ÚHexDisplayedDictr   c                 C   s*   t | dƒsdtt | d ¡ƒf | _| jS )Nr   r   Údatar   r	   r   r   r   r      s   
zHexDisplayedDict.__str__Nr    r   r   r   r   r"      r!   r"   c                   @   r   )ÚHexDumpDisplayedBytesr   c                 C   s   t | dƒst| dƒ| _| jS )Nr   é   ©r   Úhexdumpr   r	   r   r   r   r       s   
zHexDumpDisplayedBytes.__str__Nr    r   r   r   r   r$      r!   r$   c                   @   r   )ÚHexDumpDisplayedDictr   c                 C   s    t | dƒst| d dƒ| _| jS )Nr   r#   r%   r&   r	   r   r   r   r   '   s   
zHexDumpDisplayedDict.__str__Nr    r   r   r   r   r(   %   r!   r(   c                 C   s4   g | ]}d |  krdk rn nt t|ƒƒnd‘qS )é    é€   Ú.)Ú	bytes2strÚint2byte©Ú.0Úir   r   r   Ú
<listcomp>.   s   4 r1   é   c                 C   s   g | ]}t |d ƒ‘qS )Ú02X)r   r.   r   r   r   r1   /   s    c                 C   sæ   t | ƒdk rdd| d f }nt | ƒdk r dd| d f }ntdƒ‚g }| d¡ td	t | ƒ|ƒD ]0}| ||| … }d
 dd„ t|ƒD ƒ¡}d dd„ t|ƒD ƒ¡}| ||t|ƒt|ƒf ¡ q3| d¡ | d¡ d |¡S )aÈ  
    Turns bytes into a unicode string of the format:

    ::

        >>>print(hexdump(b'0' * 100, 16))
        hexundump(\"\"\"
        0000   30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
        0010   30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
        0020   30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
        0030   30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
        0040   30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
        0050   30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
        0060   30 30 30 30                                       0000
        \"\"\")
    i   z%%04X   %%-%ds   %%sé   é   l        z%%08X   %%-%ds   %%sz:hexdump cannot process more than 16**8 or 4294967296 byteszhexundump("""r   ú c                 s   ó   � | ]}t | V  qd S r   )ÚHEXPRINT©r/   Úbr   r   r   Ú	<genexpr>M   ó   € zhexdump.<locals>.<genexpr>Ú c                 s   r7   r   )Ú	PRINTABLEr9   r   r   r   r;   N   r<   z""")Ú
)ÚlenÚ
ValueErrorÚappendÚrangeÚjoinÚiterateintsÚstr)r#   ÚlinesizeÚfmtÚprettylinesr0   ÚlineÚhextextÚrawtextr   r   r   r'   2   s   



r'   c                 C   sd   g }|   d¡dd… D ]!}|| d¡d…  ¡ }dd„ |dd| …   ¡ D ƒ}| |¡ qd	 |¡S )
z
    Reverse of `hexdump`.
    r?   r5   éþÿÿÿr6   Nc                 S   s   g | ]	}t t|d ƒƒ‘qS )r%   )r-   Úint)r/   Úsr   r   r   r1   \   s    zhexundump.<locals>.<listcomp>r4   ó    )ÚsplitÚfindÚlstripÚextendrD   )r#   rG   ÚrawrJ   Úbytesr   r   r   Ú	hexundumpU   s   
rW   )Úconstruct.lib.py3compatr   Úintegertypesr   Úbytestringtyper   Údictr"   r$   r(   rC   r>   r8   r'   rW   r   r   r   r   Ú<module>   s    	#