
    ,h                         U d dl Z d dlZd dlZd dlZd dlZd dlmZmZ  G d d      Z e       Z	ee   e
d<   	  ej                         ZdefdZded	edefd
Zy# e$ r dZY w xY w)    N)AnyOptionalc                       e Zd Zddee   fdZdeddfdZdeddfdZddZde	fd	Z
de	fd
Zde	fdZde	de	de	fdZy)EntropyPoolNseedc                 ^   d| _         d | _        d| _        t        j                         | _        t        j                         | _        d| _	        t        d| j                  z        | _        |2| j                  |       d| _        t        j                         | _        y d| _        d| _        y )Nr          TF)
pool_indexdigest	next_byte	threadingLocklockhashlibsha1hashhash_len	bytearraypool_stirseededosgetpidseed_pid)selfr   s     M/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/dns/entropy.py__init__zEntropyPool.__init__    s    +/NN$	LLN	edmm34	JJtDKIIKDMDKDM    entropyreturnc                     |D ]]  }| j                   | j                  k(  rd| _         |dz  }| j                  | j                   xx   |z  cc<   | xj                   dz  c_         _ y )Nr         )r   r   r   )r   r    cbs       r   r   zEntropyPool._stir0   sW     	!A$--/"#DAIIdoo&!+&OOq O	!r   c                 h    | j                   5  | j                  |       d d d        y # 1 sw Y   y xY wN)r   r   )r   r    s     r   stirzEntropyPool.stir8   s*    YY 	 JJw	  	  	 s   (1c                    | j                   r!| j                  t        j                         k7  rZ	 t        j                  d      }d| _         t        j                         | _        d | _        t              }| j                  |       y y # t
        $ rs 	 t        ddd      5 }|j                  d      }d d d        n# 1 sw Y   nxY wn:# t
        $ r. t        t        j                               j                         }Y nw xY wY w xY w)N   z/dev/urandomrbr   T)r   r   r   r   urandom	Exceptionopenreadstrtimeencoder   r   r   )r   r   rs      r   _maybe_seedzEntropyPool._maybe_seed<   s    {{dmmryy{:5zz"~ DKIIKDMDKT?DJJt ;  55ndA6 *! vvbz* * *  5tyy{+224D5	5sM   B	 		DC B;2	C;C	 CD4C?<D>C??DDc                     | j                   5  | j                          | j                  | j                  | j                  k(  rx| j
                  j                  t        | j                               t        | j
                  j                               | _        | j                  | j                         d| _        | j                  | j                     }| xj                  dz  c_        d d d        |S # 1 sw Y   S xY w)Nr   r$   )r   r5   r   r   r   r   updatebytesr   r   r   )r   values     r   random_8zEntropyPool.random_8L   s    YY 	 {{"dnn&E		  tyy!12'		(8(8(:;

4;;'!"KK/ENNaN	  	  s   CC33C=c                 J    | j                         dz  | j                         z   S )N   )r:   r   s    r   	random_16zEntropyPool.random_16X   s    }}$t}}66r   c                 J    | j                         dz  | j                         z   S )N   )r>   r=   s    r   	random_32zEntropyPool.random_32[   s     ~~%'$..*:::r   firstlastc                     ||z
  dz   }|dkD  rt        d      |dkD  r| j                  }d}n"|dkD  r| j                  }d}n| j                  }d}|| |       z  |dz   z  z   S )	Nr$   l        ztoo bigr@   l    r<   i  r#   )
ValueErrorrA   r>   r:   )r   rB   rC   sizerandmaxs         r   random_betweenzEntropyPool.random_between^   su    e|a*Y''%<>>DCCZ>>DC==DCtdf}q111r   r(   )r!   N)__name__
__module____qualname__r   r8   r   r   r)   r5   intr:   r>   rA   rI    r   r   r   r      s{    Xe_  !U !t ! E  d   
# 
73 7;3 ;2C 2s 2s 2r   r   system_randomr!   c                  b    t         t         j                  dd      S t        j                         S )Nr   r@   )rO   	randranger   r>   rN   r   r   r>   r>   w   s(     &&q%00~~r   rB   rC   c                 l    t         t         j                  | |dz         S t        j                  | |      S )Nr$   )rO   rQ   r   rI   )rB   rC   s     r   betweenrS   ~   s2     &&udQh77""5$//r   )r   r   randomr   r2   typingr   r   r   r   __annotations__SystemRandomrO   r.   rM   r>   rS   rN   r   r   <module>rX      s   $  	     Q2 Q2h }} 'F'')M
 3  03 0c 0c 0  Ms   A A$#A$