// Unique ID creation requires a high quality random # generator. In the// browser this is a little complicated due to unknown quality of Math.random()// and inconsistent support for the `crypto` API. We do the best we can via// feature-detection// getRandomValues needs to be invoked in a context where "this" is a Crypto// implementation. Also, find the complete implementation of crypto on IE11.vargetRandomValues=(typeof(crypto)!='undefined'&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto))||(typeof(msCrypto)!='undefined'&&typeofwindow.msCrypto.getRandomValues=='function'&&msCrypto.getRandomValues.bind(msCrypto));if(getRandomValues){// WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Cryptovarrnds8=newUint8Array(16);// eslint-disable-line no-undefmodule.exports=functionwhatwgRNG(){getRandomValues(rnds8);returnrnds8;};}else{// Math.random()-based (RNG)//// If all else fails, use Math.random(). It's fast, but is of unspecified// quality.varrnds=newArray(16);module.exports=functionmathRNG(){for(vari=0,r;i<16;i++){if((i&0x03)===0)r=Math.random()*0x100000000;rnds[i]=r>>>((i&0x03)<<3)&0xff;}returnrnds;};}