
    /iW                        	 d dl Z d dlZd dlZg dZeefZd Zd5dZd6dZ	d Z
d Ze                    d	d
          Ze                    d
d	          Zd Zd ZdZdZdZdZdZi ai ad Zd7dZd Ze                    d          e_        d7dZe                    de          e_        d Ze                    d          e_        d8dZe                    dd          e_        d Z d8dZ!da"da#dZ$d Z%d9d!Z&dd ddd"d#Z'ddd$d%d&Z(d'Z)da*da+da,d8d(Z-d) Z.d*Z/e/d+z  d,z  Z0d- Z1d. Z2d/ Z3d0 Z4d1 Z5d2 Z6d3 Z7e8d4k    r e6             dS dS ):    N)encodedecodeencodebytesdecodebytes	b64encode	b64decode	b32encode	b32decodeb32hexencodeb32hexdecode	b16encode	b16decode	b85encode	b85decode	a85encode	a85decodestandard_b64encodestandard_b64decodeurlsafe_b64encodeurlsafe_b64decodec                 Z   t          | t                    r3	 |                     d          S # t          $ r t	          d          w xY wt          | t
                    r| S 	 t          |                                           S # t          $ r t          d| j	        j
        z            d w xY w)Nasciiz4string argument should contain only ASCII charactersz>argument should be a bytes-like object or ASCII string, not %r)
isinstancestrr   UnicodeEncodeError
ValueErrorbytes_types
memoryviewtobytes	TypeError	__class____name__ss    /usr/lib64/python3.11/base64.py_bytes_from_decode_datar&   "   s    !S U	U88G$$$! 	U 	U 	USTTT	U![!! K!}}$$&&& K K K )+,;+?@ A AFJ	KKs   , A! B (B*c                     	 t          j        | d          }|.|                    t                              d|                    S |S )NF)newline   +/)binascii
b2a_base64	translatebytes	maketrans)r$   altcharsencodeds      r%   r   r   3   sK     !!U333G  !A!ABBBN    Fc                    	 t          |           } d }|st          |          }t          |          dk    rt          d|          dD ]}||vr|| v r|} n|                     t                              |d                    } t          j        | |          }|idd l}|r2|	                    dt          |          d|dt          d	           n1|	                    dt          |          d|d
t          d	           |S )N   zinvalid altchars: r)   strict_moder   invalid character z in Base64 data with altchars=z= and validate=True will be an error in future Python versions
stacklevelz? and validate=False will be discarded in future Python versions)r&   lenr   r,   r-   r.   r*   
a2b_base64warningswarnchrDeprecationWarningFutureWarning)r$   r/   validatebadcharbresultr;   s          r%   r   r   A   s~   " 	 ""AG*844x==A>(>>??? 	 	A  Q!VVKK%8899 999F 		7MM Hs7|| H H+3H H H -  < < < <
 MM Is7|| I I+3I I I (A  7 7 7 Mr1   c                 "    	 t          |           S N)r   r#   s    r%   r   r   n   s     Q<<r1   c                 "    	 t          |           S rE   )r   r#   s    r%   r   r   u   s     Q<<r1   r)   s   -_c                 R    	 t          |                               t                    S rE   )r   r,   _urlsafe_encode_translationr#   s    r%   r   r      s$     Q<<!!"=>>>r1   c                    	 t          |           } d }dD ]
}|| v r|} n|                     t                    } t          j        | d          }|2dd l}|                    dt          |          dt          d           |S )	Nr)   Fr4   r   r6   zD in URL-safe Base64 data will be discarded in future Python versionsr3   r7   )	r&   r,   _urlsafe_decode_translationr*   r:   r;   r<   r=   r?   )r$   rA   rB   rC   r;   s        r%   r   r      s    	 	 ""AG  66GE  	
/00A 666F E3w<< E E E# 	 	3 	3 	3 Mr1   zK
Encode the bytes-like objects using {encoding} and return a bytes object.
a  
Decode the {encoding} encoded bytes-like object or ASCII string s.

Optional casefold is a flag specifying whether a lowercase alphabet is
acceptable as input.  For security purposes, the default is False.
{extra_args}
The result is returned as a bytes object.  A binascii.Error is raised if
the input is incorrectly padded or if there are non-alphabet
characters present in the input.
a  
RFC 3548 allows for optional mapping of the digit 0 (zero) to the
letter O (oh), and for optional mapping of the digit 1 (one) to
either the letter I (eye) or letter L (el).  The optional argument
map01 when not None, specifies which letter the digit 1 should be
mapped to (when map01 is not None, the digit 0 is always mapped to
the letter O).  For security purposes the default is None, so that
0 and 1 are not allowed in the input.
s    ABCDEFGHIJKLMNOPQRSTUVWXYZ234567s    0123456789ABCDEFGHIJKLMNOPQRSTUVc                    | t           vr$d | D             fdD             t           | <   d t          |t                    s!t          |                                          }t          |          dz  }|r|dd|z
  z  z   }t                      }t          j        }t           |          }t          dt          |          d          D ]P} ||||dz                      }|||dz	           ||dz	  dz           z   ||d	z	  dz           z   ||dz           z   z  }Q|d
k    rd|dd <   n)|dk    rd|dd <   n|dk    rd|dd <   n|dk    rd|dd <   t          |          S )Nc                 .    g | ]}t          |f          S  r-   .0is     r%   
<listcomp>z_b32encode.<locals>.<listcomp>   s     000!%++000r1   c                 $    g | ]}D ]}||z   S rM   rM   )rP   arB   b32tabs      r%   rR   z_b32encode.<locals>.<listcomp>   s*    DDDVDDa!eDDDDr1          r         i  
      s   ======ir3   s   ====   s   ===      =)_b32tab2r   r   r   r   r9   	bytearrayint
from_bytesranger-   )	alphabetr$   leftoverr0   re   b32tab2rQ   crU   s	           @r%   
_b32encoderk      s    x00x000DDDDVDDDa%% $qMM!!##1vvzH 'X&&kkGJx G1c!ffa    JqAE{##GAG$Q"W-./Q"W-./ AI&' 	 1}} 	Q	Q	Q>>r1   c                    | t           vr!d t          |           D             t           | <   t          |          }t          |          dz  rt	          j        d          |@t          |          }|                    t                              dd|z                       }|r|	                                }t          |          }|
                    d          }|t          |          z
  }t                      }t           |          }t          dt          |          d          D ]a}|||dz            }	d}
	 |	D ]}|
dz  ||         z   }
n## t          $ r t	          j        d	          d w xY w||
                    d          z  }b|dz  s|d
vrt	          j        d          |r9|r7|
d|z  z  }
|
                    d          }dd|z  z
  dz  }|d |         |dd <   t          |          S )Nc                     i | ]\  }}||	S rM   rM   )rP   kvs      r%   
<dictcomp>z_b32decode.<locals>.<dictcomp>   s    BBBdaQBBBr1      zIncorrect paddings   01   Or`   r   rV   zNon-base32 digit found>   r   r[   r]   r_      +   )_b32rev	enumerater&   r9   r*   Errorr,   r-   r.   upperrstriprc   rf   KeyErrorto_bytes)rg   r$   casefoldmap01lpadcharsdecodedb32revrQ   quantaaccrj   lastrh   s                 r%   
_b32decoder      s    wBBi.A.ABBB""A
1vvz 2n0111 '..KKte|<<== GGII 	AA	A3q66zHkkGXF1c!ffa   # #1a!e8	E - -ax6!9,- 	E 	E 	E.!9::D	E3<<??"1u 2//n0111 'G 'H||AX%!+IXI>>s   9E E-c                 ,    t          t          |           S rE   )rk   _b32alphabetr#   s    r%   r	   r	     s    lA&&&r1   base32)encodingc                 0    t          t          | ||          S rE   )r   r   )r$   r}   r~   s      r%   r
   r
     s    lAx777r1   )r   
extra_argsc                 ,    t          t          |           S rE   )rk   _b32hexalphabetr#   s    r%   r   r      s    oq)))r1   	base32hexc                 .    t          t          | |          S rE   )r   r   r$   r}   s     r%   r   r   $  s    oq(333r1    c                 P    	 t          j        |                                           S rE   )r*   hexlifyry   r#   s    r%   r   r   .  s$    A$$&&&r1   c                     	 t          |           } |r|                                 } t          j        d|           rt	          j        d          t	          j        |           S )Ns	   [^0-9A-F]zNon-base16 digit found)r&   ry   researchr*   rx   	unhexlifyr   s     r%   r   r   4  sa     	 ""A GGII	yq!! 7n5666a   r1   s   <~s   ~>c                    t          | t                    s!t          |                                           } t	          |            dz  }|r| d|z  z   } t          j        dt	          |           dz  z                                |           }fd|D             }|r0|s.|d         dk    rd         dz  |d<   |d         d |          |d<   d	                    |          S )
Nr_   rW   z!%dIc                 |    g | ]8}r|sd n/r|dk    rdn%|dz           |dz  dz           z   |dz           z   9S )   zi       yi^	 U   i9  rM   )rP   wordcharschars2foldnuls
foldspacess     r%   rR   z_85encode.<locals>.<listcomp>X  s     ! ! !
   !t !dd  !TZ%7%7dddfn%dbj4'()TBY ! ! !r1   ra   r   r   rV   r1   )	r   r   r   r   r9   structStructunpackjoin)	rB   r   r   padr   r   paddingwordschunkss	    `` ``   r%   	_85encoder   N  s   a%% $qMM!!##Aw!mG  M&CFFaK01188;;E! ! ! ! ! ! !
  ! ! !F  +s +":qAF2JBZ	'	*r
88Fr1   )r   wrapcolr   adobec                   	 t           +d t          dd          D             ad t          D             a t          | t          t           |d|          |r
t          z   rt          |rdnd          fdt          d	t                              D             }|r1t          |d
                   dz   k    r|                    d           d                    |          |r
t          z  S )Nc                 .    g | ]}t          |f          S rM   rN   rO   s     r%   rR   za85encode.<locals>.<listcomp>{  s     999QUA4[[999r1   !   v   c                 ,    g | ]}t           D ]}||z   S rM   )	_a85charsrP   rT   rB   s      r%   rR   za85encode.<locals>.<listcomp>|  )    DDD!)DDQq1uDDDDr1   Tr3   r[   c                 *    g | ]}||z            S rM   rM   )rP   rQ   rC   r   s     r%   rR   za85encode.<locals>.<listcomp>  s6     ; ; ; AK( ; ; ;r1   r   ra   r1      
)

_a85chars2rf   r   r   	_A85STARTmaxr9   appendr   _A85END)rB   r   r   r   r   r   rC   s     `   @r%   r   r   f  s#   & 99%C..999	DDyDDD
q)ZdJGGF $V# $5'aaa11; ; ; ; ; CKK99; ; ; 	#6":"W,,c"""F## 'Mr1   s    	
)r   r   ignorecharsc                   	 t          |           } |rp|                     t                    s't          d                    t                              |                     t                    r| dd         } n
| d d         } t          j        d          j	        }g }|j
        }g }|j
        }|j        }	| dz   D ]}
d|
cxk    rdk    rwn nt ||
           t          |          dk    rUd	}|D ]}
d
|z  |
dz
  z   }	  | ||                     n## t          j        $ r t          d          d w xY w |	             |
dk    r|rt          d           |d           |r#|
dk    r|rt          d           |d           |
|v rt          d|
z            d                    |          }dt          |          z
  }|r|d |          }|S )Nz1Ascii85 encoded byte sequences must end with {!r}r3   !Is   uuuur   u   rV   r   r   zAscii85 overflowz   zz inside Ascii85 5-tuples       y   zy inside Ascii85 5-tuples       zNon-Ascii85 digit found: %cr1   r_   )r&   endswithr   r   format
startswithr   r   r   packr   clearr9   errorr   )rB   r   r   r   packIr   decoded_appendcurrcurr_append
curr_clearxr   rC   r   s                 r%   r   r     sa    	 ""A 	zz'"" 	"F7OO   <<	"" 	!B$AA#2#A
 M$$EG^ND+KJ\ @ @a""""7"""""KNNN4yyA~~ . .As(a"f-CCC"N55::....| C C C$%788dBC
'\\ = !;<<<N;'''' 	@ALL = !;<<<N.////+:Q>???XXgF#d))mG #	'	"Ms   =D D2sU   0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!#$%&()*+-;<=>?@^_`{|}~c                     	 t           "d t          D             ad t          D             a t          | t          t           |          S )Nc                 .    g | ]}t          |f          S rM   rN   rO   s     r%   rR   zb85encode.<locals>.<listcomp>  s     777QUA4[[777r1   c                 ,    g | ]}t           D ]}||z   S rM   )	_b85charsr   s      r%   rR   zb85encode.<locals>.<listcomp>  r   r1   )
_b85chars2_b85alphabetr   r   )rB   r   s     r%   r   r     sI     77,777	DDyDDD
Q	:s333r1   c                    	 t           *d gdz  a t          t                    D ]\  }}|t           |<   t          |           } t	          |            dz  }| d|z  z   } g }t          j        d          j        }t          dt	          |           d          D ]}| ||dz            }d}	 |D ]}|dz  t           |         z   }nG# t          $ r: t          |          D ](\  }}t           |         t          d||z   z            d ) w xY w	 |                     ||                     # t
          j        $ r t          d|z            d w xY wd	                    |          }	|r|	d |          }	|	S )
N   rV      ~r   r   r   z#bad base85 character at position %dz+base85 overflow in hunk starting at byte %dr1   )_b85decrw   r   r&   r9   r   r   r   rf   r    r   r   r   r   )
rB   rQ   rj   r   outr   chunkr   jrC   s
             r%   r   r     s    &3,l++ 	 	DAqGAJJ""AAw!mG	D7NA
CM$$E1c!ffa   , ,!AE'
	 , ,Bh+, 	 	 	!%(( 9 911:%$%J'(1u&. / /489 & 		,JJuuSzz""""| 	, 	, 	,J ! " "'+,	, XXc]]F #	'	"Ms   (CAD	D((#EL   r_   r]   c                 Z   	 	 |                      t                    }|sd S t          |          t          k     rJ|                      t          t          |          z
            }|sn||z  }t          |          t          k     Jt          j        |          }|                    |           rE   )read
MAXBINSIZEr9   r*   r+   write)inputoutputr$   nslines        r%   r   r     s    ;
JJz"" 	E!ffz!!Js1vv-..B GA	 !ffz!!
 "1%%T
r1   c                     	 	 |                                  }|sd S t          j        |          }|                    |           BrE   )readliner*   r:   r   )r   r   r   r$   s       r%   r   r   *  sJ    ;~~ 	E%%Qr1   c                 H   	 t          |           }n1# t          $ r$}d| j        j        z  }t          |          |d }~ww xY w|j        dvr&d|j        d| j        j        }t          |          |j        dk    r%d|j        | j        j        fz  }t          |          d S )Nz"expected bytes-like object, not %s)rj   rB   Bz#expected single byte elements, not z from r[   z(expected 1-D data, not %d-D data from %s)r   r    r!   r"   r   ndim)r$   merrmsgs       r%   _input_type_checkr   3  s    &qMM & & &2Q[5IInn#%& 	x&&&+,888Q[5I5IKnnv{{9+,61;3G*HInn {s    
A ;A c                    	 t          |            g }t          dt          |           t                    D ];}| ||t          z            }|                    t          j        |                     <d                    |          S )Nr   r1   )r   rf   r9   r   r   r*   r+   r   )r$   piecesrQ   r   s       r%   r   r   C  s    aF1c!ffj)) 2 2!a*n$%h)%00111188Fr1   c                 J    	 t          |            t          j        |           S rE   )r   r*   r:   r#   s    r%   r   r   N  s$    Baq!!!r1   c                     	 dd l } dd l}d| j        d         z  }	 |                    | j        dd          d          \  }}nV# |j        $ rI}| j        | _        t          |           t          |           |                     d           Y d }~nd }~ww xY wt          }|D ][\  }}|dk    rt          }|dk    rt          }|dk    rt          }|d	k    rt                        d S |d
k    rt          |            d S \|rS|d         dk    rGt          |d         d          5 }	 ||	| j        j                   d d d            d S # 1 swxY w Y   d S  || j        j        | j        j                   d S )Nr   zusage: %s [-h|-d|-e|-u|-t] [file|-]
        -h: print this help message and exit
        -d, -u: decode
        -e: encode (default)
        -t: encode and decode string 'Aladdin:open sesame'r[   hdeutr3   z-ez-dz-uz-tz-h-rb)sysgetoptargvr   stderrstdoutprintexitr   r   testopenbufferstdin)
r   r   usageoptsargsr   funcorT   fs
             r%   mainr  U  s   > ?Bhqk	JE
]]38ABB<99
dd<   Z
c


e	
 D + +199Vd99Vd99Vd99dffffff99eElllFFF9 2Q3$q'4   	'ADCJ%&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	SYsz011111s)   &A 
B?BB!EE	E	c                      d} t          t          |                      t          |           }t          t          |                     t          |          }t          t          |                     d S )Ns   Aladdin:open sesame)r   reprr   r   )s0s1s2s      r%   r   r   r  sT    	B	$r((OOO	RB	$r((OOO	RB	$r((OOOOOr1   __main__rE   )NF)FN)F)FFF)9r   r   r*   __all__r-   rc   r   r&   r   r   r   r   r.   rH   rJ   r   r   _B32_ENCODE_DOCSTRING_B32_DECODE_DOCSTRING_B32_DECODE_MAP01_DOCSTRINGr   r   rb   rv   rk   r   r	   r   __doc__r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   MAXLINESIZEr   r   r   r   r   r   r  r   r"   rM   r1   r%   <module>r     sr   K 
			    $ i K K K"   * * * *Z     $ooeU;; #ooeU;; ? ? ?  : 	   35
" " "H, , , ,^' ' ')00(0CC	 8 8 8 8)00(3N 1 P P	 * * *,33[3II 4 4 4 4 -33[?A 4 C C ' ' '! ! ! !* 	
	
   0  %aU% ' ' ' ' 'R  %E| D D D D DPE	

4 4 4 4' ' 'Z 1na
         " " "2 2 2:   zDFFFFF r1   