Ë
    (üàgr  ã                   óð   — g d ¢Z ddlmZ ddlmZ  G d„ de«      Z e«       Zej                  Zej                  Z	ej                  Z
ej                  Zej                  Zej                  ZddlmZmZmZmZ y))ÚStrongRandomÚgetrandbitsÚ	randrangeÚrandintÚchoiceÚshuffleÚsampleé    )ÚRandom)Úis_native_intc                   ó8   — e Zd Zd	d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)
r   Nc                 ót   — |€
|€d | _         y |�
|€|| _         y |€|�|j                  | _         y t        d«      ‚)Nz(Cannot specify both 'rng' and 'randfunc')Ú	_randfuncÚreadÚ
ValueError)ÚselfÚrngÚrandfuncs      úR/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/Crypto/Random/random.pyÚ__init__zStrongRandom.__init__    sE   € ØÐ  Ø!ˆD�NØÐ! c kØ%ˆD�NØÐ # /Ø ŸX™XˆD�NäÐGÓHÐHó    c           	      ó¾   — | j                   €#t        j                  «       j                  | _         d|z  dz
  }|t	        | j                  t        |d«      «      «      z  S )z%Return an integer with k random bits.é   é   )r   r
   Únewr   Úbytes_to_longÚceil_div)r   ÚkÚmasks      r   r   zStrongRandom.getrandbits*   sM   € ð �>‰>Ð!Ü#ŸZ™Z›\×.Ñ.ˆDŒNØ�Q‘˜!‰|ˆØ”m D§N¡N´8¸A¸q³>Ó$BÓCÑCÐCr   c           	      óì  — t        |«      dk(  r|\  }}}nEt        |«      dk(  r|\  }}d}n/t        |«      dk(  r	|\  }d}d}nt        dt        |«      fz  «      ‚t        |«      rt        |«      rt        |«      st        d«      ‚|dk(  rt        d«      ‚t	        ||z
  |«      }|dk  rd}|dk  rt        d|›d	|›d	|›d
�«      ‚|}||k\  r | j                  t        |«      «      }||k\  rŒ |||z  z   S )zkrandrange([start,] stop[, step]):
        Return a randomly-selected element from range(start, stop, step).é   é   r   r	   z.randrange expected at most 3 arguments, got %dz$randrange requires integer argumentsz(randrange step argument must not be zerozempty range for randrange(z, ú))ÚlenÚ	TypeErrorr   r   r   r   Úsize)r   ÚargsÚstartÚstopÚstepÚnum_choicesÚrs          r   r   zStrongRandom.randrange2   s  € ô ˆt‹9˜Š>Ø"&ÑˆU�D™$Ü�‹Y˜!Š^Ø ‰MˆU�DØ‰DÜ�‹Y˜!Š^Ø‰GˆTØˆEØ‰DäÐLÔPSÐTXÓPYÈ|Ñ[Ó\Ð\Ü˜eÔ$¬M¸$Ô,?Ü˜dÔ#ÜÐBÓCÐCØ�1Š9ÜÐGÓHÐHä˜t e™|¨TÓ2ˆØ˜Š?ØˆKØ˜Š?ÝÊÊtÒUYÐZÓ[Ð[ð ˆØ�;ÒØ× Ñ ¤ kÓ!2Ó3ˆAð �;Óð ˜˜q™Ñ!Ð!r   c                 ó’   — t        |«      rt        |«      st        d«      ‚| j                  ||dz   «      }||cxk  r|k  sJ ‚ J ‚|S )z0Return a random integer N such that a <= N <= b.z"randint requires integer argumentsr   )r   r$   r   )r   ÚaÚbÚNs       r   r   zStrongRandom.randintS   sK   € ä˜QÔ¤}°QÔ'7ÜÐ@ÓAÐAØ�N‰N˜1˜a ™cÓ"ˆØ�AŒ{˜Š{Ð‰{Ðˆ{Øˆr   c                 ón   — t        |«      dk(  rt        d«      ‚|| j                  t        |«      «         S )zrReturn a random element from a (non-empty) sequence.

        If the seqence is empty, raises IndexError.
        r	   zempty sequence)r#   Ú
IndexErrorr   )r   Úseqs     r   r   zStrongRandom.choice[   s3   € ô
 ˆs‹8�qŠ=ÜÐ-Ó.Ð.Ø�4—>‘>¤# c£(Ó+Ñ,Ð,r   c                 óŒ   — t        t        |«      dz
  dd«      D ](  }| j                  d|dz   «      }||   ||   c||<   ||<   Œ* y)zShuffle the sequence in place.r   r	   éÿÿÿÿN)Úranger#   r   )r   ÚxÚiÚjs       r   r   zStrongRandom.shuffled   sS   € ô ”s˜1“v˜a‘x  BÓ'ò 	$ˆAØ—‘˜q ! A¡#Ó&ˆAØ˜1™˜q ™tˆJˆAˆa‰D�!�A’$ñ	$r   c                 óØ   — t        |«      }||kD  rt        d«      ‚g }i }t        |«      D ]<  }d}|�||v r| j                  |«      }|€Œ||v rŒ|j	                  ||   «       d||<   Œ> |S )zNReturn a k-length list of unique elements chosen from the population sequence.zsample larger than populationNr   )r#   r   r5   r   Úappend)r   Ú
populationr   r*   ÚretvalÚselectedr7   r+   s           r   r   zStrongRandom.samplen   sˆ   € ô ˜*“oˆØˆ{Š?ÜÐ<Ó=Ð=àˆØˆÜ�q“ò 	ˆAØˆAØ�)˜q H™}Ø—N‘N ;Ó/�ð ‘)˜q Hš}à�M‰M˜* Q™-Ô(ØˆH�QŠKð	ð ˆr   )NN)
Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   © r   r   r   r      s(   „ óIòDò"òBò-ò$ór   r   )r   r   Úlong_to_bytesr%   N)Ú__all__ÚCryptor
   ÚCrypto.Util.py3compatr   Úobjectr   Ú_rr   r   r   r   r   r   ÚCrypto.Util.numberr   r   rB   r%   rA   r   r   ú<module>rI      sj   ðò2 a€å å /ô^�6ô ^ñ@ ƒ^€Ø�n‰n€Ø�L‰L€	Ø
�*‰*€Ø	�‰€Ø
�*‰*€Ø	�‰€÷ LÔ Kr   