+
    i  c                   s    . ROt ^ RIt^ RIHt ^ RIHt ]! 4       t]P                  t]P                  t	R t
^ tR	R ltR	R ltR	R ltR# )
choiceN)compare_digest)SystemRandomc                 sP    V ^ 8:  d   \        R4      h\        P                  V 4      # )i    zUpper bound must be positive.)Z
ValueError_sysrandZ
_randbelow)Zexclusive_upper_bound   & /usr/lib64/python3.14/secrets.py	randbelowr      s(    !899455    c                 s@    V f   \         p \        P                  V 4      # N)DEFAULT_ENTROPYr   Z	randbytesnbytesr   r   token_bytesr   !   s     ~ f%%r   c                 s4    \        V 4      P                  4       # r   )r   Zhexr
   r   r   	token_hexr   /   s     v""$$r   c                 s    \        V 4      p\        P                  ! V4      P                  R 4      P	                  R4      # )s   =Zascii)r   base64Zurlsafe_b64encodeZrstripZdecode)r   Ztoks   & r   token_urlsafer   <   s5     f
C##C(//5<<WEEr   )r    r   randbitsr   r   r   r   r   r   )Z__all__r   Zhmacr   Zrandomr   r   Zgetrandbitsr   r    r   r	   r   r   r   ) r   r   <module>r      sN      >	6 &%Fr   