memoscan
← all memos

Memo 0x559cdd60…fb9814 on Ethereum

let BASE_URL=tokenData.preferredIPFSGateway,CID=tokenData.externalAssetDependencies[0].cid,TOTAL_IMAGES=400;const SEED=75849,fileType=".jpg";function mulberry32(e){let t=e;return function(){t|=0;let e=Math.imul((t=t+1831565813|0)^t>>>15,1|t);return(((e^=e+Math.imul(e^e>>>7,61|e))^e>>>14)>>>0)/4294967296}}function fisherYatesShuffle(e,t){let r=t.length,n,l,a=mulberry32(e);for(;0!==r;)l=Math.floor(a()*r),r-=1,n=t[r],t[r]=t[l],t[l]=n;return t}function generateIndices(e,t){let r=Array.from({length:t},(e,t)=>t);return fisherYatesShuffle(e,r)}function selectImage(e,t){let r=generateIndices(75849,t),n=r[e%t];return n}let tokenId=tokenData.tokenId;const selectedImage=selectImage(tokenId,TOTAL_IMAGES);class Random{constructor(){this.useA=!1;let e=function(e){let t=parseInt(e.substring(0,8),16),r=parseInt(e.substring(8,16),16),n=parseInt(e.substring(16,24),16),l=parseInt(e.substring(24,32),16);return function(){n|=0;let e=((t|=0)+(r|=0)|0)+(l|=0)|0;return l=l+1|0,t=r^r>>>9,r=n+(n<<3)|0,n=(n=n<<21|n>>>11)+e|0,(e>>>0)/4294967296}};this.prngA=new e(tokenData.hash.substring(2,34)),this.prngB=new e(tokenData.hash.substring(34,66));for(let t=0;t<1e6;t+=2)this.prngA(),this.prngB()}random_dec(){return this.useA=!this.useA,this.useA?this.prngA():this.prngB()}random_num(e,t){return e+(t-e)*this.random_dec()}random_int(e,t){return Math.floor(this.random_num(e,t+1))}random_bool(e){return this.random_dec()<e}random_choice(e){return e[this.random_int(0,e.length-1)]}}let currentImage,imgScaleFactor,currentCircleColor,circleStates=[],globalColors=["#ff0000","#bdab7d","#A5DFB1","#b8e0e5","#C29FFF","#ff85cb","#0075A2","#FFC953"],R=new Random;function preload(){src=`${BASE_URL}/${CID}/${selectedImage}.jpg`}function createLoadingSVG(){let e="http://www.w3.org/2000/svg",t=document.createElementNS(e,"svg");t.setAttributeNS(null,"viewBox","0 0 122.14 122.14"),t.setAttributeNS(null,"id","Layer_1"),t.setAttributeNS(null,"data-name","Layer 1");let r=document.createElementNS(e,"path");return r.setAttributeNS(null,"d","m0,122.14c67.46,0,122.14-54.69,122.14-122.14C54.69,0,0,54.69,0,122.14Zm86.37-35.78h-50.59v-50.59s50.59,0,50.59,0v50.59Z"),r.setAttributeNS(null,"style","fill: #231f20; stroke-width: 0px;"),t.appendChild(r),t.style.position="absolute",t.style.top="50%",t.style.left="50%",t.style.transform="translate(-50%, -50%) scale(0.5)",t.style.transformOrigin="center center",document.body.appendChild(t),t}function removeLoadingSVG(e){e&&e.parentNode&&e.parentNode.removeChild(e)}let img=new Image;img.onload=function(){removeLoadingSVG(loadingSVG),resizeAndDrawImage()};let loadingSVG=createLoadingSVG();function setup(){createCanvas(windowWidth,windowHeight),loadImageRandom()}function loadImageRandom(){console.log(src),currentImage=loadImage(src,e=>{currentImage=e,background(0);let t;imgScaleFactor=Math.min(windowWidth/currentImage.width,windowHeight/currentImage.height);let r=(windowWidth-currentImage.width*imgScaleFactor)/2,n=(windowHeight-currentImage.height*imgScaleFactor)/2;if(image(currentImage,r,n,currentImage.width*imgScaleFactor,currentImage.height*imgScaleFactor),currentCircleColor||(currentCircleColor=R.random_choice(globalColors)),0===circleStates.length){let l=currentImage.width/4,a=currentImage.height/5;for(let i=0;i<4;i++)for(let o=0;o<5;o++){let c=R.random_dec()>.2;circleStates.push({x:i*l+l/2,y:o*a+a/2,display:c})}}drawOverlayPattern(r,n,imgScaleFactor)})}function drawOverlayPattern(e,t,r){let n=300*r;noStroke(),fill(currentCircleColor),circleStates.forEach(l=>{if(l.display){let a;ellipse(e+l.x*r,t+l.y*r,n,n)}})}function windowResized(){resizeCanvas(windowWidth,windowHeight),loadImageRandom()}