/*!{"author_url":"https://rvklein.me/","modified":"2020-12-01T06:00:00Z"}!*/ function Rando ($$) { function Rando () { } var $={}; $.timeNow=function() { return(1*(new Date())); }; $.arrayPickItems=function(x,y) { var i=0,k=0,j=x.length,z=[]; while(j>k++) { if(true===x[k]) { z[i++]=y[k]; } } return(z); }; $.arrayFilledBoolTrue=function(n) { var i=0,z=[]; while(n>i++) { z[i]=true; } return(z); }; $.arrayOfI32SplitBytes=function(a) { var j=(a.length),i=0,z=[]; var h=(4*j),k=0; while(h>i&&j>k) { z[i]=((a[k]>>24)&0xFF); z[i+1]=((a[k]>>16)&0xFF); z[i+2]=((a[k]>>8)&0xFF); z[i+3]=((a[k])&0xFF); i=(i+4); k++; } return(z); }; $.numI32Reverse=function(n) { return( ( (((n>> 0)&1)<<31)|(((n>> 1)&1)<<30) | (((n>> 2)&1)<<29)|(((n>> 3)&1)<<28) | (((n>> 4)&1)<<27)|(((n>> 5)&1)<<26) | (((n>> 6)&1)<<25)|(((n>> 7)&1)<<24) | (((n>> 8)&1)<<23)|(((n>> 9)&1)<<22) | (((n>>10)&1)<<21)|(((n>>11)&1)<<20) | (((n>>12)&1)<<19)|(((n>>13)&1)<<18) | (((n>>14)&1)<<17)|(((n>>15)&1)<<16) | (((n>>16)&1)<<15)|(((n>>17)&1)<<14) | (((n>>18)&1)<<13)|(((n>>19)&1)<<12) | (((n>>20)&1)<<11)|(((n>>21)&1)<<10) | (((n>>22)&1)<< 9)|(((n>>23)&1)<< 8) | (((n>>24)&1)<< 7)|(((n>>25)&1)<< 6) | (((n>>26)&1)<< 5)|(((n>>27)&1)<< 4) | (((n>>28)&1)<< 3)|(((n>>29)&1)<< 2) | (((n>>30)&1)<< 1)|(((n>>31)&1)<< 0) ) ); }; $.lcgpm31=function(s) { return( function() { s=(s%0x7FFFFFFF); if(0>=s){s+=0x7FFFFFFE;} s=((s*0xBC8F)%0x7FFFFFFF); return(s); } ); }; $.mb32=function(a) { var t=((a+1831565813)|0); t=(Math.imul((t^t>>>15),(1|t))); t=(t+Math.imul(t^t>>>7,61|t)^t); t=((t^t>>>14)>>>0); return(t); }; $.getTimeStartHash=function(t) { var f=($.mb32),r=($.numI32Reverse); var u=0xFFFFFFFF; var g=0x5A827999F; var k=(0^(0-g)); var b=(t%u),a=(t>>>31),i=0; var s=((t%g)^k); while(u<(t>>>i++)){} return(f(f((f(f(r(u-b))^a^(t>>>i))+1)^(31-i))^(r(f(t-1)-1))^(f(f(s))))); }; $.timedContentionIterator=function() { var t=($.timeNow); var f=($.mb32); var i=0,k=0,w=[],z=[]; var a=(t()); var g=($.lcgpm31($.getTimeStartHash(a))); var x=(t()),y=(t()); if(x!=y) { x=(t()); y=(t()); } while(x==y) { w[i++]=(f(g()+f(i))); y=(t()); } var d=(y-x); var h=(Math.floor(i/d)); while(h>k) { z[k++]=(f(f(w[((k%h)+(k*h))])+g())); } return( [d,i,z] ); }; $.collectEntropy=function(n) { var k=0,i=0,c=0,d=0,r=[],q=[],p=[],z=[],h=null; while(p.length<=n) { h=($.timedContentionIterator()); r[k]=h[0]; q[k]=h[1]; p=(p.concat(h[2].slice())); k++; } d=((p.length)-n); h=0; var x=($.arrayFilledBoolTrue(p.length)); while(d>c) { h=((h+d)%n); if(x[h]===true) { x[h]=false; c++; } else { h++; } } z=($.arrayPickItems(x,p)); return([r,q,z]); }; $.createCSPRNG=function() { var c=768; var e=($.collectEntropy(c)); var a=($.arrayOfI32SplitBytes(e[2]).reverse()); var h=($$.SHA3._384.digest(a)); var k=(new Uint8Array(h.slice(1,33))); var n=(new Uint8Array(h.slice(36,48))); return(new $$.ChaCha20(k,n)); }; Rando.prototype.timedContentionIterator=($.timedContentionIterator); Rando.prototype.collectEntropy=($.collectEntropy); Rando.prototype.createCSPRNG=($.createCSPRNG); return(new Rando()); } var rando=(Rando({"SHA3":SHA3,"ChaCha20":ChaCha20})); /**/ /* // console.log( rando.collectEntropy(768) ); */ /**/
🐇