wec@sdddddddgZddlmZdd lmZdefd YZeZejZej Z ej Z ej Z ej Z ej Z dd lmZmZmZmZd S( t StrongRandomt getrandbitst randrangetrandinttchoicetshuffletsamplei(tRandom(t is_native_intcBsMeZdddZdZdZdZdZdZdZ RS(cCs|dkr$|dkr$d|_nW|dk rH|dkrH||_n3|dkro|dk ro|j|_n tddS(Ns(Cannot specify both 'rng' and 'randfunc'(tNonet _randfunctreadt ValueError(tselftrngtrandfunc((s:/usr/lib64/python2.7/site-packages/Crypto/Random/random.pyt__init__ s  cCsR|jdkr$tjj|_nd|>d}|t|jt|d@S(s%Return an integer with k random bits.iiN(R R RtnewR t bytes_to_longtceil_div(R tktmask((s:/usr/lib64/python2.7/site-packages/Crypto/Random/random.pyR*scGsit|dkr$|\}}}njt|dkrK|\}}d}nCt|dkru|\}d}d}ntdt|ft| st| st| rtdn|dkrtdnt|||}|dkrd}n|dkr/td|||fn|}x%||kr\|jt|}q8W|||S( skrandrange([start,] stop[, step]): Return a randomly-selected element from range(start, stop, step).iiiis.randrange expected at most 3 arguments, got %ds$randrange requires integer argumentss(randrange step argument must not be zeros%empty range for randrange(%r, %r, %r)(tlent TypeErrorRR RRtsize(R targststarttstoptstept num_choicestr((s:/usr/lib64/python2.7/site-packages/Crypto/Random/random.pyR2s0         cCset| st| r)tdn|j||d}||koV|knsat|S(s0Return a random integer N such that a <= N <= b.s"randint requires integer argumentsi(RRRtAssertionError(R tatbtN((s:/usr/lib64/python2.7/site-packages/Crypto/Random/random.pyRSs "cCs8t|dkr!tdn||jt|S(srReturn a random element from a (non-empty) sequence. If the seqence is empty, raises IndexError. isempty sequence(Rt IndexErrorR(R tseq((s:/usr/lib64/python2.7/site-packages/Crypto/Random/random.pyR[scCs^xWtt|dddD]9}|jd|d}||||||<||s`