MINI MINI MANI MO
3
  \H  ã               @   sè   d dl Z d dlZd dlmZ d dlmZ ej	ej
 d Zeƒ ZG dd„ deddƒƒZ
ddd	„Zdd
d„Ze
ddd
dƒZe
ddddƒZe
ddddƒZe
ddddƒZg Zx:eeeefD ]*ZedeƒZer²eeƒejkr²ejeƒ q²W [[dS )é    N)ÚSystemRandom)Ú
namedtuplez./c               @   s   e Zd Zdd„ ZdS )Ú_Methodc             C   s   dj | jƒS )Nz<crypt.METHOD_{}>)ÚformatÚname)Úself© r   ú/usr/lib64/python3.6/crypt.pyÚ__repr__   s    z_Method.__repr__N)Ú__name__Ú
__module__Ú__qualname__r
   r   r   r   r	   r   
   s   r   z name ident salt_chars total_sizec             C   sH   | d krt d } | jr"dj| jƒnd}|djdd„ t| jƒD ƒƒ7 }|S )Nr   z${}$Ú c             s   s   | ]}t jtƒV  qd S )N)Ú_srZchoiceÚ
_saltchars)Ú.0Úcharr   r   r	   ú	<genexpr>   s    zmksalt.<locals>.<genexpr>)ÚmethodsZidentr   ÚjoinÚrangeZ
salt_chars)ÚmethodÚsr   r   r	   Úmksalt   s
    r   c             C   s&