File: //opt/saltstack/salt/lib/python3.10/site-packages/zmq/utils/__pycache__/z85.cpython-310.pyc
o
�N�g � @ sR d Z ddlZdZdd� ee�D �Zdd� ed�D �ddd � Zd
d� Zdd
� ZdS )z�Python implementation of Z85 85-bit encoding
Z85 encoding is a plaintext encoding for a bytestring interpreted as 32bit integers.
Since the chunks are 32bit, a bytestring must be a multiple of 4 bytes.
See ZMQ RFC 32 for details.
� NsU 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-:+=^!/*?&<>()[]{}@%$#c C s i | ]\}}||�qS � r )�.0�idx�cr r �A/opt/saltstack/salt/lib/python3.10/site-packages/zmq/utils/z85.py�
<dictcomp> s r c C s g | ]}d | �qS )�U r )r �ir r r �
<listcomp> s r
� ���c C sn t | �d rtdt | � ��t | �d }t�d| | �}g }|D ]}tD ]
}|�t|| d � q$q t|�S )zencode raw bytes into Z85� z$length must be multiple of 4, not %i�>%dIr )�len�
ValueError�struct�unpack�_85s�append�Z85CHARS�bytes)�rawbytes�nvalues�values�encoded�v�offsetr r r �encode s �r c C s� t | t�rz| �d�} W n ty td��w t| �d r&tdt| � ��t| �d }g }tdt| �d�D ]}d}tt�D ]\}}|t | || | 7 }q>|�
|� q6tjd| g|�R � S )z3decode Z85 bytes to raw bytes, accepts ASCII string�asciiz4string argument should contain only ASCII charactersr z(Z85 length must be multiple of 5, not %ir r )
�
isinstance�strr �UnicodeEncodeErrorr r �range� enumerater �Z85MAPr r �pack)Zz85bytesr r r �value�jr r r r �decode( s
�r( ) �__doc__r r r# r$ r"