0x18b75119…b783sent to0x381233d5…7acd·#19,667,788·view on Etherscan
[0 ,()=>{console.log("Artist 36. Aaron Penne x Boreta -- platform 0 ");let B = [], A = [], g = 20, I = 0, C = 0, O = 23; let q = !0, N = !0; let Q = Array(20).fill(g), v = (t("hash") && (tokenData.hash = t("hash")), R.random_dec()); const o = { rotation_mult: .25, positive_space_amt: 5, uTCM: 0, fadeA: 1, fadeB: 1, zoomA: 1.2, zoomB: .9 }; let T = 15, i = "0.", Y = !0, E = !1; const e = 2; let b = {}; t("skeleton") && (i = "1."); const _ = A => A.reduce((A, g) => A + g) / A.length; function t(A) { if ((urlparams = new URLSearchParams(window.location.search)).get(A)) { var g = urlparams.get(A); g = g.toLowerCase().split(" "); for (let A = 0; A < g.length; A++)g[A] = g[A].charAt(0).toUpperCase() + g[A].slice(1); return g.join(" ") } return "" } function a(A, g, I = !1) { let C = A.filter(({ n: A }) => A == g); return I ? [...C = C.map(({ v: A }) => A)] : C[0] } function x(A, g, I) { var A = +A.replace("#", "0x"), C = A >> 16, Q = A >> 8 & 255, A = 255 & A, g = +g.replace("#", "0x"); return "#" + ((1 << 24) + (C + I * ((g >> 16) - C) << 16) + (Q + I * ((g >> 8 & 255) - Q) << 8) + (A + I * ((255 & g) - A)) | 0).toString(16).slice(1) } function H(A) { return A = 7 <= (A = "#" != A[0] ? "#" + A : A).length ? A : A.split("").map(A => "#" == A ? A : A + A).join("") } function j() { var A = {}; return A.w_scaled_small = window.innerWidth, A.h_scaled_small = window.innerHeight, A.min_scaled_small = Math.min(A.w_scaled_small, A.h_scaled_small), A.w = A.w_scaled_small * e, A.h = A.h_scaled_small * e, t("dl") && (console.log("Rendering in HD..."), A.w = 5700, A.h = 5700), A.min = Math.min(A.w, A.h), A.max = Math.max(A.w, A.h), A } function Z() { c = j(), J.width = c.w, J.height = c.h, J.style.width = c.w_scaled_small + "px", J.style.height = c.h_scaled_small + "px", b = c, gl.viewport(0, 0, c.w, c.h), document.body.style.backgroundColor = "#000000" } function X(A) { "r" == A.key ? location.reload() : "s" == A.key ? W() : "g" == A.key && (E = !1) } function W() { var A = document.createElement("a"); fn = `passages_${(new Date).toISOString().replace(/[^T0-9]/g, "").replace("T", "_")}_${tokenData.hash}.png`, A.download = fn, A.href = J.toDataURL("image/png"), console.log("Downloading " + fn), A.click() } function V(A, g = !1) { var I = A.createTexture(); return A.bindTexture(A.TEXTURE_2D, I), A.texParameteri(A.TEXTURE_2D, A.TEXTURE_MIN_FILTER, A.LINEAR), A.texParameteri(A.TEXTURE_2D, A.TEXTURE_MAG_FILTER, A.LINEAR), g = g ? A.CLAMP_TO_EDGE : A.REPEAT, A.texParameteri(A.TEXTURE_2D, A.TEXTURE_WRAP_S, g), A.texParameteri(A.TEXTURE_2D, A.TEXTURE_WRAP_T, g), A.pixelStorei(A.UNPACK_ALIGNMENT, 1), I } function z(g, A) { let I = [], C = g.length; var Q, B, o = () => { 0 === --C && A(I) }; for (let A = 0; A < C; A++) { i = g[A], Q = o, B = void 0, (B = new Image).src = "data:image/svg+xml, " + encodeURIComponent(i), B.width = c.w, B.height = c.h, B.onload = Q; var i = B; I.push(i) } } function $(I, A, g, C = 50, Q = AA) { let B = [], o = []; for (let g = 0; g < I.length - 1; g++) { numSteps = A[g]; for (let A = 0; A < numSteps; A++)B.push(x(I[g], I[g + 1], A / numSteps)) } B = B.slice(0, 333); for (let A = 0; A < C; A++)B.push(Q); numSteps = 5; for (let A = 0; A < numSteps; A++)B.push(x(B[B.length - 1], B[0], A / numSteps)); return o = [], B.forEach(A => { cRgb = (A = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(A = A)) ? { r: parseInt(A[1], 16), g: parseInt(A[2], 16), b: parseInt(A[3], 16) } : null, o.push(cRgb.r, cRgb.g, cRgb.b) }), [I, o] } function l(A, g) { obj_string = ""; for (var [I, C] of Object.entries(g)) obj_string += ` ${I}="${C}"`; return `<${A} ${obj_string}/>` } function D(A, g, I, C) { return -I / 2 * (Math.cos(Math.PI * A / C) - 1) + g } function r(A, g = 5) { return parseFloat(A.toFixed(g)) } let AA = "#F2F3EE"; var n, s = "#222222", k = { song: [{ w: 5, n: "Pathway", v: 0 }, { w: 5, n: "Plane", v: 1 }], chords: [{ w: 5, n: "I iii IV ii V", v: 0 }, { w: 5, n: "ii IV iii IV i", v: 1 }], cRep: [{ w: 1, n: "Few", v: 4 }, { w: 1, n: "Some", v: 7 }, { w: 1, n: "Many", v: 9 }], aspectMult: [{ w: 0, n: "Firefox", v: ["uv.xy", "uv.xy"] }, { w: 0, n: "Regular", v: ["uv.x", "uv.y"] }], perpetua: [{ w: 1, n: "Perpetua", v: 1 }, { w: 5, n: "Ephemeral", v: 0 }], prophecy: [{ w: 1, n: "Chosen", v: "Untold" }], pal: [{ w: 1, n: "Liquid Dusk", v: ["#F6DAA8", "#B68662", "#230D00", "#B68662", "#BF8C61", "#C88F5A", "#D19559", "#D39959", "#D69B55", "#E8A557", "#EFA953", "#E3A64B", "#E5BA5C", "#EFD171", "#E6C96D", "#E8CE81", "#EBDDAC", "#E9E7CE", "#ECE3E4", "#E4E5E9", "#E6E7E1", "#F5E3BD", "#E7BC6E", "#BD7E1F", "#B36F1C", "#995317", "#7F3B0E", "#7F4017", "#86522A", "#895F35", "#F2F3EE", "#926B40", "#A2774C", "#BF9469", "#9C7347", "#784F31", "#6A4027", "#643A24", "#6C4633", "#5D3C2B", "#2C1609", "#F2F3EE", "#6D452C", "#8E5D35", "#B47F49", "#D09E61", "#DDB67B", "#F6DAA8", "#D7C499", "#E5C384", "#BF9D5E", "#F2F3EE", "#F2F3EE"] }, { w: 8, n: "Darkness", v: ["#111", "#656463", s, "#333", s, "#000", "#454443", s, "#000", "#656463", "#313035"] }, { w: 1, n: "Oracle", v: [s, s, R.random_choice(["#4E6E61", "#365", "#4C3F5D", "#336", "#358", "#CCC", "#45A", "#576", "#5493B6", "#7AC", "#89292D", "#87A", "#8F3935", "#A33", "#B8513B", "#B78", "#C54", "#C95", "#D57C30", "#D94", "#DA9", "#C99", "#DEC254"]), AA, s] }] }; let w = {}; for (n in k) w[n] = function (A) { let I = []; return A.forEach((g, A) => { for (let A = 0; A < g.w; A++)I.push(g) }), R.random_choice(I) }(k[n]); 11 == w.chords.v && (w.song = a(k.song, "Expand")); for (let A = 0; A < w.pal.v.length; A++)w.pal.v[A] = H(w.pal.v[A]); pal = w.pal.v, palRand = []; for (let A = 0; A < w.cRep.v; A++)palRand = palRand.concat(pal); let u = []; palRand.forEach(A => { u.push(2 * R.random_dec() + 1) }), "Oracle" == w.pal.n && (s = (s = a(k.pal, "Oracle")).v[1], w.prophecy.v = s.replace("#", "")); for (let A = 0; A < w.pal.v.length; A++)w.pal.v[A] = H(w.pal.v[A]); console.table(w), -1 != navigator.userAgent.indexOf("Firefox") ? w.aspectMult = a(k.aspectMult, "Firefox") : w.aspectMult = a(k.aspectMult, "Regular"); let c = j(); console.log(tokenData.hash); let J, h = 0; let S = 0, U = 0, m = 0, gA = 0; let p = 900, M = 400, K = 400, d = [1.2, 1.4], y = [.9, .75], f = [1, 1], P = [1, 1], IA = [0, 10]; function CA(A, g = 0) {
return zoomView = `viewBox="0 0 ${c.max} ${c.max}"`, blur_base = .003, fix_blur_clip = 'x="-50%" y="-50%" width="200%" height="200%"', `
<svg xmlns="http://www.w3.org/2000/svg" width="${c.max}" height="${c.max}"
${zoomView}
stroke="black"
fill="black"
stroke-width="5"
>
<filter id="blurMultiple" ${fix_blur_clip}>
<feGaussianBlur stdDeviation="${r(c.min * blur_base * g)}"/>
</filter>
<g filter="url(#blurMultiple)" >
${A}
</g>
</svg>
`} function F() { return CA("") } function G(A = 20, g = 20, I = .1, C = .05, Q = .1, B = "white", o = 1, i = 0, E = 3, e = 360, t = !1) {
let a = `
<mask id="donut">
<rect width="100%" height="100%" fill="black" />
<circle r="${r(c.min * E)}" cx="${r(c.max / 2)}" cy="${r(c.max / 2, 5)}" fill="white" />
</mask>`; for (a += '<g mask="url(#donut)">', t && (a += l("rect", { width: "100%", height: "100%", fill: "black", "fill-opacity": 1 })), a += '<g id="ray" >', ray = l("line", { x1: r(c.max / 2, 5), y1: r(c.max / 2 + c.min * i, 5), x2: r(c.max / 2, 5), y2: r(c.max / 2 + c.min * E, 5), "stroke-width": r(c.min * I, 5), "stroke-opacity": Q / 2, stroke: B }), a += ray, idx = 1; idx < g; idx++)x1 = r(c.max / 2 - c.min * I, 5), y1 = r(c.max / 2 + c.min * idx / g, 5), x2 = r(c.max / 2 + c.min * I, 5), y2 = r(c.max / 2 + c.min * idx / g, 5), ray = l("line", { x1: x1, y1: y1, x2: x2, y2: y2, "stroke-width": r(c.min * C, 5), "stroke-opacity": Q, stroke: B }), a += ray; for (a += "</g>", idx = 1; idx < A; idx++)a += `<use href="#ray" transform="rotate(${r(idx / A * e)}, ${r(.5 * c.max)}, ${r(.5 * c.max)})"/>`; return CA(a += "</g>", o)
} [w.pal.v, palRgb] = $(palRand, u, w.cRep.v, o.positive_space_amt), (J = document.createElement("canvas")).id = "artwork", (gl = J.getContext("webgl", { antialias: !1, preserveDrawingBuffer: !0 })).getExtension("OES_standard_derivatives"); let QA = g => {
var A = `
#define PI 3.1415926538
#ifdef GL_OES_standard_derivatives
#extension GL_OES_standard_derivatives : enable
#endif
precision highp float;
uniform vec2 uR;
uniform float uT;
uniform float uTCM;
uniform float uFPS;
uniform bool uColorize;
uniform float uFadeA;
uniform float uFadeB;
uniform float uZoomA;
uniform float uZoomB;
uniform sampler2D texPal;
uniform sampler2D texA;
uniform sampler2D texB;
uniform sampler2D texC;
varying vec2 vTC;
float uTC = mod(floor(uT * 60./uFPS), 6531.)/6531.+uTCM;
float uTS = mod(floor(uT * 60./uFPS), 2000.)/2000.;
float map(float val, float start1, float stop1, float start2, float stop2) {
return ((val - start1) / (stop1 - start1)) * (stop2 - start2) + start2;
}
vec4 getSvg(vec2 uv, sampler2D tex) {
vec4 tx = texture2D(tex, vec2(uv.x, uv.y));
return tx;
}
vec3 colorize(vec2 uv, vec4 c) {
vec4 cOut = c;
float cBrightness = (c.r + c.g + c.b) / 3.;
float d = distance(uv, vec2(.0));
vec4 cMapped = texture2D(texPal, vec2(mod(cBrightness+uTC+${R.random_dec() + 1e-4}, 1.)));
cOut = mix(cMapped, vec4(.0), (c.r-c.b)*1.5);
float colorizeThreshold = 0.12;
if (cBrightness < colorizeThreshold) {
cOut = vec4(.1,.1,.1,1.);
}
return vec3(cOut.r, cOut.g, cOut.b);
}
float quadraticInOut(float t) {
float p = 2.0 * t * t;
return t < 0.5 ? p : -p + (4.0 * t) - 1.0;
}
vec2 zoomCos(vec2 uv, float amp, float phase_offset, float speed) {
return uv * (amp*cos(speed*2.*PI+2.*PI*phase_offset)+1.);
}
mat2 rot(float a){
a *= 2.*PI;
return mat2(cos(a), -sin(a), sin(a), cos(a));
}