f gdZddlZddlZddlmZddlmZeZejZ ej Z dZ dZ d dZ d dZd d ZdS) )choice randbelowrandbits SystemRandom token_bytes token_hex token_urlsafecompare_digestN)r )rcb |dkrtdt|S)Nr zUpper bound must be positive.) ValueError_sysrand _randbelow)exclusive_upper_bounds ./opt/alt/python311/lib64/python3.11/secrets.pyrrs42!!8999   4 5 55 cJ |t}t|SN)DEFAULT_ENTROPYr randbytesnbytess rrr"s'~    f % %%rcl tjt|dS)Nascii)binasciihexlifyrdecoders rrr0s0   K// 0 0 7 7 @ @@rc t|}tj|ddS)N=r)rbase64urlsafe_b64encoderstripr)rtoks rrr=sC f  C  #C ( ( / / 5 5 < r)s      <>>   666  & & & & A A A A F F F F F Fr