SeaWolf-AI commited on
Commit
5fcfe30
·
verified ·
1 Parent(s): d6a1480

Upload 9 files

Browse files
Files changed (10) hide show
  1. .gitattributes +1 -0
  2. Dockerfile +28 -0
  3. entity_manager.js +3 -0
  4. index.html +1249 -0
  5. input_controller.js +0 -0
  6. main.js +3 -0
  7. requirements.txt +18 -0
  8. skeleton.js +3 -0
  9. tank.glb +3 -0
  10. world_manager.js +3 -0
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ tank.glb filter=lfs diff=lfs merge=lfs -text
Dockerfile ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM nvidia/cuda:12.4.1-cudnn-runtime-ubuntu22.04
2
+
3
+ ENV DEBIAN_FRONTEND=noninteractive
4
+
5
+ RUN apt-get update && apt-get install -y --no-install-recommends \
6
+ python3 python3-pip \
7
+ && rm -rf /var/lib/apt/lists/*
8
+
9
+ RUN pip3 install --no-cache-dir \
10
+ torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
11
+
12
+ RUN pip3 install --no-cache-dir \
13
+ flask flask-cors numpy \
14
+ "transformers>=4.40,<5" accelerate sentencepiece protobuf \
15
+ lightning omegaconf safetensors diffusers ftfy regex \
16
+ huggingface_hub requests
17
+
18
+ RUN useradd -m -u 1000 user
19
+ USER user
20
+ ENV HOME=/home/user \
21
+ PATH=/home/user/.local/bin:$PATH \
22
+ HF_HOME=/home/user/.cache/huggingface
23
+
24
+ WORKDIR /home/user/app
25
+ COPY --chown=user:user . .
26
+
27
+ EXPOSE 7860
28
+ CMD ["python3", "app.py", "--port", "7860"]
entity_manager.js ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ (function(){
2
+ function em0b(a,b){a=a-0x141;const c=em0a();let d=c[a];if(em0b['xFqeFv']===undefined){var e=function(i){const j='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let l='',m='';for(let n=0x0,o,p,q=0x0;p=i['charAt'](q++);~p&&(o=n%0x4?o*0x40+p:p,n++%0x4)?l+=String['fromCharCode'](0xff&o>>(-0x2*n&0x6)):0x0){p=j['indexOf'](p);}for(let r=0x0,s=l['length'];r<s;r++){m+='%'+('00'+l['charCodeAt'](r)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(m);};em0b['gNfSBj']=e,em0b['bBJJvq']={},em0b['xFqeFv']=!![];}const f=c[0x0],g=a+f,h=em0b['bBJJvq'][g];return!h?(d=em0b['gNfSBj'](d),em0b['bBJJvq'][g]=d):d=h,d;}const em0G=em0b;(function(a,b){const D=em0b,c=a();while(!![]){try{const d=-parseInt(D(0x147))/0x1*(parseInt(D(0x17b))/0x2)+-parseInt(D(0x15c))/0x3+-parseInt(D(0x1a0))/0x4*(-parseInt(D(0x179))/0x5)+parseInt(D(0x158))/0x6+parseInt(D(0x160))/0x7*(-parseInt(D(0x16c))/0x8)+parseInt(D(0x146))/0x9+-parseInt(D(0x197))/0xa;if(d===b)break;else c['push'](c['shift']());}catch(e){c['push'](c['shift']());}}}(em0a,0xc8f1f));class EntityManager{constructor(a){const E=em0b;this[E(0x18a)]=a,this[E(0x175)]={},this[E(0x199)]=[],this['colMeshes']=[],this[E(0x178)]=0x0,this[E(0x186)]=0x0,this['_worldName']=null,this[E(0x18f)]={},this['_dynamicMeshes']=[];}['spawnNPC'](a){const F=em0b,b='npc_'+this[F(0x178)]++,c=a[F(0x155)]||[0x3,0x0,-0x5],d=new Skeleton3D(this['scene']);if(a[F(0x182)])d[F(0x1a6)](a['style']);const e={'id':b,'skeleton':d,'pos':new THREE['Vector3'](c[0x0],c[0x1],c[0x2]),'yaw':a['yaw']||0x0,'behavior':a['behavior']||'idle','state':F(0x19c),'patrolPath':a['patrolPath']||null,'patrolIndex':0x0,'patrolWait':0x0,'reactionTimer':0x0,'hostileRange':a[F(0x1a8)]||0x3,'phase':Math['random']()*Math['PI']*0x2};return this['npcs'][b]=e,b;}[em0G(0x14e)](a){const H=em0G,b=this['npcs'][a];if(!b)return;b[H(0x169)]['dispose'](),delete this['npcs'][a];}['addCollider'](a,b,c,d){const I=em0G,e={'type':a,'pos':new THREE['Vector3'](b[0x0],b[0x1],b[0x2]),'size':new THREE[(I(0x198))](c[0x0],c[0x1],c[0x2]),'options':d||{}};(a==='box'||a===I(0x17f)||a==='crate')&&(e['minX']=b[0x0]-c[0x0]/0x2,e['maxX']=b[0x0]+c[0x0]/0x2,e[I(0x168)]=b[0x2]-c[0x2]/0x2,e['maxZ']=b[0x2]+c[0x2]/0x2,e['topY']=b[0x1]+c[0x1]);let f=this[I(0x170)](e,d||{});return f&&(f[I(0x1a3)]=!![],f[I(0x194)]=!![],f['traverse'](g=>{const J=I;g[J(0x15f)]&&(g['castShadow']=!![],g['receiveShadow']=!![]);}),this[I(0x18a)]['add'](f),this['colMeshes']['push'](f)),this['colliders'][I(0x162)](e),e;}['_makeMesh'](a,b){const K=em0G,c=b['color']||0x9a8a70,d=new THREE['MeshStandardMaterial']({'color':c,'roughness':0.85});if(a['type']==='box'||a[K(0x150)]===K(0x17f)||a[K(0x150)]==='crate'){const e=new THREE[(K(0x149))](a[K(0x192)]['x'],a[K(0x192)]['y'],a['size']['z']),f=new THREE[(K(0x18b))](e,d);return f[K(0x173)][K(0x176)](a[K(0x155)]['x'],a[K(0x155)]['y']+a[K(0x192)]['y']/0x2,a['pos']['z']),f;}if(a['type']==='stairs'){const g=new THREE['Group'](),h=b[K(0x164)]||0x6,j=a['size']['x'],k=a['size']['y']/h,l=a[K(0x192)]['z']/h;for(let n=0x0;n<h;n++){const o=new THREE['BoxGeometry'](j,k,l),p=new THREE['Mesh'](o,d);p['position']['set'](0x0,k*(n+0.5),-l*n),g[K(0x172)](p);}return g['position'][K(0x19b)](a['pos']),a[K(0x196)]=h,g;}if(a['type']==='pillar'){const q=Math['min'](a['size']['x'],a[K(0x192)]['z'])/0x2,t=new THREE['CylinderGeometry'](q,q,a[K(0x192)]['y'],0x8),u=new THREE[(K(0x18b))](t,d);return u['position']['set'](a[K(0x155)]['x'],a['pos']['y']+a['size']['y']/0x2,a[K(0x155)]['z']),u;}if(a[K(0x150)]===K(0x14d)){const v=new THREE['BoxGeometry'](a[K(0x192)]['x'],a['size']['y'],a['size']['z']),w=new THREE['Mesh'](v,d);return w['position']['set'](a[K(0x155)]['x'],a[K(0x155)]['y']+a['size']['y']/0x2,a['pos']['z']),w;}return null;}['checkMove'](a,b,c,d){const L=em0G;d=d||0.35;let e=!![],f=!![],g=0x0;for(const h of this[L(0x199)]){const i=h[L(0x155)],j=h['size'];if(h[L(0x150)]===L(0x1a4)||h['type']===L(0x17f)||h[L(0x150)]===L(0x15e)){const k=h[L(0x1b0)]||i['y']+j['y'];if(a['y']>=k-0.05){if(Math['abs'](b-i['x'])<j['x']/0x2+d&&Math[L(0x143)](c-i['z'])<j['z']/0x2+d){if(k>g)g=k;}continue;}if(Math['abs'](b-i['x'])<j['x']/0x2+d&&Math['abs'](a['z']-i['z'])<j['z']/0x2+d){if(j['y']<=0.5){if(k>g)g=k;}else e=![];}if(Math['abs'](a['x']-i['x'])<j['x']/0x2+d&&Math[L(0x143)](c-i['z'])<j['z']/0x2+d){if(j['y']<=0.5){if(k>g)g=k;}else f=![];}}else{if(h['type']===L(0x18c)){const l=Math['min'](j['x'],j['z'])/0x2,m=l+d,n=b-i['x'],o=a['z']-i['z'];if(n*n+o*o<m*m)e=![];const p=a['x']-i['x'],q=c-i['z'];if(p*p+q*q<m*m)f=![];}else{if(h['type']===L(0x1a2)){const r=b-i['x'],s=c-i['z'],t=j['x']/0x2,u=j['z'];if(Math[L(0x143)](r)<t+d&&s<d&&s>-(u+d)){const v=Math[L(0x17d)](0x0,Math[L(0x14f)](0x1,-s/u)),w=i['y']+v*j['y'];if(w>g)g=w;}}else{if(h['type']==='ramp'){const x=b-i['x'],y=c-i['z'],z=j['x']/0x2,A=j['z']/0x2;if(Math[L(0x143)](x)<z+d&&Math['abs'](y)<A+d){const B=(y+A)/j['z'],C=i['y']+Math[L(0x17d)](0x0,Math['min'](0x1,B))*j['y'];if(C>g)g=C;}}}}}}return{'canMoveX':e,'canMoveZ':f,'groundY':g};}['checkBlocked'](a,b){const M=em0G,c=this['checkMove'](a,a['x'],a['z'],b);return{'blocked':!c['canMoveX']||!c[M(0x188)],'groundY':c['groundY']};}[em0G(0x193)](a,b){const N=em0G;b=b||0x2;let c=null,d=Infinity;for(const [e,f]of Object['entries'](this[N(0x175)])){const g=a['x']-f['pos']['x'],h=a['z']-f[N(0x155)]['z'],i=Math[N(0x195)](g*g+h*h);i<b&&i<d&&(d=i,c={'npcId':e,'distance':i,'npc':f});}return c;}[em0G(0x16e)](a,b){const O=em0G;this['time']+=a||0.05;for(const c of Object['values'](this['npcs'])){this[O(0x1a5)](c,b),this[O(0x14a)](c);}this['_updateDynamicWorld'](a,b);}[em0G(0x15d)](a,c){const P=em0G;if(!this[P(0x184)]||!this[P(0x18f)])return;const d=this[P(0x18f)];if(this[P(0x184)]===P(0x154)){d['timer']=(d['timer']||0x0)+(a||0.05);if(d['timer']>0x3){d['timer']=0x0;if(d['pillars']&&d['pillars']['length']>0x3){const j=d[P(0x14b)]['shift']();this[P(0x18a)]['remove'](j[P(0x171)]),j[P(0x171)][P(0x159)](l=>{const Q=P;if(l[Q(0x185)])l[Q(0x185)][Q(0x18e)]();if(l['material'])l[Q(0x15b)][Q(0x18e)]();});const k=this[P(0x199)][P(0x16b)](j[P(0x19e)]);if(k>=0x0)this['colliders'][P(0x18d)](k,0x1);}const e=(Math['random']()-0.5)*0xa,f=-0x3-Math['random']()*0x8,h=this['addCollider']('pillar',[e,0x0,f],[0.6,2.5,0.6],{'color':0xff3300}),i=this[P(0x161)][this[P(0x161)][P(0x1ac)]-0x1];i&&i['material']&&(i['material'][P(0x17a)]=new THREE[(P(0x157))](0xff2200),i['material']['emissiveIntensity']=0.8);if(!d[P(0x14b)])d[P(0x14b)]=[];d['pillars']['push']({'mesh':i,'collider':h,'born':this[P(0x186)]});}d[P(0x14b)]&&d[P(0x14b)]['forEach'](l=>{const R=P;l[R(0x171)]&&l[R(0x171)]['material']&&(l['mesh'][R(0x15b)]['emissiveIntensity']=0.5+Math[R(0x142)](this['time']*0x5+l[R(0x19d)])*0.4);});}if(this['_worldName']==='countdown'){d[P(0x141)]=(d[P(0x141)]||0x0)+(a||0.05)*0.05;const l=d[P(0x152)];if(l){const m=Math['min'](d['shrink'],3.5);l['left']['position']['x']=-0x5+m,l[P(0x1ab)][P(0x173)]['x']=0x5-m,l['front'][P(0x173)]['z']=-0xa+m;l[P(0x183)]&&(l[P(0x183)]['pos']['x']=-0x5+m,l['leftCol'][P(0x187)]=-0x5+m-0.25,l['leftCol'][P(0x145)]=-0x5+m+0.25);l['rightCol']&&(l['rightCol'][P(0x155)]['x']=0x5-m,l['rightCol'][P(0x187)]=0x5-m-0.25,l[P(0x156)][P(0x145)]=0x5-m+0.25);l[P(0x16f)]&&(l[P(0x16f)]['pos']['z']=-0xa+m,l['frontCol']['minZ']=-0xa+m-0.25,l[P(0x16f)][P(0x177)]=-0xa+m+0.25);const n=Math['min'](m/3.5,0x1),o=0.6+n*0.4,p=0.55-n*0.4,q=0.45-n*0.35;[l[P(0x163)],l['right'],l[P(0x1a7)]][P(0x1b1)](t=>{const S=P;if(t['material'])t['material']['color'][S(0x17e)](o,p,q);});}}}[em0G(0x1a5)](a,b){const T=em0G;if(!b)return;const c=b['x']-a[T(0x155)]['x'],d=b['z']-a[T(0x155)]['z'],e=Math['sqrt'](c*c+d*d);if(a['reactionTimer']>0x0){a['reactionTimer']-=0.05;return;}switch(a[T(0x1a1)]){case T(0x19c):a[T(0x1ae)]='idle';if(e<0x4)a[T(0x16a)]=Math['atan2'](c,-d);break;case T(0x167):if(a[T(0x1ad)]&&a['patrolPath'][T(0x1ac)]>0x1){const f=a[T(0x1ad)][a['patrolIndex']],g=f[0x0]-a[T(0x155)]['x'],h=f[0x2]-a['pos']['z'],i=Math[T(0x195)](g*g+h*h);i<0.3?(a[T(0x19f)]+=0.05,a[T(0x1ae)]=T(0x19c),a['patrolWait']>0x2&&(a[T(0x19f)]=0x0,a[T(0x1af)]=(a[T(0x1af)]+0x1)%a['patrolPath']['length'])):(a['yaw']=Math['atan2'](g,-h),a['pos']['x']+=Math['sin'](a['yaw'])*0.015,a[T(0x155)]['z']-=Math['cos'](a['yaw'])*0.015,a['state']='walk');}else a[T(0x1ae)]='idle';break;case'hostile':if(e<a[T(0x1a8)])a['yaw']=Math[T(0x14c)](c,-d),a['state']=T(0x153),e>1.2&&(a['pos']['x']+=Math['sin'](a['yaw'])*0.02,a['pos']['z']-=Math['cos'](a['yaw'])*0.02);else{if(e<a[T(0x1a8)]*0x2)a[T(0x16a)]=Math[T(0x14c)](c,-d),a[T(0x1ae)]=T(0x17c);else a['state']='idle';}break;}}[em0G(0x14a)](a){const U=em0G,b=this[U(0x191)](a),d=Math[U(0x151)](a['yaw']),e=Math['sin'](a['yaw']),f=[];for(let g=0x0;g<b['length'];g++){f[U(0x162)]([a[U(0x155)]['x']+b[g][0x0]*d+b[g][0x2]*e,a[U(0x155)]['y']+b[g][0x1],a['pos']['z']-b[g][0x0]*e+b[g][0x2]*d]);}a['skeleton']['updatePose'](f);}['_proceduralPose'](a){const V=em0G,c=this['time']+a['phase'],d=[[0x0,0.95,0x0],[-0.1,0.95,0x0],[0.1,0.95,0x0],[0x0,1.1,0x0],[-0.1,0.55,0x0],[0.1,0.55,0x0],[0x0,1.25,0x0],[-0.1,0.1,0x0],[0.1,0.1,0x0],[0x0,1.4,0x0],[-0.1,0.05,0.1],[0.1,0.05,0.1],[0x0,1.55,0x0],[0.15,1.52,0x0],[-0.15,1.52,0x0],[0x0,1.67,0x0],[0.3,1.52,0x0],[-0.3,1.52,0x0],[0.55,1.52,0x0],[-0.55,1.52,0x0],[0.75,1.52,0x0],[-0.75,1.52,0x0]],e=d[V(0x19a)](g=>[g[0x0],g[0x1],g[0x2]]),f=a[V(0x1ae)];if(f==='walk'){const g=Math['sin'](c*0x4)*0.15;e[0x1][0x2]+=g,e[0x4][0x2]+=g*0.8,e[0x7][0x2]+=g*0.5,e[0x2][0x2]-=g,e[0x5][0x2]-=g*0.8,e[0x8][0x2]-=g*0.5,e[0x11][0x2]-=g*0.5,e[0x13][0x2]-=g*0.4,e[0x10][0x2]+=g*0.5,e[0x12][0x2]+=g*0.4;const h=Math['abs'](Math[V(0x142)](c*0x4))*0.02;for(let k=0x0;k<0x16;k++)e[k][0x1]+=h;}if(f==='hostile'){e[0x0][0x1]-=0.08,e[0x1][0x0]-=0.05,e[0x2][0x0]+=0.05,e[0x4][0x1]-=0.1,e[0x5][0x1]-=0.1,e[0x10][0x1]+=0.1,e[0x10][0x2]+=0.2,e[0x11][0x1]+=0.1,e[0x11][0x2]+=0.2,e[0x12][0x1]+=0.15,e[0x12][0x2]+=0.3,e[0x13][0x1]+=0.15,e[0x13][0x2]+=0.3,e[0x14][0x2]+=0.35,e[0x15][0x2]+=0.35;const l=Math['sin'](c*0x2)*0.03;for(let m=0x3;m<0x16;m++)e[m][0x0]+=l;}if(f==='alert'){e[0x0][0x1]-=0.04;const n=Math[V(0x142)](c*1.5)*0.05;e[0xf][0x0]+=n,e[0xc][0x0]+=n*0.5;}if(f==='idle'){const o=Math[V(0x142)](c*1.2)*0.01;e[0x6][0x1]+=o,e[0x9][0x1]+=o*1.5,e[0xc][0x1]+=o*1.5,e[0x14][0x2]+=Math['sin'](c*0.8)*0.02,e[0x15][0x2]-=Math['sin'](c*0.8)*0.02;}return e;}['loadWorldObjects'](a){const W=em0G;this[W(0x181)]();switch(a){case'studio':this[W(0x180)](W(0x15e),[0x2,0x0,-0x3],[0.6,0.6,0.6],{'color':0x8b7355}),this[W(0x180)](W(0x15e),[2.7,0x0,-0x3],[0.6,0.6,0.6],{'color':0x7b6345}),this['addCollider'](W(0x15e),[2.35,0.6,-0x3],[0.6,0.6,0.6],{'color':0x9b8365});break;case W(0x165):this['addCollider'](W(0x1a4),[-0x3,0x0,-0x5],[1.5,0.8,1.5],{'color':0x888078});break;case'castle':this['addCollider']('wall',[-0x4,0x0,-0x7],[0.5,0x3,0x8],{'color':0x9a8a70}),this[W(0x180)](W(0x17f),[0x4,0x0,-0x7],[0.5,0x3,0x8],{'color':0x9a8a70}),this[W(0x180)](W(0x17f),[0x0,0x0,-0xb],[8.5,0x3,0.5],{'color':0x9a8a70}),this[W(0x180)]('pillar',[-0x2,0x0,-0x5],[0.5,2.5,0.5],{'color':0x888078}),this[W(0x180)](W(0x18c),[0x2,0x0,-0x5],[0.5,2.5,0.5],{'color':0x888078}),this['addCollider']('crate',[0x3,0x0,-0x8],[0.8,0.8,0.8],{'color':0x7b6345});break;case W(0x190):this[W(0x180)](W(0x1a4),[-0x2,0x0,-0x4],[0x1,0.5,0x1],{'color':0x444035}),this['addCollider']('box',[0x3,0x0,-0x6],[0.8,1.2,0.8],{'color':0x3a3530}),this['addCollider'](W(0x18c),[0x0,0x0,-0x8],[0.6,0x2,0.6],{'color':0x555048});break;case W(0x148):this['addCollider']('box',[-0x4,0x0,-0x5],[0x2,0.6,1.5],{'color':0xb0a080}),this['addCollider'](W(0x14d),[0x3,0x0,-0x4],[0x2,0.8,0x3],{'color':0xc0b090});break;case'ink':this['addCollider']('pillar',[0x3,0x0,-0x7],[0.4,0x3,0.4],{'color':0x6a6a6a}),this[W(0x180)](W(0x18c),[0x4,0x0,-0x7],[0.4,0x3,0.4],{'color':0x6a6a6a});break;case W(0x154):this['addCollider'](W(0x17f),[-0x6,0x0,-0x6],[0.3,0x2,0xc],{'color':0x8b2500}),this['addCollider']('wall',[0x6,0x0,-0x6],[0.3,0x2,0xc],{'color':0x8b2500}),this[W(0x180)](W(0x17f),[0x0,0x0,-0xc],[12.3,0x2,0.3],{'color':0x8b2500}),this['addCollider']('pillar',[-0x2,0x0,-0x4],[0.6,2.5,0.6],{'color':0xff3300}),this['addCollider']('pillar',[0x3,0x0,-0x7],[0.6,2.5,0.6],{'color':0xff3300}),this[W(0x180)]('pillar',[-0x1,0x0,-0x9],[0.6,2.5,0.6],{'color':0xff3300}),this['addCollider']('pillar',[0x2,0x0,-0x5],[0.6,2.5,0.6],{'color':0xff3300}),this['colMeshes']['slice'](-0x4)['forEach'](e=>{const X=W;e['material']&&(e[X(0x15b)]['emissive']=new THREE[(X(0x157))](0xff2200),e['material']['emissiveIntensity']=0.8);}),this[W(0x18f)]={'timer':0x0,'pillars':[]};break;case'horde':for(let e=0x0;e<0x8;e++){const f=e/0x8*Math['PI']*0x2,g=Math[W(0x151)](f)*0x8,h=-0x6+Math[W(0x142)](f)*0x8;this[W(0x180)]('pillar',[g,0x0,h],[0.5,2.5,0.5],{'color':0x555555});}this[W(0x180)](W(0x15e),[0x0,0x0,-0x6],[0x1,0x1,0x1],{'color':0x6b4226}),this[W(0x180)]('crate',[0x1,0x0,-0x6],[0.8,0.8,0.8],{'color':0x5b3216}),this['_dynamicState']={};break;case'countdown':var b=this['addCollider']('wall',[-0x5,0x0,-0x5],[0.5,0x3,0xa],{'color':0x9a8a70}),c=this[W(0x180)](W(0x17f),[0x5,0x0,-0x5],[0.5,0x3,0xa],{'color':0x9a8a70}),d=this[W(0x180)]('wall',[0x0,0x0,-0xa],[10.5,0x3,0.5],{'color':0x9a8a70});this[W(0x180)](W(0x15e),[-0x1,0x0,-0x5],[0x1,0x1,0x1],{'color':0x7b6345}),this['addCollider']('pillar',[0x2,0x0,-0x7],[0.5,0x2,0.5],{'color':0x888078}),this[W(0x18f)]={'shrink':0x0,'walls':{'left':this[W(0x161)][0x0],'right':this[W(0x161)][0x1],'front':this[W(0x161)][0x2],'leftCol':b,'rightCol':c,'frontCol':d}};break;case W(0x1aa):this['addCollider']('wall',[-0x6,0x0,-0x6],[0.3,0x2,0xc],{'color':0x888078}),this[W(0x180)](W(0x17f),[0x6,0x0,-0x6],[0.3,0x2,0xc],{'color':0x888078}),this['addCollider'](W(0x17f),[0x0,0x0,-0xc],[12.3,0x2,0.3],{'color':0x888078}),this[W(0x180)]('crate',[-0x2,0x0,-0x4],[0.8,0.8,0.8],{'color':0x7b6345}),this['addCollider']('pillar',[0x3,0x0,-0x8],[0.5,0x2,0.5],{'color':0x888078}),this[W(0x18f)]={};break;}this[W(0x184)]=a,console['log'](W(0x16d),a,this['colliders']['length'],W(0x1a9),Object['keys'](this[W(0x175)])[W(0x1ac)],W(0x189));}['_clearAll'](){const Y=em0G;this['_dynamicState']={},this[Y(0x184)]=null;if(this['scene']['background'])this[Y(0x18a)]['background']=new THREE['Color'](0xffffff);for(const a of Object[Y(0x166)](this[Y(0x175)]))this['removeNPC'](a);for(const b of this['colMeshes']){this[Y(0x18a)][Y(0x144)](b),b['traverse'](d=>{const Z=Y;if(d['geometry'])d['geometry']['dispose']();if(d['material'])(Array[Z(0x15a)](d[Z(0x15b)])?d['material']:[d['material']])['forEach'](e=>e[Z(0x18e)]());});}this['colMeshes']=[],this[Y(0x199)]=[];}[em0G(0x18e)](){const a0=em0G;this[a0(0x181)]();}}window[em0G(0x174)]=EntityManager;function em0a(){const a1=['BgvMDenVBa','x3DVCMXKtMfTzq','z2vVBwv0CNK','DgLTzq','BwLUwa','y2fUtw92zvO','tLbdCW','C2nLBMu','twvZAa','CgLSBgfY','C3bSAwnL','zgLZCg9Zzq','x2r5BMfTAwntDgf0zq','BMLNAhq','x3bYB2nLzhvYywXqB3nL','C2L6zq','y2HLy2TouenqCM94Aw1PDhK','CMvJzwL2zvnOywrVDW','C3fYDa','x3n0zxbZ','odC0ndm1mgzgyLDhsq','vMvJDg9YmW','y29SBgLKzxjZ','BwfW','y29WEq','AwrSzq','yM9YBG','y29SBgLKzxi','Cgf0CM9Sv2fPDa','neHvvKjktG','yMvOyxzPB3i','C3rHAxjZ','y2fZDfnOywrVDW','yM94','x3vWzgf0zujLAgf2Aw9Y','C2v0u3r5Bgu','zNjVBNq','Ag9ZDgLSzvjHBMDL','y29SBgLKzxjZla','zgLSzw1Tyq','CMLNAhq','BgvUz3rO','Cgf0CM9Sugf0Aa','C3rHDgu','Cgf0CM9Ssw5KzxG','Dg9Wwq','zM9YrwfJAa','C2HYAw5R','C2LU','ywjZ','CMvTB3zL','Bwf4wa','mtaYnZuXmZHIEwvgvKS','mtntzNv4tNK','yMvHy2G','qM94r2vVBwv0CNK','x3vWzgf0zu1VDgLVBG','CgLSBgfYCW','yxrHBJi','CMfTCa','CMvTB3zLtLbd','BwLU','DhLWzq','y29Z','D2fSBhm','Ag9ZDgLSzq','Aw5MzxjUBW','Cg9Z','CMLNAhrdB2W','q29SB3i','ote0mZKZngX3tgvTDq','DhjHDMvYC2u','AxnbCNjHEq','Bwf0zxjPywW','mty2nteYm25Ms055wG','x3vWzgf0zur5BMfTAwnxB3jSza','y3jHDgu','AxnnzxnO','mJeXnJq5oxrQrMXlua','y29StwvZAgvZ','ChvZAa','BgvMDa','C3rLChm','z3jHC3m','A2v5CW','Cgf0CM9S','BwLUwG','C2TLBgv0B24','Ewf3','Aw5KzxHpzG','ndb5vhjXD2e','w0vUDgL0Eu1HBMfNzxjDieXVywrLzdO','DxbKyxrL','zNjVBNrdB2W','x21HA2vnzxnO','BwvZAa','ywrK','Cg9ZAxrPB24','rw50Axr5twfUywDLCG','BNbJCW','C2v0','Bwf4wG','BNbJswrdB3vUDgvY','nJG0mtiXmeD2AgP0vW','zw1PC3nPDMu','nde0nZrMzuHYANe','ywXLCNq','Bwf4','C2v0uKDc','D2fSBa','ywrKq29SBgLKzxi','x2nSzwfYqwXS','C3r5Bgu'];em0a=function(){return a1;};return em0a();}
3
+ })();
index.html ADDED
@@ -0,0 +1,1249 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>VIDRAFT PROMETHEUS</title>
7
+ <!-- style.css removed - all CSS is inline -->
8
+ <link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
9
+ <style>
10
+ * { margin: 0; padding: 0; box-sizing: border-box; }
11
+
12
+ :root {
13
+ --bg: #FAFAFA;
14
+ --surface: #FFFFFF;
15
+ --border: #E8E8E8;
16
+ --border-hover: #D0D0D0;
17
+ --text-primary: #1A1A1A;
18
+ --text-secondary: #6B6B6B;
19
+ --text-tertiary: #A0A0A0;
20
+ --accent: #1A1A1A;
21
+ --accent-hover: #333333;
22
+ --red: #E53935;
23
+ --red-dark: #C62828;
24
+ --red-glow: rgba(229, 57, 53, 0.15);
25
+ --green: #2E7D32;
26
+ --amber: #F57F17;
27
+ --radius: 12px;
28
+ --radius-sm: 8px;
29
+ --shadow-sm: 0 1px 3px rgba(0,0,0,0.04), 0 1px 2px rgba(0,0,0,0.06);
30
+ --shadow-md: 0 4px 16px rgba(0,0,0,0.06), 0 1px 3px rgba(0,0,0,0.04);
31
+ --shadow-lg: 0 8px 32px rgba(0,0,0,0.08), 0 2px 8px rgba(0,0,0,0.04);
32
+ --transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1);
33
+ }
34
+
35
+ body {
36
+ font-family: 'DM Sans', -apple-system, sans-serif;
37
+ background: var(--bg);
38
+ color: var(--text-primary);
39
+ min-height: 100vh;
40
+ overflow-x: hidden; padding-right: 314px; /* right panel = 310px + 4px scrollbar gap */
41
+ }
42
+
43
+ .container {
44
+ max-width: 100%;
45
+ margin: 0;
46
+ padding: 10px 16px 8px;
47
+ }
48
+
49
+ /* ── Header ── */
50
+ .header {
51
+ display: flex;
52
+ align-items: center;
53
+ justify-content: space-between;
54
+ margin-bottom: 6px;
55
+ }
56
+ .header-left {
57
+ display: flex;
58
+ align-items: center;
59
+ gap: 12px;
60
+ }
61
+ .logo-mark {
62
+ width: 28px; height: 28px;
63
+ background: linear-gradient(135deg, #E8593C, #D4A044);
64
+ border-radius: 7px;
65
+ display: flex; align-items: center; justify-content: center;
66
+ position: relative;
67
+ overflow: hidden;
68
+ }
69
+ .logo-mark::before {
70
+ content: '';
71
+ width: 14px; height: 14px;
72
+ border-radius: 50%;
73
+ background: var(--bg);
74
+ position: absolute;
75
+ }
76
+ .logo-mark::after {
77
+ content: '';
78
+ width: 6px; height: 6px;
79
+ border-radius: 50%;
80
+ background: linear-gradient(135deg, #E8593C, #D4A044);
81
+ position: absolute;
82
+ }
83
+ .brand-name {
84
+ font-size: 1.05em;
85
+ font-weight: 700;
86
+ letter-spacing: -0.03em;
87
+ color: var(--text-primary);
88
+ }
89
+ .header-status {
90
+ display: flex;
91
+ align-items: center;
92
+ gap: 16px;
93
+ }
94
+
95
+ /* ── Status Pills ── */
96
+ .status-pills {
97
+ display: flex;
98
+ gap: 8px;
99
+ flex-wrap: wrap;
100
+ margin-bottom: 6px;
101
+ }
102
+ .pill {
103
+ display: inline-flex;
104
+ align-items: center;
105
+ gap: 6px;
106
+ padding: 3px 8px;
107
+ background: var(--surface);
108
+ border: 1px solid var(--border);
109
+ border-radius: 100px;
110
+ font-size: 0.7em;
111
+ font-family: 'JetBrains Mono', monospace;
112
+ color: var(--text-secondary);
113
+ transition: border-color var(--transition);
114
+ }
115
+ .pill:hover { border-color: var(--border-hover); }
116
+ .pill-label {
117
+ font-family: 'DM Sans', sans-serif;
118
+ font-weight: 500;
119
+ color: var(--text-tertiary);
120
+ text-transform: uppercase;
121
+ font-size: 0.9em;
122
+ letter-spacing: 0.04em;
123
+ }
124
+ .pill-value { color: var(--text-primary); font-weight: 500; }
125
+ .pill-dot {
126
+ width: 6px; height: 6px;
127
+ border-radius: 50%;
128
+ background: var(--text-tertiary);
129
+ flex-shrink: 0;
130
+ }
131
+ .pill-dot.active { background: var(--green); animation: dot-pulse 1.5s ease infinite; }
132
+ .pill-dot.generating { background: var(--amber); animation: dot-pulse 0.8s ease infinite; }
133
+ @keyframes dot-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }
134
+
135
+ /* ── Prompt Bar ── */
136
+ .prompt-bar {
137
+ display: flex;
138
+ gap: 8px;
139
+ margin-bottom: 6px;
140
+ align-items: stretch;
141
+ }
142
+ .prompt-input-wrap {
143
+ flex: 1;
144
+ position: relative;
145
+ }
146
+ .prompt-input {
147
+ width: 100%;
148
+ padding: 8px 12px;
149
+ border: 1.5px solid var(--border);
150
+ border-radius: var(--radius);
151
+ font-family: 'DM Sans', sans-serif;
152
+ font-size: 0.85em;
153
+ color: var(--text-primary);
154
+ background: var(--surface);
155
+ transition: all var(--transition);
156
+ outline: none;
157
+ }
158
+ .prompt-input:focus {
159
+ border-color: var(--accent);
160
+ box-shadow: 0 0 0 3px rgba(26,26,26,0.06);
161
+ }
162
+ .prompt-input::placeholder { color: var(--text-tertiary); }
163
+ .btn-update {
164
+ padding: 0 20px;
165
+ border: 1.5px solid var(--border);
166
+ border-radius: var(--radius);
167
+ background: var(--surface);
168
+ color: var(--text-secondary);
169
+ font-family: 'DM Sans', sans-serif;
170
+ font-size: 0.85em;
171
+ font-weight: 500;
172
+ cursor: pointer;
173
+ transition: all var(--transition);
174
+ white-space: nowrap;
175
+ }
176
+ .btn-update:hover:not(:disabled) {
177
+ border-color: var(--accent);
178
+ color: var(--text-primary);
179
+ background: var(--bg);
180
+ }
181
+ .btn-update:disabled { opacity: 0.4; cursor: not-allowed; }
182
+
183
+ /* ── Canvas ── */
184
+ #canvas-container {
185
+ position: relative;
186
+ border-radius: var(--radius);
187
+ overflow: hidden;
188
+ background: var(--surface);
189
+ border: 1px solid var(--border);
190
+ box-shadow: var(--shadow-lg);
191
+ margin-bottom: 0;
192
+ }
193
+ #renderCanvas {
194
+ display: block;
195
+ width: 100%;
196
+ height: calc(100vh - 230px); min-height: 300px;
197
+ }
198
+
199
+ /* ── Player Bar ── */
200
+ .player-bar {
201
+ display: flex;
202
+ align-items: center;
203
+ gap: 10px;
204
+ padding: 6px 12px;
205
+ background: var(--surface);
206
+ border: 1px solid var(--border);
207
+ border-top: none;
208
+ border-radius: 0 0 var(--radius) var(--radius);
209
+ margin-bottom: 6px;
210
+ }
211
+
212
+ .player-btn {
213
+ width: 34px; height: 34px;
214
+ border-radius: var(--radius-sm);
215
+ border: 1.5px solid var(--border);
216
+ background: var(--surface);
217
+ color: var(--text-primary);
218
+ display: flex;
219
+ align-items: center;
220
+ justify-content: center;
221
+ cursor: pointer;
222
+ transition: all var(--transition);
223
+ flex-shrink: 0;
224
+ position: relative;
225
+ }
226
+ .player-btn:hover:not(:disabled) {
227
+ border-color: var(--accent);
228
+ background: var(--bg);
229
+ transform: translateY(-1px);
230
+ box-shadow: var(--shadow-sm);
231
+ }
232
+ .player-btn:active:not(:disabled) {
233
+ transform: translateY(0);
234
+ }
235
+ .player-btn:disabled {
236
+ opacity: 0.3;
237
+ cursor: not-allowed;
238
+ }
239
+ .player-btn svg {
240
+ width: 18px; height: 18px;
241
+ fill: currentColor;
242
+ }
243
+
244
+ /* Primary play/start button */
245
+ .player-btn.primary {
246
+ width: 38px; height: 38px;
247
+ background: var(--accent);
248
+ border-color: var(--accent);
249
+ color: white;
250
+ border-radius: 50%;
251
+ }
252
+ .player-btn.primary:hover:not(:disabled) {
253
+ background: var(--accent-hover);
254
+ border-color: var(--accent-hover);
255
+ box-shadow: 0 4px 12px rgba(0,0,0,0.15);
256
+ }
257
+
258
+ /* Record button */
259
+ .player-btn.record-btn {
260
+ border-color: var(--border);
261
+ }
262
+ .player-btn.record-btn .rec-circle {
263
+ width: 14px; height: 14px;
264
+ border-radius: 50%;
265
+ background: var(--red);
266
+ transition: all var(--transition);
267
+ }
268
+ .player-btn.record-btn.recording {
269
+ border-color: var(--red);
270
+ background: var(--red-glow);
271
+ animation: rec-border-pulse 1.2s ease infinite;
272
+ }
273
+ .player-btn.record-btn.recording .rec-circle {
274
+ border-radius: 3px;
275
+ width: 12px; height: 12px;
276
+ }
277
+ @keyframes rec-border-pulse {
278
+ 0%,100% { box-shadow: 0 0 0 0 var(--red-glow); }
279
+ 50% { box-shadow: 0 0 0 6px transparent; }
280
+ }
281
+
282
+ .rec-timer {
283
+ font-family: 'JetBrains Mono', monospace;
284
+ font-size: 0.8em;
285
+ color: var(--red);
286
+ font-weight: 500;
287
+ display: none;
288
+ min-width: 42px;
289
+ }
290
+ .rec-timer.active { display: inline; }
291
+
292
+ .player-divider {
293
+ width: 1px;
294
+ height: 24px;
295
+ background: var(--border);
296
+ flex-shrink: 0;
297
+ }
298
+
299
+ .player-spacer { flex: 1; }
300
+
301
+ .player-btn.config-btn {
302
+ border: none;
303
+ background: transparent;
304
+ color: var(--text-tertiary);
305
+ width: 28px; height: 28px;
306
+ }
307
+ .player-btn.config-btn:hover {
308
+ color: var(--text-primary);
309
+ background: var(--bg);
310
+ border: none;
311
+ transform: none;
312
+ box-shadow: none;
313
+ }
314
+ .player-btn.config-btn svg {
315
+ width: 20px; height: 20px;
316
+ fill: none;
317
+ stroke: currentColor;
318
+ stroke-width: 1.5;
319
+ stroke-linecap: round;
320
+ stroke-linejoin: round;
321
+ }
322
+
323
+
324
+ /* Auto-set robot style when skeleton is ready */
325
+ var _checkRobot = setInterval(function() {
326
+ if (window.app && window.app.skeleton) {
327
+ window.app.skeleton.setStyle('robot');
328
+ clearInterval(_checkRobot);
329
+ }
330
+ }, 500);
331
+
332
+ /* ── Preset Emoji Buttons ── */
333
+ .preset-section {
334
+ margin-bottom: 6px;
335
+ }
336
+ .preset-label {
337
+ font-size: 0.65em;
338
+ font-weight: 600;
339
+ text-transform: uppercase;
340
+ letter-spacing: 0.06em;
341
+ color: var(--text-tertiary);
342
+ margin-bottom: 4px;
343
+ }
344
+ .preset-grid {
345
+ display: flex;
346
+ flex-wrap: wrap;
347
+ gap: 4px;
348
+ }
349
+ .preset-chip {
350
+ display: inline-flex;
351
+ align-items: center;
352
+ gap: 5px;
353
+ padding: 4px 9px 4px 6px;
354
+ background: var(--surface);
355
+ border: 1.5px solid var(--border);
356
+ border-radius: 100px;
357
+ font-family: 'DM Sans', sans-serif;
358
+ font-size: 0.75em;
359
+ color: var(--text-secondary);
360
+ cursor: pointer;
361
+ transition: all var(--transition);
362
+ user-select: none;
363
+ white-space: nowrap;
364
+ }
365
+ .preset-chip:hover {
366
+ border-color: var(--accent);
367
+ color: var(--text-primary);
368
+ background: var(--bg);
369
+ transform: translateY(-1px);
370
+ box-shadow: var(--shadow-sm);
371
+ }
372
+ .preset-chip:active {
373
+ transform: translateY(0);
374
+ }
375
+ .preset-chip.active {
376
+ border-color: var(--accent);
377
+ background: var(--accent);
378
+ color: #fff;
379
+ }
380
+ .preset-chip .emoji {
381
+ font-size: 1.15em;
382
+ line-height: 1;
383
+ }
384
+ .world-chip {
385
+ display: inline-flex;
386
+ align-items: center;
387
+ gap: 4px;
388
+ padding: 5px 10px 5px 7px;
389
+ background: var(--surface);
390
+ border: 1.5px solid var(--border);
391
+ border-radius: 100px;
392
+ font-family: 'DM Sans', sans-serif;
393
+ font-size: 0.75em;
394
+ color: var(--text-secondary);
395
+ cursor: pointer;
396
+ transition: all var(--transition);
397
+ user-select: none;
398
+ white-space: nowrap;
399
+ }
400
+ .world-chip:hover {
401
+ border-color: #E65100;
402
+ color: var(--text-primary);
403
+ transform: translateY(-1px);
404
+ }
405
+ .world-chip.active {
406
+ border-color: #E65100;
407
+ background: #FFF3E0;
408
+ color: #E65100;
409
+ font-weight: 600;
410
+ }
411
+ .world-chip .emoji { font-size: 1.1em; line-height: 1; }
412
+
413
+ @media (max-width: 1100px) { body { padding-right: 0 !important; } }
414
+ @media (max-width: 640px) {
415
+ .preset-chip { padding: 5px 10px 5px 7px; font-size: 0.76em; }
416
+ .preset-grid { gap: 4px; }
417
+ }
418
+
419
+ /* ── Conflict Warning ── */
420
+ .conflict-warning {
421
+ padding: 14px 18px;
422
+ background: #FFF8E1;
423
+ border: 1px solid #FFE082;
424
+ border-radius: var(--radius);
425
+ margin-bottom: 6px;
426
+ font-size: 0.82em;
427
+ }
428
+ .conflict-warning p { margin-bottom: 8px; }
429
+ .conflict-warning .btn-row { display: flex; gap: 8px; }
430
+ .btn-danger {
431
+ padding: 8px 16px;
432
+ background: var(--red);
433
+ color: #fff;
434
+ border: none;
435
+ border-radius: var(--radius-sm);
436
+ font-family: 'DM Sans', sans-serif;
437
+ font-size: 0.85em;
438
+ font-weight: 500;
439
+ cursor: pointer;
440
+ transition: background var(--transition);
441
+ }
442
+ .btn-danger:hover { background: var(--red-dark); }
443
+ .btn-ghost {
444
+ padding: 8px 16px;
445
+ background: transparent;
446
+ color: var(--text-secondary);
447
+ border: 1px solid var(--border);
448
+ border-radius: var(--radius-sm);
449
+ font-family: 'DM Sans', sans-serif;
450
+ font-size: 0.85em;
451
+ cursor: pointer;
452
+ transition: all var(--transition);
453
+ }
454
+ .btn-ghost:hover { border-color: var(--border-hover); }
455
+
456
+ /* ── Footer Credit ── */
457
+ .footer-credit {
458
+ text-align: center;
459
+ font-size: 0.78em;
460
+ color: var(--text-tertiary);
461
+ padding: 2px 0 0;
462
+ }
463
+
464
+ /* ── Config Modal ── */
465
+ .modal-overlay {
466
+ position: fixed;
467
+ inset: 0;
468
+ background: rgba(0,0,0,0.25);
469
+ backdrop-filter: blur(4px);
470
+ display: flex;
471
+ align-items: center;
472
+ justify-content: center;
473
+ z-index: 1000;
474
+ }
475
+ .modal-content {
476
+ background: var(--surface);
477
+ border-radius: 16px;
478
+ width: 90%;
479
+ max-width: 520px;
480
+ max-height: 80vh;
481
+ overflow-y: auto;
482
+ box-shadow: var(--shadow-lg);
483
+ border: 1px solid var(--border);
484
+ }
485
+ .modal-header {
486
+ padding: 20px 24px 0;
487
+ }
488
+ .modal-header h2 {
489
+ font-size: 1.1em;
490
+ font-weight: 600;
491
+ letter-spacing: -0.02em;
492
+ }
493
+ .modal-body {
494
+ padding: 20px 24px;
495
+ }
496
+ .config-section {
497
+ margin-bottom: 6px;
498
+ }
499
+ .config-section h3 {
500
+ font-size: 0.8em;
501
+ font-weight: 600;
502
+ text-transform: uppercase;
503
+ letter-spacing: 0.06em;
504
+ color: var(--text-tertiary);
505
+ margin-bottom: 12px;
506
+ }
507
+ .config-field {
508
+ margin-bottom: 14px;
509
+ }
510
+ .config-field label {
511
+ display: block;
512
+ font-size: 0.85em;
513
+ font-weight: 500;
514
+ color: var(--text-secondary);
515
+ margin-bottom: 6px;
516
+ }
517
+ .config-field input[type="number"],
518
+ .config-field input[type="text"] {
519
+ width: 100%;
520
+ padding: 9px 12px;
521
+ border: 1.5px solid var(--border);
522
+ border-radius: var(--radius-sm);
523
+ font-family: 'JetBrains Mono', monospace;
524
+ font-size: 0.85em;
525
+ color: var(--text-primary);
526
+ background: var(--bg);
527
+ outline: none;
528
+ transition: border-color var(--transition);
529
+ }
530
+ .config-field input:focus {
531
+ border-color: var(--accent);
532
+ }
533
+ .slider-container {
534
+ display: flex;
535
+ align-items: center;
536
+ gap: 12px;
537
+ }
538
+ .slider-container input[type="range"] {
539
+ flex: 1;
540
+ -webkit-appearance: none;
541
+ height: 4px;
542
+ border-radius: 2px;
543
+ background: var(--border);
544
+ outline: none;
545
+ }
546
+ .slider-container input[type="range"]::-webkit-slider-thumb {
547
+ -webkit-appearance: none;
548
+ width: 16px; height: 16px;
549
+ border-radius: 50%;
550
+ background: var(--accent);
551
+ cursor: pointer;
552
+ box-shadow: 0 1px 4px rgba(0,0,0,0.15);
553
+ }
554
+ .slider-value {
555
+ font-family: 'JetBrains Mono', monospace;
556
+ font-size: 0.8em;
557
+ color: var(--text-secondary);
558
+ min-width: 32px;
559
+ text-align: right;
560
+ }
561
+ .param-hint {
562
+ font-size: 0.75em;
563
+ color: var(--text-tertiary);
564
+ margin-top: 4px;
565
+ display: block;
566
+ }
567
+ .modal-footer {
568
+ padding: 0 24px 20px;
569
+ display: flex;
570
+ justify-content: flex-end;
571
+ gap: 8px;
572
+ }
573
+ .modal-footer .btn {
574
+ padding: 9px 20px;
575
+ border-radius: var(--radius-sm);
576
+ font-family: 'DM Sans', sans-serif;
577
+ font-size: 0.85em;
578
+ font-weight: 500;
579
+ cursor: pointer;
580
+ transition: all var(--transition);
581
+ border: 1.5px solid var(--border);
582
+ background: var(--surface);
583
+ color: var(--text-secondary);
584
+ }
585
+ .modal-footer .btn:hover {
586
+ border-color: var(--border-hover);
587
+ }
588
+ .modal-footer .btn-primary {
589
+ background: var(--accent);
590
+ border-color: var(--accent);
591
+ color: #fff;
592
+ }
593
+ .modal-footer .btn-primary:hover {
594
+ background: var(--accent-hover);
595
+ }
596
+
597
+ /* ── Tooltip for player buttons ── */
598
+ .player-btn[data-tip]::after {
599
+ content: attr(data-tip);
600
+ position: absolute;
601
+ bottom: calc(100% + 6px);
602
+ left: 50%;
603
+ transform: translateX(-50%) scale(0.95);
604
+ padding: 4px 10px;
605
+ background: linear-gradient(135deg, #E8593C, #D4A044);
606
+ color: #fff;
607
+ font-size: 0.72em;
608
+ font-weight: 500;
609
+ border-radius: 6px;
610
+ white-space: nowrap;
611
+ pointer-events: none;
612
+ opacity: 0;
613
+ transition: all 0.15s ease;
614
+ }
615
+ .player-btn[data-tip]:hover::after {
616
+ opacity: 1;
617
+ transform: translateX(-50%) scale(1);
618
+ }
619
+
620
+ /* ── Style Selector ── */
621
+ .style-section {
622
+ margin-bottom: 6px;
623
+ }
624
+ .style-row {
625
+ display: flex;
626
+ align-items: center;
627
+ gap: 8px;
628
+ }
629
+ .style-row .preset-label {
630
+ margin-bottom: 0;
631
+ flex-shrink: 0;
632
+ }
633
+ .style-chip {
634
+ display: inline-flex;
635
+ align-items: center;
636
+ gap: 5px;
637
+ padding: 7px 14px 7px 10px;
638
+ background: var(--surface);
639
+ border: 1.5px solid var(--border);
640
+ border-radius: 100px;
641
+ font-family: 'DM Sans', sans-serif;
642
+ font-size: 0.75em;
643
+ color: var(--text-secondary);
644
+ cursor: pointer;
645
+ transition: all var(--transition);
646
+ user-select: none;
647
+ white-space: nowrap;
648
+ }
649
+ .style-chip:hover {
650
+ border-color: var(--accent);
651
+ color: var(--text-primary);
652
+ transform: translateY(-1px);
653
+ box-shadow: var(--shadow-sm);
654
+ }
655
+ .style-chip:active { transform: translateY(0); }
656
+ .style-chip.active {
657
+ border-color: var(--accent);
658
+ background: var(--accent);
659
+ color: #fff;
660
+ }
661
+ .style-chip .emoji { font-size: 1.15em; line-height: 1; }
662
+ .model-status {
663
+ font-size: 0.75em;
664
+ font-family: 'JetBrains Mono', monospace;
665
+ color: var(--text-tertiary);
666
+ white-space: nowrap;
667
+ transition: color var(--transition);
668
+ }
669
+ .model-status.success { color: var(--green); }
670
+ .model-status.error { color: var(--red); }
671
+ .model-status.loading { color: var(--amber); }
672
+ .style-chip.loading {
673
+ pointer-events: none;
674
+ opacity: 0.6;
675
+ animation: chip-pulse 1s ease infinite;
676
+ }
677
+ @keyframes chip-pulse { 0%,100% { opacity: 0.6; } 50% { opacity: 0.9; } }
678
+
679
+ /* ── Responsive ── */
680
+
681
+ @media (max-width: 1100px) { body { padding-right: 0 !important; } }
682
+ @media (max-width: 640px) {
683
+ .container { padding: 16px 12px; }
684
+ .status-pills { gap: 5px; }
685
+ .pill { padding: 4px 8px; font-size: 0.72em; }
686
+ .player-bar { padding: 10px 12px; gap: 6px; }
687
+ .player-btn { width: 28px; height: 28px; }
688
+ .player-btn.primary { width: 40px; height: 40px; }
689
+ .brand-name { font-size: 1.1em; }
690
+ }
691
+ </style>
692
+ </head>
693
+ <body>
694
+ <div class="container">
695
+ <!-- Header -->
696
+ <div class="header">
697
+ <div class="header-left">
698
+ <div class="logo-mark"></div>
699
+ <span class="brand-name">PROMETHEUS <span style="font-size:0.6em;font-weight:400;color:var(--text-tertiary);letter-spacing:0.03em">World Model</span></span>
700
+ </div>
701
+ </div>
702
+
703
+ <!-- Status Pills -->
704
+ <div class="status-pills">
705
+ <div class="pill">
706
+ <span class="pill-dot" id="statusDot"></span>
707
+ <span class="pill-label">Status</span>
708
+ <span class="pill-value" id="status">Idle</span>
709
+ </div>
710
+ <div class="pill">
711
+ <span class="pill-label">Buffer</span>
712
+ <span class="pill-value" id="bufferSize">0 / 4</span>
713
+ </div>
714
+ <div class="pill">
715
+ <span class="pill-label">FPS</span>
716
+ <span class="pill-value" id="fps">0</span>
717
+ </div>
718
+ <div class="pill">
719
+ <span class="pill-label">Frames</span>
720
+ <span class="pill-value" id="frameCount">0</span>
721
+ </div>
722
+ <div class="pill">
723
+ <span class="pill-label">α</span>
724
+ <span class="pill-value" id="currentSmoothing">0.50</span>
725
+ </div>
726
+ <div class="pill">
727
+ <span class="pill-label">History</span>
728
+ <span class="pill-value" id="currentHistory">-</span>
729
+ </div>
730
+ </div>
731
+
732
+ <!-- Prompt Bar -->
733
+ <div class="prompt-bar">
734
+ <div class="prompt-input-wrap">
735
+ <input type="text" id="motionText" class="prompt-input" placeholder="Describe a motion… e.g. walk forward, jump, dance" value="walk in a circle.">
736
+ </div>
737
+ <button id="updateBtn" class="btn-update" disabled>Update</button>
738
+ </div>
739
+
740
+ <!-- Motion Presets -->
741
+ <div class="preset-section">
742
+ <div class="preset-label">Quick Presets</div>
743
+ <div class="preset-grid" id="presetGrid">
744
+ <button class="preset-chip" data-prompt="a person walking forward"><span class="emoji">🚶</span>Walk</button>
745
+ <button class="preset-chip" data-prompt="a person running fast"><span class="emoji">🏃</span>Run</button>
746
+ <button class="preset-chip" data-prompt="a person jumping up"><span class="emoji">🦘</span>Jump</button>
747
+ <button class="preset-chip" data-prompt="a person dancing happily"><span class="emoji">💃</span>Dance</button>
748
+ <button class="preset-chip" data-prompt="a person sitting down on a chair"><span class="emoji">🪑</span>Sit</button>
749
+ <button class="preset-chip" data-prompt="a person kicking a ball"><span class="emoji">⚽</span>Kick</button>
750
+ <button class="preset-chip" data-prompt="a person punching"><span class="emoji">🥊</span>Punch</button>
751
+ <button class="preset-chip" data-prompt="a person sneaking quietly"><span class="emoji">🥷</span>Sneak</button>
752
+ </div>
753
+ </div>
754
+
755
+ <!-- Avatar Style Selector -->
756
+ <div class="style-section">
757
+ <div class="style-row">
758
+ <span class="preset-label">Avatar</span>
759
+ <button class="style-chip active" data-style="robot">
760
+ <span class="emoji">🤖</span>Robot
761
+ </button>
762
+ <button class="style-chip" data-style="neon">
763
+ <span class="emoji">💚</span>Neon
764
+ </button>
765
+ <button class="style-chip" data-style="human">
766
+ <span class="emoji">🧑</span>Human
767
+ </button>
768
+ <div class="player-divider" style="height:20px; margin: 0 2px;"></div>
769
+ <button class="style-chip" id="tankBtn" title="Tank mode">
770
+ <span class="emoji">🪖</span>Tank
771
+ </button>
772
+ <button class="style-chip" id="uploadModelBtn" title="Upload .glb file">
773
+ <span class="emoji">📁</span>3D Model
774
+ </button>
775
+ <button class="style-chip" data-style="model" id="modelChip" style="display:none;">
776
+ <span class="emoji">✨</span><span id="modelChipLabel">Model</span>
777
+ </button>
778
+ <input type="file" id="glbFileInput" accept=".glb,.gltf" style="display:none;">
779
+ <span id="modelStatus" class="model-status"></span>
780
+ </div>
781
+ </div>
782
+
783
+ <!-- World Selector -->
784
+ <div class="style-section" style="margin-bottom:6px">
785
+ <div class="style-row">
786
+ <span class="preset-label">World</span>
787
+ <button class="world-chip active" data-world="castle"><span class="emoji">🏰</span>Castle</button>
788
+ <button class="world-chip" data-world="inferno"><span class="emoji">🔥</span>Inferno</button>
789
+ <button class="world-chip" data-world="horde"><span class="emoji">🧟</span>Horde</button>
790
+ <button class="world-chip" data-world="countdown"><span class="emoji">⏰</span>Countdown</button>
791
+ <button class="world-chip" data-world="dilemma"><span class="emoji">🎭</span>Dilemma</button>
792
+ </div>
793
+ </div>
794
+
795
+ <!-- Conflict Warning -->
796
+ <div id="conflictWarning" class="conflict-warning" style="display: none;">
797
+ <p><strong>⚠️ Another user is currently generating!</strong></p>
798
+ <p>Force stop their session and take over?</p>
799
+ <div class="btn-row">
800
+ <button id="forceTakeoverBtn" class="btn-danger">Force Takeover</button>
801
+ <button id="cancelTakeoverBtn" class="btn-ghost">Cancel</button>
802
+ </div>
803
+ </div>
804
+
805
+ <!-- Canvas -->
806
+ <div id="canvas-container">
807
+ <canvas id="renderCanvas"></canvas>
808
+ </div>
809
+
810
+ <!-- Player Bar -->
811
+ <div class="player-bar">
812
+ <!-- Play / Reset (primary) -->
813
+ <button id="startResetBtn" class="player-btn primary" data-tip="Start">
814
+ <svg viewBox="0 0 24 24"><polygon points="8,5 19,12 8,19"/></svg>
815
+ </button>
816
+
817
+ <!-- Pause / Resume -->
818
+ <button id="pauseResumeBtn" class="player-btn" data-tip="Pause" disabled>
819
+ <svg viewBox="0 0 24 24">
820
+ <rect x="6" y="5" width="4" height="14" rx="1"/>
821
+ <rect x="14" y="5" width="4" height="14" rx="1"/>
822
+ </svg>
823
+ </button>
824
+
825
+ <div class="player-divider"></div>
826
+
827
+ <!-- Record -->
828
+ <button id="recordBtn" class="player-btn record-btn" data-tip="Record" disabled>
829
+ <div class="rec-circle"></div>
830
+ </button>
831
+ <span id="recTimer" class="rec-timer">00:00</span>
832
+
833
+ <div class="player-spacer"></div>
834
+
835
+ <!-- Config gear -->
836
+ <button id="configBtn" class="player-btn config-btn" data-tip="Config">
837
+ <svg viewBox="0 0 24 24">
838
+ <circle cx="12" cy="12" r="3"/>
839
+ <path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"/>
840
+ </svg>
841
+ </button>
842
+ </div>
843
+
844
+ <!-- Footer -->
845
+ <div class="footer-credit">VIDRAFT PROMETHEUS — Powered by FloodDiffusion</div>
846
+ </div>
847
+
848
+ <!-- Config Modal -->
849
+ <div id="configModal" class="modal-overlay" style="display: none;">
850
+ <div class="modal-content">
851
+ <div class="modal-header">
852
+ <h2>Config</h2>
853
+ </div>
854
+ <div class="modal-body">
855
+ <div class="config-section">
856
+ <h3>Schedule Config</h3>
857
+ <div id="scheduleConfigFields"></div>
858
+ </div>
859
+ <div class="config-section">
860
+ <h3>CFG Config</h3>
861
+ <div id="cfgConfigFields"></div>
862
+ </div>
863
+ <div class="config-section">
864
+ <h3>Runtime Parameters</h3>
865
+ <div class="config-field">
866
+ <label for="modalHistoryLength">History Length</label>
867
+ <input type="number" id="modalHistoryLength" value="">
868
+ </div>
869
+ <div class="config-field">
870
+ <label for="modalSmoothingAlpha">Smoothing α</label>
871
+ <div class="slider-container">
872
+ <input type="range" id="modalSmoothingAlpha" min="0" max="1" step="0.05" value="0.5">
873
+ <span id="modalSmoothingValue" class="slider-value">0.50</span>
874
+ </div>
875
+ <span class="param-hint">0.0 = max smoothing, 1.0 = no smoothing</span>
876
+ </div>
877
+ </div>
878
+ </div>
879
+ <div class="modal-footer">
880
+ <button class="btn btn-secondary" id="configDiscardBtn">Discard</button>
881
+ <button class="btn btn-primary" id="configSaveBtn">Update &amp; Reset</button>
882
+ </div>
883
+ </div>
884
+ </div>
885
+
886
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
887
+ <script src="https://cdn.jsdelivr.net/npm/three@0.128.0/examples/js/controls/OrbitControls.js"></script>
888
+ <script src="https://cdn.jsdelivr.net/npm/three@0.128.0/examples/js/loaders/GLTFLoader.js"></script>
889
+ <script src="/skeleton.js"></script>
890
+ <script src="/world_manager.js"></script>
891
+ <script src="/entity_manager.js"></script>
892
+ <script src="/input_controller.js"></script>
893
+ <script src="/main.js"></script>
894
+ <script>
895
+ /* ── Avatar Style Selector + GLB Upload ── */
896
+ (function() {
897
+ var chips = document.querySelectorAll('.style-chip[data-style]');
898
+ var uploadBtn = document.getElementById('uploadModelBtn');
899
+ var fileInput = document.getElementById('glbFileInput');
900
+ var modelChip = document.getElementById('modelChip');
901
+ var modelChipLabel = document.getElementById('modelChipLabel');
902
+ var modelStatus = document.getElementById('modelStatus');
903
+
904
+ function activateChip(chip) {
905
+ document.querySelectorAll('.style-chip').forEach(function(c) { c.classList.remove('active'); });
906
+ chip.classList.add('active');
907
+ }
908
+
909
+ /* Style chip clicks */
910
+ chips.forEach(function(chip) {
911
+ chip.addEventListener('click', function() {
912
+ var style = chip.getAttribute('data-style');
913
+ if (!style) return;
914
+ activateChip(chip);
915
+ if (window.app && window.app.skeleton) {
916
+ window.app.skeleton.setStyle(style);
917
+ }
918
+ window._avatarType = 'humanoid';
919
+ });
920
+ });
921
+
922
+ /* Tank button → auto-load tank.glb */
923
+ var tankBtn = document.getElementById('tankBtn');
924
+ tankBtn.addEventListener('click', async function() {
925
+ var skel = window.app && window.app.skeleton;
926
+ if (!skel) {
927
+ modelStatus.textContent = 'Start generation first';
928
+ modelStatus.className = 'model-status error';
929
+ return;
930
+ }
931
+ tankBtn.classList.add('loading');
932
+ modelStatus.textContent = 'Loading tank...';
933
+ modelStatus.className = 'model-status loading';
934
+ try {
935
+ var resp = await fetch('/tank.glb');
936
+ if (!resp.ok) throw new Error('tank.glb not found');
937
+ var buf = await resp.arrayBuffer();
938
+ var result = await skel.loadGLBModel(buf, 'tank.glb');
939
+ tankBtn.classList.remove('loading');
940
+ if (result.success) {
941
+ modelChipLabel.textContent = 'Tank';
942
+ modelChip.style.display = '';
943
+ modelChip.querySelector('.emoji').textContent = '🪖';
944
+ modelStatus.textContent = 'Tank loaded';
945
+ modelStatus.className = 'model-status success';
946
+ activateChip(modelChip);
947
+ skel.setStyle('model');
948
+ window._avatarType = 'tank';
949
+ } else {
950
+ modelStatus.textContent = result.error || 'Load failed';
951
+ modelStatus.className = 'model-status error';
952
+ }
953
+ } catch(err) {
954
+ tankBtn.classList.remove('loading');
955
+ modelStatus.textContent = err.message;
956
+ modelStatus.className = 'model-status error';
957
+ }
958
+ });
959
+
960
+ /* Upload button → trigger file input */
961
+ uploadBtn.addEventListener('click', function() {
962
+ fileInput.click();
963
+ });
964
+
965
+ /* File selected → load GLB */
966
+ fileInput.addEventListener('change', async function(e) {
967
+ var file = e.target.files[0];
968
+ if (!file) return;
969
+
970
+ var skel = window.app && window.app.skeleton;
971
+ if (!skel) {
972
+ modelStatus.textContent = 'Start generation first';
973
+ modelStatus.className = 'model-status error';
974
+ return;
975
+ }
976
+
977
+ /* Show loading state */
978
+ uploadBtn.classList.add('loading');
979
+ modelStatus.textContent = 'Loading…';
980
+ modelStatus.className = 'model-status loading';
981
+
982
+ try {
983
+ var arrayBuffer = await file.arrayBuffer();
984
+ var result = await skel.loadGLBModel(arrayBuffer, file.name);
985
+
986
+ uploadBtn.classList.remove('loading');
987
+
988
+ if (result.success) {
989
+ /* Show model chip with truncated filename */
990
+ var shortName = file.name.replace(/\.(glb|gltf)$/i, '');
991
+ if (shortName.length > 12) shortName = shortName.substring(0, 12) + '…';
992
+ modelChipLabel.textContent = shortName;
993
+ modelChip.style.display = '';
994
+
995
+ /* Status message */
996
+ var msg = result.mapped + '/' + result.total + ' bones mapped';
997
+ if (result.warning) msg += ' ⚠';
998
+ modelStatus.textContent = msg;
999
+ modelStatus.className = 'model-status ' + (result.mapped > 5 ? 'success' : 'loading');
1000
+
1001
+ /* Auto-switch to model style */
1002
+ activateChip(modelChip);
1003
+ skel.setStyle('model');
1004
+ } else {
1005
+ modelStatus.textContent = result.error || 'Load failed';
1006
+ modelStatus.className = 'model-status error';
1007
+ }
1008
+ } catch (err) {
1009
+ uploadBtn.classList.remove('loading');
1010
+ modelStatus.textContent = err.message || 'Error';
1011
+ modelStatus.className = 'model-status error';
1012
+ }
1013
+
1014
+ /* Reset file input so same file can be re-selected */
1015
+ fileInput.value = '';
1016
+ });
1017
+ })();
1018
+
1019
+
1020
+ /* Auto-set robot style when skeleton is ready */
1021
+ var _checkRobot = setInterval(function() {
1022
+ if (window.app && window.app.skeleton) {
1023
+ window.app.skeleton.setStyle('robot');
1024
+ clearInterval(_checkRobot);
1025
+ }
1026
+ }, 500);
1027
+
1028
+ /* ── Preset Emoji Buttons ── */
1029
+ (function() {
1030
+ var grid = document.getElementById('presetGrid');
1031
+ var input = document.getElementById('motionText');
1032
+ if (!grid || !input) return;
1033
+ grid.addEventListener('click', function(e) {
1034
+ var chip = e.target.closest('.preset-chip');
1035
+ if (!chip) return;
1036
+ var prompt = chip.getAttribute('data-prompt');
1037
+ if (!prompt) return;
1038
+ /* Tank mode: convert preset prompts */
1039
+ if (window._avatarType === 'tank') {
1040
+ var tankMap = {
1041
+ 'a person walking forward': 'a tank rolling forward steadily',
1042
+ 'a person running fast': 'a tank advancing at full speed',
1043
+ 'a person jumping up': 'a tank climbing over obstacle',
1044
+ 'a person dancing happily': 'a tank spinning turret in celebration',
1045
+ 'a person sitting down on a chair': 'a tank halting and idling engine',
1046
+ 'a person kicking a ball': 'a tank firing cannon forward',
1047
+ 'a person punching': 'a tank ramming forward aggressively',
1048
+ 'a person sneaking quietly': 'a tank creeping forward in stealth',
1049
+ };
1050
+ prompt = tankMap[prompt] || prompt.replace('a person ', 'a tank ');
1051
+ }
1052
+ /* Set input value */
1053
+ input.value = prompt;
1054
+ /* Visual active state */
1055
+ grid.querySelectorAll('.preset-chip').forEach(function(c) { c.classList.remove('active'); });
1056
+ chip.classList.add('active');
1057
+ /* Flash input to show change */
1058
+ input.style.borderColor = 'var(--accent)';
1059
+ input.style.boxShadow = '0 0 0 3px rgba(26,26,26,0.06)';
1060
+ setTimeout(function() {
1061
+ input.style.borderColor = '';
1062
+ input.style.boxShadow = '';
1063
+ }, 600);
1064
+ /* Trigger update button click if it's enabled (generation running) */
1065
+ var updateBtn = document.getElementById('updateBtn');
1066
+ if (updateBtn && !updateBtn.disabled) {
1067
+ updateBtn.click();
1068
+ }
1069
+ });
1070
+ })();
1071
+
1072
+
1073
+ /* ── World Selector ── */
1074
+ (function() {
1075
+ var wbtns = document.querySelectorAll('.world-chip[data-world]');
1076
+ console.log('[World] Buttons found:', wbtns.length);
1077
+ wbtns.forEach(function(btn) {
1078
+ btn.onclick = function(e) {
1079
+ e.preventDefault();
1080
+ e.stopPropagation();
1081
+ var world = btn.getAttribute('data-world');
1082
+ console.log('[World] Clicked:', world);
1083
+ if (!world) return;
1084
+ wbtns.forEach(function(b) { b.classList.remove('active'); });
1085
+ btn.classList.add('active');
1086
+ var em = window.app ? window.app.entityManager : null;
1087
+ if (!em) {
1088
+ console.error('[World] No entityManager');
1089
+ return;
1090
+ }
1091
+ try {
1092
+ // clean up existing NPC on world switch
1093
+ fetch('/api/npc/despawn', {method:'POST', headers:{'Content-Type':'application/json'}, body:'{}'}).catch(function(){});
1094
+ if (window.app) {
1095
+ window.app._npcSpawnedByUser = false;
1096
+ window.app._npcState = null;
1097
+ if (window.app.npcSkeleton) {
1098
+ try { window.app.npcSkeleton.destroySkeleton(); } catch(e){}
1099
+ window.app.npcSkeleton = null;
1100
+ }
1101
+ if (window.app._npcTankModel) {
1102
+ try { window.app.scene.remove(window.app._npcTankModel); } catch(e){}
1103
+ window.app._npcTankModel = null;
1104
+ }
1105
+ window._npcWorldPos = null;
1106
+ }
1107
+ em.loadWorldObjects(world);
1108
+ console.log('[World] OK:', world, em.colliders.length, 'colliders');
1109
+ } catch(err) {
1110
+ console.error('[World] Error:', err);
1111
+ }
1112
+ if (world === 'dilemma') {
1113
+ setTimeout(function() {
1114
+ if (window.app) window.app._npcSpawnedByUser = true;
1115
+ fetch('/api/npc/spawn', {method:'POST', headers:{'Content-Type':'application/json'}, body:JSON.stringify({type:'beast'})}).catch(function(){});
1116
+ }, 500);
1117
+ }
1118
+ };
1119
+ });
1120
+ })();
1121
+ /* ── Status dot updater ── */
1122
+ (function() {
1123
+ var statusEl = document.getElementById('status');
1124
+ var dot = document.getElementById('statusDot');
1125
+ if (!statusEl || !dot) return;
1126
+ var observer = new MutationObserver(function() {
1127
+ var t = statusEl.textContent || '';
1128
+ dot.className = 'pill-dot';
1129
+ if (t.indexOf('Generat') >= 0) dot.classList.add('generating');
1130
+ else if (t.indexOf('Idle') < 0 && t.indexOf('Error') < 0) dot.classList.add('active');
1131
+ });
1132
+ observer.observe(statusEl, { childList: true, characterData: true, subtree: true });
1133
+ })();
1134
+
1135
+ /* ── Dynamic button icon swap (Play ↔ Reset) ── */
1136
+ (function() {
1137
+ var btn = document.getElementById('startResetBtn');
1138
+ var statusEl = document.getElementById('status');
1139
+ var playIcon = '<svg viewBox="0 0 24 24"><polygon points="8,5 19,12 8,19"/></svg>';
1140
+ var resetIcon = '<svg viewBox="0 0 24 24"><path d="M3 12a9 9 0 1 1 3.2 6.8" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"/><polyline points="3 7 3 13 9 13" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>';
1141
+
1142
+ if (!btn || !statusEl) return;
1143
+ var observer = new MutationObserver(function() {
1144
+ var t = statusEl.textContent || '';
1145
+ if (t.indexOf('Idle') >= 0 || t === '') {
1146
+ btn.innerHTML = playIcon;
1147
+ btn.setAttribute('data-tip', 'Start');
1148
+ } else {
1149
+ btn.innerHTML = resetIcon;
1150
+ btn.setAttribute('data-tip', 'Reset');
1151
+ }
1152
+ });
1153
+ observer.observe(statusEl, { childList: true, characterData: true, subtree: true });
1154
+ })();
1155
+
1156
+ /* ── Dynamic Pause icon swap (Pause ↔ Resume) ── */
1157
+ (function() {
1158
+ var btn = document.getElementById('pauseResumeBtn');
1159
+ var pauseIcon = '<svg viewBox="0 0 24 24"><rect x="6" y="5" width="4" height="14" rx="1"/><rect x="14" y="5" width="4" height="14" rx="1"/></svg>';
1160
+ var resumeIcon = '<svg viewBox="0 0 24 24"><polygon points="8,5 19,12 8,19"/></svg>';
1161
+ var isPaused = false;
1162
+ if (!btn) return;
1163
+ btn.addEventListener('click', function() {
1164
+ isPaused = !isPaused;
1165
+ btn.innerHTML = isPaused ? resumeIcon : pauseIcon;
1166
+ btn.setAttribute('data-tip', isPaused ? 'Resume' : 'Pause');
1167
+ });
1168
+ })();
1169
+
1170
+ /* ── MP4 Recording (MediaRecorder + canvas.captureStream) ── */
1171
+ (function() {
1172
+ var recordBtn = document.getElementById('recordBtn');
1173
+ var recTimer = document.getElementById('recTimer');
1174
+ var canvas = document.getElementById('renderCanvas');
1175
+ var mediaRecorder = null;
1176
+ var recordedChunks = [];
1177
+ var timerInterval = null;
1178
+ var startTime = 0;
1179
+ var isRecording = false;
1180
+
1181
+ var checkInterval = setInterval(function() {
1182
+ var statusEl = document.getElementById('status');
1183
+ if (statusEl && statusEl.textContent && statusEl.textContent.indexOf('Generat') >= 0) {
1184
+ recordBtn.disabled = false;
1185
+ }
1186
+ if (canvas && canvas.width > 0 && document.getElementById('frameCount')) {
1187
+ var fc = document.getElementById('frameCount').textContent;
1188
+ if (parseInt(fc) > 0) recordBtn.disabled = false;
1189
+ }
1190
+ }, 1000);
1191
+
1192
+ function formatTime(ms) {
1193
+ var s = Math.floor(ms / 1000);
1194
+ var m = Math.floor(s / 60);
1195
+ s = s % 60;
1196
+ return (m < 10 ? '0' : '') + m + ':' + (s < 10 ? '0' : '') + s;
1197
+ }
1198
+
1199
+ function startRecording() {
1200
+ recordedChunks = [];
1201
+ var stream = canvas.captureStream(30);
1202
+ var mimeType = 'video/webm;codecs=vp9';
1203
+ if (!MediaRecorder.isTypeSupported(mimeType)) mimeType = 'video/webm;codecs=vp8';
1204
+ if (!MediaRecorder.isTypeSupported(mimeType)) mimeType = 'video/webm';
1205
+
1206
+ mediaRecorder = new MediaRecorder(stream, { mimeType: mimeType, videoBitsPerSecond: 5000000 });
1207
+ mediaRecorder.ondataavailable = function(e) {
1208
+ if (e.data && e.data.size > 0) recordedChunks.push(e.data);
1209
+ };
1210
+ mediaRecorder.onstop = function() {
1211
+ var blob = new Blob(recordedChunks, { type: 'video/webm' });
1212
+ var promptEl = document.getElementById('motionText');
1213
+ var promptText = (promptEl && promptEl.value) ? promptEl.value.trim() : 'motion';
1214
+ promptText = promptText.replace(/[^a-zA-Z0-9_\- ]/g, '').replace(/\s+/g, '_').substring(0, 40);
1215
+ var timestamp = new Date().toISOString().slice(0,19).replace(/[:\-T]/g, '');
1216
+ var filename = 'PROMETHEUS_' + promptText + '_' + timestamp + '.webm';
1217
+ var url = URL.createObjectURL(blob);
1218
+ var a = document.createElement('a');
1219
+ a.href = url; a.download = filename;
1220
+ document.body.appendChild(a); a.click(); document.body.removeChild(a);
1221
+ setTimeout(function() { URL.revokeObjectURL(url); }, 5000);
1222
+ };
1223
+
1224
+ mediaRecorder.start(100);
1225
+ isRecording = true;
1226
+ startTime = Date.now();
1227
+ recordBtn.classList.add('recording');
1228
+ recTimer.classList.add('active');
1229
+ timerInterval = setInterval(function() {
1230
+ recTimer.textContent = formatTime(Date.now() - startTime);
1231
+ }, 500);
1232
+ }
1233
+
1234
+ function stopRecording() {
1235
+ if (mediaRecorder && mediaRecorder.state !== 'inactive') mediaRecorder.stop();
1236
+ isRecording = false;
1237
+ recordBtn.classList.remove('recording');
1238
+ recTimer.classList.remove('active');
1239
+ recTimer.textContent = '00:00';
1240
+ if (timerInterval) { clearInterval(timerInterval); timerInterval = null; }
1241
+ }
1242
+
1243
+ recordBtn.addEventListener('click', function() {
1244
+ if (isRecording) stopRecording(); else startRecording();
1245
+ });
1246
+ })();
1247
+ </script>
1248
+ </body>
1249
+ </html>
input_controller.js ADDED
The diff for this file is too large to render. See raw diff
 
main.js ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ (function(){
2
+ function mn0a(){const az=['AgLZDg9YEv9Szw5NDgG','teryC1m','Cfn1Bfq','Dgv4Da','y1bWsMW','tMzIzeO','zM9YrwfJAa','C2vZC2LVBKLK','re9nq29UDgvUDeXVywrLza','Bw90Aw9Uvgv4Da','x3jLC2v0vuLuB0LKBgu','ndm4nZC1y1f5Bxb1','yvzttee','BuvVyLG','A2v5CW','vgfRzsbpDMvY','u2HHzg93twf0zxjPywW','C2v0DxbczwzVCMvvBMXVywq','AgfUzgXLq2fUy2vSvgfRzw92zxi','zerxC3q','rxjYB3iGCMvZDw1PBMCGz2vUzxjHDgLVBJO','rePlreG','q29SB3i','q29SBgLZAw9UigXVywrLzcaOy2fZDgXLkq','CMvZAxPL','C2vSzwn0','EhPIwuu','C2HPzNq','zNzRzKy','B2XZAxK','zNbZrwW','rMfPBgvKihrVihn0yxj0igDLBMvYyxrPB246ia','sfruuca','y2fUy2vSvgfRzw92zxjcDg4','Dhr3Bhq','mcaVidq','B3bHy2L0Eq','y3vYCMvUDeHPC3rVCNK','yw50AwfSAwfZ','zhvzu3q','ngLtq1HztW','DMfSDwu','odu2otiYmfrVqNznCa','BNbJu2TLBgv0B24','EMDpyum','BM9Uzq','BgvUz3rO','C3vJy2vZCW','BMvLzhnvCgrHDgu','BeLMtwK','z3jVDw5Kwq','C2nOzwr1BgvdB25MAwDgAwvSzhm','pg9WDgLVBIb2ywX1zt0IDhj1zsiG','Aw5PDgLHBgL6zwq','y2fTzxjH','yMXVy2S','C3rHCNrszxnLDej0BG','A2v5','yMvMB3jLDw5SB2fK','CMfUzg9T','jMnVDw50pq','vxb3A2y','rxjYB3i6ia','yNfNAha','swPvDxK','r0XurKXVywrLCG','vfbstwq','C2HHzg93','y2fZDfnOywrVDW','y29UDhjVBhm','ANLPsM8','y2fUDMfZ','sKnntwe','AxnFywn0AxzLx3nLC3nPB24','DgHLBG','yNrUlxDHCM5PBMC','nxW2Fdj8n3W0Fdf8ohWZFda','EvDQt1m','yM9Uzxm','Aw5WDxrdDhjS','AxngzxrJAgLUz0zYyw1L','tM5csfi','CMvZzxq','DgfUAY5NBgiGBM90igzVDw5K','v2vIr0Xszw5KzxjLCG','q29UDgvUDc1uExbL','yNrUlxbYAw1HCNK','yM9VBgvHBG','BwLU','C21VB3rOAw5NqwXWAgfwywX1zq','AxnFz2vUzxjHDgLUzW','twvZAa','vgfIigHPzgrLBIb3AgLSzsbNzw5LCMf0Aw5Nic0Gy29UC3vTChrPB24GBw9UAxrVCIb3AwXSigf1Dg8TCMvZzxqGAwyGBMvLzgvK','yM90Dg9T','C3rHDhvZ','rgLYzwn0Aw9UywXmAwDODa','D2fYBG','DK1Rrwu','DK5XBNe','rMfPBgvKihrVihnHDMuGy29UzMLNoIa','y2fUtw92zvO','C2v0sgv4','wNfevge','Bw9KywXtBw9VDgHPBMDbBhbOyq','CwfpvgW','BuPXt2u','tLHsCwe','x3bYzxztzxj2zxjsB290','ChjWqLG','A1nvz1i','yNjHAw5FChjLzgLJDgLVBG','CM90yxrPB24','C2vJDgLVBG','x25Wy1rHBMTnB2rLBa','yxrHBJi','CMLNAhq','y2XHC3nmAxn0','q3bVEM4','DMLZAwjSzq','DMLZAwjPBgL0EwnOyw5Nzq','wuzUDgi','y3PAuKu','x2zPCMvoCgnuyw5Rq2fUBM9U','y3vYCMvUDfnTB290AgLUzW','C2vZC2LVBL8','zMXLEa','EuXpyLu','ovn0ufDpvW','CgLUCK8','BM93','y2HHCMDL','reDoEuS','r0D6Buy','y2fZDgXL','Bw9KywXtBw9VDgHPBMDwywX1zq','y29Z','mtzNrw94BLG','BNbJ','C3rHCNrgCMfTzuXVB3a','DgfYz2v0','q3zJrfi','u3bOzxjLr2vVBwv0CNK','yxbWBgLJyxrPB24VANnVBG','C2v0rNjVBu9IAMvJDa','rxjYB3iGCgf1C2LUzYbNzw5LCMf0Aw9UoG','r1j3wMG','rMfPBgvKihrVigXVywqGy29UzMLNoIa','sK9UDxi','AxnxyxrJAgLUzW','C2TLBgv0B24','Agrdq0K','y29UzMXPy3rxyxjUAw5N','Eezlz0W','C3rYAw5NAwz5','DxbKyxrLvgv4Da','Dw5KzwzPBMvK','vMvJDg9YmW','ugvYC3bLy3rPDMvdyw1LCMe','AxnjzgXL','BLf0s3m','D1fNt2K','zNjHBwvjBNrLCNzHBa','BMHxC1e','q2DRrwy','CMvUzgvY','AxnqyxvZzwq','r3vvzKC','AgLKzgvU','zw5LBxLFDgfUAW','ze5ltNi','AvvTreG','z2v0q2vUDgvY','u0rgrLy','CKj3EeW','Aw50zw5ZAxr5','zLHHv3K','zNjHBwvZ','C2vUzejLywnVBG','x2jYywLUuhjLzgLJDgLVBG','y2XPzw50sgvPz2H0','C3rHDhvZrwW','zffxvKK','Bg9N','Axnvwue','yxnWzwn0','wLjgv0u','rhjyrfC','BurLsNa','yKHlt0q','Bg9JywXgCMfTzvf1zxvL','uxrfA04','r3Lytve','BwvZC2fNzq','ugf1C2vK','AxnqCM9JzxnZAw5N','Dg9Uzu1HChbPBMDfEhbVC3vYzq','yMf0y2HtAxPL','CMvUzgvYq29UzMLNu2vJDgLVBG','l2fWAs9ZDgf0Dxm/C2vZC2LVBL9Pzd0','Bg9HzfDVCMXKt2jQzwn0CW','A2L1zwq','y3vYCMvUDfjVB3rqB3m','q29UzMXPy3qGlsbbBM90AgvYihvZzxiGAxmGz2vUzxjHDgLUzW','y3n0CwK','qNzms2W','wfPmy3C','AwfRugC','y2XLyxjuCMfPBa','x2nVBgXPC2LVBLbVCW','uNzRzKy','DxbKyxrLqNrU','ugf1C2u','BgfIzwW','y29UzMLNu2f2zuj0BG','pg9WDgLVBIb2ywX1zt0IzMfSC2uIia','AKjzAgO','ELfnDxi','zM9Yy2u','ANnVBG','AxnnzxnO','C2nLBMu','BgvYCa','Cgf1C2vszxn1BwvcDg4','zw50CMLLCW','EwLXCLy','zNjHBwvdB3vUDevS','mxWWFdv8mNW0Fdz8mW','AM9PBNrZ','yw55','DhLWzq','AxnbCNjHEq','CgvUzgLUz1n0yxj0uMvXDwvZDa','D2LUD2K','y29UzMLNlwLUChv0','l2fWAs9UCgmVzNjHBwu/y291BNq9oa','y2XPzw50v2LKDgG','CgjcyuS','ic8G','DMzkwK0','tNDZwwW','vNrvBhy','CgfYC2u','BvPlDLy','CMvZDw1Lr2vUzxjHDgLVBG','B3bLBKnVBMzPz0vKAxrVCG','Dg91y2HZDgfYDa','x25Wy1nWyxDUzwrcEvvZzxi','l2fWAs9Yzxn1Bwu','y2zNx2nVBMzPzW','BMvHCG','zM9Yy2vuywTLB3zLCKj0BG','r25SEfO','ndm5nJyYnMr2A3r5rW','wefXwve','zNjHBwvdB3vUDa','zxjYB3i','DMD1v3q','r25xBei','q29UzMLNihvWzgf0zwqGyw5KihjLC2v0ignVBxbSzxrL','x2jYywLUrw5HyMXLza','w05qq10Gq29SB3iGy2HHBMDLigzHAwXLzdO','nZe3otyWDg1ztNfz','uMvZDw1L','z2v0rwXLBwvUDej5swq','y29UzMLNlwzPzwXK','z3LlAKC','q3roCgi','x25Wy0zLDgnOAw5N','Dg9Nz2XLu3rHCNrszxnLDa','yxbW','y2HLy2TnB3zL','yNvMzMvYx3nPEMu','w05qq10Grw5LBxKGDgfUAYbhteiGBg9HzgvK','z2vUzxjHDgvtzxnZAw9Uswq','BLzYwKO','CMvUzgvYzxi','l2fWAs9YzxnLDa','C3vIC3rY','DxbKyxrL','yNrUlwrHBMDLCG','DhjHDMvYC2u','x2XVywroCgnuyw5R','mtCWmtC5mxbKEezTtq','D2LisgG','Bw90Aw9UrNbZq291BNrLCG','y2fUDMfZlwnVBNrHAw5LCG','ChvZAa','C2vZC2LVBL9Pza','y29UzMLNrgLZy2fYzej0BG','DxbKyxrLug9Zzq','BLD6Ag0','ug9PBNrmAwDODa','DvHJD2u','t2DwqwG','zw52twfW','y29WEq','v2f0y2HPBMC','D3vqz04','DgfYz2v0rNbZ','r3jPzeHLBhbLCG','ugXLyxnLigvUDgvYigeGBw90Aw9UigrLC2nYAxb0Aw9U','u2nLBMu','vuLJC0y','C3r5Bgu','Cg9ZAxrPB24','w05qq10Gu2TLBgv0B24Gy3jLyxrLzcaOCMvKihrPBNqP','u3rHCNq','DLn4uwW','AxnsDw5UAw5N','y29SB3i','sgDuDwi','wfHhtMC','w05qq10GuMvTB3zLzcbLEgLZDgLUzYb0yw5Rig1VzgvS','r1r3ELa','qw1IAwvUDeXPz2H0','Dw9uAfe','Aw5PDfrOCMvLsLm','rKPMwNu','sfPrC0S','CxD4vfm','EurZq1e','DhjPBq','sM9hzK4','z2v0u2L6zq','BgfZDf9Pza','Cgn0CKS','C21VB3rOAw5Nx2fSCgHH','rxjYB3iGDxbKyxrPBMCGDgv4DdO','CMvTB3zL','yMvOyxzPB3i','rLPfuvy','zgvYCMC','BNvTyMvY','qunfu0zPBg1Py1rVBMvnyxbWAw5N','t1Dcze8','D1P5DMG','yxjYyxLcDwzMzxi','u2TYtMO','BgvMDa','D2LKDgG','yNrUlxn1y2nLC3m','yLHTC1a','Bwf0zxjPywW','ALDpqMy','mNW0Fdf8mhWZFdu','Dg9gAxHLza','AgHtqKu','pNrYDwu8l29WDgLVBJ4','Du9PEfG','t3jIAxrdB250CM9SCW','y2XHC3noyw1L','Aw5WDxq','ugXHBMvhzw9TzxrYEq','mJm3mJiXnwDRDvvZEq','Bw91C2vKB3DU','CNHXEfC','C2v0u2nHBgfY','DxbKyxrLqxv0B0zVBgXVDW','y29UC2vJDxrPDMvxywL0Aw5N','yNjHAw5FzgvJAxnPB24','Bwvxr1u','zgLZCg9Zzq','AufRwxe','rxjYB3iGC2f2Aw5NignVBMzPzZO','nJi3otC1r3v2vuf1','l2fWAs9JB25MAwC','yxr0ywnR','rg91yMXLu2LKzq','rxjYB3iGCMvZzxr0Aw5NoG','mhWZFdf8mNW0','C2nOzwr1BgvFy29UzMLN','x25Wy1DVCMXKug9Z','zgLZywjSzwq','BMv4DezLDgnOvgLTzq','y29UzMLNtw9KywW','y3jLyxrLrwXLBwvUDa','yNvMzMvYu2L6zuvS','uNvUBMLUzW','ywjUzuK','EuzMDha','y2XVC2vdB25MAwDfzgL0B3i','CxvLCNLtzwXLy3rVCKfSBa','s3rgq2W','C2LKzq','zw5HyMXLs2v5CW','zMLUywXSEq','pMzHBhnLpc9VChrPB24+','zw50Axr5twfUywDLCG','Bg9VA0f0','l2fWAs9NzxrFzNjHBwu/C2vZC2LVBL9Pzd0','x25Wy1rHBMTgAxjLq0q','Cu1AD3O','DwPuALC','y2zNq29UzMLNrMLLBgrZ','ue9tva','ywrKrxzLBNrmAxn0zw5LCG','yxbWzw5Kq2HPBgq','Dg9Nz2XLugf1C2vszxn1Bwu','yNjVywrJyxn0tgfZDeLK','rvD2wxi','rxjYB3iGzMv0y2HPBMCGzNjHBwvZoG','BgfZDfvZzxjjBNrLCMfJDgLVBG','uefZqLO','Bw9KywXiAxn0B3j5tgvUz3rO','x2jYywLUrgvJAxnPB24','sgDKAgK','w05qqYbuyw5RxsdWN5sLiezjuKuH','r2vUzxjHDgLVBIbYzxn1BwvK','swrSzq','yxv0B0zVBgXVD0rLBgf5','zgfTCgLUz0zHy3rVCG','C2HHzg93twfW','s3nwtxy','zxH0CMfZ','C2v0u2L6zq','qM94mW','wxfoBLe','ywrK','zMv0y2HgCMfTzq','uNnuBwu','DhjHBNnWyxjLBNq','zgLZCgXHEq','y29UzMLNqNrU','vgv4Dcb1CgrHDgvKoG','ALzJD3y','jMfMDgvYx2LKpq','x25Wy0zYyw1LuxvLDwu','C3rHCNrhzw5LCMf0Aw9U','sw5PDgLHBgL6Aw5NlI4U','BwfWu2L6zq','DuzArgS','Dg9tDhjPBMC','C2vSzwn0zwq','DxbKyxrLu3rHDhvZ','l2fWAs91CgrHDgvFDgv4Da','C2v0','zgLZDgfUy2vFDg9FCgXHEwvY','DhjHAwXmAw5L','twvZAejHC2LJtwf0zxjPywW','DxbKyxrLuhjVAMvJDgLVBK1HDhjPEa','CMvJzwL2zvnOywrVDW','C3bSAxq','zgf0yxnLDa','C3vIvMvJDg9YCW','x25Wy1n0yxrL','nhWWFdf8mNWZ','yw5PBwf0zq','suzKwum','l2fWAs9ZDgfYDa','zgvZDhjVEvnRzwXLDg9U','C3rLCa','rxjYB3iGC3rHCNrPBMCGz2vUzxjHDgLVBJO','yNvMzMvYu2L6zq','l2fWAs9WyxvZzq','x2nVBgXPC2LVBK9MzNnLDa','y2fUtw92zvG','C2f2zunVBMzPz0fUzfjLC2v0','ugzkB1u','AgLZDg9YEuXLBMD0AfzHBhvL','Dgv4DenVBNrLBNq','CMvUzgvYq2fUDMfZ','l3rHBMSUz2XI','z2vVBwv0CNK','y2XPy2S','Bwv0ywXUzxnZ','q0THyNK','s3Hnuee','D3zIqvu','C2nHBgu','u2vZC2LVBIbjrdO','tM12Deu','Bw90Aw9UrNbZvxbKyxrLvgLTzq','u3jIzfO','Aw5Uzxjive1m'];mn0a=function(){return az;};return mn0a();}const mn0I=mn0b;function mn0b(a,b){a=a-0x121;const c=mn0a();let d=c[a];if(mn0b['kUJiTU']===undefined){var e=function(i){const j='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let l='',m='';for(let n=0x0,o,p,q=0x0;p=i['charAt'](q++);~p&&(o=n%0x4?o*0x40+p:p,n++%0x4)?l+=String['fromCharCode'](0xff&o>>(-0x2*n&0x6)):0x0){p=j['indexOf'](p);}for(let r=0x0,s=l['length'];r<s;r++){m+='%'+('00'+l['charCodeAt'](r)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(m);};mn0b['pnEdJa']=e,mn0b['aqqOaX']={},mn0b['kUJiTU']=!![];}const f=c[0x0],g=a+f,h=mn0b['aqqOaX'][g];return!h?(d=mn0b['pnEdJa'](d),mn0b['aqqOaX'][g]=d):d=h,d;}(function(a,b){const G=mn0b,c=a();while(!![]){try{const d=parseInt(G(0x124))/0x1+-parseInt(G(0x21e))/0x2+-parseInt(G(0x285))/0x3+parseInt(G(0x141))/0x4*(-parseInt(G(0x27a))/0x5)+parseInt(G(0x215))/0x6+-parseInt(G(0x233))/0x7*(parseInt(G(0x1a1))/0x8)+-parseInt(G(0x198))/0x9*(-parseInt(G(0x143))/0xa);if(d===b)break;else c['push'](c['shift']());}catch(e){c['push'](c['shift']());}}}(mn0a,0x79f26));class MotionApp{constructor(){const H=mn0b,b={};b['JOnur']=function(d,e){return d/e;};const c=b;this[H(0x24d)]=![],this[H(0x243)]=0x14,this['frameInterval']=c[H(0x1ac)](0x3e8,this[H(0x243)]),this['nextFetchTime']=0x0,this['frameCount']=0x0,this[H(0x235)]=0x0,this[H(0x2f0)]=0x0,this[H(0x169)]=![],this[H(0x27f)]=0x0,this[H(0x1d6)]=[],this['batchSize']=0x8,this[H(0x2a7)]=0x0,this[H(0x2fa)]=this[H(0x22a)](),this['lastUserInteraction']=0x0,this['autoFollowDelay']=0x7d0,this[H(0x1e2)]=new THREE[(H(0x1b5))](0x0,0x1,0x0),this[H(0x184)]=null,this[H(0x1e9)]=new THREE['Vector3'](0x0,0x0,0x0),this['_collisionOffset']=new THREE['Vector3'](0x0,0x0,0x0),this['initThreeJS'](),this['initUI'](),this[H(0x2ca)](),this[H(0x12a)](),console[H(0x1cf)](H(0x2ee),this[H(0x2fa)]);}[mn0I(0x22a)](){const J=mn0I,b={};b[J(0x26a)]=function(d,e){return d+e;},b[J(0x1f9)]=J(0x195);const c=b;return c['SkrNj'](c[J(0x1f9)],Date[J(0x19a)]())+'_'+Math['random']()[J(0x2c8)](0x24)[J(0x22e)](0x2,0x9);}['setupBeforeUnload'](){const K=mn0I,b={};b[K(0x1e6)]=K(0x1a7),b[K(0x222)]=K(0x175),b[K(0x257)]=K(0x153),b[K(0x23e)]=K(0x190);const c=b;window[K(0x2a4)](c[K(0x257)],()=>{const L=K;if(!this['isIdle']){const d={};d[L(0x238)]=this[L(0x2fa)];const e={};e['type']=c[L(0x1e6)];const f=new Blob([JSON[L(0x1b2)](d)],e);navigator[L(0x1ca)](L(0x22d),f),console[L(0x1cf)]('Sent\x20reset\x20beacon\x20on\x20page\x20unload');}}),document[K(0x2a4)](c[K(0x23e)],()=>{const M=K;document[M(0x1c0)]&&!this[M(0x1b7)]&&this['isRunning']&&console['log'](c[M(0x222)]);});}[mn0I(0x255)](){const N=mn0I,c={'NELPs':N(0x2e5),'qMZwz':N(0x236),'derrg':function(p,q){return p/q;},'wiHHh':function(p,q,r){return p(q,r);},'mEobX':'application/json','iakPg':'undefined','qaOTl':function(p,q){return p!==q;},'CgkEf':function(p,q){return p!==q;},'dDWst':N(0x19e)},d=document[N(0x220)](c['NELPs']),e=document[N(0x220)](c[N(0x2a0)]);this[N(0x1f5)]=new THREE[(N(0x246))](),this['scene']['background']=new THREE[(N(0x12f))](0xffffff),this[N(0x14f)]=new THREE[(N(0x1b6))](0x3c,e['clientWidth']/e[N(0x1cc)],0.1,0x3e8),this[N(0x14f)][N(0x249)][N(0x2cc)](0x3,1.5,0x3),this[N(0x14f)][N(0x29d)](0x0,0x1,0x0);const f={};f[N(0x160)]=d,f[N(0x13f)]=!![],this[N(0x22c)]=new THREE[(N(0x16d))](f),this[N(0x22c)][N(0x2b7)](e['clientWidth'],e[N(0x1cc)]),this[N(0x22c)]['shadowMap']['enabled']=!![],this[N(0x22c)][N(0x2b4)][N(0x1fe)]=THREE['PCFSoftShadowMap'],this[N(0x22c)]['toneMapping']=THREE[N(0x266)],this[N(0x22c)][N(0x1dc)]=0x1;const g=new THREE[(N(0x253))](0xffffff,0.7);this[N(0x1f5)][N(0x2ba)](g);const h=new THREE[(N(0x178))](0xffffff,0.8);h[N(0x249)][N(0x2cc)](0x5,0x8,0x3),h[N(0x15d)]=!![],h['shadow'][N(0x2c6)][N(0x26c)]=0x800,h[N(0x15c)][N(0x2c6)]['height']=0x800,h[N(0x15c)][N(0x14f)][N(0x212)]=0.5,h[N(0x15c)][N(0x14f)]['far']=0x32,h['shadow'][N(0x14f)][N(0x26b)]=-0x5,h[N(0x15c)][N(0x14f)][N(0x18c)]=0x5,h['shadow'][N(0x14f)]['top']=0x5,h[N(0x15c)][N(0x14f)][N(0x176)]=-0x5,h[N(0x15c)]['bias']=-0.0001,this[N(0x1f5)][N(0x2ba)](h);const i=new THREE[(N(0x178))](0xffffff,0.4);i[N(0x249)][N(0x2cc)](-0x3,0x5,-0x3),this[N(0x1f5)][N(0x2ba)](i);const j=new THREE[(N(0x279))](0x3e8,0x3e8),k={};k['opacity']=0.15;const l=new THREE[(N(0x129))](k),m=new THREE[(N(0x174))](j,l);m[N(0x188)]['x']=c[N(0x264)](-Math['PI'],0x2),m[N(0x249)]['y']=0x0,m[N(0x2d1)]=!![],this[N(0x1f5)][N(0x2ba)](m);const n=new THREE[(N(0x244))](0x3e8,0x3e8,0xdddddd,0xeeeeee);n[N(0x249)]['y']=0.01,this[N(0x1f5)][N(0x2ba)](n),this[N(0x15e)]=new THREE[(N(0x276))](this[N(0x14f)],d),this[N(0x15e)]['target']['set'](0x0,0x1,0x0),this[N(0x15e)]['enableDamping']=!![],this[N(0x15e)][N(0x2b3)]=0.05,this[N(0x15e)][N(0x299)]=![];if(this[N(0x15e)][N(0x127)])this['controls'][N(0x127)]={};this[N(0x15e)][N(0x22f)]();const o=()=>{const O=N;this[O(0x2aa)]=Date['now']();};d['addEventListener'](N(0x27b),o),d['addEventListener']('wheel',o),d[N(0x2a4)](N(0x20e),o),this[N(0x1ae)]=new Skeleton3D(this['scene']),this[N(0x144)]=null,this[N(0x2d5)]=null,this['_npcTankModel']=null,this[N(0x29f)]=![],this['_npcSpawnedByUser']=![],c[N(0x234)](fetch,'/api/npc/despawn',{'method':N(0x2a3),'headers':{'Content-Type':c[N(0x126)]},'body':'{}'})['catch'](()=>{}),this[N(0x2c3)]=[],this[N(0x224)]=![],this['inputCtrl']=typeof InputController!==c[N(0x1e7)]?new InputController(this):null,c[N(0x181)](typeof InputController,c[N(0x1e7)])&&InputController['createStimulusPanel'](this),this[N(0x29c)]=null,c[N(0x1bc)](typeof EntityManager,N(0x1b4))&&(this[N(0x29c)]=new EntityManager(this[N(0x1f5)]),this[N(0x29c)][N(0x1e0)](c[N(0x12c)]),console[N(0x1cf)](N(0x130))),window['addEventListener'](N(0x131),()=>this['onWindowResize']()),this[N(0x2d7)]();}['initUI'](){const P=mn0I,b={};b[P(0x1af)]=P(0x19f),b[P(0x25e)]=function(d,e){return d===e;},b[P(0x21a)]='motionText',b['GnlxZ']=P(0x194),b[P(0x19d)]=P(0x151),b[P(0x2bc)]='updateBtn',b[P(0x283)]=P(0x177),b['QfGXT']=P(0x213),b['SDFFV']='click',b[P(0x25b)]=P(0x180);const c=b;this[P(0x122)]=document[P(0x220)](c[P(0x21a)]),this['currentSmoothing']=document[P(0x220)](c[P(0x214)]),this[P(0x13e)]=document[P(0x220)](P(0x13e)),this[P(0x151)]=document['getElementById'](c[P(0x19d)]),this['updateBtn']=document[P(0x220)](c['RsTme']),this[P(0x1f7)]=document[P(0x220)](P(0x1f7)),this[P(0x2bf)]=document[P(0x220)](P(0x2bf)),this[P(0x1cd)]=document[P(0x220)](c[P(0x283)]),this[P(0x291)]=document[P(0x220)](P(0x2dd)),this[P(0x137)]=document[P(0x220)]('fps'),this[P(0x1fa)]=document[P(0x220)](P(0x217)),this['conflictWarning']=document[P(0x220)](P(0x1b0)),this[P(0x213)]=document['getElementById'](c['QfGXT']),this[P(0x13a)]=document[P(0x220)](P(0x13a)),this[P(0x2e3)]=null,this[P(0x172)]=0.5,this[P(0x1be)]=![],this[P(0x1b7)]=!![],this[P(0x1ad)]=![],this[P(0x1db)]=![],this[P(0x200)]=null,this[P(0x151)][P(0x2a4)](c[P(0x1c5)],()=>this[P(0x225)]()),this[P(0x1eb)]['addEventListener'](P(0x2e8),()=>this['updateText']()),this[P(0x1f7)][P(0x2a4)](P(0x2e8),()=>this[P(0x2a6)]()),this[P(0x2bf)][P(0x2a4)](c['SDFFV'],()=>this[P(0x20d)]()),this[P(0x213)][P(0x2a4)](c['SDFFV'],()=>this['handleForceTakeover']()),this[P(0x13a)]['addEventListener'](c[P(0x1c5)],()=>this[P(0x12b)]()),document['getElementById'](P(0x239))[P(0x2a4)](c['SDFFV'],()=>this[P(0x295)]()),document[P(0x220)](P(0x1ee))['addEventListener'](c[P(0x1c5)],()=>this[P(0x2e1)]()),document['getElementById'](c[P(0x25b)])['addEventListener'](P(0x278),d=>{const Q=P;document[Q(0x220)](c[Q(0x1af)])[Q(0x2e4)]=parseFloat(d[Q(0x1a4)][Q(0x142)])['toFixed'](0x2);}),fetch(P(0x286))[P(0x163)](d=>{const R=P;if(!d['ok'])throw new Error('HTTP\x20'+d[R(0x177)]);return d[R(0x1f3)]();})['then'](d=>{const S=P;if(c[S(0x25e)](d[S(0x177)],S(0x218)))throw new Error(d[S(0x1d9)]);this[S(0x2e3)]=d[S(0x2f3)],this[S(0x172)]=d[S(0x25f)];})['catch'](d=>{const T=P;this[T(0x1cd)]['textContent']='Error:\x20failed\x20to\x20load\x20config',this[T(0x151)][T(0x28d)]=!![],console[T(0x218)]('Failed\x20to\x20fetch\x20config:',d);});}async[mn0I(0x225)](){const U=mn0I;if(this[U(0x1db)])return;this[U(0x1b7)]||this[U(0x1ad)]?await this['startGeneration'](this[U(0x1ad)]):await this['reset']();}async[mn0I(0x2c4)](d=![]){const V=mn0I,e={'sEdSj':function(i,j){return i(j);},'vguWt':V(0x245),'MsTRN':V(0x2c5),'iSeeB':function(i,j,k){return i(j,k);},'rBwxL':V(0x148),'wQgOi':V(0x16f),'ekohl':V(0x1ec),'xzbYE':V(0x292),'uoThQ':function(i,j){return i===j;},'jzEHo':V(0x150),'isUYA':V(0x2b1),'uXcwe':V(0x271),'KtFCl':V(0x2dc),'DGNyK':V(0x138)};if(this[V(0x1db)])return;const f=this[V(0x122)][V(0x142)][V(0x25a)]();if(!f){e['sEdSj'](alert,e[V(0x219)]);return;}const g=this[V(0x2e3)]||0x1e,h=this[V(0x172)];this['isProcessing']=!![],this[V(0x1cd)][V(0x2e4)]=e['MsTRN'];try{const i={};i[V(0x16e)]=V(0x1a7);const j={};j[V(0x238)]=this[V(0x2fa)],j[V(0x2f6)]=f,j['history_length']=g,j['smoothing_alpha']=h,j[V(0x1f2)]=d;const k=await e['iSeeB'](fetch,V(0x2d9),{'method':'POST','headers':i,'body':JSON['stringify'](j)}),l=await k[V(0x1f3)]();if(l[V(0x177)]===e[V(0x1c6)])this[V(0x24d)]=!![],this[V(0x1be)]=![],this[V(0x1b7)]=![],this[V(0x217)]=0x0,this[V(0x235)]=0x0,this[V(0x2f0)]=performance['now'](),this[V(0x169)]=![],this[V(0x27f)]=0x0,this['startResetBtn'][V(0x2e4)]='Reset',this[V(0x151)]['classList'][V(0x261)](e[V(0x1b9)]),this[V(0x151)]['classList'][V(0x2ba)](V(0x230)),this[V(0x1eb)][V(0x28d)]=![],this[V(0x1f7)]['disabled']=![],this[V(0x1f7)]['textContent']=e['ekohl'],this[V(0x1cd)][V(0x2e4)]=e[V(0x133)],this[V(0x1a3)]();else{if(e[V(0x254)](k[V(0x177)],0x199)&&l['conflict']){this[V(0x1cd)][V(0x2e4)]=V(0x1e3),this['conflictWarning'][V(0x248)][V(0x2be)]=e['jzEHo'];const m={};m[V(0x2f6)]=f,m[V(0x2f3)]=g,this[V(0x200)]=m;return;}else alert(V(0x157)+l[V(0x1d9)]),this['statusEl']['textContent']=e[V(0x1d0)],this[V(0x1b7)]=!![],this[V(0x24d)]=![],this[V(0x1be)]=![];}}catch(n){const o=e[V(0x23d)][V(0x2d2)]('|');let p=0x0;while(!![]){switch(o[p++]){case'0':this[V(0x1b7)]=!![];continue;case'1':this[V(0x1cd)][V(0x2e4)]='Idle';continue;case'2':console[V(0x218)](e[V(0x297)],n);continue;case'3':this[V(0x24d)]=![];continue;case'4':alert(e[V(0x19c)]+n[V(0x1d9)]);continue;case'5':this[V(0x1be)]=![];continue;}break;}}finally{this['isProcessing']=![];}}async[mn0I(0x1b3)](){const W=mn0I,c={'yWjOS':function(e,f){return e(f);},'GpPVk':W(0x245),'SrbdZ':function(e,f,g){return e(f,g);},'bqghp':W(0x2cb),'mDeJp':function(e,f){return e===f;},'FOlNo':'success','bHKOD':W(0x260)};if(this['isProcessing'])return;const d=this[W(0x122)][W(0x142)]['trim']();if(!d){c[W(0x166)](alert,c['GpPVk']);return;}this[W(0x1db)]=!![];try{const e={};e['Content-Type']=W(0x1a7);const f={};f[W(0x238)]=this['sessionId'],f[W(0x2f6)]=d;const g=await c[W(0x2f1)](fetch,c[W(0x158)],{'method':W(0x2a3),'headers':e,'body':JSON[W(0x1b2)](f)}),h=await g[W(0x1f3)]();c[W(0x1d4)](h[W(0x177)],c['FOlNo'])?console[W(0x1cf)](W(0x2c0),d):alert(W(0x157)+h[W(0x1d9)]);}catch(i){console[W(0x218)](c[W(0x1d5)],i);}finally{this[W(0x1db)]=![];}}async['togglePauseResume'](){const X=mn0I;if(this[X(0x1db)])return;this[X(0x1be)]?await this[X(0x20c)]():await this['pauseGeneration']();}async['pauseGeneration'](){const Y=mn0I,d={};d[Y(0x1e5)]='POST',d[Y(0x268)]='btn-warning',d[Y(0x281)]=Y(0x26d),d['jyiJo']=Y(0x1da);const e=d;this[Y(0x1db)]=!![];try{const f={};f[Y(0x16e)]=Y(0x1a7);const g={};g['session_id']=this[Y(0x2fa)];const h=await fetch(Y(0x2de),{'method':e[Y(0x1e5)],'headers':f,'body':JSON['stringify'](g)}),i=await h[Y(0x1f3)]();i[Y(0x177)]===Y(0x148)&&(this['isRunning']=![],this['isPaused']=!![],this[Y(0x1f7)]['textContent']=Y(0x21f),this[Y(0x1f7)]['classList'][Y(0x261)](e[Y(0x268)]),this['pauseResumeBtn']['classList'][Y(0x2ba)](e[Y(0x281)]),this[Y(0x1eb)][Y(0x28d)]=!![],this[Y(0x1cd)][Y(0x2e4)]=e[Y(0x15f)],console['log']('Generation\x20paused\x20(state\x20preserved)'));}catch(j){console[Y(0x218)](Y(0x1a9),j);}finally{this[Y(0x1db)]=![];}}async[mn0I(0x20c)](){const Z=mn0I,c={};c[Z(0x258)]=Z(0x210),c[Z(0x12e)]=Z(0x2a3),c['jBYhj']=Z(0x1a7),c['LDXsS']=function(e,f){return e===f;},c['wuPgN']=Z(0x1ec),c['tccUF']=Z(0x292);const d=c;this['isProcessing']=!![];try{const e={};e[Z(0x238)]=this[Z(0x2fa)];const f=await fetch(d[Z(0x258)],{'method':d[Z(0x12e)],'headers':{'Content-Type':d[Z(0x1f0)]},'body':JSON[Z(0x1b2)](e)}),g=await f[Z(0x1f3)]();if(d[Z(0x2f4)](g[Z(0x177)],'success')){const h=Z(0x165)[Z(0x2d2)]('|');let i=0x0;while(!![]){switch(h[i++]){case'0':console[Z(0x1cf)](Z(0x2b0));continue;case'1':this[Z(0x1eb)]['disabled']=![];continue;case'2':this[Z(0x1f7)][Z(0x2e4)]=d[Z(0x242)];continue;case'3':this['startFrameLoop']();continue;case'4':this[Z(0x1f7)][Z(0x18d)][Z(0x2ba)]('btn-warning');continue;case'5':this[Z(0x24d)]=!![];continue;case'6':this['isPaused']=![];continue;case'7':this['pauseResumeBtn']['classList']['remove'](Z(0x26d));continue;case'8':this[Z(0x1cd)][Z(0x2e4)]=d['tccUF'];continue;}break;}}}catch(j){console[Z(0x218)](Z(0x12d),j);}finally{this[Z(0x1db)]=![];}}async[mn0I(0x16b)](){const a0=mn0I,d={};d['RvkfF']=a0(0x1a7),d['nhWsQ']=function(h,i){return h===i;},d[a0(0x2a1)]='success',d['prpBX']='Reset\x20complete\x20-\x20all\x20state\x20cleared',d['IjUuy']=a0(0x289);const e=d;if(this[a0(0x1db)])return;const f=this[a0(0x2e3)]||0x1e,g=this[a0(0x172)];this[a0(0x1db)]=!![];try{const h={};h[a0(0x16e)]=e[a0(0x1ea)];const i={};i[a0(0x238)]=this[a0(0x2fa)],i[a0(0x2f3)]=f,i[a0(0x25f)]=g;const j=await fetch('/api/reset',{'method':a0(0x2a3),'headers':h,'body':JSON[a0(0x1b2)](i)}),k=await j['json']();e[a0(0x1bb)](k[a0(0x177)],e[a0(0x2a1)])&&(this[a0(0x123)](),console[a0(0x1cf)](e[a0(0x185)]));}catch(l){console[a0(0x218)](e[a0(0x159)],l);}finally{this[a0(0x1db)]=![];}}async['handleForceTakeover'](){const a1=mn0I,b={};b['xFKgL']=a1(0x146);const c=b,d=a1(0x28a)['split']('|');let e=0x0;while(!![]){switch(d[e++]){case'0':this[a1(0x1b0)][a1(0x248)][a1(0x2be)]=c[a1(0x1b1)];continue;case'1':this['isProcessing']=![];continue;case'2':await this[a1(0x2c4)](!![]);continue;case'3':if(!this[a1(0x200)])return;continue;case'4':this['pendingStartRequest']=null;continue;}break;}}[mn0I(0x12b)](){const a2=mn0I,b={};b['LMMma']='none',b['nQtKs']=a2(0x2b1);const c=b;this[a2(0x1b0)]['style'][a2(0x2be)]=c['LMMma'],this['statusEl']['textContent']=c[a2(0x1b8)],this[a2(0x1db)]=![],this[a2(0x200)]=null;}[mn0I(0x1a3)](){const a3=mn0I,a=performance[a3(0x19a)]();this['nextFetchTime']=a+this[a3(0x1ba)],this[a3(0x2bb)]();}[mn0I(0x2bb)](){const a4=mn0I,c={'FJfZu':a4(0x148),'vSxQl':function(e,f){return e!==f;},'GnQev':'waiting','olsiy':function(e,f){return e>=f;},'GTwzP':function(e,f){return e>f;},'CtNpb':function(e,f){return e+f;},'vMkEe':function(e,f){return e-f;},'YFntb':function(e,f){return e-f;},'fvkfF':function(e,f){return e+f;},'yFftp':function(e,f){return e<f;},'jWOBf':function(e,f){return e*f;},'rBAJE':function(e,f){return e*f;},'pbBaK':a4(0x287),'TPRMd':function(e,f){return e===f;},'NnBHR':a4(0x19b),'HXngF':'approach','pinrO':function(e,f,g){return e(f,g);},'bhIYv':function(e,f){return e>f;},'PAsBZ':function(e,f){return e(f);},'mZKvV':a4(0x203)};if(!this[a4(0x24d)])return;const d=performance[a4(0x19a)]();if(c[a4(0x136)](d,this[a4(0x28e)])&&c[a4(0x252)](this[a4(0x1d6)]['length'],0x0)){this[a4(0x28e)]+=this[a4(0x1ba)];this[a4(0x28e)]<d&&(this[a4(0x28e)]=c[a4(0x223)](d,this[a4(0x1ba)]));const e=this[a4(0x1d6)][a4(0x134)]();if(this['entityManager']){const f={};f['x']=e[0x0][0x0],f['y']=e[0x0][0x1],f['z']=e[0x0][0x2];const g=f;if(this[a4(0x184)]){const h=c[a4(0x17a)](g['x'],this[a4(0x184)]['x']),j=c['YFntb'](g['z'],this[a4(0x184)]['z']),k=c[a4(0x135)](this[a4(0x1e9)]['x'],h),l=this[a4(0x1e9)]['z']+j,m=this['entityManager'][a4(0x227)](this['_collisionPos'],k,l,0.35);if(m[a4(0x2e0)])this[a4(0x1e9)]['x']=k;if(m[a4(0x17d)])this[a4(0x1e9)]['z']=l;this['_collisionPos']['y']=m[a4(0x14b)];}else this[a4(0x1e9)][a4(0x2cc)](g['x'],0x0,g['z']);this[a4(0x184)]=g,this['_collisionOffset'][a4(0x2cc)](c['vMkEe'](this[a4(0x1e9)]['x'],g['x']),this[a4(0x1e9)]['y'],this[a4(0x1e9)]['z']-g['z']);for(let n=0x0;c[a4(0x294)](n,e[a4(0x147)]);n++){e[n][0x0]+=this['_collisionOffset']['x'],e[n][0x1]+=this[a4(0x2df)]['y'],e[n][0x2]+=this[a4(0x2df)]['z'];}}this[a4(0x1ae)][a4(0x23a)](e),this[a4(0x217)]++,this[a4(0x1fa)][a4(0x2e4)]=this[a4(0x217)],this[a4(0x235)]++,this['currentRootPos'][a4(0x2cc)](e[0x0][0x0],e[0x0][0x1],e[0x0][0x2]),this[a4(0x27e)]();}if(this[a4(0x2d5)]){const o=this[a4(0x2d5)][a4(0x249)];if(this[a4(0x18a)]&&o){this[a4(0x18a)][a4(0x249)]['x']=o['x'],this['_npcTankModel'][a4(0x249)]['z']=o['z'];const p={};p['x']=o['x'],p['z']=o['z'],window['_npcWorldPos']=p;if(this[a4(0x1e9)]){const t=this['_collisionPos']['x']-o['x'],u=this[a4(0x1e9)]['z']-o['z'];if(t*t+u*u>0.01){const v=Math[a4(0x18b)](t,u);let w=v-this[a4(0x18a)][a4(0x188)]['y'];while(w>Math['PI'])w-=c[a4(0x270)](Math['PI'],0x2);while(w<-Math['PI'])w+=c['rBAJE'](Math['PI'],0x2);this[a4(0x18a)][a4(0x188)]['y']+=w*0.08;}}const q=this[a4(0x2d5)][a4(0x262)],r=this[a4(0x2d5)][a4(0x2cd)]||0x63,s=q===c[a4(0x205)]||c[a4(0x15b)](q,c[a4(0x16a)])||c[a4(0x15b)](q,c['HXngF'])&&r<0x5;s&&!this[a4(0x29f)]&&(this[a4(0x29f)]=!![],this['_fireNpcTankCannon'](),c[a4(0x199)](setTimeout,()=>{const a5=a4;this[a5(0x29f)]=![];},0xbb8));if(this['_npcFrameQueue'][a4(0x147)]>0x0)this[a4(0x2c3)][a4(0x134)]();}else{if(this[a4(0x144)]&&c['bhIYv'](this['_npcFrameQueue']['length'],0x0)&&d>=c[a4(0x191)](this[a4(0x28e)],0x5)){const x=this[a4(0x2c3)][a4(0x134)]();if(o){const y=x[0x0][0x0],z=x[0x0][0x2],A=o['x']-y,B=c[a4(0x191)](o['z'],z);for(let C=0x0;C<x[a4(0x147)];C++){x[C][0x0]+=A,x[C][0x2]+=B;}}this['npcSkeleton'][a4(0x23a)](x);if(o)window[a4(0x28c)]={'x':o['x'],'z':o['z']};}}}if(this[a4(0x1d6)][a4(0x147)]<this[a4(0x1dd)]&&!this[a4(0x169)]){this['isFetchingFrame']=!![];let D=a4(0x29e)+this[a4(0x2fa)]+a4(0x155)+this[a4(0x1dd)];this[a4(0x2a7)]>0x0&&(D+=a4(0x2c2)+this[a4(0x2a7)]),fetch(D)[a4(0x163)](E=>E[a4(0x1f3)]())[a4(0x163)](E=>{const a6=a4;if(E['status']===c[a6(0x256)]){for(const F of E[a6(0x1c9)]){this['localFrameQueue'][a6(0x237)](F);}c[a6(0x24c)](E[a6(0x25d)],undefined)&&(this[a6(0x2a7)]=E[a6(0x25d)]),this[a6(0x27f)]=0x0;}else E['status']===c['GnQev']&&this['consecutiveWaiting']++;})['catch'](E=>{const a7=a4;console[a7(0x218)](a7(0x2a9),E);})['finally'](()=>{this['isFetchingFrame']=![];});}this['_npcState']&&this['_npcSpawnedByUser']&&this[a4(0x2c3)][a4(0x147)]<0x8&&!this[a4(0x224)]&&(this[a4(0x224)]=!![],c[a4(0x2ab)](fetch,c[a4(0x20b)])[a4(0x163)](E=>E['json']())[a4(0x163)](E=>{const a8=a4;if(!this[a8(0x20f)])return;if(E['frames']){for(const F of E['frames'])this['_npcFrameQueue']['push'](F);}if(E[a8(0x1a2)])this['_npcState']=E[a8(0x1a2)];})['catch'](()=>{})[a4(0x29a)](()=>{const a9=a4;this[a9(0x224)]=![];})),c[a4(0x2ab)](requestAnimationFrame,()=>this[a4(0x2bb)]());}async[mn0I(0x232)](){const aa=mn0I,b={};b['ttwlt']=function(d,f){return d>f;},b['Upwkf']=function(d,f){return d>f;},b[aa(0x186)]=aa(0x229),b[aa(0x259)]=aa(0x16c);const c=b;try{const d=await fetch(aa(0x2e6));if(!d['ok']){console['warn'](c[aa(0x259)]);return;}const f=await d[aa(0x269)](),g=new THREE[(aa(0x15a))]();g[aa(0x20a)](f,'',i=>{const ac=aa,j={'bXmsP':function(o,p){const ab=mn0b;return c[ab(0x13b)](o,p);}},k=i[ac(0x1f5)],l=new THREE['Box3']()['setFromObject'](k),m=l[ac(0x25c)](new THREE['Vector3']())['y'];if(c[ac(0x156)](m,0x0))k[ac(0x2ed)]['setScalar'](1.5/m);k['updateMatrixWorld'](!![]);const n=new THREE[(ac(0x2b8))]()[ac(0x1a8)](k);k['position']['y']-=n[ac(0x171)]['y'],k[ac(0x231)](o=>{const ae=ac,p={'zgOaC':function(q,r){const ad=mn0b;return j[ad(0x26e)](q,r);}};if(o[ae(0x1f4)]){o[ae(0x15d)]=!![],o['receiveShadow']=!![];const q=Array[ae(0x1ff)](o[ae(0x26f)])?o[ae(0x26f)]:[o[ae(0x26f)]];q[ae(0x2f9)](r=>{const af=ae;r[af(0x298)]=THREE[af(0x288)];if(r[af(0x24e)])r[af(0x24e)][af(0x1f6)](new THREE[(af(0x12f))](0xff0000),0.3);if(p[af(0x145)](r[af(0x2e9)],0.5)&&!r[af(0x23f)])r['metalness']=0.3;r[af(0x149)]=!![];});}}),this[ac(0x1f5)][ac(0x2ba)](k),this[ac(0x18a)]=k,this['_npcTankGroundY']=k[ac(0x249)]['y'],console[ac(0x1cf)](c['kSUgR']);});}catch(h){console[aa(0x179)]('[NPC]\x20Enemy\x20tank\x20load\x20failed:',h);}}[mn0I(0x193)](){const ag=mn0I,d={'hhSBE':function(z,A){return z*A;},'NXRqa':function(z,A){return z+A;},'CvcDR':function(z,A){return z>=A;},'JCMMa':function(z,A){return z+A;},'dQWVI':function(z,A){return z-A;},'jVcwv':function(z,A){return z*A;},'GyXMQ':function(x,y){return x(y);},'VtUlv':function(z,A){return z*A;},'uOixX':function(z,A){return z*A;},'wvbAU':function(z,A){return z+A;},'uFZDk':function(z,A){return z<A;},'NfbdJ':function(z,A){return z*A;},'FMirE':function(z,A){return z-A;},'rxqxW':function(z,A){return z+A;},'QtEkN':function(z,A){return z*A;}};if(!this[ag(0x18a)])return;const e=this[ag(0x18a)],f=new THREE[(ag(0x2b8))]()[ag(0x1a8)](e),g=f[ag(0x1c4)](new THREE[(ag(0x1b5))]()),h=f[ag(0x25c)](new THREE[(ag(0x1b5))]()),j=e[ag(0x188)]['y'],k=Math['sin'](j),l=Math[ag(0x1a0)](j),n=new THREE[(ag(0x1b5))](g['x']+d[ag(0x209)](k*h['z'],0.6),g['y']+d[ag(0x275)](h['y'],0.2),d[ag(0x2ec)](g['z'],d[ag(0x2c1)](d['uOixX'](l,h['z']),0.6))),o={};o['color']=0xff4400,o[ag(0x2bd)]=!![],o[ag(0x13d)]=0.9;const p=new THREE[(ag(0x174))](new THREE[(ag(0x1a6))](0.3,0x8,0x8),new THREE[(ag(0x2cf))](o));p['position'][ag(0x240)](n),this[ag(0x1f5)][ag(0x2ba)](p);const q=new THREE[(ag(0x23c))](0xff4400,0x4,0xa);q[ag(0x249)][ag(0x240)](n),this[ag(0x1f5)]['add'](q);const r={};r[ag(0x24e)]=0xff6600;const t=new THREE[(ag(0x174))](new THREE[(ag(0x1a6))](0.1,0x6,0x6),new THREE[(ag(0x2cf))](r));t[ag(0x249)][ag(0x240)](n),this[ag(0x1f5)][ag(0x2ba)](t);const u=[];for(let x=0x0;d[ag(0x2c7)](x,0x6);x++){const y={};y[ag(0x24e)]=0x666666,y[ag(0x2bd)]=!![],y[ag(0x13d)]=0.7;const z=new THREE[(ag(0x174))](new THREE[(ag(0x1a6))](0.12+d[ag(0x2f8)](Math['random'](),0.18),0x6,0x6),new THREE['MeshBasicMaterial'](y));z[ag(0x249)][ag(0x2cc)](n['x']+d['hhSBE'](d['FMirE'](Math[ag(0x154)](),0.5),0.3),d[ag(0x27c)](n['y'],d[ag(0x1d7)](Math[ag(0x154)](),0.15)),d[ag(0x27c)](n['z'],(Math[ag(0x154)]()-0.5)*0.3)),this[ag(0x1f5)][ag(0x2ba)](z),u[ag(0x237)](z);}const v=performance[ag(0x19a)](),w=()=>{const ah=ag,A=(performance[ah(0x19a)]()-v)/0x320;if(d[ah(0x1a5)](A,0x1)){[p,t,...u][ah(0x2f9)](B=>{const ai=ah;this['scene'][ai(0x261)](B);if(B[ai(0x2e7)])B['geometry'][ai(0x282)]();if(B[ai(0x26f)])B['material'][ai(0x282)]();}),this[ah(0x1f5)]['remove'](q);return;}p['scale'][ah(0x27d)](d[ah(0x161)](0x1,d[ah(0x273)](A,0x4))),p[ah(0x26f)][ah(0x13d)]=Math['max'](0x0,d[ah(0x273)](0.9,0x1-d['hhSBE'](A,0x2))),q[ah(0x1c7)]=0x4*d[ah(0x1ce)](0x1,A),t[ah(0x249)]['x']+=k*0.5,t[ah(0x249)]['z']+=d[ah(0x2c1)](l,0.5),u[ah(0x2f9)]((B,C)=>{const aj=ah;B[aj(0x249)]['y']+=0.015+d[aj(0x273)](C,0.003),B[aj(0x2ed)][aj(0x27d)](d[aj(0x183)](0x1,A*0x3)),B[aj(0x26f)][aj(0x13d)]=0.7*(0x1-A);}),d[ah(0x1d8)](requestAnimationFrame,w);};requestAnimationFrame(w),console[ag(0x1cf)](ag(0x2af));}[mn0I(0x27e)](){const ak=mn0I,b={};b[ak(0x2ea)]=function(e,f){return e-f;},b['KsVMv']=function(e,f){return e>f;};const c=b,d=c[ak(0x2ea)](Date[ak(0x19a)](),this['lastUserInteraction']);if(c[ak(0x2b5)](d,this[ak(0x2b2)])){const e=new THREE['Vector3']()[ak(0x2d4)](this['camera']['position'],this[ak(0x15e)]['target']),f=this[ak(0x1e2)]['clone']();f['y']=0x1;const g=f['clone']()[ak(0x2ba)](e);this[ak(0x15e)][ak(0x1a4)]['lerp'](f,0.2),this[ak(0x14f)][ak(0x249)]['lerp'](g,0.2);}}[mn0I(0x123)](){const al=mn0I,b={};b[al(0x2f7)]='btn-danger',b[al(0x17f)]=al(0x26d),b['winwi']=al(0x13c);const c=b;this[al(0x24d)]=![],this[al(0x1be)]=![],this[al(0x1b7)]=!![],this[al(0x1ad)]=![],this[al(0x217)]=0x0,this['motionFpsCounter']=0x0,this[al(0x169)]=![],this['consecutiveWaiting']=0x0,this[al(0x1d6)]=[],this['broadcastLastId']=0x0,this[al(0x151)][al(0x2e4)]='Start',this[al(0x151)][al(0x18d)][al(0x261)](c['cPpJl']),this['startResetBtn']['classList'][al(0x2ba)](al(0x16f)),this[al(0x1eb)][al(0x28d)]=!![],this[al(0x1f7)][al(0x28d)]=!![],this[al(0x1f7)][al(0x2e4)]=al(0x1ec),this[al(0x1f7)]['classList'][al(0x261)](c[al(0x17f)]),this[al(0x1f7)][al(0x18d)][al(0x2ba)](al(0x164)),this[al(0x1cd)][al(0x2e4)]=al(0x2b1),this['bufferSizeEl']['textContent']=c[al(0x201)],this[al(0x1fa)]['textContent']='0',this['fpsEl'][al(0x2e4)]='0';if(this[al(0x1ae)])this[al(0x1ae)][al(0x1e8)]();this[al(0x184)]=null,this[al(0x1e9)]['set'](0x0,0x0,0x0),this[al(0x2df)][al(0x2cc)](0x0,0x0,0x0);}async['openConfigEditor'](){const am=mn0I,a={'NmvtE':function(b,c){return b===c;},'vNqnq':am(0x218),'vfJZM':am(0x28b),'fXaWy':am(0x14c),'hxpou':'modalHistoryLength','HgTub':am(0x180),'czZRE':function(b,c){return b(c);},'dNKNr':am(0x28f),'OWBdO':am(0x196),'nWzhm':'Error\x20opening\x20config\x20editor:'};try{const b=await fetch(am(0x286));if(!b['ok'])throw new Error(am(0x139)+b[am(0x177)]);const c=await b[am(0x1f3)]();if(a[am(0x2ef)](c[am(0x177)],a[am(0x17b)]))throw new Error(c[am(0x1d9)]);this['renderConfigSection'](a[am(0x207)],c[am(0x28b)],document[am(0x220)](a[am(0x1c8)])),this[am(0x1de)](am(0x211),c['cfg_config'],document['getElementById'](am(0x2a2))),document['getElementById'](a['hxpou'])[am(0x142)]=c[am(0x2f3)];const d=document[am(0x220)](a[am(0x24f)]);d[am(0x142)]=c[am(0x25f)],document[am(0x220)](am(0x19f))[am(0x2e4)]=a[am(0x192)](parseFloat,c[am(0x25f)])[am(0x272)](0x2),document['getElementById'](a[am(0x1c2)])[am(0x248)][am(0x2be)]=a[am(0x267)];}catch(e){console[am(0x218)](a[am(0x23b)],e),alert(am(0x1ab)+e[am(0x1d9)]);}}[mn0I(0x1de)](b,c,d){const an=mn0I,e={};e[an(0x140)]='div',e['GuUfG']=an(0x132),e['NIfda']=function(g,h){return g+h;},e['OkHuH']=an(0x2f6),e[an(0x2eb)]=an(0x265),e[an(0x250)]=an(0x1fd),e['YqNnQ']=an(0x202);const f=e;d[an(0x2f2)]='';for(const [g,h]of Object[an(0x1f8)](c)){const i=document[an(0x290)](f[an(0x140)]);i[an(0x277)]=an(0x221);const j=document['createElement'](an(0x1ed));j[an(0x2e4)]=g,i[an(0x2a5)](j);let k;typeof h==='boolean'?(k=document[an(0x290)](f[an(0x1bf)]),k[an(0x2f2)]=f['NIfda'](an(0x14d)+(h?an(0x2c9):'')+an(0x274),an(0x1ef)+(!h?an(0x2c9):'')+an(0x29b))):(k=document[an(0x290)](an(0x278)),k[an(0x1fe)]=typeof h===an(0x265)?'number':f['OkHuH'],typeof h===f[an(0x2eb)]&&!Number['isInteger'](h)&&(k[an(0x2db)]=f[an(0x250)]),k[an(0x142)]=h),k[an(0x2d3)][an(0x189)]=b,k[an(0x2d3)][an(0x152)]=g,k[an(0x2d3)]['type']=typeof h,k[an(0x277)]=f[an(0x2b9)],i[an(0x2a5)](k),d['appendChild'](i);}}async[mn0I(0x2e1)](){const ao=mn0I,b={'FZEQV':ao(0x170),'Cpozn':function(c,d){return c===d;},'PfJoU':function(c,d){return c(d);},'lIfMi':'schedule_config','Hgdhi':ao(0x211),'nFZba':'.config-input','oFdvY':ao(0x2ac),'zQMur':ao(0x180),'EWvYr':ao(0x286),'UIcsF':ao(0x1a7),'abneI':function(c,d){return c===d;},'DrXDW':ao(0x21b),'wZYJm':ao(0x284),'ZRFWE':ao(0x17c)};try{const c={},d={};document[ao(0x296)](b['nFZba'])[ao(0x2f9)](j=>{const ap=ao,k=j[ap(0x2d3)][ap(0x189)],l=j[ap(0x2d3)][ap(0x152)],m=j[ap(0x2d3)]['type'];let n;if(m===b[ap(0x263)])n=b[ap(0x18e)](j[ap(0x142)],'true');else m===ap(0x265)?n=b[ap(0x2e2)](Number,j[ap(0x142)]):n=j[ap(0x142)];if(k===b[ap(0x14a)])c[l]=n;else b['Cpozn'](k,b[ap(0x2ae)])&&(d[l]=n);});const e=parseInt(document[ao(0x220)](b['oFdvY'])[ao(0x142)]),f=parseFloat(document[ao(0x220)](b[ao(0x1f1)])[ao(0x142)]),g={};g[ao(0x28b)]=c,g['cfg_config']=d,g['history_length']=e,g[ao(0x25f)]=f;const h=await fetch(b[ao(0x2a8)],{'method':'POST','headers':{'Content-Type':b[ao(0x247)]},'body':JSON[ao(0x1b2)](g)}),i=await h[ao(0x1f3)]();if(b[ao(0x293)](i['status'],ao(0x148))){const j=ao(0x2d6)[ao(0x2d2)]('|');let k=0x0;while(!![]){switch(j[k++]){case'0':this[ao(0x172)]=f;continue;case'1':this[ao(0x123)]();continue;case'2':this[ao(0x295)]();continue;case'3':console[ao(0x1cf)](b[ao(0x1d3)]);continue;case'4':this[ao(0x2e3)]=e;continue;}break;}}else alert('Error:\x20'+i['message']);}catch(l){console['error'](b['wZYJm'],l),alert(b[ao(0x1d2)]+l[ao(0x1d9)]);}}[mn0I(0x295)](){const aq=mn0I,b={};b[aq(0x22b)]=aq(0x146);const c=b;document[aq(0x220)](aq(0x28f))['style'][aq(0x2be)]=c['nVrZJ'];}async['updateStatus'](){const ar=mn0I,a={'NwsYl':function(b,c){return b(c);},'pSulT':function(b,c){return b!==c;},'kiued':function(b,c){return b&&c;},'XAqYQ':ar(0x251),'aVSLA':ar(0x241),'iUmDH':ar(0x128),'GRwZh':ar(0x16f),'yLObU':ar(0x1fb),'xFgub':ar(0x2b1),'mJqOe':function(b,c){return b>c;},'IFdYC':function(b,c){return b-c;}};try{const b=await a[ar(0x208)](fetch,ar(0x1df)+this['sessionId']),c=await b['json']();if(c[ar(0x14e)]){this[ar(0x291)][ar(0x2e4)]=c[ar(0x228)]+ar(0x206)+c['target_size'];a[ar(0x2f5)](c['smoothing_alpha'],undefined)&&(this[ar(0x194)]['textContent']=c[ar(0x25f)]['toFixed'](0x2));c['history_length']!==undefined&&(this[ar(0x13e)]['textContent']=c[ar(0x2f3)]);this[ar(0x21c)]=c['brain_enabled']||![],this[ar(0x2ad)]=c[ar(0x280)]||null,this[ar(0x1cb)]=c[ar(0x187)]||null;this[ar(0x20f)]?this[ar(0x2d5)]=c[ar(0x1a2)]||null:this[ar(0x2d5)]=null;if(this['_npcState']&&this[ar(0x20f)]){const f=this['_npcState'][ar(0x1fe)]===ar(0x1c1),g=!!this['_npcTankModel'],h=!!this[ar(0x144)],i=a[ar(0x1e1)](f,!g)||a['kiued'](!f,!h);if(i){if(this[ar(0x144)]){this[ar(0x144)][ar(0x2da)]();if(this[ar(0x144)][ar(0x2ce)])this[ar(0x1f5)][ar(0x261)](this[ar(0x144)][ar(0x2ce)]);this[ar(0x144)]=null,console['log']('[NPC]\x20Removed\x20existing\x20skeleton');}this['_npcTankModel']&&(this[ar(0x18a)][ar(0x231)](j=>{const as=ar;if(j[as(0x2e7)])j['geometry'][as(0x282)]();if(j[as(0x26f)]){const k=Array['isArray'](j[as(0x26f)])?j[as(0x26f)]:[j[as(0x26f)]];k[as(0x2f9)](l=>l['dispose']());}}),this[ar(0x1f5)][ar(0x261)](this[ar(0x18a)]),this[ar(0x18a)]=null,console[ar(0x1cf)](a[ar(0x216)]));if(f)this[ar(0x232)]();else{this[ar(0x144)]=new Skeleton3D(this[ar(0x1f5)]);try{const j=[...this[ar(0x144)][ar(0x1fc)],...this[ar(0x144)]['bones'],...this[ar(0x144)][ar(0x2b6)]];j[ar(0x2f9)](k=>{const at=ar;k['material']&&k[at(0x26f)][at(0x24e)]&&(k[at(0x26f)]=k['material']['clone'](),k[at(0x26f)][at(0x24e)][at(0x17e)](0xff3333));});}catch(k){console[ar(0x179)](ar(0x21d),k);}console[ar(0x1cf)](ar(0x24a));}}}if(this[ar(0x144)]){const l=!!this[ar(0x2d5)];[...this[ar(0x144)][ar(0x1fc)],...this[ar(0x144)][ar(0x167)],...this[ar(0x144)]['extras']][ar(0x2f9)](n=>{const au=ar;n[au(0x18f)]=l;});if(this[ar(0x144)][ar(0x2ce)])this[ar(0x144)][ar(0x2ce)][ar(0x18f)]=l;}this[ar(0x18a)]&&(!this[ar(0x2d5)]?(this[ar(0x1f5)][ar(0x261)](this[ar(0x18a)]),this[ar(0x18a)]['traverse'](n=>{const av=ar;if(n[av(0x2e7)])n[av(0x2e7)][av(0x282)]();if(n[av(0x26f)]){const o=Array['isArray'](n[av(0x26f)])?n['material']:[n[av(0x26f)]];o[av(0x2f9)](p=>p['dispose']());}}),this['_npcTankModel']=null,window['_npcWorldPos']=null):this[ar(0x18a)][ar(0x18f)]=!![]);c[ar(0x173)]&&!c[ar(0x162)]&&this[ar(0x1b7)]&&!this[ar(0x1ad)]&&(this['isWatching']=!![],this[ar(0x24d)]=!![],this['statusEl'][ar(0x2e4)]=a[ar(0x125)],this['startResetBtn']['textContent']=a[ar(0x1c3)],this['startResetBtn'][ar(0x18d)][ar(0x261)]('btn-danger'),this['startResetBtn']['classList'][ar(0x2ba)](a[ar(0x1aa)]),this[ar(0x1a3)]());if(!c['is_generating']&&!c[ar(0x162)]&&this[ar(0x1ad)]){const m=a[ar(0x197)][ar(0x2d2)]('|');let n=0x0;while(!![]){switch(m[n++]){case'0':this[ar(0x24d)]=![];continue;case'1':this[ar(0x1ad)]=![];continue;case'2':this[ar(0x1cd)][ar(0x2e4)]=a['xFgub'];continue;case'3':this[ar(0x2a7)]=0x0;continue;case'4':this[ar(0x151)]['textContent']=ar(0x24b);continue;case'5':this[ar(0x1b7)]=!![];continue;case'6':this[ar(0x1d6)]=[];continue;}break;}}}const d=performance[ar(0x19a)]();a[ar(0x182)](a[ar(0x2d8)](d,this[ar(0x2f0)]),0x3e8)&&(this[ar(0x137)][ar(0x2e4)]=this[ar(0x235)],this[ar(0x235)]=0x0,this[ar(0x2f0)]=d);}catch(o){}setTimeout(()=>this[ar(0x2ca)](),0x1f4);}[mn0I(0x2d7)](){const aw=mn0I;requestAnimationFrame(()=>this[aw(0x2d7)]());if(this['inputCtrl'])this[aw(0x168)]['update']();this[aw(0x15e)][aw(0x22f)](),this['renderer'][aw(0x1bd)](this[aw(0x1f5)],this[aw(0x14f)]);}['onWindowResize'](){const ax=mn0I,b={};b['rABvS']=ax(0x236),b[ax(0x1e4)]=function(e,f){return e/f;};const c=b,d=document[ax(0x220)](c['rABvS']);this[ax(0x14f)][ax(0x1d1)]=c[ax(0x1e4)](d[ax(0x204)],d[ax(0x1cc)]),this['camera'][ax(0x2d0)](),this[ax(0x22c)][ax(0x2b7)](d[ax(0x204)],d['clientHeight']);}}window[mn0I(0x2a4)](mn0I(0x121),()=>{const ay=mn0I;window[ay(0x226)]=new MotionApp();});
3
+ })();
requirements.txt ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ flask
2
+ flask-cors
3
+ numpy
4
+ torch
5
+ torchvision
6
+ torchaudio
7
+ transformers>=4.40,<5
8
+ accelerate
9
+ sentencepiece
10
+ protobuf
11
+ lightning
12
+ omegaconf
13
+ safetensors
14
+ diffusers
15
+ ftfy
16
+ regex
17
+ huggingface_hub
18
+ requests
skeleton.js ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ (function(){
2
+ const sk0a3=sk0b;(function(a,b){const a1=sk0b,c=a();while(!![]){try{const d=-parseInt(a1(0x1fd))/0x1+-parseInt(a1(0x13a))/0x2+-parseInt(a1(0xfc))/0x3+parseInt(a1(0x1ed))/0x4*(-parseInt(a1(0x1f5))/0x5)+-parseInt(a1(0x124))/0x6*(parseInt(a1(0x1f3))/0x7)+parseInt(a1(0x19d))/0x8+parseInt(a1(0x109))/0x9*(parseInt(a1(0xc1))/0xa);if(d===b)break;else c['push'](c['shift']());}catch(e){c['push'](c['shift']());}}}(sk0a,0x28248));function sk0a(){const aM=['z29lBMe','shLuzxi','z2XIuMvZDfDVCMXKuq','twvZAa','x3nOB3DtA2vSzxrVBK1LC2HLCW','y2HLC3q','zK16vve','zxH0CMfZ','zKv5vee','C2v0u3r5Bgu','CMLNAhrMB3jLyxjT','BezbEwe','vuzUvMC','Dw5LCxvPCfrVB2W','zgv0ywLSCW','Bf9MB290','x2Pnyxq','x3nOB3Dhtei','BgLUzxDPzhrO','q2zhwwm','CMLNAhrFAgLW','sfvdqLu','BMvVBG','rgTzA2C','CM9IB3q','wfPQqM8','x3rVCMnOtgLNAhq','AgLWCW','C2HPzwXK','CMLNAhrFC2HPBG','AxnbCNjHEq','qM94mW','tg5Us1G','rg91yMXLu2LKzq','ruTczKu','CKrACwq','BKLTCKC','yxrHBJi','nZqYmenzz3zrsa','x3zPC29YugfYzw50','tgLUzq','CMLNAhrZAg91BgrLCG','z2XIsw5PDeHPChnqB3m','yxr0CMLIDxrLCW','C2v0rhjHD1jHBMDL','DuD5Ag0','t3vIvvC','BgvUz3rO','CNbN','vMvJDg9YmW','y2XVBMu','z2XItw9KzwXty2fSzq','q0zVENe','C2HPBL9S','AM9PBNrcB25LtwfW','nxW0Fdn8mhWYFde','yMLWmdaXCgvSDMLZ','tgPst1K','r1LfD1K','x3rVB2Xoyw1L','BwzzBxi','yKr0qKC','x3jLDgfYz2v0vg9htei','Bwf4','C3bPBMuY','AxrnzMG','sejxDfO','seDywfu','BxvSDgLWBhLty2fSyxi','DhjHAwXmAw5L','BgvMDgXLzW','rxD6rNm','A2v5CW','qNrQBeG','CM9Szq','AxvzqNG','DxbKyxrLtwf0CML4v29YBgq','z2XVD1jHzgL1CW','x3jLBw92zuDmqG','v2DTv20','BgvMDgXLzYq','t0zWCgu','uxvHDgvYBMLVBG','BgvMDgTUzwu','Bg9N','r2X4Bwm','EuXLyLK','C2LU','CMfUzg9T','AM9PBNrdB2XVCG','x3rVB2Xiyw5K','B29Asxi','Eg91Ehy','BgvMDf91ChbLCL9HCM0','C3vJy2vZCW','Ehblsuy','C2v0rNjVBvvUAxrwzwn0B3jZ','mtuZnJG0tuDYrxfI','wMjKsgO','CuHJs2G','ywrK','twvZAejHC2LJtwf0zxjPywW','Aw5PDfrYywLS','Dg90ywW','DgfHs3O','zgvMyxvSDa','zw5KC1DPDgG','B1HcAK0','wwrQuLa','C2TkqMi','nZq3oxzpqNLZtW','x25Wy1DVCMXKug9Z','Aw52zxj0','yNbKt20','x2jnyxrZ','Aw50zw5ZAxr5','zNj1C3r1Bun1BgXLza','Bf9OAxa','Eg5Rtfa','r0XcihbHCNnLigvYCM9YoIa','BgvMDgHPCa','Cg93','CwfQvNG','z2XIrMLYC3rsB290ug9Z','BgvMDgfUA2XL','z2v0u2L6zq','C3bSAxq','CMLNAhr1CgXLzW','Avzmqwy','yNbxwum','Bf9JBgf2AwnSzq','z2XVDW','y2HPBgrYzw4','wwv5sKG','BxvSDgLWBhLrDwf0zxjUAw9UCW','yxbsruu','Bf91ChbLCMfYBq','ndKWoePrz3rlva','C2v0qxr0CMLIDxrL','z2rfy3i','z2XItw9KzwW','A05XDei','z2v0v29YBgrrDwf0zxjUAw9U','zfPUB3i','DwX3sgm','C1jhqKvUy29KAw5N','BgvMDgfYBq','CL9MB3jLyxjT','Avn5Chq','Bf9RBMvL','CM91z2HUzxnZ','zM9VDf9S','s0nRqNu','y29Z','DvvbDMy','CL9HBMTSzq','AgvHzfnPEMu','CxjVzKG','AuP0ufC','mtyZoty0CffkzhfS','ChvZAa','zKzbCK4','wwvyBKK','z2XIqM9Uzxm','BgvMDf9HBMTSzq','AgvHzePVAw50','w1nRzwXLDg9Um0rDiejVBMvZigzVDw5KoG','C3bPBMu','BxvSDgLWBhK','A3r0uvu','rhLICKq','BgvMDgXVD2vYyxjT','t0PIDha','Bg93zxjFyxjTx3i','z2XVD09WywnPDhK','BwrcAMu','D1nuq2u','AvbODfu','s0zms3a','wgTXAvK','CgfYzw50','BgvMDf9SB3DLCL9HCM0','zfb1BNq','CNHhCuO','shbHDha','EMrjtNC','AgvHzenVBg9Y','thbwDK4','zNjHBwvdB3vUDgvY','C2HPBL9Y','weffBhu','qKXztMu','DhjHDMvYC2u','y2fZDfnOywrVDW','v1DTsNq','re9iqMO','ywjdvw4','x2DSyKDYB3vUzfK','DuPMsLC','wM5WEvm','BgvMDgzVCMvHCM0','BMvJAW','AM9PBNrtAxPL','w1jqrY03xsdWN5QaiezjuKuH','x2HPzgvtA2vSzxrVBK1LC2HLCW','CNbNrMLYzq','r0D5vMy','zM9zwMO','x3vWzgf0zun5Ba','uNDRDwW','y2vSDhO','serJDMC','u2TLBgv0B24Zra','AxnnzxnO','BuDUAuS','CM90yxrPB24','zw1PC3nPDMu','BgvMDgfYBsq','sgvTAxnWAgvYzuXPz2H0','Cw9YBgS','u1z4Bg8','w1nRzwXLDg9Um0rDiejVBMvZig1HChbLzdO','Bf90AgLNAa','CMLNAhrFy2XHDMLJBgu','yxD3vgW','Bwf0zxjPywW','Bf9SB3DLCMfYBq','z2v0v29YBgrqB3nPDgLVBG','tuLHrNa','C3bPBMuZ','BgvMDgXVD2vYBgvN','AhvTyw4','C2nHBgu','uu5utxK','DgHPz2HFBa','ALvfyuO','D0vVyxG','yxHL','z2XItw9KzwXszwfKEq','Aw5JBhvKzxm','BgvMDf90AgLNAa','Bg9HzeDmqK1VzgvS','x3rVB2W','s3HmDKC','DwvlBLy','CMLNAhrFA25Lzq','yM9Uzxm','AxncB25L','r0XurKXVywrLCG','BwL4yw1VCMLN','CxnIANO','x2f1Dg9ezxrLy3rcB25LCW','qNvMzMvYr2vVBwv0CNK','u0Lzvhq','y2HPBgq','BgvUz3rOu3e','C2v0sgv4','vKHnzLm','mtu0nty2ngPjywj3sa','C3bPBMuXja','C2v0u2nHBgfY','AM9PBNq','C3bPBMuK','w1nRzwXLDg9Um0rDieDmqIbSB2fKzwq6','rg9QA3O','CL9ZAgLU','qNvMzMvYqxr0CMLIDxrL','CMvTB3zL','Cg9ZAxrPB24','BwLU','y2XHDMLJBgvFCG','uezsvMi','tgTMDhq','rw5jv0e','DxbWzxjFy2HLC3q','C3vIvMvJDg9YCW','AgvHza','DhjHAwXdB2XVCG','BM93','t093z3e','CxvkrNy','CM9Ru2C','C2nLBMu','CL9HCM0K','x3vWzgf0zvrVB2XqB3nPDgLVBG','CM9VDf9QBNq','ruPjCxa','rMv3igjVBMvZig1HChbLzcdIGjqGBw90Aw9Uig1HEsbIzsbSAw1PDgvKlG','uvvoEMC','y29WEq','DMLZAwjSzq','CeHVBuq','x3bYzxzhBgjqB3m','BwfWCgvK','CMvJzwL2zvnOywrVDW','w1nRzwXLDg9Um0rDiefSBcbIB25Lig5HBwvZoG','z2vVBwv0CNK','BwvZC2fNzq','CMLNAhr1ChbLCMXLzW','x2HLywrkB2LUDa','zgLZCg9Zzq','q29UzuDLB21LDhj5','Bwv0ywXUzxnZ','DhjHAwXnyxrLCMLHBa','CMLNAhrFDgHPz2G','weXOALy','CL9SB3DLCMfYBq','twXPtvu','tM8GCMLNz2vKigjVBMvZigzVDw5KiokaLcbTB2rLBcbMB2XSB3DZihjVB3qGCg9ZAxrPB24GB25SEs4','CMLNAhrHBMTSzq','qvf3Cwi','DhjHAwXhzw9TzxrYEq','Evv4zge','C2v0rNjVBu9IAMvJDa','vw1ltgm','Bwf4vhjHAwXqB2LUDhm','ww9StvC','AxntA2LUBMvKtwvZAa','CMLNAhrSB3DLCMfYBq','zM9YrwfJAa','CLLnv2O','yM9UzunVBM5Ly3rPB25Z','D2fqwNm','CxvHDgvYBMLVBG','C3fYDa','zKvYqNm','yM9UzvjHzgL1CW','CMLNAhrMB290','ugzJDK4','CMLNAhrFDxbWzxjFyxjT','sLDvywO','z2XIuMvZDeXVy2fSuq','Dg9mB3DLCKnHC2u','zw1PC3nPDMvjBNrLBNnPDhK','wuvKthu','BM9YBwfSAxPL','BgvMDhvWBgvN','w1nRzwXLDg9Um0rDifjLC3qGCg9ZzsbJyxb0DxjLzdO','mZCXndrzwxrbDLO','w1nRzwXLDg9Um0rDie1HChbPBMC6','t2rWCLG','C2LKzq','sKHbwuK','CgvSDMLZ','nZiXyxPJywHQ','q1jJALq','otvqCuLMwuC','DxbWzxjJAgvZDa','zM9VDf9Y','CgfYC2u','C3bPBMuX','zgvWDgHxCML0zq','w1nRzwXLDg9Um0rDieDmqIbSB2fKigvYCM9YoG','q3LSAw5Kzxjhzw9TzxrYEq','mJuXndG4tfLpDfjt','nhW2Fdn8ohWYFdb8n3W1Fde','BgvMDhnOB3vSzgvY','CLLVs3a','CL9MB290','wLnuAMe','Ee1mshi','r3jVDxa','C2v0vMLZAwjSzq','BMvLzhnvCgrHDgu','wxzRyKS','zgvZDhjVEvnRzwXLDg9U','BgvMDhvWCgvYyxjT','Exn6uwW','x2PVAw50r2XVDW','D2P6yNK','yNvPBgrtA2vSzxrVBG','CMLNAhrSzwC','DMvYDgv4q29SB3jZ','BMfTzq','DxbKyxrLvhjHAwW','u3bOzxjLr2vVBwv0CNK','CL9JBgf2AwnSzq','ALzSweu','z2XItw9KzwXoyw1L','DhjHBNnWyxjLBNq','zw50CMLLCW','C2XLCNa','BgvMDf9OAxa','x2nHChr1CMvszxn0ug9Zzq','D3brBfa','wMXnwLu','uuH0r0m','CMLNAhrFBg93zxjFyxjT','B2LTr24','BgvMDgzVB3q','DhjHAwXqB2LUDhm','zxjYB3i','AxrUD1y','yM9Uzu5HBwvqyxr0zxjUCW','zfnlCw4','qM94r2vVBwv0CNK','Bf9MB3jLyxjT','yxjYyxK','CM5OD0W','twvZAfn0yw5KyxjKtwf0zxjPywW','y2HHAw5Z','y2XLyxjuCMfPBa','C3r5BgvZ','y3vYCMvUDfn0EwXL','C2v0','zwDiBMG','ywrKvMvJDg9YCW','y2XHDMLJBgvFBa','CMLNAhrSB3DLCMXLzW','EwHLsfC','z1rntxK','txHOD2W','BvDvzM0','t1nPruq','wwf2rgu','y1v0yKK','BwfW','AxLdB28','v2nZvfO','CL90AgLNAa','s0T3yvy','B25PBw0','C3bPBMuW','yNPXuw4','CMLNAhrHCM0','x2jVBMvjBMrLEa','y2HHAw5dB2XVCNm','D1HSzgq','rvzpDNm','z1rSy2S','yLHfwxi','y29SB3i','DLHUEgG','z2v0q2vUDgvY','B3bHy2L0Eq','C0XJDMm','CMvWBgfJzq','yLPOyvC','tgLUzujHC2LJtwf0zxjPywW','Bw9KzwW','vuDevLy','x3rVCMnOrMXHBwu','DvPhsxK','DgfUA0zPCMu','D0fhtfO','tK5HCxa','DxbKyxrLug9Zzq','z2XIuMvZDejVBMveAxi','BvzgAhe','tMXsq2u','CMLNAhrHCM0K','B29iANu','Exn1vge','EvnVvK8','AM9PBNrZ','ug9PBNrmAwDODa','s2X5Axi','Bgr3sgC'];sk0a=function(){return aM;};return sk0a();}function sk0b(a,b){a=a-0x77;const c=sk0a();let d=c[a];if(sk0b['eklBIv']===undefined){var e=function(i){const j='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let l='',m='';for(let n=0x0,o,p,q=0x0;p=i['charAt'](q++);~p&&(o=n%0x4?o*0x40+p:p,n++%0x4)?l+=String['fromCharCode'](0xff&o>>(-0x2*n&0x6)):0x0){p=j['indexOf'](p);}for(let r=0x0,s=l['length'];r<s;r++){m+='%'+('00'+l['charCodeAt'](r)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(m);};sk0b['isEPhk']=e,sk0b['LDkqNm']={},sk0b['eklBIv']=!![];}const f=c[0x0],g=a+f,h=sk0b['LDkqNm'][g];return!h?(d=sk0b['isEPhk'](d),sk0b['LDkqNm'][g]=d):d=h,d;}class Skeleton3D{constructor(z){const a2=sk0b,A={};A[a2(0x21c)]=a2(0x104),A['mhFaM']=function(Z,a0){return Z<a0;},A[a2(0x1f4)]=function(Z,a0){return Z-a0;},A[a2(0x238)]=a2(0x142),A[a2(0x15d)]=a2(0x220),A[a2(0x147)]=a2(0x11a),A[a2(0x8b)]=a2(0x1ff),A[a2(0x23a)]='leftarm',A[a2(0x15e)]=a2(0x163),A[a2(0x159)]='rightshoulder',A['ZbdHj']=a2(0x79),A[a2(0x21f)]=a2(0x1b8),A[a2(0x1e0)]=a2(0x1a1),A[a2(0x16e)]=a2(0x77),A['CcTVY']='spine2$',A[a2(0x1db)]='spine_02',A[a2(0xbf)]=a2(0x164),A[a2(0x1f1)]=a2(0x1af),A[a2(0xb4)]=a2(0x113),A[a2(0xd8)]=a2(0x110),A['uVtGQ']=a2(0xeb),A[a2(0x120)]=a2(0xee),A[a2(0x115)]='left_knee',A['vWnrm']=a2(0xd0),A[a2(0x1ab)]='l_shin',A[a2(0x20a)]=a2(0x130),A['EKBfE']=a2(0x13f),A[a2(0xb2)]=a2(0xaa),A[a2(0x92)]='l_ankle',A[a2(0x106)]='righthip',A[a2(0x78)]=a2(0xaf),A['dSKqn']='thigh_r',A[a2(0x203)]=a2(0x1c5),A[a2(0x195)]=a2(0x1cb),A[a2(0x96)]=a2(0x23e),A['CFozq']='rightknee',A[a2(0x16d)]=a2(0x190),A['Dojkz']=a2(0x158),A[a2(0x152)]=a2(0x233),A[a2(0x240)]=a2(0x1d0),A[a2(0x128)]=a2(0x1f7),A[a2(0x1bb)]=a2(0x136),A[a2(0xf6)]=a2(0x232),A[a2(0x9c)]=a2(0x11d),A[a2(0x14b)]=a2(0x174),A['OFppe']=a2(0xf8),A[a2(0x122)]=a2(0x123),A[a2(0xf0)]='l_arm$',A[a2(0x133)]=a2(0x146),A[a2(0x1aa)]=a2(0x227),A[a2(0x1d1)]=a2(0x17d),A['eWqzz']=a2(0x1a9),A[a2(0x1b2)]=a2(0x213),A[a2(0xe6)]=a2(0x93),A['YvkbK']='r_upperarm',A[a2(0xea)]=a2(0x1b6),A['ZnpyS']=a2(0xa5),A[a2(0xd4)]=a2(0x1d9);const B=A;this[a2(0x1b5)]=z,this[a2(0x97)]=[],this['bones']=[],this[a2(0xa2)]=[],this['currentStyle']=B[a2(0x21c)],this[a2(0x221)]=[],this['maxTrailPoints']=0xc8,this['trailLine']=null,this['trailGeometry']=null,this[a2(0x1ca)]=null,this['glbModel']=null,this[a2(0x13e)]={},this[a2(0x1e6)]={},this[a2(0x9d)]={},this[a2(0xc5)]=null,this[a2(0xce)]=0x1,this[a2(0x189)]=![],this[a2(0x215)]='',this[a2(0x116)]=null,this['chains']=[[0x0,0x2,0x5,0x8,0xb],[0x0,0x1,0x4,0x7,0xa],[0x0,0x3,0x6,0x9,0xc,0xf],[0x9,0xe,0x11,0x13,0x15],[0x9,0xd,0x10,0x12,0x14]],this[a2(0x1dc)]=[];for(const Z of this[a2(0x22b)]){for(let a0=0x0;B['mhFaM'](a0,B[a2(0x1f4)](Z[a2(0xca)],0x1));a0++){this[a2(0x1dc)][a2(0x13b)]([Z[a0],Z[a0+0x1]]);}}const C={};C[a2(0x1a0)]=0x0,C[a2(0x199)]=0x3,C['role']=a2(0xb6);const D={};D[a2(0x1a0)]=0x3,D[a2(0x199)]=0x6,D['role']=B[a2(0x238)];const E={};E['joint']=0x6,E[a2(0x199)]=0x9,E[a2(0xe5)]=a2(0x1f9);const F={};F[a2(0x1a0)]=0x9,F[a2(0x199)]=0xc,F['role']='spine2';const G={};G[a2(0x1a0)]=0xc,G[a2(0x199)]=0xf,G[a2(0xe5)]='neck';const H={};H[a2(0x1a0)]=0x1,H[a2(0x199)]=0x4,H['role']=a2(0x1eb);const I={};I['joint']=0x4,I[a2(0x199)]=0x7,I['role']='leftleg';const J={};J[a2(0x1a0)]=0x7,J['child']=0xa,J[a2(0xe5)]=B[a2(0x15d)];const K={};K[a2(0x1a0)]=0x2,K[a2(0x199)]=0x5,K[a2(0xe5)]=B[a2(0x147)];const L={};L[a2(0x1a0)]=0x5,L[a2(0x199)]=0x8,L[a2(0xe5)]=a2(0x20e);const M={};M[a2(0x1a0)]=0x8,M['child']=0xb,M['role']=a2(0x1e2);const N={};N[a2(0x1a0)]=0xe,N['child']=0x11,N[a2(0xe5)]=B['uZGIy'];const O={};O[a2(0x1a0)]=0x11,O['child']=0x13,O[a2(0xe5)]=B[a2(0x23a)];const P={};P[a2(0x1a0)]=0x13,P[a2(0x199)]=0x15,P[a2(0xe5)]=B[a2(0x15e)];const Q={};Q[a2(0x1a0)]=0xd,Q[a2(0x199)]=0x10,Q[a2(0xe5)]=B['XAElu'];const R={};R[a2(0x1a0)]=0x10,R[a2(0x199)]=0x12,R[a2(0xe5)]=B[a2(0xfd)];const S={};S[a2(0x1a0)]=0x12,S[a2(0x199)]=0x14,S[a2(0xe5)]=a2(0xa5),this[a2(0xd1)]=[C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S];const T={};T[a2(0xb6)]=[a2(0xb6),a2(0x1f2),'hip',B['oimGn'],a2(0xd3)],T[a2(0x142)]=[B[a2(0x1e0)],B[a2(0x16e)],'spine_01','spine1$'],T[a2(0x1f9)]=[a2(0x19e),B['CcTVY'],B['rYMWj'],a2(0xa0)],T[a2(0xdb)]=['spine2$',a2(0x180),'spine_03',a2(0x1f6),a2(0x1ad)],T[a2(0x164)]=[B[a2(0xbf)]],T[a2(0x1af)]=[B[a2(0x1f1)]],T[a2(0x1eb)]=[a2(0x1eb),B['XZjBo'],a2(0x219),B[a2(0xd8)],a2(0x185),'leftupperleg',a2(0x18b),a2(0x179)],T['leftleg']=[B['uVtGQ'],B[a2(0x120)],B[a2(0x115)],B['vWnrm'],a2(0x181),'left_shin',B[a2(0x1ab)],B[a2(0x20a)]],T['leftfoot']=[B[a2(0x15d)],a2(0x117),B[a2(0xbd)],a2(0x132),B[a2(0xb2)],B[a2(0x92)]],T[a2(0x11a)]=[B[a2(0x147)],B[a2(0x106)],B[a2(0x78)],'r_hip',B[a2(0x225)],B['xMLHr'],B[a2(0x195)],B[a2(0x96)]],T[a2(0x20e)]=['rightleg$',B[a2(0xcf)],B['celtz'],B[a2(0x1a3)],B[a2(0x152)],a2(0xb8),a2(0x1a4),'r_knee'],T[a2(0x1e2)]=[a2(0x1e2),B[a2(0x240)],'right_ankle',B[a2(0x128)],a2(0x201),B[a2(0x1bb)]],T[a2(0x1ff)]=[a2(0x1ff),'left_clavicle',B[a2(0xf6)],B['HyTer']],T[a2(0x12d)]=[B[a2(0x14b)],B[a2(0xec)],'upper_arm_l',a2(0x209),B[a2(0x122)],B['Glxmc']],T[a2(0x163)]=[a2(0x163),a2(0x150),'lower_arm_l',B[a2(0x133)],B[a2(0x1aa)],B[a2(0x1d1)]],T[a2(0xc4)]=[a2(0xc4),a2(0x17a),B['eWqzz'],B['OOwgq']],T[a2(0x79)]=[B[a2(0xe6)],a2(0x1e4),'upper_arm_r','rightupperarm',B[a2(0x207)],B[a2(0xea)]],T[a2(0xa5)]=[B[a2(0x162)],a2(0x21e),a2(0x148),B['LjROY'],a2(0x12e),a2(0x1cd)],this[a2(0x224)]=T;const U={};U[a2(0x1e1)]=0.015,U[a2(0x165)]=0.03,U[a2(0x7b)]=[0xfeb21a,0xaaff,0x134686,0xffb600,0xd47e],U[a2(0xf4)]=0x809d,U[a2(0x1c9)]=0.2,U[a2(0x131)]=0.5,U[a2(0x173)]=0x0,U[a2(0x1e8)]=0x0,U[a2(0x11e)]=![],U[a2(0x140)]=-0x1,U['headSize']=0x0,U[a2(0x1b0)]=[0x0,0.67,0.85];const V={};V[a2(0x1e1)]=0.012,V[a2(0x165)]=0.028,V['chainColors']=[0xffaa,0xccff,0x7b61ff,0xff6ec7,0xffe14d],V[a2(0xf4)]=0xffffff,V[a2(0x1c9)]=0x0,V[a2(0x131)]=0.3,V[a2(0x173)]=null,V[a2(0x1e8)]=1.8,V[a2(0x11e)]=!![],V[a2(0xe8)]=0.04,V[a2(0x149)]=0.12,V[a2(0x140)]=-0x1,V[a2(0x137)]=0x0,V[a2(0x1b0)]=[0x0,0x1,0.66];const W={};W[a2(0x1e1)]=0.025,W[a2(0x165)]=0.045,W[a2(0x7b)]=[0x8899aa,0x8899aa,0x8899aa,0x8899aa,0x8899aa],W['jointColor']=0xccddee,W['metalness']=0.85,W['roughness']=0.15,W[a2(0x173)]=0x112233,W[a2(0x1e8)]=0.3,W[a2(0x11e)]=![],W[a2(0x140)]=0xf,W['headSize']=0.09,W[a2(0x155)]=0xccddee,W[a2(0x1b0)]=[0.53,0.6,0.67];const X={};X['boneRadius']=0.022,X['jointSize']=0.025,X[a2(0x7b)]=[0xe8b89d,0xe8b89d,0xe8b89d,0xe8b89d,0xe8b89d],X[a2(0xf4)]=0xd4967e,X[a2(0x1c9)]=0x0,X[a2(0x131)]=0.85,X[a2(0x173)]=0x1a0800,X[a2(0x1e8)]=0.15,X['glow']=![],X[a2(0x140)]=0xf,X['headSize']=0.1,X['headColor']=0xe8b89d,X[a2(0x1b0)]=[0.83,0.59,0.5];const Y={};Y['default']=U,Y[a2(0xb1)]=V,Y[a2(0xb3)]=W,Y[a2(0x182)]=X,this[a2(0x22d)]=Y,this[a2(0x101)](),this[a2(0x20d)](a2(0x104));}[sk0a3(0xa4)](b){const a4=sk0a3,c={};c['Hpatp']=function(e,f){return e===f;},c[a4(0xa6)]=a4(0x88),c['mfYmr']=function(e,f){return e===f;};const d=c;if(d[a4(0x153)](b,d['lFAya'])){if(!this[a4(0x189)])return![];return this[a4(0x22e)]=d[a4(0xa6)],this['glbFirstRootPos']=null,this[a4(0x167)](),this['_showGLB'](!![]),!![];}if(!this[a4(0x22d)][b]||d[a4(0xd7)](b,this[a4(0x22e)]))return![];return this['_showGLB'](![]),this[a4(0x208)](),this['buildSkeleton'](b),!![];}async[sk0a3(0x18c)](c,d){const a5=sk0a3,e={};e[a5(0x126)]=function(g,h){return g+h;},e[a5(0x223)]=a5(0x112),e[a5(0x91)]='GLTFLoader\x20not\x20loaded';const f=e;if(!THREE[a5(0x193)]){const g={};return g[a5(0xf9)]=![],g[a5(0x222)]=f['mVFhq'],g;}return this[a5(0xe9)](),new Promise(h=>{const a6=a5,i={'BLYNe':function(k,l){return k!==l;},'yLebY':function(k,l){return k>l;},'PZgtt':a6(0x1a2),'QNTMy':a6(0x141),'mGniK':function(k,l){return k(l);},'bZhaW':function(k,l){return k<l;}},j=new THREE[(a6(0x193))]();j[a6(0x1f8)](c,'',k=>{const a9=a6,l={'Rwkul':function(m,n){const a7=sk0b;return i[a7(0x15a)](m,n);},'XLhjV':function(m,n){const a8=sk0b;return i[a8(0xf1)](m,n);}};try{const m=k[a9(0x1b5)];this[a9(0x215)]=d||a9(0x88);const n=new THREE['Box3']()[a9(0x1d4)](m),o=n[a9(0x118)](new THREE[(a9(0xcc))]())['y'];i[a9(0xf1)](o,0x0)&&(this[a9(0xce)]=1.7/o,m[a9(0x183)][a9(0x19f)](this[a9(0xce)]));m[a9(0xe7)](!![]);const p=new THREE[(a9(0xba))]()[a9(0x1d4)](m),q=p[a9(0x82)](new THREE[(a9(0xcc))]());m[a9(0x1a7)]['x']-=q['x'],m['position']['z']-=q['z'],m['position']['y']-=p[a9(0x1a8)]['y'],this[a9(0x160)]=m[a9(0x1a7)]['y'],m[a9(0x15b)](t=>{const aa=a9;if(t[aa(0x170)]){t[aa(0x15c)]=!![],t[aa(0x1c1)]=!![];const u=Array[aa(0xb9)](t['material'])?t['material']:[t[aa(0x17c)]];u['forEach'](v=>{const ab=aa;v[ab(0x1f0)]=THREE[ab(0xbc)];l[ab(0x16c)](v['metalness'],undefined)&&l[ab(0x1cc)](v['metalness'],0.5)&&!v['envMap']&&(v[ab(0x1c9)]=Math[ab(0x1a8)](v[ab(0x1c9)],0.3),v[ab(0x131)]=Math[ab(0xda)](v['roughness'],0.5));if(v[ab(0x23b)])v[ab(0x23b)]['encoding']=THREE[ab(0x12c)];v[ab(0x206)]=!![];});}if(t[aa(0x1d8)])t[aa(0x10f)]=![];});const r=new THREE[(a9(0x175))](0xffffff,0x444444,0.6);m[a9(0xff)](r),this['glbModel']=m,this[a9(0x1b5)][a9(0xff)](m),m[a9(0xe7)](!![]);const s=this[a9(0x196)](m);console[a9(0xef)](i['PZgtt'],d),console[a9(0xef)](i[a9(0x184)],s[a9(0x102)]),console[a9(0xef)](a9(0x178),s[a9(0x1c0)],'/',Object['keys'](this[a9(0x224)])[a9(0xca)]),console[a9(0xef)](a9(0x1ee),s[a9(0xa9)]),s[a9(0x1c0)]>0x0&&this[a9(0x21a)](),this['glbModelReady']=!![],m[a9(0x1bd)]=![],i[a9(0x171)](h,{'success':!![],'fileName':d,'mapped':s[a9(0x1c0)],'total':s[a9(0x102)],'details':s[a9(0xa9)],'warning':s[a9(0x1c0)]===0x0?a9(0x1cf):i[a9(0x86)](s[a9(0x1c0)],0x5)?a9(0x1ba):null});}catch(t){console[a9(0x222)](a9(0x1fb),t);const u={};u[a9(0xf9)]=![],u[a9(0x222)]=t['message'],h(u);}},k=>{const ac=a6;h({'success':![],'error':f[ac(0x126)](f[ac(0x223)],k[ac(0x1c4)]||k)});});});}[sk0a3(0x196)](c){const ad=sk0a3,d={};d[ad(0x198)]=ad(0x1c2),d[ad(0x20c)]=function(j,k){return j===k;},d[ad(0x139)]=ad(0x194),d[ad(0x11c)]=function(j,k){return j/k;};const e=d,f=[];c['traverse'](j=>{const ae=ad;if(j['isBone'])f[ae(0x13b)](j);});f['length']>0x0&&console[ad(0xef)](e[ad(0x198)],f['map'](j=>j[ad(0x210)]));this[ad(0x13e)]={};const g={};let h=0x0;for(const [j,k]of Object['entries'](this[ad(0x224)])){let l=null,m=0x0;for(const n of f){const o=n['name'][ad(0x1e7)]()[ad(0x85)](/[^a-z0-9]/g,'');for(const p of k){const q=p[ad(0x85)]('$',''),r=p[ad(0x105)]('$'),s=r?e[ad(0x20c)](o,q):o['includes'](q);if(s){let t=0x1;if(r)t+=0xa;if(n['name']['toLowerCase']()[ad(0x18a)](e[ad(0x139)]))t+=0x5;t+=e[ad(0x11c)](0x1,n[ad(0x210)][ad(0xca)]+0x1),t>m&&(l=n,m=t);}}}l&&(this[ad(0x13e)][j]=l,g[j]=l[ad(0x210)],h++);}const i={};return i[ad(0x1c0)]=h,i[ad(0x102)]=f['length'],i[ad(0xa9)]=g,i;}[sk0a3(0x21a)](){const af=sk0a3,b={};b[af(0x1e5)]=function(e,f){return e>f;},b[af(0xd5)]=af(0xb6),b[af(0x234)]=af(0x1ec);const c=b;this['glbRestLocalQ']={},this[af(0x9d)]={},this['glbRestBoneDir']={},this[af(0x127)][af(0xe7)](!![]);for(const [e,f]of Object[af(0x217)](this[af(0x13e)])){this[af(0x1e6)][e]=f[af(0x1de)][af(0xcd)]();const g=new THREE[(af(0xed))]();f['getWorldQuaternion'](g),this[af(0x9d)][e]=g;const h=new THREE[(af(0xcc))]();f['getWorldPosition'](h);let i=null;for(const j of f['children']){if(j[af(0x192)]){const k=new THREE['Vector3']();j[af(0x17e)](k);const l=new THREE[(af(0xcc))]()[af(0x1ae)](k,h);if(c['JWUaj'](l[af(0x19a)](),0.00001)){i=l[af(0x1ea)]();break;}}}if(!i&&f[af(0x14f)]&&f[af(0x14f)][af(0x192)]){const m=new THREE[(af(0xcc))]();f[af(0x14f)][af(0x17e)](m),i=new THREE[(af(0xcc))]()[af(0x1ae)](h,m);if(i[af(0x19a)]()>0.00001)i[af(0x1ea)]();else i=new THREE[(af(0xcc))](0x0,0x1,0x0);}this[af(0x90)][e]=i||new THREE[(af(0xcc))](0x0,0x1,0x0);}this[af(0x13e)][af(0xb6)]&&(this['glbInitHipsPos']=this[af(0x13e)][c[af(0xd5)]]['position']['clone']()),console['log'](c['yheHW'],Object[af(0xe3)](this[af(0x1e6)])[af(0xca)],af(0x191));}[sk0a3(0xd9)](c){const ag=sk0a3,e={};e['wEoax']=ag(0xb6),e[ag(0x144)]=function(k,l){return k/l;},e[ag(0x169)]=function(k,l){return k-l;},e[ag(0xde)]=function(k,l){return k+l;},e[ag(0x8e)]=function(k,l){return k+l;},e['YEdLu']=function(k,l){return k-l;},e['jUEaJ']=function(k,l){return k-l;},e[ag(0x230)]=function(k,l){return k-l;},e[ag(0x12a)]=function(k,l){return k>l;},e[ag(0x176)]=function(k,l){return k+l;},e[ag(0x13d)]=function(k,l){return k*l;},e[ag(0x23d)]=function(k,l){return k>l;},e['ooHju']=function(k,l){return k<l;},e[ag(0x7e)]=function(k,l){return k*l;},e[ag(0x138)]=function(k,l){return k>=l;},e[ag(0x95)]=function(k,l){return k===l;},e['mWUfm']=function(k,l){return k<=l;},e[ag(0x1b3)]=function(k,l){return k-l;},e[ag(0x1dd)]=function(k,l){return k-l;};const f=e;if(!this[ag(0x127)])return;const g=this['glbModelScale'];!this[ag(0x116)]&&(this[ag(0x116)]=new THREE['Vector3'](c[0x0][0x0],c[0x0][0x1],c[0x0][0x2]));for(const [k,l]of Object['entries'](this[ag(0x13e)])){if(this[ag(0x1e6)][k])l[ag(0x1de)]['copy'](this['glbRestLocalQ'][k]);}this[ag(0x13e)][f[ag(0x187)]]&&this['glbInitHipsPos']&&this[ag(0x13e)][ag(0xb6)][ag(0x1a7)][ag(0x1bc)](this['glbInitHipsPos']);const h=this[ag(0x13e)][ag(0xb6)];if(h&&this['glbInitHipsPos']){const m=(c[0x0][0x0]-this['glbFirstRootPos']['x'])/g,n=f[ag(0x144)](f[ag(0x169)](c[0x0][0x1],this[ag(0x116)]['y']),g),o=(c[0x0][0x2]-this[ag(0x116)]['z'])/g;h[ag(0x1a7)][ag(0x22f)](f['HGXXU'](this[ag(0xc5)]['x'],m),f[ag(0x8e)](this[ag(0xc5)]['y'],n),this[ag(0xc5)]['z']+o);}else{if(!h&&this[ag(0x127)]){const p=f[ag(0x1e9)](c[0x0][0x0],this[ag(0x116)]['x']),q=f[ag(0x186)](c[0x0][0x2],this[ag(0x116)]['z']);this[ag(0x127)][ag(0x1a7)]['x']=p,this[ag(0x127)][ag(0x1a7)]['z']=q,this[ag(0x127)][ag(0x1a7)]['y']=this['_glbGroundY']||0x0;if(this[ag(0x1bf)]){const r=c[0x0][0x0]-this[ag(0x1bf)][0x0],t=f[ag(0x230)](c[0x0][0x2],this[ag(0x1bf)][0x2]);if(f[ag(0x12a)](f[ag(0x176)](f['YeXnI'](r,r),t*t),0.0002)){const u=Math[ag(0xc0)](r,t);let v=f['GGyVf'](u,this[ag(0x127)][ag(0x172)]['y']);while(f[ag(0x23d)](v,Math['PI']))v-=Math['PI']*0x2;while(f[ag(0x94)](v,-Math['PI']))v+=f[ag(0x7e)](Math['PI'],0x2);this[ag(0x127)][ag(0x172)]['y']+=f[ag(0x7e)](v,0.12);}}this[ag(0x1bf)]=[c[0x0][0x0],c[0x0][0x1],c[0x0][0x2]];return;}}this[ag(0x127)]['updateMatrixWorld'](!![]);const i={};i[ag(0xb6)]=0.5,i[ag(0x142)]=0.5,i['spine1']=0.4,i[ag(0xdb)]=0.4,i[ag(0x164)]=0.25,i[ag(0x1af)]=0x0,i[ag(0x1eb)]=0x1,i[ag(0xe1)]=0x1,i[ag(0x220)]=0.8,i[ag(0x11a)]=0x1,i[ag(0x20e)]=0x1,i[ag(0x1e2)]=0.8,i['leftshoulder']=0.6,i['leftarm']=0x1,i[ag(0x163)]=0x1,i['rightshoulder']=0.6,i[ag(0x79)]=0x1,i[ag(0xa5)]=0x1;const j=i;for(const w of this['jointBoneMap']){const x=this[ag(0x13e)][w['role']];if(!x||f[ag(0x94)](w[ag(0x199)],0x0)||f[ag(0x138)](w[ag(0x199)],c[ag(0xca)]))continue;const y=this[ag(0x1e6)][w[ag(0xe5)]],z=this[ag(0x9d)][w[ag(0xe5)]],A=this['glbRestBoneDir'][w['role']];if(!y||!z||!A){x[ag(0xe7)](!![]);continue;}const B=j[w['role']];if(f[ag(0x95)](B,undefined)||f[ag(0x237)](B,0x0)){x[ag(0xe7)](!![]);continue;}const C=new THREE[(ag(0xcc))](f[ag(0x1b3)](c[w[ag(0x199)]][0x0],c[w[ag(0x1a0)]][0x0]),c[w['child']][0x1]-c[w[ag(0x1a0)]][0x1],f[ag(0x1dd)](c[w[ag(0x199)]][0x2],c[w[ag(0x1a0)]][0x2]));if(C[ag(0x19a)]()<0.0001){x[ag(0xe7)](!![]);continue;}C[ag(0x1ea)]();const D=new THREE[(ag(0xed))]()[ag(0xfb)](A,C),E=new THREE[(ag(0xed))]()[ag(0x121)](D,z),F=new THREE['Quaternion']();if(x[ag(0x14f)])x[ag(0x14f)][ag(0x129)](F);const G=F[ag(0xcd)]()[ag(0x10b)]()[ag(0x143)](E);x['quaternion'][ag(0x1bc)](y)[ag(0x218)](G,B),x[ag(0xe7)](!![]);}}[sk0a3(0x167)](){const ah=sk0a3;this[ah(0x97)][ah(0x1da)](a=>a[ah(0x1bd)]=![]),this[ah(0x191)][ah(0x1da)](a=>a[ah(0x1bd)]=![]),this[ah(0xa2)][ah(0x1da)](a=>a[ah(0x1bd)]=![]);}[sk0a3(0x9f)](){const ai=sk0a3;this[ai(0x97)][ai(0x1da)](a=>a[ai(0x1bd)]=!![]),this[ai(0x191)][ai(0x1da)](a=>a[ai(0x1bd)]=!![]),this[ai(0xa2)][ai(0x1da)](a=>a[ai(0x1bd)]=!![]);}['_showGLB'](a){const aj=sk0a3;if(this[aj(0x127)])this[aj(0x127)][aj(0x1bd)]=a;}[sk0a3(0xe9)](){const ak=sk0a3,b={};b['iSypt']=ak(0x1fe);const c=b,d=c[ak(0x12f)][ak(0x119)]('|');let e=0x0;while(!![]){switch(d[e++]){case'0':this['glbInitHipsPos']=null;continue;case'1':this[ak(0x215)]='';continue;case'2':this[ak(0x9d)]={};continue;case'3':this[ak(0x13e)]={};continue;case'4':this[ak(0x127)]&&(this[ak(0x1b5)][ak(0x1a6)](this['glbModel']),this['glbModel'][ak(0x15b)](f=>{const al=ak;if(f['geometry'])f[al(0x1c3)][al(0x1c7)]();f['material']&&(Array['isArray'](f['material'])?f['material']:[f[al(0x17c)]])[al(0x1da)](g=>g[al(0x1c7)]());}));continue;case'5':this[ak(0x189)]=![];continue;case'6':this[ak(0x127)]=null;continue;case'7':this['glbFirstRootPos']=null;continue;case'8':this[ak(0x1e6)]={};continue;}break;}}[sk0a3(0x20d)](h){const am=sk0a3,j={};j[am(0x18f)]=function(r,t){return r<t;},j[am(0xb0)]=function(r,t){return r<t;},j['DybrD']=function(r,t){return r-t;},j[am(0xbb)]=function(r,t){return r>t;},j[am(0x13c)]=function(r,t){return r===t;},j['zdINw']=am(0xb3),j[am(0xdd)]=function(r,t){return r*t;};const k=j,l=this[am(0x22d)][h];this[am(0x22e)]=h;const n=new THREE[(am(0x212))](l['jointSize'],0x10,0x10),o={};o[am(0x80)]=l[am(0xf4)],o[am(0x1c9)]=l[am(0x1c9)],o[am(0x131)]=l[am(0x131)],o[am(0x173)]=l[am(0x173)]||0x0,o['emissiveIntensity']=l[am(0x173)]?l[am(0x1e8)]:0x0;const p=new THREE[(am(0x22a))](o);for(let r=0x0;k[am(0x18f)](r,0x16);r++){const t=new THREE[(am(0x9e))](n,p);t['castShadow']=!![],t[am(0x1c1)]=!![],this[am(0x97)][am(0x13b)](t),this[am(0x1b5)][am(0xff)](t);}const q=l['chainColors'][am(0x23b)](u=>new THREE[(am(0x22a))]({'color':u,'metalness':l[am(0x1c9)],'roughness':l['roughness'],'emissive':l[am(0x173)]!==null?l[am(0x173)]||u:u,'emissiveIntensity':l[am(0x1e8)]||0x0}));for(let u=0x0;u<this[am(0x22b)][am(0xca)];u++){for(let v=0x0;v<this[am(0x22b)][u][am(0xca)]-0x1;v++){const w=new THREE[(am(0x1fc))](l[am(0x1e1)],l[am(0x1e1)],0x1,0x8),x=new THREE[(am(0x9e))](w,q[u]);x[am(0x15c)]=!![],x[am(0x1c1)]=!![],this[am(0x191)][am(0x13b)](x),this[am(0x1b5)][am(0xff)](x);}}if(l[am(0x11e)]){let y=0x0;for(let A=0x0;k[am(0x18f)](A,this[am(0x22b)][am(0xca)]);A++){for(let B=0x0;k['HUCBU'](B,k[am(0x145)](this[am(0x22b)][A]['length'],0x1));B++){const C=new THREE[(am(0x1fc))](l[am(0xe8)],l[am(0xe8)],0x1,0x8),D={};D['color']=l['chainColors'][A],D[am(0x216)]=!![],D['opacity']=l[am(0x149)],D[am(0x1fa)]=![];const E=new THREE[(am(0x100))](D),F=new THREE[(am(0x9e))](C,E);F['_boneIndex']=y,this[am(0xa2)][am(0x13b)](F),this[am(0x1b5)][am(0xff)](F),y++;}}const z=new THREE[(am(0x212))](l[am(0xe8)]*1.3,0xc,0xc);for(let G=0x0;G<0x16;G++){const H={};H['color']=l[am(0xf4)],H[am(0x216)]=!![],H[am(0x83)]=l[am(0x149)]*1.5,H[am(0x1fa)]=![];const I=new THREE[(am(0x100))](H),J=new THREE[(am(0x9e))](z,I);J['_jointGlow']=G,this[am(0xa2)][am(0x13b)](J),this[am(0x1b5)][am(0xff)](J);}}if(l[am(0x140)]>=0x0&&k[am(0xbb)](l[am(0x137)],0x0)){const K=new THREE[(am(0x212))](l[am(0x137)],0x14,0x14),L={};L[am(0x80)]=l[am(0x155)]||l[am(0xf4)],L[am(0x1c9)]=l[am(0x1c9)],L[am(0x131)]=l[am(0x131)],L[am(0x173)]=l[am(0x173)]||0x0,L[am(0x1e8)]=l[am(0x1e8)]||0x0;const M=new THREE['MeshStandardMaterial'](L),N=new THREE[(am(0x9e))](K,M);N[am(0x15c)]=!![],N['_headJoint']=l[am(0x140)],this[am(0xa2)][am(0x13b)](N),this[am(0x1b5)]['add'](N);if(k[am(0x13c)](h,k[am(0x154)])){const O=new THREE[(am(0x226))](l[am(0x137)]*1.2,k[am(0xdd)](l[am(0x137)],0.3),l[am(0x137)]*0.15),P={};P[am(0x80)]=0xccff,P['metalness']=0.9,P[am(0x131)]=0.1,P[am(0x173)]=0xccff,P[am(0x1e8)]=0.8;const Q=new THREE['MeshStandardMaterial'](P),R=new THREE[(am(0x9e))](O,Q);R[am(0xc2)]=l['headJoint'],this[am(0xa2)][am(0x13b)](R),this[am(0x1b5)]['add'](R);}}this['_jMat']=p,this['_bMats']=q;}[sk0a3(0x208)](){const an=sk0a3,a='0|3|7|4|5|6|2|1'[an(0x119)]('|');let b=0x0;while(!![]){switch(a[b++]){case'0':this['joints'][an(0x1da)](c=>{const ao=an;this['scene'][ao(0x1a6)](c),c[ao(0x1c3)]['dispose']();});continue;case'1':this['_bMats']&&(this[an(0x10d)][an(0x1da)](c=>c[an(0x1c7)]()),this['_bMats']=null);continue;case'2':this['_jMat']&&(this['_jMat'][an(0x1c7)](),this[an(0xab)]=null);continue;case'3':this['joints']=[];continue;case'4':this['bones']=[];continue;case'5':this[an(0xa2)]['forEach'](c=>{const ap=an;this['scene'][ap(0x1a6)](c);if(c[ap(0x1c3)])c['geometry'][ap(0x1c7)]();if(c[ap(0x17c)])c[ap(0x17c)][ap(0x1c7)]();});continue;case'6':this['extras']=[];continue;case'7':this[an(0x191)][an(0x1da)](c=>{const aq=an;this[aq(0x1b5)][aq(0x1a6)](c),c[aq(0x1c3)][aq(0x1c7)]();});continue;}break;}}['initTrail'](){const ar=sk0a3,c={};c[ar(0xc9)]=ar(0x80);const d=c;this['trailGeometry']=new THREE[(ar(0x197))]();const e=new Float32Array(this[ar(0x1d6)]*0x3),f=new Float32Array(this[ar(0x1d6)]*0x4);this[ar(0x1d2)][ar(0x125)](ar(0x1a7),new THREE['BufferAttribute'](e,0x3)),this[ar(0x1d2)][ar(0x125)](d[ar(0xc9)],new THREE[(ar(0x1a5))](f,0x4));const g={};g[ar(0x20f)]=!![],g[ar(0x216)]=!![],g[ar(0xad)]=0x2,this[ar(0x1ca)]=new THREE[(ar(0x87))](g),this[ar(0xe0)]=new THREE[(ar(0xc3))](this[ar(0x1d2)],this[ar(0x1ca)]),this[ar(0xe0)][ar(0x10f)]=![],this[ar(0x1b5)]['add'](this[ar(0xe0)]);}[sk0a3(0x211)](c){const as=sk0a3,d={};d[as(0x135)]=function(m,q){return m+q;},d[as(0x236)]=function(m,q){return m**q;},d[as(0xe4)]=function(m,q){return m-q;},d['qHcKh']=function(m,q){return m===q;},d[as(0x18e)]=function(m,q){return m<q;},d[as(0xdc)]=function(m,q){return m*q;},d[as(0x11b)]=function(m,q){return m/q;},d[as(0x1ef)]=function(m,q){return m*q;};const e=d,f={};f['x']=c[0x0],f['y']=0.01,f['z']=c[0x2];const g=f;if(this[as(0x221)][as(0xca)]===0x0)this[as(0x221)][as(0x13b)](g);else{const m=this[as(0x221)][this[as(0x221)][as(0xca)]-0x1];if(Math[as(0x1df)](e['uUAvf'](e['Mxhwl'](e['BtjlH'](g['x'],m['x']),0x2),e[as(0x236)](g['z']-m['z'],0x2)))>0.02)this['trailPoints'][as(0x13b)](g);}if(this['trailPoints'][as(0xca)]>this[as(0x1d6)])this['trailPoints']['shift']();const h=this[as(0x1d2)]['attributes']['position']['array'],j=this['trailGeometry'][as(0xc6)][as(0x80)][as(0x228)],k=this[as(0x221)][as(0xca)],l=e[as(0xfe)](this[as(0x22e)],as(0x88))?[0.4,0.4,0.4]:(this[as(0x22d)][this['currentStyle']]||this[as(0x22d)]['default'])[as(0x1b0)];for(let q=0x0;q<this[as(0x1d6)];q++){if(e[as(0x18e)](q,k)){const r=this[as(0x221)][q];h[q*0x3]=r['x'],h[q*0x3+0x1]=r['y'],h[e[as(0x135)](q*0x3,0x2)]=r['z'];const s=k>0x1?e['itMfh'](Math[as(0x114)](e[as(0x11b)](q,k-0x1),1.5),0.8):0.8;j[q*0x4]=l[0x0],j[e[as(0x135)](e[as(0xdc)](q,0x4),0x1)]=l[0x1],j[e['OdprX'](q,0x4)+0x2]=l[0x2],j[q*0x4+0x3]=s;}else h[q*0x3]=h[e[as(0xdc)](q,0x3)+0x1]=h[e[as(0xdc)](q,0x3)+0x2]=0x0,j[e[as(0x1ef)](q,0x4)+0x3]=0x0;}this[as(0x1d2)]['attributes']['position'][as(0x206)]=!![],this[as(0x1d2)]['attributes']['color'][as(0x206)]=!![],this['trailGeometry'][as(0xc7)](0x0,k);}[sk0a3(0x22c)](){const at=sk0a3;this[at(0x221)]=[],this[at(0x1d2)][at(0xc7)](0x0,0x0);}['equipTool'](o){const au=sk0a3,p={};p[au(0xfa)]=function(t,u){return t===u;},p[au(0x7c)]=function(t,u){return t===u;},p['zYwLJ']=au(0xb7);const q=p;this[au(0xa8)]();if(!o||q[au(0xfa)](o,'none'))return;this[au(0xd6)]=o;const r=new THREE[(au(0x204))]();if(o==='sword'){const t={};t[au(0x80)]=0xc0c0c0,t['metalness']=0.9,t[au(0x131)]=0.2,r[au(0xff)](new THREE[(au(0x9e))](new THREE[(au(0x226))](0.04,0.55,0.02),new THREE['MeshStandardMaterial'](t))),r[au(0x11f)][0x0][au(0x1a7)]['y']=0.35;const u={};u[au(0x80)]=0x5c3a1e,u[au(0x131)]=0.9;const v=new THREE[(au(0x9e))](new THREE['BoxGeometry'](0.03,0.12,0.03),new THREE[(au(0x22a))](u));v['position']['y']=0.04,r['add'](v);const w={};w[au(0x80)]=0x8b7355,w[au(0x1c9)]=0.7;const x=new THREE[(au(0x9e))](new THREE[(au(0x226))](0.12,0.02,0.04),new THREE[(au(0x22a))](w));x[au(0x1a7)]['y']=0.1,r['add'](x);}else{if(o===au(0x188)){const y={};y[au(0x80)]=0x6b4226;const z=new THREE[(au(0x9e))](new THREE['CylinderGeometry'](0.015,0.02,0.5,0x6),new THREE[(au(0x22a))](y));z['position']['y']=0.25,r[au(0xff)](z);const A={};A['color']=0x888888,A[au(0x1c9)]=0.8;const B=new THREE[(au(0x9e))](new THREE[(au(0x226))](0.18,0.12,0.025),new THREE[(au(0x22a))](A));B[au(0x1a7)]['set'](0.05,0.48,0x0),r[au(0xff)](B);}else{if(q['wXldd'](o,'torch')){const C={};C['color']=0x5c3a1e;const D=new THREE['Mesh'](new THREE['CylinderGeometry'](0.02,0.025,0.45,0x6),new THREE[(au(0x22a))](C));D[au(0x1a7)]['y']=0.22,r['add'](D);const E={};E['color']=0xff6600,E[au(0x173)]=0xff4400,E[au(0x1e8)]=0x2;const F=new THREE[(au(0x9e))](new THREE[(au(0x212))](0.06,0x8,0x8),new THREE['MeshStandardMaterial'](E));F[au(0x1a7)]['y']=0.48,r[au(0xff)](F);const G=new THREE[(au(0x98))](0xff6600,1.5,0x5);G['position']['y']=0.48,r['add'](G),this[au(0x8a)]=F,this[au(0xb5)]=G;}else{if(q[au(0x7c)](o,q['zYwLJ'])){this[au(0xf5)]=0x15;const H={};H[au(0x80)]=0x7b4b2a,r[au(0xff)](new THREE[(au(0x9e))](new THREE[(au(0x226))](0.3,0.4,0.03),new THREE[(au(0x22a))](H)));}else{if(q[au(0xfa)](o,au(0xcb))){const I={};I[au(0x80)]=0x4a5d23,I[au(0x131)]=0.8;const J=new THREE[(au(0x9e))](new THREE[(au(0x1fc))](0.025,0.025,0.9,0x8),new THREE[(au(0x22a))](I));J[au(0x1a7)]['y']=0.45,r[au(0xff)](J);const K={};K[au(0x80)]=0x556b2f,K[au(0x1c9)]=0.3;const L=new THREE[(au(0x9e))](new THREE[(au(0x1c8))](0.04,0.15,0x6),new THREE['MeshStandardMaterial'](K));L['position']['y']=0.95,r[au(0xff)](L);const M={};M[au(0x80)]=0x333333,M[au(0x1c9)]=0.6;const N=new THREE[(au(0x9e))](new THREE[(au(0x1fc))](0.03,0.02,0.08,0x6),new THREE[(au(0x22a))](M));N[au(0x1a7)]['y']=-0.02,r['add'](N);const O={};O[au(0x80)]=0x3b2f1e,O[au(0x131)]=0.9;const P=new THREE[(au(0x9e))](new THREE[(au(0x226))](0.02,0.08,0.03),new THREE[(au(0x22a))](O));P[au(0x1a7)][au(0x22f)](0x0,0.2,-0.03),r[au(0xff)](P);}}}}}if(o!==au(0xb7))this[au(0xf5)]=0x14;r[au(0x15b)](Q=>{const av=au;Q[av(0x170)]&&(Q[av(0x15c)]=!![],Q[av(0x1c1)]=!![]);}),this[au(0x1b5)][au(0xff)](r),this[au(0x18d)]=r;}[sk0a3(0xa8)](){const aw=sk0a3;this[aw(0x18d)]&&(this[aw(0x1b5)][aw(0x1a6)](this[aw(0x18d)]),this[aw(0x18d)][aw(0x15b)](a=>{const ax=aw;if(a[ax(0x1c3)])a[ax(0x1c3)][ax(0x1c7)]();if(a['material']){const b=Array[ax(0xb9)](a['material'])?a[ax(0x17c)]:[a[ax(0x17c)]];b[ax(0x1da)](d=>d['dispose']());}}),this[aw(0x18d)]=null,this['_toolName']=null,this[aw(0x8a)]=null,this[aw(0xb5)]=null);}[sk0a3(0x1b7)](b){const ay=sk0a3,c={};c[ay(0x108)]=function(i,j){return i===j;},c[ay(0x7d)]=ay(0xa5),c[ay(0x17b)]=ay(0x163),c['lqiLr']=ay(0x12d),c[ay(0x214)]=function(i,j){return i>j;},c[ay(0x1e3)]=function(i,j){return i-j;},c[ay(0xa1)]=function(i,j){return i*j;},c['rDZqd']=function(i,j){return i+j;},c[ay(0x8d)]=function(i,j){return i*j;},c['xouxv']=function(i,j){return i+j;};const g=c;if(!this[ay(0x18d)]||!b)return;const h=this[ay(0xf5)];if(h>=b[ay(0xca)])return;if(g[ay(0x108)](this[ay(0x22e)],'model')&&this[ay(0x13e)]){const i=h===0x14?g['EVOvs']:g[ay(0x17b)],j=g[ay(0x108)](h,0x14)?ay(0x79):g['lqiLr'],k=this[ay(0x13e)][i],l=this[ay(0x13e)][j];if(k){const m=new THREE[(ay(0xcc))]();k['getWorldPosition'](m),this[ay(0x18d)][ay(0x1a7)][ay(0x1bc)](m);if(l){const n=new THREE[(ay(0xcc))]();l[ay(0x17e)](n);const o=new THREE[(ay(0xcc))]()[ay(0x1ae)](m,n);g[ay(0x214)](o[ay(0x19a)](),0.0001)&&(o['normalize'](),this['_tool']['quaternion']['setFromUnitVectors'](new THREE[(ay(0xcc))](0x0,0x1,0x0),o));}}}else{const p=b[h],q=h===0x14?0x12:0x13,r=b[q];this[ay(0x18d)][ay(0x1a7)][ay(0x22f)](p[0x0],p[0x1],p[0x2]);if(r){const s=new THREE[(ay(0xcc))](p[0x0]-r[0x0],g[ay(0x1e3)](p[0x1],r[0x1]),p[0x2]-r[0x2])[ay(0x1ea)]();this[ay(0x18d)][ay(0x1de)][ay(0xfb)](new THREE[(ay(0xcc))](0x0,0x1,0x0),s);}}if(this[ay(0x8a)]){const u=g[ay(0xa1)](performance[ay(0x1b1)](),0.003);this[ay(0x8a)]['scale'][ay(0x22f)](g[ay(0xbe)](0.8,Math[ay(0xf2)](g[ay(0x8d)](u,0x3))*0.3),g[ay(0xf7)](0.9,Math['sin'](u*0x5)*0.2),g[ay(0xbe)](0.8,Math[ay(0x134)](g[ay(0xa1)](u,0x4))*0.3));if(this[ay(0xb5)])this[ay(0xb5)][ay(0x10e)]=1.2+Math['sin'](u*0x7)*0.5;}}[sk0a3(0x8c)](){const az=sk0a3,e={};e[az(0x1be)]=function(z,A){return z*A;},e['QHtGC']=function(z,A){return z*A;},e[az(0xa3)]=function(z,A){return z+A;},e['aIPEr']=function(z,A){return z*A;},e[az(0x1d3)]=function(z,A){return z-A;},e[az(0x23c)]=function(z,A){return z/A;},e['rokSg']=function(z,A){return z>=A;},e[az(0x12b)]=az(0xd2),e[az(0x19c)]=function(z,A){return z+A;},e[az(0x14c)]=function(z,A){return z*A;},e[az(0x229)]=function(z,A){return z*A;},e['goKna']=function(z,A){return z-A;},e[az(0x239)]=function(z,A){return z-A;},e[az(0x99)]=function(z,A){return z+A;},e['sLcvc']=function(z,A){return z+A;},e['EnIWA']=function(z,A){return z+A;},e[az(0x7f)]=function(z,A){return z*A;},e[az(0x103)]=function(z,A){return z<A;},e['EJIqp']=function(z,A){return z+A;},e[az(0x235)]=function(z,A){return z*A;},e[az(0x200)]=function(z,A){return z-A;};const f=e;if(!this[az(0x127)])return;const g=this[az(0x127)],h=new THREE[(az(0xba))]()[az(0x1d4)](g),j=h[az(0x82)](new THREE[(az(0xcc))]()),k=h[az(0x118)](new THREE['Vector3']());let l,m;if(window[az(0x10a)]){const y=f['YavDe'](window['_npcWorldPos']['x'],j['x']),z=window[az(0x10a)]['z']-j['z'],A=Math[az(0x1df)](f[az(0x19c)](y*y,z*z));A>0.1?(l=y/A,m=f[az(0x23c)](z,A)):(l=Math[az(0xf2)](g[az(0x172)]['y']),m=Math[az(0x134)](g[az(0x172)]['y']));}else l=Math[az(0xf2)](g[az(0x172)]['y']),m=Math[az(0x134)](g['rotation']['y']);const n=new THREE[(az(0xcc))](f[az(0x99)](j['x'],l*k['z']*0.6),f[az(0x84)](j['y'],k['y']*0.15),f[az(0x1ac)](j['z'],f[az(0x7f)](m,k['z'])*0.6)),o={};o['color']=0xff6600,o[az(0x216)]=!![],o[az(0x83)]=0.9;const p=new THREE[(az(0x9e))](new THREE['SphereGeometry'](0.25,0x8,0x8),new THREE[(az(0x100))](o));p[az(0x1a7)][az(0x1bc)](n),this[az(0x1b5)]['add'](p);const q=new THREE['PointLight'](0xff4400,0x3,0x8);q[az(0x1a7)][az(0x1bc)](n),this[az(0x1b5)][az(0xff)](q);const r={};r[az(0x80)]=0xffcc00;const t=new THREE[(az(0x9e))](new THREE[(az(0x212))](0.08,0x6,0x6),new THREE[(az(0x100))](r));t['position']['copy'](n),this[az(0x1b5)][az(0xff)](t);const u=[];for(let B=0x0;f[az(0x103)](B,0x5);B++){const C={};C[az(0x80)]=0x888888,C[az(0x216)]=!![],C[az(0x83)]=0.6;const D=new THREE['Mesh'](new THREE[(az(0x212))](f[az(0x1b9)](0.1,Math[az(0xf3)]()*0.15),0x6,0x6),new THREE['MeshBasicMaterial'](C));D[az(0x1a7)][az(0x22f)](n['x']+f[az(0x235)](f['rYoKp'](Math[az(0xf3)](),0.5),0.2),f[az(0x84)](n['y'],Math['random']()*0.1),f[az(0x1b9)](n['z'],f[az(0x9b)](Math[az(0xf3)](),0.5)*0.2)),this[az(0x1b5)][az(0xff)](D),u[az(0x13b)](D);}const v=performance[az(0x1b1)](),w=0x258,x=()=>{const aA=az,E=f[aA(0x23c)](performance[aA(0x1b1)]()-v,w);if(f[aA(0x1b4)](E,0x1)){const F=f[aA(0x12b)][aA(0x119)]('|');let G=0x0;while(!![]){switch(F[G++]){case'0':u[aA(0x1da)](H=>this[aA(0x1b5)][aA(0x1a6)](H));continue;case'1':return;case'2':[p,t,...u][aA(0x1da)](H=>{const aB=aA;if(H[aB(0x1c3)])H[aB(0x1c3)][aB(0x1c7)]();if(H[aB(0x17c)])H[aB(0x17c)][aB(0x1c7)]();});continue;case'3':this[aA(0x1b5)]['remove'](t);continue;case'4':this[aA(0x1b5)][aA(0x1a6)](q);continue;case'5':this[aA(0x1b5)][aA(0x1a6)](p);continue;}break;}}p[aA(0x183)][aA(0x19f)](f['VHMfS'](0x1,f['iPhtU'](E,0x3))),p[aA(0x17c)][aA(0x83)]=Math[aA(0xda)](0x0,f[aA(0x229)](0.9,f[aA(0x1d3)](0x1,f[aA(0x1be)](E,1.5)))),q[aA(0x10e)]=0x3*f['goKna'](0x1,E),t[aA(0x1a7)]['x']+=l*0.4,t[aA(0x1a7)]['z']+=f[aA(0x229)](m,0.4),t['position']['y']+=0.01,u[aA(0x1da)]((H,I)=>{const aC=aA;H[aC(0x1a7)]['y']+=0.01+f[aC(0x1be)](I,0.003),H[aC(0x1a7)]['x']+=f[aC(0x21d)](Math['random']()-0.5,0.02),H['position']['z']+=(Math['random']()-0.5)*0.02,H['scale'][aC(0x19f)](f[aC(0xa3)](0x1,f[aC(0x1be)](E,0x2))),H['material']['opacity']=f['aIPEr'](0.6,f[aC(0x1d3)](0x1,E));}),requestAnimationFrame(x);};requestAnimationFrame(x);}[sk0a3(0x168)](){const aD=sk0a3,d={'MliMU':'4|0|1|2|3','dPunt':function(q,r){return q*r;},'uGyhm':function(q,r){return q*r;},'wpQlP':function(q,r){return q*r;},'nAPDA':function(q,r){return q>=r;},'KKwaV':function(q,r){return q<r;},'ZSTja':function(q,r){return q<r;},'xnkLP':function(q,r){return q*r;},'mdBje':function(q,r){return q!==r;},'XkqiY':function(q,r){return q-r;},'abCUn':function(q,r){return q+r;},'bpdOm':function(q,r){return q*r;},'uJfJW':function(q,r){return q/r;},'pHTOv':function(q,r){return q<r;},'UmKLc':function(q,r){return q+r;},'foYZj':function(q,r){return q*r;},'SVxlo':function(q,r){return q+r;},'KFLKp':function(q,r){return q(r);}};if(!this['_tool']||d[aD(0x14a)](this['_toolName'],'rpg'))return;const e=this['_tool']['position'][aD(0xcd)]();e['y']+=0.9;let f=0x0,g=0x1;if(window[aD(0x10a)]){const q=d[aD(0x14e)](window[aD(0x10a)]['x'],e['x']),r=window[aD(0x10a)]['z']-e['z'],t=Math[aD(0x1df)](d[aD(0x15f)](q*q,d[aD(0x10c)](r,r)));t>0.1&&(f=d[aD(0x161)](q,t),g=r/t);}const h={};h[aD(0x80)]=0xffaa00;const j=new THREE[(aD(0x9e))](new THREE[(aD(0x1c8))](0.04,0.2,0x6),new THREE[(aD(0x100))](h));j[aD(0x1a7)][aD(0x1bc)](e),j[aD(0x1de)][aD(0xfb)](new THREE['Vector3'](0x0,0x1,0x0),new THREE[(aD(0xcc))](f,0.05,g)[aD(0x1ea)]()),this[aD(0x1b5)][aD(0xff)](j);const k=[];for(let u=0x0;d['pHTOv'](u,0x4);u++){const v={};v['color']=0xaaaaaa,v['transparent']=!![],v['opacity']=0.7;const w=new THREE[(aD(0x9e))](new THREE[(aD(0x212))](d[aD(0x1d5)](0.08,d[aD(0x16a)](Math['random'](),0.1)),0x6,0x6),new THREE[(aD(0x100))](v));w[aD(0x1a7)][aD(0x22f)](d[aD(0x177)](d[aD(0x14e)](e['x'],f*0.3),d[aD(0x10c)](Math[aD(0xf3)]()-0.5,0.1)),e['y'],e['z']-g*0.3+(Math['random']()-0.5)*0.1),this['scene'][aD(0xff)](w),k[aD(0x13b)](w);}const l={};l[aD(0x80)]=0xff6600,l['transparent']=!![],l[aD(0x83)]=0.9;const m=new THREE[(aD(0x9e))](new THREE['SphereGeometry'](0.15,0x6,0x6),new THREE[(aD(0x100))](l));m[aD(0x1a7)]['copy'](e),this[aD(0x1b5)][aD(0xff)](m);const n=new THREE['PointLight'](0xff4400,0x3,0x8);n[aD(0x1a7)][aD(0x1bc)](e),this[aD(0x1b5)][aD(0xff)](n);const o=performance[aD(0x1b1)](),p=()=>{const aE=aD,x=(performance[aE(0x1b1)]()-o)/0x3e8;if(d['nAPDA'](x,1.2)){[j,m,...k][aE(0x1da)](y=>{const aF=aE;this[aF(0x1b5)][aF(0x1a6)](y);if(y['geometry'])y['geometry'][aF(0x1c7)]();if(y[aF(0x17c)])y[aF(0x17c)]['dispose']();}),this[aE(0x1b5)][aE(0x1a6)](n);return;}j[aE(0x1a7)]['x']+=d[aE(0xc8)](f,0.5),j[aE(0x1a7)]['z']+=g*0.5,j[aE(0x1a7)]['y']+=0.005,d[aE(0x23f)](x,0.8)&&j[aE(0x17c)][aE(0x80)][aE(0x19b)](d[aE(0x202)](x,0.3)?0xffaa00:0xff4400),m[aE(0x183)][aE(0x19f)](0x1+d['uGyhm'](x,0x3)),m[aE(0x17c)]['opacity']=Math[aE(0xda)](0x0,0.9-x*0x2),n['intensity']=Math[aE(0xda)](0x0,0x3-d[aE(0x111)](x,0x4)),k[aE(0x1da)]((y,z)=>{const aG=aE,A=d[aG(0x1ce)][aG(0x119)]('|');let B=0x0;while(!![]){switch(A[B++]){case'0':y[aG(0x1a7)]['z']-=d[aG(0x151)](g,0.03);continue;case'1':y[aG(0x1a7)]['y']+=0.01;continue;case'2':y[aG(0x183)][aG(0x19f)](0x1+d[aG(0xc8)](x,0x2));continue;case'3':y[aG(0x17c)][aG(0x83)]=Math[aG(0xda)](0x0,0.7-x);continue;case'4':y[aG(0x1a7)]['x']-=d[aG(0x21b)](f,0.03);continue;}break;}}),requestAnimationFrame(p);};d[aD(0x14d)](requestAnimationFrame,p),console[aD(0xef)](aD(0x166));}[sk0a3(0x8f)](c){const aH=sk0a3,d={};d[aH(0x81)]=function(f,g){return f!==g;},d['ldwHg']=function(f,g){return f!==g;},d[aH(0x107)]=aH(0x88),d[aH(0x89)]=function(f,g){return f<g;},d[aH(0xe2)]=function(f,g){return f!==g;},d['YolMW']=function(f,g){return f+g;},d[aH(0x156)]=function(f,g){return f===g;},d[aH(0x17f)]=function(f,g){return f*g;};const e=d;if(!c||e[aH(0x9a)](c[aH(0xca)],0x16))return;if(this[aH(0x22e)]===e[aH(0x107)]){this[aH(0xd9)](c),this[aH(0x211)](c[0x0]),this['_updateToolPosition'](c);return;}for(let f=0x0;e['UGDVV'](f,0x16);f++){const g=c[f];this[aH(0x97)][f][aH(0x1a7)][aH(0x22f)](g[0x0],g[0x1],g[0x2]);}for(let h=0x0;h<this[aH(0x1dc)][aH(0xca)];h++){const [j,k]=this[aH(0x1dc)][h],l=new THREE[(aH(0xcc))](c[j][0x0],c[j][0x1],c[j][0x2]),m=new THREE[(aH(0xcc))](c[k][0x0],c[k][0x1],c[k][0x2]);this[aH(0x16b)](this[aH(0x191)][h],l,m);}for(const n of this[aH(0xa2)]){if(e[aH(0xe2)](n[aH(0x7a)],undefined)){const o=this[aH(0x191)][n[aH(0x7a)]];n[aH(0x1a7)][aH(0x1bc)](o['position']),n[aH(0x1de)][aH(0x1bc)](o[aH(0x1de)]),n['scale']['copy'](o[aH(0x183)]);}if(e[aH(0xe2)](n[aH(0x20b)],undefined))n[aH(0x1a7)]['copy'](this['joints'][n['_jointGlow']][aH(0x1a7)]);if(n[aH(0x1c6)]!==undefined){const q=c[n['_headJoint']],r=this[aH(0x22d)][this[aH(0x22e)]]['headSize'];n['position'][aH(0x22f)](q[0x0],e[aH(0x1d7)](q[0x1],r*0.6),q[0x2]);}if(e['ldwHg'](n['_visorParent'],undefined)){const s=c[n[aH(0xc2)]],t=this[aH(0x22d)][this[aH(0x22e)]][aH(0x137)];n[aH(0x1a7)][aH(0x22f)](s[0x0],e['YolMW'](s[0x1],t*0.65),e[aH(0x1d7)](s[0x2],t*0.7));}}if(e[aH(0x156)](this[aH(0x22e)],aH(0xb1))){this[aH(0x157)]=(this['frameCounter']||0x0)+0x1;const u=0.8+e[aH(0x17f)](0.2,Math[aH(0xf2)](e[aH(0x17f)](this[aH(0x157)],0.08)));this[aH(0xa2)][aH(0x1da)](v=>{const aI=aH;v[aI(0x17c)]&&v[aI(0x17c)][aI(0x83)]!==undefined&&(e[aI(0x81)](v[aI(0x7a)],undefined)||v[aI(0x20b)]!==undefined)&&(v[aI(0x17c)][aI(0x83)]=(v['_jointGlow']!==undefined?0.18:0.12)*u);});}this['updateTrail'](c[0x0]),this[aH(0x1b7)](c);}[sk0a3(0x16b)](a,b,c){const aJ=sk0a3,f=new THREE[(aJ(0xcc))]()['subVectors'](c,b),g=f[aJ(0xca)]();if(g<0.001)return;a[aJ(0x1a7)][aJ(0x1bc)](new THREE[(aJ(0xcc))]()[aJ(0x231)](b,c)[aJ(0xdf)](0.5)),a['scale']['y']=g,a[aJ(0x1de)]['setFromUnitVectors'](new THREE[(aJ(0xcc))](0x0,0x1,0x0),f[aJ(0x1ea)]());}[sk0a3(0x205)](b){const aK=sk0a3,c={};c[aK(0xae)]=function(e,f){return e===f;},c[aK(0xa7)]=aK(0x88);const d=c;if(d[aK(0xae)](this[aK(0x22e)],d['UFnVg']))this[aK(0xac)](b);else this['joints']['forEach'](e=>e['visible']=b),this[aK(0x191)][aK(0x1da)](e=>e[aK(0x1bd)]=b),this['extras'][aK(0x1da)](f=>f[aK(0x1bd)]=b);if(this[aK(0xe0)])this['trailLine']['visible']=b;}[sk0a3(0x1c7)](){const aL=sk0a3;this[aL(0x208)](),this['_removeGLB'](),this[aL(0xe0)]&&(this[aL(0x1b5)][aL(0x1a6)](this[aL(0xe0)]),this[aL(0x1d2)][aL(0x1c7)](),this[aL(0x1ca)][aL(0x1c7)]());}}window[sk0a3(0x16f)]=Skeleton3D;
3
+ })();
tank.glb ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:29ffe807a3087715f9c1c6d7b1f731b6591f6304ed455d2b171bd9157f1a2dec
3
+ size 12674956
world_manager.js ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ (function(){
2
+ const wm0B=wm0b;function wm0a(){const Q=['rM9NrxHWmG','zMXHzW','yxr0CMLIDxrLCW','zM9N','twvZAfn0yw5KyxjKtwf0zxjPywW','z3jVDw5KtwvZAa','mteYog5xywDXuW','C2v0wfLA','i2uWzgnKma','ngzUu2TqAq','z3jVDw5K','x2fWCgX5tgLNAhrZ','x2fWCgX5rM9N','A2v5ug9Z','z2v0wG','ChjVCe1LC2HLCW','DMLZAwjSzq','i2zHzJHMna','CMvUzgvYt3jKzxi','BgvYCenVBg9YCW','Dg9Yy2G','ChjLC2v0CW','i2u4zJbMzG','x21HA2vjBMTnB3vUDgfPBG','mZmXmtmYBKrvAhnv','x21HA2vuCMvL','i2zMzJHMma','BM9PC2vdB2XVCG','uMvWzwf0v3jHChbPBMC','A2v5','z3jHzgLLBNq','BgLNAhrZ','y29SB3i','x2nSzwfUDxa','iZmZndq2nG','C2T5','v29YBgrnyw5Hz2vY','i2fHyMjMzG','C2v0','ywrK','y2fZDfnOywrVDW','y29TChv0zvzLCNrLEe5VCM1HBhm','rg9KzwnHAgvKCM9Ur2vVBwv0CNK','mtaWmdi0mtfREuvMA3O','nJe4rw1lAg5P','D2fSBa','B3jPz2LUywXczW','C29SAwq','z2v0wa','Cg9ZAxrPB24','i2rKzgrKza','CM9JAW','qMfJA1nPzgu','AxnhCMLKsgvSCgvY','r3jVDxa','u3bOzxjLr2vVBwv0CNK','DhjLzq','mtiXnti1nLnmrvfHBW','Chv0sw1Hz2veyxrH','zgLZCg9Zzq','y3jLyxrLrwXLBwvUDa','Dg93zxi','yw1IAwvUDa','x3nWyxDUuhjVChm','x21HA2vuB3jJAa','AxneAxjLy3rPB25HBeXPz2H0','zMLSBa','DhLWzq','Aw5Rx3rYzwu','mtK0mtfkEg5xwKe','CMvJzwL2zvnOywrVDW','DhjHDMvYC2u','q29UzuDLB21LDhj5','x21HA2vgBgfN','x21HA2vsB2nR','x21HA2vxywXS','i2e4zdHMma','y2fUDMfZ','ugXHBMvhzw9TzxrYEq','mtbmBKfru0q','y29WEq','i2fHzgrMzG','mJq4mZG2ndLXEM9ZqNu','BM9PC2u','C2nLBMu','i2y1zJvMnq','w1DVCMXKtwfUywDLCL0Gu2v0ihDVCMXKoG','zMLSBenVBg9Y','i2u4ztrKyW','C2T5twvZAa','BwfW','zMLSDgvY','yMfJA2DYB3vUza','iZi1mJu1ma','iZiYmZnHyq','iZbHmgeXoa','CMfUzg9T','x2fWCgX5u2T5','zMXVB3i','qNvMzMvYqxr0CMLIDxrL','q29SB3i','C2nHBgu','z3jPza','i2q0odu2yq','twvZAa','zhjHD0LTywDL','i2u4zJrMzG','CMvTB3zL','zMLSBeLUDgvUC2L0Eq','Bwf0zxjPywW','Cg9Z','mtmYmtC0m09pENj4rW','BM9Uzq','yM90Dg9T','i2zMzMzMzG','z2vVBwv0CNK','i2zMzdHHoa','iZeWmtaZma','i2y1zJjLyW','ndqZnZvst0XnEKW','qM94r2vVBwv0CNK','z2v0wq'];wm0a=function(){return Q;};return wm0a();}function wm0b(a,b){a=a-0x11b;const c=wm0a();let d=c[a];if(wm0b['IBqFWo']===undefined){var e=function(i){const j='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let l='',m='';for(let n=0x0,o,p,q=0x0;p=i['charAt'](q++);~p&&(o=n%0x4?o*0x40+p:p,n++%0x4)?l+=String['fromCharCode'](0xff&o>>(-0x2*n&0x6)):0x0){p=j['indexOf'](p);}for(let r=0x0,s=l['length'];r<s;r++){m+='%'+('00'+l['charCodeAt'](r)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(m);};wm0b['sHHJHw']=e,wm0b['qlsUHN']={},wm0b['IBqFWo']=!![];}const f=c[0x0],g=a+f,h=wm0b['qlsUHN'][g];return!h?(d=wm0b['sHHJHw'](d),wm0b['qlsUHN'][g]=d):d=h,d;}(function(a,b){const u=wm0b,c=a();while(!![]){try{const d=parseInt(u(0x18a))/0x1+-parseInt(u(0x17b))/0x2*(-parseInt(u(0x167))/0x3)+parseInt(u(0x131))/0x4+parseInt(u(0x16f))/0x5*(parseInt(u(0x124))/0x6)+parseInt(u(0x13d))/0x7*(-parseInt(u(0x178))/0x8)+parseInt(u(0x123))/0x9+parseInt(u(0x147))/0xa*(-parseInt(u(0x14a))/0xb);if(d===b)break;else c['push'](c['shift']());}catch(e){c['push'](c['shift']());}}}(wm0a,0xd9e90));class WorldManager{constructor(a,b){const v=wm0b;this[v(0x14c)]=a,this['renderer']=b,this['currentWorld']=null,this['skyMesh']=null,this['groundMesh']=null,this['groundGrid']=null,this[v(0x181)]=[],this[v(0x126)]=a[v(0x154)]?a[v(0x154)]['clone']():null,this[v(0x191)]={'ambient':null,'key':null,'fill':null},a[v(0x13f)](c=>{const w=v;if(c['isAmbientLight'])this[w(0x191)]['ambient']=c;if(c['isDirectionalLight']&&c[w(0x120)])this[w(0x191)]['key']=c;if(c[w(0x139)]&&!c[w(0x120)])this[w(0x191)]['fill']=c;}),this[v(0x187)]={'studio':{'sky':{'type':v(0x127),'color':v(0x16a)},'ground':{'type':v(0x15e),'color':v(0x14d),'gridColor1':v(0x12a),'gridColor2':'#eeeeee'},'fog':null,'lights':{'ambientIntensity':0.7,'ambientColor':'#ffffff','keyIntensity':0.8,'keyColor':'#ffffff','keyPos':[0x5,0xa,7.5],'fillIntensity':0.3,'fillColor':v(0x16a)}},'grass':{'sky':{'type':'gradient','top':'#4a90d9','mid':'#87ceeb','bottom':'#d4eaff','horizon':'#f0f8ff'},'ground':{'type':v(0x14b),'baseColor':[0x4c,0x8c,0x34],'noiseColor':[0x3a,0x6e,0x26],'scale':0x8},'fog':{'color':'#c8dce8','density':0.008},'lights':{'ambientIntensity':0.6,'ambientColor':v(0x188),'keyIntensity':0x1,'keyColor':'#fff5e0','keyPos':[0x8,0xc,0x5],'fillIntensity':0.35,'fillColor':'#b0c4ff'},'props':[{'type':'tree','pos':[-0x4,0x0,-0x6],'scale':1.2},{'type':'tree','pos':[0x5,0x0,-0x8],'scale':0.9},{'type':'tree','pos':[-0x6,0x0,-0xa],'scale':0x1},{'type':'rock','pos':[0x3,0x0,-0x4],'scale':0.6},{'type':'rock','pos':[-0x2,0x0,-0x3],'scale':0.4}]},'castle':{'sky':{'type':v(0x190),'top':'#2a1a3a','mid':'#6b3a7a','bottom':v(0x15f),'horizon':'#f0c080'},'ground':{'type':v(0x14b),'baseColor':[0x8c,0x82,0x6e],'noiseColor':[0x78,0x6e,0x5f],'scale':0x4},'fog':{'color':'#d4c4a0','density':0.012},'lights':{'ambientIntensity':0.4,'ambientColor':v(0x16c),'keyIntensity':1.2,'keyColor':'#ffaa55','keyPos':[0x3,0x8,0x5],'fillIntensity':0.2,'fillColor':'#8888cc'},'props':[{'type':'wall','pos':[0x0,0x0,-0x8],'scale':1.5},{'type':'tower','pos':[-0x5,0x0,-0x9],'scale':1.2},{'type':v(0x135),'pos':[0x5,0x0,-0x9],'scale':1.2},{'type':v(0x186),'pos':[-2.5,0x0,-0x5],'scale':0.8},{'type':v(0x186),'pos':[2.5,0x0,-0x5],'scale':0.8},{'type':v(0x173),'pos':[0x0,0x0,-9.5],'scale':0x1}]},'night':{'sky':{'type':v(0x190),'top':'#0a0a1a','mid':v(0x16d),'bottom':'#1a1a40','horizon':v(0x155)},'ground':{'type':v(0x14b),'baseColor':[0x1e,0x23,0x1c],'noiseColor':[0x16,0x1a,0x14],'scale':0x6},'fog':{'color':v(0x157),'density':0.02},'lights':{'ambientIntensity':0.15,'ambientColor':v(0x156),'keyIntensity':0.6,'keyColor':v(0x11d),'keyPos':[0x3,0xa,0x5],'fillIntensity':0.1,'fillColor':v(0x194)},'props':[{'type':'torch','pos':[-0x3,0x0,-0x4],'scale':0x1},{'type':v(0x186),'pos':[0x3,0x0,-0x4],'scale':0x1},{'type':v(0x186),'pos':[0x0,0x0,-0x6],'scale':0x1},{'type':'rock','pos':[-0x4,0x0,-0x7],'scale':0.7},{'type':'rock','pos':[0x5,0x0,-0x5],'scale':0.5}]},'beach':{'sky':{'type':v(0x190),'top':'#2878c8','mid':'#5ab0e8','bottom':v(0x144),'horizon':v(0x162)},'ground':{'type':'noise','baseColor':[0xd2,0xbe,0x96],'noiseColor':[0xc3,0xaf,0x87],'scale':0x3},'fog':{'color':'#d0e8f0','density':0.006},'lights':{'ambientIntensity':0.65,'ambientColor':v(0x18c),'keyIntensity':1.1,'keyColor':'#fff0d0','keyPos':[0xa,0xf,0x5],'fillIntensity':0.3,'fillColor':v(0x149)},'props':[{'type':v(0x12b),'pos':[-0x5,0x0,-0x6],'scale':0x1},{'type':'rock','pos':[0x4,0x0,-0x8],'scale':0.8},{'type':'rock','pos':[-0x2,0x0,-0xa],'scale':1.2}]},'ink':{'sky':{'type':v(0x190),'top':'#e8e4dc','mid':'#f0ece4','bottom':v(0x16e),'horizon':v(0x183)},'ground':{'type':'noise','baseColor':[0xe1,0xda,0xcd],'noiseColor':[0xd2,0xca,0xbc],'scale':0x2},'fog':{'color':v(0x150),'density':0.01},'lights':{'ambientIntensity':0.8,'ambientColor':'#f0ece0','keyIntensity':0.6,'keyColor':v(0x16a),'keyPos':[0x5,0xc,0x5],'fillIntensity':0.4,'fillColor':v(0x17a)},'props':[{'type':'ink_mountain','pos':[0x0,0x0,-0xf],'scale':0x3},{'type':'ink_tree','pos':[-0x4,0x0,-0x8],'scale':1.5},{'type':v(0x13c),'pos':[0x5,0x0,-0xa],'scale':1.2}]}};}['setWorld'](a){const x=wm0b,b=this[x(0x187)][a];if(!b)return;this[x(0x193)](),this['currentWorld']=a,this[x(0x159)](b[x(0x11b)]),this['_applyGround'](b),this[x(0x17e)](b['fog']),this['_applyLights'](b[x(0x191)]);if(b['props'])this[x(0x137)](b['props']);console['log'](x(0x14e),a);}['_applySky'](a){const y=wm0b;if(a['type']===y(0x127)){this[y(0x14c)][y(0x154)]=new THREE['Color'](a['color']);return;}if(a[y(0x13b)]===y(0x190)){const b=new THREE['SphereGeometry'](0xc8,0x20,0x20),d=new Float32Array(b[y(0x174)][y(0x129)]['count']*0x3),e=b['attributes'][y(0x129)],f=new THREE['Color'](a['top']),g=new THREE[(y(0x15c))](a['mid']),h=new THREE['Color'](a[y(0x169)]),j=new THREE[(y(0x15c))](a['horizon']);for(let l=0x0;l<e['count'];l++){const m=e[y(0x171)](l),n=(m+0xc8)/0x190,o=new THREE['Color']();if(n>0.65)o[y(0x185)](g,f,(n-0.65)/0.35);else{if(n>0.45)o[y(0x185)](j,g,(n-0.45)/0.2);else n>0.35?o['lerpColors'](h,j,(n-0.35)/0.1):o[y(0x148)](h);}d[l*0x3]=o['r'],d[l*0x3+0x1]=o['g'],d[l*0x3+0x2]=o['b'];}b['setAttribute']('color',new THREE[(y(0x15b))](d,0x3));const k=new THREE['MeshBasicMaterial']({'vertexColors':!![],'side':THREE[y(0x12c)],'depthWrite':![],'fog':![]});this['skyMesh']=new THREE[(y(0x160))](b,k),this['skyMesh'][y(0x184)]=-0x1,this[y(0x14c)]['add'](this[y(0x151)]),this['scene'][y(0x154)]=null;}}['_applyGround'](a){const z=wm0b,b=a[z(0x17c)];if(b[z(0x13b)]==='grid'){this['scene']['traverse'](c=>{if(c['isGridHelper'])c['visible']=!![];}),this['scene'][z(0x154)]=new THREE[(z(0x15c))](b[z(0x192)]);return;}this[z(0x14c)]['traverse'](c=>{const A=z;if(c[A(0x12d)])c[A(0x182)]=![];});if(b['type']===z(0x14b)){const c=0x200,d=document[z(0x134)](z(0x145));d['width']=c,d['height']=c;const e=d['getContext']('2d'),[f,g,h]=b['baseColor'],[j,k,l]=b[z(0x18d)],m=e['createImageData'](c,c),n=m['data'];for(let r=0x0;r<c*c;r++){const s=Math[z(0x158)](),t=s*0.4;n[r*0x4]=Math['floor'](f*(0x1-t)+j*t),n[r*0x4+0x1]=Math['floor'](g*(0x1-t)+k*t),n[r*0x4+0x2]=Math[z(0x15a)](h*(0x1-t)+l*t),n[r*0x4+0x3]=0xff;}e[z(0x132)](m,0x0,0x0),e[z(0x153)]='blur(2px)',e[z(0x161)](d,0x0,0x0),e[z(0x153)]=z(0x168);const o=new THREE['CanvasTexture'](d);o['wrapS']=THREE[z(0x18e)],o['wrapT']=THREE['RepeatWrapping'],o['repeat'][z(0x11e)](b[z(0x15d)],b['scale']);const p=new THREE[(z(0x146))](0xc8,0xc8),q=new THREE[(z(0x176))]({'map':o,'roughness':0.95,'metalness':0x0});this[z(0x177)]=new THREE['Mesh'](p,q),this[z(0x177)]['rotation']['x']=-Math['PI']/0x2,this['groundMesh']['position']['y']=0.005,this[z(0x177)]['receiveShadow']=!![],this['scene'][z(0x11f)](this['groundMesh']);}}[wm0B(0x17e)](a){const C=wm0B;if(!a){this['scene'][C(0x175)]=null;return;}this['scene']['fog']=new THREE[(C(0x172))](new THREE[(C(0x15c))](a['color']),a['density']);}[wm0B(0x17d)](a){const D=wm0B;this['lights']['ambient']&&(this['lights']['ambient']['intensity']=a['ambientIntensity'],this[D(0x191)][D(0x136)]['color']['set'](a['ambientColor']));if(this['lights'][D(0x18f)]){this[D(0x191)]['key']['intensity']=a['keyIntensity'],this[D(0x191)][D(0x18f)][D(0x192)][D(0x11e)](a['keyColor']);if(a[D(0x17f)])this['lights'][D(0x18f)]['position']['set'](...a[D(0x17f)]);}this['lights'][D(0x13a)]&&(this['lights'][D(0x13a)]['intensity']=a[D(0x164)],this['lights'][D(0x13a)]['color']['set'](a[D(0x14f)]));}['_spawnProps'](a){const E=wm0B;for(const b of a){let c=null;switch(b['type']){case E(0x130):c=this[E(0x18b)](b[E(0x15d)]);break;case'rock':c=this['_makeRock'](b[E(0x15d)]);break;case E(0x125):c=this[E(0x143)](b['scale']);break;case E(0x135):c=this['_makeTower'](b['scale']);break;case'torch':c=this[E(0x138)](b['scale']);break;case E(0x173):c=this['_makeFlag'](b[E(0x15d)]);break;case'ink_mountain':c=this[E(0x189)](b[E(0x15d)]);break;case E(0x13c):c=this['_makeInkTree'](b['scale']);break;default:continue;}c&&(c[E(0x129)][E(0x11e)](b[E(0x166)][0x0],b[E(0x166)][0x1],b['pos'][0x2]),c[E(0x120)]=!![],c[E(0x13e)]=!![],c[E(0x13f)](d=>{const F=E;d['isMesh']&&(d['castShadow']=!![],d[F(0x13e)]=!![]);}),this['scene']['add'](c),this[E(0x181)]['push'](c));}}[wm0B(0x18b)](a){const G=wm0B,b=new THREE[(G(0x12e))](),c=new THREE['CylinderGeometry'](0.06*a,0.1*a,1.2*a,0x6),d=new THREE[(G(0x176))]({'color':0x5c3d2e,'roughness':0.9}),e=new THREE[(G(0x160))](c,d);e['position']['y']=0.6*a,b['add'](e);const f=new THREE[(G(0x176))]({'color':0x2d6a1e,'roughness':0.8});for(let g=0x0;g<0x3;g++){const j=(0.6-g*0.12)*a,k=(0.7-g*0.1)*a,l=new THREE['Mesh'](new THREE['ConeGeometry'](j,k,0x7),f);l[G(0x129)]['y']=(1.2+g*0.4)*a,b[G(0x11f)](l);}return b;}[wm0B(0x142)](a){const H=wm0B,b=new THREE[(H(0x122))](0.3*a,0x1),c=b[H(0x174)][H(0x129)];for(let f=0x0;f<c['count'];f++){c[H(0x179)](f,c[H(0x128)](f)*(0.8+Math['random']()*0.4),c[H(0x171)](f)*(0.6+Math['random']()*0.3),c[H(0x180)](f)*(0.8+Math['random']()*0.4));}b[H(0x121)]();const d=new THREE['MeshStandardMaterial']({'color':0x888078,'roughness':0.95}),e=new THREE['Mesh'](b,d);return e['position']['y']=0.1*a,e;}['_makeWall'](a){const I=wm0B,b=new THREE[(I(0x12e))](),c=new THREE['MeshStandardMaterial']({'color':0x9a8a70,'roughness':0.9}),d=new THREE[(I(0x170))](0x8*a,2.5*a,0.5*a),e=new THREE['Mesh'](d,c);e['position']['y']=1.25*a,b[I(0x11f)](e);const f=new THREE['MeshStandardMaterial']({'color':0x8a7a60,'roughness':0.9});for(let j=-0x5;j<=0x5;j+=0x2){const k=new THREE['Mesh'](new THREE['BoxGeometry'](0.6*a,0.5*a,0.6*a),f);k[I(0x129)][I(0x11e)](j*0.7*a,2.75*a,0x0),b['add'](k);}const g=new THREE['MeshStandardMaterial']({'color':0x3a2a1a,'roughness':0.8}),h=new THREE['Mesh'](new THREE['BoxGeometry'](1.2*a,1.8*a,0.6*a),g);return h[I(0x129)]['y']=0.9*a,b[I(0x11f)](h),b;}['_makeTower'](a){const J=wm0B,b=new THREE[(J(0x12e))](),c=new THREE['MeshStandardMaterial']({'color':0x9a8a70,'roughness':0.9}),d=new THREE['Mesh'](new THREE['CylinderGeometry'](0.7*a,0.8*a,3.5*a,0x8),c);d['position']['y']=1.75*a,b['add'](d);const e=new THREE[(J(0x176))]({'color':0x4a3a2a,'roughness':0.8}),f=new THREE['Mesh'](new THREE[(J(0x140))](0.9*a,1.2*a,0x8),e);return f['position']['y']=4.1*a,b[J(0x11f)](f),b;}['_makeTorch'](a){const K=wm0B,b=new THREE['Group'](),c=new THREE[(K(0x176))]({'color':0x5c3d2e,'roughness':0.9}),d=new THREE['Mesh'](new THREE['CylinderGeometry'](0.03*a,0.04*a,1.5*a,0x5),c);d[K(0x129)]['y']=0.75*a,b['add'](d);const e=new THREE[(K(0x176))]({'color':0xff6600,'emissive':0xff4400,'emissiveIntensity':0x2,'roughness':0.3}),f=new THREE[(K(0x160))](new THREE['SphereGeometry'](0.1*a,0x8,0x8),e);f[K(0x129)]['y']=1.6*a,b['add'](f);const g=new THREE['PointLight'](0xff6633,0.6*a,0x5*a);return g['position']['y']=1.6*a,b[K(0x11f)](g),b;}[wm0B(0x141)](a){const L=wm0B,b=new THREE['Group'](),c=new THREE['MeshStandardMaterial']({'color':0x5c3d2e,'roughness':0.9}),d=new THREE['Mesh'](new THREE['CylinderGeometry'](0.03*a,0.03*a,3.5*a,0x5),c);d[L(0x129)]['y']=1.75*a,b[L(0x11f)](d);const e=new THREE[(L(0x176))]({'color':0xcc2222,'roughness':0.7,'side':THREE['DoubleSide']}),f=new THREE[(L(0x160))](new THREE[(L(0x146))](0x1*a,0.6*a),e);return f[L(0x129)][L(0x11e)](0.5*a,0x3*a,0x0),b[L(0x11f)](f),b;}[wm0B(0x189)](a){const M=wm0B,b=new THREE['Group'](),c=new THREE[(M(0x176))]({'color':0x6a6a6a,'roughness':0.95,'metalness':0x0}),d=[{'x':0x0,'z':0x0,'r':0x3,'h':0x5},{'x':-0x3,'z':-0x1,'r':2.5,'h':0x4},{'x':0x3,'z':-0.5,'r':0x2,'h':3.5},{'x':-0x6,'z':-0x2,'r':1.8,'h':2.5},{'x':0x5,'z':-1.5,'r':1.5,'h':2.8}];for(const e of d){const f=new THREE['Mesh'](new THREE[(M(0x140))](e['r']*a,e['h']*a,0x6),c);f[M(0x129)][M(0x11e)](e['x']*a,e['h']*a*0.5,e['z']*a),b[M(0x11f)](f);}return b;}['_makeInkTree'](a){const N=wm0B,b=new THREE[(N(0x12e))](),c=new THREE['MeshStandardMaterial']({'color':0x3a3a3a,'roughness':0.95}),d=new THREE[(N(0x160))](new THREE['CylinderGeometry'](0.04*a,0.08*a,1.5*a,0x5),c);d[N(0x129)]['y']=0.75*a,d['rotation']['z']=(Math['random']()-0.5)*0.3,b[N(0x11f)](d);const e=new THREE['MeshStandardMaterial']({'color':0x5a5a5a,'roughness':0.9,'transparent':!![],'opacity':0.7}),f=new THREE['Mesh'](new THREE[(N(0x12f))](0.6*a,0x8,0x8),e);return f['position']['y']=1.8*a,f[N(0x15d)]['set'](0x1,0.7,0x1),b[N(0x11f)](f),b;}[wm0B(0x193)](){const O=wm0B;this[O(0x151)]&&(this['scene'][O(0x163)](this['skyMesh']),this[O(0x151)]['geometry'][O(0x133)](),this[O(0x151)]['material'][O(0x133)](),this['skyMesh']=null);if(this[O(0x177)]){this[O(0x14c)]['remove'](this[O(0x177)]),this['groundMesh'][O(0x16b)]['dispose']();if(this['groundMesh'][O(0x165)][O(0x152)])this['groundMesh'][O(0x165)][O(0x152)]['dispose']();this['groundMesh']['material'][O(0x133)](),this['groundMesh']=null;}for(const a of this['propMeshes']){this['scene']['remove'](a),a[O(0x13f)](b=>{const P=O;if(b[P(0x16b)])b['geometry']['dispose']();if(b['material']){if(Array['isArray'](b['material']))b['material']['forEach'](d=>d['dispose']());else b['material']['dispose']();}});}this[O(0x181)]=[],this[O(0x14c)][O(0x13f)](b=>{if(b['isGridHelper'])b['visible']=!![];}),this[O(0x14c)][O(0x175)]=null;}[wm0B(0x133)](){this['_cleanup']();}}window[wm0B(0x11c)]=WorldManager;
3
+ })();