const ASPECT_RATIO=1;let hash=tokenData.hash??"0",projectNumber=Math.floor(parseInt(tokenData.tokenId)/1e6),mintNumber=parseInt(tokenData.tokenId)%1e6,isBannerOpened=!1;const ARTCODE_BANNER='<svg width="2030" height="432" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#a)"><path d="M0 0h2029.23v432H0V0Z" fill="#fff"/><path d="M1962.96 239.212V197.04h-81.15l81.15-100.292V54.576h-179.68v334.188h186.77v-42.526l-86.47-107.026h79.38ZM1495.88 54.576v334.188h85.4c92.14 0 166.21-75.13 166.21-166.917S1673.42 54.93 1581.28 54.93h-85.4v-.354Zm-36.15 166.917c0-94.268-75.13-170.461-166.92-170.461-92.49 0-167.63 76.193-167.63 170.461 0 94.267 75.14 170.815 167.63 170.815 91.79 0 166.92-76.548 166.92-170.815Zm-452.56 0L1113.14 89.66c-28.71-24.453-65.57-38.983-105.97-38.983-92.492 0-166.914 76.548-166.914 170.816 0 94.267 74.776 170.815 166.914 170.815 40.4 0 77.26-14.53 105.97-38.983l-105.97-131.832ZM592.893 54.576v42.172H658.1v292.016h112.696V96.748h64.853V54.576H592.893ZM480.906 240.63c51.741 0 93.559-41.464 93.559-92.85 0-51.386-41.818-93.559-93.559-93.559H356.87V388.41h242.756l-118.72-147.78ZM41.109 388.764h284.929L183.574 47.488 41.109 388.764Z" stroke="#1D1D1B" stroke-width="3.544" stroke-miterlimit="9.244"/><path d="m1273.32 273.942 35.44-43.235c20.2-24.807 24.1-36.502 24.1-48.197 0-23.744-18.43-40.046-44.66-40.046-17.01 0-33.66 8.86-40.04 24.453l40.4 52.449-43.95 54.576v19.137h85.41v-18.782h-56.7v-.355Z" fill="#1D1D1B"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h2029.23v432H0z"/></clipPath></defs></svg>',ARTCODE_BANNER_RATIO=121.9/572.6;let artCodeBannerImage;const getDimension=()=>2e3,getCanvasDimension=()=>Math.min(windowWidth,windowHeight),scaleValue=e=>e*getCanvasDimension()/2e3;class Random{constructor(e){this.useA=!1;let f=function(e){let f=parseInt(e.substr(0,8),16),a=parseInt(e.substr(8,8),16),n=parseInt(e.substr(16,8),16),d=parseInt(e.substr(24,8),16);return function(){f|=0,a|=0,n|=0,d|=0;let e=(f+a|0)+d|0;return d=d+1|0,f=a^a>>>9,a=n+(n<<3)|0,n=n<<21|n>>>11,n=n+e|0,(e>>>0)/4294967296}};this.prngA=new f(e.substr(2,32)),this.prngB=new f(e.substr(34,32));for(let e=0;e<1e6;e+=2)this.prngA(),this.prngB()}random_dec(){return this.useA=!this.useA,this.useA?this.prngA():this.prngB()}random_num(e,f){return e+(f-e)*this.random_dec()}random_int(e,f){return Math.floor(this.random_num(e,f+1))}random_choice(e){return e[this.random_int(0,e.length-1)]}random_by_weight(e){var f,a,n=0;for(f=0;f<e.length;f++)n+=e[f];for(a=this.random_dec()*n,f=0;f<e.length;f++){if(a<e[f])return f;a-=e[f]}return-1}random_choice_by_weight(e,f){return e[this.random_by_weight(f)]}}const random=new Random(hash),PATTERN_WEIGHTS=[[0,.2,.4,.8,1],[0,.25,.5,.75,1],[0,.4,.8,.9,1],[0,.1,.4,.6,.9,1]],COLORS=[["#f5eee6","#f3d7ca","#e6a4b4","#c86b85"],["#7effdb","#b693fe","#8c82fc","#ff9de2"],["#dff4f3","#dde7f2","#b9bbdf","#878ecd"],["#303841","#3a4750","#d72323","#eeeeee"],["#ebfffa","#c6fce5","#6ef3d6","#0dceda"],["#99e1e5","#f3e8cb","#f2c6b4","#fbafaf"],["#0c056d","#590d82","#b61aae","#f25d9c"],["#155263","#ff6f3c","#ff9a3c","#ffc93c"],["#fafafa","#e8f1f5","#005691","#004a7c"],["#15b7b9","#10ddc2","#f5f5f5","#f57170"],["#f4eeff","#dcd6f7","#a6b1e1","#424874"],["#cefff1","#ace7ef","#a6acec","#a56cc1"],["#fb929e","#ffdfdf","#fff6f6","#aedefc"],["#a9eee6","#fefaec","#f9a1bc","#625772"],["#fbf0f0","#dfd3d3","#b8b0b0","#7c7575"],["#071a52","#086972","#17b978","#a7ff83"],["#283149","#404b69","#f73859","#dbedf3"],["#393232","#4d4545","#8d6262","#ed8d8d"],["#ff6464","#ff8264","#ffaa64","#fff5a5"],["#f8b595","#f67280","#c06c84","#6c5b7c"],["#303a52","#574b90","#9e579d","#fc85ae"],["#fef0ff","#d6c8ff","#c79ecf","#7e6bc4"],["#66bfbf","#eaf6f6","#fcfefe","#f76b8a"],["#f6f6f6","#d6e4f0","#1e56a0","#163172"],["#00204a","#005792","#00bbf0","#d9faff"],["#11cbd7","#c6f1e7","#f0fff3","#fa4659"],["#a9eee6","#fefaec","#f38181","#625772"],["#f9ecec","#f0d9da","#c8d9eb","#ecf2f9"],["#35477d","#6c5b7b","#c06c84","#f67280"],["#232931","#393e46","#4ecca3","#eeeeee"],["#142850","#27496d","#0c7b93","#00a8cc"],["#27296d","#5e63b6","#a393eb","#f5c7f7"],["#3a0088","#930077","#e61c5d","#ffbd39"],["#ffb6b6","#fde2e2","#aacfcf","#679b9b"],["#142850","#27496d","#00909e","#dae1e7"],["#ffe8df","#ffffff","#f0f0f0","#888888"],["#fcefee","#fccde2","#fc5c9c","#c5e3f6"],["#e0fcff","#90f2ff","#6eb6ff","#7098da"],["#a6e4e7","#f9f9f9","#ebcbae","#8f8787"],["#233142","#455d7a","#f95959","#e3e3e3"],["#c7f3ff","#fdc7ff","#ffdcf5","#f2f4c3"],["#ffb6b9","#fae3d9","#bbded6","#8ac6d1"],["#e7e6e1","#f7f6e7","#c1c0b9","#537791"],["#fffcca","#55e9bc","#11d3bc","#537780"],["#272343","#ffffff","#e3f6f5","#bae8e8"],["#ffa5a5","#ffffc2","#c8e7ed","#bfcfff"],["#253b6e","#1f5f8b","#1891ac","#d2ecf9"],["#f2f2f2","#ebd5d5","#ea8a8a","#685454"],["#eaafaf","#a2738c","#645c84","#427996"],["#fcf5ee","#fbe8e7","#f7ddde","#ffc4d0"],["#4d606e","#3fbac2","#d3d4d8","#f5f5f5"],["#ffbbcc","#ffcccc","#ffddcc","#ffeecc"],["#9ddcdc","#fff4e1","#ffebb7","#e67a7a"],["#7d5a5a","#f1d1d1","#f3e1e1","#faf2f2"],["#ffd9e8","#de95ba","#7f4a88","#4a266a"],["#f0ece2","#dfd3c3","#c7b198","#596e79"],["#f47c7c","#f7f48b","#a1de93","#70a1d7"],["#c8f4de","#a4e5d9","#66c6ba","#649dad"],["#0e3150","#6dc9c8","#ffc0c2","#f7e9e3"],["#c7f5fe","#fcc8f8","#eab4f8","#f3f798"],["#e3d9ca","#95a792","#596c68","#403f48"],["#2a363b","#e84a5f","#ff847b","#fecea8"],["#f4f7f7","#aacfd0","#79a8a9","#1f4e5f"],["#700961","#b80d57","#e03e36","#ff7c38"],["#e4eddb","#307672","#144d53","#1a3c40"],["#a7efe9","#7fdfd4","#fbe1b6","#fbac91"],["#f5efe3","#e6e7e5","#f7d3ba","#a6aa9c"],["#e1f2fb","#f1f9f9","#f3dfe3","#e9b2bc"],["#f8b195","#f67280","#c06c84","#355c7d"],["#ffd5e5","#ffffdd","#a0ffe6","#81f5ff"],["#fbfbfb","#b9e1dc","#f38181","#756c83"],["#adf7d1","#95e8d7","#7dace4","#8971d0"],["#dff5f2","#87dfd6","#46b7b9","#2f9296"],["#beebe9","#f4dada","#ffb6b9","#f6eec7"],["#222831","#393e46","#00adb5","#00fff5"],["#39065a","#6a0572","#9a0f98","#ea0599"],["#f4f9f4","#c4e3cb","#8aae92","#616161"],["#a1d9ff","#ca82f8","#ed93cb","#f2bbbb"],["#fa4659","#feffe4","#a3de83","#2eb872"],["#ffb400","#fffbe0","#2994b2","#474744"],["#6b0848","#a40a3c","#ec610a","#ffc300"],["#f12b6b","#ff467e","#fd94b4","#f6c7c7"],["#333333","#ffffff","#e1f4f3","#706c61"],["#363062","#4d4c7d","#827397","#d8b9c3"],["#f3f8ff","#deecff","#c6cfff","#e8d3ff"],["#be9fe1","#c9b6e4","#e1ccec","#f1f1f6"],["#e8e8e8","#5588a3","#145374","#00334e"],["#45eba5","#21aba5","#1d566e","#163a5f"],["#beebe9","#fffdf9","#ffe3ed","#8ac6d1"],["#f2e9d0","#eaceb4","#e79e85","#bb5a5a"],["#e4fffe","#a4f6f9","#ff99fe","#ba52ed"],["#fafaf6","#00fff0","#00d1ff","#3d6cb9"],["#fda403","#e8751a","#c51350","#8a1253"],["#f6f5f5","#e3e3e3","#3bb4c1","#048998"],["#f4f7f7","#aacfd0","#5da0a2","#34495e"],["#3498db","#ecf0f1","#34495e","#f1c40f"],["#dddddd","#fab7b7","#f5a8a8","#e19999"],["#0f1021","#d01257","#fb90b7","#ffcee4"],["#f69d9d","#ffeab6","#fdffba","#c0ffc2"],["#ffdede","#f7f3ce","#c5ecbe","#4797b1"],["#120136","#035aa6","#40bad5","#fcbf1e"]],COLORS_LENGTH=COLORS.length,PATTERNS={color:(e=1)=>(f,a,n,d)=>{strokeWeight(scaleValue(1)),fill(gene.pallete[e]),rect(f,a,n,d)},color_2:(e=1)=>(e,f,a,n)=>{PATTERNS.color(2)(e,f,a,n)},plain:()=>(e,f,a,n)=>{strokeWeight(scaleValue(1)),fill("white"),rect(e,f,a,n)},horzStripes:(e=random.random_int(3,16))=>(f,a,n,d)=>{stroke("black"),strokeWeight(scaleValue(1));const c=d>0?1:-1;for(let t=0;t<Math.abs(d);t+=scaleValue(e))line(f,a+c*t,f+n,a+c*t)},vertStripes:(e=random.random_int(3,16))=>(f,a,n,d)=>{stroke("black"),strokeWeight(scaleValue(1));const c=n>0?1:-1;for(let t=0;t<Math.abs(n);t+=scaleValue(e))line(f+c*t,a,f+c*t,a+d)},grid:(e=random.random_int(3,16))=>(f,a,n,d)=>{PATTERNS.horzStripes(e)(f,a,n,d),PATTERNS.vertStripes(e)(f,a,n,d)},diagonalUp:(e=random.random_int(3,16))=>(f,a,n,d)=>{push(),fill("rgba(0,0,0,0)"),rect(f,a,n,d),drawingContext.clip();const c=[n>0?f:f+n,d>0?a:a+d],t=[abs(n),abs(d)],r=Math.max(...t);stroke("black"),strokeWeight(scaleValue(1));for(let f=-t[0];f<t[0]+t[1];f+=scaleValue(e))line(c[0],c[1]+f,c[0]+r,c[1]+f+r);pop()},diagonalDown:(e=random.random_int(3,16))=>(f,a,n,d)=>{push(),fill("rgba(0,0,0,0)"),rect(f,a,n,d),drawingContext.clip();const c=[n>0?f:f+n,d>0?a:a+d],t=[abs(n),abs(d)],r=Math.max(...t);stroke("black"),strokeWeight(scaleValue(1));for(let f=-t[0];f<t[0]+t[1];f+=scaleValue(e))line(c[0],c[1]+f,c[0]+r,c[1]+f-r);pop()},diagonalGrid:(e=random.random_int(3,16))=>(f,a,n,d)=>{PATTERNS.diagonalUp(e)(f,a,n,d),PATTERNS.diagonalDown(e)(f,a,n,d)}},AVAILABLE_PATTERNS=["color","color_2","plain","horzStripes","vertStripes","grid","diagonalUp","diagonalDown","diagonalGrid"],generateGene=e=>{const f=random.random_choice(PATTERN_WEIGHTS),a=random.random_int(0,COLORS_LENGTH-1),n=f.map(((e,f)=>0===f?"color":random.random_choice(AVAILABLE_PATTERNS)));return{vertOrHorzRatio:random.random_dec(),seed:e,palleteIndex:a,patternWeights:f,patternNames:n,gridLinesToRects:{gitter:[random.random_choice_by_weight([-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8],[1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1]),random.random_choice_by_weight([-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8],[1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1])]},gridPartitioning:{driftIndex:[random.random_choice([0,1]),random.random_choice([0,1])],driftCoefficient:[random.random_num(-.05,.05),random.random_num(-.05,.05)],margin:random.random_choice_by_weight([0,30,90,120,300],[.01,.4,.3,.2,.09]),gap:random.random_int(0,20),gridSizeInUnits:random.random_choice_by_weight([[20,20],[40,40],[60,60],[80,80],[100,100],[120,120],[200,200]],[.1,.1,.2,.28,.25,.05,.02])}}},getGeneForRendering=e=>{const f=e.patternNames,a=COLORS[e.palleteIndex],n=random.random_int(0,a.length-1),d=[...a.slice(n),...a.slice(0,n)];return{...e,pallete:d,patterns:f.map((e=>PATTERNS[e]()))}},generateGridPartitioningInGridUnits=(e,f,a=.5)=>{if(f[0]-e[0]==0&&f[1]-e[1]==0)return[[e,f]];let n=random.random_dec()>a;if(f[0]-e[0]==1&&f[1]-e[1]==0||f[0]-e[0]==0&&f[1]-e[1]==1)return[[e,e],[f,f]];if(f[0]-e[0]==1&&f[1]-e[1]==1)return n?[[e,[f[0]-1,f[1]]],[[e[0]+1,e[1]],f]]:[[e,[f[0],f[1]-1]],[[e[0],e[1]+1],f]];const d=[n?random.random_int(e[0]+1,f[0]-1):e[0],n?e[1]:random.random_int(e[1]+1,f[1]-1)],c=[n?d[0]:f[0],n?f[1]:d[1]],t=[d,c],r=[e,[c[0]-(n?1:0),c[1]-(n?0:1)]],i=[[d[0]+(n?1:0),d[1]+(n?0:1)],f],o=r[1][0]>=r[0][0]&&r[1][1]>=r[0][1],s=i[1][0]>=i[0][0]&&i[1][1]>=i[0][1],b=n?a+(1-a)/2:a/2;return[...o?generateGridPartitioningInGridUnits(r[0],r[1],b):[],t,...s?generateGridPartitioningInGridUnits(i[0],i[1],b):[]]},convertGridLinesToRects=e=>{const{gridSizeInUnits:f,gap:a,margin:n}=gene.gridPartitioning,{gitter:d}=gene.gridLinesToRects,c=[(2e3-2*n-(f[0]-1)*a)/f[0],(2e3-2*n-(f[1]-1)*a)/f[1]],t=[n,n];return e.map(((e,f)=>[[e[0][0]*(c[0]+a),e[0][1]*(c[1]+a)],[(e[1][0]+d[0])*(c[0]+a)-a,(e[1][1]+d[1])*(c[1]+a)-a]])).map((e=>[[t[0]+e[0][0],t[1]+e[0][1]],[t[0]+e[1][0],t[1]+e[1][1]]]))},gene=getGeneForRendering(generateGene(hash)),lines=generateGridPartitioningInGridUnits([0,0],[gene.gridPartitioning.gridSizeInUnits[0]-1,gene.gridPartitioning.gridSizeInUnits[1]-1],gene.vertOrHorzRatio);function setup(){const e=getCanvasDimension();createCanvas(e,e),artCodeBannerImage=loadImage(`data:image/svg+xml;charset=utf-8,${encodeURIComponent(ARTCODE_BANNER)}`)}function windowResized(){const e=getCanvasDimension();resizeCanvas(e,e)}function draw(){const{pallete:e,patterns:f,patternWeights:a}=gene,{margin:n,driftCoefficient:d,driftIndex:c}=gene.gridPartitioning,t=2e3,r=convertGridLinesToRects(lines);background(e[0]);for(let e=0;e<r.length;++e){const n=r[e];resetMatrix();const t=[n[0][0]+(n[1][0]-n[0][0]/2),n[0][1]+(n[1][1]-n[0][1]/2)];push(),translate(scaleValue(t[0]+t[c[0]]*d[0]),scaleValue(t[1]+t[c[1]]*d[1]));const i=[-(n[1][0]-n[0][0]/2),-(n[1][1]-n[0][1]/2),n[1][0]-n[0][0],n[1][1]-n[0][1]].map(scaleValue),o=Math.abs(i[2]/i[3]),s=o>1?.5*(1-1/o)+.5:.5*o;let b=0;if(0!==i[2]||0!==i[3])for(;b<a.length&&!(s>=a[b]&&s<=(a[b+1]??1));++b);const l=f[b];PATTERNS.plain()(...i),l(...i),pop()}resetMatrix(),strokeWeight(scaleValue(2*n)),stroke(e[3]),fill("rgba(0,0,0,0)"),rect(0,0,scaleValue(t),scaleValue(t)),strokeWeight(scaleValue(1)),stroke("black"),rect(scaleValue(n),scaleValue(n),scaleValue(t-2*n),scaleValue(t-2*n)),isBannerOpened&&image(artCodeBannerImage,0,0,scaleValue(t)+2,.2128885784142508*scaleValue(t))}function keyPressed(){console.log("here"),isBannerOpened=!isBannerOpened}function doubleClicked(){isBannerOpened=!isBannerOpened}
↓ show full (12,380 bytes)