PageSourceSearch

https://www.funnudge.com/_next/static/chunks/5244.e1022ed8fb0155c1.js

js funnudge.com collected 2026-10-02 01:31:15 UTC 18,479 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5244],{98:(e,t,n)=>{n.d(t,{EB:()=>c,ER:()=>d,cC:()=>l,sD:()=>h});var o=n(7548),a=n(2006),s=n(3464),i=n(6170),r=n(6451);function l(e,t){var n,l,d,c,h;let w=new o.Z58,x=new o.ubm(null!=(n=null==t?void 0:t.fov)?n:60,4/3,.1,500),u=new o.JeP({antialias:!0});u.setPixelRatio(Math.min(window.devicePixelRatio||1,1.5)),u.setClearColor(null!=(l=null==t?void 0:t.clear)?l:657940),(null==t?void 0:t.shadows)&&(u.shadowMap.enabled=!0,u.shadowMap.type=o.Wk7);let p=u.domElement;p.style.width="100%",p.style.height="100%",p.style.display="block",e.appendChild(p);let m=null;(null==t?void 0:t.bloom)&&((m=new a.s(u)).addPass(new i.A(w,x)),m.addPass(new r.C(new o.I9Y(256,256),null!=(d=t.bloom.strength)?d:.5,null!=(c=t.bloom.radius)?c:.5,null!=(h=t.bloom.threshold)?h:.7)),m.addPass(new s.X));let f=()=>{let t=e.clientWidth||1,n=e.clientHeight||1;u.setSize(t,n,!1),m&&(m.setPixelRatio(u.getPixelRatio()),m.setSize(t,n)),x.aspect=t/n,x.updateProjectionMatrix()};f();let b=new ResizeObserver(f);return b.observe(e),{scene:w,camera:x,renderer:u,render:()=>{m?m.render():u.render(w,x)},dispose:()=>{b.disconnect(),null==m||m.dispose(),w.traverse(e=>{e.geometry&&e.geometry.dispose();let t=e.material;Array.isArray(t)?t.forEach(e=>
1e.dispose()):null==t||t.dispose()}),u.dispose(),p.parentElement===e&&e.removeChild(p)}}}function d(e,t,n){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1,i=document.createElement("canvas");i.width=e,i.height=t,n(i.getContext("2d"),e,t);let r=new o.GOR(i);return r.colorSpace=o.er$,r.wrapS=o.GJx,r.wrapT=o.GJx,r.repeat.set(a,s),r.anisotropy=4,r}function c(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:128,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"#808080",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:26;return d(e,e,o=>{o.fillStyle=t,o.fillRect(0,0,e,e);for(let t=0;t<e*e*.35;t++){let t=128+Math.floor((Math.random()-.5)*2*n);o.fillStyle="rgb(".concat(t,",").concat(t,",").concat(t,")"),o.fillRect(Math.random()*e,Math.random()*e,1.5,1.5)}})}function h(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0xffffff,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:.6,s=new Float32Array(3*e);for(let n=0;n<e;n++){let e=t*(.5+.5*Math.random()),o=Math.random()*Math.PI*2,a=(Math.random()-.5)*Math.PI;s[3*n]=Math.cos(o)*Math.cos(a)*e,s[3*n+1]=Math.sin(a)*e,s[3*n+2]=Math.sin(o)*Math.cos(a)*e}let i=new o.LoY;i.setAttribute("position",new o.THS(s,3));let r=new o.BH$({color:n,size:a,sizeAttenuation:!0,transparent:!0,opacity:.8,blending:o.EZo,depthWrite:!1});return new o.ONl(i,r)}},1665:(e,t,n)=>{n.d(t,{A:()=>a});var o=n(5155);function a(e){let{title:t,eyebrow:n,scoreLabel:a,score:s,best:i,levelLabel:r,level:l,status:d,cta:c,onStart:h,accent:w}=e;return(0,o.jsxs)("div",{className:"relative mb-4 overflow-hidden rounded-2xl border border-white/10 bg-zinc-950/70 p-3 shadow-2xl shadow-black/25 backdrop-blur-xl",children:[(0,o.jsx)("div",{className:"pointer-events-none absolute inset-x-8 h-px bg-gradient-to-r ".concat(w," opacity-70"),"aria-hidden":!0}),(0,o.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[(0,o.jsxs)("div",{className:"min-w-0",children:[(0,o.jsxs)("div",{className:"mb-1 flex items-center gap-2",children:[(0,o.jsx)("span",{className:"h-2 w-2 rounded-full bg-gradient-to-r ".concat(w," shadow-lg"),"aria-hidden":!0}),(0,o.jsx)("span",{className:"text-[11px] font-black uppercase tracking-[0.18em] text-zinc-400",children:n})]}),(0,o.jsx)("h3",{className:"truncate text-lg font-black text-white sm:text-2xl",children:t})]}),(0,o.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,o.jsxs)("div",{className:"rounded-xl border border-white/10 bg-white/[0.07] px-3 py-2 text-center shadow-inner shadow-white/5",children:[(0,o.jsx)("div",{className:"text-[10px] font-black uppercase tracking-[0.16em] text-zinc-500",children:a}),(0,o.jsx)("div",{className:"text-xl font-black tabular-nums text-white",children:s})]}),r&&void 0!==l&&(0,o.jsxs)("div",{className:"rounded-xl border border-white/10 bg-white/[0.07] px-3 py-2 text-center shadow-inner shadow-white/5",children:[(0,o.jsx)("div",{className:"text-[10px] font-black uppercase tracking-[0.16em] text-zinc-500",children:r}),(0,o.jsx)("div",{className:"text-xl font-black tabular-nums text-cyan-200",children:l})]}),void 0!==i&&(0,o.jsxs)("div",{className:"hidden rounded-xl border border-amber-300/20 bg-amber-300/10 px-3 py-2 text-center shadow-inner shadow-amber-100/5 sm:block",children:[(0,o.jsx)("div",{className:"text-[10px] font-black uppercase tracking-[0.16em] text-amber-200/70",children:"Best"}),(0,o.jsx)("div",{className:"text-xl font-black tabular-nums text-amber-200",children:i})]}),(0,o.jsx)("div",{className:"hidden rounded-xl border border-white/10 bg-white/[0.05] px-3 py-2 text-sm font-bold text-zinc-300 sm:block",children:d}),(0,o.jsx)("button",{onClick:h,className:"rounded-xl bg-gradient-to-r ".concat(w," px-4 py-3 text-sm font-black text-white shadow-lg transition hover:-translate-y-0.5 hover:shadow-xl active:translate-y-0"),children:c})]})]})]})}},3557:(e,t,n)=>{n.d(t,{g:()=>a});var o=n(2115);function a(e){let[t,n]=(0,o.useState)(0);return(0,o.useEffect)(()=>{try{let t=window.localStorage.getItem("funnudge:".concat(e));t&&n(Number(t)||0)}catch(e){}},[e]),{best:t,submit:(0,o.useCallback)(t=>{n(n=>{if(t<=n)return n;try{window.localStorage.setItem("funnudge:".concat(e),String(t))}catch(e){}return t})},[e])}}},5244:(e,t,n)=>{n.r(t),n.d(t,{default:()=>p});var o=n(5155),a=n(2115),s=n(7548),i=n(1175),r=n(4107),l=n(98),d=n(3557),c=n(1665),h=n(8978);let w=[{x:0,z:2,w:7.5,d:10,y:0,kind:"start"},{x:-1.6,z:-7,w:4.6,d:5.2,y:.4},{x:2.5,z:-13,w:3.4,d:4.8,y:.95},{x:-2.4,z:-20,w:3.4,d:4.2,y:1.35,kind:"checkpoint"},{x:.2,z:-28,w:8,d:4,y:1.65},{x:.2,z:-36,w:3.2,d:5.4,y:2.05},{x:-3.3,z:-43,w:3.2,d:4.4,y:2.35},{x:2.6,z:-50,w:3.3,d:4.2,y:2.55,kind:"checkpoint"},{x:.1,z:-59,w:7,d:4.6,y:2.9},{x:-2.2,z:-68,w:3.2,d:5,y:3.15},{x:2.6,z:-76,w:3.2,d:5,y:3.45},{x:0,z:-86,w:8,d:4.8,y:3.75},{x:0,z:-96,w:6,d:7,y:4.1,kind:"finish"}],x=[{x:.2,z:-28,w:1.4,d:3.2},{x:.1,z:-59,w:4.8,d:1.15},{x:0,z:-86,w:5,d:1.1}];function u(e,t,n){return Math.abs(e-n.x)<=n.w/2&&Math.abs(t-n.z)<=n.d/2}function p(){let e=(0,a.useRef)(null),[t,n]=(0,a.useState)("idle"),[p,m]=(0,a.useState)(0),{best:f,submit:b}=(0,d.g)("obby-parkour-3d"),y=(0,a.useRef)("idle"),g=(0,a.useRef)(0),v=(0,a.useRef)(()=>{}),k=(0,a.useRef)({left:!1,right:!1,forward:!1,back:!1,jump:!1,sprint:!1});y.current=t,(0,a.useEffect)(()=>{let t=e.current;if(!t)return;let o=(0,l.cC)(t,{fov:62,clear:0x9fc4d8,shadows:!0,bloom:{strength:.
116,radius:.4,threshold:.82}}),{scene:a,camera:d}=o;a.background=new s.Q1f(0x9fc4d8),a.fog=new s.jUj(0x9fc4d8,35,120),a.add(new s.dth(0xeaf8ff,4937059,1.55));let c=new s.ZyN(0xfff4d6,2.1);c.position.set(-12,22,14),c.castShadow=!0,c.shadow.mapSize.set(2048,2048),c.shadow.camera.left=-18,c.shadow.camera.right=18,c.shadow.camera.top=18,c.shadow.camera.bottom=-18,c.shadow.camera.far=80,a.add(c);let h=new s._4j({color:0xf8fafc,roughness:.9,transparent:!0,opacity:.82}),p=new s.Gu$(1,12,8);for(let e=0;e<12;e++){let t=new s.YJl,n=(e%2==0?-1:1)*(7+e%3*3),o=-10-8*e,i=5+e%4*.7;for(let e=0;e<4;e++){let n=new s.eaF(p,h);n.position.set((e-1.5)*.9,.16*Math.sin(e),e%2*.18),n.scale.set(1.2-.1*e,.38+.04*e,.55),t.add(n)}t.position.set(n,i,o),a.add(t)}let f=new s.YJl;a.add(f);let j=(0,l.ER)(192,192,(e,t,n)=>{e.fillStyle="#72777f",e.fillRect(0,0,t,n),e.strokeStyle="#4d535c",e.lineWidth=5;for(let o=0;o<=n;o+=48)e.beginPath(),e.moveTo(0,o),e.lineTo(t,o),e.stroke();for(let o=0;o<=t;o+=48)e.beginPath(),e.moveTo(o,0),e.lineTo(o,n),e.stroke();e.fillStyle="rgba(255,255,255,.07)";for(let o=0;o<80;o++)e.fillRect(Math.random()*t,Math.random()*n,2,2)},2,2),z=new s._4j({map:j,roughness:.82,metalness:.04}),N=new s._4j({color:2148759,emissive:1003826,emissiveIntensity:.22,roughness:.45}),M=new s._4j({color:0xfacc15,emissive:8138002,emissiveIntensity:.35,roughness:.35}),S=new s._4j({color:3686738,roughness:.9}),P=new s._4j({color:8246268,emissive:223649,emissiveIntensity:.22,roughness:.36,metalness:.12}),F=new s._4j({color:0xfde68a,emissive:0xb45309,emissiveIntensity:.35,roughness:.32,metalness:.18}),_=new s._4j({color:0xff4d1f,emissive:0xff2a00,emissiveIntensity:1.2,roughness:.3}),A=new s._4j({color:1120295,emissive:0xef4444,emissiveIntensity:.25,roughness:.42,metalness:.32});for(let e of w){let t="finish"===e.kind?M:"checkpoint"===e.kind?N:z,n=new s.eaF(new s.iNn(e.w,.32,e.d),t);n.position.set(e.x,e.y-.16,e.z),n.castShadow=!0,n.receiveShadow=!0,f.add(n);let o=new s.eaF(new s.iNn(e.w,Math.max(.8,e.y+.75),e.d),S);o.position.set(e.x,e.y/2-.65,e.z),o.receiveShadow=!0,f.add(o);let a="finish"===e.kind?F:P,i=e.y+.04,r=new s.eaF(new s.iNn(e.w+.08,.08,.08),a);r.position.set(e.x,i,e.z-e.d/2);let l=r.clone();l.position.z=e.z+e.d/2;let d=new s.eaF(new s.iNn(.08,.08,e.d+.08),a);d.position.set(e.x-e.w/2,i,e.z);let c=d.clone();for(let t of(c.position.x=e.x+e.w/2,[r,l,d,c]))t.castShadow=!0,f.add(t)}let R=w[w.length-1],C=new s.YJl;for(let e of(C.position.set(R.x,R.y,R.z+1.2),[-1,1])){let t=new s.eaF(new s.iNn(.22,2.1,.22),F);t.position.set(2.15*e,1.08,0),t.castShadow=!0,C.add(t)}let E=new s.eaF(new s.iNn(4.55,.22,.22),F);E.position.y=2.12,E.castShadow=!0,C.add(E);let D=new s.HiM(0xfacc15,1.6,7);D.position.set(0,1.8,0),C.add(D),f.add(C);let I=x.map(e=>{var t;let n=null!=(t=w.find(t=>u(e.x,e.z,t)))?t:w[0];return{...e,y:n.y+.05}});for(let e of I){let t=new s.eaF(new s.iNn(e.w,.08,e.d),_);t.position.set(e.x,e.y,e.z),f.add(t);let n=new s.HiM(0xff4d1f,1.4,8);n.position.set(e.x,e.y+1.2,e.z),f.add(n)}let q=[];for(let e of[{x:.2,z:-28,y:2.25,len:6.2,speed:1.8,phase:0},{x:.1,z:-59,y:3.45,len:5.6,speed:-2.1,phase:1.3},{x:0,z:-86,y:4.32,len:6.6,speed:2.35,phase:.5}]){let t=new s.eaF(new s.iNn(e.len,.18,.28),A);t.position.set(e.x,e.y,e.z),t.castShadow=!0,f.add(t),q.push({...e,mesh:t})}let J=new s.YJl,O=new s._4j({color:1450035,roughness:.48,metalness:.08}),W=new s._4j({color:1940464,emissive:736112,emissiveIntensity:.12,roughness:.42}),Y=new s._4j({color:0xf2c7a5,roughness:.55}),G=new s._4j({color:2042167,roughness:.62}),L=new s._4j({color:725024,roughness:.5}),U=new s._4j({color:6809849,emissive:561586,emissiveIntensity:.45,roughness:.25}),T=new s.YJl;T.position.y=.94,J.add(T);let $=new s.eaF(new s.iNn(.48,.68,.28),O);$.castShadow=!0,T.add($);let H=new s.eaF(new s.iNn(.36,.44,.05),W);H.position.set(0,.05,-.17),T.add(H);let B=new s.eaF(new s.iNn(.42,.5,.13),O);B.position.set(0,.03,.23),B.castShadow=!0,T.add(B);let Z=new s.eaF(new s.Gu$(.24,20,20),Y);Z.position.y=1.52,Z.castShadow=!0,J.add(Z);let Q=new s.eaF(new s.Gu$(.255,16,10,0,2*Math.PI,0,.55*Math.PI),G);Q.position.y=1.62,J.add(Q);let V=new s.eaF(new s.iNn(.34,.065,.045),U);V.position.set(0,1.55,-.22),J.add(V);let X=[],K=[];for(let e of[-1,1]){let t=new s.YJl;t.position.set(.35*e,1.16,0),t.rotation.z=.18*e;let n=new s.eaF(new s.iNn(.11,.36,.11),W);n.position.y=-.18,n.castShadow=!0,t.add(n);let o=new s.eaF(new s.Gu$(.07,10,10),Y);o.position.y=-.41,t.add(o),J.add(t),X.push(t);let a=new s.YJl;a.position.set(.14*e,.63,0);let i=new s.eaF(new s.iNn(.13,.5,.13),O);i.position.y=-.24,i.castShadow=!0,a.add(i);let r=new s.eaF(new s.iNn(.17,.1,.28),L);r.position.set(0,-.53,-.06),r.castShadow=!0,a.add(r),J.add(a),K.push(a)}f.add(J);let ee=new s.Gu$(.08,8,8),et=new s.V9B({color:0xffffff,transparent:!0,opacity:.28}),en=[],eo=new s.Pq0(0,.35,4),ea=new s.Pq0,es=!1,ei=!1,er=0,el=0,ed=!1,ec=()=>{eo=new s.Pq0(0,.35,4),ea=new s.Pq0,es=!1,ei=!1,er=0,ed=!1,g.current=0,m(0),n("running")};v.current=ec;let eh=e=>{if(ed)return;ed=!0;let t=e?Math.max(g.current,1200+Math.max(0,Math.floor(400-8*er))):g.current;g.current=t,m(t),b(t),(0,r.q7)("obby-parkour-3d",t),(0,i._O)(e?"win":"lose"),n(e?"won":"over")},ew=0,ex=performance.now(),eu=e=>{let t=Math.min((e-ex)/1e3,.033);for(let t of(ex=e,q)){let n=.001*e*t.speed+t.phase;t.mesh.rotation.y=n;let o=eo.x-t.x,a=eo.z-t.z,s=Math.cos(-n),i=Math.sin(-n),r=o*s-a*i,l=o*i+a*s;"running"===y.current&&Math.abs(r)<t.len/2+.22&&.28>Math.abs(l)&&.75>Math.abs(eo.y+.75-t.y)&&(ea.x+=7*Math.sign(o||1),ea.z+=4,eh(!1))}if("running"===y.current){er+=t;let e=k.current,n=new s.Pq0(!!e.right-!!e.left,0,!!e.back-!!e.forward);n.lengthSq()>1&&n.normalize();let o=e.sprint?8.8:6.8;
1ea.x+=(n.x*o-ea.x)*Math.min(12*t,1),ea.z+=(n.z*o-ea.z)*Math.min(12*t,1),ea.y-=20*t,e.jump&&es&&!ei&&(ea.y=8.2,es=!1,ei=!0,(0,i._O)("jump")),e.jump||(ei=!1),eo.x+=ea.x*t,eo.z+=ea.z*t,eo.y+=ea.y*t;let a=((e,t)=>{let n=null;for(let o of w)u(e,t,o)&&(null===n||o.y>n)&&(n=o.y);return n})(eo.x,eo.z);for(let e of(null!==a&&ea.y<=0&&eo.y<=a+.02?(!es&&ea.y<-3&&(0,i._O)("tap"),eo.y=a,ea.y=0,es=!0):es=!1,I))u(eo.x,eo.z,e)&&eo.y<=e.y+.4&&eh(!1);eo.y<-10&&eh(!1),eo.z<-94&&eo.y>3.8&&eh(!0);let r=Math.max(0,Math.floor(-(10*eo.z)+12*eo.y));if(r>g.current&&!ed&&(g.current=r,m(r),b(r)),n.lengthSq()>.1&&(J.rotation.y=Math.atan2(n.x,n.z),es)&&(el-=t)<=0){el=.075;let e=new s.eaF(ee,et.clone());e.position.set(eo.x+(Math.random()-.5)*.4,eo.y+.06,eo.z+.32),e.scale.setScalar(.6+.8*Math.random()),f.add(e),en.push({mesh:e,age:0})}}J.position.copy(eo);let n=es&&"running"===y.current?.035*Math.sin(e/90):0;T.position.y=.95+n,Z.position.y=1.55+n,Q.position.y=1.65+n,V.position.y=1.55+n;let a=s.cj9.clamp(Math.hypot(ea.x,ea.z)/7,0,1),r=Math.sin(e/75)*a;X[0].rotation.x=.95*r,X[1].rotation.x=-(.95*r),K[0].rotation.x=-(.85*r),K[1].rotation.x=.85*r,T.rotation.x=es?-(.08*a):.12;for(let e=en.length-1;e>=0;e--){let n=en[e];n.age+=t,n.mesh.position.y+=.45*t,n.mesh.scale.multiplyScalar(1+1.6*t);let o=n.mesh.material;o.opacity=Math.max(0,.28*(1-n.age/.45)),n.age>.45&&(f.remove(n.mesh),o.dispose(),en.splice(e,1))}let l=new s.Pq0(.55*eo.x,eo.y+4.7,eo.z+8.5);d.position.lerp(l,Math.min(6*t,1)),d.lookAt(eo.x,eo.y+1,eo.z-4.5),c.position.set(eo.x-12,eo.y+22,eo.z+18),o.render(),ew=requestAnimationFrame(eu)};ew=requestAnimationFrame(eu);let ep=(e,t)=>{let n=k.current;("ArrowLeft"===e.key||"a"===e.key||"A"===e.key)&&(n.left=t),("ArrowRight"===e.key||"d"===e.key||"D"===e.key)&&(n.right=t),("ArrowUp"===e.key||"w"===e.key||"W"===e.key)&&(n.forward=t),("ArrowDown"===e.key||"s"===e.key||"S"===e.key)&&(n.back=t),"Space"===e.code&&(n.jump=t,e.preventDefault()),"Shift"===e.key&&(n.sprint=t),t&&("Enter"===e.key||"Space"===e.code)&&"running"!==y.current&&(e.preventDefault(),ec())},em=e=>ep(e,!0),ef=e=>ep(e,!1);return window.addEventListener("keydown",em),window.addEventListener("keyup",ef),()=>{cancelAnimationFrame(ew),window.removeEventListener("keydown",em),window.removeEventListener("keyup",ef),j.dispose(),ee.dispose(),et.dispose(),o.dispose()}},[]);let j=(e,t)=>{k.current[e]=t};return(0,o.jsxs)("div",{className:"select-none",children:[(0,o.jsx)(c.A,{title:"Obby Parkour 3D",eyebrow:"Precision course",scoreLabel:"Score",score:p,best:f,status:"running"===t?"Live run":"Ready",cta:"running"===t?"Restart":"Start",accent:"from-sky-500 to-emerald-400",onStart:()=>v.current()}),(0,o.jsxs)("div",{"data-board":!0,ref:e,className:"relative mx-auto aspect-square w-full touch-none overflow-hidden rounded-[1.35rem] border border-cyan-200/30 bg-sky-200 shadow-2xl shadow-cyan-950/30 sm:aspect-[4/3]",style:{maxWidth:"min(100%, calc(82vh * 1.333))"},role:"application","aria-label":"Obby Parkour 3D game. Use WASD or arrow keys to move and Space to jump.",children:[(0,o.jsx)(h.A,{}),"running"!==t&&(0,o.jsxs)("div",{className:"absolute inset-0 z-10 flex flex-col items-center justify-center gap-3 bg-slate-950/60 text-center backdrop-blur-[2px]",children:[(0,o.jsx)("p",{className:"text-4xl font-extrabold text-white",children:"won"===t?"Course cleared":"over"===t?"Try the jump again":"Obby Parkour 3D"}),(0,o.jsx)("p",{className:"max-w-md px-4 text-sm text-zinc-200",children:"Sprint across floating platforms, time the sweepers, and land on the gold finish pad."}),(0,o.jsx)("button",{onClick:e=>{e.stopPropagation(),v.current()},className:"rounded-xl bg-gradient-to-r from-sky-500 to-emerald-500 px-6 py-3 font-bold text-white transition hover:scale-105",children:"idle"===t?"Start course":"Run again"})]}),(0,o.jsxs)("div",{className:"pointer-events-none absolute inset-x-0 bottom-3 z-20 flex items-end justify-between px-3 sm:hidden",children:[(0,o.jsxs)("div",{className:"grid grid-cols-3 gap-2",children:[(0,o.jsx)("span",{}),(0,o.jsx)("button",{className:"pointer-events-auto h-11 w-11 rounded-xl bg-black/45 font-bold text-white",onPointerDown:()=>j("forward",!0),onPointerUp:()=>j("forward",!1),onPointerCancel:()=>j("forward",!1),children:"W"}),(0,o.jsx)("span",{}),(0,o.jsx)("button",{className:"pointer-events-auto h-11 w-11 rounded-xl bg-black/45 font-bold text-white",onPointerDown:()=>j("left",!0),onPointerUp:()=>j("left",!1),onPointerCancel:()=>j("left",!1),children:"A"}),(0,o.jsx)("button",{className:"pointer-events-auto h-11 w-11 rounded-xl bg-black/45 font-bold text-white",onPointerDown:()=>j("back",!0),onPointerUp:()=>j("back",!1),onPointerCancel:()=>j("back",!1),children:"S"}),(0,o.jsx)("button",{className:"pointer-events-auto h-11 w-11 rounded-xl bg-black/45 font-bold text-white",onPointerDown:()=>j("right",!0),onPointerUp:()=>j("right",!1),onPointerCancel:()=>j("right",!1),children:"D"})]}),(0,o.jsx)("button",{className:"pointer-events-auto h-14 min-w-24 rounded-xl bg-white/20 px-4 font-bold text-white",onPointerDown:()=>j("jump",!0),onPointerUp:()=>j("jump",!1),onPointerCancel:()=>j("jump",!1),children:"Jump"})]})]}),(0,o.jsx)("p",{className:"mt-4 text-center text-sm text-zinc-500",children:"WASD / arrows to move, Space to jump, Shift to sprint. On mobile, use the on-screen controls."})]})}},8978:(e,t,n)=>{n.d(t,{A:()=>a});var o=n(5155);function a(){return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("div",{className:"pointer-events-none absolute inset-0 z-[5] rounded-[1.35rem] ring-1 ring-inset ring-white/20","aria-hidden":!0}),(0,o.jsx)("div",{className:"pointer-events-none absolute inset-0 z-[5] rounded-[1.35rem] bg-[linear-gradient(180deg,rgba(255,255,255,.18),transparent_18%,transparent_72%,rgba(0,0,0,.22))]","aria-hidden":!0}),(0,o.jsx)("div",{className:"pointer-events-none absolute inset-x-0 top-0 z-[5] h-14 bg-gradient-to-b from-white/15 to-transparent","aria-hidden":!0}),(0,o.jsx)("div",{className:"pointer-events-none absolute inset-x-0 bottom-0 z-[5] h-20 bg-gradient-to-t from-black/20 to-transparent","aria-hidden":!0})]})}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.