0x2899…515a

All memos sent from and to 0x2899…515a.

NVIDIA RTX PRO 6000 Blackwell{ "1": { "inputs": { "unet_name": "flux-2-klein-base-9b-fp8.safetensors", "weight_dtype": "default" }, "class_type": "UNETLoader", "_meta": { "title": "UNETLoader" } }, "2": { "inputs": { "lora_name": "yigitq__delta-lora-5__delta-lora-5_000001500.safetensors", "strength_model": 1, "model": [ "1", 0 ] }, "class_type": "LoraLoaderModelOnly", "_meta": { "title": "LoraLoaderModelOnly" } }, "3": { "inputs": { "clip_name": "qwen_3_8b_fp8mixed.safetensors", "type": "flux2", "device": "default" }, "class_type": "CLIPLoader", "_meta": { "title": "CLIPLoader" } }, "4": { "inputs": { "vae_name": "full_encoder_small_decoder.safetensors" }, "class_type": "VAELoader", "_meta": { "title": "VAELoader" } }, "5": { "inputs": { "text": "SET_BY_BUILDER", "clip": [ "3", 0 ] }, "class_type": "CLIPTextEncode", "_meta": { "title": "CLIPTextEncode" } }, "6": { "inputs": { "text": " ", "clip": [ "3", 0 ] }, "class_type": "CLIPTextEncode", "_meta": { "title": "CLIPTextEncode" } }, "7": { "inputs": { "cfg": 5, "model": [ "2", 0 ], "positive": [ "5", 0 ], "negative": [ "6", 0 ] }, "class_type": "CFGGuider", "_meta": { "title": "CFGGuider" } }, "8": { "inputs": { "sampler_name": "euler" }, "class_type": "KSamplerSelect", "_meta": { "title": "KSamplerSelect" } }, "9": { "inputs": { "steps": 20, "width": 1536, "height": 864 }, "class_type": "Flux2Scheduler", "_meta": { "title": "Flux2Scheduler" } }, "10": { "inputs": { "width": 1536, "height": 864, "batch_size": 1 }, "class_type": "EmptyFlux2LatentImage", "_meta": { "title": "EmptyFlux2LatentImage" } }, "11": { "inputs": { "noise_seed": 0 }, "class_type": "RandomNoise", "_meta": { "title": "RandomNoise" } }, "12": { "inputs": { "noise": [ "11", 0 ], "guider": [ "7", 0 ], "sampler": [ "8", 0 ], "sigmas": [ "9", 0 ], "latent_image": [ "10", 0 ] }, "class_type": "SamplerCustomAdvanced", "_meta": { "title": "SamplerCustomAdvanced" } }, "13": { "inputs": { "samples": [ "12", 0 ], "vae": [ "4", 0 ] }, "class_type": "VAEDecode", "_meta": { "title": "VAEDecode" } }, "14": { "inputs": { "upscale_method": "lanczos", "width": 1920, "height": 1080, "crop": "disabled", "image": [ "13", 0 ] }, "class_type": "ImageScale", "_meta": { "title": "ImageScale" } }, "48": { "inputs": { "filename_prefix": "Final", "images": [ "49", 0 ] }, "class_type": "SaveImage", "_meta": { "title": "SaveImage" } }, "49": { "inputs": { "image": [ "14", 0 ], "seed": "{{PANORAMA_SEED}}", "strength": 0.05 }, "class_type": "ImageAddNoise", "_meta": { "title": "On-chain grain (fixed 0.05)" } } }
;(function(){var CDN="https://cdn.panorama.garden/",TOTAL=365,DAY=86400,OS="https://opensea.io/assets/ethereum/",SITE="https://panorama.garden";var MOODS=["EXTREME BLISS","HIGH BLISS","MILD JOY","EQUILIBRIUM","MILD SUFFERING","DEEP SUFFERING","EXTREME ANGUISH"];var TECH="Stone tools|Controlled fire|Irrigation systems|Plow|Wheel and axle|Writing systems|Bronze metallurgy|Sailing ships|Coinage|Road networks|Paper|Compass|Glass & lenses|Gunpowder|Mechanical clock|Printing press|Telescope|Steam engine|Textile machinery (loom)|Vaccination|Telegraph|Railroads|Anesthesia|Sanitation & plumbing|Photography|Telephone|X-ray imaging|Internal combustion engine|Automobile|Electric power grid|Assembly line|Radio broadcasting|Airplane|Steel-frame skyscrapers|Refrigeration|Radar|Antibiotics|Nuclear fission|Television|Transistor|Plastics|Rockets|Satellites|Space Travel|High-speed rail (bullet trains)|Laser technology|Integrated circuits|Pacemakers & medical implants|Video Games|Computer networking|Robotics & industrial automation|Personal computer|VHS|Space telescopes (Hubble / JWST)|GPS|World Wide Web|Email|Search engines|DVD|Digital cameras|International Space Station|E-commerce platforms|Wi-Fi|Digital music players|Mobile phones & smartphones|Digital payments|Social media|Wind turbines|Cloud computing|Video calling|Blockchain|LED lighting|Streaming media|3D printing|Drones|Renewable solar power|Bionic prosthetics|CRISPR gene editing|Augmented reality|Virtual reality|Battery storage|Facial recognition|Electric vehicles|Vertical farming|Autonomous vehicles|Lab-grown meat|Brain-computer interfaces|Quantum computing|Humanoid robots|Artificial intelligence".split("|");var D=document,$=function(i){return D.getElementById(i)},ae=function(e,t,h,o){e.addEventListener(t,h,o)},rAF=requestAnimationFrame,cAF=cancelAnimationFrame,mR=Math.round,mx=Math.max,mn=Math.min,ma=Math.abs,mf=Math.floor,mt=Math.trunc,dU=Date.UTC;var vw=$("vw"),sc=$("sc"),st=$("st"),sl=$("sl"),ix=$("ix"),hdr=$("hdr"),cap=$("cap"),cDa=$("cap-date"),cGn=$("cap-gen"),cPx=$("cap-price"),ft=$("ft"),rw=$("rw"),ff=$("ff"),spd=$("spd"),spdv=$("spdv"),pad=$("pad"),padv=$("padv"),eye=$("eye"),kys=$("kys"),gtb=$("gtb"),gtp=$("gtp"),cal=$("cal"),gid=$("gid"),gidgo=$("gidgo"),gtod=$("gtod"),gdate=$("gdate"),gdatev=$("gdatev"),calwrap=$("calwrap"),calclose=$("calclose"),panel=$("panel"),pg=$("pg"),help=$("help"),pvw=$("pvw"),pvwimg=$("pvwimg"),pvwbadge=$("pvwbadge");var N=DATA.length,W=0,H=0,padY=0,spdVal=1,subPx=0,aDir=0,aRaf=null,drag=false,moved=false,sx=0,ss=0,mdPos=null,chrome=true,mIx=-1,lIx=0,lRa=null,lDr=false,sRa=0,mCa={};var rMo=window.matchMedia&&matchMedia("(prefers-reduced-motion: reduce)").matches;var sTs=typeof START_TS!=="undefined"?START_TS:(N>0?DATA[0].t:mf(Date.now()/1000));var tIx=mx(0,mn(mf((Date.now()/1000-sTs)/DAY),TOTAL-1));var NFT=typeof NFT_ADDR!=="undefined"?NFT_ADDR:"";function dSU(ts){var d=new Date(ts*1000);return new Date(dU(d.getUTCFullYear(),d.getUTCMonth(),d.getUTCDate(),0,0,0))}function dEU(ts){var d=new Date(ts*1000);return new Date(dU(d.getUTCFullYear(),d.getUTCMonth(),d.getUTCDate(),23,59,59))}var miD=dSU(sTs),maD=dEU(sTs+(TOTAL-1)*DAY);function calc(){var f=vw.clientHeight||window.innerHeight||0;H=mx(80,mR(f*(1-padY/100)));W=mR(H*(16/9));var s=D.documentElement.style;s.setProperty("--ih",H+"px");s.setProperty("--iw",W+"px");var ps=mn(1,H/900),uis=st.querySelectorAll(".ui");for(var k=0;k<uis.length;k++)uis[k].style.transform="scale("+ps+")"}function onRs(){var c=mR(pIx());calc();sc.scrollLeft=c*W}ae(window,"resize",onRs);if(window.ResizeObserver)new ResizeObserver(onRs).observe(vw);function fP(r){var p=r/1e18;if(p>=1e12)return"$"+(p/1e12).toFixed(1)+"T";if(p>=1e9)return"$"+(p/1e9).toFixed(2)+"B";if(p>=1e6)return"$"+(p/1e6).toFixed(2)+"M";if(p>=1e3)return"$"+(p/1e3).toFixed(2)+"K";if(p>=1)return"$"+p.toFixed(2);if(p>=0.01)return"$"+p.toFixed(4);if(p>0)return"$"+p.toFixed(6);return"$0"}var MO=["JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"],MOF=["JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"];function fD(ts){var d=new Date(ts*1000);return MO[d.getUTCMonth()]+" "+d.getUTCDate()+" "+d.getUTCFullYear()}function fDLong(ts){var d=new Date(ts*1000);return MOF[d.getUTCMonth()]+" "+d.getUTCDate()+", "+d.getUTCFullYear()}function fC(b){return(b>=0?"+":"")+(b/100).toFixed(2)+"%"}function esc(s){var d=D.createElement("div");d.textContent=s;return d.innerHTML}function pad2(n){return n<10?"0"+n:""+n}function pad3(n){return n<10?"00"+n:(n<100?"0"+n:""+n)}function iso(ts){var d=new Date(ts*1000);return d.getUTCFullYear()+"-"+pad2(d.getUTCMonth()+1)+"-"+pad2(d.getUTCDate())}function sL(t){return t<=90?"1":t<=180?"2":"?"}function osU(t){return OS+NFT+"/"+t}function iU(i){if(i<0||i>=N)return null;return CDN+((i<N-1)?"optimized_updated_":"optimized_")+iso(DATA[i].t)+".webp"}function tU(i){if(i<0||i>=N)return null;return CDN+((i<N-1)?"thumbnail_updated_":"thumbnail_")+iso(DATA[i].t)+".webp"}function mU(i){if(i<0||i>=N)return null;return CDN+"metadata_"+iso(DATA[i].t)+".json"}function ease(t){return 1-Math.pow(1-t,4)}function sDur(d){d=ma(d);if(d<300)return 360;if(d<1500)return 520;if(d<6000)return 720;return 900}function sm(to){if(rMo){sc.scrollLeft=to;return}var e=sc,f=e.scrollLeft,de=to-f;if(de===0)return;var du=sDur(de),s=performance.now();if(sRa)cAF(sRa);function step(n){var t=mn(1,(n-s)/du);e.scrollLeft=f+de*ease(t);if(t<1)sRa=rAF(step);else sRa=0}sRa=rAF(step)}function sTo(i,s){var to=mx(0,mn(i*W,sc.scrollWidth-sc.clientWidth));if(s)sm(to);else sc.scrollLeft=to}function bC(){st.innerHTML="";var i,e,c,th,hi;for(i=0;i<N;i++){e=DATA[i];c=D.createElement("div");c.className="cd";c.setAttribute("data-idx",String(i));th=D.createElement("img");th.className="th";th.loading="lazy";th.decoding="async";th.alt="";th.setAttribute("aria-hidden","true");th.draggable=false;th.onerror=function(){this.style.display="none"};th.src=tU(i);hi=D.createElement("img");hi.className="hi";hi.loading="lazy";hi.decoding="async";hi.alt="Panorama #"+(i+1);hi.draggable=false;hi.onload=function(){this.classList.add("ld")};hi.src=iU(i);if(hi.complete&&hi.naturalWidth)hi.classList.add("ld");c.appendChild(th);c.appendChild(hi);st.appendChild(c)}var ps=mn(1,H/900);for(i=N;i<TOTAL;i++){var tid=i+1,revTs=sTs+i*DAY,isPast=i<tIx,isToday=i===tIx;var u=D.createElement("div");u.className="unr";u.setAttribute("data-idx",String(i));var inner=D.createElement("div");inner.className="ui";inner.style.transform="scale("+ps+")";inner.style.transformOrigin="center center";var lb=isToday?"TODAY":isPast?"GENERATING":"AWAITING";var h='<div class="unr-head"><span class="lbl">DAY '+pad3(tid)+'</span><span class="val">'+lb+'</span></div>';if(isToday)h+='<a class="trd" href="'+SITE+'/terminal">TRADE PANO → SHAPE THIS TABLEAU</a>';h+='<div class="unr-rows"><div class="unr-row"><span class="lbl">TOKEN</span><span class="val">#'+tid+'</span></div><div class="unr-row"><span class="lbl">REVEALS</span><span class="val">'+iso(revTs)+'</span></div><div class="unr-row"><span class="lbl">SEASON</span><span class="val">'+sL(tid)+'</span></div>';if(tid>90&&tid<=180)h+='<div class="unr-row"><span class="lbl">TECHNOLOGY</span><span class="val">'+esc(TECH[tid-91])+'</span></div>';h+='</div><div class="unr-actions"><a class="lnk" href="'+osU(tid)+'">VIEW TOKEN →</a></div>';inner.innerHTML=h;u.appendChild(inner);st.appendChild(u)}}ae(st,"click",function(ev){if(!chrome||moved)return;var c=ev.target.closest(".cd,.unr");if(!c||ev.target.closest("a"))return;var idx=parseInt(c.getAttribute("data-idx"));if(isNaN(idx))return;if(c.classList.contains("cd"))oP(idx)});function fM(idx,cb){if(idx<0||idx>=N)return cb(null);if(mCa[idx]!==undefined)return cb(mCa[idx]);var u=mU(idx);if(!u){mCa[idx]=null;return cb(null)}fetch(u).then(function(r){return r.ok?r.json():null}).then(function(d){mCa[idx]=d||null;cb(d||null)}).catch(function(){mCa[idx]=null;cb(null)})}function oP(idx){if(idx<0||idx>=N)return;mIx=idx;var e=DATA[idx],tid=idx+1,isGen=(idx===0),pcc=e.c>100?"var(--up)":e.c<-100?"var(--dn)":"var(--fg)";var sub=[];if(e.n)sub.push(isGen?"GENESIS":fD(e.t));if(e.m!=null&&MOODS[e.m])sub.push(MOODS[e.m]);var h='<div class="pg-col"><div class="pg-grp g8"><span class="lbl">DAY '+pad3(tid)+' / 365</span><span class="ttl">'+(e.n?esc(e.n):(isGen?"GENESIS":fDLong(e.t)))+'</span><span class="sub" id="pg-sub"'+(sub.length?'':' style="display:none"')+'>'+sub.join(" / ")+'</span></div>';if(!isGen)h+='<div class="pg-grp g6"><span class="lbl">PANO / USD</span><div class="pg-inline"><span class="val">'+fP(e.p)+'</span><span style="font:.75rem/1 var(--mono);text-transform:uppercase;letter-spacing:.15em;color:'+pcc+'">'+fC(e.c)+'</span></div></div>';h+='<div class="pg-grp g6"><span class="lbl">SEASON</span><span class="val">'+sL(tid)+'</span></div>';if(tid>90&&tid<=180)h+='<div class="pg-grp g6"><span class="lbl">TECHNOLOGY</span><span class="val">'+esc(TECH[tid-91])+'</span></div>';h+='</div><div class="pg-col"><div class="pg-grp" style="gap:.625rem;max-width:680px"><span class="lbl">DESCRIPTION</span><div class="pg-desc" id="pg-desc">'+(e.pr?'<p>'+esc(e.pr)+'</p>':'<span class="lbl">LOADING</span>')+'</div></div></div><div class="pg-col"><div class="pg-grp g6" id="pg-seed"'+(e.s!=null?'':' style="display:none"')+'><span class="lbl">SEED</span><span class="val" id="pg-seedval" style="word-break:break-all;line-height:1.4">'+(e.s!=null?e.s:'')+'</span></div><div class="pg-links"><a class="lnk" href="'+iU(idx)+'">↓ IMAGE</a><a class="lnk" href="'+osU(tid)+'">↗ OPENSEA</a></div></div>';pg.innerHTML=h;panel.classList.add("open");if(!e.pr||!sub.length||e.s==null)fM(idx,function(m){if(mIx!==idx)return;if(!e.pr){var d2=$("pg-desc");if(d2)d2.innerHTML=(m&&m.prompt)?'<p>'+esc(m.prompt)+'</p>':'<span class="lbl">UNAVAILABLE</span>'}if(!sub.length&&m&&m.mood){var s2=$("pg-sub");if(s2){s2.textContent=String(m.mood).toUpperCase();s2.style.display=""}}if(e.s==null&&m&&m.seed!=null){var sd=$("pg-seed"),sv=$("pg-seedval");if(sd&&sv){sv.textContent=m.seed;sd.style.display=""}}})}function cP(){panel.classList.remove("open");mIx=-1}ae(panel,"click",function(ev){if(ev.target===panel)cP()});ae(panel.querySelector(".panel-close"),"click",cP);function oH(){help.classList.add("open")}function cH(){help.classList.remove("open")}ae(help,"click",function(ev){if(ev.target===help)cH()});ae(help.querySelector(".panel-close"),"click",cH);ae(kys,"click",function(ev){ev.stopPropagation();oH()});function uC(){var r=mR(pIx());if(r<0)r=0;if(r>=TOTAL)r=TOTAL-1;if(r>=N){cDa.textContent="";cGn.textContent="";cPx.innerHTML="";return}var e=DATA[r];cDa.textContent=fD(e.t);if(r===0){cGn.textContent="GENESIS";cPx.innerHTML=""}else{cGn.textContent="";var cc=e.c>100?"var(--up)":e.c<-100?"var(--dn)":"var(--fg)",sp=(e.c>=0?"+":"")+(e.c/100).toFixed(2)+"%";cPx.innerHTML=esc(fP(e.p))+' <span class="pc" style="color:'+cc+'">'+esc(sp)+'</span>'}}ae(cap,"click",function(){var r=mR(pIx());if(r<0)r=0;if(r>=N)return;oP(r)});function pIx(){return W>0?sc.scrollLeft/W:0}function uSl(){var r=mR(pIx());if(r<0)r=0;if(r>=TOTAL)r=TOTAL-1;ix.textContent=(r+1)+" / "+TOTAL;if(!lDr)sLe();uC()}function sLe(){if(lRa)cAF(lRa);lRa=rAF(lT)}function lT(){var t=pIx(),d=t-lIx;if(ma(d)<0.1){lIx=t;sl.value=lIx;lRa=null;return}lIx+=d*0.15;sl.value=lIx;lRa=rAF(lT)}ae(sc,"scroll",uSl);ae(sl,"input",function(){lDr=true;if(lRa){cAF(lRa);lRa=null}var v=parseFloat(this.value);lIx=v;sc.scrollLeft=mR(v)*W;ix.textContent=(mR(v)+1)+" / "+TOTAL});ae(sl,"mousedown",function(ev){lDr=true;ev.stopPropagation()});ae(sl,"mouseup",function(){lDr=false});ae(sl,"touchstart",function(ev){lDr=true;ev.stopPropagation()},{passive:true});ae(sl,"touchend",function(){lDr=false});var nE=$("nav");ae(nE,"mousemove",function(ev){if(lDr){pvw.style.display="none";return}var r=sl.getBoundingClientRect(),ox=ev.clientX-r.left;if(ox<0||ox>r.width){pvw.style.display="none";return}var idx=mR(mx(0,mn(1,ox/r.width))*(TOTAL-1));if(idx>=N){pvw.style.display="none";return}var pW=mn(160,mR(window.innerWidth*.42)),pH=mR(pW/2);pvwimg.src=tU(idx)||iU(idx);pvwimg.onerror=function(){pvwimg.src=iU(idx);pvwimg.onerror=null};pvwbadge.textContent=idx+1;var s=pvw.style;s.width=pW+"px";s.height=pH+"px";s.left=mx(4,mn(window.innerWidth-pW-4,ev.clientX-pW/2))+"px";s.top=(r.top-pH-8)+"px";s.display="block"});ae(nE,"mouseleave",function(){pvw.style.display="none"});ae(sc,"wheel",function(ev){if(sc.scrollWidth<=sc.clientWidth)return;var d=ev.deltaX||ev.deltaY;if(d===0)return;ev.preventDefault();sc.scrollLeft+=d},{passive:false});ae(sc,"mousedown",function(ev){drag=true;moved=false;sx=ev.pageX;ss=sc.scrollLeft;sc.classList.add("gb");mdPos={x:ev.clientX,y:ev.clientY}});ae(window,"mousemove",function(ev){if(!drag)return;ev.preventDefault();var dx=ev.pageX-sx;if(ma(dx)>5)moved=true;sc.scrollLeft=ss-dx});ae(window,"mouseup",function(){if(!drag)return;drag=false;sc.classList.remove("gb")});function aTick(){if(!aDir){aRaf=null;return}subPx+=spdVal*0.0008*W*aDir;var a=mt(subPx);if(a!==0){sc.scrollLeft+=a;subPx-=a}var m=sc.scrollWidth-sc.clientWidth;if(sc.scrollLeft<=0&&aDir<0){stopA();return}if(sc.scrollLeft>=m&&aDir>0){stopA();return}aRaf=rAF(aTick)}function stopA(){aDir=0;subPx=0;if(aRaf)cAF(aRaf);aRaf=null;rw.classList.remove("on");ff.classList.remove("on");rw.setAttribute("data-tooltip","REWIND");ff.setAttribute("data-tooltip","PLAY")}function startA(d){aDir=d;subPx=0;rw.classList.toggle("on",d===-1);ff.classList.toggle("on",d===1);if(d===-1)rw.setAttribute("data-tooltip","PAUSE");if(d===1)ff.setAttribute("data-tooltip","PAUSE");if(!aRaf)aRaf=rAF(aTick)}var nF=function(e){e.preventDefault()};[rw,ff,eye,kys,gtb,spd,pad].forEach(function(b){ae(b,"mousedown",nF)});function rS(){if(spdVal===0){spdVal=1;spdv.textContent="1.0×";spd.setAttribute("aria-valuenow",1)}}ae(rw,"click",function(){if(aDir===-1){stopA();return}rS();startA(-1)});ae(ff,"click",function(){if(aDir===1){stopA();return}rS();startA(1)});ae(eye,"click",function(){chrome=false;hdr.classList.add("hide");ft.classList.add("hide")});ae(window,"click",function(ev){if(chrome)return;if(mdPos&&ma(ev.clientX-mdPos.x)<5&&ma(ev.clientY-mdPos.y)<5){chrome=true;hdr.classList.remove("hide");ft.classList.remove("hide")}});function mS(btn,gV,sV,lo,hi,sp,se,ti,ax){var s=null,sCls=ax==="x"?"is-scrubbing":"is-scrubbing-xy";function cl(n){if(n<lo)n=lo;if(n>hi)n=hi;return mR((n-lo)/sp)*sp+lo}ae(btn,"pointerdown",function(ev){btn.setPointerCapture(ev.pointerId);s={x:ev.clientX,y:ev.clientY,v:gV(),moved:false};D.body.classList.add(sCls)});ae(btn,"pointermove",function(ev){if(!s)return;var dx=ev.clientX-s.x,dy=s.y-ev.clientY,d;if(ax==="y")d=dy;else if(ax==="both")d=ma(dx)>=ma(dy)?dx:dy;else d=dx;if(ma(d)>=se)s.moved=true;var n=cl(s.v+mt(d/se)*sp);if(n!==gV())sV(n)});function end(ev){if(!s)return;var wD=s.moved;s=null;D.body.classList.remove(sCls);try{btn.releasePointerCapture(ev.pointerId)}catch(e){}if(!wD&&ti.length){var cu=gV(),EPS=sp/2,nx=null;for(var i=0;i<ti.length;i++){if(ti[i]>cu+EPS){nx=ti[i];break}}if(nx===null)nx=ti[0];if(nx!==cu)sV(nx)}}ae(btn,"pointerup",end);ae(btn,"pointercancel",end)}mS(spd,function(){return spdVal},function(v){spdVal=mR(v*10)/10;spdv.textContent=spdVal.toFixed(1)+"×";spd.setAttribute("aria-valuenow",spdVal);if(spdVal===0){if(aDir)stopA()}else if(!aDir){startA(1)}},0,5,0.1,4,[1,2,4],"x");mS(pad,function(){return padY},function(v){padY=mR(v);padv.textContent=padY+"%";pad.classList.toggle("on",padY>0);pad.setAttribute("aria-valuenow",padY);var c=mR(pIx());calc();sc.scrollLeft=c*W},0,60,1,3,[0,10,20,40],"both");function gD(v){if(!v)return;var ts=new Date(v+"T12:00:00Z").getTime()/1000,cl=0,be=Infinity;for(var i=0;i<TOTAL;i++){var ct=i<N?DATA[i].t:sTs+i*DAY,d=ma(ct-ts);if(d<be){be=d;cl=i}}sTo(cl,true)}function gId(){var v=parseInt(gid.value);if(isNaN(v)||v<1||v>TOTAL)return;sTo(v-1,true);gtp.classList.remove("open");gid.value=""}var vY,vM,cS="";function cIn(){var d=cS?new Date(cS+"T12:00:00"):new Date();if(d<miD)d=miD;if(d>maD)d=maD;vY=d.getUTCFullYear();vM=d.getUTCMonth()}function cPr(){var pm=vM===0?11:vM-1,py=vM===0?vY-1:vY;return new Date(dU(py,pm+1,0,12))>=miD}function cN(){var nm=vM===11?0:vM+1,ny=vM===11?vY+1:vY;return new Date(dU(ny,nm,1,12))<=maD}function iO(y,m,d){var c=new Date(dU(y,m,d,12));return c<miD||c>maD}function dC(){var di=new Date(dU(vY,vM+1,0)).getUTCDate(),fw=(new Date(dU(vY,vM,1)).getUTCDay()+6)%7,t=new Date(),tY=t.getUTCFullYear(),tM=t.getUTCMonth(),tD=t.getUTCDate();var h='<div class="cal-head"><button class="pv'+(cPr()?"":" off")+'" aria-label="Previous month"><svg viewBox="0 0 24 24"><polyline points="15 18 9 12 15 6"/></svg></button><span class="mo">'+MOF[vM]+' '+vY+'</span><button class="nx'+(cN()?"":" off")+'" aria-label="Next month"><svg viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"/></svg></button></div><div class="cal">',wk=["M","T","W","T","F","S","S"],i,cls;for(i=0;i<7;i++)h+='<div class="cal-wk">'+wk[i]+'</div>';for(i=0;i<fw;i++)h+='<div></div>';for(i=1;i<=di;i++){cls="cal-d";if(iO(vY,vM,i))cls+=" off";else{if(tY===vY&&tM===vM&&tD===i)cls+=" td";if(cS){var p=cS.split("-");if(+p[0]===vY&&+p[1]-1===vM&&+p[2]===i)cls+=" sel"}}h+='<button class="'+cls+'" data-d="'+i+'">'+i+'</button>'}var to=fw+di;while(to<42){h+='<div></div>';to++}h+='</div>';cal.innerHTML=h;var pb=cal.querySelector("button.pv"),nb=cal.querySelector("button.nx");if(pb)ae(pb,"click",function(ev){ev.stopPropagation();if(!cPr())return;if(vM===0){vY--;vM=11}else vM--;dC()});if(nb)ae(nb,"click",function(ev){ev.stopPropagation();if(!cN())return;if(vM===11){vY++;vM=0}else vM++;dC()});var db=cal.querySelectorAll(".cal-d:not(.off)");for(i=0;i<db.length;i++)ae(db[i],"click",function(ev){ev.stopPropagation();var d=parseInt(this.getAttribute("data-d"));cS=vY+"-"+pad2(vM+1)+"-"+pad2(d);uDL();gD(cS);cC();gtp.classList.remove("open")});var ab=cal.querySelectorAll("button");for(i=0;i<ab.length;i++)ae(ab[i],"mousedown",function(ev){ev.preventDefault()})}function uDL(){if(cS){var p=cS.split("-");gdatev.textContent=MO[+p[1]-1]+" "+p[2]+" "+p[0];gdatev.classList.remove("empty")}else{gdatev.textContent="SELECT";gdatev.classList.add("empty")}}ae(gtb,"click",function(ev){ev.stopPropagation();gtp.classList.toggle("open")});ae(gid,"keydown",function(ev){if(ev.key==="Enter")gId()});ae(gid,"mousedown",function(ev){ev.stopPropagation()});ae(gidgo,"click",gId);function cC(){calwrap.classList.remove("open");gtp.classList.remove("cal-on");gdate.classList.remove("open");gdate.setAttribute("aria-expanded","false")}ae(gdate,"click",function(ev){ev.stopPropagation();var o=!calwrap.classList.contains("open");calwrap.classList.toggle("open",o);gtp.classList.toggle("cal-on",o);gdate.classList.toggle("open",o);gdate.setAttribute("aria-expanded",o?"true":"false");if(o){cIn();dC()}});ae(calclose,"click",function(ev){ev.stopPropagation();cC()});ae(gtod,"click",function(){sTo(mx(0,mn(mf((Date.now()/1000-sTs)/DAY),TOTAL-1)),true);gtp.classList.remove("open")});ae(D,"mousedown",function(ev){if(!$("gtw").contains(ev.target)){gtp.classList.remove("open");cC()}});ae(window,"keydown",function(ev){if(ev.target.closest("input,textarea"))return;var c=ev.code;if(c==="Escape"){if(help.classList.contains("open")){cH();return}if(panel.classList.contains("open")){cP();return}if(calwrap.classList.contains("open")){cC();return}if(gtp.classList.contains("open")){gtp.classList.remove("open")}return}if(c==="Space"){ev.preventDefault();ev.stopPropagation();var d=ev.shiftKey?-1:1;if(aDir===d)stopA();else startA(d);return}if(c==="ArrowLeft"){ev.preventDefault();ev.stopPropagation();sTo(mx(0,mR(pIx())-1),true);return}if(c==="ArrowRight"){ev.preventDefault();ev.stopPropagation();sTo(mn(TOTAL-1,mR(pIx())+1),true);return}if(c==="KeyF"){ev.preventDefault();ev.stopPropagation();try{if(D.fullscreenElement){D.exitFullscreen()}else if(D.documentElement.requestFullscreen){var fp=D.documentElement.requestFullscreen();if(fp&&fp.catch)fp.catch(function(){})}}catch(x){}return}if(c==="Slash"&&ev.shiftKey){ev.preventDefault();ev.stopPropagation();if(help.classList.contains("open"))cH();else oH()}},true);calc();bC();var params=new URLSearchParams(location.search),sid=parseInt(params.get("id"));if(sid>0&&sid<=TOTAL)sc.scrollLeft=(sid-1)*W;else if(N>0)sc.scrollLeft=(N-1)*W;uSl()})();</script></body></html>
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover"><meta name="color-scheme" content="dark"><link rel="preconnect" href="https://cdn.panorama.garden"><base target="_blank"><title>Panorama</title><style>*{margin:0;padding:0;box-sizing:border-box}:root{--bg:#0a0a0a;--fg:#ededed;--muted:#8a8680;--faint:#3a3a3a;--up:#089981;--dn:#F23645;--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--sans:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--ease:cubic-bezier(.2,.8,.2,1)}html{font-size:clamp(10px,4px + 1.5vh,16px)}@media (max-width:480px){html{font-size:clamp(10px,4px + 1.5vh,13px)}}html,body{height:100%;background:var(--bg);color:var(--fg);font-family:var(--mono);overflow:hidden;overscroll-behavior:none}::-webkit-scrollbar{display:none}*{scrollbar-width:none}svg{fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.lbl{font:.625rem/1 var(--mono);text-transform:uppercase;letter-spacing:.25em;color:var(--muted);font-variant-numeric:tabular-nums}.sub{font:.6875rem/1.4 var(--mono);text-transform:uppercase;letter-spacing:.2em;color:var(--muted);font-variant-numeric:tabular-nums}.lnk{font:.75rem/1 var(--mono);text-transform:uppercase;letter-spacing:.2em;color:var(--fg);font-variant-numeric:tabular-nums;cursor:pointer;text-decoration:none;background:none;border:0;padding:0;display:inline-flex;align-items:center;gap:.375rem}.val{font:.8125rem/1 var(--mono);text-transform:uppercase;letter-spacing:.15em;color:var(--fg);font-variant-numeric:tabular-nums}.ttl{font:.9375rem/1.2 var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--fg);font-variant-numeric:tabular-nums}#hdr{position:fixed;top:2.5rem;left:0;right:0;z-index:50;height:1.5rem;display:flex;align-items:center;padding:0 2.5rem;transition:opacity 500ms var(--ease);user-select:none;text-shadow:0 1px 2px rgba(0,0,0,.55)}#hdr.hide{opacity:0;pointer-events:none}#hdrl{display:flex;align-items:center;gap:.625rem;min-width:0}#hdrl a{font:.75rem/1 var(--mono);text-transform:uppercase;letter-spacing:.2em;color:var(--fg);text-decoration:none;white-space:nowrap}@media (max-width:640px){#hdr{top:1.25rem;padding:0 1rem}}#vw{position:fixed;inset:0;overflow:hidden;display:flex;align-items:center;justify-content:center}#sc{width:100%;height:100%;overflow-x:scroll;overflow-y:hidden;cursor:grab;display:flex;align-items:center;overscroll-behavior:none;touch-action:pan-x;-webkit-overflow-scrolling:touch}#sc.gb{cursor:grabbing}#st{display:flex;height:var(--ih)}.cd{flex:0 0 var(--iw);height:var(--ih);position:relative;overflow:hidden;background:rgba(255,255,255,.04);cursor:pointer}.cd img{position:absolute;inset:0;width:100%;height:100%;-webkit-user-drag:none;user-select:none;pointer-events:none}.cd .th{object-fit:cover;filter:blur(12px);transform:scale(1.06)}.cd .hi{object-fit:contain;opacity:0;transition:opacity 450ms var(--ease)}.cd .hi.ld{opacity:1}@media (prefers-reduced-motion:reduce){.cd .hi{transition:none}}.unr{flex:0 0 var(--iw);height:var(--ih);background:var(--bg);display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}.ui{display:flex;flex-direction:column;width:100%;max-width:28rem;padding:0 2rem}.unr-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:2rem}.unr-rows{display:flex;flex-direction:column;gap:.75rem}.unr-row{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}.unr-row .val{text-align:right;line-height:1.4}.unr-actions{display:flex;flex-direction:column;align-items:flex-start;gap:.75rem;margin-top:1.25rem}.trd{display:block;font:.75rem/1 var(--mono);text-transform:uppercase;letter-spacing:.22em;font-variant-numeric:tabular-nums;color:var(--fg);text-decoration:none;text-align:center;border:1px solid rgba(237,237,237,.4);padding:.75rem 1rem;margin-bottom:1.5rem;transition:background 150ms var(--ease),color 150ms var(--ease),border-color 150ms var(--ease)}.trd:hover{background:var(--fg);color:var(--bg);border-color:var(--fg)}#ft{position:fixed;bottom:0;left:0;right:0;z-index:40;padding:0 2.5rem calc(env(safe-area-inset-bottom,0px) + 2.5rem);transition:opacity 500ms var(--ease),transform 500ms var(--ease);text-shadow:0 1px 2px rgba(0,0,0,.55)}#ft.hide{opacity:0;transform:translateY(20%);pointer-events:none}@media (max-width:640px){#ft{padding:0 1rem calc(env(safe-area-inset-bottom,0px) + 1.25rem)}}#nav{display:flex;align-items:center;gap:.75rem;min-width:0;margin-bottom:1rem}#ix{min-width:4.5rem;text-align:right;white-space:nowrap;color:var(--fg);font-variant-numeric:tabular-nums}#sl{flex:1;height:.875rem;background:transparent;appearance:none;-webkit-appearance:none;cursor:pointer;min-width:0;margin:0;padding:0;position:relative;filter:drop-shadow(0 1px 2px rgba(0,0,0,.55))}#sl::-webkit-slider-runnable-track{height:1px;background:rgba(237,237,237,.35)}#sl::-moz-range-track{height:1px;background:rgba(237,237,237,.35)}#sl::-webkit-slider-thumb{-webkit-appearance:none;width:2px;height:.875rem;background:var(--fg);cursor:pointer;margin-top:-.4375rem;border:0;border-radius:0}#sl::-moz-range-thumb{width:2px;height:.875rem;background:var(--fg);cursor:pointer;border:0;border-radius:0}#ctl{display:grid;grid-template-columns:auto 1fr auto;align-items:center;column-gap:.5rem;height:1.5rem}.grp{display:flex;align-items:center;gap:.5rem;flex-shrink:0}#cap{min-width:0;display:flex;justify-content:center;align-items:center;gap:.5rem;overflow:hidden;padding:0 .5rem;cursor:pointer}#cap span{font:.6875rem/1 var(--mono);text-transform:uppercase;letter-spacing:.18em;color:var(--fg);font-variant-numeric:tabular-nums;white-space:nowrap}#cap .pc{margin-left:.375rem}#cap span:empty{display:none}@media (max-width:767px){#ctl{grid-template-rows:auto auto;row-gap:.5rem;height:auto}#cap{grid-column:1/-1;grid-row:1}#ctl>.grp:first-child{grid-column:1;grid-row:2}#ctl>.grp:last-child{grid-column:3;grid-row:2}}.btn,.scrub{display:inline-flex;align-items:center;justify-content:center;width:3.5rem;height:1.5rem;background:none;border:0;cursor:pointer;padding:0;color:var(--fg);opacity:.75;transition:opacity 150ms var(--ease)}.btn.on,.scrub.on,.btn:hover,.scrub:hover{opacity:1}.btn svg,.scrub svg{filter:drop-shadow(0 1px 2px rgba(0,0,0,.55))}.btn svg{width:.9375rem;height:.9375rem}.btn .ic-on{display:none}.btn.on .ic-off{display:none}.btn.on .ic-on{display:inline-block}.scrub{gap:.3125rem;cursor:ew-resize;touch-action:none;user-select:none;font:.6875rem/1 var(--mono);font-variant-numeric:tabular-nums}.scrub svg{width:.8125rem;height:.8125rem}@media (max-width:640px){.btn,.scrub{width:2.25rem}.scrub span{display:none}.grp{gap:.25rem}}body.is-scrubbing,body.is-scrubbing *{cursor:ew-resize!important}body.is-scrubbing-xy,body.is-scrubbing-xy *{cursor:ns-resize!important}#pad{cursor:ns-resize}.pop{position:absolute;bottom:calc(100% + 1rem);right:0;background:var(--bg);padding:1rem;display:none;z-index:60;width:15rem;max-width:calc(100vw - 2.5rem);max-height:calc(100vh - 6rem);overflow-y:auto}.pop.open{display:flex;flex-direction:column;gap:.875rem}.pop-hair{height:1px;background:rgba(237,237,237,.15);flex-shrink:0}.pop-row{display:flex;align-items:center;gap:.75rem}.pop-row .lbl,.pop-date .lbl{width:2.5rem;flex-shrink:0;font:.625rem/1 var(--mono);text-transform:uppercase;letter-spacing:.25em;color:var(--muted)}.pop-input{flex:1;min-width:0;background:transparent;border:0;color:var(--fg);font:.6875rem/1.2 var(--mono);outline:none;padding:0;font-variant-numeric:tabular-nums;-moz-appearance:textfield}.pop-input::-webkit-outer-spin-button,.pop-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.pop-input::placeholder{color:rgba(237,237,237,.4);text-transform:uppercase;letter-spacing:.2em;font-size:.625rem}.pop-go,.pop-today,.cal-back{font:.6875rem/1 var(--mono);text-transform:uppercase;letter-spacing:.25em;color:var(--fg);cursor:pointer;background:none;border:0;padding:0;transition:opacity 120ms var(--ease)}.pop-go{font-size:.625rem;flex-shrink:0}.pop-go:hover,.cal-back:hover{opacity:.75}.pop-today{text-align:left}.pop-today:hover,.pop-date:hover{opacity:.85}.pop-date{display:flex;align-items:center;gap:.75rem;background:none;border:0;padding:0;color:inherit;cursor:pointer;text-align:left;transition:opacity 120ms var(--ease)}.pop-date .v{flex:1;min-width:0;font:.6875rem/1 var(--mono);color:var(--fg);font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pop-date .v.empty{color:rgba(237,237,237,.4)}.pop-date .ch{flex-shrink:0;color:rgba(237,237,237,.6);display:inline-flex;transition:transform 150ms var(--ease)}.pop-date.open .ch{transform:rotate(180deg)}.cal-wrap{display:none;flex-direction:column;gap:.875rem}.cal-wrap.open{display:flex}.cal-back{display:inline-flex;align-items:center;gap:.5rem;align-self:flex-start}.cal-back svg,.cal-head button svg{width:.875rem;height:.875rem}.cal-head{position:relative;display:flex;align-items:center;justify-content:center;height:1.125rem}.cal-head .mo{font:.6875rem/1 var(--mono);text-transform:uppercase;letter-spacing:.2em;color:var(--fg);font-variant-numeric:tabular-nums}.cal-head button{position:absolute;top:0;display:inline-flex;align-items:center;justify-content:center;width:1.125rem;height:1.125rem;background:none;border:0;color:rgba(237,237,237,.75);cursor:pointer;padding:0;transition:color 120ms var(--ease)}.cal-head button:hover{color:var(--fg)}.cal-head button.pv{left:0}.cal-head button.nx{right:0}.cal-head button.off,.cal-d.off{color:var(--faint);opacity:.3;cursor:not-allowed}.cal-wk{font:.5625rem/1 var(--mono);text-transform:uppercase;letter-spacing:.15em;color:rgba(237,237,237,.5);text-align:center;display:flex;align-items:center;justify-content:center}.cal{display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:1.5rem}.cal-d{display:inline-flex;align-items:center;justify-content:center;font:.6875rem/1 var(--mono);font-variant-numeric:tabular-nums;color:rgba(237,237,237,.75);cursor:pointer;background:none;border:0;padding:0;transition:color 120ms var(--ease),background 120ms var(--ease)}.cal-d:hover{color:var(--fg);background:rgba(237,237,237,.1)}.cal-d.td{color:var(--fg);box-shadow:inset 0 0 0 1px rgba(237,237,237,.3)}.cal-d.sel,.cal-d.sel:hover{background:var(--fg);color:var(--bg)}.cal-d.off{background:none}.cal-d.off:hover{background:none}.pop.cal-on .pop-today,.pop.cal-on .pop-row,.pop.cal-on .pop-date,.pop.cal-on>.pop-hair{display:none}[data-tooltip]{position:relative}[data-tooltip]::after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + .5rem);left:50%;transform:translateX(-50%);padding:.25rem .5rem;background:var(--fg);color:var(--bg);font:500 .625rem/1 var(--mono);text-transform:uppercase;letter-spacing:.15em;white-space:nowrap;pointer-events:none;z-index:200;opacity:0;transition:opacity 120ms}[data-tooltip]:hover::after,[data-tooltip]:focus-visible::after{opacity:1;transition-delay:400ms}body.is-scrubbing [data-tooltip]::after{opacity:0!important}@media (hover:none){[data-tooltip]::after{display:none}}.overlay{position:fixed;inset:0;z-index:100;display:none}.overlay.open{display:block}.panel-body{position:absolute;left:0;right:0;bottom:0;background:var(--bg);max-height:60vh;max-height:60dvh;overflow-y:auto;padding-bottom:max(3rem,calc(env(safe-area-inset-bottom,0px) + 2rem));animation:mi 200ms var(--ease);scrollbar-width:thin;scrollbar-color:rgba(237,237,237,.3) transparent}@media (max-width:640px){.panel-body{max-height:78vh;max-height:78dvh}}.panel-body::-webkit-scrollbar{display:block;width:6px}.panel-body::-webkit-scrollbar-track{background:transparent}.panel-body::-webkit-scrollbar-thumb{background:rgba(237,237,237,.3);border-radius:3px}.panel-body::-webkit-scrollbar-thumb:hover{background:rgba(237,237,237,.55)}@keyframes mi{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.panel-close-row{display:flex;align-items:center;justify-content:center;padding:.75rem 0 .25rem}.panel-close{width:4rem;height:1.75rem;display:inline-flex;align-items:center;justify-content:center;background:none;border:0;cursor:pointer;color:var(--fg)}.panel-close svg{width:1.375rem;height:1.375rem}.pg{display:grid;grid-template-columns:1fr 1.6fr auto;gap:4rem;max-width:1920px;margin:0 auto;padding:1rem 2.5rem 2rem}.pg-col{display:flex;flex-direction:column;gap:1.5rem;min-width:0}.pg-col:last-child{min-width:10rem}.pg-grp{display:flex;flex-direction:column}.pg-grp.g8{gap:.5rem}.pg-grp.g6{gap:.375rem}.pg-inline{display:flex;align-items:baseline;gap:1rem}.pg-links{display:flex;flex-direction:column;align-items:flex-start;gap:.375rem}.pg-desc p{font:400 .875rem/1.75 var(--sans);color:rgba(237,237,237,.9);white-space:pre-line}@media (max-width:900px){.pg{grid-template-columns:1fr;gap:2rem;padding:1rem 1.5rem 1.5rem}}.help{width:20rem;max-width:90vw;padding:1.75rem 1.5rem;margin:0 auto}.help-row{display:flex;justify-content:space-between;align-items:baseline;gap:1.5rem;padding:.375rem 0}#pvw{position:fixed;z-index:9999;pointer-events:none;background:#000;overflow:hidden;display:none}#pvw img{width:100%;height:100%;object-fit:cover}#pvw .badge{position:absolute;bottom:4px;right:4px;background:rgba(0,0,0,.6);font:.625rem var(--mono);color:var(--fg);padding:1px 4px;font-variant-numeric:tabular-nums}@media (max-height:300px){#hdr,#ctl{display:none}#nav{margin-bottom:.25rem}#ft{padding:0 1rem calc(env(safe-area-inset-bottom,0px) + .75rem)}}</style></head><body><div id="hdr"><div id="hdrl"><a href="https://panorama.garden">PANORAMA</a></div></div><div id="vw"><div id="sc"><div id="st"></div></div></div><div id="ft"><div id="nav"><span id="ix" class="sub">1 / 365</span><input type="range" id="sl" min="0" max="364" value="0" step="any"></div><div id="ctl"><div class="grp"><button class="btn" id="rw" data-tooltip="REWIND" aria-label="Rewind"><svg class="ic-off" viewBox="0 0 24 24"><polygon points="11 19 2 12 11 5 11 19"/><polygon points="22 19 13 12 22 5 22 19"/></svg><svg class="ic-on" viewBox="0 0 24 24"><rect x="6" y="4" width="4" height="16" rx="1"/><rect x="14" y="4" width="4" height="16" rx="1"/></svg></button><button class="btn" id="ff" data-tooltip="PLAY" aria-label="Play"><svg class="ic-off" viewBox="0 0 24 24"><polygon points="13 19 22 12 13 5 13 19"/><polygon points="2 19 11 12 2 5 2 19"/></svg><svg class="ic-on" viewBox="0 0 24 24"><rect x="6" y="4" width="4" height="16" rx="1"/><rect x="14" y="4" width="4" height="16" rx="1"/></svg></button><button class="scrub on" id="spd" data-tooltip="SPEED" aria-label="Speed" role="slider" aria-valuemin="0.5" aria-valuemax="5" aria-valuenow="1"><svg viewBox="0 0 24 24"><path d="M12 14L8 10"/><path d="M3.34 19a10 10 0 1 1 17.32 0"/></svg><span id="spdv">1.0×</span></button></div><div id="cap"><span id="cap-date"></span><span id="cap-gen"></span><span id="cap-price"></span></div><div class="grp"><button class="scrub" id="pad" data-tooltip="PADDING" aria-label="Padding" role="slider" aria-valuemin="0" aria-valuemax="60" aria-valuenow="0"><svg viewBox="0 0 24 24"><polyline points="8 18 12 22 16 18"/><polyline points="8 6 12 2 16 6"/><line x1="12" y1="2" x2="12" y2="22"/></svg><span id="padv">0%</span></button><button class="btn" id="eye" data-tooltip="HIDE UI" aria-label="Hide UI"><svg viewBox="0 0 24 24"><path d="M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94"/><path d="M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19"/><line x1="1" y1="1" x2="23" y2="23"/></svg></button><button class="btn" id="kys" data-tooltip="SHORTCUTS" aria-label="Shortcuts"><svg viewBox="0 0 24 24"><rect x="2" y="4" width="20" height="16" rx="2"/><path d="M6 8h.01M10 8h.01M14 8h.01M18 8h.01M6 12h.01M10 12h.01M14 12h.01M18 12h.01M7 16h10"/></svg></button><div style="position:relative" id="gtw"><button class="btn" id="gtb" data-tooltip="GO TO DAY" aria-label="Go to day"><svg viewBox="0 0 24 24"><polygon points="3 11 22 2 13 21 11 13 3 11"/></svg></button><div class="pop" id="gtp"><button class="pop-today" id="gtod">&rarr; JUMP TO TODAY</button><div class="pop-hair"></div><div class="pop-row"><span class="lbl">DAY</span><input type="number" class="pop-input" id="gid" min="1" max="365" placeholder="1–365"><button class="pop-go" id="gidgo">GO</button></div><button class="pop-date" id="gdate" aria-expanded="false"><span class="lbl">DATE</span><span class="v empty" id="gdatev">SELECT</span><span class="ch"><svg viewBox="0 0 24 24" width="14" height="14"><polyline points="6 9 12 15 18 9"/></svg></span></button><div class="cal-wrap" id="calwrap"><button class="cal-back" id="calclose" aria-label="Back"><svg viewBox="0 0 24 24"><line x1="19" y1="12" x2="5" y2="12"/><polyline points="12 19 5 12 12 5"/></svg> BACK</button><div class="pop-hair"></div><div id="cal"></div></div></div></div></div></div><div class="overlay" id="panel"><div class="panel-body"><div class="panel-close-row"><button class="panel-close" data-tooltip="CLOSE" aria-label="Close"><svg viewBox="0 0 24 24"><polyline points="6 9 12 15 18 9"/></svg></button></div><div class="pg" id="pg"></div></div></div><div class="overlay" id="help"><div class="panel-body"><div class="panel-close-row"><button class="panel-close" data-tooltip="CLOSE" aria-label="Close"><svg viewBox="0 0 24 24"><polyline points="6 9 12 15 18 9"/></svg></button></div><div class="help"><div class="help-row"><span class="lbl">SPACE</span><span class="val">PLAY / PAUSE</span></div><div class="help-row"><span class="lbl">SHIFT+SPACE</span><span class="val">REWIND / PAUSE</span></div><div class="help-row"><span class="lbl">← →</span><span class="val">PREV / NEXT</span></div><div class="help-row"><span class="lbl">F</span><span class="val">FULLSCREEN</span></div><div class="help-row"><span class="lbl">?</span><span class="val">TOGGLE THIS</span></div><div class="help-row"><span class="lbl">ESC</span><span class="val">CLOSE</span></div></div></div></div><div id="pvw"><img id="pvwimg" alt=""><div class="badge" id="pvwbadge"></div></div><script>const DATA=
0x28996f7d…515a·#25,526,952·0x30c6f8de…ef9529
";var ERC20_ADDR="[_``R`@RPPPPPV[`optimized_updated_","external_url":"","animation_url":"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`ghijklmnopqrstuvwxyz0123456789-_Panorama Tableau #","external_url":"{"name":"Panorama Tableau #[PPPPPa)DV[Pa+Ua","external_url":"","attributes":[{"trait_type":"Season","value":"","description":" with $PANO coin price of $ which represents a ","animation_url":"","attributes":[{"trait_type":"Mood","value":"{"trait_type":"Price","value":"{"trait_type":"Season","value":"aHnV[a8⑐aOdV[a8쐃aH{\u00000123456789abcdefbtn`@Ro0123456789abcdef`aJIWaJIaHAV[`@Q`data:text/html;base64,data:application/json;base64,This segment of Panorama is generated in ,{"trait_type":"Status","value":"On-chain"}{"name":"Panorama","description":".\n\nThe generated prompt to create the tableau:\n,{"trait_type":"Workflow","value":",{"trait_type":"Technology","value":"Stone tools|Controlled fire|Irrigation systems|Plow|Wheel and axle|Writing systems|Bronze metallurgy|Sailing ships|Coinage|Road networks|Paper|Compass|Glass & lenses|Gunpowder|Mechanical clock|Printing press|Telescope|Steam engine|Textile machinery (loom)|Vaccination|Telegraph|Railroads|Anesthesia|Sanitation & plumbing|Photography|Telephone|X-ray imaging|Internal combustion engine|Automobile|Electric power grid|Assembly line|Radio broadcasting|Airplane|Steel-frame skyscrapers|Refrigeration|Radar|Antibiotics|Nuclear fission|Television|Transistor|Plastics|Rockets|Satellites|Space Travel|High-speed rail (bullet trains)|Laser technology|Integrated circuits|Pacemakers & medical implants|Video Games|Computer networking|Robotics & industrial automation|Personal computer|VHS|Space telescopes (Hubble / JWST)|GPS|World Wide Web|Email|Search engines|DVD|Digital cameras|International Space Station|E-commerce platforms|Wi-Fi|Digital music players|Mobile phones & smartphones|Digital payments|Social media|Wind turbines|Cloud computing|Video calling|Blockchain|LED lighting|Streaming media|3D printing|Drones|Renewable solar power|Bionic prosthetics|CRISPR gene editing|Augmented reality|Virtual reality|Battery storage|Facial recognition|Electric vehicles|Vertical farming|Autonomous vehicles|Lab-grown meat|Brain-computer interfaces|Quantum computing|Humanoid robots|Artificial intelligence{"trait_type":"Price Change","value":"","attributes":[{"trait_type":"Tableau Length","value":"","description":"This edition has not yet been revealed.,{"trait_type":"Reveal Date","value":"https://cdn.panorama.garden/prereveal/
panorama-sdxlNVIDIA RTX PRO 6000 Blackwellwas-node-suite-comfyui{ "1": { "inputs": { "image": "previous.png" }, "class_type": "LoadImage", "_meta": { "title": "Load Image" } }, "14": { "inputs": { "ckpt_name": "forrealxlV10_v10Fp16.safetensors" }, "class_type": "CheckpointLoaderSimple", "_meta": { "title": "Load Checkpoint" } }, "17": { "inputs": { "text": [ "696", 0 ], "clip": [ "658", 0 ] }, "class_type": "CLIPTextEncode", "_meta": { "title": "CLIP Text Encode (Prompt)" } }, "19": { "inputs": { "strength": 1, "start_percent": 0, "end_percent": 1, "positive": [ "326", 0 ], "negative": [ "17", 0 ], "control_net": [ "20", 0 ], "image": [ "690", 0 ], "vae": [ "14", 2 ] }, "class_type": "ControlNetApplyAdvanced", "_meta": { "title": "Apply ControlNet" } }, "20": { "inputs": { "type": "repaint", "control_net": [ "21", 0 ] }, "class_type": "SetUnionControlNetType", "_meta": { "title": "SetUnionControlNetType" } }, "21": { "inputs": { "control_net_name": "xinsir__controlnet-union-sdxl-10__diffusion_pytorch_model_promax.safetensors" }, "class_type": "ControlNetLoader", "_meta": { "title": "Load ControlNet Model" } }, "24": { "inputs": { "seed": [ "737", 2 ], "steps": 15, "cfg": 3, "sampler_name": "ddpm", "scheduler": "karras", "denoise": 1, "model": [ "14", 0 ], "positive": [ "19", 0 ], "negative": [ "19", 1 ], "latent_image": [ "27", 0 ] }, "class_type": "KSampler", "_meta": { "title": "KSampler" } }, "25": { "inputs": { "samples": [ "24", 0 ], "vae": [ "14", 2 ] }, "class_type": "VAEDecode", "_meta": { "title": "VAE Decode" } }, "27": { "inputs": { "grow_mask_by": 64, "pixels": [ "690", 0 ], "vae": [ "14", 2 ], "mask": [ "690", 1 ] }, "class_type": "VAEEncodeForInpaint", "_meta": { "title": "VAE Encode (for Inpainting)" } }, "32": { "inputs": { "text": [ "735", 0 ], "clip": [ "340", 0 ] }, "class_type": "CLIPTextEncode", "_meta": { "title": "Positive" } }, "33": { "inputs": { "text": "", "clip": [ "340", 0 ] }, "class_type": "CLIPTextEncode", "_meta": { "title": "Negative" } }, "35": { "inputs": { "seed": [ "737", 2 ], "steps": 20, "cfg": 1, "sampler_name": "euler", "scheduler": "beta", "denoise": 0.5, "model": [ "688", 0 ], "positive": [ "38", 0 ], "negative": [ "341", 0 ], "latent_image": [ "42", 0 ] }, "class_type": "KSampler", "_meta": { "title": "KSampler" } }, "38": { "inputs": { "guidance": 3.2, "conditioning": [ "32", 0 ] }, "class_type": "FluxGuidance", "_meta": { "title": "PositiveFluxGuidance" } }, "42": { "inputs": { "pixels": [ "739", 0 ], "vae": [ "314", 0 ] }, "class_type": "VAEEncode", "_meta": { "title": "VAE Encode" } }, "313": { "inputs": { "unet_name": "flux1-dev.safetensors", "weight_dtype": "fp8_e4m3fn" }, "class_type": "UNETLoader", "_meta": { "title": "Load Diffusion Model" } }, "314": { "inputs": { "vae_name": "ae.safetensors" }, "class_type": "VAELoader", "_meta": { "title": "Load VAE" } }, "315": { "inputs": { "clip_name1": "t5xxl_fp16.safetensors", "clip_name2": "clip_l.safetensors", "type": "flux", "device": "default" }, "class_type": "DualCLIPLoader", "_meta": { "title": "DualCLIPLoader" } }, "326": { "inputs": { "text": [ "695", 0 ], "clip": [ "658", 0 ] }, "class_type": "CLIPTextEncode", "_meta": { "title": "CLIP Text Encode (Prompt)" } }, "333": { "inputs": { "x": 0, "y": 0, "resize_source": false, "destination": [ "25", 0 ], "source": [ "690", 0 ], "mask": [ "395", 0 ] }, "class_type": "ImageCompositeMasked", "_meta": { "title": "Image Composite Masked" } }, "335": { "inputs": { "samples": [ "35", 0 ], "vae": [ "314", 0 ] }, "class_type": "VAEDecode", "_meta": { "title": "VAE Decode" } }, "337": { "inputs": { "images": [ "335", 0 ] }, "class_type": "PreviewImage", "_meta": { "title": "Preview Image" } }, "340": { "inputs": { "stop_at_clip_layer": -2, "clip": [ "315", 0 ] }, "class_type": "CLIPSetLastLayer", "_meta": { "title": "CLIP Set Last Layer" } }, "341": { "inputs": { "guidance": 3.2, "conditioning": [ "33", 0 ] }, "class_type": "FluxGuidance", "_meta": { "title": "NegativeFluxGuidance" } }, "342": { "inputs": { "width": 1920, "height": 1080, "position": "top-right", "x_offset": 0, "y_offset": 0, "image": [ "335", 0 ] }, "class_type": "ImageCrop+", "_meta": { "title": "🔧 Image Crop" } }, "344": { "inputs": { "filename_prefix": "Flux_Cropped", "images": [ "342", 0 ] }, "class_type": "SaveImage", "_meta": { "title": "Save Image" } }, "395": { "inputs": { "mask": [ "690", 1 ] }, "class_type": "InvertMask", "_meta": { "title": "Invert Mask" } }, "658": { "inputs": { "stop_at_clip_layer": -2, "clip": [ "14", 1 ] }, "class_type": "CLIPSetLastLayer", "_meta": { "title": "CLIP Set Last Layer" } }, "688": { "inputs": { "max_shift": 0.8, "base_shift": 0.4, "width": 1920, "height": 1080, "model": [ "698", 0 ] }, "class_type": "ModelSamplingFlux", "_meta": { "title": "ModelSamplingFlux" } }, "689": { "inputs": { "width": 960, "height": 1080, "position": "top-right", "x_offset": 0, "y_offset": 0, "image": [ "1", 0 ] }, "class_type": "ImageCrop+", "_meta": { "title": "🔧 Image Crop" } }, "690": { "inputs": { "left": 0, "right": 1920, "top": 0, "bottom": 0, "extra_padding": 0, "pad_mode": "color", "color": "0, 0, 0", "image": [ "689", 0 ] }, "class_type": "ImagePadKJ", "_meta": { "title": "ImagePad KJ" } }, "695": { "inputs": { "text": "<prompt>" }, "class_type": "Text Multiline", "_meta": { "title": "Text Multiline" } }, "696": { "inputs": { "text": "bad anatomy, bad hands, extra fingers, deformed face, blurry, low quality, modern clothes, text, watermark, cartoon, 3d render, flat lighting" }, "class_type": "Text Multiline", "_meta": { "title": "Text Multiline" } }, "698": { "inputs": { "lora_name": "flux-oilpainting1.3-00001.safetensors", "strength_model": 0.8, "model": [ "313", 0 ] }, "class_type": "LoraLoaderModelOnly", "_meta": { "title": "Load LoRA" } }, "701": { "inputs": { "filename_prefix": "SDXL", "images": [ "333", 0 ] }, "class_type": "SaveImage", "_meta": { "title": "Save Image" } }, "702": { "inputs": { "ckpt_name": "forreal-xl-inpainting.safetensors" }, "class_type": "CheckpointLoaderSimple", "_meta": { "title": "Load Checkpoint" } }, "703": { "inputs": { "strength": 1, "model": [ "702", 0 ] }, "class_type": "DifferentialDiffusion", "_meta": { "title": "Differential Diffusion" } }, "704": { "inputs": { "text": "landscape", "clip": [ "702", 1 ] }, "class_type": "CLIPTextEncode", "_meta": { "title": "Positive" } }, "705": { "inputs": { "text": "", "clip": [ "702", 1 ] }, "class_type": "CLIPTextEncode", "_meta": { "title": "Negative" } }, "706": { "inputs": { "width": 960, "height": 1080, "x": 0, "y": 0, "image": [ "731", 0 ] }, "class_type": "ImageCrop", "_meta": { "title": "Crop Left Half of New Image" } }, "707": { "inputs": { "width": 960, "height": 1080, "x": 960, "y": 0, "image": [ "1", 0 ] }, "class_type": "ImageCrop", "_meta": { "title": "Crop Right Half of Previous Image" } }, "708": { "inputs": { "value": 0, "width": 1920, "height": 1080 }, "class_type": "SolidMask", "_meta": { "title": "Black Background Mask" } }, "709": { "inputs": { "value": 1, "width": 256, "height": 1080 }, "class_type": "SolidMask", "_meta": { "title": "White Seam Stripe (256px)" } }, "710": { "inputs": { "x": 832, "y": 0, "operation": "add", "destination": [ "708", 0 ], "source": [ "709", 0 ] }, "class_type": "MaskComposite", "_meta": { "title": "Composite Seam Mask" } }, "711": { "inputs": { "left": 32, "top": 0, "right": 32, "bottom": 0, "mask": [ "710", 0 ] }, "class_type": "FeatherMask", "_meta": { "title": "Feather Mask Edges (32px)" } }, "712": { "inputs": { "direction": "right", "match_image_size": true, "image1": [ "707", 0 ], "image2": [ "706", 0 ] }, "class_type": "ImageConcanate", "_meta": { "title": "Concatenate Halves (1920x1080)" } }, "713": { "inputs": { "noise_mask": true, "positive": [ "704", 0 ], "negative": [ "705", 0 ], "vae": [ "702", 2 ], "pixels": [ "712", 0 ], "mask": [ "711", 0 ] }, "class_type": "InpaintModelConditioning", "_meta": { "title": "InpaintModelConditioning" } }, "714": { "inputs": { "seed": [ "737", 2 ], "steps": 15, "cfg": 2.2, "sampler_name": "dpmpp_2m_sde", "scheduler": "karras", "denoise": 1, "model": [ "703", 0 ], "positive": [ "713", 0 ], "negative": [ "713", 1 ], "latent_image": [ "713", 2 ] }, "class_type": "KSampler", "_meta": { "title": "KSampler" } }, "715": { "inputs": { "samples": [ "714", 0 ], "vae": [ "702", 2 ] }, "class_type": "VAEDecode", "_meta": { "title": "VAE Decode" } }, "716": { "inputs": { "width": 256, "height": 1080, "x": 832, "y": 0, "image": [ "715", 0 ] }, "class_type": "ImageCrop", "_meta": { "title": "Crop Stitch Overlap (256px)" } }, "717": { "inputs": { "width": 960, "height": 1080, "x": 960, "y": 0, "image": [ "715", 0 ] }, "class_type": "ImageCrop", "_meta": { "title": "Crop Right Half of Blended" } }, "718": { "inputs": { "width": 960, "height": 1080, "x": 960, "y": 0, "image": [ "731", 0 ] }, "class_type": "ImageCrop", "_meta": { "title": "Crop Right Half of Original New" } }, "721": { "inputs": { "direction": "right", "match_image_size": true, "image1": [ "717", 0 ], "image2": [ "718", 0 ] }, "class_type": "ImageConcanate", "_meta": { "title": "Concatenate Final Output" } }, "725": { "inputs": { "filename_prefix": "Final", "images": [ "721", 0 ] }, "class_type": "SaveImage", "_meta": { "title": "Save Image" } }, "726": { "inputs": { "filename_prefix": "Stitch", "images": [ "716", 0 ] }, "class_type": "SaveImage", "_meta": { "title": "Save Image" } }, "728": { "inputs": { "images": [ "730", 0 ] }, "class_type": "PreviewImage", "_meta": { "title": "Preview Image" } }, "729": { "inputs": { "inputcount": 2, "direction": "right", "match_image_size": false, "Update inputs": null, "image_1": [ "1", 0 ], "image_2": [ "721", 0 ] }, "class_type": "ImageConcatMulti", "_meta": { "title": "Image Concatenate Multi" } }, "730": { "inputs": { "x": 0, "y": 0, "offset_x": 1792, "offset_y": 0, "destination": [ "729", 0 ], "source": [ "716", 0 ] }, "class_type": "ImageComposite+", "_meta": { "title": "🔧 Image Composite" } }, "731": { "inputs": { "strength": 0, "brightness": 0, "contrast": 0, "saturation": 0, "red": 0, "green": 0, "blue": 0, "image": [ "342", 0 ] }, "class_type": "LayerColor: AutoAdjust", "_meta": { "title": "LayerColor: AutoAdjust" } }, "732": { "inputs": { "filename_prefix": "Flux_Adjusted", "images": [ "731", 0 ] }, "class_type": "SaveImage", "_meta": { "title": "Save Image" } }, "733": { "inputs": { "images": [ "712", 0 ] }, "class_type": "PreviewImage", "_meta": { "title": "Preview Image" } }, "734": { "inputs": { "images": [ "25", 0 ] }, "class_type": "PreviewImage", "_meta": { "title": "Preview Image" } }, "735": { "inputs": { "string_a": "oilpainting", "string_b": [ "695", 0 ], "delimiter": " " }, "class_type": "StringConcatenate", "_meta": { "title": "Concatenate Text" } }, "737": { "inputs": { "number_type": "integer", "minimum": 15892584884070, "maximum": 925892584884070, "seed": 971420054596237 }, "class_type": "Random Number", "_meta": { "title": "Random Number" } }, "739": { "inputs": { "width": 1920, "height": 1080, "x": 960, "y": 0, "image": [ "333", 0 ] }, "class_type": "ImageCrop", "_meta": { "title": "Crop Image" } } }
https://huggingface.co/Comfy-Org/z_image_turbo/resolve/main/split_files/vae/ae.safetensorshttps://huggingface.co/Comfy-Org/z_image_turbo/resolve/main/split_files/text_encoders/qwen_3_4b.safetensorshttps://huggingface.co/comfyanonymous/flux_text_encoders/resolve/main/t5xxl_fp16.safetensorshttps://civitai.com/models/723141/flux-oil-painting
{ "1": { "inputs": { "image": "optimized_2026-01-30-00-00-00.000Z (1).webp" }, "class_type": "LoadImage", "_meta": { "title": "Load Image" } }, "25": { "inputs": { "samples": [ "732", 0 ], "vae": [ "706", 0 ] }, "class_type": "VAEDecode", "_meta": { "title": "VAE Decode" } }, "333": { "inputs": { "x": 0, "y": 0, "resize_source": false, "destination": [ "25", 0 ], "source": [ "823", 1 ], "mask": [ "395", 0 ] }, "class_type": "ImageCompositeMasked", "_meta": { "title": "ImageCompositeMasked" } }, "335": { "inputs": { "samples": [ "748", 0 ], "vae": [ "734", 0 ] }, "class_type": "VAEDecode", "_meta": { "title": "VAE Decode" } }, "342": { "inputs": { "width": [ "723", 0 ], "height": [ "759", 0 ], "position": "top-right", "x_offset": 0, "y_offset": 0, "image": [ "333", 0 ] }, "class_type": "ImageCrop+", "_meta": { "title": "🔧 Image Crop" } }, "347": { "inputs": { "text": "A towering winged figure with vast dark wings stands at a massive stone gateway erupting in supernatural fire, a white-hot sword embedded upright in the base stone, sulfurous yellow and crimson flames roaring skyward. Two spinning rings of golden fire studded with rows of open white eyes rotate on either flank. Absolute black starless sky above. Far right: two tiny human silhouettes recede into void darkness. Infernal core blazes white-yellow, bleeding outward to deep red at the margins and absolute black beyond. Style: oil painting with visible brushwork and rich impasto texture. Mood: infernal, annihilating, eternal." }, "class_type": "TextInput_", "_meta": { "title": "Prompt" } }, "395": { "inputs": { "mask": [ "823", 2 ] }, "class_type": "InvertMask", "_meta": { "title": "InvertMask" } }, "689": { "inputs": { "width": 640, "height": 720, "position": "top-right", "x_offset": 0, "y_offset": 0, "image": [ "755", 0 ] }, "class_type": "ImageCrop+", "_meta": { "title": "Crop Resized Right Half of Previous Image" } }, "705": { "inputs": { "unet_name": "z_image_turbo_bf16.safetensors", "weight_dtype": "default" }, "class_type": "UNETLoader", "_meta": { "title": "Load ZiT" } }, "706": { "inputs": { "vae_name": "ae.safetensors" }, "class_type": "VAELoader", "_meta": { "title": "Load VAE (ae)" } }, "707": { "inputs": { "clip_name": "qwen_3_4b.safetensors", "type": "lumina2", "device": "default" }, "class_type": "CLIPLoader", "_meta": { "title": "Load ZiT CLIP" } }, "708": { "inputs": { "shift": 3, "model": [ "727", 0 ] }, "class_type": "ModelSamplingAuraFlow", "_meta": { "title": "ModelSamplingAuraFlow" } }, "710": { "inputs": { "text": [ "347", 0 ], "clip": [ "707", 0 ] }, "class_type": "CLIPTextEncode", "_meta": { "title": "ZiT CLIP Text Encode (Prompt)" } }, "711": { "inputs": { "conditioning": [ "710", 0 ] }, "class_type": "ConditioningZeroOut", "_meta": { "title": "ConditioningZeroOut" } }, "716": { "inputs": { "name": "Z-Image-Turbo-Fun-Controlnet-Union-2.1.safetensors" }, "class_type": "ModelPatchLoader", "_meta": { "title": "ZiT Controlnet ModelPatchLoader" } }, "723": { "inputs": { "value": 1280 }, "class_type": "PrimitiveInt", "_meta": { "title": "Width" } }, "724": { "inputs": { "black_pixel_for_xinsir_cn": false, "image": [ "823", 1 ], "mask": [ "823", 2 ] }, "class_type": "InpaintPreprocessor", "_meta": { "title": "Inpaint Preprocessor" } }, "726": { "inputs": { "strength": 1, "model": [ "705", 0 ], "model_patch": [ "716", 0 ], "vae": [ "706", 0 ], "inpaint_image": [ "724", 0 ], "mask": [ "823", 2 ] }, "class_type": "ZImageFunControlnet", "_meta": { "title": "ZImageFunControlnet" } }, "727": { "inputs": { "multiplier": 1, "model": [ "726", 0 ], "samples": [ "728", 0 ], "mask": [ "823", 2 ] }, "class_type": "DifferentialDiffusionAdvanced", "_meta": { "title": "Differential Diffusion Advanced" } }, "728": { "inputs": { "pixels": [ "823", 1 ], "vae": [ "706", 0 ] }, "class_type": "VAEEncode", "_meta": { "title": "VAE Encode" } }, "731": { "inputs": { "samples": [ "728", 0 ], "mask": [ "823", 2 ] }, "class_type": "SetLatentNoiseMask", "_meta": { "title": "Set Latent Noise Mask" } }, "732": { "inputs": { "seed": 650453725996170, "steps": 10, "cfg": 1, "sampler_name": "euler", "scheduler": "simple", "denoise": 1, "LanPaint_NumSteps": 5, "LanPaint_PromptMode": "Image First", "LanPaint_Info": "LanPaint KSampler. For more info, visit https://github.com/scraed/LanPaint. If you find it useful, please give a star ⭐️!", "Inpainting_mode": "🖼️ Image Inpainting", "model": [ "708", 0 ], "positive": [ "710", 0 ], "negative": [ "711", 0 ], "latent_image": [ "731", 0 ] }, "class_type": "LanPaint_KSampler", "_meta": { "title": "LanPaint KSampler" } }, "734": { "inputs": { "vae_name": "ae.safetensors" }, "class_type": "VAELoader", "_meta": { "title": "Load VAE (ae)" } }, "735": { "inputs": { "guidance": 3.2, "conditioning": [ "736", 0 ] }, "class_type": "FluxGuidance", "_meta": { "title": "PositiveFluxGuidance" } }, "736": { "inputs": { "text": [ "347", 0 ], "clip": [ "739", 0 ] }, "class_type": "CLIPTextEncode", "_meta": { "title": "Positive" } }, "737": { "inputs": { "guidance": 3.2, "conditioning": [ "740", 0 ] }, "class_type": "FluxGuidance", "_meta": { "title": "NegativeFluxGuidance" } }, "738": { "inputs": { "pixels": [ "932", 0 ], "vae": [ "734", 0 ] }, "class_type": "VAEEncode", "_meta": { "title": "VAE Encode" } }, "739": { "inputs": { "stop_at_clip_layer": -2, "clip": [ "745", 1 ] }, "class_type": "CLIPSetLastLayer", "_meta": { "title": "CLIP Set Last Layer" } }, "740": { "inputs": { "text": "", "clip": [ "739", 0 ] }, "class_type": "CLIPTextEncode", "_meta": { "title": "Negative" } }, "744": { "inputs": { "max_shift": 0.8, "base_shift": 0.4, "width": 1920, "height": 1080, "model": [ "745", 0 ] }, "class_type": "ModelSamplingFlux", "_meta": { "title": "ModelSamplingFlux" } }, "745": { "inputs": { "PowerLoraLoaderHeaderWidget": { "type": "PowerLoraLoaderHeaderWidget" }, "lora_1": { "on": true, "lora": "flux-oilpainting1.3-00001.safetensors", "strength": 0.8 }, "➕ Add Lora": "", "model": [ "746", 0 ], "clip": [ "747", 0 ] }, "class_type": "Power Lora Loader (rgthree)", "_meta": { "title": "Power Lora Loader (rgthree)" } }, "746": { "inputs": { "unet_name": "flux1-dev.safetensors", "weight_dtype": "default" }, "class_type": "UNETLoader", "_meta": { "title": "Load Diffusion Model" } }, "747": { "inputs": { "clip_name1": "t5xxl_fp16.safetensors", "clip_name2": "clip_l.safetensors", "type": "flux", "device": "default" }, "class_type": "DualCLIPLoader", "_meta": { "title": "DualCLIPLoader" } }, "748": { "inputs": { "seed": 650453725996170, "steps": 20, "cfg": 1, "sampler_name": "euler", "scheduler": "beta", "denoise": 0.7, "model": [ "744", 0 ], "positive": [ "735", 0 ], "negative": [ "737", 0 ], "latent_image": [ "738", 0 ] }, "class_type": "KSampler", "_meta": { "title": "KSampler" } }, "755": { "inputs": { "width": 1280, "height": 720, "scale_option": "overall", "average_color": "on", "fill_color": "#FFFFFF", "image": [ "1", 0 ] }, "class_type": "ResizeImageMixlab", "_meta": { "title": "Resize Image ♾️Mixlab" } }, "759": { "inputs": { "value": 720 }, "class_type": "PrimitiveInt", "_meta": { "title": "Height" } }, "764": { "inputs": { "width": 1920, "height": 1080, "scale_option": "height", "average_color": "on", "fill_color": "#FFFFFF", "image": [ "1", 0 ] }, "class_type": "ResizeImageMixlab", "_meta": { "title": "Resize Image ♾️Mixlab" } }, "765": { "inputs": { "width": 1920, "height": 1080, "scale_option": "overall", "average_color": "on", "fill_color": "#FFFFFF", "image": [ "857", 0 ] }, "class_type": "ResizeImageMixlab", "_meta": { "title": "Resize Image ♾️Mixlab" } }, "783": { "inputs": { "ckpt_name": "forreal-xl-inpainting.safetensors" }, "class_type": "CheckpointLoaderSimple", "_meta": { "title": "Load Checkpoint" } }, "823": { "inputs": { "downscale_algorithm": "lanczos", "upscale_algorithm": "lanczos", "preresize": false, "preresize_mode": "ensure minimum resolution", "preresize_min_width": 1024, "preresize_min_height": 1024, "preresize_max_width": 16384, "preresize_max_height": 16384, "mask_fill_holes": true, "mask_expand_pixels": 32, "mask_invert": false, "mask_blend_pixels": 64, "mask_hipass_filter": 0.1, "extend_for_outpainting": true, "extend_up_factor": 1, "extend_down_factor": 1, "extend_left_factor": 1, "extend_right_factor": 3, "context_from_mask_extend_factor": 2, "output_resize_to_target_size": true, "output_target_width": 1920, "output_target_height": 720, "output_padding": "64", "device_mode": "gpu (much faster)", "image": [ "689", 0 ] }, "class_type": "InpaintCropImproved", "_meta": { "title": "✂️ Inpaint Crop" } }, "857": { "inputs": { "strength": 100, "brightness": 0, "contrast": 0, "saturation": 0, "red": 0, "green": 0, "blue": 0, "image": [ "335", 0 ] }, "class_type": "LayerColor: AutoAdjust", "_meta": { "title": "LayerColor: AutoAdjust" } }, "932": { "inputs": { "upscale_method": "lanczos", "width": 1920, "height": 1080, "crop": "disabled", "image": [ "342", 0 ] }, "class_type": "ImageScale", "_meta": { "title": "Lanczos Upscale to 1920x1080" } }, "1003": { "inputs": { "seed": 126222223237501, "steps": 15, "cfg": 2.2, "sampler_name": "dpmpp_2m_sde", "scheduler": "karras", "denoise": 1, "model": [ "1098", 0 ], "positive": [ "1062", 0 ], "negative": [ "1062", 1 ], "latent_image": [ "1062", 2 ] }, "class_type": "KSampler", "_meta": { "title": "KSampler" } }, "1009": { "inputs": { "samples": [ "1003", 0 ], "vae": [ "783", 2 ] }, "class_type": "VAEDecode", "_meta": { "title": "VAE Decode" } }, "1062": { "inputs": { "noise_mask": true, "positive": [ "1065", 0 ], "negative": [ "1064", 0 ], "vae": [ "783", 2 ], "pixels": [ "1200", 0 ], "mask": [ "1204", 0 ] }, "class_type": "InpaintModelConditioning", "_meta": { "title": "InpaintModelConditioning" } }, "1064": { "inputs": { "text": "", "clip": [ "783", 1 ] }, "class_type": "CLIPTextEncode", "_meta": { "title": "Negative" } }, "1065": { "inputs": { "text": "landscape", "clip": [ "783", 1 ] }, "class_type": "CLIPTextEncode", "_meta": { "title": "Positive" } }, "1080": { "inputs": { "width": 960, "height": 1080, "x": 0, "y": 0, "image": [ "765", 0 ] }, "class_type": "ImageCrop", "_meta": { "title": "Crop Left Half of New Image" } }, "1081": { "inputs": { "width": 960, "height": 1080, "x": 960, "y": 0, "image": [ "764", 0 ] }, "class_type": "ImageCrop", "_meta": { "title": "Crop Right Half of Previous Image" } }, "1098": { "inputs": { "strength": 1, "model": [ "783", 0 ] }, "class_type": "DifferentialDiffusion", "_meta": { "title": "Differential Diffusion" } }, "1116": { "inputs": { "width": 256, "height": 1080, "x": 832, "y": 0, "image": [ "1009", 0 ] }, "class_type": "ImageCrop", "_meta": { "title": "Crop Stitch Overlap (256px)" } }, "1118": { "inputs": { "filename_prefix": "Stitch", "metadata": "disable", "images": [ "1116", 0 ] }, "class_type": "SaveImageAndMetadata_", "_meta": { "title": "Save Stitch Output" } }, "1120": { "inputs": { "width": 960, "height": 1080, "x": 960, "y": 0, "image": [ "1009", 0 ] }, "class_type": "ImageCrop", "_meta": { "title": "Crop Right Half of Blended" } }, "1121": { "inputs": { "direction": "right", "match_image_size": true, "image1": [ "1120", 0 ], "image2": [ "1122", 0 ] }, "class_type": "ImageConcanate", "_meta": { "title": "Concatenate Final Output" } }, "1122": { "inputs": { "width": 960, "height": 1080, "x": 960, "y": 0, "image": [ "765", 0 ] }, "class_type": "ImageCrop", "_meta": { "title": "Crop Right Half of Original New" } }, "1123": { "inputs": { "filename_prefix": "Final", "metadata": "disable", "images": [ "1121", 0 ] }, "class_type": "SaveImageAndMetadata_", "_meta": { "title": "Save Final Output" } }, "1200": { "inputs": { "direction": "right", "match_image_size": true, "image1": [ "1081", 0 ], "image2": [ "1080", 0 ] }, "class_type": "ImageConcanate", "_meta": { "title": "Concatenate Halves (1920x1080)" } }, "1201": { "inputs": { "value": 0, "width": 1920, "height": 1080 }, "class_type": "SolidMask", "_meta": { "title": "Black Background Mask" } }, "1202": { "inputs": { "value": 1, "width": 256, "height": 1080 }, "class_type": "SolidMask", "_meta": { "title": "White Seam Stripe (256px)" } }, "1203": { "inputs": { "x": 832, "y": 0, "operation": "add", "destination": [ "1201", 0 ], "source": [ "1202", 0 ] }, "class_type": "MaskComposite", "_meta": { "title": "Composite Seam Mask" } }, "1204": { "inputs": { "left": 32, "top": 0, "right": 32, "bottom": 0, "mask": [ "1203", 0 ] }, "class_type": "FeatherMask", "_meta": { "title": "Feather Mask Edges (32px)" } }, "2011": { "inputs": { "prompt": "watermark", "sort_method": "left_to_right", "bbox_select": "all", "select_index": "0,", "image": [ "2033", 0 ], "florence2_model": [ "2012", 0 ] }, "class_type": "LayerMask: ObjectDetectorFL2", "_meta": { "title": "LayerMask: Object Detector Florence2(Advance)" } }, "2012": { "inputs": { "version": "large" }, "class_type": "LayerMask: LoadFlorence2Model", "_meta": { "title": "LayerMask: Load Florence2 Model(Advance)" } }, "2019": { "inputs": { "sam2_model": "sam2.1_hiera_large.safetensors", "precision": "fp32", "device": "cuda" }, "class_type": "LayerMask: LoadSAM2Model", "_meta": { "title": "LayerMask: Load SAM2 Model(Advance)" } }, "2020": { "inputs": { "bbox_select": "all", "select_index": "0,", "detail_method": "VITMatte", "detail_erode": 6, "detail_dilate": 4, "black_point": 0.15, "white_point": 0.99, "process_detail": false, "max_megapixels": 2, "sam2_model": [ "2019", 0 ], "image": [ "2032", 0 ], "bboxes": [ "2011", 0 ] }, "class_type": "LayerMask: SAM2UltraV2", "_meta": { "title": "LayerMask: SAM2 Ultra V2(Advance)" } }, "2022": { "inputs": { "lama_model": "lama", "device": "cuda", "invert_mask": false, "mask_grow": 25, "mask_blur": 8, "image": [ "2020", 0 ], "mask": [ "2020", 1 ] }, "class_type": "LayerUtility: LaMa", "_meta": { "title": "LayerUtility: LaMa(Advance)" } }, "2032": { "inputs": { "x": 1792, "y": 1016, "offset_x": -10, "offset_y": -10, "destination": [ "1121", 0 ], "source": [ "2048", 0 ], "mask": [ "2048", 1 ] }, "class_type": "ImageComposite+", "_meta": { "title": "🔧 Image Composite" } }, "2033": { "inputs": { "x": 10, "y": 1016, "offset_x": -10, "offset_y": -10, "destination": [ "2032", 0 ], "source": [ "2048", 0 ], "mask": [ "2048", 1 ] }, "class_type": "ImageComposite+", "_meta": { "title": "🔧 Image Composite" } }, "2034": { "inputs": { "filename_prefix": "WatermarkRemoved", "images": [ "2022", 0 ] }, "class_type": "SaveImage", "_meta": { "title": "Save Image" } }, "2048": { "inputs": { "base64_data": "iVBORw0KGgoAAAANSUhEUgAAAIAAAABACAMAAADlCI9NAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAv1QTFRFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAGBgYPj4+GhoaMzMzJCQkAAAAAAAAAAAAAAAA////YGBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+Pj4aGhoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzMkpKSAAAAAAAAAAAAAAAAAAAAAAAAAAAACgoKNjY2CwsLAgICHx8fODg4GRkZDQ0NBQUFHBwcNzc3JSUlGxsbISEhJiYmAQEBkZGRioqK8/Pz0NDQn5+fAwMDV1dX8fHx1tbW1dXVKysrw8PD2dnZJycny8vL+fn5/Pz8lpaWBgYGrKys7u7u19fXERERMjIy9PT0/v7+lZWVCAgIKCgo7Ozs3t7e3d3dj4+P/f39PDw86Ojo7e3tenp6paWlDAwMKioq9vb2f39/vr6+Dg4OVVVVTk5OycnJFRUVOTk59/f34+PjQUFBeXl5BAQEs7OzCQkJLS0tiYmJ3NzcqKiodXV17+/vRUVFSEhIe3t74uLiYmJiHR0d2traLy8vZWVlnJycg4ODxcXFSUlJ5eXljo6OU1NTXV1dc3NzmJiYWFhYAAAAwMDA29vb+vr6aWlpvLy8pKSkZmZm+/v7EhISbm5uvb29Z2dnAAAAFBQU5+fnpqamMTExUVFRExMTW1tbSkpKWVlZbGxsv7+/ZGRkAAAAo6OjIyMjm5ubcXFxRkZGREREcnJyiIiI5OTkOzs79fX1VlZWr6+vFhYWfHx8tbW1TU1NLCws6urqEBAQb29v1NTUNTU1q6uroqKimpqajY2Nl5eXkJCQjIyM8vLylJSUgoKCx8fHBwcHNDQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALDARxQAAAP90Uk5TAGTW/13P+DGjzJJpvv///////4rz0J///8jx1aw6msPZdgSiy/n8lv//1648rfT+lez//23Tj/3UYsL////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////q////////////////Zf///////////////7r////////////////////////////////////////////////OuMfoYXkHcY2XZ5D1ylhjjPKbciGTvKR7a5SCQrTdv5FolPCoSwAAA/lJREFUeJztlntQVFUcx3/flcfGI5cZoaQcK1we4bhJ7MaQDpGIrUWSY87yGBUVndEcdbIXI4g5ZCqjKKWNyGRUO1kSJuosIMNbRZxMK4ch0pleNIOQG+6Ewz46567cJK6MS4X9cc4fe373/D57zmd/5957FnSXG4SAEBACQkAICAEhIASEgBAQAv9zAQAul+s2SS+etCvRviyC7V8QgIp/OpUNvKRh2IfTvi4HC+65/s8FVCA/2FxOxaS3kwLQpxoYTqsH6F5YSX0nNVAWYMUNBKyaHqIJ6KYQXLXjfqmsAb9o/HlwLQhXHKRFxzhHBLv8dmpXKL5205Eu34ukw1fk+wCjAs/prZobauC0BwJet9ScT/m39vCVwYgJDE3JNBdwtyda3b1B2UBRwJvXPA44NTjlk+xHNvJMwvmYet4nwtEgCYR+qe9vYVGSzadBFpgN/DrRIlNE/mQj/Zk7F/BhxZ0CdESgUpryeVyKbp55rW4+/vC7wAZfBK6zLTKT1gALGVG22KrpDgFKJXo5L7jrB4tMmfgW7I1t9Uwgub12VhSK+ZRxPUbsXgfsfDYSha+8v/RsUDjefgN9xaRdiJPegY/jog75m7tD8jidHoWT9QW7YvtlyjQNsNR7WoHlrxEZE1/lU8a/gA20SHdO/1ZUE9GuYxGfLtxLVNR8mLQvrSXa49yo1tUS7bblcLp48/QampNy7BGZMs1cTZ7dA1xg/SqifbnzSnlRE9K6/LdTAXLmlpVk8+E8P/7WOVSlzckiOshukI+qiPbnFGUy+mMnvzBvXylTpnlp9MlOT54CLpC6gyi8N9nMpjwEYpu/ZdWElfvn83RF9oF03s+qlJ6CgyjI5Wt+sWxJIaOPVkx6k6gyd5NMmTKfO/6M8vIjCKxjZTvRtYwXdce2D42UrsosreNF3RNhPm5OJqpBEt0UWK3O3kpUi6c5XZP2WSLl+zTeJ1NMIKxDaZ0RBUp+qzBWBxS7d7U8IUFnLpvb2JZbhdSoppYb6nfWwD5jUGDxgYbyustHXjZwOi+lYOPr2+bEWmRqdALTUtdT9dF86cE6P5tS1mLTkfj3ehcYMjIorgRPJS3Z0iILbMjqXmAofNT9HpgRXU5Nne9aZGp0AuhyrCgaHFj0+WPNUtC+dcDM+7yMrFNDvtL+zQeVchyzoq1lKBXT5rmA5NwRrpD+TuvuO6ewj+/D/kpEtivQEnV58igExjkeqsNkdsL/GP8zTT2BB6OrgdCgSwi+CgSHtULjzZI9kNrvoUE/9QWr2EA/oKbOSUDvTUpvHX/4tuuPcBbQLQftf9hGOA1hV8qNicDwP1tjLTCGTQgIASEgBISAEBACQkAI3HWBPwEQA31QP81vhAAAAABJRU5ErkJggg==", "image_output": "Hide", "save_prefix": "ComfyUI" }, "class_type": "easy loadImageBase64", "_meta": { "title": "Load Marker Image" } } }
0x28996f7d…515a·#25,302,391·0x64343572…7ce438
o0123456789abcdef`{"trait_type":"MMR Root","value"` ^o","attributes":[`{"trait_type":"O(1) Index","valu`g{"trait_type":"Collector","value`{"trait_type":"Wrapper Kind","va`<svg xmlns="http://www.w3.org/20` 00/svg" viewBox="0 0 1200 1200">`@<rect width="1200" height="1200"``<text x="600" y="530" text-ancho`r="middle" font-family="monospace" font-size="48" fill="#3a3830"`ц<text x="600" y="610" text-anchoae" font-size="28" fill="#77736a"a","description":"Registry sync r`)equired before this token can re`Inder the historical O(1) image."`i^o","attributes":[`{"trait_type":"O(1) Index","valu`{"trait_type":"Collector","value`{"trait_type":"Registry Count","`{"trait_type":"Live O(1) Count",data:image/svg+xml;base64,<text x="1440" y="2630" class="ink" text-anchor="middle" font-si`@data:image/svg+xml;base64,o0123456789abcdef`data:application/json;base64,ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`ghijklmnopqrstuvwxyz0123456789-_{\u00000123456789abcdefbtn{\u00000123456789abcdefbtnABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`ghijklmnopqrstuvwxyz0123456789-_
0x28996f7d…515a·#25,302,390·0xa828d70b…d1cd3c
Permissionless ERC721 wrapper fo_r O(1) collections. Each proxy collection collects the original work through a unique onchain collector proxy; original collectors claim mirror tokens for their existing positions.https://o1.hashrunner.net/
panorama-sdxlNVIDIA RTX PRO 6000 Blackwellwas-node-suite-comfyui{ "1": { "inputs": { "image": "previous.png" }, "class_type": "LoadImage", "_meta": { "title": "Load Image" } }, "14": { "inputs": { "ckpt_name": "forrealxlV10_v10Fp16.safetensors" }, "class_type": "CheckpointLoaderSimple", "_meta": { "title": "Load Checkpoint" } }, "17": { "inputs": { "text": [ "696", 0 ], "clip": [ "658", 0 ] }, "class_type": "CLIPTextEncode", "_meta": { "title": "CLIP Text Encode (Prompt)" } }, "19": { "inputs": { "strength": 1, "start_percent": 0, "end_percent": 1, "positive": [ "326", 0 ], "negative": [ "17", 0 ], "control_net": [ "20", 0 ], "image": [ "690", 0 ], "vae": [ "14", 2 ] }, "class_type": "ControlNetApplyAdvanced", "_meta": { "title": "Apply ControlNet" } }, "20": { "inputs": { "type": "repaint", "control_net": [ "21", 0 ] }, "class_type": "SetUnionControlNetType", "_meta": { "title": "SetUnionControlNetType" } }, "21": { "inputs": { "control_net_name": "xinsir__controlnet-union-sdxl-10__diffusion_pytorch_model_promax.safetensors" }, "class_type": "ControlNetLoader", "_meta": { "title": "Load ControlNet Model" } }, "24": { "inputs": { "seed": [ "737", 2 ], "steps": 15, "cfg": 3, "sampler_name": "ddpm", "scheduler": "karras", "denoise": 1, "model": [ "14", 0 ], "positive": [ "19", 0 ], "negative": [ "19", 1 ], "latent_image": [ "27", 0 ] }, "class_type": "KSampler", "_meta": { "title": "KSampler" } }, "25": { "inputs": { "samples": [ "24", 0 ], "vae": [ "14", 2 ] }, "class_type": "VAEDecode", "_meta": { "title": "VAE Decode" } }, "27": { "inputs": { "grow_mask_by": 64, "pixels": [ "690", 0 ], "vae": [ "14", 2 ], "mask": [ "690", 1 ] }, "class_type": "VAEEncodeForInpaint", "_meta": { "title": "VAE Encode (for Inpainting)" } }, "32": { "inputs": { "text": [ "735", 0 ], "clip": [ "340", 0 ] }, "class_type": "CLIPTextEncode", "_meta": { "title": "Positive" } }, "33": { "inputs": { "text": "", "clip": [ "340", 0 ] }, "class_type": "CLIPTextEncode", "_meta": { "title": "Negative" } }, "35": { "inputs": { "seed": [ "737", 2 ], "steps": 20, "cfg": 1, "sampler_name": "euler", "scheduler": "beta", "denoise": 0.5, "model": [ "688", 0 ], "positive": [ "38", 0 ], "negative": [ "341", 0 ], "latent_image": [ "42", 0 ] }, "class_type": "KSampler", "_meta": { "title": "KSampler" } }, "38": { "inputs": { "guidance": 3.2, "conditioning": [ "32", 0 ] }, "class_type": "FluxGuidance", "_meta": { "title": "PositiveFluxGuidance" } }, "42": { "inputs": { "pixels": [ "739", 0 ], "vae": [ "314", 0 ] }, "class_type": "VAEEncode", "_meta": { "title": "VAE Encode" } }, "313": { "inputs": { "unet_name": "flux1-dev.safetensors", "weight_dtype": "fp8_e4m3fn" }, "class_type": "UNETLoader", "_meta": { "title": "Load Diffusion Model" } }, "314": { "inputs": { "vae_name": "ae.safetensors" }, "class_type": "VAELoader", "_meta": { "title": "Load VAE" } }, "315": { "inputs": { "clip_name1": "t5xxl_fp16.safetensors", "clip_name2": "clip_l.safetensors", "type": "flux", "device": "default" }, "class_type": "DualCLIPLoader", "_meta": { "title": "DualCLIPLoader" } }, "326": { "inputs": { "text": [ "695", 0 ], "clip": [ "658", 0 ] }, "class_type": "CLIPTextEncode", "_meta": { "title": "CLIP Text Encode (Prompt)" } }, "333": { "inputs": { "x": 0, "y": 0, "resize_source": false, "destination": [ "25", 0 ], "source": [ "690", 0 ], "mask": [ "395", 0 ] }, "class_type": "ImageCompositeMasked", "_meta": { "title": "Image Composite Masked" } }, "335": { "inputs": { "samples": [ "35", 0 ], "vae": [ "314", 0 ] }, "class_type": "VAEDecode", "_meta": { "title": "VAE Decode" } }, "337": { "inputs": { "images": [ "335", 0 ] }, "class_type": "PreviewImage", "_meta": { "title": "Preview Image" } }, "340": { "inputs": { "stop_at_clip_layer": -2, "clip": [ "315", 0 ] }, "class_type": "CLIPSetLastLayer", "_meta": { "title": "CLIP Set Last Layer" } }, "341": { "inputs": { "guidance": 3.2, "conditioning": [ "33", 0 ] }, "class_type": "FluxGuidance", "_meta": { "title": "NegativeFluxGuidance" } }, "342": { "inputs": { "width": 1920, "height": 1080, "position": "top-right", "x_offset": 0, "y_offset": 0, "image": [ "335", 0 ] }, "class_type": "ImageCrop+", "_meta": { "title": "🔧 Image Crop" } }, "344": { "inputs": { "filename_prefix": "Flux_Cropped", "images": [ "342", 0 ] }, "class_type": "SaveImage", "_meta": { "title": "Save Image" } }, "395": { "inputs": { "mask": [ "690", 1 ] }, "class_type": "InvertMask", "_meta": { "title": "Invert Mask" } }, "658": { "inputs": { "stop_at_clip_layer": -2, "clip": [ "14", 1 ] }, "class_type": "CLIPSetLastLayer", "_meta": { "title": "CLIP Set Last Layer" } }, "688": { "inputs": { "max_shift": 0.8, "base_shift": 0.4, "width": 1920, "height": 1080, "model": [ "698", 0 ] }, "class_type": "ModelSamplingFlux", "_meta": { "title": "ModelSamplingFlux" } }, "689": { "inputs": { "width": 960, "height": 1080, "position": "top-right", "x_offset": 0, "y_offset": 0, "image": [ "1", 0 ] }, "class_type": "ImageCrop+", "_meta": { "title": "🔧 Image Crop" } }, "690": { "inputs": { "left": 0, "right": 1920, "top": 0, "bottom": 0, "extra_padding": 0, "pad_mode": "color", "color": "0, 0, 0", "image": [ "689", 0 ] }, "class_type": "ImagePadKJ", "_meta": { "title": "ImagePad KJ" } }, "695": { "inputs": { "text": "<prompt>" }, "class_type": "Text Multiline", "_meta": { "title": "Text Multiline" } }, "696": { "inputs": { "text": "bad anatomy, bad hands, extra fingers, deformed face, blurry, low quality, modern clothes, text, watermark, cartoon, 3d render, flat lighting" }, "class_type": "Text Multiline", "_meta": { "title": "Text Multiline" } }, "698": { "inputs": { "lora_name": "flux-oilpainting1.3-00001.safetensors", "strength_model": 0.8, "model": [ "313", 0 ] }, "class_type": "LoraLoaderModelOnly", "_meta": { "title": "Load LoRA" } }, "701": { "inputs": { "filename_prefix": "SDXL", "images": [ "333", 0 ] }, "class_type": "SaveImage", "_meta": { "title": "Save Image" } }, "702": { "inputs": { "ckpt_name": "forreal-xl-inpainting.safetensors" }, "class_type": "CheckpointLoaderSimple", "_meta": { "title": "Load Checkpoint" } }, "703": { "inputs": { "strength": 1, "model": [ "702", 0 ] }, "class_type": "DifferentialDiffusion", "_meta": { "title": "Differential Diffusion" } }, "704": { "inputs": { "text": "landscape", "clip": [ "702", 1 ] }, "class_type": "CLIPTextEncode", "_meta": { "title": "Positive" } }, "705": { "inputs": { "text": "", "clip": [ "702", 1 ] }, "class_type": "CLIPTextEncode", "_meta": { "title": "Negative" } }, "706": { "inputs": { "width": 960, "height": 1080, "x": 0, "y": 0, "image": [ "731", 0 ] }, "class_type": "ImageCrop", "_meta": { "title": "Crop Left Half of New Image" } }, "707": { "inputs": { "width": 960, "height": 1080, "x": 960, "y": 0, "image": [ "1", 0 ] }, "class_type": "ImageCrop", "_meta": { "title": "Crop Right Half of Previous Image" } }, "708": { "inputs": { "value": 0, "width": 1920, "height": 1080 }, "class_type": "SolidMask", "_meta": { "title": "Black Background Mask" } }, "709": { "inputs": { "value": 1, "width": 256, "height": 1080 }, "class_type": "SolidMask", "_meta": { "title": "White Seam Stripe (256px)" } }, "710": { "inputs": { "x": 832, "y": 0, "operation": "add", "destination": [ "708", 0 ], "source": [ "709", 0 ] }, "class_type": "MaskComposite", "_meta": { "title": "Composite Seam Mask" } }, "711": { "inputs": { "left": 32, "top": 0, "right": 32, "bottom": 0, "mask": [ "710", 0 ] }, "class_type": "FeatherMask", "_meta": { "title": "Feather Mask Edges (32px)" } }, "712": { "inputs": { "direction": "right", "match_image_size": true, "image1": [ "707", 0 ], "image2": [ "706", 0 ] }, "class_type": "ImageConcanate", "_meta": { "title": "Concatenate Halves (1920x1080)" } }, "713": { "inputs": { "noise_mask": true, "positive": [ "704", 0 ], "negative": [ "705", 0 ], "vae": [ "702", 2 ], "pixels": [ "712", 0 ], "mask": [ "711", 0 ] }, "class_type": "InpaintModelConditioning", "_meta": { "title": "InpaintModelConditioning" } }, "714": { "inputs": { "seed": [ "737", 2 ], "steps": 15, "cfg": 2.2, "sampler_name": "dpmpp_2m_sde", "scheduler": "karras", "denoise": 1, "model": [ "703", 0 ], "positive": [ "713", 0 ], "negative": [ "713", 1 ], "latent_image": [ "713", 2 ] }, "class_type": "KSampler", "_meta": { "title": "KSampler" } }, "715": { "inputs": { "samples": [ "714", 0 ], "vae": [ "702", 2 ] }, "class_type": "VAEDecode", "_meta": { "title": "VAE Decode" } }, "716": { "inputs": { "width": 256, "height": 1080, "x": 832, "y": 0, "image": [ "715", 0 ] }, "class_type": "ImageCrop", "_meta": { "title": "Crop Stitch Overlap (256px)" } }, "717": { "inputs": { "width": 960, "height": 1080, "x": 960, "y": 0, "image": [ "715", 0 ] }, "class_type": "ImageCrop", "_meta": { "title": "Crop Right Half of Blended" } }, "718": { "inputs": { "width": 960, "height": 1080, "x": 960, "y": 0, "image": [ "731", 0 ] }, "class_type": "ImageCrop", "_meta": { "title": "Crop Right Half of Original New" } }, "721": { "inputs": { "direction": "right", "match_image_size": true, "image1": [ "717", 0 ], "image2": [ "718", 0 ] }, "class_type": "ImageConcanate", "_meta": { "title": "Concatenate Final Output" } }, "725": { "inputs": { "filename_prefix": "Final", "images": [ "721", 0 ] }, "class_type": "SaveImage", "_meta": { "title": "Save Image" } }, "726": { "inputs": { "filename_prefix": "Stitch", "images": [ "716", 0 ] }, "class_type": "SaveImage", "_meta": { "title": "Save Image" } }, "728": { "inputs": { "images": [ "730", 0 ] }, "class_type": "PreviewImage", "_meta": { "title": "Preview Image" } }, "729": { "inputs": { "inputcount": 2, "direction": "right", "match_image_size": false, "Update inputs": null, "image_1": [ "1", 0 ], "image_2": [ "721", 0 ] }, "class_type": "ImageConcatMulti", "_meta": { "title": "Image Concatenate Multi" } }, "730": { "inputs": { "x": 0, "y": 0, "offset_x": 1792, "offset_y": 0, "destination": [ "729", 0 ], "source": [ "716", 0 ] }, "class_type": "ImageComposite+", "_meta": { "title": "🔧 Image Composite" } }, "731": { "inputs": { "strength": 0, "brightness": 0, "contrast": 0, "saturation": 0, "red": 0, "green": 0, "blue": 0, "image": [ "342", 0 ] }, "class_type": "LayerColor: AutoAdjust", "_meta": { "title": "LayerColor: AutoAdjust" } }, "732": { "inputs": { "filename_prefix": "Flux_Adjusted", "images": [ "731", 0 ] }, "class_type": "SaveImage", "_meta": { "title": "Save Image" } }, "733": { "inputs": { "images": [ "712", 0 ] }, "class_type": "PreviewImage", "_meta": { "title": "Preview Image" } }, "734": { "inputs": { "images": [ "25", 0 ] }, "class_type": "PreviewImage", "_meta": { "title": "Preview Image" } }, "735": { "inputs": { "string_a": "oilpainting", "string_b": [ "695", 0 ], "delimiter": " " }, "class_type": "StringConcatenate", "_meta": { "title": "Concatenate Text" } }, "737": { "inputs": { "number_type": "integer", "minimum": 15892584884070, "maximum": 925892584884070, "seed": 971420054596237 }, "class_type": "Random Number", "_meta": { "title": "Random Number" } }, "739": { "inputs": { "crop_region": { "x": 960, "y": 0, "width": 1920, "height": 1080 }, "image": [ "333", 0 ] }, "class_type": "ImageCropV2", "_meta": { "title": "Crop Image" } } }
0x28996f7d…515a·#24,941,673·0xfdac6ce6…7b123b
data:application/json;base64,eyJuYW1lIjoiRGVhZCBDb250cmFjdCIsImRlc2NyaXB0aW9uIjoiVGhpcyBjb250cmFjdCBoYXMgYmVlbiBkZWNvbW1pc3Npb25lZC4gQWxsIHJlZmVyZW5jZXMgaGF2ZSBiZWVuIHVuc2V0LiIsImltYWdlIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCNGJXeHVjejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TWpBd01DOXpkbWNpSUhacFpYZENiM2c5SWpBZ01DQTFNVElnTlRFeUlqNDhjbVZqZENCM2FXUjBhRDBpTlRFeUlpQm9aV2xuYUhROUlqVXhNaUlnWm1sc2JEMGlJekF3TUNJdlBqd3ZjM1puUGc9PSJ9
0x28996f7d…515a·#24,941,602·0x57cb2b2a…25bf75
data:application/json;base64,eyJuYW1lIjoiIiwiaW1hZ2UiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lJSGRwWkhSb1BTSXhJaUJvWldsbmFIUTlJakVpUGp4eVpXTjBJSGRwWkhSb1BTSXhJaUJvWldsbmFIUTlJakVpTHo0OEwzTjJaejQ9In0=
;(function(){var CDN="https://cdn.panorama.garden/",TOTAL=365,DAY=86400,SR="https://superrare.com/";var D=document,$=function(i){return D.getElementById(i)},ae=function(e,t,h,o){e.addEventListener(t,h,o)},rAF=requestAnimationFrame,cAF=cancelAnimationFrame,mR=Math.round,mx=Math.max,mn=Math.min,ma=Math.abs,mf=Math.floor,mt=Math.trunc,dU=Date.UTC;var vw=$("vw"),sc=$("sc"),st=$("st"),sl=$("sl"),ix=$("ix"),hdr=$("hdr"),cap=$("cap"),cDa=$("cap-date"),cGn=$("cap-gen"),cPx=$("cap-price"),ft=$("ft"),rw=$("rw"),ff=$("ff"),spd=$("spd"),spdv=$("spdv"),pad=$("pad"),padv=$("padv"),eye=$("eye"),kys=$("kys"),gtb=$("gtb"),gtp=$("gtp"),cal=$("cal"),gid=$("gid"),gidgo=$("gidgo"),gtod=$("gtod"),gdate=$("gdate"),gdatev=$("gdatev"),calwrap=$("calwrap"),calclose=$("calclose"),panel=$("panel"),pg=$("pg"),help=$("help"),pvw=$("pvw"),pvwimg=$("pvwimg"),pvwbadge=$("pvwbadge");var N=DATA.length,W=0,H=0,padY=0,spdVal=1,subPx=0,aDir=0,aRaf=null,drag=false,moved=false,sx=0,ss=0,mdPos=null,chrome=true,mIx=-1,lIx=0,lRa=null,lDr=false,sRa=0,mCa={};var sTs=typeof START_TS!=="undefined"?START_TS:(N>0?DATA[0].t:mf(Date.now()/1000));var tIx=mx(0,mn(mf((Date.now()/1000-sTs)/DAY),TOTAL-1));function dSU(ts){var d=new Date(ts*1000);return new Date(dU(d.getUTCFullYear(),d.getUTCMonth(),d.getUTCDate(),0,0,0))}function dEU(ts){var d=new Date(ts*1000);return new Date(dU(d.getUTCFullYear(),d.getUTCMonth(),d.getUTCDate(),23,59,59))}var miD=dSU(sTs),maD=dEU(sTs+(TOTAL-1)*DAY);function calc(){var f=vw.clientHeight;H=mx(100,mR(f*(1-padY/100)));W=mR(H*(16/9));var s=D.documentElement.style;s.setProperty("--ih",H+"px");s.setProperty("--iw",W+"px")}ae(window,"resize",function(){var c=mR(pIx());calc();sc.scrollLeft=c*W});function fP(r){var p=r/1e18;if(p>=1e12)return"$"+(p/1e12).toFixed(1)+"T";if(p>=1e9)return"$"+(p/1e9).toFixed(2)+"B";if(p>=1e6)return"$"+(p/1e6).toFixed(2)+"M";if(p>=1e3)return"$"+(p/1e3).toFixed(2)+"K";if(p>=1)return"$"+p.toFixed(2);if(p>=0.01)return"$"+p.toFixed(4);if(p>0)return"$"+p.toFixed(6);return"$0"}var MO=["JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"],MOF=["JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"];function fD(ts){var d=new Date(ts*1000);return MO[d.getUTCMonth()]+" "+d.getUTCDate()+" "+d.getUTCFullYear()}function fDLong(ts){var d=new Date(ts*1000);return MOF[d.getUTCMonth()]+" "+d.getUTCDate()+", "+d.getUTCFullYear()}function fC(b){return(b>=0?"+":"")+(b/100).toFixed(2)+"%"}function esc(s){var d=D.createElement("div");d.textContent=s;return d.innerHTML}function pad2(n){return n<10?"0"+n:""+n}function pad3(n){return n<10?"00"+n:(n<100?"0"+n:""+n)}function iso(ts){var d=new Date(ts*1000);return d.getUTCFullYear()+"-"+pad2(d.getUTCMonth()+1)+"-"+pad2(d.getUTCDate())}function iU(i){if(i<0||i>=N)return null;return CDN+((i<N-1)?"optimized_updated_":"optimized_")+iso(DATA[i].t)+".webp"}function tU(i){if(i<0||i>=N)return null;return CDN+((i<N-1)?"thumbnail_updated_":"thumbnail_")+iso(DATA[i].t)+".webp"}function mU(i){if(i<0||i>=N)return null;return CDN+"metadata_"+iso(DATA[i].t)+".json"}function ease(t){return 1-Math.pow(1-t,4)}function sDur(d){d=ma(d);if(d<300)return 360;if(d<1500)return 520;if(d<6000)return 720;return 900}function sm(to){var e=sc,f=e.scrollLeft,de=to-f;if(de===0)return;var du=sDur(de),s=performance.now();if(sRa)cAF(sRa);function step(n){var t=mn(1,(n-s)/du);e.scrollLeft=f+de*ease(t);if(t<1)sRa=rAF(step);else sRa=0}sRa=rAF(step)}function sTo(i,s){var to=mx(0,mn(i*W,sc.scrollWidth-sc.clientWidth));if(s)sm(to);else sc.scrollLeft=to}function bC(){st.innerHTML="";var i,e,c,img;for(i=0;i<N;i++){e=DATA[i];c=D.createElement("div");c.className="cd";c.setAttribute("data-idx",String(i));img=D.createElement("img");img.loading="lazy";img.src=iU(i);img.alt="Panorama #"+(i+1);img.draggable=false;c.appendChild(img);st.appendChild(c)}for(i=N;i<TOTAL;i++){var tid=i+1,revTs=sTs+i*DAY,isPast=i<tIx,isToday=i===tIx;var u=D.createElement("div");u.className="unr";u.setAttribute("data-idx",String(i));var ps=mn(1,H/900),inner=D.createElement("div");inner.className="ui";inner.style.transform="scale("+ps+")";inner.style.transformOrigin="center center";var lb=isToday?"TODAY":isPast?"GENERATING":"AWAITING";var h='<div class="unr-head"><span class="lbl">DAY '+pad3(tid)+'</span><span class="val">'+lb+'</span></div><div class="unr-rows"><div class="unr-row"><span class="lbl">TOKEN</span><span class="val">#'+tid+'</span></div><div class="unr-row"><span class="lbl">REVEALS</span><span class="val">'+iso(revTs)+'</span></div><div class="unr-row"><span class="lbl">SEASON</span><span class="val">'+(tid<=90?'1':'?')+'</span></div></div><div class="unr-actions">';var sr=(typeof NFT_ADDR!=="undefined"?NFT_ADDR:"");h+='<a class="lnk" href="'+SR+'artwork/eth/'+sr+'/'+tid+'">VIEW TOKEN →</a>';if(isToday){var er=(typeof ERC20_ADDR!=="undefined"?ERC20_ADDR:"");h+='<a class="lnk" href="'+SR+'liquid-editions/'+er+'">TRADE ON SUPERRARE →</a>'}h+='</div>';inner.innerHTML=h;u.appendChild(inner);st.appendChild(u)}}ae(st,"click",function(ev){if(!chrome||moved)return;var c=ev.target.closest(".cd,.unr");if(!c||ev.target.closest("a"))return;var idx=parseInt(c.getAttribute("data-idx"));if(isNaN(idx))return;if(c.classList.contains("cd"))oP(idx)});function fM(idx,cb){if(idx<0||idx>=N)return cb(null);if(mCa[idx]!==undefined)return cb(mCa[idx]);var u=mU(idx);if(!u){mCa[idx]=null;return cb(null)}fetch(u).then(function(r){return r.ok?r.json():null}).then(function(d){mCa[idx]=d||null;cb(d||null)}).catch(function(){mCa[idx]=null;cb(null)})}function oP(idx){if(idx<0||idx>=N)return;mIx=idx;var e=DATA[idx],isGen=(idx===0),pcc=e.c>100?"var(--up)":e.c<-100?"var(--dn)":"var(--fg)",sr=(typeof NFT_ADDR!=="undefined"?NFT_ADDR:""),pId=pad3(idx+1);var h='<div class="pg-col"><div class="pg-grp g8"><span class="lbl">DAY '+pId+' / 365</span><span class="ttl">'+(isGen?"GENESIS":fDLong(e.t))+'</span><span class="sub" id="pg-mood" style="display:none"></span></div>';if(!isGen)h+='<div class="pg-grp g6"><span class="lbl">PANO / USD</span><div class="pg-inline"><span class="val">'+fP(e.p)+'</span><span style="font:12px/1 var(--mono);text-transform:uppercase;letter-spacing:.15em;color:'+pcc+'">'+fC(e.c)+'</span></div></div>';h+='<div class="pg-grp g6"><span class="lbl">STATUS</span><span class="val">ON-CHAIN</span></div><div class="pg-grp g6"><span class="lbl">SEASON</span><span class="val">'+(idx+1<=90?'1':'?')+'</span></div></div><div class="pg-col"><div class="pg-grp" style="gap:10px;max-width:680px"><span class="lbl">DESCRIPTION</span><div class="pg-desc" id="pg-desc"><span class="lbl">—</span></div></div></div><div class="pg-col"><div class="pg-grp g6" id="pg-seed" style="display:none"><span class="lbl">SEED</span><span class="val" id="pg-seedval"></span></div><div class="pg-links"><a class="lnk" href="'+iU(idx)+'">↓ IMAGE</a><a class="lnk" href="'+SR+'artwork/eth/'+sr+'/'+(idx+1)+'">↗ SUPERRARE</a></div></div>';pg.innerHTML=h;panel.classList.add("open");fM(idx,function(m){if(mIx!==idx||!m)return;if(m.prompt){var d=$("pg-desc");if(d)d.innerHTML='<p>'+esc(m.prompt)+'</p>'}if(m.seed!=null){var s=$("pg-seed"),sv=$("pg-seedval");if(s&&sv){s.style.display="";sv.textContent=m.seed}}if(m.mood){var mm=$("pg-mood");if(mm){mm.textContent=String(m.mood).toUpperCase();mm.style.display=""}}})}function cP(){panel.classList.remove("open");mIx=-1}ae(panel,"click",function(ev){if(ev.target===panel)cP()});ae(panel.querySelector(".panel-close"),"click",cP);function oH(){help.classList.add("open")}function cH(){help.classList.remove("open")}ae(help,"click",function(ev){if(ev.target===help)cH()});ae(help.querySelector(".panel-close"),"click",cH);ae(kys,"click",function(ev){ev.stopPropagation();oH()});function uC(){var r=mR(pIx());if(r<0)r=0;if(r>=TOTAL)r=TOTAL-1;if(r>=N){cDa.textContent="";cGn.textContent="";cPx.innerHTML="";return}var e=DATA[r];cDa.textContent=fD(e.t);if(r===0){cGn.textContent="GENESIS";cPx.innerHTML=""}else{cGn.textContent="";var cc=e.c>100?"var(--up)":e.c<-100?"var(--dn)":"var(--fg)",sp=(e.c>=0?"+":"")+(e.c/100).toFixed(2)+"%";cPx.innerHTML=esc(fP(e.p))+' <span class="pc" style="color:'+cc+'">'+esc(sp)+'</span>'}}ae(cap,"click",function(){var r=mR(pIx());if(r<0)r=0;if(r>=N)return;oP(r)});function pIx(){return W>0?sc.scrollLeft/W:0}function uSl(){var r=mR(pIx());if(r<0)r=0;if(r>=TOTAL)r=TOTAL-1;ix.textContent=(r+1)+" / "+TOTAL;if(!lDr)sLe();uC()}function sLe(){if(lRa)cAF(lRa);lRa=rAF(lT)}function lT(){var t=pIx(),d=t-lIx;if(ma(d)<0.1){lIx=t;sl.value=lIx;lRa=null;return}lIx+=d*0.15;sl.value=lIx;lRa=rAF(lT)}ae(sc,"scroll",uSl);ae(sl,"input",function(){lDr=true;if(lRa){cAF(lRa);lRa=null}var v=parseFloat(this.value);lIx=v;sc.scrollLeft=mR(v)*W;ix.textContent=(mR(v)+1)+" / "+TOTAL});ae(sl,"mousedown",function(ev){lDr=true;ev.stopPropagation()});ae(sl,"mouseup",function(){lDr=false});ae(sl,"touchstart",function(ev){lDr=true;ev.stopPropagation()},{passive:true});ae(sl,"touchend",function(){lDr=false});var pW=160,pH=80,nE=$("nav");ae(nE,"mousemove",function(ev){if(lDr){pvw.style.display="none";return}var r=sl.getBoundingClientRect(),ox=ev.clientX-r.left;if(ox<0||ox>r.width){pvw.style.display="none";return}var idx=mR(mx(0,mn(1,ox/r.width))*(TOTAL-1));if(idx>=N){pvw.style.display="none";return}pvwimg.src=tU(idx)||iU(idx);pvwimg.onerror=function(){pvwimg.src=iU(idx);pvwimg.onerror=null};pvwbadge.textContent=idx+1;var s=pvw.style;s.width=pW+"px";s.height=pH+"px";s.left=(ev.clientX-pW/2)+"px";s.top=(r.top-pH-8)+"px";s.display="block"});ae(nE,"mouseleave",function(){pvw.style.display="none"});ae(sc,"wheel",function(ev){if(sc.scrollWidth<=sc.clientWidth)return;var d=ev.deltaX||ev.deltaY;if(d===0)return;ev.preventDefault();sc.scrollLeft+=d},{passive:false});ae(sc,"mousedown",function(ev){drag=true;moved=false;sx=ev.pageX;ss=sc.scrollLeft;sc.classList.add("gb");mdPos={x:ev.clientX,y:ev.clientY}});ae(window,"mousemove",function(ev){if(!drag)return;ev.preventDefault();var dx=ev.pageX-sx;if(ma(dx)>5)moved=true;sc.scrollLeft=ss-dx});ae(window,"mouseup",function(){if(!drag)return;drag=false;sc.classList.remove("gb")});var tx=0,ts2=0;ae(sc,"touchstart",function(ev){tx=ev.touches[0].pageX;ts2=sc.scrollLeft},{passive:true});ae(sc,"touchmove",function(ev){sc.scrollLeft=ts2-(ev.touches[0].pageX-tx)},{passive:true});function aTick(){if(!aDir){aRaf=null;return}subPx+=spdVal*1.5*aDir;var a=mt(subPx);if(a!==0){sc.scrollLeft+=a;subPx-=a}var m=sc.scrollWidth-sc.clientWidth;if(sc.scrollLeft<=0&&aDir<0){stopA();return}if(sc.scrollLeft>=m&&aDir>0){stopA();return}aRaf=rAF(aTick)}function stopA(){aDir=0;subPx=0;if(aRaf)cAF(aRaf);aRaf=null;rw.classList.remove("on");ff.classList.remove("on");rw.setAttribute("data-tooltip","REWIND");ff.setAttribute("data-tooltip","PLAY")}function startA(d){aDir=d;subPx=0;rw.classList.toggle("on",d===-1);ff.classList.toggle("on",d===1);if(d===-1)rw.setAttribute("data-tooltip","PAUSE");if(d===1)ff.setAttribute("data-tooltip","PAUSE");if(!aRaf)aRaf=rAF(aTick)}var nF=function(e){e.preventDefault()};[rw,ff,eye,kys,gtb,spd,pad].forEach(function(b){ae(b,"mousedown",nF)});function rS(){if(spdVal===0){spdVal=1;spdv.textContent="1.0×";spd.setAttribute("aria-valuenow",1)}}ae(rw,"click",function(){if(aDir===-1){stopA();return}rS();startA(-1)});ae(ff,"click",function(){if(aDir===1){stopA();return}rS();startA(1)});ae(eye,"click",function(){chrome=false;hdr.classList.add("hide");ft.classList.add("hide")});ae(window,"click",function(ev){if(chrome)return;if(mdPos&&ma(ev.clientX-mdPos.x)<5&&ma(ev.clientY-mdPos.y)<5){chrome=true;hdr.classList.remove("hide");ft.classList.remove("hide")}});function mS(btn,gV,sV,lo,hi,sp,se,ti,ax){var s=null,sCls=ax==="x"?"is-scrubbing":"is-scrubbing-xy";function cl(n){if(n<lo)n=lo;if(n>hi)n=hi;return mR((n-lo)/sp)*sp+lo}ae(btn,"pointerdown",function(ev){btn.setPointerCapture(ev.pointerId);s={x:ev.clientX,y:ev.clientY,v:gV(),moved:false};D.body.classList.add(sCls)});ae(btn,"pointermove",function(ev){if(!s)return;var dx=ev.clientX-s.x,dy=s.y-ev.clientY,d;if(ax==="y")d=dy;else if(ax==="both")d=ma(dx)>=ma(dy)?dx:dy;else d=dx;if(ma(d)>=se)s.moved=true;var n=cl(s.v+mt(d/se)*sp);if(n!==gV())sV(n)});function end(ev){if(!s)return;var wD=s.moved;s=null;D.body.classList.remove(sCls);try{btn.releasePointerCapture(ev.pointerId)}catch(e){}if(!wD&&ti.length){var cu=gV(),EPS=sp/2,nx=null;for(var i=0;i<ti.length;i++){if(ti[i]>cu+EPS){nx=ti[i];break}}if(nx===null)nx=ti[0];if(nx!==cu)sV(nx)}}ae(btn,"pointerup",end);ae(btn,"pointercancel",end)}mS(spd,function(){return spdVal},function(v){spdVal=mR(v*10)/10;spdv.textContent=spdVal.toFixed(1)+"×";spd.setAttribute("aria-valuenow",spdVal);if(spdVal===0){if(aDir)stopA()}else if(!aDir){startA(1)}},0,5,0.1,4,[1,2,4],"x");mS(pad,function(){return padY},function(v){padY=mR(v);padv.textContent=padY+"%";pad.classList.toggle("on",padY>0);pad.setAttribute("aria-valuenow",padY);var c=mR(pIx());calc();sc.scrollLeft=c*W},0,60,1,3,[0,10,20,40],"both");function gD(v){if(!v)return;var ts=new Date(v+"T12:00:00Z").getTime()/1000,cl=0,be=Infinity;for(var i=0;i<TOTAL;i++){var ct=i<N?DATA[i].t:sTs+i*DAY,d=ma(ct-ts);if(d<be){be=d;cl=i}}sTo(cl,true)}function gId(){var v=parseInt(gid.value);if(isNaN(v)||v<1||v>TOTAL)return;sTo(v-1,true);gtp.classList.remove("open");gid.value=""}var vY,vM,cS="";function cIn(){var d=cS?new Date(cS+"T12:00:00"):new Date();if(d<miD)d=miD;if(d>maD)d=maD;vY=d.getUTCFullYear();vM=d.getUTCMonth()}function cPr(){var pm=vM===0?11:vM-1,py=vM===0?vY-1:vY;return new Date(dU(py,pm+1,0,12))>=miD}function cN(){var nm=vM===11?0:vM+1,ny=vM===11?vY+1:vY;return new Date(dU(ny,nm,1,12))<=maD}function iO(y,m,d){var c=new Date(dU(y,m,d,12));return c<miD||c>maD}function dC(){var di=new Date(dU(vY,vM+1,0)).getUTCDate(),fw=(new Date(dU(vY,vM,1)).getUTCDay()+6)%7,t=new Date(),tY=t.getUTCFullYear(),tM=t.getUTCMonth(),tD=t.getUTCDate();var h='<div class="cal-head"><button class="pv'+(cPr()?"":" off")+'" aria-label="Previous month"><svg viewBox="0 0 24 24"><polyline points="15 18 9 12 15 6"/></svg></button><span class="mo">'+MOF[vM]+' '+vY+'</span><button class="nx'+(cN()?"":" off")+'" aria-label="Next month"><svg viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"/></svg></button></div><div class="cal">',wk=["M","T","W","T","F","S","S"],i,cls;for(i=0;i<7;i++)h+='<div class="cal-wk">'+wk[i]+'</div>';for(i=0;i<fw;i++)h+='<div></div>';for(i=1;i<=di;i++){cls="cal-d";if(iO(vY,vM,i))cls+=" off";else{if(tY===vY&&tM===vM&&tD===i)cls+=" td";if(cS){var p=cS.split("-");if(+p[0]===vY&&+p[1]-1===vM&&+p[2]===i)cls+=" sel"}}h+='<button class="'+cls+'" data-d="'+i+'">'+i+'</button>'}var to=fw+di;while(to<42){h+='<div></div>';to++}h+='</div>';cal.innerHTML=h;var pb=cal.querySelector("button.pv"),nb=cal.querySelector("button.nx");if(pb)ae(pb,"click",function(ev){ev.stopPropagation();if(!cPr())return;if(vM===0){vY--;vM=11}else vM--;dC()});if(nb)ae(nb,"click",function(ev){ev.stopPropagation();if(!cN())return;if(vM===11){vY++;vM=0}else vM++;dC()});var db=cal.querySelectorAll(".cal-d:not(.off)");for(i=0;i<db.length;i++)ae(db[i],"click",function(ev){ev.stopPropagation();var d=parseInt(this.getAttribute("data-d"));cS=vY+"-"+pad2(vM+1)+"-"+pad2(d);uDL();gD(cS);cC();gtp.classList.remove("open")});var ab=cal.querySelectorAll("button");for(i=0;i<ab.length;i++)ae(ab[i],"mousedown",function(ev){ev.preventDefault()})}function uDL(){if(cS){var p=cS.split("-");gdatev.textContent=MO[+p[1]-1]+" "+p[2]+" "+p[0];gdatev.classList.remove("empty")}else{gdatev.textContent="SELECT";gdatev.classList.add("empty")}}ae(gtb,"click",function(ev){ev.stopPropagation();gtp.classList.toggle("open")});ae(gid,"keydown",function(ev){if(ev.key==="Enter")gId()});ae(gid,"mousedown",function(ev){ev.stopPropagation()});ae(gidgo,"click",gId);function cC(){calwrap.classList.remove("open");gtp.classList.remove("cal-on");gdate.classList.remove("open");gdate.setAttribute("aria-expanded","false")}ae(gdate,"click",function(ev){ev.stopPropagation();var o=!calwrap.classList.contains("open");calwrap.classList.toggle("open",o);gtp.classList.toggle("cal-on",o);gdate.classList.toggle("open",o);gdate.setAttribute("aria-expanded",o?"true":"false");if(o){cIn();dC()}});ae(calclose,"click",function(ev){ev.stopPropagation();cC()});ae(gtod,"click",function(){sTo(mx(0,mn(mf((Date.now()/1000-sTs)/DAY),TOTAL-1)),true);gtp.classList.remove("open")});ae(D,"mousedown",function(ev){if(!$("gtw").contains(ev.target)){gtp.classList.remove("open");cC()}});ae(window,"keydown",function(ev){if(ev.target.closest("input,textarea"))return;var c=ev.code;if(c==="Escape"){if(help.classList.contains("open")){cH();return}if(panel.classList.contains("open")){cP();return}if(calwrap.classList.contains("open")){cC();return}if(gtp.classList.contains("open")){gtp.classList.remove("open")}return}if(c==="Space"){ev.preventDefault();ev.stopPropagation();var d=ev.shiftKey?-1:1;if(aDir===d)stopA();else startA(d);return}if(c==="ArrowLeft"){ev.preventDefault();ev.stopPropagation();sTo(mx(0,mR(pIx())-1),true);return}if(c==="ArrowRight"){ev.preventDefault();ev.stopPropagation();sTo(mn(TOTAL-1,mR(pIx())+1),true);return}if(c==="Slash"&&ev.shiftKey){ev.preventDefault();ev.stopPropagation();if(help.classList.contains("open"))cH();else oH()}},true);calc();bC();var params=new URLSearchParams(location.search),sid=parseInt(params.get("id"));if(sid>0&&sid<=TOTAL)sc.scrollLeft=(sid-1)*W;else if(N>0)sc.scrollLeft=(N-1)*W;uSl()})();</script></body></html>
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover"><base target="_blank"><title>Panorama</title><style>*{margin:0;padding:0;box-sizing:border-box}:root{--bg:#0a0a0a;--fg:#ededed;--muted:#8a8680;--faint:#3a3a3a;--up:#089981;--dn:#F23645;--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--sans:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--ease:cubic-bezier(.2,.8,.2,1)}html,body{height:100%;background:var(--bg);color:var(--fg);font-family:var(--mono);overflow:hidden}::-webkit-scrollbar{display:none}*{scrollbar-width:none}svg{fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.lbl{font:10px/1 var(--mono);text-transform:uppercase;letter-spacing:.25em;color:var(--muted);font-variant-numeric:tabular-nums}.sub{font:11px/1 var(--mono);text-transform:uppercase;letter-spacing:.2em;color:var(--muted);font-variant-numeric:tabular-nums}.lnk{font:12px/1 var(--mono);text-transform:uppercase;letter-spacing:.2em;color:var(--fg);font-variant-numeric:tabular-nums;cursor:pointer;text-decoration:none;background:none;border:0;padding:0;display:inline-flex;align-items:center;gap:6px}.val{font:13px/1 var(--mono);text-transform:uppercase;letter-spacing:.15em;color:var(--fg);font-variant-numeric:tabular-nums}.ttl{font:15px/1.2 var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--fg);font-variant-numeric:tabular-nums}#hdr{position:fixed;top:40px;left:0;right:0;z-index:50;height:24px;display:flex;align-items:center;padding:0 40px;transition:opacity 500ms var(--ease);user-select:none;text-shadow:0 1px 2px rgba(0,0,0,.55)}#hdr.hide{opacity:0;pointer-events:none}#hdrl{display:flex;align-items:center;gap:10px;min-width:0}#hdrl a{font:12px/1 var(--mono);text-transform:uppercase;letter-spacing:.2em;color:var(--fg);text-decoration:none;white-space:nowrap}#hdrl .by{color:rgba(237,237,237,.75)}@media (max-width:640px){#hdrl .by{display:none}}#vw{position:absolute;inset:0;overflow:hidden;display:flex;align-items:center;justify-content:center}#sc{width:100%;height:100%;overflow-x:scroll;overflow-y:hidden;cursor:grab;display:flex;align-items:center;overscroll-behavior:none}#sc.gb{cursor:grabbing}#st{display:flex;height:var(--ih)}.cd{flex:0 0 var(--iw);height:var(--ih);position:relative;overflow:hidden;background:rgba(255,255,255,.04);cursor:pointer}.cd img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;-webkit-user-drag:none;user-select:none;pointer-events:none}.unr{flex:0 0 var(--iw);height:var(--ih);background:var(--bg);display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;cursor:pointer}.ui{display:flex;flex-direction:column;width:100%;max-width:28rem;padding:0 32px}.unr-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:32px}.unr-rows{display:flex;flex-direction:column;gap:12px}.unr-row{display:flex;align-items:center;justify-content:space-between}.unr-actions{display:flex;flex-direction:column;align-items:flex-start;gap:12px;margin-top:12px}#ft{position:absolute;bottom:0;left:0;right:0;z-index:40;padding:0 40px calc(env(safe-area-inset-bottom,0px) + 40px);transition:opacity 500ms var(--ease),transform 500ms var(--ease);text-shadow:0 1px 2px rgba(0,0,0,.55)}#ft.hide{opacity:0;transform:translateY(20%);pointer-events:none}@media (max-width:640px){#ft{padding:0 16px calc(env(safe-area-inset-bottom,0px) + 24px)}}#nav{display:flex;align-items:center;gap:12px;min-width:0;margin-bottom:16px}#ix{min-width:72px;text-align:right;white-space:nowrap;color:var(--fg);font-variant-numeric:tabular-nums}#sl{flex:1;height:14px;background:transparent;appearance:none;-webkit-appearance:none;cursor:pointer;min-width:0;margin:0;padding:0;position:relative;filter:drop-shadow(0 1px 2px rgba(0,0,0,.55))}#sl::-webkit-slider-runnable-track{height:1px;background:rgba(237,237,237,.35)}#sl::-moz-range-track{height:1px;background:rgba(237,237,237,.35)}#sl::-webkit-slider-thumb{-webkit-appearance:none;width:2px;height:14px;background:var(--fg);cursor:pointer;margin-top:-6px;border:0;border-radius:0}#sl::-moz-range-thumb{width:2px;height:14px;background:var(--fg);cursor:pointer;border:0;border-radius:0}#ctl{display:grid;grid-template-columns:auto 1fr auto;align-items:center;column-gap:8px;height:24px}.grp{display:flex;align-items:center;gap:8px;flex-shrink:0}#cap{min-width:0;display:flex;justify-content:center;align-items:center;gap:8px;overflow:hidden;padding:0 8px;cursor:pointer}#cap span{font:11px/1 var(--mono);text-transform:uppercase;letter-spacing:.18em;color:var(--fg);font-variant-numeric:tabular-nums;white-space:nowrap}#cap .pc{margin-left:6px}#cap span:empty{display:none}@media (max-width:767px){#ctl{grid-template-rows:auto auto;row-gap:8px;height:auto}#cap{grid-column:1/-1;grid-row:1}#ctl>.grp:first-child{grid-column:1;grid-row:2}#ctl>.grp:last-child{grid-column:3;grid-row:2}}.btn,.scrub{display:inline-flex;align-items:center;justify-content:center;width:56px;height:24px;background:none;border:0;cursor:pointer;padding:0;color:var(--fg);opacity:.75;transition:opacity 150ms var(--ease)}.btn.on,.scrub.on,.btn:hover,.scrub:hover{opacity:1}.btn svg,.scrub svg{filter:drop-shadow(0 1px 2px rgba(0,0,0,.55))}.btn svg{width:15px;height:15px}.btn .ic-on{display:none}.btn.on .ic-off{display:none}.btn.on .ic-on{display:inline-block}.scrub{gap:5px;cursor:ew-resize;touch-action:none;user-select:none;font:11px/1 var(--mono);font-variant-numeric:tabular-nums}.scrub svg{width:13px;height:13px}@media (max-width:640px){.btn,.scrub{width:36px}.scrub span{display:none}.grp{gap:4px}}body.is-scrubbing,body.is-scrubbing *{cursor:ew-resize!important}body.is-scrubbing-xy,body.is-scrubbing-xy *{cursor:ns-resize!important}#pad{cursor:ns-resize}.pop{position:absolute;bottom:calc(100% + 16px);right:0;background:var(--bg);padding:16px;display:none;z-index:60;width:240px;max-width:calc(100vw - 40px);max-height:calc(100vh - 96px);overflow-y:auto}.pop.open{display:flex;flex-direction:column;gap:14px}.pop-hair{height:1px;background:rgba(237,237,237,.15);flex-shrink:0}.pop-row{display:flex;align-items:center;gap:12px}.pop-row .lbl,.pop-date .lbl{width:40px;flex-shrink:0;font:10px/1 var(--mono);text-transform:uppercase;letter-spacing:.25em;color:var(--muted)}.pop-input{flex:1;min-width:0;background:transparent;border:0;color:var(--fg);font:11px/1.2 var(--mono);outline:none;padding:0;font-variant-numeric:tabular-nums;-moz-appearance:textfield}.pop-input::-webkit-outer-spin-button,.pop-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.pop-input::placeholder{color:rgba(237,237,237,.4);text-transform:uppercase;letter-spacing:.2em;font-size:10px}.pop-go,.pop-today,.cal-back{font:11px/1 var(--mono);text-transform:uppercase;letter-spacing:.25em;color:var(--fg);cursor:pointer;background:none;border:0;padding:0;transition:opacity 120ms var(--ease)}.pop-go{font-size:10px;flex-shrink:0}.pop-go:hover,.cal-back:hover{opacity:.75}.pop-today{text-align:left}.pop-today:hover,.pop-date:hover{opacity:.85}.pop-date{display:flex;align-items:center;gap:12px;background:none;border:0;padding:0;color:inherit;cursor:pointer;text-align:left;transition:opacity 120ms var(--ease)}.pop-date .v{flex:1;min-width:0;font:11px/1 var(--mono);color:var(--fg);font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pop-date .v.empty{color:rgba(237,237,237,.4)}.pop-date .ch{flex-shrink:0;color:rgba(237,237,237,.6);display:inline-flex;transition:transform 150ms var(--ease)}.pop-date.open .ch{transform:rotate(180deg)}.cal-wrap{display:none;flex-direction:column;gap:14px}.cal-wrap.open{display:flex}.cal-back{display:inline-flex;align-items:center;gap:8px;align-self:flex-start}.cal-back svg,.cal-head button svg{width:14px;height:14px}.cal-head{position:relative;display:flex;align-items:center;justify-content:center;height:18px}.cal-head .mo{font:11px/1 var(--mono);text-transform:uppercase;letter-spacing:.2em;color:var(--fg);font-variant-numeric:tabular-nums}.cal-head button{position:absolute;top:0;display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;background:none;border:0;color:rgba(237,237,237,.75);cursor:pointer;padding:0;transition:color 120ms var(--ease)}.cal-head button:hover{color:var(--fg)}.cal-head button.pv{left:0}.cal-head button.nx{right:0}.cal-head button.off,.cal-d.off{color:var(--faint);opacity:.3;cursor:not-allowed}.cal-wk{font:9px/1 var(--mono);text-transform:uppercase;letter-spacing:.15em;color:rgba(237,237,237,.5);text-align:center;display:flex;align-items:center;justify-content:center}.cal{display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:24px}.cal-d{display:inline-flex;align-items:center;justify-content:center;font:11px/1 var(--mono);font-variant-numeric:tabular-nums;color:rgba(237,237,237,.75);cursor:pointer;background:none;border:0;padding:0;transition:color 120ms var(--ease),background 120ms var(--ease)}.cal-d:hover{color:var(--fg);background:rgba(237,237,237,.1)}.cal-d.td{color:var(--fg);box-shadow:inset 0 0 0 1px rgba(237,237,237,.3)}.cal-d.sel,.cal-d.sel:hover{background:var(--fg);color:var(--bg)}.cal-d.off{background:none}.cal-d.off:hover{background:none}.pop.cal-on .pop-today,.pop.cal-on .pop-row,.pop.cal-on .pop-date,.pop.cal-on>.pop-hair{display:none}[data-tooltip]{position:relative}[data-tooltip]::after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);padding:4px 8px;background:var(--fg);color:var(--bg);font:500 10px/1 var(--mono);text-transform:uppercase;letter-spacing:.15em;white-space:nowrap;pointer-events:none;z-index:200;opacity:0;transition:opacity 120ms}[data-tooltip]:hover::after,[data-tooltip]:focus-visible::after{opacity:1;transition-delay:400ms}body.is-scrubbing [data-tooltip]::after{opacity:0!important}.overlay{position:fixed;inset:0;z-index:100;display:none}.overlay.open{display:block}.panel-body{position:absolute;left:0;right:0;bottom:0;background:var(--bg);max-height:60vh;overflow-y:auto;padding-bottom:max(48px,calc(env(safe-area-inset-bottom,0px) + 32px));animation:mi 200ms var(--ease);scrollbar-width:thin;scrollbar-color:rgba(237,237,237,.3) transparent}.panel-body::-webkit-scrollbar{display:block;width:6px}.panel-body::-webkit-scrollbar-track{background:transparent}.panel-body::-webkit-scrollbar-thumb{background:rgba(237,237,237,.3);border-radius:3px}.panel-body::-webkit-scrollbar-thumb:hover{background:rgba(237,237,237,.55)}@keyframes mi{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.panel-close-row{display:flex;align-items:center;justify-content:center;padding:12px 0 4px}.panel-close{width:64px;height:28px;display:inline-flex;align-items:center;justify-content:center;background:none;border:0;cursor:pointer;color:var(--fg)}.panel-close svg{width:22px;height:22px}.pg{display:grid;grid-template-columns:1fr 1.6fr auto;gap:64px;max-width:1920px;margin:0 auto;padding:16px 40px 32px}.pg-col{display:flex;flex-direction:column;gap:24px;min-width:0}.pg-col:last-child{min-width:160px}.pg-grp{display:flex;flex-direction:column}.pg-grp.g8{gap:8px}.pg-grp.g6{gap:6px}.pg-inline{display:flex;align-items:baseline;gap:16px}.pg-links{display:flex;flex-direction:column;align-items:flex-start;gap:6px}.pg-desc p{font:400 14px/1.75 var(--sans);color:rgba(237,237,237,.9);white-space:pre-line}@media (max-width:900px){.pg{grid-template-columns:1fr;gap:32px;padding:16px 24px 24px}}.help{width:320px;max-width:90vw;padding:28px 24px;margin:0 auto}.help-row{display:flex;justify-content:space-between;align-items:baseline;gap:24px;padding:6px 0}#pvw{position:fixed;z-index:9999;pointer-events:none;background:#000;overflow:hidden;display:none}#pvw img{width:100%;height:100%;object-fit:cover}#pvw .badge{position:absolute;bottom:4px;right:4px;background:rgba(0,0,0,.6);font:10px var(--mono);color:var(--fg);padding:1px 4px;font-variant-numeric:tabular-nums}</style></head><body><div id="hdr"><div id="hdrl"><a href="https://panorama.garden">PANORAMA</a><a class="by" href="https://x.com/yigitduman">BY YIGIT DUMAN</a></div></div><div id="vw"><div id="sc"><div id="st"></div></div></div><div id="ft"><div id="nav"><span id="ix" class="sub">1 / 365</span><input type="range" id="sl" min="0" max="364" value="0" step="any"></div><div id="ctl"><div class="grp"><button class="btn" id="rw" data-tooltip="REWIND" aria-label="Rewind"><svg class="ic-off" viewBox="0 0 24 24"><polygon points="11 19 2 12 11 5 11 19"/><polygon points="22 19 13 12 22 5 22 19"/></svg><svg class="ic-on" viewBox="0 0 24 24"><rect x="6" y="4" width="4" height="16" rx="1"/><rect x="14" y="4" width="4" height="16" rx="1"/></svg></button><button class="btn" id="ff" data-tooltip="PLAY" aria-label="Play"><svg class="ic-off" viewBox="0 0 24 24"><polygon points="13 19 22 12 13 5 13 19"/><polygon points="2 19 11 12 2 5 2 19"/></svg><svg class="ic-on" viewBox="0 0 24 24"><rect x="6" y="4" width="4" height="16" rx="1"/><rect x="14" y="4" width="4" height="16" rx="1"/></svg></button><button class="scrub on" id="spd" data-tooltip="SPEED" aria-label="Speed" role="slider" aria-valuemin="0.5" aria-valuemax="5" aria-valuenow="1"><svg viewBox="0 0 24 24"><path d="M12 14L8 10"/><path d="M3.34 19a10 10 0 1 1 17.32 0"/></svg><span id="spdv">1.0×</span></button></div><div id="cap"><span id="cap-date"></span><span id="cap-gen"></span><span id="cap-price"></span></div><div class="grp"><button class="scrub" id="pad" data-tooltip="PADDING" aria-label="Padding" role="slider" aria-valuemin="0" aria-valuemax="60" aria-valuenow="0"><svg viewBox="0 0 24 24"><polyline points="8 18 12 22 16 18"/><polyline points="8 6 12 2 16 6"/><line x1="12" y1="2" x2="12" y2="22"/></svg><span id="padv">0%</span></button><button class="btn" id="eye" data-tooltip="HIDE UI" aria-label="Hide UI"><svg viewBox="0 0 24 24"><path d="M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94"/><path d="M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19"/><line x1="1" y1="1" x2="23" y2="23"/></svg></button><button class="btn" id="kys" data-tooltip="SHORTCUTS" aria-label="Shortcuts"><svg viewBox="0 0 24 24"><rect x="2" y="4" width="20" height="16" rx="2"/><path d="M6 8h.01M10 8h.01M14 8h.01M18 8h.01M6 12h.01M10 12h.01M14 12h.01M18 12h.01M7 16h10"/></svg></button><div style="position:relative" id="gtw"><button class="btn" id="gtb" data-tooltip="GO TO DAY" aria-label="Go to day"><svg viewBox="0 0 24 24"><polygon points="3 11 22 2 13 21 11 13 3 11"/></svg></button><div class="pop" id="gtp"><button class="pop-today" id="gtod">&rarr; JUMP TO TODAY</button><div class="pop-hair"></div><div class="pop-row"><span class="lbl">DAY</span><input type="number" class="pop-input" id="gid" min="1" max="365" placeholder="1–365"><button class="pop-go" id="gidgo">GO</button></div><button class="pop-date" id="gdate" aria-expanded="false"><span class="lbl">DATE</span><span class="v empty" id="gdatev">SELECT</span><span class="ch"><svg viewBox="0 0 24 24" width="14" height="14"><polyline points="6 9 12 15 18 9"/></svg></span></button><div class="cal-wrap" id="calwrap"><button class="cal-back" id="calclose" aria-label="Back"><svg viewBox="0 0 24 24"><line x1="19" y1="12" x2="5" y2="12"/><polyline points="12 19 5 12 12 5"/></svg> BACK</button><div class="pop-hair"></div><div id="cal"></div></div></div></div></div></div><div class="overlay" id="panel"><div class="panel-body"><div class="panel-close-row"><button class="panel-close" data-tooltip="CLOSE" aria-label="Close"><svg viewBox="0 0 24 24"><polyline points="6 9 12 15 18 9"/></svg></button></div><div class="pg" id="pg"></div></div></div><div class="overlay" id="help"><div class="panel-body"><div class="panel-close-row"><button class="panel-close" data-tooltip="CLOSE" aria-label="Close"><svg viewBox="0 0 24 24"><polyline points="6 9 12 15 18 9"/></svg></button></div><div class="help"><div class="help-row"><span class="lbl">SPACE</span><span class="val">PLAY / PAUSE</span></div><div class="help-row"><span class="lbl">SHIFT+SPACE</span><span class="val">REWIND / PAUSE</span></div><div class="help-row"><span class="lbl">← →</span><span class="val">PREV / NEXT</span></div><div class="help-row"><span class="lbl">?</span><span class="val">TOGGLE THIS</span></div><div class="help-row"><span class="lbl">ESC</span><span class="val">CLOSE</span></div></div></div></div><div id="pvw"><img id="pvwimg" alt=""><div class="badge" id="pvwbadge"></div></div><script>const DATA=
;(function(){ var CDN="https://cdn.panorama.garden/"; var TOTAL=365,DAY=86400; var sc=document.getElementById("sc"),st=document.getElementById("st"), sl=document.getElementById("sl"),ixEl=document.getElementById("ix"), hdr=document.getElementById("hdr"),ft=document.getElementById("ft"), hint=document.getElementById("hint"), rwBtn=document.getElementById("rw"),ffBtn=document.getElementById("ffb"), eyeBtn=document.getElementById("eye"), setb=document.getElementById("setb"),setp=document.getElementById("setp"), spdr=document.getElementById("spdr"),spdv=document.getElementById("spdv"), padr=document.getElementById("padr"),padv=document.getElementById("padv"), gotob=document.getElementById("gotob"),gotop=document.getElementById("gotop"), gdate=document.getElementById("gdate"),gdgo=document.getElementById("gdgo"), gid=document.getElementById("gid"),gidgo=document.getElementById("gidgo"), gtodb=document.getElementById("gtodb"), mdl=document.getElementById("mdl"),mcEl=mdl.querySelector(".mc"), mclBtn=document.getElementById("mcl"), mtitle=document.getElementById("mtitle"), mdateEl=document.getElementById("mdate"),mmarket=document.getElementById("mmarket"), mdiv1=document.getElementById("mdiv1"),mdiv2=document.getElementById("mdiv2"), mdescEl=document.getElementById("mdesc"),mseedEl=document.getElementById("mseed"), mfootEl=document.getElementById("mfoot"), pvw=document.getElementById("pvw"),pvwimg=document.getElementById("pvwimg"),pvwbadge=document.getElementById("pvwbadge"); var N=DATA.length,W=0,H=0,padY=20,spd=1,subPx=0, aDir=0,aRaf=null, drag=false,moved=false,sx=0,ss=0, chrome=true,eyeHidden=false,ftVis=true,ftTimer=null, modalIdx=-1, lerpIdx=0,lerpRaf=null,lerpDrag=false, metaCache={},mdPos=null; var startTs=typeof START_TS!=="undefined"?START_TS:(N>0?DATA[0].t:Math.floor(Date.now()/1000)); var todayIdx=Math.max(0,Math.min(Math.floor((Date.now()/1000-startTs)/DAY),TOTAL-1)); function calc(){ var vh=window.innerHeight; H=Math.max(100,Math.round(vh*(1-padY/100))); W=Math.round(H*(16/9)); document.documentElement.style.setProperty("--ih",H+"px"); document.documentElement.style.setProperty("--iw",W+"px"); } calc(); window.addEventListener("resize",calc); function fP(raw){ var p=raw/1e18; if(p>=1e12)return"$"+(p/1e12).toFixed(1)+"T"; if(p>=1e9)return"$"+(p/1e9).toFixed(2)+"B"; if(p>=1e6)return"$"+(p/1e6).toFixed(2)+"M"; if(p>=1e3)return"$"+(p/1e3).toFixed(2)+"K"; if(p>=1)return"$"+p.toFixed(2); if(p>=0.01)return"$"+p.toFixed(4); if(p>0)return"$"+p.toFixed(6); return"$0"; } function fD(ts){ var d=new Date(ts*1000), mo=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"], dy=d.getUTCDate(), sf=(dy>3&&dy<21)?"th":(["th","st","nd","rd"])[dy%10]||"th"; return mo[d.getUTCMonth()]+" "+dy+sf+" "+d.getUTCFullYear(); } function fC(bps){ var v=(bps/100).toFixed(2); return(bps>=0?"+":"")+v+"%"; } function escHtml(s){var d=document.createElement("div");d.textContent=s;return d.innerHTML;} function isoDate(ts){ var d=new Date(ts*1000); var y=d.getUTCFullYear(),m=d.getUTCMonth()+1,dy=d.getUTCDate(); return y+"-"+(m<10?"0":"")+m+"-"+(dy<10?"0":"")+dy; } function getImageUrl(idx){ if(idx<0||idx>=N)return null; var dt=isoDate(DATA[idx].t); var pfx=(idx<N-1)?"optimized_updated_":"optimized_"; return CDN+pfx+dt+".webp"; } function getThumbnailUrl(idx){ if(idx<0||idx>=N)return null; var dt=isoDate(DATA[idx].t); var pfx=(idx<N-1)?"thumbnail_updated_":"thumbnail_"; return CDN+pfx+dt+".webp"; } function getMetaUrl(idx){ if(idx<0||idx>=N)return null; return CDN+"metadata_"+isoDate(DATA[idx].t)+".json"; } function buildCards(){ st.innerHTML=""; var i,e,c,img,ov,html; for(i=0;i<N;i++){ e=DATA[i]; c=document.createElement("div");c.className="cd"; img=document.createElement("img"); img.loading="lazy";img.src=getImageUrl(i);img.alt="Panorama #"+(i+1);img.draggable=false; c.appendChild(img); ov=document.createElement("div");ov.className="ov"; ov.setAttribute("data-idx",String(i)); var isGen=(i===0); html=""; if(isGen){ html='<span>Genesis</span>'; }else{ var isUp=e.c>=0; html='<span class="ch '+(isUp?"up":"dn")+'">'+fC(e.c)+'</span>'; html+='<span>'+fP(e.p)+'</span>'; } html+='<span style="color:var(--w9)">'+fD(e.t)+'</span>'; ov.innerHTML=html; c.appendChild(ov); st.appendChild(c); } var ps=Math.min(1,H/900); for(i=N;i<TOTAL;i++){ var tid=i+1,revTs=startTs+i*DAY,isPast=i<todayIdx,isToday=i===todayIdx,isSeason1=tid<=90; var u=document.createElement("div");u.className="unr"+(isSeason1?" s1":""); var inner=document.createElement("div");inner.className="ui"; inner.style.transform="scale("+ps+")";inner.style.transformOrigin="center center"; var numOp=isToday?0.06:isPast?0.04:0.025; var cc=isToday||isPast?" hi":""; var lb=isToday?"Today":isPast?"Generating":"Upcoming"; var h='<div class="unr-frame"><div class="unr-fb"></div>'; h+='<div class="unr-c tl'+cc+'"></div><div class="unr-c tr'+cc+'"></div><div class="unr-c bl'+cc+'"></div><div class="unr-c br'+cc+'"></div>'; h+='<div class="unr-n" style="color:rgba(255,255,255,'+numOp+')">'+tid+'</div></div>'; h+='<div class="unr-lb">'; if(isToday)h+='<div class="unr-dot" style="background:rgba(255,255,255,0.3)"></div>'; else if(isPast)h+='<div class="unr-dot bth"></div>'; h+='<span class="unr-lt">'+lb+'</span></div>'; h+='<div class="unr-rows">'; if(!isPast)h+='<div class="unr-row"><span class="unr-rl">Price</span><span class="unr-rv">0.1 ETH</span></div>'; h+='<div class="unr-row"><span class="unr-rl">Token</span><span class="unr-rv">#'+tid+'</span></div>'; h+='<div class="unr-row"><span class="unr-rl">Reveals</span><span class="unr-rv">'+fD(revTs)+'</span></div>'; if(isSeason1)h+='<div class="unr-row"><span class="unr-rl">Series</span><span class="unr-rv am">Season I</span></div>'; h+='</div>'; if(isToday){h+='<div class="unr-sep"></div><div class="unr-desc" style="color:rgba(255,255,255,0.25)">Buy or sell $PANORAMA to direct what gets generated next.</div>';} else if(!isPast){h+='<div class="unr-sep"></div><div class="unr-desc">Listed on SuperRare after reveal.</div>';} inner.innerHTML=h; u.appendChild(inner); st.appendChild(u); } } function updateOverlays(){ var bot=ftVis&&chrome?Math.max(12,52):12; var vis=chrome&&padY<50; var ovs=st.querySelectorAll(".ov"); for(var i=0;i<ovs.length;i++){ ovs[i].style.bottom=bot+"px"; ovs[i].style.display=vis?"":"none"; } } st.addEventListener("click",function(ev){ if(moved)return; var t=ev.target.closest(".ov"); if(!t)return; var idx=parseInt(t.getAttribute("data-idx")); if(!isNaN(idx))openModal(idx); }); function fetchMeta(idx,cb){ if(idx<0||idx>=N)return cb(null); if(metaCache[idx]!==undefined)return cb(metaCache[idx]); var url=getMetaUrl(idx); if(!url){metaCache[idx]=null;return cb(null);} fetch(url).then(function(r){return r.ok?r.json():null;}).then(function(d){ metaCache[idx]=d||null;cb(d||null); }).catch(function(){metaCache[idx]=null;cb(null);}); } function openModal(idx){ if(idx<0||idx>=N)return; modalIdx=idx; var e=DATA[idx]; var isGen=(idx===0); mtitle.textContent="Panorama #"+(idx+1); mdateEl.textContent=fD(e.t); if(isGen){ mmarket.innerHTML='<div class="mlbl">Origin</div><span style="font-family:var(--dsp);font-size:1.125rem;color:#fff;letter-spacing:.05em">Genesis</span>'; }else{ var isUp=e.c>=0; mmarket.innerHTML='<div class="mlbl">PANO/USD</div><div class="pr"><span class="mp">'+fP(e.p)+'</span><span class="mch '+(isUp?"up":"dn")+'">'+fC(e.c)+'</span></div>'; } mdiv1.style.display="none";mdiv2.style.display="none"; mdescEl.innerHTML="";mdescEl.style.display="none"; mseedEl.textContent="";mseedEl.style.display="none"; mfootEl.innerHTML='<div><span id="ms2" style="color:var(--w25);font-size:.75rem;font-family:var(--mono)"></span></div><div style="display:flex;align-items:center;gap:16px"><a href="'+getImageUrl(idx)+'" target="_blank" rel="noopener noreferrer">Open Image<svg fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M7 17L17 7M17 7H7M17 7v10"/></svg></a><a href="https://superrare.com/artwork/eth/'+(typeof NFT_ADDR!=="undefined"?NFT_ADDR:"")+'/'+( idx+1)+'" target="_blank" rel="noopener noreferrer">SuperRare<svg fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M7 17L17 7M17 7H7M17 7v10"/></svg></a></div>'; fetchMeta(idx,function(meta){ if(modalIdx!==idx)return; if(!meta)return; if(meta.prompt){ mdiv1.style.display="";mdiv2.style.display=""; mdescEl.style.display="block"; mdescEl.innerHTML='<div class="mlbl">Painting Description</div><p>'+escHtml(meta.prompt)+'</p>'; } if(meta.seed!=null){ var s2=document.getElementById("ms2"); if(s2)s2.textContent="Seed: "+meta.seed; } }); mdl.classList.add("open"); document.body.style.overflow="hidden"; requestAnimationFrame(function(){mdl.classList.add("vis");mcEl.classList.add("vis");}); } function closeModal(){ mdl.classList.remove("vis");mcEl.classList.remove("vis"); setTimeout(function(){mdl.classList.remove("open");document.body.style.overflow="";modalIdx=-1;},200); } mclBtn.addEventListener("click",closeModal); mdl.addEventListener("click",function(ev){if(ev.target===mdl)closeModal();}); document.addEventListener("keydown",function(ev){if(ev.key==="Escape"&&modalIdx>=0)closeModal();}); function preciseIdx(){return W>0?sc.scrollLeft/W:0;} function updSl(){ var pi=preciseIdx(); var ri=Math.round(pi); if(ri<0)ri=0;if(ri>=TOTAL)ri=TOTAL-1; ixEl.textContent=(ri+1)+" / "+TOTAL; if(!lerpDrag)startLerp(); } function startLerp(){ if(lerpRaf)cancelAnimationFrame(lerpRaf); lerpRaf=requestAnimationFrame(lerpTick); } function lerpTick(){ var target=preciseIdx(); var diff=target-lerpIdx; if(Math.abs(diff)<0.1){lerpIdx=target;sl.value=lerpIdx;lerpRaf=null;return;} lerpIdx+=diff*0.15; sl.value=lerpIdx; lerpRaf=requestAnimationFrame(lerpTick); } sc.addEventListener("scroll",updSl); sl.addEventListener("input",function(){ lerpDrag=true; if(lerpRaf){cancelAnimationFrame(lerpRaf);lerpRaf=null;} var v=parseFloat(this.value); lerpIdx=v; sc.scrollTo({left:Math.round(v)*W,behavior:"auto"}); ixEl.textContent=(Math.round(v)+1)+" / "+TOTAL; }); sl.addEventListener("mousedown",function(ev){lerpDrag=true;ev.stopPropagation();}); sl.addEventListener("mouseup",function(){lerpDrag=false;}); sl.addEventListener("touchstart",function(ev){lerpDrag=true;ev.stopPropagation();},{passive:true}); sl.addEventListener("touchend",function(){lerpDrag=false;}); var pvwW=160,pvwH=80; var navEl=document.getElementById("nav"); navEl.addEventListener("mousemove",function(ev){ if(lerpDrag){pvw.style.display="none";return;} var rect=sl.getBoundingClientRect(); var ox=ev.clientX-rect.left; if(ox<0||ox>rect.width){pvw.style.display="none";return;} var prop=Math.max(0,Math.min(1,ox/rect.width)); var idx=Math.round(prop*(TOTAL-1)); if(idx>=N){pvw.style.display="none";return;} pvwimg.src=getThumbnailUrl(idx)||getImageUrl(idx); pvwimg.onerror=function(){pvwimg.src=getImageUrl(idx);pvwimg.onerror=null;}; pvwbadge.textContent=idx+1; pvw.style.width=pvwW+"px";pvw.style.height=pvwH+"px"; pvw.style.left=(ev.clientX-pvwW/2)+"px"; pvw.style.top=(rect.top-pvwH-8)+"px"; pvw.style.display="block"; }); navEl.addEventListener("mouseleave",function(){pvw.style.display="none";}); sc.addEventListener("wheel",function(ev){ if(sc.scrollWidth<=sc.clientWidth)return; var d=ev.deltaX||ev.deltaY; if(d===0)return; ev.preventDefault(); sc.scrollLeft+=d; },{passive:false}); sc.addEventListener("mousedown",function(ev){ drag=false;moved=false;sc.style.cursor="grab"; if(ev.target.closest(".ov"))return; drag=true;sx=ev.pageX;ss=sc.scrollLeft;sc.style.cursor="grabbing"; mdPos={x:ev.clientX,y:ev.clientY}; }); window.addEventListener("mousemove",function(ev){ if(!drag)return;ev.preventDefault(); var dx=ev.pageX-sx; if(Math.abs(dx)>5)moved=true; sc.scrollLeft=ss-dx; }); window.addEventListener("mouseup",function(){ if(!drag)return;drag=false;sc.style.cursor="grab"; }); var tx=0,ts2=0; sc.addEventListener("touchstart",function(ev){tx=ev.touches[0].pageX;ts2=sc.scrollLeft;},{passive:true}); sc.addEventListener("touchmove",function(ev){sc.scrollLeft=ts2-(ev.touches[0].pageX-tx);},{passive:true}); function aTick(){ if(!aDir){aRaf=null;return;} subPx+=spd*1.5*aDir; var amt=Math.trunc(subPx); if(amt!==0){sc.scrollLeft+=amt;subPx-=amt;} var max=sc.scrollWidth-sc.clientWidth; if(sc.scrollLeft<=0&&aDir<0){stopA();return;} if(sc.scrollLeft>=max&&aDir>0){stopA();return;} aRaf=requestAnimationFrame(aTick); } function stopA(){ aDir=0;subPx=0; if(aRaf)cancelAnimationFrame(aRaf);aRaf=null; rwBtn.classList.remove("on");ffBtn.classList.remove("on"); clearFtTimer(); if(!eyeHidden){ftVis=true;ft.classList.remove("hide");} updateOverlays(); } function startA(dir){ aDir=dir;subPx=0; rwBtn.classList.toggle("on",dir===-1); ffBtn.classList.toggle("on",dir===1); if(!aRaf)aRaf=requestAnimationFrame(aTick); startFtTimer(); } rwBtn.addEventListener("click",function(){if(aDir===-1){stopA();return;}startA(-1);}); ffBtn.addEventListener("click",function(){if(aDir===1){stopA();return;}startA(1);}); function startFtTimer(){ clearFtTimer(); ftTimer=setTimeout(function(){ftVis=false;ft.classList.add("hide");updateOverlays();},3000); window.addEventListener("mousemove",onFtMove); } function clearFtTimer(){ if(ftTimer){clearTimeout(ftTimer);ftTimer=null;} window.removeEventListener("mousemove",onFtMove); } function onFtMove(){ if(eyeHidden)return; ftVis=true;ft.classList.remove("hide");updateOverlays(); if(ftTimer)clearTimeout(ftTimer); ftTimer=setTimeout(function(){ftVis=false;ft.classList.add("hide");updateOverlays();},3000); } eyeBtn.addEventListener("click",function(){ chrome=false;eyeHidden=true; hdr.style.opacity="0";hdr.style.pointerEvents="none"; ft.classList.add("hide"); updateOverlays(); }); sc.addEventListener("click",function(ev){ if(chrome)return; if(ev.target.closest(".ov"))return; if(mdPos&&Math.abs(ev.clientX-mdPos.x)<5&&Math.abs(ev.clientY-mdPos.y)<5){ chrome=true;eyeHidden=false; hdr.style.opacity="";hdr.style.pointerEvents=""; ft.classList.remove("hide"); updateOverlays(); } }); setb.addEventListener("click",function(ev){ev.stopPropagation();setp.classList.toggle("open");gotop.classList.remove("open");}); spdr.addEventListener("input",function(){spd=parseFloat(this.value);spdv.textContent=spd.toFixed(1)+"x";}); padr.addEventListener("input",function(){ padY=parseInt(this.value);padv.textContent=padY+"%"; var ci=Math.round(preciseIdx()); calc();buildCards();sc.scrollLeft=ci*W;updateOverlays(); }); gotob.addEventListener("click",function(ev){ev.stopPropagation();gotop.classList.toggle("open");setp.classList.remove("open");}); gdgo.addEventListener("click",goToDate); gidgo.addEventListener("click",goToId); gtodb.addEventListener("click",function(){var ti=Math.max(0,Math.min(Math.floor((Date.now()/1000-startTs)/DAY),TOTAL-1));sc.scrollTo({left:ti*W,behavior:"smooth"});gotop.classList.remove("open");}); gid.addEventListener("keydown",function(ev){if(ev.key==="Enter")goToId();}); function goToDate(){ var v=gdate.value;if(!v)return; var ts=new Date(v+"T12:00:00Z").getTime()/1000; var closest=0,best=Infinity; for(var i=0;i<TOTAL;i++){ var ct=i<N?DATA[i].t:startTs+i*DAY; var d=Math.abs(ct-ts); if(d<best){best=d;closest=i;} } sc.scrollTo({left:closest*W,behavior:"smooth"}); gotop.classList.remove("open");gdate.value=""; } function goToId(){ var v=parseInt(gid.value); if(isNaN(v)||v<1||v>TOTAL)return; sc.scrollTo({left:(v-1)*W,behavior:"smooth"}); gotop.classList.remove("open");gid.value=""; } document.addEventListener("mousedown",function(ev){ if(!document.getElementById("setw").contains(ev.target))setp.classList.remove("open"); if(!document.getElementById("gotow").contains(ev.target))gotop.classList.remove("open"); }); function hideHint(){hint.style.animation="none";hint.style.opacity="0";hint.style.transition="opacity .5s";setTimeout(function(){hint.style.display="none";},500);} ["wheel","mousedown","touchstart","scroll"].forEach(function(e){ sc.addEventListener(e,hideHint,{once:true,passive:true}); }); buildCards(); updateOverlays(); var params=new URLSearchParams(location.search),sid=parseInt(params.get("id")); if(sid>0&&sid<=TOTAL){sc.scrollLeft=(sid-1)*W;} else if(N>0){sc.scrollLeft=(N-1)*W;} updSl(); })(); </script></body></html>
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Panorama</title><style> @font-face{font-family:'Noto Sans';font-weight:600;font-display:swap;src:url(data:font/woff2;base64,d09GMgABAAAAABMcAA8AAAAAIZwAABLCAAID1wAAAAAAAAAAAAAAAAAAAAAAAAAAGhYbIBxCBmA/U1RBVFoAdBEICrQUp2UBNgIkA4JMC4EoAAQgBYRGByAbvhmjooaTWjRkf33AjSHQh9aNBIGiGgExakNbw9CiCqto4Gp5zm+EXztC0wfYOLUK6nu++1WJj2NI12etiue/9gM97+4PAThA9AgObXRsJsKgkORjDEGFrWx3eH6bPRA5XROKBX4DpErJligFDJxoE+rAqrm1q3Ju7aLS7e501RedtuYcGBCQR84rO8eacmjYl37+msIDOeMRD6SAK65jEfXXL/KfU8Ci01LqZM8pzWoHHt1TDtkLfgIKABz/nTYvKGZ2S3MRFTzjK+nfJbVOdPDz05x9SdlLdkzHEA5lcQiVvJ/j7uVfbv1yTcJKOvZMHRIhqWRMlStjDHeOocZWFZKhcAatkVDL5s/XCCNGkrYmy+UMpcLI43gGzOjYXy2iMF7SN8o8NjDiAceajwB28LClCCQYoCMDppzdlJAXIl3rioYB+3ptO/cVAltuRWtDW+4HWptGc5SkGuKKTzx5pjYAJ751XcQtPZBx8XBEPAIORwwCjXykI2fsBnAdtJiEYPz/NjBcr+FoamRhJrN9iyHj56Od+PTX1uvBn9xqaJ1S8+R6awPMxP4rxoUpwJn7pyI4i9oQCToWTcnVABRtKNespShJUF5qPcJlmjV4kMFiFBKlup3zYvF0iLTqsy2WjUYlQPyc/bcPvO8tT23qXR/IftHBSAVyqncz4QKQ3m79ABj1GRj7YqmFyfmAgrvXjNCUNwqirSzAZYOxmoUZixr+Or3MY7NxBZrwGShjUMZYduU4VRWLU6jxTCMV+oeHfcpFPXCOgBsQJ98sF/KuGKHIYZRxXnAKGAke/eEhGeyDJHPFMPX3sNkCOPDuizhP86GEIxEYp/vta8a2MOFUfRrU8fUOOwQCFCgvZ7SchDh03Vcmf6Ii9hRrmZ3sjOyoZwQfFgpnKQ9uaAMgAOrHG0bvWZxubHgFtJ7G9g2TCdTppmgGvQXJ8kmhoZ24R0uLPRZf12kRb3M4bUOFiNIV4CDW/i++tr83d7n2wvKG8EnWLV2CNPH7OKWvl0L6MbubrMGuY6vEf2TfYQRrB77nwI69iv6Wzg4CNOACxeT1zEzBLcOTh5PMCHJuyK7AEnW9pwH3HDHCzKaDrJvTb8S/Sv97utt/qB8rD6VJ3gqed3wEj0zuHJNpFVUohxLpEF+H2V0BzKlEDvQxHCaTLbhmbUew1rkP40vUHp/kSpdc9AM32J1jO0hBkkmW5+uPy0GAMHWHxTn0XgDNAjFNZTxIcXmyfJy15hQL1vizZ7FaI2ht852sTLtdLFh+C3EHUG8+pZNjPGyJt38UPFXDU77u2c+eMBgX7sO4/pXn94sbZbYxULSOvby4zfhKE2L1OY5dHEGI5YxoXF5+Sdxem7TPx3rfh1G79WyrvUqNB3L2EFzTHefTSVc9mHvFCbiHdo0uauf8lpX1AGHqHku0B3JghLaotbfXhhDgOJG60Tc8E4CzqljF+TDdT8TSQuEixW0j1PGFBDsVSTGpLS9qHsR5Tmaoq1Ze8cU1kCdRA7+GSzxDd1RyClSTglcSzzFZKTEeCk8UzWM/tjAiu7jPQlIZweoOncBqef2QLE8dJqI3D6bBFbRBed0e6iMVKk3sCEaDO+5GOXTILlole5CSrmYQw3sXiIAR4dYwM8HmgIhwVvDhlDSIKJmrlohH/cnRTtGVuJnhoZMhvsVdvsTj9gmubHr0+heEN27IkumNm4U/G7+ijYcamTvgdalnPimMs9ytTycM2EvaFfVs4Jp+PljfY0DdYl+u8ZvvCh8NbfbObmCDfH7LX99RWOAwZ6JuLKbXoasnzY5nU4HKzn53N3aNyWBnGBJeEddPyPJXVxxy8lZaqwCrpbR0+4xKAN2+5T3X/UpJmCFq0pqFFb4peQYOe0ussPcuC/o54iSDA4ig5LPeXqbSosZcUqF08klyYxuJE9k7kWyvt/gE9hTNEEGm7NeOB0eJTK60r1xZsJfQ9Z6ZSjKpvuKBVcn+eOP7Z1igvbh9fjb+a0HF199f8XVDadrfLp4cnz4VqmXLDEyr8jnj4kqCaWzy0OlhhEy6PkTKJf+6vzxV0KLUAYLoueSExSeHjyXZM++G+K2mIZVu8x4O/AIjGNEYVxb64af8xv1hgOMXub9KwxUVQuwTF3lYBEysGjDJwQnAIJgkywl1D97opM9h5CtssFCvL45HN20olX0XjN63pm/07gjx5xqeXhe4X/M+b4csk3gwjoeF+zNXmSBz4BlXJxCXCy807OS3WrVe6G340pJ8YR3D0Komt/jhvCIChOts49nUEQ1I7TBITDUUS0TZ1KI0SVLHexu0PsjpTqzaMeERXy04vXFsBzIeJrNHFBqQQPYRZeZZFjdvJiKvq/3gZ6SOVTRrpa9+uKs5sbfymFun5kxurOibkr77Yx9RgDLlU+fQWCE1+0LB/93VeedbOg+YFnjOQWOqj0/WsrlcQxn1lENtC/iTdpKqbDa0eu+aCkaBVmBs9NcmNqhV9/bMTUcnal+pMtawUlHor4gT4NYTW3FrMOhsd5mL2oNBW6vTDaUbtNp0AwRl6HXaDMMbpuGJ+uGJUrTVMynH0e42uzMdRVCafkma8aPFG3Q6vA7wngiLcthajsZZdnPbiINg2T/0V37n6tUrtmtUr2uzbGiWpYktLpHxINPn54axyRCXYywhTlm3nStMZ2kE+Qxt6tp5H2X+kIsfPzzl42xoZ3I+N5CHchFGVcvTQxq//sMOa+Ym6bJ7wTTVUsIISEc5CCPKpdTgPdnyzI1We+aIdOW3IZpyOWEUmFfc8N8Yrxi/7r9+uwI8aRhKd2Q6EGUbUJ6ZbnUXgJ4H/z88oN2EoJs0yjgEjYNF9xIftWd3C1C13tRF4opyjqYo5OWNxWKs3UFvib6+hz/WGPMmtVLpdEpym9eXXPzPoSbFwKL+K8nTCXEjb/1rV8itLw42AuyX/jPnPFobpCFzWpgMa+5qreuVhlqcKtJVsfOLRWJGwFNxviWMLAS/k9gkg4Y+EVec6C02yCWBXkGVuBp9qvn1WhzDa5ALc2WOZJW0VqYwpn+YRRsQ5m7/wyrx9LVQLM2d5YCyyT/SOyKvUD7tuut/uT1pWjomETFkvLHz2zsg+7q2niOu0FkUkR5xqTCA4bZo6lOZbE2akC41yxwZykStPy3Q2ZQ4Ywz+GaCy5LM6aEGbq4PpSXJjGoi3krW+XK4m2UdEfr7nGUVexudWGSyiSKPYVFBG1FmI7X8N8RVao1igFuYN/pSe8em/X4HOpPJI5JfipFaAfyyvJkrMIlq28ph6no5P1bMlUm+EZbJHGKJiCYdk+MUZ5yIo6UKpuYaoxNFfKuS/MQl494znioJrvSP0YTL+wrdXLt87QCAPA9QmGaqTFrS6OpkebDWmIfd2ZP5qXCkG+dmC20xZKY9zB9Y1QbHxe5O0FlLb33N5Co1RUqAW5c39MSP9t2+/3G3jtoBb9i3w8HT4Q45fysPvT1ceFnUN1xvcTOgGnfUvlzkOktWXElSXlsTfXRt/l/y25JcvFNpb95WyE6+Dgonli9x+OqRcbIivU+eQtSKVrCzGsiMnv8i1zGOxtLRC/9WaVzHbPS7h2F8FYGUd25qdr8mYLXUwYxVSA6sIs7VpVelMcfOaUsNYs5O+wFs1wHcXBJNv0xrYdhzY2dRVsnuvs/Xp5OdN2+xFmxa2uXmhGn6h/2dLT2c/+HnD5IZQ8llECPE4GbzdP7k+hHuMCCFA16IZoaEOjCW8vti6u73Fu3uspEMcTh6nNczyJbNNjQphq91Ca52ttJL0xYdXgY2DMrFscHIQEkODwE43FWf+XgyZFEDPmglem8ho/zn0cz429dR67uHBA0X8ugoWWLT2iUTNf83hDXEI15quf7E6XgRKJof8lAhYNW5ExMUZ4UXEaGzy5CU2Ypx9crK7MxvugBvjEHcM4PJ2JwuBh6vgWnhDbHKbgxaXCOv8Pjcz1Ape1bopC12BPl6xt4/vqiQvcjcZx9aXxlrWlZrGUpoclFiJTKf3ysgxR1f54kZ9iYwSA7SJ4aGWemaGW6kOkWwG5NDk3aD5WwnPgPPQhToReFXroixyBv44dPHQ0A7EKoTfP4i/gyEu1fFzTdcVb0jXjaUG04Ym79dbP3Lo9SIp6b3fwN83FbKyVo4zT5/w4eHO8RAkpNVtSiekqnLipn+EwmuYMrE3yDCIqnHx5LqTziRa9i9tqfgXHyVtsufTzMA/1383khq5C9b8XShvH9BWDa9c1XF38JrX7rALtUTIUnB1ALRP/Dax5Mlv3srTgS++KiB99Yeznc8BiXry/MTylhH56NHOxMTObVvskY0rzk0MBjZotq3qR6H7V22xN4/2ztmiPLwqkkU+NkNVEtgAutcdwB7Ervim5V3fyq2wUdiKd8sBY3inbPibU8lzUd+cXw5ykN4qZEn4J28AGQacvNq68tnhUlwhIhz/I4NtyaGZRO5eT19cKRwnyKDnWVIURG9bY6qB4oz7j0Z6misoVMiY4K4GIucgnWamrKJ1+VI/v69SrpQZaeWJTbP/GOjOZ9Qkm8TTPPk+g0hU5vUJfYCbaImJld2VNbreDrGF4UTdJ1YdfEigv4G3SUUE614qzYj9IfjQiAGIRH/z6WVtyyvJY6c+jc8sxF0Z/KMap4//dOw2rE4vsjlneQvKC0XSCo9H6gP0PFOjSBixqWphRqvdyHNidtVEi1Eye7dU21Pul/e3KC1+vlxl/ZzUCcB+dd61/mteqSeHqKfZ3dki8j+GTD9icUounpIzDyDzBDbynvhp2mCuVVgf5ZfIqmauat5dmSRT6VSSWdPJ0xELrFRh1ZzVCxdE182vJZnSHOISqU+S/dNnX1OSZWm2BeCuNkeIem0q+kaWzEthevSBAYP8Hx53FOeUJgz8MQDu4gkDBOWjjK3E3G0ZhBW5xOUA+j7l+S+1Hz9DZ8zhugcC3GxrIR0W20pcjs84Qsw9moFfAe6tSBOmxfWUhw9tP7jy5Zef8dbu+/zj031/9IF75XNczCv3+xsD/UbFWyx1gceZNmCk8pdmsiRJM94NoRqlj//zl2+O3EEpjT/oo4AWrlzbwyCfxrMIZpeav94qlBGZzv8QFMzU5DSojZW5UqE/V2MkNWjK5D0xpdMSVap6hkqFaa5hBmM41SUUp9m7mRppBQjlBeYsGy7P75utUJJPr3qMRLFxzwZm1KP0yE/HzsTV0jU4ffwscZK9gZUnSbELi0WlYGwKJiMLqbSw5P7T8yryeysVcrmZUYWYrg/OGOgwMwM4AwLrKygrlIoqPR5xCajPm5m9a1rbiY/Raaj1neTUaP8q/Mh//r+7McrnmAJ5JlHxTGU4WplCKfh/9cIQBqMli+mmmGU2z4fZTSyxW7FZ1Akc2teFhmspVJBdmnKeWCH8J4dZSKCbtWkmgZ2WF7V3bJ69OZXUClh4QjVKh5zq+iBH6iUzvLqqAaP0Hx5vBOeSJoD79/ALGxX+83tnIAh7X8hDioX38eDhF+qX347jEYxT736pln++dCNhQA1vnKbagkZklK5YRLVilxZiVRdG4IhZm6drujXwvhHCMnAbezJhZdu5ZquVpxOuYFf233qxKwFhUYhfdXYBhCigb6nnL/jQ5xM6nFRpqvZmzc6PUZn7X23Gg5s7rYnNfwWWFMPrpoILcqVyy5bRUaWqjm3erGnk4f5U6s2jgPhW9Wh1T8BHgQnUEqSyiFWmFxZGHREy+X7UYmBXYbyoo2T957oVYEh70ZdX76WZ0n8TWtwXAN+f/j8H+HttK/1v2X8Z++OwDjBSghTzz9DYuFmGJX+9QYeRMj0X4lRWCKA+UWQhXKS4LYSYzzH8RVFa5JoI1LWZhZNTSlmFJauVEoZEAdILg6YljFHQl7IkMs/jXhsnMzuAPFeSfqK8o2qY/El7vvZzkvzCX1E5ld9PZ9EwM1tJ2xlvqUAYLtQzBfPSGhJ2RGbla950AO2j+PSLSxmQvfAxoSbKVr/hKkWAqaxi0Jr6KTOdMWvR72ThzExbuw4oRBq5uo2ztE62/Ba7NsDSqQqTA7TdpoT9XJ8L1D8p+DWRUrQvkJqCDAwXCiVFD6Qi+dDvOcFLcWpI1BvfAXllubN5MdGXvGarL7yDOW+EuQXljrS0xB1gwPgqhzwYGFsNeTyzKkpyWDhECli4gpTc9G6m0axFl6hG9Rq0gnCxcXFBijSoBbFp1vpcA3GIZhQkeDXPUmlTVoNmimJ9TnZXSmrpWWKsZl+9RmPLNlWYqgVFCKMpGNU9U1NLseHasAA19onhYEXVNhTSRnVsFM6oseelxGK5Bbg81ipAEROpqZqwGq7+vnptAa8dxcXExpFPwsDekKENhAgWO2dIHlwVb4zRA4mJuoE3mFDytrwmBaMyuC1tRSMCwkxGYIXclSQpIOLIXfVxAQA=) format('woff2')} *{margin:0;padding:0;box-sizing:border-box} :root{--bg:#0a0a0a;--em:#34d399;--rd:#f87171;--bl:#60a5fa;--b5:#3b82f6;--b9:rgba(30,58,138,0.5);--w9:rgba(255,255,255,0.9);--w7:rgba(255,255,255,0.7);--w6:rgba(255,255,255,0.6);--w5:rgba(255,255,255,0.5);--w4:rgba(255,255,255,0.4);--w3:rgba(255,255,255,0.3);--w25:rgba(255,255,255,0.25);--w1:rgba(255,255,255,0.1);--w08:rgba(255,255,255,0.08);--w06:rgba(255,255,255,0.06);--w03:rgba(255,255,255,0.03);--w05p:rgba(255,255,255,0.05);--g7:#374151;--g8:#1f2937;--dsp:'Noto Sans',system-ui,sans-serif;--mono:ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,monospace} html,body{height:100%;background:var(--bg);color:#fff;font-family:system-ui,-apple-system,sans-serif;overflow:hidden} body{display:flex;flex-direction:column} ::-webkit-scrollbar{display:none} *{scrollbar-width:none} #hdr{position:absolute;top:0;left:0;right:0;z-index:50;height:80px;display:flex;align-items:center;justify-content:space-between;padding:0 16px;transition:opacity .3s} @media(min-width:768px){#hdr{padding:0 64px}} .logo{font-family:var(--dsp);font-size:1.875rem;font-weight:600;text-transform:lowercase;color:#fff;text-decoration:none;cursor:pointer;transition:opacity .15s,transform .15s} .logo:hover{opacity:.8;transform:scale(1.05)} #vw{flex:1;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center} #sc{width:100%;overflow-x:scroll;overflow-y:hidden;cursor:grab;display:flex;align-items:center} #st{display:flex;height:var(--ih)} .cd{flex:0 0 var(--iw);height:var(--ih);position:relative;overflow:hidden;background:var(--g8)} .cd img{width:100%;height:100%;object-fit:cover;-webkit-user-drag:none;user-select:none;pointer-events:none} .ov{position:absolute;right:24px;z-index:10;background:rgba(0,0,0,0.6);backdrop-filter:blur(1px);-webkit-backdrop-filter:blur(1px);padding:10px 16px;cursor:pointer;white-space:nowrap;transition:bottom .3s ease-in-out,opacity .3s;user-select:none;display:flex;align-items:baseline;gap:12px} .ov:hover{background:rgba(0,0,0,0.75)} .ov span{font-size:14px;letter-spacing:-0.025em;color:var(--w9)} .ov .ch{font-weight:500} .up{color:var(--em)!important} .dn{color:var(--rd)!important} .unr{flex:0 0 var(--iw);height:var(--ih);overflow:hidden;background:var(--bg);display:flex;align-items:center;justify-content:center;position:relative} .unr.s1{background:#0d0b08} .ui{display:flex;flex-direction:column;align-items:center;position:relative;z-index:1} .unr-frame{position:relative;width:420px;height:236px;margin-bottom:40px} .unr-fb{position:absolute;inset:0;border:1px solid var(--w03)} .unr-c{position:absolute;width:20px;height:20px} .unr-c.tl{top:0;left:0;border-top:1px solid var(--w08);border-left:1px solid var(--w08)} .unr-c.tr{top:0;right:0;border-top:1px solid var(--w08);border-right:1px solid var(--w08)} .unr-c.bl{bottom:0;left:0;border-bottom:1px solid var(--w08);border-left:1px solid var(--w08)} .unr-c.br{bottom:0;right:0;border-bottom:1px solid var(--w08);border-right:1px solid var(--w08)} .unr-c.hi{border-color:rgba(255,255,255,0.12)} .unr-n{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--dsp);font-weight:400;font-size:6rem;line-height:1;letter-spacing:-0.02em} .unr-lb{display:flex;align-items:center;gap:8px;margin-bottom:32px} .unr-dot{width:4px;height:4px;border-radius:50%;background:rgba(255,255,255,0.2)} @keyframes breathe{0%,100%{opacity:1}50%{opacity:.4}} .unr-dot.bth{animation:breathe 3s ease-in-out infinite} .unr-lt{font-size:10px;text-transform:uppercase;letter-spacing:0.35em;color:rgba(255,255,255,0.18)} .unr-rows{width:288px} .unr-row{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:12px} .unr-rl{font-size:11px;text-transform:uppercase;letter-spacing:0.15em;color:rgba(255,255,255,0.22)} .unr-rv{font-size:13px;font-family:var(--mono);color:rgba(255,255,255,0.45)} .unr-rv.am{color:rgba(251,191,36,0.35);font-family:var(--dsp)} .unr-sep{height:1px;background:var(--w06);margin:24px 0;width:288px} .unr-desc{text-align:center;font-size:12px;line-height:1.625;margin-bottom:24px;color:rgba(255,255,255,0.18);font-family:var(--dsp);width:288px} #ft{position:absolute;bottom:0;left:0;right:0;z-index:40;transition:all .3s ease-in-out;padding:0 16px} @media(min-width:768px){#ft{padding:0 64px}} #ft.hide{opacity:0;transform:translateY(100%);pointer-events:none} #ftc{display:flex;align-items:center;gap:12px;width:100%;padding:12px 0} #nav{flex:1;display:flex;align-items:center;gap:8px;min-width:0} #ix{font-size:12px;font-family:var(--mono);min-width:70px;text-align:right;color:#fff;white-space:nowrap;font-variant-numeric:tabular-nums} #sl{flex:1;height:8px;border-radius:4px;appearance:none;-webkit-appearance:none;cursor:pointer;background:#4b5563;min-width:0} #sl:focus{outline:2px solid var(--b5);outline-offset:2px} #sl::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:#fff;cursor:pointer} #sl::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:#fff;cursor:pointer;border:none} #ctl{display:flex;align-items:center;gap:4px;flex-shrink:0} .cb{background:none;border:none;color:#fff;cursor:pointer;padding:6px 8px;border-radius:9999px;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s} .cb:hover{background:var(--g7);color:#fff} .cb.on{color:var(--bl);background:var(--b9)} .cb svg{width:18px;height:18px} .popup{position:absolute;bottom:100%;right:0;margin-bottom:8px;background:rgba(10,10,10,0.95);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-radius:12px;box-shadow:0 25px 50px -12px rgba(0,0,0,0.5);padding:16px;z-index:50;border:1px solid var(--g7);display:none} .popup.open{display:block} .popup label{font-size:11px;font-weight:500;color:#9ca3af;display:flex;align-items:center;gap:6px} .popup .row{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px} .popup .val{font-size:11px;font-family:var(--mono);color:#d1d5db} .popup input[type=range]{width:100%;height:6px;accent-color:var(--b5);cursor:pointer;background:var(--g7);border-radius:9999px;margin-bottom:16px;-webkit-appearance:none;appearance:none} .popup input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--b5);cursor:pointer} .popup input[type=range]::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--b5);cursor:pointer;border:none} .popup input[type=range]:last-child{margin-bottom:0} .popup h3{font-size:.875rem;font-weight:500;color:#d1d5db;margin-bottom:4px} .popup .sep{display:flex;align-items:center;gap:12px;padding:4px 0;margin:8px 0} .popup .sep .line{flex:1;height:1px;background:var(--g7)} .popup .sep .or{font-size:11px;font-weight:500;color:#6b7280} .popup input[type=date],.popup input[type=number]{flex:1;padding:6px 12px;font-size:.875rem;background:var(--g8);border-radius:8px;border:1px solid var(--g7);color:#fff;outline:none;transition:border-color .15s;color-scheme:dark} .popup input[type=date]:focus,.popup input[type=number]:focus{border-color:var(--b5)} .popup input[type=number]::placeholder{color:#4b5563} .popup .go{padding:8px;background:#2563eb;color:#fff;border:none;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s} .popup .go:hover{background:var(--b5)} .popup .ir{display:flex;gap:8px;margin-top:8px} #mdl{position:fixed;inset:0;z-index:900;display:none;align-items:center;justify-content:center;padding:16px;transition:background .2s} #mdl.open{display:flex} #mdl.vis{background:rgba(0,0,0,0.85)} .mc{position:relative;max-width:672px;width:100%;max-height:90vh;overflow-y:auto;background:var(--bg);border:1px solid var(--w06);border-radius:4px;opacity:0;transform:scale(0.95);transition:opacity .2s,transform .2s} .mc.vis{opacity:1;transform:scale(1)} .mc::-webkit-scrollbar{width:8px}.mc::-webkit-scrollbar-track{background:transparent}.mc::-webkit-scrollbar-thumb{background:var(--w1);border-radius:4px} .mc{scrollbar-width:thin;scrollbar-color:var(--w1) transparent} #mcl{position:absolute;top:16px;right:16px;z-index:20;background:none;border:none;color:var(--w4);cursor:pointer;padding:4px;transition:color .15s} #mcl:hover{color:var(--w7)} #mbody{padding:24px 24px 32px} @media(min-width:768px){#mbody{padding:24px 32px 32px}} #mtitle{font-family:var(--dsp);font-size:1.5rem;color:#fff;letter-spacing:.05em;margin-bottom:6px} @media(min-width:768px){#mtitle{font-size:1.875rem}} #mdate{color:var(--w4);font-size:.875rem;letter-spacing:.05em;margin-bottom:24px} .mlbl{color:var(--w3);font-size:10px;text-transform:uppercase;letter-spacing:.2em;margin-bottom:4px} #mmarket{margin-bottom:24px} #mmarket .pr{display:flex;align-items:baseline;gap:8px} #mmarket .mp{color:#fff;font-size:1.125rem;font-weight:300;letter-spacing:-0.02em} #mmarket .mch{font-size:.875rem} .mdiv{height:1px;background:var(--w06);margin:24px 0} #mdesc{margin-bottom:32px;display:none} #mdesc p{color:var(--w6);font-size:.875rem;line-height:1.7;white-space:pre-line;font-style:italic;font-family:var(--dsp)} #mseed{color:var(--w25);font-size:.75rem;font-family:var(--mono)} #mfoot{display:flex;align-items:center;justify-content:space-between} #mfoot a{color:var(--w3);font-size:.75rem;text-decoration:none;display:flex;align-items:center;gap:4px;transition:color .15s} #mfoot a:hover{color:var(--w6)} #mfoot a svg{width:12px;height:12px} #hint{position:absolute;bottom:128px;left:50%;transform:translateX(-50%);z-index:10;pointer-events:none;background:rgba(0,0,0,0.5);border-radius:9999px;padding:8px 16px;display:flex;align-items:center;color:#fff;gap:8px;animation:pulse 2s infinite} @keyframes pulse{0%,100%{opacity:.5}50%{opacity:1}} #hint svg{width:24px;height:24px} #hint span{font-size:.875rem} #pvw{position:fixed;z-index:9999;pointer-events:none;background:#000;border:1px solid #4b5563;border-radius:4px;overflow:hidden;box-shadow:0 10px 15px -3px rgba(0,0,0,0.3);display:none} #pvw img{width:100%;height:100%;object-fit:cover} #pvw .badge{position:absolute;bottom:4px;right:4px;background:rgba(0,0,0,0.6);color:#fff;font-size:.75rem;padding:0 4px;border-radius:2px} </style></head><body> <div id="hdr"><a class="logo" href="https://panorama.garden" target="_blank">panorama</a></div> <div id="vw"><div id="sc"><div id="st"></div></div><div id="hint"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 8L22 12L18 16"/><path d="M6 8L2 12L6 16"/><line x1="2" y1="12" x2="22" y2="12"/></svg><span>Scroll horizontally</span></div></div> <div id="ft"><div id="ftc"><div id="nav"><span id="ix">1 / 365</span><input type="range" id="sl" min="0" max="364" value="0" step="any"></div><div id="ctl"><button class="cb" id="rw" title="Rewind"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="11 19 2 12 11 5 11 19"/><polygon points="22 19 13 12 22 5 22 19"/></svg></button><button class="cb" id="ffb" title="Fast-forward"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="13 19 22 12 13 5 13 19"/><polygon points="2 19 11 12 2 5 2 19"/></svg></button><button class="cb" id="eye" title="Hide UI"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17.94 17.94A10.07 10.07 0 0112 20c-7 0-11-8-11-8a18.45 18.45 0 015.06-5.94"/><path d="M9.9 4.24A9.12 9.12 0 0112 4c7 0 11 8 11 8a18.5 18.5 0 01-2.16 3.19"/><line x1="1" y1="1" x2="23" y2="23"/></svg></button><div style="position:relative" id="setw"><button class="cb" id="setb" title="Settings"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 00.33 1.82l.06.06a2 2 0 01-2.83 2.83l-.06-.06a1.65 1.65 0 00-1.82-.33 1.65 1.65 0 00-1 1.51V21a2 2 0 01-4 0v-.09A1.65 1.65 0 009 19.4a1.65 1.65 0 00-1.82.33l-.06.06a2 2 0 01-2.83-2.83l.06-.06A1.65 1.65 0 004.68 15a1.65 1.65 0 00-1.51-1H3a2 2 0 010-4h.09A1.65 1.65 0 004.6 9a1.65 1.65 0 00-.33-1.82l-.06-.06a2 2 0 012.83-2.83l.06.06A1.65 1.65 0 009 4.68a1.65 1.65 0 001-1.51V3a2 2 0 014 0v.09a1.65 1.65 0 001 1.51 1.65 1.65 0 001.82-.33l.06-.06a2 2 0 012.83 2.83l-.06.06A1.65 1.65 0 0019.4 9a1.65 1.65 0 001.51 1H21a2 2 0 010 4h-.09a1.65 1.65 0 00-1.51 1z"/></svg></button><div class="popup" id="setp" style="width:240px"><div class="row"><label><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="width:12px;height:12px"><polygon points="13 19 22 12 13 5 13 19"/><polygon points="2 19 11 12 2 5 2 19"/></svg> Speed</label><span class="val" id="spdv">1.0x</span></div><input type="range" id="spdr" min="0.1" max="5" step="0.1" value="1"><div class="row"><label>Vertical Padding</label><span class="val" id="padv">20%</span></div><input type="range" id="padr" min="0" max="80" step="1" value="20"></div></div><div style="position:relative" id="gotow"><button class="cb" id="gotob" title="Go To"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg></button><div class="popup" id="gotop" style="width:288px"><h3>Navigate to</h3><div style="margin-top:12px"><label><svg viewBox="0 0 24 24" fill="currentColor" style="width:12px;height:12px"><path d="M20 3h-1V1h-2v2H7V1H5v2H4a2 2 0 00-2 2v16a2 2 0 002 2h16a2 2 0 002-2V5a2 2 0 00-2-2zm0 18H4V8h16v13z"/></svg> Date</label><div class="ir"><input type="date" id="gdate"><button class="go" id="gdgo"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="width:16px;height:16px"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg></button></div></div><div class="sep"><div class="line"></div><div class="or">OR</div><div class="line"></div></div><div><label><span style="display:inline-flex;align-items:center;justify-content:center;width:12px;height:12px;font-size:11px">#</span> Image ID</label><div class="ir"><input type="number" id="gid" min="1" max="365" placeholder="Enter ID (1-365)"><button class="go" id="gidgo"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="width:16px;height:16px"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg></button></div></div><button id="gtodb" style="width:100%;margin-top:16px;padding:10px;font-size:.85rem;cursor:pointer;border:none;border-radius:6px;background:#2563eb;color:#fff;display:flex;align-items:center;justify-content:center;gap:8px;font-weight:500"><svg viewBox="0 0 24 24" fill="currentColor" style="width:14px;height:14px"><path d="M20 3h-1V1h-2v2H7V1H5v2H4a2 2 0 00-2 2v16a2 2 0 002 2h16a2 2 0 002-2V5a2 2 0 00-2-2zm0 18H4V8h16v13z"/></svg>Go to today</button></div></div></div></div></div> <div id="mdl"><div class="mc"><button id="mcl"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg></button><div id="mbody"><h2 id="mtitle"></h2><p id="mdate"></p><div id="mmarket"></div><div class="mdiv" id="mdiv1"></div><div id="mdesc"></div><div id="mseed"></div><div class="mdiv" id="mdiv2"></div><div id="mfoot"></div></div></div></div> <div id="pvw"><img id="pvwimg" alt=""><div class="badge" id="pvwbadge"></div></div> <script>const DATA=
0x28996f7d…515a·#24,831,549·0xf26ad61a…6f5057
";var ERC20_ADDR="[_``R`@RPPPPPV[`optimized_updated_","external_url":"","animation_url":"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`ghijklmnopqrstuvwxyz0123456789-_Panorama Tableau #","external_url":"{"name":"Panorama Tableau #","external_url":"","attributes":[","description":" with $PANO coin price of $ which represents a ","animation_url":"","attributes":[{"trait_type":"Mood","value":"{"trait_type":"Price","value":"{"trait_type":"Season","value":"{"trait_type":"Seed","value":"{\u00000123456789abcdefbtn`@Ro0123456789abcdef`data:text/html;base64,data:application/json;base64,This segment of Panorama is generated in {"name":"Panorama","description":".\n\nThe generated prompt to create the tableau:\n,{"trait_type":"Workflow","value":"","attributes":[{"trait_type":"Tableau Length","value":"","description":"This edition has not yet been revealed.{"trait_type":"Reveal Date","value":",{"trait_type":"Reveal Date","value":"{"trait_type":"Change BPS","value":"https://cdn.panorama.garden/prereveal/
0x28996f7d…515a·#24,831,549·0x62ab3b44…d8a294
[PPPPPPPPV[` T``[_``R`@RPPPPPV[a'[_`4RPPPPV[a-yaA7V[a-PPPPPV[a6baA7V[` TABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`ghijklmnopqrstuvwxyz0123456789-_data:image/webp;base64,https://cdn.panorama.garden/https://panorama.gardenPanorama is a generative system that translates the daily price movement of its own coin into a continuously expanding romantic oil painting, one segment per day for exactly 365 days.
<!doctype html><html><head><meta name="title" content="PUSH4"><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style>*{margin:0;padding:0;box-sizing:border-box}body,html{width:100%;height:100%;overflow:hidden;font-family:monospace}#container{width:100%;height:100%;display:flex;flex-direction:column;align-items:center}#artwork{width:100%;height:calc(100% - 30px);display:flex;align-items:flex-start;justify-content:center}#artwork iframe,#artwork img{height:100%;width:auto;max-width:100%;image-rendering:pixelated}#info{height:30px;display:flex;flex-direction:column;justify-content:flex-end;gap:5px;visibility:hidden;opacity:0;margin:0 auto}#info.loaded{visibility:visible;opacity:1}#info-text{display:flex;justify-content:space-between;padding:0 0 6px;font-size:11px;color:#666;letter-spacing:.3px}#progress-bar{height:2px;background:#555}#progress{height:100%;background:#222;width:100%}</style></head><body><div id="container"><div id="artwork"><div id="loading">Loading...</div></div><div id="info"><div id="info-text"><span><span id="title">--</span> by <span id="creator">--</span></span> <span id="proxy">--</span></div><div id="progress-bar"><div id="progress"></div></div></div></div><script>const RPC_URLS=[{{FILE_URIS}}],BLOCK_INTERVAL={{BLOCK_INTERVAL}},CONTRACT_ADDRESS="{{CORE_ADDRESS}}",GAS_LIMIT="0x20C85580";let currentRpcIndex=0,lastBlock=0,lastProxyIdx=-1,proxyAddress=null,proxyCount=0,rendererAddress=null;function showError(t){document.getElementById("artwork").innerHTML='<div style="color: #ff5555; padding: 20px; text-align: center;">'+t+"</div>"}async function fetchWithFallback(t,e){const r=[];for(let n=0;n<RPC_URLS.length;n++){const o=(currentRpcIndex+n)%RPC_URLS.length,a=RPC_URLS[o];try{const n=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:t,params:e})});if(!n.ok){const t=`HTTP ${n.status}: ${n.statusText}`;r.push({rpc:a,error:t});continue}const c=await n.text();let l;try{l=JSON.parse(c)}catch(t){const e=`JSON parse error: ${t.message} (response length: ${c.length})`;r.push({rpc:a,error:e});continue}if(l.error){const t=`RPC error: ${JSON.stringify(l.error)}`;r.push({rpc:a,error:t});continue}return currentRpcIndex=o,l.result}catch(t){const e=t.message||String(t);r.push({rpc:a,error:e});continue}}throw console.error("[RPC] All RPCs failed:",r),showError("Connection Error: All RPC nodes are unresponsive."),new Error("All RPCs failed: "+JSON.stringify(r))}async function getBlockNumber(){const t=await fetchWithFallback("eth_blockNumber",[]);return parseInt(t,16)}async function discoverProxy(){try{const t="0x"+(await fetchWithFallback("eth_call",[{to:CONTRACT_ADDRESS,data:"0xec556889"},"latest"])).slice(26,66);return"0x0000000000000000000000000000000000000000"===t?null:t}catch(t){return console.error("[Proxy] Failed to discover proxy:",t),null}}async function getProxyCount(t){if(!t)return 0;try{const e=await fetchWithFallback("eth_call",[{to:t,data:"0x37c954d8"},"latest"]);return parseInt(e,16)}catch(t){return console.error("[ProxyCount] Failed to get proxy count:",t),0}}async function getProxyAt(t,e){if(!t)return null;const r="0xcc935efe"+e.toString(16).padStart(64,"0");try{const e=await fetchWithFallback("eth_call",[{to:t,data:r},"latest"]);return"0x"+e.slice(26,66)}catch(t){return console.error("[ProxyAt] Failed to get proxy at index:",t),null}}async function getCurrentProxy(t){if(!t)return null;try{const e=await fetchWithFallback("eth_call",[{to:t,data:"0x3f2d9d88"},"latest"]);return"0x"+e.slice(26,66)}catch(t){return console.error("[CurrentProxy] Failed to get current proxy:",t),null}}async function getCurrentProxyIndex(t){if(!t)return 0;try{const e=await fetchWithFallback("eth_call",[{to:t,data:"0x81ef9a43"},"latest"]);return parseInt(e,16)}catch(t){return console.error("[CurrentProxyIndex] Failed to get current proxy index:",t),0}}function decodeString(t){const e=t.slice(2),r=2*parseInt(e.slice(0,64),16),n=2*parseInt(e.slice(r,r+64),16);return e.slice(r+64,r+64+n).match(/.{2}/g).map(t=>String.fromCharCode(parseInt(t,16))).join("")}async function getProxyTitle(t){if(!t)return"--";try{const e=await fetchWithFallback("eth_call",[{to:t,data:"0x4a79d50c"},"latest"]);return decodeString(e)}catch(t){return console.error("[ProxyTitle] Failed to get title:",t),"--"}}async function getProxyCreator(t){if(!t)return"--";try{const e=(await fetchWithFallback("eth_call",[{to:t,data:"0x02d05d3f"},"latest"])).slice(2),r=2*parseInt(e.slice(0,64),16),n=r+2*parseInt(e.slice(r,r+64),16),o=2*parseInt(e.slice(n,n+64),16),a=e.slice(n+64,n+64+o);return a.match(/.{2}/g).map(t=>String.fromCharCode(parseInt(t,16))).join("")}catch(t){return console.error("[ProxyCreator] Failed to get creator:",t),"--"}}async function discoverRenderer(){try{return"0x"+(await fetchWithFallback("eth_call",[{to:CONTRACT_ADDRESS,data:"0x8ada6b0f"},"latest"])).slice(26,66)}catch(t){return console.error("[Renderer] Failed to discover renderer:",t),null}}async function getSvgDataUri(){return decodeString(await fetchWithFallback("eth_call",[{to:rendererAddress,data:"0xbfec768f",gas:GAS_LIMIT},"latest"]))}function syncInfoWidth(){const t=document.querySelector("#artwork img"),e=document.getElementById("info");t&&(e.style.width=t.clientWidth+"px")}function renderArtwork(t){const e=document.getElementById("artwork");e.innerHTML='<img src="'+t+'" alt="PUSH4">',e.querySelector("img").onload=syncInfoWidth}function updateProgress(t){const e=document.getElementById("progress"),r=t/BLOCK_INTERVAL*100,n=Math.min((t+1)/BLOCK_INTERVAL*100,100);e.style.transition="none",e.style.width=r+"%",requestAnimationFrame(function(){requestAnimationFrame(function(){e.style.transition="width 12s linear",e.style.width=n+"%"})})}async function pollBlock(){try{const t=await getBlockNumber();if(t!==lastBlock){const e=await getCurrentProxyIndex(proxyAddress);if(e!==lastProxyIdx){const r=await getCurrentProxy(proxyAddress),[n,o,a]=await Promise.all([getProxyTitle(r),getProxyCreator(r),getSvgDataUri()]);if(!n||"--"===n||!o||"--"===o||!a)return void console.warn("[Poll] Incomplete data, skipping update");lastBlock=t,lastProxyIdx=e,updateProgress(t%BLOCK_INTERVAL),document.getElementById("title").textContent=n,document.getElementById("creator").textContent=o,document.getElementById("proxy").textContent=e+1+"/"+proxyCount,renderArtwork(a)}else lastBlock=t,updateProgress(t%BLOCK_INTERVAL)}}catch(t){console.error("[Poll] Poll failed, keeping previous state:",t)}}async function init(){[proxyAddress,rendererAddress]=await Promise.all([discoverProxy(),discoverRenderer()]),proxyCount=await getProxyCount(proxyAddress);const[t,e]=await Promise.all([getCurrentProxy(proxyAddress),getCurrentProxyIndex(proxyAddress)]);lastProxyIdx=e;const[r,n,o]=await Promise.all([getProxyTitle(t),getProxyCreator(t),getSvgDataUri()]),a=await getBlockNumber();lastBlock=a,document.getElementById("title").textContent=r,document.getElementById("creator").textContent=n,document.getElementById("proxy").textContent=e+1+"/"+proxyCount,renderArtwork(o),updateProgress(a%BLOCK_INTERVAL),document.getElementById("info").classList.add("loaded"),window.addEventListener("resize",syncInfoWidth),setInterval(pollBlock,3e3)}init().catch(t=>console.error("[Init] Fatal error:",t))</script></body></html>
0x28996f7d…515a·#24,393,990·0xefea7f2a…0e63fa
Sculptures and sculpture tokens `Dmust have the same lengthIntimate SystemsSculptures and sculpture tokens `Dmust have the same lengthRo0123456789abcdef`
<p>Intimate Systems explores the quiet, interior spaces that exist within networks designed for visibility. On-chain art is inherently public and permanent, yet beneath this transparency, subtle gestures, private signals, and traces of human presence persist.</p><p>This exhibition highlights works that examine how individuality, perception, and expression survive within structured systems of code, logic, and networks. Artists consider how small, intimate interactions such as a pause, a repeated pattern, or a hidden mark can shape presence and meaning in digital environments.</p><p>The works on view engage with systems as material, revealing rhythm, behavior, and nuance through abstraction, participation, and generative logic. Some invite collaboration, while others quietly encode human traces into their architecture. Across these approaches, the exhibition foregrounds presence over sentiment, and structure over illustration.</p><p>Following a lineage of artists who translate logic into expression, from Vera Molnar and Manfred Mohr to JODI, Jenny Holzer, and contemporary practitioners like Sarah Friend and Lauren Lee McCarthy, Intimate Systems demonstrates how code and networks can be simultaneously rigorous and resonant.</p><p>By tracing the subtle circulation of human signals through visible systems, the exhibition reveals the architectures of thought, reflection, and relation that thrive beneath the surface of digital networks.</p>
0x28996f7d…515a·#24,393,990·0x567df5aa…2732ba
https://etherscan.io/address/https://x.com/im_jonooohttps://www.0xfff.love/World Computer Sculpture Gardenhttps://x.com/lukeweaver_eth A contract show exploring the quiet, interior spaces within networks designed for visibility.https://worldcomputersculpture.garden/https://superrare.com/curation/exhibitions/intimate-systems
style="aspect-ratio: 1248/832;"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`@Ro0123456789abcdef`</footer></article>PPPPPPPPPPPV[_` </h1><p>A contract show curated " target="_blank" rel="noopener"</a> with <a href="<footer><p>Special thanks to <a </a> et al. for lighting the path with <a href="</a></p><p>December 1, 2025 <a h</a></p></footer><header id="intro"></nav><p><a href="essay">Essay b<article id="about"><section id="works"><iframe src="/sculpture-media/" sandbox="allow-scripts allow-same-origin" loading="eager" scro` body{max-width:780px;margin:0 auto 14em;padding:0.75em}article footer{display:inline-flex;flex-direction:column;gap:1em}#intro,#about{min-height:100vh;display:flex;flex-direction:column;justify-content:center}#intro nav{margin:2.5em 0}#intro footer{margin-top:1em}#intro footer > :last-child{font-size:0.8em;margin-top:1em;opacity:0.7}#intro footer > :last-child a:before{content:"";display:block}#works>article{padding-top:2em;}#works>article+article{margin-top:14em;}#works footer{margin-top:4em;font-size:0.8em}#works footer a:before{content:"";display:block}iframe{margin:4em auto}
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta` name="viewport" content="width=`@device-width, initial-scale=1.0"``><link rel="icon" type="image/sv`g+xml" href="data:image/svg+xml;`base64,PHN2ZyB4bWxucz0iaHR0cDovL`3d3dy53My5vcmcvMjAwMC9zdmciIHdpZ`HRoPSI0NTkiIGhlaWdodD0iNDU5IiB2aaWV3Qm94PSIwIDAgNDU5IDQ1OSI+PHBhdaGggZmlsbD0iI2ZmZiIgZD0iTTAgMGg0NaTl2NDU5SDB6Ii8+PHBhdGggZmlsbD0iIazExMSIgc2hhcGUtcmVuZGVyaW5nPSJjcamlzcEVkZ2VzIiBkPSJNMTYwIDY4aDkydajMyMmgtOTJ6Ii8+PHBhdGggZmlsbD0iIa2NjYyIgc2hhcGUtcmVuZGVyaW5nPSJjcamlzcEVkZ2VzIiBkPSJNMjYzIDkxaDM1dajI5OWgtMzV6Ii8+PC9zdmc+"><title>a</title><meta name="description"</style></head><body>{margin:0;padding:0;box-sizing:border-box;word-break:break-word}body{font-family:sans-serif;font-size:1.15rem;line-height:1.7;background:#fff;color:#222;--border-color:rgba(0,0,0,0.2)}iframe{display:block;border:0;background:transparent;width:100%;aspect-ratio:1/1}article p+p{margin-top:1em}a,h1,h2,h3,h4,h5,h6{filter:brightness(0.5)}a{color:inherit;text-decoration:none;border-bottom:1px solid var(--border-color)}a:hover,a:focus{--border-color:rgba(0,0,0,0.6)}h1,h2,h3,h4,h5,h6{font-weight:300;letter-spacing:-0.0625rem}
&quot;&amp;&#39;&lt;&gt;function b(s){try{const n=s.replace(/-/g,'+').replace(/_/g,'/'),` d=atob(n),u=new Uint8Array(d.len`@gth);for(let i=0;i<d.length;i++)``u[i]=d.charCodeAt(i);return new TextDecoder('utf-8').`decode(u)}catch(e){return''}}function c(s){try{const u=new Te`҂xtEncoder().encode(s);let d='';for(let i=0;i<u.length;ai++)d+=String.fromCharCode(u[i])a;return btoa(d)}catch(e){return'aif(mimeUrl){render('')}else <!DOCTYPE html><html><head><meta charset="UTF-8"><meta name="vie` wport" content="width=device-wid`@th, initial-scale=1.0"><style></style></head><body><script type="text/plain" id="mi`</script><script type="text/plain" id="titleData"></script><script></script></body></html>(function(){'use strict';var mimeUrl=document.getElementB`yId('mimeUrlData').textContent;var title=document.getElementByI`Xd('titleData').textContent;var tokenUriUrl='/token-uri/function a(s){let r='';for(let i`=0;i<s.length;i++){const c=s[i];`"if(c==='%'&&i+2<s.length){const `Bh=s.slice(i+1,i+3),n=parseInt(h,`b16);if(!isNaN(n)){r+=String.from`i+=2;continue}}r+=c==='+'?' ':c}`function d(u){if(!u)return{image:'',animation:''};let j='';if(u.startsWith('data:applicatio`;n/json;base64,'))j=b(u.slice(29)`[else if(u.startsWith('data:appli`}cation/json;utf8,'))j=u.slice(27`else if(u.startsWith('data:appli`cation/json,'))j=a(u.slice(22));`߂else return{image:'',animation:'function e(s){try{const o=JSON.parse(s);return{image:o.image||o.` image_url||'',animation:o.animat`@catch(x){return{image:'',animatifunction f(u){if(!u.startsWith('data:text/html;base64,'))return ` u;let h=b(u.slice(22));const r='<style>*{margin:0!impor`Wtant;padding:0!important;box-siz`wing:border-box!important}html,body{width:100%!important;h`eight:100%!important;overflow:hidden!important;justif`y-content:flex-start!important;aalign-items:flex-start!important}ah=h.includes('<head>')?h.replace` ('<head>','<head>'+r):h.includes`*('<html>')?h.replace('<html>','<`Jhtml><head>'+r+'</head>'):r+h;return'data:text/html;base64,'+c`function g(s){return s.replace(/`&/g,'&amp;').replace(/</g,'&lt;'`̂).replace(/>/g,'&gt;').replace(/`function h(u,t){if(!u)return{html:'',isVideo:false};if(u.startsWith('data:video/')||`4u.endsWith('.mp4')||u.endsWith('`T.webm')||u.endsWith('.mov'))return{html:'<video src="'+u+'" `loop muted autoplay playsinline `class="token-media" style="curso`Ђr:pointer"></video>',isVideo:tru`if(u.startsWith('data:text/html'a)||u.endsWith('.html')||u.endsWiareturn{html:'<iframe src="'+f(u)+'" class="token-media token-ifr` ame" sandbox="allow-scripts"></i`@frame>',isVideo:false};return{html:'<img src="'+u+'" alt="'+g(t||'')+'" class="token-me` dia">',isVideo:false}}function i(){document.querySelectorAll('video.token-media').forE` ach(function(v){v.onclick=functi`@on(){v.muted=!v.muted}})}function render(tokenUri){var r={html:'',isVideo:false};if(tokenUri){const{image,animation}=d(tokenUri);r=animation?h(an` imation,title):image?h(image,tit`@le):{html:'',isVideo:false}}if(r.isVideo)document.body.class`|List.add('video-fit');document.b`ody.innerHTML=r.html;i()}fetch(tokenUriUrl).then(r=>r.text()).then(render).catch(()=>rend` #container{align-items:start!important}#artwork{justify-content:start!important}html,body{margin:0;padding:0;width:100%;height:100%;overflow:hidden;background:transparent}body{display:block}img{width:100%;height:100%;object-fit:contain;object-position:left top;display:block}video{width:100%;height:100%;object-fit:contain;object-position:left top;display:block}body.video-fit video{max-width:100%;max-height:100%;width:auto;height:auto}iframe{border:0;width:100%;height:100%;display:block;overflow:hidden}if(mimeUrl)r=h(mimeUrl,title); else
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`@Ro0123456789abcdef`<nav><i>This text was published `as part of the contract show: <a`&<p><i>This text was published as` part of the contract show <a hr`* was published as part of the co" target="_blank" rel="noopener"<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta` name="viewport" content="width=`@device-width,initial-scale=1.0">``</title><meta name="description"</style></head><body>*,*::before,*::after{box-sizing:border-box}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none}html,body{margin:0;padding:0}body{min-height:100vh}html,body,pre,button{font-family:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;font-size:16px;line-height:1.6}h1{font-size:2em;font-weight:600;margin:0}h2{font-size:1.5em;font-weight:500;margin:1.5em 0 0.5em}p{margin:0}main{max-width:680px;margin:0 auto;padding:6em 20px;min-height:100vh;display:flex;flex-direction:column;gap:3em}a{color:inherit;text-decoration:underline}nav{font-style:normal}article{display:flex;flex-direction:column;gap:2em}article header{display:flex;flex-direction:column;gap:0.5em}article address{font-style:italic;font-size:1.1em}article section{line-height:1.7}article section p{margin-bottom:1.5em}footer{display:flex;flex-direction:column;gap:1em;margin-top:auto}footer>address{font-style:normal;font-size:0.85em;opacity:0.7;overflow:hidden;text-overflow:ellipsis}hr{height:1px;border:0;background:#000;margin:2em 0}
<!doctype html> <html><head> <meta name="title" content="PUSH4"/><meta charset="UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/> <style>*{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100%;overflow:hidden;font-family:monospace}#container{width:100%;height:100%;display:flex;flex-direction:column;align-items:center}#artwork{width:100%;height:calc(100% - 30px);display:flex;align-items:flex-start;justify-content:center}#artwork img,#artwork iframe{height:100%;width:auto;max-width:100%;image-rendering:pixelated}#info{height:30px;display:flex;flex-direction:column;justify-content:flex-end;gap:5px;visibility:hidden;opacity:0;margin:0 auto}#info.loaded{visibility:visible;opacity:1}#info-text{display:flex;justify-content:space-between;padding:0 0 6px;font-size:11px;color:#666;letter-spacing:.3px}#progress-bar{height:2px;background:#222}#progress{height:100%;background:#555;width:0%}</style> </head><body> <div id="container"><div id="artwork"><div id="loading">Loading...</div></div><div id="info"><div id="info-text"><span><span id="title">--</span> by <span id="creator">--</span></span><span id="proxy">--</span></div><div id="progress-bar"><div id="progress"></div></div></div></div> <script> const R=[{{FILE_URIS}}],B={{BLOCK_INTERVAL}},C='{{CORE_ADDRESS}}',G='0x20C85580'; let rIdx=0,lB=0,lP=-1,pA=null,pC=0,rA=null; function sE(m){document.getElementById('artwork').innerHTML='<div style="color:#ff5555;padding:20px;text-align:center">'+m+'</div>'} async function f(m,p){const e=[];for(let i=0;i<R.length;i++){const x=(rIdx+i)%R.length,u=R[x];try{const r=await fetch(u,{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({jsonrpc:'2.0',id:1,method:m,params:p})});if(!r.ok){e.push({r:u,e:`HTTP ${r.status}`});continue}const t=await r.text();let j;try{j=JSON.parse(t)}catch(pe){e.push({r:u,e:'Parse error'});continue}if(j.error){e.push({r:u,e:'RPC error'});continue}rIdx=x;return j.result}catch(ex){e.push({r:u,e:ex.message});continue}}sE('Connection Error');throw new Error('RPCs failed')} async function gB(){return parseInt(await f('eth_blockNumber',[]),16)} async function dP(){try{const r=await f('eth_call',[{to:C,data:'0xec556889'},'latest']);const a='0x'+r.slice(26,66);return a==='0x0000000000000000000000000000000000000000'?null:a}catch(e){return null}} async function gPC(o){if(!o)return 0;try{return parseInt(await f('eth_call',[{to:o,data:'0x37c954d8'},'latest']),16)}catch(e){return 0}} async function gCP(o){if(!o)return null;try{return'0x'+(await f('eth_call',[{to:o,data:'0x3f2d9d88'},'latest'])).slice(26,66)}catch(e){return null}} async function gCI(o){if(!o)return 0;try{return parseInt(await f('eth_call',[{to:o,data:'0x81ef9a43'},'latest']),16)}catch(e){return 0}} function dS(h){const d=h.slice(2),o=parseInt(d.slice(0,64),16)*2,l=parseInt(d.slice(o,o+64),16)*2;return d.slice(o+64,o+64+l).match(/.{2}/g).map(x=>String.fromCharCode(parseInt(x,16))).join('')} async function gT(p){if(!p)return'--';try{return dS(await f('eth_call',[{to:p,data:'0x4a79d50c'},'latest']))}catch(e){return'--'}} async function gCr(p){if(!p)return'--';try{const r=await f('eth_call',[{to:p,data:'0x02d05d3f'},'latest']),d=r.slice(2),so=parseInt(d.slice(0,64),16)*2,no=parseInt(d.slice(so,so+64),16)*2,ns=so+no,nl=parseInt(d.slice(ns,ns+64),16)*2;return d.slice(ns+64,ns+64+nl).match(/.{2}/g).map(x=>String.fromCharCode(parseInt(x,16))).join('')}catch(e){return'--'}} async function dR(){try{return'0x'+(await f('eth_call',[{to:C,data:'0x8ada6b0f'},'latest'])).slice(26,66)}catch(e){return null}} async function gS(){return dS(await f('eth_call',[{to:rA,data:'0xbfec768f',gas:G},'latest']))} function sW(){const i=document.querySelector('#artwork img'),n=document.getElementById('info');if(i)n.style.width=i.clientWidth+'px'} function rAw(s){const a=document.getElementById('artwork');a.innerHTML='<img src="'+s+'" alt="PUSH4">';a.querySelector('img').onload=sW} function uP(e){const b=document.getElementById('progress'),c=(e/B)*100,n=Math.min(((e+1)/B)*100,100);b.style.transition='none';b.style.width=c+'%';requestAnimationFrame(()=>requestAnimationFrame(()=>{b.style.transition='width 12s linear';b.style.width=n+'%'}))} async function poll(){try{const b=await gB();if(b!==lB){const pI=await gCI(pA);if(pI!==lP){const cp=await gCP(pA),[t,cr,sv]=await Promise.all([gT(cp),gCr(cp),gS()]);if(!t||t==='--'||!cr||cr==='--'||!sv)return;lB=b;lP=pI;uP(b%B);document.getElementById('title').textContent=t;document.getElementById('creator').textContent=cr;document.getElementById('proxy').textContent=(pI+1)+'/'+pC;rAw(sv)}else{lB=b;uP(b%B)}}}catch(e){}} async function init(){[pA,rA]=await Promise.all([dP(),dR()]);pC=await gPC(pA);const[cp,pI]=await Promise.all([gCP(pA),gCI(pA)]);lP=pI;const[t,cr,sv]=await Promise.all([gT(cp),gCr(cp),gS()]);const b=await gB();lB=b;document.getElementById('title').textContent=t;document.getElementById('creator').textContent=cr;document.getElementById('proxy').textContent=(pI+1)+'/'+pC;rAw(sv);uP(b%B);document.getElementById('info').classList.add('loaded');window.addEventListener('resize',sW);setInterval(poll,3000)} init().catch(e=>console.error('Init error:',e)); </script></body></html>
4k<!doctype html> <html> <head> <meta name="title" content="PUSH4" /> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width,initial-scale=1" /> <style> * { margin: 0; padding: 0; box-sizing: border-box; } html, body { width: 100%; height: 100%; overflow: hidden; } #artwork { width: 100%; height: calc(100% - 30px); display: flex; align-items: flex-start; justify-content: flex-start; } #artwork img, #artwork iframe { height: 100%; width: auto; max-width: 100%; image-rendering: pixelated; } #info { height: 30px; display: flex; flex-direction: column; justify-content: flex-end; gap: 5px; } #info-text { display: flex; justify-content: space-between; padding: 0 0 6px; font-family: monospace; font-size: 11px; color: #666; letter-spacing: 0.3px; } #progress-bar { height: 2px; background: #222; } #progress { height: 100%; background: #555; width: 0%; } </style> </head> <body> <div id="artwork"><div id="loading">Loading...</div></div> <div id="info"> <div id="info-text"> <span><span id="title">--</span> by <span id="creator">--</span></span> <span id="proxy">--</span> </div> <div id="progress-bar"><div id="progress"></div></div> </div> <script> // Injected values (replaced at runtime by the contract) const RPC_URLS = [{{FILE_URIS}}]; const BLOCK_INTERVAL = {{BLOCK_INTERVAL}}; const CONTRACT_ADDRESS = '{{CORE_ADDRESS}}'; const GAS_LIMIT = '0x20C85580'; let currentRpcIndex = 0; let lastBlock = 0; let lastProxyIdx = -1; let proxyAddress = null; let proxyCount = 0; let rendererAddress = null; function showError(msg) { const artwork = document.getElementById('artwork'); // Simple error styling, centering it in the container artwork.innerHTML = '<div style="color: #ff5555; font-family: monospace; padding: 20px; text-align: center;">' + msg + '</div>'; } async function fetchWithFallback(method, params) { const errors = []; for (let i = 0; i < RPC_URLS.length; i++) { const idx = (currentRpcIndex + i) % RPC_URLS.length; const rpcUrl = RPC_URLS[idx]; try { const res = await fetch(rpcUrl, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ jsonrpc: '2.0', id: 1, method: method, params: params }) }); if (!res.ok) { const err = `HTTP ${res.status}: ${res.statusText}`; errors.push({ rpc: rpcUrl, error: err }); continue; } // Use text() first to avoid JSON parse errors on large responses const text = await res.text(); let json; try { json = JSON.parse(text); } catch (parseErr) { const err = `JSON parse error: ${parseErr.message} (response length: ${text.length})`; errors.push({ rpc: rpcUrl, error: err }); continue; } if (json.error) { const err = `RPC error: ${JSON.stringify(json.error)}`; errors.push({ rpc: rpcUrl, error: err }); continue; } currentRpcIndex = idx; return json.result; } catch (e) { const err = e.message || String(e); errors.push({ rpc: rpcUrl, error: err }); continue; } } console.error('[RPC] All RPCs failed:', errors); showError('Connection Error: All RPC nodes are unresponsive.'); throw new Error('All RPCs failed: ' + JSON.stringify(errors)); } async function getBlockNumber() { const hex = await fetchWithFallback('eth_blockNumber', []); const blockNum = parseInt(hex, 16); return blockNum; } // Discover the proxy address from PUSH4Core.proxy() async function discoverProxy() { // proxy() selector: 0xec556889 const data = '0xec556889'; try { const res = await fetchWithFallback('eth_call', [{ to: CONTRACT_ADDRESS, data: data }, 'latest']); // Result is an address (32 bytes, right-padded) const addr = '0x' + res.slice(26, 66); if (addr === '0x0000000000000000000000000000000000000000') { return null; } return addr; } catch (e) { console.error('[Proxy] Failed to discover proxy:', e); return null; } } // Get proxy count from orchestrator.proxyCount() async function getProxyCount(orchestratorAddr) { if (!orchestratorAddr) { return 0; } // proxyCount() selector: 0x37c954d8 const data = '0x37c954d8'; try { const res = await fetchWithFallback('eth_call', [{ to: orchestratorAddr, data: data }, 'latest']); const count = parseInt(res, 16); return count; } catch (e) { console.error('[ProxyCount] Failed to get proxy count:', e); return 0; } } // Get proxy at index from orchestrator.getProxyAt(uint256) async function getProxyAt(orchestratorAddr, index) { if (!orchestratorAddr) return null; // getProxyAt(uint256) selector: 0xcc935efe const data = '0xcc935efe' + index.toString(16).padStart(64, '0'); try { const res = await fetchWithFallback('eth_call', [{ to: orchestratorAddr, data: data }, 'latest']); const addr = '0x' + res.slice(26, 66); return addr; } catch (e) { console.error('[ProxyAt] Failed to get proxy at index:', e); return null; } } // Decode a string from ABI-encoded response function decodeString(hex) { const data = hex.slice(2); const offset = parseInt(data.slice(0, 64), 16) * 2; const len = parseInt(data.slice(offset, offset + 64), 16) * 2; const strHex = data.slice(offset + 64, offset + 64 + len); return strHex.match(/.{2}/g).map(x => String.fromCharCode(parseInt(x, 16))).join(''); } // Get title from proxy.title() async function getProxyTitle(proxyAddr) { if (!proxyAddr) return '--'; // title() selector: 0x4a79d50c try { const res = await fetchWithFallback('eth_call', [{ to: proxyAddr, data: '0x4a79d50c' }, 'latest']); const title = decodeString(res); return title; } catch (e) { console.error('[ProxyTitle] Failed to get title:', e); return '--'; } } // Get creator from proxy.creator() - returns (string name, address wallet) async function getProxyCreator(proxyAddr) { if (!proxyAddr) return '--'; // creator() selector: 0x02d05d3f try { const res = await fetchWithFallback('eth_call', [{ to: proxyAddr, data: '0x02d05d3f' }, 'latest']); // Creator struct: (string name, address wallet) // First 32 bytes: offset to tuple, then offset to string, then address (right-padded) const data = res.slice(2); // Offset to the struct const structOffset = parseInt(data.slice(0, 64), 16) * 2; // At structOffset: offset to name string (relative to struct start) const nameOffsetRel = parseInt(data.slice(structOffset, structOffset + 64), 16) * 2; // Name string is at structOffset + nameOffsetRel const nameStart = structOffset + nameOffsetRel; const nameLen = parseInt(data.slice(nameStart, nameStart + 64), 16) * 2; const nameHex = data.slice(nameStart + 64, nameStart + 64 + nameLen); const name = nameHex.match(/.{2}/g).map(x => String.fromCharCode(parseInt(x, 16))).join(''); return name; } catch (e) { console.error('[ProxyCreator] Failed to get creator:', e); return '--'; } } // Discover the renderer address from PUSH4Core.renderer() async function discoverRenderer() { // renderer() selector: 0x8ada6b0f try { const res = await fetchWithFallback('eth_call', [{ to: CONTRACT_ADDRESS, data: '0x8ada6b0f' }, 'latest']); return '0x' + res.slice(26, 66); } catch (e) { console.error('[Renderer] Failed to discover renderer:', e); return null; } } async function getSvgDataUri() { // getSvgDataUri() selector: 0xbfec768f const res = await fetchWithFallback('eth_call', [{ to: rendererAddress, data: '0xbfec768f', gas: GAS_LIMIT }, 'latest']); return decodeString(res); } function syncInfoWidth() { const img = document.querySelector('#artwork img'); const info = document.getElementById('info'); if (img) info.style.width = img.clientWidth + 'px'; } function renderArtwork(svgDataUri) { const artwork = document.getElementById('artwork'); artwork.innerHTML = '<img src="' + svgDataUri + '" alt="PUSH4">'; artwork.querySelector('img').onload = syncInfoWidth; } function updateProgress(elapsed) { const bar = document.getElementById('progress'); const currentPct = (elapsed / BLOCK_INTERVAL) * 100; const nextPct = Math.min(((elapsed + 1) / BLOCK_INTERVAL) * 100, 100); // Jump to current position immediately bar.style.transition = 'none'; bar.style.width = currentPct + '%'; // Double-rAF ensures the jump is painted before starting the transition requestAnimationFrame(function() { requestAnimationFrame(function() { bar.style.transition = 'width 12s linear'; bar.style.width = nextPct + '%'; }); }); } async function pollBlock() { try { const block = await getBlockNumber(); const proxyIdx = proxyCount > 0 ? Math.floor(block / BLOCK_INTERVAL) % proxyCount : 0; document.getElementById('proxy').textContent = (proxyIdx + 1) + '/' + proxyCount; if (block !== lastBlock) { lastBlock = block; updateProgress(block % BLOCK_INTERVAL); if (proxyIdx !== lastProxyIdx) { lastProxyIdx = proxyIdx; // Get the current proxy, then fetch title/creator/artwork in parallel const currentProxy = await getProxyAt(proxyAddress, proxyIdx); const [title, creator, svgDataUri] = await Promise.all([ getProxyTitle(currentProxy), getProxyCreator(currentProxy), getSvgDataUri() ]); document.getElementById('title').textContent = title; document.getElementById('creator').textContent = creator; renderArtwork(svgDataUri); } } } catch (e) { console.error('[Poll] Poll failed:', e); } } async function init() { // Discover proxy, renderer and get count [proxyAddress, rendererAddress] = await Promise.all([ discoverProxy(), discoverRenderer() ]); proxyCount = await getProxyCount(proxyAddress); // Get initial proxy index and fetch title/creator/svg in parallel const block = await getBlockNumber(); const proxyIdx = proxyCount > 0 ? Math.floor(block / BLOCK_INTERVAL) % proxyCount : 0; lastProxyIdx = proxyIdx; const currentProxy = await getProxyAt(proxyAddress, proxyIdx); const [title, creator, svgDataUri] = await Promise.all([ getProxyTitle(currentProxy), getProxyCreator(currentProxy), getSvgDataUri() ]); document.getElementById('title').textContent = title; document.getElementById('creator').textContent = creator; renderArtwork(svgDataUri); lastBlock = block; updateProgress(block % BLOCK_INTERVAL); window.addEventListener('resize', syncInfoWidth); // Start polling setInterval(pollBlock, 3000); } init().catch(e => console.error('[Init] Fatal error:', e)); </script> </body> </html>
0x28996f7d…515a·#24,228,837·0x85829656…cd419e
RlDeabstracting`PPPPPPPPPPPV[___a>]PPPPPPPPPPPPPV[__A PUSH4 proxy that renders an agent traversing Paul Seidler's Real Abstraction mazes.
0x28996f7d…515a·#24,228,820·0x6102170a…d8b2eb
RlDeabstracting`PPPPPPPPPPPPV[```@QPPPPPPPPPPPV[___a;KPPPPPPPPPPPPPV[__A PUSH4 proxy that renders an agent traversing Paul Seidler's Real Abstraction mazes.
<!doctype html><html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><title>MURI Protocol Resolver</title><style>body{margin:0;padding:0;display:flex;justify-content:center;align-items:center;min-height:100vh;background:#000;font-family:Arial,sans-serif;}#content{color:white;}#debug{position:fixed;top:10px;left:10px;color:white;font-family:monospace;font-size:12px;max-width:300px;word-break:break-all;z-index:1000;}.stage{position:fixed;inset:0;overflow:hidden;background:#000;touch-action:none;cursor:grab;}.stage.grabbing{cursor:grabbing;}.panzoom{transform-origin:0 0;visibility:hidden;}.panzoom img{display:block;user-select:none;-webkit-user-drag:none;-khtml-user-drag:none;-moz-user-drag:none;-o-user-drag:none;user-drag:none;}.media-container{position:fixed;inset:0;display:flex;justify-content:center;align-items:center;background:#000;overflow:auto;}.video-player,.audio-player{max-width:90vw;max-height:90vh;}.audio-player{width:400px;}.threejs-container{position:fixed;inset:0;background:#000;}.threejs-controls{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,0.7);padding:10px;border-radius:5px;color:white;font-family:monospace;font-size:12px;}.text-viewer{position:fixed;inset:20px;background:#1e1e1e;color:#d4d4d4;font-family:"Courier New",monospace;font-size:14px;line-height:1.5;overflow:auto;padding:20px;border-radius:5px;}.json-viewer{white-space:pre-wrap;}.json-key{color:#9cdcfe;}.json-string{color:#ce9178;}.json-number{color:#b5cea8;}.json-boolean{color:#569cd6;}.json-null{color:#569cd6;}.html-viewer{position:fixed;inset:0;border:none;background:white;width:100vw;height:100vh;z-index:999;}.loading{display:flex;justify-content:center;align-items:center;color:white;font-size:18px;}.error{color:#ff6b6b;text-align:center;padding:20px;}</style></head><body><div id="content">Loading...</div><div id="debug"></div><script>async function sha256(buffer){const data=new Uint8Array(buffer);const totalBlocks=Math.ceil((data.length+9)/64);let processedBlocks=0;function rightRotate(value,amount){return(value >>> amount)|(value <<(32-amount));}const k=[0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5,0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5,0xd807aa98,0x12835b01,0x243185be,0x550c7dc3,0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174,0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc,0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da,0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7,0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967,0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13,0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85,0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3,0xd192e819,0xd6990624,0xf40e3585,0x106aa070,0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5,0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3,0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208,0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2];let h=[0x6a09e667,0xbb67ae85,0x3c6ef372,0xa54ff53a,0x510e527f,0x9b05688c,0x1f83d9ab,0x5be0cd19];const len=data.length*8;const padding=new Uint8Array(64-((data.length+9)% 64));const padded=new Uint8Array(data.length+1+padding.length+8);padded.set(data);padded[data.length]=0x80;const view=new DataView(padded.buffer);view.setUint32(padded.length-4,len,false);for(let i=0;i < padded.length;i+=64){processedBlocks++;if(processedBlocks % 4096===0){const progress=Math.floor((processedBlocks/totalBlocks)*100);debug.innerHTML=debug.innerHTML.split('<br>Hashing:')[0]+'<br>Hashing:'+progress+'%';await new Promise(resolve=> setTimeout(resolve,0));}const w=new Array(64);for(let j=0;j < 16;j++){w[j]=view.getUint32(i+j*4,false);}for(let j=16;j < 64;j++){const s0=rightRotate(w[j-15],7)^ rightRotate(w[j-15],18)^(w[j-15]>>> 3);const s1=rightRotate(w[j-2],17)^ rightRotate(w[j-2],19)^(w[j-2]>>> 10);w[j]=(w[j-16]+s0+w[j-7]+s1)>>> 0;}let[a,b,c,d,e,f,g,h0]=h;for(let j=0;j < 64;j++){const S1=rightRotate(e,6)^ rightRotate(e,11)^ rightRotate(e,25);const ch=(e & f)^(~e & g);const temp1=(h0+S1+ch+k[j]+w[j])>>> 0;const S0=rightRotate(a,2)^ rightRotate(a,13)^ rightRotate(a,22);const maj=(a & b)^(a & c)^(b & c);const temp2=(S0+maj)>>> 0;h0=g;g=f;f=e;e=(d+temp1)>>> 0;d=c;c=b;b=a;a=(temp1+temp2)>>> 0;}h=h.map((x,i)=>(x+[a,b,c,d,e,f,g,h0][i])>>> 0);}return h.map(x=> x.toString(16).padStart(8,'0')).join('');}function rewriteUri(uri){if(uri.startsWith('ar://')){return 'https://arweave.net/'+uri.slice(5);}if(uri.startsWith('ipfs://')){return 'https://ipfs.io/ipfs/'+uri.slice(7);}return uri;}const mediaUris=[{{FILE_URIS}}].map(rewriteUri);const expectedHash='{{FILE_HASH}}';const threejsLibraries={core:{uris:["https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js","https://cdn.jsdelivr.net/npm/three@0.128.0/build/three.min.js","https://unpkg.com/three@0.128.0/build/three.min.js","https://gateway.lighthouse.storage/ipfs/bafybeidkvmhsidcrkq45bncf2lfyiesszy4d3cbgsargqcyvss5hmmkzhy/three.min.js","https://hgivmajycxdg74kebrr7vef5ivgatdbawtg5k4qed2oa3ey23nka.arweave.net/OZFWATgVxm_xRAxj-pC9RUwJjCC0zdVyBB6cDZMa21Q"],expectedHash:"9274bbcec8d96168626c732b5d31c775aa8cfb7eaa0599bec0c175908a2c1ce2"},gltfLoader:{uris:["https://cdn.jsdelivr.net/npm/three@0.128.0/examples/js/loaders/GLTFLoader.js","https://unpkg.com/three@0.128.0/examples/js/loaders/GLTFLoader.js","https://gateway.lighthouse.storage/ipfs/bafybeidkvmhsidcrkq45bncf2lfyiesszy4d3cbgsargqcyvss5hmmkzhy/GLTFLoader.js","https://dcve6f4lbyjp5gutxfp7fo5lvu4qcxhilnet2hfbuk5ayd4xxwqq.arweave.net/GKpPF4sOEv6ak7lf8rurrTkBXOhbST0coaK6DA-XvaE"],expectedHash:"5c15967ba830918a9caea6338712c994c354bccd4edc4569bde411c3ec06a3e6"},orbitControls:{uris:["https://cdn.jsdelivr.net/npm/three@0.128.0/examples/js/controls/OrbitControls.js","https://unpkg.com/three@0.128.0/examples/js/controls/OrbitControls.js","https://gateway.lighthouse.storage/ipfs/bafybeidkvmhsidcrkq45bncf2lfyiesszy4d3cbgsargqcyvss5hmmkzhy/OrbitControls.js","https://c4y7vlkxilcx7p6zsy36yszscriicdr6zdj5wepbhx4l7ysw3nva.arweave.net/FzH6rVdCxX-_2ZY37EsyFFCBDj7I09sR4T34v-JW22o"],expectedHash:"02bb4ade710f3e607329e37a21f098bc3ac70eb6e33daf8a65e79f4db785e7b2"}};const debug=document.getElementById('debug');debug.innerHTML='Expected:'+expectedHash+'<br>URIs:'+mediaUris.length+'<br>Checking available media...';let threejsLoaded=false;async function loadScriptFromURIs(uris,scriptName,expectedScriptHash){for(let i=0;i < uris.length;i++){const uri=uris[i];try{debug.innerHTML+='<br>Loading '+scriptName+' from:'+uri.substring(0,30)+'...';const response=await fetch(uri,{mode:'cors'});if(response.status===200){const scriptText=await response.text();if(expectedScriptHash && expectedScriptHash.length > 0){debug.innerHTML+='<br>Verifying '+scriptName+' hash...';const encoder=new TextEncoder();const scriptBuffer=encoder.encode(scriptText);const hashHex=await sha256(scriptBuffer);const cleanExpected=expectedScriptHash.replace('0x','');if(hashHex !==cleanExpected){debug.innerHTML+='<br>'+scriptName+' hash mismatch,trying next URI';continue;}debug.innerHTML+='<br>'+scriptName+' hash verified!';}const script=document.createElement('script');script.textContent=scriptText;document.head.appendChild(script);debug.innerHTML+='<br>'+scriptName+' loaded successfully';return true;}}catch(e){debug.innerHTML+='<br>'+scriptName+' failed from this URI:'+e.message;}}debug.innerHTML+='<br>ERROR:Could not load '+scriptName;return false;}async function loadThreeJS(){if(threejsLoaded)return true;debug.innerHTML+='<br>Loading Three.js libraries...';const coreLoaded=await loadScriptFromURIs(threejsLibraries.core.uris,'Three.js Core',threejsLibraries.core.expectedHash);if(!coreLoaded)return false;const gltfLoaded=await loadScriptFromURIs(threejsLibraries.gltfLoader.uris,'GLTFLoader',threejsLibraries.gltfLoader.expectedHash);if(!gltfLoaded)return false;const controlsLoaded=await loadScriptFromURIs(threejsLibraries.orbitControls.uris,'OrbitControls',threejsLibraries.orbitControls.expectedHash);if(!controlsLoaded)return false;threejsLoaded=true;debug.innerHTML+='<br>All Three.js libraries loaded!';return true;}function detectMediaType(arrayBuffer,uri){const uint8Array=new Uint8Array(arrayBuffer);const header=Array.from(uint8Array.slice(0,16)).map(b=> b.toString(16).padStart(2,'0')).join('');if(uri.startsWith('data:')){const mimeMatch=uri.match(/data:([^;]+)/);if(mimeMatch){const mimeType=mimeMatch[1];if(mimeType.startsWith('image/'))return 'image';if(mimeType.startsWith('video/'))return 'video';if(mimeType.startsWith('audio/'))return 'audio';if(mimeType==='text/html')return 'html';if(mimeType==='application/json')return 'json';if(mimeType.startsWith('text/'))return 'text';if(mimeType==='model/gltf+json')return '3d';}}if(header.startsWith('ffd8ff'))return 'image';if(header.startsWith('89504e47')){return 'image';}if(header.startsWith('47494638'))return 'image';if(header.startsWith('52494646')&& uint8Array[8]===0x57 && uint8Array[9]===0x45 && uint8Array[10]===0x42 && uint8Array[11]===0x50)return 'image';if(header.startsWith('00000020667479706176696601')|| header.startsWith('0000001c667479706176696601'))return 'image';if(header.startsWith('424d'))return 'image';if(header.startsWith('00000100')|| header.startsWith('00000200'))return 'image';if(header.startsWith('49492a00')|| header.startsWith('4d4d002a'))return 'image';if(header.startsWith('3c3f786d6c')|| header.startsWith('3c737667'))return 'image';if(header.includes('667479706d703432')|| header.includes('667479706d703431')|| header.includes('6674797069736f6d'))return 'video';if(header.startsWith('464c5601'))return 'video';if(header.startsWith('1a45dfa3')){const extendedHeader=Array.from(uint8Array.slice(0,200)).map(b=> b.toString(16).padStart(2,'0')).join('');if(extendedHeader.includes('56503830')|| extendedHeader.includes('56503930')|| extendedHeader.includes('415631')){return 'video';}else if(extendedHeader.includes('566f72626973')|| extendedHeader.includes('4f707573')){return 'audio';}return 'video';}if(header.startsWith('52494646')&& uint8Array[8]===0x41 && uint8Array[9]===0x56 && uint8Array[10]===0x49 && uint8Array[11]===0x20)return 'video';if(header.includes('6674797071742020')|| header.includes('6d6f6f76'))return 'video';if(header.includes('667479703367702')|| header.includes('667479703367703'))return 'video';if(header.startsWith('000001ba')|| header.startsWith('000001b3'))return 'video';if(header.startsWith('4f676753')&& uint8Array.slice(28,35).includes(0x74,0x68,0x65,0x6f,0x72,0x61))return 'video';if(header.startsWith('494433')|| header.startsWith('fff3')|| header.startsWith('fff2'))return 'audio';if(header.startsWith('4f676753'))return 'audio';if(header.startsWith('52494646')&& uint8Array[8]===0x57 && uint8Array[9]===0x41 && uint8Array[10]===0x56 && uint8Array[11]===0x45)return 'audio';if(header.startsWith('664c6143'))return 'audio';if(header.includes('6674797')&&(header.includes('4d344120')|| header.includes('4d344120')|| header.includes('69736f6d'))){const fullHeader=Array.from(uint8Array.slice(0,64)).map(b=> b.toString(16).padStart(2,'0')).join('');if(fullHeader.includes('6d703461')|| fullHeader.includes('4d344120')|| !fullHeader.includes('61766331')){return 'audio';}}if(header.startsWith('676c5446'))return '3d';const textContent=new TextDecoder().decode(uint8Array.slice(0,200));if(textContent.includes('"asset"')&& textContent.includes('"version"')&& textContent.includes('"generator"'))return '3d';try{const text=new TextDecoder().decode(arrayBuffer);if(text.trim().startsWith('{')&& text.trim().endsWith('}')){JSON.parse(text);return 'json';}if(text.includes('<html')|| text.includes('<!DOCTYPE'))return 'html';return 'text';}catch(e){}return 'unknown';}async function calculateHash(arrayBuffer){try{return await sha256(arrayBuffer);}catch(e){debug.innerHTML+='<br>Hash error:'+e.message;return null;}}function renderImage(uri,arrayBuffer){const content=document.getElementById('content');const stage=document.createElement('div');stage.className='stage';const panzoom=document.createElement('div');panzoom.className='panzoom';const img=document.createElement('img');img.src=uri;let scale=1,minScale=1,x=0,y=0;const zoomFactors=[1,2,3];let zoomIndex=0;function clampPosition(){const sw=stage.clientWidth,sh=stage.clientHeight;const iw=img.naturalWidth || 0,ih=img.naturalHeight || 0;const dw=iw*scale,dh=ih*scale;if(dw <=sw){x=Math.round((sw-dw)/2);}else{if(x > 0)x=0;if(x < sw-dw)x=Math.round(sw-dw);}if(dh <=sh){y=Math.round((sh-dh)/2);}else{if(y > 0)y=0;if(y < sh-dh)y=Math.round(sh-dh);}}function applyTransform(){clampPosition();panzoom.style.transform='translate('+x+'px,'+y+'px)scale('+scale+')';}function setZoomAt(factor,cx,cy){const newScale=Math.max(minScale,Math.min(10,minScale*factor));const k=newScale/scale;x=cx-(cx-x)*k;y=cy-(cy-y)*k;scale=newScale;applyTransform();}img.onload=()=>{const sw=stage.clientWidth,sh=stage.clientHeight;const iw=img.naturalWidth,ih=img.naturalHeight;minScale=Math.min(sw/iw,sh/ih);scale=minScale;x=Math.round((sw-iw*scale)/2);y=Math.round((sh-ih*scale)/2);applyTransform();panzoom.style.visibility='visible';debug.style.display='none';};let isPanning=false,startX=0,startY=0,startTX=0,startTY=0,moved=false;stage.addEventListener('pointerdown',(e)=>{isPanning=true;moved=false;startX=e.clientX;startY=e.clientY;startTX=x;startTY=y;stage.setPointerCapture(e.pointerId);stage.classList.add('grabbing');});stage.addEventListener('pointermove',(e)=>{if(!isPanning)return;const dx=e.clientX-startX;const dy=e.clientY-startY;if(Math.abs(dx)> 2 || Math.abs(dy)> 2)moved=true;x=startTX+dx;y=startTY+dy;applyTransform();});const endPan=(e)=>{if(!isPanning)return;isPanning=false;stage.releasePointerCapture(e.pointerId);stage.classList.remove('grabbing');};stage.addEventListener('pointerup',(e)=>{const rect=stage.getBoundingClientRect();const cx=e.clientX-rect.left;const cy=e.clientY-rect.top;const wasMoved=moved;endPan(e);if(!wasMoved){zoomIndex=(zoomIndex+1)% zoomFactors.length;setZoomAt(zoomFactors[zoomIndex],cx,cy);}});stage.addEventListener('pointercancel',endPan);stage.addEventListener('wheel',(e)=>{e.preventDefault();const rect=stage.getBoundingClientRect();const cx=e.clientX-rect.left;const cy=e.clientY-rect.top;const zoom=Math.exp(-e.deltaY*0.0015);const newScale=Math.max(minScale,Math.min(10,scale*zoom));const k=newScale/scale;x=cx-(cx-x)*k;y=cy-(cy-y)*k;scale=newScale;applyTransform();},{passive:false});window.addEventListener('resize',()=>{const sw=stage.clientWidth,sh=stage.clientHeight;const iw=img.naturalWidth,ih=img.naturalHeight;const newMin=Math.min(sw/iw,sh/ih);minScale=newMin;if(scale < minScale){scale=minScale;}applyTransform();});content.innerHTML='';content.appendChild(stage);stage.appendChild(panzoom);panzoom.appendChild(img);}function renderVideo(uri){const content=document.getElementById('content');const container=document.createElement('div');container.className='media-container';const video=document.createElement('video');video.className='video-player';video.src=uri;video.controls=true;video.autoplay=false;video.style.maxWidth='100%';video.style.maxHeight='100%';container.appendChild(video);content.innerHTML='';content.appendChild(container);debug.style.display='none';}function renderAudio(uri){const content=document.getElementById('content');const container=document.createElement('div');container.className='media-container';const audio=document.createElement('audio');audio.className='audio-player';audio.src=uri;audio.controls=true;audio.style.width='100%';container.appendChild(audio);content.innerHTML='';content.appendChild(container);debug.style.display='none';}async function render3D(uri,arrayBuffer){const content=document.getElementById('content');const container=document.createElement('div');container.className='threejs-container';container.innerHTML='<div class="loading">Loading 3D model...</div>';const controls=document.createElement('div');controls.className='threejs-controls';controls.innerHTML='Loading Three.js libraries...';content.innerHTML='';content.appendChild(container);content.appendChild(controls);const loaded=await loadThreeJS();if(!loaded){container.innerHTML='<div class="error">Failed to load Three.js libraries<br>Check console for details</div>';return;}controls.innerHTML='Mouse:Rotate | Wheel:Zoom | Right-click:Pan';try{const scene=new THREE.Scene();scene.background=new THREE.Color(0x000000);const camera=new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,0.1,1000);const renderer=new THREE.WebGLRenderer({antialias:true});renderer.setSize(window.innerWidth,window.innerHeight);renderer.shadowMap.enabled=true;renderer.shadowMap.type=THREE.PCFSoftShadowMap;container.innerHTML='';container.appendChild(renderer.domElement);const ambientLight=new THREE.AmbientLight(0x404040,0.6);scene.add(ambientLight);const directionalLight=new THREE.DirectionalLight(0xffffff,0.8);directionalLight.position.set(10,10,5);directionalLight.castShadow=true;scene.add(directionalLight);const orbitControls=new THREE.OrbitControls(camera,renderer.domElement);orbitControls.enableDamping=true;orbitControls.dampingFactor=0.05;const uint8Array=new Uint8Array(arrayBuffer);const isGLB=uint8Array[0]===0x67 && uint8Array[1]===0x6C && uint8Array[2]===0x54 && uint8Array[3]===0x46;if(!isGLB){try{const gltfText=new TextDecoder().decode(arrayBuffer);const gltfJson=JSON.parse(gltfText);if(gltfJson.buffers && gltfJson.buffers.some(buffer=> buffer.uri && !buffer.uri.startsWith('data:'))){container.innerHTML='<div class="error">GLTF with external files not supported<br>Please use GLB(binary)format or embedded GLTF</div>';return;}}catch(e){container.innerHTML='<div class="error">Invalid GLTF file format</div>';return;}}const loader=new THREE.GLTFLoader();const blob=new Blob([arrayBuffer],{type:isGLB ? 'model/gltf-binary':'model/gltf+json'});const blobUrl=URL.createObjectURL(blob);loader.load(blobUrl,function(gltf){const model=gltf.scene;if(!model || model.children.length===0){container.innerHTML='<div class="error">No 3D geometry found in model</div>';URL.revokeObjectURL(blobUrl);return;}scene.add(model);const box=new THREE.Box3().setFromObject(model);const center=box.getCenter(new THREE.Vector3());const size=box.getSize(new THREE.Vector3());const maxDim=Math.max(size.x,size.y,size.z);if(maxDim > 0){const scale=2/maxDim;model.scale.setScalar(scale);model.position.sub(center.multiplyScalar(scale));}camera.position.set(0,0,3);camera.lookAt(0,0,0);URL.revokeObjectURL(blobUrl);controls.innerHTML='Mouse:Rotate | Wheel:Zoom | Right-click:Pan';},function(progress){if(progress.total > 0){const percent=Math.round((progress.loaded/progress.total)*100);controls.innerHTML='Loading 3D model:'+percent+'%';}},function(error){console.error('Error loading 3D model:',error);URL.revokeObjectURL(blobUrl);let errorMessage='Error loading 3D model';if(error.message.includes('buffer')){errorMessage='Model references external files<br>Use GLB format for self-contained models';}else if(error.message.includes('JSON')){errorMessage='Invalid GLTF format<br>Check file structure';}container.innerHTML='<div class="error">'+errorMessage+'</div>';});function animate(){requestAnimationFrame(animate);orbitControls.update();renderer.render(scene,camera);}animate();window.addEventListener('resize',()=>{camera.aspect=window.innerWidth/window.innerHeight;camera.updateProjectionMatrix();renderer.setSize(window.innerWidth,window.innerHeight);});}catch(error){console.error('Three.js initialization error:',error);container.innerHTML='<div class="error">Three.js not available<br>3D models require Three.js library</div>';}debug.style.display='none';}function renderHTML(arrayBuffer){const content=document.getElementById('content');const htmlContent=new TextDecoder().decode(arrayBuffer);debug.style.display='none';const iframe=document.createElement('iframe');iframe.className='html-viewer';iframe.srcdoc=htmlContent;iframe.sandbox='allow-scripts allow-same-origin allow-forms allow-popups allow-modals';iframe.style.position='fixed';iframe.style.top='0';iframe.style.left='0';iframe.style.width='100vw';iframe.style.height='100vh';iframe.style.border='none';iframe.style.zIndex='9999';iframe.style.background='white';document.body.innerHTML='';document.body.appendChild(iframe);document.body.style.margin='0';document.body.style.padding='0';document.body.style.overflow='hidden';}function renderText(arrayBuffer){const content=document.getElementById('content');const textContent=new TextDecoder().decode(arrayBuffer);const viewer=document.createElement('div');viewer.className='text-viewer';viewer.textContent=textContent;content.innerHTML='';content.appendChild(viewer);debug.style.display='none';}function renderJSON(arrayBuffer){const content=document.getElementById('content');const jsonText=new TextDecoder().decode(arrayBuffer);try{const jsonObj=JSON.parse(jsonText);const formatted=JSON.stringify(jsonObj,null,2);const viewer=document.createElement('div');viewer.className='text-viewer json-viewer';const highlighted=formatted.replace(/"([^"]+)":/g,'<span class="json-key">"$1"</span>:').replace(/:"([^"]*)"/g,':<span class="json-string">"$1"</span>').replace(/:(\d+)/g,':<span class="json-number">$1</span>').replace(/:(true|false)/g,':<span class="json-boolean">$1</span>').replace(/:null/g,':<span class="json-null">null</span>');viewer.innerHTML=highlighted;content.innerHTML='';content.appendChild(viewer);}catch(e){renderText(arrayBuffer);}debug.style.display='none';}async function loadMedia(){const content=document.getElementById('content');for(let i=0;i < mediaUris.length;i++){const uri=mediaUris[i];try{debug.innerHTML+='<br>Trying:'+uri.substring(0,30)+'...';const response=await fetch(uri,{mode:'cors'});debug.innerHTML+='<br>Status:'+response.status;if(response.status===200){const arrayBuffer=await response.arrayBuffer();debug.innerHTML+='<br>Size:'+arrayBuffer.byteLength;if(!expectedHash || expectedHash.length===0){debug.innerHTML+='<br>NO EXPECTED HASH-Cannot verify';continue;}const fileSizeMB=(arrayBuffer.byteLength/(1024*1024)).toFixed(1);debug.innerHTML+='<br>Hashing '+fileSizeMB+'MB file...';const hashHex=await calculateHash(arrayBuffer);if(!hashHex){debug.innerHTML+='<br>Hash calculation failed';continue;}debug.innerHTML+='<br>Hash:'+hashHex.substring(0,16)+'...';const cleanExpected=expectedHash.replace('0x','');if(hashHex===cleanExpected){debug.innerHTML+='<br>HASH MATCH! Loading...';const mediaType=detectMediaType(arrayBuffer,uri);debug.innerHTML+='<br>Media type:'+mediaType;switch(mediaType){case 'image':renderImage(uri,arrayBuffer);break;case 'video':renderVideo(uri);break;case 'audio':renderAudio(uri);break;case '3d':render3D(uri,arrayBuffer);break;case 'html':renderHTML(arrayBuffer);break;case 'json':renderJSON(arrayBuffer);break;case 'text':renderText(arrayBuffer);break;default:content.innerHTML='<div class="error">Unsupported media type:'+mediaType+'</div>';debug.style.display='none';}return;}else{debug.innerHTML+='<br>Hash mismatch';}}}catch(e){debug.innerHTML+='<br>Error:'+e.message;}}content.innerHTML='No media with matching hash found. All media failed hash verification.';}loadMedia();</script></body></html>
!!!"""###%%%&&&&&&(((((()'(+('+('+('((%%%%###"""!!!!!!"""$$$%%%&&&)'()'(,*(,*(50/3/+""""""$$$&&&)'(+(),)*,*(-+)R,*(&'$$$$"""!!!%#!'%#+('2.*7+-B7C"""###'%%)'%+(),*(-+)/*)0+*Z/-))'%%%%###"""!!!"""###%%%&&&(((((()'(+('-)(*/:-+)((%%%%###"""!!!%#!'%#)'%-+'-+)1-+NA0F.2:./!!!"""$$$%%%&&&&&&((()'()'(('((((%%%$$$"""!!!!!!"""###'%%)'(+()0+,90/2..4-,9$cUF9!!!"""$$$%%%&&&&&&&&&((((((&&&&&&%%%$$$"""!!!
"name": "PUSH4","description": "PUSH4 encodes Barnett Newman's Onement I (1948) into the function selectors of a Solidity smart contract. Each of the 375 pixels in the image exists as a function on the Ethereum blockchain, mined using a custom GPU tool that brute-forces function names until their 4-byte selector hashes match the exact color data required.\n\nThe title references `PUSH4`, the EVM opcode that pushes a 4-byte function selector onto the stack, the fundamental mechanism by which smart contracts route calls to their functions."
0x28996f7d…515a·#24,120,268·0x2791bd0c…be2f03
q{{BLOCK_INTERVAL}}`pRo{{CORE_ADDRESS}}`@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Ro0123456789abcdef`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`ghijklmnopqrstuvwxyz0123456789-_`@Ro0123456789abcdef`data:application/json;base64,<svg xmlns="http://www.w3.org/20" shape-rendering="crispEdges">" width="1" height="1" fill=""name": "PUSH4","description": "PUSH4 encodes Barnett Newman's Onement I (1948) into the function selectors of a Solidity smart contract. Each of the 375 pixels in the image exists as a function on the Ethereum blockchain, mined using a custom GPU tool that brute-forces function names until their 4-byte selector hashes match the exact color data required.\n\nThe title references `PUSH4`, the EVM opcode that pushes a 4-byte function selector onto the stack, the fundamental mechanism by which smart contracts route calls to their functions."
"name": "PUSH4","description": "PUSH4 encodes Barnett Newman's Onement I (1948) into the function selectors of a Solidity smart contract. Each of the 375 pixels in the image exists as a function on the Ethereum blockchain, mined using a custom GPU tool that brute-forces function names until their 4-byte selector hashes match the exact color data required.\n\nThe title references `PUSH4`, the EVM opcode that pushes a 4-byte function selector onto the stack, the fundamental mechanism by which smart contracts route calls to their functions."
"name": "PUSH4","description": "PUSH4 encodes Barnett Newman's Onement I (1948) into the function selectors of a Solidity smart contract. Each of the 375 pixels in the image exists as a function on the Ethereum blockchain, mined using a custom GPU tool that brute-forces function names until their 4-byte selector hashes match the exact color data required. The title references `PUSH4`, the EVM opcode that pushes a 4-byte function selector onto the stack, the fundamental mechanism by which smart contracts route calls to their functions."
Ro0123456789abcdef`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`ghijklmnopqrstuvwxyz0123456789-_data:application/json;base64,<svg xmlns="http://www.w3.org/20" shape-rendering="crispEdges">" width="1" height="1" fill=""name": "PUSH4","description": "A heavily compressed and dithered down version of Barnett Newman's Onement I, encoded in 375 smart contract function selectors."
1-50 of 72