@needle-tools/engine 2.54.2-pre → 2.55.0-pre

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/needle-engine.d.ts +27 -4
  3. package/dist/needle-engine.js +352 -352
  4. package/dist/needle-engine.js.map +3 -3
  5. package/dist/needle-engine.min.js +38 -38
  6. package/dist/needle-engine.min.js.map +3 -3
  7. package/dist/needle-engine.tsbuildinfo +1 -1
  8. package/lib/engine/engine_lightdata.js +1 -1
  9. package/lib/engine/engine_lightdata.js.map +1 -1
  10. package/lib/engine/engine_mainloop_utils.js +8 -0
  11. package/lib/engine/engine_mainloop_utils.js.map +1 -1
  12. package/lib/engine/engine_physics.d.ts +1 -1
  13. package/lib/engine/engine_physics.js +44 -3
  14. package/lib/engine/engine_physics.js.map +1 -1
  15. package/lib/engine/engine_physics.types.d.ts +13 -0
  16. package/lib/engine/engine_physics.types.js +7 -0
  17. package/lib/engine/engine_physics.types.js.map +1 -1
  18. package/lib/engine/engine_setup.js +2 -2
  19. package/lib/engine/engine_setup.js.map +1 -1
  20. package/lib/engine/engine_time.d.ts +1 -0
  21. package/lib/engine/engine_time.js +7 -0
  22. package/lib/engine/engine_time.js.map +1 -1
  23. package/lib/engine/engine_types.d.ts +4 -1
  24. package/lib/engine/engine_types.js.map +1 -1
  25. package/lib/engine/engine_utils.d.ts +1 -0
  26. package/lib/engine/engine_utils.js +3 -0
  27. package/lib/engine/engine_utils.js.map +1 -1
  28. package/lib/engine-components/Collider.d.ts +2 -0
  29. package/lib/engine-components/Collider.js +4 -0
  30. package/lib/engine-components/Collider.js.map +1 -1
  31. package/lib/engine-components/ParticleSystem.d.ts +1 -0
  32. package/lib/engine-components/ParticleSystem.js +10 -5
  33. package/lib/engine-components/ParticleSystem.js.map +1 -1
  34. package/lib/engine-components/ParticleSystemModules.d.ts +1 -1
  35. package/lib/engine-components/ParticleSystemModules.js +25 -19
  36. package/lib/engine-components/ParticleSystemModules.js.map +1 -1
  37. package/lib/engine-components/Renderer.d.ts +1 -0
  38. package/lib/engine-components/Renderer.js +5 -0
  39. package/lib/engine-components/Renderer.js.map +1 -1
  40. package/lib/engine-components/RigidBody.js +1 -19
  41. package/lib/engine-components/RigidBody.js.map +1 -1
  42. package/lib/engine-components/SyncedTransform.js +1 -3
  43. package/lib/engine-components/SyncedTransform.js.map +1 -1
  44. package/lib/engine-components/VideoPlayer.d.ts +2 -1
  45. package/lib/engine-components/VideoPlayer.js +54 -51
  46. package/lib/engine-components/VideoPlayer.js.map +1 -1
  47. package/lib/engine-components/WebARSessionRoot.js +5 -0
  48. package/lib/engine-components/WebARSessionRoot.js.map +1 -1
  49. package/lib/engine-components/WebXR.js +13 -13
  50. package/lib/engine-components/WebXR.js.map +1 -1
  51. package/lib/engine-components/WebXRController.js +1 -2
  52. package/lib/engine-components/WebXRController.js.map +1 -1
  53. package/lib/tsconfig.tsbuildinfo +1 -1
  54. package/package.json +1 -1
  55. package/src/engine/engine_lightdata.ts +1 -1
  56. package/src/engine/engine_mainloop_utils.ts +6 -0
  57. package/src/engine/engine_physics.ts +47 -5
  58. package/src/engine/engine_physics.types.ts +17 -0
  59. package/src/engine/engine_setup.ts +2 -2
  60. package/src/engine/engine_time.ts +7 -1
  61. package/src/engine/engine_types.ts +5 -2
  62. package/src/engine/engine_utils.ts +4 -0
  63. package/src/engine-components/Collider.ts +3 -0
  64. package/src/engine-components/ParticleSystem.ts +10 -5
  65. package/src/engine-components/ParticleSystemModules.ts +27 -20
  66. package/src/engine-components/Renderer.ts +6 -0
  67. package/src/engine-components/RigidBody.ts +1 -20
  68. package/src/engine-components/SyncedTransform.ts +1 -3
  69. package/src/engine-components/VideoPlayer.ts +55 -51
  70. package/src/engine-components/WebARSessionRoot.ts +5 -0
  71. package/src/engine-components/WebXR.ts +15 -13
  72. package/src/engine-components/WebXRController.ts +1 -2
@@ -1,4 +1,4 @@
1
- var Vg=Object.create;var Hs=Object.defineProperty;var lp=Object.getOwnPropertyDescriptor;var zg=Object.getOwnPropertyNames;var Wg=Object.getPrototypeOf,Ng=Object.prototype.hasOwnProperty;var Xg=(o,e,t)=>e in o?Hs(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var Xc=(o=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(o,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):o)(function(o){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+o+'" is not supported')});var Fs=(o,e)=>()=>(e||o((e={exports:{}}).exports,e),e.exports),cp=(o,e)=>{for(var t in e)Hs(o,t,{get:e[t],enumerable:!0})},Qg=(o,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of zg(e))!Ng.call(o,n)&&n!==t&&Hs(o,n,{get:()=>e[n],enumerable:!(i=lp(e,n))||i.enumerable});return o};var Ha=(o,e,t)=>(t=o!=null?Vg(Wg(o)):{},Qg(e||!o||!o.__esModule?Hs(t,"default",{value:o,enumerable:!0}):t,o));var v=(o,e,t,i)=>{for(var n=i>1?void 0:i?lp(e,t):e,r=o.length-1,s;r>=0;r--)(s=o[r])&&(n=(i?s(e,t,n):s(n))||n);return i&&n&&Hs(e,t,n),n};var I=(o,e,t)=>(Xg(o,typeof e!="symbol"?e+"":e,t),t);var ml=Fs((yf,kd)=>{parcelRequire=function(o,e,t,i){var n,r=typeof parcelRequire=="function"&&parcelRequire,s=typeof Xc=="function"&&Xc;function a(l,u){if(!e[l]){if(!o[l]){var h=typeof parcelRequire=="function"&&parcelRequire;if(!u&&h)return h(l,!0);if(r)return r(l,!0);if(s&&typeof l=="string")return s(l);var g=new Error("Cannot find module '"+l+"'");throw g.code="MODULE_NOT_FOUND",g}_.resolve=function(x){return o[l][1][x]||x},_.cache={};var E=e[l]=new a.Module(l);o[l][0].call(E.exports,_,E,E.exports,this)}return e[l].exports;function _(x){return a(_.resolve(x))}}a.isParcelRequire=!0,a.Module=function(l){this.id=l,this.bundle=a,this.exports={}},a.modules=o,a.cache=e,a.parent=r,a.register=function(l,u){o[l]=[function(h,g){g.exports=u},{}]};for(var c=0;c<t.length;c++)try{a(t[c])}catch(l){n||(n=l)}if(t.length){var d=a(t[t.length-1]);typeof yf=="object"&&typeof kd<"u"?kd.exports=d:typeof define=="function"&&define.amd?define(function(){return d}):i&&(this[i]=d)}if(parcelRequire=a,n)throw n;return a}({EgBh:[function(o,e,t){var i={};i.useBlobBuilder=function(){try{return new Blob([]),!1}catch{return!0}}(),i.useArrayBufferView=!i.useBlobBuilder&&function(){try{return new Blob([new Uint8Array([])]).size===0}catch{return!0}}(),e.exports.binaryFeatures=i;var n=e.exports.BlobBuilder;function r(){this._pieces=[],this._parts=[]}typeof window<"u"&&(n=e.exports.BlobBuilder=window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder||window.BlobBuilder),r.prototype.append=function(s){typeof s=="number"?this._pieces.push(s):(this.flush(),this._parts.push(s))},r.prototype.flush=function(){if(this._pieces.length>0){var s=new Uint8Array(this._pieces);i.useArrayBufferView||(s=s.buffer),this._parts.push(s),this._pieces=[]}},r.prototype.getBuffer=function(){if(this.flush(),i.useBlobBuilder){for(var s=new n,a=0,c=this._parts.length;a<c;a++)s.append(this._parts[a]);return s.getBlob()}return new Blob(this._parts)},e.exports.BufferBuilder=r},{}],kdPp:[function(o,e,t){var i=o("./bufferbuilder").BufferBuilder,n=o("./bufferbuilder").binaryFeatures,r={unpack:function(l){return new s(l).unpack()},pack:function(l){var u=new a;return u.pack(l),u.getBuffer()}};function s(l){this.index=0,this.dataBuffer=l,this.dataView=new Uint8Array(this.dataBuffer),this.length=this.dataBuffer.byteLength}function a(){this.bufferBuilder=new i}function c(l){var u=l.charCodeAt(0);return u<=2047?"00":u<=65535?"000":u<=2097151?"0000":u<=67108863?"00000":"000000"}function d(l){return l.length>600?new Blob([l]).size:l.replace(/[^\u0000-\u007F]/g,c).length}e.exports=r,s.prototype.unpack=function(){var l,u=this.unpack_uint8();if(u<128)return u;if((224^u)<32)return(224^u)-32;if((l=160^u)<=15)return this.unpack_raw(l);if((l=176^u)<=15)return this.unpack_string(l);if((l=144^u)<=15)return this.unpack_array(l);if((l=128^u)<=15)return this.unpack_map(l);switch(u){case 192:return null;case 193:return;case 194:return!1;case 195:return!0;case 202:return this.unpack_float();case 203:return this.unpack_double();case 204:return this.unpack_uint8();case 205:return this.unpack_uint16();case 206:return this.unpack_uint32();case 207:return this.unpack_uint64();case 208:return this.unpack_int8();case 209:return this.unpack_int16();case 210:return this.unpack_int32();case 211:return this.unpack_int64();case 212:case 213:case 214:case 215:return;case 216:return l=this.unpack_uint16(),this.unpack_string(l);case 217:return l=this.unpack_uint32(),this.unpack_string(l);case 218:return l=this.unpack_uint16(),this.unpack_raw(l);case 219:return l=this.unpack_uint32(),this.unpack_raw(l);case 220:return l=this.unpack_uint16(),this.unpack_array(l);case 221:return l=this.unpack_uint32(),this.unpack_array(l);case 222:return l=this.unpack_uint16(),this.unpack_map(l);case 223:return l=this.unpack_uint32(),this.unpack_map(l)}},s.prototype.unpack_uint8=function(){var l=255&this.dataView[this.index];return this.index++,l},s.prototype.unpack_uint16=function(){var l=this.read(2),u=256*(255&l[0])+(255&l[1]);return this.index+=2,u},s.prototype.unpack_uint32=function(){var l=this.read(4),u=256*(256*(256*l[0]+l[1])+l[2])+l[3];return this.index+=4,u},s.prototype.unpack_uint64=function(){var l=this.read(8),u=256*(256*(256*(256*(256*(256*(256*l[0]+l[1])+l[2])+l[3])+l[4])+l[5])+l[6])+l[7];return this.index+=8,u},s.prototype.unpack_int8=function(){var l=this.unpack_uint8();return l<128?l:l-256},s.prototype.unpack_int16=function(){var l=this.unpack_uint16();return l<32768?l:l-65536},s.prototype.unpack_int32=function(){var l=this.unpack_uint32();return l<Math.pow(2,31)?l:l-Math.pow(2,32)},s.prototype.unpack_int64=function(){var l=this.unpack_uint64();return l<Math.pow(2,63)?l:l-Math.pow(2,64)},s.prototype.unpack_raw=function(l){if(this.length<this.index+l)throw new Error("BinaryPackFailure: index is out of range "+this.index+" "+l+" "+this.length);var u=this.dataBuffer.slice(this.index,this.index+l);return this.index+=l,u},s.prototype.unpack_string=function(l){for(var u,h,g=this.read(l),E=0,_="";E<l;)(u=g[E])<128?(_+=String.fromCharCode(u),E++):(192^u)<32?(h=(192^u)<<6|63&g[E+1],_+=String.fromCharCode(h),E+=2):(h=(15&u)<<12|(63&g[E+1])<<6|63&g[E+2],_+=String.fromCharCode(h),E+=3);return this.index+=l,_},s.prototype.unpack_array=function(l){for(var u=new Array(l),h=0;h<l;h++)u[h]=this.unpack();return u},s.prototype.unpack_map=function(l){for(var u={},h=0;h<l;h++){var g=this.unpack(),E=this.unpack();u[g]=E}return u},s.prototype.unpack_float=function(){var l=this.unpack_uint32(),u=(l>>23&255)-127;return(l>>31===0?1:-1)*(8388607&l|8388608)*Math.pow(2,u-23)},s.prototype.unpack_double=function(){var l=this.unpack_uint32(),u=this.unpack_uint32(),h=(l>>20&2047)-1023;return(l>>31===0?1:-1)*((1048575&l|1048576)*Math.pow(2,h-20)+u*Math.pow(2,h-52))},s.prototype.read=function(l){var u=this.index;if(u+l<=this.length)return this.dataView.subarray(u,u+l);throw new Error("BinaryPackFailure: read index out of range")},a.prototype.getBuffer=function(){return this.bufferBuilder.getBuffer()},a.prototype.pack=function(l){var u=typeof l;if(u==="string")this.pack_string(l);else if(u==="number")Math.floor(l)===l?this.pack_integer(l):this.pack_double(l);else if(u==="boolean")l===!0?this.bufferBuilder.append(195):l===!1&&this.bufferBuilder.append(194);else if(u==="undefined")this.bufferBuilder.append(192);else{if(u!=="object")throw new Error('Type "'+u+'" not yet supported');if(l===null)this.bufferBuilder.append(192);else{var h=l.constructor;if(h==Array)this.pack_array(l);else if(h==Blob||h==File||l instanceof Blob||l instanceof File)this.pack_bin(l);else if(h==ArrayBuffer)n.useArrayBufferView?this.pack_bin(new Uint8Array(l)):this.pack_bin(l);else if("BYTES_PER_ELEMENT"in l)n.useArrayBufferView?this.pack_bin(new Uint8Array(l.buffer)):this.pack_bin(l.buffer);else if(h==Object||h.toString().startsWith("class"))this.pack_object(l);else if(h==Date)this.pack_string(l.toString());else{if(typeof l.toBinaryPack!="function")throw new Error('Type "'+h.toString()+'" not yet supported');this.bufferBuilder.append(l.toBinaryPack())}}}this.bufferBuilder.flush()},a.prototype.pack_bin=function(l){var u=l.length||l.byteLength||l.size;if(u<=15)this.pack_uint8(160+u);else if(u<=65535)this.bufferBuilder.append(218),this.pack_uint16(u);else{if(!(u<=4294967295))throw new Error("Invalid length");this.bufferBuilder.append(219),this.pack_uint32(u)}this.bufferBuilder.append(l)},a.prototype.pack_string=function(l){var u=d(l);if(u<=15)this.pack_uint8(176+u);else if(u<=65535)this.bufferBuilder.append(216),this.pack_uint16(u);else{if(!(u<=4294967295))throw new Error("Invalid length");this.bufferBuilder.append(217),this.pack_uint32(u)}this.bufferBuilder.append(l)},a.prototype.pack_array=function(l){var u=l.length;if(u<=15)this.pack_uint8(144+u);else if(u<=65535)this.bufferBuilder.append(220),this.pack_uint16(u);else{if(!(u<=4294967295))throw new Error("Invalid length");this.bufferBuilder.append(221),this.pack_uint32(u)}for(var h=0;h<u;h++)this.pack(l[h])},a.prototype.pack_integer=function(l){if(l>=-32&&l<=127)this.bufferBuilder.append(255&l);else if(l>=0&&l<=255)this.bufferBuilder.append(204),this.pack_uint8(l);else if(l>=-128&&l<=127)this.bufferBuilder.append(208),this.pack_int8(l);else if(l>=0&&l<=65535)this.bufferBuilder.append(205),this.pack_uint16(l);else if(l>=-32768&&l<=32767)this.bufferBuilder.append(209),this.pack_int16(l);else if(l>=0&&l<=4294967295)this.bufferBuilder.append(206),this.pack_uint32(l);else if(l>=-2147483648&&l<=2147483647)this.bufferBuilder.append(210),this.pack_int32(l);else if(l>=-9223372036854776e3&&l<=9223372036854776e3)this.bufferBuilder.append(211),this.pack_int64(l);else{if(!(l>=0&&l<=18446744073709552e3))throw new Error("Invalid integer");this.bufferBuilder.append(207),this.pack_uint64(l)}},a.prototype.pack_double=function(l){var u=0;l<0&&(u=1,l=-l);var h=Math.floor(Math.log(l)/Math.LN2),g=l/Math.pow(2,h)-1,E=Math.floor(g*Math.pow(2,52)),_=Math.pow(2,32),x=u<<31|h+1023<<20|E/_&1048575,m=E%_;this.bufferBuilder.append(203),this.pack_int32(x),this.pack_int32(m)},a.prototype.pack_object=function(l){var u=Object.keys(l).length;if(u<=15)this.pack_uint8(128+u);else if(u<=65535)this.bufferBuilder.append(222),this.pack_uint16(u);else{if(!(u<=4294967295))throw new Error("Invalid length");this.bufferBuilder.append(223),this.pack_uint32(u)}for(var h in l)l.hasOwnProperty(h)&&(this.pack(h),this.pack(l[h]))},a.prototype.pack_uint8=function(l){this.bufferBuilder.append(l)},a.prototype.pack_uint16=function(l){this.bufferBuilder.append(l>>8),this.bufferBuilder.append(255&l)},a.prototype.pack_uint32=function(l){var u=4294967295&l;this.bufferBuilder.append((4278190080&u)>>>24),this.bufferBuilder.append((16711680&u)>>>16),this.bufferBuilder.append((65280&u)>>>8),this.bufferBuilder.append(255&u)},a.prototype.pack_uint64=function(l){var u=l/Math.pow(2,32),h=l%Math.pow(2,32);this.bufferBuilder.append((4278190080&u)>>>24),this.bufferBuilder.append((16711680&u)>>>16),this.bufferBuilder.append((65280&u)>>>8),this.bufferBuilder.append(255&u),this.bufferBuilder.append((4278190080&h)>>>24),this.bufferBuilder.append((16711680&h)>>>16),this.bufferBuilder.append((65280&h)>>>8),this.bufferBuilder.append(255&h)},a.prototype.pack_int8=function(l){this.bufferBuilder.append(255&l)},a.prototype.pack_int16=function(l){this.bufferBuilder.append((65280&l)>>8),this.bufferBuilder.append(255&l)},a.prototype.pack_int32=function(l){this.bufferBuilder.append(l>>>24&255),this.bufferBuilder.append((16711680&l)>>>16),this.bufferBuilder.append((65280&l)>>>8),this.bufferBuilder.append(255&l)},a.prototype.pack_int64=function(l){var u=Math.floor(l/Math.pow(2,32)),h=l%Math.pow(2,32);this.bufferBuilder.append((4278190080&u)>>>24),this.bufferBuilder.append((16711680&u)>>>16),this.bufferBuilder.append((65280&u)>>>8),this.bufferBuilder.append(255&u),this.bufferBuilder.append((4278190080&h)>>>24),this.bufferBuilder.append((16711680&h)>>>16),this.bufferBuilder.append((65280&h)>>>8),this.bufferBuilder.append(255&h)}},{"./bufferbuilder":"EgBh"}],iSxC:[function(o,e,t){"use strict";function i(f,p,b){return p in f?Object.defineProperty(f,p,{value:b,enumerable:!0,configurable:!0,writable:!0}):f[p]=b,f}function n(f){return(n=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(p){return typeof p}:function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p})(f)}Object.defineProperty(t,"__esModule",{value:!0}),t.extractVersion=a,t.wrapPeerConnectionEvent=c,t.disableLog=d,t.disableWarnings=l,t.log=u,t.deprecated=h,t.detectBrowser=g,t.compactObject=_,t.walkStats=x,t.filterStats=m;var r=!0,s=!0;function a(f,p,b){var w=f.match(p);return w&&w.length>=b&&parseInt(w[b],10)}function c(f,p,b){if(f.RTCPeerConnection){var w=f.RTCPeerConnection.prototype,C=w.addEventListener;w.addEventListener=function(S,A){if(S!==p)return C.apply(this,arguments);var D=function(k){var j=b(k);j&&(A.handleEvent?A.handleEvent(j):A(j))};return this._eventMap=this._eventMap||{},this._eventMap[p]||(this._eventMap[p]=new Map),this._eventMap[p].set(A,D),C.apply(this,[S,D])};var T=w.removeEventListener;w.removeEventListener=function(S,A){if(S!==p||!this._eventMap||!this._eventMap[p])return T.apply(this,arguments);if(!this._eventMap[p].has(A))return T.apply(this,arguments);var D=this._eventMap[p].get(A);return this._eventMap[p].delete(A),this._eventMap[p].size===0&&delete this._eventMap[p],Object.keys(this._eventMap).length===0&&delete this._eventMap,T.apply(this,[S,D])},Object.defineProperty(w,"on"+p,{get:function(){return this["_on"+p]},set:function(S){this["_on"+p]&&(this.removeEventListener(p,this["_on"+p]),delete this["_on"+p]),S&&this.addEventListener(p,this["_on"+p]=S)},enumerable:!0,configurable:!0})}}function d(f){return typeof f!="boolean"?new Error("Argument type: "+n(f)+". Please use a boolean."):(r=f,f?"adapter.js logging disabled":"adapter.js logging enabled")}function l(f){return typeof f!="boolean"?new Error("Argument type: "+n(f)+". Please use a boolean."):(s=!f,"adapter.js deprecation warnings "+(f?"disabled":"enabled"))}function u(){if((typeof window>"u"?"undefined":n(window))==="object"){if(r)return;typeof console<"u"&&typeof console.log=="function"&&console.log.apply(console,arguments)}}function h(f,p){s&&console.warn(f+" is deprecated, please use "+p+" instead.")}function g(f){var p={browser:null,version:null};if(f===void 0||!f.navigator)return p.browser="Not a browser.",p;var{navigator:b}=f;if(b.mozGetUserMedia)p.browser="firefox",p.version=a(b.userAgent,/Firefox\/(\d+)\./,1);else if(b.webkitGetUserMedia||f.isSecureContext===!1&&f.webkitRTCPeerConnection&&!f.RTCIceGatherer)p.browser="chrome",p.version=a(b.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else if(b.mediaDevices&&b.userAgent.match(/Edge\/(\d+).(\d+)$/))p.browser="edge",p.version=a(b.userAgent,/Edge\/(\d+).(\d+)$/,2);else{if(!f.RTCPeerConnection||!b.userAgent.match(/AppleWebKit\/(\d+)\./))return p.browser="Not a supported browser.",p;p.browser="safari",p.version=a(b.userAgent,/AppleWebKit\/(\d+)\./,1),p.supportsUnifiedPlan=f.RTCRtpTransceiver&&"currentDirection"in f.RTCRtpTransceiver.prototype}return p}function E(f){return Object.prototype.toString.call(f)==="[object Object]"}function _(f){return E(f)?Object.keys(f).reduce(function(p,b){var w=E(f[b]),C=w?_(f[b]):f[b],T=w&&!Object.keys(C).length;return C===void 0||T?p:Object.assign(p,i({},b,C))},{}):f}function x(f,p,b){p&&!b.has(p.id)&&(b.set(p.id,p),Object.keys(p).forEach(function(w){w.endsWith("Id")?x(f,f.get(p[w]),b):w.endsWith("Ids")&&p[w].forEach(function(C){x(f,f.get(C),b)})}))}function m(f,p,b){var w=b?"outbound-rtp":"inbound-rtp",C=new Map;if(p===null)return C;var T=[];return f.forEach(function(S){S.type==="track"&&S.trackIdentifier===p.id&&T.push(S)}),T.forEach(function(S){f.forEach(function(A){A.type===w&&A.trackId===S.id&&x(f,A,C)})}),C}},{}],s6SN:[function(o,e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.shimGetUserMedia=c;var i=r(o("../utils.js"));function n(){if(typeof WeakMap!="function")return null;var d=new WeakMap;return n=function(){return d},d}function r(d){if(d&&d.__esModule)return d;if(d===null||typeof d!="object"&&typeof d!="function")return{default:d};var l=n();if(l&&l.has(d))return l.get(d);var u={},h=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in d)if(Object.prototype.hasOwnProperty.call(d,g)){var E=h?Object.getOwnPropertyDescriptor(d,g):null;E&&(E.get||E.set)?Object.defineProperty(u,g,E):u[g]=d[g]}return u.default=d,l&&l.set(d,u),u}function s(d){return(s=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(l){return typeof l}:function(l){return l&&typeof Symbol=="function"&&l.constructor===Symbol&&l!==Symbol.prototype?"symbol":typeof l})(d)}var a=i.log;function c(d,l){var u=d&&d.navigator;if(u.mediaDevices){var h=function(x){if(s(x)!=="object"||x.mandatory||x.optional)return x;var m={};return Object.keys(x).forEach(function(f){if(f!=="require"&&f!=="advanced"&&f!=="mediaSource"){var p=s(x[f])==="object"?x[f]:{ideal:x[f]};p.exact!==void 0&&typeof p.exact=="number"&&(p.min=p.max=p.exact);var b=function(C,T){return C?C+T.charAt(0).toUpperCase()+T.slice(1):T==="deviceId"?"sourceId":T};if(p.ideal!==void 0){m.optional=m.optional||[];var w={};typeof p.ideal=="number"?(w[b("min",f)]=p.ideal,m.optional.push(w),(w={})[b("max",f)]=p.ideal,m.optional.push(w)):(w[b("",f)]=p.ideal,m.optional.push(w))}p.exact!==void 0&&typeof p.exact!="number"?(m.mandatory=m.mandatory||{},m.mandatory[b("",f)]=p.exact):["min","max"].forEach(function(C){p[C]!==void 0&&(m.mandatory=m.mandatory||{},m.mandatory[b(C,f)]=p[C])})}}),x.advanced&&(m.optional=(m.optional||[]).concat(x.advanced)),m},g=function(x,m){if(l.version>=61)return m(x);if((x=JSON.parse(JSON.stringify(x)))&&s(x.audio)==="object"){var f=function(C,T,S){T in C&&!(S in C)&&(C[S]=C[T],delete C[T])};f((x=JSON.parse(JSON.stringify(x))).audio,"autoGainControl","googAutoGainControl"),f(x.audio,"noiseSuppression","googNoiseSuppression"),x.audio=h(x.audio)}if(x&&s(x.video)==="object"){var p=x.video.facingMode;p=p&&(s(p)==="object"?p:{ideal:p});var b,w=l.version<66;if(p&&(p.exact==="user"||p.exact==="environment"||p.ideal==="user"||p.ideal==="environment")&&(!u.mediaDevices.getSupportedConstraints||!u.mediaDevices.getSupportedConstraints().facingMode||w)&&(delete x.video.facingMode,p.exact==="environment"||p.ideal==="environment"?b=["back","rear"]:p.exact!=="user"&&p.ideal!=="user"||(b=["front"]),b))return u.mediaDevices.enumerateDevices().then(function(C){var T=(C=C.filter(function(S){return S.kind==="videoinput"})).find(function(S){return b.some(function(A){return S.label.toLowerCase().includes(A)})});return!T&&C.length&&b.includes("back")&&(T=C[C.length-1]),T&&(x.video.deviceId=p.exact?{exact:T.deviceId}:{ideal:T.deviceId}),x.video=h(x.video),a("chrome: "+JSON.stringify(x)),m(x)});x.video=h(x.video)}return a("chrome: "+JSON.stringify(x)),m(x)},E=function(x){return l.version>=64?x:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[x.name]||x.name,message:x.message,constraint:x.constraint||x.constraintName,toString:function(){return this.name+(this.message&&": ")+this.message}}};if(u.getUserMedia=function(x,m,f){g(x,function(p){u.webkitGetUserMedia(p,m,function(b){f&&f(E(b))})})}.bind(u),u.mediaDevices.getUserMedia){var _=u.mediaDevices.getUserMedia.bind(u.mediaDevices);u.mediaDevices.getUserMedia=function(x){return g(x,function(m){return _(m).then(function(f){if(m.audio&&!f.getAudioTracks().length||m.video&&!f.getVideoTracks().length)throw f.getTracks().forEach(function(p){p.stop()}),new DOMException("","NotFoundError");return f},function(f){return Promise.reject(E(f))})})}}}}},{"../utils.js":"iSxC"}],VHa8:[function(o,e,t){"use strict";function i(n,r){n.navigator.mediaDevices&&"getDisplayMedia"in n.navigator.mediaDevices||n.navigator.mediaDevices&&(typeof r=="function"?n.navigator.mediaDevices.getDisplayMedia=function(s){return r(s).then(function(a){var c=s.video&&s.video.width,d=s.video&&s.video.height,l=s.video&&s.video.frameRate;return s.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:a,maxFrameRate:l||3}},c&&(s.video.mandatory.maxWidth=c),d&&(s.video.mandatory.maxHeight=d),n.navigator.mediaDevices.getUserMedia(s)})}:console.error("shimGetDisplayMedia: getSourceId argument is not a function"))}Object.defineProperty(t,"__esModule",{value:!0}),t.shimGetDisplayMedia=i},{}],uI5X:[function(o,e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.shimMediaStream=l,t.shimOnTrack=u,t.shimGetSendersWithDtmf=h,t.shimGetStats=g,t.shimSenderReceiverGetStats=E,t.shimAddTrackRemoveTrackWithNative=_,t.shimAddTrackRemoveTrack=x,t.shimPeerConnection=m,t.fixNegotiationNeeded=f,Object.defineProperty(t,"shimGetUserMedia",{enumerable:!0,get:function(){return n.shimGetUserMedia}}),Object.defineProperty(t,"shimGetDisplayMedia",{enumerable:!0,get:function(){return r.shimGetDisplayMedia}});var i=a(o("../utils.js")),n=o("./getusermedia"),r=o("./getdisplaymedia");function s(){if(typeof WeakMap!="function")return null;var p=new WeakMap;return s=function(){return p},p}function a(p){if(p&&p.__esModule)return p;if(p===null||typeof p!="object"&&typeof p!="function")return{default:p};var b=s();if(b&&b.has(p))return b.get(p);var w={},C=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var T in p)if(Object.prototype.hasOwnProperty.call(p,T)){var S=C?Object.getOwnPropertyDescriptor(p,T):null;S&&(S.get||S.set)?Object.defineProperty(w,T,S):w[T]=p[T]}return w.default=p,b&&b.set(p,w),w}function c(p,b,w){return b in p?Object.defineProperty(p,b,{value:w,enumerable:!0,configurable:!0,writable:!0}):p[b]=w,p}function d(p){return(d=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(b){return typeof b}:function(b){return b&&typeof Symbol=="function"&&b.constructor===Symbol&&b!==Symbol.prototype?"symbol":typeof b})(p)}function l(p){p.MediaStream=p.MediaStream||p.webkitMediaStream}function u(p){if(d(p)!=="object"||!p.RTCPeerConnection||"ontrack"in p.RTCPeerConnection.prototype)i.wrapPeerConnectionEvent(p,"track",function(w){return w.transceiver||Object.defineProperty(w,"transceiver",{value:{receiver:w.receiver}}),w});else{Object.defineProperty(p.RTCPeerConnection.prototype,"ontrack",{get:function(){return this._ontrack},set:function(w){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=w)},enumerable:!0,configurable:!0});var b=p.RTCPeerConnection.prototype.setRemoteDescription;p.RTCPeerConnection.prototype.setRemoteDescription=function(){var w=this;return this._ontrackpoly||(this._ontrackpoly=function(C){C.stream.addEventListener("addtrack",function(T){var S;S=p.RTCPeerConnection.prototype.getReceivers?w.getReceivers().find(function(D){return D.track&&D.track.id===T.track.id}):{track:T.track};var A=new Event("track");A.track=T.track,A.receiver=S,A.transceiver={receiver:S},A.streams=[C.stream],w.dispatchEvent(A)}),C.stream.getTracks().forEach(function(T){var S;S=p.RTCPeerConnection.prototype.getReceivers?w.getReceivers().find(function(D){return D.track&&D.track.id===T.id}):{track:T};var A=new Event("track");A.track=T,A.receiver=S,A.transceiver={receiver:S},A.streams=[C.stream],w.dispatchEvent(A)})},this.addEventListener("addstream",this._ontrackpoly)),b.apply(this,arguments)}}}function h(p){if(d(p)==="object"&&p.RTCPeerConnection&&!("getSenders"in p.RTCPeerConnection.prototype)&&"createDTMFSender"in p.RTCPeerConnection.prototype){var b=function(D,k){return{track:k,get dtmf(){return this._dtmf===void 0&&(k.kind==="audio"?this._dtmf=D.createDTMFSender(k):this._dtmf=null),this._dtmf},_pc:D}};if(!p.RTCPeerConnection.prototype.getSenders){p.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};var w=p.RTCPeerConnection.prototype.addTrack;p.RTCPeerConnection.prototype.addTrack=function(D,k){var j=w.apply(this,arguments);return j||(j=b(this,D),this._senders.push(j)),j};var C=p.RTCPeerConnection.prototype.removeTrack;p.RTCPeerConnection.prototype.removeTrack=function(D){C.apply(this,arguments);var k=this._senders.indexOf(D);k!==-1&&this._senders.splice(k,1)}}var T=p.RTCPeerConnection.prototype.addStream;p.RTCPeerConnection.prototype.addStream=function(D){var k=this;this._senders=this._senders||[],T.apply(this,[D]),D.getTracks().forEach(function(j){k._senders.push(b(k,j))})};var S=p.RTCPeerConnection.prototype.removeStream;p.RTCPeerConnection.prototype.removeStream=function(D){var k=this;this._senders=this._senders||[],S.apply(this,[D]),D.getTracks().forEach(function(j){var F=k._senders.find(function(W){return W.track===j});F&&k._senders.splice(k._senders.indexOf(F),1)})}}else if(d(p)==="object"&&p.RTCPeerConnection&&"getSenders"in p.RTCPeerConnection.prototype&&"createDTMFSender"in p.RTCPeerConnection.prototype&&p.RTCRtpSender&&!("dtmf"in p.RTCRtpSender.prototype)){var A=p.RTCPeerConnection.prototype.getSenders;p.RTCPeerConnection.prototype.getSenders=function(){var D=this,k=A.apply(this,[]);return k.forEach(function(j){return j._pc=D}),k},Object.defineProperty(p.RTCRtpSender.prototype,"dtmf",{get:function(){return this._dtmf===void 0&&(this.track.kind==="audio"?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function g(p){if(p.RTCPeerConnection){var b=p.RTCPeerConnection.prototype.getStats;p.RTCPeerConnection.prototype.getStats=function(){var w=this,[C,T,S]=arguments;if(arguments.length>0&&typeof C=="function")return b.apply(this,arguments);if(b.length===0&&(arguments.length===0||typeof C!="function"))return b.apply(this,[]);var A=function(k){var j={};return k.result().forEach(function(F){var W={id:F.id,timestamp:F.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[F.type]||F.type};F.names().forEach(function(z){W[z]=F.stat(z)}),j[W.id]=W}),j},D=function(k){return new Map(Object.keys(k).map(function(j){return[j,k[j]]}))};return arguments.length>=2?b.apply(this,[function(k){T(D(A(k)))},C]):new Promise(function(k,j){b.apply(w,[function(F){k(D(A(F)))},j])}).then(T,S)}}}function E(p){if(d(p)==="object"&&p.RTCPeerConnection&&p.RTCRtpSender&&p.RTCRtpReceiver){if(!("getStats"in p.RTCRtpSender.prototype)){var b=p.RTCPeerConnection.prototype.getSenders;b&&(p.RTCPeerConnection.prototype.getSenders=function(){var S=this,A=b.apply(this,[]);return A.forEach(function(D){return D._pc=S}),A});var w=p.RTCPeerConnection.prototype.addTrack;w&&(p.RTCPeerConnection.prototype.addTrack=function(){var S=w.apply(this,arguments);return S._pc=this,S}),p.RTCRtpSender.prototype.getStats=function(){var S=this;return this._pc.getStats().then(function(A){return i.filterStats(A,S.track,!0)})}}if(!("getStats"in p.RTCRtpReceiver.prototype)){var C=p.RTCPeerConnection.prototype.getReceivers;C&&(p.RTCPeerConnection.prototype.getReceivers=function(){var S=this,A=C.apply(this,[]);return A.forEach(function(D){return D._pc=S}),A}),i.wrapPeerConnectionEvent(p,"track",function(S){return S.receiver._pc=S.srcElement,S}),p.RTCRtpReceiver.prototype.getStats=function(){var S=this;return this._pc.getStats().then(function(A){return i.filterStats(A,S.track,!1)})}}if("getStats"in p.RTCRtpSender.prototype&&"getStats"in p.RTCRtpReceiver.prototype){var T=p.RTCPeerConnection.prototype.getStats;p.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof p.MediaStreamTrack){var S,A,D,k=arguments[0];return this.getSenders().forEach(function(j){j.track===k&&(S?D=!0:S=j)}),this.getReceivers().forEach(function(j){return j.track===k&&(A?D=!0:A=j),j.track===k}),D||S&&A?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):S?S.getStats():A?A.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return T.apply(this,arguments)}}}}function _(p){p.RTCPeerConnection.prototype.getLocalStreams=function(){var S=this;return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(function(A){return S._shimmedLocalStreams[A][0]})};var b=p.RTCPeerConnection.prototype.addTrack;p.RTCPeerConnection.prototype.addTrack=function(S,A){if(!A)return b.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};var D=b.apply(this,arguments);return this._shimmedLocalStreams[A.id]?this._shimmedLocalStreams[A.id].indexOf(D)===-1&&this._shimmedLocalStreams[A.id].push(D):this._shimmedLocalStreams[A.id]=[A,D],D};var w=p.RTCPeerConnection.prototype.addStream;p.RTCPeerConnection.prototype.addStream=function(S){var A=this;this._shimmedLocalStreams=this._shimmedLocalStreams||{},S.getTracks().forEach(function(j){if(A.getSenders().find(function(F){return F.track===j}))throw new DOMException("Track already exists.","InvalidAccessError")});var D=this.getSenders();w.apply(this,arguments);var k=this.getSenders().filter(function(j){return D.indexOf(j)===-1});this._shimmedLocalStreams[S.id]=[S].concat(k)};var C=p.RTCPeerConnection.prototype.removeStream;p.RTCPeerConnection.prototype.removeStream=function(S){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[S.id],C.apply(this,arguments)};var T=p.RTCPeerConnection.prototype.removeTrack;p.RTCPeerConnection.prototype.removeTrack=function(S){var A=this;return this._shimmedLocalStreams=this._shimmedLocalStreams||{},S&&Object.keys(this._shimmedLocalStreams).forEach(function(D){var k=A._shimmedLocalStreams[D].indexOf(S);k!==-1&&A._shimmedLocalStreams[D].splice(k,1),A._shimmedLocalStreams[D].length===1&&delete A._shimmedLocalStreams[D]}),T.apply(this,arguments)}}function x(p,b){if(p.RTCPeerConnection){if(p.RTCPeerConnection.prototype.addTrack&&b.version>=65)return _(p);var w=p.RTCPeerConnection.prototype.getLocalStreams;p.RTCPeerConnection.prototype.getLocalStreams=function(){var k=this,j=w.apply(this);return this._reverseStreams=this._reverseStreams||{},j.map(function(F){return k._reverseStreams[F.id]})};var C=p.RTCPeerConnection.prototype.addStream;p.RTCPeerConnection.prototype.addStream=function(k){var j=this;if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},k.getTracks().forEach(function(W){if(j.getSenders().find(function(z){return z.track===W}))throw new DOMException("Track already exists.","InvalidAccessError")}),!this._reverseStreams[k.id]){var F=new p.MediaStream(k.getTracks());this._streams[k.id]=F,this._reverseStreams[F.id]=k,k=F}C.apply(this,[k])};var T=p.RTCPeerConnection.prototype.removeStream;p.RTCPeerConnection.prototype.removeStream=function(k){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},T.apply(this,[this._streams[k.id]||k]),delete this._reverseStreams[this._streams[k.id]?this._streams[k.id].id:k.id],delete this._streams[k.id]},p.RTCPeerConnection.prototype.addTrack=function(k,j){var F=this;if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");var W=[].slice.call(arguments,1);if(W.length!==1||!W[0].getTracks().find(function(he){return he===k}))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");if(this.getSenders().find(function(he){return he.track===k}))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};var z=this._streams[j.id];if(z)z.addTrack(k),Promise.resolve().then(function(){F.dispatchEvent(new Event("negotiationneeded"))});else{var re=new p.MediaStream([k]);this._streams[j.id]=re,this._reverseStreams[re.id]=j,this.addStream(re)}return this.getSenders().find(function(he){return he.track===k})},["createOffer","createAnswer"].forEach(function(k){var j=p.RTCPeerConnection.prototype[k],F=c({},k,function(){var W=this,z=arguments;return arguments.length&&typeof arguments[0]=="function"?j.apply(this,[function(re){var he=D(W,re);z[0].apply(null,[he])},function(re){z[1]&&z[1].apply(null,re)},arguments[2]]):j.apply(this,arguments).then(function(re){return D(W,re)})});p.RTCPeerConnection.prototype[k]=F[k]});var S=p.RTCPeerConnection.prototype.setLocalDescription;p.RTCPeerConnection.prototype.setLocalDescription=function(){return arguments.length&&arguments[0].type?(arguments[0]=(k=this,j=arguments[0],F=j.sdp,Object.keys(k._reverseStreams||[]).forEach(function(W){var z=k._reverseStreams[W],re=k._streams[z.id];F=F.replace(new RegExp(z.id,"g"),re.id)}),new RTCSessionDescription({type:j.type,sdp:F})),S.apply(this,arguments)):S.apply(this,arguments);var k,j,F};var A=Object.getOwnPropertyDescriptor(p.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(p.RTCPeerConnection.prototype,"localDescription",{get:function(){var k=A.get.apply(this);return k.type===""?k:D(this,k)}}),p.RTCPeerConnection.prototype.removeTrack=function(k){var j,F=this;if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!k._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(k._pc!==this)throw new DOMException("Sender was not created by this connection.","InvalidAccessError");this._streams=this._streams||{},Object.keys(this._streams).forEach(function(W){F._streams[W].getTracks().find(function(z){return k.track===z})&&(j=F._streams[W])}),j&&(j.getTracks().length===1?this.removeStream(this._reverseStreams[j.id]):j.removeTrack(k.track),this.dispatchEvent(new Event("negotiationneeded")))}}function D(k,j){var F=j.sdp;return Object.keys(k._reverseStreams||[]).forEach(function(W){var z=k._reverseStreams[W],re=k._streams[z.id];F=F.replace(new RegExp(re.id,"g"),z.id)}),new RTCSessionDescription({type:j.type,sdp:F})}}function m(p,b){!p.RTCPeerConnection&&p.webkitRTCPeerConnection&&(p.RTCPeerConnection=p.webkitRTCPeerConnection),p.RTCPeerConnection&&b.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(w){var C=p.RTCPeerConnection.prototype[w],T=c({},w,function(){return arguments[0]=new(w==="addIceCandidate"?p.RTCIceCandidate:p.RTCSessionDescription)(arguments[0]),C.apply(this,arguments)});p.RTCPeerConnection.prototype[w]=T[w]})}function f(p,b){i.wrapPeerConnectionEvent(p,"negotiationneeded",function(w){var C=w.target;if(!(b.version<72||C.getConfiguration&&C.getConfiguration().sdpSemantics==="plan-b")||C.signalingState==="stable")return w})}},{"../utils.js":"iSxC","./getusermedia":"s6SN","./getdisplaymedia":"VHa8"}],NZ1C:[function(o,e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.filterIceServers=s;var i=r(o("../utils"));function n(){if(typeof WeakMap!="function")return null;var a=new WeakMap;return n=function(){return a},a}function r(a){if(a&&a.__esModule)return a;if(a===null||typeof a!="object"&&typeof a!="function")return{default:a};var c=n();if(c&&c.has(a))return c.get(a);var d={},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in a)if(Object.prototype.hasOwnProperty.call(a,u)){var h=l?Object.getOwnPropertyDescriptor(a,u):null;h&&(h.get||h.set)?Object.defineProperty(d,u,h):d[u]=a[u]}return d.default=a,c&&c.set(a,d),d}function s(a,c){var d=!1;return(a=JSON.parse(JSON.stringify(a))).filter(function(l){if(l&&(l.urls||l.url)){var u=l.urls||l.url;l.url&&!l.urls&&i.deprecated("RTCIceServer.url","RTCIceServer.urls");var h=typeof u=="string";return h&&(u=[u]),u=u.filter(function(g){if(g.indexOf("stun:")===0)return!1;var E=g.startsWith("turn")&&!g.startsWith("turn:[")&&g.includes("transport=udp");return E&&!d?(d=!0,!0):E&&!d}),delete l.url,l.urls=h?u[0]:u,!!u.length}})}},{"../utils":"iSxC"}],YHvh:[function(o,e,t){"use strict";var i={generateIdentifier:function(){return Math.random().toString(36).substr(2,10)}};i.localCName=i.generateIdentifier(),i.splitLines=function(n){return n.trim().split(`
1
+ var Wg=Object.create;var Fs=Object.defineProperty;var lp=Object.getOwnPropertyDescriptor;var Ng=Object.getOwnPropertyNames;var Xg=Object.getPrototypeOf,Qg=Object.prototype.hasOwnProperty;var qg=(o,e,t)=>e in o?Fs(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var Qc=(o=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(o,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):o)(function(o){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+o+'" is not supported')});var Bs=(o,e)=>()=>(e||o((e={exports:{}}).exports,e),e.exports),cp=(o,e)=>{for(var t in e)Fs(o,t,{get:e[t],enumerable:!0})},Yg=(o,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Ng(e))!Qg.call(o,n)&&n!==t&&Fs(o,n,{get:()=>e[n],enumerable:!(i=lp(e,n))||i.enumerable});return o};var Fa=(o,e,t)=>(t=o!=null?Wg(Xg(o)):{},Yg(e||!o||!o.__esModule?Fs(t,"default",{value:o,enumerable:!0}):t,o));var v=(o,e,t,i)=>{for(var n=i>1?void 0:i?lp(e,t):e,r=o.length-1,s;r>=0;r--)(s=o[r])&&(n=(i?s(e,t,n):s(n))||n);return i&&n&&Fs(e,t,n),n};var I=(o,e,t)=>(qg(o,typeof e!="symbol"?e+"":e,t),t);var gl=Bs((xf,Mu)=>{parcelRequire=function(o,e,t,i){var n,r=typeof parcelRequire=="function"&&parcelRequire,s=typeof Qc=="function"&&Qc;function a(l,d){if(!e[l]){if(!o[l]){var h=typeof parcelRequire=="function"&&parcelRequire;if(!d&&h)return h(l,!0);if(r)return r(l,!0);if(s&&typeof l=="string")return s(l);var g=new Error("Cannot find module '"+l+"'");throw g.code="MODULE_NOT_FOUND",g}_.resolve=function(x){return o[l][1][x]||x},_.cache={};var E=e[l]=new a.Module(l);o[l][0].call(E.exports,_,E,E.exports,this)}return e[l].exports;function _(x){return a(_.resolve(x))}}a.isParcelRequire=!0,a.Module=function(l){this.id=l,this.bundle=a,this.exports={}},a.modules=o,a.cache=e,a.parent=r,a.register=function(l,d){o[l]=[function(h,g){g.exports=d},{}]};for(var c=0;c<t.length;c++)try{a(t[c])}catch(l){n||(n=l)}if(t.length){var u=a(t[t.length-1]);typeof xf=="object"&&typeof Mu<"u"?Mu.exports=u:typeof define=="function"&&define.amd?define(function(){return u}):i&&(this[i]=u)}if(parcelRequire=a,n)throw n;return a}({EgBh:[function(o,e,t){var i={};i.useBlobBuilder=function(){try{return new Blob([]),!1}catch{return!0}}(),i.useArrayBufferView=!i.useBlobBuilder&&function(){try{return new Blob([new Uint8Array([])]).size===0}catch{return!0}}(),e.exports.binaryFeatures=i;var n=e.exports.BlobBuilder;function r(){this._pieces=[],this._parts=[]}typeof window<"u"&&(n=e.exports.BlobBuilder=window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder||window.BlobBuilder),r.prototype.append=function(s){typeof s=="number"?this._pieces.push(s):(this.flush(),this._parts.push(s))},r.prototype.flush=function(){if(this._pieces.length>0){var s=new Uint8Array(this._pieces);i.useArrayBufferView||(s=s.buffer),this._parts.push(s),this._pieces=[]}},r.prototype.getBuffer=function(){if(this.flush(),i.useBlobBuilder){for(var s=new n,a=0,c=this._parts.length;a<c;a++)s.append(this._parts[a]);return s.getBlob()}return new Blob(this._parts)},e.exports.BufferBuilder=r},{}],kdPp:[function(o,e,t){var i=o("./bufferbuilder").BufferBuilder,n=o("./bufferbuilder").binaryFeatures,r={unpack:function(l){return new s(l).unpack()},pack:function(l){var d=new a;return d.pack(l),d.getBuffer()}};function s(l){this.index=0,this.dataBuffer=l,this.dataView=new Uint8Array(this.dataBuffer),this.length=this.dataBuffer.byteLength}function a(){this.bufferBuilder=new i}function c(l){var d=l.charCodeAt(0);return d<=2047?"00":d<=65535?"000":d<=2097151?"0000":d<=67108863?"00000":"000000"}function u(l){return l.length>600?new Blob([l]).size:l.replace(/[^\u0000-\u007F]/g,c).length}e.exports=r,s.prototype.unpack=function(){var l,d=this.unpack_uint8();if(d<128)return d;if((224^d)<32)return(224^d)-32;if((l=160^d)<=15)return this.unpack_raw(l);if((l=176^d)<=15)return this.unpack_string(l);if((l=144^d)<=15)return this.unpack_array(l);if((l=128^d)<=15)return this.unpack_map(l);switch(d){case 192:return null;case 193:return;case 194:return!1;case 195:return!0;case 202:return this.unpack_float();case 203:return this.unpack_double();case 204:return this.unpack_uint8();case 205:return this.unpack_uint16();case 206:return this.unpack_uint32();case 207:return this.unpack_uint64();case 208:return this.unpack_int8();case 209:return this.unpack_int16();case 210:return this.unpack_int32();case 211:return this.unpack_int64();case 212:case 213:case 214:case 215:return;case 216:return l=this.unpack_uint16(),this.unpack_string(l);case 217:return l=this.unpack_uint32(),this.unpack_string(l);case 218:return l=this.unpack_uint16(),this.unpack_raw(l);case 219:return l=this.unpack_uint32(),this.unpack_raw(l);case 220:return l=this.unpack_uint16(),this.unpack_array(l);case 221:return l=this.unpack_uint32(),this.unpack_array(l);case 222:return l=this.unpack_uint16(),this.unpack_map(l);case 223:return l=this.unpack_uint32(),this.unpack_map(l)}},s.prototype.unpack_uint8=function(){var l=255&this.dataView[this.index];return this.index++,l},s.prototype.unpack_uint16=function(){var l=this.read(2),d=256*(255&l[0])+(255&l[1]);return this.index+=2,d},s.prototype.unpack_uint32=function(){var l=this.read(4),d=256*(256*(256*l[0]+l[1])+l[2])+l[3];return this.index+=4,d},s.prototype.unpack_uint64=function(){var l=this.read(8),d=256*(256*(256*(256*(256*(256*(256*l[0]+l[1])+l[2])+l[3])+l[4])+l[5])+l[6])+l[7];return this.index+=8,d},s.prototype.unpack_int8=function(){var l=this.unpack_uint8();return l<128?l:l-256},s.prototype.unpack_int16=function(){var l=this.unpack_uint16();return l<32768?l:l-65536},s.prototype.unpack_int32=function(){var l=this.unpack_uint32();return l<Math.pow(2,31)?l:l-Math.pow(2,32)},s.prototype.unpack_int64=function(){var l=this.unpack_uint64();return l<Math.pow(2,63)?l:l-Math.pow(2,64)},s.prototype.unpack_raw=function(l){if(this.length<this.index+l)throw new Error("BinaryPackFailure: index is out of range "+this.index+" "+l+" "+this.length);var d=this.dataBuffer.slice(this.index,this.index+l);return this.index+=l,d},s.prototype.unpack_string=function(l){for(var d,h,g=this.read(l),E=0,_="";E<l;)(d=g[E])<128?(_+=String.fromCharCode(d),E++):(192^d)<32?(h=(192^d)<<6|63&g[E+1],_+=String.fromCharCode(h),E+=2):(h=(15&d)<<12|(63&g[E+1])<<6|63&g[E+2],_+=String.fromCharCode(h),E+=3);return this.index+=l,_},s.prototype.unpack_array=function(l){for(var d=new Array(l),h=0;h<l;h++)d[h]=this.unpack();return d},s.prototype.unpack_map=function(l){for(var d={},h=0;h<l;h++){var g=this.unpack(),E=this.unpack();d[g]=E}return d},s.prototype.unpack_float=function(){var l=this.unpack_uint32(),d=(l>>23&255)-127;return(l>>31===0?1:-1)*(8388607&l|8388608)*Math.pow(2,d-23)},s.prototype.unpack_double=function(){var l=this.unpack_uint32(),d=this.unpack_uint32(),h=(l>>20&2047)-1023;return(l>>31===0?1:-1)*((1048575&l|1048576)*Math.pow(2,h-20)+d*Math.pow(2,h-52))},s.prototype.read=function(l){var d=this.index;if(d+l<=this.length)return this.dataView.subarray(d,d+l);throw new Error("BinaryPackFailure: read index out of range")},a.prototype.getBuffer=function(){return this.bufferBuilder.getBuffer()},a.prototype.pack=function(l){var d=typeof l;if(d==="string")this.pack_string(l);else if(d==="number")Math.floor(l)===l?this.pack_integer(l):this.pack_double(l);else if(d==="boolean")l===!0?this.bufferBuilder.append(195):l===!1&&this.bufferBuilder.append(194);else if(d==="undefined")this.bufferBuilder.append(192);else{if(d!=="object")throw new Error('Type "'+d+'" not yet supported');if(l===null)this.bufferBuilder.append(192);else{var h=l.constructor;if(h==Array)this.pack_array(l);else if(h==Blob||h==File||l instanceof Blob||l instanceof File)this.pack_bin(l);else if(h==ArrayBuffer)n.useArrayBufferView?this.pack_bin(new Uint8Array(l)):this.pack_bin(l);else if("BYTES_PER_ELEMENT"in l)n.useArrayBufferView?this.pack_bin(new Uint8Array(l.buffer)):this.pack_bin(l.buffer);else if(h==Object||h.toString().startsWith("class"))this.pack_object(l);else if(h==Date)this.pack_string(l.toString());else{if(typeof l.toBinaryPack!="function")throw new Error('Type "'+h.toString()+'" not yet supported');this.bufferBuilder.append(l.toBinaryPack())}}}this.bufferBuilder.flush()},a.prototype.pack_bin=function(l){var d=l.length||l.byteLength||l.size;if(d<=15)this.pack_uint8(160+d);else if(d<=65535)this.bufferBuilder.append(218),this.pack_uint16(d);else{if(!(d<=4294967295))throw new Error("Invalid length");this.bufferBuilder.append(219),this.pack_uint32(d)}this.bufferBuilder.append(l)},a.prototype.pack_string=function(l){var d=u(l);if(d<=15)this.pack_uint8(176+d);else if(d<=65535)this.bufferBuilder.append(216),this.pack_uint16(d);else{if(!(d<=4294967295))throw new Error("Invalid length");this.bufferBuilder.append(217),this.pack_uint32(d)}this.bufferBuilder.append(l)},a.prototype.pack_array=function(l){var d=l.length;if(d<=15)this.pack_uint8(144+d);else if(d<=65535)this.bufferBuilder.append(220),this.pack_uint16(d);else{if(!(d<=4294967295))throw new Error("Invalid length");this.bufferBuilder.append(221),this.pack_uint32(d)}for(var h=0;h<d;h++)this.pack(l[h])},a.prototype.pack_integer=function(l){if(l>=-32&&l<=127)this.bufferBuilder.append(255&l);else if(l>=0&&l<=255)this.bufferBuilder.append(204),this.pack_uint8(l);else if(l>=-128&&l<=127)this.bufferBuilder.append(208),this.pack_int8(l);else if(l>=0&&l<=65535)this.bufferBuilder.append(205),this.pack_uint16(l);else if(l>=-32768&&l<=32767)this.bufferBuilder.append(209),this.pack_int16(l);else if(l>=0&&l<=4294967295)this.bufferBuilder.append(206),this.pack_uint32(l);else if(l>=-2147483648&&l<=2147483647)this.bufferBuilder.append(210),this.pack_int32(l);else if(l>=-9223372036854776e3&&l<=9223372036854776e3)this.bufferBuilder.append(211),this.pack_int64(l);else{if(!(l>=0&&l<=18446744073709552e3))throw new Error("Invalid integer");this.bufferBuilder.append(207),this.pack_uint64(l)}},a.prototype.pack_double=function(l){var d=0;l<0&&(d=1,l=-l);var h=Math.floor(Math.log(l)/Math.LN2),g=l/Math.pow(2,h)-1,E=Math.floor(g*Math.pow(2,52)),_=Math.pow(2,32),x=d<<31|h+1023<<20|E/_&1048575,m=E%_;this.bufferBuilder.append(203),this.pack_int32(x),this.pack_int32(m)},a.prototype.pack_object=function(l){var d=Object.keys(l).length;if(d<=15)this.pack_uint8(128+d);else if(d<=65535)this.bufferBuilder.append(222),this.pack_uint16(d);else{if(!(d<=4294967295))throw new Error("Invalid length");this.bufferBuilder.append(223),this.pack_uint32(d)}for(var h in l)l.hasOwnProperty(h)&&(this.pack(h),this.pack(l[h]))},a.prototype.pack_uint8=function(l){this.bufferBuilder.append(l)},a.prototype.pack_uint16=function(l){this.bufferBuilder.append(l>>8),this.bufferBuilder.append(255&l)},a.prototype.pack_uint32=function(l){var d=4294967295&l;this.bufferBuilder.append((4278190080&d)>>>24),this.bufferBuilder.append((16711680&d)>>>16),this.bufferBuilder.append((65280&d)>>>8),this.bufferBuilder.append(255&d)},a.prototype.pack_uint64=function(l){var d=l/Math.pow(2,32),h=l%Math.pow(2,32);this.bufferBuilder.append((4278190080&d)>>>24),this.bufferBuilder.append((16711680&d)>>>16),this.bufferBuilder.append((65280&d)>>>8),this.bufferBuilder.append(255&d),this.bufferBuilder.append((4278190080&h)>>>24),this.bufferBuilder.append((16711680&h)>>>16),this.bufferBuilder.append((65280&h)>>>8),this.bufferBuilder.append(255&h)},a.prototype.pack_int8=function(l){this.bufferBuilder.append(255&l)},a.prototype.pack_int16=function(l){this.bufferBuilder.append((65280&l)>>8),this.bufferBuilder.append(255&l)},a.prototype.pack_int32=function(l){this.bufferBuilder.append(l>>>24&255),this.bufferBuilder.append((16711680&l)>>>16),this.bufferBuilder.append((65280&l)>>>8),this.bufferBuilder.append(255&l)},a.prototype.pack_int64=function(l){var d=Math.floor(l/Math.pow(2,32)),h=l%Math.pow(2,32);this.bufferBuilder.append((4278190080&d)>>>24),this.bufferBuilder.append((16711680&d)>>>16),this.bufferBuilder.append((65280&d)>>>8),this.bufferBuilder.append(255&d),this.bufferBuilder.append((4278190080&h)>>>24),this.bufferBuilder.append((16711680&h)>>>16),this.bufferBuilder.append((65280&h)>>>8),this.bufferBuilder.append(255&h)}},{"./bufferbuilder":"EgBh"}],iSxC:[function(o,e,t){"use strict";function i(f,p,b){return p in f?Object.defineProperty(f,p,{value:b,enumerable:!0,configurable:!0,writable:!0}):f[p]=b,f}function n(f){return(n=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(p){return typeof p}:function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p})(f)}Object.defineProperty(t,"__esModule",{value:!0}),t.extractVersion=a,t.wrapPeerConnectionEvent=c,t.disableLog=u,t.disableWarnings=l,t.log=d,t.deprecated=h,t.detectBrowser=g,t.compactObject=_,t.walkStats=x,t.filterStats=m;var r=!0,s=!0;function a(f,p,b){var w=f.match(p);return w&&w.length>=b&&parseInt(w[b],10)}function c(f,p,b){if(f.RTCPeerConnection){var w=f.RTCPeerConnection.prototype,C=w.addEventListener;w.addEventListener=function(S,A){if(S!==p)return C.apply(this,arguments);var D=function(k){var j=b(k);j&&(A.handleEvent?A.handleEvent(j):A(j))};return this._eventMap=this._eventMap||{},this._eventMap[p]||(this._eventMap[p]=new Map),this._eventMap[p].set(A,D),C.apply(this,[S,D])};var T=w.removeEventListener;w.removeEventListener=function(S,A){if(S!==p||!this._eventMap||!this._eventMap[p])return T.apply(this,arguments);if(!this._eventMap[p].has(A))return T.apply(this,arguments);var D=this._eventMap[p].get(A);return this._eventMap[p].delete(A),this._eventMap[p].size===0&&delete this._eventMap[p],Object.keys(this._eventMap).length===0&&delete this._eventMap,T.apply(this,[S,D])},Object.defineProperty(w,"on"+p,{get:function(){return this["_on"+p]},set:function(S){this["_on"+p]&&(this.removeEventListener(p,this["_on"+p]),delete this["_on"+p]),S&&this.addEventListener(p,this["_on"+p]=S)},enumerable:!0,configurable:!0})}}function u(f){return typeof f!="boolean"?new Error("Argument type: "+n(f)+". Please use a boolean."):(r=f,f?"adapter.js logging disabled":"adapter.js logging enabled")}function l(f){return typeof f!="boolean"?new Error("Argument type: "+n(f)+". Please use a boolean."):(s=!f,"adapter.js deprecation warnings "+(f?"disabled":"enabled"))}function d(){if((typeof window>"u"?"undefined":n(window))==="object"){if(r)return;typeof console<"u"&&typeof console.log=="function"&&console.log.apply(console,arguments)}}function h(f,p){s&&console.warn(f+" is deprecated, please use "+p+" instead.")}function g(f){var p={browser:null,version:null};if(f===void 0||!f.navigator)return p.browser="Not a browser.",p;var{navigator:b}=f;if(b.mozGetUserMedia)p.browser="firefox",p.version=a(b.userAgent,/Firefox\/(\d+)\./,1);else if(b.webkitGetUserMedia||f.isSecureContext===!1&&f.webkitRTCPeerConnection&&!f.RTCIceGatherer)p.browser="chrome",p.version=a(b.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else if(b.mediaDevices&&b.userAgent.match(/Edge\/(\d+).(\d+)$/))p.browser="edge",p.version=a(b.userAgent,/Edge\/(\d+).(\d+)$/,2);else{if(!f.RTCPeerConnection||!b.userAgent.match(/AppleWebKit\/(\d+)\./))return p.browser="Not a supported browser.",p;p.browser="safari",p.version=a(b.userAgent,/AppleWebKit\/(\d+)\./,1),p.supportsUnifiedPlan=f.RTCRtpTransceiver&&"currentDirection"in f.RTCRtpTransceiver.prototype}return p}function E(f){return Object.prototype.toString.call(f)==="[object Object]"}function _(f){return E(f)?Object.keys(f).reduce(function(p,b){var w=E(f[b]),C=w?_(f[b]):f[b],T=w&&!Object.keys(C).length;return C===void 0||T?p:Object.assign(p,i({},b,C))},{}):f}function x(f,p,b){p&&!b.has(p.id)&&(b.set(p.id,p),Object.keys(p).forEach(function(w){w.endsWith("Id")?x(f,f.get(p[w]),b):w.endsWith("Ids")&&p[w].forEach(function(C){x(f,f.get(C),b)})}))}function m(f,p,b){var w=b?"outbound-rtp":"inbound-rtp",C=new Map;if(p===null)return C;var T=[];return f.forEach(function(S){S.type==="track"&&S.trackIdentifier===p.id&&T.push(S)}),T.forEach(function(S){f.forEach(function(A){A.type===w&&A.trackId===S.id&&x(f,A,C)})}),C}},{}],s6SN:[function(o,e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.shimGetUserMedia=c;var i=r(o("../utils.js"));function n(){if(typeof WeakMap!="function")return null;var u=new WeakMap;return n=function(){return u},u}function r(u){if(u&&u.__esModule)return u;if(u===null||typeof u!="object"&&typeof u!="function")return{default:u};var l=n();if(l&&l.has(u))return l.get(u);var d={},h=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in u)if(Object.prototype.hasOwnProperty.call(u,g)){var E=h?Object.getOwnPropertyDescriptor(u,g):null;E&&(E.get||E.set)?Object.defineProperty(d,g,E):d[g]=u[g]}return d.default=u,l&&l.set(u,d),d}function s(u){return(s=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(l){return typeof l}:function(l){return l&&typeof Symbol=="function"&&l.constructor===Symbol&&l!==Symbol.prototype?"symbol":typeof l})(u)}var a=i.log;function c(u,l){var d=u&&u.navigator;if(d.mediaDevices){var h=function(x){if(s(x)!=="object"||x.mandatory||x.optional)return x;var m={};return Object.keys(x).forEach(function(f){if(f!=="require"&&f!=="advanced"&&f!=="mediaSource"){var p=s(x[f])==="object"?x[f]:{ideal:x[f]};p.exact!==void 0&&typeof p.exact=="number"&&(p.min=p.max=p.exact);var b=function(C,T){return C?C+T.charAt(0).toUpperCase()+T.slice(1):T==="deviceId"?"sourceId":T};if(p.ideal!==void 0){m.optional=m.optional||[];var w={};typeof p.ideal=="number"?(w[b("min",f)]=p.ideal,m.optional.push(w),(w={})[b("max",f)]=p.ideal,m.optional.push(w)):(w[b("",f)]=p.ideal,m.optional.push(w))}p.exact!==void 0&&typeof p.exact!="number"?(m.mandatory=m.mandatory||{},m.mandatory[b("",f)]=p.exact):["min","max"].forEach(function(C){p[C]!==void 0&&(m.mandatory=m.mandatory||{},m.mandatory[b(C,f)]=p[C])})}}),x.advanced&&(m.optional=(m.optional||[]).concat(x.advanced)),m},g=function(x,m){if(l.version>=61)return m(x);if((x=JSON.parse(JSON.stringify(x)))&&s(x.audio)==="object"){var f=function(C,T,S){T in C&&!(S in C)&&(C[S]=C[T],delete C[T])};f((x=JSON.parse(JSON.stringify(x))).audio,"autoGainControl","googAutoGainControl"),f(x.audio,"noiseSuppression","googNoiseSuppression"),x.audio=h(x.audio)}if(x&&s(x.video)==="object"){var p=x.video.facingMode;p=p&&(s(p)==="object"?p:{ideal:p});var b,w=l.version<66;if(p&&(p.exact==="user"||p.exact==="environment"||p.ideal==="user"||p.ideal==="environment")&&(!d.mediaDevices.getSupportedConstraints||!d.mediaDevices.getSupportedConstraints().facingMode||w)&&(delete x.video.facingMode,p.exact==="environment"||p.ideal==="environment"?b=["back","rear"]:p.exact!=="user"&&p.ideal!=="user"||(b=["front"]),b))return d.mediaDevices.enumerateDevices().then(function(C){var T=(C=C.filter(function(S){return S.kind==="videoinput"})).find(function(S){return b.some(function(A){return S.label.toLowerCase().includes(A)})});return!T&&C.length&&b.includes("back")&&(T=C[C.length-1]),T&&(x.video.deviceId=p.exact?{exact:T.deviceId}:{ideal:T.deviceId}),x.video=h(x.video),a("chrome: "+JSON.stringify(x)),m(x)});x.video=h(x.video)}return a("chrome: "+JSON.stringify(x)),m(x)},E=function(x){return l.version>=64?x:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[x.name]||x.name,message:x.message,constraint:x.constraint||x.constraintName,toString:function(){return this.name+(this.message&&": ")+this.message}}};if(d.getUserMedia=function(x,m,f){g(x,function(p){d.webkitGetUserMedia(p,m,function(b){f&&f(E(b))})})}.bind(d),d.mediaDevices.getUserMedia){var _=d.mediaDevices.getUserMedia.bind(d.mediaDevices);d.mediaDevices.getUserMedia=function(x){return g(x,function(m){return _(m).then(function(f){if(m.audio&&!f.getAudioTracks().length||m.video&&!f.getVideoTracks().length)throw f.getTracks().forEach(function(p){p.stop()}),new DOMException("","NotFoundError");return f},function(f){return Promise.reject(E(f))})})}}}}},{"../utils.js":"iSxC"}],VHa8:[function(o,e,t){"use strict";function i(n,r){n.navigator.mediaDevices&&"getDisplayMedia"in n.navigator.mediaDevices||n.navigator.mediaDevices&&(typeof r=="function"?n.navigator.mediaDevices.getDisplayMedia=function(s){return r(s).then(function(a){var c=s.video&&s.video.width,u=s.video&&s.video.height,l=s.video&&s.video.frameRate;return s.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:a,maxFrameRate:l||3}},c&&(s.video.mandatory.maxWidth=c),u&&(s.video.mandatory.maxHeight=u),n.navigator.mediaDevices.getUserMedia(s)})}:console.error("shimGetDisplayMedia: getSourceId argument is not a function"))}Object.defineProperty(t,"__esModule",{value:!0}),t.shimGetDisplayMedia=i},{}],uI5X:[function(o,e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.shimMediaStream=l,t.shimOnTrack=d,t.shimGetSendersWithDtmf=h,t.shimGetStats=g,t.shimSenderReceiverGetStats=E,t.shimAddTrackRemoveTrackWithNative=_,t.shimAddTrackRemoveTrack=x,t.shimPeerConnection=m,t.fixNegotiationNeeded=f,Object.defineProperty(t,"shimGetUserMedia",{enumerable:!0,get:function(){return n.shimGetUserMedia}}),Object.defineProperty(t,"shimGetDisplayMedia",{enumerable:!0,get:function(){return r.shimGetDisplayMedia}});var i=a(o("../utils.js")),n=o("./getusermedia"),r=o("./getdisplaymedia");function s(){if(typeof WeakMap!="function")return null;var p=new WeakMap;return s=function(){return p},p}function a(p){if(p&&p.__esModule)return p;if(p===null||typeof p!="object"&&typeof p!="function")return{default:p};var b=s();if(b&&b.has(p))return b.get(p);var w={},C=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var T in p)if(Object.prototype.hasOwnProperty.call(p,T)){var S=C?Object.getOwnPropertyDescriptor(p,T):null;S&&(S.get||S.set)?Object.defineProperty(w,T,S):w[T]=p[T]}return w.default=p,b&&b.set(p,w),w}function c(p,b,w){return b in p?Object.defineProperty(p,b,{value:w,enumerable:!0,configurable:!0,writable:!0}):p[b]=w,p}function u(p){return(u=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(b){return typeof b}:function(b){return b&&typeof Symbol=="function"&&b.constructor===Symbol&&b!==Symbol.prototype?"symbol":typeof b})(p)}function l(p){p.MediaStream=p.MediaStream||p.webkitMediaStream}function d(p){if(u(p)!=="object"||!p.RTCPeerConnection||"ontrack"in p.RTCPeerConnection.prototype)i.wrapPeerConnectionEvent(p,"track",function(w){return w.transceiver||Object.defineProperty(w,"transceiver",{value:{receiver:w.receiver}}),w});else{Object.defineProperty(p.RTCPeerConnection.prototype,"ontrack",{get:function(){return this._ontrack},set:function(w){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=w)},enumerable:!0,configurable:!0});var b=p.RTCPeerConnection.prototype.setRemoteDescription;p.RTCPeerConnection.prototype.setRemoteDescription=function(){var w=this;return this._ontrackpoly||(this._ontrackpoly=function(C){C.stream.addEventListener("addtrack",function(T){var S;S=p.RTCPeerConnection.prototype.getReceivers?w.getReceivers().find(function(D){return D.track&&D.track.id===T.track.id}):{track:T.track};var A=new Event("track");A.track=T.track,A.receiver=S,A.transceiver={receiver:S},A.streams=[C.stream],w.dispatchEvent(A)}),C.stream.getTracks().forEach(function(T){var S;S=p.RTCPeerConnection.prototype.getReceivers?w.getReceivers().find(function(D){return D.track&&D.track.id===T.id}):{track:T};var A=new Event("track");A.track=T,A.receiver=S,A.transceiver={receiver:S},A.streams=[C.stream],w.dispatchEvent(A)})},this.addEventListener("addstream",this._ontrackpoly)),b.apply(this,arguments)}}}function h(p){if(u(p)==="object"&&p.RTCPeerConnection&&!("getSenders"in p.RTCPeerConnection.prototype)&&"createDTMFSender"in p.RTCPeerConnection.prototype){var b=function(D,k){return{track:k,get dtmf(){return this._dtmf===void 0&&(k.kind==="audio"?this._dtmf=D.createDTMFSender(k):this._dtmf=null),this._dtmf},_pc:D}};if(!p.RTCPeerConnection.prototype.getSenders){p.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};var w=p.RTCPeerConnection.prototype.addTrack;p.RTCPeerConnection.prototype.addTrack=function(D,k){var j=w.apply(this,arguments);return j||(j=b(this,D),this._senders.push(j)),j};var C=p.RTCPeerConnection.prototype.removeTrack;p.RTCPeerConnection.prototype.removeTrack=function(D){C.apply(this,arguments);var k=this._senders.indexOf(D);k!==-1&&this._senders.splice(k,1)}}var T=p.RTCPeerConnection.prototype.addStream;p.RTCPeerConnection.prototype.addStream=function(D){var k=this;this._senders=this._senders||[],T.apply(this,[D]),D.getTracks().forEach(function(j){k._senders.push(b(k,j))})};var S=p.RTCPeerConnection.prototype.removeStream;p.RTCPeerConnection.prototype.removeStream=function(D){var k=this;this._senders=this._senders||[],S.apply(this,[D]),D.getTracks().forEach(function(j){var F=k._senders.find(function(W){return W.track===j});F&&k._senders.splice(k._senders.indexOf(F),1)})}}else if(u(p)==="object"&&p.RTCPeerConnection&&"getSenders"in p.RTCPeerConnection.prototype&&"createDTMFSender"in p.RTCPeerConnection.prototype&&p.RTCRtpSender&&!("dtmf"in p.RTCRtpSender.prototype)){var A=p.RTCPeerConnection.prototype.getSenders;p.RTCPeerConnection.prototype.getSenders=function(){var D=this,k=A.apply(this,[]);return k.forEach(function(j){return j._pc=D}),k},Object.defineProperty(p.RTCRtpSender.prototype,"dtmf",{get:function(){return this._dtmf===void 0&&(this.track.kind==="audio"?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function g(p){if(p.RTCPeerConnection){var b=p.RTCPeerConnection.prototype.getStats;p.RTCPeerConnection.prototype.getStats=function(){var w=this,[C,T,S]=arguments;if(arguments.length>0&&typeof C=="function")return b.apply(this,arguments);if(b.length===0&&(arguments.length===0||typeof C!="function"))return b.apply(this,[]);var A=function(k){var j={};return k.result().forEach(function(F){var W={id:F.id,timestamp:F.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[F.type]||F.type};F.names().forEach(function(z){W[z]=F.stat(z)}),j[W.id]=W}),j},D=function(k){return new Map(Object.keys(k).map(function(j){return[j,k[j]]}))};return arguments.length>=2?b.apply(this,[function(k){T(D(A(k)))},C]):new Promise(function(k,j){b.apply(w,[function(F){k(D(A(F)))},j])}).then(T,S)}}}function E(p){if(u(p)==="object"&&p.RTCPeerConnection&&p.RTCRtpSender&&p.RTCRtpReceiver){if(!("getStats"in p.RTCRtpSender.prototype)){var b=p.RTCPeerConnection.prototype.getSenders;b&&(p.RTCPeerConnection.prototype.getSenders=function(){var S=this,A=b.apply(this,[]);return A.forEach(function(D){return D._pc=S}),A});var w=p.RTCPeerConnection.prototype.addTrack;w&&(p.RTCPeerConnection.prototype.addTrack=function(){var S=w.apply(this,arguments);return S._pc=this,S}),p.RTCRtpSender.prototype.getStats=function(){var S=this;return this._pc.getStats().then(function(A){return i.filterStats(A,S.track,!0)})}}if(!("getStats"in p.RTCRtpReceiver.prototype)){var C=p.RTCPeerConnection.prototype.getReceivers;C&&(p.RTCPeerConnection.prototype.getReceivers=function(){var S=this,A=C.apply(this,[]);return A.forEach(function(D){return D._pc=S}),A}),i.wrapPeerConnectionEvent(p,"track",function(S){return S.receiver._pc=S.srcElement,S}),p.RTCRtpReceiver.prototype.getStats=function(){var S=this;return this._pc.getStats().then(function(A){return i.filterStats(A,S.track,!1)})}}if("getStats"in p.RTCRtpSender.prototype&&"getStats"in p.RTCRtpReceiver.prototype){var T=p.RTCPeerConnection.prototype.getStats;p.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof p.MediaStreamTrack){var S,A,D,k=arguments[0];return this.getSenders().forEach(function(j){j.track===k&&(S?D=!0:S=j)}),this.getReceivers().forEach(function(j){return j.track===k&&(A?D=!0:A=j),j.track===k}),D||S&&A?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):S?S.getStats():A?A.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return T.apply(this,arguments)}}}}function _(p){p.RTCPeerConnection.prototype.getLocalStreams=function(){var S=this;return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(function(A){return S._shimmedLocalStreams[A][0]})};var b=p.RTCPeerConnection.prototype.addTrack;p.RTCPeerConnection.prototype.addTrack=function(S,A){if(!A)return b.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};var D=b.apply(this,arguments);return this._shimmedLocalStreams[A.id]?this._shimmedLocalStreams[A.id].indexOf(D)===-1&&this._shimmedLocalStreams[A.id].push(D):this._shimmedLocalStreams[A.id]=[A,D],D};var w=p.RTCPeerConnection.prototype.addStream;p.RTCPeerConnection.prototype.addStream=function(S){var A=this;this._shimmedLocalStreams=this._shimmedLocalStreams||{},S.getTracks().forEach(function(j){if(A.getSenders().find(function(F){return F.track===j}))throw new DOMException("Track already exists.","InvalidAccessError")});var D=this.getSenders();w.apply(this,arguments);var k=this.getSenders().filter(function(j){return D.indexOf(j)===-1});this._shimmedLocalStreams[S.id]=[S].concat(k)};var C=p.RTCPeerConnection.prototype.removeStream;p.RTCPeerConnection.prototype.removeStream=function(S){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[S.id],C.apply(this,arguments)};var T=p.RTCPeerConnection.prototype.removeTrack;p.RTCPeerConnection.prototype.removeTrack=function(S){var A=this;return this._shimmedLocalStreams=this._shimmedLocalStreams||{},S&&Object.keys(this._shimmedLocalStreams).forEach(function(D){var k=A._shimmedLocalStreams[D].indexOf(S);k!==-1&&A._shimmedLocalStreams[D].splice(k,1),A._shimmedLocalStreams[D].length===1&&delete A._shimmedLocalStreams[D]}),T.apply(this,arguments)}}function x(p,b){if(p.RTCPeerConnection){if(p.RTCPeerConnection.prototype.addTrack&&b.version>=65)return _(p);var w=p.RTCPeerConnection.prototype.getLocalStreams;p.RTCPeerConnection.prototype.getLocalStreams=function(){var k=this,j=w.apply(this);return this._reverseStreams=this._reverseStreams||{},j.map(function(F){return k._reverseStreams[F.id]})};var C=p.RTCPeerConnection.prototype.addStream;p.RTCPeerConnection.prototype.addStream=function(k){var j=this;if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},k.getTracks().forEach(function(W){if(j.getSenders().find(function(z){return z.track===W}))throw new DOMException("Track already exists.","InvalidAccessError")}),!this._reverseStreams[k.id]){var F=new p.MediaStream(k.getTracks());this._streams[k.id]=F,this._reverseStreams[F.id]=k,k=F}C.apply(this,[k])};var T=p.RTCPeerConnection.prototype.removeStream;p.RTCPeerConnection.prototype.removeStream=function(k){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},T.apply(this,[this._streams[k.id]||k]),delete this._reverseStreams[this._streams[k.id]?this._streams[k.id].id:k.id],delete this._streams[k.id]},p.RTCPeerConnection.prototype.addTrack=function(k,j){var F=this;if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");var W=[].slice.call(arguments,1);if(W.length!==1||!W[0].getTracks().find(function(he){return he===k}))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");if(this.getSenders().find(function(he){return he.track===k}))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};var z=this._streams[j.id];if(z)z.addTrack(k),Promise.resolve().then(function(){F.dispatchEvent(new Event("negotiationneeded"))});else{var re=new p.MediaStream([k]);this._streams[j.id]=re,this._reverseStreams[re.id]=j,this.addStream(re)}return this.getSenders().find(function(he){return he.track===k})},["createOffer","createAnswer"].forEach(function(k){var j=p.RTCPeerConnection.prototype[k],F=c({},k,function(){var W=this,z=arguments;return arguments.length&&typeof arguments[0]=="function"?j.apply(this,[function(re){var he=D(W,re);z[0].apply(null,[he])},function(re){z[1]&&z[1].apply(null,re)},arguments[2]]):j.apply(this,arguments).then(function(re){return D(W,re)})});p.RTCPeerConnection.prototype[k]=F[k]});var S=p.RTCPeerConnection.prototype.setLocalDescription;p.RTCPeerConnection.prototype.setLocalDescription=function(){return arguments.length&&arguments[0].type?(arguments[0]=(k=this,j=arguments[0],F=j.sdp,Object.keys(k._reverseStreams||[]).forEach(function(W){var z=k._reverseStreams[W],re=k._streams[z.id];F=F.replace(new RegExp(z.id,"g"),re.id)}),new RTCSessionDescription({type:j.type,sdp:F})),S.apply(this,arguments)):S.apply(this,arguments);var k,j,F};var A=Object.getOwnPropertyDescriptor(p.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(p.RTCPeerConnection.prototype,"localDescription",{get:function(){var k=A.get.apply(this);return k.type===""?k:D(this,k)}}),p.RTCPeerConnection.prototype.removeTrack=function(k){var j,F=this;if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!k._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(k._pc!==this)throw new DOMException("Sender was not created by this connection.","InvalidAccessError");this._streams=this._streams||{},Object.keys(this._streams).forEach(function(W){F._streams[W].getTracks().find(function(z){return k.track===z})&&(j=F._streams[W])}),j&&(j.getTracks().length===1?this.removeStream(this._reverseStreams[j.id]):j.removeTrack(k.track),this.dispatchEvent(new Event("negotiationneeded")))}}function D(k,j){var F=j.sdp;return Object.keys(k._reverseStreams||[]).forEach(function(W){var z=k._reverseStreams[W],re=k._streams[z.id];F=F.replace(new RegExp(re.id,"g"),z.id)}),new RTCSessionDescription({type:j.type,sdp:F})}}function m(p,b){!p.RTCPeerConnection&&p.webkitRTCPeerConnection&&(p.RTCPeerConnection=p.webkitRTCPeerConnection),p.RTCPeerConnection&&b.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(w){var C=p.RTCPeerConnection.prototype[w],T=c({},w,function(){return arguments[0]=new(w==="addIceCandidate"?p.RTCIceCandidate:p.RTCSessionDescription)(arguments[0]),C.apply(this,arguments)});p.RTCPeerConnection.prototype[w]=T[w]})}function f(p,b){i.wrapPeerConnectionEvent(p,"negotiationneeded",function(w){var C=w.target;if(!(b.version<72||C.getConfiguration&&C.getConfiguration().sdpSemantics==="plan-b")||C.signalingState==="stable")return w})}},{"../utils.js":"iSxC","./getusermedia":"s6SN","./getdisplaymedia":"VHa8"}],NZ1C:[function(o,e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.filterIceServers=s;var i=r(o("../utils"));function n(){if(typeof WeakMap!="function")return null;var a=new WeakMap;return n=function(){return a},a}function r(a){if(a&&a.__esModule)return a;if(a===null||typeof a!="object"&&typeof a!="function")return{default:a};var c=n();if(c&&c.has(a))return c.get(a);var u={},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var d in a)if(Object.prototype.hasOwnProperty.call(a,d)){var h=l?Object.getOwnPropertyDescriptor(a,d):null;h&&(h.get||h.set)?Object.defineProperty(u,d,h):u[d]=a[d]}return u.default=a,c&&c.set(a,u),u}function s(a,c){var u=!1;return(a=JSON.parse(JSON.stringify(a))).filter(function(l){if(l&&(l.urls||l.url)){var d=l.urls||l.url;l.url&&!l.urls&&i.deprecated("RTCIceServer.url","RTCIceServer.urls");var h=typeof d=="string";return h&&(d=[d]),d=d.filter(function(g){if(g.indexOf("stun:")===0)return!1;var E=g.startsWith("turn")&&!g.startsWith("turn:[")&&g.includes("transport=udp");return E&&!u?(u=!0,!0):E&&!u}),delete l.url,l.urls=h?d[0]:d,!!d.length}})}},{"../utils":"iSxC"}],YHvh:[function(o,e,t){"use strict";var i={generateIdentifier:function(){return Math.random().toString(36).substr(2,10)}};i.localCName=i.generateIdentifier(),i.splitLines=function(n){return n.trim().split(`
2
2
  `).map(function(r){return r.trim()})},i.splitSections=function(n){return n.split(`
3
3
  m=`).map(function(r,s){return(s>0?"m="+r:r).trim()+`\r
4
4
  `})},i.getDescription=function(n){var r=i.splitSections(n);return r&&r[0]},i.getMediaSections=function(n){var r=i.splitSections(n);return r.shift(),r},i.matchPrefix=function(n,r){return i.splitLines(n).filter(function(s){return s.indexOf(r)===0})},i.parseCandidate=function(n){for(var r,s={foundation:(r=n.indexOf("a=candidate:")===0?n.substring(12).split(" "):n.substring(10).split(" "))[0],component:parseInt(r[1],10),protocol:r[2].toLowerCase(),priority:parseInt(r[3],10),ip:r[4],address:r[4],port:parseInt(r[5],10),type:r[7]},a=8;a<r.length;a+=2)switch(r[a]){case"raddr":s.relatedAddress=r[a+1];break;case"rport":s.relatedPort=parseInt(r[a+1],10);break;case"tcptype":s.tcpType=r[a+1];break;case"ufrag":s.ufrag=r[a+1],s.usernameFragment=r[a+1];break;default:s[r[a]]=r[a+1]}return s},i.writeCandidate=function(n){var r=[];r.push(n.foundation),r.push(n.component),r.push(n.protocol.toUpperCase()),r.push(n.priority),r.push(n.address||n.ip),r.push(n.port);var s=n.type;return r.push("typ"),r.push(s),s!=="host"&&n.relatedAddress&&n.relatedPort&&(r.push("raddr"),r.push(n.relatedAddress),r.push("rport"),r.push(n.relatedPort)),n.tcpType&&n.protocol.toLowerCase()==="tcp"&&(r.push("tcptype"),r.push(n.tcpType)),(n.usernameFragment||n.ufrag)&&(r.push("ufrag"),r.push(n.usernameFragment||n.ufrag)),"candidate:"+r.join(" ")},i.parseIceOptions=function(n){return n.substr(14).split(" ")},i.parseRtpMap=function(n){var r=n.substr(9).split(" "),s={payloadType:parseInt(r.shift(),10)};return r=r[0].split("/"),s.name=r[0],s.clockRate=parseInt(r[1],10),s.channels=r.length===3?parseInt(r[2],10):1,s.numChannels=s.channels,s},i.writeRtpMap=function(n){var r=n.payloadType;n.preferredPayloadType!==void 0&&(r=n.preferredPayloadType);var s=n.channels||n.numChannels||1;return"a=rtpmap:"+r+" "+n.name+"/"+n.clockRate+(s!==1?"/"+s:"")+`\r
@@ -10,12 +10,12 @@ m=`).map(function(r,s){return(s>0?"m="+r:r).trim()+`\r
10
10
  `}),s},i.parseCryptoLine=function(n){var r=n.substr(9).split(" ");return{tag:parseInt(r[0],10),cryptoSuite:r[1],keyParams:r[2],sessionParams:r.slice(3)}},i.writeCryptoLine=function(n){return"a=crypto:"+n.tag+" "+n.cryptoSuite+" "+(typeof n.keyParams=="object"?i.writeCryptoKeyParams(n.keyParams):n.keyParams)+(n.sessionParams?" "+n.sessionParams.join(" "):"")+`\r
11
11
  `},i.parseCryptoKeyParams=function(n){if(n.indexOf("inline:")!==0)return null;var r=n.substr(7).split("|");return{keyMethod:"inline",keySalt:r[0],lifeTime:r[1],mkiValue:r[2]?r[2].split(":")[0]:void 0,mkiLength:r[2]?r[2].split(":")[1]:void 0}},i.writeCryptoKeyParams=function(n){return n.keyMethod+":"+n.keySalt+(n.lifeTime?"|"+n.lifeTime:"")+(n.mkiValue&&n.mkiLength?"|"+n.mkiValue+":"+n.mkiLength:"")},i.getCryptoParameters=function(n,r){return i.matchPrefix(n+r,"a=crypto:").map(i.parseCryptoLine)},i.getIceParameters=function(n,r){var s=i.matchPrefix(n+r,"a=ice-ufrag:")[0],a=i.matchPrefix(n+r,"a=ice-pwd:")[0];return s&&a?{usernameFragment:s.substr(12),password:a.substr(10)}:null},i.writeIceParameters=function(n){return"a=ice-ufrag:"+n.usernameFragment+`\r
12
12
  a=ice-pwd:`+n.password+`\r
13
- `},i.parseRtpParameters=function(n){for(var r={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},s=i.splitLines(n)[0].split(" "),a=3;a<s.length;a++){var c=s[a],d=i.matchPrefix(n,"a=rtpmap:"+c+" ")[0];if(d){var l=i.parseRtpMap(d),u=i.matchPrefix(n,"a=fmtp:"+c+" ");switch(l.parameters=u.length?i.parseFmtp(u[0]):{},l.rtcpFeedback=i.matchPrefix(n,"a=rtcp-fb:"+c+" ").map(i.parseRtcpFb),r.codecs.push(l),l.name.toUpperCase()){case"RED":case"ULPFEC":r.fecMechanisms.push(l.name.toUpperCase())}}}return i.matchPrefix(n,"a=extmap:").forEach(function(h){r.headerExtensions.push(i.parseExtmap(h))}),r},i.writeRtpDescription=function(n,r){var s="";s+="m="+n+" ",s+=r.codecs.length>0?"9":"0",s+=" UDP/TLS/RTP/SAVPF ",s+=r.codecs.map(function(c){return c.preferredPayloadType!==void 0?c.preferredPayloadType:c.payloadType}).join(" ")+`\r
13
+ `},i.parseRtpParameters=function(n){for(var r={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},s=i.splitLines(n)[0].split(" "),a=3;a<s.length;a++){var c=s[a],u=i.matchPrefix(n,"a=rtpmap:"+c+" ")[0];if(u){var l=i.parseRtpMap(u),d=i.matchPrefix(n,"a=fmtp:"+c+" ");switch(l.parameters=d.length?i.parseFmtp(d[0]):{},l.rtcpFeedback=i.matchPrefix(n,"a=rtcp-fb:"+c+" ").map(i.parseRtcpFb),r.codecs.push(l),l.name.toUpperCase()){case"RED":case"ULPFEC":r.fecMechanisms.push(l.name.toUpperCase())}}}return i.matchPrefix(n,"a=extmap:").forEach(function(h){r.headerExtensions.push(i.parseExtmap(h))}),r},i.writeRtpDescription=function(n,r){var s="";s+="m="+n+" ",s+=r.codecs.length>0?"9":"0",s+=" UDP/TLS/RTP/SAVPF ",s+=r.codecs.map(function(c){return c.preferredPayloadType!==void 0?c.preferredPayloadType:c.payloadType}).join(" ")+`\r
14
14
  `,s+=`c=IN IP4 0.0.0.0\r
15
15
  `,s+=`a=rtcp:9 IN IP4 0.0.0.0\r
16
16
  `,r.codecs.forEach(function(c){s+=i.writeRtpMap(c),s+=i.writeFmtp(c),s+=i.writeRtcpFb(c)});var a=0;return r.codecs.forEach(function(c){c.maxptime>a&&(a=c.maxptime)}),a>0&&(s+="a=maxptime:"+a+`\r
17
17
  `),s+=`a=rtcp-mux\r
18
- `,r.headerExtensions&&r.headerExtensions.forEach(function(c){s+=i.writeExtmap(c)}),s},i.parseRtpEncodingParameters=function(n){var r,s=[],a=i.parseRtpParameters(n),c=a.fecMechanisms.indexOf("RED")!==-1,d=a.fecMechanisms.indexOf("ULPFEC")!==-1,l=i.matchPrefix(n,"a=ssrc:").map(function(E){return i.parseSsrcMedia(E)}).filter(function(E){return E.attribute==="cname"}),u=l.length>0&&l[0].ssrc,h=i.matchPrefix(n,"a=ssrc-group:FID").map(function(E){return E.substr(17).split(" ").map(function(_){return parseInt(_,10)})});h.length>0&&h[0].length>1&&h[0][0]===u&&(r=h[0][1]),a.codecs.forEach(function(E){if(E.name.toUpperCase()==="RTX"&&E.parameters.apt){var _={ssrc:u,codecPayloadType:parseInt(E.parameters.apt,10)};u&&r&&(_.rtx={ssrc:r}),s.push(_),c&&((_=JSON.parse(JSON.stringify(_))).fec={ssrc:u,mechanism:d?"red+ulpfec":"red"},s.push(_))}}),s.length===0&&u&&s.push({ssrc:u});var g=i.matchPrefix(n,"b=");return g.length&&(g=g[0].indexOf("b=TIAS:")===0?parseInt(g[0].substr(7),10):g[0].indexOf("b=AS:")===0?1e3*parseInt(g[0].substr(5),10)*.95-16e3:void 0,s.forEach(function(E){E.maxBitrate=g})),s},i.parseRtcpParameters=function(n){var r={},s=i.matchPrefix(n,"a=ssrc:").map(function(d){return i.parseSsrcMedia(d)}).filter(function(d){return d.attribute==="cname"})[0];s&&(r.cname=s.value,r.ssrc=s.ssrc);var a=i.matchPrefix(n,"a=rtcp-rsize");r.reducedSize=a.length>0,r.compound=a.length===0;var c=i.matchPrefix(n,"a=rtcp-mux");return r.mux=c.length>0,r},i.parseMsid=function(n){var r,s=i.matchPrefix(n,"a=msid:");if(s.length===1)return{stream:(r=s[0].substr(7).split(" "))[0],track:r[1]};var a=i.matchPrefix(n,"a=ssrc:").map(function(c){return i.parseSsrcMedia(c)}).filter(function(c){return c.attribute==="msid"});return a.length>0?{stream:(r=a[0].value.split(" "))[0],track:r[1]}:void 0},i.parseSctpDescription=function(n){var r,s=i.parseMLine(n),a=i.matchPrefix(n,"a=max-message-size:");a.length>0&&(r=parseInt(a[0].substr(19),10)),isNaN(r)&&(r=65536);var c=i.matchPrefix(n,"a=sctp-port:");if(c.length>0)return{port:parseInt(c[0].substr(12),10),protocol:s.fmt,maxMessageSize:r};if(i.matchPrefix(n,"a=sctpmap:").length>0){var d=i.matchPrefix(n,"a=sctpmap:")[0].substr(10).split(" ");return{port:parseInt(d[0],10),protocol:d[1],maxMessageSize:r}}},i.writeSctpDescription=function(n,r){var s=[];return s=n.protocol!=="DTLS/SCTP"?["m="+n.kind+" 9 "+n.protocol+" "+r.protocol+`\r
18
+ `,r.headerExtensions&&r.headerExtensions.forEach(function(c){s+=i.writeExtmap(c)}),s},i.parseRtpEncodingParameters=function(n){var r,s=[],a=i.parseRtpParameters(n),c=a.fecMechanisms.indexOf("RED")!==-1,u=a.fecMechanisms.indexOf("ULPFEC")!==-1,l=i.matchPrefix(n,"a=ssrc:").map(function(E){return i.parseSsrcMedia(E)}).filter(function(E){return E.attribute==="cname"}),d=l.length>0&&l[0].ssrc,h=i.matchPrefix(n,"a=ssrc-group:FID").map(function(E){return E.substr(17).split(" ").map(function(_){return parseInt(_,10)})});h.length>0&&h[0].length>1&&h[0][0]===d&&(r=h[0][1]),a.codecs.forEach(function(E){if(E.name.toUpperCase()==="RTX"&&E.parameters.apt){var _={ssrc:d,codecPayloadType:parseInt(E.parameters.apt,10)};d&&r&&(_.rtx={ssrc:r}),s.push(_),c&&((_=JSON.parse(JSON.stringify(_))).fec={ssrc:d,mechanism:u?"red+ulpfec":"red"},s.push(_))}}),s.length===0&&d&&s.push({ssrc:d});var g=i.matchPrefix(n,"b=");return g.length&&(g=g[0].indexOf("b=TIAS:")===0?parseInt(g[0].substr(7),10):g[0].indexOf("b=AS:")===0?1e3*parseInt(g[0].substr(5),10)*.95-16e3:void 0,s.forEach(function(E){E.maxBitrate=g})),s},i.parseRtcpParameters=function(n){var r={},s=i.matchPrefix(n,"a=ssrc:").map(function(u){return i.parseSsrcMedia(u)}).filter(function(u){return u.attribute==="cname"})[0];s&&(r.cname=s.value,r.ssrc=s.ssrc);var a=i.matchPrefix(n,"a=rtcp-rsize");r.reducedSize=a.length>0,r.compound=a.length===0;var c=i.matchPrefix(n,"a=rtcp-mux");return r.mux=c.length>0,r},i.parseMsid=function(n){var r,s=i.matchPrefix(n,"a=msid:");if(s.length===1)return{stream:(r=s[0].substr(7).split(" "))[0],track:r[1]};var a=i.matchPrefix(n,"a=ssrc:").map(function(c){return i.parseSsrcMedia(c)}).filter(function(c){return c.attribute==="msid"});return a.length>0?{stream:(r=a[0].value.split(" "))[0],track:r[1]}:void 0},i.parseSctpDescription=function(n){var r,s=i.parseMLine(n),a=i.matchPrefix(n,"a=max-message-size:");a.length>0&&(r=parseInt(a[0].substr(19),10)),isNaN(r)&&(r=65536);var c=i.matchPrefix(n,"a=sctp-port:");if(c.length>0)return{port:parseInt(c[0].substr(12),10),protocol:s.fmt,maxMessageSize:r};if(i.matchPrefix(n,"a=sctpmap:").length>0){var u=i.matchPrefix(n,"a=sctpmap:")[0].substr(10).split(" ");return{port:parseInt(u[0],10),protocol:u[1],maxMessageSize:r}}},i.writeSctpDescription=function(n,r){var s=[];return s=n.protocol!=="DTLS/SCTP"?["m="+n.kind+" 9 "+n.protocol+" "+r.protocol+`\r
19
19
  `,`c=IN IP4 0.0.0.0\r
20
20
  `,"a=sctp-port:"+r.port+`\r
21
21
  `]:["m="+n.kind+" 9 "+n.protocol+" "+r.port+`\r
@@ -32,27 +32,27 @@ t=0 0\r
32
32
  `:n.rtpSender?c+=`a=sendonly\r
33
33
  `:n.rtpReceiver?c+=`a=recvonly\r
34
34
  `:c+=`a=inactive\r
35
- `,n.rtpSender){var d="msid:"+a.id+" "+n.rtpSender.track.id+`\r
36
- `;c+="a="+d,c+="a=ssrc:"+n.sendEncodingParameters[0].ssrc+" "+d,n.sendEncodingParameters[0].rtx&&(c+="a=ssrc:"+n.sendEncodingParameters[0].rtx.ssrc+" "+d,c+="a=ssrc-group:FID "+n.sendEncodingParameters[0].ssrc+" "+n.sendEncodingParameters[0].rtx.ssrc+`\r
35
+ `,n.rtpSender){var u="msid:"+a.id+" "+n.rtpSender.track.id+`\r
36
+ `;c+="a="+u,c+="a=ssrc:"+n.sendEncodingParameters[0].ssrc+" "+u,n.sendEncodingParameters[0].rtx&&(c+="a=ssrc:"+n.sendEncodingParameters[0].rtx.ssrc+" "+u,c+="a=ssrc-group:FID "+n.sendEncodingParameters[0].ssrc+" "+n.sendEncodingParameters[0].rtx.ssrc+`\r
37
37
  `)}return c+="a=ssrc:"+n.sendEncodingParameters[0].ssrc+" cname:"+i.localCName+`\r
38
38
  `,n.rtpSender&&n.sendEncodingParameters[0].rtx&&(c+="a=ssrc:"+n.sendEncodingParameters[0].rtx.ssrc+" cname:"+i.localCName+`\r
39
- `),c},i.getDirection=function(n,r){for(var s=i.splitLines(n),a=0;a<s.length;a++)switch(s[a]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return s[a].substr(2)}return r?i.getDirection(r):"sendrecv"},i.getKind=function(n){return i.splitLines(n)[0].split(" ")[0].substr(2)},i.isRejected=function(n){return n.split(" ",2)[1]==="0"},i.parseMLine=function(n){var r=i.splitLines(n)[0].substr(2).split(" ");return{kind:r[0],port:parseInt(r[1],10),protocol:r[2],fmt:r.slice(3).join(" ")}},i.parseOLine=function(n){var r=i.matchPrefix(n,"o=")[0].substr(2).split(" ");return{username:r[0],sessionId:r[1],sessionVersion:parseInt(r[2],10),netType:r[3],addressType:r[4],address:r[5]}},i.isValidSDP=function(n){if(typeof n!="string"||n.length===0)return!1;for(var r=i.splitLines(n),s=0;s<r.length;s++)if(r[s].length<2||r[s].charAt(1)!=="=")return!1;return!0},typeof e=="object"&&(e.exports=i)},{}],NJ2u:[function(o,e,t){"use strict";var i=o("sdp");function n(u){return{inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[u.type]||u.type}function r(u,h,g,E,_){var x=i.writeRtpDescription(u.kind,h);if(x+=i.writeIceParameters(u.iceGatherer.getLocalParameters()),x+=i.writeDtlsParameters(u.dtlsTransport.getLocalParameters(),g==="offer"?"actpass":_||"active"),x+="a=mid:"+u.mid+`\r
40
- `,u.rtpSender&&u.rtpReceiver?x+=`a=sendrecv\r
41
- `:u.rtpSender?x+=`a=sendonly\r
42
- `:u.rtpReceiver?x+=`a=recvonly\r
39
+ `),c},i.getDirection=function(n,r){for(var s=i.splitLines(n),a=0;a<s.length;a++)switch(s[a]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return s[a].substr(2)}return r?i.getDirection(r):"sendrecv"},i.getKind=function(n){return i.splitLines(n)[0].split(" ")[0].substr(2)},i.isRejected=function(n){return n.split(" ",2)[1]==="0"},i.parseMLine=function(n){var r=i.splitLines(n)[0].substr(2).split(" ");return{kind:r[0],port:parseInt(r[1],10),protocol:r[2],fmt:r.slice(3).join(" ")}},i.parseOLine=function(n){var r=i.matchPrefix(n,"o=")[0].substr(2).split(" ");return{username:r[0],sessionId:r[1],sessionVersion:parseInt(r[2],10),netType:r[3],addressType:r[4],address:r[5]}},i.isValidSDP=function(n){if(typeof n!="string"||n.length===0)return!1;for(var r=i.splitLines(n),s=0;s<r.length;s++)if(r[s].length<2||r[s].charAt(1)!=="=")return!1;return!0},typeof e=="object"&&(e.exports=i)},{}],NJ2u:[function(o,e,t){"use strict";var i=o("sdp");function n(d){return{inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[d.type]||d.type}function r(d,h,g,E,_){var x=i.writeRtpDescription(d.kind,h);if(x+=i.writeIceParameters(d.iceGatherer.getLocalParameters()),x+=i.writeDtlsParameters(d.dtlsTransport.getLocalParameters(),g==="offer"?"actpass":_||"active"),x+="a=mid:"+d.mid+`\r
40
+ `,d.rtpSender&&d.rtpReceiver?x+=`a=sendrecv\r
41
+ `:d.rtpSender?x+=`a=sendonly\r
42
+ `:d.rtpReceiver?x+=`a=recvonly\r
43
43
  `:x+=`a=inactive\r
44
- `,u.rtpSender){var m=u.rtpSender._initialTrackId||u.rtpSender.track.id;u.rtpSender._initialTrackId=m;var f="msid:"+(E?E.id:"-")+" "+m+`\r
45
- `;x+="a="+f,x+="a=ssrc:"+u.sendEncodingParameters[0].ssrc+" "+f,u.sendEncodingParameters[0].rtx&&(x+="a=ssrc:"+u.sendEncodingParameters[0].rtx.ssrc+" "+f,x+="a=ssrc-group:FID "+u.sendEncodingParameters[0].ssrc+" "+u.sendEncodingParameters[0].rtx.ssrc+`\r
46
- `)}return x+="a=ssrc:"+u.sendEncodingParameters[0].ssrc+" cname:"+i.localCName+`\r
47
- `,u.rtpSender&&u.sendEncodingParameters[0].rtx&&(x+="a=ssrc:"+u.sendEncodingParameters[0].rtx.ssrc+" cname:"+i.localCName+`\r
48
- `),x}function s(u,h){var g=!1;return(u=JSON.parse(JSON.stringify(u))).filter(function(E){if(E&&(E.urls||E.url)){var _=E.urls||E.url;E.url&&!E.urls&&console.warn("RTCIceServer.url is deprecated! Use urls instead.");var x=typeof _=="string";return x&&(_=[_]),_=_.filter(function(m){return m.indexOf("turn:")===0&&m.indexOf("transport=udp")!==-1&&m.indexOf("turn:[")===-1&&!g?(g=!0,!0):m.indexOf("stun:")===0&&h>=14393&&m.indexOf("?transport=udp")===-1}),delete E.url,E.urls=x?_[0]:_,!!_.length}})}function a(u,h){var g={codecs:[],headerExtensions:[],fecMechanisms:[]},E=function(x,m){x=parseInt(x,10);for(var f=0;f<m.length;f++)if(m[f].payloadType===x||m[f].preferredPayloadType===x)return m[f]},_=function(x,m,f,p){var b=E(x.parameters.apt,f),w=E(m.parameters.apt,p);return b&&w&&b.name.toLowerCase()===w.name.toLowerCase()};return u.codecs.forEach(function(x){for(var m=0;m<h.codecs.length;m++){var f=h.codecs[m];if(x.name.toLowerCase()===f.name.toLowerCase()&&x.clockRate===f.clockRate){if(x.name.toLowerCase()==="rtx"&&x.parameters&&f.parameters.apt&&!_(x,f,u.codecs,h.codecs))continue;(f=JSON.parse(JSON.stringify(f))).numChannels=Math.min(x.numChannels,f.numChannels),g.codecs.push(f),f.rtcpFeedback=f.rtcpFeedback.filter(function(p){for(var b=0;b<x.rtcpFeedback.length;b++)if(x.rtcpFeedback[b].type===p.type&&x.rtcpFeedback[b].parameter===p.parameter)return!0;return!1});break}}}),u.headerExtensions.forEach(function(x){for(var m=0;m<h.headerExtensions.length;m++){var f=h.headerExtensions[m];if(x.uri===f.uri){g.headerExtensions.push(f);break}}}),g}function c(u,h,g){return{offer:{setLocalDescription:["stable","have-local-offer"],setRemoteDescription:["stable","have-remote-offer"]},answer:{setLocalDescription:["have-remote-offer","have-local-pranswer"],setRemoteDescription:["have-local-offer","have-remote-pranswer"]}}[h][u].indexOf(g)!==-1}function d(u,h){var g=u.getRemoteCandidates().find(function(E){return h.foundation===E.foundation&&h.ip===E.ip&&h.port===E.port&&h.priority===E.priority&&h.protocol===E.protocol&&h.type===E.type});return g||u.addRemoteCandidate(h),!g}function l(u,h){var g=new Error(h);return g.name=u,g.code={NotSupportedError:9,InvalidStateError:11,InvalidAccessError:15,TypeError:void 0,OperationError:void 0}[u],g}e.exports=function(u,h){function g(m,f){f.addTrack(m),f.dispatchEvent(new u.MediaStreamTrackEvent("addtrack",{track:m}))}function E(m,f,p,b){var w=new Event("track");w.track=f,w.receiver=p,w.transceiver={receiver:p},w.streams=b,u.setTimeout(function(){m._dispatchEvent("track",w)})}var _=function(m){var f=this,p=document.createDocumentFragment();if(["addEventListener","removeEventListener","dispatchEvent"].forEach(function(w){f[w]=p[w].bind(p)}),this.canTrickleIceCandidates=null,this.needNegotiation=!1,this.localStreams=[],this.remoteStreams=[],this._localDescription=null,this._remoteDescription=null,this.signalingState="stable",this.iceConnectionState="new",this.connectionState="new",this.iceGatheringState="new",m=JSON.parse(JSON.stringify(m||{})),this.usingBundle=m.bundlePolicy==="max-bundle",m.rtcpMuxPolicy==="negotiate")throw l("NotSupportedError","rtcpMuxPolicy 'negotiate' is not supported");switch(m.rtcpMuxPolicy||(m.rtcpMuxPolicy="require"),m.iceTransportPolicy){case"all":case"relay":break;default:m.iceTransportPolicy="all"}switch(m.bundlePolicy){case"balanced":case"max-compat":case"max-bundle":break;default:m.bundlePolicy="balanced"}if(m.iceServers=s(m.iceServers||[],h),this._iceGatherers=[],m.iceCandidatePoolSize)for(var b=m.iceCandidatePoolSize;b>0;b--)this._iceGatherers.push(new u.RTCIceGatherer({iceServers:m.iceServers,gatherPolicy:m.iceTransportPolicy}));else m.iceCandidatePoolSize=0;this._config=m,this.transceivers=[],this._sdpSessionId=i.generateSessionId(),this._sdpSessionVersion=0,this._dtlsRole=void 0,this._isClosed=!1};Object.defineProperty(_.prototype,"localDescription",{configurable:!0,get:function(){return this._localDescription}}),Object.defineProperty(_.prototype,"remoteDescription",{configurable:!0,get:function(){return this._remoteDescription}}),_.prototype.onicecandidate=null,_.prototype.onaddstream=null,_.prototype.ontrack=null,_.prototype.onremovestream=null,_.prototype.onsignalingstatechange=null,_.prototype.oniceconnectionstatechange=null,_.prototype.onconnectionstatechange=null,_.prototype.onicegatheringstatechange=null,_.prototype.onnegotiationneeded=null,_.prototype.ondatachannel=null,_.prototype._dispatchEvent=function(m,f){this._isClosed||(this.dispatchEvent(f),typeof this["on"+m]=="function"&&this["on"+m](f))},_.prototype._emitGatheringStateChange=function(){var m=new Event("icegatheringstatechange");this._dispatchEvent("icegatheringstatechange",m)},_.prototype.getConfiguration=function(){return this._config},_.prototype.getLocalStreams=function(){return this.localStreams},_.prototype.getRemoteStreams=function(){return this.remoteStreams},_.prototype._createTransceiver=function(m,f){var p=this.transceivers.length>0,b={track:null,iceGatherer:null,iceTransport:null,dtlsTransport:null,localCapabilities:null,remoteCapabilities:null,rtpSender:null,rtpReceiver:null,kind:m,mid:null,sendEncodingParameters:null,recvEncodingParameters:null,stream:null,associatedRemoteMediaStreams:[],wantReceive:!0};if(this.usingBundle&&p)b.iceTransport=this.transceivers[0].iceTransport,b.dtlsTransport=this.transceivers[0].dtlsTransport;else{var w=this._createIceAndDtlsTransports();b.iceTransport=w.iceTransport,b.dtlsTransport=w.dtlsTransport}return f||this.transceivers.push(b),b},_.prototype.addTrack=function(m,f){if(this._isClosed)throw l("InvalidStateError","Attempted to call addTrack on a closed peerconnection.");var p;if(this.transceivers.find(function(w){return w.track===m}))throw l("InvalidAccessError","Track already exists.");for(var b=0;b<this.transceivers.length;b++)this.transceivers[b].track||this.transceivers[b].kind!==m.kind||(p=this.transceivers[b]);return p||(p=this._createTransceiver(m.kind)),this._maybeFireNegotiationNeeded(),this.localStreams.indexOf(f)===-1&&this.localStreams.push(f),p.track=m,p.stream=f,p.rtpSender=new u.RTCRtpSender(m,p.dtlsTransport),p.rtpSender},_.prototype.addStream=function(m){var f=this;if(h>=15025)m.getTracks().forEach(function(b){f.addTrack(b,m)});else{var p=m.clone();m.getTracks().forEach(function(b,w){var C=p.getTracks()[w];b.addEventListener("enabled",function(T){C.enabled=T.enabled})}),p.getTracks().forEach(function(b){f.addTrack(b,p)})}},_.prototype.removeTrack=function(m){if(this._isClosed)throw l("InvalidStateError","Attempted to call removeTrack on a closed peerconnection.");if(!(m instanceof u.RTCRtpSender))throw new TypeError("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.");var f=this.transceivers.find(function(b){return b.rtpSender===m});if(!f)throw l("InvalidAccessError","Sender was not created by this connection.");var p=f.stream;f.rtpSender.stop(),f.rtpSender=null,f.track=null,f.stream=null,this.transceivers.map(function(b){return b.stream}).indexOf(p)===-1&&this.localStreams.indexOf(p)>-1&&this.localStreams.splice(this.localStreams.indexOf(p),1),this._maybeFireNegotiationNeeded()},_.prototype.removeStream=function(m){var f=this;m.getTracks().forEach(function(p){var b=f.getSenders().find(function(w){return w.track===p});b&&f.removeTrack(b)})},_.prototype.getSenders=function(){return this.transceivers.filter(function(m){return!!m.rtpSender}).map(function(m){return m.rtpSender})},_.prototype.getReceivers=function(){return this.transceivers.filter(function(m){return!!m.rtpReceiver}).map(function(m){return m.rtpReceiver})},_.prototype._createIceGatherer=function(m,f){var p=this;if(f&&m>0)return this.transceivers[0].iceGatherer;if(this._iceGatherers.length)return this._iceGatherers.shift();var b=new u.RTCIceGatherer({iceServers:this._config.iceServers,gatherPolicy:this._config.iceTransportPolicy});return Object.defineProperty(b,"state",{value:"new",writable:!0}),this.transceivers[m].bufferedCandidateEvents=[],this.transceivers[m].bufferCandidates=function(w){var C=!w.candidate||Object.keys(w.candidate).length===0;b.state=C?"completed":"gathering",p.transceivers[m].bufferedCandidateEvents!==null&&p.transceivers[m].bufferedCandidateEvents.push(w)},b.addEventListener("localcandidate",this.transceivers[m].bufferCandidates),b},_.prototype._gather=function(m,f){var p=this,b=this.transceivers[f].iceGatherer;if(!b.onlocalcandidate){var w=this.transceivers[f].bufferedCandidateEvents;this.transceivers[f].bufferedCandidateEvents=null,b.removeEventListener("localcandidate",this.transceivers[f].bufferCandidates),b.onlocalcandidate=function(C){if(!(p.usingBundle&&f>0)){var T=new Event("icecandidate");T.candidate={sdpMid:m,sdpMLineIndex:f};var S=C.candidate,A=!S||Object.keys(S).length===0;if(A)b.state!=="new"&&b.state!=="gathering"||(b.state="completed");else{b.state==="new"&&(b.state="gathering"),S.component=1,S.ufrag=b.getLocalParameters().usernameFragment;var D=i.writeCandidate(S);T.candidate=Object.assign(T.candidate,i.parseCandidate(D)),T.candidate.candidate=D,T.candidate.toJSON=function(){return{candidate:T.candidate.candidate,sdpMid:T.candidate.sdpMid,sdpMLineIndex:T.candidate.sdpMLineIndex,usernameFragment:T.candidate.usernameFragment}}}var k=i.getMediaSections(p._localDescription.sdp);k[T.candidate.sdpMLineIndex]+=A?`a=end-of-candidates\r
44
+ `,d.rtpSender){var m=d.rtpSender._initialTrackId||d.rtpSender.track.id;d.rtpSender._initialTrackId=m;var f="msid:"+(E?E.id:"-")+" "+m+`\r
45
+ `;x+="a="+f,x+="a=ssrc:"+d.sendEncodingParameters[0].ssrc+" "+f,d.sendEncodingParameters[0].rtx&&(x+="a=ssrc:"+d.sendEncodingParameters[0].rtx.ssrc+" "+f,x+="a=ssrc-group:FID "+d.sendEncodingParameters[0].ssrc+" "+d.sendEncodingParameters[0].rtx.ssrc+`\r
46
+ `)}return x+="a=ssrc:"+d.sendEncodingParameters[0].ssrc+" cname:"+i.localCName+`\r
47
+ `,d.rtpSender&&d.sendEncodingParameters[0].rtx&&(x+="a=ssrc:"+d.sendEncodingParameters[0].rtx.ssrc+" cname:"+i.localCName+`\r
48
+ `),x}function s(d,h){var g=!1;return(d=JSON.parse(JSON.stringify(d))).filter(function(E){if(E&&(E.urls||E.url)){var _=E.urls||E.url;E.url&&!E.urls&&console.warn("RTCIceServer.url is deprecated! Use urls instead.");var x=typeof _=="string";return x&&(_=[_]),_=_.filter(function(m){return m.indexOf("turn:")===0&&m.indexOf("transport=udp")!==-1&&m.indexOf("turn:[")===-1&&!g?(g=!0,!0):m.indexOf("stun:")===0&&h>=14393&&m.indexOf("?transport=udp")===-1}),delete E.url,E.urls=x?_[0]:_,!!_.length}})}function a(d,h){var g={codecs:[],headerExtensions:[],fecMechanisms:[]},E=function(x,m){x=parseInt(x,10);for(var f=0;f<m.length;f++)if(m[f].payloadType===x||m[f].preferredPayloadType===x)return m[f]},_=function(x,m,f,p){var b=E(x.parameters.apt,f),w=E(m.parameters.apt,p);return b&&w&&b.name.toLowerCase()===w.name.toLowerCase()};return d.codecs.forEach(function(x){for(var m=0;m<h.codecs.length;m++){var f=h.codecs[m];if(x.name.toLowerCase()===f.name.toLowerCase()&&x.clockRate===f.clockRate){if(x.name.toLowerCase()==="rtx"&&x.parameters&&f.parameters.apt&&!_(x,f,d.codecs,h.codecs))continue;(f=JSON.parse(JSON.stringify(f))).numChannels=Math.min(x.numChannels,f.numChannels),g.codecs.push(f),f.rtcpFeedback=f.rtcpFeedback.filter(function(p){for(var b=0;b<x.rtcpFeedback.length;b++)if(x.rtcpFeedback[b].type===p.type&&x.rtcpFeedback[b].parameter===p.parameter)return!0;return!1});break}}}),d.headerExtensions.forEach(function(x){for(var m=0;m<h.headerExtensions.length;m++){var f=h.headerExtensions[m];if(x.uri===f.uri){g.headerExtensions.push(f);break}}}),g}function c(d,h,g){return{offer:{setLocalDescription:["stable","have-local-offer"],setRemoteDescription:["stable","have-remote-offer"]},answer:{setLocalDescription:["have-remote-offer","have-local-pranswer"],setRemoteDescription:["have-local-offer","have-remote-pranswer"]}}[h][d].indexOf(g)!==-1}function u(d,h){var g=d.getRemoteCandidates().find(function(E){return h.foundation===E.foundation&&h.ip===E.ip&&h.port===E.port&&h.priority===E.priority&&h.protocol===E.protocol&&h.type===E.type});return g||d.addRemoteCandidate(h),!g}function l(d,h){var g=new Error(h);return g.name=d,g.code={NotSupportedError:9,InvalidStateError:11,InvalidAccessError:15,TypeError:void 0,OperationError:void 0}[d],g}e.exports=function(d,h){function g(m,f){f.addTrack(m),f.dispatchEvent(new d.MediaStreamTrackEvent("addtrack",{track:m}))}function E(m,f,p,b){var w=new Event("track");w.track=f,w.receiver=p,w.transceiver={receiver:p},w.streams=b,d.setTimeout(function(){m._dispatchEvent("track",w)})}var _=function(m){var f=this,p=document.createDocumentFragment();if(["addEventListener","removeEventListener","dispatchEvent"].forEach(function(w){f[w]=p[w].bind(p)}),this.canTrickleIceCandidates=null,this.needNegotiation=!1,this.localStreams=[],this.remoteStreams=[],this._localDescription=null,this._remoteDescription=null,this.signalingState="stable",this.iceConnectionState="new",this.connectionState="new",this.iceGatheringState="new",m=JSON.parse(JSON.stringify(m||{})),this.usingBundle=m.bundlePolicy==="max-bundle",m.rtcpMuxPolicy==="negotiate")throw l("NotSupportedError","rtcpMuxPolicy 'negotiate' is not supported");switch(m.rtcpMuxPolicy||(m.rtcpMuxPolicy="require"),m.iceTransportPolicy){case"all":case"relay":break;default:m.iceTransportPolicy="all"}switch(m.bundlePolicy){case"balanced":case"max-compat":case"max-bundle":break;default:m.bundlePolicy="balanced"}if(m.iceServers=s(m.iceServers||[],h),this._iceGatherers=[],m.iceCandidatePoolSize)for(var b=m.iceCandidatePoolSize;b>0;b--)this._iceGatherers.push(new d.RTCIceGatherer({iceServers:m.iceServers,gatherPolicy:m.iceTransportPolicy}));else m.iceCandidatePoolSize=0;this._config=m,this.transceivers=[],this._sdpSessionId=i.generateSessionId(),this._sdpSessionVersion=0,this._dtlsRole=void 0,this._isClosed=!1};Object.defineProperty(_.prototype,"localDescription",{configurable:!0,get:function(){return this._localDescription}}),Object.defineProperty(_.prototype,"remoteDescription",{configurable:!0,get:function(){return this._remoteDescription}}),_.prototype.onicecandidate=null,_.prototype.onaddstream=null,_.prototype.ontrack=null,_.prototype.onremovestream=null,_.prototype.onsignalingstatechange=null,_.prototype.oniceconnectionstatechange=null,_.prototype.onconnectionstatechange=null,_.prototype.onicegatheringstatechange=null,_.prototype.onnegotiationneeded=null,_.prototype.ondatachannel=null,_.prototype._dispatchEvent=function(m,f){this._isClosed||(this.dispatchEvent(f),typeof this["on"+m]=="function"&&this["on"+m](f))},_.prototype._emitGatheringStateChange=function(){var m=new Event("icegatheringstatechange");this._dispatchEvent("icegatheringstatechange",m)},_.prototype.getConfiguration=function(){return this._config},_.prototype.getLocalStreams=function(){return this.localStreams},_.prototype.getRemoteStreams=function(){return this.remoteStreams},_.prototype._createTransceiver=function(m,f){var p=this.transceivers.length>0,b={track:null,iceGatherer:null,iceTransport:null,dtlsTransport:null,localCapabilities:null,remoteCapabilities:null,rtpSender:null,rtpReceiver:null,kind:m,mid:null,sendEncodingParameters:null,recvEncodingParameters:null,stream:null,associatedRemoteMediaStreams:[],wantReceive:!0};if(this.usingBundle&&p)b.iceTransport=this.transceivers[0].iceTransport,b.dtlsTransport=this.transceivers[0].dtlsTransport;else{var w=this._createIceAndDtlsTransports();b.iceTransport=w.iceTransport,b.dtlsTransport=w.dtlsTransport}return f||this.transceivers.push(b),b},_.prototype.addTrack=function(m,f){if(this._isClosed)throw l("InvalidStateError","Attempted to call addTrack on a closed peerconnection.");var p;if(this.transceivers.find(function(w){return w.track===m}))throw l("InvalidAccessError","Track already exists.");for(var b=0;b<this.transceivers.length;b++)this.transceivers[b].track||this.transceivers[b].kind!==m.kind||(p=this.transceivers[b]);return p||(p=this._createTransceiver(m.kind)),this._maybeFireNegotiationNeeded(),this.localStreams.indexOf(f)===-1&&this.localStreams.push(f),p.track=m,p.stream=f,p.rtpSender=new d.RTCRtpSender(m,p.dtlsTransport),p.rtpSender},_.prototype.addStream=function(m){var f=this;if(h>=15025)m.getTracks().forEach(function(b){f.addTrack(b,m)});else{var p=m.clone();m.getTracks().forEach(function(b,w){var C=p.getTracks()[w];b.addEventListener("enabled",function(T){C.enabled=T.enabled})}),p.getTracks().forEach(function(b){f.addTrack(b,p)})}},_.prototype.removeTrack=function(m){if(this._isClosed)throw l("InvalidStateError","Attempted to call removeTrack on a closed peerconnection.");if(!(m instanceof d.RTCRtpSender))throw new TypeError("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.");var f=this.transceivers.find(function(b){return b.rtpSender===m});if(!f)throw l("InvalidAccessError","Sender was not created by this connection.");var p=f.stream;f.rtpSender.stop(),f.rtpSender=null,f.track=null,f.stream=null,this.transceivers.map(function(b){return b.stream}).indexOf(p)===-1&&this.localStreams.indexOf(p)>-1&&this.localStreams.splice(this.localStreams.indexOf(p),1),this._maybeFireNegotiationNeeded()},_.prototype.removeStream=function(m){var f=this;m.getTracks().forEach(function(p){var b=f.getSenders().find(function(w){return w.track===p});b&&f.removeTrack(b)})},_.prototype.getSenders=function(){return this.transceivers.filter(function(m){return!!m.rtpSender}).map(function(m){return m.rtpSender})},_.prototype.getReceivers=function(){return this.transceivers.filter(function(m){return!!m.rtpReceiver}).map(function(m){return m.rtpReceiver})},_.prototype._createIceGatherer=function(m,f){var p=this;if(f&&m>0)return this.transceivers[0].iceGatherer;if(this._iceGatherers.length)return this._iceGatherers.shift();var b=new d.RTCIceGatherer({iceServers:this._config.iceServers,gatherPolicy:this._config.iceTransportPolicy});return Object.defineProperty(b,"state",{value:"new",writable:!0}),this.transceivers[m].bufferedCandidateEvents=[],this.transceivers[m].bufferCandidates=function(w){var C=!w.candidate||Object.keys(w.candidate).length===0;b.state=C?"completed":"gathering",p.transceivers[m].bufferedCandidateEvents!==null&&p.transceivers[m].bufferedCandidateEvents.push(w)},b.addEventListener("localcandidate",this.transceivers[m].bufferCandidates),b},_.prototype._gather=function(m,f){var p=this,b=this.transceivers[f].iceGatherer;if(!b.onlocalcandidate){var w=this.transceivers[f].bufferedCandidateEvents;this.transceivers[f].bufferedCandidateEvents=null,b.removeEventListener("localcandidate",this.transceivers[f].bufferCandidates),b.onlocalcandidate=function(C){if(!(p.usingBundle&&f>0)){var T=new Event("icecandidate");T.candidate={sdpMid:m,sdpMLineIndex:f};var S=C.candidate,A=!S||Object.keys(S).length===0;if(A)b.state!=="new"&&b.state!=="gathering"||(b.state="completed");else{b.state==="new"&&(b.state="gathering"),S.component=1,S.ufrag=b.getLocalParameters().usernameFragment;var D=i.writeCandidate(S);T.candidate=Object.assign(T.candidate,i.parseCandidate(D)),T.candidate.candidate=D,T.candidate.toJSON=function(){return{candidate:T.candidate.candidate,sdpMid:T.candidate.sdpMid,sdpMLineIndex:T.candidate.sdpMLineIndex,usernameFragment:T.candidate.usernameFragment}}}var k=i.getMediaSections(p._localDescription.sdp);k[T.candidate.sdpMLineIndex]+=A?`a=end-of-candidates\r
49
49
  `:"a="+T.candidate.candidate+`\r
50
- `,p._localDescription.sdp=i.getDescription(p._localDescription.sdp)+k.join("");var j=p.transceivers.every(function(F){return F.iceGatherer&&F.iceGatherer.state==="completed"});p.iceGatheringState!=="gathering"&&(p.iceGatheringState="gathering",p._emitGatheringStateChange()),A||p._dispatchEvent("icecandidate",T),j&&(p._dispatchEvent("icecandidate",new Event("icecandidate")),p.iceGatheringState="complete",p._emitGatheringStateChange())}},u.setTimeout(function(){w.forEach(function(C){b.onlocalcandidate(C)})},0)}},_.prototype._createIceAndDtlsTransports=function(){var m=this,f=new u.RTCIceTransport(null);f.onicestatechange=function(){m._updateIceConnectionState(),m._updateConnectionState()};var p=new u.RTCDtlsTransport(f);return p.ondtlsstatechange=function(){m._updateConnectionState()},p.onerror=function(){Object.defineProperty(p,"state",{value:"failed",writable:!0}),m._updateConnectionState()},{iceTransport:f,dtlsTransport:p}},_.prototype._disposeIceAndDtlsTransports=function(m){var f=this.transceivers[m].iceGatherer;f&&(delete f.onlocalcandidate,delete this.transceivers[m].iceGatherer);var p=this.transceivers[m].iceTransport;p&&(delete p.onicestatechange,delete this.transceivers[m].iceTransport);var b=this.transceivers[m].dtlsTransport;b&&(delete b.ondtlsstatechange,delete b.onerror,delete this.transceivers[m].dtlsTransport)},_.prototype._transceive=function(m,f,p){var b=a(m.localCapabilities,m.remoteCapabilities);f&&m.rtpSender&&(b.encodings=m.sendEncodingParameters,b.rtcp={cname:i.localCName,compound:m.rtcpParameters.compound},m.recvEncodingParameters.length&&(b.rtcp.ssrc=m.recvEncodingParameters[0].ssrc),m.rtpSender.send(b)),p&&m.rtpReceiver&&b.codecs.length>0&&(m.kind==="video"&&m.recvEncodingParameters&&h<15019&&m.recvEncodingParameters.forEach(function(w){delete w.rtx}),m.recvEncodingParameters.length?b.encodings=m.recvEncodingParameters:b.encodings=[{}],b.rtcp={compound:m.rtcpParameters.compound},m.rtcpParameters.cname&&(b.rtcp.cname=m.rtcpParameters.cname),m.sendEncodingParameters.length&&(b.rtcp.ssrc=m.sendEncodingParameters[0].ssrc),m.rtpReceiver.receive(b))},_.prototype.setLocalDescription=function(m){var f,p,b=this;if(["offer","answer"].indexOf(m.type)===-1)return Promise.reject(l("TypeError",'Unsupported type "'+m.type+'"'));if(!c("setLocalDescription",m.type,b.signalingState)||b._isClosed)return Promise.reject(l("InvalidStateError","Can not set local "+m.type+" in state "+b.signalingState));if(m.type==="offer")f=i.splitSections(m.sdp),p=f.shift(),f.forEach(function(C,T){var S=i.parseRtpParameters(C);b.transceivers[T].localCapabilities=S}),b.transceivers.forEach(function(C,T){b._gather(C.mid,T)});else if(m.type==="answer"){f=i.splitSections(b._remoteDescription.sdp),p=f.shift();var w=i.matchPrefix(p,"a=ice-lite").length>0;f.forEach(function(C,T){var S=b.transceivers[T],A=S.iceGatherer,D=S.iceTransport,k=S.dtlsTransport,j=S.localCapabilities,F=S.remoteCapabilities;if(!(i.isRejected(C)&&i.matchPrefix(C,"a=bundle-only").length===0)&&!S.rejected){var W=i.getIceParameters(C,p),z=i.getDtlsParameters(C,p);w&&(z.role="server"),b.usingBundle&&T!==0||(b._gather(S.mid,T),D.state==="new"&&D.start(A,W,w?"controlling":"controlled"),k.state==="new"&&k.start(z));var re=a(j,F);b._transceive(S,re.codecs.length>0,!1)}})}return b._localDescription={type:m.type,sdp:m.sdp},m.type==="offer"?b._updateSignalingState("have-local-offer"):b._updateSignalingState("stable"),Promise.resolve()},_.prototype.setRemoteDescription=function(m){var f=this;if(["offer","answer"].indexOf(m.type)===-1)return Promise.reject(l("TypeError",'Unsupported type "'+m.type+'"'));if(!c("setRemoteDescription",m.type,f.signalingState)||f._isClosed)return Promise.reject(l("InvalidStateError","Can not set remote "+m.type+" in state "+f.signalingState));var p={};f.remoteStreams.forEach(function(D){p[D.id]=D});var b=[],w=i.splitSections(m.sdp),C=w.shift(),T=i.matchPrefix(C,"a=ice-lite").length>0,S=i.matchPrefix(C,"a=group:BUNDLE ").length>0;f.usingBundle=S;var A=i.matchPrefix(C,"a=ice-options:")[0];return f.canTrickleIceCandidates=!!A&&A.substr(14).split(" ").indexOf("trickle")>=0,w.forEach(function(D,k){var j=i.splitLines(D),F=i.getKind(D),W=i.isRejected(D)&&i.matchPrefix(D,"a=bundle-only").length===0,z=j[0].substr(2).split(" ")[2],re=i.getDirection(D,C),he=i.parseMsid(D),$h=i.getMid(D)||i.generateIdentifier();if(W||F==="application"&&(z==="DTLS/SCTP"||z==="UDP/DTLS/SCTP"))f.transceivers[k]={mid:$h,kind:F,protocol:z,rejected:!0};else{var Q,ep,Ls,Gc,ln,Vc,zc,js,cn;!W&&f.transceivers[k]&&f.transceivers[k].rejected&&(f.transceivers[k]=f._createTransceiver(F,!0));var tp,ip,np=i.parseRtpParameters(D);W||(tp=i.getIceParameters(D,C),(ip=i.getDtlsParameters(D,C)).role="client"),zc=i.parseRtpEncodingParameters(D);var rp=i.parseRtcpParameters(D),op=i.matchPrefix(D,"a=end-of-candidates",C).length>0,mo=i.matchPrefix(D,"a=candidate:").map(function(at){return i.parseCandidate(at)}).filter(function(at){return at.component===1});if((m.type==="offer"||m.type==="answer")&&!W&&S&&k>0&&f.transceivers[k]&&(f._disposeIceAndDtlsTransports(k),f.transceivers[k].iceGatherer=f.transceivers[0].iceGatherer,f.transceivers[k].iceTransport=f.transceivers[0].iceTransport,f.transceivers[k].dtlsTransport=f.transceivers[0].dtlsTransport,f.transceivers[k].rtpSender&&f.transceivers[k].rtpSender.setTransport(f.transceivers[0].dtlsTransport),f.transceivers[k].rtpReceiver&&f.transceivers[k].rtpReceiver.setTransport(f.transceivers[0].dtlsTransport)),m.type!=="offer"||W)m.type==="answer"&&!W&&(ep=(Q=f.transceivers[k]).iceGatherer,Ls=Q.iceTransport,Gc=Q.dtlsTransport,ln=Q.rtpReceiver,Vc=Q.sendEncodingParameters,js=Q.localCapabilities,f.transceivers[k].recvEncodingParameters=zc,f.transceivers[k].remoteCapabilities=np,f.transceivers[k].rtcpParameters=rp,mo.length&&Ls.state==="new"&&(!T&&!op||S&&k!==0?mo.forEach(function(at){d(Q.iceTransport,at)}):Ls.setRemoteCandidates(mo)),S&&k!==0||(Ls.state==="new"&&Ls.start(ep,tp,"controlling"),Gc.state==="new"&&Gc.start(ip)),!a(Q.localCapabilities,Q.remoteCapabilities).codecs.filter(function(at){return at.name.toLowerCase()==="rtx"}).length&&Q.sendEncodingParameters[0].rtx&&delete Q.sendEncodingParameters[0].rtx,f._transceive(Q,re==="sendrecv"||re==="recvonly",re==="sendrecv"||re==="sendonly"),!ln||re!=="sendrecv"&&re!=="sendonly"?delete Q.rtpReceiver:(cn=ln.track,he?(p[he.stream]||(p[he.stream]=new u.MediaStream),g(cn,p[he.stream]),b.push([cn,ln,p[he.stream]])):(p.default||(p.default=new u.MediaStream),g(cn,p.default),b.push([cn,ln,p.default]))));else{(Q=f.transceivers[k]||f._createTransceiver(F)).mid=$h,Q.iceGatherer||(Q.iceGatherer=f._createIceGatherer(k,S)),mo.length&&Q.iceTransport.state==="new"&&(!op||S&&k!==0?mo.forEach(function(at){d(Q.iceTransport,at)}):Q.iceTransport.setRemoteCandidates(mo)),js=u.RTCRtpReceiver.getCapabilities(F),h<15019&&(js.codecs=js.codecs.filter(function(at){return at.name!=="rtx"})),Vc=Q.sendEncodingParameters||[{ssrc:1001*(2*k+2)}];var go,Wc=!1;re==="sendrecv"||re==="sendonly"?(Wc=!Q.rtpReceiver,ln=Q.rtpReceiver||new u.RTCRtpReceiver(Q.dtlsTransport,F),Wc&&(cn=ln.track,he&&he.stream==="-"||(he?(p[he.stream]||(p[he.stream]=new u.MediaStream,Object.defineProperty(p[he.stream],"id",{get:function(){return he.stream}})),Object.defineProperty(cn,"id",{get:function(){return he.track}}),go=p[he.stream]):(p.default||(p.default=new u.MediaStream),go=p.default)),go&&(g(cn,go),Q.associatedRemoteMediaStreams.push(go)),b.push([cn,ln,go]))):Q.rtpReceiver&&Q.rtpReceiver.track&&(Q.associatedRemoteMediaStreams.forEach(function(at){var Nc,sp,ap=at.getTracks().find(function(Gg){return Gg.id===Q.rtpReceiver.track.id});ap&&(Nc=ap,(sp=at).removeTrack(Nc),sp.dispatchEvent(new u.MediaStreamTrackEvent("removetrack",{track:Nc})))}),Q.associatedRemoteMediaStreams=[]),Q.localCapabilities=js,Q.remoteCapabilities=np,Q.rtpReceiver=ln,Q.rtcpParameters=rp,Q.sendEncodingParameters=Vc,Q.recvEncodingParameters=zc,f._transceive(f.transceivers[k],!1,Wc)}}}),f._dtlsRole===void 0&&(f._dtlsRole=m.type==="offer"?"active":"passive"),f._remoteDescription={type:m.type,sdp:m.sdp},m.type==="offer"?f._updateSignalingState("have-remote-offer"):f._updateSignalingState("stable"),Object.keys(p).forEach(function(D){var k=p[D];if(k.getTracks().length){if(f.remoteStreams.indexOf(k)===-1){f.remoteStreams.push(k);var j=new Event("addstream");j.stream=k,u.setTimeout(function(){f._dispatchEvent("addstream",j)})}b.forEach(function(F){var W=F[0],z=F[1];k.id===F[2].id&&E(f,W,z,[k])})}}),b.forEach(function(D){D[2]||E(f,D[0],D[1],[])}),u.setTimeout(function(){f&&f.transceivers&&f.transceivers.forEach(function(D){D.iceTransport&&D.iceTransport.state==="new"&&D.iceTransport.getRemoteCandidates().length>0&&(console.warn("Timeout for addRemoteCandidate. Consider sending an end-of-candidates notification"),D.iceTransport.addRemoteCandidate({}))})},4e3),Promise.resolve()},_.prototype.close=function(){this.transceivers.forEach(function(m){m.iceTransport&&m.iceTransport.stop(),m.dtlsTransport&&m.dtlsTransport.stop(),m.rtpSender&&m.rtpSender.stop(),m.rtpReceiver&&m.rtpReceiver.stop()}),this._isClosed=!0,this._updateSignalingState("closed")},_.prototype._updateSignalingState=function(m){this.signalingState=m;var f=new Event("signalingstatechange");this._dispatchEvent("signalingstatechange",f)},_.prototype._maybeFireNegotiationNeeded=function(){var m=this;this.signalingState==="stable"&&this.needNegotiation!==!0&&(this.needNegotiation=!0,u.setTimeout(function(){if(m.needNegotiation){m.needNegotiation=!1;var f=new Event("negotiationneeded");m._dispatchEvent("negotiationneeded",f)}},0))},_.prototype._updateIceConnectionState=function(){var m,f={new:0,closed:0,checking:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach(function(b){b.iceTransport&&!b.rejected&&f[b.iceTransport.state]++}),m="new",f.failed>0?m="failed":f.checking>0?m="checking":f.disconnected>0?m="disconnected":f.new>0?m="new":f.connected>0?m="connected":f.completed>0&&(m="completed"),m!==this.iceConnectionState){this.iceConnectionState=m;var p=new Event("iceconnectionstatechange");this._dispatchEvent("iceconnectionstatechange",p)}},_.prototype._updateConnectionState=function(){var m,f={new:0,closed:0,connecting:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach(function(b){b.iceTransport&&b.dtlsTransport&&!b.rejected&&(f[b.iceTransport.state]++,f[b.dtlsTransport.state]++)}),f.connected+=f.completed,m="new",f.failed>0?m="failed":f.connecting>0?m="connecting":f.disconnected>0?m="disconnected":f.new>0?m="new":f.connected>0&&(m="connected"),m!==this.connectionState){this.connectionState=m;var p=new Event("connectionstatechange");this._dispatchEvent("connectionstatechange",p)}},_.prototype.createOffer=function(){var m=this;if(m._isClosed)return Promise.reject(l("InvalidStateError","Can not call createOffer after close"));var f=m.transceivers.filter(function(T){return T.kind==="audio"}).length,p=m.transceivers.filter(function(T){return T.kind==="video"}).length,b=arguments[0];if(b){if(b.mandatory||b.optional)throw new TypeError("Legacy mandatory/optional constraints not supported.");b.offerToReceiveAudio!==void 0&&(f=b.offerToReceiveAudio===!0?1:b.offerToReceiveAudio===!1?0:b.offerToReceiveAudio),b.offerToReceiveVideo!==void 0&&(p=b.offerToReceiveVideo===!0?1:b.offerToReceiveVideo===!1?0:b.offerToReceiveVideo)}for(m.transceivers.forEach(function(T){T.kind==="audio"?--f<0&&(T.wantReceive=!1):T.kind==="video"&&--p<0&&(T.wantReceive=!1)});f>0||p>0;)f>0&&(m._createTransceiver("audio"),f--),p>0&&(m._createTransceiver("video"),p--);var w=i.writeSessionBoilerplate(m._sdpSessionId,m._sdpSessionVersion++);m.transceivers.forEach(function(T,S){var A=T.track,D=T.kind,k=T.mid||i.generateIdentifier();T.mid=k,T.iceGatherer||(T.iceGatherer=m._createIceGatherer(S,m.usingBundle));var j=u.RTCRtpSender.getCapabilities(D);h<15019&&(j.codecs=j.codecs.filter(function(W){return W.name!=="rtx"})),j.codecs.forEach(function(W){W.name==="H264"&&W.parameters["level-asymmetry-allowed"]===void 0&&(W.parameters["level-asymmetry-allowed"]="1"),T.remoteCapabilities&&T.remoteCapabilities.codecs&&T.remoteCapabilities.codecs.forEach(function(z){W.name.toLowerCase()===z.name.toLowerCase()&&W.clockRate===z.clockRate&&(W.preferredPayloadType=z.payloadType)})}),j.headerExtensions.forEach(function(W){(T.remoteCapabilities&&T.remoteCapabilities.headerExtensions||[]).forEach(function(z){W.uri===z.uri&&(W.id=z.id)})});var F=T.sendEncodingParameters||[{ssrc:1001*(2*S+1)}];A&&h>=15019&&D==="video"&&!F[0].rtx&&(F[0].rtx={ssrc:F[0].ssrc+1}),T.wantReceive&&(T.rtpReceiver=new u.RTCRtpReceiver(T.dtlsTransport,D)),T.localCapabilities=j,T.sendEncodingParameters=F}),m._config.bundlePolicy!=="max-compat"&&(w+="a=group:BUNDLE "+m.transceivers.map(function(T){return T.mid}).join(" ")+`\r
50
+ `,p._localDescription.sdp=i.getDescription(p._localDescription.sdp)+k.join("");var j=p.transceivers.every(function(F){return F.iceGatherer&&F.iceGatherer.state==="completed"});p.iceGatheringState!=="gathering"&&(p.iceGatheringState="gathering",p._emitGatheringStateChange()),A||p._dispatchEvent("icecandidate",T),j&&(p._dispatchEvent("icecandidate",new Event("icecandidate")),p.iceGatheringState="complete",p._emitGatheringStateChange())}},d.setTimeout(function(){w.forEach(function(C){b.onlocalcandidate(C)})},0)}},_.prototype._createIceAndDtlsTransports=function(){var m=this,f=new d.RTCIceTransport(null);f.onicestatechange=function(){m._updateIceConnectionState(),m._updateConnectionState()};var p=new d.RTCDtlsTransport(f);return p.ondtlsstatechange=function(){m._updateConnectionState()},p.onerror=function(){Object.defineProperty(p,"state",{value:"failed",writable:!0}),m._updateConnectionState()},{iceTransport:f,dtlsTransport:p}},_.prototype._disposeIceAndDtlsTransports=function(m){var f=this.transceivers[m].iceGatherer;f&&(delete f.onlocalcandidate,delete this.transceivers[m].iceGatherer);var p=this.transceivers[m].iceTransport;p&&(delete p.onicestatechange,delete this.transceivers[m].iceTransport);var b=this.transceivers[m].dtlsTransport;b&&(delete b.ondtlsstatechange,delete b.onerror,delete this.transceivers[m].dtlsTransport)},_.prototype._transceive=function(m,f,p){var b=a(m.localCapabilities,m.remoteCapabilities);f&&m.rtpSender&&(b.encodings=m.sendEncodingParameters,b.rtcp={cname:i.localCName,compound:m.rtcpParameters.compound},m.recvEncodingParameters.length&&(b.rtcp.ssrc=m.recvEncodingParameters[0].ssrc),m.rtpSender.send(b)),p&&m.rtpReceiver&&b.codecs.length>0&&(m.kind==="video"&&m.recvEncodingParameters&&h<15019&&m.recvEncodingParameters.forEach(function(w){delete w.rtx}),m.recvEncodingParameters.length?b.encodings=m.recvEncodingParameters:b.encodings=[{}],b.rtcp={compound:m.rtcpParameters.compound},m.rtcpParameters.cname&&(b.rtcp.cname=m.rtcpParameters.cname),m.sendEncodingParameters.length&&(b.rtcp.ssrc=m.sendEncodingParameters[0].ssrc),m.rtpReceiver.receive(b))},_.prototype.setLocalDescription=function(m){var f,p,b=this;if(["offer","answer"].indexOf(m.type)===-1)return Promise.reject(l("TypeError",'Unsupported type "'+m.type+'"'));if(!c("setLocalDescription",m.type,b.signalingState)||b._isClosed)return Promise.reject(l("InvalidStateError","Can not set local "+m.type+" in state "+b.signalingState));if(m.type==="offer")f=i.splitSections(m.sdp),p=f.shift(),f.forEach(function(C,T){var S=i.parseRtpParameters(C);b.transceivers[T].localCapabilities=S}),b.transceivers.forEach(function(C,T){b._gather(C.mid,T)});else if(m.type==="answer"){f=i.splitSections(b._remoteDescription.sdp),p=f.shift();var w=i.matchPrefix(p,"a=ice-lite").length>0;f.forEach(function(C,T){var S=b.transceivers[T],A=S.iceGatherer,D=S.iceTransport,k=S.dtlsTransport,j=S.localCapabilities,F=S.remoteCapabilities;if(!(i.isRejected(C)&&i.matchPrefix(C,"a=bundle-only").length===0)&&!S.rejected){var W=i.getIceParameters(C,p),z=i.getDtlsParameters(C,p);w&&(z.role="server"),b.usingBundle&&T!==0||(b._gather(S.mid,T),D.state==="new"&&D.start(A,W,w?"controlling":"controlled"),k.state==="new"&&k.start(z));var re=a(j,F);b._transceive(S,re.codecs.length>0,!1)}})}return b._localDescription={type:m.type,sdp:m.sdp},m.type==="offer"?b._updateSignalingState("have-local-offer"):b._updateSignalingState("stable"),Promise.resolve()},_.prototype.setRemoteDescription=function(m){var f=this;if(["offer","answer"].indexOf(m.type)===-1)return Promise.reject(l("TypeError",'Unsupported type "'+m.type+'"'));if(!c("setRemoteDescription",m.type,f.signalingState)||f._isClosed)return Promise.reject(l("InvalidStateError","Can not set remote "+m.type+" in state "+f.signalingState));var p={};f.remoteStreams.forEach(function(D){p[D.id]=D});var b=[],w=i.splitSections(m.sdp),C=w.shift(),T=i.matchPrefix(C,"a=ice-lite").length>0,S=i.matchPrefix(C,"a=group:BUNDLE ").length>0;f.usingBundle=S;var A=i.matchPrefix(C,"a=ice-options:")[0];return f.canTrickleIceCandidates=!!A&&A.substr(14).split(" ").indexOf("trickle")>=0,w.forEach(function(D,k){var j=i.splitLines(D),F=i.getKind(D),W=i.isRejected(D)&&i.matchPrefix(D,"a=bundle-only").length===0,z=j[0].substr(2).split(" ")[2],re=i.getDirection(D,C),he=i.parseMsid(D),$h=i.getMid(D)||i.generateIdentifier();if(W||F==="application"&&(z==="DTLS/SCTP"||z==="UDP/DTLS/SCTP"))f.transceivers[k]={mid:$h,kind:F,protocol:z,rejected:!0};else{var Q,ep,js,Vc,cn,zc,Wc,Hs,un;!W&&f.transceivers[k]&&f.transceivers[k].rejected&&(f.transceivers[k]=f._createTransceiver(F,!0));var tp,ip,np=i.parseRtpParameters(D);W||(tp=i.getIceParameters(D,C),(ip=i.getDtlsParameters(D,C)).role="client"),Wc=i.parseRtpEncodingParameters(D);var rp=i.parseRtcpParameters(D),op=i.matchPrefix(D,"a=end-of-candidates",C).length>0,go=i.matchPrefix(D,"a=candidate:").map(function(at){return i.parseCandidate(at)}).filter(function(at){return at.component===1});if((m.type==="offer"||m.type==="answer")&&!W&&S&&k>0&&f.transceivers[k]&&(f._disposeIceAndDtlsTransports(k),f.transceivers[k].iceGatherer=f.transceivers[0].iceGatherer,f.transceivers[k].iceTransport=f.transceivers[0].iceTransport,f.transceivers[k].dtlsTransport=f.transceivers[0].dtlsTransport,f.transceivers[k].rtpSender&&f.transceivers[k].rtpSender.setTransport(f.transceivers[0].dtlsTransport),f.transceivers[k].rtpReceiver&&f.transceivers[k].rtpReceiver.setTransport(f.transceivers[0].dtlsTransport)),m.type!=="offer"||W)m.type==="answer"&&!W&&(ep=(Q=f.transceivers[k]).iceGatherer,js=Q.iceTransport,Vc=Q.dtlsTransport,cn=Q.rtpReceiver,zc=Q.sendEncodingParameters,Hs=Q.localCapabilities,f.transceivers[k].recvEncodingParameters=Wc,f.transceivers[k].remoteCapabilities=np,f.transceivers[k].rtcpParameters=rp,go.length&&js.state==="new"&&(!T&&!op||S&&k!==0?go.forEach(function(at){u(Q.iceTransport,at)}):js.setRemoteCandidates(go)),S&&k!==0||(js.state==="new"&&js.start(ep,tp,"controlling"),Vc.state==="new"&&Vc.start(ip)),!a(Q.localCapabilities,Q.remoteCapabilities).codecs.filter(function(at){return at.name.toLowerCase()==="rtx"}).length&&Q.sendEncodingParameters[0].rtx&&delete Q.sendEncodingParameters[0].rtx,f._transceive(Q,re==="sendrecv"||re==="recvonly",re==="sendrecv"||re==="sendonly"),!cn||re!=="sendrecv"&&re!=="sendonly"?delete Q.rtpReceiver:(un=cn.track,he?(p[he.stream]||(p[he.stream]=new d.MediaStream),g(un,p[he.stream]),b.push([un,cn,p[he.stream]])):(p.default||(p.default=new d.MediaStream),g(un,p.default),b.push([un,cn,p.default]))));else{(Q=f.transceivers[k]||f._createTransceiver(F)).mid=$h,Q.iceGatherer||(Q.iceGatherer=f._createIceGatherer(k,S)),go.length&&Q.iceTransport.state==="new"&&(!op||S&&k!==0?go.forEach(function(at){u(Q.iceTransport,at)}):Q.iceTransport.setRemoteCandidates(go)),Hs=d.RTCRtpReceiver.getCapabilities(F),h<15019&&(Hs.codecs=Hs.codecs.filter(function(at){return at.name!=="rtx"})),zc=Q.sendEncodingParameters||[{ssrc:1001*(2*k+2)}];var bo,Nc=!1;re==="sendrecv"||re==="sendonly"?(Nc=!Q.rtpReceiver,cn=Q.rtpReceiver||new d.RTCRtpReceiver(Q.dtlsTransport,F),Nc&&(un=cn.track,he&&he.stream==="-"||(he?(p[he.stream]||(p[he.stream]=new d.MediaStream,Object.defineProperty(p[he.stream],"id",{get:function(){return he.stream}})),Object.defineProperty(un,"id",{get:function(){return he.track}}),bo=p[he.stream]):(p.default||(p.default=new d.MediaStream),bo=p.default)),bo&&(g(un,bo),Q.associatedRemoteMediaStreams.push(bo)),b.push([un,cn,bo]))):Q.rtpReceiver&&Q.rtpReceiver.track&&(Q.associatedRemoteMediaStreams.forEach(function(at){var Xc,sp,ap=at.getTracks().find(function(zg){return zg.id===Q.rtpReceiver.track.id});ap&&(Xc=ap,(sp=at).removeTrack(Xc),sp.dispatchEvent(new d.MediaStreamTrackEvent("removetrack",{track:Xc})))}),Q.associatedRemoteMediaStreams=[]),Q.localCapabilities=Hs,Q.remoteCapabilities=np,Q.rtpReceiver=cn,Q.rtcpParameters=rp,Q.sendEncodingParameters=zc,Q.recvEncodingParameters=Wc,f._transceive(f.transceivers[k],!1,Nc)}}}),f._dtlsRole===void 0&&(f._dtlsRole=m.type==="offer"?"active":"passive"),f._remoteDescription={type:m.type,sdp:m.sdp},m.type==="offer"?f._updateSignalingState("have-remote-offer"):f._updateSignalingState("stable"),Object.keys(p).forEach(function(D){var k=p[D];if(k.getTracks().length){if(f.remoteStreams.indexOf(k)===-1){f.remoteStreams.push(k);var j=new Event("addstream");j.stream=k,d.setTimeout(function(){f._dispatchEvent("addstream",j)})}b.forEach(function(F){var W=F[0],z=F[1];k.id===F[2].id&&E(f,W,z,[k])})}}),b.forEach(function(D){D[2]||E(f,D[0],D[1],[])}),d.setTimeout(function(){f&&f.transceivers&&f.transceivers.forEach(function(D){D.iceTransport&&D.iceTransport.state==="new"&&D.iceTransport.getRemoteCandidates().length>0&&(console.warn("Timeout for addRemoteCandidate. Consider sending an end-of-candidates notification"),D.iceTransport.addRemoteCandidate({}))})},4e3),Promise.resolve()},_.prototype.close=function(){this.transceivers.forEach(function(m){m.iceTransport&&m.iceTransport.stop(),m.dtlsTransport&&m.dtlsTransport.stop(),m.rtpSender&&m.rtpSender.stop(),m.rtpReceiver&&m.rtpReceiver.stop()}),this._isClosed=!0,this._updateSignalingState("closed")},_.prototype._updateSignalingState=function(m){this.signalingState=m;var f=new Event("signalingstatechange");this._dispatchEvent("signalingstatechange",f)},_.prototype._maybeFireNegotiationNeeded=function(){var m=this;this.signalingState==="stable"&&this.needNegotiation!==!0&&(this.needNegotiation=!0,d.setTimeout(function(){if(m.needNegotiation){m.needNegotiation=!1;var f=new Event("negotiationneeded");m._dispatchEvent("negotiationneeded",f)}},0))},_.prototype._updateIceConnectionState=function(){var m,f={new:0,closed:0,checking:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach(function(b){b.iceTransport&&!b.rejected&&f[b.iceTransport.state]++}),m="new",f.failed>0?m="failed":f.checking>0?m="checking":f.disconnected>0?m="disconnected":f.new>0?m="new":f.connected>0?m="connected":f.completed>0&&(m="completed"),m!==this.iceConnectionState){this.iceConnectionState=m;var p=new Event("iceconnectionstatechange");this._dispatchEvent("iceconnectionstatechange",p)}},_.prototype._updateConnectionState=function(){var m,f={new:0,closed:0,connecting:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach(function(b){b.iceTransport&&b.dtlsTransport&&!b.rejected&&(f[b.iceTransport.state]++,f[b.dtlsTransport.state]++)}),f.connected+=f.completed,m="new",f.failed>0?m="failed":f.connecting>0?m="connecting":f.disconnected>0?m="disconnected":f.new>0?m="new":f.connected>0&&(m="connected"),m!==this.connectionState){this.connectionState=m;var p=new Event("connectionstatechange");this._dispatchEvent("connectionstatechange",p)}},_.prototype.createOffer=function(){var m=this;if(m._isClosed)return Promise.reject(l("InvalidStateError","Can not call createOffer after close"));var f=m.transceivers.filter(function(T){return T.kind==="audio"}).length,p=m.transceivers.filter(function(T){return T.kind==="video"}).length,b=arguments[0];if(b){if(b.mandatory||b.optional)throw new TypeError("Legacy mandatory/optional constraints not supported.");b.offerToReceiveAudio!==void 0&&(f=b.offerToReceiveAudio===!0?1:b.offerToReceiveAudio===!1?0:b.offerToReceiveAudio),b.offerToReceiveVideo!==void 0&&(p=b.offerToReceiveVideo===!0?1:b.offerToReceiveVideo===!1?0:b.offerToReceiveVideo)}for(m.transceivers.forEach(function(T){T.kind==="audio"?--f<0&&(T.wantReceive=!1):T.kind==="video"&&--p<0&&(T.wantReceive=!1)});f>0||p>0;)f>0&&(m._createTransceiver("audio"),f--),p>0&&(m._createTransceiver("video"),p--);var w=i.writeSessionBoilerplate(m._sdpSessionId,m._sdpSessionVersion++);m.transceivers.forEach(function(T,S){var A=T.track,D=T.kind,k=T.mid||i.generateIdentifier();T.mid=k,T.iceGatherer||(T.iceGatherer=m._createIceGatherer(S,m.usingBundle));var j=d.RTCRtpSender.getCapabilities(D);h<15019&&(j.codecs=j.codecs.filter(function(W){return W.name!=="rtx"})),j.codecs.forEach(function(W){W.name==="H264"&&W.parameters["level-asymmetry-allowed"]===void 0&&(W.parameters["level-asymmetry-allowed"]="1"),T.remoteCapabilities&&T.remoteCapabilities.codecs&&T.remoteCapabilities.codecs.forEach(function(z){W.name.toLowerCase()===z.name.toLowerCase()&&W.clockRate===z.clockRate&&(W.preferredPayloadType=z.payloadType)})}),j.headerExtensions.forEach(function(W){(T.remoteCapabilities&&T.remoteCapabilities.headerExtensions||[]).forEach(function(z){W.uri===z.uri&&(W.id=z.id)})});var F=T.sendEncodingParameters||[{ssrc:1001*(2*S+1)}];A&&h>=15019&&D==="video"&&!F[0].rtx&&(F[0].rtx={ssrc:F[0].ssrc+1}),T.wantReceive&&(T.rtpReceiver=new d.RTCRtpReceiver(T.dtlsTransport,D)),T.localCapabilities=j,T.sendEncodingParameters=F}),m._config.bundlePolicy!=="max-compat"&&(w+="a=group:BUNDLE "+m.transceivers.map(function(T){return T.mid}).join(" ")+`\r
51
51
  `),w+=`a=ice-options:trickle\r
52
52
  `,m.transceivers.forEach(function(T,S){w+=r(T,T.localCapabilities,"offer",T.stream,m._dtlsRole),w+=`a=rtcp-rsize\r
53
53
  `,!T.iceGatherer||m.iceGatheringState==="new"||S!==0&&m.usingBundle||(T.iceGatherer.getLocalCandidates().forEach(function(A){A.component=1,w+="a="+i.writeCandidate(A)+`\r
54
54
  `}),T.iceGatherer.state==="completed"&&(w+=`a=end-of-candidates\r
55
- `))});var C=new u.RTCSessionDescription({type:"offer",sdp:w});return Promise.resolve(C)},_.prototype.createAnswer=function(){var m=this;if(m._isClosed)return Promise.reject(l("InvalidStateError","Can not call createAnswer after close"));if(m.signalingState!=="have-remote-offer"&&m.signalingState!=="have-local-pranswer")return Promise.reject(l("InvalidStateError","Can not call createAnswer in signalingState "+m.signalingState));var f=i.writeSessionBoilerplate(m._sdpSessionId,m._sdpSessionVersion++);m.usingBundle&&(f+="a=group:BUNDLE "+m.transceivers.map(function(w){return w.mid}).join(" ")+`\r
55
+ `))});var C=new d.RTCSessionDescription({type:"offer",sdp:w});return Promise.resolve(C)},_.prototype.createAnswer=function(){var m=this;if(m._isClosed)return Promise.reject(l("InvalidStateError","Can not call createAnswer after close"));if(m.signalingState!=="have-remote-offer"&&m.signalingState!=="have-local-pranswer")return Promise.reject(l("InvalidStateError","Can not call createAnswer in signalingState "+m.signalingState));var f=i.writeSessionBoilerplate(m._sdpSessionId,m._sdpSessionVersion++);m.usingBundle&&(f+="a=group:BUNDLE "+m.transceivers.map(function(w){return w.mid}).join(" ")+`\r
56
56
  `),f+=`a=ice-options:trickle\r
57
57
  `;var p=i.getMediaSections(m._remoteDescription.sdp).length;m.transceivers.forEach(function(w,C){if(!(C+1>p)){if(w.rejected)return w.kind==="application"?w.protocol==="DTLS/SCTP"?f+=`m=application 0 DTLS/SCTP 5000\r
58
58
  `:f+="m=application 0 "+w.protocol+` webrtc-datachannel\r
@@ -64,20 +64,20 @@ a=rtpmap:120 VP8/90000\r
64
64
  a=inactive\r
65
65
  a=mid:`+w.mid+`\r
66
66
  `);var T;w.stream&&(w.kind==="audio"?T=w.stream.getAudioTracks()[0]:w.kind==="video"&&(T=w.stream.getVideoTracks()[0]),T&&h>=15019&&w.kind==="video"&&!w.sendEncodingParameters[0].rtx&&(w.sendEncodingParameters[0].rtx={ssrc:w.sendEncodingParameters[0].ssrc+1}));var S=a(w.localCapabilities,w.remoteCapabilities);!S.codecs.filter(function(A){return A.name.toLowerCase()==="rtx"}).length&&w.sendEncodingParameters[0].rtx&&delete w.sendEncodingParameters[0].rtx,f+=r(w,S,"answer",w.stream,m._dtlsRole),w.rtcpParameters&&w.rtcpParameters.reducedSize&&(f+=`a=rtcp-rsize\r
67
- `)}});var b=new u.RTCSessionDescription({type:"answer",sdp:f});return Promise.resolve(b)},_.prototype.addIceCandidate=function(m){var f,p=this;return m&&m.sdpMLineIndex===void 0&&!m.sdpMid?Promise.reject(new TypeError("sdpMLineIndex or sdpMid required")):new Promise(function(b,w){if(!p._remoteDescription)return w(l("InvalidStateError","Can not add ICE candidate without a remote description"));if(m&&m.candidate!==""){var C=m.sdpMLineIndex;if(m.sdpMid){for(var T=0;T<p.transceivers.length;T++)if(p.transceivers[T].mid===m.sdpMid){C=T;break}}var S=p.transceivers[C];if(!S)return w(l("OperationError","Can not add ICE candidate"));if(S.rejected)return b();var A=Object.keys(m.candidate).length>0?i.parseCandidate(m.candidate):{};if(A.protocol==="tcp"&&(A.port===0||A.port===9)||A.component&&A.component!==1)return b();if((C===0||C>0&&S.iceTransport!==p.transceivers[0].iceTransport)&&!d(S.iceTransport,A))return w(l("OperationError","Can not add ICE candidate"));var D=m.candidate.trim();D.indexOf("a=")===0&&(D=D.substr(2)),(f=i.getMediaSections(p._remoteDescription.sdp))[C]+="a="+(A.type?D:"end-of-candidates")+`\r
67
+ `)}});var b=new d.RTCSessionDescription({type:"answer",sdp:f});return Promise.resolve(b)},_.prototype.addIceCandidate=function(m){var f,p=this;return m&&m.sdpMLineIndex===void 0&&!m.sdpMid?Promise.reject(new TypeError("sdpMLineIndex or sdpMid required")):new Promise(function(b,w){if(!p._remoteDescription)return w(l("InvalidStateError","Can not add ICE candidate without a remote description"));if(m&&m.candidate!==""){var C=m.sdpMLineIndex;if(m.sdpMid){for(var T=0;T<p.transceivers.length;T++)if(p.transceivers[T].mid===m.sdpMid){C=T;break}}var S=p.transceivers[C];if(!S)return w(l("OperationError","Can not add ICE candidate"));if(S.rejected)return b();var A=Object.keys(m.candidate).length>0?i.parseCandidate(m.candidate):{};if(A.protocol==="tcp"&&(A.port===0||A.port===9)||A.component&&A.component!==1)return b();if((C===0||C>0&&S.iceTransport!==p.transceivers[0].iceTransport)&&!u(S.iceTransport,A))return w(l("OperationError","Can not add ICE candidate"));var D=m.candidate.trim();D.indexOf("a=")===0&&(D=D.substr(2)),(f=i.getMediaSections(p._remoteDescription.sdp))[C]+="a="+(A.type?D:"end-of-candidates")+`\r
68
68
  `,p._remoteDescription.sdp=i.getDescription(p._remoteDescription.sdp)+f.join("")}else for(var k=0;k<p.transceivers.length&&(p.transceivers[k].rejected||(p.transceivers[k].iceTransport.addRemoteCandidate({}),(f=i.getMediaSections(p._remoteDescription.sdp))[k]+=`a=end-of-candidates\r
69
- `,p._remoteDescription.sdp=i.getDescription(p._remoteDescription.sdp)+f.join(""),!p.usingBundle));k++);b()})},_.prototype.getStats=function(m){if(m&&m instanceof u.MediaStreamTrack){var f=null;if(this.transceivers.forEach(function(b){b.rtpSender&&b.rtpSender.track===m?f=b.rtpSender:b.rtpReceiver&&b.rtpReceiver.track===m&&(f=b.rtpReceiver)}),!f)throw l("InvalidAccessError","Invalid selector.");return f.getStats()}var p=[];return this.transceivers.forEach(function(b){["rtpSender","rtpReceiver","iceGatherer","iceTransport","dtlsTransport"].forEach(function(w){b[w]&&p.push(b[w].getStats())})}),Promise.all(p).then(function(b){var w=new Map;return b.forEach(function(C){C.forEach(function(T){w.set(T.id,T)})}),w})},["RTCRtpSender","RTCRtpReceiver","RTCIceGatherer","RTCIceTransport","RTCDtlsTransport"].forEach(function(m){var f=u[m];if(f&&f.prototype&&f.prototype.getStats){var p=f.prototype.getStats;f.prototype.getStats=function(){return p.apply(this).then(function(b){var w=new Map;return Object.keys(b).forEach(function(C){b[C].type=n(b[C]),w.set(C,b[C])}),w})}}});var x=["createOffer","createAnswer"];return x.forEach(function(m){var f=_.prototype[m];_.prototype[m]=function(){var p=arguments;return typeof p[0]=="function"||typeof p[1]=="function"?f.apply(this,[arguments[2]]).then(function(b){typeof p[0]=="function"&&p[0].apply(null,[b])},function(b){typeof p[1]=="function"&&p[1].apply(null,[b])}):f.apply(this,arguments)}}),(x=["setLocalDescription","setRemoteDescription","addIceCandidate"]).forEach(function(m){var f=_.prototype[m];_.prototype[m]=function(){var p=arguments;return typeof p[1]=="function"||typeof p[2]=="function"?f.apply(this,arguments).then(function(){typeof p[1]=="function"&&p[1].apply(null)},function(b){typeof p[2]=="function"&&p[2].apply(null,[b])}):f.apply(this,arguments)}}),["getStats"].forEach(function(m){var f=_.prototype[m];_.prototype[m]=function(){var p=arguments;return typeof p[1]=="function"?f.apply(this,arguments).then(function(){typeof p[1]=="function"&&p[1].apply(null)}):f.apply(this,arguments)}}),_}},{sdp:"YHvh"}],YdKx:[function(o,e,t){"use strict";function i(n){var r=n&&n.navigator,s=r.mediaDevices.getUserMedia.bind(r.mediaDevices);r.mediaDevices.getUserMedia=function(a){return s(a).catch(function(c){return Promise.reject(function(d){return{name:{PermissionDeniedError:"NotAllowedError"}[d.name]||d.name,message:d.message,constraint:d.constraint,toString:function(){return this.name}}}(c))})}}Object.defineProperty(t,"__esModule",{value:!0}),t.shimGetUserMedia=i},{}],P3bV:[function(o,e,t){"use strict";function i(n){"getDisplayMedia"in n.navigator&&n.navigator.mediaDevices&&(n.navigator.mediaDevices&&"getDisplayMedia"in n.navigator.mediaDevices||(n.navigator.mediaDevices.getDisplayMedia=n.navigator.getDisplayMedia.bind(n.navigator)))}Object.defineProperty(t,"__esModule",{value:!0}),t.shimGetDisplayMedia=i},{}],XRic:[function(o,e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.shimPeerConnection=u,t.shimReplaceTrack=h,Object.defineProperty(t,"shimGetUserMedia",{enumerable:!0,get:function(){return s.shimGetUserMedia}}),Object.defineProperty(t,"shimGetDisplayMedia",{enumerable:!0,get:function(){return a.shimGetDisplayMedia}});var i=l(o("../utils")),n=o("./filtericeservers"),r=c(o("rtcpeerconnection-shim")),s=o("./getusermedia"),a=o("./getdisplaymedia");function c(g){return g&&g.__esModule?g:{default:g}}function d(){if(typeof WeakMap!="function")return null;var g=new WeakMap;return d=function(){return g},g}function l(g){if(g&&g.__esModule)return g;if(g===null||typeof g!="object"&&typeof g!="function")return{default:g};var E=d();if(E&&E.has(g))return E.get(g);var _={},x=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var m in g)if(Object.prototype.hasOwnProperty.call(g,m)){var f=x?Object.getOwnPropertyDescriptor(g,m):null;f&&(f.get||f.set)?Object.defineProperty(_,m,f):_[m]=g[m]}return _.default=g,E&&E.set(g,_),_}function u(g,E){if(g.RTCIceGatherer&&(g.RTCIceCandidate||(g.RTCIceCandidate=function(m){return m}),g.RTCSessionDescription||(g.RTCSessionDescription=function(m){return m}),E.version<15025)){var _=Object.getOwnPropertyDescriptor(g.MediaStreamTrack.prototype,"enabled");Object.defineProperty(g.MediaStreamTrack.prototype,"enabled",{set:function(m){_.set.call(this,m);var f=new Event("enabled");f.enabled=m,this.dispatchEvent(f)}})}!g.RTCRtpSender||"dtmf"in g.RTCRtpSender.prototype||Object.defineProperty(g.RTCRtpSender.prototype,"dtmf",{get:function(){return this._dtmf===void 0&&(this.track.kind==="audio"?this._dtmf=new g.RTCDtmfSender(this):this.track.kind==="video"&&(this._dtmf=null)),this._dtmf}}),g.RTCDtmfSender&&!g.RTCDTMFSender&&(g.RTCDTMFSender=g.RTCDtmfSender);var x=(0,r.default)(g,E.version);g.RTCPeerConnection=function(m){return m&&m.iceServers&&(m.iceServers=(0,n.filterIceServers)(m.iceServers,E.version),i.log("ICE servers after filtering:",m.iceServers)),new x(m)},g.RTCPeerConnection.prototype=x.prototype}function h(g){!g.RTCRtpSender||"replaceTrack"in g.RTCRtpSender.prototype||(g.RTCRtpSender.prototype.replaceTrack=g.RTCRtpSender.prototype.setTrack)}},{"../utils":"iSxC","./filtericeservers":"NZ1C","rtcpeerconnection-shim":"NJ2u","./getusermedia":"YdKx","./getdisplaymedia":"P3bV"}],GzSv:[function(o,e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.shimGetUserMedia=a;var i=r(o("../utils"));function n(){if(typeof WeakMap!="function")return null;var c=new WeakMap;return n=function(){return c},c}function r(c){if(c&&c.__esModule)return c;if(c===null||typeof c!="object"&&typeof c!="function")return{default:c};var d=n();if(d&&d.has(c))return d.get(c);var l={},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var h in c)if(Object.prototype.hasOwnProperty.call(c,h)){var g=u?Object.getOwnPropertyDescriptor(c,h):null;g&&(g.get||g.set)?Object.defineProperty(l,h,g):l[h]=c[h]}return l.default=c,d&&d.set(c,l),l}function s(c){return(s=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(d){return typeof d}:function(d){return d&&typeof Symbol=="function"&&d.constructor===Symbol&&d!==Symbol.prototype?"symbol":typeof d})(c)}function a(c,d){var l=c&&c.navigator,u=c&&c.MediaStreamTrack;if(l.getUserMedia=function(x,m,f){i.deprecated("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),l.mediaDevices.getUserMedia(x).then(m,f)},!(d.version>55&&"autoGainControl"in l.mediaDevices.getSupportedConstraints())){var h=function(x,m,f){m in x&&!(f in x)&&(x[f]=x[m],delete x[m])},g=l.mediaDevices.getUserMedia.bind(l.mediaDevices);if(l.mediaDevices.getUserMedia=function(x){return s(x)==="object"&&s(x.audio)==="object"&&(x=JSON.parse(JSON.stringify(x)),h(x.audio,"autoGainControl","mozAutoGainControl"),h(x.audio,"noiseSuppression","mozNoiseSuppression")),g(x)},u&&u.prototype.getSettings){var E=u.prototype.getSettings;u.prototype.getSettings=function(){var x=E.apply(this,arguments);return h(x,"mozAutoGainControl","autoGainControl"),h(x,"mozNoiseSuppression","noiseSuppression"),x}}if(u&&u.prototype.applyConstraints){var _=u.prototype.applyConstraints;u.prototype.applyConstraints=function(x){return this.kind==="audio"&&s(x)==="object"&&(x=JSON.parse(JSON.stringify(x)),h(x,"autoGainControl","mozAutoGainControl"),h(x,"noiseSuppression","mozNoiseSuppression")),_.apply(this,[x])}}}}},{"../utils":"iSxC"}],UuGU:[function(o,e,t){"use strict";function i(n,r){n.navigator.mediaDevices&&"getDisplayMedia"in n.navigator.mediaDevices||n.navigator.mediaDevices&&(n.navigator.mediaDevices.getDisplayMedia=function(s){if(!s||!s.video){var a=new DOMException("getDisplayMedia without video constraints is undefined");return a.name="NotFoundError",a.code=8,Promise.reject(a)}return s.video===!0?s.video={mediaSource:r}:s.video.mediaSource=r,n.navigator.mediaDevices.getUserMedia(s)})}Object.defineProperty(t,"__esModule",{value:!0}),t.shimGetDisplayMedia=i},{}],Fzdr:[function(o,e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.shimOnTrack=l,t.shimPeerConnection=u,t.shimSenderGetStats=h,t.shimReceiverGetStats=g,t.shimRemoveStream=E,t.shimRTCDataChannel=_,t.shimAddTransceiver=x,t.shimGetParameters=m,t.shimCreateOffer=f,t.shimCreateAnswer=p,Object.defineProperty(t,"shimGetUserMedia",{enumerable:!0,get:function(){return n.shimGetUserMedia}}),Object.defineProperty(t,"shimGetDisplayMedia",{enumerable:!0,get:function(){return r.shimGetDisplayMedia}});var i=a(o("../utils")),n=o("./getusermedia"),r=o("./getdisplaymedia");function s(){if(typeof WeakMap!="function")return null;var b=new WeakMap;return s=function(){return b},b}function a(b){if(b&&b.__esModule)return b;if(b===null||typeof b!="object"&&typeof b!="function")return{default:b};var w=s();if(w&&w.has(b))return w.get(b);var C={},T=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var S in b)if(Object.prototype.hasOwnProperty.call(b,S)){var A=T?Object.getOwnPropertyDescriptor(b,S):null;A&&(A.get||A.set)?Object.defineProperty(C,S,A):C[S]=b[S]}return C.default=b,w&&w.set(b,C),C}function c(b,w,C){return w in b?Object.defineProperty(b,w,{value:C,enumerable:!0,configurable:!0,writable:!0}):b[w]=C,b}function d(b){return(d=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(w){return typeof w}:function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w})(b)}function l(b){d(b)==="object"&&b.RTCTrackEvent&&"receiver"in b.RTCTrackEvent.prototype&&!("transceiver"in b.RTCTrackEvent.prototype)&&Object.defineProperty(b.RTCTrackEvent.prototype,"transceiver",{get:function(){return{receiver:this.receiver}}})}function u(b,w){if(d(b)==="object"&&(b.RTCPeerConnection||b.mozRTCPeerConnection)){!b.RTCPeerConnection&&b.mozRTCPeerConnection&&(b.RTCPeerConnection=b.mozRTCPeerConnection),w.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(S){var A=b.RTCPeerConnection.prototype[S],D=c({},S,function(){return arguments[0]=new(S==="addIceCandidate"?b.RTCIceCandidate:b.RTCSessionDescription)(arguments[0]),A.apply(this,arguments)});b.RTCPeerConnection.prototype[S]=D[S]});var C={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},T=b.RTCPeerConnection.prototype.getStats;b.RTCPeerConnection.prototype.getStats=function(){var[S,A,D]=arguments;return T.apply(this,[S||null]).then(function(k){if(w.version<53&&!A)try{k.forEach(function(j){j.type=C[j.type]||j.type})}catch(j){if(j.name!=="TypeError")throw j;k.forEach(function(F,W){k.set(W,Object.assign({},F,{type:C[F.type]||F.type}))})}return k}).then(A,D)}}}function h(b){if(d(b)==="object"&&b.RTCPeerConnection&&b.RTCRtpSender&&!(b.RTCRtpSender&&"getStats"in b.RTCRtpSender.prototype)){var w=b.RTCPeerConnection.prototype.getSenders;w&&(b.RTCPeerConnection.prototype.getSenders=function(){var T=this,S=w.apply(this,[]);return S.forEach(function(A){return A._pc=T}),S});var C=b.RTCPeerConnection.prototype.addTrack;C&&(b.RTCPeerConnection.prototype.addTrack=function(){var T=C.apply(this,arguments);return T._pc=this,T}),b.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}}function g(b){if(d(b)==="object"&&b.RTCPeerConnection&&b.RTCRtpSender&&!(b.RTCRtpSender&&"getStats"in b.RTCRtpReceiver.prototype)){var w=b.RTCPeerConnection.prototype.getReceivers;w&&(b.RTCPeerConnection.prototype.getReceivers=function(){var C=this,T=w.apply(this,[]);return T.forEach(function(S){return S._pc=C}),T}),i.wrapPeerConnectionEvent(b,"track",function(C){return C.receiver._pc=C.srcElement,C}),b.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}}function E(b){!b.RTCPeerConnection||"removeStream"in b.RTCPeerConnection.prototype||(b.RTCPeerConnection.prototype.removeStream=function(w){var C=this;i.deprecated("removeStream","removeTrack"),this.getSenders().forEach(function(T){T.track&&w.getTracks().includes(T.track)&&C.removeTrack(T)})})}function _(b){b.DataChannel&&!b.RTCDataChannel&&(b.RTCDataChannel=b.DataChannel)}function x(b){if(d(b)==="object"&&b.RTCPeerConnection){var w=b.RTCPeerConnection.prototype.addTransceiver;w&&(b.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];var C=arguments[1],T=C&&"sendEncodings"in C;T&&C.sendEncodings.forEach(function(k){if("rid"in k&&!/^[a-z0-9]{0,16}$/i.test(k.rid))throw new TypeError("Invalid RID value provided.");if("scaleResolutionDownBy"in k&&!(parseFloat(k.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in k&&!(parseFloat(k.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")});var S=w.apply(this,arguments);if(T){var{sender:A}=S,D=A.getParameters();"encodings"in D&&(D.encodings.length!==1||Object.keys(D.encodings[0]).length!==0)||(D.encodings=C.sendEncodings,A.sendEncodings=C.sendEncodings,this.setParametersPromises.push(A.setParameters(D).then(function(){delete A.sendEncodings}).catch(function(){delete A.sendEncodings})))}return S})}}function m(b){if(d(b)==="object"&&b.RTCRtpSender){var w=b.RTCRtpSender.prototype.getParameters;w&&(b.RTCRtpSender.prototype.getParameters=function(){var C=w.apply(this,arguments);return"encodings"in C||(C.encodings=[].concat(this.sendEncodings||[{}])),C})}}function f(b){if(d(b)==="object"&&b.RTCPeerConnection){var w=b.RTCPeerConnection.prototype.createOffer;b.RTCPeerConnection.prototype.createOffer=function(){var C=arguments,T=this;return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(function(){return w.apply(T,C)}).finally(function(){T.setParametersPromises=[]}):w.apply(this,arguments)}}}function p(b){if(d(b)==="object"&&b.RTCPeerConnection){var w=b.RTCPeerConnection.prototype.createAnswer;b.RTCPeerConnection.prototype.createAnswer=function(){var C=arguments,T=this;return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(function(){return w.apply(T,C)}).finally(function(){T.setParametersPromises=[]}):w.apply(this,arguments)}}}},{"../utils":"iSxC","./getusermedia":"GzSv","./getdisplaymedia":"UuGU"}],t1lL:[function(o,e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.shimLocalStreamsAPI=a,t.shimRemoteStreamsAPI=c,t.shimCallbacksAPI=d,t.shimGetUserMedia=l,t.shimConstraints=u,t.shimRTCIceServerUrls=h,t.shimTrackEventTransceiver=g,t.shimCreateOfferLegacy=E,t.shimAudioContext=_;var i=r(o("../utils"));function n(){if(typeof WeakMap!="function")return null;var x=new WeakMap;return n=function(){return x},x}function r(x){if(x&&x.__esModule)return x;if(x===null||typeof x!="object"&&typeof x!="function")return{default:x};var m=n();if(m&&m.has(x))return m.get(x);var f={},p=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var b in x)if(Object.prototype.hasOwnProperty.call(x,b)){var w=p?Object.getOwnPropertyDescriptor(x,b):null;w&&(w.get||w.set)?Object.defineProperty(f,b,w):f[b]=x[b]}return f.default=x,m&&m.set(x,f),f}function s(x){return(s=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(m){return typeof m}:function(m){return m&&typeof Symbol=="function"&&m.constructor===Symbol&&m!==Symbol.prototype?"symbol":typeof m})(x)}function a(x){if(s(x)==="object"&&x.RTCPeerConnection){if("getLocalStreams"in x.RTCPeerConnection.prototype||(x.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in x.RTCPeerConnection.prototype)){var m=x.RTCPeerConnection.prototype.addTrack;x.RTCPeerConnection.prototype.addStream=function(f){var p=this;this._localStreams||(this._localStreams=[]),this._localStreams.includes(f)||this._localStreams.push(f),f.getAudioTracks().forEach(function(b){return m.call(p,b,f)}),f.getVideoTracks().forEach(function(b){return m.call(p,b,f)})},x.RTCPeerConnection.prototype.addTrack=function(f){for(var p=this,b=arguments.length,w=new Array(b>1?b-1:0),C=1;C<b;C++)w[C-1]=arguments[C];return w&&w.forEach(function(T){p._localStreams?p._localStreams.includes(T)||p._localStreams.push(T):p._localStreams=[T]}),m.apply(this,arguments)}}"removeStream"in x.RTCPeerConnection.prototype||(x.RTCPeerConnection.prototype.removeStream=function(f){var p=this;this._localStreams||(this._localStreams=[]);var b=this._localStreams.indexOf(f);if(b!==-1){this._localStreams.splice(b,1);var w=f.getTracks();this.getSenders().forEach(function(C){w.includes(C.track)&&p.removeTrack(C)})}})}}function c(x){if(s(x)==="object"&&x.RTCPeerConnection&&("getRemoteStreams"in x.RTCPeerConnection.prototype||(x.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in x.RTCPeerConnection.prototype))){Object.defineProperty(x.RTCPeerConnection.prototype,"onaddstream",{get:function(){return this._onaddstream},set:function(f){var p=this;this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=f),this.addEventListener("track",this._onaddstreampoly=function(b){b.streams.forEach(function(w){if(p._remoteStreams||(p._remoteStreams=[]),!p._remoteStreams.includes(w)){p._remoteStreams.push(w);var C=new Event("addstream");C.stream=w,p.dispatchEvent(C)}})})}});var m=x.RTCPeerConnection.prototype.setRemoteDescription;x.RTCPeerConnection.prototype.setRemoteDescription=function(){var f=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(p){p.streams.forEach(function(b){if(f._remoteStreams||(f._remoteStreams=[]),!(f._remoteStreams.indexOf(b)>=0)){f._remoteStreams.push(b);var w=new Event("addstream");w.stream=b,f.dispatchEvent(w)}})}),m.apply(f,arguments)}}}function d(x){if(s(x)==="object"&&x.RTCPeerConnection){var m=x.RTCPeerConnection.prototype,f=m.createOffer,p=m.createAnswer,b=m.setLocalDescription,w=m.setRemoteDescription,C=m.addIceCandidate;m.createOffer=function(S,A){var D=arguments.length>=2?arguments[2]:arguments[0],k=f.apply(this,[D]);return A?(k.then(S,A),Promise.resolve()):k},m.createAnswer=function(S,A){var D=arguments.length>=2?arguments[2]:arguments[0],k=p.apply(this,[D]);return A?(k.then(S,A),Promise.resolve()):k};var T=function(S,A,D){var k=b.apply(this,[S]);return D?(k.then(A,D),Promise.resolve()):k};m.setLocalDescription=T,T=function(S,A,D){var k=w.apply(this,[S]);return D?(k.then(A,D),Promise.resolve()):k},m.setRemoteDescription=T,T=function(S,A,D){var k=C.apply(this,[S]);return D?(k.then(A,D),Promise.resolve()):k},m.addIceCandidate=T}}function l(x){var m=x&&x.navigator;if(m.mediaDevices&&m.mediaDevices.getUserMedia){var f=m.mediaDevices,p=f.getUserMedia.bind(f);m.mediaDevices.getUserMedia=function(b){return p(u(b))}}!m.getUserMedia&&m.mediaDevices&&m.mediaDevices.getUserMedia&&(m.getUserMedia=function(b,w,C){m.mediaDevices.getUserMedia(b).then(w,C)}.bind(m))}function u(x){return x&&x.video!==void 0?Object.assign({},x,{video:i.compactObject(x.video)}):x}function h(x){if(x.RTCPeerConnection){var m=x.RTCPeerConnection;x.RTCPeerConnection=function(f,p){if(f&&f.iceServers){for(var b=[],w=0;w<f.iceServers.length;w++){var C=f.iceServers[w];!C.hasOwnProperty("urls")&&C.hasOwnProperty("url")?(i.deprecated("RTCIceServer.url","RTCIceServer.urls"),(C=JSON.parse(JSON.stringify(C))).urls=C.url,delete C.url,b.push(C)):b.push(f.iceServers[w])}f.iceServers=b}return new m(f,p)},x.RTCPeerConnection.prototype=m.prototype,"generateCertificate"in m&&Object.defineProperty(x.RTCPeerConnection,"generateCertificate",{get:function(){return m.generateCertificate}})}}function g(x){s(x)==="object"&&x.RTCTrackEvent&&"receiver"in x.RTCTrackEvent.prototype&&!("transceiver"in x.RTCTrackEvent.prototype)&&Object.defineProperty(x.RTCTrackEvent.prototype,"transceiver",{get:function(){return{receiver:this.receiver}}})}function E(x){var m=x.RTCPeerConnection.prototype.createOffer;x.RTCPeerConnection.prototype.createOffer=function(f){if(f){f.offerToReceiveAudio!==void 0&&(f.offerToReceiveAudio=!!f.offerToReceiveAudio);var p=this.getTransceivers().find(function(w){return w.receiver.track.kind==="audio"});f.offerToReceiveAudio===!1&&p?p.direction==="sendrecv"?p.setDirection?p.setDirection("sendonly"):p.direction="sendonly":p.direction==="recvonly"&&(p.setDirection?p.setDirection("inactive"):p.direction="inactive"):f.offerToReceiveAudio!==!0||p||this.addTransceiver("audio"),f.offerToReceiveVideo!==void 0&&(f.offerToReceiveVideo=!!f.offerToReceiveVideo);var b=this.getTransceivers().find(function(w){return w.receiver.track.kind==="video"});f.offerToReceiveVideo===!1&&b?b.direction==="sendrecv"?b.setDirection?b.setDirection("sendonly"):b.direction="sendonly":b.direction==="recvonly"&&(b.setDirection?b.setDirection("inactive"):b.direction="inactive"):f.offerToReceiveVideo!==!0||b||this.addTransceiver("video")}return m.apply(this,arguments)}}function _(x){s(x)!=="object"||x.AudioContext||(x.AudioContext=x.webkitAudioContext)}},{"../utils":"iSxC"}],GOQK:[function(o,e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.shimRTCIceCandidate=d,t.shimMaxMessageSize=l,t.shimSendThrowTypeError=u,t.shimConnectionState=h,t.removeExtmapAllowMixed=g,t.shimAddIceCandidateNullOrEmpty=E;var i=a(o("sdp")),n=s(o("./utils"));function r(){if(typeof WeakMap!="function")return null;var _=new WeakMap;return r=function(){return _},_}function s(_){if(_&&_.__esModule)return _;if(_===null||typeof _!="object"&&typeof _!="function")return{default:_};var x=r();if(x&&x.has(_))return x.get(_);var m={},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var p in _)if(Object.prototype.hasOwnProperty.call(_,p)){var b=f?Object.getOwnPropertyDescriptor(_,p):null;b&&(b.get||b.set)?Object.defineProperty(m,p,b):m[p]=_[p]}return m.default=_,x&&x.set(_,m),m}function a(_){return _&&_.__esModule?_:{default:_}}function c(_){return(c=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(x){return typeof x}:function(x){return x&&typeof Symbol=="function"&&x.constructor===Symbol&&x!==Symbol.prototype?"symbol":typeof x})(_)}function d(_){if(_.RTCIceCandidate&&!(_.RTCIceCandidate&&"foundation"in _.RTCIceCandidate.prototype)){var x=_.RTCIceCandidate;_.RTCIceCandidate=function(m){if(c(m)==="object"&&m.candidate&&m.candidate.indexOf("a=")===0&&((m=JSON.parse(JSON.stringify(m))).candidate=m.candidate.substr(2)),m.candidate&&m.candidate.length){var f=new x(m),p=i.default.parseCandidate(m.candidate),b=Object.assign(f,p);return b.toJSON=function(){return{candidate:b.candidate,sdpMid:b.sdpMid,sdpMLineIndex:b.sdpMLineIndex,usernameFragment:b.usernameFragment}},b}return new x(m)},_.RTCIceCandidate.prototype=x.prototype,n.wrapPeerConnectionEvent(_,"icecandidate",function(m){return m.candidate&&Object.defineProperty(m,"candidate",{value:new _.RTCIceCandidate(m.candidate),writable:"false"}),m})}}function l(_,x){if(_.RTCPeerConnection){"sctp"in _.RTCPeerConnection.prototype||Object.defineProperty(_.RTCPeerConnection.prototype,"sctp",{get:function(){return this._sctp===void 0?null:this._sctp}});var m=_.RTCPeerConnection.prototype.setRemoteDescription;_.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,x.browser==="chrome"&&x.version>=76){var{sdpSemantics:f}=this.getConfiguration();f==="plan-b"&&Object.defineProperty(this,"sctp",{get:function(){return this._sctp===void 0?null:this._sctp},enumerable:!0,configurable:!0})}if(function(D){if(!D||!D.sdp)return!1;var k=i.default.splitSections(D.sdp);return k.shift(),k.some(function(j){var F=i.default.parseMLine(j);return F&&F.kind==="application"&&F.protocol.indexOf("SCTP")!==-1})}(arguments[0])){var p,b=function(D){var k=D.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(k===null||k.length<2)return-1;var j=parseInt(k[1],10);return j!=j?-1:j}(arguments[0]),w=(S=b,A=65536,x.browser==="firefox"&&(A=x.version<57?S===-1?16384:2147483637:x.version<60?x.version===57?65535:65536:2147483637),A),C=function(D,k){var j=65536;x.browser==="firefox"&&x.version===57&&(j=65535);var F=i.default.matchPrefix(D.sdp,"a=max-message-size:");return F.length>0?j=parseInt(F[0].substr(19),10):x.browser==="firefox"&&k!==-1&&(j=2147483637),j}(arguments[0],b);p=w===0&&C===0?Number.POSITIVE_INFINITY:w===0||C===0?Math.max(w,C):Math.min(w,C);var T={};Object.defineProperty(T,"maxMessageSize",{get:function(){return p}}),this._sctp=T}var S,A;return m.apply(this,arguments)}}}function u(_){if(_.RTCPeerConnection&&"createDataChannel"in _.RTCPeerConnection.prototype){var x=_.RTCPeerConnection.prototype.createDataChannel;_.RTCPeerConnection.prototype.createDataChannel=function(){var f=x.apply(this,arguments);return m(f,this),f},n.wrapPeerConnectionEvent(_,"datachannel",function(f){return m(f.channel,f.target),f})}function m(f,p){var b=f.send;f.send=function(){var w=arguments[0],C=w.length||w.size||w.byteLength;if(f.readyState==="open"&&p.sctp&&C>p.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+p.sctp.maxMessageSize+" bytes)");return b.apply(f,arguments)}}}function h(_){if(_.RTCPeerConnection&&!("connectionState"in _.RTCPeerConnection.prototype)){var x=_.RTCPeerConnection.prototype;Object.defineProperty(x,"connectionState",{get:function(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(x,"onconnectionstatechange",{get:function(){return this._onconnectionstatechange||null},set:function(m){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),m&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=m)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach(function(m){var f=x[m];x[m]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=function(p){var b=p.target;if(b._lastConnectionState!==b.connectionState){b._lastConnectionState=b.connectionState;var w=new Event("connectionstatechange",p);b.dispatchEvent(w)}return p},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),f.apply(this,arguments)}})}}function g(_,x){if(_.RTCPeerConnection&&!(x.browser==="chrome"&&x.version>=71||x.browser==="safari"&&x.version>=605)){var m=_.RTCPeerConnection.prototype.setRemoteDescription;_.RTCPeerConnection.prototype.setRemoteDescription=function(f){if(f&&f.sdp&&f.sdp.indexOf(`
69
+ `,p._remoteDescription.sdp=i.getDescription(p._remoteDescription.sdp)+f.join(""),!p.usingBundle));k++);b()})},_.prototype.getStats=function(m){if(m&&m instanceof d.MediaStreamTrack){var f=null;if(this.transceivers.forEach(function(b){b.rtpSender&&b.rtpSender.track===m?f=b.rtpSender:b.rtpReceiver&&b.rtpReceiver.track===m&&(f=b.rtpReceiver)}),!f)throw l("InvalidAccessError","Invalid selector.");return f.getStats()}var p=[];return this.transceivers.forEach(function(b){["rtpSender","rtpReceiver","iceGatherer","iceTransport","dtlsTransport"].forEach(function(w){b[w]&&p.push(b[w].getStats())})}),Promise.all(p).then(function(b){var w=new Map;return b.forEach(function(C){C.forEach(function(T){w.set(T.id,T)})}),w})},["RTCRtpSender","RTCRtpReceiver","RTCIceGatherer","RTCIceTransport","RTCDtlsTransport"].forEach(function(m){var f=d[m];if(f&&f.prototype&&f.prototype.getStats){var p=f.prototype.getStats;f.prototype.getStats=function(){return p.apply(this).then(function(b){var w=new Map;return Object.keys(b).forEach(function(C){b[C].type=n(b[C]),w.set(C,b[C])}),w})}}});var x=["createOffer","createAnswer"];return x.forEach(function(m){var f=_.prototype[m];_.prototype[m]=function(){var p=arguments;return typeof p[0]=="function"||typeof p[1]=="function"?f.apply(this,[arguments[2]]).then(function(b){typeof p[0]=="function"&&p[0].apply(null,[b])},function(b){typeof p[1]=="function"&&p[1].apply(null,[b])}):f.apply(this,arguments)}}),(x=["setLocalDescription","setRemoteDescription","addIceCandidate"]).forEach(function(m){var f=_.prototype[m];_.prototype[m]=function(){var p=arguments;return typeof p[1]=="function"||typeof p[2]=="function"?f.apply(this,arguments).then(function(){typeof p[1]=="function"&&p[1].apply(null)},function(b){typeof p[2]=="function"&&p[2].apply(null,[b])}):f.apply(this,arguments)}}),["getStats"].forEach(function(m){var f=_.prototype[m];_.prototype[m]=function(){var p=arguments;return typeof p[1]=="function"?f.apply(this,arguments).then(function(){typeof p[1]=="function"&&p[1].apply(null)}):f.apply(this,arguments)}}),_}},{sdp:"YHvh"}],YdKx:[function(o,e,t){"use strict";function i(n){var r=n&&n.navigator,s=r.mediaDevices.getUserMedia.bind(r.mediaDevices);r.mediaDevices.getUserMedia=function(a){return s(a).catch(function(c){return Promise.reject(function(u){return{name:{PermissionDeniedError:"NotAllowedError"}[u.name]||u.name,message:u.message,constraint:u.constraint,toString:function(){return this.name}}}(c))})}}Object.defineProperty(t,"__esModule",{value:!0}),t.shimGetUserMedia=i},{}],P3bV:[function(o,e,t){"use strict";function i(n){"getDisplayMedia"in n.navigator&&n.navigator.mediaDevices&&(n.navigator.mediaDevices&&"getDisplayMedia"in n.navigator.mediaDevices||(n.navigator.mediaDevices.getDisplayMedia=n.navigator.getDisplayMedia.bind(n.navigator)))}Object.defineProperty(t,"__esModule",{value:!0}),t.shimGetDisplayMedia=i},{}],XRic:[function(o,e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.shimPeerConnection=d,t.shimReplaceTrack=h,Object.defineProperty(t,"shimGetUserMedia",{enumerable:!0,get:function(){return s.shimGetUserMedia}}),Object.defineProperty(t,"shimGetDisplayMedia",{enumerable:!0,get:function(){return a.shimGetDisplayMedia}});var i=l(o("../utils")),n=o("./filtericeservers"),r=c(o("rtcpeerconnection-shim")),s=o("./getusermedia"),a=o("./getdisplaymedia");function c(g){return g&&g.__esModule?g:{default:g}}function u(){if(typeof WeakMap!="function")return null;var g=new WeakMap;return u=function(){return g},g}function l(g){if(g&&g.__esModule)return g;if(g===null||typeof g!="object"&&typeof g!="function")return{default:g};var E=u();if(E&&E.has(g))return E.get(g);var _={},x=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var m in g)if(Object.prototype.hasOwnProperty.call(g,m)){var f=x?Object.getOwnPropertyDescriptor(g,m):null;f&&(f.get||f.set)?Object.defineProperty(_,m,f):_[m]=g[m]}return _.default=g,E&&E.set(g,_),_}function d(g,E){if(g.RTCIceGatherer&&(g.RTCIceCandidate||(g.RTCIceCandidate=function(m){return m}),g.RTCSessionDescription||(g.RTCSessionDescription=function(m){return m}),E.version<15025)){var _=Object.getOwnPropertyDescriptor(g.MediaStreamTrack.prototype,"enabled");Object.defineProperty(g.MediaStreamTrack.prototype,"enabled",{set:function(m){_.set.call(this,m);var f=new Event("enabled");f.enabled=m,this.dispatchEvent(f)}})}!g.RTCRtpSender||"dtmf"in g.RTCRtpSender.prototype||Object.defineProperty(g.RTCRtpSender.prototype,"dtmf",{get:function(){return this._dtmf===void 0&&(this.track.kind==="audio"?this._dtmf=new g.RTCDtmfSender(this):this.track.kind==="video"&&(this._dtmf=null)),this._dtmf}}),g.RTCDtmfSender&&!g.RTCDTMFSender&&(g.RTCDTMFSender=g.RTCDtmfSender);var x=(0,r.default)(g,E.version);g.RTCPeerConnection=function(m){return m&&m.iceServers&&(m.iceServers=(0,n.filterIceServers)(m.iceServers,E.version),i.log("ICE servers after filtering:",m.iceServers)),new x(m)},g.RTCPeerConnection.prototype=x.prototype}function h(g){!g.RTCRtpSender||"replaceTrack"in g.RTCRtpSender.prototype||(g.RTCRtpSender.prototype.replaceTrack=g.RTCRtpSender.prototype.setTrack)}},{"../utils":"iSxC","./filtericeservers":"NZ1C","rtcpeerconnection-shim":"NJ2u","./getusermedia":"YdKx","./getdisplaymedia":"P3bV"}],GzSv:[function(o,e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.shimGetUserMedia=a;var i=r(o("../utils"));function n(){if(typeof WeakMap!="function")return null;var c=new WeakMap;return n=function(){return c},c}function r(c){if(c&&c.__esModule)return c;if(c===null||typeof c!="object"&&typeof c!="function")return{default:c};var u=n();if(u&&u.has(c))return u.get(c);var l={},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var h in c)if(Object.prototype.hasOwnProperty.call(c,h)){var g=d?Object.getOwnPropertyDescriptor(c,h):null;g&&(g.get||g.set)?Object.defineProperty(l,h,g):l[h]=c[h]}return l.default=c,u&&u.set(c,l),l}function s(c){return(s=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(u){return typeof u}:function(u){return u&&typeof Symbol=="function"&&u.constructor===Symbol&&u!==Symbol.prototype?"symbol":typeof u})(c)}function a(c,u){var l=c&&c.navigator,d=c&&c.MediaStreamTrack;if(l.getUserMedia=function(x,m,f){i.deprecated("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),l.mediaDevices.getUserMedia(x).then(m,f)},!(u.version>55&&"autoGainControl"in l.mediaDevices.getSupportedConstraints())){var h=function(x,m,f){m in x&&!(f in x)&&(x[f]=x[m],delete x[m])},g=l.mediaDevices.getUserMedia.bind(l.mediaDevices);if(l.mediaDevices.getUserMedia=function(x){return s(x)==="object"&&s(x.audio)==="object"&&(x=JSON.parse(JSON.stringify(x)),h(x.audio,"autoGainControl","mozAutoGainControl"),h(x.audio,"noiseSuppression","mozNoiseSuppression")),g(x)},d&&d.prototype.getSettings){var E=d.prototype.getSettings;d.prototype.getSettings=function(){var x=E.apply(this,arguments);return h(x,"mozAutoGainControl","autoGainControl"),h(x,"mozNoiseSuppression","noiseSuppression"),x}}if(d&&d.prototype.applyConstraints){var _=d.prototype.applyConstraints;d.prototype.applyConstraints=function(x){return this.kind==="audio"&&s(x)==="object"&&(x=JSON.parse(JSON.stringify(x)),h(x,"autoGainControl","mozAutoGainControl"),h(x,"noiseSuppression","mozNoiseSuppression")),_.apply(this,[x])}}}}},{"../utils":"iSxC"}],UuGU:[function(o,e,t){"use strict";function i(n,r){n.navigator.mediaDevices&&"getDisplayMedia"in n.navigator.mediaDevices||n.navigator.mediaDevices&&(n.navigator.mediaDevices.getDisplayMedia=function(s){if(!s||!s.video){var a=new DOMException("getDisplayMedia without video constraints is undefined");return a.name="NotFoundError",a.code=8,Promise.reject(a)}return s.video===!0?s.video={mediaSource:r}:s.video.mediaSource=r,n.navigator.mediaDevices.getUserMedia(s)})}Object.defineProperty(t,"__esModule",{value:!0}),t.shimGetDisplayMedia=i},{}],Fzdr:[function(o,e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.shimOnTrack=l,t.shimPeerConnection=d,t.shimSenderGetStats=h,t.shimReceiverGetStats=g,t.shimRemoveStream=E,t.shimRTCDataChannel=_,t.shimAddTransceiver=x,t.shimGetParameters=m,t.shimCreateOffer=f,t.shimCreateAnswer=p,Object.defineProperty(t,"shimGetUserMedia",{enumerable:!0,get:function(){return n.shimGetUserMedia}}),Object.defineProperty(t,"shimGetDisplayMedia",{enumerable:!0,get:function(){return r.shimGetDisplayMedia}});var i=a(o("../utils")),n=o("./getusermedia"),r=o("./getdisplaymedia");function s(){if(typeof WeakMap!="function")return null;var b=new WeakMap;return s=function(){return b},b}function a(b){if(b&&b.__esModule)return b;if(b===null||typeof b!="object"&&typeof b!="function")return{default:b};var w=s();if(w&&w.has(b))return w.get(b);var C={},T=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var S in b)if(Object.prototype.hasOwnProperty.call(b,S)){var A=T?Object.getOwnPropertyDescriptor(b,S):null;A&&(A.get||A.set)?Object.defineProperty(C,S,A):C[S]=b[S]}return C.default=b,w&&w.set(b,C),C}function c(b,w,C){return w in b?Object.defineProperty(b,w,{value:C,enumerable:!0,configurable:!0,writable:!0}):b[w]=C,b}function u(b){return(u=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(w){return typeof w}:function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w})(b)}function l(b){u(b)==="object"&&b.RTCTrackEvent&&"receiver"in b.RTCTrackEvent.prototype&&!("transceiver"in b.RTCTrackEvent.prototype)&&Object.defineProperty(b.RTCTrackEvent.prototype,"transceiver",{get:function(){return{receiver:this.receiver}}})}function d(b,w){if(u(b)==="object"&&(b.RTCPeerConnection||b.mozRTCPeerConnection)){!b.RTCPeerConnection&&b.mozRTCPeerConnection&&(b.RTCPeerConnection=b.mozRTCPeerConnection),w.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(S){var A=b.RTCPeerConnection.prototype[S],D=c({},S,function(){return arguments[0]=new(S==="addIceCandidate"?b.RTCIceCandidate:b.RTCSessionDescription)(arguments[0]),A.apply(this,arguments)});b.RTCPeerConnection.prototype[S]=D[S]});var C={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},T=b.RTCPeerConnection.prototype.getStats;b.RTCPeerConnection.prototype.getStats=function(){var[S,A,D]=arguments;return T.apply(this,[S||null]).then(function(k){if(w.version<53&&!A)try{k.forEach(function(j){j.type=C[j.type]||j.type})}catch(j){if(j.name!=="TypeError")throw j;k.forEach(function(F,W){k.set(W,Object.assign({},F,{type:C[F.type]||F.type}))})}return k}).then(A,D)}}}function h(b){if(u(b)==="object"&&b.RTCPeerConnection&&b.RTCRtpSender&&!(b.RTCRtpSender&&"getStats"in b.RTCRtpSender.prototype)){var w=b.RTCPeerConnection.prototype.getSenders;w&&(b.RTCPeerConnection.prototype.getSenders=function(){var T=this,S=w.apply(this,[]);return S.forEach(function(A){return A._pc=T}),S});var C=b.RTCPeerConnection.prototype.addTrack;C&&(b.RTCPeerConnection.prototype.addTrack=function(){var T=C.apply(this,arguments);return T._pc=this,T}),b.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}}function g(b){if(u(b)==="object"&&b.RTCPeerConnection&&b.RTCRtpSender&&!(b.RTCRtpSender&&"getStats"in b.RTCRtpReceiver.prototype)){var w=b.RTCPeerConnection.prototype.getReceivers;w&&(b.RTCPeerConnection.prototype.getReceivers=function(){var C=this,T=w.apply(this,[]);return T.forEach(function(S){return S._pc=C}),T}),i.wrapPeerConnectionEvent(b,"track",function(C){return C.receiver._pc=C.srcElement,C}),b.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}}function E(b){!b.RTCPeerConnection||"removeStream"in b.RTCPeerConnection.prototype||(b.RTCPeerConnection.prototype.removeStream=function(w){var C=this;i.deprecated("removeStream","removeTrack"),this.getSenders().forEach(function(T){T.track&&w.getTracks().includes(T.track)&&C.removeTrack(T)})})}function _(b){b.DataChannel&&!b.RTCDataChannel&&(b.RTCDataChannel=b.DataChannel)}function x(b){if(u(b)==="object"&&b.RTCPeerConnection){var w=b.RTCPeerConnection.prototype.addTransceiver;w&&(b.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];var C=arguments[1],T=C&&"sendEncodings"in C;T&&C.sendEncodings.forEach(function(k){if("rid"in k&&!/^[a-z0-9]{0,16}$/i.test(k.rid))throw new TypeError("Invalid RID value provided.");if("scaleResolutionDownBy"in k&&!(parseFloat(k.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in k&&!(parseFloat(k.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")});var S=w.apply(this,arguments);if(T){var{sender:A}=S,D=A.getParameters();"encodings"in D&&(D.encodings.length!==1||Object.keys(D.encodings[0]).length!==0)||(D.encodings=C.sendEncodings,A.sendEncodings=C.sendEncodings,this.setParametersPromises.push(A.setParameters(D).then(function(){delete A.sendEncodings}).catch(function(){delete A.sendEncodings})))}return S})}}function m(b){if(u(b)==="object"&&b.RTCRtpSender){var w=b.RTCRtpSender.prototype.getParameters;w&&(b.RTCRtpSender.prototype.getParameters=function(){var C=w.apply(this,arguments);return"encodings"in C||(C.encodings=[].concat(this.sendEncodings||[{}])),C})}}function f(b){if(u(b)==="object"&&b.RTCPeerConnection){var w=b.RTCPeerConnection.prototype.createOffer;b.RTCPeerConnection.prototype.createOffer=function(){var C=arguments,T=this;return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(function(){return w.apply(T,C)}).finally(function(){T.setParametersPromises=[]}):w.apply(this,arguments)}}}function p(b){if(u(b)==="object"&&b.RTCPeerConnection){var w=b.RTCPeerConnection.prototype.createAnswer;b.RTCPeerConnection.prototype.createAnswer=function(){var C=arguments,T=this;return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(function(){return w.apply(T,C)}).finally(function(){T.setParametersPromises=[]}):w.apply(this,arguments)}}}},{"../utils":"iSxC","./getusermedia":"GzSv","./getdisplaymedia":"UuGU"}],t1lL:[function(o,e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.shimLocalStreamsAPI=a,t.shimRemoteStreamsAPI=c,t.shimCallbacksAPI=u,t.shimGetUserMedia=l,t.shimConstraints=d,t.shimRTCIceServerUrls=h,t.shimTrackEventTransceiver=g,t.shimCreateOfferLegacy=E,t.shimAudioContext=_;var i=r(o("../utils"));function n(){if(typeof WeakMap!="function")return null;var x=new WeakMap;return n=function(){return x},x}function r(x){if(x&&x.__esModule)return x;if(x===null||typeof x!="object"&&typeof x!="function")return{default:x};var m=n();if(m&&m.has(x))return m.get(x);var f={},p=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var b in x)if(Object.prototype.hasOwnProperty.call(x,b)){var w=p?Object.getOwnPropertyDescriptor(x,b):null;w&&(w.get||w.set)?Object.defineProperty(f,b,w):f[b]=x[b]}return f.default=x,m&&m.set(x,f),f}function s(x){return(s=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(m){return typeof m}:function(m){return m&&typeof Symbol=="function"&&m.constructor===Symbol&&m!==Symbol.prototype?"symbol":typeof m})(x)}function a(x){if(s(x)==="object"&&x.RTCPeerConnection){if("getLocalStreams"in x.RTCPeerConnection.prototype||(x.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in x.RTCPeerConnection.prototype)){var m=x.RTCPeerConnection.prototype.addTrack;x.RTCPeerConnection.prototype.addStream=function(f){var p=this;this._localStreams||(this._localStreams=[]),this._localStreams.includes(f)||this._localStreams.push(f),f.getAudioTracks().forEach(function(b){return m.call(p,b,f)}),f.getVideoTracks().forEach(function(b){return m.call(p,b,f)})},x.RTCPeerConnection.prototype.addTrack=function(f){for(var p=this,b=arguments.length,w=new Array(b>1?b-1:0),C=1;C<b;C++)w[C-1]=arguments[C];return w&&w.forEach(function(T){p._localStreams?p._localStreams.includes(T)||p._localStreams.push(T):p._localStreams=[T]}),m.apply(this,arguments)}}"removeStream"in x.RTCPeerConnection.prototype||(x.RTCPeerConnection.prototype.removeStream=function(f){var p=this;this._localStreams||(this._localStreams=[]);var b=this._localStreams.indexOf(f);if(b!==-1){this._localStreams.splice(b,1);var w=f.getTracks();this.getSenders().forEach(function(C){w.includes(C.track)&&p.removeTrack(C)})}})}}function c(x){if(s(x)==="object"&&x.RTCPeerConnection&&("getRemoteStreams"in x.RTCPeerConnection.prototype||(x.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in x.RTCPeerConnection.prototype))){Object.defineProperty(x.RTCPeerConnection.prototype,"onaddstream",{get:function(){return this._onaddstream},set:function(f){var p=this;this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=f),this.addEventListener("track",this._onaddstreampoly=function(b){b.streams.forEach(function(w){if(p._remoteStreams||(p._remoteStreams=[]),!p._remoteStreams.includes(w)){p._remoteStreams.push(w);var C=new Event("addstream");C.stream=w,p.dispatchEvent(C)}})})}});var m=x.RTCPeerConnection.prototype.setRemoteDescription;x.RTCPeerConnection.prototype.setRemoteDescription=function(){var f=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(p){p.streams.forEach(function(b){if(f._remoteStreams||(f._remoteStreams=[]),!(f._remoteStreams.indexOf(b)>=0)){f._remoteStreams.push(b);var w=new Event("addstream");w.stream=b,f.dispatchEvent(w)}})}),m.apply(f,arguments)}}}function u(x){if(s(x)==="object"&&x.RTCPeerConnection){var m=x.RTCPeerConnection.prototype,f=m.createOffer,p=m.createAnswer,b=m.setLocalDescription,w=m.setRemoteDescription,C=m.addIceCandidate;m.createOffer=function(S,A){var D=arguments.length>=2?arguments[2]:arguments[0],k=f.apply(this,[D]);return A?(k.then(S,A),Promise.resolve()):k},m.createAnswer=function(S,A){var D=arguments.length>=2?arguments[2]:arguments[0],k=p.apply(this,[D]);return A?(k.then(S,A),Promise.resolve()):k};var T=function(S,A,D){var k=b.apply(this,[S]);return D?(k.then(A,D),Promise.resolve()):k};m.setLocalDescription=T,T=function(S,A,D){var k=w.apply(this,[S]);return D?(k.then(A,D),Promise.resolve()):k},m.setRemoteDescription=T,T=function(S,A,D){var k=C.apply(this,[S]);return D?(k.then(A,D),Promise.resolve()):k},m.addIceCandidate=T}}function l(x){var m=x&&x.navigator;if(m.mediaDevices&&m.mediaDevices.getUserMedia){var f=m.mediaDevices,p=f.getUserMedia.bind(f);m.mediaDevices.getUserMedia=function(b){return p(d(b))}}!m.getUserMedia&&m.mediaDevices&&m.mediaDevices.getUserMedia&&(m.getUserMedia=function(b,w,C){m.mediaDevices.getUserMedia(b).then(w,C)}.bind(m))}function d(x){return x&&x.video!==void 0?Object.assign({},x,{video:i.compactObject(x.video)}):x}function h(x){if(x.RTCPeerConnection){var m=x.RTCPeerConnection;x.RTCPeerConnection=function(f,p){if(f&&f.iceServers){for(var b=[],w=0;w<f.iceServers.length;w++){var C=f.iceServers[w];!C.hasOwnProperty("urls")&&C.hasOwnProperty("url")?(i.deprecated("RTCIceServer.url","RTCIceServer.urls"),(C=JSON.parse(JSON.stringify(C))).urls=C.url,delete C.url,b.push(C)):b.push(f.iceServers[w])}f.iceServers=b}return new m(f,p)},x.RTCPeerConnection.prototype=m.prototype,"generateCertificate"in m&&Object.defineProperty(x.RTCPeerConnection,"generateCertificate",{get:function(){return m.generateCertificate}})}}function g(x){s(x)==="object"&&x.RTCTrackEvent&&"receiver"in x.RTCTrackEvent.prototype&&!("transceiver"in x.RTCTrackEvent.prototype)&&Object.defineProperty(x.RTCTrackEvent.prototype,"transceiver",{get:function(){return{receiver:this.receiver}}})}function E(x){var m=x.RTCPeerConnection.prototype.createOffer;x.RTCPeerConnection.prototype.createOffer=function(f){if(f){f.offerToReceiveAudio!==void 0&&(f.offerToReceiveAudio=!!f.offerToReceiveAudio);var p=this.getTransceivers().find(function(w){return w.receiver.track.kind==="audio"});f.offerToReceiveAudio===!1&&p?p.direction==="sendrecv"?p.setDirection?p.setDirection("sendonly"):p.direction="sendonly":p.direction==="recvonly"&&(p.setDirection?p.setDirection("inactive"):p.direction="inactive"):f.offerToReceiveAudio!==!0||p||this.addTransceiver("audio"),f.offerToReceiveVideo!==void 0&&(f.offerToReceiveVideo=!!f.offerToReceiveVideo);var b=this.getTransceivers().find(function(w){return w.receiver.track.kind==="video"});f.offerToReceiveVideo===!1&&b?b.direction==="sendrecv"?b.setDirection?b.setDirection("sendonly"):b.direction="sendonly":b.direction==="recvonly"&&(b.setDirection?b.setDirection("inactive"):b.direction="inactive"):f.offerToReceiveVideo!==!0||b||this.addTransceiver("video")}return m.apply(this,arguments)}}function _(x){s(x)!=="object"||x.AudioContext||(x.AudioContext=x.webkitAudioContext)}},{"../utils":"iSxC"}],GOQK:[function(o,e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.shimRTCIceCandidate=u,t.shimMaxMessageSize=l,t.shimSendThrowTypeError=d,t.shimConnectionState=h,t.removeExtmapAllowMixed=g,t.shimAddIceCandidateNullOrEmpty=E;var i=a(o("sdp")),n=s(o("./utils"));function r(){if(typeof WeakMap!="function")return null;var _=new WeakMap;return r=function(){return _},_}function s(_){if(_&&_.__esModule)return _;if(_===null||typeof _!="object"&&typeof _!="function")return{default:_};var x=r();if(x&&x.has(_))return x.get(_);var m={},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var p in _)if(Object.prototype.hasOwnProperty.call(_,p)){var b=f?Object.getOwnPropertyDescriptor(_,p):null;b&&(b.get||b.set)?Object.defineProperty(m,p,b):m[p]=_[p]}return m.default=_,x&&x.set(_,m),m}function a(_){return _&&_.__esModule?_:{default:_}}function c(_){return(c=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(x){return typeof x}:function(x){return x&&typeof Symbol=="function"&&x.constructor===Symbol&&x!==Symbol.prototype?"symbol":typeof x})(_)}function u(_){if(_.RTCIceCandidate&&!(_.RTCIceCandidate&&"foundation"in _.RTCIceCandidate.prototype)){var x=_.RTCIceCandidate;_.RTCIceCandidate=function(m){if(c(m)==="object"&&m.candidate&&m.candidate.indexOf("a=")===0&&((m=JSON.parse(JSON.stringify(m))).candidate=m.candidate.substr(2)),m.candidate&&m.candidate.length){var f=new x(m),p=i.default.parseCandidate(m.candidate),b=Object.assign(f,p);return b.toJSON=function(){return{candidate:b.candidate,sdpMid:b.sdpMid,sdpMLineIndex:b.sdpMLineIndex,usernameFragment:b.usernameFragment}},b}return new x(m)},_.RTCIceCandidate.prototype=x.prototype,n.wrapPeerConnectionEvent(_,"icecandidate",function(m){return m.candidate&&Object.defineProperty(m,"candidate",{value:new _.RTCIceCandidate(m.candidate),writable:"false"}),m})}}function l(_,x){if(_.RTCPeerConnection){"sctp"in _.RTCPeerConnection.prototype||Object.defineProperty(_.RTCPeerConnection.prototype,"sctp",{get:function(){return this._sctp===void 0?null:this._sctp}});var m=_.RTCPeerConnection.prototype.setRemoteDescription;_.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,x.browser==="chrome"&&x.version>=76){var{sdpSemantics:f}=this.getConfiguration();f==="plan-b"&&Object.defineProperty(this,"sctp",{get:function(){return this._sctp===void 0?null:this._sctp},enumerable:!0,configurable:!0})}if(function(D){if(!D||!D.sdp)return!1;var k=i.default.splitSections(D.sdp);return k.shift(),k.some(function(j){var F=i.default.parseMLine(j);return F&&F.kind==="application"&&F.protocol.indexOf("SCTP")!==-1})}(arguments[0])){var p,b=function(D){var k=D.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(k===null||k.length<2)return-1;var j=parseInt(k[1],10);return j!=j?-1:j}(arguments[0]),w=(S=b,A=65536,x.browser==="firefox"&&(A=x.version<57?S===-1?16384:2147483637:x.version<60?x.version===57?65535:65536:2147483637),A),C=function(D,k){var j=65536;x.browser==="firefox"&&x.version===57&&(j=65535);var F=i.default.matchPrefix(D.sdp,"a=max-message-size:");return F.length>0?j=parseInt(F[0].substr(19),10):x.browser==="firefox"&&k!==-1&&(j=2147483637),j}(arguments[0],b);p=w===0&&C===0?Number.POSITIVE_INFINITY:w===0||C===0?Math.max(w,C):Math.min(w,C);var T={};Object.defineProperty(T,"maxMessageSize",{get:function(){return p}}),this._sctp=T}var S,A;return m.apply(this,arguments)}}}function d(_){if(_.RTCPeerConnection&&"createDataChannel"in _.RTCPeerConnection.prototype){var x=_.RTCPeerConnection.prototype.createDataChannel;_.RTCPeerConnection.prototype.createDataChannel=function(){var f=x.apply(this,arguments);return m(f,this),f},n.wrapPeerConnectionEvent(_,"datachannel",function(f){return m(f.channel,f.target),f})}function m(f,p){var b=f.send;f.send=function(){var w=arguments[0],C=w.length||w.size||w.byteLength;if(f.readyState==="open"&&p.sctp&&C>p.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+p.sctp.maxMessageSize+" bytes)");return b.apply(f,arguments)}}}function h(_){if(_.RTCPeerConnection&&!("connectionState"in _.RTCPeerConnection.prototype)){var x=_.RTCPeerConnection.prototype;Object.defineProperty(x,"connectionState",{get:function(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(x,"onconnectionstatechange",{get:function(){return this._onconnectionstatechange||null},set:function(m){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),m&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=m)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach(function(m){var f=x[m];x[m]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=function(p){var b=p.target;if(b._lastConnectionState!==b.connectionState){b._lastConnectionState=b.connectionState;var w=new Event("connectionstatechange",p);b.dispatchEvent(w)}return p},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),f.apply(this,arguments)}})}}function g(_,x){if(_.RTCPeerConnection&&!(x.browser==="chrome"&&x.version>=71||x.browser==="safari"&&x.version>=605)){var m=_.RTCPeerConnection.prototype.setRemoteDescription;_.RTCPeerConnection.prototype.setRemoteDescription=function(f){if(f&&f.sdp&&f.sdp.indexOf(`
70
70
  a=extmap-allow-mixed`)!==-1){var p=f.sdp.split(`
71
71
  `).filter(function(b){return b.trim()!=="a=extmap-allow-mixed"}).join(`
72
- `);_.RTCSessionDescription&&f instanceof _.RTCSessionDescription?arguments[0]=new _.RTCSessionDescription({type:f.type,sdp:p}):f.sdp=p}return m.apply(this,arguments)}}}function E(_,x){if(_.RTCPeerConnection&&_.RTCPeerConnection.prototype){var m=_.RTCPeerConnection.prototype.addIceCandidate;m&&m.length!==0&&(_.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?(x.browser==="chrome"&&x.version<78||x.browser==="firefox"&&x.version<68||x.browser==="safari")&&arguments[0]&&arguments[0].candidate===""?Promise.resolve():m.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}}},{sdp:"YHvh","./utils":"iSxC"}],KtlG:[function(o,e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.adapterFactory=u;var i=l(o("./utils")),n=l(o("./chrome/chrome_shim")),r=l(o("./edge/edge_shim")),s=l(o("./firefox/firefox_shim")),a=l(o("./safari/safari_shim")),c=l(o("./common_shim"));function d(){if(typeof WeakMap!="function")return null;var h=new WeakMap;return d=function(){return h},h}function l(h){if(h&&h.__esModule)return h;if(h===null||typeof h!="object"&&typeof h!="function")return{default:h};var g=d();if(g&&g.has(h))return g.get(h);var E={},_=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var x in h)if(Object.prototype.hasOwnProperty.call(h,x)){var m=_?Object.getOwnPropertyDescriptor(h,x):null;m&&(m.get||m.set)?Object.defineProperty(E,x,m):E[x]=h[x]}return E.default=h,g&&g.set(h,E),E}function u(){var{window:h}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{shimChrome:!0,shimFirefox:!0,shimEdge:!0,shimSafari:!0},E=i.log,_=i.detectBrowser(h),x={browserDetails:_,commonShim:c,extractVersion:i.extractVersion,disableLog:i.disableLog,disableWarnings:i.disableWarnings};switch(_.browser){case"chrome":if(!n||!n.shimPeerConnection||!g.shimChrome)return E("Chrome shim is not included in this adapter release."),x;if(_.version===null)return E("Chrome shim can not determine version, not shimming."),x;E("adapter.js shimming chrome."),x.browserShim=n,c.shimAddIceCandidateNullOrEmpty(h,_),n.shimGetUserMedia(h,_),n.shimMediaStream(h,_),n.shimPeerConnection(h,_),n.shimOnTrack(h,_),n.shimAddTrackRemoveTrack(h,_),n.shimGetSendersWithDtmf(h,_),n.shimGetStats(h,_),n.shimSenderReceiverGetStats(h,_),n.fixNegotiationNeeded(h,_),c.shimRTCIceCandidate(h,_),c.shimConnectionState(h,_),c.shimMaxMessageSize(h,_),c.shimSendThrowTypeError(h,_),c.removeExtmapAllowMixed(h,_);break;case"firefox":if(!s||!s.shimPeerConnection||!g.shimFirefox)return E("Firefox shim is not included in this adapter release."),x;E("adapter.js shimming firefox."),x.browserShim=s,c.shimAddIceCandidateNullOrEmpty(h,_),s.shimGetUserMedia(h,_),s.shimPeerConnection(h,_),s.shimOnTrack(h,_),s.shimRemoveStream(h,_),s.shimSenderGetStats(h,_),s.shimReceiverGetStats(h,_),s.shimRTCDataChannel(h,_),s.shimAddTransceiver(h,_),s.shimGetParameters(h,_),s.shimCreateOffer(h,_),s.shimCreateAnswer(h,_),c.shimRTCIceCandidate(h,_),c.shimConnectionState(h,_),c.shimMaxMessageSize(h,_),c.shimSendThrowTypeError(h,_);break;case"edge":if(!r||!r.shimPeerConnection||!g.shimEdge)return E("MS edge shim is not included in this adapter release."),x;E("adapter.js shimming edge."),x.browserShim=r,r.shimGetUserMedia(h,_),r.shimGetDisplayMedia(h,_),r.shimPeerConnection(h,_),r.shimReplaceTrack(h,_),c.shimMaxMessageSize(h,_),c.shimSendThrowTypeError(h,_);break;case"safari":if(!a||!g.shimSafari)return E("Safari shim is not included in this adapter release."),x;E("adapter.js shimming safari."),x.browserShim=a,c.shimAddIceCandidateNullOrEmpty(h,_),a.shimRTCIceServerUrls(h,_),a.shimCreateOfferLegacy(h,_),a.shimCallbacksAPI(h,_),a.shimLocalStreamsAPI(h,_),a.shimRemoteStreamsAPI(h,_),a.shimTrackEventTransceiver(h,_),a.shimGetUserMedia(h,_),a.shimAudioContext(h,_),c.shimRTCIceCandidate(h,_),c.shimMaxMessageSize(h,_),c.shimSendThrowTypeError(h,_),c.removeExtmapAllowMixed(h,_);break;default:E("Unsupported browser!")}return x}},{"./utils":"iSxC","./chrome/chrome_shim":"uI5X","./edge/edge_shim":"XRic","./firefox/firefox_shim":"Fzdr","./safari/safari_shim":"t1lL","./common_shim":"GOQK"}],tI1X:[function(o,e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=o("./adapter_factory.js"),n=(0,i.adapterFactory)({window:typeof window>"u"?void 0:window}),r=n;t.default=r},{"./adapter_factory.js":"KtlG"}],sXtV:[function(o,e,t){"use strict";var i=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(t,"__esModule",{value:!0}),t.webRTCAdapter=void 0;var n=i(o("webrtc-adapter"));t.webRTCAdapter=n.default},{"webrtc-adapter":"tI1X"}],I31f:[function(o,e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Supports=void 0;var i=o("./adapter");t.Supports=new(function(){function n(){this.isIOS=["iPad","iPhone","iPod"].includes(navigator.platform),this.supportedBrowsers=["firefox","chrome","safari"],this.minFirefoxVersion=59,this.minChromeVersion=72,this.minSafariVersion=605}return n.prototype.isWebRTCSupported=function(){return typeof RTCPeerConnection<"u"},n.prototype.isBrowserSupported=function(){var r=this.getBrowser(),s=this.getVersion();return!!this.supportedBrowsers.includes(r)&&(r==="chrome"?s>=this.minChromeVersion:r==="firefox"?s>=this.minFirefoxVersion:r==="safari"&&!this.isIOS&&s>=this.minSafariVersion)},n.prototype.getBrowser=function(){return i.webRTCAdapter.browserDetails.browser},n.prototype.getVersion=function(){return i.webRTCAdapter.browserDetails.version||0},n.prototype.isUnifiedPlanSupported=function(){var r,s=this.getBrowser(),a=i.webRTCAdapter.browserDetails.version||0;if(s==="chrome"&&a<72)return!1;if(s==="firefox"&&a>=59)return!0;if(!(window.RTCRtpTransceiver&&"currentDirection"in RTCRtpTransceiver.prototype))return!1;var c=!1;try{(r=new RTCPeerConnection).addTransceiver("audio"),c=!0}catch{}finally{r&&r.close()}return c},n.prototype.toString=function(){return`Supports:
72
+ `);_.RTCSessionDescription&&f instanceof _.RTCSessionDescription?arguments[0]=new _.RTCSessionDescription({type:f.type,sdp:p}):f.sdp=p}return m.apply(this,arguments)}}}function E(_,x){if(_.RTCPeerConnection&&_.RTCPeerConnection.prototype){var m=_.RTCPeerConnection.prototype.addIceCandidate;m&&m.length!==0&&(_.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?(x.browser==="chrome"&&x.version<78||x.browser==="firefox"&&x.version<68||x.browser==="safari")&&arguments[0]&&arguments[0].candidate===""?Promise.resolve():m.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}}},{sdp:"YHvh","./utils":"iSxC"}],KtlG:[function(o,e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.adapterFactory=d;var i=l(o("./utils")),n=l(o("./chrome/chrome_shim")),r=l(o("./edge/edge_shim")),s=l(o("./firefox/firefox_shim")),a=l(o("./safari/safari_shim")),c=l(o("./common_shim"));function u(){if(typeof WeakMap!="function")return null;var h=new WeakMap;return u=function(){return h},h}function l(h){if(h&&h.__esModule)return h;if(h===null||typeof h!="object"&&typeof h!="function")return{default:h};var g=u();if(g&&g.has(h))return g.get(h);var E={},_=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var x in h)if(Object.prototype.hasOwnProperty.call(h,x)){var m=_?Object.getOwnPropertyDescriptor(h,x):null;m&&(m.get||m.set)?Object.defineProperty(E,x,m):E[x]=h[x]}return E.default=h,g&&g.set(h,E),E}function d(){var{window:h}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{shimChrome:!0,shimFirefox:!0,shimEdge:!0,shimSafari:!0},E=i.log,_=i.detectBrowser(h),x={browserDetails:_,commonShim:c,extractVersion:i.extractVersion,disableLog:i.disableLog,disableWarnings:i.disableWarnings};switch(_.browser){case"chrome":if(!n||!n.shimPeerConnection||!g.shimChrome)return E("Chrome shim is not included in this adapter release."),x;if(_.version===null)return E("Chrome shim can not determine version, not shimming."),x;E("adapter.js shimming chrome."),x.browserShim=n,c.shimAddIceCandidateNullOrEmpty(h,_),n.shimGetUserMedia(h,_),n.shimMediaStream(h,_),n.shimPeerConnection(h,_),n.shimOnTrack(h,_),n.shimAddTrackRemoveTrack(h,_),n.shimGetSendersWithDtmf(h,_),n.shimGetStats(h,_),n.shimSenderReceiverGetStats(h,_),n.fixNegotiationNeeded(h,_),c.shimRTCIceCandidate(h,_),c.shimConnectionState(h,_),c.shimMaxMessageSize(h,_),c.shimSendThrowTypeError(h,_),c.removeExtmapAllowMixed(h,_);break;case"firefox":if(!s||!s.shimPeerConnection||!g.shimFirefox)return E("Firefox shim is not included in this adapter release."),x;E("adapter.js shimming firefox."),x.browserShim=s,c.shimAddIceCandidateNullOrEmpty(h,_),s.shimGetUserMedia(h,_),s.shimPeerConnection(h,_),s.shimOnTrack(h,_),s.shimRemoveStream(h,_),s.shimSenderGetStats(h,_),s.shimReceiverGetStats(h,_),s.shimRTCDataChannel(h,_),s.shimAddTransceiver(h,_),s.shimGetParameters(h,_),s.shimCreateOffer(h,_),s.shimCreateAnswer(h,_),c.shimRTCIceCandidate(h,_),c.shimConnectionState(h,_),c.shimMaxMessageSize(h,_),c.shimSendThrowTypeError(h,_);break;case"edge":if(!r||!r.shimPeerConnection||!g.shimEdge)return E("MS edge shim is not included in this adapter release."),x;E("adapter.js shimming edge."),x.browserShim=r,r.shimGetUserMedia(h,_),r.shimGetDisplayMedia(h,_),r.shimPeerConnection(h,_),r.shimReplaceTrack(h,_),c.shimMaxMessageSize(h,_),c.shimSendThrowTypeError(h,_);break;case"safari":if(!a||!g.shimSafari)return E("Safari shim is not included in this adapter release."),x;E("adapter.js shimming safari."),x.browserShim=a,c.shimAddIceCandidateNullOrEmpty(h,_),a.shimRTCIceServerUrls(h,_),a.shimCreateOfferLegacy(h,_),a.shimCallbacksAPI(h,_),a.shimLocalStreamsAPI(h,_),a.shimRemoteStreamsAPI(h,_),a.shimTrackEventTransceiver(h,_),a.shimGetUserMedia(h,_),a.shimAudioContext(h,_),c.shimRTCIceCandidate(h,_),c.shimMaxMessageSize(h,_),c.shimSendThrowTypeError(h,_),c.removeExtmapAllowMixed(h,_);break;default:E("Unsupported browser!")}return x}},{"./utils":"iSxC","./chrome/chrome_shim":"uI5X","./edge/edge_shim":"XRic","./firefox/firefox_shim":"Fzdr","./safari/safari_shim":"t1lL","./common_shim":"GOQK"}],tI1X:[function(o,e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=o("./adapter_factory.js"),n=(0,i.adapterFactory)({window:typeof window>"u"?void 0:window}),r=n;t.default=r},{"./adapter_factory.js":"KtlG"}],sXtV:[function(o,e,t){"use strict";var i=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(t,"__esModule",{value:!0}),t.webRTCAdapter=void 0;var n=i(o("webrtc-adapter"));t.webRTCAdapter=n.default},{"webrtc-adapter":"tI1X"}],I31f:[function(o,e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Supports=void 0;var i=o("./adapter");t.Supports=new(function(){function n(){this.isIOS=["iPad","iPhone","iPod"].includes(navigator.platform),this.supportedBrowsers=["firefox","chrome","safari"],this.minFirefoxVersion=59,this.minChromeVersion=72,this.minSafariVersion=605}return n.prototype.isWebRTCSupported=function(){return typeof RTCPeerConnection<"u"},n.prototype.isBrowserSupported=function(){var r=this.getBrowser(),s=this.getVersion();return!!this.supportedBrowsers.includes(r)&&(r==="chrome"?s>=this.minChromeVersion:r==="firefox"?s>=this.minFirefoxVersion:r==="safari"&&!this.isIOS&&s>=this.minSafariVersion)},n.prototype.getBrowser=function(){return i.webRTCAdapter.browserDetails.browser},n.prototype.getVersion=function(){return i.webRTCAdapter.browserDetails.version||0},n.prototype.isUnifiedPlanSupported=function(){var r,s=this.getBrowser(),a=i.webRTCAdapter.browserDetails.version||0;if(s==="chrome"&&a<72)return!1;if(s==="firefox"&&a>=59)return!0;if(!(window.RTCRtpTransceiver&&"currentDirection"in RTCRtpTransceiver.prototype))return!1;var c=!1;try{(r=new RTCPeerConnection).addTransceiver("audio"),c=!0}catch{}finally{r&&r.close()}return c},n.prototype.toString=function(){return`Supports:
73
73
  browser:`+this.getBrowser()+`
74
74
  version:`+this.getVersion()+`
75
75
  isIOS:`+this.isIOS+`
76
76
  isWebRTCSupported:`+this.isWebRTCSupported()+`
77
77
  isBrowserSupported:`+this.isBrowserSupported()+`
78
- isUnifiedPlanSupported:`+this.isUnifiedPlanSupported()},n}())},{"./adapter":"sXtV"}],BHXf:[function(o,e,t){"use strict";var i=this&&this.__createBinding||(Object.create?function(d,l,u,h){h===void 0&&(h=u),Object.defineProperty(d,h,{enumerable:!0,get:function(){return l[u]}})}:function(d,l,u,h){h===void 0&&(h=u),d[h]=l[u]}),n=this&&this.__setModuleDefault||(Object.create?function(d,l){Object.defineProperty(d,"default",{enumerable:!0,value:l})}:function(d,l){d.default=l}),r=this&&this.__importStar||function(d){if(d&&d.__esModule)return d;var l={};if(d!=null)for(var u in d)u!=="default"&&Object.prototype.hasOwnProperty.call(d,u)&&i(l,d,u);return n(l,d),l};Object.defineProperty(t,"__esModule",{value:!0}),t.util=void 0;var s=r(o("peerjs-js-binarypack")),a=o("./supports"),c={iceServers:[{urls:"stun:stun.l.google.com:19302"},{urls:"turn:0.peerjs.com:3478",username:"peerjs",credential:"peerjsp"}],sdpSemantics:"unified-plan"};t.util=new(function(){function d(){this.CLOUD_HOST="0.peerjs.com",this.CLOUD_PORT=443,this.chunkedBrowsers={Chrome:1,chrome:1},this.chunkedMTU=16300,this.defaultConfig=c,this.browser=a.Supports.getBrowser(),this.browserVersion=a.Supports.getVersion(),this.supports=function(){var l,u={browser:a.Supports.isBrowserSupported(),webRTC:a.Supports.isWebRTCSupported(),audioVideo:!1,data:!1,binaryBlob:!1,reliable:!1};if(!u.webRTC)return u;try{l=new RTCPeerConnection(c),u.audioVideo=!0;var h=void 0;try{h=l.createDataChannel("_PEERJSTEST",{ordered:!0}),u.data=!0,u.reliable=!!h.ordered;try{h.binaryType="blob",u.binaryBlob=!a.Supports.isIOS}catch{}}catch{}finally{h&&h.close()}}catch{}finally{l&&l.close()}return u}(),this.pack=s.pack,this.unpack=s.unpack,this._dataCount=1}return d.prototype.noop=function(){},d.prototype.validateId=function(l){return!l||/^[A-Za-z0-9]+(?:[ _-][A-Za-z0-9]+)*$/.test(l)},d.prototype.chunk=function(l){for(var u=[],h=l.size,g=Math.ceil(h/t.util.chunkedMTU),E=0,_=0;_<h;){var x=Math.min(h,_+t.util.chunkedMTU),m=l.slice(_,x),f={__peerData:this._dataCount,n:E,data:m,total:g};u.push(f),_=x,E++}return this._dataCount++,u},d.prototype.blobToArrayBuffer=function(l,u){var h=new FileReader;return h.onload=function(g){g.target&&u(g.target.result)},h.readAsArrayBuffer(l),h},d.prototype.binaryStringToArrayBuffer=function(l){for(var u=new Uint8Array(l.length),h=0;h<l.length;h++)u[h]=255&l.charCodeAt(h);return u.buffer},d.prototype.randomToken=function(){return Math.random().toString(36).substr(2)},d.prototype.isSecure=function(){return location.protocol==="https:"},d}())},{"peerjs-js-binarypack":"kdPp","./supports":"I31f"}],JJlS:[function(o,e,t){"use strict";var i=Object.prototype.hasOwnProperty,n="~";function r(){}function s(l,u,h){this.fn=l,this.context=u,this.once=h||!1}function a(l,u,h,g,E){if(typeof h!="function")throw new TypeError("The listener must be a function");var _=new s(h,g||l,E),x=n?n+u:u;return l._events[x]?l._events[x].fn?l._events[x]=[l._events[x],_]:l._events[x].push(_):(l._events[x]=_,l._eventsCount++),l}function c(l,u){--l._eventsCount==0?l._events=new r:delete l._events[u]}function d(){this._events=new r,this._eventsCount=0}Object.create&&(r.prototype=Object.create(null),new r().__proto__||(n=!1)),d.prototype.eventNames=function(){var l,u,h=[];if(this._eventsCount===0)return h;for(u in l=this._events)i.call(l,u)&&h.push(n?u.slice(1):u);return Object.getOwnPropertySymbols?h.concat(Object.getOwnPropertySymbols(l)):h},d.prototype.listeners=function(l){var u=n?n+l:l,h=this._events[u];if(!h)return[];if(h.fn)return[h.fn];for(var g=0,E=h.length,_=new Array(E);g<E;g++)_[g]=h[g].fn;return _},d.prototype.listenerCount=function(l){var u=n?n+l:l,h=this._events[u];return h?h.fn?1:h.length:0},d.prototype.emit=function(l,u,h,g,E,_){var x=n?n+l:l;if(!this._events[x])return!1;var m,f,p=this._events[x],b=arguments.length;if(p.fn){switch(p.once&&this.removeListener(l,p.fn,void 0,!0),b){case 1:return p.fn.call(p.context),!0;case 2:return p.fn.call(p.context,u),!0;case 3:return p.fn.call(p.context,u,h),!0;case 4:return p.fn.call(p.context,u,h,g),!0;case 5:return p.fn.call(p.context,u,h,g,E),!0;case 6:return p.fn.call(p.context,u,h,g,E,_),!0}for(f=1,m=new Array(b-1);f<b;f++)m[f-1]=arguments[f];p.fn.apply(p.context,m)}else{var w,C=p.length;for(f=0;f<C;f++)switch(p[f].once&&this.removeListener(l,p[f].fn,void 0,!0),b){case 1:p[f].fn.call(p[f].context);break;case 2:p[f].fn.call(p[f].context,u);break;case 3:p[f].fn.call(p[f].context,u,h);break;case 4:p[f].fn.call(p[f].context,u,h,g);break;default:if(!m)for(w=1,m=new Array(b-1);w<b;w++)m[w-1]=arguments[w];p[f].fn.apply(p[f].context,m)}}return!0},d.prototype.on=function(l,u,h){return a(this,l,u,h,!1)},d.prototype.once=function(l,u,h){return a(this,l,u,h,!0)},d.prototype.removeListener=function(l,u,h,g){var E=n?n+l:l;if(!this._events[E])return this;if(!u)return c(this,E),this;var _=this._events[E];if(_.fn)_.fn!==u||g&&!_.once||h&&_.context!==h||c(this,E);else{for(var x=0,m=[],f=_.length;x<f;x++)(_[x].fn!==u||g&&!_[x].once||h&&_[x].context!==h)&&m.push(_[x]);m.length?this._events[E]=m.length===1?m[0]:m:c(this,E)}return this},d.prototype.removeAllListeners=function(l){var u;return l?(u=n?n+l:l,this._events[u]&&c(this,u)):(this._events=new r,this._eventsCount=0),this},d.prototype.off=d.prototype.removeListener,d.prototype.addListener=d.prototype.on,d.prefixed=n,d.EventEmitter=d,typeof e<"u"&&(e.exports=d)},{}],WOs9:[function(o,e,t){"use strict";var i=this&&this.__read||function(c,d){var l=typeof Symbol=="function"&&c[Symbol.iterator];if(!l)return c;var u,h,g=l.call(c),E=[];try{for(;(d===void 0||d-- >0)&&!(u=g.next()).done;)E.push(u.value)}catch(_){h={error:_}}finally{try{u&&!u.done&&(l=g.return)&&l.call(g)}finally{if(h)throw h.error}}return E},n=this&&this.__spreadArray||function(c,d){for(var l=0,u=d.length,h=c.length;l<u;l++,h++)c[h]=d[l];return c};Object.defineProperty(t,"__esModule",{value:!0}),t.LogLevel=void 0;var r,s="PeerJS: ";(function(c){c[c.Disabled=0]="Disabled",c[c.Errors=1]="Errors",c[c.Warnings=2]="Warnings",c[c.All=3]="All"})(r=t.LogLevel||(t.LogLevel={}));var a=function(){function c(){this._logLevel=r.Disabled}return Object.defineProperty(c.prototype,"logLevel",{get:function(){return this._logLevel},set:function(d){this._logLevel=d},enumerable:!1,configurable:!0}),c.prototype.log=function(){for(var d=[],l=0;l<arguments.length;l++)d[l]=arguments[l];this._logLevel>=r.All&&this._print.apply(this,n([r.All],i(d)))},c.prototype.warn=function(){for(var d=[],l=0;l<arguments.length;l++)d[l]=arguments[l];this._logLevel>=r.Warnings&&this._print.apply(this,n([r.Warnings],i(d)))},c.prototype.error=function(){for(var d=[],l=0;l<arguments.length;l++)d[l]=arguments[l];this._logLevel>=r.Errors&&this._print.apply(this,n([r.Errors],i(d)))},c.prototype.setLogFunction=function(d){this._print=d},c.prototype._print=function(d){for(var l=[],u=1;u<arguments.length;u++)l[u-1]=arguments[u];var h=n([s],i(l));for(var g in h)h[g]instanceof Error&&(h[g]="("+h[g].name+") "+h[g].message);d>=r.All?console.log.apply(console,n([],i(h))):d>=r.Warnings?console.warn.apply(console,n(["WARNING"],i(h))):d>=r.Errors&&console.error.apply(console,n(["ERROR"],i(h)))},c}();t.default=new a},{}],ZRYf:[function(o,e,t){"use strict";var i,n,r,s,a,c,d;Object.defineProperty(t,"__esModule",{value:!0}),t.ServerMessageType=t.SocketEventType=t.SerializationType=t.PeerErrorType=t.PeerEventType=t.ConnectionType=t.ConnectionEventType=void 0,function(l){l.Open="open",l.Stream="stream",l.Data="data",l.Close="close",l.Error="error",l.IceStateChanged="iceStateChanged"}(i=t.ConnectionEventType||(t.ConnectionEventType={})),function(l){l.Data="data",l.Media="media"}(n=t.ConnectionType||(t.ConnectionType={})),function(l){l.Open="open",l.Close="close",l.Connection="connection",l.Call="call",l.Disconnected="disconnected",l.Error="error"}(r=t.PeerEventType||(t.PeerEventType={})),function(l){l.BrowserIncompatible="browser-incompatible",l.Disconnected="disconnected",l.InvalidID="invalid-id",l.InvalidKey="invalid-key",l.Network="network",l.PeerUnavailable="peer-unavailable",l.SslUnavailable="ssl-unavailable",l.ServerError="server-error",l.SocketError="socket-error",l.SocketClosed="socket-closed",l.UnavailableID="unavailable-id",l.WebRTC="webrtc"}(s=t.PeerErrorType||(t.PeerErrorType={})),function(l){l.Binary="binary",l.BinaryUTF8="binary-utf8",l.JSON="json"}(a=t.SerializationType||(t.SerializationType={})),function(l){l.Message="message",l.Disconnected="disconnected",l.Error="error",l.Close="close"}(c=t.SocketEventType||(t.SocketEventType={})),function(l){l.Heartbeat="HEARTBEAT",l.Candidate="CANDIDATE",l.Offer="OFFER",l.Answer="ANSWER",l.Open="OPEN",l.Error="ERROR",l.IdTaken="ID-TAKEN",l.InvalidKey="INVALID-KEY",l.Leave="LEAVE",l.Expire="EXPIRE"}(d=t.ServerMessageType||(t.ServerMessageType={}))},{}],wJlv:[function(o,e,t){"use strict";var i=this&&this.__extends||function(){var h=function(g,E){return(h=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(_,x){_.__proto__=x}||function(_,x){for(var m in x)Object.prototype.hasOwnProperty.call(x,m)&&(_[m]=x[m])})(g,E)};return function(g,E){if(typeof E!="function"&&E!==null)throw new TypeError("Class extends value "+String(E)+" is not a constructor or null");function _(){this.constructor=g}h(g,E),g.prototype=E===null?Object.create(E):(_.prototype=E.prototype,new _)}}(),n=this&&this.__read||function(h,g){var E=typeof Symbol=="function"&&h[Symbol.iterator];if(!E)return h;var _,x,m=E.call(h),f=[];try{for(;(g===void 0||g-- >0)&&!(_=m.next()).done;)f.push(_.value)}catch(p){x={error:p}}finally{try{_&&!_.done&&(E=m.return)&&E.call(m)}finally{if(x)throw x.error}}return f},r=this&&this.__spreadArray||function(h,g){for(var E=0,_=g.length,x=h.length;E<_;E++,x++)h[x]=g[E];return h},s=this&&this.__values||function(h){var g=typeof Symbol=="function"&&Symbol.iterator,E=g&&h[g],_=0;if(E)return E.call(h);if(h&&typeof h.length=="number")return{next:function(){return h&&_>=h.length&&(h=void 0),{value:h&&h[_++],done:!h}}};throw new TypeError(g?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__importDefault||function(h){return h&&h.__esModule?h:{default:h}};Object.defineProperty(t,"__esModule",{value:!0}),t.Socket=void 0;var c=o("eventemitter3"),d=a(o("./logger")),l=o("./enums"),u=function(h){function g(E,_,x,m,f,p){p===void 0&&(p=5e3);var b=h.call(this)||this;b.pingInterval=p,b._disconnected=!0,b._messagesQueue=[];var w=E?"wss://":"ws://";return b._baseUrl=w+_+":"+x+m+"peerjs?key="+f,b}return i(g,h),g.prototype.start=function(E,_){var x=this;this._id=E;var m=this._baseUrl+"&id="+E+"&token="+_;!this._socket&&this._disconnected&&(this._socket=new WebSocket(m),this._disconnected=!1,this._socket.onmessage=function(f){var p;try{p=JSON.parse(f.data),d.default.log("Server message received:",p)}catch{return void d.default.log("Invalid server message",f.data)}x.emit(l.SocketEventType.Message,p)},this._socket.onclose=function(f){x._disconnected||(d.default.log("Socket closed.",f),x._cleanup(),x._disconnected=!0,x.emit(l.SocketEventType.Disconnected))},this._socket.onopen=function(){x._disconnected||(x._sendQueuedMessages(),d.default.log("Socket open"),x._scheduleHeartbeat())})},g.prototype._scheduleHeartbeat=function(){var E=this;this._wsPingTimer=setTimeout(function(){E._sendHeartbeat()},this.pingInterval)},g.prototype._sendHeartbeat=function(){if(this._wsOpen()){var E=JSON.stringify({type:l.ServerMessageType.Heartbeat});this._socket.send(E),this._scheduleHeartbeat()}else d.default.log("Cannot send heartbeat, because socket closed")},g.prototype._wsOpen=function(){return!!this._socket&&this._socket.readyState===1},g.prototype._sendQueuedMessages=function(){var E,_,x=r([],n(this._messagesQueue));this._messagesQueue=[];try{for(var m=s(x),f=m.next();!f.done;f=m.next()){var p=f.value;this.send(p)}}catch(b){E={error:b}}finally{try{f&&!f.done&&(_=m.return)&&_.call(m)}finally{if(E)throw E.error}}},g.prototype.send=function(E){if(!this._disconnected)if(this._id)if(E.type){if(this._wsOpen()){var _=JSON.stringify(E);this._socket.send(_)}}else this.emit(l.SocketEventType.Error,"Invalid message");else this._messagesQueue.push(E)},g.prototype.close=function(){this._disconnected||(this._cleanup(),this._disconnected=!0)},g.prototype._cleanup=function(){this._socket&&(this._socket.onopen=this._socket.onmessage=this._socket.onclose=null,this._socket.close(),this._socket=void 0),clearTimeout(this._wsPingTimer)},g}(c.EventEmitter);t.Socket=u},{eventemitter3:"JJlS","./logger":"WOs9","./enums":"ZRYf"}],HCdX:[function(o,e,t){"use strict";var i=this&&this.__assign||function(){return(i=Object.assign||function(u){for(var h,g=1,E=arguments.length;g<E;g++)for(var _ in h=arguments[g])Object.prototype.hasOwnProperty.call(h,_)&&(u[_]=h[_]);return u}).apply(this,arguments)},n=this&&this.__awaiter||function(u,h,g,E){return new(g||(g=Promise))(function(_,x){function m(b){try{p(E.next(b))}catch(w){x(w)}}function f(b){try{p(E.throw(b))}catch(w){x(w)}}function p(b){var w;b.done?_(b.value):(w=b.value,w instanceof g?w:new g(function(C){C(w)})).then(m,f)}p((E=E.apply(u,h||[])).next())})},r=this&&this.__generator||function(u,h){var g,E,_,x,m={label:0,sent:function(){if(1&_[0])throw _[1];return _[1]},trys:[],ops:[]};return x={next:f(0),throw:f(1),return:f(2)},typeof Symbol=="function"&&(x[Symbol.iterator]=function(){return this}),x;function f(p){return function(b){return function(w){if(g)throw new TypeError("Generator is already executing.");for(;m;)try{if(g=1,E&&(_=2&w[0]?E.return:w[0]?E.throw||((_=E.return)&&_.call(E),0):E.next)&&!(_=_.call(E,w[1])).done)return _;switch(E=0,_&&(w=[2&w[0],_.value]),w[0]){case 0:case 1:_=w;break;case 4:return m.label++,{value:w[1],done:!1};case 5:m.label++,E=w[1],w=[0];continue;case 7:w=m.ops.pop(),m.trys.pop();continue;default:if(!(_=(_=m.trys).length>0&&_[_.length-1])&&(w[0]===6||w[0]===2)){m=0;continue}if(w[0]===3&&(!_||w[1]>_[0]&&w[1]<_[3])){m.label=w[1];break}if(w[0]===6&&m.label<_[1]){m.label=_[1],_=w;break}if(_&&m.label<_[2]){m.label=_[2],m.ops.push(w);break}_[2]&&m.ops.pop(),m.trys.pop();continue}w=h.call(u,m)}catch(C){w=[6,C],E=0}finally{g=_=0}if(5&w[0])throw w[1];return{value:w[0]?w[1]:void 0,done:!0}}([p,b])}}},s=this&&this.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(t,"__esModule",{value:!0}),t.Negotiator=void 0;var a=o("./util"),c=s(o("./logger")),d=o("./enums"),l=function(){function u(h){this.connection=h}return u.prototype.startConnection=function(h){var g=this._startPeerConnection();if(this.connection.peerConnection=g,this.connection.type===d.ConnectionType.Media&&h._stream&&this._addTracksToConnection(h._stream,g),h.originator){if(this.connection.type===d.ConnectionType.Data){var E=this.connection,_={ordered:!!h.reliable},x=g.createDataChannel(E.label,_);E.initialize(x)}this._makeOffer()}else this.handleSDP("OFFER",h.sdp)},u.prototype._startPeerConnection=function(){c.default.log("Creating RTCPeerConnection.");var h=new RTCPeerConnection(this.connection.provider.options.config);return this._setupListeners(h),h},u.prototype._setupListeners=function(h){var g=this,E=this.connection.peer,_=this.connection.connectionId,x=this.connection.type,m=this.connection.provider;c.default.log("Listening for ICE candidates."),h.onicecandidate=function(f){f.candidate&&f.candidate.candidate&&(c.default.log("Received ICE candidates for "+E+":",f.candidate),m.socket.send({type:d.ServerMessageType.Candidate,payload:{candidate:f.candidate,type:x,connectionId:_},dst:E}))},h.oniceconnectionstatechange=function(){switch(h.iceConnectionState){case"failed":c.default.log("iceConnectionState is failed, closing connections to "+E),g.connection.emit(d.ConnectionEventType.Error,new Error("Negotiation of connection to "+E+" failed.")),g.connection.close();break;case"closed":c.default.log("iceConnectionState is closed, closing connections to "+E),g.connection.emit(d.ConnectionEventType.Error,new Error("Connection to "+E+" closed.")),g.connection.close();break;case"disconnected":c.default.log("iceConnectionState changed to disconnected on the connection with "+E);break;case"completed":h.onicecandidate=a.util.noop}g.connection.emit(d.ConnectionEventType.IceStateChanged,h.iceConnectionState)},c.default.log("Listening for data channel"),h.ondatachannel=function(f){c.default.log("Received data channel");var p=f.channel;m.getConnection(E,_).initialize(p)},c.default.log("Listening for remote stream"),h.ontrack=function(f){c.default.log("Received remote stream");var p=f.streams[0],b=m.getConnection(E,_);if(b.type===d.ConnectionType.Media){var w=b;g._addStreamToMediaConnection(p,w)}}},u.prototype.cleanup=function(){c.default.log("Cleaning up PeerConnection to "+this.connection.peer);var h=this.connection.peerConnection;if(h){this.connection.peerConnection=null,h.onicecandidate=h.oniceconnectionstatechange=h.ondatachannel=h.ontrack=function(){};var g=h.signalingState!=="closed",E=!1;if(this.connection.type===d.ConnectionType.Data){var _=this.connection.dataChannel;_&&(E=!!_.readyState&&_.readyState!=="closed")}(g||E)&&h.close()}},u.prototype._makeOffer=function(){return n(this,void 0,Promise,function(){var h,g,E,_,x,m,f;return r(this,function(p){switch(p.label){case 0:h=this.connection.peerConnection,g=this.connection.provider,p.label=1;case 1:return p.trys.push([1,7,,8]),[4,h.createOffer(this.connection.options.constraints)];case 2:E=p.sent(),c.default.log("Created offer."),this.connection.options.sdpTransform&&typeof this.connection.options.sdpTransform=="function"&&(E.sdp=this.connection.options.sdpTransform(E.sdp)||E.sdp),p.label=3;case 3:return p.trys.push([3,5,,6]),[4,h.setLocalDescription(E)];case 4:return p.sent(),c.default.log("Set localDescription:",E,"for:"+this.connection.peer),_={sdp:E,type:this.connection.type,connectionId:this.connection.connectionId,metadata:this.connection.metadata,browser:a.util.browser},this.connection.type===d.ConnectionType.Data&&(x=this.connection,_=i(i({},_),{label:x.label,reliable:x.reliable,serialization:x.serialization})),g.socket.send({type:d.ServerMessageType.Offer,payload:_,dst:this.connection.peer}),[3,6];case 5:return(m=p.sent())!="OperationError: Failed to set local offer sdp: Called in wrong state: kHaveRemoteOffer"&&(g.emitError(d.PeerErrorType.WebRTC,m),c.default.log("Failed to setLocalDescription, ",m)),[3,6];case 6:return[3,8];case 7:return f=p.sent(),g.emitError(d.PeerErrorType.WebRTC,f),c.default.log("Failed to createOffer, ",f),[3,8];case 8:return[2]}})})},u.prototype._makeAnswer=function(){return n(this,void 0,Promise,function(){var h,g,E,_,x;return r(this,function(m){switch(m.label){case 0:h=this.connection.peerConnection,g=this.connection.provider,m.label=1;case 1:return m.trys.push([1,7,,8]),[4,h.createAnswer()];case 2:E=m.sent(),c.default.log("Created answer."),this.connection.options.sdpTransform&&typeof this.connection.options.sdpTransform=="function"&&(E.sdp=this.connection.options.sdpTransform(E.sdp)||E.sdp),m.label=3;case 3:return m.trys.push([3,5,,6]),[4,h.setLocalDescription(E)];case 4:return m.sent(),c.default.log("Set localDescription:",E,"for:"+this.connection.peer),g.socket.send({type:d.ServerMessageType.Answer,payload:{sdp:E,type:this.connection.type,connectionId:this.connection.connectionId,browser:a.util.browser},dst:this.connection.peer}),[3,6];case 5:return _=m.sent(),g.emitError(d.PeerErrorType.WebRTC,_),c.default.log("Failed to setLocalDescription, ",_),[3,6];case 6:return[3,8];case 7:return x=m.sent(),g.emitError(d.PeerErrorType.WebRTC,x),c.default.log("Failed to create answer, ",x),[3,8];case 8:return[2]}})})},u.prototype.handleSDP=function(h,g){return n(this,void 0,Promise,function(){var E,_,x,m;return r(this,function(f){switch(f.label){case 0:g=new RTCSessionDescription(g),E=this.connection.peerConnection,_=this.connection.provider,c.default.log("Setting remote description",g),x=this,f.label=1;case 1:return f.trys.push([1,5,,6]),[4,E.setRemoteDescription(g)];case 2:return f.sent(),c.default.log("Set remoteDescription:"+h+" for:"+this.connection.peer),h!=="OFFER"?[3,4]:[4,x._makeAnswer()];case 3:f.sent(),f.label=4;case 4:return[3,6];case 5:return m=f.sent(),_.emitError(d.PeerErrorType.WebRTC,m),c.default.log("Failed to setRemoteDescription, ",m),[3,6];case 6:return[2]}})})},u.prototype.handleCandidate=function(h){return n(this,void 0,Promise,function(){var g,E,_,x,m,f;return r(this,function(p){switch(p.label){case 0:c.default.log("handleCandidate:",h),g=h.candidate,E=h.sdpMLineIndex,_=h.sdpMid,x=this.connection.peerConnection,m=this.connection.provider,p.label=1;case 1:return p.trys.push([1,3,,4]),[4,x.addIceCandidate(new RTCIceCandidate({sdpMid:_,sdpMLineIndex:E,candidate:g}))];case 2:return p.sent(),c.default.log("Added ICE candidate for:"+this.connection.peer),[3,4];case 3:return f=p.sent(),m.emitError(d.PeerErrorType.WebRTC,f),c.default.log("Failed to handleCandidate, ",f),[3,4];case 4:return[2]}})})},u.prototype._addTracksToConnection=function(h,g){if(c.default.log("add tracks from stream "+h.id+" to peer connection"),!g.addTrack)return c.default.error("Your browser does't support RTCPeerConnection#addTrack. Ignored.");h.getTracks().forEach(function(E){g.addTrack(E,h)})},u.prototype._addStreamToMediaConnection=function(h,g){c.default.log("add stream "+h.id+" to media connection "+g.connectionId),g.addStream(h)},u}();t.Negotiator=l},{"./util":"BHXf","./logger":"WOs9","./enums":"ZRYf"}],tQFK:[function(o,e,t){"use strict";var i=this&&this.__extends||function(){var s=function(a,c){return(s=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,l){d.__proto__=l}||function(d,l){for(var u in l)Object.prototype.hasOwnProperty.call(l,u)&&(d[u]=l[u])})(a,c)};return function(a,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");function d(){this.constructor=a}s(a,c),a.prototype=c===null?Object.create(c):(d.prototype=c.prototype,new d)}}();Object.defineProperty(t,"__esModule",{value:!0}),t.BaseConnection=void 0;var n=o("eventemitter3"),r=function(s){function a(c,d,l){var u=s.call(this)||this;return u.peer=c,u.provider=d,u.options=l,u._open=!1,u.metadata=l.metadata,u}return i(a,s),Object.defineProperty(a.prototype,"open",{get:function(){return this._open},enumerable:!1,configurable:!0}),a}(n.EventEmitter);t.BaseConnection=r},{eventemitter3:"JJlS"}],dbHP:[function(o,e,t){"use strict";var i=this&&this.__extends||function(){var g=function(E,_){return(g=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(x,m){x.__proto__=m}||function(x,m){for(var f in m)Object.prototype.hasOwnProperty.call(m,f)&&(x[f]=m[f])})(E,_)};return function(E,_){if(typeof _!="function"&&_!==null)throw new TypeError("Class extends value "+String(_)+" is not a constructor or null");function x(){this.constructor=E}g(E,_),E.prototype=_===null?Object.create(_):(x.prototype=_.prototype,new x)}}(),n=this&&this.__assign||function(){return(n=Object.assign||function(g){for(var E,_=1,x=arguments.length;_<x;_++)for(var m in E=arguments[_])Object.prototype.hasOwnProperty.call(E,m)&&(g[m]=E[m]);return g}).apply(this,arguments)},r=this&&this.__values||function(g){var E=typeof Symbol=="function"&&Symbol.iterator,_=E&&g[E],x=0;if(_)return _.call(g);if(g&&typeof g.length=="number")return{next:function(){return g&&x>=g.length&&(g=void 0),{value:g&&g[x++],done:!g}}};throw new TypeError(E?"Object is not iterable.":"Symbol.iterator is not defined.")},s=this&&this.__importDefault||function(g){return g&&g.__esModule?g:{default:g}};Object.defineProperty(t,"__esModule",{value:!0}),t.MediaConnection=void 0;var a=o("./util"),c=s(o("./logger")),d=o("./negotiator"),l=o("./enums"),u=o("./baseconnection"),h=function(g){function E(_,x,m){var f=g.call(this,_,x,m)||this;return f._localStream=f.options._stream,f.connectionId=f.options.connectionId||E.ID_PREFIX+a.util.randomToken(),f._negotiator=new d.Negotiator(f),f._localStream&&f._negotiator.startConnection({_stream:f._localStream,originator:!0}),f}return i(E,g),Object.defineProperty(E.prototype,"type",{get:function(){return l.ConnectionType.Media},enumerable:!1,configurable:!0}),Object.defineProperty(E.prototype,"localStream",{get:function(){return this._localStream},enumerable:!1,configurable:!0}),Object.defineProperty(E.prototype,"remoteStream",{get:function(){return this._remoteStream},enumerable:!1,configurable:!0}),E.prototype.addStream=function(_){c.default.log("Receiving stream",_),this._remoteStream=_,g.prototype.emit.call(this,l.ConnectionEventType.Stream,_)},E.prototype.handleMessage=function(_){var x=_.type,m=_.payload;switch(_.type){case l.ServerMessageType.Answer:this._negotiator.handleSDP(x,m.sdp),this._open=!0;break;case l.ServerMessageType.Candidate:this._negotiator.handleCandidate(m.candidate);break;default:c.default.warn("Unrecognized message type:"+x+" from peer:"+this.peer)}},E.prototype.answer=function(_,x){var m,f;if(x===void 0&&(x={}),this._localStream)c.default.warn("Local stream already exists on this MediaConnection. Are you answering a call twice?");else{this._localStream=_,x&&x.sdpTransform&&(this.options.sdpTransform=x.sdpTransform),this._negotiator.startConnection(n(n({},this.options._payload),{_stream:_}));var p=this.provider._getMessages(this.connectionId);try{for(var b=r(p),w=b.next();!w.done;w=b.next()){var C=w.value;this.handleMessage(C)}}catch(T){m={error:T}}finally{try{w&&!w.done&&(f=b.return)&&f.call(b)}finally{if(m)throw m.error}}this._open=!0}},E.prototype.close=function(){this._negotiator&&(this._negotiator.cleanup(),this._negotiator=null),this._localStream=null,this._remoteStream=null,this.provider&&(this.provider._removeConnection(this),this.provider=null),this.options&&this.options._stream&&(this.options._stream=null),this.open&&(this._open=!1,g.prototype.emit.call(this,l.ConnectionEventType.Close))},E.ID_PREFIX="mc_",E}(u.BaseConnection);t.MediaConnection=h},{"./util":"BHXf","./logger":"WOs9","./negotiator":"HCdX","./enums":"ZRYf","./baseconnection":"tQFK"}],GGp6:[function(o,e,t){"use strict";var i=this&&this.__extends||function(){var c=function(d,l){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(u,h){u.__proto__=h}||function(u,h){for(var g in h)Object.prototype.hasOwnProperty.call(h,g)&&(u[g]=h[g])})(d,l)};return function(d,l){if(typeof l!="function"&&l!==null)throw new TypeError("Class extends value "+String(l)+" is not a constructor or null");function u(){this.constructor=d}c(d,l),d.prototype=l===null?Object.create(l):(u.prototype=l.prototype,new u)}}(),n=this&&this.__importDefault||function(c){return c&&c.__esModule?c:{default:c}};Object.defineProperty(t,"__esModule",{value:!0}),t.EncodingQueue=void 0;var r=o("eventemitter3"),s=n(o("./logger")),a=function(c){function d(){var l=c.call(this)||this;return l.fileReader=new FileReader,l._queue=[],l._processing=!1,l.fileReader.onload=function(u){l._processing=!1,u.target&&l.emit("done",u.target.result),l.doNextTask()},l.fileReader.onerror=function(u){s.default.error("EncodingQueue error:",u),l._processing=!1,l.destroy(),l.emit("error",u)},l}return i(d,c),Object.defineProperty(d.prototype,"queue",{get:function(){return this._queue},enumerable:!1,configurable:!0}),Object.defineProperty(d.prototype,"size",{get:function(){return this.queue.length},enumerable:!1,configurable:!0}),Object.defineProperty(d.prototype,"processing",{get:function(){return this._processing},enumerable:!1,configurable:!0}),d.prototype.enque=function(l){this.queue.push(l),this.processing||this.doNextTask()},d.prototype.destroy=function(){this.fileReader.abort(),this._queue=[]},d.prototype.doNextTask=function(){this.size!==0&&(this.processing||(this._processing=!0,this.fileReader.readAsArrayBuffer(this.queue.shift())))},d}(r.EventEmitter);t.EncodingQueue=a},{eventemitter3:"JJlS","./logger":"WOs9"}],GBTQ:[function(o,e,t){"use strict";var i=this&&this.__extends||function(){var g=function(E,_){return(g=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(x,m){x.__proto__=m}||function(x,m){for(var f in m)Object.prototype.hasOwnProperty.call(m,f)&&(x[f]=m[f])})(E,_)};return function(E,_){if(typeof _!="function"&&_!==null)throw new TypeError("Class extends value "+String(_)+" is not a constructor or null");function x(){this.constructor=E}g(E,_),E.prototype=_===null?Object.create(_):(x.prototype=_.prototype,new x)}}(),n=this&&this.__values||function(g){var E=typeof Symbol=="function"&&Symbol.iterator,_=E&&g[E],x=0;if(_)return _.call(g);if(g&&typeof g.length=="number")return{next:function(){return g&&x>=g.length&&(g=void 0),{value:g&&g[x++],done:!g}}};throw new TypeError(E?"Object is not iterable.":"Symbol.iterator is not defined.")},r=this&&this.__importDefault||function(g){return g&&g.__esModule?g:{default:g}};Object.defineProperty(t,"__esModule",{value:!0}),t.DataConnection=void 0;var s=o("./util"),a=r(o("./logger")),c=o("./negotiator"),d=o("./enums"),l=o("./baseconnection"),u=o("./encodingQueue"),h=function(g){function E(_,x,m){var f=g.call(this,_,x,m)||this;return f.stringify=JSON.stringify,f.parse=JSON.parse,f._buffer=[],f._bufferSize=0,f._buffering=!1,f._chunkedData={},f._encodingQueue=new u.EncodingQueue,f.connectionId=f.options.connectionId||E.ID_PREFIX+s.util.randomToken(),f.label=f.options.label||f.connectionId,f.serialization=f.options.serialization||d.SerializationType.Binary,f.reliable=!!f.options.reliable,f._encodingQueue.on("done",function(p){f._bufferedSend(p)}),f._encodingQueue.on("error",function(){a.default.error("DC#"+f.connectionId+": Error occured in encoding from blob to arraybuffer, close DC"),f.close()}),f._negotiator=new c.Negotiator(f),f._negotiator.startConnection(f.options._payload||{originator:!0}),f}return i(E,g),Object.defineProperty(E.prototype,"type",{get:function(){return d.ConnectionType.Data},enumerable:!1,configurable:!0}),Object.defineProperty(E.prototype,"dataChannel",{get:function(){return this._dc},enumerable:!1,configurable:!0}),Object.defineProperty(E.prototype,"bufferSize",{get:function(){return this._bufferSize},enumerable:!1,configurable:!0}),E.prototype.initialize=function(_){this._dc=_,this._configureDataChannel()},E.prototype._configureDataChannel=function(){var _=this;s.util.supports.binaryBlob&&!s.util.supports.reliable||(this.dataChannel.binaryType="arraybuffer"),this.dataChannel.onopen=function(){a.default.log("DC#"+_.connectionId+" dc connection success"),_._open=!0,_.emit(d.ConnectionEventType.Open)},this.dataChannel.onmessage=function(x){a.default.log("DC#"+_.connectionId+" dc onmessage:",x.data),_._handleDataMessage(x)},this.dataChannel.onclose=function(){a.default.log("DC#"+_.connectionId+" dc closed for:",_.peer),_.close()}},E.prototype._handleDataMessage=function(_){var x=this,m=_.data,f=m.constructor,p=m;if(this.serialization===d.SerializationType.Binary||this.serialization===d.SerializationType.BinaryUTF8){if(f===Blob)return void s.util.blobToArrayBuffer(m,function(w){var C=s.util.unpack(w);x.emit(d.ConnectionEventType.Data,C)});if(f===ArrayBuffer)p=s.util.unpack(m);else if(f===String){var b=s.util.binaryStringToArrayBuffer(m);p=s.util.unpack(b)}}else this.serialization===d.SerializationType.JSON&&(p=this.parse(m));p.__peerData?this._handleChunk(p):g.prototype.emit.call(this,d.ConnectionEventType.Data,p)},E.prototype._handleChunk=function(_){var x=_.__peerData,m=this._chunkedData[x]||{data:[],count:0,total:_.total};if(m.data[_.n]=_.data,m.count++,this._chunkedData[x]=m,m.total===m.count){delete this._chunkedData[x];var f=new Blob(m.data);this._handleDataMessage({data:f})}},E.prototype.close=function(){this._buffer=[],this._bufferSize=0,this._chunkedData={},this._negotiator&&(this._negotiator.cleanup(),this._negotiator=null),this.provider&&(this.provider._removeConnection(this),this.provider=null),this.dataChannel&&(this.dataChannel.onopen=null,this.dataChannel.onmessage=null,this.dataChannel.onclose=null,this._dc=null),this._encodingQueue&&(this._encodingQueue.destroy(),this._encodingQueue.removeAllListeners(),this._encodingQueue=null),this.open&&(this._open=!1,g.prototype.emit.call(this,d.ConnectionEventType.Close))},E.prototype.send=function(_,x){if(this.open)if(this.serialization===d.SerializationType.JSON)this._bufferedSend(this.stringify(_));else if(this.serialization===d.SerializationType.Binary||this.serialization===d.SerializationType.BinaryUTF8){var m=s.util.pack(_);if(!x&&m.size>s.util.chunkedMTU)return void this._sendChunks(m);s.util.supports.binaryBlob?this._bufferedSend(m):this._encodingQueue.enque(m)}else this._bufferedSend(_);else g.prototype.emit.call(this,d.ConnectionEventType.Error,new Error("Connection is not open. You should listen for the `open` event before sending messages."))},E.prototype._bufferedSend=function(_){!this._buffering&&this._trySend(_)||(this._buffer.push(_),this._bufferSize=this._buffer.length)},E.prototype._trySend=function(_){var x=this;if(!this.open)return!1;if(this.dataChannel.bufferedAmount>E.MAX_BUFFERED_AMOUNT)return this._buffering=!0,setTimeout(function(){x._buffering=!1,x._tryBuffer()},50),!1;try{this.dataChannel.send(_)}catch(m){return a.default.error("DC#:"+this.connectionId+" Error when sending:",m),this._buffering=!0,this.close(),!1}return!0},E.prototype._tryBuffer=function(){if(this.open&&this._buffer.length!==0){var _=this._buffer[0];this._trySend(_)&&(this._buffer.shift(),this._bufferSize=this._buffer.length,this._tryBuffer())}},E.prototype._sendChunks=function(_){var x,m,f=s.util.chunk(_);a.default.log("DC#"+this.connectionId+" Try to send "+f.length+" chunks...");try{for(var p=n(f),b=p.next();!b.done;b=p.next()){var w=b.value;this.send(w,!0)}}catch(C){x={error:C}}finally{try{b&&!b.done&&(m=p.return)&&m.call(p)}finally{if(x)throw x.error}}},E.prototype.handleMessage=function(_){var x=_.payload;switch(_.type){case d.ServerMessageType.Answer:this._negotiator.handleSDP(_.type,x.sdp);break;case d.ServerMessageType.Candidate:this._negotiator.handleCandidate(x.candidate);break;default:a.default.warn("Unrecognized message type:",_.type,"from peer:",this.peer)}},E.ID_PREFIX="dc_",E.MAX_BUFFERED_AMOUNT=8388608,E}(l.BaseConnection);t.DataConnection=h},{"./util":"BHXf","./logger":"WOs9","./negotiator":"HCdX","./enums":"ZRYf","./baseconnection":"tQFK","./encodingQueue":"GGp6"}],in7L:[function(o,e,t){"use strict";var i=this&&this.__awaiter||function(d,l,u,h){return new(u||(u=Promise))(function(g,E){function _(f){try{m(h.next(f))}catch(p){E(p)}}function x(f){try{m(h.throw(f))}catch(p){E(p)}}function m(f){var p;f.done?g(f.value):(p=f.value,p instanceof u?p:new u(function(b){b(p)})).then(_,x)}m((h=h.apply(d,l||[])).next())})},n=this&&this.__generator||function(d,l){var u,h,g,E,_={label:0,sent:function(){if(1&g[0])throw g[1];return g[1]},trys:[],ops:[]};return E={next:x(0),throw:x(1),return:x(2)},typeof Symbol=="function"&&(E[Symbol.iterator]=function(){return this}),E;function x(m){return function(f){return function(p){if(u)throw new TypeError("Generator is already executing.");for(;_;)try{if(u=1,h&&(g=2&p[0]?h.return:p[0]?h.throw||((g=h.return)&&g.call(h),0):h.next)&&!(g=g.call(h,p[1])).done)return g;switch(h=0,g&&(p=[2&p[0],g.value]),p[0]){case 0:case 1:g=p;break;case 4:return _.label++,{value:p[1],done:!1};case 5:_.label++,h=p[1],p=[0];continue;case 7:p=_.ops.pop(),_.trys.pop();continue;default:if(!(g=(g=_.trys).length>0&&g[g.length-1])&&(p[0]===6||p[0]===2)){_=0;continue}if(p[0]===3&&(!g||p[1]>g[0]&&p[1]<g[3])){_.label=p[1];break}if(p[0]===6&&_.label<g[1]){_.label=g[1],g=p;break}if(g&&_.label<g[2]){_.label=g[2],_.ops.push(p);break}g[2]&&_.ops.pop(),_.trys.pop();continue}p=l.call(d,_)}catch(b){p=[6,b],h=0}finally{u=g=0}if(5&p[0])throw p[1];return{value:p[0]?p[1]:void 0,done:!0}}([m,f])}}},r=this&&this.__importDefault||function(d){return d&&d.__esModule?d:{default:d}};Object.defineProperty(t,"__esModule",{value:!0}),t.API=void 0;var s=o("./util"),a=r(o("./logger")),c=function(){function d(l){this._options=l}return d.prototype._buildUrl=function(l){var u=(this._options.secure?"https://":"http://")+this._options.host+":"+this._options.port+this._options.path+this._options.key+"/"+l;return u+="?ts="+new Date().getTime()+Math.random()},d.prototype.retrieveId=function(){return i(this,void 0,Promise,function(){var l,u,h,g;return n(this,function(E){switch(E.label){case 0:l=this._buildUrl("id"),E.label=1;case 1:return E.trys.push([1,3,,4]),[4,fetch(l)];case 2:if((u=E.sent()).status!==200)throw new Error("Error. Status:"+u.status);return[2,u.text()];case 3:throw h=E.sent(),a.default.error("Error retrieving ID",h),g="",this._options.path==="/"&&this._options.host!==s.util.CLOUD_HOST&&(g=" If you passed in a `path` to your self-hosted PeerServer, you'll also need to pass in that same path when creating a new Peer."),new Error("Could not get an ID from the server."+g);case 4:return[2]}})})},d.prototype.listAllPeers=function(){return i(this,void 0,Promise,function(){var l,u,h,g;return n(this,function(E){switch(E.label){case 0:l=this._buildUrl("peers"),E.label=1;case 1:return E.trys.push([1,3,,4]),[4,fetch(l)];case 2:if((u=E.sent()).status!==200)throw u.status===401?(h="",h=this._options.host===s.util.CLOUD_HOST?"It looks like you're using the cloud server. You can email team@peerjs.com to enable peer listing for your API key.":"You need to enable `allow_discovery` on your self-hosted PeerServer to use this feature.",new Error("It doesn't look like you have permission to list peers IDs. "+h)):new Error("Error. Status:"+u.status);return[2,u.json()];case 3:throw g=E.sent(),a.default.error("Error retrieving list peers",g),new Error("Could not get list peers from the server."+g);case 4:return[2]}})})},d}();t.API=c},{"./util":"BHXf","./logger":"WOs9"}],Hxpd:[function(o,e,t){"use strict";var i=this&&this.__extends||function(){var f=function(p,b){return(f=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(w,C){w.__proto__=C}||function(w,C){for(var T in C)Object.prototype.hasOwnProperty.call(C,T)&&(w[T]=C[T])})(p,b)};return function(p,b){if(typeof b!="function"&&b!==null)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");function w(){this.constructor=p}f(p,b),p.prototype=b===null?Object.create(b):(w.prototype=b.prototype,new w)}}(),n=this&&this.__assign||function(){return(n=Object.assign||function(f){for(var p,b=1,w=arguments.length;b<w;b++)for(var C in p=arguments[b])Object.prototype.hasOwnProperty.call(p,C)&&(f[C]=p[C]);return f}).apply(this,arguments)},r=this&&this.__values||function(f){var p=typeof Symbol=="function"&&Symbol.iterator,b=p&&f[p],w=0;if(b)return b.call(f);if(f&&typeof f.length=="number")return{next:function(){return f&&w>=f.length&&(f=void 0),{value:f&&f[w++],done:!f}}};throw new TypeError(p?"Object is not iterable.":"Symbol.iterator is not defined.")},s=this&&this.__read||function(f,p){var b=typeof Symbol=="function"&&f[Symbol.iterator];if(!b)return f;var w,C,T=b.call(f),S=[];try{for(;(p===void 0||p-- >0)&&!(w=T.next()).done;)S.push(w.value)}catch(A){C={error:A}}finally{try{w&&!w.done&&(b=T.return)&&b.call(T)}finally{if(C)throw C.error}}return S},a=this&&this.__importDefault||function(f){return f&&f.__esModule?f:{default:f}};Object.defineProperty(t,"__esModule",{value:!0}),t.Peer=void 0;var c=o("eventemitter3"),d=o("./util"),l=a(o("./logger")),u=o("./socket"),h=o("./mediaconnection"),g=o("./dataconnection"),E=o("./enums"),_=o("./api"),x=function(){return function(){}}(),m=function(f){function p(b,w){var C,T=f.call(this)||this;return T._id=null,T._lastServerId=null,T._destroyed=!1,T._disconnected=!1,T._open=!1,T._connections=new Map,T._lostMessages=new Map,b&&b.constructor==Object?w=b:b&&(C=b.toString()),w=n({debug:0,host:d.util.CLOUD_HOST,port:d.util.CLOUD_PORT,path:"/",key:p.DEFAULT_KEY,token:d.util.randomToken(),config:d.util.defaultConfig},w),T._options=w,T._options.host==="/"&&(T._options.host=window.location.hostname),T._options.path&&(T._options.path[0]!=="/"&&(T._options.path="/"+T._options.path),T._options.path[T._options.path.length-1]!=="/"&&(T._options.path+="/")),T._options.secure===void 0&&T._options.host!==d.util.CLOUD_HOST?T._options.secure=d.util.isSecure():T._options.host==d.util.CLOUD_HOST&&(T._options.secure=!0),T._options.logFunction&&l.default.setLogFunction(T._options.logFunction),l.default.logLevel=T._options.debug||0,T._api=new _.API(w),T._socket=T._createServerConnection(),d.util.supports.audioVideo||d.util.supports.data?C&&!d.util.validateId(C)?(T._delayedAbort(E.PeerErrorType.InvalidID,'ID "'+C+'" is invalid'),T):(C?T._initialize(C):T._api.retrieveId().then(function(S){return T._initialize(S)}).catch(function(S){return T._abort(E.PeerErrorType.ServerError,S)}),T):(T._delayedAbort(E.PeerErrorType.BrowserIncompatible,"The current browser does not support WebRTC"),T)}return i(p,f),Object.defineProperty(p.prototype,"id",{get:function(){return this._id},enumerable:!1,configurable:!0}),Object.defineProperty(p.prototype,"options",{get:function(){return this._options},enumerable:!1,configurable:!0}),Object.defineProperty(p.prototype,"open",{get:function(){return this._open},enumerable:!1,configurable:!0}),Object.defineProperty(p.prototype,"socket",{get:function(){return this._socket},enumerable:!1,configurable:!0}),Object.defineProperty(p.prototype,"connections",{get:function(){var b,w,C=Object.create(null);try{for(var T=r(this._connections),S=T.next();!S.done;S=T.next()){var A=s(S.value,2),D=A[0],k=A[1];C[D]=k}}catch(j){b={error:j}}finally{try{S&&!S.done&&(w=T.return)&&w.call(T)}finally{if(b)throw b.error}}return C},enumerable:!1,configurable:!0}),Object.defineProperty(p.prototype,"destroyed",{get:function(){return this._destroyed},enumerable:!1,configurable:!0}),Object.defineProperty(p.prototype,"disconnected",{get:function(){return this._disconnected},enumerable:!1,configurable:!0}),p.prototype._createServerConnection=function(){var b=this,w=new u.Socket(this._options.secure,this._options.host,this._options.port,this._options.path,this._options.key,this._options.pingInterval);return w.on(E.SocketEventType.Message,function(C){b._handleMessage(C)}),w.on(E.SocketEventType.Error,function(C){b._abort(E.PeerErrorType.SocketError,C)}),w.on(E.SocketEventType.Disconnected,function(){b.disconnected||(b.emitError(E.PeerErrorType.Network,"Lost connection to server."),b.disconnect())}),w.on(E.SocketEventType.Close,function(){b.disconnected||b._abort(E.PeerErrorType.SocketClosed,"Underlying socket is already closed.")}),w},p.prototype._initialize=function(b){this._id=b,this.socket.start(b,this._options.token)},p.prototype._handleMessage=function(b){var w,C,T=b.type,S=b.payload,A=b.src;switch(T){case E.ServerMessageType.Open:this._lastServerId=this.id,this._open=!0,this.emit(E.PeerEventType.Open,this.id);break;case E.ServerMessageType.Error:this._abort(E.PeerErrorType.ServerError,S.msg);break;case E.ServerMessageType.IdTaken:this._abort(E.PeerErrorType.UnavailableID,'ID "'+this.id+'" is taken');break;case E.ServerMessageType.InvalidKey:this._abort(E.PeerErrorType.InvalidKey,'API KEY "'+this._options.key+'" is invalid');break;case E.ServerMessageType.Leave:l.default.log("Received leave message from "+A),this._cleanupPeer(A),this._connections.delete(A);break;case E.ServerMessageType.Expire:this.emitError(E.PeerErrorType.PeerUnavailable,"Could not connect to peer "+A);break;case E.ServerMessageType.Offer:var D=S.connectionId;if((z=this.getConnection(A,D))&&(z.close(),l.default.warn("Offer received for existing Connection ID:"+D)),S.type===E.ConnectionType.Media)z=new h.MediaConnection(A,this,{connectionId:D,_payload:S,metadata:S.metadata}),this._addConnection(A,z),this.emit(E.PeerEventType.Call,z);else{if(S.type!==E.ConnectionType.Data)return void l.default.warn("Received malformed connection type:"+S.type);z=new g.DataConnection(A,this,{connectionId:D,_payload:S,metadata:S.metadata,label:S.label,serialization:S.serialization,reliable:S.reliable}),this._addConnection(A,z),this.emit(E.PeerEventType.Connection,z)}var k=this._getMessages(D);try{for(var j=r(k),F=j.next();!F.done;F=j.next()){var W=F.value;z.handleMessage(W)}}catch(re){w={error:re}}finally{try{F&&!F.done&&(C=j.return)&&C.call(j)}finally{if(w)throw w.error}}break;default:if(!S)return void l.default.warn("You received a malformed message from "+A+" of type "+T);var z;D=S.connectionId,(z=this.getConnection(A,D))&&z.peerConnection?z.handleMessage(b):D?this._storeMessage(D,b):l.default.warn("You received an unrecognized message:",b)}},p.prototype._storeMessage=function(b,w){this._lostMessages.has(b)||this._lostMessages.set(b,[]),this._lostMessages.get(b).push(w)},p.prototype._getMessages=function(b){var w=this._lostMessages.get(b);return w?(this._lostMessages.delete(b),w):[]},p.prototype.connect=function(b,w){if(w===void 0&&(w={}),this.disconnected)return l.default.warn("You cannot connect to a new Peer because you called .disconnect() on this Peer and ended your connection with the server. You can create a new Peer to reconnect, or call reconnect on this peer if you believe its ID to still be available."),void this.emitError(E.PeerErrorType.Disconnected,"Cannot connect to new Peer after disconnecting from server.");var C=new g.DataConnection(b,this,w);return this._addConnection(b,C),C},p.prototype.call=function(b,w,C){if(C===void 0&&(C={}),this.disconnected)return l.default.warn("You cannot connect to a new Peer because you called .disconnect() on this Peer and ended your connection with the server. You can create a new Peer to reconnect."),void this.emitError(E.PeerErrorType.Disconnected,"Cannot connect to new Peer after disconnecting from server.");if(w){C._stream=w;var T=new h.MediaConnection(b,this,C);return this._addConnection(b,T),T}l.default.error("To call a peer, you must provide a stream from your browser's `getUserMedia`.")},p.prototype._addConnection=function(b,w){l.default.log("add connection "+w.type+":"+w.connectionId+" to peerId:"+b),this._connections.has(b)||this._connections.set(b,[]),this._connections.get(b).push(w)},p.prototype._removeConnection=function(b){var w=this._connections.get(b.peer);if(w){var C=w.indexOf(b);C!==-1&&w.splice(C,1)}this._lostMessages.delete(b.connectionId)},p.prototype.getConnection=function(b,w){var C,T,S=this._connections.get(b);if(!S)return null;try{for(var A=r(S),D=A.next();!D.done;D=A.next()){var k=D.value;if(k.connectionId===w)return k}}catch(j){C={error:j}}finally{try{D&&!D.done&&(T=A.return)&&T.call(A)}finally{if(C)throw C.error}}return null},p.prototype._delayedAbort=function(b,w){var C=this;setTimeout(function(){C._abort(b,w)},0)},p.prototype._abort=function(b,w){l.default.error("Aborting!"),this.emitError(b,w),this._lastServerId?this.disconnect():this.destroy()},p.prototype.emitError=function(b,w){var C;l.default.error("Error:",w),(C=typeof w=="string"?new Error(w):w).type=b,this.emit(E.PeerEventType.Error,C)},p.prototype.destroy=function(){this.destroyed||(l.default.log("Destroy peer with ID:"+this.id),this.disconnect(),this._cleanup(),this._destroyed=!0,this.emit(E.PeerEventType.Close))},p.prototype._cleanup=function(){var b,w;try{for(var C=r(this._connections.keys()),T=C.next();!T.done;T=C.next()){var S=T.value;this._cleanupPeer(S),this._connections.delete(S)}}catch(A){b={error:A}}finally{try{T&&!T.done&&(w=C.return)&&w.call(C)}finally{if(b)throw b.error}}this.socket.removeAllListeners()},p.prototype._cleanupPeer=function(b){var w,C,T=this._connections.get(b);if(T)try{for(var S=r(T),A=S.next();!A.done;A=S.next())A.value.close()}catch(D){w={error:D}}finally{try{A&&!A.done&&(C=S.return)&&C.call(S)}finally{if(w)throw w.error}}},p.prototype.disconnect=function(){if(!this.disconnected){var b=this.id;l.default.log("Disconnect peer with ID:"+b),this._disconnected=!0,this._open=!1,this.socket.close(),this._lastServerId=b,this._id=null,this.emit(E.PeerEventType.Disconnected,b)}},p.prototype.reconnect=function(){if(this.disconnected&&!this.destroyed)l.default.log("Attempting reconnection to server with ID "+this._lastServerId),this._disconnected=!1,this._initialize(this._lastServerId);else{if(this.destroyed)throw new Error("This peer cannot reconnect to the server. It has already been destroyed.");if(this.disconnected||this.open)throw new Error("Peer "+this.id+" cannot reconnect because it is not disconnected from the server!");l.default.error("In a hurry? We're still trying to make the initial connection!")}},p.prototype.listAllPeers=function(b){var w=this;b===void 0&&(b=function(C){}),this._api.listAllPeers().then(function(C){return b(C)}).catch(function(C){return w._abort(E.PeerErrorType.ServerError,C)})},p.DEFAULT_KEY="peerjs",p}(c.EventEmitter);t.Peer=m},{eventemitter3:"JJlS","./util":"BHXf","./logger":"WOs9","./socket":"wJlv","./mediaconnection":"dbHP","./dataconnection":"GBTQ","./enums":"ZRYf","./api":"in7L"}],iTK6:[function(o,e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.peerjs=void 0;var i=o("./util"),n=o("./peer");t.peerjs={Peer:n.Peer,util:i.util},t.default=n.Peer,window.peerjs=t.peerjs,window.Peer=n.Peer},{"./util":"BHXf","./peer":"Hxpd"}]},{},["iTK6"],null)});var xf=Fs((ZT,_f)=>{(function(){var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",e={rotl:function(t,i){return t<<i|t>>>32-i},rotr:function(t,i){return t<<32-i|t>>>i},endian:function(t){if(t.constructor==Number)return e.rotl(t,8)&16711935|e.rotl(t,24)&4278255360;for(var i=0;i<t.length;i++)t[i]=e.endian(t[i]);return t},randomBytes:function(t){for(var i=[];t>0;t--)i.push(Math.floor(Math.random()*256));return i},bytesToWords:function(t){for(var i=[],n=0,r=0;n<t.length;n++,r+=8)i[r>>>5]|=t[n]<<24-r%32;return i},wordsToBytes:function(t){for(var i=[],n=0;n<t.length*32;n+=8)i.push(t[n>>>5]>>>24-n%32&255);return i},bytesToHex:function(t){for(var i=[],n=0;n<t.length;n++)i.push((t[n]>>>4).toString(16)),i.push((t[n]&15).toString(16));return i.join("")},hexToBytes:function(t){for(var i=[],n=0;n<t.length;n+=2)i.push(parseInt(t.substr(n,2),16));return i},bytesToBase64:function(t){for(var i=[],n=0;n<t.length;n+=3)for(var r=t[n]<<16|t[n+1]<<8|t[n+2],s=0;s<4;s++)n*8+s*6<=t.length*8?i.push(o.charAt(r>>>6*(3-s)&63)):i.push("=");return i.join("")},base64ToBytes:function(t){t=t.replace(/[^A-Z0-9+\/]/ig,"");for(var i=[],n=0,r=0;n<t.length;r=++n%4)r!=0&&i.push((o.indexOf(t.charAt(n-1))&Math.pow(2,-2*r+8)-1)<<r*2|o.indexOf(t.charAt(n))>>>6-r*2);return i}};_f.exports=e})()});var Ld=Fs(($T,wf)=>{var Dd={utf8:{stringToBytes:function(o){return Dd.bin.stringToBytes(unescape(encodeURIComponent(o)))},bytesToString:function(o){return decodeURIComponent(escape(Dd.bin.bytesToString(o)))}},bin:{stringToBytes:function(o){for(var e=[],t=0;t<o.length;t++)e.push(o.charCodeAt(t)&255);return e},bytesToString:function(o){for(var e=[],t=0;t<o.length;t++)e.push(String.fromCharCode(o[t]));return e.join("")}}};wf.exports=Dd});var Tf=Fs((e0,Cf)=>{Cf.exports=function(o){return o!=null&&(Ef(o)||bv(o)||!!o._isBuffer)};function Ef(o){return!!o.constructor&&typeof o.constructor.isBuffer=="function"&&o.constructor.isBuffer(o)}function bv(o){return typeof o.readFloatLE=="function"&&typeof o.slice=="function"&&Ef(o.slice(0,0))}});var Sf=Fs((t0,Rf)=>{(function(){var o=xf(),e=Ld().utf8,t=Tf(),i=Ld().bin,n=function(r,s){r.constructor==String?s&&s.encoding==="binary"?r=i.stringToBytes(r):r=e.stringToBytes(r):t(r)?r=Array.prototype.slice.call(r,0):!Array.isArray(r)&&r.constructor!==Uint8Array&&(r=r.toString());for(var a=o.bytesToWords(r),c=r.length*8,d=1732584193,l=-271733879,u=-1732584194,h=271733878,g=0;g<a.length;g++)a[g]=(a[g]<<8|a[g]>>>24)&16711935|(a[g]<<24|a[g]>>>8)&4278255360;a[c>>>5]|=128<<c%32,a[(c+64>>>9<<4)+14]=c;for(var E=n._ff,_=n._gg,x=n._hh,m=n._ii,g=0;g<a.length;g+=16){var f=d,p=l,b=u,w=h;d=E(d,l,u,h,a[g+0],7,-680876936),h=E(h,d,l,u,a[g+1],12,-389564586),u=E(u,h,d,l,a[g+2],17,606105819),l=E(l,u,h,d,a[g+3],22,-1044525330),d=E(d,l,u,h,a[g+4],7,-176418897),h=E(h,d,l,u,a[g+5],12,1200080426),u=E(u,h,d,l,a[g+6],17,-1473231341),l=E(l,u,h,d,a[g+7],22,-45705983),d=E(d,l,u,h,a[g+8],7,1770035416),h=E(h,d,l,u,a[g+9],12,-1958414417),u=E(u,h,d,l,a[g+10],17,-42063),l=E(l,u,h,d,a[g+11],22,-1990404162),d=E(d,l,u,h,a[g+12],7,1804603682),h=E(h,d,l,u,a[g+13],12,-40341101),u=E(u,h,d,l,a[g+14],17,-1502002290),l=E(l,u,h,d,a[g+15],22,1236535329),d=_(d,l,u,h,a[g+1],5,-165796510),h=_(h,d,l,u,a[g+6],9,-1069501632),u=_(u,h,d,l,a[g+11],14,643717713),l=_(l,u,h,d,a[g+0],20,-373897302),d=_(d,l,u,h,a[g+5],5,-701558691),h=_(h,d,l,u,a[g+10],9,38016083),u=_(u,h,d,l,a[g+15],14,-660478335),l=_(l,u,h,d,a[g+4],20,-405537848),d=_(d,l,u,h,a[g+9],5,568446438),h=_(h,d,l,u,a[g+14],9,-1019803690),u=_(u,h,d,l,a[g+3],14,-187363961),l=_(l,u,h,d,a[g+8],20,1163531501),d=_(d,l,u,h,a[g+13],5,-1444681467),h=_(h,d,l,u,a[g+2],9,-51403784),u=_(u,h,d,l,a[g+7],14,1735328473),l=_(l,u,h,d,a[g+12],20,-1926607734),d=x(d,l,u,h,a[g+5],4,-378558),h=x(h,d,l,u,a[g+8],11,-2022574463),u=x(u,h,d,l,a[g+11],16,1839030562),l=x(l,u,h,d,a[g+14],23,-35309556),d=x(d,l,u,h,a[g+1],4,-1530992060),h=x(h,d,l,u,a[g+4],11,1272893353),u=x(u,h,d,l,a[g+7],16,-155497632),l=x(l,u,h,d,a[g+10],23,-1094730640),d=x(d,l,u,h,a[g+13],4,681279174),h=x(h,d,l,u,a[g+0],11,-358537222),u=x(u,h,d,l,a[g+3],16,-722521979),l=x(l,u,h,d,a[g+6],23,76029189),d=x(d,l,u,h,a[g+9],4,-640364487),h=x(h,d,l,u,a[g+12],11,-421815835),u=x(u,h,d,l,a[g+15],16,530742520),l=x(l,u,h,d,a[g+2],23,-995338651),d=m(d,l,u,h,a[g+0],6,-198630844),h=m(h,d,l,u,a[g+7],10,1126891415),u=m(u,h,d,l,a[g+14],15,-1416354905),l=m(l,u,h,d,a[g+5],21,-57434055),d=m(d,l,u,h,a[g+12],6,1700485571),h=m(h,d,l,u,a[g+3],10,-1894986606),u=m(u,h,d,l,a[g+10],15,-1051523),l=m(l,u,h,d,a[g+1],21,-2054922799),d=m(d,l,u,h,a[g+8],6,1873313359),h=m(h,d,l,u,a[g+15],10,-30611744),u=m(u,h,d,l,a[g+6],15,-1560198380),l=m(l,u,h,d,a[g+13],21,1309151649),d=m(d,l,u,h,a[g+4],6,-145523070),h=m(h,d,l,u,a[g+11],10,-1120210379),u=m(u,h,d,l,a[g+2],15,718787259),l=m(l,u,h,d,a[g+9],21,-343485551),d=d+f>>>0,l=l+p>>>0,u=u+b>>>0,h=h+w>>>0}return o.endian([d,l,u,h])};n._ff=function(r,s,a,c,d,l,u){var h=r+(s&a|~s&c)+(d>>>0)+u;return(h<<l|h>>>32-l)+s},n._gg=function(r,s,a,c,d,l,u){var h=r+(s&c|a&~c)+(d>>>0)+u;return(h<<l|h>>>32-l)+s},n._hh=function(r,s,a,c,d,l,u){var h=r+(s^a^c)+(d>>>0)+u;return(h<<l|h>>>32-l)+s},n._ii=function(r,s,a,c,d,l,u){var h=r+(a^(s|~c))+(d>>>0)+u;return(h<<l|h>>>32-l)+s},n._blocksize=16,n._digestsize=16,Rf.exports=function(r,s){if(r==null)throw new Error("Illegal argument "+r);var a=o.wordsToBytes(n(r,s));return s&&s.asBytes?a:s&&s.asString?i.bytesToString(a):o.bytesToHex(a)}})()});var Kc=()=>o=>o;var ki=class{_factory;_cache=[];_maxSize;_index=0;constructor(e,t){this._factory=e,this._maxSize=t}get(){let e=this._index++;return e>=this._cache.length&&(e>=this._maxSize?e=this._index=0:this._cache.push(this._factory())),this._cache[e]}},Jc=!1,qc=[];setTimeout(()=>{Jc&&console.log(qc)},100);function Zc(){return new URLSearchParams(window.location.search)}function P(o){Jc&&!qc.includes(o)&&qc.push(o);let e=Zc();if(e.has(o)){let t=e.get(o);if(t){let i=Number(t);return isNaN(i)?t:i}else return!0}return!1}Jc=P("help")===!0;function bo(o,e,t){o.has(e)?o.set(e,t.toString()):o.append(e,t.toString())}function hp(o,e){window.history.replaceState(null,o,"?"+e.toString())}function pp(o,e){return Math.floor(Math.random()*(e-o+1))+o}var dp=["smol","tiny","giant","interesting","smart","bright","dull","extreme","beautiful","pretty","dark","epic","salty","silly","funny","lame","lazy","loud","lucky","mad","mean","mighty","mysterious","nasty","odd","old","powerful","quiet","rapid","scary","shiny","shy","silly","smooth","sour","spicy","stupid","sweet","tasty","terrible","ugly","unusual","vast","wet","wild","witty","wrong","zany","zealous","zippy","zombie","zorro"],up=["cat","dog","mouse","pig","cow","horse","sheep","chicken","duck","goat","panda","tiger","lion","elephant","monkey","bird","fish","snake","frog","turtle","hamster","penguin","kangaroo","whale","dolphin","crocodile","snail","ant","bee","beetle","butterfly","dragon","eagle","fish","giraffe","lizard","panda","penguin","rabbit","snake","spider","tiger","zebra"];function fp(){let o=dp[Math.floor(Math.random()*dp.length)],e=up[Math.floor(Math.random()*up.length)];return o+"_"+e}function mp(o){return o=o.replace(/[^a-z0-9áéíóúñü \.,_-]/gim,""),o.trim()}function zn(o,e,t=!0,i=!1){if(e==null)return null;if(e.userData&&e.userData.guid===o)return e;if(e.guid==o)return e;if(i&&e.userData?.components){for(let n of e.userData.components)if(n.guid===o)return n}if(t){if(e.scenes)for(let n in e.scenes){let r=e.scenes[n],s=zn(o,r,t,i);if(s)return s}if(e.children)for(let n in e.children){let r=e.children[n],s=zn(o,r,t,i);if(s)return s}}}function Bs(o,e){if(o!=null&&typeof o=="object"){let t;Array.isArray(o)?t=[]:(t=Object.create(o),Object.assign(t,o));for(let i of Object.keys(o)){let n=o[i];e&&!e(o,i,n)?t[i]=n:n?.clone!==void 0&&typeof n.clone=="function"?t[i]=n.clone():t[i]=Bs(n,e)}return t}return o}function vo(o){return new Promise((e,t)=>{setTimeout(e,o)})}var Qc=P("debugsourcepath");function Mi(o,e){if(o===void 0)return Qc&&console.warn("getPath: source is undefined, returning uri",e),e;if(e.startsWith("http"))return Qc&&console.warn("getPath: uri is absolute, returning uri",e),e;let t=o.lastIndexOf("/");if(t>=0){let i=o.substring(0,t+1),n=e.lastIndexOf("/");return n>=0?i+=e.substring(n+1):i+=e,Qc&&console.log("getPath:",o,` - changed uri from
78
+ isUnifiedPlanSupported:`+this.isUnifiedPlanSupported()},n}())},{"./adapter":"sXtV"}],BHXf:[function(o,e,t){"use strict";var i=this&&this.__createBinding||(Object.create?function(u,l,d,h){h===void 0&&(h=d),Object.defineProperty(u,h,{enumerable:!0,get:function(){return l[d]}})}:function(u,l,d,h){h===void 0&&(h=d),u[h]=l[d]}),n=this&&this.__setModuleDefault||(Object.create?function(u,l){Object.defineProperty(u,"default",{enumerable:!0,value:l})}:function(u,l){u.default=l}),r=this&&this.__importStar||function(u){if(u&&u.__esModule)return u;var l={};if(u!=null)for(var d in u)d!=="default"&&Object.prototype.hasOwnProperty.call(u,d)&&i(l,u,d);return n(l,u),l};Object.defineProperty(t,"__esModule",{value:!0}),t.util=void 0;var s=r(o("peerjs-js-binarypack")),a=o("./supports"),c={iceServers:[{urls:"stun:stun.l.google.com:19302"},{urls:"turn:0.peerjs.com:3478",username:"peerjs",credential:"peerjsp"}],sdpSemantics:"unified-plan"};t.util=new(function(){function u(){this.CLOUD_HOST="0.peerjs.com",this.CLOUD_PORT=443,this.chunkedBrowsers={Chrome:1,chrome:1},this.chunkedMTU=16300,this.defaultConfig=c,this.browser=a.Supports.getBrowser(),this.browserVersion=a.Supports.getVersion(),this.supports=function(){var l,d={browser:a.Supports.isBrowserSupported(),webRTC:a.Supports.isWebRTCSupported(),audioVideo:!1,data:!1,binaryBlob:!1,reliable:!1};if(!d.webRTC)return d;try{l=new RTCPeerConnection(c),d.audioVideo=!0;var h=void 0;try{h=l.createDataChannel("_PEERJSTEST",{ordered:!0}),d.data=!0,d.reliable=!!h.ordered;try{h.binaryType="blob",d.binaryBlob=!a.Supports.isIOS}catch{}}catch{}finally{h&&h.close()}}catch{}finally{l&&l.close()}return d}(),this.pack=s.pack,this.unpack=s.unpack,this._dataCount=1}return u.prototype.noop=function(){},u.prototype.validateId=function(l){return!l||/^[A-Za-z0-9]+(?:[ _-][A-Za-z0-9]+)*$/.test(l)},u.prototype.chunk=function(l){for(var d=[],h=l.size,g=Math.ceil(h/t.util.chunkedMTU),E=0,_=0;_<h;){var x=Math.min(h,_+t.util.chunkedMTU),m=l.slice(_,x),f={__peerData:this._dataCount,n:E,data:m,total:g};d.push(f),_=x,E++}return this._dataCount++,d},u.prototype.blobToArrayBuffer=function(l,d){var h=new FileReader;return h.onload=function(g){g.target&&d(g.target.result)},h.readAsArrayBuffer(l),h},u.prototype.binaryStringToArrayBuffer=function(l){for(var d=new Uint8Array(l.length),h=0;h<l.length;h++)d[h]=255&l.charCodeAt(h);return d.buffer},u.prototype.randomToken=function(){return Math.random().toString(36).substr(2)},u.prototype.isSecure=function(){return location.protocol==="https:"},u}())},{"peerjs-js-binarypack":"kdPp","./supports":"I31f"}],JJlS:[function(o,e,t){"use strict";var i=Object.prototype.hasOwnProperty,n="~";function r(){}function s(l,d,h){this.fn=l,this.context=d,this.once=h||!1}function a(l,d,h,g,E){if(typeof h!="function")throw new TypeError("The listener must be a function");var _=new s(h,g||l,E),x=n?n+d:d;return l._events[x]?l._events[x].fn?l._events[x]=[l._events[x],_]:l._events[x].push(_):(l._events[x]=_,l._eventsCount++),l}function c(l,d){--l._eventsCount==0?l._events=new r:delete l._events[d]}function u(){this._events=new r,this._eventsCount=0}Object.create&&(r.prototype=Object.create(null),new r().__proto__||(n=!1)),u.prototype.eventNames=function(){var l,d,h=[];if(this._eventsCount===0)return h;for(d in l=this._events)i.call(l,d)&&h.push(n?d.slice(1):d);return Object.getOwnPropertySymbols?h.concat(Object.getOwnPropertySymbols(l)):h},u.prototype.listeners=function(l){var d=n?n+l:l,h=this._events[d];if(!h)return[];if(h.fn)return[h.fn];for(var g=0,E=h.length,_=new Array(E);g<E;g++)_[g]=h[g].fn;return _},u.prototype.listenerCount=function(l){var d=n?n+l:l,h=this._events[d];return h?h.fn?1:h.length:0},u.prototype.emit=function(l,d,h,g,E,_){var x=n?n+l:l;if(!this._events[x])return!1;var m,f,p=this._events[x],b=arguments.length;if(p.fn){switch(p.once&&this.removeListener(l,p.fn,void 0,!0),b){case 1:return p.fn.call(p.context),!0;case 2:return p.fn.call(p.context,d),!0;case 3:return p.fn.call(p.context,d,h),!0;case 4:return p.fn.call(p.context,d,h,g),!0;case 5:return p.fn.call(p.context,d,h,g,E),!0;case 6:return p.fn.call(p.context,d,h,g,E,_),!0}for(f=1,m=new Array(b-1);f<b;f++)m[f-1]=arguments[f];p.fn.apply(p.context,m)}else{var w,C=p.length;for(f=0;f<C;f++)switch(p[f].once&&this.removeListener(l,p[f].fn,void 0,!0),b){case 1:p[f].fn.call(p[f].context);break;case 2:p[f].fn.call(p[f].context,d);break;case 3:p[f].fn.call(p[f].context,d,h);break;case 4:p[f].fn.call(p[f].context,d,h,g);break;default:if(!m)for(w=1,m=new Array(b-1);w<b;w++)m[w-1]=arguments[w];p[f].fn.apply(p[f].context,m)}}return!0},u.prototype.on=function(l,d,h){return a(this,l,d,h,!1)},u.prototype.once=function(l,d,h){return a(this,l,d,h,!0)},u.prototype.removeListener=function(l,d,h,g){var E=n?n+l:l;if(!this._events[E])return this;if(!d)return c(this,E),this;var _=this._events[E];if(_.fn)_.fn!==d||g&&!_.once||h&&_.context!==h||c(this,E);else{for(var x=0,m=[],f=_.length;x<f;x++)(_[x].fn!==d||g&&!_[x].once||h&&_[x].context!==h)&&m.push(_[x]);m.length?this._events[E]=m.length===1?m[0]:m:c(this,E)}return this},u.prototype.removeAllListeners=function(l){var d;return l?(d=n?n+l:l,this._events[d]&&c(this,d)):(this._events=new r,this._eventsCount=0),this},u.prototype.off=u.prototype.removeListener,u.prototype.addListener=u.prototype.on,u.prefixed=n,u.EventEmitter=u,typeof e<"u"&&(e.exports=u)},{}],WOs9:[function(o,e,t){"use strict";var i=this&&this.__read||function(c,u){var l=typeof Symbol=="function"&&c[Symbol.iterator];if(!l)return c;var d,h,g=l.call(c),E=[];try{for(;(u===void 0||u-- >0)&&!(d=g.next()).done;)E.push(d.value)}catch(_){h={error:_}}finally{try{d&&!d.done&&(l=g.return)&&l.call(g)}finally{if(h)throw h.error}}return E},n=this&&this.__spreadArray||function(c,u){for(var l=0,d=u.length,h=c.length;l<d;l++,h++)c[h]=u[l];return c};Object.defineProperty(t,"__esModule",{value:!0}),t.LogLevel=void 0;var r,s="PeerJS: ";(function(c){c[c.Disabled=0]="Disabled",c[c.Errors=1]="Errors",c[c.Warnings=2]="Warnings",c[c.All=3]="All"})(r=t.LogLevel||(t.LogLevel={}));var a=function(){function c(){this._logLevel=r.Disabled}return Object.defineProperty(c.prototype,"logLevel",{get:function(){return this._logLevel},set:function(u){this._logLevel=u},enumerable:!1,configurable:!0}),c.prototype.log=function(){for(var u=[],l=0;l<arguments.length;l++)u[l]=arguments[l];this._logLevel>=r.All&&this._print.apply(this,n([r.All],i(u)))},c.prototype.warn=function(){for(var u=[],l=0;l<arguments.length;l++)u[l]=arguments[l];this._logLevel>=r.Warnings&&this._print.apply(this,n([r.Warnings],i(u)))},c.prototype.error=function(){for(var u=[],l=0;l<arguments.length;l++)u[l]=arguments[l];this._logLevel>=r.Errors&&this._print.apply(this,n([r.Errors],i(u)))},c.prototype.setLogFunction=function(u){this._print=u},c.prototype._print=function(u){for(var l=[],d=1;d<arguments.length;d++)l[d-1]=arguments[d];var h=n([s],i(l));for(var g in h)h[g]instanceof Error&&(h[g]="("+h[g].name+") "+h[g].message);u>=r.All?console.log.apply(console,n([],i(h))):u>=r.Warnings?console.warn.apply(console,n(["WARNING"],i(h))):u>=r.Errors&&console.error.apply(console,n(["ERROR"],i(h)))},c}();t.default=new a},{}],ZRYf:[function(o,e,t){"use strict";var i,n,r,s,a,c,u;Object.defineProperty(t,"__esModule",{value:!0}),t.ServerMessageType=t.SocketEventType=t.SerializationType=t.PeerErrorType=t.PeerEventType=t.ConnectionType=t.ConnectionEventType=void 0,function(l){l.Open="open",l.Stream="stream",l.Data="data",l.Close="close",l.Error="error",l.IceStateChanged="iceStateChanged"}(i=t.ConnectionEventType||(t.ConnectionEventType={})),function(l){l.Data="data",l.Media="media"}(n=t.ConnectionType||(t.ConnectionType={})),function(l){l.Open="open",l.Close="close",l.Connection="connection",l.Call="call",l.Disconnected="disconnected",l.Error="error"}(r=t.PeerEventType||(t.PeerEventType={})),function(l){l.BrowserIncompatible="browser-incompatible",l.Disconnected="disconnected",l.InvalidID="invalid-id",l.InvalidKey="invalid-key",l.Network="network",l.PeerUnavailable="peer-unavailable",l.SslUnavailable="ssl-unavailable",l.ServerError="server-error",l.SocketError="socket-error",l.SocketClosed="socket-closed",l.UnavailableID="unavailable-id",l.WebRTC="webrtc"}(s=t.PeerErrorType||(t.PeerErrorType={})),function(l){l.Binary="binary",l.BinaryUTF8="binary-utf8",l.JSON="json"}(a=t.SerializationType||(t.SerializationType={})),function(l){l.Message="message",l.Disconnected="disconnected",l.Error="error",l.Close="close"}(c=t.SocketEventType||(t.SocketEventType={})),function(l){l.Heartbeat="HEARTBEAT",l.Candidate="CANDIDATE",l.Offer="OFFER",l.Answer="ANSWER",l.Open="OPEN",l.Error="ERROR",l.IdTaken="ID-TAKEN",l.InvalidKey="INVALID-KEY",l.Leave="LEAVE",l.Expire="EXPIRE"}(u=t.ServerMessageType||(t.ServerMessageType={}))},{}],wJlv:[function(o,e,t){"use strict";var i=this&&this.__extends||function(){var h=function(g,E){return(h=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(_,x){_.__proto__=x}||function(_,x){for(var m in x)Object.prototype.hasOwnProperty.call(x,m)&&(_[m]=x[m])})(g,E)};return function(g,E){if(typeof E!="function"&&E!==null)throw new TypeError("Class extends value "+String(E)+" is not a constructor or null");function _(){this.constructor=g}h(g,E),g.prototype=E===null?Object.create(E):(_.prototype=E.prototype,new _)}}(),n=this&&this.__read||function(h,g){var E=typeof Symbol=="function"&&h[Symbol.iterator];if(!E)return h;var _,x,m=E.call(h),f=[];try{for(;(g===void 0||g-- >0)&&!(_=m.next()).done;)f.push(_.value)}catch(p){x={error:p}}finally{try{_&&!_.done&&(E=m.return)&&E.call(m)}finally{if(x)throw x.error}}return f},r=this&&this.__spreadArray||function(h,g){for(var E=0,_=g.length,x=h.length;E<_;E++,x++)h[x]=g[E];return h},s=this&&this.__values||function(h){var g=typeof Symbol=="function"&&Symbol.iterator,E=g&&h[g],_=0;if(E)return E.call(h);if(h&&typeof h.length=="number")return{next:function(){return h&&_>=h.length&&(h=void 0),{value:h&&h[_++],done:!h}}};throw new TypeError(g?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__importDefault||function(h){return h&&h.__esModule?h:{default:h}};Object.defineProperty(t,"__esModule",{value:!0}),t.Socket=void 0;var c=o("eventemitter3"),u=a(o("./logger")),l=o("./enums"),d=function(h){function g(E,_,x,m,f,p){p===void 0&&(p=5e3);var b=h.call(this)||this;b.pingInterval=p,b._disconnected=!0,b._messagesQueue=[];var w=E?"wss://":"ws://";return b._baseUrl=w+_+":"+x+m+"peerjs?key="+f,b}return i(g,h),g.prototype.start=function(E,_){var x=this;this._id=E;var m=this._baseUrl+"&id="+E+"&token="+_;!this._socket&&this._disconnected&&(this._socket=new WebSocket(m),this._disconnected=!1,this._socket.onmessage=function(f){var p;try{p=JSON.parse(f.data),u.default.log("Server message received:",p)}catch{return void u.default.log("Invalid server message",f.data)}x.emit(l.SocketEventType.Message,p)},this._socket.onclose=function(f){x._disconnected||(u.default.log("Socket closed.",f),x._cleanup(),x._disconnected=!0,x.emit(l.SocketEventType.Disconnected))},this._socket.onopen=function(){x._disconnected||(x._sendQueuedMessages(),u.default.log("Socket open"),x._scheduleHeartbeat())})},g.prototype._scheduleHeartbeat=function(){var E=this;this._wsPingTimer=setTimeout(function(){E._sendHeartbeat()},this.pingInterval)},g.prototype._sendHeartbeat=function(){if(this._wsOpen()){var E=JSON.stringify({type:l.ServerMessageType.Heartbeat});this._socket.send(E),this._scheduleHeartbeat()}else u.default.log("Cannot send heartbeat, because socket closed")},g.prototype._wsOpen=function(){return!!this._socket&&this._socket.readyState===1},g.prototype._sendQueuedMessages=function(){var E,_,x=r([],n(this._messagesQueue));this._messagesQueue=[];try{for(var m=s(x),f=m.next();!f.done;f=m.next()){var p=f.value;this.send(p)}}catch(b){E={error:b}}finally{try{f&&!f.done&&(_=m.return)&&_.call(m)}finally{if(E)throw E.error}}},g.prototype.send=function(E){if(!this._disconnected)if(this._id)if(E.type){if(this._wsOpen()){var _=JSON.stringify(E);this._socket.send(_)}}else this.emit(l.SocketEventType.Error,"Invalid message");else this._messagesQueue.push(E)},g.prototype.close=function(){this._disconnected||(this._cleanup(),this._disconnected=!0)},g.prototype._cleanup=function(){this._socket&&(this._socket.onopen=this._socket.onmessage=this._socket.onclose=null,this._socket.close(),this._socket=void 0),clearTimeout(this._wsPingTimer)},g}(c.EventEmitter);t.Socket=d},{eventemitter3:"JJlS","./logger":"WOs9","./enums":"ZRYf"}],HCdX:[function(o,e,t){"use strict";var i=this&&this.__assign||function(){return(i=Object.assign||function(d){for(var h,g=1,E=arguments.length;g<E;g++)for(var _ in h=arguments[g])Object.prototype.hasOwnProperty.call(h,_)&&(d[_]=h[_]);return d}).apply(this,arguments)},n=this&&this.__awaiter||function(d,h,g,E){return new(g||(g=Promise))(function(_,x){function m(b){try{p(E.next(b))}catch(w){x(w)}}function f(b){try{p(E.throw(b))}catch(w){x(w)}}function p(b){var w;b.done?_(b.value):(w=b.value,w instanceof g?w:new g(function(C){C(w)})).then(m,f)}p((E=E.apply(d,h||[])).next())})},r=this&&this.__generator||function(d,h){var g,E,_,x,m={label:0,sent:function(){if(1&_[0])throw _[1];return _[1]},trys:[],ops:[]};return x={next:f(0),throw:f(1),return:f(2)},typeof Symbol=="function"&&(x[Symbol.iterator]=function(){return this}),x;function f(p){return function(b){return function(w){if(g)throw new TypeError("Generator is already executing.");for(;m;)try{if(g=1,E&&(_=2&w[0]?E.return:w[0]?E.throw||((_=E.return)&&_.call(E),0):E.next)&&!(_=_.call(E,w[1])).done)return _;switch(E=0,_&&(w=[2&w[0],_.value]),w[0]){case 0:case 1:_=w;break;case 4:return m.label++,{value:w[1],done:!1};case 5:m.label++,E=w[1],w=[0];continue;case 7:w=m.ops.pop(),m.trys.pop();continue;default:if(!(_=(_=m.trys).length>0&&_[_.length-1])&&(w[0]===6||w[0]===2)){m=0;continue}if(w[0]===3&&(!_||w[1]>_[0]&&w[1]<_[3])){m.label=w[1];break}if(w[0]===6&&m.label<_[1]){m.label=_[1],_=w;break}if(_&&m.label<_[2]){m.label=_[2],m.ops.push(w);break}_[2]&&m.ops.pop(),m.trys.pop();continue}w=h.call(d,m)}catch(C){w=[6,C],E=0}finally{g=_=0}if(5&w[0])throw w[1];return{value:w[0]?w[1]:void 0,done:!0}}([p,b])}}},s=this&&this.__importDefault||function(d){return d&&d.__esModule?d:{default:d}};Object.defineProperty(t,"__esModule",{value:!0}),t.Negotiator=void 0;var a=o("./util"),c=s(o("./logger")),u=o("./enums"),l=function(){function d(h){this.connection=h}return d.prototype.startConnection=function(h){var g=this._startPeerConnection();if(this.connection.peerConnection=g,this.connection.type===u.ConnectionType.Media&&h._stream&&this._addTracksToConnection(h._stream,g),h.originator){if(this.connection.type===u.ConnectionType.Data){var E=this.connection,_={ordered:!!h.reliable},x=g.createDataChannel(E.label,_);E.initialize(x)}this._makeOffer()}else this.handleSDP("OFFER",h.sdp)},d.prototype._startPeerConnection=function(){c.default.log("Creating RTCPeerConnection.");var h=new RTCPeerConnection(this.connection.provider.options.config);return this._setupListeners(h),h},d.prototype._setupListeners=function(h){var g=this,E=this.connection.peer,_=this.connection.connectionId,x=this.connection.type,m=this.connection.provider;c.default.log("Listening for ICE candidates."),h.onicecandidate=function(f){f.candidate&&f.candidate.candidate&&(c.default.log("Received ICE candidates for "+E+":",f.candidate),m.socket.send({type:u.ServerMessageType.Candidate,payload:{candidate:f.candidate,type:x,connectionId:_},dst:E}))},h.oniceconnectionstatechange=function(){switch(h.iceConnectionState){case"failed":c.default.log("iceConnectionState is failed, closing connections to "+E),g.connection.emit(u.ConnectionEventType.Error,new Error("Negotiation of connection to "+E+" failed.")),g.connection.close();break;case"closed":c.default.log("iceConnectionState is closed, closing connections to "+E),g.connection.emit(u.ConnectionEventType.Error,new Error("Connection to "+E+" closed.")),g.connection.close();break;case"disconnected":c.default.log("iceConnectionState changed to disconnected on the connection with "+E);break;case"completed":h.onicecandidate=a.util.noop}g.connection.emit(u.ConnectionEventType.IceStateChanged,h.iceConnectionState)},c.default.log("Listening for data channel"),h.ondatachannel=function(f){c.default.log("Received data channel");var p=f.channel;m.getConnection(E,_).initialize(p)},c.default.log("Listening for remote stream"),h.ontrack=function(f){c.default.log("Received remote stream");var p=f.streams[0],b=m.getConnection(E,_);if(b.type===u.ConnectionType.Media){var w=b;g._addStreamToMediaConnection(p,w)}}},d.prototype.cleanup=function(){c.default.log("Cleaning up PeerConnection to "+this.connection.peer);var h=this.connection.peerConnection;if(h){this.connection.peerConnection=null,h.onicecandidate=h.oniceconnectionstatechange=h.ondatachannel=h.ontrack=function(){};var g=h.signalingState!=="closed",E=!1;if(this.connection.type===u.ConnectionType.Data){var _=this.connection.dataChannel;_&&(E=!!_.readyState&&_.readyState!=="closed")}(g||E)&&h.close()}},d.prototype._makeOffer=function(){return n(this,void 0,Promise,function(){var h,g,E,_,x,m,f;return r(this,function(p){switch(p.label){case 0:h=this.connection.peerConnection,g=this.connection.provider,p.label=1;case 1:return p.trys.push([1,7,,8]),[4,h.createOffer(this.connection.options.constraints)];case 2:E=p.sent(),c.default.log("Created offer."),this.connection.options.sdpTransform&&typeof this.connection.options.sdpTransform=="function"&&(E.sdp=this.connection.options.sdpTransform(E.sdp)||E.sdp),p.label=3;case 3:return p.trys.push([3,5,,6]),[4,h.setLocalDescription(E)];case 4:return p.sent(),c.default.log("Set localDescription:",E,"for:"+this.connection.peer),_={sdp:E,type:this.connection.type,connectionId:this.connection.connectionId,metadata:this.connection.metadata,browser:a.util.browser},this.connection.type===u.ConnectionType.Data&&(x=this.connection,_=i(i({},_),{label:x.label,reliable:x.reliable,serialization:x.serialization})),g.socket.send({type:u.ServerMessageType.Offer,payload:_,dst:this.connection.peer}),[3,6];case 5:return(m=p.sent())!="OperationError: Failed to set local offer sdp: Called in wrong state: kHaveRemoteOffer"&&(g.emitError(u.PeerErrorType.WebRTC,m),c.default.log("Failed to setLocalDescription, ",m)),[3,6];case 6:return[3,8];case 7:return f=p.sent(),g.emitError(u.PeerErrorType.WebRTC,f),c.default.log("Failed to createOffer, ",f),[3,8];case 8:return[2]}})})},d.prototype._makeAnswer=function(){return n(this,void 0,Promise,function(){var h,g,E,_,x;return r(this,function(m){switch(m.label){case 0:h=this.connection.peerConnection,g=this.connection.provider,m.label=1;case 1:return m.trys.push([1,7,,8]),[4,h.createAnswer()];case 2:E=m.sent(),c.default.log("Created answer."),this.connection.options.sdpTransform&&typeof this.connection.options.sdpTransform=="function"&&(E.sdp=this.connection.options.sdpTransform(E.sdp)||E.sdp),m.label=3;case 3:return m.trys.push([3,5,,6]),[4,h.setLocalDescription(E)];case 4:return m.sent(),c.default.log("Set localDescription:",E,"for:"+this.connection.peer),g.socket.send({type:u.ServerMessageType.Answer,payload:{sdp:E,type:this.connection.type,connectionId:this.connection.connectionId,browser:a.util.browser},dst:this.connection.peer}),[3,6];case 5:return _=m.sent(),g.emitError(u.PeerErrorType.WebRTC,_),c.default.log("Failed to setLocalDescription, ",_),[3,6];case 6:return[3,8];case 7:return x=m.sent(),g.emitError(u.PeerErrorType.WebRTC,x),c.default.log("Failed to create answer, ",x),[3,8];case 8:return[2]}})})},d.prototype.handleSDP=function(h,g){return n(this,void 0,Promise,function(){var E,_,x,m;return r(this,function(f){switch(f.label){case 0:g=new RTCSessionDescription(g),E=this.connection.peerConnection,_=this.connection.provider,c.default.log("Setting remote description",g),x=this,f.label=1;case 1:return f.trys.push([1,5,,6]),[4,E.setRemoteDescription(g)];case 2:return f.sent(),c.default.log("Set remoteDescription:"+h+" for:"+this.connection.peer),h!=="OFFER"?[3,4]:[4,x._makeAnswer()];case 3:f.sent(),f.label=4;case 4:return[3,6];case 5:return m=f.sent(),_.emitError(u.PeerErrorType.WebRTC,m),c.default.log("Failed to setRemoteDescription, ",m),[3,6];case 6:return[2]}})})},d.prototype.handleCandidate=function(h){return n(this,void 0,Promise,function(){var g,E,_,x,m,f;return r(this,function(p){switch(p.label){case 0:c.default.log("handleCandidate:",h),g=h.candidate,E=h.sdpMLineIndex,_=h.sdpMid,x=this.connection.peerConnection,m=this.connection.provider,p.label=1;case 1:return p.trys.push([1,3,,4]),[4,x.addIceCandidate(new RTCIceCandidate({sdpMid:_,sdpMLineIndex:E,candidate:g}))];case 2:return p.sent(),c.default.log("Added ICE candidate for:"+this.connection.peer),[3,4];case 3:return f=p.sent(),m.emitError(u.PeerErrorType.WebRTC,f),c.default.log("Failed to handleCandidate, ",f),[3,4];case 4:return[2]}})})},d.prototype._addTracksToConnection=function(h,g){if(c.default.log("add tracks from stream "+h.id+" to peer connection"),!g.addTrack)return c.default.error("Your browser does't support RTCPeerConnection#addTrack. Ignored.");h.getTracks().forEach(function(E){g.addTrack(E,h)})},d.prototype._addStreamToMediaConnection=function(h,g){c.default.log("add stream "+h.id+" to media connection "+g.connectionId),g.addStream(h)},d}();t.Negotiator=l},{"./util":"BHXf","./logger":"WOs9","./enums":"ZRYf"}],tQFK:[function(o,e,t){"use strict";var i=this&&this.__extends||function(){var s=function(a,c){return(s=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(u,l){u.__proto__=l}||function(u,l){for(var d in l)Object.prototype.hasOwnProperty.call(l,d)&&(u[d]=l[d])})(a,c)};return function(a,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");function u(){this.constructor=a}s(a,c),a.prototype=c===null?Object.create(c):(u.prototype=c.prototype,new u)}}();Object.defineProperty(t,"__esModule",{value:!0}),t.BaseConnection=void 0;var n=o("eventemitter3"),r=function(s){function a(c,u,l){var d=s.call(this)||this;return d.peer=c,d.provider=u,d.options=l,d._open=!1,d.metadata=l.metadata,d}return i(a,s),Object.defineProperty(a.prototype,"open",{get:function(){return this._open},enumerable:!1,configurable:!0}),a}(n.EventEmitter);t.BaseConnection=r},{eventemitter3:"JJlS"}],dbHP:[function(o,e,t){"use strict";var i=this&&this.__extends||function(){var g=function(E,_){return(g=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(x,m){x.__proto__=m}||function(x,m){for(var f in m)Object.prototype.hasOwnProperty.call(m,f)&&(x[f]=m[f])})(E,_)};return function(E,_){if(typeof _!="function"&&_!==null)throw new TypeError("Class extends value "+String(_)+" is not a constructor or null");function x(){this.constructor=E}g(E,_),E.prototype=_===null?Object.create(_):(x.prototype=_.prototype,new x)}}(),n=this&&this.__assign||function(){return(n=Object.assign||function(g){for(var E,_=1,x=arguments.length;_<x;_++)for(var m in E=arguments[_])Object.prototype.hasOwnProperty.call(E,m)&&(g[m]=E[m]);return g}).apply(this,arguments)},r=this&&this.__values||function(g){var E=typeof Symbol=="function"&&Symbol.iterator,_=E&&g[E],x=0;if(_)return _.call(g);if(g&&typeof g.length=="number")return{next:function(){return g&&x>=g.length&&(g=void 0),{value:g&&g[x++],done:!g}}};throw new TypeError(E?"Object is not iterable.":"Symbol.iterator is not defined.")},s=this&&this.__importDefault||function(g){return g&&g.__esModule?g:{default:g}};Object.defineProperty(t,"__esModule",{value:!0}),t.MediaConnection=void 0;var a=o("./util"),c=s(o("./logger")),u=o("./negotiator"),l=o("./enums"),d=o("./baseconnection"),h=function(g){function E(_,x,m){var f=g.call(this,_,x,m)||this;return f._localStream=f.options._stream,f.connectionId=f.options.connectionId||E.ID_PREFIX+a.util.randomToken(),f._negotiator=new u.Negotiator(f),f._localStream&&f._negotiator.startConnection({_stream:f._localStream,originator:!0}),f}return i(E,g),Object.defineProperty(E.prototype,"type",{get:function(){return l.ConnectionType.Media},enumerable:!1,configurable:!0}),Object.defineProperty(E.prototype,"localStream",{get:function(){return this._localStream},enumerable:!1,configurable:!0}),Object.defineProperty(E.prototype,"remoteStream",{get:function(){return this._remoteStream},enumerable:!1,configurable:!0}),E.prototype.addStream=function(_){c.default.log("Receiving stream",_),this._remoteStream=_,g.prototype.emit.call(this,l.ConnectionEventType.Stream,_)},E.prototype.handleMessage=function(_){var x=_.type,m=_.payload;switch(_.type){case l.ServerMessageType.Answer:this._negotiator.handleSDP(x,m.sdp),this._open=!0;break;case l.ServerMessageType.Candidate:this._negotiator.handleCandidate(m.candidate);break;default:c.default.warn("Unrecognized message type:"+x+" from peer:"+this.peer)}},E.prototype.answer=function(_,x){var m,f;if(x===void 0&&(x={}),this._localStream)c.default.warn("Local stream already exists on this MediaConnection. Are you answering a call twice?");else{this._localStream=_,x&&x.sdpTransform&&(this.options.sdpTransform=x.sdpTransform),this._negotiator.startConnection(n(n({},this.options._payload),{_stream:_}));var p=this.provider._getMessages(this.connectionId);try{for(var b=r(p),w=b.next();!w.done;w=b.next()){var C=w.value;this.handleMessage(C)}}catch(T){m={error:T}}finally{try{w&&!w.done&&(f=b.return)&&f.call(b)}finally{if(m)throw m.error}}this._open=!0}},E.prototype.close=function(){this._negotiator&&(this._negotiator.cleanup(),this._negotiator=null),this._localStream=null,this._remoteStream=null,this.provider&&(this.provider._removeConnection(this),this.provider=null),this.options&&this.options._stream&&(this.options._stream=null),this.open&&(this._open=!1,g.prototype.emit.call(this,l.ConnectionEventType.Close))},E.ID_PREFIX="mc_",E}(d.BaseConnection);t.MediaConnection=h},{"./util":"BHXf","./logger":"WOs9","./negotiator":"HCdX","./enums":"ZRYf","./baseconnection":"tQFK"}],GGp6:[function(o,e,t){"use strict";var i=this&&this.__extends||function(){var c=function(u,l){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,h){d.__proto__=h}||function(d,h){for(var g in h)Object.prototype.hasOwnProperty.call(h,g)&&(d[g]=h[g])})(u,l)};return function(u,l){if(typeof l!="function"&&l!==null)throw new TypeError("Class extends value "+String(l)+" is not a constructor or null");function d(){this.constructor=u}c(u,l),u.prototype=l===null?Object.create(l):(d.prototype=l.prototype,new d)}}(),n=this&&this.__importDefault||function(c){return c&&c.__esModule?c:{default:c}};Object.defineProperty(t,"__esModule",{value:!0}),t.EncodingQueue=void 0;var r=o("eventemitter3"),s=n(o("./logger")),a=function(c){function u(){var l=c.call(this)||this;return l.fileReader=new FileReader,l._queue=[],l._processing=!1,l.fileReader.onload=function(d){l._processing=!1,d.target&&l.emit("done",d.target.result),l.doNextTask()},l.fileReader.onerror=function(d){s.default.error("EncodingQueue error:",d),l._processing=!1,l.destroy(),l.emit("error",d)},l}return i(u,c),Object.defineProperty(u.prototype,"queue",{get:function(){return this._queue},enumerable:!1,configurable:!0}),Object.defineProperty(u.prototype,"size",{get:function(){return this.queue.length},enumerable:!1,configurable:!0}),Object.defineProperty(u.prototype,"processing",{get:function(){return this._processing},enumerable:!1,configurable:!0}),u.prototype.enque=function(l){this.queue.push(l),this.processing||this.doNextTask()},u.prototype.destroy=function(){this.fileReader.abort(),this._queue=[]},u.prototype.doNextTask=function(){this.size!==0&&(this.processing||(this._processing=!0,this.fileReader.readAsArrayBuffer(this.queue.shift())))},u}(r.EventEmitter);t.EncodingQueue=a},{eventemitter3:"JJlS","./logger":"WOs9"}],GBTQ:[function(o,e,t){"use strict";var i=this&&this.__extends||function(){var g=function(E,_){return(g=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(x,m){x.__proto__=m}||function(x,m){for(var f in m)Object.prototype.hasOwnProperty.call(m,f)&&(x[f]=m[f])})(E,_)};return function(E,_){if(typeof _!="function"&&_!==null)throw new TypeError("Class extends value "+String(_)+" is not a constructor or null");function x(){this.constructor=E}g(E,_),E.prototype=_===null?Object.create(_):(x.prototype=_.prototype,new x)}}(),n=this&&this.__values||function(g){var E=typeof Symbol=="function"&&Symbol.iterator,_=E&&g[E],x=0;if(_)return _.call(g);if(g&&typeof g.length=="number")return{next:function(){return g&&x>=g.length&&(g=void 0),{value:g&&g[x++],done:!g}}};throw new TypeError(E?"Object is not iterable.":"Symbol.iterator is not defined.")},r=this&&this.__importDefault||function(g){return g&&g.__esModule?g:{default:g}};Object.defineProperty(t,"__esModule",{value:!0}),t.DataConnection=void 0;var s=o("./util"),a=r(o("./logger")),c=o("./negotiator"),u=o("./enums"),l=o("./baseconnection"),d=o("./encodingQueue"),h=function(g){function E(_,x,m){var f=g.call(this,_,x,m)||this;return f.stringify=JSON.stringify,f.parse=JSON.parse,f._buffer=[],f._bufferSize=0,f._buffering=!1,f._chunkedData={},f._encodingQueue=new d.EncodingQueue,f.connectionId=f.options.connectionId||E.ID_PREFIX+s.util.randomToken(),f.label=f.options.label||f.connectionId,f.serialization=f.options.serialization||u.SerializationType.Binary,f.reliable=!!f.options.reliable,f._encodingQueue.on("done",function(p){f._bufferedSend(p)}),f._encodingQueue.on("error",function(){a.default.error("DC#"+f.connectionId+": Error occured in encoding from blob to arraybuffer, close DC"),f.close()}),f._negotiator=new c.Negotiator(f),f._negotiator.startConnection(f.options._payload||{originator:!0}),f}return i(E,g),Object.defineProperty(E.prototype,"type",{get:function(){return u.ConnectionType.Data},enumerable:!1,configurable:!0}),Object.defineProperty(E.prototype,"dataChannel",{get:function(){return this._dc},enumerable:!1,configurable:!0}),Object.defineProperty(E.prototype,"bufferSize",{get:function(){return this._bufferSize},enumerable:!1,configurable:!0}),E.prototype.initialize=function(_){this._dc=_,this._configureDataChannel()},E.prototype._configureDataChannel=function(){var _=this;s.util.supports.binaryBlob&&!s.util.supports.reliable||(this.dataChannel.binaryType="arraybuffer"),this.dataChannel.onopen=function(){a.default.log("DC#"+_.connectionId+" dc connection success"),_._open=!0,_.emit(u.ConnectionEventType.Open)},this.dataChannel.onmessage=function(x){a.default.log("DC#"+_.connectionId+" dc onmessage:",x.data),_._handleDataMessage(x)},this.dataChannel.onclose=function(){a.default.log("DC#"+_.connectionId+" dc closed for:",_.peer),_.close()}},E.prototype._handleDataMessage=function(_){var x=this,m=_.data,f=m.constructor,p=m;if(this.serialization===u.SerializationType.Binary||this.serialization===u.SerializationType.BinaryUTF8){if(f===Blob)return void s.util.blobToArrayBuffer(m,function(w){var C=s.util.unpack(w);x.emit(u.ConnectionEventType.Data,C)});if(f===ArrayBuffer)p=s.util.unpack(m);else if(f===String){var b=s.util.binaryStringToArrayBuffer(m);p=s.util.unpack(b)}}else this.serialization===u.SerializationType.JSON&&(p=this.parse(m));p.__peerData?this._handleChunk(p):g.prototype.emit.call(this,u.ConnectionEventType.Data,p)},E.prototype._handleChunk=function(_){var x=_.__peerData,m=this._chunkedData[x]||{data:[],count:0,total:_.total};if(m.data[_.n]=_.data,m.count++,this._chunkedData[x]=m,m.total===m.count){delete this._chunkedData[x];var f=new Blob(m.data);this._handleDataMessage({data:f})}},E.prototype.close=function(){this._buffer=[],this._bufferSize=0,this._chunkedData={},this._negotiator&&(this._negotiator.cleanup(),this._negotiator=null),this.provider&&(this.provider._removeConnection(this),this.provider=null),this.dataChannel&&(this.dataChannel.onopen=null,this.dataChannel.onmessage=null,this.dataChannel.onclose=null,this._dc=null),this._encodingQueue&&(this._encodingQueue.destroy(),this._encodingQueue.removeAllListeners(),this._encodingQueue=null),this.open&&(this._open=!1,g.prototype.emit.call(this,u.ConnectionEventType.Close))},E.prototype.send=function(_,x){if(this.open)if(this.serialization===u.SerializationType.JSON)this._bufferedSend(this.stringify(_));else if(this.serialization===u.SerializationType.Binary||this.serialization===u.SerializationType.BinaryUTF8){var m=s.util.pack(_);if(!x&&m.size>s.util.chunkedMTU)return void this._sendChunks(m);s.util.supports.binaryBlob?this._bufferedSend(m):this._encodingQueue.enque(m)}else this._bufferedSend(_);else g.prototype.emit.call(this,u.ConnectionEventType.Error,new Error("Connection is not open. You should listen for the `open` event before sending messages."))},E.prototype._bufferedSend=function(_){!this._buffering&&this._trySend(_)||(this._buffer.push(_),this._bufferSize=this._buffer.length)},E.prototype._trySend=function(_){var x=this;if(!this.open)return!1;if(this.dataChannel.bufferedAmount>E.MAX_BUFFERED_AMOUNT)return this._buffering=!0,setTimeout(function(){x._buffering=!1,x._tryBuffer()},50),!1;try{this.dataChannel.send(_)}catch(m){return a.default.error("DC#:"+this.connectionId+" Error when sending:",m),this._buffering=!0,this.close(),!1}return!0},E.prototype._tryBuffer=function(){if(this.open&&this._buffer.length!==0){var _=this._buffer[0];this._trySend(_)&&(this._buffer.shift(),this._bufferSize=this._buffer.length,this._tryBuffer())}},E.prototype._sendChunks=function(_){var x,m,f=s.util.chunk(_);a.default.log("DC#"+this.connectionId+" Try to send "+f.length+" chunks...");try{for(var p=n(f),b=p.next();!b.done;b=p.next()){var w=b.value;this.send(w,!0)}}catch(C){x={error:C}}finally{try{b&&!b.done&&(m=p.return)&&m.call(p)}finally{if(x)throw x.error}}},E.prototype.handleMessage=function(_){var x=_.payload;switch(_.type){case u.ServerMessageType.Answer:this._negotiator.handleSDP(_.type,x.sdp);break;case u.ServerMessageType.Candidate:this._negotiator.handleCandidate(x.candidate);break;default:a.default.warn("Unrecognized message type:",_.type,"from peer:",this.peer)}},E.ID_PREFIX="dc_",E.MAX_BUFFERED_AMOUNT=8388608,E}(l.BaseConnection);t.DataConnection=h},{"./util":"BHXf","./logger":"WOs9","./negotiator":"HCdX","./enums":"ZRYf","./baseconnection":"tQFK","./encodingQueue":"GGp6"}],in7L:[function(o,e,t){"use strict";var i=this&&this.__awaiter||function(u,l,d,h){return new(d||(d=Promise))(function(g,E){function _(f){try{m(h.next(f))}catch(p){E(p)}}function x(f){try{m(h.throw(f))}catch(p){E(p)}}function m(f){var p;f.done?g(f.value):(p=f.value,p instanceof d?p:new d(function(b){b(p)})).then(_,x)}m((h=h.apply(u,l||[])).next())})},n=this&&this.__generator||function(u,l){var d,h,g,E,_={label:0,sent:function(){if(1&g[0])throw g[1];return g[1]},trys:[],ops:[]};return E={next:x(0),throw:x(1),return:x(2)},typeof Symbol=="function"&&(E[Symbol.iterator]=function(){return this}),E;function x(m){return function(f){return function(p){if(d)throw new TypeError("Generator is already executing.");for(;_;)try{if(d=1,h&&(g=2&p[0]?h.return:p[0]?h.throw||((g=h.return)&&g.call(h),0):h.next)&&!(g=g.call(h,p[1])).done)return g;switch(h=0,g&&(p=[2&p[0],g.value]),p[0]){case 0:case 1:g=p;break;case 4:return _.label++,{value:p[1],done:!1};case 5:_.label++,h=p[1],p=[0];continue;case 7:p=_.ops.pop(),_.trys.pop();continue;default:if(!(g=(g=_.trys).length>0&&g[g.length-1])&&(p[0]===6||p[0]===2)){_=0;continue}if(p[0]===3&&(!g||p[1]>g[0]&&p[1]<g[3])){_.label=p[1];break}if(p[0]===6&&_.label<g[1]){_.label=g[1],g=p;break}if(g&&_.label<g[2]){_.label=g[2],_.ops.push(p);break}g[2]&&_.ops.pop(),_.trys.pop();continue}p=l.call(u,_)}catch(b){p=[6,b],h=0}finally{d=g=0}if(5&p[0])throw p[1];return{value:p[0]?p[1]:void 0,done:!0}}([m,f])}}},r=this&&this.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(t,"__esModule",{value:!0}),t.API=void 0;var s=o("./util"),a=r(o("./logger")),c=function(){function u(l){this._options=l}return u.prototype._buildUrl=function(l){var d=(this._options.secure?"https://":"http://")+this._options.host+":"+this._options.port+this._options.path+this._options.key+"/"+l;return d+="?ts="+new Date().getTime()+Math.random()},u.prototype.retrieveId=function(){return i(this,void 0,Promise,function(){var l,d,h,g;return n(this,function(E){switch(E.label){case 0:l=this._buildUrl("id"),E.label=1;case 1:return E.trys.push([1,3,,4]),[4,fetch(l)];case 2:if((d=E.sent()).status!==200)throw new Error("Error. Status:"+d.status);return[2,d.text()];case 3:throw h=E.sent(),a.default.error("Error retrieving ID",h),g="",this._options.path==="/"&&this._options.host!==s.util.CLOUD_HOST&&(g=" If you passed in a `path` to your self-hosted PeerServer, you'll also need to pass in that same path when creating a new Peer."),new Error("Could not get an ID from the server."+g);case 4:return[2]}})})},u.prototype.listAllPeers=function(){return i(this,void 0,Promise,function(){var l,d,h,g;return n(this,function(E){switch(E.label){case 0:l=this._buildUrl("peers"),E.label=1;case 1:return E.trys.push([1,3,,4]),[4,fetch(l)];case 2:if((d=E.sent()).status!==200)throw d.status===401?(h="",h=this._options.host===s.util.CLOUD_HOST?"It looks like you're using the cloud server. You can email team@peerjs.com to enable peer listing for your API key.":"You need to enable `allow_discovery` on your self-hosted PeerServer to use this feature.",new Error("It doesn't look like you have permission to list peers IDs. "+h)):new Error("Error. Status:"+d.status);return[2,d.json()];case 3:throw g=E.sent(),a.default.error("Error retrieving list peers",g),new Error("Could not get list peers from the server."+g);case 4:return[2]}})})},u}();t.API=c},{"./util":"BHXf","./logger":"WOs9"}],Hxpd:[function(o,e,t){"use strict";var i=this&&this.__extends||function(){var f=function(p,b){return(f=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(w,C){w.__proto__=C}||function(w,C){for(var T in C)Object.prototype.hasOwnProperty.call(C,T)&&(w[T]=C[T])})(p,b)};return function(p,b){if(typeof b!="function"&&b!==null)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");function w(){this.constructor=p}f(p,b),p.prototype=b===null?Object.create(b):(w.prototype=b.prototype,new w)}}(),n=this&&this.__assign||function(){return(n=Object.assign||function(f){for(var p,b=1,w=arguments.length;b<w;b++)for(var C in p=arguments[b])Object.prototype.hasOwnProperty.call(p,C)&&(f[C]=p[C]);return f}).apply(this,arguments)},r=this&&this.__values||function(f){var p=typeof Symbol=="function"&&Symbol.iterator,b=p&&f[p],w=0;if(b)return b.call(f);if(f&&typeof f.length=="number")return{next:function(){return f&&w>=f.length&&(f=void 0),{value:f&&f[w++],done:!f}}};throw new TypeError(p?"Object is not iterable.":"Symbol.iterator is not defined.")},s=this&&this.__read||function(f,p){var b=typeof Symbol=="function"&&f[Symbol.iterator];if(!b)return f;var w,C,T=b.call(f),S=[];try{for(;(p===void 0||p-- >0)&&!(w=T.next()).done;)S.push(w.value)}catch(A){C={error:A}}finally{try{w&&!w.done&&(b=T.return)&&b.call(T)}finally{if(C)throw C.error}}return S},a=this&&this.__importDefault||function(f){return f&&f.__esModule?f:{default:f}};Object.defineProperty(t,"__esModule",{value:!0}),t.Peer=void 0;var c=o("eventemitter3"),u=o("./util"),l=a(o("./logger")),d=o("./socket"),h=o("./mediaconnection"),g=o("./dataconnection"),E=o("./enums"),_=o("./api"),x=function(){return function(){}}(),m=function(f){function p(b,w){var C,T=f.call(this)||this;return T._id=null,T._lastServerId=null,T._destroyed=!1,T._disconnected=!1,T._open=!1,T._connections=new Map,T._lostMessages=new Map,b&&b.constructor==Object?w=b:b&&(C=b.toString()),w=n({debug:0,host:u.util.CLOUD_HOST,port:u.util.CLOUD_PORT,path:"/",key:p.DEFAULT_KEY,token:u.util.randomToken(),config:u.util.defaultConfig},w),T._options=w,T._options.host==="/"&&(T._options.host=window.location.hostname),T._options.path&&(T._options.path[0]!=="/"&&(T._options.path="/"+T._options.path),T._options.path[T._options.path.length-1]!=="/"&&(T._options.path+="/")),T._options.secure===void 0&&T._options.host!==u.util.CLOUD_HOST?T._options.secure=u.util.isSecure():T._options.host==u.util.CLOUD_HOST&&(T._options.secure=!0),T._options.logFunction&&l.default.setLogFunction(T._options.logFunction),l.default.logLevel=T._options.debug||0,T._api=new _.API(w),T._socket=T._createServerConnection(),u.util.supports.audioVideo||u.util.supports.data?C&&!u.util.validateId(C)?(T._delayedAbort(E.PeerErrorType.InvalidID,'ID "'+C+'" is invalid'),T):(C?T._initialize(C):T._api.retrieveId().then(function(S){return T._initialize(S)}).catch(function(S){return T._abort(E.PeerErrorType.ServerError,S)}),T):(T._delayedAbort(E.PeerErrorType.BrowserIncompatible,"The current browser does not support WebRTC"),T)}return i(p,f),Object.defineProperty(p.prototype,"id",{get:function(){return this._id},enumerable:!1,configurable:!0}),Object.defineProperty(p.prototype,"options",{get:function(){return this._options},enumerable:!1,configurable:!0}),Object.defineProperty(p.prototype,"open",{get:function(){return this._open},enumerable:!1,configurable:!0}),Object.defineProperty(p.prototype,"socket",{get:function(){return this._socket},enumerable:!1,configurable:!0}),Object.defineProperty(p.prototype,"connections",{get:function(){var b,w,C=Object.create(null);try{for(var T=r(this._connections),S=T.next();!S.done;S=T.next()){var A=s(S.value,2),D=A[0],k=A[1];C[D]=k}}catch(j){b={error:j}}finally{try{S&&!S.done&&(w=T.return)&&w.call(T)}finally{if(b)throw b.error}}return C},enumerable:!1,configurable:!0}),Object.defineProperty(p.prototype,"destroyed",{get:function(){return this._destroyed},enumerable:!1,configurable:!0}),Object.defineProperty(p.prototype,"disconnected",{get:function(){return this._disconnected},enumerable:!1,configurable:!0}),p.prototype._createServerConnection=function(){var b=this,w=new d.Socket(this._options.secure,this._options.host,this._options.port,this._options.path,this._options.key,this._options.pingInterval);return w.on(E.SocketEventType.Message,function(C){b._handleMessage(C)}),w.on(E.SocketEventType.Error,function(C){b._abort(E.PeerErrorType.SocketError,C)}),w.on(E.SocketEventType.Disconnected,function(){b.disconnected||(b.emitError(E.PeerErrorType.Network,"Lost connection to server."),b.disconnect())}),w.on(E.SocketEventType.Close,function(){b.disconnected||b._abort(E.PeerErrorType.SocketClosed,"Underlying socket is already closed.")}),w},p.prototype._initialize=function(b){this._id=b,this.socket.start(b,this._options.token)},p.prototype._handleMessage=function(b){var w,C,T=b.type,S=b.payload,A=b.src;switch(T){case E.ServerMessageType.Open:this._lastServerId=this.id,this._open=!0,this.emit(E.PeerEventType.Open,this.id);break;case E.ServerMessageType.Error:this._abort(E.PeerErrorType.ServerError,S.msg);break;case E.ServerMessageType.IdTaken:this._abort(E.PeerErrorType.UnavailableID,'ID "'+this.id+'" is taken');break;case E.ServerMessageType.InvalidKey:this._abort(E.PeerErrorType.InvalidKey,'API KEY "'+this._options.key+'" is invalid');break;case E.ServerMessageType.Leave:l.default.log("Received leave message from "+A),this._cleanupPeer(A),this._connections.delete(A);break;case E.ServerMessageType.Expire:this.emitError(E.PeerErrorType.PeerUnavailable,"Could not connect to peer "+A);break;case E.ServerMessageType.Offer:var D=S.connectionId;if((z=this.getConnection(A,D))&&(z.close(),l.default.warn("Offer received for existing Connection ID:"+D)),S.type===E.ConnectionType.Media)z=new h.MediaConnection(A,this,{connectionId:D,_payload:S,metadata:S.metadata}),this._addConnection(A,z),this.emit(E.PeerEventType.Call,z);else{if(S.type!==E.ConnectionType.Data)return void l.default.warn("Received malformed connection type:"+S.type);z=new g.DataConnection(A,this,{connectionId:D,_payload:S,metadata:S.metadata,label:S.label,serialization:S.serialization,reliable:S.reliable}),this._addConnection(A,z),this.emit(E.PeerEventType.Connection,z)}var k=this._getMessages(D);try{for(var j=r(k),F=j.next();!F.done;F=j.next()){var W=F.value;z.handleMessage(W)}}catch(re){w={error:re}}finally{try{F&&!F.done&&(C=j.return)&&C.call(j)}finally{if(w)throw w.error}}break;default:if(!S)return void l.default.warn("You received a malformed message from "+A+" of type "+T);var z;D=S.connectionId,(z=this.getConnection(A,D))&&z.peerConnection?z.handleMessage(b):D?this._storeMessage(D,b):l.default.warn("You received an unrecognized message:",b)}},p.prototype._storeMessage=function(b,w){this._lostMessages.has(b)||this._lostMessages.set(b,[]),this._lostMessages.get(b).push(w)},p.prototype._getMessages=function(b){var w=this._lostMessages.get(b);return w?(this._lostMessages.delete(b),w):[]},p.prototype.connect=function(b,w){if(w===void 0&&(w={}),this.disconnected)return l.default.warn("You cannot connect to a new Peer because you called .disconnect() on this Peer and ended your connection with the server. You can create a new Peer to reconnect, or call reconnect on this peer if you believe its ID to still be available."),void this.emitError(E.PeerErrorType.Disconnected,"Cannot connect to new Peer after disconnecting from server.");var C=new g.DataConnection(b,this,w);return this._addConnection(b,C),C},p.prototype.call=function(b,w,C){if(C===void 0&&(C={}),this.disconnected)return l.default.warn("You cannot connect to a new Peer because you called .disconnect() on this Peer and ended your connection with the server. You can create a new Peer to reconnect."),void this.emitError(E.PeerErrorType.Disconnected,"Cannot connect to new Peer after disconnecting from server.");if(w){C._stream=w;var T=new h.MediaConnection(b,this,C);return this._addConnection(b,T),T}l.default.error("To call a peer, you must provide a stream from your browser's `getUserMedia`.")},p.prototype._addConnection=function(b,w){l.default.log("add connection "+w.type+":"+w.connectionId+" to peerId:"+b),this._connections.has(b)||this._connections.set(b,[]),this._connections.get(b).push(w)},p.prototype._removeConnection=function(b){var w=this._connections.get(b.peer);if(w){var C=w.indexOf(b);C!==-1&&w.splice(C,1)}this._lostMessages.delete(b.connectionId)},p.prototype.getConnection=function(b,w){var C,T,S=this._connections.get(b);if(!S)return null;try{for(var A=r(S),D=A.next();!D.done;D=A.next()){var k=D.value;if(k.connectionId===w)return k}}catch(j){C={error:j}}finally{try{D&&!D.done&&(T=A.return)&&T.call(A)}finally{if(C)throw C.error}}return null},p.prototype._delayedAbort=function(b,w){var C=this;setTimeout(function(){C._abort(b,w)},0)},p.prototype._abort=function(b,w){l.default.error("Aborting!"),this.emitError(b,w),this._lastServerId?this.disconnect():this.destroy()},p.prototype.emitError=function(b,w){var C;l.default.error("Error:",w),(C=typeof w=="string"?new Error(w):w).type=b,this.emit(E.PeerEventType.Error,C)},p.prototype.destroy=function(){this.destroyed||(l.default.log("Destroy peer with ID:"+this.id),this.disconnect(),this._cleanup(),this._destroyed=!0,this.emit(E.PeerEventType.Close))},p.prototype._cleanup=function(){var b,w;try{for(var C=r(this._connections.keys()),T=C.next();!T.done;T=C.next()){var S=T.value;this._cleanupPeer(S),this._connections.delete(S)}}catch(A){b={error:A}}finally{try{T&&!T.done&&(w=C.return)&&w.call(C)}finally{if(b)throw b.error}}this.socket.removeAllListeners()},p.prototype._cleanupPeer=function(b){var w,C,T=this._connections.get(b);if(T)try{for(var S=r(T),A=S.next();!A.done;A=S.next())A.value.close()}catch(D){w={error:D}}finally{try{A&&!A.done&&(C=S.return)&&C.call(S)}finally{if(w)throw w.error}}},p.prototype.disconnect=function(){if(!this.disconnected){var b=this.id;l.default.log("Disconnect peer with ID:"+b),this._disconnected=!0,this._open=!1,this.socket.close(),this._lastServerId=b,this._id=null,this.emit(E.PeerEventType.Disconnected,b)}},p.prototype.reconnect=function(){if(this.disconnected&&!this.destroyed)l.default.log("Attempting reconnection to server with ID "+this._lastServerId),this._disconnected=!1,this._initialize(this._lastServerId);else{if(this.destroyed)throw new Error("This peer cannot reconnect to the server. It has already been destroyed.");if(this.disconnected||this.open)throw new Error("Peer "+this.id+" cannot reconnect because it is not disconnected from the server!");l.default.error("In a hurry? We're still trying to make the initial connection!")}},p.prototype.listAllPeers=function(b){var w=this;b===void 0&&(b=function(C){}),this._api.listAllPeers().then(function(C){return b(C)}).catch(function(C){return w._abort(E.PeerErrorType.ServerError,C)})},p.DEFAULT_KEY="peerjs",p}(c.EventEmitter);t.Peer=m},{eventemitter3:"JJlS","./util":"BHXf","./logger":"WOs9","./socket":"wJlv","./mediaconnection":"dbHP","./dataconnection":"GBTQ","./enums":"ZRYf","./api":"in7L"}],iTK6:[function(o,e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.peerjs=void 0;var i=o("./util"),n=o("./peer");t.peerjs={Peer:n.Peer,util:i.util},t.default=n.Peer,window.peerjs=t.peerjs,window.Peer=n.Peer},{"./util":"BHXf","./peer":"Hxpd"}]},{},["iTK6"],null)});var Ef=Bs((o0,wf)=>{(function(){var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",e={rotl:function(t,i){return t<<i|t>>>32-i},rotr:function(t,i){return t<<32-i|t>>>i},endian:function(t){if(t.constructor==Number)return e.rotl(t,8)&16711935|e.rotl(t,24)&4278255360;for(var i=0;i<t.length;i++)t[i]=e.endian(t[i]);return t},randomBytes:function(t){for(var i=[];t>0;t--)i.push(Math.floor(Math.random()*256));return i},bytesToWords:function(t){for(var i=[],n=0,r=0;n<t.length;n++,r+=8)i[r>>>5]|=t[n]<<24-r%32;return i},wordsToBytes:function(t){for(var i=[],n=0;n<t.length*32;n+=8)i.push(t[n>>>5]>>>24-n%32&255);return i},bytesToHex:function(t){for(var i=[],n=0;n<t.length;n++)i.push((t[n]>>>4).toString(16)),i.push((t[n]&15).toString(16));return i.join("")},hexToBytes:function(t){for(var i=[],n=0;n<t.length;n+=2)i.push(parseInt(t.substr(n,2),16));return i},bytesToBase64:function(t){for(var i=[],n=0;n<t.length;n+=3)for(var r=t[n]<<16|t[n+1]<<8|t[n+2],s=0;s<4;s++)n*8+s*6<=t.length*8?i.push(o.charAt(r>>>6*(3-s)&63)):i.push("=");return i.join("")},base64ToBytes:function(t){t=t.replace(/[^A-Z0-9+\/]/ig,"");for(var i=[],n=0,r=0;n<t.length;r=++n%4)r!=0&&i.push((o.indexOf(t.charAt(n-1))&Math.pow(2,-2*r+8)-1)<<r*2|o.indexOf(t.charAt(n))>>>6-r*2);return i}};wf.exports=e})()});var ju=Bs((s0,Cf)=>{var Lu={utf8:{stringToBytes:function(o){return Lu.bin.stringToBytes(unescape(encodeURIComponent(o)))},bytesToString:function(o){return decodeURIComponent(escape(Lu.bin.bytesToString(o)))}},bin:{stringToBytes:function(o){for(var e=[],t=0;t<o.length;t++)e.push(o.charCodeAt(t)&255);return e},bytesToString:function(o){for(var e=[],t=0;t<o.length;t++)e.push(String.fromCharCode(o[t]));return e.join("")}}};Cf.exports=Lu});var Sf=Bs((a0,Rf)=>{Rf.exports=function(o){return o!=null&&(Tf(o)||yv(o)||!!o._isBuffer)};function Tf(o){return!!o.constructor&&typeof o.constructor.isBuffer=="function"&&o.constructor.isBuffer(o)}function yv(o){return typeof o.readFloatLE=="function"&&typeof o.slice=="function"&&Tf(o.slice(0,0))}});var Of=Bs((l0,Pf)=>{(function(){var o=Ef(),e=ju().utf8,t=Sf(),i=ju().bin,n=function(r,s){r.constructor==String?s&&s.encoding==="binary"?r=i.stringToBytes(r):r=e.stringToBytes(r):t(r)?r=Array.prototype.slice.call(r,0):!Array.isArray(r)&&r.constructor!==Uint8Array&&(r=r.toString());for(var a=o.bytesToWords(r),c=r.length*8,u=1732584193,l=-271733879,d=-1732584194,h=271733878,g=0;g<a.length;g++)a[g]=(a[g]<<8|a[g]>>>24)&16711935|(a[g]<<24|a[g]>>>8)&4278255360;a[c>>>5]|=128<<c%32,a[(c+64>>>9<<4)+14]=c;for(var E=n._ff,_=n._gg,x=n._hh,m=n._ii,g=0;g<a.length;g+=16){var f=u,p=l,b=d,w=h;u=E(u,l,d,h,a[g+0],7,-680876936),h=E(h,u,l,d,a[g+1],12,-389564586),d=E(d,h,u,l,a[g+2],17,606105819),l=E(l,d,h,u,a[g+3],22,-1044525330),u=E(u,l,d,h,a[g+4],7,-176418897),h=E(h,u,l,d,a[g+5],12,1200080426),d=E(d,h,u,l,a[g+6],17,-1473231341),l=E(l,d,h,u,a[g+7],22,-45705983),u=E(u,l,d,h,a[g+8],7,1770035416),h=E(h,u,l,d,a[g+9],12,-1958414417),d=E(d,h,u,l,a[g+10],17,-42063),l=E(l,d,h,u,a[g+11],22,-1990404162),u=E(u,l,d,h,a[g+12],7,1804603682),h=E(h,u,l,d,a[g+13],12,-40341101),d=E(d,h,u,l,a[g+14],17,-1502002290),l=E(l,d,h,u,a[g+15],22,1236535329),u=_(u,l,d,h,a[g+1],5,-165796510),h=_(h,u,l,d,a[g+6],9,-1069501632),d=_(d,h,u,l,a[g+11],14,643717713),l=_(l,d,h,u,a[g+0],20,-373897302),u=_(u,l,d,h,a[g+5],5,-701558691),h=_(h,u,l,d,a[g+10],9,38016083),d=_(d,h,u,l,a[g+15],14,-660478335),l=_(l,d,h,u,a[g+4],20,-405537848),u=_(u,l,d,h,a[g+9],5,568446438),h=_(h,u,l,d,a[g+14],9,-1019803690),d=_(d,h,u,l,a[g+3],14,-187363961),l=_(l,d,h,u,a[g+8],20,1163531501),u=_(u,l,d,h,a[g+13],5,-1444681467),h=_(h,u,l,d,a[g+2],9,-51403784),d=_(d,h,u,l,a[g+7],14,1735328473),l=_(l,d,h,u,a[g+12],20,-1926607734),u=x(u,l,d,h,a[g+5],4,-378558),h=x(h,u,l,d,a[g+8],11,-2022574463),d=x(d,h,u,l,a[g+11],16,1839030562),l=x(l,d,h,u,a[g+14],23,-35309556),u=x(u,l,d,h,a[g+1],4,-1530992060),h=x(h,u,l,d,a[g+4],11,1272893353),d=x(d,h,u,l,a[g+7],16,-155497632),l=x(l,d,h,u,a[g+10],23,-1094730640),u=x(u,l,d,h,a[g+13],4,681279174),h=x(h,u,l,d,a[g+0],11,-358537222),d=x(d,h,u,l,a[g+3],16,-722521979),l=x(l,d,h,u,a[g+6],23,76029189),u=x(u,l,d,h,a[g+9],4,-640364487),h=x(h,u,l,d,a[g+12],11,-421815835),d=x(d,h,u,l,a[g+15],16,530742520),l=x(l,d,h,u,a[g+2],23,-995338651),u=m(u,l,d,h,a[g+0],6,-198630844),h=m(h,u,l,d,a[g+7],10,1126891415),d=m(d,h,u,l,a[g+14],15,-1416354905),l=m(l,d,h,u,a[g+5],21,-57434055),u=m(u,l,d,h,a[g+12],6,1700485571),h=m(h,u,l,d,a[g+3],10,-1894986606),d=m(d,h,u,l,a[g+10],15,-1051523),l=m(l,d,h,u,a[g+1],21,-2054922799),u=m(u,l,d,h,a[g+8],6,1873313359),h=m(h,u,l,d,a[g+15],10,-30611744),d=m(d,h,u,l,a[g+6],15,-1560198380),l=m(l,d,h,u,a[g+13],21,1309151649),u=m(u,l,d,h,a[g+4],6,-145523070),h=m(h,u,l,d,a[g+11],10,-1120210379),d=m(d,h,u,l,a[g+2],15,718787259),l=m(l,d,h,u,a[g+9],21,-343485551),u=u+f>>>0,l=l+p>>>0,d=d+b>>>0,h=h+w>>>0}return o.endian([u,l,d,h])};n._ff=function(r,s,a,c,u,l,d){var h=r+(s&a|~s&c)+(u>>>0)+d;return(h<<l|h>>>32-l)+s},n._gg=function(r,s,a,c,u,l,d){var h=r+(s&c|a&~c)+(u>>>0)+d;return(h<<l|h>>>32-l)+s},n._hh=function(r,s,a,c,u,l,d){var h=r+(s^a^c)+(u>>>0)+d;return(h<<l|h>>>32-l)+s},n._ii=function(r,s,a,c,u,l,d){var h=r+(a^(s|~c))+(u>>>0)+d;return(h<<l|h>>>32-l)+s},n._blocksize=16,n._digestsize=16,Pf.exports=function(r,s){if(r==null)throw new Error("Illegal argument "+r);var a=o.wordsToBytes(n(r,s));return s&&s.asBytes?a:s&&s.asString?i.bytesToString(a):o.bytesToHex(a)}})()});var Jc=()=>o=>o;var Mi=class{_factory;_cache=[];_maxSize;_index=0;constructor(e,t){this._factory=e,this._maxSize=t}get(){let e=this._index++;return e>=this._cache.length&&(e>=this._maxSize?e=this._index=0:this._cache.push(this._factory())),this._cache[e]}},Zc=!1,Yc=[];setTimeout(()=>{Zc&&console.log(Yc)},100);function $c(){return new URLSearchParams(window.location.search)}function P(o){Zc&&!Yc.includes(o)&&Yc.push(o);let e=$c();if(e.has(o)){let t=e.get(o);if(t){let i=Number(t);return isNaN(i)?t:i}else return!0}return!1}Zc=P("help")===!0;function vo(o,e,t){o.has(e)?o.set(e,t.toString()):o.append(e,t.toString())}function hp(o,e){window.history.replaceState(null,o,"?"+e.toString())}function pp(o,e){return Math.floor(Math.random()*(e-o+1))+o}var up=["smol","tiny","giant","interesting","smart","bright","dull","extreme","beautiful","pretty","dark","epic","salty","silly","funny","lame","lazy","loud","lucky","mad","mean","mighty","mysterious","nasty","odd","old","powerful","quiet","rapid","scary","shiny","shy","silly","smooth","sour","spicy","stupid","sweet","tasty","terrible","ugly","unusual","vast","wet","wild","witty","wrong","zany","zealous","zippy","zombie","zorro"],dp=["cat","dog","mouse","pig","cow","horse","sheep","chicken","duck","goat","panda","tiger","lion","elephant","monkey","bird","fish","snake","frog","turtle","hamster","penguin","kangaroo","whale","dolphin","crocodile","snail","ant","bee","beetle","butterfly","dragon","eagle","fish","giraffe","lizard","panda","penguin","rabbit","snake","spider","tiger","zebra"];function fp(){let o=up[Math.floor(Math.random()*up.length)],e=dp[Math.floor(Math.random()*dp.length)];return o+"_"+e}function mp(o){return o=o.replace(/[^a-z0-9áéíóúñü \.,_-]/gim,""),o.trim()}function Wn(o,e,t=!0,i=!1){if(e==null)return null;if(e.userData&&e.userData.guid===o)return e;if(e.guid==o)return e;if(i&&e.userData?.components){for(let n of e.userData.components)if(n.guid===o)return n}if(t){if(e.scenes)for(let n in e.scenes){let r=e.scenes[n],s=Wn(o,r,t,i);if(s)return s}if(e.children)for(let n in e.children){let r=e.children[n],s=Wn(o,r,t,i);if(s)return s}}}function Us(o,e){if(o!=null&&typeof o=="object"){let t;Array.isArray(o)?t=[]:(t=Object.create(o),Object.assign(t,o));for(let i of Object.keys(o)){let n=o[i];e&&!e(o,i,n)?t[i]=n:n?.clone!==void 0&&typeof n.clone=="function"?t[i]=n.clone():t[i]=Us(n,e)}return t}return o}function yo(o){return new Promise((e,t)=>{setTimeout(e,o)})}var qc=P("debugsourcepath");function Ii(o,e){if(o===void 0)return qc&&console.warn("getPath: source is undefined, returning uri",e),e;if(e.startsWith("http"))return qc&&console.warn("getPath: uri is absolute, returning uri",e),e;let t=o.lastIndexOf("/");if(t>=0){let i=o.substring(0,t+1),n=e.lastIndexOf("/");return n>=0?i+=e.substring(n+1):i+=e,qc&&console.log("getPath:",o,` - changed uri from
79
79
  `,e,`
80
- \u2192 `,i),i}return e}var Yc=class{subscribeWrite(e){this.writeCallbacks.push(e)}writeCallbacks=[];constructor(e,t){this._object=e,this._prop=t,this._wrapperProp=Symbol("$"+t),this.apply()}_applied=!1;_object;_prop;_wrapperProp;apply(){if(this._applied||!this._object)return;let e=this._object,t=this._prop;if(e[t]===void 0)return;this._applied=!0,e[this._wrapperProp]!==void 0&&console.warn("Watcher is being applied to an object that already has a wrapper property. This is not (yet) supported");let i=e[t];e[this._wrapperProp]=i,Object.defineProperty(e,t,{get:()=>e[this._wrapperProp],set:s=>{e[this._wrapperProp]=s;for(let a of this.writeCallbacks)a(s,this._prop)}})}revoke(){if(!this._applied||!this._object)return;this._applied=!1;let e=this._object,t=this._prop;Reflect.deleteProperty(e,t);let i=e[this._wrapperProp];e[t]=i,Reflect.deleteProperty(e,this._wrapperProp)}dispose(){this.revoke(),this.writeCallbacks.length=0,this._object=null}},dn=class{_watches=[];constructor(e,t){if(Array.isArray(t))for(let i of t)this._watches.push(new dn(e,i));else this._watches.push(new Yc(e,t))}subscribeWrite(e){for(let t of this._watches)t.subscribeWrite(e)}apply(){for(let e of this._watches)e.apply()}revoke(){for(let e of this._watches)e.revoke()}dispose(){for(let e of this._watches)e.dispose();this._watches.length=0}};function yo(){return typeof window.orientation<"u"||navigator.userAgent.indexOf("IEMobile")!==-1}function Fa(){return/WebXRViewer\//i.test(navigator.userAgent)}var qg=["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"];function _o(){return qg.includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document}function Ba(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}function lt(o=window.location.hostname){return new RegExp("[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}|localhost","gm").test(o)===!0}function gp(){return window.location.hostname.includes("glitch.me")}import{DepthTexture as Bv,WebGLRenderer as Uv}from"three";import*as Se from"three";import*as ni from"three";var un=null,Wn=null,Ii=null,$c=!1,id=!1,bp=null,yp="\u{1F4DC}",ed=P("console"),Yg=P("noerrors");ed&&nd();if(!Yg&&(ed||lt())){lt()&&console.log("Add the ?console query parameter to the url to show the debug console (on mobile it will automatically open for local development when your get errors)");let o=yo();if(o&&(_p(),xp(!0),o)){let e=document.querySelector("needle-engine");e?.addEventListener("enter-ar",()=>{if(ed||un||rd()>0){if(P("noerrors"))return;let t=e.getAROverlayContainer?.call(e),i=wp();i&&t&&t.appendChild(i)}}),e?.addEventListener("exit-ar",()=>{eb()})}}var td=Symbol("consoleParent");function nd(){if(un!==null){id=!0,un.showSwitch();return}xp()}function Kg(){un!==null&&(id=!1,un.hide(),un.hideSwitch())}function _p(){bp||(bp=setInterval(Jg,500))}var vp=0;function Jg(){let o=rd(),e=o!==vp;vp=o,e&&Zg()}function Zg(){nd(),Ii&&(Ii.setAttribute("error","true"),Ii.innerText="\u{1F92C}")}function $g(){Ii&&(Ii.removeAttribute("error"),Ii.innerText=yp)}function eb(){Wn&&Wn[td]&&Wn[td].appendChild(Wn)}function xp(o=!1){if(un||$c)return;$c=!0;let e=document.createElement("script");e.src="https://unpkg.com/vconsole@latest/dist/vconsole.min.js",e.onload=()=>{if($c=!1,id=!0,_p(),un=new window.VConsole,Wn=wp(),Wn&&(Wn[td]=Wn.parentElement),un.setSwitchPosition(20,10),Ii=tb(),Ii){Ii.innerText=yp,Ii.addEventListener("click",$g);let t=document.createElement("style"),i=40;t.innerHTML=`
80
+ \u2192 `,i),i}return e}var Kc=class{subscribeWrite(e){this.writeCallbacks.push(e)}writeCallbacks=[];constructor(e,t){this._object=e,this._prop=t,this._wrapperProp=Symbol("$"+t),this.apply()}_applied=!1;_object;_prop;_wrapperProp;apply(){if(this._applied||!this._object)return;let e=this._object,t=this._prop;if(e[t]===void 0)return;this._applied=!0,e[this._wrapperProp]!==void 0&&console.warn("Watcher is being applied to an object that already has a wrapper property. This is not (yet) supported");let i=e[t];e[this._wrapperProp]=i,Object.defineProperty(e,t,{get:()=>e[this._wrapperProp],set:s=>{e[this._wrapperProp]=s;for(let a of this.writeCallbacks)a(s,this._prop)}})}revoke(){if(!this._applied||!this._object)return;this._applied=!1;let e=this._object,t=this._prop;Reflect.deleteProperty(e,t);let i=e[this._wrapperProp];e[t]=i,Reflect.deleteProperty(e,this._wrapperProp)}dispose(){this.revoke(),this.writeCallbacks.length=0,this._object=null}},dn=class{_watches=[];constructor(e,t){if(Array.isArray(t))for(let i of t)this._watches.push(new dn(e,i));else this._watches.push(new Kc(e,t))}subscribeWrite(e){for(let t of this._watches)t.subscribeWrite(e)}apply(){for(let e of this._watches)e.apply()}revoke(){for(let e of this._watches)e.revoke()}dispose(){for(let e of this._watches)e.dispose();this._watches.length=0}};function _o(){return typeof window.orientation<"u"||navigator.userAgent.indexOf("IEMobile")!==-1}function Ba(){return/WebXRViewer\//i.test(navigator.userAgent)}var Kg=["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"];function xo(){return Kg.includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document}function Ua(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}function lt(o=window.location.hostname){return new RegExp("[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}|localhost","gm").test(o)===!0}function gp(){return window.location.hostname.includes("glitch.me")}import{DepthTexture as Gv,WebGLRenderer as Vv}from"three";import*as Se from"three";import*as ri from"three";var hn=null,Nn=null,Ai=null,eu=!1,nu=!1,bp=null,yp="\u{1F4DC}",tu=P("console"),Jg=P("noerrors");tu&&ru();if(!Jg&&(tu||lt())){lt()&&console.log("Add the ?console query parameter to the url to show the debug console (on mobile it will automatically open for local development when your get errors)");let o=_o();if(o&&(_p(),xp(!0),o)){let e=document.querySelector("needle-engine");e?.addEventListener("enter-ar",()=>{if(tu||hn||ou()>0){if(P("noerrors"))return;let t=e.getAROverlayContainer?.call(e),i=wp();i&&t&&t.appendChild(i)}}),e?.addEventListener("exit-ar",()=>{ib()})}}var iu=Symbol("consoleParent");function ru(){if(hn!==null){nu=!0,hn.showSwitch();return}xp()}function Zg(){hn!==null&&(nu=!1,hn.hide(),hn.hideSwitch())}function _p(){bp||(bp=setInterval($g,500))}var vp=0;function $g(){let o=ou(),e=o!==vp;vp=o,e&&eb()}function eb(){ru(),Ai&&(Ai.setAttribute("error","true"),Ai.innerText="\u{1F92C}")}function tb(){Ai&&(Ai.removeAttribute("error"),Ai.innerText=yp)}function ib(){Nn&&Nn[iu]&&Nn[iu].appendChild(Nn)}function xp(o=!1){if(hn||eu)return;eu=!0;let e=document.createElement("script");e.src="https://unpkg.com/vconsole@latest/dist/vconsole.min.js",e.onload=()=>{if(eu=!1,nu=!0,_p(),hn=new window.VConsole,Nn=wp(),Nn&&(Nn[iu]=Nn.parentElement),hn.setSwitchPosition(20,10),Ai=nb(),Ai){Ai.innerText=yp,Ai.addEventListener("click",tb);let t=document.createElement("style"),i=40;t.innerHTML=`
81
81
  #__vconsole .vc-switch {
82
82
  border: 1px solid rgba(255,255,255,.2);
83
83
  border-radius: 50%;
@@ -116,7 +116,7 @@ a=extmap-allow-mixed`)!==-1){var p=f.sdp.split(`
116
116
  transform: scale(1, 1);
117
117
  }
118
118
  }
119
- `,document.head.appendChild(t),o===!0&&Kg()}},document.body.appendChild(e)}function tb(){let o=document.querySelector("#__vconsole .vc-switch");return o||null}function wp(){let o=document.querySelector("#__vconsole");return o||null}function Fe(o,e=0){Gs(e,o)}function xo(o){Fe(o,1)}function Ua(){return lt()}var Ai=P("gizmos"),pe=P("debugextension");var Va=P("debugresolvedependencies"),ib=["/extensions/","extensions/"],nb=[{prefix:"/nodes/",dependencyName:"node"},{prefix:"/meshes/",dependencyName:"mesh"},{prefix:"/materials/",dependencyName:"material"},{prefix:"/textures/",dependencyName:"texture"},{prefix:"/animations/",dependencyName:"animation"},{prefix:"nodes/",dependencyName:"node"},{prefix:"meshes/",dependencyName:"mesh"},{prefix:"materials/",dependencyName:"material"},{prefix:"textures/",dependencyName:"texture"},{prefix:"animations/",dependencyName:"animation"}];async function wo(o,e){Va&&console.log(o,e);let t=[];od(nb,o,e,t);let i=await Promise.all(t);return typeof e=="string"&&i.length===1?i[0]:i}function od(o,e,t,i){if(typeof t=="object"&&t!==void 0&&t!==null)for(let n of Object.keys(t)){let r=t[n];if(typeof r=="string"){let s=Ep(e,r);if(s!==null)typeof s.then=="function"?i.push(s.then(a=>t[n]=a)):t[n]=s;else for(let a of o){let c=sd(a.prefix,r);if(c>=0){Va&&console.log(a,c,a.dependencyName),i.push(e?.getDependency(a.dependencyName,c).then(d=>(t[n]=d,d)));break}}}else if(Array.isArray(r))for(let s=0;s<r.length;s++){let a=r[s],c=Ep(e,a);if(c!==null){typeof c.then=="function"?i.push(c.then(d=>r[s]=d)):r[s]=c;continue}for(let d of o){let l=sd(d.prefix,a);if(l>=0){Va&&console.log(d,l,d.dependencyName),i.push(e?.getDependency(d.dependencyName,l).then(u=>r[s]=u));break}}typeof a=="object"&&od(o,e,a,i)}else typeof r=="object"&&od(o,e,r,i)}else typeof t=="string"&&rb(o,e,t,i)}function Ep(o,e){if(o&&o.plugins&&typeof e=="string"){for(let t of ib)if(e.startsWith(t)){let i=e.substring(t.length),n=i.indexOf("/");n>=0&&(i=i.substring(0,n));let r=o.plugins[i];if(pe&&console.log(i,r),typeof r?.resolve=="function"){let s=e.substring(t.length+i.length+1);return r.resolve(o,s)}break}}return null}function rb(o,e,t,i){for(let n of o){let r=sd(n.prefix,t);if(r>=0)return Va&&console.log(n,r,n.dependencyName),i.push(e?.getDependency(n.dependencyName,r).then(s=>s)),!0}return!1}function sd(o,e){if(typeof e=="string"&&e.startsWith(o)){let t=e.substring(o.length),i=Number.parseInt(t);if(i>=0)return i}return-1}var ad=class{_types={};add(e,t){let i=this._types[e];i===void 0?this._types[e]=t:i!==t&&console.warn("Type name exists multiple times in your project and may lead to runtime errors:",e)}get(e){return this._types[e]}},Cp=Symbol("BuiltInType"),O=new ad;var ld="NEEDLE_persistent_assets";function Tp(o){return o?.___persistentAsset===!0}var za=class{get name(){return ld}parser;constructor(e){this.parser=e}async afterRoot(e){if(!this.parser?.json?.extensions)return;let t=this.parser.json.extensions[ld];if(!t)return;pe&&console.log(t);let i=new Array;for(let n of t?.assets){let r=wo(this.parser,n);r&&i.push(r)}await Promise.all(i)}resolve(e,t){let i=Number.parseInt(t);if(i>=0){pe&&console.log(t);let n=e.json.extensions[ld];if(n){let r=n?.assets[i];if(r&&typeof r=="object"){r.___persistentAsset=!0;let s=r.__type;if(s){let a=O.get(s)}}return r}}return null}};var Sr=P("debugserializer"),cd=class{register(e,t){if(this.typeMap[e]!==void 0){if(this.typeMap[e]===t)return;console.warn("Type "+e+" is already registered",t,this.typeMap[e])}Sr&&console.log("Register type serializer for "+e,t),this.typeMap[e]=t}typeMap={};getSerializer(e){if(!!e)return this.typeMap[e]}getSerializerForConstructor(e,t=0){if(t>20)return;if(!e||!e.constructor){Sr&&console.log("invalid type");return}let i=e.name??e.constructor?.name;if(!i){Sr&&console.log("invalid name",i);return}let n=this.getSerializer(i);if(n!==void 0)return Sr&&console.log("FOUND "+i,e.name,e.constructor.name,n,this.typeMap),n;let r=Object.getPrototypeOf(e);if(!(r.prototype||r.constructor)){Sr&&console.warn("No prototype for "+i,e,e.name,e.prototype,e.constructor.name);return}let a=r.prototype??r.constructor;if(a!==e){let c=this.getSerializerForConstructor(a,++t);if(c){Sr&&console.log("FOUND "+a.constructor.name,a.name,a,c);let d=a.name??a.constructor.name;d==="Function"?console.error("Registering Function is not allowed, something went wrong",e,a,c):this.register(d,c)}return c}}},Na=new cd,Di=class{constructor(e){if(Array.isArray(e))for(let t of e)Na.register(t.name,this);else Na.register(e.name,this)}},Xa=class{isDevMode=lt();cache={};registerDefinedKeys(e,t){!this.isDevMode||this.cache[e]===void 0&&(this.cache[e]=Object.keys(t))}getDefinedKey(e,t){return this.cache[e]===void 0?!1:this.cache[e].includes(t)}},Eo=class{root;gltf;gltfId;object;target;nodeId;nodeToObject;objectToNode;context;path;type;implementationInformation;constructor(e){this.root=e}};function ud(o,e){let t=o.$serializedTypes;if(t===void 0)return null;let i={};for(let n in t){let r=o[n];if(r!=null&&typeof r=="object"){let s=Na.getSerializerForConstructor(r);if(s){i[n]=s.onSerialize(r,e);continue}}i[n]=r}return i.name=o.constructor.name,typeof o.guid=="string"&&(i.guid=o.guid),i}var Wa=[];function Rp(o,e){if(!o)return e;typeof o.$serializedTypes=="object"&&(e||(e={}),Object.assign(e,o.$serializedTypes));let t=Object.getPrototypeOf(o);return Rp(t,e)}function Vs(o,e,t){if(!o)return!1;if(t.target=o,o.onBeforeDeserialize!==void 0){let r=o.onBeforeDeserialize(e,t);if(typeof r=="boolean")return r}let i=Rp(o);if(e){if(typeof e.guid=="string"&&(o.guid=e.guid),i)for(let r in i){let s=i[r],a=e[r];if(!(o[r]!==void 0&&a===void 0))if(t.type=void 0,t.path=r,s===null)o[r]=a;else{let c=function(d){let u=d.type;return u?dd(a,u,t,void 0,o[r]):dd(a,d,t,void 0,o[r])};var n=c;if(o.onBeforeDeserializeMember!==void 0&&o.onBeforeDeserializeMember(r,a,t)===!0)continue;if(Array.isArray(s))for(let d=0;d<s.length;d++){let l=s[d],u=c(l);if(u!==void 0||d===s.length-1){o[r]=u;break}}else o[r]=c(s);Wa.length=0,o.onAfterDeserializeMember!==void 0&&o.onAfterDeserializeMember(r,a,t)}}ab(o,e)}return sb(o,e,t.implementationInformation),o.onAfterDeserialize!==void 0&&o.onAfterDeserialize(e,t),t.path=void 0,!0}var ob=P("noerrors");function sb(o,e,t){if(ob||!e||lt()===!1||!o||o.constructor&&o.constructor[Cp]===!0)return;let i=o.constructor?.name,n=Object.getOwnPropertyNames(e);for(let r of n){if(r==="sourceId")continue;let s=o[r],a=e[r];if(t?.getDefinedKey(i,r)!==!1&&a!=null)if(typeof a=="object"){if((s===void 0||!s.isObject3D)&&(typeof a.node=="number"||typeof a.guid=="string")){if(a.could_not_resolve)continue;s!==void 0&&Object.keys(s).length>1||(Fe(`<strong>Missing serialization for object reference!</strong>
119
+ `,document.head.appendChild(t),o===!0&&Zg()}},document.body.appendChild(e)}function nb(){let o=document.querySelector("#__vconsole .vc-switch");return o||null}function wp(){let o=document.querySelector("#__vconsole");return o||null}function Fe(o,e=0){Vs(e,o)}function wo(o){Fe(o,1)}function Ga(){return lt()}var Di=P("gizmos"),pe=P("debugextension");var za=P("debugresolvedependencies"),rb=["/extensions/","extensions/"],ob=[{prefix:"/nodes/",dependencyName:"node"},{prefix:"/meshes/",dependencyName:"mesh"},{prefix:"/materials/",dependencyName:"material"},{prefix:"/textures/",dependencyName:"texture"},{prefix:"/animations/",dependencyName:"animation"},{prefix:"nodes/",dependencyName:"node"},{prefix:"meshes/",dependencyName:"mesh"},{prefix:"materials/",dependencyName:"material"},{prefix:"textures/",dependencyName:"texture"},{prefix:"animations/",dependencyName:"animation"}];async function Eo(o,e){za&&console.log(o,e);let t=[];su(ob,o,e,t);let i=await Promise.all(t);return typeof e=="string"&&i.length===1?i[0]:i}function su(o,e,t,i){if(typeof t=="object"&&t!==void 0&&t!==null)for(let n of Object.keys(t)){let r=t[n];if(typeof r=="string"){let s=Ep(e,r);if(s!==null)typeof s.then=="function"?i.push(s.then(a=>t[n]=a)):t[n]=s;else for(let a of o){let c=au(a.prefix,r);if(c>=0){za&&console.log(a,c,a.dependencyName),i.push(e?.getDependency(a.dependencyName,c).then(u=>(t[n]=u,u)));break}}}else if(Array.isArray(r))for(let s=0;s<r.length;s++){let a=r[s],c=Ep(e,a);if(c!==null){typeof c.then=="function"?i.push(c.then(u=>r[s]=u)):r[s]=c;continue}for(let u of o){let l=au(u.prefix,a);if(l>=0){za&&console.log(u,l,u.dependencyName),i.push(e?.getDependency(u.dependencyName,l).then(d=>r[s]=d));break}}typeof a=="object"&&su(o,e,a,i)}else typeof r=="object"&&su(o,e,r,i)}else typeof t=="string"&&sb(o,e,t,i)}function Ep(o,e){if(o&&o.plugins&&typeof e=="string"){for(let t of rb)if(e.startsWith(t)){let i=e.substring(t.length),n=i.indexOf("/");n>=0&&(i=i.substring(0,n));let r=o.plugins[i];if(pe&&console.log(i,r),typeof r?.resolve=="function"){let s=e.substring(t.length+i.length+1);return r.resolve(o,s)}break}}return null}function sb(o,e,t,i){for(let n of o){let r=au(n.prefix,t);if(r>=0)return za&&console.log(n,r,n.dependencyName),i.push(e?.getDependency(n.dependencyName,r).then(s=>s)),!0}return!1}function au(o,e){if(typeof e=="string"&&e.startsWith(o)){let t=e.substring(o.length),i=Number.parseInt(t);if(i>=0)return i}return-1}var lu=class{_types={};add(e,t){let i=this._types[e];i===void 0?this._types[e]=t:i!==t&&console.warn("Type name exists multiple times in your project and may lead to runtime errors:",e)}get(e){return this._types[e]}},Cp=Symbol("BuiltInType"),O=new lu;var cu="NEEDLE_persistent_assets";function Tp(o){return o?.___persistentAsset===!0}var Wa=class{get name(){return cu}parser;constructor(e){this.parser=e}async afterRoot(e){if(!this.parser?.json?.extensions)return;let t=this.parser.json.extensions[cu];if(!t)return;pe&&console.log(t);let i=new Array;for(let n of t?.assets){let r=Eo(this.parser,n);r&&i.push(r)}await Promise.all(i)}resolve(e,t){let i=Number.parseInt(t);if(i>=0){pe&&console.log(t);let n=e.json.extensions[cu];if(n){let r=n?.assets[i];if(r&&typeof r=="object"){r.___persistentAsset=!0;let s=r.__type;if(s){let a=O.get(s)}}return r}}return null}};var Pr=P("debugserializer"),uu=class{register(e,t){if(this.typeMap[e]!==void 0){if(this.typeMap[e]===t)return;console.warn("Type "+e+" is already registered",t,this.typeMap[e])}Pr&&console.log("Register type serializer for "+e,t),this.typeMap[e]=t}typeMap={};getSerializer(e){if(!!e)return this.typeMap[e]}getSerializerForConstructor(e,t=0){if(t>20)return;if(!e||!e.constructor){Pr&&console.log("invalid type");return}let i=e.name??e.constructor?.name;if(!i){Pr&&console.log("invalid name",i);return}let n=this.getSerializer(i);if(n!==void 0)return Pr&&console.log("FOUND "+i,e.name,e.constructor.name,n,this.typeMap),n;let r=Object.getPrototypeOf(e);if(!(r.prototype||r.constructor)){Pr&&console.warn("No prototype for "+i,e,e.name,e.prototype,e.constructor.name);return}let a=r.prototype??r.constructor;if(a!==e){let c=this.getSerializerForConstructor(a,++t);if(c){Pr&&console.log("FOUND "+a.constructor.name,a.name,a,c);let u=a.name??a.constructor.name;u==="Function"?console.error("Registering Function is not allowed, something went wrong",e,a,c):this.register(u,c)}return c}}},Xa=new uu,Li=class{constructor(e){if(Array.isArray(e))for(let t of e)Xa.register(t.name,this);else Xa.register(e.name,this)}},Qa=class{isDevMode=lt();cache={};registerDefinedKeys(e,t){!this.isDevMode||this.cache[e]===void 0&&(this.cache[e]=Object.keys(t))}getDefinedKey(e,t){return this.cache[e]===void 0?!1:this.cache[e].includes(t)}},Co=class{root;gltf;gltfId;object;target;nodeId;nodeToObject;objectToNode;context;path;type;implementationInformation;constructor(e){this.root=e}};function hu(o,e){let t=o.$serializedTypes;if(t===void 0)return null;let i={};for(let n in t){let r=o[n];if(r!=null&&typeof r=="object"){let s=Xa.getSerializerForConstructor(r);if(s){i[n]=s.onSerialize(r,e);continue}}i[n]=r}return i.name=o.constructor.name,typeof o.guid=="string"&&(i.guid=o.guid),i}var Na=[];function Rp(o,e){if(!o)return e;typeof o.$serializedTypes=="object"&&(e||(e={}),Object.assign(e,o.$serializedTypes));let t=Object.getPrototypeOf(o);return Rp(t,e)}function zs(o,e,t){if(!o)return!1;if(t.target=o,o.onBeforeDeserialize!==void 0){let r=o.onBeforeDeserialize(e,t);if(typeof r=="boolean")return r}let i=Rp(o);if(e){if(typeof e.guid=="string"&&(o.guid=e.guid),i)for(let r in i){let s=i[r],a=e[r];if(!(o[r]!==void 0&&a===void 0))if(t.type=void 0,t.path=r,s===null)o[r]=a;else{let c=function(u){let d=u.type;return d?du(a,d,t,void 0,o[r]):du(a,u,t,void 0,o[r])};var n=c;if(o.onBeforeDeserializeMember!==void 0&&o.onBeforeDeserializeMember(r,a,t)===!0)continue;if(Array.isArray(s))for(let u=0;u<s.length;u++){let l=s[u],d=c(l);if(d!==void 0||u===s.length-1){o[r]=d;break}}else o[r]=c(s);Na.length=0,o.onAfterDeserializeMember!==void 0&&o.onAfterDeserializeMember(r,a,t)}}cb(o,e)}return lb(o,e,t.implementationInformation),o.onAfterDeserialize!==void 0&&o.onAfterDeserialize(e,t),t.path=void 0,!0}var ab=P("noerrors");function lb(o,e,t){if(ab||!e||lt()===!1||!o||o.constructor&&o.constructor[Cp]===!0)return;let i=o.constructor?.name,n=Object.getOwnPropertyNames(e);for(let r of n){if(r==="sourceId")continue;let s=o[r],a=e[r];if(t?.getDefinedKey(i,r)!==!1&&a!=null)if(typeof a=="object"){if((s===void 0||!s.isObject3D)&&(typeof a.node=="number"||typeof a.guid=="string")){if(a.could_not_resolve)continue;s!==void 0&&Object.keys(s).length>1||(Fe(`<strong>Missing serialization for object reference!</strong>
120
120
 
121
121
  Please change to:
122
122
  @serializable(Object3D)
@@ -130,12 +130,12 @@ Please change to:
130
130
  ${r}? : AssetReference;
131
131
 
132
132
  in script ${i}.ts
133
- <a href="https://docs.needle.tools/serializable" target="_blank">documentation</a>`,1),console.warn(i,r,o[r],o))}}function ab(o,e){for(let i of Object.keys(e)){let n=e[i];if(typeof n=="object"&&n!==null&&n!==void 0){let r=o[i];if(!r){Sr&&console.log(i,"is undefined on",o);continue}for(let s of Object.keys(n))r[s]===void 0&&t(n[s])&&!t(r)&&(r[s]=n[s])}}function t(i){switch(typeof i){case"number":case"string":case"boolean":return!0}return!1}}function dd(o,e,t,i,n){let r=typeof e=="function"&&e.prototype===void 0,s=e;if(r)try{if(s=e?.call(e,n),r=!1,s==null)return}catch(l){console.error("Error in callback",l,o)}if(t.type=s,!r&&n instanceof s)return n;if(n&&typeof n=="object"&&Tp(n)){if(n.__concreteInstance)return n.__concreteInstance;let l=n;if(!l.$serializedTypes&&s.prototype.$serializedTypes&&(l.$serializedTypes=s.prototype.$serializedTypes),l.$serializedTypes&&Vs(l,o,t),n&&s!==void 0)try{let u=new s;pe&&console.log("Create concrete instance for persistent asset",n,"instance:",u),Dt(u,n),n.__concreteInstance=u,n=u}catch(u){console.error("Error creating instance or creating values on instance",u,n,s)}return n}if(i||(i={serializer:Na.getSerializerForConstructor(s)}),Array.isArray(o)){let l=[];for(let u=0;u<o.length;u++){let h=o[u],g=dd(h,e,t,i,h);l.push(g)}return l}let a=i.serializer;if(a)return a.onDeserialize(o,t);let c;if(o&&(o.isMaterial||o.isTexture||o.isObject3D))c=o;else{if(o===void 0)return;c=new s(...lb(o))}let d=c;return d.$serializedTypes&&Vs(d,o,t),c}function lb(o){if(Wa.length=0,typeof o=="object"&&o!==null&&o!==void 0)for(let e of Object.keys(o))Wa.push(o[e]);return Wa}var Qa=Symbol("assigned component properties");function Dt(o,e,t){if(e==null||o==null)return;let i=!1;o[Qa]=!0;let n=o.constructor?.name??"unknown";t?.registerDefinedKeys(n,o);for(let r of Object.keys(e)){let s=cb(o,r);i&&s===void 0||(!s||s.writable===!0||s?.set!==void 0)&&(o[r]=e[r])}delete o[Qa]}function cb(o,e){let t;do t=Object.getOwnPropertyDescriptor(o,e);while(!t&&(o=Object.getPrototypeOf(o)));return t}var ii=P("debuginput"),zs=class{key;keyType;source;constructor(e){this.key=e.key,this.keyType=e.type,this.source=e}};var qa=class extends EventTarget{_doubleClickTimeThreshold=.2;_longPressTimeThreshold=1;get mousePosition(){return this._pointerPositions[0]}get mousePositionRC(){return this._pointerPositionsRC[0]}get mouseDown(){return this._pointerDown[0]}get mouseUp(){return this._pointerUp[0]}get mouseClick(){return this._pointerClick[0]}get mouseDoubleClick(){return this._pointerDoubleClick[0]}get mousePressed(){return this._pointerPressed[0]}get mouseWheelChanged(){return this.getMouseWheelChanged(0)}_specialCursorTrigger=0;setCursorPointer(){this._specialCursorTrigger+=1,this.context.domElement.style.cursor="pointer"}setCursorNormal(){this._specialCursorTrigger-=1,this._specialCursorTrigger=Math.max(0,this._specialCursorTrigger),this._specialCursorTrigger===0&&(this.context.domElement.style.cursor="default")}getPointerPressedCount(){let e=0;for(let t=0;t<this._pointerPressed.length;t++)this._pointerPressed[t]&&e++;return e}getPointerPosition(e){return e>=this._pointerPositions.length?null:this._pointerPositions[e]}getPointerPositionLastFrame(e){return e>=this._pointerPositionsLastFrame.length?null:this._pointerPositionsLastFrame[e]}getPointerPositionDelta(e){return e>=this._pointerPositionsDelta.length?null:this._pointerPositionsDelta[e]}getPointerPositionRC(e){return e>=this._pointerPositionsRC.length?null:this._pointerPositionsRC[e]}getPointerDown(e){return e>=this._pointerDown.length?!1:this._pointerDown[e]}getPointerUp(e){return e>=this._pointerUp.length?!1:this._pointerUp[e]}getPointerPressed(e){return e>=this._pointerPressed.length?!1:this._pointerPressed[e]}getPointerClicked(e){return e>=this._pointerClick.length?!1:this._pointerClick[e]}getPointerDoubleClicked(e){return e>=this._pointerDoubleClick.length?!1:this._pointerDoubleClick[e]}getPointerDownTime(e){return e>=this._pointerDownTime.length?-1:this._pointerDownTime[e]}getPointerUpTime(e){return e>=this._pointerUpTime.length?-1:this._pointerUpTime[e]}getPointerLongPress(e){return e>=this._pointerDownTime.length?!1:this.getPointerPressed(e)&&this.context.time.time-this._pointerDownTime[e]>this._longPressTimeThreshold}getIsMouse(e){return e<0||e>=this._pointerTypes.length?!1:this._pointerTypes[e]==="mouse"}getIsTouch(e){return e<0||e>=this._pointerTypes.length?!1:this._pointerTypes[e]==="touch"}getTouchesPressedCount(){let e=0;for(let t=0;t<this._pointerPressed.length;t++)this._pointerPressed[t]&&this.getIsTouch(t)&&e++;return e}getMouseWheelChanged(e=0){return e>=this._mouseWheelChanged.length?!1:this._mouseWheelChanged[e]}getMouseWheelDeltaY(e=0){return e>=this._mouseWheelDeltaY.length?0:this._mouseWheelDeltaY[e]}getPointerEvent(e){if(!(e>=this._pointerEvent.length))return this._pointerEvent[e]??void 0}*foreachPointerId(e){for(let t=0;t<this._pointerTypes.length;t++)if(this._pointerIsActive[t]){if(e!==void 0){let i=this._pointerTypes[t];if(Array.isArray(e)){let n=!1;for(let r of e)if(i===r){n=!0;break}if(!n)continue}else if(e!==i)continue}yield t}}*foreachTouchId(){for(let e=0;e<this._pointerTypes.length;e++)this._pointerTypes[e]==="touch"&&this._pointerIsActive[e]&&(yield e)}_pointerIsActive(e){return e<0?!1:this._pointerPressed[e]||this._pointerDown[e]||this._pointerUp[e]}context;_pointerDown=[!1];_pointerUp=[!1];_pointerClick=[!1];_pointerDoubleClick=[!1];_pointerPressed=[!1];_pointerPositions=[new ni.Vector2];_pointerPositionsLastFrame=[new ni.Vector2];_pointerPositionsDelta=[new ni.Vector2];_pointerPositionsRC=[new ni.Vector2];_pointerPositionDown=[new ni.Vector2];_pointerDownTime=[];_pointerUpTime=[];_pointerIds=[];_pointerTypes=[""];_mouseWheelChanged=[!1];_mouseWheelDeltaY=[0];_pointerEvent=[];getKeyDown(){for(let e in this.keysPressed){let t=this.keysPressed[e];if(t.startFrame===this.context.time.frameCount)return t.key}return null}getKeyPressed(){for(let e in this.keysPressed){let t=this.keysPressed[e];if(t.pressed)return t.key}return null}isKeyDown(e){return typeof e=="number"&&(console.warn("Use of keycode as number is not recommended, please use KeyCode or string instead"),e=String.fromCharCode(e)),this.context.application.isVisible&&this.context.application.hasFocus&&this.keysPressed[e]?.startFrame===this.context.time.frameCount&&this.keysPressed[e].pressed}isKeyUp(e){return typeof e=="number"&&(console.warn("Use of keycode as number is not recommended, please use KeyCode or string instead"),e=String.fromCharCode(e)),this.context.application.isVisible&&this.context.application.hasFocus&&this.keysPressed[e]?.frame===this.context.time.frameCount&&!this.keysPressed[e].pressed}isKeyPressed(e){return typeof e=="number"&&(e=String.fromCharCode(e)),this.context.application.isVisible&&this.context.application.hasFocus&&this.keysPressed[e]?.pressed}createPointerDown(e){ii&&Fe("Create Pointer down"),this.onDown(e)}createPointerMove(e){ii&&Fe("Create Pointer move"),this.onMove(e)}createPointerUp(e){ii&&Fe("Create Pointer up"),this.onUp(e)}convertScreenspaceToRaycastSpace(e){e.x=(e.x-this.context.domX)/this.context.domWidth*2-1,e.y=-((e.y-this.context.domY)/this.context.domHeight)*2+1}constructor(e){super(),this.context=e,this.context.post_render_callbacks.push(this.onEndOfFrame.bind(this)),window.addEventListener("touchstart",this.onTouchStart.bind(this),!1),window.addEventListener("touchmove",this.onTouchMove.bind(this),{passive:!0}),window.addEventListener("touchend",this.onTouchUp.bind(this),!1),window.addEventListener("mousedown",this.onMouseDown.bind(this),!1),window.addEventListener("mousemove",this.onMouseMove.bind(this),!1),window.addEventListener("mouseup",this.onMouseUp.bind(this),!1),window.addEventListener("wheel",this.onMouseWheel.bind(this),{passive:!0}),window.addEventListener("keydown",this.onKeyDown.bind(this),!1),window.addEventListener("keypress",this.onKeyPressed.bind(this),!1),window.addEventListener("keyup",this.onKeyUp.bind(this),!1),window.addEventListener("blur",this.onLostFocus.bind(this))}onLostFocus(){for(let e in this.keysPressed)this.keysPressed[e].pressed=!1}onEndOfFrame(){for(let e=0;e<this._pointerUp.length;e++)this._pointerUp[e]=!1;for(let e=0;e<this._pointerDown.length;e++)this._pointerDown[e]=!1;for(let e=0;e<this._pointerClick.length;e++)this._pointerClick[e]=!1;for(let e=0;e<this._pointerDoubleClick.length;e++)this._pointerDoubleClick[e]=!1;for(let e of this._pointerPositionsDelta)e.set(0,0);for(let e=0;e<this._mouseWheelChanged.length;e++)this._mouseWheelChanged[e]=!1;for(let e=0;e<this._mouseWheelDeltaY.length;e++)this._mouseWheelDeltaY[e]=0}keysPressed={};onKeyDown(e){if(!this.context.application.hasFocus)return;let t=this.keysPressed[e.key];t&&t.pressed||(this.keysPressed[e.key]={pressed:!0,frame:this.context.time.frameCount+1,startFrame:this.context.time.frameCount+1,key:e.key},this.onDispatchEvent("keydown",new zs(e)))}onKeyPressed(e){if(!this.context.application.hasFocus)return;let t=this.keysPressed[e.key];!t||(t.pressed=!0,t.frame=this.context.time.frameCount+1,this.onDispatchEvent("keypress",new zs(e)))}onKeyUp(e){if(!this.context.application.hasFocus)return;let t=this.keysPressed[e.key];!t||(t.pressed=!1,t.frame=this.context.time.frameCount+1,this.onDispatchEvent("keyup",new zs(e)))}onMouseWheel(e){this._mouseWheelDeltaY.length<=0&&this._mouseWheelDeltaY.push(0),this._mouseWheelChanged.length<=0&&this._mouseWheelChanged.push(!1),this._mouseWheelChanged[0]=!0;let t=this._mouseWheelDeltaY[0];this._mouseWheelDeltaY[0]=t+e.deltaY}onTouchStart(e){if(!(e.changedTouches.length<=0))for(let t=0;t<e.changedTouches.length;t++){let i=e.changedTouches[t],n=this.getPointerIndex(i.identifier);ii&&Fe(`touch start #${n}, identifier:${i.identifier}`);let r={button:n,clientX:i.clientX,clientY:i.clientY,pointerType:"touch",source:e};this.onDown(r)}}onTouchMove(e){if(!(e.changedTouches.length<=0))for(let t=0;t<e.changedTouches.length;t++){let i=e.changedTouches[t],r={button:this.getPointerIndex(i.identifier),clientX:i.clientX,clientY:i.clientY,pointerType:"touch",source:e};this.onMove(r)}}onTouchUp(e){if(!(e.changedTouches.length<=0))for(let t=0;t<e.changedTouches.length;t++){let i=e.changedTouches[t],n=this.getPointerIndex(i.identifier);ii&&Fe(`touch up #${n}, identifier:${i.identifier}`);let r={button:n,clientX:i.clientX,clientY:i.clientY,pointerType:"touch",source:e};this.onUp(r)}}onMouseDown(e){if(e.defaultPrevented)return;let t=e.button;this.onDown({button:t,clientX:e.clientX,clientY:e.clientY,pointerType:"mouse",source:e})}onMouseMove(e){if(e.defaultPrevented)return;let i={button:e.button,clientX:e.clientX,clientY:e.clientY,pointerType:"mouse",source:e,movementX:e.movementX,movementY:e.movementY};this.onMove(i)}onMouseUp(e){if(e.defaultPrevented)return;let t=e.button;this.onUp({button:t,clientX:e.clientX,clientY:e.clientY,pointerType:"mouse",source:e})}isInRect(e){if(this.context.isInXR)return!0;let t=this.context.domElement.getBoundingClientRect(),i=e.clientX,n=e.clientY,r=i>=t.x&&i<=t.right&&n>=t.y&&n<=t.bottom;return ii&&!r&&console.log("Not in rect",t,i,n),r}onDown(e){if(ii&&console.log(e.pointerType,"DOWN",e.button),!!this.isInRect(e)){for(this.setPointerState(e.button,this._pointerPressed,!0),this.setPointerState(e.button,this._pointerDown,!0),this.setPointerStateT(e.button,this._pointerEvent,e.source);e.button>=this._pointerTypes.length;)this._pointerTypes.push(e.pointerType);for(this._pointerTypes[e.button]=e.pointerType;e.button>=this._pointerPositionDown.length;)this._pointerPositionDown.push(new ni.Vector2);this._pointerPositionDown[e.button].set(e.clientX,e.clientY),e.button>=this._pointerDownTime.length&&this._pointerDownTime.push(0),this._pointerDownTime[e.button]=this.context.time.time,this.updatePointerPosition(e),this.onDispatchEvent("pointerdown",e)}}onMove(e){let t=this.getPointerPressed(e.button);t===!1&&!this.isInRect(e)||e.pointerType==="touch"&&!t||(ii&&console.log(e.pointerType,"MOVE",e.button),this.updatePointerPosition(e),this.setPointerStateT(e.button,this._pointerEvent,e.source),this.onDispatchEvent("pointermove",e))}onUp(e){if(this._pointerIds?.length>=e.button&&(this._pointerIds[e.button]=-1),!this._pointerPressed[e.button]){ii&&console.log(e.pointerType,"UP",e.button,"was not down");return}if(ii&&console.log(e.pointerType,"UP",e.button),this.setPointerState(e.button,this._pointerPressed,!1),this.setPointerStateT(e.button,this._pointerEvent,e.source),this.setPointerState(e.button,this._pointerUp,!0),this.updatePointerPosition(e),!this._pointerPositionDown[e.button]){ii&&xo("Received pointer up event without matching down event for button: "+e.button),console.warn("Received pointer up event without matching down event for button: "+e.button);return}let i=e.clientX-this._pointerPositionDown[e.button].x,n=e.clientY-this._pointerPositionDown[e.button].y;if(e.button>=this._pointerUpTime.length&&this._pointerUpTime.push(-99),Math.abs(i)<5&&Math.abs(n)<5){this.setPointerState(e.button,this._pointerClick,!0);let r=this._pointerUpTime[e.button],s=this.context.time.time-r;s<this._doubleClickTimeThreshold&&s>0&&this.setPointerState(e.button,this._pointerDoubleClick,!0)}this._pointerUpTime[e.button]=this.context.time.time,this.onDispatchEvent("pointerup",e)}updatePointerPosition(e){for(;e.button>=this._pointerPositions.length;)this._pointerPositions.push(new ni.Vector2);for(;e.button>=this._pointerPositionsLastFrame.length;)this._pointerPositionsLastFrame.push(new ni.Vector2);for(;e.button>=this._pointerPositionsDelta.length;)this._pointerPositionsDelta.push(new ni.Vector2);let t=this._pointerPositionsLastFrame[e.button];t.copy(this._pointerPositions[e.button]);let i=e.movementX!==void 0?e.movementX:e.clientX-t.x,n=e.movementY!==void 0?e.movementY:e.clientY-t.y;this._pointerPositionsDelta[e.button].set(i,n),this._pointerPositions[e.button].x=e.clientX,this._pointerPositions[e.button].y=e.clientY;let r=e.clientX,s=e.clientY;for(;e.button>=this._pointerPositionsRC.length;)this._pointerPositionsRC.push(new ni.Vector2);let a=this._pointerPositionsRC[e.button];a.set(r,s),this.convertScreenspaceToRaycastSpace(a)}getPointerIndex(e){let t=this._pointerIds,i=-1;for(let n=0;n<t.length;n++){if(t[n]===e)return n;i===-1&&t[n]===-1&&(i=n)}return i!==-1?(t[i]=e,i):(t.push(e),t.length-1)}setPointerState(e,t,i){for(;t.length<=e;)t.push(!1);t[e]=i}setPointerStateT(e,t,i){for(;t.length<=e;)t.push(null);t[e]=i}onDispatchEvent(e,t){let i=G.Current;try{G.Current=this.context;let n=new Event(e);Dt(n,t),this.dispatchEvent(n)}finally{G.Current=i}}};import{Box3 as Jb,BufferAttribute as mf,BufferGeometry as Zb,Layers as Sd,LineBasicMaterial as $b,LineSegments as ev,Matrix4 as tv,Quaternion as iv,Raycaster as nv,Sphere as rv,Vector2 as ov,Vector3 as Ed}from"three";import*as fe from"three";var hd=class{random(){return Math.random()}clamp(e,t,i){return e<t?t:e>i?i:e}clamp01(e){return this.clamp(e,0,1)}lerp(e,t,i){return i=i<0?0:i,i=i>1?1:i,e+(t-e)*i}inverseLerp(e,t,i){return(i-e)/(t-e)}remap(e,t,i,n,r){return n+(r-n)*(e-t)/(i-t)}moveTowards(e,t,i){return e+=i,(i<0&&e<t||i>0&&e>t)&&(e=t),e}toDegrees(e){return e*180/Math.PI}toRadians(e){return e*Math.PI/180}gammaToLinear(e){return Math.pow(e,2.2)}linearToGamma(e){return Math.pow(e,1/2.2)}},H=new hd;import{WebGLRenderer as db,Vector3 as ub,Quaternion as hb,Uniform as Sp,Texture as pb,ShaderMaterial as Pp}from"three";function Mp(o,e,t){let i=o.length(),n=e.length(),r=H.lerp(i,n,t);return o.lerp(e,t).normalize().multiplyScalar(r)}var TE=new hb().setFromAxisAngle(new ub(0,1,0),Math.PI);var fd=new ki(()=>new fe.Vector3,100);function B(o,e=null,t=!0){let i=e??fd.get();return o?o.parent?(t&&o.updateWorldMatrix(!0,!1),o.matrixWorldNeedsUpdate&&o.updateMatrixWorld(),i.setFromMatrixPosition(o.matrixWorld),i):i.copy(o.position):i.set(0,0,0)}function ie(o,e){if(!o)return;let t=fd.get();e!==t&&t.copy(e),(o?.parent??o).worldToLocal(t),o.position.set(t.x,t.y,t.z)}function hn(o,e,t,i){let n=fd.get();n.set(e,t,i),ie(o,n)}var Pr=new fe.Quaternion,Ws=new fe.Quaternion,pd=new fe.Quaternion;function me(o,e=null){if(!o)return Ws.set(0,0,0,1);let t=e??Ws;return o.parent?(o.getWorldQuaternion(t),t):t.copy(o.quaternion)}function Ze(o,e){if(!o)return;e!==Pr&&Pr.copy(e);let t=Pr;o?.parent?.getWorldQuaternion(pd),pd.invert();let n=pd.multiply(t);o.quaternion.set(n.x,n.y,n.z,n.w)}function Ip(o,e,t,i,n){Pr.set(e,t,i,n),Ze(o,Pr)}var Ya=new fe.Vector3,RE=new fe.Vector3;function Ae(o,e=null){return o?o.parent?(o.getWorldScale(e??Ya),e??Ya):Ya.copy(o.scale):Ya.set(0,0,0)}var SE=new fe.Vector3,PE=new fe.Quaternion;var Op=new fe.Euler,kp=new fe.Euler,fb=new fe.Vector3;function mb(o){return o.getWorldQuaternion(Ws),kp.setFromQuaternion(Ws),kp}function Ap(o,e){Ze(o,Ws.setFromEuler(e))}function Ka(o){let e=mb(o),t=fb;return t.set(e.x,e.y,e.z),t.x=H.toDegrees(t.x),t.y=H.toDegrees(t.y),t.z=H.toDegrees(t.z),t}function Ja(o,e,t,i,n=!0){n&&(e=H.toRadians(e),t=H.toRadians(t),i=H.toRadians(i)),Op.set(e,t,i),Pr.setFromEuler(Op),Ze(o,Pr)}function Ns(o,e=!0){!o||(e?function t(i){console.groupCollapsed((i.name?i.name:"(no name : "+i.type+")")+" %o",i),i.children.forEach(t),console.groupEnd()}(o):o.traverse(function(t){for(var i="|___",n=t;n.parent!==null;)i=" "+i,n=n.parent;console.log(i+t.name+" <"+t.type+">")}))}function Dp(o){if(o){let e=o;return e.blendMode!==void 0&&e.clampWhenFinished!==void 0&&e.enabled!==void 0&&e.fadeIn!==void 0&&e.getClip!==void 0}return!1}var Co=class{static createBlitMaterial(e){return new Pp({uniforms:{map:new Sp(null)},vertexShader:this.vertex,fragmentShader:e})}static copyTexture(e,t){let i=t??this.blipMaterial;i.uniforms.map.value=e,i.needsUpdate=!0,i.uniformsNeedUpdate=!0;let n=this.mesh;n.material=i,n.frustumCulled=!1,this.scene.children.length=0,this.scene.add(n),this.renderer.setSize(e.image.width,e.image.height),this.renderer.clear(),this.renderer.render(this.scene,this.perspectiveCam);let r=new pb(this.renderer.domElement);return r.name="Copy",r.needsUpdate=!0,r}static textureToCanvas(e,t){if(!e)return null;(t===!0||e.isCompressedTexture===!0)&&(e=gb(e));let i=e.image;if(bb(i)){let n=document.createElement("canvas");n.width=i.width,n.height=i.height;let r=n.getContext("2d");return r?(r.drawImage(i,0,0,i.width,i.height,0,0,n.width,n.height),n):(console.error("Failed getting canvas 2d context"),null)}return null}},ri=Co;I(ri,"planeGeometry",new fe.PlaneGeometry(2,2,1,1)),I(ri,"renderer",new db({antialias:!1})),I(ri,"perspectiveCam",new fe.PerspectiveCamera),I(ri,"scene",new fe.Scene),I(ri,"vertex",`
133
+ <a href="https://docs.needle.tools/serializable" target="_blank">documentation</a>`,1),console.warn(i,r,o[r],o))}}function cb(o,e){for(let i of Object.keys(e)){let n=e[i];if(typeof n=="object"&&n!==null&&n!==void 0){let r=o[i];if(!r){Pr&&console.log(i,"is undefined on",o);continue}for(let s of Object.keys(n))r[s]===void 0&&t(n[s])&&!t(r)&&(r[s]=n[s])}}function t(i){switch(typeof i){case"number":case"string":case"boolean":return!0}return!1}}function du(o,e,t,i,n){let r=typeof e=="function"&&e.prototype===void 0,s=e;if(r)try{if(s=e?.call(e,n),r=!1,s==null)return}catch(l){console.error("Error in callback",l,o)}if(t.type=s,!r&&n instanceof s)return n;if(n&&typeof n=="object"&&Tp(n)){if(n.__concreteInstance)return n.__concreteInstance;let l=n;if(!l.$serializedTypes&&s.prototype.$serializedTypes&&(l.$serializedTypes=s.prototype.$serializedTypes),l.$serializedTypes&&zs(l,o,t),n&&s!==void 0)try{let d=new s;pe&&console.log("Create concrete instance for persistent asset",n,"instance:",d),Lt(d,n),n.__concreteInstance=d,n=d}catch(d){console.error("Error creating instance or creating values on instance",d,n,s)}return n}if(i||(i={serializer:Xa.getSerializerForConstructor(s)}),Array.isArray(o)){let l=[];for(let d=0;d<o.length;d++){let h=o[d],g=du(h,e,t,i,h);l.push(g)}return l}let a=i.serializer;if(a)return a.onDeserialize(o,t);let c;if(o&&(o.isMaterial||o.isTexture||o.isObject3D))c=o;else{if(o===void 0)return;c=new s(...ub(o))}let u=c;return u.$serializedTypes&&zs(u,o,t),c}function ub(o){if(Na.length=0,typeof o=="object"&&o!==null&&o!==void 0)for(let e of Object.keys(o))Na.push(o[e]);return Na}var qa=Symbol("assigned component properties");function Lt(o,e,t){if(e==null||o==null)return;let i=!1;o[qa]=!0;let n=o.constructor?.name??"unknown";t?.registerDefinedKeys(n,o);for(let r of Object.keys(e)){let s=db(o,r);i&&s===void 0||(!s||s.writable===!0||s?.set!==void 0)&&(o[r]=e[r])}delete o[qa]}function db(o,e){let t;do t=Object.getOwnPropertyDescriptor(o,e);while(!t&&(o=Object.getPrototypeOf(o)));return t}var ni=P("debuginput"),Ws=class{key;keyType;source;constructor(e){this.key=e.key,this.keyType=e.type,this.source=e}};var Ya=class extends EventTarget{_doubleClickTimeThreshold=.2;_longPressTimeThreshold=1;get mousePosition(){return this._pointerPositions[0]}get mousePositionRC(){return this._pointerPositionsRC[0]}get mouseDown(){return this._pointerDown[0]}get mouseUp(){return this._pointerUp[0]}get mouseClick(){return this._pointerClick[0]}get mouseDoubleClick(){return this._pointerDoubleClick[0]}get mousePressed(){return this._pointerPressed[0]}get mouseWheelChanged(){return this.getMouseWheelChanged(0)}_specialCursorTrigger=0;setCursorPointer(){this._specialCursorTrigger+=1,this.context.domElement.style.cursor="pointer"}setCursorNormal(){this._specialCursorTrigger-=1,this._specialCursorTrigger=Math.max(0,this._specialCursorTrigger),this._specialCursorTrigger===0&&(this.context.domElement.style.cursor="default")}getPointerPressedCount(){let e=0;for(let t=0;t<this._pointerPressed.length;t++)this._pointerPressed[t]&&e++;return e}getPointerPosition(e){return e>=this._pointerPositions.length?null:this._pointerPositions[e]}getPointerPositionLastFrame(e){return e>=this._pointerPositionsLastFrame.length?null:this._pointerPositionsLastFrame[e]}getPointerPositionDelta(e){return e>=this._pointerPositionsDelta.length?null:this._pointerPositionsDelta[e]}getPointerPositionRC(e){return e>=this._pointerPositionsRC.length?null:this._pointerPositionsRC[e]}getPointerDown(e){return e>=this._pointerDown.length?!1:this._pointerDown[e]}getPointerUp(e){return e>=this._pointerUp.length?!1:this._pointerUp[e]}getPointerPressed(e){return e>=this._pointerPressed.length?!1:this._pointerPressed[e]}getPointerClicked(e){return e>=this._pointerClick.length?!1:this._pointerClick[e]}getPointerDoubleClicked(e){return e>=this._pointerDoubleClick.length?!1:this._pointerDoubleClick[e]}getPointerDownTime(e){return e>=this._pointerDownTime.length?-1:this._pointerDownTime[e]}getPointerUpTime(e){return e>=this._pointerUpTime.length?-1:this._pointerUpTime[e]}getPointerLongPress(e){return e>=this._pointerDownTime.length?!1:this.getPointerPressed(e)&&this.context.time.time-this._pointerDownTime[e]>this._longPressTimeThreshold}getIsMouse(e){return e<0||e>=this._pointerTypes.length?!1:this._pointerTypes[e]==="mouse"}getIsTouch(e){return e<0||e>=this._pointerTypes.length?!1:this._pointerTypes[e]==="touch"}getTouchesPressedCount(){let e=0;for(let t=0;t<this._pointerPressed.length;t++)this._pointerPressed[t]&&this.getIsTouch(t)&&e++;return e}getMouseWheelChanged(e=0){return e>=this._mouseWheelChanged.length?!1:this._mouseWheelChanged[e]}getMouseWheelDeltaY(e=0){return e>=this._mouseWheelDeltaY.length?0:this._mouseWheelDeltaY[e]}getPointerEvent(e){if(!(e>=this._pointerEvent.length))return this._pointerEvent[e]??void 0}*foreachPointerId(e){for(let t=0;t<this._pointerTypes.length;t++)if(this._pointerIsActive[t]){if(e!==void 0){let i=this._pointerTypes[t];if(Array.isArray(e)){let n=!1;for(let r of e)if(i===r){n=!0;break}if(!n)continue}else if(e!==i)continue}yield t}}*foreachTouchId(){for(let e=0;e<this._pointerTypes.length;e++)this._pointerTypes[e]==="touch"&&this._pointerIsActive[e]&&(yield e)}_pointerIsActive(e){return e<0?!1:this._pointerPressed[e]||this._pointerDown[e]||this._pointerUp[e]}context;_pointerDown=[!1];_pointerUp=[!1];_pointerClick=[!1];_pointerDoubleClick=[!1];_pointerPressed=[!1];_pointerPositions=[new ri.Vector2];_pointerPositionsLastFrame=[new ri.Vector2];_pointerPositionsDelta=[new ri.Vector2];_pointerPositionsRC=[new ri.Vector2];_pointerPositionDown=[new ri.Vector2];_pointerDownTime=[];_pointerUpTime=[];_pointerIds=[];_pointerTypes=[""];_mouseWheelChanged=[!1];_mouseWheelDeltaY=[0];_pointerEvent=[];getKeyDown(){for(let e in this.keysPressed){let t=this.keysPressed[e];if(t.startFrame===this.context.time.frameCount)return t.key}return null}getKeyPressed(){for(let e in this.keysPressed){let t=this.keysPressed[e];if(t.pressed)return t.key}return null}isKeyDown(e){return typeof e=="number"&&(console.warn("Use of keycode as number is not recommended, please use KeyCode or string instead"),e=String.fromCharCode(e)),this.context.application.isVisible&&this.context.application.hasFocus&&this.keysPressed[e]?.startFrame===this.context.time.frameCount&&this.keysPressed[e].pressed}isKeyUp(e){return typeof e=="number"&&(console.warn("Use of keycode as number is not recommended, please use KeyCode or string instead"),e=String.fromCharCode(e)),this.context.application.isVisible&&this.context.application.hasFocus&&this.keysPressed[e]?.frame===this.context.time.frameCount&&!this.keysPressed[e].pressed}isKeyPressed(e){return typeof e=="number"&&(e=String.fromCharCode(e)),this.context.application.isVisible&&this.context.application.hasFocus&&this.keysPressed[e]?.pressed}createPointerDown(e){ni&&Fe("Create Pointer down"),this.onDown(e)}createPointerMove(e){ni&&Fe("Create Pointer move"),this.onMove(e)}createPointerUp(e){ni&&Fe("Create Pointer up"),this.onUp(e)}convertScreenspaceToRaycastSpace(e){e.x=(e.x-this.context.domX)/this.context.domWidth*2-1,e.y=-((e.y-this.context.domY)/this.context.domHeight)*2+1}constructor(e){super(),this.context=e,this.context.post_render_callbacks.push(this.onEndOfFrame.bind(this)),window.addEventListener("touchstart",this.onTouchStart.bind(this),!1),window.addEventListener("touchmove",this.onTouchMove.bind(this),{passive:!0}),window.addEventListener("touchend",this.onTouchUp.bind(this),!1),window.addEventListener("mousedown",this.onMouseDown.bind(this),!1),window.addEventListener("mousemove",this.onMouseMove.bind(this),!1),window.addEventListener("mouseup",this.onMouseUp.bind(this),!1),window.addEventListener("wheel",this.onMouseWheel.bind(this),{passive:!0}),window.addEventListener("keydown",this.onKeyDown.bind(this),!1),window.addEventListener("keypress",this.onKeyPressed.bind(this),!1),window.addEventListener("keyup",this.onKeyUp.bind(this),!1),window.addEventListener("blur",this.onLostFocus.bind(this))}onLostFocus(){for(let e in this.keysPressed)this.keysPressed[e].pressed=!1}onEndOfFrame(){for(let e=0;e<this._pointerUp.length;e++)this._pointerUp[e]=!1;for(let e=0;e<this._pointerDown.length;e++)this._pointerDown[e]=!1;for(let e=0;e<this._pointerClick.length;e++)this._pointerClick[e]=!1;for(let e=0;e<this._pointerDoubleClick.length;e++)this._pointerDoubleClick[e]=!1;for(let e of this._pointerPositionsDelta)e.set(0,0);for(let e=0;e<this._mouseWheelChanged.length;e++)this._mouseWheelChanged[e]=!1;for(let e=0;e<this._mouseWheelDeltaY.length;e++)this._mouseWheelDeltaY[e]=0}keysPressed={};onKeyDown(e){if(!this.context.application.hasFocus)return;let t=this.keysPressed[e.key];t&&t.pressed||(this.keysPressed[e.key]={pressed:!0,frame:this.context.time.frameCount+1,startFrame:this.context.time.frameCount+1,key:e.key},this.onDispatchEvent("keydown",new Ws(e)))}onKeyPressed(e){if(!this.context.application.hasFocus)return;let t=this.keysPressed[e.key];!t||(t.pressed=!0,t.frame=this.context.time.frameCount+1,this.onDispatchEvent("keypress",new Ws(e)))}onKeyUp(e){if(!this.context.application.hasFocus)return;let t=this.keysPressed[e.key];!t||(t.pressed=!1,t.frame=this.context.time.frameCount+1,this.onDispatchEvent("keyup",new Ws(e)))}onMouseWheel(e){this._mouseWheelDeltaY.length<=0&&this._mouseWheelDeltaY.push(0),this._mouseWheelChanged.length<=0&&this._mouseWheelChanged.push(!1),this._mouseWheelChanged[0]=!0;let t=this._mouseWheelDeltaY[0];this._mouseWheelDeltaY[0]=t+e.deltaY}onTouchStart(e){if(!(e.changedTouches.length<=0))for(let t=0;t<e.changedTouches.length;t++){let i=e.changedTouches[t],n=this.getPointerIndex(i.identifier);ni&&Fe(`touch start #${n}, identifier:${i.identifier}`);let r={button:n,clientX:i.clientX,clientY:i.clientY,pointerType:"touch",source:e};this.onDown(r)}}onTouchMove(e){if(!(e.changedTouches.length<=0))for(let t=0;t<e.changedTouches.length;t++){let i=e.changedTouches[t],r={button:this.getPointerIndex(i.identifier),clientX:i.clientX,clientY:i.clientY,pointerType:"touch",source:e};this.onMove(r)}}onTouchUp(e){if(!(e.changedTouches.length<=0))for(let t=0;t<e.changedTouches.length;t++){let i=e.changedTouches[t],n=this.getPointerIndex(i.identifier);ni&&Fe(`touch up #${n}, identifier:${i.identifier}`);let r={button:n,clientX:i.clientX,clientY:i.clientY,pointerType:"touch",source:e};this.onUp(r)}}onMouseDown(e){if(e.defaultPrevented)return;let t=e.button;this.onDown({button:t,clientX:e.clientX,clientY:e.clientY,pointerType:"mouse",source:e})}onMouseMove(e){if(e.defaultPrevented)return;let i={button:e.button,clientX:e.clientX,clientY:e.clientY,pointerType:"mouse",source:e,movementX:e.movementX,movementY:e.movementY};this.onMove(i)}onMouseUp(e){if(e.defaultPrevented)return;let t=e.button;this.onUp({button:t,clientX:e.clientX,clientY:e.clientY,pointerType:"mouse",source:e})}isInRect(e){if(this.context.isInXR)return!0;let t=this.context.domElement.getBoundingClientRect(),i=e.clientX,n=e.clientY,r=i>=t.x&&i<=t.right&&n>=t.y&&n<=t.bottom;return ni&&!r&&console.log("Not in rect",t,i,n),r}onDown(e){if(ni&&console.log(e.pointerType,"DOWN",e.button),!!this.isInRect(e)){for(this.setPointerState(e.button,this._pointerPressed,!0),this.setPointerState(e.button,this._pointerDown,!0),this.setPointerStateT(e.button,this._pointerEvent,e.source);e.button>=this._pointerTypes.length;)this._pointerTypes.push(e.pointerType);for(this._pointerTypes[e.button]=e.pointerType;e.button>=this._pointerPositionDown.length;)this._pointerPositionDown.push(new ri.Vector2);this._pointerPositionDown[e.button].set(e.clientX,e.clientY),e.button>=this._pointerDownTime.length&&this._pointerDownTime.push(0),this._pointerDownTime[e.button]=this.context.time.time,this.updatePointerPosition(e),this.onDispatchEvent("pointerdown",e)}}onMove(e){let t=this.getPointerPressed(e.button);t===!1&&!this.isInRect(e)||e.pointerType==="touch"&&!t||(ni&&console.log(e.pointerType,"MOVE",e.button),this.updatePointerPosition(e),this.setPointerStateT(e.button,this._pointerEvent,e.source),this.onDispatchEvent("pointermove",e))}onUp(e){if(this._pointerIds?.length>=e.button&&(this._pointerIds[e.button]=-1),!this._pointerPressed[e.button]){ni&&console.log(e.pointerType,"UP",e.button,"was not down");return}if(ni&&console.log(e.pointerType,"UP",e.button),this.setPointerState(e.button,this._pointerPressed,!1),this.setPointerStateT(e.button,this._pointerEvent,e.source),this.setPointerState(e.button,this._pointerUp,!0),this.updatePointerPosition(e),!this._pointerPositionDown[e.button]){ni&&wo("Received pointer up event without matching down event for button: "+e.button),console.warn("Received pointer up event without matching down event for button: "+e.button);return}let i=e.clientX-this._pointerPositionDown[e.button].x,n=e.clientY-this._pointerPositionDown[e.button].y;if(e.button>=this._pointerUpTime.length&&this._pointerUpTime.push(-99),Math.abs(i)<5&&Math.abs(n)<5){this.setPointerState(e.button,this._pointerClick,!0);let r=this._pointerUpTime[e.button],s=this.context.time.time-r;s<this._doubleClickTimeThreshold&&s>0&&this.setPointerState(e.button,this._pointerDoubleClick,!0)}this._pointerUpTime[e.button]=this.context.time.time,this.onDispatchEvent("pointerup",e)}updatePointerPosition(e){for(;e.button>=this._pointerPositions.length;)this._pointerPositions.push(new ri.Vector2);for(;e.button>=this._pointerPositionsLastFrame.length;)this._pointerPositionsLastFrame.push(new ri.Vector2);for(;e.button>=this._pointerPositionsDelta.length;)this._pointerPositionsDelta.push(new ri.Vector2);let t=this._pointerPositionsLastFrame[e.button];t.copy(this._pointerPositions[e.button]);let i=e.movementX!==void 0?e.movementX:e.clientX-t.x,n=e.movementY!==void 0?e.movementY:e.clientY-t.y;this._pointerPositionsDelta[e.button].set(i,n),this._pointerPositions[e.button].x=e.clientX,this._pointerPositions[e.button].y=e.clientY;let r=e.clientX,s=e.clientY;for(;e.button>=this._pointerPositionsRC.length;)this._pointerPositionsRC.push(new ri.Vector2);let a=this._pointerPositionsRC[e.button];a.set(r,s),this.convertScreenspaceToRaycastSpace(a)}getPointerIndex(e){let t=this._pointerIds,i=-1;for(let n=0;n<t.length;n++){if(t[n]===e)return n;i===-1&&t[n]===-1&&(i=n)}return i!==-1?(t[i]=e,i):(t.push(e),t.length-1)}setPointerState(e,t,i){for(;t.length<=e;)t.push(!1);t[e]=i}setPointerStateT(e,t,i){for(;t.length<=e;)t.push(null);t[e]=i}onDispatchEvent(e,t){let i=G.Current;try{G.Current=this.context;let n=new Event(e);Lt(n,t),this.dispatchEvent(n)}finally{G.Current=i}}};import{Box3 as $b,BufferAttribute as mf,BufferGeometry as ev,Layers as Pu,LineBasicMaterial as tv,LineSegments as iv,Matrix4 as nv,Quaternion as rv,Raycaster as ov,Sphere as sv,Vector2 as av,Vector3 as Cu}from"three";import*as fe from"three";var pu=class{random(){return Math.random()}clamp(e,t,i){return e<t?t:e>i?i:e}clamp01(e){return this.clamp(e,0,1)}lerp(e,t,i){return i=i<0?0:i,i=i>1?1:i,e+(t-e)*i}inverseLerp(e,t,i){return(i-e)/(t-e)}remap(e,t,i,n,r){return n+(r-n)*(e-t)/(i-t)}moveTowards(e,t,i){return e+=i,(i<0&&e<t||i>0&&e>t)&&(e=t),e}toDegrees(e){return e*180/Math.PI}toRadians(e){return e*Math.PI/180}gammaToLinear(e){return Math.pow(e,2.2)}linearToGamma(e){return Math.pow(e,1/2.2)}},H=new pu;import{WebGLRenderer as hb,Vector3 as pb,Quaternion as fb,Uniform as Sp,Texture as mb,ShaderMaterial as Pp}from"three";function Mp(o,e,t){let i=o.length(),n=e.length(),r=H.lerp(i,n,t);return o.lerp(e,t).normalize().multiplyScalar(r)}var OE=new fb().setFromAxisAngle(new pb(0,1,0),Math.PI);var mu=new Mi(()=>new fe.Vector3,100);function B(o,e=null,t=!0){let i=e??mu.get();return o?o.parent?(t&&o.updateWorldMatrix(!0,!1),o.matrixWorldNeedsUpdate&&o.updateMatrixWorld(),i.setFromMatrixPosition(o.matrixWorld),i):i.copy(o.position):i.set(0,0,0)}function ie(o,e){if(!o)return;let t=mu.get();e!==t&&t.copy(e),(o?.parent??o).worldToLocal(t),o.position.set(t.x,t.y,t.z)}function pn(o,e,t,i){let n=mu.get();n.set(e,t,i),ie(o,n)}var Or=new fe.Quaternion,Ns=new fe.Quaternion,fu=new fe.Quaternion;function me(o,e=null){if(!o)return Ns.set(0,0,0,1);let t=e??Ns;return o.parent?(o.getWorldQuaternion(t),t):t.copy(o.quaternion)}function Ze(o,e){if(!o)return;e!==Or&&Or.copy(e);let t=Or;o?.parent?.getWorldQuaternion(fu),fu.invert();let n=fu.multiply(t);o.quaternion.set(n.x,n.y,n.z,n.w)}function Ip(o,e,t,i,n){Or.set(e,t,i,n),Ze(o,Or)}var Ka=new fe.Vector3,kE=new fe.Vector3;function Ae(o,e=null){return o?o.parent?(o.getWorldScale(e??Ka),e??Ka):Ka.copy(o.scale):Ka.set(0,0,0)}var ME=new fe.Vector3,IE=new fe.Quaternion;var Op=new fe.Euler,kp=new fe.Euler,gb=new fe.Vector3;function bb(o){return o.getWorldQuaternion(Ns),kp.setFromQuaternion(Ns),kp}function Ap(o,e){Ze(o,Ns.setFromEuler(e))}function Ja(o){let e=bb(o),t=gb;return t.set(e.x,e.y,e.z),t.x=H.toDegrees(t.x),t.y=H.toDegrees(t.y),t.z=H.toDegrees(t.z),t}function Za(o,e,t,i,n=!0){n&&(e=H.toRadians(e),t=H.toRadians(t),i=H.toRadians(i)),Op.set(e,t,i),Or.setFromEuler(Op),Ze(o,Or)}function Xs(o,e=!0){!o||(e?function t(i){console.groupCollapsed((i.name?i.name:"(no name : "+i.type+")")+" %o",i),i.children.forEach(t),console.groupEnd()}(o):o.traverse(function(t){for(var i="|___",n=t;n.parent!==null;)i=" "+i,n=n.parent;console.log(i+t.name+" <"+t.type+">")}))}function Dp(o){if(o){let e=o;return e.blendMode!==void 0&&e.clampWhenFinished!==void 0&&e.enabled!==void 0&&e.fadeIn!==void 0&&e.getClip!==void 0}return!1}var To=class{static createBlitMaterial(e){return new Pp({uniforms:{map:new Sp(null)},vertexShader:this.vertex,fragmentShader:e})}static copyTexture(e,t){let i=t??this.blipMaterial;i.uniforms.map.value=e,i.needsUpdate=!0,i.uniformsNeedUpdate=!0;let n=this.mesh;n.material=i,n.frustumCulled=!1,this.scene.children.length=0,this.scene.add(n),this.renderer.setSize(e.image.width,e.image.height),this.renderer.clear(),this.renderer.render(this.scene,this.perspectiveCam);let r=new mb(this.renderer.domElement);return r.name="Copy",r.needsUpdate=!0,r}static textureToCanvas(e,t){if(!e)return null;(t===!0||e.isCompressedTexture===!0)&&(e=vb(e));let i=e.image;if(yb(i)){let n=document.createElement("canvas");n.width=i.width,n.height=i.height;let r=n.getContext("2d");return r?(r.drawImage(i,0,0,i.width,i.height,0,0,n.width,n.height),n):(console.error("Failed getting canvas 2d context"),null)}return null}},oi=To;I(oi,"planeGeometry",new fe.PlaneGeometry(2,2,1,1)),I(oi,"renderer",new hb({antialias:!1})),I(oi,"perspectiveCam",new fe.PerspectiveCamera),I(oi,"scene",new fe.Scene),I(oi,"vertex",`
134
134
  varying vec2 vUv;
135
135
  void main(){
136
136
  vUv = uv;
137
137
  gl_Position = vec4(position.xy * 1.0,0.,.999999);
138
- }`),I(ri,"fragment",`
138
+ }`),I(oi,"fragment",`
139
139
  uniform sampler2D map;
140
140
  varying vec2 vUv;
141
141
  void main(){
@@ -143,13 +143,13 @@ in script ${i}.ts
143
143
  uv.y = 1.0 - uv.y;
144
144
  gl_FragColor = texture2D( map, uv);
145
145
  // gl_FragColor = vec4(uv.xy, 0, 1);
146
- }`),I(ri,"blipMaterial",new Pp({uniforms:{map:new Sp(null)},vertexShader:Co.vertex,fragmentShader:Co.fragment})),I(ri,"mesh",new fe.Mesh(Co.planeGeometry,Co.blipMaterial));function gb(o){return ri.copyTexture(o)}function bb(o){return typeof HTMLImageElement<"u"&&o instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&o instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&o instanceof OffscreenCanvas||typeof ImageBitmap<"u"&&o instanceof ImageBitmap}import{Vector3 as vb}from"three";var FE=Symbol("object"),Lp=new ki(()=>new vb,20),Za=class{_point;_normal;distance;impulse;friction;get point(){return Lp.get().set(this._point.x,this._point.y,this._point.z)}get normal(){return Lp.get().set(this._normal.x,this._normal.y,this._normal.z)}constructor(e,t,i,n,r){this._point=e,this.distance=t,this._normal=i,this.impulse=n,this.friction=r}},Xs=class{contacts;constructor(e,t,i){this.me=e,this._collider=t,this._gameObject=t.gameObject,this.contacts=i}me;_collider;get collider(){return this._collider}_gameObject;get gameObject(){return this._gameObject}get rigidBody(){return this.collider?.attachedRigidbody}};function kr(o,e){try{e?o(e):o()}catch(t){return console.error(t),!1}return!0}var Li="__isActiveInHierarchy",Mr="builtin_components";var xb=P("debugnewscripts"),ge=[];function gn(o){if(!(o.new_scripts.length<=0)){if(xb&&console.log("Register new components",o.new_scripts.length,o.alias?"element: "+o.alias:""),o.new_scripts_pre_setup_callbacks.length>0){for(let e of o.new_scripts_pre_setup_callbacks)!e||e();o.new_scripts_pre_setup_callbacks.length=0}ge.length=0,o.new_scripts.length>0&&ge.push(...o.new_scripts),o.new_scripts.length=0;for(let e=0;e<ge.length;e++)try{let t=ge[e];if(t.destroyed)continue;if(!t.gameObject){console.error("MISSING GAMEOBJECT - will ignore",t),ge.splice(e,1),e--;continue}t.context=o,Qs(t.gameObject),gd(t,o)}catch(t){console.error(t),fn(ge[e],o),ge.splice(e,1),e--}for(let e=0;e<ge.length;e++)try{let t=ge[e];if(t.destroyed){fn(ge[e],o),ge.splice(e,1),e--;continue}t.__internalAwake!==void 0&&(t.gameObject||console.error("MISSING GAMEOBJECT",t,t.gameObject),Qs(t.gameObject),t.activeAndEnabled&&kr(t.__internalAwake.bind(t)))}catch(t){console.error(t),fn(ge[e],o),ge.splice(e,1),e--}for(let e=0;e<ge.length;e++)try{let t=ge[e];if(t.destroyed||t.enabled===!1||(Qs(t.gameObject),t.activeAndEnabled===!1))continue;t.__internalEnable!==void 0&&(t.enabled=!0,kr(t.__internalEnable.bind(t)))}catch(t){console.error(t),fn(ge[e],o),ge.splice(e,1),e--}for(let e=0;e<ge.length;e++)try{let t=ge[e];if(t.destroyed||!t.gameObject)continue;o.new_script_start.push(t)}catch(t){console.error(t),fn(ge[e],o),ge.splice(e,1),e--}ge.length=0;for(let e of o.new_scripts_post_setup_callbacks)e&&e();o.new_scripts_post_setup_callbacks.length=0}}function jp(o){!o||(o.__internalDisable(),fn(o,o.context))}function $a(o,e){for(let t=0;t<o.new_script_start.length;t++)try{let i=o.new_script_start[t];if(e!==void 0&&i.gameObject!==e||i.destroyed||i.activeAndEnabled===!1)continue;kr(i.__internalAwake.bind(i)),kr(i.__internalEnable.bind(i)),kr(i.__internalStart.bind(i)),o.new_script_start.splice(t,1),t--}catch(i){console.error(i),fn(o.new_script_start[t],o),o.new_script_start.splice(t,1),t--}}function gd(o,e){e.scripts.indexOf(o)===-1&&(e.scripts.push(o),o.earlyUpdate&&e.scripts_earlyUpdate.push(o),o.update&&e.scripts_update.push(o),o.lateUpdate&&e.scripts_lateUpdate.push(o),o.onBeforeRender&&e.scripts_onBeforeRender.push(o),o.onAfterRender&&e.scripts_onAfterRender.push(o),o.onPausedChanged&&e.scripts_pausedChanged.push(o))}function fn(o,e){pn(o,e.new_scripts),pn(o,e.new_script_start),pn(o,e.scripts),pn(o,e.scripts_earlyUpdate),pn(o,e.scripts_update),pn(o,e.scripts_lateUpdate),pn(o,e.scripts_onBeforeRender),pn(o,e.scripts_onAfterRender),pn(o,e.scripts_pausedChanged),e.stopAllCoroutinesFrom(o)}function pn(o,e){let t=e.indexOf(o);t>=0&&e.splice(t,1)}var wb={},md={};function To(o){if(o||(o=G.Current.scene),!o){console.trace("Invalid call - no current context.");return}Hp(o,mn(o),!0)}function Hp(o,e,t){let i=!1,n=mn(o);if(wb[o.uuid]=n,e&&(e=mn(o)),o[Li]=e,!i){let r=md[o.uuid];r!==void 0&&r!==e&&t&&Eb(o,s=>{e?(kr(s.__internalAwake.bind(s)),s.enabled=!0):s.enabled=!1})}if(md[o.uuid]=e,o.children)for(let r of o.children)Hp(r,e,t)}function Qs(o){let e=!0,t=o,i=!1;for(;t&&t;){if(t.type==="Scene"&&(i=!0),!mn(t)){e=!1;break}t=t.parent}if(!o){console.error("GO is null");return}md[o.uuid]=e,o[Li]=e&&i}function Eb(o,e){if(o.userData?.components)for(let t of o.userData.components)e(t)}import*as qs from"three";var Bp=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function Cb(o){return typeof o=="string"&&Bp.test(o)}var Up=Cb;var Be=[];for(let o=0;o<256;++o)Be.push((o+256).toString(16).slice(1));function Gp(o,e=0){return(Be[o[e+0]]+Be[o[e+1]]+Be[o[e+2]]+Be[o[e+3]]+"-"+Be[o[e+4]]+Be[o[e+5]]+"-"+Be[o[e+6]]+Be[o[e+7]]+"-"+Be[o[e+8]]+Be[o[e+9]]+"-"+Be[o[e+10]]+Be[o[e+11]]+Be[o[e+12]]+Be[o[e+13]]+Be[o[e+14]]+Be[o[e+15]]).toLowerCase()}function Tb(o){if(!Up(o))throw TypeError("Invalid UUID");let e,t=new Uint8Array(16);return t[0]=(e=parseInt(o.slice(0,8),16))>>>24,t[1]=e>>>16&255,t[2]=e>>>8&255,t[3]=e&255,t[4]=(e=parseInt(o.slice(9,13),16))>>>8,t[5]=e&255,t[6]=(e=parseInt(o.slice(14,18),16))>>>8,t[7]=e&255,t[8]=(e=parseInt(o.slice(19,23),16))>>>8,t[9]=e&255,t[10]=(e=parseInt(o.slice(24,36),16))/1099511627776&255,t[11]=e/4294967296&255,t[12]=e>>>24&255,t[13]=e>>>16&255,t[14]=e>>>8&255,t[15]=e&255,t}var Vp=Tb;function Rb(o){o=unescape(encodeURIComponent(o));let e=[];for(let t=0;t<o.length;++t)e.push(o.charCodeAt(t));return e}var Sb="6ba7b810-9dad-11d1-80b4-00c04fd430c8",Pb="6ba7b811-9dad-11d1-80b4-00c04fd430c8";function bd(o,e,t){function i(n,r,s,a){var c;if(typeof n=="string"&&(n=Rb(n)),typeof r=="string"&&(r=Vp(r)),((c=r)===null||c===void 0?void 0:c.length)!==16)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let d=new Uint8Array(16+n.length);if(d.set(r),d.set(n,r.length),d=t(d),d[6]=d[6]&15|e,d[8]=d[8]&63|128,s){a=a||0;for(let l=0;l<16;++l)s[a+l]=d[l];return s}return Gp(d)}try{i.name=o}catch{}return i.DNS=Sb,i.URL=Pb,i}function Ob(o,e,t,i){switch(o){case 0:return e&t^~e&i;case 1:return e^t^i;case 2:return e&t^e&i^t&i;case 3:return e^t^i}}function vd(o,e){return o<<e|o>>>32-e}function kb(o){let e=[1518500249,1859775393,2400959708,3395469782],t=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof o=="string"){let s=unescape(encodeURIComponent(o));o=[];for(let a=0;a<s.length;++a)o.push(s.charCodeAt(a))}else Array.isArray(o)||(o=Array.prototype.slice.call(o));o.push(128);let i=o.length/4+2,n=Math.ceil(i/16),r=new Array(n);for(let s=0;s<n;++s){let a=new Uint32Array(16);for(let c=0;c<16;++c)a[c]=o[s*64+c*4]<<24|o[s*64+c*4+1]<<16|o[s*64+c*4+2]<<8|o[s*64+c*4+3];r[s]=a}r[n-1][14]=(o.length-1)*8/Math.pow(2,32),r[n-1][14]=Math.floor(r[n-1][14]),r[n-1][15]=(o.length-1)*8&4294967295;for(let s=0;s<n;++s){let a=new Uint32Array(80);for(let g=0;g<16;++g)a[g]=r[s][g];for(let g=16;g<80;++g)a[g]=vd(a[g-3]^a[g-8]^a[g-14]^a[g-16],1);let c=t[0],d=t[1],l=t[2],u=t[3],h=t[4];for(let g=0;g<80;++g){let E=Math.floor(g/20),_=vd(c,5)+Ob(E,d,l,u)+h+e[E]+a[g]>>>0;h=u,u=l,l=vd(d,30)>>>0,d=c,c=_}t[0]=t[0]+c>>>0,t[1]=t[1]+d>>>0,t[2]=t[2]+l>>>0,t[3]=t[3]+u>>>0,t[4]=t[4]+h>>>0}return[t[0]>>24&255,t[0]>>16&255,t[0]>>8&255,t[0]&255,t[1]>>24&255,t[1]>>16&255,t[1]>>8&255,t[1]&255,t[2]>>24&255,t[2]>>16&255,t[2]>>8&255,t[2]&255,t[3]>>24&255,t[3]>>16&255,t[3]>>8&255,t[3]&255,t[4]>>24&255,t[4]>>16&255,t[4]>>8&255,t[4]&255]}var zp=kb;var Mb=bd("v5",80,zp),el=Mb;var tl=P("debugcomponents"),Wp="eff8ba80-635d-11ec-90d6-0242ac120003",Re=class{get seed(){return this._seed}set seed(e){this._seed=e}_originalSeed;_seed;constructor(e){typeof e=="string"&&(e=Re.hash(e)),this._originalSeed=e,this._seed=e}reset(){this._seed=this._originalSeed}generateUUID(e){if(typeof e=="string")return el(e,Wp);let t=this._seed;return this._seed-=1,el(t.toString(),Wp)}initialize(e){typeof e=="string"?this._seed=Re.hash(e):this._seed=e}static createFromString(e){return new Re(this.hash(e))}static hash(e){let t=0;for(let i=0;i<e.length;i++)t=e.charCodeAt(i)+((t<<5)-t);return t}};var il=class{guid;constructor(e){this.guid=e}};function Ro(o,e,t=!0){if(!o)return;let i=o;if(oi(o,t),!e){console.warn("Can not send destroy: No networking connection provided",o.guid);return}if(!e.isConnected){console.warn("Can not send destroy: not connected",o.guid);return}let n=o.guid;if(!n&&i.uuid&&(n=i.uuid),!n){console.warn("Can not send destroy: failed to find guid",o);return}let r=new il(n);e.send("instance-destroyed",r,2)}function Np(o,e){let t=new il(o);e.send("instance-destroyed",t,2)}function Xp(o){o.connection.beginListen("instance-destroyed",e=>{tl&&console.log("[Remote] Destroyed",o.scene,e);let t=Ir(e.guid,o.scene);t&&oi(t)})}var yd=class{guid;originalGuid;seed;visible;hostData;dontSave;parent;position;rotation;scale;constructor(e,t){this.originalGuid=e,this.guid=t}};function nl(o,e,t,i){let n=o;if(!n.guid)return console.warn("Can not instantiate: No guid",n),null;if(e.context||(e.context=G.Current),!e.context)return console.error("Missing network instantiate options / reference to network connection in sync instantiate"),null;let r=e?{...e}:null,{instance:s,seed:a}=Ib(n,e);if(s){let c=s;if(c.guid){tl&&console.log("[Local] new instance","gameobject:",s?.guid);let d=new yd(n.guid,c.guid);d.seed=a,r&&(r.position&&(d.position={x:r.position.x,y:r.position.y,z:r.position.z}),r.rotation&&(d.rotation={x:r.rotation.x,y:r.rotation.y,z:r.rotation.z,w:r.rotation.w}),r.scale&&(d.scale={x:r.scale.x,y:r.scale.y,z:r.scale.z})),d.position||(d.position={x:c.position.x,y:c.position.y,z:c.position.z}),d.rotation||(d.rotation={x:c.quaternion.x,y:c.quaternion.y,z:c.quaternion.z,w:c.quaternion.w}),d.scale||(d.scale={x:c.scale.x,y:c.scale.y,z:c.scale.z}),d.visible=n.visible,r?.parent&&(typeof r.parent=="string"?d.parent=r.parent:d.parent=r.parent.guid),d.hostData=t,i===!1&&(d.dontSave=!0),e?.context?.connection.send("new-instance-created",d)}else console.warn("Missing guid, can not send new instance event",c)}return s}function rl(){return Math.random()*9999999}function Qp(o){o.connection.beginListen("new-instance-created",async e=>{let t=await Ab(e.originalGuid,o.scene);if(!t){console.warn("could not find object that was instantiated: "+e.guid);return}let i=new Ue;e.position&&(i.position=new qs.Vector3(e.position.x,e.position.y,e.position.z)),e.rotation&&(i.rotation=new qs.Quaternion(e.rotation.x,e.rotation.y,e.rotation.z,e.rotation.w)),e.scale&&(i.scale=new qs.Vector3(e.scale.x,e.scale.y,e.scale.z)),i.parent=e.parent,e.seed&&(i.idProvider=new Re(e.seed)),i.visible=e.visible,i.context=o,tl&&o.alias&&console.log("[Remote] instantiate in: "+o.alias);let n=Ar(t,i);n&&(e.parent==="scene"&&o.scene.add(n),tl&&console.log("[Remote] new instance","gameobject:",n?.guid,t))})}function Ib(o,e){let t=rl(),i=e??new Ue;i.idProvider=new Re(t);let n=Ar(o,i);return{seed:t,instance:n}}var qp={};function Yp(o,e){qp[o]=e}async function Ab(o,e){let t=qp[o];if(t!=null){let i=await t(o);if(i)return i}return Kp(o,e)}function Kp(o,e){if(e===null||!o)return null;if(e.guid===o)return e;if(e.children)for(let t of e.children){let i=Kp(o,t);if(i)return i}return null}var Jp=new Map;function Zp(o,e){if(!o)return;if(!e){console.warn("No prototype found",o,o.prototype,o.constructor);return}let t=Jp.get(e);t&&t.apply(o)}function $p(o){let e=Db(o.prototype);Jp.set(o,e)}function Db(o){return new xd(o)}var xd=class{$symbol;extensions;descriptors;constructor(e){this.$symbol=Symbol("prototype-extension"),this.extensions=Object.keys(e),this.descriptors=new Array;for(let t=0;t<this.extensions.length;t++){let i=this.extensions[t],n=Object.getOwnPropertyDescriptor(e,i);n&&this.descriptors.push(n)}}apply(e){if(!e[this.$symbol]){e[this.$symbol]=!0;for(let t=0;t<this.extensions.length;t++){let i=this.extensions[t],n=this.descriptors[t];n&&Object.defineProperty(e,i,n)}}}};import{Object3D as ct}from"three";var wd=P("debuggetcomponent");function Lb(o){return o==null||o.isObject3D?o:o.object&&o.object.isObject3D?o.object:o}function ol(o,e){if(!o||!o.userData.components)return;let t=o.userData.components.indexOf(e);t<0||(e.gameObject=null,o.userData.components.splice(t,1))}function sl(o,e){let t=Dr(o,e);if(t)return t;let i=new e;return Nn(o,i)}function Nn(o,e,t=!0){o||new Error("Can not add componet to null object"),o.userData||(o.userData={}),o.userData.components||(o.userData.components=[]),o.userData.components.push(e),e.gameObject=o,ko(o),al(e);try{e.__internalAwake&&t&&(Qs(o),e.__internalAwake())}catch(i){console.error(i)}return e}function tf(o,e){if(e.gameObject!==o){if(e.gameObject&&e.gameObject.userData.components){let t=e.gameObject.userData.components.indexOf(e);e.gameObject.userData.components.splice(t,1)}if(!o.userData.components)o.userData.components=[];else if(o.userData.components.includes(e))return;o.userData.components.push(e),e.gameObject=o}}function nf(o){if(o.gameObject&&o.gameObject.userData.components){let e=o.gameObject.userData.components.indexOf(o);o.gameObject.userData.components.splice(e,1)}o.__internalDisable&&o.__internalDisable(),o.onDestroy&&o.onDestroy(),fn(o,o.context??G.Current),o.__internalDestroy(),o.gameObject=null}var ef=!1;function rf(o,e,t){if(o!=null){if(!o.isObject3D){console.error("Object is not object3D");return}if(!o?.userData?.components)return null;if(typeof e=="string"&&(ef||(ef=!0,console.warn(`Accessing components by name is not supported.
146
+ }`),I(oi,"blipMaterial",new Pp({uniforms:{map:new Sp(null)},vertexShader:To.vertex,fragmentShader:To.fragment})),I(oi,"mesh",new fe.Mesh(To.planeGeometry,To.blipMaterial));function vb(o){return oi.copyTexture(o)}function yb(o){return typeof HTMLImageElement<"u"&&o instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&o instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&o instanceof OffscreenCanvas||typeof ImageBitmap<"u"&&o instanceof ImageBitmap}import{Vector3 as _b}from"three";var VE=Symbol("object"),Lp=new Mi(()=>new _b,20),$a=class{_point;_normal;distance;impulse;friction;get point(){return Lp.get().set(this._point.x,this._point.y,this._point.z)}get normal(){return Lp.get().set(this._normal.x,this._normal.y,this._normal.z)}constructor(e,t,i,n,r){this._point=e,this.distance=t,this._normal=i,this.impulse=n,this.friction=r}},Qs=class{contacts;constructor(e,t,i){this.me=e,this._collider=t,this._gameObject=t.gameObject,this.contacts=i}me;_collider;get collider(){return this._collider}_gameObject;get gameObject(){return this._gameObject}get rigidBody(){return this.collider?.attachedRigidbody}};function Mr(o,e){try{e?o(e):o()}catch(t){return console.error(t),!1}return!0}var ji="__isActiveInHierarchy",Ir="builtin_components";var Eb=P("debugnewscripts"),ge=[];function bn(o){if(!(o.new_scripts.length<=0)){if(Eb&&console.log("Register new components",o.new_scripts.length,o.alias?"element: "+o.alias:""),o.new_scripts_pre_setup_callbacks.length>0){for(let e of o.new_scripts_pre_setup_callbacks)!e||e();o.new_scripts_pre_setup_callbacks.length=0}ge.length=0,o.new_scripts.length>0&&ge.push(...o.new_scripts),o.new_scripts.length=0;for(let e=0;e<ge.length;e++)try{let t=ge[e];if(t.destroyed)continue;if(!t.gameObject){console.error("MISSING GAMEOBJECT - will ignore",t),ge.splice(e,1),e--;continue}t.context=o,qs(t.gameObject),bu(t,o)}catch(t){console.error(t),mn(ge[e],o),ge.splice(e,1),e--}for(let e=0;e<ge.length;e++)try{let t=ge[e];if(t.destroyed){mn(ge[e],o),ge.splice(e,1),e--;continue}if(t.registering)try{t.registering()}catch(i){console.error(i)}t.__internalAwake!==void 0&&(t.gameObject||console.error("MISSING GAMEOBJECT",t,t.gameObject),qs(t.gameObject),t.activeAndEnabled&&Mr(t.__internalAwake.bind(t)))}catch(t){console.error(t),mn(ge[e],o),ge.splice(e,1),e--}for(let e=0;e<ge.length;e++)try{let t=ge[e];if(t.destroyed||t.enabled===!1||(qs(t.gameObject),t.activeAndEnabled===!1))continue;t.__internalEnable!==void 0&&(t.enabled=!0,Mr(t.__internalEnable.bind(t)))}catch(t){console.error(t),mn(ge[e],o),ge.splice(e,1),e--}for(let e=0;e<ge.length;e++)try{let t=ge[e];if(t.destroyed||!t.gameObject)continue;o.new_script_start.push(t)}catch(t){console.error(t),mn(ge[e],o),ge.splice(e,1),e--}ge.length=0;for(let e of o.new_scripts_post_setup_callbacks)e&&e();o.new_scripts_post_setup_callbacks.length=0}}function jp(o){!o||(o.__internalDisable(),mn(o,o.context))}function el(o,e){for(let t=0;t<o.new_script_start.length;t++)try{let i=o.new_script_start[t];if(e!==void 0&&i.gameObject!==e||i.destroyed||i.activeAndEnabled===!1)continue;Mr(i.__internalAwake.bind(i)),Mr(i.__internalEnable.bind(i)),Mr(i.__internalStart.bind(i)),o.new_script_start.splice(t,1),t--}catch(i){console.error(i),mn(o.new_script_start[t],o),o.new_script_start.splice(t,1),t--}}function bu(o,e){e.scripts.indexOf(o)===-1&&(e.scripts.push(o),o.earlyUpdate&&e.scripts_earlyUpdate.push(o),o.update&&e.scripts_update.push(o),o.lateUpdate&&e.scripts_lateUpdate.push(o),o.onBeforeRender&&e.scripts_onBeforeRender.push(o),o.onAfterRender&&e.scripts_onAfterRender.push(o),o.onPausedChanged&&e.scripts_pausedChanged.push(o))}function mn(o,e){fn(o,e.new_scripts),fn(o,e.new_script_start),fn(o,e.scripts),fn(o,e.scripts_earlyUpdate),fn(o,e.scripts_update),fn(o,e.scripts_lateUpdate),fn(o,e.scripts_onBeforeRender),fn(o,e.scripts_onAfterRender),fn(o,e.scripts_pausedChanged),e.stopAllCoroutinesFrom(o)}function fn(o,e){let t=e.indexOf(o);t>=0&&e.splice(t,1)}var Cb={},gu={};function Ro(o){if(o||(o=G.Current.scene),!o){console.trace("Invalid call - no current context.");return}Hp(o,gn(o),!0)}function Hp(o,e,t){let i=!1,n=gn(o);if(Cb[o.uuid]=n,e&&(e=gn(o)),o[ji]=e,!i){let r=gu[o.uuid];r!==void 0&&r!==e&&t&&Tb(o,s=>{e?(Mr(s.__internalAwake.bind(s)),s.enabled=!0):s.enabled=!1})}if(gu[o.uuid]=e,o.children)for(let r of o.children)Hp(r,e,t)}function qs(o){let e=!0,t=o,i=!1;for(;t&&t;){if(t.type==="Scene"&&(i=!0),!gn(t)){e=!1;break}t=t.parent}if(!o){console.error("GO is null");return}gu[o.uuid]=e,o[ji]=e&&i}function Tb(o,e){if(o.userData?.components)for(let t of o.userData.components)e(t)}import*as Ys from"three";var Bp=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function Rb(o){return typeof o=="string"&&Bp.test(o)}var Up=Rb;var Be=[];for(let o=0;o<256;++o)Be.push((o+256).toString(16).slice(1));function Gp(o,e=0){return(Be[o[e+0]]+Be[o[e+1]]+Be[o[e+2]]+Be[o[e+3]]+"-"+Be[o[e+4]]+Be[o[e+5]]+"-"+Be[o[e+6]]+Be[o[e+7]]+"-"+Be[o[e+8]]+Be[o[e+9]]+"-"+Be[o[e+10]]+Be[o[e+11]]+Be[o[e+12]]+Be[o[e+13]]+Be[o[e+14]]+Be[o[e+15]]).toLowerCase()}function Sb(o){if(!Up(o))throw TypeError("Invalid UUID");let e,t=new Uint8Array(16);return t[0]=(e=parseInt(o.slice(0,8),16))>>>24,t[1]=e>>>16&255,t[2]=e>>>8&255,t[3]=e&255,t[4]=(e=parseInt(o.slice(9,13),16))>>>8,t[5]=e&255,t[6]=(e=parseInt(o.slice(14,18),16))>>>8,t[7]=e&255,t[8]=(e=parseInt(o.slice(19,23),16))>>>8,t[9]=e&255,t[10]=(e=parseInt(o.slice(24,36),16))/1099511627776&255,t[11]=e/4294967296&255,t[12]=e>>>24&255,t[13]=e>>>16&255,t[14]=e>>>8&255,t[15]=e&255,t}var Vp=Sb;function Pb(o){o=unescape(encodeURIComponent(o));let e=[];for(let t=0;t<o.length;++t)e.push(o.charCodeAt(t));return e}var Ob="6ba7b810-9dad-11d1-80b4-00c04fd430c8",kb="6ba7b811-9dad-11d1-80b4-00c04fd430c8";function vu(o,e,t){function i(n,r,s,a){var c;if(typeof n=="string"&&(n=Pb(n)),typeof r=="string"&&(r=Vp(r)),((c=r)===null||c===void 0?void 0:c.length)!==16)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let u=new Uint8Array(16+n.length);if(u.set(r),u.set(n,r.length),u=t(u),u[6]=u[6]&15|e,u[8]=u[8]&63|128,s){a=a||0;for(let l=0;l<16;++l)s[a+l]=u[l];return s}return Gp(u)}try{i.name=o}catch{}return i.DNS=Ob,i.URL=kb,i}function Mb(o,e,t,i){switch(o){case 0:return e&t^~e&i;case 1:return e^t^i;case 2:return e&t^e&i^t&i;case 3:return e^t^i}}function yu(o,e){return o<<e|o>>>32-e}function Ib(o){let e=[1518500249,1859775393,2400959708,3395469782],t=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof o=="string"){let s=unescape(encodeURIComponent(o));o=[];for(let a=0;a<s.length;++a)o.push(s.charCodeAt(a))}else Array.isArray(o)||(o=Array.prototype.slice.call(o));o.push(128);let i=o.length/4+2,n=Math.ceil(i/16),r=new Array(n);for(let s=0;s<n;++s){let a=new Uint32Array(16);for(let c=0;c<16;++c)a[c]=o[s*64+c*4]<<24|o[s*64+c*4+1]<<16|o[s*64+c*4+2]<<8|o[s*64+c*4+3];r[s]=a}r[n-1][14]=(o.length-1)*8/Math.pow(2,32),r[n-1][14]=Math.floor(r[n-1][14]),r[n-1][15]=(o.length-1)*8&4294967295;for(let s=0;s<n;++s){let a=new Uint32Array(80);for(let g=0;g<16;++g)a[g]=r[s][g];for(let g=16;g<80;++g)a[g]=yu(a[g-3]^a[g-8]^a[g-14]^a[g-16],1);let c=t[0],u=t[1],l=t[2],d=t[3],h=t[4];for(let g=0;g<80;++g){let E=Math.floor(g/20),_=yu(c,5)+Mb(E,u,l,d)+h+e[E]+a[g]>>>0;h=d,d=l,l=yu(u,30)>>>0,u=c,c=_}t[0]=t[0]+c>>>0,t[1]=t[1]+u>>>0,t[2]=t[2]+l>>>0,t[3]=t[3]+d>>>0,t[4]=t[4]+h>>>0}return[t[0]>>24&255,t[0]>>16&255,t[0]>>8&255,t[0]&255,t[1]>>24&255,t[1]>>16&255,t[1]>>8&255,t[1]&255,t[2]>>24&255,t[2]>>16&255,t[2]>>8&255,t[2]&255,t[3]>>24&255,t[3]>>16&255,t[3]>>8&255,t[3]&255,t[4]>>24&255,t[4]>>16&255,t[4]>>8&255,t[4]&255]}var zp=Ib;var Ab=vu("v5",80,zp),tl=Ab;var il=P("debugcomponents"),Wp="eff8ba80-635d-11ec-90d6-0242ac120003",Re=class{get seed(){return this._seed}set seed(e){this._seed=e}_originalSeed;_seed;constructor(e){typeof e=="string"&&(e=Re.hash(e)),this._originalSeed=e,this._seed=e}reset(){this._seed=this._originalSeed}generateUUID(e){if(typeof e=="string")return tl(e,Wp);let t=this._seed;return this._seed-=1,tl(t.toString(),Wp)}initialize(e){typeof e=="string"?this._seed=Re.hash(e):this._seed=e}static createFromString(e){return new Re(this.hash(e))}static hash(e){let t=0;for(let i=0;i<e.length;i++)t=e.charCodeAt(i)+((t<<5)-t);return t}};var nl=class{guid;constructor(e){this.guid=e}};function So(o,e,t=!0){if(!o)return;let i=o;if(si(o,t),!e){console.warn("Can not send destroy: No networking connection provided",o.guid);return}if(!e.isConnected){console.warn("Can not send destroy: not connected",o.guid);return}let n=o.guid;if(!n&&i.uuid&&(n=i.uuid),!n){console.warn("Can not send destroy: failed to find guid",o);return}let r=new nl(n);e.send("instance-destroyed",r,2)}function Np(o,e){let t=new nl(o);e.send("instance-destroyed",t,2)}function Xp(o){o.connection.beginListen("instance-destroyed",e=>{il&&console.log("[Remote] Destroyed",o.scene,e);let t=Ar(e.guid,o.scene);t&&si(t)})}var _u=class{guid;originalGuid;seed;visible;hostData;dontSave;parent;position;rotation;scale;constructor(e,t){this.originalGuid=e,this.guid=t}};function rl(o,e,t,i){let n=o;if(!n.guid)return console.warn("Can not instantiate: No guid",n),null;if(e.context||(e.context=G.Current),!e.context)return console.error("Missing network instantiate options / reference to network connection in sync instantiate"),null;let r=e?{...e}:null,{instance:s,seed:a}=Db(n,e);if(s){let c=s;if(c.guid){il&&console.log("[Local] new instance","gameobject:",s?.guid);let u=new _u(n.guid,c.guid);u.seed=a,r&&(r.position&&(u.position={x:r.position.x,y:r.position.y,z:r.position.z}),r.rotation&&(u.rotation={x:r.rotation.x,y:r.rotation.y,z:r.rotation.z,w:r.rotation.w}),r.scale&&(u.scale={x:r.scale.x,y:r.scale.y,z:r.scale.z})),u.position||(u.position={x:c.position.x,y:c.position.y,z:c.position.z}),u.rotation||(u.rotation={x:c.quaternion.x,y:c.quaternion.y,z:c.quaternion.z,w:c.quaternion.w}),u.scale||(u.scale={x:c.scale.x,y:c.scale.y,z:c.scale.z}),u.visible=n.visible,r?.parent&&(typeof r.parent=="string"?u.parent=r.parent:u.parent=r.parent.guid),u.hostData=t,i===!1&&(u.dontSave=!0),e?.context?.connection.send("new-instance-created",u)}else console.warn("Missing guid, can not send new instance event",c)}return s}function ol(){return Math.random()*9999999}function Qp(o){o.connection.beginListen("new-instance-created",async e=>{let t=await Lb(e.originalGuid,o.scene);if(!t){console.warn("could not find object that was instantiated: "+e.guid);return}let i=new Ue;e.position&&(i.position=new Ys.Vector3(e.position.x,e.position.y,e.position.z)),e.rotation&&(i.rotation=new Ys.Quaternion(e.rotation.x,e.rotation.y,e.rotation.z,e.rotation.w)),e.scale&&(i.scale=new Ys.Vector3(e.scale.x,e.scale.y,e.scale.z)),i.parent=e.parent,e.seed&&(i.idProvider=new Re(e.seed)),i.visible=e.visible,i.context=o,il&&o.alias&&console.log("[Remote] instantiate in: "+o.alias);let n=Dr(t,i);n&&(e.parent==="scene"&&o.scene.add(n),il&&console.log("[Remote] new instance","gameobject:",n?.guid,t))})}function Db(o,e){let t=ol(),i=e??new Ue;i.idProvider=new Re(t);let n=Dr(o,i);return{seed:t,instance:n}}var qp={};function Yp(o,e){qp[o]=e}async function Lb(o,e){let t=qp[o];if(t!=null){let i=await t(o);if(i)return i}return Kp(o,e)}function Kp(o,e){if(e===null||!o)return null;if(e.guid===o)return e;if(e.children)for(let t of e.children){let i=Kp(o,t);if(i)return i}return null}var Jp=new Map;function Zp(o,e){if(!o)return;if(!e){console.warn("No prototype found",o,o.prototype,o.constructor);return}let t=Jp.get(e);t&&t.apply(o)}function $p(o){let e=jb(o.prototype);Jp.set(o,e)}function jb(o){return new wu(o)}var wu=class{$symbol;extensions;descriptors;constructor(e){this.$symbol=Symbol("prototype-extension"),this.extensions=Object.keys(e),this.descriptors=new Array;for(let t=0;t<this.extensions.length;t++){let i=this.extensions[t],n=Object.getOwnPropertyDescriptor(e,i);n&&this.descriptors.push(n)}}apply(e){if(!e[this.$symbol]){e[this.$symbol]=!0;for(let t=0;t<this.extensions.length;t++){let i=this.extensions[t],n=this.descriptors[t];n&&Object.defineProperty(e,i,n)}}}};import{Object3D as ct}from"three";var Eu=P("debuggetcomponent");function Hb(o){return o==null||o.isObject3D?o:o.object&&o.object.isObject3D?o.object:o}function sl(o,e){if(!o||!o.userData.components)return;let t=o.userData.components.indexOf(e);t<0||(e.gameObject=null,o.userData.components.splice(t,1))}function al(o,e){let t=Lr(o,e);if(t)return t;let i=new e;return Xn(o,i)}function Xn(o,e,t=!0){o||new Error("Can not add componet to null object"),o.userData||(o.userData={}),o.userData.components||(o.userData.components=[]),o.userData.components.push(e),e.gameObject=o,Mo(o),ll(e);try{e.__internalAwake&&t&&(qs(o),e.__internalAwake())}catch(i){console.error(i)}return e}function tf(o,e){if(e.gameObject!==o){if(e.gameObject&&e.gameObject.userData.components){let t=e.gameObject.userData.components.indexOf(e);e.gameObject.userData.components.splice(t,1)}if(!o.userData.components)o.userData.components=[];else if(o.userData.components.includes(e))return;o.userData.components.push(e),e.gameObject=o}}function nf(o){if(o.gameObject&&o.gameObject.userData.components){let e=o.gameObject.userData.components.indexOf(o);o.gameObject.userData.components.splice(e,1)}o.__internalDisable&&o.__internalDisable(),o.onDestroy&&o.onDestroy(),mn(o,o.context??G.Current),o.__internalDestroy(),o.gameObject=null}var ef=!1;function rf(o,e,t){if(o!=null){if(!o.isObject3D){console.error("Object is not object3D");return}if(!o?.userData?.components)return null;if(typeof e=="string"&&(ef||(ef=!0,console.warn(`Accessing components by name is not supported.
147
147
  Please use the component type instead. This may keep working in local development but it will fail when bundling your application.
148
148
 
149
149
  You can import other modules your main module to get access to types
150
150
  or if you use npmdefs you can make types available globally using globalThis:
151
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis`,e))),wd&&console.log("FIND",e),e!=null){for(let i=0;i<o.userData.components.length;i++){let n=o.userData.components[i];if(e===null||n.constructor.name===e.name||n.constructor.name===e)if(wd&&console.log("MATCH BY NAME",n),t)t.push(n);else return n}for(let i=0;i<o.userData.components.length;i++){let n=o.userData.components[i],r=Object.getPrototypeOf(n.constructor);do{if(r===e)if(wd&&console.log("MATCH BY PROTOYPE",r),t)t.push(n);else return n;r=Object.getPrototypeOf(r)}while(r)}return t}}}function Dr(o,e){return rf(o,e)}function Po(o,e,t){return t||(t=[]),rf(o,e,t)}function Lr(o,e,t){let i=Dr(o,e);if(t===!1&&i?.enabled===!1)return null;if(i)return i;for(let n=0;n<o?.children?.length;n++){let r=Lr(o.children[n],e);if(r)return r}return null}function Oo(o,e,t){t||(t=[]),Po(o,e,t);for(let i=0;i<o?.children?.length;i++)Oo(o.children[i],e,t);return t}function So(o,e){if(!o)return null;if(Array.isArray(o)){for(let i=0;i<o.length;i++){let n=Lb(o[i]),r=So(n,e);if(r)return r}return null}let t=Dr(o,e);return t||(o.parent?So(o.parent,e):null)}function Ys(o,e,t){return t||(t=[]),o?(Po(o,e,t),o.parent?Ys(o.parent,e,t):t):t}function of(o,e,t){if(!o)return null;if(!e&&(e=G.Current,!e))return console.error("Can not search object without any needle context or scene!!!"),null;let i=e;if(i.isScene||(i=e?.scene),!i)return null;for(let n in i.children){let r=i.children[n];if(t===!1&&r[Li]===!1)continue;if(r.constructor==o)return r;let s=Lr(r,o);if(s)return s}return null}function sf(o,e,t){if(!o)return e;if(!t&&(t=G.Current,!t))return console.error("Can not search object without any needle context or scene!!!"),e;let i=t.isScene===!0||t.isObject3D===!0?t:t?.scene;if(!i)return e;for(let n in i.children){let r=i.children[n];if(r.constructor==o)return r;Oo(r,o,e)}return e}function ko(o){o&&o.isObject3D===!0&&Zp(o,ct)}ct.prototype.SetActive=function(o){this.visible=o};ct.prototype.addNewComponent=function(o){return Nn(this,new o)};ct.prototype.removeComponent=function(o){return ol(this,o)};ct.prototype.getOrAddComponent=function(o){return sl(this,o)};ct.prototype.getComponent=function(o){return Dr(this,o)};ct.prototype.getComponents=function(o,e){return Po(this,o,e)};ct.prototype.getComponentInChildren=function(o){return Lr(this,o)};ct.prototype.getComponentsInChildren=function(o,e){return Oo(this,o,e)};ct.prototype.getComponentInParent=function(o){return So(this,o)};ct.prototype.getComponentsInParent=function(o,e){return Ys(this,o,e)};Object.getOwnPropertyDescriptor(ct.prototype,"activeSelf")||Object.defineProperty(ct.prototype,"activeSelf",{get:function(){return mn(this)},set:function(o){Mo(this,o,!0)}});$p(ct);var ll=Symbol("NEEDLE_NEED_UPDATE_INSTANCE"),oe=class{static isUsingInstancing(e){return e.__isUsingInstancing===!0}static markDirty(e,t=!0){if(!!e&&(this.isUsingInstancing(e)&&(e[ll]=!0,e.matrixWorldNeedsUpdate=!0),t))for(let i of e.children)oe.markDirty(i,!0)}};var jr=P("debuggetcomponent"),jb=(d=>(d[d.None=0]="None",d[d.HideInHierarchy=1]="HideInHierarchy",d[d.HideInInspector=2]="HideInInspector",d[d.DontSaveInEditor=4]="DontSaveInEditor",d[d.NotEditable=8]="NotEditable",d[d.DontSaveInBuild=16]="DontSaveInBuild",d[d.DontUnloadUnusedAsset=32]="DontUnloadUnusedAsset",d[d.DontSave=52]="DontSave",d[d.HideAndDontSave=61]="HideAndDontSave",d))(jb||{}),Ue=class{idProvider;parent;keepWorldPosition;position;rotation;scale;visible;context},Ks=Symbol("isActive");function mn(o){let e=o.visible||cl(o);return o[Ks]===void 0&&(o[Ks]=!0),o[Ks]&&e}function Mo(o,e,t=!0){return typeof e=="number"&&(e=e>.5),o[Ks]=e,t&&(o.visible=e),o[Ks]}function lf(o){return o[Li]||cl(o)}function cf(o,e){o.__isUsingInstancing=e}function cl(o){return oe.isUsingInstancing(o)}function Ir(o,e){return zn(o,e,!0,!0)}function oi(o,e=!0,t=!0){let i=o;if(i.isComponent){i.__internalDisable(),i.__internalDestroy();return}let n=o;if(jr&&console.log(n),e&&n.children)for(let s of n.children)oi(s,e,!1);let r=n.userData.components;if(r){let s=r.length;for(let a=0;a<r.length;a++){let c=r[a];c.__internalDisable(),c.__internalDestroy(),r.length<s&&(s=r.length,a--)}}t&&n.removeFromParent()}function si(o,e,t=!0){if(!!o){if(o.isObject3D||new Error("Expected Object3D but got "+o),o.userData?.components)for(let i=0;i<o.userData.components.length;i++){let n=o.userData.components[i];if(n?.isComponent===!0){let r=e(n);if(r!==void 0)return r}}if(t&&o.children)for(let i=0;i<o.children.length;i++){let n=o.children[i];if(!n)continue;let r=si(n,e,t);if(r!==void 0)return r}}}function Ar(o,e=null){if(o===null)return null;let t=null;e!==null&&(e.x!==void 0?(t=new Ue,t.position=e):t=e);let i=G.Current;t?.context&&(i=t.context),jr&&i.alias&&console.log("context",i.alias),t&&!t.idProvider&&(t.idProvider=new Re(Date.now()));let n=[],r={},s={},a=df(i,o,t,n,r,s);a&&(Fb(r),Hb(s,r)),jr&&(Ns(o,!0),Ns(a,!0));let c={};for(let d in n){let l=n[d],u=l.guid;t&&t.idProvider&&(l.guid=t.idProvider.generateUUID(),c[u]=l.guid,jr&&console.log(l.name,l.guid)),al(l,i),l.__internalNewInstanceCreated&&l.__internalNewInstanceCreated()}for(let d in n){let l=n[d];l.resolveGuids&&l.resolveGuids(c),l.enabled!==!1&&(l.enabled=!0)}return gn(i),a}function df(o,e,t,i,n,r){if(!e)return null;let s=e.userData;e.userData={};let a=e.children;e.children=[];let c;if(c=e.clone(!1),ko(c),e.userData=s,e.children=a,n[e.uuid]={original:e,clone:c},e.type==="SkinnedMesh"&&(r[e.uuid]={original:e,clone:c}),t?.visible!==void 0&&(c.visible=t.visible),t?.idProvider){c.uuid=t.idProvider.generateUUID();let l=c;l&&(l.guid=c.uuid)}e.animations&&e.animations.length>0&&(c.animations=[...e.animations]);let d=e.parent;if(d&&d.add(c),t?.position?ie(c,t.position):c.position.copy(e.position),t?.rotation?Ze(c,t.rotation):c.quaternion.copy(e.quaternion),t?.scale?c.scale.copy(t.scale):c.scale.copy(e.scale),t?.parent&&t.parent!=="scene"){let l=null;if(typeof t.parent=="string"?l=zn(t.parent,o.scene,!0):l=t.parent,l){let u=t.keepWorldPosition===!0?l.attach:l.add;u?u.call(l,c):console.error("Invalid parent object",l,"received when instantiating:",e)}else console.warn("could not find parent:",t.parent)}for(let[l,u]of Object.entries(e.userData))l!=="components"&&(c.userData[l]=u);if(e.userData?.components){let l=e.userData.components,u=[];c.userData.components=u;for(let h=0;h<l.length;h++){let g=l[h],E=Object.create(g);Dt(E,g),u.push(E),E.gameObject=c,i.push(E)}}t&&(t.position=void 0,t.rotation=void 0,t.scale=void 0,t.parent=void 0);for(let l in e.children){let u=e.children[l],h=df(o,u,t,i,n,r);h&&c.add(h)}return c}function Hb(o,e){for(let t in o){let i=o[t],n=i.original,r=n.skeleton,s=i.clone;if(!r){console.warn("Skinned mesh has no skeleton?",i);continue}let a=r.bones,c=s.skeleton.clone();s.skeleton=c,s.bindMatrix.clone().copy(n.bindMatrix),s.bindMatrixInverse.copy(n.bindMatrixInverse);let d=[];c.bones=d;for(let l=0;l<a.length;l++){let u=a[l],g=e[u.uuid].clone;d.push(g)}}for(let t in o){let i=o[t].clone;i.skeleton.update(),i.bind(i.skeleton,i.bindMatrix),i.updateMatrixWorld(!0)}}function Fb(o){for(let e in o){let i=o[e].clone;if(i.userData?.components)for(let n=0;n<i.userData.components.length;n++){let r=i.userData.components[n],s=Object.entries(r);for(let[a,c]of s)if(Array.isArray(c)){let d=[];r[a]=d;for(let l=0;l<c.length;l++){let u=c[l];if(typeof u!="object"){d.push(u);continue}let h=af(r,a,u,o);h!==void 0?d.push(h):d.push(u)}}else if(typeof c=="object"){let d=af(r,a,c,o);d!==void 0&&(r[a]=d)}}}}function af(o,e,t,i){if(t!=null){if(t.isComponent===!0){let n=t.gameObject;if(n){let r=n.uuid,s=i[r]?.clone;if(!s){jr&&console.log("reference did not change",e,o,t);return}let a=n.userData.components.indexOf(t);if(a>=0)return jr&&console.log(e,r),s.userData.components[a];console.warn("could not find component",e,t)}}else if(t.isObject3D===!0){if(e==="gameObject")return;let n=t;if(n){let r=n.uuid,s=i[r]?.clone;if(s)return jr&&console.log(e,"old",t,"new",s),s}}else if(t.isVector4||t.isVector3||t.isVector2||t.isQuaternion||t.isEuler)return t.clone()}}import vn,{ActiveEvents as sv,Collider as av,ColliderDesc as Js,EventQueue as lv,JointData as cv,RigidBody as dv,RigidBodyType as Cd,World as uv}from"@dimforge/rapier3d-compat";import{BufferAttribute as Bb,Line as Ub,BoxGeometry as ff,EdgesGeometry as Gb,Color as Vb,LineSegments as zb,LineBasicMaterial as Wb,Mesh as uf,SphereGeometry as Nb,Vector3 as Xb,Quaternion as Qb}from"three";var wt=new Xb,hf=new Qb,Hr=8947848,bn=class{static DrawRay(e,t,i=Hr,n=0,r=!0){let s=$e.getLine(n),a=s.geometry.getAttribute("position");a.setXYZ(0,e.x,e.y,e.z),wt.set(t.x,t.y,t.z).multiplyScalar(999999999),a.setXYZ(1,e.x+wt.x,e.y+wt.y,e.z+wt.z),a.needsUpdate=!0,s.material.color.set(i),s.material.depthTest=r}static DrawDirection(e,t,i=Hr,n=0,r=!0,s=1){let a=$e.getLine(n),c=a.geometry.getAttribute("position");c.setXYZ(0,e.x,e.y,e.z),t.w!==void 0?(wt.set(0,0,-s),hf.set(t.x,t.y,t.z,t.w),wt.applyQuaternion(hf)):(wt.set(t.x,t.y,t.z),wt.multiplyScalar(s)),c.setXYZ(1,e.x+wt.x,e.y+wt.y,e.z+wt.z),c.needsUpdate=!0,a.material.color.set(i),a.material.depthTest=r}static DrawLine(e,t,i=Hr,n=0,r=!0){let s=$e.getLine(n),a=s.geometry.getAttribute("position");a.setXYZ(0,e.x,e.y,e.z),a.setXYZ(1,t.x,t.y,t.z),a.needsUpdate=!0,s.material.color.set(i),s.material.depthTest=r}static DrawWireSphere(e,t,i=Hr,n=0,r=!0){let s=$e.getSphere(t,n,!0);hn(s,e.x,e.y,e.z),s.material.color.set(i),s.material.depthTest=r}static DrawSphere(e,t,i=Hr,n=0,r=!0){let s=$e.getSphere(t,n,!1);hn(s,e.x,e.y,e.z),s.material.color.set(i),s.material.depthTest=r}static DrawBox(e,t,i=Hr,n=0,r=!0){let s=$e.getBox(n);s.position.set(e.x,e.y,e.z),s.scale.set(t.x,t.y,t.z),s.material.color.set(i),s.material.depthTest=r,s.material.wireframe=!0}static DrawBox3(e,t=Hr,i=0,n=!0){let r=$e.getBox(i);r.position.copy(e.getCenter(wt)),r.scale.copy(e.getSize(wt)),r.material.color.set(t),r.material.depthTest=n,r.material.wireframe=!0}},qb=new ff(1,1,1);function dl(o=null){let e=new Vb(o??14540253),t=new Gb(qb);return new zb(t,new Wb({color:e}))}var pf=Symbol("GizmoCache"),$e=class{static getBox(e){let t=this.boxesCache.pop();if(!t){let i=new ff(1,1,1);t=new uf(i)}return this.registerTimedObject(G.Current,t,e,this.boxesCache),t}static getLine(e){let t=this.linesCache.pop();if(!t){t=new Ub;let i=t.geometry.getAttribute("position");i||(i=new Bb(new Float32Array(2*3),3),t.geometry.setAttribute("position",i))}return this.registerTimedObject(G.Current,t,e,this.linesCache),t}static getSphere(e,t,i){let n=this.spheresCache.pop();return n||(n=new uf(new Nb(.5,8,8))),n.scale.set(e,e,e),n.material.wireframe=i,this.registerTimedObject(G.Current,n,t,this.spheresCache),n}static registerTimedObject(e,t,i,n){if(!this.contextPostRenderCallbacks.get(e)){let r=()=>{this.onPostRender(e,this.timedObjectsBuffer,this.timesBuffer)};this.contextPostRenderCallbacks.set(e,r),e.post_render_callbacks.push(r)}t[pf]=n,this.timedObjectsBuffer.push(t),this.timesBuffer.push(G.Current.time.time+i),e.scene.add(t)}static onPostRender(e,t,i){let n=e.time.time;for(let r=0;r<t.length;r++)if(n>i[r]){let s=t[r];s[pf].push(s),e.scene.remove(s),t.splice(r,1),i.splice(r,1)}}};I($e,"linesCache",[]),I($e,"spheresCache",[]),I($e,"boxesCache",[]),I($e,"timedObjectsBuffer",new Array),I($e,"timesBuffer",new Array),I($e,"contextPostRenderCallbacks",new Map);var Io=P("debugphysics"),Td=P("debugphysicscolliders"),Rd=P("debugcollisions"),hv=P("showcolliders"),Ao=Symbol("needle component"),Lt=Symbol("physics body"),pv=Symbol("rigidbody"),be=class{ray=void 0;cam=void 0;screenPoint=void 0;raycaster=void 0;results=void 0;targets=void 0;recursive=!0;minDistance=void 0;maxDistance=void 0;lineThreshold=void 0;layerMask=void 0;ignore=void 0;screenPointFromOffset(e,t){this.screenPoint===void 0&&(this.screenPoint=new ov),this.screenPoint.x=e/window.innerWidth*2-1,this.screenPoint.y=-(t/window.innerHeight)*2+1}setMask(e){this.layerMask||(this.layerMask=new Sd);let t=this.layerMask;t?t.mask=e:this.layerMask=e}};I(be,"AllLayers",4294967295);var Pd=class{distance;point;object;constructor(e,t,i){this.object=e,this.distance=t,this.point=i}},Fr=class{raycaster=new nv;defaultRaycastOptions=new be;targetBuffer=new Array(1);defaultThresholds={Mesh:{},Line:{threshold:0},LOD:{},Points:{threshold:0},Sprite:{}};sphereResults=new Array;sphereMask=new Sd;sphereOverlap(e,t,i=!0){if(this.sphereResults.length=0,!this.context.scene)return this.sphereResults;let n=new rv(e,t),r=this.sphereMask;r.enableAll(),r.disable(2);for(let s of this.context.scene.children)this.onSphereOverlap(s,n,r,this.sphereResults,i);return this.sphereResults.sort((s,a)=>s.distance-a.distance)}tempBoundingBox=new Jb;onSphereOverlap(e,t,i,n,r){if(e.type==="Mesh"&&e.layers.test(i)){let s=e,a=s.geometry;if(a.boundingBox||a.computeBoundingBox(),a.boundingBox){s.matrixWorldNeedsUpdate&&s.updateMatrixWorld();let c=this.tempBoundingBox.copy(a.boundingBox).applyMatrix4(s.matrixWorld);if(t.intersectsBox(c)){let l=B(e).distanceTo(t.center),u=new Pd(e,l,t.center.clone());if(n.push(u),!r)return}}}if(e.children)for(let s of e.children){let a=n.length;if(this.onSphereOverlap(s,t,i,n,r),a!=n.length&&!r)return}}raycastFromRay(e,t=null){let i=t??this.defaultRaycastOptions;return i.ray=e,this.raycast(i)}raycast(e=null){e||(e=this.defaultRaycastOptions);let t=e.screenPoint??this.context.input.mousePositionRC,i=e.raycaster??this.raycaster;if(i.near=e.minDistance??0,i.far=e.maxDistance??1/0,i.params=this.defaultThresholds,e.lineThreshold?i.params.Line={threshold:e.lineThreshold}:i.params.Line={threshold:0},e.ray)i.ray.copy(e.ray);else{let a=e.cam??this.context.mainCamera;if(!a)return console.error("Can not perform raycast - no main camera found"),this.defaultRaycastOptions.results&&(this.defaultRaycastOptions.results.length=0),this.defaultRaycastOptions.results??[];i.setFromCamera(t,a)}let n=e.targets;n||(n=this.targetBuffer,n[0]=this.context.scene);let r=e.results;r||(this.defaultRaycastOptions.results||(this.defaultRaycastOptions.results=new Array),r=this.defaultRaycastOptions.results),e.layerMask!==void 0?e.layerMask instanceof Sd?i.layers.mask=e.layerMask.mask:i.layers.mask=e.layerMask:(i.layers.enableAll(),i.layers.disable(2)),r.length=0,i.intersectObjects(n,e.recursive,r);let s=e.ignore;return s!==void 0&&s.length>0&&(r=r.filter(a=>!s.includes(a.object))),r}rapierRay=new vn.Ray({x:0,y:0,z:0},{x:0,y:0,z:1});raycastVectorsBuffer=new ki(()=>new Ed,10);raycastPhysicsFast(e,t=void 0,i=1/0,n=!0){let r=this.getPhysicsRay(this.rapierRay,e,t);if(!r)return null;let s=this.world?.castRay(r,i,n);if(s){let a=r.pointAt(s.toi),c=this.raycastVectorsBuffer.get();return c.set(a.x,a.y,a.z),{point:c,collider:s.collider[Ao]}}return null}getPhysicsRay(e,t,i=void 0){let n=this.context.mainCamera;if(t.z===void 0){if(!n)return console.error("Can not perform raycast from 2d point - no main camera found"),null;let a=this.raycastVectorsBuffer.get();(t.x>1||t.y>1||t.y<-1||t.x<-1)&&this.context.input.convertScreenspaceToRaycastSpace(t),a.set(t.x,t.y,-1),a.unproject(n),t=a}let r=t;e.origin.x=r.x,e.origin.y=r.y,e.origin.z=r.z;let s=this.raycastVectorsBuffer.get();if(i)s.set(i.x,i.y,i.z);else{if(!n)return console.error("Can not perform raycast - no camera found"),null;s.set(e.origin.x,e.origin.y,e.origin.z);let a=B(n);s.sub(a)}return s.normalize(),e.dir.x=s.x,e.dir.y=s.y,e.dir.z=s.z,e}_tempPosition=new Ed;_tempQuaternion=new iv;_tempScale=new Ed;_tempMatrix=new tv;_isUpdatingPhysicsWorld=!1;get isUpdating(){return this._isUpdatingPhysicsWorld}context;world;_hasCreatedWorld=!1;eventQueue;collisionHandler;objects=[];bodies=[];_meshCache=new Map;constructor(e){this.context=e}async createWorld(){if(this._hasCreatedWorld){console.error("Invalid call to create physics world: world is already created");return}this._hasCreatedWorld=!0,Fr._didLoadPhysicsEngine||(await vn.init().then(()=>vn),Fr._didLoadPhysicsEngine=!0);let e={x:0,y:-9.81,z:0};this.world=new uv(e)}clearCaches(){this._meshCache.clear()}addBoxCollider(e,t,i){let n=e.gameObject,r=Ae(n,this._tempPosition).multiply(i);r.multiplyScalar(.5);let s=Js.cuboid(r.x,r.y,r.z);this.createCollider(e,s,t)}addSphereCollider(e,t,i){let n=e.gameObject,r=Ae(n,this._tempPosition).multiplyScalar(i),s=Js.ball(r.x);this.createCollider(e,s,t)}addCapsuleCollider(e,t,i,n){let r=e.gameObject,s=Ae(r,this._tempPosition);Io&&console.log("capsule scale",s,i,n);let a=Js.capsule(i*.5*s.y-n,n*s.x);this.createCollider(e,a,t)}addMeshCollider(e,t,i,n){let r=t.geometry;if(!r){Io&&console.warn("Missing mesh geometry",t.name);return}let s=r.getAttribute("position").array,a=r.index?.array;if(Math.abs(n.x-1)>1e-4||Math.abs(n.y-1)>1e-4||Math.abs(n.z-1)>1e-4){let d=r.uuid+"_"+n.x+"_"+n.y+"_"+n.z+"_"+i;if(this._meshCache.has(d))s=this._meshCache.get(d);else{console.warn("Your model is using scaled mesh colliders which is not optimal for performance",t.name,Object.assign({},n),t);let l=new Float32Array(s.length);for(let u=0;u<s.length;u+=3)l[u]=s[u]*n.x,l[u+1]=s[u+1]*n.y,l[u+2]=s[u+2]*n.z;s=l,this._meshCache.set(d,l)}}let c=i?Js.convexMesh(s):Js.trimesh(s,a);c&&this.createCollider(e,c)}createCollider(e,t,i){if(!this.world)throw new Error("Physics world not initialized");let n=this._tempMatrix,{rigidBody:r,useExplicitMassProperties:s}=this.getRigidbody(e,this._tempMatrix);n.decompose(this._tempPosition,this._tempQuaternion,this._tempScale),Ae(e.gameObject,this._tempScale),i&&(i.multiply(this._tempScale),this._tempPosition.x-=i.x,this._tempPosition.y+=i.y,this._tempPosition.z+=i.z),t.setTranslation(this._tempPosition.x,this._tempPosition.y,this._tempPosition.z),t.setRotation(this._tempQuaternion),t.setSensor(e.isTrigger);let a=this.world.createCollider(t,r);return a[Ao]=e,e[Lt]=a,a.setActiveEvents(sv.COLLISION_EVENTS),this.objects.push(e),this.bodies.push(a),a}getRigidbody(e,t){if(!this.world)throw new Error("Physics world not initialized");let i=null,n=!1;if(e.attachedRigidbody){let r=e.attachedRigidbody;if(i=r[Lt],n=!0,!i){let s=r.isKinematic&&!Td;Io&&console.log("Create rigidbody",s);let a=s?vn.RigidBodyDesc.kinematicPositionBased():vn.RigidBodyDesc.dynamic(),c=B(e.attachedRigidbody.gameObject);a.setTranslation(c.x,c.y,c.z),a.setRotation(me(e.attachedRigidbody.gameObject)),i=this.world.createRigidBody(a),this.bodies.push(i),this.objects.push(r)}i[Ao]=r,r[Lt]=i,this.internalUpdateProperties(r,i),this.getRigidbodyRelativeMatrix(e.gameObject,r.gameObject,t)}else{let r=vn.RigidBodyDesc.kinematicPositionBased(),s=B(e.gameObject);r.setTranslation(s.x,s.y,s.z),r.setRotation(me(e.gameObject)),i=this.world.createRigidBody(r),t.identity(),i[Ao]=null}return e[pv]=i,{rigidBody:i,useExplicitMassProperties:n}}removeBody(e){let t=e[Lt];if(e[Lt]=null,t&&this.world){let i=this.objects.findIndex(n=>n===e);if(i>=0){let n=this.bodies[i];if(this.bodies.splice(i,1),this.objects.splice(i,1),n instanceof av){let r=n;this.world?.removeCollider(r,!0);let s=r.parent();s&&s.numColliders()<=0&&this.world?.removeRigidBody(s)}else n instanceof dv}}}updateBody(e,t,i){if(!(e.destroyed||!e.gameObject)&&!(!t&&!i))if(e.isCollider===!0)console.warn("TODO: implement updating collider position");else{let n=e,r=n[Lt];r&&this.syncPhysicsBody(n.gameObject,r,t,i)}}updateProperties(e){let t=e[Lt];t&&this.internalUpdateProperties(e,t)}internal_getRigidbody(e){return e[Lt]}internalUpdateProperties(e,t){t.enableCcd(e.collisionDetectionMode!==0),t.setLinearDamping(e.drag),t.setAngularDamping(e.angularDrag),t.setGravityScale(e.useGravity?1:0,!0),t.setEnabledRotations(!e.lockRotationX,!e.lockRotationY,!e.lockRotationZ,!0),t.setEnabledTranslations(!e.lockPositionX,!e.lockPositionY,!e.lockPositionZ,!0),e.isKinematic?t.setBodyType(vn.RigidBodyType.KinematicPositionBased):t.setBodyType(vn.RigidBodyType.Dynamic)}lines;step(e){!this.world||(this._isUpdatingPhysicsWorld=!0,this.eventQueue||(this.eventQueue=new lv(!1)),this.world.step(this.eventQueue),this._isUpdatingPhysicsWorld=!1,this.updateDebugRendering(this.world))}updateDebugRendering(e){if(Io||Td||hv){if(!this.lines){let i=new $b({color:2258688}),n=new Zb;this.lines=new ev(n,i),this.context.scene.add(this.lines)}let t=e.debugRender();this.lines.geometry.setAttribute("position",new mf(t.vertices,3)),this.lines.geometry.setAttribute("color",new mf(t.colors,4))}}postStep(){!this.world||(this._isUpdatingPhysicsWorld=!0,this.syncObjects(),this._isUpdatingPhysicsWorld=!1,this.eventQueue&&!this.collisionHandler&&(this.collisionHandler=new Od(this.world,this.eventQueue)),this.collisionHandler&&(this.collisionHandler.handleCollisionEvents(),this.collisionHandler.update()))}syncObjects(){if(!Td)for(let e=0;e<this.bodies.length;e++){let t=this.objects[e],i=this.bodies[e],n=t;if(n?.isCollider===!0&&!n.attachedRigidbody){let c=i.parent();c&&this.syncPhysicsBody(t.gameObject,c,!0,!0);continue}let r=i.translation(),s=i.rotation(),a=t.center;if(a&&a.isVector3){this._tempQuaternion.set(s.x,s.y,s.z,s.w);let c=this._tempPosition.copy(a).applyQuaternion(this._tempQuaternion),d=Ae(t.gameObject);c.multiply(d),r.x-=c.x,r.y-=c.y,r.z-=c.z}hn(t.gameObject,r.x,r.y,r.z),Ip(t.gameObject,s.x,s.y,s.z,s.w)}}syncPhysicsBody(e,t,i,n){let r=B(e,this._tempPosition),s=me(e,this._tempQuaternion);switch(t.bodyType()){case Cd.Fixed:case Cd.KinematicPositionBased:case Cd.KinematicVelocityBased:i&&t.setNextKinematicTranslation(r),n&&t.setNextKinematicRotation(s);break;default:i&&t.setTranslation(r,!1),n&&t.setRotation(s,!1);break}t.wakeUp()}getRigidbodyRelativeMatrix(e,t,i,n){if(n===void 0&&(n=Fr._matricesBuffer,n.length=0),e===t){let r=Ae(e,this._tempPosition);i.makeScale(r.x,r.y,r.z);for(let s=n.length-1;s>=0;s--)i.multiply(n[s]);return i}return n.push(e.matrix),e.parent&&this.getRigidbodyRelativeMatrix(e.parent,t,i,n),i}addFixedJoint(e,t){if(!this.world){console.error("Physics world not initialized");return}let i=e[Lt],n=t[Lt];this.calculateJointRelativeMatrices(e.gameObject,t.gameObject,this._tempMatrix),this._tempMatrix.decompose(this._tempPosition,this._tempQuaternion,this._tempScale);let r=cv.fixed(Fr.centerConnectionPos,Fr.centerConnectionRot,this._tempPosition,this._tempQuaternion),s=this.world.createImpulseJoint(r,i,n,!0);Io&&console.log("ADD FIXED JOINT",s)}addHingeJoint(e,t,i,n){if(!this.world){console.error("Physics world not initialized");return}let r=e[Lt],s=t[Lt];this.calculateJointRelativeMatrices(e.gameObject,t.gameObject,this._tempMatrix),this._tempMatrix.decompose(this._tempPosition,this._tempQuaternion,this._tempScale);let a=vn.JointData.revolute(i,this._tempPosition,n),c=this.world.createImpulseJoint(a,r,s,!0);Io&&console.log("ADD HINGE JOINT",c)}calculateJointRelativeMatrices(e,t,i){e.updateWorldMatrix(!0,!1),t.updateWorldMatrix(!0,!1);let n=e.matrixWorld,r=t.matrixWorld;n.elements[0]=1,n.elements[5]=1,n.elements[10]=1,r.elements[0]=1,r.elements[5]=1,r.elements[10]=1,i.copy(r).premultiply(n.invert()).invert()}},Xn=Fr;I(Xn,"_didLoadPhysicsEngine",!1),I(Xn,"_matricesBuffer",[]),I(Xn,"centerConnectionPos",{x:0,y:0,z:0}),I(Xn,"centerConnectionRot",{x:0,y:0,z:0,w:1});var Od=class{world;eventQueue;constructor(e,t){this.world=e,this.eventQueue=t}activeCollisions=[];activeCollisionsStay=[];activeTriggers=[];handleCollisionEvents(){!this.eventQueue||!this.world||this.eventQueue.drainCollisionEvents((e,t,i)=>{let n=this.world.getCollider(e),r=this.world.getCollider(t),s=n[Ao],a=r[Ao];Rd&&console.log("EVT",s.name,a.name,i,n,r),s&&a&&(i?(this.onCollisionStarted(s,n,a,r),this.onCollisionStarted(a,r,s,n)):(this.onCollisionEnded(s,a),this.onCollisionEnded(a,s)))})}update(){this.onHandleCollisionStay()}onCollisionStarted(e,t,i,n){let r=null;if(e.isTrigger||i.isTrigger)si(e.gameObject,s=>{s.onTriggerEnter&&s.onTriggerEnter(i),this.activeTriggers.push({collider:e,component:s,otherCollider:i})});else{let s=e.gameObject;this.world.contactPair(t,n,(a,c)=>{si(s,d=>{let l=d.onCollisionEnter||d.onCollisionStay||d.onCollisionExit;if(l||Rd){if(!r){let u=[],h=a.normal();for(let g=0;g<a.numSolverContacts();g++){let E=a.solverContactPoint(g),_=a.contactImpulse(g);if(E){let x=a.contactDist(g),m=a.solverContactFriction(g),f=new Za(E,x,h,_,m);u.push(f),Rd&&bn.DrawDirection(E,h,16711680,3,!0)}}r=new Xs(s,i,u)}if(l){let u={collider:e,component:d,collision:r};this.activeCollisions.push(u),d.onCollisionStay&&this.activeCollisionsStay.push(u),d.onCollisionEnter?.call(d,r)}}})})}}onHandleCollisionStay(){for(let e of this.activeCollisionsStay){let t=e.component;if(t.activeAndEnabled&&t.onCollisionStay){let i=e.collision;t.onCollisionStay(i)}}for(let e of this.activeTriggers){let t=e.component;if(t.activeAndEnabled&&t.onTriggerStay){let i=e.otherCollider;t.onTriggerStay(i)}}}onCollisionEnded(e,t){for(let i=0;i<this.activeCollisions.length;i++){let n=this.activeCollisions[i];if(n.collider===e&&n.collision.collider===t){let s=n.component;if(this.activeCollisions.splice(i,1),i--,s.activeAndEnabled&&s.onCollisionExit){let a=n.collision;s.onCollisionExit(a)}}}for(let i=0;i<this.activeCollisionsStay.length;i++){let n=this.activeCollisionsStay[i];if(n.collider===e&&n.collision.collider===t){let s=n.component;if(this.activeCollisionsStay.splice(i,1),i--,s.activeAndEnabled&&s.onCollisionExit){let a=n.collision;s.onCollisionExit(a)}}}for(let i=0;i<this.activeTriggers.length;i++){let n=this.activeTriggers[i];if(n.collider===e&&n.otherCollider===t){let s=n.component;if(this.activeTriggers.splice(i,1),i--,s.activeAndEnabled&&s.onTriggerExit){let a=n.otherCollider;s.onTriggerExit(a)}}}}};import{Clock as fv}from"three";var ul=class{deltaTime=0;time=0;frame=0;get realtimeSinceStartup(){return this.clock.elapsedTime}get frameCount(){return this.frame}get smoothedFps(){return this._smoothedFps}clock=new fv;_smoothedFps=0;_fpsSamples=[];_fpsSampleIndex=0;update(){this.deltaTime=this.clock.getDelta(),this.deltaTime=Math.min(.1,this.deltaTime),this.deltaTime<=0&&(this.deltaTime=1e-12),this.frame+=1,this.time+=this.deltaTime,this._fpsSamples.length<30?this._fpsSamples.push(this.deltaTime):this._fpsSamples[this._fpsSampleIndex++%30]=this.deltaTime;let e=0;for(let t=0;t<this._fpsSamples.length;t++)e+=this._fpsSamples[t];this._smoothedFps=1/(e/this._fpsSamples.length)}};import{WebsocketBuilder as gv}from"websocket-ts";var ji=new Int32Array(2),hl=new Float32Array(ji.buffer),pl=new Float64Array(ji.buffer),Do=new Uint16Array(new Uint8Array([1,0]).buffer)[0]===1;var Qe=class{constructor(e,t){this.low=e|0,this.high=t|0}static create(e,t){return e==0&&t==0?Qe.ZERO:new Qe(e,t)}toFloat64(){return(this.low>>>0)+this.high*4294967296}equals(e){return this.low==e.low&&this.high==e.high}};Qe.ZERO=new Qe(0,0);var Zs;(function(o){o[o.UTF8_BYTES=1]="UTF8_BYTES",o[o.UTF16_STRING=2]="UTF16_STRING"})(Zs||(Zs={}));var Hi=class{constructor(e){this.bytes_=e,this.position_=0}static allocate(e){return new Hi(new Uint8Array(e))}clear(){this.position_=0}bytes(){return this.bytes_}position(){return this.position_}setPosition(e){this.position_=e}capacity(){return this.bytes_.length}readInt8(e){return this.readUint8(e)<<24>>24}readUint8(e){return this.bytes_[e]}readInt16(e){return this.readUint16(e)<<16>>16}readUint16(e){return this.bytes_[e]|this.bytes_[e+1]<<8}readInt32(e){return this.bytes_[e]|this.bytes_[e+1]<<8|this.bytes_[e+2]<<16|this.bytes_[e+3]<<24}readUint32(e){return this.readInt32(e)>>>0}readInt64(e){return new Qe(this.readInt32(e),this.readInt32(e+4))}readUint64(e){return new Qe(this.readUint32(e),this.readUint32(e+4))}readFloat32(e){return ji[0]=this.readInt32(e),hl[0]}readFloat64(e){return ji[Do?0:1]=this.readInt32(e),ji[Do?1:0]=this.readInt32(e+4),pl[0]}writeInt8(e,t){this.bytes_[e]=t}writeUint8(e,t){this.bytes_[e]=t}writeInt16(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8}writeUint16(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8}writeInt32(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8,this.bytes_[e+2]=t>>16,this.bytes_[e+3]=t>>24}writeUint32(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8,this.bytes_[e+2]=t>>16,this.bytes_[e+3]=t>>24}writeInt64(e,t){this.writeInt32(e,t.low),this.writeInt32(e+4,t.high)}writeUint64(e,t){this.writeUint32(e,t.low),this.writeUint32(e+4,t.high)}writeFloat32(e,t){hl[0]=t,this.writeInt32(e,ji[0])}writeFloat64(e,t){pl[0]=t,this.writeInt32(e,ji[Do?0:1]),this.writeInt32(e+4,ji[Do?1:0])}getBufferIdentifier(){if(this.bytes_.length<this.position_+4+4)throw new Error("FlatBuffers: ByteBuffer is too short to contain an identifier.");let e="";for(let t=0;t<4;t++)e+=String.fromCharCode(this.readInt8(this.position_+4+t));return e}__offset(e,t){let i=e-this.readInt32(e);return t<this.readInt16(i)?this.readInt16(i+t):0}__union(e,t){return e.bb_pos=t+this.readInt32(t),e.bb=this,e}__string(e,t){e+=this.readInt32(e);let i=this.readInt32(e),n="",r=0;if(e+=4,t===Zs.UTF8_BYTES)return this.bytes_.subarray(e,e+i);for(;r<i;){let s,a=this.readUint8(e+r++);if(a<192)s=a;else{let c=this.readUint8(e+r++);if(a<224)s=(a&31)<<6|c&63;else{let d=this.readUint8(e+r++);if(a<240)s=(a&15)<<12|(c&63)<<6|d&63;else{let l=this.readUint8(e+r++);s=(a&7)<<18|(c&63)<<12|(d&63)<<6|l&63}}}s<65536?n+=String.fromCharCode(s):(s-=65536,n+=String.fromCharCode((s>>10)+55296,(s&(1<<10)-1)+56320))}return n}__union_with_string(e,t){return typeof e=="string"?this.__string(t):this.__union(e,t)}__indirect(e){return e+this.readInt32(e)}__vector(e){return e+this.readInt32(e)+4}__vector_len(e){return this.readInt32(e+this.readInt32(e))}__has_identifier(e){if(e.length!=4)throw new Error("FlatBuffers: file identifier must be length "+4);for(let t=0;t<4;t++)if(e.charCodeAt(t)!=this.readInt8(this.position()+4+t))return!1;return!0}createLong(e,t){return Qe.create(e,t)}createScalarList(e,t){let i=[];for(let n=0;n<t;++n)e(n)!==null&&i.push(e(n));return i}createObjList(e,t){let i=[];for(let n=0;n<t;++n){let r=e(n);r!==null&&i.push(r.unpack())}return i}};var Et=class{constructor(e){this.minalign=1,this.vtable=null,this.vtable_in_use=0,this.isNested=!1,this.object_start=0,this.vtables=[],this.vector_num_elems=0,this.force_defaults=!1,this.string_maps=null;let t;e?t=e:t=1024,this.bb=Hi.allocate(t),this.space=t}clear(){this.bb.clear(),this.space=this.bb.capacity(),this.minalign=1,this.vtable=null,this.vtable_in_use=0,this.isNested=!1,this.object_start=0,this.vtables=[],this.vector_num_elems=0,this.force_defaults=!1,this.string_maps=null}forceDefaults(e){this.force_defaults=e}dataBuffer(){return this.bb}asUint8Array(){return this.bb.bytes().subarray(this.bb.position(),this.bb.position()+this.offset())}prep(e,t){e>this.minalign&&(this.minalign=e);let i=~(this.bb.capacity()-this.space+t)+1&e-1;for(;this.space<i+e+t;){let n=this.bb.capacity();this.bb=Et.growByteBuffer(this.bb),this.space+=this.bb.capacity()-n}this.pad(i)}pad(e){for(let t=0;t<e;t++)this.bb.writeInt8(--this.space,0)}writeInt8(e){this.bb.writeInt8(this.space-=1,e)}writeInt16(e){this.bb.writeInt16(this.space-=2,e)}writeInt32(e){this.bb.writeInt32(this.space-=4,e)}writeInt64(e){this.bb.writeInt64(this.space-=8,e)}writeFloat32(e){this.bb.writeFloat32(this.space-=4,e)}writeFloat64(e){this.bb.writeFloat64(this.space-=8,e)}addInt8(e){this.prep(1,0),this.writeInt8(e)}addInt16(e){this.prep(2,0),this.writeInt16(e)}addInt32(e){this.prep(4,0),this.writeInt32(e)}addInt64(e){this.prep(8,0),this.writeInt64(e)}addFloat32(e){this.prep(4,0),this.writeFloat32(e)}addFloat64(e){this.prep(8,0),this.writeFloat64(e)}addFieldInt8(e,t,i){(this.force_defaults||t!=i)&&(this.addInt8(t),this.slot(e))}addFieldInt16(e,t,i){(this.force_defaults||t!=i)&&(this.addInt16(t),this.slot(e))}addFieldInt32(e,t,i){(this.force_defaults||t!=i)&&(this.addInt32(t),this.slot(e))}addFieldInt64(e,t,i){(this.force_defaults||!t.equals(i))&&(this.addInt64(t),this.slot(e))}addFieldFloat32(e,t,i){(this.force_defaults||t!=i)&&(this.addFloat32(t),this.slot(e))}addFieldFloat64(e,t,i){(this.force_defaults||t!=i)&&(this.addFloat64(t),this.slot(e))}addFieldOffset(e,t,i){(this.force_defaults||t!=i)&&(this.addOffset(t),this.slot(e))}addFieldStruct(e,t,i){t!=i&&(this.nested(t),this.slot(e))}nested(e){if(e!=this.offset())throw new Error("FlatBuffers: struct must be serialized inline.")}notNested(){if(this.isNested)throw new Error("FlatBuffers: object serialization must not be nested.")}slot(e){this.vtable!==null&&(this.vtable[e]=this.offset())}offset(){return this.bb.capacity()-this.space}static growByteBuffer(e){let t=e.capacity();if(t&3221225472)throw new Error("FlatBuffers: cannot grow buffer beyond 2 gigabytes.");let i=t<<1,n=Hi.allocate(i);return n.setPosition(i-t),n.bytes().set(e.bytes(),i-t),n}addOffset(e){this.prep(4,0),this.writeInt32(this.offset()-e+4)}startObject(e){this.notNested(),this.vtable==null&&(this.vtable=[]),this.vtable_in_use=e;for(let t=0;t<e;t++)this.vtable[t]=0;this.isNested=!0,this.object_start=this.offset()}endObject(){if(this.vtable==null||!this.isNested)throw new Error("FlatBuffers: endObject called without startObject");this.addInt32(0);let e=this.offset(),t=this.vtable_in_use-1;for(;t>=0&&this.vtable[t]==0;t--);let i=t+1;for(;t>=0;t--)this.addInt16(this.vtable[t]!=0?e-this.vtable[t]:0);let n=2;this.addInt16(e-this.object_start);let r=(i+n)*2;this.addInt16(r);let s=0,a=this.space;e:for(t=0;t<this.vtables.length;t++){let c=this.bb.capacity()-this.vtables[t];if(r==this.bb.readInt16(c)){for(let d=2;d<r;d+=2)if(this.bb.readInt16(a+d)!=this.bb.readInt16(c+d))continue e;s=this.vtables[t];break}}return s?(this.space=this.bb.capacity()-e,this.bb.writeInt32(this.space,s-e)):(this.vtables.push(this.offset()),this.bb.writeInt32(this.bb.capacity()-e,this.offset()-e)),this.isNested=!1,e}finish(e,t,i){let n=i?4:0;if(t){let r=t;if(this.prep(this.minalign,4+4+n),r.length!=4)throw new Error("FlatBuffers: file identifier must be length "+4);for(let s=4-1;s>=0;s--)this.writeInt8(r.charCodeAt(s))}this.prep(this.minalign,4+n),this.addOffset(e),n&&this.addInt32(this.bb.capacity()-this.space),this.bb.setPosition(this.space)}finishSizePrefixed(e,t){this.finish(e,t,!0)}requiredField(e,t){let i=this.bb.capacity()-e,n=i-this.bb.readInt32(i);if(!(this.bb.readInt16(n+t)!=0))throw new Error("FlatBuffers: field "+t+" must be set")}startVector(e,t,i){this.notNested(),this.vector_num_elems=t,this.prep(4,e*t),this.prep(i,e*t)}endVector(){return this.writeInt32(this.vector_num_elems),this.offset()}createSharedString(e){if(!e)return 0;if(this.string_maps||(this.string_maps=new Map),this.string_maps.has(e))return this.string_maps.get(e);let t=this.createString(e);return this.string_maps.set(e,t),t}createString(e){if(!e)return 0;let t;if(e instanceof Uint8Array)t=e;else{t=[];let i=0;for(;i<e.length;){let n,r=e.charCodeAt(i++);if(r<55296||r>=56320)n=r;else{let s=e.charCodeAt(i++);n=(r<<10)+s+(65536-(55296<<10)-56320)}n<128?t.push(n):(n<2048?t.push(n>>6&31|192):(n<65536?t.push(n>>12&15|224):t.push(n>>18&7|240,n>>12&63|128),t.push(n>>6&63|128)),t.push(n&63|128))}}this.addInt8(0),this.startVector(1,t.length,1),this.bb.setPosition(this.space-=t.length);for(let i=0,n=this.space,r=this.bb.bytes();i<t.length;i++)r[n++]=t[i];return this.endVector()}createLong(e,t){return Qe.create(e,t)}createObjectOffset(e){return e===null?0:typeof e=="string"?this.createString(e):e.pack(this)}createObjectOffsetList(e){let t=[];for(let i=0;i<e.length;++i){let n=e[i];if(n!==null)t.push(this.createObjectOffset(n));else throw new Error("FlatBuffers: Argument for createObjectOffsetList cannot contain null.")}return t}createStructOffsetList(e,t){return t(this,e.length),this.createObjectOffsetList(e),this.endVector()}};var gf={};function jo(o,e){gf[o]=e}function bf(o){let e=o.getBufferIdentifier(),t=gf[e];return t(o)}function vf(o){return typeof o.guid=="function"?o.guid():null}var Md=Ha(ml(),1);var gl=class{get isHost(){return this._host!==void 0}_host;_client;_clientData;constructor(){this.onEnable()}onEnable(){let e="HOST-5980e65c-8438-453e-8b35-f13c736dcd81";this.trySetupHost(e)}trySetupHost(e){let t=new Md.default(e);t.on("error",i=>{console.error(i),this._host=void 0,this.trySetupClient(e)}),t.on("open",i=>{this._host=new Ad(t)})}trySetupClient(e){this._client=new Md.default,this._client.on("error",t=>{console.error("Client error",t)}),this._client.on("open",t=>{console.log("client connected",t),this._clientData=this._client.connect(e,{metadata:{id:t}}),this._clientData.on("open",()=>{console.log("Connected to host")}),this._clientData.on("data",i=>{console.log("<<",i)})})}},Id=class{_peer;constructor(e){this._peer=e}};var Ad=class extends Id{get isHost(){return!0}_connections=[];constructor(e){super(e),console.log("I AM THE HOST"),this._peer?.on("connection",this.onConnection.bind(this)),this._peer.on("close",()=>{this.broadcast("BYE")}),setInterval(()=>{this.broadcast("HELLO")},2e3)}onConnection(e){console.log("host connection",e),e.on("open",()=>{this._connections.push(e),this.broadcastConnection(e)})}broadcastConnection(e){let t=this._connections.map(i=>i.metadata?.id).filter(i=>i!==void 0);this.broadcast({type:"connection-list",connections:t})}broadcast(e){if(e!=null){console.log(">>",e);for(let t in this._peer.connections){let i=this._peer.connections[t];if(!!i)if(Array.isArray(i))for(let n of i)!n||n.send(e);else console.warn(i)}}}};var bl="wss://needle-tiny-starter.glitch.me/socket",dt=!!P("debugnet"),vl=!!(dt||P("debugowner"));var qn=class{guid;connection;get hasOwnership(){return this._hasOwnership}get isOwned(){return this._isOwned}get isConnected(){return this.connection.isConnected}_hasOwnership=!1;_isOwned=void 0;_gainSubscription;_lostSubscription;_hasOwnerResponse;constructor(e,t){this.connection=e,this.guid=t,this._gainSubscription=this.onGainedOwnership.bind(this),this._lostSubscription=this.onLostOwnership.bind(this),e.beginListen("lost-ownership",this._lostSubscription),e.beginListen("gained-ownership-broadcast",this._gainSubscription),this._hasOwnerResponse=this.onHasOwnerResponse.bind(this),e.beginListen("response-has-owner",this._hasOwnerResponse)}_isWaitingForOwnershipResponseCallback=null;updateIsOwned(){this.connection.send("request-has-owner",{guid:this.guid})}onHasOwnerResponse(e){e.guid===this.guid&&(this._isOwned=e.value)}requestOwnershipIfNotOwned(){return this._isWaitingForOwnershipResponseCallback!==null?this:(this._isWaitingForOwnershipResponseCallback=this.waitForHasOwnershipRequestResponse.bind(this),this.connection.beginListen("response-has-owner",this._isWaitingForOwnershipResponseCallback),this.connection.send("request-has-owner",{guid:this.guid}),this)}waitForHasOwnershipRequestResponse(e){e.guid===this.guid&&(this._isWaitingForOwnershipResponseCallback&&(this.connection.stopListening("response-has-owner",this._isWaitingForOwnershipResponseCallback),this._isWaitingForOwnershipResponseCallback=null),this._isOwned=e.value,e.value||(vl&&console.log("request ownership",this.guid),this.requestOwnership()))}requestOwnershipAsync(){return new Promise((e,t)=>{this.requestOwnership();let i=0,n=()=>{if(i++>10)return t("Timeout");setTimeout(()=>{this.hasOwnership?e(this):n()},100)};n()})}requestOwnership(){return vl&&console.log("Request ownership",this.guid),this.connection.send("request-ownership",{guid:this.guid}),this}freeOwnership(){return this.connection.send("remove-ownership",{guid:this.guid}),this._isWaitingForOwnershipResponseCallback&&(this.connection.stopListening("response-has-owner",this._isWaitingForOwnershipResponseCallback),this._isWaitingForOwnershipResponseCallback=null),this}destroy(){this.connection.stopListening("gained-ownership",this._gainSubscription),this.connection.stopListening("lost-ownership",this._lostSubscription),this.connection.stopListening("response-has-owner",this._hasOwnerResponse),this._isWaitingForOwnershipResponseCallback&&(this.connection.stopListening("response-has-owner",this._isWaitingForOwnershipResponseCallback),this._isWaitingForOwnershipResponseCallback=null)}onGainedOwnership(e){e.guid===this.guid&&(this._isOwned=!0,this.connection.connectionId===e.owner?(vl&&console.log("GAINED OWNERSHIP",this.guid),this._hasOwnership=!0):this._hasOwnership=!1)}onLostOwnership(e){e===this.guid&&(vl&&console.log("LOST OWNERSHIP",this.guid),this._hasOwnership=!1,this._isOwned=!1)}},yl=class{context;_peer=null;constructor(e){this.context=e}get peer(){return this._peer||(this._peer=new gl),this._peer}tryGetState(e){return e==="invalid"?null:this._state[e]}get connectionId(){return this._connectionId}get isDebugEnabled(){return dt}get isConnected(){return this.connected}get currentRoomName(){return this._currentRoomName}get allowEditing(){return this._currentRoomAllowEditing}get currentRoomViewId(){return this._currentRoomViewId}get isInRoom(){return this._isInRoom}get currentLatency(){return this._currentDelay}userIsInRoom(e){return this._currentInRoom.indexOf(e)!==-1}_usersInRoomCopy=[];usersInRoom(e=null){e||(e=this._usersInRoomCopy),e.length=0;for(let t of this._currentInRoom)e.push(t);return e}joinRoom(e,t=!1){this.connect(),dt&&console.log("join: "+e),this.send("join-room",{room:e,viewOnly:t},0)}leaveRoom(e=null){if(e||(e=this.currentRoomName),!e){console.error("Can not leave unknown room");return}this.send("leave-room",{room:e})}send(e,t=null,i=2){if(t===null&&(t={}),i===2){this._defaultMessagesBuffer.push({key:e,value:t});return}return this.sendWithWebsocket(e,t,i)}sendDeleteRemoteState(e){this.send("delete-state",{guid:e,dontSave:!0}),delete this._state[e]}sendDeleteRemoteStateAll(){this.send("delete-all-state"),this._state={}}sendBinary(e){dt&&console.log("<< bin",e.length),this._ws?.send(e)}_defaultMessagesBuffer=[];_defaultMessagesBufferArray=[];sendBufferedMessagesNow(){if(!this._ws)return;this._defaultMessagesBufferArray.length=0;let e=Object.keys(this._defaultMessagesBuffer).length;for(let i in this._defaultMessagesBuffer){let n=this._defaultMessagesBuffer[i];if(e<=1){this.sendWithWebsocket(n.key,n.value,3);break}let r=this.toMessage(n.key,n.value);this._defaultMessagesBufferArray.push(r)}if(this._defaultMessagesBuffer.length=0,this._defaultMessagesBufferArray.length>0&&dt&&console.log("SEND BUFFERED",this._defaultMessagesBufferArray.length),this._defaultMessagesBufferArray.length<=0)return;let t=JSON.stringify(this._defaultMessagesBufferArray);this._ws?.send(t)}beginListen(e,t){return this._listeners[e]||(this._listeners[e]=[]),this._listeners[e].push(t),t}stopListening(e,t){if(!t||!this._listeners[e])return;let i=this._listeners[e].indexOf(t);i>=0&&this._listeners[e].splice(i,1)}beginListenBinrary(e,t){return this._listenersBinary[e]||(this._listenersBinary[e]=[]),this._listenersBinary[e].push(t),t}stopListenBinary(e,t){if(!this._listenersBinary[e])return;let i=this._listenersBinary[e].indexOf(t);i>=0&&this._listenersBinary[e].splice(i,1)}netWebSocketUrlProvider;registerProvider(e){this.netWebSocketUrlProvider=e}connect(){if(this.connected)return;dt&&console.log("connecting");let e=this.netWebSocketUrlProvider?.getWebsocketUrl();e?bl=e:gp()&&(bl="wss://"+window.location.host+"/socket"),this.connectWebsocket()}_listeners={};_listenersBinary={};connected=!1;channelId;_connectionId=null;_isConnectingToWebsocket=!1;_ws;_waitingForSocket={};_isInRoom=!1;_currentRoomName=null;_currentRoomViewId=null;_currentRoomAllowEditing=!0;_currentInRoom=[];_state={};_currentDelay=-1;connectWebsocket(){if(this._isConnectingToWebsocket)return;this._isConnectingToWebsocket=!0,console.log("Connecting to "+bl);let e=new gv(bl).onOpen(()=>{this._ws=e,this._isConnectingToWebsocket=!1,this.connected=!0,console.log("Connected to websocket"),this.onSendQueued(0)}).onClose(t=>{this.connected=!1,this._isInRoom=!1}).onError((t,i)=>{console.error(t,i)}).onMessage(this.onMessage.bind(this)).onRetry(()=>{console.log("websocket connection retry")}).build()}onMessage(e,t){let i=t.data;try{if(typeof i!="string"){i.size&&this.handleIncomingBinaryMessage(i);return}let n=JSON.parse(i);if(Array.isArray(n))for(let r of n)this.handleIncomingStringMessage(r);else this.handleIncomingStringMessage(n);return}catch{dt&&i==="pong"&&console.log("<<",i)}}async handleIncomingBinaryMessage(e){let t=await e.arrayBuffer();var i=new Uint8Array(t);let n=new Hi(i),r=n.getBufferIdentifier(),s=this._listenersBinary[r],a=bf(n),c=vf(a);if(c&&typeof c=="string"&&(this._state[c]=a),!s)return;let d=a??n;for(let l of s)l(d)}handleIncomingStringMessage(e){if(dt&&console.log("<<",e.key??e),e.key)switch(e.key){case"connection-start-info":if(e.data){let s=e.data;s&&(console.assert(s.id!==void 0&&s.id!==null&&s.id.length>0,"server did not send connection id",s.id),console.log("Your id is: "+s.id,this.context.alias??""),this._connectionId=s.id)}else console.warn("Expected connection id in "+e.key);break;case"joined-room":if(dt&&console.log(e),e){this._isInRoom=!0;let s=e;this._currentRoomName=s.room,this._currentRoomViewId=s.viewId,this._currentRoomAllowEditing=s.allowEditing??!0,console.log("Room view id",this._currentRoomViewId),this._currentInRoom.length=0,this._currentInRoom.push(...s.inRoom),dt&&console.log("joined room with",this._currentInRoom,this.context.alias??"")}this.onSendQueued(1);break;case"left-room":e.room===this.currentRoomName&&(this._isInRoom=!1,this._currentRoomName=null,this._currentInRoom.length=0);break;case"user-joined-room":if(e.data){let s=e.data;this._currentInRoom.push(s.userId),dt&&console.log(s.userId+" joined","now in room:",this._currentInRoom)}break;case"user-left-room":if(e.data){let s=e.data,a=this._currentInRoom.indexOf(s.userId);a>=0&&(console.log(s.userId+" left",this.context.alias??""),this._currentInRoom.splice(a,1)),s.userId===this.connectionId&&console.log("you left the room")}break;case"all-room-state-deleted":dt&&console.log("RECEIVED all-room-state-deleted"),this._state={};break;case"ping":case"pong":let r=e.data?.time;r&&(this._currentDelay=this.context.time.time-r),dt&&console.log("Current latency: "+this._currentDelay.toFixed(1)+" sec","Clients in room: "+this._currentInRoom?.length);break}let t=this._listeners[e.key];if(t)for(let n of t)n(e.data);let i=e.data;i&&(this._state[i.guid]=i)}toMessage(e,t){return{key:e,data:t}}sendWithWebsocket(e,t,i=1){if(!this._ws){let r=this._waitingForSocket[i]||[];r.push(()=>this.sendWithWebsocket(e,t,i)),this._waitingForSocket[i]=r;return}let n=JSON.stringify(this.toMessage(e,t));dt&&console.log(">>",e),this._ws.send(n)}onSendQueued(e){let t=this._waitingForSocket[e];if(t){for(let i of t)i();t.length=0}}};import{EffectComposer as Gv}from"three/examples/jsm/postprocessing/EffectComposer.js";import{RenderPass as Vv}from"three/examples/jsm/postprocessing/RenderPass";import*as Yn from"three";var Pf=Ha(Sf(),1),_l=class{success;filename;hash;size;url;constructor(e,t,i,n){this.success=e,this.filename=t,this.hash=i,this.size=n}};async function Of(o,e){let t=await o.arrayBuffer(),i=kf(t),n=o.name.split(".").pop(),r=i+"."+n,s=o.name.split(".").shift();console.assert(s!==void 0);let a={alias:s,filename:r},d=await(await fetch(e+"/exists",{method:"POST",body:JSON.stringify(a)})).json();if(d.success||console.warn("exists check did fail"),d.exists)return console.log("file already exists",i),new _l(!0,r,i,o.size);console.log("begin uploading file",s,o.size);let l=new FormData;l.append("file",o);let u={};u.filesize=o.size,s&&(u.alias=s);let g=await(await fetch(e+"/upload/file",{method:"POST",body:l,headers:u})).json();if(g?.success===!1)return g.message!==void 0?console.error("Upload failed:",g.message):console.error("Upload failed"),null;console.assert(g.hash_sum===i,"hash sum did not match","received:",g.hash_sum,"expected:",i),g.success&&console.log("successfully uploaded",i,g.id);let E=new _l(g.success,r,i,o.size);return E.url=e,E}function kf(o){return(0,Pf.default)(new Uint8Array(o))}async function xl(o,e,t,i,n=!1){try{let r=await fetch(i+"/download/file",{method:"POST",body:o});if(r.status!==200)return console.error("download failed",r),null;let s=await r.blob(),a=await s.arrayBuffer();n||console.assert(s.size===t,"size mismatch","expected:",t,"got:",s.size);let c=kf(a);return n||console.assert(c===e,"hash mismatch, downloaded file is invalid"),s.arrayBuffer()}catch(r){console.error(r)}return null}async function Mf(o,e){let t=await fetch(o),i=t.body?.getReader(),n=t.headers.get("Content-Length"),r=n?parseInt(n):0;if(!i)return null;let s=0,a=[];for(;;){let{done:l,value:u}=await i.read();if(u&&(a.push(u),s+=u.length,e.call(null,new ProgressEvent("progress",{loaded:s,total:r}))),l)break}let c=new Uint8Array(s),d=0;for(let l of a)c.set(l,d),d+=l.length;return c}function wl(o,e,t){console.warn("Adding components on object has been temporarily disabled")}var Af,If=null;function qe(){return Af}function El(o){If!==o&&(If=o,Af=new o)}var jd=class{guid;file_name;file_hash;file_size;position;seed;sender;serverUrl;parentGuid;boundsSize;constructor(e,t,i,n,r,s,a,c){this.seed=t,this.guid=i,this.file_name=n,this.file_hash=r,this.file_size=s,this.position=a,this.sender=e,this.serverUrl=c}};async function Df(o,e,t){let i=o.name;return i.endsWith(".gltf")||i.endsWith(".glb")?new Promise((n,r)=>{let s=new FileReader;s.readAsDataURL(o),s.onloadend=async a=>{let c=s.result,d=rl(),l=new Re(d),u=await qe().loadSync(e,c,l,!0);if(u&&u.scene){let h=u.scene;if(!h.guid){let g=new Re(d);h.guid=g.generateUUID()}t&&_v(e.connection,o,d,h,t),wl(h,l,u),n(u)}}}):(console.warn("Unsupported file type: "+i),console.log(o),null)}async function Lf(o,e){return new Promise(async(t,i)=>{let n=rl(),r=new Re(n),s=await qe().loadSync(e,o.toString(),r,!0);if(s&&s.scene){let a=s.scene;wl(a,r,s),t(s)}else console.warn("Unsupported file type: "+o.toString())})}function jf(o){o.connection.beginListen("file-spawned",async e=>{if(e.sender!==o.connection.connectionId){console.log("received file event",e),xv(e,o);let t=null;try{t=await xl(e.file_name,e.file_hash,e.file_size,e.serverUrl)}finally{wv(e,o)}if(t){let i=new Re(e.seed),n=await qe().parseSync(o,t,null,i);if(n&&n.scene){let r=n.scene;if(wl(r,i,n),e.parentGuid){let s=Ir(e.parentGuid,o.scene);"add"in s&&s.add(r)}r.parent||o.scene.add(r),e.position!==null&&r.position.copy(e.position)}}else console.error("download didnt return file")}})}async function _v(o,e,t,i,n){if(!o.connectionId){console.error("Can not upload file - no connection id");return}if(!i.guid){console.error("Can not upload file - no guid",i,i.guid);return}let r=await Of(e,n);if(!r)return;if(!r.filename){console.error("Can not send upload event - no filename",e.name);return}if(!r.hash){console.error("Can not send upload event - no hash",e.name);return}let s=new jd(o.connectionId,t,i.guid,r.filename,r.hash,e.size,i.position,r.url??n);i.parent&&(s.parentGuid=i.parent.guid),o.send("file-spawned",s)}var Hd={};function xv(o,e){let t=new Yn.BoxGeometry,i=new Yn.Mesh(t,new Yn.MeshBasicMaterial({color:65280})),n=new Yn.BoxHelper(i,5592405);if(Hd[o.guid]=n,e.scene.add(n),o.parentGuid){let r=Ir(o.parentGuid,e.scene);r&&r.add(n)}o.position&&n.position.copy(o.position)}function wv(o,e){let t=o.guid,i=Hd[t];i&&(delete Hd[t],i.removeFromParent())}import*as Hf from"three";var s0=P("debugassets");var Cl=class{constructor(){window.addEventListener("unhandledrejection",e=>{if(e.defaultPrevented)return;let t=e?.reason?.path;if(t){let i=t[0];i&&i.tagName==="IMG"&&(console.warn(`Could not load image:
152
- `+i.src),e.preventDefault())}})}texturesLoader=new Hf.TextureLoader;textures={};texturesLoading={};async loadTexture(e){if(this.textures[e])return this.textures[e];if(this.texturesLoading[e])return await this.texturesLoading[e];let t=this.texturesLoader.loadAsync(e);this.texturesLoading[e]=t;let i=await t;return delete this.texturesLoading[e],this.textures[e]=i,i}getTexture(e){return this._textures.get(e)||null}findTexture(e){for(let t of this._textures.values())if(t.name===e)return t;return null}findMesh(e){for(let t of this._meshes.values())if(t.name===e)return t;return null}findMaterial(e){for(let t of this._materials.values())if(t.name===e)return t;return null}async registerGltf(e){}registerAsset(e){}_materials=new Map;_meshes=new Map;_textures=new Map};import*as Xf from"three/examples/jsm/libs/stats.module";import{Vector4 as kv,EquirectangularReflectionMapping as Rl,sRGBEncoding as Sl,WebGLCubeRenderTarget as Mv}from"three";import{LightProbeGenerator as Iv}from"three/examples/jsm/lights/LightProbeGenerator.js";import*as Ff from"three";var Cv=new Ff.FileLoader;async function Fd(o){return new Promise((e,t)=>{Cv.load(o,e,void 0,t)})}import{Vector4 as Kn,FileLoader as Rv,DataTexture as zd,RGBAFormat as Sv,Color as Pv}from"three";var $s=new Uint8Array(4);$s[0]=255;$s[1]=255;$s[2]=255;$s[3]=255;var Gf=new zd($s,1,1,Sv);function Tl(o,e=1){let t="alpha"in o,i=e*e,n=new Uint8Array(4*i),r=Math.floor(o.r*255),s=Math.floor(o.g*255),a=Math.floor(o.b*255);for(let d=0;d<i;d++){let l=d*4;n[l+0]=r,n[l+1]=s,n[l+2]=a,t?n[l+3]=Math.floor(o.alpha*255):n[l+3]=255}let c=new zd(n,e,e);return c.needsUpdate=!0,c}function Vf(o,e,t,i=1,n=3){let a=i*n,c=[o,e,t],d=c.length,l=new Uint8Array(4*d*a),u=new Pv;for(let g=0;g<n;g++){let E=Math.floor(g/n*d),_=H.clamp(E+1,0,d-1),x=c[E],m=c[_],f=g/n*d%1;u.lerpColors(x,m,f);let p=Math.floor(u.r*255),b=Math.floor(u.g*255),w=Math.floor(u.b*255);for(let C=0;C<i;C++){let T=(g*i+C)*4;l[T+0]=p,l[T+1]=b,l[T+2]=w,l[T+3]=255}}let h=new zd(l,i,n);return h.needsUpdate=!0,h}var Ud=class{stage;code;constructor(e,t){this.stage=e,this.code=t}},Gd=class{loaded=new Map;async loadShader(e){let t=await Fd(e);return JSON.parse(t)}async load(e,t){if(this.loaded.has(t))return new Promise((r,s)=>{let a=this.loaded.get(t);a?r(a):s("Shader not found")});let i=await Fd(t),n=new Ud(e,i);return this.loaded.set(t,n),n}},u0=new Gd;function ea(o,e){let t=o.elements;e||(e=[]),e.length=0;for(let i=0;i<16;i+=4){let n=t[i],r=t[i+1],s=t[i+2],a=t[i+3],c=new Kn(n,r,s,a);e.push(c)}return e}var Bd=[],Bf=[];function Wd(o,e){if(Bd.length===0)for(let t=0;t<27;t++)Bd.push(0);e||(e=Bd);for(let t=0;t<27;t++)Bf[t]=e[t];e=Bf,o.unity_SHAr={value:new Kn(e[9],e[3],e[6],e[0])},o.unity_SHBr={value:new Kn(e[12],e[15],e[18],e[21])},o.unity_SHAg={value:new Kn(e[10],e[4],e[7],e[1])},o.unity_SHBg={value:new Kn(e[13],e[16],e[19],e[22])},o.unity_SHAb={value:new Kn(e[11],e[5],e[8],e[2])},o.unity_SHBb={value:new Kn(e[14],e[17],e[20],e[23])},o.unity_SHC={value:new Kn(e[24],e[25],e[26],1)}}var Vd=class{vertexShader;fragmentShader;technique;constructor(e,t,i){this.vertexShader=e,this.fragmentShader=t,this.technique=i}};async function zf(o,e){if(!o)return console.error("Can not find technique: no shader data"),null;let t=o.programs[e],i=t.vertexShader,n=t.fragmentShader;if(i!==void 0&&n!==void 0){let r=o.shaders[i],s=o.shaders[n];if(r.uri&&s.uri||r.code&&s.code){if(!r.code&&r.uri&&await Uf(r),!s.code&&s.uri&&await Uf(s),!r.code||!s.code)return null;let a=o.techniques[e];return new Vd(r.code,s.code,a)}}return console.error("Shader technique not found",e),null}async function Uf(o){let e=o.uri;if(!!e)if(e.endsWith(".glsl")){let i=await new Rv().loadAsync(e);o.code=i.toString()}else o.code=Ov(o.uri)}function Ov(o){return decodeURIComponent(Array.prototype.map.call(atob(o),function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)}).join(""))}var Nd=P("debugenvlight"),Qd=(n=>(n[n.Skybox=0]="Skybox",n[n.Trilight=1]="Trilight",n[n.Flat=3]="Flat",n[n.Custom=4]="Custom",n))(Qd||{});var Pl=class{context;constructor(e){this.context=e,this.context.pre_update_callbacks.push(this.preUpdate.bind(this))}sceneLightSettings;preUpdate(){let e=this.context.time;this._timevec4.x=e.time,this._timevec4.y=Math.sin(e.time),this._timevec4.z=Math.cos(e.time),this._timevec4.w=e.deltaTime}_timevec4=new kv;get timeVec4(){return this._timevec4}get environmentIntensity(){return this.sceneLightSettings?this.sceneLightSettings.ambientIntensity:1}registerSceneLightSettings(e){this.sceneLightSettings=e}registerReflection(e,t){let i=new Xd(this.context,t,1);this._lighting[e]=i}getReflection(e){return this._lighting[e]}enableReflection(e){switch(Nd&&console.log(this.sceneLightSettings?Qd[this.sceneLightSettings.ambientMode]:"Unknown ambient mode"),this.sceneLightSettings?.ambientMode){case 0:case 4:let t=this.getReflection(e);if(t&&t.Source){let i=this.context.scene,n=t.Source;n.encoding=Sl,n.mapping=Rl,i.environment=n;return}break}if(this.sceneLightSettings?.environmentReflectionSource===1)switch(this.sceneLightSettings?.ambientMode){case 1:if(this.sceneLightSettings.ambientTrilight){let t=this.sceneLightSettings.ambientTrilight,i=Vf(t[0],t[1],t[2],64,64);i.encoding=Sl,i.mapping=Rl,this.context.scene.environment=i}else console.error("Missing ambient trilight",this.sceneLightSettings.sourceId);return;case 3:if(this.sceneLightSettings.ambientLight){let t=Tl(this.sceneLightSettings.ambientLight,64);t.encoding=Sl,t.mapping=Rl,this.context.scene.environment=t}else console.error("Missing ambientlight",this.sceneLightSettings.sourceId);return;default:return}}disableReflection(){let e=this.context.scene;e.environment=null}async getSceneLightingData(e){return Nd&&console.log("GET SCENE LIGHT DATA"),this._waitPromise?this._waitPromise:(this._waitPromise=new Promise((t,i)=>{let n=setInterval(async()=>{let r=this.getReflection(e);r&&(clearInterval(n),t(r.getSphericalHarmonicsArray(this.sceneLightSettings?.ambientIntensity??1)))},10)}),this._waitPromise)}_waitPromise;_lighting={}},Xd=class{get Source(){return this._source}get Array(){return this._sphericalHarmonicsArray}_context;_source;_sphericalHarmonics=null;_sphericalHarmonicsArray;_ambientScale=1;_lightProbe;constructor(e,t,i=1){this._context=e,this._source=t,this._ambientScale=i,t.mapping=Rl,t.encoding=Sl}getSphericalHarmonicsArray(e=1){if(this._sphericalHarmonicsArray?.length&&this._source)return{array:this._sphericalHarmonicsArray,texture:this._source,lightProbe:this._lightProbe};try{let t=this._source,i=null;if(t){Nd&&console.log("GENERATING LIGHT PROBE",t);let n=Math.min(t.image.width,512);i=new Mv(n).fromEquirectangularTexture(this._context.renderer,t),this._source=i.texture}if(this._sphericalHarmonicsArray=[],i){let n=Iv.fromCubeRenderTarget(this._context.renderer,i);this._lightProbe=n;let r=this._ambientScale*(e*e*Math.PI*.5)-1;this._sphericalHarmonics=n.sh,this._sphericalHarmonicsArray=this._sphericalHarmonics.toArray();let s=e/(Math.PI*.5);for(let a=0;a<this._sphericalHarmonicsArray.length;a++)this._sphericalHarmonicsArray[a]*=s;if(n.sh.scale(r),this._source)return{array:this._sphericalHarmonicsArray,texture:this._source,lightProbe:n}}}catch(t){console.error(t)}return null}};import{Object3D as Av}from"three";var Br=P("debugaddressables"),Ol=class{_context;constructor(e){this._context=e,this._context.pre_update_callbacks.push(this.preUpdate.bind(this))}preUpdate(){}_assetReferences={};findAssetReference(e){return this._assetReferences[e]||null}registerAssetReference(e){return e.uri&&(this._assetReferences[e.uri]?console.warn("Asset reference already registered",e):this._assetReferences[e.uri]=e),e}},Ho=class{static getOrCreate(e,t,i){let n=Mi(e,t);Br&&console.log("GetOrCreate Addressable from",e,t,"FinalPath=",n);let r=i.addressables,s=r.findAssetReference(n);if(s)return s;let a=new Ho(n,i.hash);return r.registerAssetReference(a),a}get asset(){return this._glbRoot??this._asset}set asset(e){this._asset=e}_loading;get uri(){return this._uri}get rawAsset(){return this._asset}_asset;_glbRoot;_uri;_progressListeners=[];_hash;_hashedUri;_isLoadingRawBinary=!1;_rawBinary;constructor(e,t){this._uri=e,this._hash=t,e.includes("?v=")?this._hashedUri=e:this._hashedUri=t?e+"?v="+t:e,Yp(this._uri,this.onResolvePrefab.bind(this))}async onResolvePrefab(e){return e===this.uri&&(this.mustLoad&&await this.loadAssetAsync(),this.asset)?this.asset:null}get mustLoad(){return!this.asset||this.asset.__destroyed===!0}isLoaded(){return this._rawBinary||this.asset!==void 0}unload(){this.asset&&(Br&&console.log("Unload",this.asset),this.asset.scene?oi(this.asset.scene):oi(this.asset)),this.asset=null}async preload(){if(!this.mustLoad||this._isLoadingRawBinary)return null;if(this._rawBinary!==void 0)return this._rawBinary;this._isLoadingRawBinary=!0,Br&&console.log("Preload",this._hashedUri);let e=await Mf(this._hashedUri,t=>{this.raiseProgressEvent(t)});return this._rawBinary=e?.buffer??null,this._isLoadingRawBinary=!1,this._rawBinary}async loadAssetAsync(e){if(!this.mustLoad)return;if(e&&this._progressListeners.push(e),this._loading!==void 0)return this._loading;let t=G.Current;this._rawBinary?(this._loading=qe().parseSync(t,this._rawBinary,this.uri,null),this.raiseProgressEvent(new ProgressEvent("progress",{loaded:this._rawBinary.byteLength,total:this._rawBinary.byteLength}))):(Br&&console.log("Load async",this.uri),this._loading=qe().loadSync(t,this._hashedUri,null,!0,n=>{this.raiseProgressEvent(n)}));let i=await this._loading;if(this._progressListeners.length=0,this._glbRoot=this.tryGetActualGameObjectRoot(i),this._loading=void 0,i)return gn(t),i.scene!==void 0&&(this.asset=i),this.asset}async instantiate(e){return this.onInstantiate(e,!1)}async instantiateSynced(e,t=!0){return this.onInstantiate(e,!0,t)}beginListenDownload(e){this._progressListeners.indexOf(e)<0&&this._progressListeners.push(e)}endListenDownload(e){let t=this._progressListeners.indexOf(e);t>=0&&this._progressListeners.splice(t,1)}raiseProgressEvent(e){for(let t of this._progressListeners)t(this,e)}async onInstantiate(e,t=!1,i){let n=G.Current;if(e||(e=n.scene),this.mustLoad&&await this.loadAssetAsync(),Br&&console.log("Instantiate",this.uri,"parent:",e),this.asset){Br&&console.log("Add to scene",this.asset);let r=e instanceof Ue?e:null;if(r||(r=new Ue),typeof e=="object"&&(e instanceof Av?r.parent=e:Object.assign(r,e)),Ho.currentlyInstantiating.indexOf(this.uri)>=0)return console.error("Recursive instantiation of",this.uri),null;try{if(Ho.currentlyInstantiating.push(this.uri),t){r.context=n;let s=this.asset;s.guid=this.uri;let a=nl(s,r,void 0,i);if(a)return a}else{let s=Ar(this.asset,r);if(s)return s}}finally{n.post_render_callbacks.push(()=>Ho.currentlyInstantiating.pop())}}else Br&&console.warn("Failed to load asset",this.uri);return null}tryGetActualGameObjectRoot(e){if(e&&e.scene){let t=e.scene;return t.isGroup&&t.children.length===1&&t.children[0].name+"glb"===t.name?t.children[0]:t}return null}},et=Ho;I(et,"currentlyInstantiating",[]);var qd=class extends Di{constructor(){super([et])}onSerialize(e,t){if(e&&e.uri!==void 0&&typeof e.uri=="string")return e.uri}onDeserialize(e,t){return typeof e=="string"?t.context?t.gltfId?et.getOrCreate(t.gltfId,e,t.context):(console.error("Missing spurce id"),null):(console.error("Missing context"),null):null}};new qd;var kl=class extends EventTarget{context;get hasFocus(){return document.hasFocus()}get isVisible(){return this._isVisible}_isVisible=!0;constructor(e){super(),this.context=e,window.addEventListener("visibilitychange",this.onVisiblityChanged.bind(this),!1)}onVisiblityChanged(e){switch(e.target.visibilityState){case"hidden":this._isVisible=!1,this.dispatchEvent(new Event("application-hidden"));break;case"visible":this._isVisible=!0,this.dispatchEvent(new Event("application-visible"));break}}};import{FloatType as Dv,HalfFloatType as Lv,sRGBEncoding as jv}from"three";var Wf="NEEDLE_lightmaps",Hv=P("debuglightmapsextension"),ta=(i=>(i[i.Lightmap=0]="Lightmap",i[i.Skybox=1]="Skybox",i[i.Reflection=2]="Reflection",i))(ta||{}),Ml=class{get name(){return Wf}parser;registry;source;constructor(e,t,i){this.parser=e,this.registry=t,this.source=i}afterRoot(e){let t=this.parser.json.extensions;if(t){let i=t[Wf];if(i){let n=i.textures;return n?.length?(Hv&&console.log(i),new Promise(async(r,s)=>{let a=[];for(let c of n)if(c.pointer){let d=wo(this.parser,c.pointer).then(l=>{let u=l;u?.isTexture&&(this.registry?(c.type!==0&&(u.encoding=jv),c.type===1&&(u.type==Dv||u.type==Lv)&&(u.flipY=!0),this.registry.registerTexture(this.source,c.type,u,c.index)):console.log(ta[c.type],c.pointer,u))});a.push(d)}await Promise.all(a),r()})):null}}return null}};import*as Fi from"three";var Nf=!!P("debuglightmaps"),Il=class{_context;_lightmaps=new Map;constructor(e){this._context=e}registerTexture(e,t,i,n){Nf&&console.log("Registering lightmap",e,ta[t],i),this._lightmaps.has(e)||this._lightmaps.set(e,new Map);let r=this._lightmaps.get(e),s=r?.get(t)??[];s.length<n&&(s.length=n+1),s[n]=i,r?.set(t,s)}tryGetLightmap(e,t=0){return this.tryGet(e,0,t)}tryGetSkybox(e){return this.tryGet(e,1,0)}tryGetReflection(e){return this.tryGet(e,2,0)}tryGet(e,t,i){if(!e)return Nf&&console.warn("Missing source id"),null;let n=this._lightmaps.get(e)?.get(t)??null;return!n?.length||n.length<=i?null:n[i]}};Fi.ShaderChunk.lights_fragment_maps=Fi.ShaderChunk.lights_fragment_maps.replace("vec4 lightMapTexel = texture2D( lightMap, vUv2 );",`
151
+ https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis`,e))),Eu&&console.log("FIND",e),e!=null){for(let i=0;i<o.userData.components.length;i++){let n=o.userData.components[i];if(e===null||n.constructor.name===e.name||n.constructor.name===e)if(Eu&&console.log("MATCH BY NAME",n),t)t.push(n);else return n}for(let i=0;i<o.userData.components.length;i++){let n=o.userData.components[i],r=Object.getPrototypeOf(n.constructor);do{if(r===e)if(Eu&&console.log("MATCH BY PROTOYPE",r),t)t.push(n);else return n;r=Object.getPrototypeOf(r)}while(r)}return t}}}function Lr(o,e){return rf(o,e)}function Oo(o,e,t){return t||(t=[]),rf(o,e,t)}function jr(o,e,t){let i=Lr(o,e);if(t===!1&&i?.enabled===!1)return null;if(i)return i;for(let n=0;n<o?.children?.length;n++){let r=jr(o.children[n],e);if(r)return r}return null}function ko(o,e,t){t||(t=[]),Oo(o,e,t);for(let i=0;i<o?.children?.length;i++)ko(o.children[i],e,t);return t}function Po(o,e){if(!o)return null;if(Array.isArray(o)){for(let i=0;i<o.length;i++){let n=Hb(o[i]),r=Po(n,e);if(r)return r}return null}let t=Lr(o,e);return t||(o.parent?Po(o.parent,e):null)}function Ks(o,e,t){return t||(t=[]),o?(Oo(o,e,t),o.parent?Ks(o.parent,e,t):t):t}function of(o,e,t){if(!o)return null;if(!e&&(e=G.Current,!e))return console.error("Can not search object without any needle context or scene!!!"),null;let i=e;if(i.isScene||(i=e?.scene),!i)return null;for(let n in i.children){let r=i.children[n];if(t===!1&&r[ji]===!1)continue;if(r.constructor==o)return r;let s=jr(r,o);if(s)return s}return null}function sf(o,e,t){if(!o)return e;if(!t&&(t=G.Current,!t))return console.error("Can not search object without any needle context or scene!!!"),e;let i=t.isScene===!0||t.isObject3D===!0?t:t?.scene;if(!i)return e;for(let n in i.children){let r=i.children[n];if(r.constructor==o)return r;ko(r,o,e)}return e}function Mo(o){o&&o.isObject3D===!0&&Zp(o,ct)}ct.prototype.SetActive=function(o){this.visible=o};ct.prototype.addNewComponent=function(o){return Xn(this,new o)};ct.prototype.removeComponent=function(o){return sl(this,o)};ct.prototype.getOrAddComponent=function(o){return al(this,o)};ct.prototype.getComponent=function(o){return Lr(this,o)};ct.prototype.getComponents=function(o,e){return Oo(this,o,e)};ct.prototype.getComponentInChildren=function(o){return jr(this,o)};ct.prototype.getComponentsInChildren=function(o,e){return ko(this,o,e)};ct.prototype.getComponentInParent=function(o){return Po(this,o)};ct.prototype.getComponentsInParent=function(o,e){return Ks(this,o,e)};Object.getOwnPropertyDescriptor(ct.prototype,"activeSelf")||Object.defineProperty(ct.prototype,"activeSelf",{get:function(){return gn(this)},set:function(o){Io(this,o,!0)}});$p(ct);var cl=Symbol("NEEDLE_NEED_UPDATE_INSTANCE"),oe=class{static isUsingInstancing(e){return e.__isUsingInstancing===!0}static markDirty(e,t=!0){if(!!e&&(this.isUsingInstancing(e)&&(e[cl]=!0,e.matrixWorldNeedsUpdate=!0),t))for(let i of e.children)oe.markDirty(i,!0)}};var Hr=P("debuggetcomponent"),Fb=(u=>(u[u.None=0]="None",u[u.HideInHierarchy=1]="HideInHierarchy",u[u.HideInInspector=2]="HideInInspector",u[u.DontSaveInEditor=4]="DontSaveInEditor",u[u.NotEditable=8]="NotEditable",u[u.DontSaveInBuild=16]="DontSaveInBuild",u[u.DontUnloadUnusedAsset=32]="DontUnloadUnusedAsset",u[u.DontSave=52]="DontSave",u[u.HideAndDontSave=61]="HideAndDontSave",u))(Fb||{}),Ue=class{idProvider;parent;keepWorldPosition;position;rotation;scale;visible;context},Js=Symbol("isActive");function gn(o){let e=o.visible||ul(o);return o[Js]===void 0&&(o[Js]=!0),o[Js]&&e}function Io(o,e,t=!0){return typeof e=="number"&&(e=e>.5),o[Js]=e,t&&(o.visible=e),o[Js]}function lf(o){return o[ji]||ul(o)}function cf(o,e){o.__isUsingInstancing=e}function ul(o){return oe.isUsingInstancing(o)}function Ar(o,e){return Wn(o,e,!0,!0)}function si(o,e=!0,t=!0){let i=o;if(i.isComponent){i.__internalDisable(),i.__internalDestroy();return}let n=o;if(Hr&&console.log(n),e&&n.children)for(let s of n.children)si(s,e,!1);let r=n.userData.components;if(r){let s=r.length;for(let a=0;a<r.length;a++){let c=r[a];c.__internalDisable(),c.__internalDestroy(),r.length<s&&(s=r.length,a--)}}t&&n.removeFromParent()}function ai(o,e,t=!0){if(!!o){if(o.isObject3D||new Error("Expected Object3D but got "+o),o.userData?.components)for(let i=0;i<o.userData.components.length;i++){let n=o.userData.components[i];if(n?.isComponent===!0){let r=e(n);if(r!==void 0)return r}}if(t&&o.children)for(let i=0;i<o.children.length;i++){let n=o.children[i];if(!n)continue;let r=ai(n,e,t);if(r!==void 0)return r}}}function Dr(o,e=null){if(o===null)return null;let t=null;e!==null&&(e.x!==void 0?(t=new Ue,t.position=e):t=e);let i=G.Current;t?.context&&(i=t.context),Hr&&i.alias&&console.log("context",i.alias),t&&!t.idProvider&&(t.idProvider=new Re(Date.now()));let n=[],r={},s={},a=uf(i,o,t,n,r,s);a&&(Ub(r),Bb(s,r)),Hr&&(Xs(o,!0),Xs(a,!0));let c={};for(let u in n){let l=n[u],d=l.guid;t&&t.idProvider&&(l.guid=t.idProvider.generateUUID(),c[d]=l.guid,Hr&&console.log(l.name,l.guid)),ll(l,i),l.__internalNewInstanceCreated&&l.__internalNewInstanceCreated()}for(let u in n){let l=n[u];l.resolveGuids&&l.resolveGuids(c),l.enabled!==!1&&(l.enabled=!0)}return bn(i),a}function uf(o,e,t,i,n,r){if(!e)return null;let s=e.userData;e.userData={};let a=e.children;e.children=[];let c;if(c=e.clone(!1),Mo(c),e.userData=s,e.children=a,n[e.uuid]={original:e,clone:c},e.type==="SkinnedMesh"&&(r[e.uuid]={original:e,clone:c}),t?.visible!==void 0&&(c.visible=t.visible),t?.idProvider){c.uuid=t.idProvider.generateUUID();let l=c;l&&(l.guid=c.uuid)}e.animations&&e.animations.length>0&&(c.animations=[...e.animations]);let u=e.parent;if(u&&u.add(c),t?.position?ie(c,t.position):c.position.copy(e.position),t?.rotation?Ze(c,t.rotation):c.quaternion.copy(e.quaternion),t?.scale?c.scale.copy(t.scale):c.scale.copy(e.scale),t?.parent&&t.parent!=="scene"){let l=null;if(typeof t.parent=="string"?l=Wn(t.parent,o.scene,!0):l=t.parent,l){let d=t.keepWorldPosition===!0?l.attach:l.add;d?d.call(l,c):console.error("Invalid parent object",l,"received when instantiating:",e)}else console.warn("could not find parent:",t.parent)}for(let[l,d]of Object.entries(e.userData))l!=="components"&&(c.userData[l]=d);if(e.userData?.components){let l=e.userData.components,d=[];c.userData.components=d;for(let h=0;h<l.length;h++){let g=l[h],E=Object.create(g);Lt(E,g),d.push(E),E.gameObject=c,i.push(E)}}t&&(t.position=void 0,t.rotation=void 0,t.scale=void 0,t.parent=void 0);for(let l in e.children){let d=e.children[l],h=uf(o,d,t,i,n,r);h&&c.add(h)}return c}function Bb(o,e){for(let t in o){let i=o[t],n=i.original,r=n.skeleton,s=i.clone;if(!r){console.warn("Skinned mesh has no skeleton?",i);continue}let a=r.bones,c=s.skeleton.clone();s.skeleton=c,s.bindMatrix.clone().copy(n.bindMatrix),s.bindMatrixInverse.copy(n.bindMatrixInverse);let u=[];c.bones=u;for(let l=0;l<a.length;l++){let d=a[l],g=e[d.uuid].clone;u.push(g)}}for(let t in o){let i=o[t].clone;i.skeleton.update(),i.bind(i.skeleton,i.bindMatrix),i.updateMatrixWorld(!0)}}function Ub(o){for(let e in o){let i=o[e].clone;if(i.userData?.components)for(let n=0;n<i.userData.components.length;n++){let r=i.userData.components[n],s=Object.entries(r);for(let[a,c]of s)if(Array.isArray(c)){let u=[];r[a]=u;for(let l=0;l<c.length;l++){let d=c[l];if(typeof d!="object"){u.push(d);continue}let h=af(r,a,d,o);h!==void 0?u.push(h):u.push(d)}}else if(typeof c=="object"){let u=af(r,a,c,o);u!==void 0&&(r[a]=u)}}}}function af(o,e,t,i){if(t!=null){if(t.isComponent===!0){let n=t.gameObject;if(n){let r=n.uuid,s=i[r]?.clone;if(!s){Hr&&console.log("reference did not change",e,o,t);return}let a=n.userData.components.indexOf(t);if(a>=0)return Hr&&console.log(e,r),s.userData.components[a];console.warn("could not find component",e,t)}}else if(t.isObject3D===!0){if(e==="gameObject")return;let n=t;if(n){let r=n.uuid,s=i[r]?.clone;if(s)return Hr&&console.log(e,"old",t,"new",s),s}}else if(t.isVector4||t.isVector3||t.isVector2||t.isQuaternion||t.isEuler)return t.clone()}}import vn,{ActiveEvents as lv,CoefficientCombineRule as yn,Collider as cv,ColliderDesc as Zs,EventQueue as uv,JointData as dv,RigidBody as hv,RigidBodyType as Tu,World as pv}from"@dimforge/rapier3d-compat";import{BufferAttribute as Gb,Line as Vb,BoxGeometry as ff,EdgesGeometry as zb,Color as Wb,LineSegments as Nb,LineBasicMaterial as Xb,Mesh as df,SphereGeometry as Qb,Vector3 as qb,Quaternion as Yb}from"three";var wt=new qb,hf=new Yb,Fr=8947848,jt=class{static DrawRay(e,t,i=Fr,n=0,r=!0){let s=$e.getLine(n),a=s.geometry.getAttribute("position");a.setXYZ(0,e.x,e.y,e.z),wt.set(t.x,t.y,t.z).multiplyScalar(999999999),a.setXYZ(1,e.x+wt.x,e.y+wt.y,e.z+wt.z),a.needsUpdate=!0,s.material.color.set(i),s.material.depthTest=r}static DrawDirection(e,t,i=Fr,n=0,r=!0,s=1){let a=$e.getLine(n),c=a.geometry.getAttribute("position");c.setXYZ(0,e.x,e.y,e.z),t.w!==void 0?(wt.set(0,0,-s),hf.set(t.x,t.y,t.z,t.w),wt.applyQuaternion(hf)):(wt.set(t.x,t.y,t.z),wt.multiplyScalar(s)),c.setXYZ(1,e.x+wt.x,e.y+wt.y,e.z+wt.z),c.needsUpdate=!0,a.material.color.set(i),a.material.depthTest=r}static DrawLine(e,t,i=Fr,n=0,r=!0){let s=$e.getLine(n),a=s.geometry.getAttribute("position");a.setXYZ(0,e.x,e.y,e.z),a.setXYZ(1,t.x,t.y,t.z),a.needsUpdate=!0,s.material.color.set(i),s.material.depthTest=r}static DrawWireSphere(e,t,i=Fr,n=0,r=!0){let s=$e.getSphere(t,n,!0);pn(s,e.x,e.y,e.z),s.material.color.set(i),s.material.depthTest=r}static DrawSphere(e,t,i=Fr,n=0,r=!0){let s=$e.getSphere(t,n,!1);pn(s,e.x,e.y,e.z),s.material.color.set(i),s.material.depthTest=r}static DrawBox(e,t,i=Fr,n=0,r=!0){let s=$e.getBox(n);s.position.set(e.x,e.y,e.z),s.scale.set(t.x,t.y,t.z),s.material.color.set(i),s.material.depthTest=r,s.material.wireframe=!0}static DrawBox3(e,t=Fr,i=0,n=!0){let r=$e.getBox(i);r.position.copy(e.getCenter(wt)),r.scale.copy(e.getSize(wt)),r.material.color.set(t),r.material.depthTest=n,r.material.wireframe=!0}},Kb=new ff(1,1,1);function dl(o=null){let e=new Wb(o??14540253),t=new zb(Kb);return new Nb(t,new Xb({color:e}))}var pf=Symbol("GizmoCache"),$e=class{static getBox(e){let t=this.boxesCache.pop();if(!t){let i=new ff(1,1,1);t=new df(i)}return this.registerTimedObject(G.Current,t,e,this.boxesCache),t}static getLine(e){let t=this.linesCache.pop();if(!t){t=new Vb;let i=t.geometry.getAttribute("position");i||(i=new Gb(new Float32Array(2*3),3),t.geometry.setAttribute("position",i))}return this.registerTimedObject(G.Current,t,e,this.linesCache),t}static getSphere(e,t,i){let n=this.spheresCache.pop();return n||(n=new df(new Qb(.5,8,8))),n.scale.set(e,e,e),n.material.wireframe=i,this.registerTimedObject(G.Current,n,t,this.spheresCache),n}static registerTimedObject(e,t,i,n){if(!this.contextPostRenderCallbacks.get(e)){let r=()=>{this.onPostRender(e,this.timedObjectsBuffer,this.timesBuffer)};this.contextPostRenderCallbacks.set(e,r),e.post_render_callbacks.push(r)}t[pf]=n,this.timedObjectsBuffer.push(t),this.timesBuffer.push(G.Current.time.time+i),e.scene.add(t)}static onPostRender(e,t,i){let n=e.time.time;for(let r=0;r<t.length;r++)if(n>i[r]){let s=t[r];s[pf].push(s),e.scene.remove(s),t.splice(r,1),i.splice(r,1)}}};I($e,"linesCache",[]),I($e,"spheresCache",[]),I($e,"boxesCache",[]),I($e,"timedObjectsBuffer",new Array),I($e,"timesBuffer",new Array),I($e,"contextPostRenderCallbacks",new Map);var Ao=P("debugphysics"),Ru=P("debugphysicscolliders"),Su=P("debugcollisions"),fv=P("showcolliders"),Do=Symbol("needle component"),Ht=Symbol("physics body"),mv=Symbol("rigidbody"),be=class{ray=void 0;cam=void 0;screenPoint=void 0;raycaster=void 0;results=void 0;targets=void 0;recursive=!0;minDistance=void 0;maxDistance=void 0;lineThreshold=void 0;layerMask=void 0;ignore=void 0;screenPointFromOffset(e,t){this.screenPoint===void 0&&(this.screenPoint=new av),this.screenPoint.x=e/window.innerWidth*2-1,this.screenPoint.y=-(t/window.innerHeight)*2+1}setMask(e){this.layerMask||(this.layerMask=new Pu);let t=this.layerMask;t?t.mask=e:this.layerMask=e}};I(be,"AllLayers",4294967295);var Ou=class{distance;point;object;constructor(e,t,i){this.object=e,this.distance=t,this.point=i}},Br=class{raycaster=new ov;defaultRaycastOptions=new be;targetBuffer=new Array(1);defaultThresholds={Mesh:{},Line:{threshold:0},LOD:{},Points:{threshold:0},Sprite:{}};sphereResults=new Array;sphereMask=new Pu;sphereOverlap(e,t,i=!0){if(this.sphereResults.length=0,!this.context.scene)return this.sphereResults;let n=new sv(e,t),r=this.sphereMask;r.enableAll(),r.disable(2);for(let s of this.context.scene.children)this.onSphereOverlap(s,n,r,this.sphereResults,i);return this.sphereResults.sort((s,a)=>s.distance-a.distance)}tempBoundingBox=new $b;onSphereOverlap(e,t,i,n,r){if(e.type==="Mesh"&&e.layers.test(i)){let s=e,a=s.geometry;if(a.boundingBox||a.computeBoundingBox(),a.boundingBox){s.matrixWorldNeedsUpdate&&s.updateMatrixWorld();let c=this.tempBoundingBox.copy(a.boundingBox).applyMatrix4(s.matrixWorld);if(t.intersectsBox(c)){let l=B(e).distanceTo(t.center),d=new Ou(e,l,t.center.clone());if(n.push(d),!r)return}}}if(e.children)for(let s of e.children){let a=n.length;if(this.onSphereOverlap(s,t,i,n,r),a!=n.length&&!r)return}}raycastFromRay(e,t=null){let i=t??this.defaultRaycastOptions;return i.ray=e,this.raycast(i)}raycast(e=null){e||(e=this.defaultRaycastOptions);let t=e.screenPoint??this.context.input.mousePositionRC,i=e.raycaster??this.raycaster;if(i.near=e.minDistance??0,i.far=e.maxDistance??1/0,i.params=this.defaultThresholds,e.lineThreshold?i.params.Line={threshold:e.lineThreshold}:i.params.Line={threshold:0},e.ray)i.ray.copy(e.ray);else{let a=e.cam??this.context.mainCamera;if(!a)return console.error("Can not perform raycast - no main camera found"),this.defaultRaycastOptions.results&&(this.defaultRaycastOptions.results.length=0),this.defaultRaycastOptions.results??[];i.setFromCamera(t,a)}let n=e.targets;n||(n=this.targetBuffer,n[0]=this.context.scene);let r=e.results;r||(this.defaultRaycastOptions.results||(this.defaultRaycastOptions.results=new Array),r=this.defaultRaycastOptions.results),e.layerMask!==void 0?e.layerMask instanceof Pu?i.layers.mask=e.layerMask.mask:i.layers.mask=e.layerMask:(i.layers.enableAll(),i.layers.disable(2)),r.length=0,i.intersectObjects(n,e.recursive,r);let s=e.ignore;return s!==void 0&&s.length>0&&(r=r.filter(a=>!s.includes(a.object))),r}rapierRay=new vn.Ray({x:0,y:0,z:0},{x:0,y:0,z:1});raycastVectorsBuffer=new Mi(()=>new Cu,10);raycastPhysicsFast(e,t=void 0,i=1/0,n=!0){let r=this.getPhysicsRay(this.rapierRay,e,t);if(!r)return null;let s=this.world?.castRay(r,i,n);if(s){let a=r.pointAt(s.toi),c=this.raycastVectorsBuffer.get();return c.set(a.x,a.y,a.z),{point:c,collider:s.collider[Do]}}return null}getPhysicsRay(e,t,i=void 0){let n=this.context.mainCamera;if(t.z===void 0){if(!n)return console.error("Can not perform raycast from 2d point - no main camera found"),null;let a=this.raycastVectorsBuffer.get();(t.x>1||t.y>1||t.y<-1||t.x<-1)&&this.context.input.convertScreenspaceToRaycastSpace(t),a.set(t.x,t.y,-1),a.unproject(n),t=a}let r=t;e.origin.x=r.x,e.origin.y=r.y,e.origin.z=r.z;let s=this.raycastVectorsBuffer.get();if(i)s.set(i.x,i.y,i.z);else{if(!n)return console.error("Can not perform raycast - no camera found"),null;s.set(e.origin.x,e.origin.y,e.origin.z);let a=B(n);s.sub(a)}return s.normalize(),e.dir.x=s.x,e.dir.y=s.y,e.dir.z=s.z,e}_tempPosition=new Cu;_tempQuaternion=new rv;_tempScale=new Cu;_tempMatrix=new nv;_isUpdatingPhysicsWorld=!1;get isUpdating(){return this._isUpdatingPhysicsWorld}context;world;_hasCreatedWorld=!1;eventQueue;collisionHandler;objects=[];bodies=[];_meshCache=new Map;constructor(e){this.context=e}async createWorld(){if(this._hasCreatedWorld){console.error("Invalid call to create physics world: world is already created");return}this._hasCreatedWorld=!0,Br._didLoadPhysicsEngine||(await vn.init().then(()=>vn),Br._didLoadPhysicsEngine=!0);let e={x:0,y:-9.81,z:0};this.world=new pv(e)}clearCaches(){this._meshCache.clear()}addBoxCollider(e,t,i){let n=e.gameObject,r=Ae(n,this._tempPosition).multiply(i);r.multiplyScalar(.5);let s=Zs.cuboid(r.x,r.y,r.z);this.createCollider(e,s,t)}addSphereCollider(e,t,i){let n=e.gameObject,r=Ae(n,this._tempPosition).multiplyScalar(i),s=Zs.ball(r.x);this.createCollider(e,s,t)}addCapsuleCollider(e,t,i,n){let r=e.gameObject,s=Ae(r,this._tempPosition);Ao&&console.log("capsule scale",s,i,n);let a=Zs.capsule(i*.5*s.y-n,n*s.x);this.createCollider(e,a,t)}addMeshCollider(e,t,i,n){let r=t.geometry;if(!r){Ao&&console.warn("Missing mesh geometry",t.name);return}let s=r.getAttribute("position").array,a=r.index?.array;if(Math.abs(n.x-1)>1e-4||Math.abs(n.y-1)>1e-4||Math.abs(n.z-1)>1e-4){let u=r.uuid+"_"+n.x+"_"+n.y+"_"+n.z+"_"+i;if(this._meshCache.has(u))s=this._meshCache.get(u);else{console.warn("Your model is using scaled mesh colliders which is not optimal for performance",t.name,Object.assign({},n),t);let l=new Float32Array(s.length);for(let d=0;d<s.length;d+=3)l[d]=s[d]*n.x,l[d+1]=s[d+1]*n.y,l[d+2]=s[d+2]*n.z;s=l,this._meshCache.set(u,l)}}let c=i?Zs.convexMesh(s):Zs.trimesh(s,a);c&&this.createCollider(e,c)}createCollider(e,t,i){if(!this.world)throw new Error("Physics world not initialized");let n=this._tempMatrix,{rigidBody:r,useExplicitMassProperties:s}=this.getRigidbody(e,this._tempMatrix);n.decompose(this._tempPosition,this._tempQuaternion,this._tempScale),Ae(e.gameObject,this._tempScale),i&&(i.multiply(this._tempScale),this._tempPosition.x-=i.x,this._tempPosition.y+=i.y,this._tempPosition.z+=i.z),t.setTranslation(this._tempPosition.x,this._tempPosition.y,this._tempPosition.z),t.setRotation(this._tempQuaternion),t.setSensor(e.isTrigger);let a=e.sharedMaterial;if(a){switch(yn,t.setRestitution(a.bounciness),a.bounceCombine){case 0:t.setRestitutionCombineRule(yn.Average);break;case 3:t.setRestitutionCombineRule(yn.Max);break;case 2:t.setRestitutionCombineRule(yn.Min);break;case 1:t.setRestitutionCombineRule(yn.Multiply);break}switch(t.setFriction(a.dynamicFriction),a.frictionCombine){case 0:t.setFrictionCombineRule(yn.Average);break;case 3:t.setFrictionCombineRule(yn.Max);break;case 2:t.setFrictionCombineRule(yn.Min);break;case 1:t.setFrictionCombineRule(yn.Multiply);break}}let c=this.world.createCollider(t,r);return c[Do]=e,e[Ht]=c,c.setActiveEvents(lv.COLLISION_EVENTS),this.objects.push(e),this.bodies.push(c),c}getRigidbody(e,t){if(!this.world)throw new Error("Physics world not initialized");let i=null,n=!1;if(e.attachedRigidbody){let r=e.attachedRigidbody;if(i=r[Ht],n=!0,!i){let s=r.isKinematic&&!Ru;Ao&&console.log("Create rigidbody",s);let a=s?vn.RigidBodyDesc.kinematicPositionBased():vn.RigidBodyDesc.dynamic(),c=B(e.attachedRigidbody.gameObject);a.setTranslation(c.x,c.y,c.z),a.setRotation(me(e.attachedRigidbody.gameObject)),i=this.world.createRigidBody(a),this.bodies.push(i),this.objects.push(r)}i[Do]=r,r[Ht]=i,this.internalUpdateProperties(r,i),this.getRigidbodyRelativeMatrix(e.gameObject,r.gameObject,t)}else{let r=vn.RigidBodyDesc.kinematicPositionBased(),s=B(e.gameObject);r.setTranslation(s.x,s.y,s.z),r.setRotation(me(e.gameObject)),i=this.world.createRigidBody(r),t.identity(),i[Do]=null}return e[mv]=i,{rigidBody:i,useExplicitMassProperties:n}}removeBody(e){let t=e[Ht];if(e[Ht]=null,t&&this.world){let i=this.objects.findIndex(n=>n===e);if(i>=0){let n=this.bodies[i];if(this.bodies.splice(i,1),this.objects.splice(i,1),n instanceof cv){let r=n;this.world?.removeCollider(r,!0);let s=r.parent();s&&s.numColliders()<=0&&this.world?.removeRigidBody(s)}else n instanceof hv}}}updateBody(e,t,i){if(!(e.destroyed||!e.gameObject)&&!(!t&&!i))if(e.isCollider===!0)console.warn("TODO: implement updating collider position");else{let n=e,r=n[Ht];r&&this.syncPhysicsBody(n.gameObject,r,t,i)}}updateProperties(e){let t=e[Ht];t&&this.internalUpdateProperties(e,t)}internal_getRigidbody(e){return e[Ht]}internalUpdateProperties(e,t){t.enableCcd(e.collisionDetectionMode!==0),t.setLinearDamping(e.drag),t.setAngularDamping(e.angularDrag),t.setGravityScale(e.useGravity?1:0,!0),t.setEnabledRotations(!e.lockRotationX,!e.lockRotationY,!e.lockRotationZ,!0),t.setEnabledTranslations(!e.lockPositionX,!e.lockPositionY,!e.lockPositionZ,!0),e.isKinematic?t.setBodyType(vn.RigidBodyType.KinematicPositionBased):t.setBodyType(vn.RigidBodyType.Dynamic)}lines;step(e){!this.world||(this._isUpdatingPhysicsWorld=!0,this.eventQueue||(this.eventQueue=new uv(!1)),e&&(this.world.timestep=H.lerp(this.world.timestep,e,.8)),this.world.step(this.eventQueue),this._isUpdatingPhysicsWorld=!1,this.updateDebugRendering(this.world))}updateDebugRendering(e){if(Ao||Ru||fv){if(!this.lines){let i=new tv({color:2258688}),n=new ev;this.lines=new iv(n,i),this.context.scene.add(this.lines)}let t=e.debugRender();this.lines.geometry.setAttribute("position",new mf(t.vertices,3)),this.lines.geometry.setAttribute("color",new mf(t.colors,4))}}postStep(){!this.world||(this._isUpdatingPhysicsWorld=!0,this.syncObjects(),this._isUpdatingPhysicsWorld=!1,this.eventQueue&&!this.collisionHandler&&(this.collisionHandler=new ku(this.world,this.eventQueue)),this.collisionHandler&&(this.collisionHandler.handleCollisionEvents(),this.collisionHandler.update()))}syncObjects(){if(!Ru)for(let e=0;e<this.bodies.length;e++){let t=this.objects[e],i=this.bodies[e],n=t;if(n?.isCollider===!0&&!n.attachedRigidbody){let c=i.parent();c&&this.syncPhysicsBody(t.gameObject,c,!0,!0);continue}let r=i.translation(),s=i.rotation(),a=t.center;if(a&&a.isVector3){this._tempQuaternion.set(s.x,s.y,s.z,s.w);let c=this._tempPosition.copy(a).applyQuaternion(this._tempQuaternion),u=Ae(t.gameObject);c.multiply(u),r.x-=c.x,r.y-=c.y,r.z-=c.z}pn(t.gameObject,r.x,r.y,r.z),Ip(t.gameObject,s.x,s.y,s.z,s.w)}}syncPhysicsBody(e,t,i,n){let r=B(e,this._tempPosition),s=me(e,this._tempQuaternion);switch(t.bodyType()){case Tu.Fixed:case Tu.KinematicPositionBased:case Tu.KinematicVelocityBased:i&&t.setNextKinematicTranslation(r),n&&t.setNextKinematicRotation(s);break;default:i&&t.setTranslation(r,!1),n&&t.setRotation(s,!1);break}t.wakeUp()}getRigidbodyRelativeMatrix(e,t,i,n){if(n===void 0&&(n=Br._matricesBuffer,n.length=0),e===t){let r=Ae(e,this._tempPosition);i.makeScale(r.x,r.y,r.z);for(let s=n.length-1;s>=0;s--)i.multiply(n[s]);return i}return n.push(e.matrix),e.parent&&this.getRigidbodyRelativeMatrix(e.parent,t,i,n),i}addFixedJoint(e,t){if(!this.world){console.error("Physics world not initialized");return}let i=e[Ht],n=t[Ht];this.calculateJointRelativeMatrices(e.gameObject,t.gameObject,this._tempMatrix),this._tempMatrix.decompose(this._tempPosition,this._tempQuaternion,this._tempScale);let r=dv.fixed(Br.centerConnectionPos,Br.centerConnectionRot,this._tempPosition,this._tempQuaternion),s=this.world.createImpulseJoint(r,i,n,!0);Ao&&console.log("ADD FIXED JOINT",s)}addHingeJoint(e,t,i,n){if(!this.world){console.error("Physics world not initialized");return}let r=e[Ht],s=t[Ht];this.calculateJointRelativeMatrices(e.gameObject,t.gameObject,this._tempMatrix),this._tempMatrix.decompose(this._tempPosition,this._tempQuaternion,this._tempScale);let a=vn.JointData.revolute(i,this._tempPosition,n),c=this.world.createImpulseJoint(a,r,s,!0);Ao&&console.log("ADD HINGE JOINT",c)}calculateJointRelativeMatrices(e,t,i){e.updateWorldMatrix(!0,!1),t.updateWorldMatrix(!0,!1);let n=e.matrixWorld,r=t.matrixWorld;n.elements[0]=1,n.elements[5]=1,n.elements[10]=1,r.elements[0]=1,r.elements[5]=1,r.elements[10]=1,i.copy(r).premultiply(n.invert()).invert()}},Qn=Br;I(Qn,"_didLoadPhysicsEngine",!1),I(Qn,"_matricesBuffer",[]),I(Qn,"centerConnectionPos",{x:0,y:0,z:0}),I(Qn,"centerConnectionRot",{x:0,y:0,z:0,w:1});var ku=class{world;eventQueue;constructor(e,t){this.world=e,this.eventQueue=t}activeCollisions=[];activeCollisionsStay=[];activeTriggers=[];handleCollisionEvents(){!this.eventQueue||!this.world||this.eventQueue.drainCollisionEvents((e,t,i)=>{let n=this.world.getCollider(e),r=this.world.getCollider(t),s=n[Do],a=r[Do];Su&&console.log("EVT",s.name,a.name,i,n,r),s&&a&&(i?(this.onCollisionStarted(s,n,a,r),this.onCollisionStarted(a,r,s,n)):(this.onCollisionEnded(s,a),this.onCollisionEnded(a,s)))})}update(){this.onHandleCollisionStay()}onCollisionStarted(e,t,i,n){let r=null;if(e.isTrigger||i.isTrigger)ai(e.gameObject,s=>{s.onTriggerEnter&&s.onTriggerEnter(i),this.activeTriggers.push({collider:e,component:s,otherCollider:i})});else{let s=e.gameObject;this.world.contactPair(t,n,(a,c)=>{ai(s,u=>{let l=u.onCollisionEnter||u.onCollisionStay||u.onCollisionExit;if(l||Su){if(!r){let d=[],h=a.normal();for(let g=0;g<a.numSolverContacts();g++){let E=a.solverContactPoint(g),_=a.contactImpulse(g);if(E){let x=a.contactDist(g),m=a.solverContactFriction(g),f=new $a(E,x,h,_,m);d.push(f),Su&&jt.DrawDirection(E,h,16711680,3,!0)}}r=new Qs(s,i,d)}if(l){let d={collider:e,component:u,collision:r};this.activeCollisions.push(d),u.onCollisionStay&&this.activeCollisionsStay.push(d),u.onCollisionEnter?.call(u,r)}}})})}}onHandleCollisionStay(){for(let e of this.activeCollisionsStay){let t=e.component;if(t.activeAndEnabled&&t.onCollisionStay){let i=e.collision;t.onCollisionStay(i)}}for(let e of this.activeTriggers){let t=e.component;if(t.activeAndEnabled&&t.onTriggerStay){let i=e.otherCollider;t.onTriggerStay(i)}}}onCollisionEnded(e,t){for(let i=0;i<this.activeCollisions.length;i++){let n=this.activeCollisions[i];if(n.collider===e&&n.collision.collider===t){let s=n.component;if(this.activeCollisions.splice(i,1),i--,s.activeAndEnabled&&s.onCollisionExit){let a=n.collision;s.onCollisionExit(a)}}}for(let i=0;i<this.activeCollisionsStay.length;i++){let n=this.activeCollisionsStay[i];if(n.collider===e&&n.collision.collider===t){let s=n.component;if(this.activeCollisionsStay.splice(i,1),i--,s.activeAndEnabled&&s.onCollisionExit){let a=n.collision;s.onCollisionExit(a)}}}for(let i=0;i<this.activeTriggers.length;i++){let n=this.activeTriggers[i];if(n.collider===e&&n.otherCollider===t){let s=n.component;if(this.activeTriggers.splice(i,1),i--,s.activeAndEnabled&&s.onTriggerExit){let a=n.otherCollider;s.onTriggerExit(a)}}}}};import{Clock as gv}from"three";var gf=P("debugtime"),bf=1;typeof gf=="number"&&(bf=gf);var hl=class{deltaTime=0;time=0;timeScale=1;frame=0;get realtimeSinceStartup(){return this.clock.elapsedTime}get frameCount(){return this.frame}get smoothedFps(){return this._smoothedFps}clock=new gv;_smoothedFps=0;_fpsSamples=[];_fpsSampleIndex=0;update(){this.deltaTime=this.clock.getDelta(),this.deltaTime=Math.min(.1,this.deltaTime),this.deltaTime*=bf*this.timeScale,this.deltaTime<=0&&(this.deltaTime=1e-12),this.frame+=1,this.time+=this.deltaTime,this._fpsSamples.length<30?this._fpsSamples.push(this.deltaTime):this._fpsSamples[this._fpsSampleIndex++%30]=this.deltaTime;let e=0;for(let t=0;t<this._fpsSamples.length;t++)e+=this._fpsSamples[t];this._smoothedFps=1/(e/this._fpsSamples.length)}};import{WebsocketBuilder as vv}from"websocket-ts";var Hi=new Int32Array(2),pl=new Float32Array(Hi.buffer),fl=new Float64Array(Hi.buffer),Lo=new Uint16Array(new Uint8Array([1,0]).buffer)[0]===1;var Qe=class{constructor(e,t){this.low=e|0,this.high=t|0}static create(e,t){return e==0&&t==0?Qe.ZERO:new Qe(e,t)}toFloat64(){return(this.low>>>0)+this.high*4294967296}equals(e){return this.low==e.low&&this.high==e.high}};Qe.ZERO=new Qe(0,0);var $s;(function(o){o[o.UTF8_BYTES=1]="UTF8_BYTES",o[o.UTF16_STRING=2]="UTF16_STRING"})($s||($s={}));var Fi=class{constructor(e){this.bytes_=e,this.position_=0}static allocate(e){return new Fi(new Uint8Array(e))}clear(){this.position_=0}bytes(){return this.bytes_}position(){return this.position_}setPosition(e){this.position_=e}capacity(){return this.bytes_.length}readInt8(e){return this.readUint8(e)<<24>>24}readUint8(e){return this.bytes_[e]}readInt16(e){return this.readUint16(e)<<16>>16}readUint16(e){return this.bytes_[e]|this.bytes_[e+1]<<8}readInt32(e){return this.bytes_[e]|this.bytes_[e+1]<<8|this.bytes_[e+2]<<16|this.bytes_[e+3]<<24}readUint32(e){return this.readInt32(e)>>>0}readInt64(e){return new Qe(this.readInt32(e),this.readInt32(e+4))}readUint64(e){return new Qe(this.readUint32(e),this.readUint32(e+4))}readFloat32(e){return Hi[0]=this.readInt32(e),pl[0]}readFloat64(e){return Hi[Lo?0:1]=this.readInt32(e),Hi[Lo?1:0]=this.readInt32(e+4),fl[0]}writeInt8(e,t){this.bytes_[e]=t}writeUint8(e,t){this.bytes_[e]=t}writeInt16(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8}writeUint16(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8}writeInt32(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8,this.bytes_[e+2]=t>>16,this.bytes_[e+3]=t>>24}writeUint32(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8,this.bytes_[e+2]=t>>16,this.bytes_[e+3]=t>>24}writeInt64(e,t){this.writeInt32(e,t.low),this.writeInt32(e+4,t.high)}writeUint64(e,t){this.writeUint32(e,t.low),this.writeUint32(e+4,t.high)}writeFloat32(e,t){pl[0]=t,this.writeInt32(e,Hi[0])}writeFloat64(e,t){fl[0]=t,this.writeInt32(e,Hi[Lo?0:1]),this.writeInt32(e+4,Hi[Lo?1:0])}getBufferIdentifier(){if(this.bytes_.length<this.position_+4+4)throw new Error("FlatBuffers: ByteBuffer is too short to contain an identifier.");let e="";for(let t=0;t<4;t++)e+=String.fromCharCode(this.readInt8(this.position_+4+t));return e}__offset(e,t){let i=e-this.readInt32(e);return t<this.readInt16(i)?this.readInt16(i+t):0}__union(e,t){return e.bb_pos=t+this.readInt32(t),e.bb=this,e}__string(e,t){e+=this.readInt32(e);let i=this.readInt32(e),n="",r=0;if(e+=4,t===$s.UTF8_BYTES)return this.bytes_.subarray(e,e+i);for(;r<i;){let s,a=this.readUint8(e+r++);if(a<192)s=a;else{let c=this.readUint8(e+r++);if(a<224)s=(a&31)<<6|c&63;else{let u=this.readUint8(e+r++);if(a<240)s=(a&15)<<12|(c&63)<<6|u&63;else{let l=this.readUint8(e+r++);s=(a&7)<<18|(c&63)<<12|(u&63)<<6|l&63}}}s<65536?n+=String.fromCharCode(s):(s-=65536,n+=String.fromCharCode((s>>10)+55296,(s&(1<<10)-1)+56320))}return n}__union_with_string(e,t){return typeof e=="string"?this.__string(t):this.__union(e,t)}__indirect(e){return e+this.readInt32(e)}__vector(e){return e+this.readInt32(e)+4}__vector_len(e){return this.readInt32(e+this.readInt32(e))}__has_identifier(e){if(e.length!=4)throw new Error("FlatBuffers: file identifier must be length "+4);for(let t=0;t<4;t++)if(e.charCodeAt(t)!=this.readInt8(this.position()+4+t))return!1;return!0}createLong(e,t){return Qe.create(e,t)}createScalarList(e,t){let i=[];for(let n=0;n<t;++n)e(n)!==null&&i.push(e(n));return i}createObjList(e,t){let i=[];for(let n=0;n<t;++n){let r=e(n);r!==null&&i.push(r.unpack())}return i}};var Et=class{constructor(e){this.minalign=1,this.vtable=null,this.vtable_in_use=0,this.isNested=!1,this.object_start=0,this.vtables=[],this.vector_num_elems=0,this.force_defaults=!1,this.string_maps=null;let t;e?t=e:t=1024,this.bb=Fi.allocate(t),this.space=t}clear(){this.bb.clear(),this.space=this.bb.capacity(),this.minalign=1,this.vtable=null,this.vtable_in_use=0,this.isNested=!1,this.object_start=0,this.vtables=[],this.vector_num_elems=0,this.force_defaults=!1,this.string_maps=null}forceDefaults(e){this.force_defaults=e}dataBuffer(){return this.bb}asUint8Array(){return this.bb.bytes().subarray(this.bb.position(),this.bb.position()+this.offset())}prep(e,t){e>this.minalign&&(this.minalign=e);let i=~(this.bb.capacity()-this.space+t)+1&e-1;for(;this.space<i+e+t;){let n=this.bb.capacity();this.bb=Et.growByteBuffer(this.bb),this.space+=this.bb.capacity()-n}this.pad(i)}pad(e){for(let t=0;t<e;t++)this.bb.writeInt8(--this.space,0)}writeInt8(e){this.bb.writeInt8(this.space-=1,e)}writeInt16(e){this.bb.writeInt16(this.space-=2,e)}writeInt32(e){this.bb.writeInt32(this.space-=4,e)}writeInt64(e){this.bb.writeInt64(this.space-=8,e)}writeFloat32(e){this.bb.writeFloat32(this.space-=4,e)}writeFloat64(e){this.bb.writeFloat64(this.space-=8,e)}addInt8(e){this.prep(1,0),this.writeInt8(e)}addInt16(e){this.prep(2,0),this.writeInt16(e)}addInt32(e){this.prep(4,0),this.writeInt32(e)}addInt64(e){this.prep(8,0),this.writeInt64(e)}addFloat32(e){this.prep(4,0),this.writeFloat32(e)}addFloat64(e){this.prep(8,0),this.writeFloat64(e)}addFieldInt8(e,t,i){(this.force_defaults||t!=i)&&(this.addInt8(t),this.slot(e))}addFieldInt16(e,t,i){(this.force_defaults||t!=i)&&(this.addInt16(t),this.slot(e))}addFieldInt32(e,t,i){(this.force_defaults||t!=i)&&(this.addInt32(t),this.slot(e))}addFieldInt64(e,t,i){(this.force_defaults||!t.equals(i))&&(this.addInt64(t),this.slot(e))}addFieldFloat32(e,t,i){(this.force_defaults||t!=i)&&(this.addFloat32(t),this.slot(e))}addFieldFloat64(e,t,i){(this.force_defaults||t!=i)&&(this.addFloat64(t),this.slot(e))}addFieldOffset(e,t,i){(this.force_defaults||t!=i)&&(this.addOffset(t),this.slot(e))}addFieldStruct(e,t,i){t!=i&&(this.nested(t),this.slot(e))}nested(e){if(e!=this.offset())throw new Error("FlatBuffers: struct must be serialized inline.")}notNested(){if(this.isNested)throw new Error("FlatBuffers: object serialization must not be nested.")}slot(e){this.vtable!==null&&(this.vtable[e]=this.offset())}offset(){return this.bb.capacity()-this.space}static growByteBuffer(e){let t=e.capacity();if(t&3221225472)throw new Error("FlatBuffers: cannot grow buffer beyond 2 gigabytes.");let i=t<<1,n=Fi.allocate(i);return n.setPosition(i-t),n.bytes().set(e.bytes(),i-t),n}addOffset(e){this.prep(4,0),this.writeInt32(this.offset()-e+4)}startObject(e){this.notNested(),this.vtable==null&&(this.vtable=[]),this.vtable_in_use=e;for(let t=0;t<e;t++)this.vtable[t]=0;this.isNested=!0,this.object_start=this.offset()}endObject(){if(this.vtable==null||!this.isNested)throw new Error("FlatBuffers: endObject called without startObject");this.addInt32(0);let e=this.offset(),t=this.vtable_in_use-1;for(;t>=0&&this.vtable[t]==0;t--);let i=t+1;for(;t>=0;t--)this.addInt16(this.vtable[t]!=0?e-this.vtable[t]:0);let n=2;this.addInt16(e-this.object_start);let r=(i+n)*2;this.addInt16(r);let s=0,a=this.space;e:for(t=0;t<this.vtables.length;t++){let c=this.bb.capacity()-this.vtables[t];if(r==this.bb.readInt16(c)){for(let u=2;u<r;u+=2)if(this.bb.readInt16(a+u)!=this.bb.readInt16(c+u))continue e;s=this.vtables[t];break}}return s?(this.space=this.bb.capacity()-e,this.bb.writeInt32(this.space,s-e)):(this.vtables.push(this.offset()),this.bb.writeInt32(this.bb.capacity()-e,this.offset()-e)),this.isNested=!1,e}finish(e,t,i){let n=i?4:0;if(t){let r=t;if(this.prep(this.minalign,4+4+n),r.length!=4)throw new Error("FlatBuffers: file identifier must be length "+4);for(let s=4-1;s>=0;s--)this.writeInt8(r.charCodeAt(s))}this.prep(this.minalign,4+n),this.addOffset(e),n&&this.addInt32(this.bb.capacity()-this.space),this.bb.setPosition(this.space)}finishSizePrefixed(e,t){this.finish(e,t,!0)}requiredField(e,t){let i=this.bb.capacity()-e,n=i-this.bb.readInt32(i);if(!(this.bb.readInt16(n+t)!=0))throw new Error("FlatBuffers: field "+t+" must be set")}startVector(e,t,i){this.notNested(),this.vector_num_elems=t,this.prep(4,e*t),this.prep(i,e*t)}endVector(){return this.writeInt32(this.vector_num_elems),this.offset()}createSharedString(e){if(!e)return 0;if(this.string_maps||(this.string_maps=new Map),this.string_maps.has(e))return this.string_maps.get(e);let t=this.createString(e);return this.string_maps.set(e,t),t}createString(e){if(!e)return 0;let t;if(e instanceof Uint8Array)t=e;else{t=[];let i=0;for(;i<e.length;){let n,r=e.charCodeAt(i++);if(r<55296||r>=56320)n=r;else{let s=e.charCodeAt(i++);n=(r<<10)+s+(65536-(55296<<10)-56320)}n<128?t.push(n):(n<2048?t.push(n>>6&31|192):(n<65536?t.push(n>>12&15|224):t.push(n>>18&7|240,n>>12&63|128),t.push(n>>6&63|128)),t.push(n&63|128))}}this.addInt8(0),this.startVector(1,t.length,1),this.bb.setPosition(this.space-=t.length);for(let i=0,n=this.space,r=this.bb.bytes();i<t.length;i++)r[n++]=t[i];return this.endVector()}createLong(e,t){return Qe.create(e,t)}createObjectOffset(e){return e===null?0:typeof e=="string"?this.createString(e):e.pack(this)}createObjectOffsetList(e){let t=[];for(let i=0;i<e.length;++i){let n=e[i];if(n!==null)t.push(this.createObjectOffset(n));else throw new Error("FlatBuffers: Argument for createObjectOffsetList cannot contain null.")}return t}createStructOffsetList(e,t){return t(this,e.length),this.createObjectOffsetList(e),this.endVector()}};var vf={};function Ho(o,e){vf[o]=e}function yf(o){let e=o.getBufferIdentifier(),t=vf[e];return t(o)}function _f(o){return typeof o.guid=="function"?o.guid():null}var Iu=Fa(gl(),1);var bl=class{get isHost(){return this._host!==void 0}_host;_client;_clientData;constructor(){this.onEnable()}onEnable(){let e="HOST-5980e65c-8438-453e-8b35-f13c736dcd81";this.trySetupHost(e)}trySetupHost(e){let t=new Iu.default(e);t.on("error",i=>{console.error(i),this._host=void 0,this.trySetupClient(e)}),t.on("open",i=>{this._host=new Du(t)})}trySetupClient(e){this._client=new Iu.default,this._client.on("error",t=>{console.error("Client error",t)}),this._client.on("open",t=>{console.log("client connected",t),this._clientData=this._client.connect(e,{metadata:{id:t}}),this._clientData.on("open",()=>{console.log("Connected to host")}),this._clientData.on("data",i=>{console.log("<<",i)})})}},Au=class{_peer;constructor(e){this._peer=e}};var Du=class extends Au{get isHost(){return!0}_connections=[];constructor(e){super(e),console.log("I AM THE HOST"),this._peer?.on("connection",this.onConnection.bind(this)),this._peer.on("close",()=>{this.broadcast("BYE")}),setInterval(()=>{this.broadcast("HELLO")},2e3)}onConnection(e){console.log("host connection",e),e.on("open",()=>{this._connections.push(e),this.broadcastConnection(e)})}broadcastConnection(e){let t=this._connections.map(i=>i.metadata?.id).filter(i=>i!==void 0);this.broadcast({type:"connection-list",connections:t})}broadcast(e){if(e!=null){console.log(">>",e);for(let t in this._peer.connections){let i=this._peer.connections[t];if(!!i)if(Array.isArray(i))for(let n of i)!n||n.send(e);else console.warn(i)}}}};var vl="wss://needle-tiny-starter.glitch.me/socket",ut=!!P("debugnet"),yl=!!(ut||P("debugowner"));var Yn=class{guid;connection;get hasOwnership(){return this._hasOwnership}get isOwned(){return this._isOwned}get isConnected(){return this.connection.isConnected}_hasOwnership=!1;_isOwned=void 0;_gainSubscription;_lostSubscription;_hasOwnerResponse;constructor(e,t){this.connection=e,this.guid=t,this._gainSubscription=this.onGainedOwnership.bind(this),this._lostSubscription=this.onLostOwnership.bind(this),e.beginListen("lost-ownership",this._lostSubscription),e.beginListen("gained-ownership-broadcast",this._gainSubscription),this._hasOwnerResponse=this.onHasOwnerResponse.bind(this),e.beginListen("response-has-owner",this._hasOwnerResponse)}_isWaitingForOwnershipResponseCallback=null;updateIsOwned(){this.connection.send("request-has-owner",{guid:this.guid})}onHasOwnerResponse(e){e.guid===this.guid&&(this._isOwned=e.value)}requestOwnershipIfNotOwned(){return this._isWaitingForOwnershipResponseCallback!==null?this:(this._isWaitingForOwnershipResponseCallback=this.waitForHasOwnershipRequestResponse.bind(this),this.connection.beginListen("response-has-owner",this._isWaitingForOwnershipResponseCallback),this.connection.send("request-has-owner",{guid:this.guid}),this)}waitForHasOwnershipRequestResponse(e){e.guid===this.guid&&(this._isWaitingForOwnershipResponseCallback&&(this.connection.stopListening("response-has-owner",this._isWaitingForOwnershipResponseCallback),this._isWaitingForOwnershipResponseCallback=null),this._isOwned=e.value,e.value||(yl&&console.log("request ownership",this.guid),this.requestOwnership()))}requestOwnershipAsync(){return new Promise((e,t)=>{this.requestOwnership();let i=0,n=()=>{if(i++>10)return t("Timeout");setTimeout(()=>{this.hasOwnership?e(this):n()},100)};n()})}requestOwnership(){return yl&&console.log("Request ownership",this.guid),this.connection.send("request-ownership",{guid:this.guid}),this}freeOwnership(){return this.connection.send("remove-ownership",{guid:this.guid}),this._isWaitingForOwnershipResponseCallback&&(this.connection.stopListening("response-has-owner",this._isWaitingForOwnershipResponseCallback),this._isWaitingForOwnershipResponseCallback=null),this}destroy(){this.connection.stopListening("gained-ownership",this._gainSubscription),this.connection.stopListening("lost-ownership",this._lostSubscription),this.connection.stopListening("response-has-owner",this._hasOwnerResponse),this._isWaitingForOwnershipResponseCallback&&(this.connection.stopListening("response-has-owner",this._isWaitingForOwnershipResponseCallback),this._isWaitingForOwnershipResponseCallback=null)}onGainedOwnership(e){e.guid===this.guid&&(this._isOwned=!0,this.connection.connectionId===e.owner?(yl&&console.log("GAINED OWNERSHIP",this.guid),this._hasOwnership=!0):this._hasOwnership=!1)}onLostOwnership(e){e===this.guid&&(yl&&console.log("LOST OWNERSHIP",this.guid),this._hasOwnership=!1,this._isOwned=!1)}},_l=class{context;_peer=null;constructor(e){this.context=e}get peer(){return this._peer||(this._peer=new bl),this._peer}tryGetState(e){return e==="invalid"?null:this._state[e]}get connectionId(){return this._connectionId}get isDebugEnabled(){return ut}get isConnected(){return this.connected}get currentRoomName(){return this._currentRoomName}get allowEditing(){return this._currentRoomAllowEditing}get currentRoomViewId(){return this._currentRoomViewId}get isInRoom(){return this._isInRoom}get currentLatency(){return this._currentDelay}userIsInRoom(e){return this._currentInRoom.indexOf(e)!==-1}_usersInRoomCopy=[];usersInRoom(e=null){e||(e=this._usersInRoomCopy),e.length=0;for(let t of this._currentInRoom)e.push(t);return e}joinRoom(e,t=!1){this.connect(),ut&&console.log("join: "+e),this.send("join-room",{room:e,viewOnly:t},0)}leaveRoom(e=null){if(e||(e=this.currentRoomName),!e){console.error("Can not leave unknown room");return}this.send("leave-room",{room:e})}send(e,t=null,i=2){if(t===null&&(t={}),i===2){this._defaultMessagesBuffer.push({key:e,value:t});return}return this.sendWithWebsocket(e,t,i)}sendDeleteRemoteState(e){this.send("delete-state",{guid:e,dontSave:!0}),delete this._state[e]}sendDeleteRemoteStateAll(){this.send("delete-all-state"),this._state={}}sendBinary(e){ut&&console.log("<< bin",e.length),this._ws?.send(e)}_defaultMessagesBuffer=[];_defaultMessagesBufferArray=[];sendBufferedMessagesNow(){if(!this._ws)return;this._defaultMessagesBufferArray.length=0;let e=Object.keys(this._defaultMessagesBuffer).length;for(let i in this._defaultMessagesBuffer){let n=this._defaultMessagesBuffer[i];if(e<=1){this.sendWithWebsocket(n.key,n.value,3);break}let r=this.toMessage(n.key,n.value);this._defaultMessagesBufferArray.push(r)}if(this._defaultMessagesBuffer.length=0,this._defaultMessagesBufferArray.length>0&&ut&&console.log("SEND BUFFERED",this._defaultMessagesBufferArray.length),this._defaultMessagesBufferArray.length<=0)return;let t=JSON.stringify(this._defaultMessagesBufferArray);this._ws?.send(t)}beginListen(e,t){return this._listeners[e]||(this._listeners[e]=[]),this._listeners[e].push(t),t}stopListening(e,t){if(!t||!this._listeners[e])return;let i=this._listeners[e].indexOf(t);i>=0&&this._listeners[e].splice(i,1)}beginListenBinrary(e,t){return this._listenersBinary[e]||(this._listenersBinary[e]=[]),this._listenersBinary[e].push(t),t}stopListenBinary(e,t){if(!this._listenersBinary[e])return;let i=this._listenersBinary[e].indexOf(t);i>=0&&this._listenersBinary[e].splice(i,1)}netWebSocketUrlProvider;registerProvider(e){this.netWebSocketUrlProvider=e}connect(){if(this.connected)return;ut&&console.log("connecting");let e=this.netWebSocketUrlProvider?.getWebsocketUrl();e?vl=e:gp()&&(vl="wss://"+window.location.host+"/socket"),this.connectWebsocket()}_listeners={};_listenersBinary={};connected=!1;channelId;_connectionId=null;_isConnectingToWebsocket=!1;_ws;_waitingForSocket={};_isInRoom=!1;_currentRoomName=null;_currentRoomViewId=null;_currentRoomAllowEditing=!0;_currentInRoom=[];_state={};_currentDelay=-1;connectWebsocket(){if(this._isConnectingToWebsocket)return;this._isConnectingToWebsocket=!0,console.log("Connecting to "+vl);let e=new vv(vl).onOpen(()=>{this._ws=e,this._isConnectingToWebsocket=!1,this.connected=!0,console.log("Connected to websocket"),this.onSendQueued(0)}).onClose(t=>{this.connected=!1,this._isInRoom=!1}).onError((t,i)=>{console.error(t,i)}).onMessage(this.onMessage.bind(this)).onRetry(()=>{console.log("websocket connection retry")}).build()}onMessage(e,t){let i=t.data;try{if(typeof i!="string"){i.size&&this.handleIncomingBinaryMessage(i);return}let n=JSON.parse(i);if(Array.isArray(n))for(let r of n)this.handleIncomingStringMessage(r);else this.handleIncomingStringMessage(n);return}catch{ut&&i==="pong"&&console.log("<<",i)}}async handleIncomingBinaryMessage(e){let t=await e.arrayBuffer();var i=new Uint8Array(t);let n=new Fi(i),r=n.getBufferIdentifier(),s=this._listenersBinary[r],a=yf(n),c=_f(a);if(c&&typeof c=="string"&&(this._state[c]=a),!s)return;let u=a??n;for(let l of s)l(u)}handleIncomingStringMessage(e){if(ut&&console.log("<<",e.key??e),e.key)switch(e.key){case"connection-start-info":if(e.data){let s=e.data;s&&(console.assert(s.id!==void 0&&s.id!==null&&s.id.length>0,"server did not send connection id",s.id),console.log("Your id is: "+s.id,this.context.alias??""),this._connectionId=s.id)}else console.warn("Expected connection id in "+e.key);break;case"joined-room":if(ut&&console.log(e),e){this._isInRoom=!0;let s=e;this._currentRoomName=s.room,this._currentRoomViewId=s.viewId,this._currentRoomAllowEditing=s.allowEditing??!0,console.log("Room view id",this._currentRoomViewId),this._currentInRoom.length=0,this._currentInRoom.push(...s.inRoom),ut&&console.log("joined room with",this._currentInRoom,this.context.alias??"")}this.onSendQueued(1);break;case"left-room":e.room===this.currentRoomName&&(this._isInRoom=!1,this._currentRoomName=null,this._currentInRoom.length=0);break;case"user-joined-room":if(e.data){let s=e.data;this._currentInRoom.push(s.userId),ut&&console.log(s.userId+" joined","now in room:",this._currentInRoom)}break;case"user-left-room":if(e.data){let s=e.data,a=this._currentInRoom.indexOf(s.userId);a>=0&&(console.log(s.userId+" left",this.context.alias??""),this._currentInRoom.splice(a,1)),s.userId===this.connectionId&&console.log("you left the room")}break;case"all-room-state-deleted":ut&&console.log("RECEIVED all-room-state-deleted"),this._state={};break;case"ping":case"pong":let r=e.data?.time;r&&(this._currentDelay=this.context.time.time-r),ut&&console.log("Current latency: "+this._currentDelay.toFixed(1)+" sec","Clients in room: "+this._currentInRoom?.length);break}let t=this._listeners[e.key];if(t)for(let n of t)n(e.data);let i=e.data;i&&(this._state[i.guid]=i)}toMessage(e,t){return{key:e,data:t}}sendWithWebsocket(e,t,i=1){if(!this._ws){let r=this._waitingForSocket[i]||[];r.push(()=>this.sendWithWebsocket(e,t,i)),this._waitingForSocket[i]=r;return}let n=JSON.stringify(this.toMessage(e,t));ut&&console.log(">>",e),this._ws.send(n)}onSendQueued(e){let t=this._waitingForSocket[e];if(t){for(let i of t)i();t.length=0}}};import{EffectComposer as zv}from"three/examples/jsm/postprocessing/EffectComposer.js";import{RenderPass as Wv}from"three/examples/jsm/postprocessing/RenderPass";import*as Kn from"three";var kf=Fa(Of(),1),xl=class{success;filename;hash;size;url;constructor(e,t,i,n){this.success=e,this.filename=t,this.hash=i,this.size=n}};async function Mf(o,e){let t=await o.arrayBuffer(),i=If(t),n=o.name.split(".").pop(),r=i+"."+n,s=o.name.split(".").shift();console.assert(s!==void 0);let a={alias:s,filename:r},u=await(await fetch(e+"/exists",{method:"POST",body:JSON.stringify(a)})).json();if(u.success||console.warn("exists check did fail"),u.exists)return console.log("file already exists",i),new xl(!0,r,i,o.size);console.log("begin uploading file",s,o.size);let l=new FormData;l.append("file",o);let d={};d.filesize=o.size,s&&(d.alias=s);let g=await(await fetch(e+"/upload/file",{method:"POST",body:l,headers:d})).json();if(g?.success===!1)return g.message!==void 0?console.error("Upload failed:",g.message):console.error("Upload failed"),null;console.assert(g.hash_sum===i,"hash sum did not match","received:",g.hash_sum,"expected:",i),g.success&&console.log("successfully uploaded",i,g.id);let E=new xl(g.success,r,i,o.size);return E.url=e,E}function If(o){return(0,kf.default)(new Uint8Array(o))}async function wl(o,e,t,i,n=!1){try{let r=await fetch(i+"/download/file",{method:"POST",body:o});if(r.status!==200)return console.error("download failed",r),null;let s=await r.blob(),a=await s.arrayBuffer();n||console.assert(s.size===t,"size mismatch","expected:",t,"got:",s.size);let c=If(a);return n||console.assert(c===e,"hash mismatch, downloaded file is invalid"),s.arrayBuffer()}catch(r){console.error(r)}return null}async function Af(o,e){let t=await fetch(o),i=t.body?.getReader(),n=t.headers.get("Content-Length"),r=n?parseInt(n):0;if(!i)return null;let s=0,a=[];for(;;){let{done:l,value:d}=await i.read();if(d&&(a.push(d),s+=d.length,e.call(null,new ProgressEvent("progress",{loaded:s,total:r}))),l)break}let c=new Uint8Array(s),u=0;for(let l of a)c.set(l,u),u+=l.length;return c}function El(o,e,t){console.warn("Adding components on object has been temporarily disabled")}var Lf,Df=null;function qe(){return Lf}function Cl(o){Df!==o&&(Df=o,Lf=new o)}var Hu=class{guid;file_name;file_hash;file_size;position;seed;sender;serverUrl;parentGuid;boundsSize;constructor(e,t,i,n,r,s,a,c){this.seed=t,this.guid=i,this.file_name=n,this.file_hash=r,this.file_size=s,this.position=a,this.sender=e,this.serverUrl=c}};async function jf(o,e,t){let i=o.name;return i.endsWith(".gltf")||i.endsWith(".glb")?new Promise((n,r)=>{let s=new FileReader;s.readAsDataURL(o),s.onloadend=async a=>{let c=s.result,u=ol(),l=new Re(u),d=await qe().loadSync(e,c,l,!0);if(d&&d.scene){let h=d.scene;if(!h.guid){let g=new Re(u);h.guid=g.generateUUID()}t&&wv(e.connection,o,u,h,t),El(h,l,d),n(d)}}}):(console.warn("Unsupported file type: "+i),console.log(o),null)}async function Hf(o,e){return new Promise(async(t,i)=>{let n=ol(),r=new Re(n),s=await qe().loadSync(e,o.toString(),r,!0);if(s&&s.scene){let a=s.scene;El(a,r,s),t(s)}else console.warn("Unsupported file type: "+o.toString())})}function Ff(o){o.connection.beginListen("file-spawned",async e=>{if(e.sender!==o.connection.connectionId){console.log("received file event",e),Ev(e,o);let t=null;try{t=await wl(e.file_name,e.file_hash,e.file_size,e.serverUrl)}finally{Cv(e,o)}if(t){let i=new Re(e.seed),n=await qe().parseSync(o,t,null,i);if(n&&n.scene){let r=n.scene;if(El(r,i,n),e.parentGuid){let s=Ar(e.parentGuid,o.scene);"add"in s&&s.add(r)}r.parent||o.scene.add(r),e.position!==null&&r.position.copy(e.position)}}else console.error("download didnt return file")}})}async function wv(o,e,t,i,n){if(!o.connectionId){console.error("Can not upload file - no connection id");return}if(!i.guid){console.error("Can not upload file - no guid",i,i.guid);return}let r=await Mf(e,n);if(!r)return;if(!r.filename){console.error("Can not send upload event - no filename",e.name);return}if(!r.hash){console.error("Can not send upload event - no hash",e.name);return}let s=new Hu(o.connectionId,t,i.guid,r.filename,r.hash,e.size,i.position,r.url??n);i.parent&&(s.parentGuid=i.parent.guid),o.send("file-spawned",s)}var Fu={};function Ev(o,e){let t=new Kn.BoxGeometry,i=new Kn.Mesh(t,new Kn.MeshBasicMaterial({color:65280})),n=new Kn.BoxHelper(i,5592405);if(Fu[o.guid]=n,e.scene.add(n),o.parentGuid){let r=Ar(o.parentGuid,e.scene);r&&r.add(n)}o.position&&n.position.copy(o.position)}function Cv(o,e){let t=o.guid,i=Fu[t];i&&(delete Fu[t],i.removeFromParent())}import*as Bf from"three";var p0=P("debugassets");var Tl=class{constructor(){window.addEventListener("unhandledrejection",e=>{if(e.defaultPrevented)return;let t=e?.reason?.path;if(t){let i=t[0];i&&i.tagName==="IMG"&&(console.warn(`Could not load image:
152
+ `+i.src),e.preventDefault())}})}texturesLoader=new Bf.TextureLoader;textures={};texturesLoading={};async loadTexture(e){if(this.textures[e])return this.textures[e];if(this.texturesLoading[e])return await this.texturesLoading[e];let t=this.texturesLoader.loadAsync(e);this.texturesLoading[e]=t;let i=await t;return delete this.texturesLoading[e],this.textures[e]=i,i}getTexture(e){return this._textures.get(e)||null}findTexture(e){for(let t of this._textures.values())if(t.name===e)return t;return null}findMesh(e){for(let t of this._meshes.values())if(t.name===e)return t;return null}findMaterial(e){for(let t of this._materials.values())if(t.name===e)return t;return null}async registerGltf(e){}registerAsset(e){}_materials=new Map;_meshes=new Map;_textures=new Map};import*as qf from"three/examples/jsm/libs/stats.module";import{Vector4 as Iv,EquirectangularReflectionMapping as Sl,sRGBEncoding as Pl,WebGLCubeRenderTarget as Av}from"three";import{LightProbeGenerator as Dv}from"three/examples/jsm/lights/LightProbeGenerator.js";import*as Uf from"three";var Rv=new Uf.FileLoader;async function Bu(o){return new Promise((e,t)=>{Rv.load(o,e,void 0,t)})}import{Vector4 as Jn,FileLoader as Pv,DataTexture as Wu,RGBAFormat as Ov,Color as kv}from"three";var ea=new Uint8Array(4);ea[0]=255;ea[1]=255;ea[2]=255;ea[3]=255;var zf=new Wu(ea,1,1,Ov);function Rl(o,e=1){let t="alpha"in o,i=e*e,n=new Uint8Array(4*i),r=Math.floor(o.r*255),s=Math.floor(o.g*255),a=Math.floor(o.b*255);for(let u=0;u<i;u++){let l=u*4;n[l+0]=r,n[l+1]=s,n[l+2]=a,t?n[l+3]=Math.floor(o.alpha*255):n[l+3]=255}let c=new Wu(n,e,e);return c.needsUpdate=!0,c}function Wf(o,e,t,i=1,n=3){let a=i*n,c=[o,e,t],u=c.length,l=new Uint8Array(4*u*a),d=new kv;for(let g=0;g<n;g++){let E=Math.floor(g/n*u),_=H.clamp(E+1,0,u-1),x=c[E],m=c[_],f=g/n*u%1;d.lerpColors(x,m,f);let p=Math.floor(d.r*255),b=Math.floor(d.g*255),w=Math.floor(d.b*255);for(let C=0;C<i;C++){let T=(g*i+C)*4;l[T+0]=p,l[T+1]=b,l[T+2]=w,l[T+3]=255}}let h=new Wu(l,i,n);return h.needsUpdate=!0,h}var Gu=class{stage;code;constructor(e,t){this.stage=e,this.code=t}},Vu=class{loaded=new Map;async loadShader(e){let t=await Bu(e);return JSON.parse(t)}async load(e,t){if(this.loaded.has(t))return new Promise((r,s)=>{let a=this.loaded.get(t);a?r(a):s("Shader not found")});let i=await Bu(t),n=new Gu(e,i);return this.loaded.set(t,n),n}},v0=new Vu;function ta(o,e){let t=o.elements;e||(e=[]),e.length=0;for(let i=0;i<16;i+=4){let n=t[i],r=t[i+1],s=t[i+2],a=t[i+3],c=new Jn(n,r,s,a);e.push(c)}return e}var Uu=[],Gf=[];function Nu(o,e){if(Uu.length===0)for(let t=0;t<27;t++)Uu.push(0);e||(e=Uu);for(let t=0;t<27;t++)Gf[t]=e[t];e=Gf,o.unity_SHAr={value:new Jn(e[9],e[3],e[6],e[0])},o.unity_SHBr={value:new Jn(e[12],e[15],e[18],e[21])},o.unity_SHAg={value:new Jn(e[10],e[4],e[7],e[1])},o.unity_SHBg={value:new Jn(e[13],e[16],e[19],e[22])},o.unity_SHAb={value:new Jn(e[11],e[5],e[8],e[2])},o.unity_SHBb={value:new Jn(e[14],e[17],e[20],e[23])},o.unity_SHC={value:new Jn(e[24],e[25],e[26],1)}}var zu=class{vertexShader;fragmentShader;technique;constructor(e,t,i){this.vertexShader=e,this.fragmentShader=t,this.technique=i}};async function Nf(o,e){if(!o)return console.error("Can not find technique: no shader data"),null;let t=o.programs[e],i=t.vertexShader,n=t.fragmentShader;if(i!==void 0&&n!==void 0){let r=o.shaders[i],s=o.shaders[n];if(r.uri&&s.uri||r.code&&s.code){if(!r.code&&r.uri&&await Vf(r),!s.code&&s.uri&&await Vf(s),!r.code||!s.code)return null;let a=o.techniques[e];return new zu(r.code,s.code,a)}}return console.error("Shader technique not found",e),null}async function Vf(o){let e=o.uri;if(!!e)if(e.endsWith(".glsl")){let i=await new Pv().loadAsync(e);o.code=i.toString()}else o.code=Mv(o.uri)}function Mv(o){return decodeURIComponent(Array.prototype.map.call(atob(o),function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)}).join(""))}var Xu=P("debugenvlight"),qu=(n=>(n[n.Skybox=0]="Skybox",n[n.Trilight=1]="Trilight",n[n.Flat=3]="Flat",n[n.Custom=4]="Custom",n))(qu||{});var Ol=class{context;constructor(e){this.context=e,this.context.pre_update_callbacks.push(this.preUpdate.bind(this))}sceneLightSettings;preUpdate(){let e=this.context.time;this._timevec4.x=e.time,this._timevec4.y=Math.sin(e.time),this._timevec4.z=Math.cos(e.time),this._timevec4.w=e.deltaTime}_timevec4=new Iv;get timeVec4(){return this._timevec4}get environmentIntensity(){return this.sceneLightSettings?this.sceneLightSettings.ambientIntensity:1}registerSceneLightSettings(e){this.sceneLightSettings=e}registerReflection(e,t){let i=new Qu(this.context,t,1);this._lighting[e]=i}getReflection(e){return this._lighting[e]}enableReflection(e){switch(Xu&&console.log(this.sceneLightSettings?qu[this.sceneLightSettings.ambientMode]:"Unknown ambient mode"),this.sceneLightSettings?.ambientMode){case 0:case 4:let t=this.getReflection(e);if(t&&t.Source){let i=this.context.scene,n=t.Source;n.encoding=Pl,n.mapping=Sl,i.environment=n;return}break}if(this.sceneLightSettings?.environmentReflectionSource===1)switch(this.sceneLightSettings?.ambientMode){case 1:if(this.sceneLightSettings.ambientTrilight){let t=this.sceneLightSettings.ambientTrilight,i=Wf(t[0],t[1],t[2],64,64);i.encoding=Pl,i.mapping=Sl,this.context.scene.environment=i}else console.error("Missing ambient trilight",this.sceneLightSettings.sourceId);return;case 3:if(this.sceneLightSettings.ambientLight){let t=Rl(this.sceneLightSettings.ambientLight,64);t.encoding=Pl,t.mapping=Sl,this.context.scene.environment=t}else console.error("Missing ambientlight",this.sceneLightSettings.sourceId);return;default:return}}disableReflection(){let e=this.context.scene;e.environment=null}async getSceneLightingData(e){return Xu&&console.log("GET SCENE LIGHT DATA"),this._waitPromise?this._waitPromise:(this._waitPromise=new Promise((t,i)=>{let n=setInterval(async()=>{let r=this.getReflection(e);r&&(clearInterval(n),t(r.getSphericalHarmonicsArray(this.sceneLightSettings?.ambientIntensity??1)))},10)}),this._waitPromise)}_waitPromise;_lighting={}},Qu=class{get Source(){return this._source}get Array(){return this._sphericalHarmonicsArray}_context;_source;_sphericalHarmonics=null;_sphericalHarmonicsArray;_ambientScale=1;_lightProbe;constructor(e,t,i=1){this._context=e,this._source=t,this._ambientScale=i,t.mapping=Sl,t.encoding=Pl}getSphericalHarmonicsArray(e=1){if(this._sphericalHarmonicsArray?.length&&this._source)return{array:this._sphericalHarmonicsArray,texture:this._source,lightProbe:this._lightProbe};try{let t=this._source,i=null;if(t){Xu&&console.log("GENERATING LIGHT PROBE",t);let n=Math.min(t.image.width,512);i=new Av(n).fromEquirectangularTexture(this._context.renderer,t),this._source=i.texture}if(this._sphericalHarmonicsArray=[],i){let n=Dv.fromCubeRenderTarget(this._context.renderer,i);this._lightProbe=n;let r=this._ambientScale*(e*e*Math.PI*.5)-1;this._sphericalHarmonics=n.sh,this._sphericalHarmonicsArray=this._sphericalHarmonics.toArray();let s=e/(Math.PI*.5);for(let a=0;a<this._sphericalHarmonicsArray.length;a++)this._sphericalHarmonicsArray[a]*=s;if(n.sh.scale(r),this._source)return{array:this._sphericalHarmonicsArray,texture:this._source,lightProbe:n}}}catch(t){console.error(t)}return null}};import{Object3D as Lv}from"three";var Ur=P("debugaddressables"),kl=class{_context;constructor(e){this._context=e,this._context.pre_update_callbacks.push(this.preUpdate.bind(this))}preUpdate(){}_assetReferences={};findAssetReference(e){return this._assetReferences[e]||null}registerAssetReference(e){return e.uri&&(this._assetReferences[e.uri]?console.warn("Asset reference already registered",e):this._assetReferences[e.uri]=e),e}},Fo=class{static getOrCreate(e,t,i){let n=Ii(e,t);Ur&&console.log("GetOrCreate Addressable from",e,t,"FinalPath=",n);let r=i.addressables,s=r.findAssetReference(n);if(s)return s;let a=new Fo(n,i.hash);return r.registerAssetReference(a),a}get asset(){return this._glbRoot??this._asset}set asset(e){this._asset=e}_loading;get uri(){return this._uri}get rawAsset(){return this._asset}_asset;_glbRoot;_uri;_progressListeners=[];_hash;_hashedUri;_isLoadingRawBinary=!1;_rawBinary;constructor(e,t){this._uri=e,this._hash=t,e.includes("?v=")?this._hashedUri=e:this._hashedUri=t?e+"?v="+t:e,Yp(this._uri,this.onResolvePrefab.bind(this))}async onResolvePrefab(e){return e===this.uri&&(this.mustLoad&&await this.loadAssetAsync(),this.asset)?this.asset:null}get mustLoad(){return!this.asset||this.asset.__destroyed===!0}isLoaded(){return this._rawBinary||this.asset!==void 0}unload(){this.asset&&(Ur&&console.log("Unload",this.asset),this.asset.scene?si(this.asset.scene):si(this.asset)),this.asset=null}async preload(){if(!this.mustLoad||this._isLoadingRawBinary)return null;if(this._rawBinary!==void 0)return this._rawBinary;this._isLoadingRawBinary=!0,Ur&&console.log("Preload",this._hashedUri);let e=await Af(this._hashedUri,t=>{this.raiseProgressEvent(t)});return this._rawBinary=e?.buffer??null,this._isLoadingRawBinary=!1,this._rawBinary}async loadAssetAsync(e){if(!this.mustLoad)return;if(e&&this._progressListeners.push(e),this._loading!==void 0)return this._loading;let t=G.Current;this._rawBinary?(this._loading=qe().parseSync(t,this._rawBinary,this.uri,null),this.raiseProgressEvent(new ProgressEvent("progress",{loaded:this._rawBinary.byteLength,total:this._rawBinary.byteLength}))):(Ur&&console.log("Load async",this.uri),this._loading=qe().loadSync(t,this._hashedUri,null,!0,n=>{this.raiseProgressEvent(n)}));let i=await this._loading;if(this._progressListeners.length=0,this._glbRoot=this.tryGetActualGameObjectRoot(i),this._loading=void 0,i)return bn(t),i.scene!==void 0&&(this.asset=i),this.asset}async instantiate(e){return this.onInstantiate(e,!1)}async instantiateSynced(e,t=!0){return this.onInstantiate(e,!0,t)}beginListenDownload(e){this._progressListeners.indexOf(e)<0&&this._progressListeners.push(e)}endListenDownload(e){let t=this._progressListeners.indexOf(e);t>=0&&this._progressListeners.splice(t,1)}raiseProgressEvent(e){for(let t of this._progressListeners)t(this,e)}async onInstantiate(e,t=!1,i){let n=G.Current;if(e||(e=n.scene),this.mustLoad&&await this.loadAssetAsync(),Ur&&console.log("Instantiate",this.uri,"parent:",e),this.asset){Ur&&console.log("Add to scene",this.asset);let r=e instanceof Ue?e:null;if(r||(r=new Ue),typeof e=="object"&&(e instanceof Lv?r.parent=e:Object.assign(r,e)),Fo.currentlyInstantiating.indexOf(this.uri)>=0)return console.error("Recursive instantiation of",this.uri),null;try{if(Fo.currentlyInstantiating.push(this.uri),t){r.context=n;let s=this.asset;s.guid=this.uri;let a=rl(s,r,void 0,i);if(a)return a}else{let s=Dr(this.asset,r);if(s)return s}}finally{n.post_render_callbacks.push(()=>Fo.currentlyInstantiating.pop())}}else Ur&&console.warn("Failed to load asset",this.uri);return null}tryGetActualGameObjectRoot(e){if(e&&e.scene){let t=e.scene;return t.isGroup&&t.children.length===1&&t.children[0].name+"glb"===t.name?t.children[0]:t}return null}},et=Fo;I(et,"currentlyInstantiating",[]);var Yu=class extends Li{constructor(){super([et])}onSerialize(e,t){if(e&&e.uri!==void 0&&typeof e.uri=="string")return e.uri}onDeserialize(e,t){return typeof e=="string"?t.context?t.gltfId?et.getOrCreate(t.gltfId,e,t.context):(console.error("Missing spurce id"),null):(console.error("Missing context"),null):null}};new Yu;var Ml=class extends EventTarget{context;get hasFocus(){return document.hasFocus()}get isVisible(){return this._isVisible}_isVisible=!0;constructor(e){super(),this.context=e,window.addEventListener("visibilitychange",this.onVisiblityChanged.bind(this),!1)}onVisiblityChanged(e){switch(e.target.visibilityState){case"hidden":this._isVisible=!1,this.dispatchEvent(new Event("application-hidden"));break;case"visible":this._isVisible=!0,this.dispatchEvent(new Event("application-visible"));break}}};import{FloatType as jv,HalfFloatType as Hv,sRGBEncoding as Fv}from"three";var Xf="NEEDLE_lightmaps",Bv=P("debuglightmapsextension"),ia=(i=>(i[i.Lightmap=0]="Lightmap",i[i.Skybox=1]="Skybox",i[i.Reflection=2]="Reflection",i))(ia||{}),Il=class{get name(){return Xf}parser;registry;source;constructor(e,t,i){this.parser=e,this.registry=t,this.source=i}afterRoot(e){let t=this.parser.json.extensions;if(t){let i=t[Xf];if(i){let n=i.textures;return n?.length?(Bv&&console.log(i),new Promise(async(r,s)=>{let a=[];for(let c of n)if(c.pointer){let u=Eo(this.parser,c.pointer).then(l=>{let d=l;d?.isTexture&&(this.registry?(c.type!==0&&(d.encoding=Fv),c.type===1&&(d.type==jv||d.type==Hv)&&(d.flipY=!0),this.registry.registerTexture(this.source,c.type,d,c.index)):console.log(ia[c.type],c.pointer,d))});a.push(u)}await Promise.all(a),r()})):null}}return null}};import*as Bi from"three";var Qf=!!P("debuglightmaps"),Al=class{_context;_lightmaps=new Map;constructor(e){this._context=e}registerTexture(e,t,i,n){Qf&&console.log("Registering ",ia[t],i,e),this._lightmaps.has(e)||this._lightmaps.set(e,new Map);let r=this._lightmaps.get(e),s=r?.get(t)??[];s.length<n&&(s.length=n+1),s[n]=i,r?.set(t,s)}tryGetLightmap(e,t=0){return this.tryGet(e,0,t)}tryGetSkybox(e){return this.tryGet(e,1,0)}tryGetReflection(e){return this.tryGet(e,2,0)}tryGet(e,t,i){if(!e)return Qf&&console.warn("Missing source id"),null;let n=this._lightmaps.get(e)?.get(t)??null;return!n?.length||n.length<=i?null:n[i]}};Bi.ShaderChunk.lights_fragment_maps=Bi.ShaderChunk.lights_fragment_maps.replace("vec4 lightMapTexel = texture2D( lightMap, vUv2 );",`
153
153
 
154
154
  vec2 lUv = vUv2.xy * lightmapScaleOffset.xy + vec2(lightmapScaleOffset.z, (1. - (lightmapScaleOffset.y + lightmapScaleOffset.w)));
155
155
  vec4 lightMapTexel = texture2D( lightMap, lUv);
@@ -157,7 +157,7 @@ https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects
157
157
  lightMapTexel.rgb *= lightMapTexel.a * 8.; // no idea where that "8" comes from... heuristically derived
158
158
  lightMapTexel.a = 1.;
159
159
  lightMapTexel = conv_sRGBToLinear(lightMapTexel);
160
- `);Fi.ShaderChunk.lightmap_pars_fragment=`
160
+ `);Bi.ShaderChunk.lightmap_pars_fragment=`
161
161
  #ifdef USE_LIGHTMAP
162
162
  uniform sampler2D lightMap;
163
163
  uniform float lightMapIntensity;
@@ -168,12 +168,12 @@ https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects
168
168
  return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );
169
169
  }
170
170
  #endif
171
- `;Fi.ShaderChunk.lights_fragment_begin=Fi.ShaderChunk.lights_fragment_begin.replace("irradiance += getLightProbeIrradiance( lightProbe, geometry.normal );",`
171
+ `;Bi.ShaderChunk.lights_fragment_begin=Bi.ShaderChunk.lights_fragment_begin.replace("irradiance += getLightProbeIrradiance( lightProbe, geometry.normal );",`
172
172
  #if defined(USE_LIGHTMAP)
173
173
  irradiance += 0.;
174
174
  #else
175
175
  irradiance += getLightProbeIrradiance( lightProbe, geometry.normal );
176
- #endif`);Fi.UniformsLib.lightmap.lightmapScaleOffset={value:new Fi.Vector4(1,1,0,0)};var Fv=P("debugplayerview");var Yd=class{userId;context;viewDevice="browser";get currentObject(){return this._object}set currentObject(e){this._object=e}get isConnected(){return this.context.connection.userIsInRoom(this.userId)}removed=!1;_object;constructor(e,t){this.userId=e,this.context=t}},Al=class{context;playerViews=new Map;constructor(e){this.context=e}setPlayerView(e,t,i){let n=this.playerViews.get(e);n||(n=new Yd(e,this.context),this.playerViews.set(e,n)),n.viewDevice=i,n.currentObject=t,n.removed=!1}getPlayerView(e){if(!e)return;if(!this.context.connection.userIsInRoom(e)){this.playerViews.delete(e);return}return this.playerViews.get(e)}removePlayerView(e,t){let i=this.playerViews.get(e);i?.viewDevice===t&&(Fv&&console.log("REMOVE",e),i.removed=!0,this.playerViews.delete(e))}};var zv=P("debugSetup"),Wv=P("stats"),Nv=P("debugactive"),Dl={};var Ct=(a=>(a[a.EarlyUpdate=0]="EarlyUpdate",a[a.Update=1]="Update",a[a.LateUpdate=2]="LateUpdate",a[a.OnBeforeRender=3]="OnBeforeRender",a[a.OnAfterRender=4]="OnAfterRender",a[a.PrePhysicsStep=9]="PrePhysicsStep",a[a.PostPhysicsStep=10]="PostPhysicsStep",a))(Ct||{});function al(o,e){if(!o)return;let t=e?.new_scripts??G.Current.new_scripts;t.includes(o)||t.push(o)}var ut=class{static get Current(){return this._current}static set Current(e){this._current=e}name;alias;isManagedExternally=!1;isPaused=!1;runInBackground=!1;hash;domElement;get resolutionScaleFactor(){return this._resolutionScaleFactor}set resolutionScaleFactor(e){if(e!==this._resolutionScaleFactor&&typeof e=="number"){if(e<=0){console.error("Invalid resolution scale factor",e);return}this._resolutionScaleFactor=e,this.updateSize()}}_resolutionScaleFactor=1;_boundingClientRectFrame=-1;_boundingClientRect=null;_domX;_domY;calculateBoundingClientRect(){if(this.isInAR){this._domX=0,this._domY=0;return}this._boundingClientRectFrame!==this.time.frame&&(this._boundingClientRectFrame=this.time.frame,this._boundingClientRect=this.domElement.getBoundingClientRect(),this._domX=this._boundingClientRect.x,this._domY=this._boundingClientRect.y)}get domWidth(){return this.isInAR?window.innerWidth:this.domElement.clientWidth}get domHeight(){return this.isInAR?window.innerHeight:this.domElement.clientHeight}get domX(){return this.calculateBoundingClientRect(),this._domX}get domY(){return this.calculateBoundingClientRect(),this._domY}get isInXR(){return this.renderer.xr?.isPresenting||!1}xrSessionMode=void 0;get isInVR(){return this.xrSessionMode==="immersive-vr"}get isInAR(){return this.xrSessionMode==="immersive-ar"}get xrSession(){return this.renderer.xr?.getSession()}get arOverlayElement(){let e=this.domElement;return typeof e.getAROverlayContainer=="function"?e.getAROverlayContainer():this.domElement}get currentFrameEvent(){return this._currentFrameEvent}_currentFrameEvent=-1;scene;renderer;composer=null;scripts=[];scripts_pausedChanged=[];scripts_earlyUpdate=[];scripts_update=[];scripts_lateUpdate=[];scripts_onBeforeRender=[];scripts_onAfterRender=[];scripts_WithCorroutines=[];coroutines={};get mainCamera(){if(this.mainCameraComponent){let e=this.mainCameraComponent;return e.cam||e.buildCamera(),e.cam}return null}mainCameraComponent;post_setup_callbacks=[];pre_update_callbacks=[];pre_render_callbacks=[];post_render_callbacks=[];new_scripts=[];new_script_start=[];new_scripts_pre_setup_callbacks=[];new_scripts_post_setup_callbacks=[];application;time;input;physics;connection;assets;mainLight=null;rendererData;addressables;lightmaps;players;_sizeChanged=!1;_isCreated=!1;_isVisible=!1;_stats=Wv?Xf.default():null;constructor(e){if(this.name=e?.name||"",this.alias=e?.alias,this.domElement=e?.domElement||document.body,this.hash=e?.hash,e?.renderer)this.renderer=e.renderer,this.isManagedExternally=!0;else{let r=P("postfx");this.renderer=new Uv({antialias:!0}),this.renderer.toneMappingExposure=1,this.renderer.toneMapping=Se.NoToneMapping,this.renderer.setClearColor(new Se.Color("lightgrey"),0),this.renderer.antialias=!0,this.renderer.alpha=!1,this.renderer.shadowMap.enabled=!0,this.renderer.shadowMap.type=Se.PCFSoftShadowMap,this.renderer.setSize(this.domWidth,this.domHeight),this.renderer.outputEncoding=Se.sRGBEncoding,this.renderer.physicallyCorrectLights=!0,this.composer=r?new Gv(this.renderer):null}this.scene=new Se.Scene,this.application=new kl(this),this.time=new ul,this.input=new qa(this),this.physics=new Xn(this),this.connection=new yl(this),this.assets=new Cl,this.rendererData=new Pl(this),this.addressables=new Ol(this),this.lightmaps=new Il(this),this.players=new Al(this);let t=()=>this._sizeChanged=!0;window.addEventListener("resize",t),this._disposeCallbacks.push(()=>window.removeEventListener("resize",t));let i=new ResizeObserver(r=>this._sizeChanged=!0);i.observe(this.domElement),this._disposeCallbacks.push(()=>i.disconnect());let n=new IntersectionObserver(r=>{this._isVisible=r[0].isIntersecting});n.observe(this.domElement),this._disposeCallbacks.push(()=>n.disconnect())}_disposeCallbacks=[];updateSize(){if(!this.isManagedExternally&&!this.renderer.xr.isPresenting){this._sizeChanged=!1;let e=this.resolutionScaleFactor,t=this.domWidth*e,i=this.domHeight*e,n=this.mainCamera;this.updateAspect(n),this.renderer.setSize(t,i),this.renderer.setPixelRatio(window.devicePixelRatio),this.renderer.domElement.style.width="100%",this.renderer.domElement.style.height="100%",this.composer&&(this.composer.setSize(t,i),this.composer.setPixelRatio(window.devicePixelRatio))}}updateAspect(e){if(!e)return;let t=this.domWidth,i=this.domHeight,n=e.aspect;e.aspect=t/i,n!==e.aspect&&e.updateProjectionMatrix()}onCreate(e,t){return this._isCreated?(console.warn("Context already created"),null):(this._isCreated=!0,this.internalOnCreate(e,t))}onDestroy(){if(!!this._isCreated){this._isCreated=!1,oi(this.scene,!0),this.renderer?.setAnimationLoop(null),this.isManagedExternally||this.renderer?.dispose();for(let e of this._disposeCallbacks)try{e()}catch(t){console.error("Error in on dispose callback:",t,e)}this.domElement?.parentElement&&this.domElement.parentElement.removeChild(this.domElement)}}registerCoroutineUpdate(e,t,i){return this.coroutines[i]||(this.coroutines[i]=[]),this.coroutines[i].push({comp:e,main:t}),t}unregisterCoroutineUpdate(e,t){if(!this.coroutines[t])return;let i=this.coroutines[t].findIndex(n=>n.main===e);i>=0&&this.coroutines[t].splice(i,1)}stopAllCoroutinesFrom(e){for(let t in this.coroutines){let i=this.coroutines[t];for(let n=i.length-1;n>=0;n--)i[n].comp===e&&i.splice(n,1)}}_cameraStack=[];setCurrentCamera(e){if(!e)return;if(e.cam||e.buildCamera(),!e.cam){console.warn("Camera component is missing camera",e);return}let t=this._cameraStack.indexOf(e);t>=0&&this._cameraStack.splice(t,1),this._cameraStack.push(e),this.mainCameraComponent=e;let i=e.cam;i.isPerspectiveCamera&&this.updateAspect(i),this.mainCameraComponent?.applyClearFlagsIfIsActiveCamera()}removeCamera(e){if(!e)return;let t=this._cameraStack.indexOf(e);if(t>=0&&this._cameraStack.splice(t,1),this.mainCameraComponent===e&&(this.mainCameraComponent=void 0,this._cameraStack.length>0)){let i=this._cameraStack[this._cameraStack.length-1];this.setCurrentCamera(i)}}_onBeforeRenderListeners={};addBeforeRenderListener(e,t){if(!this._onBeforeRenderListeners[e.uuid]){this._onBeforeRenderListeners[e.uuid]=[];let i=(n,r,s,a,c,d)=>{let l=this._onBeforeRenderListeners[e.uuid];if(!!l)for(let u=0;u<l.length;u++){let h=l[u];h(n,r,s,a,c,d)}};e.onBeforeRender=i}this._onBeforeRenderListeners[e.uuid].push(t)}removeBeforeRenderListener(e,t){if(this._onBeforeRenderListeners[e.uuid]){let i=this._onBeforeRenderListeners[e.uuid],n=i.indexOf(t);n>=0&&i.splice(n,1)}}_requireDepthTexture=!1;_requireColorTexture=!1;_renderTarget;_isRendering=!1;get isRendering(){return this._isRendering}setRequireDepth(e){this._requireDepthTexture=e}setRequireColor(e){this._requireColorTexture=e}get depthTexture(){return this._renderTarget?.depthTexture||null}get opaqueColorTexture(){return this._renderTarget?.texture||null}get isVisibleToUser(){if(this.isInXR)return!0;if(!this._isVisible)return!1;let e=getComputedStyle(this.domElement);return e.visibility!=="hidden"&&e.display!=="none"&&e.opacity!=="0"}async internalOnCreate(e,t){await this.physics.createWorld();let i=!0;try{ut.Current=this,e&&await e(this,t)}catch(n){console.error(n),i=!1}if(!!i){this.isManagedExternally||this.domElement.prepend(this.renderer.domElement),Qp(this),Xp(this),jf(this),ut._current=this;for(let n=0;n<this.new_scripts.length;n++){let r=this.new_scripts[n];if(r.gameObject!==void 0&&r.gameObject!==null){r.gameObject.userData===void 0&&(r.gameObject.userData={}),r.gameObject.userData.components===void 0&&(r.gameObject.userData.components=[]);let s=r.gameObject.userData.components;s.includes(r)||s.push(r)}}if(this.post_setup_callbacks)for(let n=0;n<this.post_setup_callbacks.length;n++)ut._current=this,await this.post_setup_callbacks[n](this);if(!this.mainCamera){ut._current=this;let n=null;si(this.scene,r=>{let s=r;if(s?.isCamera){if(s.tag==="MainCamera")return n=s,!0;n=s}}),n?this.setCurrentCamera(n):console.error("MISSING camera",this)}if(ut._current=this,gn(this),!this.isManagedExternally&&this.composer&&this.mainCamera){let n=new Vv(this.scene,this.mainCamera);this.renderer.setSize(this.domWidth,this.domHeight),this.composer.addPass(n),this.composer.setSize(this.domWidth,this.domHeight)}this._sizeChanged=!0,this._stats&&(this._stats.showPanel(1),this.domElement.appendChild(this._stats.dom)),this.renderer.setAnimationLoop(this.render.bind(this)),zv&&Ns(this.scene,!0)}}render(e,t){if(this._currentFrameEvent=-1,this.onHandlePaused())return;for(this._stats?.begin(),ut._current=this,this.time.update(),gn(this),To(),$a(this);this._cameraStack.length>0&&(!this.mainCameraComponent||this.mainCameraComponent.destroyed);){this._cameraStack.splice(this._cameraStack.length-1,1);let r=this._cameraStack[this._cameraStack.length-1];this.setCurrentCamera(r)}if(this.pre_update_callbacks)for(let r in this.pre_update_callbacks)this.pre_update_callbacks[r]();this._currentFrameEvent=0;for(let r=0;r<this.scripts_earlyUpdate.length;r++){let s=this.scripts_earlyUpdate[r];!s.activeAndEnabled||s.earlyUpdate!==void 0&&(ut._current=this,s.earlyUpdate())}if(this.executeCoroutines(0),this.onHandlePaused())return;this._currentFrameEvent=1;for(let r=0;r<this.scripts_update.length;r++){let s=this.scripts_update[r];!s.activeAndEnabled||s.update!==void 0&&(ut._current=this,s.update())}if(this.executeCoroutines(1),this.onHandlePaused())return;this._currentFrameEvent=2;for(let r=0;r<this.scripts_lateUpdate.length;r++){let s=this.scripts_lateUpdate[r];!s.activeAndEnabled||s.lateUpdate!==void 0&&(ut._current=this,s.lateUpdate())}if(this.executeCoroutines(2),this.onHandlePaused())return;let i=1,n=this.time.deltaTime/i;for(let r=0;r<i;r++)this._currentFrameEvent=9,this.executeCoroutines(9),this.physics.step(n),this._currentFrameEvent=10,this.executeCoroutines(10);if(this.physics.postStep(),!this.onHandlePaused()){if(this.isVisibleToUser){this._currentFrameEvent=3;for(let r=0;r<this.scripts_onBeforeRender.length;r++){let s=this.scripts_onBeforeRender[r];!s.activeAndEnabled||s.onBeforeRender!==void 0&&(ut._current=this,s.onBeforeRender(t))}if(this.executeCoroutines(3),this._sizeChanged&&this.updateSize(),this.pre_render_callbacks)for(let r in this.pre_render_callbacks)this.pre_render_callbacks[r]();this._currentFrameEvent=-10,this._isRendering=!0,this.renderRequiredTextures(),this.isManagedExternally||(this.composer&&!this.isInXR?this.composer.render():this.mainCamera&&this.renderer.render(this.scene,this.mainCamera)),this._isRendering=!1,this._currentFrameEvent=4;for(let r=0;r<this.scripts_onAfterRender.length;r++){let s=this.scripts_onAfterRender[r];!s.activeAndEnabled||s.onAfterRender!==void 0&&(ut._current=this,s.onAfterRender())}if(this.executeCoroutines(4),this.post_render_callbacks)for(let r in this.post_render_callbacks)this.post_render_callbacks[r]()}this._currentFrameEvent=-1,this.connection.sendBufferedMessagesNow(),this._stats?.end()}}_wasPaused=!1;onHandlePaused(){let e=this.evaluatePaused();if(this._wasPaused!==e){Nv&&console.log("Paused?",e,"context:"+this.alias);for(let t=0;t<this.scripts_pausedChanged.length;t++){let i=this.scripts_pausedChanged[t];!i.activeAndEnabled||i.onPausedChanged!==void 0&&(ut._current=this,i.onPausedChanged(e,this._wasPaused))}}return this._wasPaused=e,e}evaluatePaused(){return this.isInXR?!1:this.isPaused?!0:this.runInBackground?!1:!this.isVisibleToUser}renderRequiredTextures(){if(!this.mainCamera||!this._requireDepthTexture&&!this._requireColorTexture)return;if(!this._renderTarget){if(this._renderTarget=new Se.WebGLRenderTarget(this.domWidth,this.domHeight),this._requireDepthTexture){let i=new Bv(this.domWidth,this.domHeight);this._renderTarget.depthTexture=i}this._requireColorTexture&&(this._renderTarget.texture=new Se.Texture,this._renderTarget.texture.generateMipmaps=!1,this._renderTarget.texture.minFilter=Se.NearestFilter,this._renderTarget.texture.magFilter=Se.NearestFilter,this._renderTarget.texture.format=Se.RGBAFormat)}let e=this._renderTarget;e.texture&&(e.texture.encoding=this.renderer.outputEncoding);let t=this.renderer.getRenderTarget();this.renderer.setRenderTarget(e),this.renderer.render(this.scene,this.mainCamera),this.renderer.setRenderTarget(t)}executeCoroutines(e){if(this.coroutines[e]){let i=this.coroutines[e];for(let n=0;n<i.length;n++){let r=i[n];if(!r.comp||r.comp.destroyed||!r.main||r.comp.enabled===!1){i.splice(n,1),--n;continue}let a=r.chained;if(a&&a.length>0){let u=a[a.length-1].next();if(u.done&&a.pop(),t(u)&&(r.chained||(r.chained=[]),r.chained.push(u.value)),!u.done)continue}let c=r.main.next();if(c.done===!0){i.splice(n,1),--n;continue}let d=c.value;if(t(d)){if(d.next().done)continue;r.chained||(r.chained=[]),r.chained.push(d)}}}function t(i){return!!(i&&i.next&&i.return)}}},G=ut;I(G,"_current");var Xv=P("debugaroverlay"),Bi="ar",Qf="quit-ar",Ll=class{get ARContainer(){return this.arContainer}constructor(){this.closeARCallback=this.onRequestedEndAR.bind(this)}arContainer=null;closeARCallback;currentSession=null;registeredCloseEventElements=[];_createdAROnlyElements=[];_reparentedObjects=[];requestEndAR(){this.onRequestedEndAR()}onBegin(e,t,i){this.currentSession=i,this.arContainer=t,e.domElement.querySelectorAll(`.${Bi}`).forEach(s=>{!s||s!==this.arContainer&&(this._reparentedObjects.push({el:s,previousParent:s.parentElement}),this.arContainer?.appendChild(s))});let r=t.getElementsByClassName(Qf);if(!r||r.length<=0)console.warn(`Missing quit AR elements, creating fallback X button. Use class name '${Qf}' to override.`),this.createFallbackCloseARButton(this.arContainer);else for(let s=0;s<r.length;s++){let a=r[s];!a||(a.addEventListener("click",this.closeARCallback),this.registeredCloseEventElements.push(a))}}onEnd(e){for(let t of this._createdAROnlyElements)t.remove&&t.remove();for(let t of this._reparentedObjects){let i=t.el;t.previousParent?.appendChild(i)}this._reparentedObjects.length=0,Fa()&&setTimeout(()=>{let t=e.renderer.domElement;t&&e.domElement.insertBefore(t,e.domElement.firstChild);let i=document.querySelectorAll("*");for(var n=0;n<i.length;n++){let r=i[n];r&&r._displayChanged!==void 0&&r._displayWas!==void 0&&(r.style.display=r._displayWas)}},10)}findOrCreateARContainer(e){if(e.classList.contains(Bi))return e;if(e.children)for(let n=0;n<e.children.length;n++){let r=e.children[n];if(!(!r||!r.classList)&&r.classList.contains(Bi))return r}let t=document.getElementsByClassName(Bi);if(t&&t.length>0)return t[0];Xv&&console.log("No overlay container found in document - generating new ony");let i=document.createElement("div");return i.classList.add(Bi),i.style.position="absolute",i.style.width="100%",i.style.height="100%",i.style.display="flex",i.style.visibility="visible",e.appendChild(i)}onRequestedEndAR(){if(!!this.currentSession){this.currentSession.end(),this.currentSession=null;for(let e of this.registeredCloseEventElements)e.removeEventListener("click",this.closeARCallback);this.registeredCloseEventElements.length=0}}createFallbackCloseARButton(e){var t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttribute("width","38px"),t.setAttribute("height","38px"),t.style.position="absolute",t.style.right="20px",t.style.top="40px",t.style.zIndex="9999",t.style.pointerEvents="auto",t.addEventListener("click",this.closeARCallback),e.appendChild(t),this._createdAROnlyElements.push(t);var i=document.createElementNS("http://www.w3.org/2000/svg","path");i.setAttribute("d","M 12,12 L 28,28 M 28,12 12,28"),i.setAttribute("stroke","#ddd"),i.setAttribute("stroke-width","3px"),t.appendChild(i),this._createdAROnlyElements.push(i)}};var Qv=P("debugdebug"),qf=P("noerrors"),Kd=new Map,wR=new RegExp(" at .+/(.+?.ts)","g"),Us=(i=>(i[i.Log=0]="Log",i[i.Warn=1]="Warn",i[i.Error=2]="Error",i))(Us||{});function rd(){return Kf}function Yf(){if(qf)return;if(lt()){Qv&&console.log(window.location.hostname);let e=console.error;console.error=(...t)=>{e.apply(console,t),Gs(2,t,null,null),Jd()},window.addEventListener("error",t=>{!t||(Gs(2,t.error,t.filename,t.lineno),Jd())},!0),window.addEventListener("unhandledrejection",t=>{!t||(Gs(2,t.reason.message,t.reason.stack),Jd())})}}var Kf=0;function Jd(){Kf+=1}function Gs(o,e,t,i){if(qf)return;let r=G.Current?.domElement??document.querySelector("needle-engine");if(!!r){if(Array.isArray(e)){let s="";for(let a=0;a<e.length;a++)typeof e[a]!="object"&&(a>0&&(s+=" "),s+=e[a]);e=s}qv(o,r,e)}}var Zd=new Set;function qv(o,e,t){let i=Kv(e);if(i.childElementCount>=20||Zd.has(t))return;Zd.add(t);let n=Zv(o,t);i.prepend(n),setTimeout(()=>{Zd.delete(t),Jv(n)},1e4)}var Yv=`
176
+ #endif`);Bi.UniformsLib.lightmap.lightmapScaleOffset={value:new Bi.Vector4(1,1,0,0)};var Uv=P("debugplayerview");var Ku=class{userId;context;viewDevice="browser";get currentObject(){return this._object}set currentObject(e){this._object=e}get isConnected(){return this.context.connection.userIsInRoom(this.userId)}removed=!1;_object;constructor(e,t){this.userId=e,this.context=t}},Dl=class{context;playerViews=new Map;constructor(e){this.context=e}setPlayerView(e,t,i){let n=this.playerViews.get(e);n||(n=new Ku(e,this.context),this.playerViews.set(e,n)),n.viewDevice=i,n.currentObject=t,n.removed=!1}getPlayerView(e){if(!e)return;if(!this.context.connection.userIsInRoom(e)){this.playerViews.delete(e);return}return this.playerViews.get(e)}removePlayerView(e,t){let i=this.playerViews.get(e);i?.viewDevice===t&&(Uv&&console.log("REMOVE",e),i.removed=!0,this.playerViews.delete(e))}};var Nv=P("debugSetup"),Xv=P("stats"),Qv=P("debugactive"),Ll={};var Ct=(a=>(a[a.EarlyUpdate=0]="EarlyUpdate",a[a.Update=1]="Update",a[a.LateUpdate=2]="LateUpdate",a[a.OnBeforeRender=3]="OnBeforeRender",a[a.OnAfterRender=4]="OnAfterRender",a[a.PrePhysicsStep=9]="PrePhysicsStep",a[a.PostPhysicsStep=10]="PostPhysicsStep",a))(Ct||{});function ll(o,e){if(!o)return;let t=e?.new_scripts??G.Current.new_scripts;t.includes(o)||t.push(o)}var dt=class{static get Current(){return this._current}static set Current(e){this._current=e}name;alias;isManagedExternally=!1;isPaused=!1;runInBackground=!1;hash;domElement;get resolutionScaleFactor(){return this._resolutionScaleFactor}set resolutionScaleFactor(e){if(e!==this._resolutionScaleFactor&&typeof e=="number"){if(e<=0){console.error("Invalid resolution scale factor",e);return}this._resolutionScaleFactor=e,this.updateSize()}}_resolutionScaleFactor=1;_boundingClientRectFrame=-1;_boundingClientRect=null;_domX;_domY;calculateBoundingClientRect(){if(this.isInAR){this._domX=0,this._domY=0;return}this._boundingClientRectFrame!==this.time.frame&&(this._boundingClientRectFrame=this.time.frame,this._boundingClientRect=this.domElement.getBoundingClientRect(),this._domX=this._boundingClientRect.x,this._domY=this._boundingClientRect.y)}get domWidth(){return this.isInAR?window.innerWidth:this.domElement.clientWidth}get domHeight(){return this.isInAR?window.innerHeight:this.domElement.clientHeight}get domX(){return this.calculateBoundingClientRect(),this._domX}get domY(){return this.calculateBoundingClientRect(),this._domY}get isInXR(){return this.renderer.xr?.isPresenting||!1}xrSessionMode=void 0;get isInVR(){return this.xrSessionMode==="immersive-vr"}get isInAR(){return this.xrSessionMode==="immersive-ar"}get xrSession(){return this.renderer.xr?.getSession()}get arOverlayElement(){let e=this.domElement;return typeof e.getAROverlayContainer=="function"?e.getAROverlayContainer():this.domElement}get currentFrameEvent(){return this._currentFrameEvent}_currentFrameEvent=-1;scene;renderer;composer=null;scripts=[];scripts_pausedChanged=[];scripts_earlyUpdate=[];scripts_update=[];scripts_lateUpdate=[];scripts_onBeforeRender=[];scripts_onAfterRender=[];scripts_WithCorroutines=[];coroutines={};get mainCamera(){if(this.mainCameraComponent){let e=this.mainCameraComponent;return e.cam||e.buildCamera(),e.cam}return null}mainCameraComponent;post_setup_callbacks=[];pre_update_callbacks=[];pre_render_callbacks=[];post_render_callbacks=[];new_scripts=[];new_script_start=[];new_scripts_pre_setup_callbacks=[];new_scripts_post_setup_callbacks=[];application;time;input;physics;connection;assets;mainLight=null;rendererData;addressables;lightmaps;players;_sizeChanged=!1;_isCreated=!1;_isVisible=!1;_stats=Xv?qf.default():null;constructor(e){if(this.name=e?.name||"",this.alias=e?.alias,this.domElement=e?.domElement||document.body,this.hash=e?.hash,e?.renderer)this.renderer=e.renderer,this.isManagedExternally=!0;else{let r=P("postfx");this.renderer=new Vv({antialias:!0}),this.renderer.toneMappingExposure=1,this.renderer.toneMapping=Se.NoToneMapping,this.renderer.setClearColor(new Se.Color("lightgrey"),0),this.renderer.antialias=!0,this.renderer.alpha=!1,this.renderer.shadowMap.enabled=!0,this.renderer.shadowMap.type=Se.PCFSoftShadowMap,this.renderer.setSize(this.domWidth,this.domHeight),this.renderer.outputEncoding=Se.sRGBEncoding,this.renderer.physicallyCorrectLights=!0,this.composer=r?new zv(this.renderer):null}this.scene=new Se.Scene,this.application=new Ml(this),this.time=new hl,this.input=new Ya(this),this.physics=new Qn(this),this.connection=new _l(this),this.assets=new Tl,this.rendererData=new Ol(this),this.addressables=new kl(this),this.lightmaps=new Al(this),this.players=new Dl(this);let t=()=>this._sizeChanged=!0;window.addEventListener("resize",t),this._disposeCallbacks.push(()=>window.removeEventListener("resize",t));let i=new ResizeObserver(r=>this._sizeChanged=!0);i.observe(this.domElement),this._disposeCallbacks.push(()=>i.disconnect());let n=new IntersectionObserver(r=>{this._isVisible=r[0].isIntersecting});n.observe(this.domElement),this._disposeCallbacks.push(()=>n.disconnect())}_disposeCallbacks=[];updateSize(){if(!this.isManagedExternally&&!this.renderer.xr.isPresenting){this._sizeChanged=!1;let e=this.resolutionScaleFactor,t=this.domWidth*e,i=this.domHeight*e,n=this.mainCamera;this.updateAspect(n),this.renderer.setSize(t,i),this.renderer.setPixelRatio(window.devicePixelRatio),this.renderer.domElement.style.width="100%",this.renderer.domElement.style.height="100%",this.composer&&(this.composer.setSize?.call(this.composer,t,i),this.composer.setPixelRatio?.call(this.composer,window.devicePixelRatio))}}updateAspect(e){if(!e)return;let t=this.domWidth,i=this.domHeight,n=e.aspect;e.aspect=t/i,n!==e.aspect&&e.updateProjectionMatrix()}onCreate(e,t){return this._isCreated?(console.warn("Context already created"),null):(this._isCreated=!0,this.internalOnCreate(e,t))}onDestroy(){if(!!this._isCreated){this._isCreated=!1,si(this.scene,!0),this.renderer?.setAnimationLoop(null),this.isManagedExternally||this.renderer?.dispose();for(let e of this._disposeCallbacks)try{e()}catch(t){console.error("Error in on dispose callback:",t,e)}this.domElement?.parentElement&&this.domElement.parentElement.removeChild(this.domElement)}}registerCoroutineUpdate(e,t,i){return this.coroutines[i]||(this.coroutines[i]=[]),this.coroutines[i].push({comp:e,main:t}),t}unregisterCoroutineUpdate(e,t){if(!this.coroutines[t])return;let i=this.coroutines[t].findIndex(n=>n.main===e);i>=0&&this.coroutines[t].splice(i,1)}stopAllCoroutinesFrom(e){for(let t in this.coroutines){let i=this.coroutines[t];for(let n=i.length-1;n>=0;n--)i[n].comp===e&&i.splice(n,1)}}_cameraStack=[];setCurrentCamera(e){if(!e)return;if(e.cam||e.buildCamera(),!e.cam){console.warn("Camera component is missing camera",e);return}let t=this._cameraStack.indexOf(e);t>=0&&this._cameraStack.splice(t,1),this._cameraStack.push(e),this.mainCameraComponent=e;let i=e.cam;i.isPerspectiveCamera&&this.updateAspect(i),this.mainCameraComponent?.applyClearFlagsIfIsActiveCamera()}removeCamera(e){if(!e)return;let t=this._cameraStack.indexOf(e);if(t>=0&&this._cameraStack.splice(t,1),this.mainCameraComponent===e&&(this.mainCameraComponent=void 0,this._cameraStack.length>0)){let i=this._cameraStack[this._cameraStack.length-1];this.setCurrentCamera(i)}}_onBeforeRenderListeners={};addBeforeRenderListener(e,t){if(!this._onBeforeRenderListeners[e.uuid]){this._onBeforeRenderListeners[e.uuid]=[];let i=(n,r,s,a,c,u)=>{let l=this._onBeforeRenderListeners[e.uuid];if(!!l)for(let d=0;d<l.length;d++){let h=l[d];h(n,r,s,a,c,u)}};e.onBeforeRender=i}this._onBeforeRenderListeners[e.uuid].push(t)}removeBeforeRenderListener(e,t){if(this._onBeforeRenderListeners[e.uuid]){let i=this._onBeforeRenderListeners[e.uuid],n=i.indexOf(t);n>=0&&i.splice(n,1)}}_requireDepthTexture=!1;_requireColorTexture=!1;_renderTarget;_isRendering=!1;get isRendering(){return this._isRendering}setRequireDepth(e){this._requireDepthTexture=e}setRequireColor(e){this._requireColorTexture=e}get depthTexture(){return this._renderTarget?.depthTexture||null}get opaqueColorTexture(){return this._renderTarget?.texture||null}get isVisibleToUser(){if(this.isInXR)return!0;if(!this._isVisible)return!1;let e=getComputedStyle(this.domElement);return e.visibility!=="hidden"&&e.display!=="none"&&e.opacity!=="0"}async internalOnCreate(e,t){await this.physics.createWorld();let i=!0;try{dt.Current=this,e&&await e(this,t)}catch(n){console.error(n),i=!1}if(!!i){this.isManagedExternally||this.domElement.prepend(this.renderer.domElement),Qp(this),Xp(this),Ff(this),dt._current=this;for(let n=0;n<this.new_scripts.length;n++){let r=this.new_scripts[n];if(r.gameObject!==void 0&&r.gameObject!==null){r.gameObject.userData===void 0&&(r.gameObject.userData={}),r.gameObject.userData.components===void 0&&(r.gameObject.userData.components=[]);let s=r.gameObject.userData.components;s.includes(r)||s.push(r)}}if(this.post_setup_callbacks)for(let n=0;n<this.post_setup_callbacks.length;n++)dt._current=this,await this.post_setup_callbacks[n](this);if(!this.mainCamera){dt._current=this;let n=null;ai(this.scene,r=>{let s=r;if(s?.isCamera){if(s.tag==="MainCamera")return n=s,!0;n=s}}),n?this.setCurrentCamera(n):console.error("MISSING camera",this)}if(dt._current=this,bn(this),!this.isManagedExternally&&this.composer&&this.mainCamera){let n=new Wv(this.scene,this.mainCamera);this.renderer.setSize(this.domWidth,this.domHeight),this.composer.addPass(n),this.composer.setSize(this.domWidth,this.domHeight)}this._sizeChanged=!0,this._stats&&(this._stats.showPanel(1),this.domElement.appendChild(this._stats.dom)),this.renderer.setAnimationLoop(this.render.bind(this)),Nv&&Xs(this.scene,!0)}}render(e,t){if(this._currentFrameEvent=-1,this.onHandlePaused())return;for(this._stats?.begin(),dt._current=this,this.time.update(),bn(this),Ro(),el(this);this._cameraStack.length>0&&(!this.mainCameraComponent||this.mainCameraComponent.destroyed);){this._cameraStack.splice(this._cameraStack.length-1,1);let r=this._cameraStack[this._cameraStack.length-1];this.setCurrentCamera(r)}if(this.pre_update_callbacks)for(let r in this.pre_update_callbacks)this.pre_update_callbacks[r]();this._currentFrameEvent=0;for(let r=0;r<this.scripts_earlyUpdate.length;r++){let s=this.scripts_earlyUpdate[r];!s.activeAndEnabled||s.earlyUpdate!==void 0&&(dt._current=this,s.earlyUpdate())}if(this.executeCoroutines(0),this.onHandlePaused())return;this._currentFrameEvent=1;for(let r=0;r<this.scripts_update.length;r++){let s=this.scripts_update[r];!s.activeAndEnabled||s.update!==void 0&&(dt._current=this,s.update())}if(this.executeCoroutines(1),this.onHandlePaused())return;this._currentFrameEvent=2;for(let r=0;r<this.scripts_lateUpdate.length;r++){let s=this.scripts_lateUpdate[r];!s.activeAndEnabled||s.lateUpdate!==void 0&&(dt._current=this,s.lateUpdate())}if(this.executeCoroutines(2),this.onHandlePaused())return;let i=1,n=this.time.deltaTime/i;for(let r=0;r<i;r++)this._currentFrameEvent=9,this.executeCoroutines(9),this.physics.step(n),this._currentFrameEvent=10,this.executeCoroutines(10);if(this.physics.postStep(),!this.onHandlePaused()){if(this.isVisibleToUser){this._currentFrameEvent=3;for(let r=0;r<this.scripts_onBeforeRender.length;r++){let s=this.scripts_onBeforeRender[r];!s.activeAndEnabled||s.onBeforeRender!==void 0&&(dt._current=this,s.onBeforeRender(t))}if(this.executeCoroutines(3),this._sizeChanged&&this.updateSize(),this.pre_render_callbacks)for(let r in this.pre_render_callbacks)this.pre_render_callbacks[r]();this._currentFrameEvent=-10,this._isRendering=!0,this.renderRequiredTextures(),this.isManagedExternally||(this.composer&&!this.isInXR?this.composer.render():this.mainCamera&&this.renderer.render(this.scene,this.mainCamera)),this._isRendering=!1,this._currentFrameEvent=4;for(let r=0;r<this.scripts_onAfterRender.length;r++){let s=this.scripts_onAfterRender[r];!s.activeAndEnabled||s.onAfterRender!==void 0&&(dt._current=this,s.onAfterRender())}if(this.executeCoroutines(4),this.post_render_callbacks)for(let r in this.post_render_callbacks)this.post_render_callbacks[r]()}this._currentFrameEvent=-1,this.connection.sendBufferedMessagesNow(),this._stats?.end()}}_wasPaused=!1;onHandlePaused(){let e=this.evaluatePaused();if(this._wasPaused!==e){Qv&&console.log("Paused?",e,"context:"+this.alias);for(let t=0;t<this.scripts_pausedChanged.length;t++){let i=this.scripts_pausedChanged[t];!i.activeAndEnabled||i.onPausedChanged!==void 0&&(dt._current=this,i.onPausedChanged(e,this._wasPaused))}}return this._wasPaused=e,e}evaluatePaused(){return this.isInXR?!1:this.isPaused?!0:this.runInBackground?!1:!this.isVisibleToUser}renderRequiredTextures(){if(!this.mainCamera||!this._requireDepthTexture&&!this._requireColorTexture)return;if(!this._renderTarget){if(this._renderTarget=new Se.WebGLRenderTarget(this.domWidth,this.domHeight),this._requireDepthTexture){let i=new Gv(this.domWidth,this.domHeight);this._renderTarget.depthTexture=i}this._requireColorTexture&&(this._renderTarget.texture=new Se.Texture,this._renderTarget.texture.generateMipmaps=!1,this._renderTarget.texture.minFilter=Se.NearestFilter,this._renderTarget.texture.magFilter=Se.NearestFilter,this._renderTarget.texture.format=Se.RGBAFormat)}let e=this._renderTarget;e.texture&&(e.texture.encoding=this.renderer.outputEncoding);let t=this.renderer.getRenderTarget();this.renderer.setRenderTarget(e),this.renderer.render(this.scene,this.mainCamera),this.renderer.setRenderTarget(t)}executeCoroutines(e){if(this.coroutines[e]){let i=this.coroutines[e];for(let n=0;n<i.length;n++){let r=i[n];if(!r.comp||r.comp.destroyed||!r.main||r.comp.enabled===!1){i.splice(n,1),--n;continue}let a=r.chained;if(a&&a.length>0){let d=a[a.length-1].next();if(d.done&&a.pop(),t(d)&&(r.chained||(r.chained=[]),r.chained.push(d.value)),!d.done)continue}let c=r.main.next();if(c.done===!0){i.splice(n,1),--n;continue}let u=c.value;if(t(u)){if(u.next().done)continue;r.chained||(r.chained=[]),r.chained.push(u)}}}function t(i){return!!(i&&i.next&&i.return)}}},G=dt;I(G,"_current");var qv=P("debugaroverlay"),Ui="ar",Yf="quit-ar",jl=class{get ARContainer(){return this.arContainer}constructor(){this.closeARCallback=this.onRequestedEndAR.bind(this)}arContainer=null;closeARCallback;currentSession=null;registeredCloseEventElements=[];_createdAROnlyElements=[];_reparentedObjects=[];requestEndAR(){this.onRequestedEndAR()}onBegin(e,t,i){this.currentSession=i,this.arContainer=t,e.domElement.querySelectorAll(`.${Ui}`).forEach(s=>{!s||s!==this.arContainer&&(this._reparentedObjects.push({el:s,previousParent:s.parentElement}),this.arContainer?.appendChild(s))});let r=t.getElementsByClassName(Yf);if(!r||r.length<=0)console.warn(`Missing quit AR elements, creating fallback X button. Use class name '${Yf}' to override.`),this.createFallbackCloseARButton(this.arContainer);else for(let s=0;s<r.length;s++){let a=r[s];!a||(a.addEventListener("click",this.closeARCallback),this.registeredCloseEventElements.push(a))}}onEnd(e){for(let t of this._createdAROnlyElements)t.remove&&t.remove();for(let t of this._reparentedObjects){let i=t.el;t.previousParent?.appendChild(i)}this._reparentedObjects.length=0,Ba()&&setTimeout(()=>{let t=e.renderer.domElement;t&&e.domElement.insertBefore(t,e.domElement.firstChild);let i=document.querySelectorAll("*");for(var n=0;n<i.length;n++){let r=i[n];r&&r._displayChanged!==void 0&&r._displayWas!==void 0&&(r.style.display=r._displayWas)}},10)}findOrCreateARContainer(e){if(e.classList.contains(Ui))return e;if(e.children)for(let n=0;n<e.children.length;n++){let r=e.children[n];if(!(!r||!r.classList)&&r.classList.contains(Ui))return r}let t=document.getElementsByClassName(Ui);if(t&&t.length>0)return t[0];qv&&console.log("No overlay container found in document - generating new ony");let i=document.createElement("div");return i.classList.add(Ui),i.style.position="absolute",i.style.width="100%",i.style.height="100%",i.style.display="flex",i.style.visibility="visible",e.appendChild(i)}onRequestedEndAR(){if(!!this.currentSession){this.currentSession.end(),this.currentSession=null;for(let e of this.registeredCloseEventElements)e.removeEventListener("click",this.closeARCallback);this.registeredCloseEventElements.length=0}}createFallbackCloseARButton(e){var t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttribute("width","38px"),t.setAttribute("height","38px"),t.style.position="absolute",t.style.right="20px",t.style.top="40px",t.style.zIndex="9999",t.style.pointerEvents="auto",t.addEventListener("click",this.closeARCallback),e.appendChild(t),this._createdAROnlyElements.push(t);var i=document.createElementNS("http://www.w3.org/2000/svg","path");i.setAttribute("d","M 12,12 L 28,28 M 28,12 12,28"),i.setAttribute("stroke","#ddd"),i.setAttribute("stroke-width","3px"),t.appendChild(i),this._createdAROnlyElements.push(i)}};var Yv=P("debugdebug"),Kf=P("noerrors"),Ju=new Map,OR=new RegExp(" at .+/(.+?.ts)","g"),Gs=(i=>(i[i.Log=0]="Log",i[i.Warn=1]="Warn",i[i.Error=2]="Error",i))(Gs||{});function ou(){return Zf}function Jf(){if(Kf)return;if(lt()){Yv&&console.log(window.location.hostname);let e=console.error;console.error=(...t)=>{e.apply(console,t),Vs(2,t,null,null),Zu()},window.addEventListener("error",t=>{!t||(Vs(2,t.error,t.filename,t.lineno),Zu())},!0),window.addEventListener("unhandledrejection",t=>{!t||(Vs(2,t.reason.message,t.reason.stack),Zu())})}}var Zf=0;function Zu(){Zf+=1}function Vs(o,e,t,i){if(Kf)return;let r=G.Current?.domElement??document.querySelector("needle-engine");if(!!r){if(Array.isArray(e)){let s="";for(let a=0;a<e.length;a++)typeof e[a]!="object"&&(a>0&&(s+=" "),s+=e[a]);e=s}Kv(o,r,e)}}var $u=new Set;function Kv(o,e,t){let i=Zv(e);if(i.childElementCount>=20||$u.has(t))return;$u.add(t);let n=ey(o,t);i.prepend(n),setTimeout(()=>{$u.delete(t),$v(n)},1e4)}var Jv=`
177
177
 
178
178
  @import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap');
179
179
 
@@ -210,9 +210,9 @@ a:hover {
210
210
  color: rgba(255,100,120, 1);
211
211
  }
212
212
 
213
- `;function Kv(o){if(Kd.has(o))return Kd.get(o);{let e=document.createElement("div");e.classList.add(Bi),e.classList.add("desktop"),e.classList.add("debug-container"),e.style.position="absolute",e.style.top="0",e.style.right="5px",e.style.paddingTop="0px",e.style.maxWidth="70%",e.style.maxHeight="calc(100% - 5px)",e.style.zIndex="1000",e.style.pointerEvents="scroll",e.style.display="flex",e.style.alignItems="end",e.style.flexDirection="column",e.style.color="white",e.style.overflow="auto",o.appendChild(e),Kd.set(o,e);let t=document.createElement("style");return t.innerHTML=Yv,e.appendChild(t),e}}var Jf=Symbol("logtype"),jl=new Map;function Jv(o){o.remove();let e=o[Jf],t=jl.get(e)??[];t.push(o),jl.set(e,t)}function Zv(o,e){if(jl.has(o)){let i=jl.get(o);if(i.length>0){let n=i.pop();return n.innerHTML=e,n}}let t=document.createElement("div");switch(t.style.marginRight="5px",t.style.padding=".5em",t.style.backgroundColor="rgba(0,0,0,.9)",t.style.marginTop="5px",t.style.marginBottom="3px",t.style.borderRadius="8px",t.style.pointerEvents="all",t.style.userSelect="text",t.style.maxWidth="250px",t.style.whiteSpace="pre-wrap",t.style["backdrop-filter"]="blur(10px)",t.style.backgroundColor="rgba(20,20,20,.8)",t.style.boxShadow="inset 0 0 80px rgba(0,0,0,.2), 0 0 5px rgba(0,0,0,.2)",t.style.border="1px solid rgba(160,160,160,.2)",t[Jf]=o,o){case 0:t.classList.add("log"),t.style.color="rgba(200,200,200,.7)",t.style.backgroundColor="rgba(40,40,40,.7)";break;case 1:t.classList.add("warn"),t.style.color="rgb(255, 255, 150)",t.style.backgroundColor="rgba(50,50,20,.8)";break;case 2:t.classList.add("error"),t.style.color="rgb(255, 50, 50",t.style.backgroundColor="rgba(50,20,20,.8)";break}return t.title="Open the browser console (F12) for more information",t.innerHTML=e,t}var $d={};cp($d,{Behaviour:()=>M,Component:()=>Tt,GameObject:()=>R});import*as tt from"three";var R=class extends tt.Object3D{guid;static setActive(e,t,i=!0,n=!0){!e||(Mo(e,t,n),To(e),t&&i&&$a(G.Current,e))}static isActiveSelf(e){return mn(e)}static isActiveInHierarchy(e){return lf(e)}static markAsInstancedRendered(e,t){cf(e,t)}static isUsingInstancing(e){return cl(e)}static foreachComponent(e,t,i=!0){return si(e,t,i)}static instantiateSynced(e,t){return e?nl(e,t):null}static instantiate(e,t=null){return Ar(e,t)}static destroySynced(e,t,i=!0){if(!e)return;let n=e;t=t??G.Current,Ro(n,t.connection,i)}static destroy(e,t=!0,i=!0){return oi(e,t,i)}static add(e,t,i){if(!(!e||!t)){if(e===t){console.warn("Can not add object to self",e);return}i||(i=G.Current),t.add(e),Mo(e,!0),To(e),i?R.foreachComponent(e,n=>{gd(n,i),!n.__internalDidAwakeAndStart&&i.new_script_start.includes(n)===!1&&i.new_script_start.push(n)},!0):console.warn("Missing context")}}static remove(e){!e||(e.parent?.remove(e),Mo(e,!1),To(e),R.foreachComponent(e,t=>{jp(t)},!0))}static invokeOnChildren(e,t,...i){this.invoke(e,t,!0,i)}static invoke(e,t,i=!1,...n){!e||this.foreachComponent(e,r=>{let s=r[t];s&&typeof s=="function"&&s.bind(r)(...n)},i)}static addNewComponent(e,t,i=!0){let n=new t;return Nn(e,n,i),n}static addComponent(e,t){if(t.gameObject==null)throw new Error("Did you mean to create a new component? Use addNewComponent");tf(e,t)}static removeComponent(e){return ol(e.gameObject,e),e}static getOrAddComponent(e,t){return sl(e,t)}static getComponent(e,t){return e===null?null:Dr(e,t)}static getComponents(e,t,i=null){return e===null?i??[]:Po(e,t,i)}static findByGuid(e,t){return Ir(e,t)}static findObjectOfType(e,t,i=!0){return of(e,t??G.Current,i)}static findObjectsOfType(e,t){let i=[];return sf(e,i,t),i}static getComponentInChildren(e,t){return Lr(e,t)}static getComponentsInChildren(e,t,i=null){return Oo(e,t,i??void 0)}static getComponentInParent(e,t){return So(e,t)}static getComponentsInParent(e,t,i=null){return Ys(e,t,i)}static getAllComponents(e){return[...e.userData?.components]}static*iterateComponents(e){let t=e?.userData?.components;if(t&&Array.isArray(t))for(let i=0;i<t.length;i++)yield t[i]}},li=class{get isComponent(){return!0}__context;get context(){return this.__context??G.Current}set context(e){this.__context=e}get scene(){return this.context.scene}get layer(){return this.gameObject?.userData?.layer}get name(){return this.gameObject?.userData.name}__name;set name(e){this.gameObject?(this.gameObject.userData||(this.gameObject.userData={}),this.gameObject.userData.name=e,this.__name=e):this.__name=e}get tag(){return this.gameObject?.userData.tag}set tag(e){this.gameObject&&(this.gameObject.userData.tag=e)}get static(){return this.gameObject?.userData.static}get hideFlags(){return this.gameObject?.userData.hideFlags}get activeAndEnabled(){return!(this.destroyed||this.__isEnabled===!1||!this.__isActiveInHierarchy)}get __isActive(){return this.gameObject.visible}get __isActiveInHierarchy(){if(!this.gameObject)return!1;let e=this.gameObject[Li];return e===void 0?!0:e}set __isActiveInHierarchy(e){!this.gameObject||(this.gameObject[Li]=e)}gameObject;guid="invalid";sourceId;awake(){}onEnable(){}onDisable(){}onDestroy(){this.__destroyed=!0}startCoroutine(e,t=1){return this.context.registerCoroutineUpdate(this,e,t)}stopCoroutine(e,t=1){this.context.unregisterCoroutineUpdate(e,t)}get destroyed(){return this.__destroyed}destroy(){this.__destroyed||this.__internalDestroy()}__didAwake=!1;__didStart=!1;__didEnable=!1;__isEnabled=void 0;__destroyed=!1;get __internalDidAwakeAndStart(){return this.__didAwake&&this.__didStart}constructor(){this.__internalNewInstanceCreated()}__internalNewInstanceCreated(){this.__didAwake=!1,this.__didStart=!1,this.__didEnable=!1,this.__isEnabled=void 0,this.__destroyed=!1}__internalAwake(){this.__didAwake||(this.__didAwake=!0,this.awake())}__internalStart(){this.__didStart||(this.__didStart=!0,this.start&&this.start())}__internalEnable(){return this.__didEnable?!1:(this.__didEnable=!0,this.onEnable(),this.__isEnabled=!0,!0)}__internalDisable(){!this.__didEnable||(this.__didEnable=!1,this.onDisable(),this.__isEnabled=!1)}__internalDestroy(){this.__destroyed||(this.__destroyed=!0,this.destroy?.call(this),nf(this))}get enabled(){return this.__isEnabled??!0}set enabled(e){if(typeof e=="number"&&(e>=.5?e=!0:e=!1),!this.__didAwake){this.__isEnabled=e;return}e?this.__internalEnable():this.__internalDisable()}_worldPosition=void 0;_worldQuaternion=void 0;_worldEuler=void 0;_worldRotation=void 0;get worldPosition(){return this._worldPosition||(this._worldPosition=new tt.Vector3),B(this.gameObject,this._worldPosition),this._worldPosition}set worldPosition(e){ie(this.gameObject,e)}setWorldPosition(e,t,i){li._worldPositionBuffer.set(e,t,i),this.worldPosition=li._worldPositionBuffer}get worldQuaternion(){return this._worldQuaternion||(this._worldQuaternion=new tt.Quaternion),me(this.gameObject,this._worldQuaternion)}set worldQuaternion(e){Ze(this.gameObject,e)}setWorldQuaternion(e,t,i,n){li._worldQuaternionBuffer.set(e,t,i,n),this.worldQuaternion=li._worldQuaternionBuffer}get worldEuler(){return this._worldEuler||(this._worldEuler=new tt.Euler),this._worldEuler.setFromQuaternion(this.worldQuaternion),this._worldEuler}set worldEuler(e){this._worldQuaternion||(this._worldQuaternion=new tt.Quaternion),this._worldQuaternion?.setFromEuler(e),this.worldQuaternion=this._worldQuaternion}get worldRotation(){let e=this.worldEuler;this._worldRotation||(this._worldRotation=new tt.Vector3);let t=this._worldRotation;return t.set(e.x,e.y,e.z),t.x=H.toDegrees(t.x),t.y=H.toDegrees(t.y),t.z=H.toDegrees(t.z),t}set worldRotation(e){this.setWorldRotation(e.x,e.y,e.z,!0)}setWorldRotation(e,t,i,n=!0){n&&(e=H.toRadians(e),t=H.toRadians(t),i=H.toRadians(i)),li._worldEulerBuffer.set(e,t,i),li._worldQuaternionBuffer.setFromEuler(li._worldEulerBuffer),this.worldQuaternion=li._worldQuaternionBuffer}get forward(){return li._forward.set(0,0,-1).applyQuaternion(this.worldQuaternion)}_eventListeners=new Map;addEventListener(e,t){this._eventListeners[e]=this._eventListeners[e]||[],this._eventListeners[e].push(t)}removeEventListener(e,t){if(!this._eventListeners[e])return;let i=this._eventListeners[e].indexOf(t);i>=0&&this._eventListeners[e].splice(i,1)}dispatchEvent(e){if(!this._eventListeners[e.type])return!1;let t=this._eventListeners[e.type];for(let i=0;i<t.length;i++)t[i](e);return!1}},Tt=li;I(Tt,"_worldPositionBuffer",new tt.Vector3),I(Tt,"_worldQuaternionBuffer",new tt.Quaternion),I(Tt,"_worldEulerBuffer",new tt.Euler),I(Tt,"_tempQuaternionBuffer2",new tt.Quaternion),I(Tt,"_forward",new tt.Vector3);var M=class extends Tt{};var ci=function(o,e){return function(t,i,n){$v(t,i,n,o,e)}};function $v(o,e,t,i,n){if(!(!n&&!i&&!o.onValidate)){if(t!==void 0){console.error("Invalid usage of validate decorator. Only fields can be validated.",o,e,t),Fe("Invalid usage of validate decorator. Only fields can be validated. Property: "+e,2);return}if(o.__internalAwake){let r=Symbol(e),s=o.__internalAwake;o.__internalAwake=function(){this[r]===void 0&&(this[r]=this[e],Object.defineProperty(this,e,{set:function(a){if(this[Qa]===!0)this[r]=a;else{i?.call(this,a);let c=this[r];this[r]=a,this.onValidate?.call(this,e,c)}},get:function(){return n?.call(this),this[r]}})),s.call(this)}}}}var Fo=P("debugloadingbar"),ey=P("debugloadingbarrendering");var ia=0,Zf;function eu(o){Fo&&console.log(o.progress.loaded.toFixed(0)+"/"+o.progress.total.toFixed(0),o);let e=o.count,t=o.progress.total;t===0||t===void 0?(Zf!==o.name&&(ia=0),Zf=o.name,ia+=(1-ia)*.001,Fo&&xo("Loading "+o.name+" did not report total size")):ia=o.progress.loaded/t;let i=o.index/e+ia/e;return H.clamp01(i)}var Hl=class{loadingProgress=0;container;_progress=0;_allowCustomLoadingElement=!0;_loadingElement;_loadingTextContainer=null;_loadingBar=null;_messageContainer=null;_loadingElementOptions;constructor(e,t){this.container=e,this._loadingElementOptions=t}onLoadingBegin(e){if(Fo&&console.log("Begin Loading"),!this._loadingElement){for(let t=0;t<this.container.children.length;t++){let i=this.container.children[t];if(i.classList.contains(Hl.LoadingContainerClassName)){if(!this._allowCustomLoadingElement){Fo&&console.warn("Remove custom loading container"),this.container.removeChild(i);continue}this._loadingElement=this.createLoadingElement(i)}}this._loadingElement||(this._loadingElement=this.createLoadingElement())}this._progress=0,this.loadingProgress=0,this._loadingElement.style.display="flex",this.container.appendChild(this._loadingElement),this.smoothProgressLoop(),this.setMessage(e??"")}onLoadingUpdate(e,t){this._loadingElement?.parentElement||this.onLoadingBegin(t);let i=0;typeof e=="number"?i=e:("index"in e&&(i=eu(e)),!t&&"name"in e&&this.setMessage(e.name)),this.loadingProgress=i,t&&this.setMessage(t),this.updateDisplay()}onLoadingFinished(e){this.loadingProgress=1,this.setMessage(e??"")}setMessage(e){this._messageContainer&&(this._messageContainer.innerText=e)}_progressLoop;smoothProgressLoop(){if(this._progressLoop)return;let e=1/12,t=1-.05;ey&&(e=1/500),this._progressLoop=setInterval(()=>{if(this.loadingProgress>=1&&this._progress>=t){this._loadingElement&&(Fo&&console.log("Hiding loading element"),this._loadingElement.style.display="none",this._loadingElement.remove()),clearInterval(this._progressLoop),this._progressLoop=null;return}this._progress=H.lerp(this._progress,this.loadingProgress,e*this.loadingProgress),this.updateDisplay()},e)}updateDisplay(){let e=this._progress,t=(e*100).toFixed(0)+"%";this._loadingBar&&(this._loadingBar.style.width=e*100+"%"),this._loadingTextContainer&&(this._loadingTextContainer.textContent=t)}createLoadingElement(e){Fo&&!e&&console.log("Creating loading element"),this._loadingElement=e||document.createElement("div"),e||(this._loadingElement.style.position="fixed",this._loadingElement.style.width="100%",this._loadingElement.style.height="100%",this._loadingElement.style.left="0",this._loadingElement.style.top="0",this._loadingElement.style.backgroundColor="#000000",this._loadingElement.style.display="flex",this._loadingElement.style.alignItems="center",this._loadingElement.style.justifyContent="center",this._loadingElement.style.zIndex="1000",this._loadingElement.style.flexDirection="column",this._loadingElement.style.pointerEvents="none",this._loadingElement.style.color="white");let t=this._loadingElementOptions?.className??Hl.LoadingContainerClassName;if(this._loadingElement.classList.add(t),this._loadingElementOptions?.additionalClasses)for(let a of this._loadingElementOptions.additionalClasses)this._loadingElement.classList.add(a);let i=document.createElement("div"),n=30;i.style.display="flex",i.style.width=n+"%",i.style.height="2px",i.style.background="rgba(255,255,255,.1)",this._loadingElement.appendChild(i),this._loadingBar=document.createElement("div"),i.appendChild(this._loadingBar);let r=function(a){return H.lerp(n*.5,100-n*.5,a)+"%"};this._loadingBar.style.background=`linear-gradient(90deg, #02022B ${r(0)}, #0BA398 ${r(.4)}, #99CC33 ${r(.5)}, #D7DB0A ${r(1)})`,this._loadingBar.style.backgroundAttachment="fixed",this._loadingBar.style.width="0%",this._loadingBar.style.height="100%",this._loadingTextContainer=document.createElement("div"),this._loadingTextContainer.style.display="flex",this._loadingTextContainer.style.justifyContent="center",this._loadingTextContainer.style.marginTop=".9em",this._loadingElement.appendChild(this._loadingTextContainer);let s=document.createElement("div");return this._messageContainer=s,s.style.display="flex",s.style.fontSize=".8em",s.style.paddingTop=".5em",s.style.color="rgba(255,255,255,.5)",s.style.justifyContent="center",this._loadingElement.appendChild(s),this._loadingElement}},na=Hl;I(na,"LoadingContainerClassName","loading");import{DRACOLoader as tu}from"three/examples/jsm/loaders/DRACOLoader.js";import{KTX2Loader as $f}from"three/examples/jsm/loaders/KTX2Loader.js";var ra=P("debugdecoders"),di,Jn;function iu(o){o!==void 0&&typeof o=="string"&&(di||(di=new tu),ra&&console.log("Setting draco decoder path to",o),di.setDecoderPath(o))}function nu(o){o!==void 0&&typeof o=="string"&&(di||(di=new tu),ra&&console.log("Setting draco decoder type to",o),di.setDecoderConfig({type:o}))}function ru(o){o!==void 0&&typeof o=="string"&&(Jn||(Jn=new $f),ra&&console.log("Setting ktx2 transcoder path to",o),Jn.setTranscoderPath(o))}function yn(o,e){di||(di=new tu,di.setDecoderPath("./include/draco/"),di.setDecoderConfig({type:"js"}),ra&&console.log("Setting draco decoder path to","./include/draco/")),Jn||(Jn=new $f,Jn.setTranscoderPath("./include/ktx2/"),ra&&console.log("Setting ktx2 transcoder path to","./include/ktx2/"),e.renderer&&Jn.detectSupport(e.renderer)),o.setDRACOLoader(di),o.setKTX2Loader(Jn)}import{AnimationClip as ty,MathUtils as iy}from"three";var Bo=class{_name;get name(){return this._name}_nameHash;get nameHash(){return this._nameHash}_normalizedTime;get normalizedTime(){return this._normalizedTime}_length;get length(){return this._length}_speed;get speed(){return this._speed}constructor(e,t,i,n){this._name=e.name,this._nameHash=e.hash,this._normalizedTime=t,this._length=i,this._speed=n}};function tm(o,e){return{name:"",isLooping:!1,guid:e?.generateUUID()??iy.generateUUID(),index:-1,clip:new ty(o,1,[])}}import{AnimationClip as ny,AnimationMixer as ry,AxesHelper as oy,Euler as im,LoopOnce as sy,Quaternion as ui,Vector3 as oa}from"three";import*as Bl from"three";var Ui=P("debuganimatorcontroller"),ou=P("debugrootmotion"),pi=class{Play(e,t=-1,i=Number.NEGATIVE_INFINITY,n=0){if(t<0)t=0;else if(t>=this.model.layers.length){console.warn("invalid layer");return}let s=this.model.layers[t].stateMachine;for(let a of s.states)if(a.name===e||a.hash===e){Ui&&console.log("transition to ",a),this.transitionTo(a,n,i);return}console.warn("Could not find "+e+" to play")}Reset(){this.setStartTransition()}SetBool(e,t){let i=typeof e=="string"?"name":"hash";return this.model?.parameters.filter(n=>n[i]===e).forEach(n=>n.value=t)}GetBool(e){let t=typeof e=="string"?"name":"hash";return this.model?.parameters.find(i=>i[t]===e)?.value??!1}SetFloat(e,t){let i=typeof e=="string"?"name":"hash";return this.model?.parameters.filter(n=>n[i]===e).forEach(n=>n.value=t)}GetFloat(e){let t=typeof e=="string"?"name":"hash";return this.model?.parameters.find(i=>i[t]===e)?.value??0}SetInteger(e,t){let i=typeof e=="string"?"name":"hash";return this.model?.parameters.filter(n=>n[i]===e).forEach(n=>n.value=t)}GetInteger(e){let t=typeof e=="string"?"name":"hash";return this.model?.parameters.find(i=>i[t]===e)?.value??0}SetTrigger(e){Ui&&console.log("SET TRIGGER",e);let t=typeof e=="string"?"name":"hash";return this.model?.parameters.filter(i=>i[t]===e).forEach(i=>i.value=!0)}ResetTrigger(e){let t=typeof e=="string"?"name":"hash";return this.model?.parameters.filter(i=>i[t]===e).forEach(i=>i.value=!1)}IsInTransition(){return this._activeStates.length>1}SetSpeed(e){this._speed=e}FindState(e){if(!e)return null;for(let t of this.model.layers)for(let i of t.stateMachine.states)if(i.name===e)return i;return null}normalizedStartOffset=0;_speed=1;animator;model;get context(){return this.animator?.context}bind(e){this.animator=e,this._mixer=new ry(this.animator.gameObject),this.createActions(this.animator)}clone(){let e=Bs(this.model,(i,n,r)=>r==null?!0:!(r.type==="Object3D"||r.isObject3D===!0||Dp(r)||r.tracks!==void 0));return console.assert(e!==this.model),new pi(e)}update(){if(!this.animator)return;this.evaluateTransitions(),this.updateActiveStates();let e=this.animator.context.time.deltaTime;this.animator.applyRootMotion&&this.rootMotionHandler?.onBeforeUpdate(),this._mixer.update(e),this.animator.applyRootMotion&&this.rootMotionHandler?.onAfterUpdate()}_mixer;_activeState;constructor(e){this.model=e,Ui&&console.log(this)}_activeStates=[];updateActiveStates(){for(let e=0;e<this._activeStates.length;e++){let t=this._activeStates[e],i=t.motion;if(!i.action)this._activeStates.splice(e,1),e--;else{let n=i.action;n.getEffectiveWeight()<=0&&!n.isRunning()&&(Ui&&console.debug("REMOVE",t.name,n.getEffectiveWeight(),n.isRunning(),n.isScheduled()),this._activeStates.splice(e,1),e--)}}}setStartTransition(){for(let e of this.model.layers){let t=e.stateMachine;t.defaultState===void 0&&(Ui&&console.warn("AnimatorController default state is undefined, will assign state 0 as default",e),t.defaultState=0);let i=t.states[t.defaultState];this.transitionTo(i,0,this.normalizedStartOffset)}}evaluateTransitions(){let t=!1;if(!this._activeState){if(this.setStartTransition(),!this._activeState)return;t=!0}let i=this._activeState,n=i.motion.action,r=0;for(let a of i.transitions){if(++r,!a.hasExitTime&&a.conditions.length<=0)continue;let c=!0;for(let d of a.conditions)if(!this.evaluateCondition(d)){c=!1;break}if(!!c){for(let d of a.conditions){let l=this.model.parameters.find(u=>u.name===d.parameter);l?.type===9&&(l.value=!1)}if(n){let d=i.motion.clip.duration,l=d<=0?1:n.time/d;if(a.hasExitTime?l>=a.exitTime:!0){n.clampWhenFinished=!0,Ui&&console.log("transition to "+a.destinationState,a,l,a.exitTime,a.hasExitTime),this.transitionTo(a.destinationState,a.duration,a.offset);return}}else{this.transitionTo(a.destinationState,a.duration,a.offset);return}}}let s=!1;if(i.motion.isLooping&&n&&n.time>=n.getClip().duration&&(s=!0,n.reset(),n.time=0,n.play()),!s&&i&&!t&&n&&this.animator&&i.behaviours){let a=n?.getClip().duration,c=n.time/a,d=new Bo(this._activeState,c,a,this._speed);for(let l of i.behaviours)l.instance&&l.instance.onStateUpdate?.call(l.instance,this.animator,d,0)}}getState(e,t){return typeof e=="number"&&(e==-1&&(e=this.model.layers[t].stateMachine.defaultState,e===void 0&&(Ui&&console.warn("AnimatorController default state is undefined: ",this.model,"Layer: "+t),e=0)),e=this.model.layers[t].stateMachine.states[e]),e}transitionTo(e,t,i){if(!this.animator)return;let n=0;if(e=this.getState(e,n),!e?.motion||!e.motion.clip)return;let r=this._activeState===e;if(r){let d=e.motion;!d.action_loopback&&d.clip&&(this._mixer.uncacheAction(d.clip,this.animator.gameObject),d.action_loopback=this.createAction(d.clip))}if(this._activeState?.behaviours&&this._activeState.motion.action){let d=this._activeState?.motion.clip.duration,l=this._activeState.motion.action.time/d,u=new Bo(this._activeState,l,d,this._speed);for(let h of this._activeState.behaviours)h.instance?.onStateExit?.call(h.instance,this.animator,u,n)}let s=this._activeState?.motion.action;s&&s.fadeOut(t),r&&(e.motion.action=e.motion.action_loopback,e.motion.action_loopback=s);let a=this._activeState;this._activeState=e;let c=e.motion?.action;if(c){i=Math.max(0,Math.min(1,i)),c.isRunning()&&c.stop(),c.reset(),c.timeScale=this._speed,c.enabled=!0;let d=e.motion.clip.duration;if(c.time=i*d,c.clampWhenFinished=!0,c.setLoop(sy,0),t>0?c.fadeIn(t):c.setEffectiveWeight(1),c.play(),this.rootMotionHandler&&this.rootMotionHandler.onStart(c),this._activeStates.includes(e)||this._activeStates.push(e),this._activeState.behaviours){let l=new Bo(e,i,d,this._speed);for(let u of this._activeState.behaviours)u.instance?.onStateEnter?.call(u.instance,this.animator,l,n)}}else console.warn("No action",e.motion,this);Ui&&console.log("TRANSITION FROM "+a?.name+" TO "+e.name,t,s,c,c?.getEffectiveTimeScale(),c?.getEffectiveWeight(),c?.isRunning(),c?.isScheduled(),c?.paused)}createAction(e){if(this._mixer.existingAction(e)&&this._mixer.uncacheAction(e,this.animator?.gameObject),this.animator?.applyRootMotion){this.rootMotionHandler||(this.rootMotionHandler=new su(this));let i=this.animator.gameObject;return this.rootMotionHandler.createClip(this._mixer,i,e)}else return this._mixer.clipAction(e)}evaluateCondition(e){let t=this.model.parameters.find(i=>i.name===e.parameter);if(!t)return!1;switch(e.mode){case 1:return t.value===!0;case 2:return t.value===!1;case 3:return t.value>e.threshold;case 4:return t.value<e.threshold;case 6:return t.value===e.threshold;case 7:return t.value!==e.threshold}return!1}createActions(e){for(let t of this.model.layers){let i=t.stateMachine;for(let n=0;n<i.states.length;n++){let r=i.states[n];r.transitions||(r.transitions=[]);for(let s of r.transitions)s.conditions||(s.conditions=[]);if(r.motion||(r.motion=tm(r.name)),this.animator&&r.motion.clips){let s=r.motion.clips?.find(a=>a.node.name===this.animator?.gameObject?.name);r.motion.clip=s?.clip}if(!r.motion.clip){let s=new ny(void 0,void 0,[]);r.motion.clip=s}if(r.motion?.clip){let s=r.motion.clip,a=this.createAction(s);r.motion.action=a}if(r.behaviours&&Array.isArray(r.behaviours))for(let s of r.behaviours){if(!s?.typeName)continue;let a=O.get(s.typeName),c=new a;c.isStateMachineBehaviour&&(c._context=this.context??void 0,Dt(c,s.properties),s.instance=c),Ui&&console.log("Created animator controller behaviour",r.name,s.typeName,s.properties,c)}}}}*enumerateActions(){for(let e of this.model.layers){let t=e.stateMachine;for(let i=0;i<t.states.length;i++){let n=t.states[i];n?.motion&&(n.motion.action&&(yield n.motion.action),n.motion.action_loopback&&(yield n.motion.action_loopback))}}}rootMotionHandler},Fl=class{track;createdInterpolant;originalEvaluate;customEvaluate;constructor(e,t){this.track=e;let i=e,n=i.createInterpolant.bind(e);i.createInterpolant=()=>(i.createInterpolant=n,this.createdInterpolant=n(),this.originalEvaluate=this.createdInterpolant.evaluate.bind(this.createdInterpolant),this.customEvaluate=r=>{if(!this.originalEvaluate)return;let s=this.originalEvaluate(r);return t(r,s)},this.createdInterpolant.evaluate=this.customEvaluate,this.createdInterpolant)}evaluate(e){this.customEvaluate&&this.customEvaluate(e)}dispose(){this.createdInterpolant&&this.originalEvaluate&&(this.createdInterpolant.evaluate=this.originalEvaluate),this.track=void 0,this.createdInterpolant=null,this.originalEvaluate=void 0,this.customEvaluate=void 0}},we=class{set action(e){this._action=e}get action(){return this._action}_action;root;clip;positionWrapper=null;rotationWrapper=null;context;positionChange=new oa;rotationChange=new ui;constructor(e,t,i,n,r){if(this.context=e,this.root=t,this.clip=i,we.firstKeyframeRotation[i.uuid]||(we.firstKeyframeRotation[i.uuid]=new Bl.Quaternion),r){let s=r.values;we.firstKeyframeRotation[i.uuid].set(s[0],s[1],s[2],s[3])}we.spaceRotation[i.uuid]||(we.spaceRotation[i.uuid]=new ui),we.effectiveSpaceRotation[i.uuid]||(we.effectiveSpaceRotation[i.uuid]=new ui),we.clipOffsetRotation[i.uuid]=new ui,r&&we.clipOffsetRotation[i.uuid].set(r.values[0],r.values[1],r.values[2],r.values[3]).invert(),this.handlePosition(i,n),this.handleRotation(i,r)}onStart(e){if(e.getClip()!==this.clip)return;let t=we.lastObjRotation[this.root.uuid];we.spaceRotation[this.clip.uuid].copy(t);{let i=new Bl.Euler().setFromQuaternion(t);console.log("START",this.clip.name,H.toDegrees(i.y))}}getClipRotationOffset(){return we.clipOffsetRotation[this.clip.uuid]}handlePosition(e,t){if(t){let i=this.root;ou&&i.add(new oy),we.lastObjPosition[i.uuid]||(we.lastObjPosition[i.uuid]=new oa);let n=new oa,r=new oa,s=0;this.positionWrapper=new Fl(t,(a,c)=>{let d=this.action.getEffectiveWeight();if(ou&&i.position.length()>8&&i.position.set(0,i.position.y,0),a>s){n.set(c[0],c[1],c[2]),n.sub(r),n.multiplyScalar(d),n.applyQuaternion(this.getClipRotationOffset());let l=this.clip.uuid;n.applyQuaternion(we.spaceRotation[l]),this.positionChange.copy(n)}return r.fromArray(c),s=a,c[0]=0,c[1]=0,c[2]=0,c})}}handleRotation(e,t){if(t){if(ou){let a=t.values,c=new im().setFromQuaternion(new ui(a[0],a[1],a[2],a[3]));console.log(e.name,t.name,"FIRST ROTATION IN TRACK",H.toDegrees(c.y));let d=t.values.length-4,l=new ui().set(a[d],a[d+1],a[d+2],a[d+3]),u=new im().setFromQuaternion(l);console.log(e.name,t.name,"LAST ROTATION IN TRACK",H.toDegrees(u.y))}let i=this.root;we.lastObjRotation[i.uuid]||(we.lastObjRotation[i.uuid]=new ui);let n=0,r=new ui,s=new ui;this.rotationWrapper=new Fl(t,(a,c)=>(a>n&&(s.set(c[0],c[1],c[2],c[3]),r.invert(),s.multiply(r),this.rotationChange.copy(s)),r.fromArray(c),n=a,c[0]=0,c[1]=0,c[2]=0,c[3]=1,c))}}onBeforeUpdate(){this.positionChange.set(0,0,0),this.rotationChange.set(0,0,0,1)}onAfterUpdate(){let e=this.action.getEffectiveWeight();this.positionChange.multiplyScalar(e),this.rotationChange.slerp(we.identityQuaternion,1-e)}},hi=we;I(hi,"lastObjPosition",{}),I(hi,"lastObjRotation",{}),I(hi,"firstKeyframeRotation",{}),I(hi,"spaceRotation",{}),I(hi,"effectiveSpaceRotation",{}),I(hi,"clipOffsetRotation",{}),I(hi,"identityQuaternion",new ui);var su=class{controller;handler=[];root;constructor(e){this.controller=e}createClip(e,t,i){this.root=t;let n="";t&&"name"in t&&(n=t.name);let r=this.findRootTrack(i,".position"),s=this.findRootTrack(i,".quaternion"),a=new hi(this.controller.context,t,i,r,s);this.handler.push(a);let c=e.clipAction(i);return a.action=c,c}onStart(e){for(let t of this.handler)t.onStart(e)}onBeforeUpdate(){for(let e of this.handler)e.onBeforeUpdate()}summedPosition=new oa;summedRotation=new ui;onAfterUpdate(){this.summedPosition.set(0,0,0),this.summedRotation.set(0,0,0,1);for(let e of this.handler)e.onAfterUpdate(),this.summedPosition.add(e.positionChange),this.summedRotation.multiply(e.rotationChange);this.root.position.add(this.summedPosition),this.root.quaternion.multiply(this.summedRotation),hi.lastObjRotation[this.root.uuid].copy(this.root.quaternion)}findRootTrack(e,t){let i=e.tracks;for(let n of i)if(n.name.endsWith(t))return n;return null}};var Uo=function(o){return y(o)},y=function(o){if(o===void 0&&(o=null),!Array.isArray(o))o=nm(o);else for(let e=0;e<o.length;e++){let t=o[e];o[e]=nm(t)}return function(e,t){Object.getOwnPropertyDescriptor(e,"$serializedTypes")||(e.$serializedTypes={});let i=e.$serializedTypes=e.$serializedTypes||{};i[t]=o}};function nm(o){switch(o?.prototype?.constructor?.name){case"Number":case"String":case"Boolean":return null}return o}var rm=P("debuganimator"),Pe=class extends M{applyRootMotion=!1;hasRootMotion=!1;keepAnimatorControllerStateOnDisable=!1;set runtimeAnimatorController(e){this._animatorController&&this._animatorController.model===e||(e?e instanceof pi?this._animatorController=e:(rm&&console.log("Assign animator controller",e,this),this._animatorController=new pi(e)):this._animatorController=null)}get runtimeAnimatorController(){return this._animatorController}Play(e,t=-1,i=Number.NEGATIVE_INFINITY,n=0){this.runtimeAnimatorController?.Play(e,t,i,n)}Reset(){this._animatorController?.Reset()}SetBool(e,t){this.runtimeAnimatorController?.SetBool(e,t)}GetBool(e){return this.runtimeAnimatorController?.GetBool(e)??!1}SetFloat(e,t){this.runtimeAnimatorController?.SetFloat(e,t)}GetFloat(e){return this.runtimeAnimatorController?.GetFloat(e)??-1}SetInteger(e,t){this.runtimeAnimatorController?.SetInteger(e,t)}GetInteger(e){return this.runtimeAnimatorController?.GetInteger(e)??-1}SetTrigger(e){this.runtimeAnimatorController?.SetTrigger(e)}ResetTrigger(e){this.runtimeAnimatorController?.ResetTrigger(e)}IsInTransition(){return this.runtimeAnimatorController?.IsInTransition()??!1}SetSpeed(e){e!==this.speed&&(this.speed=e,this._animatorController?.SetSpeed(e))}set minMaxSpeed(e){this.speed=H.lerp(e.x,e.y,Math.random())}set minMaxOffsetNormalized(e){this.normalizedStartOffset=H.lerp(e.x,e.y,Math.random()),this.runtimeAnimatorController&&(this.runtimeAnimatorController.normalizedStartOffset=this.normalizedStartOffset)}speed=1;normalizedStartOffset=0;_animatorController=null;awake(){if(rm&&console.log("ANIMATOR",this.name,this),!!this.gameObject&&this.runtimeAnimatorController){let e=this.runtimeAnimatorController.clone();console.assert(this.runtimeAnimatorController!==e),this.runtimeAnimatorController=e,console.assert(this.runtimeAnimatorController===e),this.runtimeAnimatorController.bind(this),this.runtimeAnimatorController.SetSpeed(this.speed),this.runtimeAnimatorController.normalizedStartOffset=this.normalizedStartOffset}}onDisable(){this.keepAnimatorControllerStateOnDisable||this._animatorController?.Reset()}onBeforeRender(){this._animatorController&&this._animatorController.update()}};v([y()],Pe.prototype,"applyRootMotion",2),v([y()],Pe.prototype,"hasRootMotion",2),v([y()],Pe.prototype,"keepAnimatorControllerStateOnDisable",2),v([y()],Pe.prototype,"runtimeAnimatorController",1);import*as Ur from"three";import{AnimationClip as ay}from"three";var Ul=P("debuganimation"),Ht=class extends M{playAutomatically=!0;randomStartTime=!0;minMaxSpeed;minMaxOffsetNormalized;loop=!0;clampWhenFinished=!1;_tempAnimationClipBeforeGameObjectExisted=null;get clip(){return this.animations?.length?this.animations[0]:null}set clip(e){if(!this.__didAwake){Ul&&console.log("Assign clip during serialization",e),this._tempAnimationClipBeforeGameObjectExisted=e;return}!e||(Ul&&console.log("Assign clip",e,Boolean(this.gameObject)),this.gameObject.animations||(this.gameObject.animations=[]),!this.animations.includes(e)&&(this.animations.length>0?this.animations.splice(0,0,e):this.animations.push(e)))}set clips(e){this.animations=e}set animations(e){Ul&&console.log("assign animations",e),this.gameObject.animations=e}get animations(){return this.gameObject.animations}get currentAction(){return this._currentActions[0]}get currentActions(){return this._currentActions}mixer=void 0;get actions(){return this._actions}set actions(e){this._actions=e}_actions=[];_currentActions=[];_handles=[];awake(){Ul&&console.log(this),this._tempAnimationClipBeforeGameObjectExisted&&(this.clip=this._tempAnimationClipBeforeGameObjectExisted,this._tempAnimationClipBeforeGameObjectExisted=null),this.playAutomatically&&this.init()}onEnable(){if(this.playAutomatically&&this.animations?.length>0&&this.currentActions.length<=0){let e=Math.floor(Math.random()*this.actions.length);this.play(e)}}start(){this.randomStartTime&&this.currentAction&&(this.currentAction.time=Math.random()*this.currentAction.getClip().duration)}update(){if(!!this.mixer){this.mixer.update(this.context.time.deltaTime);for(let e of this._handles)e._update();this._handles?.length>0&&oe.markDirty(this.gameObject)}}getAction(e){return this.actions?.find(t=>t.getClip().name===e)}get isPlaying(){for(let e=0;e<this._currentActions.length;e++)if(this._currentActions[e].isRunning())return!0;return!1}play(e,t){if(this.init(),!this.mixer)return;e===void 0&&(e=0);let i=e;if(typeof e=="number"){if(e>=this.animations.length)return;i=this.animations[e]}else typeof e=="string"&&(i=this.animations.find(r=>r.name===e));if(!i){console.error("Could not find clip",e);return}t||(t={}),t.minMaxOffsetNormalized||(t.minMaxOffsetNormalized=this.minMaxOffsetNormalized),t.minMaxSpeed||(t.minMaxSpeed=this.minMaxSpeed),t.loop||(t.loop=this.loop),t.clampWhenFinished||(t.clampWhenFinished=this.clampWhenFinished);for(let r of this.actions)if(r.getClip()===i)return this.internalOnPlay(r,t);let n=this.mixer.clipAction(i);return this.actions.push(n),this.internalOnPlay(n,t)}internalOnPlay(e,t){var i=this.currentAction;if(i===e&&i.isRunning()&&i.time<i.getClip().duration){let a=this.tryFindHandle(e);if(a)return a.getPromise()}let n=t?.exclusive??!0;t?.fadeDuration?(n&&i?.fadeOut(t.fadeDuration),e.fadeIn(t.fadeDuration)):n&&i?.stop(),e.reset(),e.enabled=!0,e.time=0,e.timeScale=1;let r=e.getClip();t?.minMaxOffsetNormalized&&(e.time=H.lerp(t.minMaxOffsetNormalized.x,t.minMaxOffsetNormalized.y,Math.random())*r.duration),t?.minMaxSpeed&&(e.timeScale=H.lerp(t.minMaxSpeed.x,t.minMaxSpeed.y,Math.random())),t?.clampWhenFinished&&(e.clampWhenFinished=!0),t?.startTime!==void 0&&(e.time=t.startTime),t?.loop!==void 0?e.loop=t.loop?Ur.LoopRepeat:Ur.LoopOnce:e.loop=Ur.LoopOnce,e.play();let s=new au(e,this.mixer,t,a=>{this._handles.splice(this._handles.indexOf(s),1)});return this._handles.push(s),s.getPromise()}tryFindHandle(e){for(let t of this._handles)if(t.action===e)return t}_didInit=!1;init(){this._didInit||(this._didInit=!0,this.gameObject&&(this.actions=[],this.mixer=new Ur.AnimationMixer(this.gameObject)))}};v([y()],Ht.prototype,"playAutomatically",2),v([y()],Ht.prototype,"randomStartTime",2),v([y()],Ht.prototype,"loop",2),v([y()],Ht.prototype,"clampWhenFinished",2),v([y(ay)],Ht.prototype,"clips",1);var au=class{mixer;action;promise=null;resolve=null;reject=null;_options;_resolveCallback=null;_rejectCallback=null;_loopCallback;_finishedCallback;_resolvedOrRejectedCallback;constructor(e,t,i,n){this.action=e,this.mixer=t,this._resolvedOrRejectedCallback=n,this._options=i}getPromise(){return this.promise?this.promise:(this.promise=new Promise((e,t)=>{this._resolveCallback=e,this._rejectCallback=t,this.resolve=this.onResolve.bind(this),this.reject=this.onReject.bind(this)}),this._loopCallback=this.onLoop.bind(this),this._finishedCallback=this.onFinished.bind(this),this.mixer.addEventListener("loop",this._loopCallback),this.mixer.addEventListener("finished",this._finishedCallback),this.promise)}_update(){!this._options||this._options.endTime!==void 0&&this.action.time>this._options.endTime&&(this._options.loop===!0?this.action.time=this._options.startTime??0:(this.action.time=this._options.endTime,this.action.timeScale=0,this.onResolve()))}onResolve(){this.dispose(),this._resolvedOrRejectedCallback?.call(this,this),this._resolveCallback?.call(this,this.action)}onReject(e){this.dispose(),this._resolvedOrRejectedCallback?.call(this,this),this._rejectCallback?.call(this,e)}onLoop(e){}onFinished(e){e.action===this.action&&this.onResolve()}dispose(){this._loopCallback&&this.mixer.removeEventListener("loop",this._loopCallback),this._finishedCallback&&this.mixer.removeEventListener("finished",this._finishedCallback),this._loopCallback=void 0,this._finishedCallback=void 0}};import{GLTFLoader as jg}from"three/examples/jsm/loaders/GLTFLoader.js";import*as X from"three";import{RawShaderMaterial as cy}from"three";var _n=P("debugshaders"),Go="NEEDLE_techniques_webgl";var lu=class{objectToWorldMatrix=new X.Matrix4;worldToObjectMatrix=new X.Matrix4;objectToWorld=new Array;worldToObject=new Array;updateFrom(e){this.objectToWorldMatrix.copy(e.matrixWorld),ea(this.objectToWorldMatrix,this.objectToWorld),this.worldToObjectMatrix.copy(e.matrixWorld).invert(),ea(this.worldToObjectMatrix,this.worldToObject)}};var ce=class extends cy{identifier;onBeforeRenderSceneCallback=this.onBeforeRenderScene.bind(this);clone(){let e=super.clone();return om(e),e}constructor(e,...t){super(...t),this.identifier=e,_n&&console.log(this),this.type="NEEDLE_CUSTOM_SHADER",this.uniforms[this._objToWorldName]||(this.uniforms[this._objToWorldName]={value:[]}),this.uniforms[this._worldToObjectName]||(this.uniforms[this._worldToObjectName]={value:[]}),this.uniforms[this._viewProjectionName]||(this.uniforms[this._viewProjectionName]={value:[]}),this.uniforms[this._sphericalHarmonicsName]&&this.waitForLighting(),(this.depthTextureUniform||this.opaqueTextureUniform)&&G.Current.pre_render_callbacks.push(this.onBeforeRenderSceneCallback)}dispose(){super.dispose();let e=G.Current.pre_render_callbacks.indexOf(this.onBeforeRenderSceneCallback);e>=0&&G.Current.pre_render_callbacks.splice(e,1)}async waitForLighting(){let e=G.Current;if(!e){console.error("Missing context");return}let t=await e.rendererData.getSceneLightingData(this.identifier);if(!t||!t.array){console.warn("Missing lighting data for custom shader, getSceneLightingData did not return anything");return}_n&&console.log(t);let i=t.array,n=t.texture;this.uniforms.unity_SpecCube0={value:n},Wd(this.uniforms,i);let r=Math.sqrt(Math.PI*.5);this.uniforms.unity_SpecCube0_HDR={value:new X.Vector4(r,r,r,r)},_n&&console.log("Set environment lighting",this.uniforms)}_sphericalHarmonicsName="unity_SpecCube0";_objToWorldName="hlslcc_mtx4x4unity_ObjectToWorld";_worldToObjectName="hlslcc_mtx4x4unity_WorldToObject";_viewProjectionName="hlslcc_mtx4x4unity_MatrixVP";_viewMatrixName="hlslcc_mtx4x4unity_MatrixV";_rendererData=new lu;get depthTextureUniform(){if(!!this.uniforms)return this.uniforms._CameraDepthTexture}get opaqueTextureUniform(){if(!!this.uniforms)return this.uniforms._CameraOpaqueTexture}onBeforeRenderScene(){this.opaqueTextureUniform&&G.Current.setRequireColor(!0),this.depthTextureUniform&&G.Current.setRequireDepth(!0)}onBeforeRender(e,t,i,n,r,s){n.attributes.tangent||n.computeTangents(),this.onUpdateUniforms(i,r)}onUpdateUniforms(e,t){let i=G.Current;e&&(ce.viewProjection&&this.uniforms[this._viewProjectionName]&&(ce.viewProjection.copy(e.projectionMatrix).multiply(e.matrixWorldInverse),ea(ce.viewProjection,ce._viewProjectionValues)),ce.viewMatrix&&this.uniforms[this._viewMatrixName]&&(ce.viewMatrix.copy(e.matrixWorldInverse),ea(ce.viewMatrix,ce._viewMatrixValues)),this.uniforms[ce._worldSpaceCameraPosName]&&ce._worldSpaceCameraPos.setFromMatrixPosition(e.matrixWorld)),this.uniforms._TimeParameters?this.uniforms._TimeParameters.value=i.rendererData.timeVec4:this.uniforms._Time&&(this.uniforms._Time.value=i.rendererData.timeVec4);let n=i.mainLight;if(n){let a=B(n.gameObject,ce._mainLightPosition);this.uniforms._MainLightPosition={value:a.normalize()},ce._mainLightColor.set(n.color.r,n.color.g,n.color.b,0),this.uniforms._MainLightColor={value:ce._mainLightColor};let c=n.intensity;ce._lightData.z=c,this.uniforms.unity_LightData={value:ce._lightData}}if(e&&(ce.viewProjection&&this.uniforms[this._viewProjectionName]&&(this.uniforms[this._viewProjectionName].value=ce._viewProjectionValues),ce.viewMatrix&&this.uniforms[this._viewMatrixName]&&(this.uniforms[this._viewMatrixName].value=ce._viewMatrixValues),this.uniforms[ce._worldSpaceCameraPosName]&&(this.uniforms[ce._worldSpaceCameraPosName]={value:ce._worldSpaceCameraPos}),i.mainCameraComponent)){if(this.uniforms._ProjectionParams){let a=this.uniforms._ProjectionParams.value;a.x=1,a.y=i.mainCameraComponent.nearClipPlane,a.z=i.mainCameraComponent.farClipPlane,a.w=1/a.z,this.uniforms._ProjectionParams.value=a}if(this.uniforms._ZBufferParams){let a=this.uniforms._ZBufferParams.value,c=i.mainCameraComponent;a.x=1-c.farClipPlane/c.nearClipPlane,a.y=c.farClipPlane/c.nearClipPlane,a.z=a.x/c.farClipPlane,a.w=a.y/c.farClipPlane,this.uniforms._ZBufferParams.value=a}if(this.uniforms._ScreenParams){let a=this.uniforms._ScreenParams.value;a.x=i.domWidth,a.y=i.domHeight,a.z=1+1/a.x,a.w=1+1/a.y,this.uniforms._ScreenParams.value=a}}let r=this.depthTextureUniform;r&&(r.value=i.depthTexture);let s=this.opaqueTextureUniform;if(s&&(s.value=i.opaqueColorTexture),t){let a=this._rendererData;a.updateFrom(t),this.uniforms[this._worldToObjectName].value=a.worldToObject,this.uniforms[this._objToWorldName].value=a.objectToWorld}this.uniformsNeedUpdate=!0}},Ft=ce;I(Ft,"viewProjection",new X.Matrix4),I(Ft,"_viewProjectionValues",[]),I(Ft,"viewMatrix",new X.Matrix4),I(Ft,"_viewMatrixValues",[]),I(Ft,"_worldSpaceCameraPosName","_WorldSpaceCameraPos"),I(Ft,"_worldSpaceCameraPos",new X.Vector3),I(Ft,"_mainLightColor",new X.Vector4),I(Ft,"_mainLightPosition",new X.Vector3),I(Ft,"_lightData",new X.Vector4);var Gl=class{get name(){return Go}parser;identifier;constructor(e,t){this.parser=e,this.identifier=t}loadMaterial(e){let t=this.parser.json.materials[e];if(!t)return _n&&console.log(e,this.parser.json.materials),null;if(!t.extensions||!t.extensions[Go])return _n&&console.log("material "+e+" does not use NEEDLE_techniques_webgl"),null;let i=t.extensions[Go].technique;if(i<0)return null;let n=this.parser.json.extensions[Go];if(!n)return null;_n&&console.log(n);let r=n.techniques[i];return r?new Promise(async(s,a)=>{let c=await zf(n,r.program),d=c?.fragmentShader,l=c?.vertexShader;if(!d||!l)return a();_n&&console.log("loadMaterial",t,c);let u={},h=r.uniforms;l.includes("_Time")&&(u._Time={value:new X.Vector4(0,0,0,0)});for(let m in h){let f=m;switch(f){case"_TimeParameters":let p=new X.Vector4;u[f]={value:p};break;case"hlslcc_mtx4x4unity_MatrixV":case"hlslcc_mtx4x4unity_MatrixVP":u[f]={value:[]};break;case"_MainLightPosition":case"_MainLightColor":case"_WorldSpaceCameraPos":u[f]={value:[0,0,0,1]};break;case"unity_OrthoParams":break;case"unity_SpecCube0":u[f]={value:null};break;default:case"_ScreenParams":case"_ZBufferParams":case"_ProjectionParams":u[f]={value:[0,0,0,0]};break;case"_CameraOpaqueTexture":case"_CameraDepthTexture":u[f]={value:null};break}}let g=!1;if(t.extensions&&t.extensions[Go]){let m=t.extensions[Go];if(m.technique===i){_n&&console.log(t.name,"Material Properties",m);for(let f in m.values){let p=m.values[f];if(typeof p=="string"){if(p.startsWith("/textures/")){let b=p.substring(10),w=Number.parseInt(b);if(w>=0){let C=await this.parser.getDependency("texture",w);C&&(C.encoding=X.LinearEncoding,C.needsUpdate=!0),u[f]={value:C};continue}}switch(f){case"alphaMode":p==="BLEND"&&(g=!0);continue}}if(Array.isArray(p)&&p.length===4){u[f]={value:new X.Vector4(p[0],p[1],p[2],p[3])};continue}u[f]={value:p}}}}let E=new Ft(this.identifier,{name:t.name??"",uniforms:u,vertexShader:l,fragmentShader:d,lights:!1});switch(u._Cull?.value){case 0:E.side=X.DoubleSide;break;case 1:E.side=X.BackSide;break;case 2:E.side=X.FrontSide;break;default:E.side=X.FrontSide;break}switch(u._ZTest?.value){case 3:E.depthTest=!0,E.depthFunc=X.EqualDepth;break;case 6:E.depthTest=!0,E.depthFunc=X.NotEqualDepth;break;case 2:E.depthTest=!0,E.depthFunc=X.LessDepth;break;case 4:E.depthTest=!0,E.depthFunc=X.LessEqualDepth;break;case 5:E.depthTest=!0,E.depthFunc=X.GreaterDepth;break;case 7:E.depthTest=!0,E.depthFunc=X.GreaterEqualDepth;break;case 8:E.depthTest=!1,E.depthFunc=X.AlwaysDepth;break}E.transparent=g,g&&(E.depthWrite=!1),Wd(u),E.onUpdateUniforms();for(let m in h){let f=m,p=h[m].type;if(u[f]?.value===void 0)switch(p){case 35678:u[f]={value:Gf},console.warn("Missing/unassigned texture, fallback to white: "+f);break;default:console.warn("TODO: EXPECTED UNIFORM / fallback NOT SET: "+f,h[m]);break}}_n&&console.log(E.uuid,u),om(E),s(E)}):null}};function om(o){if(o.uniforms)for(let e in o.uniforms)Object.getOwnPropertyDescriptor(o,e)||Object.defineProperty(o,e,{get:()=>o.uniforms[e].value,set:t=>{o.uniforms[e].value=t,o.needsUpdate=!0}})}var Zn=pe,Vl="$___Export_Components",dy="NEEDLE_components",cu=class{[Mr]},du=class{node;nodeIndex;nodeDef;constructor(e,t,i){this.node=e,this.nodeIndex=t,this.nodeDef=i}},Vo=class{get name(){return dy}parser;nodeToObjectMap={};exportContext;objectToNodeMap={};context;writer;registerExport(e){e.register(t=>{if("serializeUserData"in t){let i=t.serializeUserData.bind(t);this.writer=t,t.serializeUserData=(n,r)=>{try{this.serializeUserData(n,r),i(n,r)}finally{this.afterSerializeUserData(n,r)}}}return this})}beforeParse(){this.exportContext={},this.objectToNodeMap={}}serializeUserData(e,t){let i=e.userData?.components;!i||i.length<=0||(delete e.userData.components,e[Vl]=i)}afterSerializeUserData(e,t){if(e.type==="Scene"&&Zn&&console.log("DONE",JSON.stringify(t)),e[Vl]===void 0)return;let i=e[Vl];delete e[Vl],i!==null&&(e.userData.components=i)}writeNode(e,t){let i=this.writer.json.nodes.length;console.log(e.name,i,e.uuid);let n=new du(e,i,t);this.exportContext[i]=n,this.objectToNodeMap[e.uuid]=i}afterParse(e){Zn&&console.log("AFTER",e);for(let t in this.exportContext){let i=this.exportContext[t],n=i.node,r=i.nodeDef,s=i.nodeIndex,a=n.userData?.components;if(!a||a.length<=0)continue;let c=new cu;r.extensions=r.extensions||{},r.extensions[this.name]=c,this.context.object=n,this.context.nodeId=s,this.context.objectToNode=this.objectToNodeMap;let d=[];for(let l of a){this.context.target=l;let u=qe().writeBuiltinComponentData(l,this.context);u!==null&&d.push(u)}d.length>0&&(c[Mr]=d,Zn&&console.log("DID WRITE",n,"nodeIndex",s,d))}}beforeRoot(){return Zn&&console.log("BEGIN LOAD"),this.nodeToObjectMap={},null}async afterRoot(e){let t=e.parser,i=t?.extensions;if(!i)return;let n=i[this.name];Zn&&console.log("After root",e,this.parser,i);let r=[];if(n===!0){let s=t.json.nodes;for(let a=0;a<s.length;a++){let c=await t.getDependency("node",a);this.nodeToObjectMap[a]=c}for(let a=0;a<s.length;a++){let c=s[a],d=a,l=c.extensions;if(!l)continue;let u=l[this.name];if(!u)continue;Zn&&console.log("NODE",c);let h=this.nodeToObjectMap[d];if(!h){console.error("Could not find object for node index: "+d,c,t);continue}ko(h),r.push(this.createComponents(h,u))}}await Promise.all(r)}async createComponents(e,t){if(!t)return;let i=t[Mr];if(i){let n=new Array;Zn&&console.log(e.name,i);for(let r in i){let s=i[r];Zn&&console.log("Serialized data",JSON.parse(JSON.stringify(s))),s&&this.parser&&n.push(wo(this.parser,s)),e.userData=e.userData||{},e.userData[Mr]=e.userData[Mr]||[],e.userData[Mr].push(s)}await Promise.all(n)}}};import{EXRLoader as uy}from"three/examples/jsm/loaders/EXRLoader";var uu=P("debugexr"),zl=class{parser;name;constructor(e){this.parser=e,this.name="EXT_texture_exr",uu&&console.log(e)}loadTexture(e){let t=this.name,i=this.parser,r=i.json.textures[e];if(uu&&console.log("EXT_texture_exr.loadTexture",e,r),!r.extensions||!r.extensions[t])return null;let s=r.extensions[t],a=new uy(i.options.manager);return uu&&console.log("EXT_texture_exr.loadTexture",s,a),i.loadTextureImage(e,s.source,a)}};window.addEventListener("unhandledrejection",o=>{});var sm="NEEDLE_gameobject_data",Wl=class{get name(){return sm}parser;constructor(e){this.parser=e}afterRoot(e){let t=[];for(let i=0;i<this.parser.json.nodes.length;i++){let n=this.parser.json.nodes[i];if(n&&n.extensions){let r=n.extensions[sm];if(r){let s=this.findAndApplyExtensionData(i,r);t.push(s)}}}return Promise.all(t).then(()=>{})}async findAndApplyExtensionData(e,t){let i=await this.parser.getDependency("node",e);i&&this.applyExtensionData(i,t)}applyExtensionData(e,t){e.userData.layer=t.layers,e.layers.disableAll(),e.layers.set(t.layers),e.userData.tag=t.tag,e.userData.hideFlags=t.hideFlags,e.userData.static=t.static,e.visible=t.activeSelf,e.guid=t.guid}};import{AmbientLight as hy,Color as am,HemisphereLight as py}from"three";var lm="NEEDLE_lighting_settings",zo=P("debugenvlight"),Nl=class{get name(){return lm}parser;sourceId;context;constructor(e,t,i){this.parser=e,this.sourceId=t,this.context=i}afterRoot(e){let t=this.parser.json.extensions;if(t){let i=t[lm];if(i){zo&&console.log(i);let n=R.addNewComponent(e.scene,hu,!1);n.sourceId=this.sourceId,n.ambientIntensity=i.ambientIntensity,n.ambientLight=new am().fromArray(i.ambientLight),Array.isArray(i.ambientTrilight)&&(n.ambientTrilight=i.ambientTrilight.map(r=>new am().fromArray(r))),n.ambientMode=i.ambientMode,n.environmentReflectionSource=i.environmentReflectionSource,this.context&&this.context.rendererData.registerSceneLightSettings(n)}}return null}},hu=class extends M{ambientMode=0;ambientLight;ambientTrilight;ambientIntensity=1;environmentReflectionSource=0;_hasReflection=!1;_ambientLightObj;_lightProbeObj;awake(){if(this.sourceId){let e=this.environmentReflectionSource===0?1:2,t=this.context.lightmaps.tryGet(this.sourceId,e,0);this._hasReflection=t!=null,t&&this.context.rendererData.registerReflection(this.sourceId,t)}zo&&window.addEventListener("keydown",e=>{switch(e.key){case"l":this.enabled=!this.enabled;break}})}onEnable(){let e=this.context.mainCameraComponent?.sourceId===this.sourceId;if(zo&&console.log("Enable scene lighting",this.sourceId,e,this,this.context.mainCameraComponent?.sourceId),e||zo&&console.warn("This is no active?!",this.context.mainCameraComponent?.sourceId),this.ambientMode==3)this.ambientLight&&!this._ambientLightObj&&(this._ambientLightObj=new hy(this.ambientLight,Math.PI*this.ambientIntensity)),this._ambientLightObj&&this.gameObject.add(this._ambientLightObj),this._lightProbeObj&&this._lightProbeObj.removeFromParent();else if(this.ambientMode===1){if(this.ambientTrilight){let t=this.ambientTrilight[0],i=this.ambientTrilight[this.ambientTrilight.length-1],n=new py(i,t,this.ambientIntensity);this.gameObject.add(n)}}else this._ambientLightObj&&this._ambientLightObj.removeFromParent(),this._lightProbeObj?this.enabled&&this.destroyed&&this._lightProbeObj&&this.scene.add(this._lightProbeObj):this.sourceId&&this.context.rendererData.getSceneLightingData(this.sourceId).then(t=>{zo&&console.log(t),t&&(this._lightProbeObj=t.lightProbe,this.enabled&&!this.destroyed&&this._lightProbeObj&&this.scene.add(this._lightProbeObj))});this.sourceId&&this.context.rendererData.enableReflection(this.sourceId)}onDisable(){zo&&console.log("disable",this.sourceId,this),this._lightProbeObj&&this._lightProbeObj.removeFromParent(),this._ambientLightObj&&this._ambientLightObj.removeFromParent(),this.sourceId&&this.context.rendererData.disableReflection()}};import{NeverStencilFunc as fy,LessStencilFunc as my,EqualStencilFunc as gy,LessEqualStencilFunc as by,GreaterStencilFunc as vy,NotEqualStencilFunc as yy,GreaterEqualStencilFunc as _y,AlwaysStencilFunc as xy,ZeroStencilOp as wy,KeepStencilOp as Ey,ReplaceStencilOp as Cy,IncrementStencilOp as Ty,DecrementStencilOp as Ry,IncrementWrapStencilOp as Sy,DecrementWrapStencilOp as Py,InvertStencilOp as Oy}from"three";var pu=P("debugstencil");function ky(o,e){return(o&1<<e.layer)!=0}var Gr=class{static applyStencil(e){if(!e)return;let t=e.sourceId;if(pu&&console.log(t,Gr.stencils),!t)return;let i=Gr.stencils[t];if(!!i)for(let n=i.length-1;n>=0;n--){let r=i[n];if(ky(r.layer,e)){pu&&console.log(r);let s=e.sharedMaterial?.clone();s&&(e.sharedMaterial=s,e.gameObject.renderOrder=r.event*1e3+r.index*50,s.stencilWrite=!0,s.stencilWriteMask=255,s.stencilFuncMask=255,s.stencilRef=r.value,s.stencilFunc=r.compareFunc,s.stencilZPass=r.passOp,s.stencilFail=r.failOp,s.stencilZFail=r.zFailOp);break}}}parser;source;constructor(e,t){this.parser=e,this.source=t}afterRoot(e){let t=this.parser.json.extensions;if(t){let i=t[Iy];if(i){pu&&console.log(i);let n=i.stencil;if(n&&Array.isArray(n))for(let r of n){let s={...r};s.compareFunc=My(s.compareFunc),s.passOp=fu(s.passOp),s.failOp=fu(s.failOp),s.zFailOp=fu(s.zFailOp),Gr.stencils[this.source]||(Gr.stencils[this.source]=[]),Gr.stencils[this.source].push(s)}}}return null}},Vr=Gr;I(Vr,"stencils",{});function fu(o){switch(o){case 0:return Ey;case 1:return wy;case 2:return Cy;case 3:return Ty;case 4:return Ry;case 6:return Sy;case 7:return Py;case 5:return Oy}return 0}function My(o){switch(o){case 1:return fy;case 2:return my;case 3:return gy;case 4:return by;case 5:return vy;case 6:return yy;case 7:return _y;case 8:return xy}return 0}var Iy="NEEDLE_render_objects";import{TextureLoader as Ay}from"three";import{GLTFLoader as Dy}from"three/examples/jsm/loaders/GLTFLoader";var mu="NEEDLE_progressive",Ge=P("debugprogressive"),bu=new Map,gu=!1;Ge&&window.addEventListener("keyup",o=>{o.key==="p"&&(bu.forEach((e,t)=>{Object.entries(e).forEach(([i,n])=>{gu?t[i]=n.lod0:t[i]=n.original,t.needsUpdate=!0})}),gu=!gu)});var sa=class{static assignTextureLOD(e,t,i,n=0){if(!!i)for(let r of Object.keys(i)){let s=i[r];s?.isTexture===!0&&(Ge&&console.log(`-----------
214
- `,"FIND",i.name,r,s?.name,s?.userData,s,i),sa.getOrLoadTexture(e,t,i,r,s,n).then(a=>{if(a?.isTexture===!0&&(Ge&&console.log("Assign LOD",i.name,r,a.name,a.guid,i,"Prev:",s,"Now:",a,`
215
- --------------`),i[r]=a,a.needsUpdate=!0,i.needsUpdate=!0,Ge)){let c=bu.get(i);c||(c={},bu.set(i,c));let d=c[r];d||(d=c[r]={original:s,lod0:a}),d.lod0=a}}))}}get name(){return mu}parser;sourceId;context;constructor(e,t,i){this.parser=e,this.sourceId=t,this.context=i}_loading=[];afterRoot(e){return Ge&&console.log("AFTER",this.sourceId,e),this.parser.json.textures?.forEach((t,i)=>{if(t?.extensions){let n=t?.extensions[mu];if(n){let r=this.parser.getDependency("texture",i);this._loading.splice(this._loading.indexOf(i),1),r.then(s=>{Ge&&console.log("register texture",s.name,s.uuid,n),s.userData.deferred=n,sa.cache.set(s.uuid,n)})}}}),null}static async getOrLoadTexture(e,t,i,n,r,s){let a=r.uuid,c=sa.cache.get(a);if(c){Ge&&console.log(a,c.uri,c.guid);let d=Mi(t,c.uri);if(d.endsWith(".glb")||d.endsWith(".gltf")){if(!c.guid)return console.warn("missing pointer for glb/gltf texture",c),null;let l=d+"_"+c.guid;if(this.resolved[l])return Ge&&console.log("Texture has already been loaded: "+l,i.name,n,r.name),this.resolved[l];let u=this.onProgressiveLoadStart(e,t,d,i,n);try{if(this.currentlyLoading[l]!==void 0)return Ge&&console.log("Already loading:",i.name+"."+n,l),await this.currentlyLoading[l];let h=new Promise(async(E,_)=>{let x=new Dy;yn(x,e),Ge&&console.log("Load "+d,i.name,n,c.guid),Ge&&await vo(Math.random()*1e3);let m=await x.loadAsync(d),f=m.parser;Ge&&console.log("Loading finished "+d,i.name,n,c.guid);let p=-1,b=!1;for(let C of m.parser.json.textures)if(p++,C?.extensions){let T=C?.extensions[mu];if(T?.guid&&T.guid===c.guid){b=!0;break}}if(!b)return E(null);let w=await f.getDependency("texture",p);w.encoding=r.encoding,w&&(w.guid=c.guid),this.resolved[l]=w,Ge&&console.log(i.name,n,'change "'+r.name+'" \u2192 "'+w.name+'"',d,p,w,i,l),E(w)});return this.currentlyLoading[l]=h,await h}finally{delete this.currentlyLoading[l],this.onProgressiveLoadEnd(u)}}else{let l=this.onProgressiveLoadStart(e,t,d,i,n);try{Ge&&console.log("Load texture from uri: "+d);let h=await new Ay().loadAsync(d);return h?(h.guid=c.guid,h.flipY=!1,h.needsUpdate=!0,h.encoding=r.encoding,Ge&&console.log(c,h)):Ge&&console.warn("failed loading",d),h}finally{this.onProgressiveLoadEnd(l)}}}else Ge&&console.warn("unknown uuid",r.name,r.uuid,r);return null}static beginListenStart(e,t){this._progressiveEventListeners.has(e)||this._progressiveEventListeners.set(e,new Xl),this._progressiveEventListeners.get(e).start.push(t)}static stopListenStart(e,t){if(!this._progressiveEventListeners.has(e))return;let i=this._progressiveEventListeners.get(e).start,n=i.indexOf(t);n>=0&&i.splice(n,1)}static beginListenEnd(e,t){this._progressiveEventListeners.has(e)||this._progressiveEventListeners.set(e,new Xl),this._progressiveEventListeners.get(e).end.push(t)}static stopListenEnd(e,t){if(!this._progressiveEventListeners.has(e))return;let i=this._progressiveEventListeners.get(e).end,n=i.indexOf(t);n>=0&&i.splice(n,1)}static onProgressiveLoadStart(e,t,i,n,r){this._currentProgressiveLoadingInfo.has(e)||this._currentProgressiveLoadingInfo.set(e,[]);let s=new vu(e,t,i,n,r),a=this._currentProgressiveLoadingInfo.get(e),c=this._progressiveEventListeners.get(e);return c&&c.onStart(s),a.push(s),s}static onProgressiveLoadEnd(e){if(!e)return;let t=e.context;if(!this._currentProgressiveLoadingInfo.has(t))return;let i=this._currentProgressiveLoadingInfo.get(t),n=i.indexOf(e);if(n<0)return;i.splice(n,1);let r=this._progressiveEventListeners.get(t);r&&r.onEnd(e)}},fi=sa;I(fi,"cache",new Map),I(fi,"resolved",{}),I(fi,"currentlyLoading",{}),I(fi,"_progressiveEventListeners",new Map),I(fi,"_currentProgressiveLoadingInfo",new Map);var vu=class{context;source;uri;material;slot;constructor(e,t,i,n,r){this.context=e,this.source=t,this.uri=i,this.material=n,this.slot=r}},Xl=class{start=[];end=[];onStart(e){for(let t of this.start)t(e)}onEnd(e){for(let t of this.end)t(e)}};function _u(o){let e=new Vo;return o.register(t=>(e.parser=t,e)),e}var yu=class{resolvePath(e){return e.includes("/extensions/builtin_components/")?e.replace("/extensions/builtin_components/","/userData/components/"):e.includes("extensions/builtin_components/")?e.replace("extensions/builtin_components/","/userData/components/"):e}};function xu(o,e,t){o.register(n=>new Wl(n)),o.register(n=>new za(n)),o.register(n=>new Ml(n,e.lightmaps,t)),o.register(n=>new Nl(n,t,e)),o.register(n=>new Gl(n,t)),o.register(n=>new Vr(n,t)),o.register(n=>new fi(n,t,e)),o.register(n=>new zl(n));let i=o.setAnimationPointerResolver;typeof i=="function"&&i.bind(o)(new yu)}var Xh={};cp(Xh,{AlignmentConstraint:()=>$n,Animation:()=>Ht,AnimationCurve:()=>mi,AnimationExtension:()=>er,AnimationTrackHandler:()=>tr,Animator:()=>Pe,AnimatorController:()=>pi,AttachedObject:()=>gt,AudioListener:()=>gi,AudioSource:()=>se,AudioTrackHandler:()=>ir,AvatarBlink_Simple:()=>Xi,AvatarEyeLook_Rotation:()=>Qi,AvatarLoader:()=>nr,AvatarMarker:()=>le,AvatarModel:()=>qr,Avatar_Brain_LookAt:()=>Tn,Avatar_MouthShapes:()=>lr,Avatar_MustacheShake:()=>is,Avatar_POI:()=>ye,AxesHelper:()=>kn,BaseUIComponent:()=>Ve,BasicIKConstraint:()=>ns,BoxCollider:()=>ur,BoxGizmo:()=>yi,BoxHelperComponent:()=>ze,Button:()=>qt,CallInfo:()=>bi,Camera:()=>ee,Canvas:()=>We,CanvasGroup:()=>Dn,CapsuleCollider:()=>Nt,CharacterController:()=>qi,CharacterControllerInput:()=>Ci,Collider:()=>Xt,ColorAdjustments:()=>fr,ColorBySpeedModule:()=>Ti,ColorOverLifetimeModule:()=>Ln,ControlTrackHandler:()=>Cn,Deletable:()=>ds,DeleteBox:()=>io,DeviceFlag:()=>no,DragControls:()=>Ki,DropListener:()=>mr,Duplicatable:()=>Ji,EmissionModule:()=>yt,EventList:()=>ue,EventListEvent:()=>Nr,EventSystem:()=>Ye,EventTrigger:()=>ro,FieldWithDefault:()=>hs,FixedJoint:()=>fs,FlyControls:()=>ms,GltfExport:()=>$t,GltfExportBox:()=>gs,Gradient:()=>Ri,Graphic:()=>vt,GraphicRaycaster:()=>bs,GridHelper:()=>Bn,GridLayoutGroup:()=>_s,GroundProjectedEnv:()=>en,HingeJoint:()=>gr,HorizontalLayoutGroup:()=>ys,Image:()=>In,InheritVelocityModule:()=>Jt,InputField:()=>Pt,Interactable:()=>Gt,Keyboard:()=>xs,LODGroup:()=>br,LODModel:()=>tn,LayoutGroup:()=>Un,Light:()=>Xe,LimitVelocityOverLifetimeModule:()=>de,LogStats:()=>Es,LookAtConstraint:()=>Pn,MainModule:()=>_e,MaskableGraphic:()=>Mn,MeshCollider:()=>Kr,MeshRenderer:()=>oo,MinMaxCurve:()=>U,MinMaxGradient:()=>Me,NestedGltf:()=>co,Networking:()=>Si,NoiseModule:()=>K,ObjectRaycaster:()=>ao,OffsetConstraint:()=>nn,OrbitControls:()=>nt,ParticleBurst:()=>jn,ParticleSubEmitter:()=>vr,ParticleSystem:()=>ve,ParticleSystemRenderer:()=>rn,PlayableDirector:()=>wn,PlayerColor:()=>_t,PointerEventData:()=>_i,RGBAColor:()=>q,RawImage:()=>$r,Raycaster:()=>so,Rect:()=>Zr,RectTransform:()=>bt,ReflectionProbe:()=>Zt,RegisteredAnimationInfo:()=>zr,RemoteSkybox:()=>Pi,Renderer:()=>ae,RendererLightmap:()=>Fn,Rigidbody:()=>J,RotationBySpeedModule:()=>Ne,RotationOverLifetimeModule:()=>Ke,ScreenCapture:()=>xr,ShadowCatcher:()=>wr,ShapeModule:()=>ne,SignalAsset:()=>Xr,SignalReceiver:()=>xn,SignalReceiverEvent:()=>Qr,SignalTrackHandler:()=>En,Size:()=>os,SizeBySpeedModule:()=>ke,SizeOverLifetimeModule:()=>Kt,SkinnedMeshRenderer:()=>ps,SmoothFollow:()=>Ot,SpatialHtml:()=>Ss,SpatialTrigger:()=>Gn,SpatialTriggerReceiver:()=>kt,SpectatorCamera:()=>Ps,SphereCollider:()=>dr,Sprite:()=>ei,SpriteRenderer:()=>on,SpriteSheet:()=>sn,SubEmitterSystem:()=>yr,SyncedCamera:()=>Cr,SyncedRoom:()=>Oi,SyncedTransform:()=>St,TeleportTarget:()=>Yr,TestRunner:()=>ks,TestSimulateUserData:()=>Ms,Text:()=>Ie,TextureSheetAnimationModule:()=>xe,ToneMapping:()=>pr,TrailModule:()=>te,TransformData:()=>Wr,TransformGizmo:()=>ho,UIRaycastUtils:()=>wi,UIRootComponent:()=>On,USDZExporter:()=>Tr,UsageMarker:()=>Vt,VRUserState:()=>Wt,VelocityOverLifetimeModule:()=>He,VerticalLayoutGroup:()=>vs,VideoPlayer:()=>Te,Voip:()=>it,Volume:()=>to,VolumeComponent:()=>Yi,VolumeParameter:()=>ls,VolumeProfile:()=>hr,WebAR:()=>ar,WebARSessionRoot:()=>ft,WebXR:()=>V,WebXRAvatar:()=>Ut,WebXRController:()=>Z,WebXRSync:()=>Sn,XRFlag:()=>Ee,XRGrabModel:()=>po,XRGrabRendering:()=>Is,XRRig:()=>sr,XRState:()=>Rt,__Ignore:()=>ka});import{Vector3 as Ly}from"three";var $n=class extends M{from;to;width=0;centered=!0;_centerPos;awake(){this._centerPos=new Ly}update(){if(!this.from||!this.to)return;let e=B(this.from).clone(),t=B(this.to).clone(),i=e.distanceTo(t);this._centerPos.copy(e),this._centerPos.add(t),this._centerPos.multiplyScalar(.5),ie(this.gameObject,this.centered?this._centerPos:e),this.gameObject.lookAt(B(this.to).clone()),this.gameObject.scale.set(this.width,this.width,i)}};v([y(R)],$n.prototype,"from",2),v([y(R)],$n.prototype,"to",2);var Gi=class{time;value;inTangent;inWeight;outTangent;outWeight;weightedMode};v([y()],Gi.prototype,"time",2),v([y()],Gi.prototype,"value",2),v([y()],Gi.prototype,"inTangent",2),v([y()],Gi.prototype,"inWeight",2),v([y()],Gi.prototype,"outTangent",2),v([y()],Gi.prototype,"outWeight",2),v([y()],Gi.prototype,"weightedMode",2);var mi=class{keys;get duration(){return!this.keys||this.keys.length==0?0:this.keys[this.keys.length-1].time}evaluate(e){if(!this.keys||this.keys.length==0)return 0;if(this.keys[0].time>=e)return this.keys[0].value;for(let t=0;t<this.keys.length;t++){let i=this.keys[t];if(i.time<=e)if(t+1<this.keys.length){let r=this.keys[t+1];if(r.time<e)continue;let s=H.remap(e,i.time,r.time,0,1);return H.lerp(i.value,r.value,s)}else return i.value}return this.keys[this.keys.length-1].value}};v([y(Gi)],mi.prototype,"keys",2);import{Matrix4 as jy,Vector3 as cm,Quaternion as Hy}from"three";import{buildMatrix as Fy}from"three/examples/jsm/exporters/USDZExporter";var Wo=P("debugusdzanimation"),zr=class{get start(){return this.ext.getStartTime01(this.root,this.clip)}get duration(){return this.clip.duration}ext;root;clip;constructor(e,t,i){this.ext=e,this.root=t,this.clip=i}},Wr=class{clip;pos;rot;scale;get frameRate(){return 60}ext;root;target;constructor(e,t,i,n){this.ext=e,this.root=t,this.target=i,this.clip=n}addTrack(e){e.name.endsWith("position")&&(this.pos=e),e.name.endsWith("quaternion")&&(this.rot=e),e.name.endsWith("scale")&&(this.scale=e)}getFrames(){return Math.max(this.pos?.times?.length??0,this.rot?.times?.length??0,this.scale?.times?.length??0)}getDuration(){let e=this.pos?.times??this.rot?.times??this.scale?.times;return e?e[e.length-1]:0}getStartTime(e){let t=0;for(let i=0;i<e.length;i++){let n=e[i];if(n===this)return t;t+=n.getDuration()}return t}},er=class{get extensionName(){return"animation"}dict=new Map;rootTargetMap=new Map;getStartTime01(e,t){let i=this.rootTargetMap.get(e);if(!i)return 1/0;let n=-1;for(let r of i){let s=this.dict.get(r),a=0;if(s?.length){for(let c of s){if(c.clip===t)break;a+=c.getDuration()}n=Math.max(n,a)}else console.warn("No animation found on root",e,t,s)}return n}registerAnimation(e,t){if(!t||!e)return null;this.rootTargetMap.has(e)||this.rootTargetMap.set(e,[]);for(let n of t.tracks){let r=n.name.split(".")[2],s=e.getObjectByName(r);if(!s){console.warn("no object found for track",n.name,"using "+e.name+" instead");continue}this.dict.has(s)||this.dict.set(s,[]);let a=this.dict.get(s);if(!a)continue;let c=a.find(l=>l.clip===t);c||(c=new Wr(this,e,s,t),a.push(c)),c.addTrack(n);let d=this.rootTargetMap.get(e);d?.includes(s)||d?.push(s)}return new zr(this,e,t)}onAfterHierarchy(e){Wo&&console.log(this.dict)}serializers=[];onAfterBuildDocument(e){for(let t of this.serializers){let i=t.model?.parent,n=i?.isDynamic===!0;Wo&&console.log(n,t.model?.parent),n&&t.registerCallback(i)}}onExportObject(e,t,i){R.foreachComponent(e,r=>{let s=r;typeof s.createAnimation=="function"&&s.createAnimation(this,t,i)},!1);let n=new wu(e,this.dict);this.serializers.push(n),n.registerCallback(t)}},wu=class{object;dict;model;callback;constructor(e,t){this.object=e,this.dict=t}registerCallback(e){this.model&&this.callback&&this.model.removeEventListener("serialize",this.callback),this.callback||(this.callback=this.onSerialize.bind(this)),Wo&&console.log("REPARENT",e),this.model=e,this.model.addEventListener("serialize",this.callback)}onSerialize(e,t){Wo&&console.log("SERIALIZE",this.model.name,this.object.type);let i=this.object,n=this.dict.get(i);if(!n)return;let r=new jy,s=new cm,a=new Hy,c=new cm(1,1,1);e.appendLine("matrix4d xformOp:transform.timeSamples = {"),e.indent++;for(let d of n){let l=d.pos?.times;if((!l||d.rot&&d.rot.times?.length>l?.length)&&(l=d.rot?.times),(!l||d.scale&&d.scale.times?.length>l?.length)&&(l=d.scale?.times),!l){console.error("got an animated object but no time values??",i,d);continue}let u=d.getStartTime(n);Wo&&e.appendLine(d.clip.name+": start="+u.toFixed(3)+", length="+d.getDuration().toFixed(3)+", frames="+d.getFrames());let h=d.pos?.createInterpolant(),g=d.rot?.createInterpolant(),E=d.scale?.createInterpolant();h||s.set(i.position.x,i.position.y,i.position.z),g||a.set(i.quaternion.x,i.quaternion.y,i.quaternion.z,i.quaternion.w),E||c.set(i.scale.x,i.scale.y,i.scale.z);for(let _=0;_<l.length;_++){let x=l[_];if(h){let f=h.evaluate(x);s.set(f[0],f[1],f[2])}if(g){let f=g.evaluate(x);a.set(f[0],f[1],f[2],f[3])}if(E){let f=E.evaluate(x);f.set(f[0],f[1],f[2])}r.compose(s,a,c);let m=`${(u+x)*d.frameRate}: ${Fy(r)},`;Wo&&(m="#"+_+" "+m),e.appendLine(m)}}e.indent--,e.appendLine("}")}};import*as fm from"three";import*as um from"three";import*as aa from"three";import{PositionalAudioHelper as By}from"three/examples/jsm/helpers/PositionalAudioHelper.js";var ht=P("debugaudio");var De=class extends M{static get userInteractionRegistered(){return De._didCallBeginWaitForUserInteraction||(De._didCallBeginWaitForUserInteraction=!0,De._beginWaitForUserInteraction()),De._userInteractionRegistered}static registerWaitForAllowAudio(e){if(e!==null){if(this._userInteractionRegistered){e();return}this.callbacks.indexOf(e)===-1&&this.callbacks.push(e),De._didCallBeginWaitForUserInteraction||(De._didCallBeginWaitForUserInteraction=!0,De._beginWaitForUserInteraction())}}static _beginWaitForUserInteraction(e=null){if(this._userInteractionRegistered){e&&e();return}e!==null&&this.registerWaitForAllowAudio(e);let i=(()=>{if(i!=null&&!De._userInteractionRegistered){De._userInteractionRegistered=!0,console.log("registered interaction, can play audio now"),document.removeEventListener("pointerdown",i),document.removeEventListener("click",i),document.removeEventListener("dragstart",i),document.removeEventListener("touchstart",i);for(let n of this.callbacks)n();this.callbacks.length=0}}).bind(this);document.addEventListener("pointerdown",i),document.addEventListener("click",i),document.addEventListener("dragstart",i),document.addEventListener("touchstart",i)}clip="";playOnAwake=!1;get loop(){return this.sound&&(this._loop=this.sound.getLoop()),this._loop}set loop(e){this._loop=e,this.sound&&this.sound.setLoop(e)}get spatialBlend(){return this._spatialBlend}set spatialBlend(e){e!==this._spatialBlend&&(this._spatialBlend=e,this._needUpdateSpatialDistanceSettings=!0)}get minDistance(){return this._minDistance}set minDistance(e){this._minDistance!==e&&(this._minDistance=e,this._needUpdateSpatialDistanceSettings=!0)}get maxDistance(){return this._maxDistance}set maxDistance(e){this._maxDistance!==e&&(this._maxDistance=e,this._needUpdateSpatialDistanceSettings=!0)}_spatialBlend=0;_minDistance=1;_maxDistance=100;get volume(){return this._volume}set volume(e){this._volume=e,this.sound&&(ht&&console.log(this.name,"audio set volume",e),this.sound.setVolume(e))}_volume=1;rollOffMode=0;_loop=!1;sound=null;helper=null;wasPlaying=!1;audioLoader=null;shouldPlay=!1;_lastClipStartedLoading=null;get Sound(){if(!this.sound&&De._userInteractionRegistered){let e=R.getComponent(this.context.mainCamera,gi)??R.findObjectOfType(gi,this.context);e?.listener&&(this.sound=new aa.PositionalAudio(e.listener),this.gameObject.add(this.sound))}return this.sound}get ShouldPlay(){return this.shouldPlay}_focusCallback;awake(){this.audioLoader=new aa.AudioLoader,this.playOnAwake&&(this.shouldPlay=!0),window.addEventListener("visibilitychange",e=>{switch(document.visibilityState){case"hidden":this.wasPlaying=this.isPlaying,this.pause();break;case"visible":this.wasPlaying&&this.play();break}}),this._focusCallback=()=>{this.enabled&&this.playOnAwake&&!this.isPlaying&&De._userInteractionRegistered&&this.play()},this.context.application.addEventListener("application-visible",this._focusCallback)}onDestroy(){this.context.application.removeEventListener("application-visible",this._focusCallback)}onEnable(){De._userInteractionRegistered?this.playOnAwake&&this.context.application.isVisible&&this.play():De._beginWaitForUserInteraction(()=>{this.enabled&&!this.destroyed&&this.shouldPlay&&this.loadAndPlay(this.clip)})}onDisable(){this.stop()}lerp=(e,t,i)=>e*(1-i)+t*i;onLoaded(e){ht&&console.log("audio buffer loaded"),De.registerWaitForAllowAudio(()=>{ht&&console.log("finished loading",e);let t=this.Sound;if(!t){console.warn("Failed getting sound",this.name);return}t.isPlaying&&t.stop(),t.setBuffer(e),t.loop=this._loop,t.setVolume(this.volume),t.autoplay=this.shouldPlay,this.applySpatialDistanceSettings(),t.isPlaying&&t.stop(),ht&&console.log(this.name,this.shouldPlay,De.userInteractionRegistered,this),this.shouldPlay&&De._userInteractionRegistered&&this.play()})}applySpatialDistanceSettings(){let e=this.sound;if(!e)return;this._needUpdateSpatialDistanceSettings=!1;let t=this.lerp(10*this._maxDistance/Math.max(1e-4,this.spatialBlend),this._minDistance,this.spatialBlend);switch(ht&&console.log(this.name,this._minDistance,this._maxDistance,this.spatialBlend,"Ref distance="+t),e.setRefDistance(t),e.setMaxDistance(Math.max(.01,this._maxDistance)),this.rollOffMode){case 0:e.setDistanceModel("exponential");break;case 1:e.setDistanceModel("linear");break;case 2:break}this.spatialBlend>0?ht&&!this.helper&&(this.helper=new By(e,e.getRefDistance()),e.add(this.helper)):this.helper&&this.helper.parent&&this.helper.removeFromParent()}loadAndPlay(e){if(e&&(this.clip=e),this.clip&&(ht&&console.log(this.clip),this.clip.endsWith(".mp3")||this.clip.endsWith(".wav"))){if(this.audioLoader||(this.audioLoader=new aa.AudioLoader),this.shouldPlay=!0,this._lastClipStartedLoading===this.clip){ht&&console.log("Is currently loading:",this._lastClipStartedLoading,this);return}this._lastClipStartedLoading=this.clip,ht&&console.log("load audio",this.clip),this.audioLoader.load(this.clip,this.onLoaded.bind(this),()=>{},console.error)}}play(e=void 0){if(!this.audioLoader||!this.sound||e&&e!==this.clip){this.loadAndPlay(e);return}this.shouldPlay=!0,this._hasEnded=!1,ht&&console.log("play",this.sound?.getVolume(),this.sound),this.sound&&!this.sound.isPlaying&&this.sound.play()}pause(){ht&&console.log("Pause",this),this._hasEnded=!0,this.shouldPlay=!1,this.sound&&this.sound.isPlaying&&this.sound.source&&(this._lastContextTime=this.sound?.context.currentTime,this.sound.pause())}stop(){ht&&console.log("Pause",this),this._hasEnded=!0,this.shouldPlay=!1,this.sound&&this.sound.source&&(this._lastContextTime=this.sound?.context.currentTime,ht&&console.log(this._lastContextTime),this.sound.stop())}_lastContextTime=0;get isPlaying(){return this.sound?.isPlaying??!1}set isPlaying(e){}get time(){return this.sound?.source?this.sound.source?.context.currentTime-this._lastContextTime+this.sound.offset:0}set time(e){if(this.sound){if(e===this.sound.offset)return;let t=this.isPlaying;this.stop(),this.sound.offset=e,t&&this.play()}}_hasEnded=!0;_needUpdateSpatialDistanceSettings=!1;update(){this.helper&&(this.isPlaying&&this.helper.update(),this.helper.visible=this.isPlaying),this._needUpdateSpatialDistanceSettings&&this.applySpatialDistanceSettings(),this.sound&&!this.sound.isPlaying&&this.shouldPlay&&!this._hasEnded&&(this._hasEnded=!0,ht&&console.log("Audio clip ended",this.clip),this.sound.dispatchEvent({type:"ended",target:this}))}},se=De;I(se,"_didCallBeginWaitForUserInteraction",!1),I(se,"callbacks",[]),I(se,"_userInteractionRegistered",!1),v([y()],se.prototype,"clip",2),v([y()],se.prototype,"playOnAwake",2),v([y()],se.prototype,"loop",1),v([y()],se.prototype,"spatialBlend",1),v([y()],se.prototype,"minDistance",1),v([y()],se.prototype,"maxDistance",1),v([y()],se.prototype,"volume",1),v([y()],se.prototype,"rollOffMode",2);import*as Bt from"three";import{Color as Uy}from"three";var q=class extends Uy{alpha=1;get isRGBAColor(){return!0}constructor(e,t,i,n){super(e,t,i),this.alpha=n}clone(){let e=super.clone();return e.alpha=this.alpha,e}copy(e){return super.copy(e),"alpha"in e&&typeof e.alpha=="number"?this.alpha=e.alpha:typeof e.a=="number"&&(this.alpha=e.a),this}lerp(e,t){let i=e;return i.alpha&&(this.alpha=H.lerp(this.alpha,i.alpha,t)),super.lerp(e,t)}lerpColors(e,t,i){let n=e,r=t;return n.alpha&&r.alpha&&(this.alpha=H.lerp(n.alpha,r.alpha,i)),super.lerpColors(e,t,i)}multiply(e){let t=e;return t.alpha&&(this.alpha=this.alpha*t.alpha),super.multiply(e)}};import{PerspectiveCamera as Vy,Ray as zy}from"three";var Ql=P("debugcam"),dm=P("debugscreenpointtoray"),ql=class extends M{get isCamera(){return!0}get aspect(){return this._cam instanceof Vy?this._cam.aspect:this.context.domWidth/this.context.domHeight}get fieldOfView(){return this._fov}set fieldOfView(e){let t=this._fov!=e;this._fov=e,t&&this._cam&&this._cam instanceof Bt.PerspectiveCamera&&(this._cam.fov=this._fov,this._cam.updateProjectionMatrix())}get nearClipPlane(){return this._nearClipPlane}set nearClipPlane(e){let t=this._nearClipPlane!=e;this._nearClipPlane=e,this._cam&&t&&(this._cam.near=e,this._cam.updateProjectionMatrix())}_nearClipPlane=.1;get farClipPlane(){return this._farClipPlane}set farClipPlane(e){let t=this._farClipPlane!=e;this._farClipPlane=e,this._cam&&t&&(this._cam.far=e,this._cam.updateProjectionMatrix())}_farClipPlane=1e3;get clearFlags(){return this._clearFlags}set clearFlags(e){e!==this._clearFlags&&(this._clearFlags=e,this.applyClearFlagsIfIsActiveCamera())}orthographic=!1;orthographicSize=5;ARBackgroundAlpha=0;set cullingMask(e){this._cullingMask=e,this._cam&&(this._cam.layers.mask=e)}get cullingMask(){return this._cam?this._cam.layers.mask:this._cullingMask}_cullingMask=4294967295;set backgroundBlurriness(e){e!==this._backgroundBlurriness&&(e===void 0?this._backgroundBlurriness=void 0:this._backgroundBlurriness=Math.min(Math.max(e,0),1),this.applyClearFlagsIfIsActiveCamera())}get backgroundBlurriness(){return this._backgroundBlurriness}_backgroundBlurriness;set backgroundIntensity(e){e!==this._backgroundIntensity&&(e===void 0?this._backgroundIntensity=void 0:this._backgroundIntensity=Math.min(Math.max(e,0),10),this.applyClearFlagsIfIsActiveCamera())}get backgroundIntensity(){return this._backgroundIntensity}_backgroundIntensity;get backgroundColor(){return this._backgroundColor??null}set backgroundColor(e){if(!!e){if(this._backgroundColor)this._backgroundColor.copy(e);else{if(!e.clone)return;this._backgroundColor=e.clone()}e.alpha===void 0&&(this._backgroundColor.alpha=1),this.applyClearFlagsIfIsActiveCamera()}}_backgroundColor;_fov=60;_cam=null;_clearFlags=2;_skybox;get cam(){return this.activeAndEnabled&&this.buildCamera(),this._cam}screenPointToRay(e,t,i){let n=this.cam,r=ql._origin;r.set(e,t,-1),this.context.input.convertScreenspaceToRaycastSpace(r),dm&&console.log("screenPointToRay",e.toFixed(2),t.toFixed(2),"now:",r.x.toFixed(2),r.y.toFixed(2),"isInXR:"+this.context.isInXR),r.z=-1,r.unproject(n);let s=ql._direction.set(r.x,r.y,r.z),a=B(n);return s.sub(a),s.normalize(),i?(i.set(a,s),i):new zy(a.clone(),s.clone())}awake(){this.sourceId||console.warn("Camera has no source - the camera should be exported inside a gltf",this.name),dm&&window.addEventListener("pointerdown",e=>{let t=e.clientX,i=e.clientY;console.log("touch",t.toFixed(2),i.toFixed(2));let n=this.screenPointToRay(t,i),r="#"+Math.floor(Math.random()*16777215).toString(16);bn.DrawRay(n.origin,n.direction,r,10)})}onEnable(){Ql&&console.log(this),this.buildCamera(),(this.tag=="MainCamera"||!this.context.mainCameraComponent)&&this.context.setCurrentCamera(this),this.applyClearFlagsIfIsActiveCamera()}onDisable(){this.context.removeCamera(this)}buildCamera(){if(this._cam)return;let e=this.gameObject.isCamera,t=null;if(e?(t=this.gameObject,t?.layers.enableAll()):t=this.gameObject.children[0],t&&t.isCamera)t.type==="PerspectiveCamera"&&(t.fov=this._fov,t.near=this._nearClipPlane,t.far=this._farClipPlane,t.updateProjectionMatrix());else if(!this.orthographic)t=new Bt.PerspectiveCamera(this.fieldOfView,window.innerWidth/window.innerHeight,this._nearClipPlane,this._farClipPlane),t.fov=this.fieldOfView;else{let i=this.orthographicSize*100;t=new Bt.OrthographicCamera(window.innerWidth/-i,window.innerWidth/i,window.innerHeight/i,window.innerHeight/-i,this._nearClipPlane,this._farClipPlane)}this._cam=t,this._cam.layers.mask=this._cullingMask,this.tag=="MainCamera"&&this.context.setCurrentCamera(this)}applyClearFlagsIfIsActiveCamera(){if(Ql&&Fe("apply Camera clear flags"),this._cam&&this.context.mainCameraComponent===this)switch(this._clearFlags){case 1:if(this.environmentIsTransparent()&&(!this.ARBackgroundAlpha||this.ARBackgroundAlpha<.001)){this.context.scene.background=null,this.context.renderer.setClearColor(0,0);return}this.enableSkybox(),this._backgroundBlurriness!==void 0&&(this.context.scene.backgroundBlurriness=this._backgroundBlurriness),this._backgroundIntensity!==void 0&&(this.context.scene.backgroundIntensity=this._backgroundIntensity);break;case 2:if(this._backgroundColor){let e=this._backgroundColor.alpha;this.environmentIsTransparent()&&(e=this.ARBackgroundAlpha??0),this.context.scene.background=null,this.context.renderer.setClearColor(this._backgroundColor,e)}break;case 4:this.context.scene.background=null,this.context.renderer.setClearColor(0,0);break}}environmentIsTransparent(){let e=this.context.renderer.xr?.getSession();if(!e)return!1;let t=e.environmentBlendMode;Ql&&Fe("Environment blend mode: "+t+" on "+navigator.userAgent);let i=t==="additive"||t==="alpha-blend";if(this.context.xrSessionMode==="immersive-ar"&&t==="opaque"){if(navigator.userAgent?.includes("OculusBrowser"))return!0;if(navigator.userAgent?.includes("Mozilla")&&navigator.userAgent?.includes("Mobile WebXRViewer/v2"))return!0}return i}enableSkybox(){this._skybox||(this._skybox=new Eu(this)),this._skybox.enable()}},ee=ql;I(ee,"_origin",new Bt.Vector3),I(ee,"_direction",new Bt.Vector3),v([y()],ee.prototype,"fieldOfView",1),v([y()],ee.prototype,"nearClipPlane",1),v([y()],ee.prototype,"farClipPlane",1),v([y()],ee.prototype,"clearFlags",1),v([y()],ee.prototype,"orthographic",2),v([y()],ee.prototype,"orthographicSize",2),v([y()],ee.prototype,"ARBackgroundAlpha",2),v([y()],ee.prototype,"cullingMask",1),v([y()],ee.prototype,"backgroundBlurriness",1),v([y()],ee.prototype,"backgroundIntensity",1),v([y(q)],ee.prototype,"backgroundColor",1);var Eu=class{_camera;_skybox;get context(){return this._camera?.context}constructor(e){this._camera=e}enable(){this._skybox=this.context.lightmaps.tryGetSkybox(this._camera.sourceId),this._skybox?this.context.scene.background!==this._skybox&&(Ql&&console.log("Set skybox",this._camera,this._skybox),this._skybox.encoding=Bt.sRGBEncoding,this._skybox.mapping=Bt.EquirectangularReflectionMapping,this.context.scene.background=this._skybox):console.warn("Failed to load/find skybox texture",this)}};var gi=class extends M{get listener(){return this._listener==null&&(this._listener=new um.AudioListener),this._listener}_listener=null;awake(){se.registerWaitForAllowAudio(()=>{let e=this.listener;if(e==null||e.parent)return;let t=R.getComponentInParent(this.gameObject,ee);t?t.cam.add(e):this.gameObject.add(e)})}};var bi=class{method;enabled;constructor(e,t){this.method=e,this.enabled=t!==void 0?t:!0}invoke(...e){if(this.enabled!==!1){if(!this.method){console.warn("No function. Please check you assigned a method to invoke on export",this);return}this.method(...e)}}},Wy=o=>/^[A-Z]*$/.test(o),Nr=class extends Event{args},ue=class{target;key;setEventTarget(e,t){if(this.key=e,this.target=t,this.key!==void 0){let i="",n=!1;for(let r of this.key)n&&Wy(r)&&(i+="-"),n=!0,i+=r.toLowerCase();this.key=i}}_isInvoking=!1;methods=[];constructor(e){this.methods=e??[]}invoke(...e){if(this._isInvoking){console.warn("Circular event invocation detected. Please check your event listeners for circular references.",this);return}this._isInvoking=!0;try{for(let t of this.methods)t.invoke(...e);if(typeof this.target=="object"&&typeof this.key=="string"){let t=this.target.dispatchEvent;if(typeof t=="function"){let i=new Nr(this.key);i.args=e,t.call(this.target,i)}}}finally{this._isInvoking=!1}}addEventListener(e){return this.methods.push(new bi(e,!0)),e}removeEventListener(e){if(!!e)for(let t=this.methods.length-1;t>=0;t--)this.methods[t].method===e&&(this.methods[t].enabled=!1,this.methods.splice(t,1))}removeAllEventListeners(){this.methods.length=0}};var Xr=class{guid},Qr=class{signal;reaction;$serializedTypes={signal:Xr,reaction:ue}},xn=class extends M{events;start(){console.log(this)}invoke(e){if(!this.events||!Array.isArray(this.events))return;let t=typeof e=="object"?e.guid:e;for(let i of this.events)if(i.signal.guid===t)try{if(i.reaction){if(!i.reaction.invoke){console.warn("Missing invoke - possibly a serialization error",i,this);continue}}else{console.warn("Missing reaction for signal",i,this);continue}i.reaction.invoke()}catch(n){console.error(n)}}};v([y(Qr)],xn.prototype,"events",2);var pm=P("debugtimeline");var Yl=class extends M{static registerCreateTrack(e,t){this.createTrackFunctions[e]=t}playableAsset;playOnAwake;extrapolationMode=1;get isPlaying(){return this._isPlaying}get isPaused(){return this._isPaused}get time(){return this._time}set time(e){this._time=e}get duration(){return this._duration}set duration(e){this._duration=e}get weight(){return this._weight}set weight(e){this._weight=e}_visibilityChangeEvt;_clonedPlayableAsset=!1;awake(){pm&&console.log(this,this.playableAsset?.tracks),this.rebuildGraph(),this.isValid()||console.warn("PlayableDirector is not valid",this.playableAsset,this.playableAsset?.tracks,Array.isArray(this.playableAsset?.tracks),this)}onEnable(){for(let e of this._audioTracks)e.onEnable?.();for(let e of this._customTracks)e.onEnable?.();this.playOnAwake&&this.play(),this._visibilityChangeEvt||(this._visibilityChangeEvt=()=>{switch(document.visibilityState){case"hidden":this.setAudioTracksAllowPlaying(!1);break;case"visible":this.setAudioTracksAllowPlaying(!0);break}}),window.addEventListener("visibilitychange",this._visibilityChangeEvt)}onDisable(){this.stop();for(let e of this._audioTracks)e.onDisable?.();for(let e of this._customTracks)e.onDisable?.();this._visibilityChangeEvt&&window.removeEventListener("visibilitychange",this._visibilityChangeEvt)}onDestroy(){for(let e of this._audioTracks)e.onDestroy?.()}rebuildGraph(){!this.isValid()||(this.resolveBindings(),this.updateTimelineDuration(),this.setupAndCreateTrackHandlers())}play(){!this.isValid()||(this._isPaused=!1,!this._isPlaying&&(this._isPlaying=!0,this._internalUpdateRoutine=this.startCoroutine(this.internalUpdate())))}pause(){this._isPaused=!0}stop(){this._isPlaying&&(this._time=0,this._isPlaying=!1,this._isPaused=!1,this.evaluate()),this._isPlaying=!1,this._isPaused=!1,this._internalUpdateRoutine&&this.stopCoroutine(this._internalUpdateRoutine),this._internalUpdateRoutine=null}evaluate(){if(!this.isValid())return;let e=this._time;switch(this.extrapolationMode){case 0:e=Math.min(e,this._duration);break;case 1:e%=this._duration;break;case 2:if(e>this._duration){this.stop();return}break}this.internalEvaluate(e)}isValid(){return this.playableAsset&&this.playableAsset.tracks&&Array.isArray(this.playableAsset.tracks)}*forEachTrack(){for(let e of this._allTracks)for(let t of e)yield t}get audioTracks(){return this._audioTracks}_guidsMap;resolveGuids(e){this._guidsMap=e}_isPlaying=!1;_internalUpdateRoutine;_isPaused=!1;_time=0;_duration=0;_weight=1;_animationTracks=[];_audioTracks=[];_signalTracks=[];_controlTracks=[];_customTracks=[];_allTracks=[this._animationTracks,this._audioTracks,this._signalTracks,this._controlTracks,this._customTracks];*internalUpdate(){for(;this._isPlaying&&this.activeAndEnabled;)!this._isPaused&&this._isPlaying&&(this._time+=this.context.time.deltaTime,this.evaluate()),yield}internalEvaluate(e){for(let t of this.playableAsset.tracks)if(!t.muted)switch(t.type){case"ActivationTrack":for(let i=0;i<t.outputs.length;i++){let n=t.outputs[i];if(typeof n=="object"){let r=!1;for(let a of t.clips)a.start<=e&&e<=a.end&&(r=!0);let s=n;s.visible!==void 0&&(s.visible=r)}}break}for(let t of this._animationTracks)t.evaluate(e);for(let t of this._audioTracks)t.evaluate(e);for(let t of this._signalTracks)t.evaluate(e);for(let t of this._controlTracks)t.evaluate(e);for(let t of this._customTracks)t.evaluate(e)}resolveBindings(){if(this._clonedPlayableAsset||(this._clonedPlayableAsset=!0,this.playableAsset=Bs(this.playableAsset)),!this.playableAsset||!this.playableAsset.tracks)return;let e=this.findRoot(this.gameObject);for(let t of this.playableAsset.tracks)for(let i=t.outputs.length-1;i>=0;i--){let n=t.outputs[i];if(typeof n=="string"){this._guidsMap&&this._guidsMap[n]&&(n=this._guidsMap[n]);let r=R.findByGuid(n,e);r===null||typeof r!="object"?(t.outputs.splice(i,1),console.warn("Failed to resolve binding",n,t.name,t.type)):(pm&&console.log("Resolved binding",n,"to",r),t.outputs[i]=r,r instanceof Pe)}else if(n===null){if(t.outputs.splice(i,1),Yl.createTrackFunctions[t.type])continue;t.type!=="AudioTrack"&&t.type!=="ControlTrack"&&t.type!=="MarkerTrack"&&console.warn("Missing binding",n,t.name,t.type,this.name,this.playableAsset.name)}}}findRoot(e){return e.parent?this.findRoot(e.parent):e}updateTimelineDuration(){if(this._duration=0,!(!this.playableAsset||!this.playableAsset.tracks)){for(let e of this.playableAsset.tracks)if(e.muted!==!0)for(let t of e.clips)t.end>this._duration&&(this._duration=t.end)}}setupAndCreateTrackHandlers(){if(this._animationTracks.length=0,this._audioTracks.length=0,this._signalTracks.length=0,!this.playableAsset)return;let e=[];for(let t of this.playableAsset.tracks){let i=t.type,n=Yl.createTrackFunctions[i];if(n!=null){let r=n(this,t);if(typeof r.evaluate=="function"){r.director=this,r.track=t,this._customTracks.push(r);continue}}if(t.type==="AnimationTrack"){if(t.clips.length<=0)continue;for(let r=t.outputs.length-1;r>=0;r--){let s=t.outputs[r];typeof s.enabled=="boolean"&&(s.enabled=!1);let a=s?.gameObject?.animations;if(a){let c=new tr;c.trackOffset=t.trackOffset,c.director=this,c.track=t;for(let d=0;d<t.clips.length;d++){let l=t.clips[d],u=l.asset;if(!u){console.error("MISSING anim model?","clip#"+d,l,t,this.playableAsset,this.name);continue}let h=u.clip,g=h;if((typeof g=="string"||typeof g=="number")&&(g=a.find(_=>_.name===h)),!g){console.warn("Could not find animationClip for model",l,t.name,this.name,this.playableAsset?.name);continue}c.mixer||(c.mixer=new fm.AnimationMixer(s.gameObject)),c.clips.push(g),c.mixer.uncacheAction(g),c.createHooks(l.asset,g);let E=c.mixer.clipAction(g);c.actions.push(E),c.models.push(l)}this._animationTracks.push(c)}}}else if(t.type==="AudioTrack"){if(t.clips.length<=0)continue;e.push(t)}else if(t.type==="MarkerTrack"){let r=new En;r.director=this,r.track=t;for(let s of t.markers)switch(s.type){case"SignalEmitter":r.models.push(s),r.didTrigger.push(!1);break}if(r!==null&&r.models.length>0){let s=R.getComponent(this.gameObject,xn);s&&(r.receivers.push(s),this._signalTracks.push(r))}}else if(t.type==="SignalTrack"){let r=new En;r.director=this,r.track=t;for(let s of t.markers)r.models.push(s),r.didTrigger.push(!1);for(let s of t.outputs)r.receivers.push(s);this._signalTracks.push(r)}else if(t.type==="ControlTrack"){let r=new Cn;r.director=this,r.track=t;for(let s of t.clips)r.models.push(s);r.resolveSourceObjects(this.context),this._controlTracks.push(r)}}se.registerWaitForAllowAudio(()=>{let t=R.findObjectOfType(gi,this.context);if(!!t)for(let i of e){let n=new ir;n.director=this,n.track=i,n.listener=t.listener;for(let r=0;r<i.clips.length;r++){let s=i.clips[r];n.addModel(s)}this._audioTracks.push(n)}})}setAudioTracksAllowPlaying(e){for(let t of this._audioTracks)t.onAllowAudioChanged(e)}},wn=Yl;I(wn,"createTrackFunctions",{});import*as $ from"three";import{Quaternion as Xy,Vector3 as Qy}from"three";var No=P("debugtimeline"),Xo=class{director;track;get muted(){return this.track.muted}set muted(e){e!==this.track.muted&&(this.track.muted=e,this.onMuteChanged?.call(this))}*forEachClip(e=!1){if(!!this.track?.clips)if(e)for(let t=this.track.clips.length-1;t>=0;t--)yield this.track.clips[t];else for(let t of this.track.clips)yield t}getClipTime(e,t){return t.clipIn+(e-t.start)*t.timeScale}getClipTimeNormalized(e,t){return(e-t.start)/t.duration}evaluateWeight(e,t,i,n=!0){if(t<0||t>=i.length)return 0;let r=i[t];if(n||e>=r.start&&e<=r.end){let s=1,a=!1;if(r.easeInDuration>0){let c=Math.min((e-r.start)/r.easeInDuration,1);s*=c}if(r.easeOutDuration>0&&!a){let c=Math.min((r.end-e)/r.easeOutDuration,1);s*=c}return s}return 0}},Cu=class{clip;rootPositionOffset;rootQuaternionOffset;get hasOffsets(){return this.rootPositionOffset!==void 0||this.rootQuaternionOffset!==void 0}rootStartPosition;rootEndPosition;rootStartQuaternion;rootEndQuaternion;constructor(e){let t=e.getClip();this.clip=t;let i=e.getRoot(),n=i.name+".position",r=i.name+".quaternion";No&&console.log(t.name,t.tracks,n);for(let s of t.tracks)if(!(s.times.length<=0)){if(s.name.endsWith(n))this.rootStartPosition=new $.Vector3().fromArray(s.values,0),this.rootEndPosition=new $.Vector3().fromArray(s.values,s.values.length-3),this.rootPositionOffset=this.rootEndPosition.clone().sub(this.rootStartPosition),No&&console.log(this.rootPositionOffset);else if(s.name.endsWith(r)&&(this.rootStartQuaternion=new $.Quaternion().fromArray(s.values,0),this.rootEndQuaternion=new $.Quaternion().fromArray(s.values,s.values.length-4),this.rootQuaternionOffset=this.rootEndQuaternion.clone().multiply(this.rootStartQuaternion),No)){let a=new $.Euler().setFromQuaternion(this.rootQuaternionOffset);console.log("ROT",a)}}}},tr=class extends Xo{models=[];trackOffset;target;mixer;clips=[];actions=[];_actionOffsets=[];_didBind=!1;createHooks(e,t){if(t.tracks?.length<=0){console.warn("No tracks in AnimationClip",t);return}let i=t.tracks[0].name.split("."),n=i[i.length-2],r=n+".position",s=n+".quaternion",a=!1,c=!1;for(let d of t.tracks)d.name.endsWith(r)?(a=!0,this.createPositionInterpolant(t,e,d)):d.name.endsWith(s)&&(c=!0,this.createRotationInterpolant(t,e,d));if(!a||!c){let d=this.mixer?.getRoot(),l=t.tracks[0],u=l.name.lastIndexOf("."),h=l.name.substring(0,u),g=h.substring(h.lastIndexOf(".")+1),E=d.getObjectByName(g);if(E)if(a){if(!c){let _=t.tracks[0].name.substring(0,u)+".quaternion";No&&console.warn("Create quaternion track",g,E);let x=E.quaternion,m=new $.QuaternionKeyframeTrack(_,[0,t.duration],[x.x,x.y,x.z,x.w,x.x,x.y,x.z,x.w]);t.tracks.push(m),this.createRotationInterpolant(t,e,m)}}else{let _=h+".position";No&&console.warn("Create position track",g,E);let x=E.position,m=new $.VectorKeyframeTrack(_,[0,t.duration],[x.x,x.y,x.z,x.x,x.y,x.z]);t.tracks.push(m),this.createPositionInterpolant(t,e,m)}}}bind(){if(!this._didBind){this._didBind=!0,No&&console.log(this.models),this.mixer?this.target=this.mixer.getRoot():console.warn("No mixer was assigned to animation track");for(let e of this.actions){let t=new Cu(e);this._actionOffsets.push(t)}for(let e of this.models){let t=e.asset,i=t.position,n=t.rotation;i.x!==void 0&&(i.isVector3||(t.position=new Qy(i.x,i.y,i.z)),n.isQuaternion||(t.rotation=new Xy(n.x,n.y,n.z,n.w)))}this.ensureTrackOffsets()}}ensureTrackOffsets(){if(this.trackOffset){let e=this.trackOffset.position;e&&(e.isVector3||(this.trackOffset.position=new $.Vector3(e.x,e.y,e.z)));let t=this.trackOffset.rotation;t&&(t.isQuaternion||(this.trackOffset.rotation=new $.Quaternion(t.x,t.y,t.z,t.w)))}}_useclipOffsets=!0;_totalOffsetPosition=new $.Vector3;_totalOffsetRotation=new $.Quaternion;_totalOffsetPosition2=new $.Vector3;_totalOffsetRotation2=new $.Quaternion;_summedPos=new $.Vector3;_tempPos=new $.Vector3;_summedRot=new $.Quaternion;_tempRot=new $.Quaternion;evaluate(e){if(this.track.muted||!this.mixer)return;this.bind(),this._totalOffsetPosition.set(0,0,0),this._totalOffsetRotation.set(0,0,0,1),this._totalOffsetPosition2.set(0,0,0),this._totalOffsetRotation2.set(0,0,0,1);let t=0,i=0,n=!1;for(let r=0;r<this.clips.length;r++){let s=this.models[r],a=this.actions[r],c=s.asset;a.weight=0;let d=e>=s.start&&e<=s.end,l=s.postExtrapolationMode,u=d;if(!u&&!n&&s.end<e&&s.postExtrapolationMode!==0){let h=r<this.clips.length-1?this.models[r+1]:null;(!h||h.start>e)&&(u=!0,n=!0)}if(u){let h=1;h*=this.evaluateWeight(e,r,this.models,u);let g=this.getClipTime(e,s),E=0,_=c.duration;if(d){if(c.loop)for(E+=Math.floor(g/(_+1e-6));g>_;)g-=_}else if(!d)switch(l){case 2:g%=_;break;case 3:let f=Math.floor(g/_)%2!==0;g%=_,f&&(g=_-g);break}a.time=g,a.timeScale=0;let x=h*this.director.weight;if(a.weight=x,a.clampWhenFinished=!0,a.isRunning()||a.play(),this._useclipOffsets){let m=t==0?this._totalOffsetPosition:this._totalOffsetPosition2,f=t==0?this._totalOffsetRotation:this._totalOffsetRotation2;t<1&&(i=1-h),t+=1;let p=this._summedPos.set(0,0,0),b=this._tempPos.set(0,0,0),w=this._summedRot.identity(),C=this._tempRot.identity(),T=c.rotation,S=new $.Quaternion;S.slerp(T,h);let A=this._actionOffsets[r];if(A.hasOffsets)for(let D=0;D<E;D++)A.rootPositionOffset?b.copy(A.rootPositionOffset):b.set(0,0,0),b.applyQuaternion(w).applyQuaternion(S),A.rootQuaternionOffset&&(C.copy(A.rootQuaternionOffset),w.multiply(C)),p.add(b);f.multiply(S),f.multiply(w),p.add(c.position),m.add(p)}}}this._useclipOffsets&&(this._totalOffsetPosition.lerp(this._totalOffsetPosition2,i),this._totalOffsetRotation.slerp(this._totalOffsetRotation2,i)),this.mixer.update(e)}createRotationInterpolant(e,t,i){let n=i.createInterpolant.bind(i),r=new $.Quaternion;this.ensureTrackOffsets();let s=this.trackOffset?.rotation;i.createInterpolant=()=>{let a=n(),c=a.evaluate.bind(a);return a.evaluate=d=>{let l=c(d);return r.set(l[0],l[1],l[2],l[3]),r.premultiply(this._totalOffsetRotation),s&&r.premultiply(s),l[0]=r.x,l[1]=r.y,l[2]=r.z,l[3]=r.w,l},a}}createPositionInterpolant(e,t,i){let n=i.createInterpolant.bind(i),r=new $.Vector3;this.ensureTrackOffsets();let s=this.trackOffset?.rotation,a=this.trackOffset?.position,c;i.createInterpolant=()=>{let d=n(),l=d.evaluate.bind(d);return d.evaluate=u=>{let h=l(u);return r.set(h[0],h[1],h[2]),t.removeStartOffset&&(c===void 0?(c=null,c=this._actionOffsets.find(g=>g.clip===e)?.rootStartPosition?.clone()):c?.isVector3&&r.sub(c)),r.applyQuaternion(this._totalOffsetRotation),r.add(this._totalOffsetPosition),s&&r.applyQuaternion(s),a&&(r.x-=a.x,r.y+=a.y,r.z+=a.z),h[0]=r.x,h[1]=r.y,h[2]=r.z,h},d}}},ir=class extends Xo{models=[];listener;audio=[];audioContextTimeOffset=[];lastTime=0;getAudioFilePath(e){let t=this.director.sourceId;return Mi(t,e)}onAllowAudioChanged(e){for(let t=0;t<this.models.length;t++){let i=this.models[t];this.audio[t].setVolume(e?i.asset.volume:0)}}addModel(e){let t=this.getAudioFilePath(e.asset.clip),i=new $.Audio(this.listener);i.setVolume(e.asset.volume);let n=new $.AudioLoader;console.log(t,this.director.sourceId),n.load(t,r=>{i.setBuffer(r),i.loop=e.asset.loop,this.audio.push(i),this.models.push(e)})}onDisable(){for(let e of this.audio)e.isPlaying&&e.stop()}onMuteChanged(){if(this.muted)for(let e=0;e<this.audio.length;e++){let t=this.audio[e];t?.isPlaying&&t.stop()}}evaluate(e){if(!this.track.muted){for(let t=0;t<this.models.length;t++){let i=this.models[t],n=this.audio[t];if(e>=i.start&&e<=i.end){if(this.director.isPaused&&(n.isPlaying&&n.stop(),this.lastTime===e))continue;n.isPlaying||(n.offset=i.clipIn+(e-i.start)*i.timeScale,n.play());let r=i.asset.volume;if(i.easeInDuration>0){let s=Math.min((e-i.start)/i.easeInDuration,1);r*=s}if(i.easeOutDuration>0){let s=Math.min((i.end-e)/i.easeOutDuration,1);r*=s}n.setVolume(r*this.director.weight)}else n.isPlaying&&n.stop()}this.lastTime=e}}},En=class extends Xo{models=[];didTrigger=[];receivers=[];evaluate(e){if(!(this.receivers.length<=0)&&!this.track.muted)for(let t=0;t<this.models.length;t++){let i=this.models[t],n=this.didTrigger[t],r=i.time-e;if(i.retroActive?r<0:r<0&&Math.abs(r)<.1){if(!n){this.didTrigger[t]=!0;for(let a of this.receivers)!a||a.invoke(i.asset)}}else i.emitOnce||(this.didTrigger[t]=!1)}}},la=class extends Xo{models=[];timelines=[];resolveSourceObjects(e){for(let t=this.models.length-1;t>=0;t--){let n=this.models[t].asset;if(typeof n.sourceObject=="string"){let r=n.sourceObject;la.resolved[r]?n.sourceObject=la.resolved[r]:(n.sourceObject=R.findByGuid(r,e.scene),la.resolved[r]=n.sourceObject)}if(n.sourceObject){let r=R.getComponent(n.sourceObject,wn);this.timelines.push(r),r&&n.updateDirector&&(r.playOnAwake=!1)}else{this.models.splice(t,1);continue}}}_previousActiveModel=null;evaluate(e){this._previousActiveModel=null;for(let t=0;t<this.models.length;t++){let i=this.models[t],n=i.asset;if(e>=i.start&&e<=i.end){this._previousActiveModel=i;let r=this.getClipTime(e,i);if(n.controlActivation){let s=n.sourceObject;s.visible=!0}if(n.updateDirector){let s=this.timelines[t];s&&(s.isPlaying&&s.pause(),s.time=r,s.evaluate())}}else{let r=this._previousActiveModel?.asset;if(n.controlActivation){let s=n.sourceObject;r?.sourceObject!==s&&(s.visible=!1)}}}}},Cn=la;I(Cn,"resolved",{});import{BoxHelper as __,BufferGeometry as x_,Color as Rm,Euler as w_,Layers as E_,Line as C_,Mesh as T_,MeshBasicMaterial as R_,Quaternion as sc,Ray as S_,SphereGeometry as P_,Vector2 as O_,Vector3 as Ei}from"three";import{OculusHandModel as k_}from"three/examples/jsm/webxr/OculusHandModel.js";import{OculusHandPointerModel as M_}from"three/examples/jsm/webxr/OculusHandPointerModel.js";import{XRControllerModelFactory as I_}from"three/examples/jsm/webxr/XRControllerModelFactory.js";import{GLTFLoader as A_}from"three/examples/jsm/loaders/GLTFLoader.js";import*as bm from"three";import{Quaternion as Yy,Vector3 as Jl}from"three";import{GLTFLoader as qy}from"three/examples/jsm/loaders/GLTFLoader";import*as Kl from"three";var ca=P("debugavatar"),qr=class{root;head;leftHand;rigthHand;get isValid(){return this.head!==null&&this.head!==void 0}constructor(e,t,i,n){this.root=e,this.head=t,this.leftHand=i,this.rigthHand=n,this.root?.traverse(r=>r.layers.set(2))}},nr=class{avatarRegistryUrl=null;async getOrCreateNewAvatarInstance(e,t){if(!t)return console.error("Can not create avatar: failed to provide id or root object"),null;let i=null;if(typeof t=="string"){if(i=await this.loadAvatar(e,t),!i){let r=new Ue;i=R.instantiate(zn(t,e.scene),r)}}else i=t;if(!i)return null;let n=this.findAvatar(i);return n.isValid?(ca&&console.log("[Custom Avatar] valid config",t,ca?n:""),n):(console.warn("[Custom Avatar] config isn't valid",t,ca?n:""),null)}async loadAvatar(e,t){if(console.assert(t!=null&&typeof t=="string","Avatar id must not be null"),t.length<=0||!t)return null;if(ca&&console.log("[Custom Avatar] "+t+", loading..."),t.endsWith(".glb")||(t+=".glb"),this.avatarRegistryUrl===null){let n=await fetch("./"+t),r=null;if(n.ok){let a=await n.blob();a&&(r=await a.arrayBuffer())}return!r&&(r=await xl(t,t,0,"no url here go away",!0),!r)?null:(await qe().parseSync(e,r,null,0))?.scene??null}let i=new qy;return yn(i,e),new Promise((n,r)=>{let s=this.avatarRegistryUrl+"/"+t;i.load(s,async a=>{await qe().createBuiltinComponents(e,s,a,null,void 0),n(a.scene)},a=>{ca&&console.log("[Custom Avatar] "+a.loaded/a.total*100+"% loaded of "+a.total/1024+"kB")},a=>{console.error("[Custom Avatar] Error when loading: "+a),n(null)})})}cacheModel(e,t){}findAvatar(e){let t=e,i=t;i.children.length==1&&(i=e.children[0]);let n=this.findAvatarPart(i,["head"]),r=this.findAvatarPart(i,["left","hand"]),s=this.findAvatarPart(i,["right","hand"]);if(!n){n=t;let c=new Kl.Vector3;new Kl.Box3().setFromObject(n).getSize(c);let d=Math.max(c.x,c.y,c.z);console.warn("[Custom Avatar] Normalizing head scale, it's too big: "+d+" meters! Should be < 0.3m"),d>.3&&n.scale.multiplyScalar(1/d*.3)}return new qr(t,n,r,s)}findAvatarPart(e,t){let i=e.name.toLowerCase(),n=!0;for(let r of t){if(!n)break;i.indexOf(r)===-1&&(n=!1)}if(n)return e;if(e.children)for(let r of e.children){let s=this.findAvatarPart(r,t);if(s)return s}return null}handleCustomAvatarErrors(e){if(!e.ok)throw Error(e.statusText);return e}};var Qo=P("debugflags");var Tu=class{Mask=17;Has(e){return(this.Mask&e)!==0}Set(e){Qo&&console.warn("Set XR flag state to",e),this.Mask=e,Ee.Apply()}Enable(e){this.Mask|=e,Ee.Apply()}Disable(e){this.Mask&=~e,Ee.Apply()}Toggle(e){this.Mask^=e,Ee.Apply()}EnableAll(){this.Mask=-1,Ee.Apply()}DisableAll(){this.Mask=0,Ee.Apply()}},Rt=Tu;I(Rt,"Global",new Tu);var Vi=class extends M{static Apply(){for(let e of this.registry)e.UpdateVisible(Rt.Global)}awake(){Vi.registry.push(this)}onEnable(){Vi.firstApply||(Vi.firstApply=!0,Vi.Apply())}onDestroy(){let e=Vi.registry.indexOf(this);e>=0&&Vi.registry.splice(e,1)}visibleIn;get isOn(){return this.gameObject.visible}UpdateVisible(e=null){let t,i=e;i&&typeof i=="number"&&(console.assert(typeof i=="number","XRFlag.UpdateVisible: state must be a number",i),Qo&&console.log(i),Vi.buffer.Mask=i,e=Vi.buffer);let n=e;if(n?(Qo&&console.warn(this.name,"use passed in mask",n.Mask,this.visibleIn),t=n.Has(this.visibleIn)):(Qo&&console.log(this.name,"use global mask"),Rt.Global.Has(this.visibleIn)),t!==void 0)if(t)Qo&&console.log(this.name,"is visible",this.gameObject.uuid),R.setActive(this.gameObject,!0);else{if(Qo&&console.log(this.name,"is not visible",this.gameObject.uuid),!this.gameObject.visible)return;this.gameObject.visible=!1}}},Ee=Vi;I(Ee,"registry",[]),I(Ee,"firstApply"),I(Ee,"buffer",new Rt);import{Object3D as Ru}from"three";var rr=P("debugavatar"),vi=class extends M{static getAvatar(e){return e>=0&&e<vi.instances.length?vi.instances[e]:null}static onAvatarMarkerCreated(e){return vi._onNewAvatarMarkerAdded.push(e),e}static onAvatarMarkerDestroyed(e){return vi._onAvatarMarkerDestroyed.push(e),e}connectionId;avatar;awake(){vi.instances.push(this),rr&&console.log(this);for(let e of vi._onNewAvatarMarkerAdded)e({avatarMarker:this,gameObject:this.gameObject})}onDestroy(){vi.instances.splice(vi.instances.indexOf(this),1);for(let e of vi._onAvatarMarkerDestroyed)e({avatarMarker:this,gameObject:this.gameObject})}isLocalAvatar(){return this.connectionId===this.context.connection.connectionId}setVisible(e){this.avatar&&("setVisible"in this.avatar?this.avatar.setVisible(e):R.setActive(this.avatar,e))}},le=vi;I(le,"instances",[]),I(le,"_onNewAvatarMarkerAdded",[]),I(le,"_onAvatarMarkerDestroyed",[]);var da=class{_isVisible=!0;setVisible(e){this._isVisible=e,this.updateVisibility()}get isWebXRAvatar(){return!0}guid;root=null;head=null;handLeft=null;handRight=null;lastUpdate=-1;isLocalAvatar=!1;flags=null;headScale=new Jl(1,1,1);handLeftScale=new Jl(1,1,1);handRightScale=new Jl(1,1,1);webxr;lastAvatarId=null;hasAvatarOverride=!1;context;avatarMarker=null;constructor(e,t,i){this.context=e,this.guid=t,this.webxr=i,this.setupCustomAvatar(this.webxr.defaultAvatar)}updateFlags(){if(!this.flags)return;let e=this.isLocalAvatar?8:16;this.context.isInVR?e|=4:this.context.isInAR?e|=2:e|=1;for(let t of this.flags)t.gameObject.visible=!0,t.UpdateVisible(e)}async setAvatarOverride(e){return this.hasAvatarOverride=e!==null,this.hasAvatarOverride&&this.lastAvatarId!==e&&(this.lastAvatarId=e,e!=null&&e.length>0)?await this.setupCustomAvatar(e):null}_headTarget=new Ru;_handLeftTarget=new Ru;_handRightTarget=new Ru;_canInterpolate=!1;tryUpdate(e,t){if(e.guid===this.guid&&(this.lastAvatarId!==e.avatarId&&e.avatarId&&e.avatarId.length>0&&(this.lastAvatarId=e.avatarId,this.setupCustomAvatar(e.avatarId)),this.lastUpdate=e.time,this.head)){let i=this.webxr.IsInAR?"handheld":"headset",n=this.head;this.context.players.setPlayerView(e.guid,n,i),oe.markDirty(this.head),this._canInterpolate=!0;let r=this.isLocalAvatar?this.head:this._headTarget;if(r.position.set(e.position.x,e.position.y,e.position.z),r.quaternion.set(e.rotation.x,e.rotation.y,e.rotation.z,e.rotation.w),r.scale.set(e.scale,e.scale,e.scale),r.scale.multiply(this.headScale),this.handLeft){let s=this.isLocalAvatar?this.handLeft:this._handLeftTarget;s.position.set(e.posLeftHand.x,e.posLeftHand.y,e.posLeftHand.z),s.quaternion.set(e.rotLeftHand._x,e.rotLeftHand._y,e.rotLeftHand._z,e.rotLeftHand._w),s.quaternion.multiply(da.invertRotation),s.scale.set(e.scale,e.scale,e.scale),s.scale.multiply(this.handLeftScale),oe.markDirty(this.handLeft)}if(this.handRight){let s=this.isLocalAvatar?this.handRight:this._handRightTarget;s.position.set(e.posRightHand.x,e.posRightHand.y,e.posRightHand.z),s.quaternion.set(e.rotRightHand._x,e.rotRightHand._y,e.rotRightHand._z,e.rotRightHand._w),s.quaternion.multiply(da.invertRotation),s.scale.set(e.scale,e.scale,e.scale),s.scale.multiply(this.handRightScale),oe.markDirty(this.handRight)}}}update(){if(this.isLocalAvatar||!this._canInterpolate)return;let e=this.context.time.deltaTime/.1;this.head&&(this.head.position.lerp(this._headTarget.position,e),this.head.quaternion.slerp(this._headTarget.quaternion,e),this.head.scale.lerp(this._headTarget.scale,e)),this.handLeft&&this._handLeftTarget&&(this.handLeft.position.lerp(this._handLeftTarget.position,e),this.handLeft.quaternion.slerp(this._handLeftTarget.quaternion,e),this.handLeft.scale.lerp(this._handLeftTarget.scale,e)),this.handRight&&this._handRightTarget&&(this.handRight.position.lerp(this._handRightTarget.position,e),this.handRight.quaternion.slerp(this._handRightTarget.quaternion,e),this.handRight.scale.lerp(this._handRightTarget.scale,e))}destroy(){rr&&console.log("Destroy avatar",this.guid),this.root?.removeFromParent(),this.avatarMarker?.destroy(),this.lastAvatarId=null,this.head&&ye.Remove(this.context,this.head)}updateVisibility(){let e=this.root;e&&R.setActive(e,this._isVisible)}async setupCustomAvatar(e){if(rr&&console.log("LOAD",e,this),!e||typeof e=="string"&&e.length<=0)return!1;this.head&&ye.Remove(this.context,this.head);let t=e;if(t?.loadAssetAsync!==void 0){await t.loadAssetAsync();let n=t.asset;R.setActive(n,!1),e=R.instantiate(n),R.setActive(e,!0)}rr&&console.log(e);let i=await da.loader.getOrCreateNewAvatarInstance(this.context,e);if(rr&&console.log(i,i?.isValid,this.lastAvatarId,e),i?.isValid){if(this.root=i.root,this.root.position.set(0,0,0),this.root.quaternion.set(0,0,0,1),this.root.scale.set(1,1,1),this.avatarMarker=R.addNewComponent(this.root,le),this.avatarMarker.connectionId=this.guid,this.avatarMarker.avatar=this,this.head&&this.head!==i.head&&this.head?.removeFromParent(),this.head=i.head,this.headScale.copy(this.head.scale),this.head&&!this.isLocalAvatar&&ye.Add(this.context,this.head,this.avatarMarker),i.leftHand&&this.handLeft?.removeFromParent(),this.handLeft=i.leftHand??this.handLeft,this.handLeft?this.handLeftScale.copy(this.handLeft.scale):this.handLeftScale.set(1,1,1),i.rigthHand&&this.handRight?.removeFromParent(),this.handRight=i.rigthHand??this.handRight,this.handRight?this.handRightScale.copy(this.handRight.scale):this.handRightScale.set(1,1,1),this.context.scene.add(this.root),this.flags==null&&(this.flags=[]),this.flags.length=0,this.flags.push(...R.getComponentsInChildren(this.root,Ee)),this.flags.length<=0&&this.head){let n=R.addNewComponent(this.head,Ee);n.visibleIn=20,this.flags.push(n),rr&&console.log("Added flag to head: "+n.visibleIn,this.head.name)}return rr&&console.log("[Avatar], is Local? ",this.isLocalAvatar,this.root),this.updateFlags(),this.updateVisibility(),!0}else return rr&&console.warn("build avatar failed"),!1}},Ut=da;I(Ut,"loader",new nr),I(Ut,"invertRotation",new Yy().setFromAxisAngle(new Jl(0,1,0),Math.PI));var ye=class{static Add(e,t,i=null){if(!!t){for(let n of this.Pois)if(n.obj===t)return;this.Pois.push({obj:t,avatar:i}),this.LastChangeTime=e.time.time}}static Remove(e,t){if(!!t){for(let i of this.Pois)if(i.obj===t){this.Pois.splice(this.Pois.indexOf(i),1),this.LastChangeTime=e?.time.time??G.Current?.time.time;return}}}};I(ye,"Pois",[]),I(ye,"LastChangeTime",0);var Su=class{guid;position=new bm.Vector3},Tn=class extends M{set controlledTarget(e){this.target=e;let t=O.get("MoveRandom");if(t&&this.target){let i=R.getComponent(this.target,t);i&&i.destroy()}}target=null;avatar=null;_model=null;_targetModel=new Su;_currentTargetObject=null;_lastUpdateTime=0;_lookDuration=0;_lastPoiChangedTime=0;awake(){if(this.avatar=R.getComponentInParent(this.gameObject,le),this.avatar){let e=R.getComponentInParent(this.gameObject,le);this._model=new qn(this.context.connection,this.guid),e?.isLocalAvatar&&this._model.requestOwnership()}this.context.connection.beginListen("avatar-look-target-changed",e=>{this.target&&e&&e.guid===this.avatar?.guid&&ie(this.target,e.position)})}update(){if((!this.context.connection.isConnected||this._model?.hasOwnership)&&(ye.LastChangeTime!==this._lastPoiChangedTime&&(this._lastPoiChangedTime=ye.LastChangeTime,this._lookDuration=0),this.selectTarget(),this._currentTargetObject&&this.context.time.frameCount%10===0&&this.target)){let t=B(this._currentTargetObject);ie(this.target,t),this.context.connection.isConnected&&this.avatar&&(this.context.connection.send("avatar-look-target-changed",this._targetModel),this._targetModel.guid=this.avatar.guid,this._targetModel.position.copy(t))}}selectTarget(){if(this.context.time.time-this._lastUpdateTime>this._lookDuration){this._lastUpdateTime=this.context.time.time,this._lookDuration=Math.random()*.5+.2;let t=ye.Pois;if(t.length>0){let i=t[Math.floor(Math.random()*t.length)];if(i&&i.obj){if(i.avatar&&i.avatar===this.avatar)return;this._currentTargetObject=i.obj}}}}};var Gt=class extends M{canGrab=!0;onPointerClick(e){}},Vt=class extends M{isUsed=!0;usedBy=null};import*as qo from"three";import{Matrix4 as Ky,Vector3 as vm}from"three";var Pu=class{get isDirty(){return this.positionChanged||this.rotationChanged}positionChanged=!1;rotationChanged=!1;position;quaternion;_positionKeys=["x","y","z"];_quaternionKeys=["_x","_y","_z","_w"];reset(e=!1){if(this.positionChanged=!1,this.rotationChanged=!1,this.mute=!1,e){if(this.position)for(let t of this._positionKeys)delete this.position[t];if(this.quaternion)for(let t of this._quaternionKeys)delete this.quaternion[t]}}syncValues(){for(let e of this._positionKeys)this.position[e]=this.obj.position[e];for(let e of this._quaternionKeys)this.quaternion[e]=this.obj.quaternion[e]}mute=!1;applyValues(){if(this.positionChanged&&this.position)for(let e of this._positionKeys){let t=this.position[e];t!==void 0&&(this.obj.position[e]=t)}if(this.rotationChanged&&this.quaternion)for(let e of this._quaternionKeys){let t=this.quaternion[e];t!==void 0&&(this.obj.quaternion[e]=t)}}context;obj;_positionWatch;_rotationWatch;constructor(e,t){this.context=t,this.obj=e}start(e,t){this.reset(),e&&(this._positionWatch||(this._positionWatch=new dn(this.obj.position,["x","y","z"])),this._positionWatch.apply(),this.position={},this._positionWatch.subscribeWrite((r,s)=>{if(this.context.physics.isUpdating||this.mute)return;let a=this.position[s];Math.abs(a-r)<1e-5||(this.position[s]=r,this.positionChanged=!0)})),t&&(this._rotationWatch||(this._rotationWatch=new dn(this.obj.quaternion,["_x","_y","_z","_w"])),this._rotationWatch.apply(),this.quaternion={},this._rotationWatch.subscribeWrite((r,s)=>{if(this.context.physics.isUpdating||this.mute)return;let a=this.quaternion[s];Math.abs(a-r)<1e-5||(this.quaternion[s]=r,this.rotationChanged=!0)}));let i=this.obj.matrixWorld.multiplyMatrices.bind(this.obj.matrixWorld),n=new Ky;this.obj.matrixWorld.multiplyMatrices=(r,s)=>(n.equals(r)||(this.positionChanged=!0,this.rotationChanged=!0,n.copy(r)),i(r,s))}stop(){this._positionWatch?.revoke(),this._rotationWatch?.revoke()}},Zl=class extends M{mass=1;useGravity=!0;constraints=0;isKinematic=!1;drag=0;angularDrag=1;detectCollisions=!0;sleepThreshold=.01;collisionDetectionMode=0;get lockPositionX(){return(this.constraints&2)!==0}get lockPositionY(){return(this.constraints&4)!==0}get lockPositionZ(){return(this.constraints&8)!==0}get lockRotationX(){return(this.constraints&16)!==0}get lockRotationY(){return(this.constraints&32)!==0}get lockRotationZ(){return(this.constraints&64)!==0}set lockPositionX(e){e?this.constraints|=2:this.constraints&=-3}set lockPositionY(e){e?this.constraints|=4:this.constraints&=-5}set lockPositionZ(e){e?this.constraints|=8:this.constraints&=-9}set lockRotationX(e){e?this.constraints|=16:this.constraints&=-17}set lockRotationY(e){e?this.constraints|=32:this.constraints&=-33}set lockRotationZ(e){e?this.constraints|=64:this.constraints&=-65}_propertiesChanged=!1;_currentVelocity=new qo.Vector3;_smoothedVelocity=new qo.Vector3;_smoothedVelocityGetter=new qo.Vector3;_lastPosition=new qo.Vector3;_watch;awake(){this._watch=void 0,this._propertiesChanged=!1}onEnable(){this._watch||(this._watch=new Pu(this.gameObject,this.context)),this._watch.start(!0,!0),this.startCoroutine(this.beforePhysics(),2)}onDisable(){this._watch?.stop(),this.context.physics.removeBody(this)}onDestroy(){this.context.physics.removeBody(this)}onValidate(){this._propertiesChanged=!0}*beforePhysics(){for(;;)this._propertiesChanged&&(this._propertiesChanged=!1,this.context.physics.updateProperties(this)),this._watch?.isDirty?(this._watch.mute=!0,this._watch.applyValues(),this.context.physics.updateBody(this,this._watch.positionChanged,this._watch.rotationChanged),this._watch.reset()):this._watch?.syncValues(),this.captureVelocity(),yield}get body(){return this.context.physics.internal_getRigidbody(this)}teleport(e,t=!0){this._watch?.reset(!0),t?this.gameObject.position.set(e.x,e.y,e.z):this.setWorldPosition(e.x,e.y,e.z),this.resetForcesAndTorques(),this.resetVelocities()}resetForces(){this.body?.resetForces(!0)}resetTorques(){this.body?.resetTorques(!0)}resetVelocities(){this.setVelocity(0,0,0),this.setAngularVelocity(0,0,0)}resetForcesAndTorques(){this.resetForces(),this.resetTorques()}wakeUp(){this.body?.wakeUp()}applyForce(e,t){this.body?.addForce(e,!0)}applyImpulse(e){this.body?.applyImpulse(e,!0)}setForce(e,t,i){this.body?.resetForces(!0),this.body?.addForce({x:e,y:t,z:i},!0)}getVelocity(){let e=this.body?.linvel();return e?(this._currentVelocity.x=e.x,this._currentVelocity.y=e.y,this._currentVelocity.z=e.z,this._currentVelocity):this._currentVelocity.set(0,0,0)}setVelocity(e,t,i){if(e instanceof vm){let n=e;this.body?.setLinvel(n,!0);return}t===void 0||i===void 0||this.body?.setLinvel({x:e,y:t,z:i},!0)}setAngularVelocity(e,t,i){if(e instanceof vm){let n=e;this.body?.setAngvel(n,!0);return}t===void 0||i===void 0||this.body?.setAngvel({x:e,y:t,z:i},!0)}setTorque(e,t,i){this.setAngularVelocity(e,t,i)}get smoothedVelocity(){return this._smoothedVelocityGetter.copy(this._smoothedVelocity),this._smoothedVelocityGetter.multiplyScalar(1/this.context.time.deltaTime)}setBodyFromGameObject(e=null){this.gameObject&&this.destroyed}captureVelocity(){if(this.body){let e=B(this.gameObject);Zl.tempPosition.copy(e);let t=e.sub(this._lastPosition);this._lastPosition.copy(Zl.tempPosition),this._smoothedVelocity.lerp(t,this.context.time.deltaTime/.1)}}},J=Zl;I(J,"tempPosition",new qo.Vector3),v([ci(),y()],J.prototype,"mass",2),v([ci(),y()],J.prototype,"useGravity",2),v([ci(),y()],J.prototype,"constraints",2),v([ci(),y()],J.prototype,"isKinematic",2),v([ci(),y()],J.prototype,"drag",2),v([ci(),y()],J.prototype,"angularDrag",2),v([ci(),y()],J.prototype,"detectCollisions",2),v([ci(),y()],J.prototype,"sleepThreshold",2),v([ci(),y()],J.prototype,"collisionDetectionMode",2);import*as Rn from"three";var Ce=class{bb=null;bb_pos=0;__init(e,t){return this.bb_pos=e,this.bb=t,this}x(){return this.bb.readFloat32(this.bb_pos)}y(){return this.bb.readFloat32(this.bb_pos+4)}z(){return this.bb.readFloat32(this.bb_pos+8)}static sizeOf(){return 12}static createVec3(e,t,i,n){return e.prep(4,12),e.writeFloat32(n),e.writeFloat32(i),e.writeFloat32(t),e.offset()}};var Yo=class{bb=null;bb_pos=0;__init(e,t){return this.bb_pos=e,this.bb=t,this}position(e){return(e||new Ce).__init(this.bb_pos,this.bb)}rotation(e){return(e||new Ce).__init(this.bb_pos+12,this.bb)}scale(e){return(e||new Ce).__init(this.bb_pos+24,this.bb)}static sizeOf(){return 36}static createTransform(e,t,i,n,r,s,a,c,d,l){return e.prep(4,36),e.prep(4,12),e.writeFloat32(l),e.writeFloat32(d),e.writeFloat32(c),e.prep(4,12),e.writeFloat32(a),e.writeFloat32(s),e.writeFloat32(r),e.prep(4,12),e.writeFloat32(n),e.writeFloat32(i),e.writeFloat32(t),e.offset()}};var zt=class{bb=null;bb_pos=0;__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsSyncedTransformModel(e,t){return(t||new zt).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsSyncedTransformModel(e,t){return e.setPosition(e.position()+4),(t||new zt).__init(e.readInt32(e.position())+e.position(),e)}guid(e){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.__string(this.bb_pos+t,e):null}fast(){let e=this.bb.__offset(this.bb_pos,6);return e?!!this.bb.readInt8(this.bb_pos+e):!1}transform(e){let t=this.bb.__offset(this.bb_pos,8);return t?(e||new Yo).__init(this.bb_pos+t,this.bb):null}dontSave(){let e=this.bb.__offset(this.bb_pos,10);return e?!!this.bb.readInt8(this.bb_pos+e):!1}static startSyncedTransformModel(e){e.startObject(4)}static addGuid(e,t){e.addFieldOffset(0,t,0)}static addFast(e,t){e.addFieldInt8(1,+t,0)}static addTransform(e,t){e.addFieldStruct(2,t,0)}static addDontSave(e,t){e.addFieldInt8(3,+t,0)}static endSyncedTransformModel(e){return e.endObject()}static finishSyncedTransformModelBuffer(e,t){e.finish(t)}static finishSizePrefixedSyncedTransformModelBuffer(e,t){e.finish(t,void 0,!0)}};var or=P("debugsync"),Ko="STRS";jo(Ko,zt.getRootAsSyncedTransformModel);var zi=new Et;function Ou(o,e,t=!0){zi.clear();let i=zi.createString(o);zt.startSyncedTransformModel(zi),zt.addGuid(zi,i),zt.addFast(zi,t);let n=e.worldPosition,r=e.worldEuler,s=e.gameObject.scale;zt.addTransform(zi,Yo.createTransform(zi,n.x,n.y,n.z,r.x,r.y,r.z,s.x,s.y,s.z));let a=zt.endSyncedTransformModel(zi);return zi.finish(a,Ko),zi.asUint8Array()}var St=class extends M{overridePhysics=!0;interpolatePosition=!0;interpolateRotation=!0;fastMode=!1;syncDestroy=!1;_model=null;_needsUpdate=!0;rb=null;_wasKinematic=!1;_receivedDataBefore=!1;_targetPosition;_targetRotation;_receivedFastUpdate=!1;_shouldRequestOwnership=!1;requestOwnership(){or&&console.log("Request ownership"),this._model?this._model.requestOwnership():(this._shouldRequestOwnership=!0,this._needsUpdate=!0)}hasOwnership(){return this._model?.hasOwnership??void 0}isOwned(){return this._model?.isOwned}joinedRoomCallback=null;receivedDataCallback=null;awake(){or&&console.log("new instance",this.guid,this),this._receivedDataBefore=!1,this._targetPosition=new Rn.Vector3,this._targetRotation=new Rn.Quaternion,this.lastWorldPos=new Rn.Vector3,this.lastWorldRotation=new Rn.Quaternion,this.rb=R.getComponentInChildren(this.gameObject,J),this.rb&&(this._wasKinematic=this.rb.isKinematic),this.receivedUpdate=!0,this._model=new qn(this.context.connection,this.guid),this.context.connection.isConnected&&this.tryGetLastState(),this.joinedRoomCallback=this.tryGetLastState.bind(this),this.context.connection.beginListen("joined-room",this.joinedRoomCallback),this.receivedDataCallback=this.onReceivedData.bind(this),this.context.connection.beginListenBinrary(Ko,this.receivedDataCallback)}onDestroy(){this.syncDestroy&&Np(this.guid,this.context.connection),this._model=null,this.context.connection.stopListening("joined-room",this.joinedRoomCallback),this.context.connection.stopListenBinary(Ko,this.receivedDataCallback)}tryGetLastState(){let e=this.context.connection.tryGetState(this.guid);e&&this.onReceivedData(e)}tempEuler=new Rn.Euler;onReceivedData(e){if(!this.destroyed&&typeof e.guid=="function"&&e.guid()===this.guid){or&&console.log("new data",this.context.connection.connectionId,this.context.time.frameCount,this.guid,e),this.receivedUpdate=!0,this._receivedFastUpdate=e.fast();let t=e.transform();if(t){oe.markDirty(this.gameObject,!0);let i=t.position();i&&(this.interpolatePosition&&this._targetPosition?.set(i.x(),i.y(),i.z()),(!this.interpolatePosition||!this._receivedDataBefore)&&this.setWorldPosition(i.x(),i.y(),i.z()));let n=t.rotation();n&&(this.tempEuler.set(n.x(),n.y(),n.z()),this.interpolateRotation&&this._targetRotation.setFromEuler(this.tempEuler),(!this.interpolateRotation||!this._receivedDataBefore)&&Ap(this.gameObject,this.tempEuler))}this._receivedDataBefore=!0}}onEnable(){this.lastWorldPos.copy(this.worldPosition),this.lastWorldRotation.copy(this.worldQuaternion),this._needsUpdate=!0,this._model&&this._model.updateIsOwned()}onDisable(){this._model&&this._model.freeOwnership()}receivedUpdate=!1;lastWorldPos;lastWorldRotation;onBeforeRender(){if(!this.activeAndEnabled||!this.context.connection.isConnected)return;if(!this.context.connection.isInRoom||!this._model){or&&console.log("no model or room",this.name,this.guid,this.context.connection.isInRoom);return}this._shouldRequestOwnership&&(this._shouldRequestOwnership=!1,this._model.requestOwnership());let e=this.worldPosition,t=this.worldQuaternion;if(this._model.isOwned&&!this.receivedUpdate){let r=e.distanceTo(this.lastWorldPos),s=t.angleTo(this.lastWorldRotation),a=this._model.hasOwnership||this.fastMode?1e-4:.001;(r>a||s>a)&&(this._model.hasOwnership?this._needsUpdate=!0:(or&&console.log(this.guid,"reset because not owned but",this.gameObject.name,this.lastWorldPos),this.worldPosition=this.lastWorldPos,e.copy(this.lastWorldPos),this.worldQuaternion=this.lastWorldRotation,t.copy(this.lastWorldRotation),oe.markDirty(this.gameObject,!0),this._needsUpdate=!1))}if(this._model&&!this._model.hasOwnership&&this._model.isOwned&&this._receivedDataBefore){let s=this._receivedFastUpdate||this.fastMode?.5:.3,a=!1;if(this.interpolatePosition&&this._targetPosition){let c=this.worldPosition;c.lerp(this._targetPosition,s),this.worldPosition=c,a=!0}if(this.interpolateRotation&&this._targetRotation){let c=this.worldQuaternion;c.slerp(this._targetRotation,s),this.worldQuaternion=c,a=!0}a&&oe.markDirty(this.gameObject,!0)}if(this.receivedUpdate=!1,this.lastWorldPos.copy(e),this.lastWorldRotation.copy(t),!this._model)return;if(!this._model||this._model.hasOwnership===void 0||!this._model.hasOwnership){this.rb&&(this.rb.isKinematic=this._model.isOwned??!1,this.rb.setVelocity(0,0,0),this.rb.setBodyFromGameObject());return}this.rb&&(this._wasKinematic!==void 0&&(or&&console.log("reset kinematic",this.rb.name,this._wasKinematic),this.rb.isKinematic=this._wasKinematic),this.gameObject.position.distanceTo(new Rn.Vector3(0,0,0))>1e3&&(or&&console.log("RESET",this.name),this.gameObject.position.set(0,1,0),this.rb.setVelocity(0,0,0),this.rb.setBodyFromGameObject()));let i=10,n=this.rb||this.fastMode;if(this._needsUpdate&&(i<=0||i>0&&this.context.time.frameCount%i===0||n)){or&&console.log("send update",this.context.connection.connectionId,this.guid,this.gameObject.name,this.gameObject.guid),this.overridePhysics&&this.rb&&this.rb.setBodyFromGameObject(),this._needsUpdate=!1;let r=Ou(this.guid,this,!!n);this.context.connection.sendBinary(r)}}};import*as oc from"three-mesh-ui";import{Euler as r_,EventDispatcher as o_,Group as s_,Matrix4 as Cm,Mesh as a_,MeshBasicMaterial as l_,Object3D as Em,Quaternion as nc,RingGeometry as c_,Vector3 as Lu}from"three";var $l=class{static createButton(e,t={}){let i=document.createElement("button"),n=!1;function r(){if(t.domOverlay===void 0){var d=document.createElement("div");d.style.display="none",document.body.appendChild(d);var l=document.createElementNS("http://www.w3.org/2000/svg","svg");l.setAttribute("width",38),l.setAttribute("height",38),l.style.position="absolute",l.style.right="20px",l.style.top="20px",l.addEventListener("click",function(){h.end()}),d.appendChild(l);var u=document.createElementNS("http://www.w3.org/2000/svg","path");u.setAttribute("d","M 12,12 L 28,28 M 28,12 12,28"),u.setAttribute("stroke","#fff"),u.setAttribute("stroke-width",2),l.appendChild(u),t.optionalFeatures===void 0&&(t.optionalFeatures=[]),t.optionalFeatures.push("dom-overlay"),t.domOverlay={root:d},n=!0}t.optionalFeatures===void 0&&(t.optionalFeatures=[]),t.optionalFeatures.push("local-floor"),t.optionalFeatures.push("hand-tracking"),t.optionalFeatures.push("layers");let h=null,g=null;async function E(x){if(/WebXRViewer\//i.test(navigator.userAgent))if(t.domOverlay?.root){let f=t.domOverlay.root;g=f.parentElement,g&&(console.log("Reparent DOM Overlay to body",f,f.style.display),f.style.display="",f.style.visibility="",document.body.appendChild(f))}else console.warn("WebXRViewer: No DOM Overlay found");x.addEventListener("end",_),await e.xr.setSession(x),i.textContent="STOP AR",n&&(t.domOverlay.root.style.display=""),h=x}function _(){h.removeEventListener("end",_),i.textContent="START AR",g&&g.appendChild(t.domOverlay.root),n&&(t.domOverlay.root.style.display="none"),h=null}i.style.display="",i.style.cursor="pointer",i.style.left="calc(50% - 50px)",i.style.width="100px",i.textContent="START AR",i.onmouseenter=function(){i.style.opacity="1.0"},i.onmouseleave=function(){i.style.opacity="0.5"},i.onclick=function(){h===null?navigator.xr.requestSession("immersive-ar",t).then(E):h.end()}}function s(){i.disabled=!0,i.style.display="",i.style.cursor="auto",i.style.left="calc(50% - 75px)",i.style.width="150px",i.onmouseenter=null,i.onmouseleave=null,i.onclick=null}function a(){s(),i.textContent="AR NOT SUPPORTED"}function c(d){d.style.position="absolute",d.style.bottom="20px",d.style.padding="12px 6px",d.style.border="1px solid #fff",d.style.borderRadius="4px",d.style.background="rgba(0,0,0,0.1)",d.style.color="#fff",d.style.font="normal 13px sans-serif",d.style.textAlign="center",d.style.opacity="0.5",d.style.outline="none",d.style.zIndex="999"}if("xr"in navigator)return i.id="ARButton",i.style.display="none",c(i),navigator.xr.isSessionSupported("immersive-ar").then(function(d){d?r():a()}).catch(a),i;{let d=document.createElement("a");return window.isSecureContext===!1?(d.href=document.location.href.replace(/^http:/,"https:"),d.innerHTML="WEBXR NEEDS HTTPS"):(d.href="https://immersiveweb.dev/",d.innerHTML="WEBXR NOT AVAILABLE"),d.style.left="calc(50% - 90px)",d.style.width="180px",d.style.textDecoration="none",c(d),d}}};var ec=class{static createButton(e,t){t&&console.error('THREE.VRButton: The "options" parameter has been removed. Please set the reference space type via renderer.xr.setReferenceSpaceType() instead.');let i=document.createElement("button");function n(){let c=null;async function d(u){u.addEventListener("end",l),await e.xr.setSession(u),i.textContent="EXIT VR",c=u}function l(){c.removeEventListener("end",l),i.textContent="ENTER VR",c=null}i.style.display="",i.style.cursor="pointer",i.style.left="calc(50% - 50px)",i.style.width="100px",i.textContent="ENTER VR",i.onmouseenter=function(){i.style.opacity="1.0"},i.onmouseleave=function(){i.style.opacity="0.5"},i.onclick=function(){if(c===null){let u={optionalFeatures:["local-floor","bounded-floor","hand-tracking","high-fixed-foveation-level","layers"]};navigator.xr.requestSession("immersive-vr",u).then(d)}else c.end()}}function r(){i.disabled=!0,i.style.display="",i.style.cursor="auto",i.style.left="calc(50% - 75px)",i.style.width="150px",i.onmouseenter=null,i.onmouseleave=null,i.onclick=null}function s(){r(),i.textContent="VR NOT SUPPORTED"}function a(c){c.style.position="absolute",c.style.bottom="20px",c.style.padding="12px 6px",c.style.border="1px solid #fff",c.style.borderRadius="4px",c.style.background="rgba(0,0,0,0.1)",c.style.color="#fff",c.style.font="normal 13px sans-serif",c.style.textAlign="center",c.style.opacity="0.5",c.style.outline="none",c.style.zIndex="999"}if("xr"in navigator)return i.id="VRButton",i.style.display="none",a(i),navigator.xr.isSessionSupported("immersive-vr").then(function(c){c?n():s(),ec.xrSessionIsGranted&&(console.log("XR session is granted - will enter immersive web now"),i.click())}),i;{let c=document.createElement("a");return window.isSecureContext===!1?(c.href=document.location.href.replace(/^http:/,"https:"),c.innerHTML="WEBXR NEEDS HTTPS"):(c.href="https://immersiveweb.dev/",c.innerHTML="WEBXR NOT AVAILABLE"),c.style.left="calc(50% - 90px)",c.style.width="180px",c.style.textDecoration="none",a(c),c}}static registerSessionGrantedListener(){if("xr"in navigator){if(/WebXRViewer\//i.test(navigator.userAgent))return;navigator.xr.addEventListener("sessiongranted",()=>{ec.xrSessionIsGranted=!0})}}},Zo=ec;I(Zo,"xrSessionIsGranted",!1);Zo.registerSessionGrantedListener();import*as tc from"three";var ym=Ha(ml(),1);import{AudioAnalyser as Jy}from"three";var $o="noVoip",pt=P("debugvoip"),Zy=P("voip");var ku=class{id;constructor(e){this.id=e}};var Mu=class{peer;voip;userId;peerId;call=null;callErrorListener=null;stream=null;constructor(e,t,i,n){this.voip=e,this.peer=t,this.userId=i,this.peerId=n}close(){pt&&console.log("close voip call"),this.callErrorListener&&this.peer.off("error",this.callErrorListener),this.call&&this.call.open&&this.call.close(),this.stream?.getTracks().forEach(function(e){e.stop()})}updateMute(e){if(!this.stream)return;let t=this.stream?.getAudioTracks();for(let i of t)i.enabled=!e}async startVoipCall(){if(!await it.HasMicrophonePermissions()){console.warn("no permission to use microphone, can not start call");return}pt&&console.log("start voip call"),this.stream=await navigator.mediaDevices.getUserMedia({audio:!0,video:!1}),this.updateMute(this.voip.muteOutput),pt&&console.log(this.stream),this.call=this.peer.call(this.peerId,this.stream,{metadata:{userId:this.userId}}),this.call.on("error",t=>{console.error(t)}),this.call.on("stream",t=>{pt&&console.log("received stream from remote again",t)}),this.peer.on("close",this.onCallClose.bind(this)),this.callErrorListener=t=>{t.message.includes(this.peerId)?(console.log("Could not connect to "+this.peerId),this.callErrorListener&&this.peer.off("error",this.callErrorListener),this.call&&this.call.close(),this.stream?.getTracks().forEach(function(i){i.stop()}),this.stream=null):console.error(t)},this.peer.on("error",this.callErrorListener)}onCallClose(e){pt&&console.log("call closed",e)}},Iu=class{get currentStream(){return this.stream}get currentAudio(){return this.audio}get currentAnalyzer(){return this.analyzer}voip;call;audio=null;stream=null;obj;analyzer=null;waitingForStart=!1;closed=!1;audioElement=null;constructor(e,t,i){this.voip=e,this.obj=t,this.call=i}openAudioStream(e){let t=e.getAudioTracks();for(let i of t)if(i.kind==="audio"&&i.readyState==="live"){this.open(i);return}console.warn("failed finding valid audio stream to begin call")}open(e){console.assert(e.kind==="audio","invalid track kind, expected audio but received "+e.kind),!this.waitingForStart&&(this.waitingForStart=!0,se.userInteractionRegistered||pt&&console.log("Incoming call, waiting for user interaction before opening audio"),se.registerWaitForAllowAudio(async()=>{if(this.call.open&&!this.closed){pt&&console.log("Setup audio and begin listening"),this.stream=new MediaStream([e]);let t=new tc.AudioListener;this.audio=new tc.Audio(t),this.audio.setVolume(this.voip.muteInput?0:1),this.audio.setMediaStreamSource(this.stream);let i=document.createElement("audio");this.audioElement=i,i.style.display="none",document.body.appendChild(i),i.srcObject=this.stream,i.sinkId!==void 0&&navigator.mediaDevices.enumerateDevices().then(n=>{if(!!i){console.log(n);for(let r of n)if(r.label==="Speakerphone"){i.sinkId=r.deviceId;break}}}),pt&&console.log("call is setup, you should hear something now"),this.analyzer=new Jy(this.audio,32)}}))}close(){this.closed=!0,this.call?.open&&this.call.close(),this.audio?.disconnect(),this.stream?.getTracks().forEach(e=>{e.stop()}),this.stream=null,this.audioElement&&this.audioElement.remove()}},it=class extends M{requireParam=!1;set muteInput(e){if(e===this._inputMuted||(this._inputMuted=e,!this.currentIncomingCalls))return;let t=this._inputMuted?0:1;for(let i in this.currentIncomingCalls)this.currentIncomingCalls[i]?.currentAudio?.setVolume(t)}get muteInput(){return this._inputMuted}set muteOutput(e){if(e!==this._outputMuted&&(this._outputMuted=e,!!this.connections))for(let t in this.connections)this.connections[t]?.updateMute(e)}get muteOutput(){return this._outputMuted}getFrequency(e){if(e===null){for(let i in this.currentIncomingCalls){let n=this.currentIncomingCalls[i];if(n&&n.currentAnalyzer)return n.currentAnalyzer.getAverageFrequency()}return null}let t=this.currentIncomingCalls[e];return t&&t.currentAnalyzer?t.currentAnalyzer.getAverageFrequency():null}peer=null;model=null;connections={};currentIncomingCalls={};_inputMuted=!1;_outputMuted=!1;awake(){if(P($o)){console.log("VOIP is disabled by url parameter: "+$o);return}if(this.requireParam&&!Zy){console.debug("VOIP must be enabled explicitly by url parameter");return}if(_o()&&Ba()){console.log("VOIP is currently not supported on Safari iOS");return}this.peer=new ym.default,navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia,this.context.connection.beginListen("joined-room",e=>{navigator.mediaDevices.getUserMedia({audio:!0,video:!1})}),this.context.connection.beginListen("peer-update-id",e=>{if(e.id!==this.context.connection.connectionId){let t=this.connections[e.id];if(t&&t.close(),this.peer&&this.context.connection.connectionId){let i=new Mu(this,this.peer,this.context.connection.connectionId,e.peerId);this.connections[e.id]=i,i.startVoipCall()}}}),this.context.connection.beginListen("user-left-room",e=>{let{userId:t}=e,i=this.connections[t];this.connections[t]=null,i&&i.close();let n=this.currentIncomingCalls[t];pt&&console.log("UserLeftRoom",e,t,n),n&&(n.close(),this.currentIncomingCalls[t]=null)}),this.peer.on("open",this.onOpenPeerConnection.bind(this))}onEnable(){}onDisable(){console.log("TODO: close all");for(let e in this.currentIncomingCalls)try{this.currentIncomingCalls[e]?.close(),this.connections[e]?.close()}catch(t){console.error(t)}}async onOpenPeerConnection(e){pt&&console.log("Peer connection established and received id"),this.model=new ku(e),this.context.connection.send("peer-update-id",this.model,1),this.peer&&(this.peer.on("call",this.onReceiveCall.bind(this)),this.peer.on("connection",function(t){pt&&console.log("CONNECTION",t),t.on("data",function(i){pt&&console.log("Received",i)})}))}async onReceiveCall(e){let{metadata:t}=e;console.assert(t.userId);let{userId:i}=t,{peer:n}=e,r=this.currentIncomingCalls[i];if(r&&r.close(),pt&&console.log("received call"),await it.HasMicrophonePermissions()){let s=await navigator.mediaDevices.getUserMedia({audio:!0,video:!1});e.answer(s)}else e.answer(null);this.currentIncomingCalls[i]=new Iu(this,this.gameObject,e),e.on("stream",s=>{pt&&console.log("receive caller stream, will setup audio now"),this.currentIncomingCalls[i]?.openAudioStream(s)}),e.on("error",console.error)}static async HasMicrophonePermissions(){return(await navigator.permissions.query({name:"microphone"})).state!=="denied"}};import{Matrix4 as ua}from"three";var ft=class extends M{webAR=null;get rig(){return this.webAR?.webxr.Rig}invertForward=!1;get arScale(){return this._arScale}set arScale(e){e!==this._arScale&&(this._arScale=e,this.setScale(e))}_initalMatrix=new ua;_selectStartFn=this.onSelectStart.bind(this);_selectEndFn=this.onSelectEnd.bind(this);start(){let e=R.findObjectOfType(V);e&&(e.Rig.updateMatrix(),this._initalMatrix.copy(e.Rig.matrix))}_arScale=5;_rig=null;_startPose=null;_placementPose=null;_isTouching=!1;_rigStartPose=null;onBegin(e){this._placementPose=null,this.gameObject.visible=!1,this.gameObject.matrixAutoUpdate=!1,this._startPose=this.gameObject.matrix.clone(),this._rigStartPose=this.rig?.matrix.clone(),e.addEventListener("selectstart",this._selectStartFn),e.addEventListener("selectend",this._selectEndFn),this.gameObject.visible=!1,this.rig&&(this.rig.matrixAutoUpdate=!0,this._initalMatrix.decompose(this.rig.position,this.rig.quaternion,this.rig.scale))}onUpdate(e,t,i){return i&&!this._placementPose&&this._isTouching?(this.webAR&&this.webAR.setReticleActive(!1),this.placeAt(e,new ua().fromArray(i.transform.matrix).invert()),!0):!1}placeAt(e,t){if(this._placementPose||(this._placementPose=new ua),this._placementPose.copy(t),e){if(this.invertForward){let i=new ua().makeRotationY(Math.PI);this._placementPose.premultiply(i)}this._rig=e,this.setScale(this.arScale)}else this._rig=null;this.gameObject.visible=!0}onEnd(e,t){this._placementPose=null,this.gameObject.visible=!1,this.gameObject.matrixAutoUpdate=!1,this._startPose&&this.gameObject.matrix.copy(this._startPose),e&&(e.matrixAutoUpdate=!0,this._rigStartPose&&this._rigStartPose.decompose(e.position,e.quaternion,e.scale)),oe.markDirty(this.gameObject,!0),setTimeout(()=>{this.gameObject.matrixAutoUpdate=!0,this.gameObject.visible=!0},100)}onSelectStart(){this._isTouching=!0}onSelectEnd(){this._isTouching=!1}setScale(e){let t=this._rig;!t||!this._placementPose||(this._rigStartPose||(this._rigStartPose=t.matrix.clone()),t.matrixAutoUpdate=!1,t.matrix.multiplyMatrices(new ua().makeScale(e,e,e),this._placementPose),t.matrix.decompose(t.position,t.quaternion,t.scale),t.updateMatrixWorld(),console.log("Place",t.position))}};v([y()],ft.prototype,"invertForward",2),v([y()],ft.prototype,"arScale",1);import{Object3D as e_}from"three";import*as _m from"three";import{Color as $y}from"three";var yi=class extends M{objectBounds=!1;color;isGizmo=!0;_gizmoObject=null;_boxHelper=null;onEnable(){this.isGizmo&&!Ai||(this._gizmoObject||(this.objectBounds&&this.gameObject.isMesh===!0?this._gizmoObject=new _m.BoxHelper(this.gameObject,this.color??16776960):(this.objectBounds=!1,this._gizmoObject=dl(this.color??16776960))),this.objectBounds?(this.scene.add(this._gizmoObject),this._boxHelper=this._gizmoObject,this.startCoroutine(this.syncObjectBounds(),3)):this.gameObject.add(this._gizmoObject))}onDisable(){this._gizmoObject&&this.gameObject.remove(this._gizmoObject)}*syncObjectBounds(){for(;this._boxHelper;)this._boxHelper?.update(),yield}};v([y()],yi.prototype,"objectBounds",2),v([y($y)],yi.prototype,"color",2),v([y()],yi.prototype,"isGizmo",2);var t_=P("debugrig"),sr=class extends M{awake(){if(t_){let e=new e_;e.position.y+=.5,this.gameObject.add(e);let t=e.addNewComponent(yi);t&&(t.isGizmo=!1)}}};import{Quaternion as ha,Vector3 as ic,Vector4 as i_}from"three";var Wi=class{bb=null;bb_pos=0;__init(e,t){return this.bb_pos=e,this.bb=t,this}x(){return this.bb.readFloat32(this.bb_pos)}y(){return this.bb.readFloat32(this.bb_pos+4)}z(){return this.bb.readFloat32(this.bb_pos+8)}w(){return this.bb.readFloat32(this.bb_pos+12)}static sizeOf(){return 16}static createVec4(e,t,i,n,r){return e.prep(4,16),e.writeFloat32(r),e.writeFloat32(n),e.writeFloat32(i),e.writeFloat32(t),e.offset()}};var Oe=class{bb=null;bb_pos=0;__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsVrUserStateBuffer(e,t){return(t||new Oe).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsVrUserStateBuffer(e,t){return e.setPosition(e.position()+4),(t||new Oe).__init(e.readInt32(e.position())+e.position(),e)}guid(e){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.__string(this.bb_pos+t,e):null}time(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readInt64(this.bb_pos+e):this.bb.createLong(0,0)}avatarId(e){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.__string(this.bb_pos+t,e):null}position(e){let t=this.bb.__offset(this.bb_pos,10);return t?(e||new Ce).__init(this.bb_pos+t,this.bb):null}rotation(e){let t=this.bb.__offset(this.bb_pos,12);return t?(e||new Wi).__init(this.bb_pos+t,this.bb):null}scale(){let e=this.bb.__offset(this.bb_pos,14);return e?this.bb.readFloat32(this.bb_pos+e):0}posLeftHand(e){let t=this.bb.__offset(this.bb_pos,16);return t?(e||new Ce).__init(this.bb_pos+t,this.bb):null}posRightHand(e){let t=this.bb.__offset(this.bb_pos,18);return t?(e||new Ce).__init(this.bb_pos+t,this.bb):null}rotLeftHand(e){let t=this.bb.__offset(this.bb_pos,20);return t?(e||new Wi).__init(this.bb_pos+t,this.bb):null}rotRightHand(e){let t=this.bb.__offset(this.bb_pos,22);return t?(e||new Wi).__init(this.bb_pos+t,this.bb):null}static startVrUserStateBuffer(e){e.startObject(10)}static addGuid(e,t){e.addFieldOffset(0,t,0)}static addTime(e,t){e.addFieldInt64(1,t,e.createLong(0,0))}static addAvatarId(e,t){e.addFieldOffset(2,t,0)}static addPosition(e,t){e.addFieldStruct(3,t,0)}static addRotation(e,t){e.addFieldStruct(4,t,0)}static addScale(e,t){e.addFieldFloat32(5,t,0)}static addPosLeftHand(e,t){e.addFieldStruct(6,t,0)}static addPosRightHand(e,t){e.addFieldStruct(7,t,0)}static addRotLeftHand(e,t){e.addFieldStruct(8,t,0)}static addRotRightHand(e,t){e.addFieldStruct(9,t,0)}static endVrUserStateBuffer(e){return e.endObject()}static finishVrUserStateBufferBuffer(e,t){e.finish(t)}static finishSizePrefixedVrUserStateBufferBuffer(e,t){e.finish(t,void 0,!0)}};var xm=P("debugxr"),pa=P("debugavatar");var Du="VRUS";jo(Du,Oe.getRootAsVrUserStateBuffer);function Au(){return new Date().getTime()}function n_(o){let e=o&4294967295,t=o/Math.pow(2,32)&1048575;return Qe.create(e,t)}var fa=class{guid;time;avatarId;position=new ic;rotation=new i_;scale=1;posLeftHand=new ic;posRightHand=new ic;rotLeftHand=new ha;rotRightHand=new ha;constructor(e){this.guid=e}update(e,t,i,n,r){this.time=Au(),this.avatarId=r,this.position.set(t.x,t.y,t.z),e&&this.position.applyMatrix4(e.matrixWorld);let s=fa.quat0,a=fa.quat1;s.set(i.x,i.y,i.z,i.w),s=s.multiplyQuaternions(s,fa.invertRotation),e&&(e.getWorldQuaternion(a),s.multiplyQuaternions(a,s)),this.rotation.set(s.x,s.y,s.z,s.w),this.scale=e.scale.x;let c=n.LeftController?.controllerGrip;c&&(c.getWorldPosition(this.posLeftHand),c.getWorldQuaternion(this.rotLeftHand));let d=n.RightController?.controllerGrip;if(d&&(d.getWorldPosition(this.posRightHand),d.getWorldQuaternion(this.rotRightHand)),n.LeftController?.hand?.visible){let l=n.LeftController.wrist;l&&(l.getWorldPosition(this.posLeftHand),l.getWorldQuaternion(this.rotLeftHand))}if(n.RightController?.hand?.visible){let l=n.RightController.wrist;l&&(l.getWorldPosition(this.posRightHand),l.getWorldQuaternion(this.rotRightHand))}}sendAsBuffer(e,t){e.clear();let i=e.createString(this.guid),n=e.createString(this.avatarId);Oe.startVrUserStateBuffer(e),Oe.addGuid(e,i),Oe.addTime(e,n_(this.time)),Oe.addAvatarId(e,n),Oe.addPosition(e,Ce.createVec3(e,this.position.x,this.position.y,this.position.z)),Oe.addRotation(e,Wi.createVec4(e,this.rotation.x,this.rotation.y,this.rotation.z,this.rotation.w)),Oe.addScale(e,this.scale),Oe.addPosLeftHand(e,Ce.createVec3(e,this.posLeftHand.x,this.posLeftHand.y,this.posLeftHand.z)),Oe.addPosRightHand(e,Ce.createVec3(e,this.posRightHand.x,this.posRightHand.y,this.posRightHand.z)),Oe.addRotLeftHand(e,Wi.createVec4(e,this.rotLeftHand.x,this.rotLeftHand.y,this.rotLeftHand.z,this.rotLeftHand.w)),Oe.addRotRightHand(e,Wi.createVec4(e,this.rotRightHand.x,this.rotRightHand.y,this.rotRightHand.z,this.rotRightHand.w));let r=Oe.endVrUserStateBuffer(e);e.finish(r,Du);let s=e.asUint8Array();t.sendBinary(s)}setFromBuffer(e,t){if(!e)return;this.guid=e,this.time=t.time().toFloat64();let i=t.avatarId();i&&(this.avatarId=i);let n=t.position();n&&this.position.set(n.x(),n.y(),n.z());let r=t.rotation();r&&this.rotation.set(r.x(),r.y(),r.z(),r.w());let s=t.posLeftHand();s&&this.posLeftHand.set(s.x(),s.y(),s.z());let a=t.posRightHand();a&&this.posRightHand.set(a.x(),a.y(),a.z());let c=t.rotLeftHand();c&&this.rotLeftHand.set(c.x(),c.y(),c.z(),c.w());let d=t.rotRightHand();d&&this.rotRightHand.set(d.x(),d.y(),d.z(),d.w()),this.scale=t.scale()}},Wt=fa;I(Wt,"invertRotation",new ha().setFromAxisAngle(new ic(0,1,0),Math.PI)),I(Wt,"quat0",new ha),I(Wt,"quat1",new ha);var Sn=class extends M{webXR=null;debugAvatarUser=null;voip=null;async awake(){if(this.webXR||(this.webXR=R.getComponent(this.gameObject,V)),this.webXR||(this.webXR=R.findObjectOfType(V,this.context)),!this.webXR&&(console.log("Missing webxr component"),this.webXR=R.findObjectOfType(V,this.context),!this.webXR)){console.error("Could not find webxr component");return}if(this.voip||(this.voip=R.findObjectOfType(it,this.context)),pa){let e="debug-avatar-"+pa,t=new Ut(this.context,e,this.webXR);if(this.debugAvatarUser=t,typeof pa=="string"&&pa.length>0)if(await t.setAvatarOverride(pa)){let i=new Wt(e);i.position.y+=1;let n=.5;i.posLeftHand.y+=n,i.posLeftHand.x+=n,i.posRightHand.y+=n,i.posRightHand.x-=n,t.tryUpdate(i,0)}else t.destroy()}}onEnable(){if(!this.webXR&&(this.webXR=R.getComponent(this.gameObject,V),!this.webXR)){console.warn("Missing webxr component on "+this.gameObject.name);return}this.eventSub_WebXRStartEvent=this.onXRSessionStart.bind(this),V.addEventListener("xrStarted",this.eventSub_WebXRStartEvent),this.eventSub_WebXRUpdateEvent=this.onXRSessionUpdate.bind(this),V.addEventListener("xrUpdate",this.eventSub_WebXRUpdateEvent),this.eventSub_WebXREndEvent=this.onXRSessionEnded.bind(this),V.addEventListener("xrStopped",this.eventSub_WebXREndEvent),this.eventSub_ConnectionEvent=this.onConnected.bind(this),this.context.connection.beginListen("joined-room",this.eventSub_ConnectionEvent),this.context.connection.beginListen("webxr-user-joined",e=>{console.log("webxr user joined evt")}),this.context.connection.beginListen("webxr-user-left",e=>{let t=e.id!==null&&e.id!==void 0;!t||(console.log("webxr user left evt"),t&&(this.avatars[e.id]?.destroy(),this.avatars[e.id]=void 0))}),this.context.connection.beginListenBinrary(Du,e=>{let t=e.guid();if(!t)return;let i=e.time().toFloat64(),n=this.tempState;n.setFromBuffer(t,e),this.onTryGetAvatar(t,i)?.tryUpdate(n,i)}),this.context.connection.beginListen("vr-session-update",e=>{let t=e.guid,i=e.time;this.onTryGetAvatar(t,i)?.tryUpdate(e,i)})}tempState=new Wt("");onTryGetAvatar(e,t){if(e===this.context.connection.connectionId)return null;let i=new Date().getTime()-t;if(i>5e3)return xm&&console.log("old data",i,e),null;let n=this.avatars[e];if(n===void 0)try{console.log("create new avatar");let r=new Ut(this.context,e,this.webXR);n=r,this.avatars[e]=r}catch(r){this.avatars[e]=null,console.error(r)}return n}onDisable(){this.eventSub_ConnectionEvent&&this.context.connection.stopListening("joined-room",this.eventSub_ConnectionEvent),V.removeEventListener("xrStarted",this.eventSub_WebXRStartEvent),V.removeEventListener("xrUpdate",this.eventSub_WebXRUpdateEvent),V.removeEventListener("xrStopped",this.eventSub_WebXREndEvent)}update(){let e=Au();this.debugAvatarUser&&(this.debugAvatarUser.lastUpdate=e),this.detectPotentiallyDisconnectedAvatarsAndRemove();for(let t in this.avatars){let i=this.avatars[t];!i||i.update()}}_removeAvatarsList=[];detectPotentiallyDisconnectedAvatarsAndRemove(){let e=Au();for(let t in this.avatars){let i=this.avatars[t];if(!i){this._removeAvatarsList.push(t);continue}e-i.lastUpdate>1e4&&(console.log("avatar timed out (didnt receive any updates in a while) - destroying it now"),i.destroy(),this.avatars[t]=void 0)}for(let t of this._removeAvatarsList)delete this.avatars[t];this._removeAvatarsList.length=0}buildLocalAvatar(){if(this.localAvatar)return;let e=this.context.connection?.connectionId??this.k_LocalAvatarNoNetworkingGuid;this.localAvatar=new Ut(this.context,e,this.webXR),this.localAvatar.isLocalAvatar=!0,this.localAvatar.setAvatarOverride(this.getAvatarId()),this.avatars[this.localAvatar.guid]=this.localAvatar}eventSub_ConnectionEvent=null;eventSub_WebXRStartEvent=null;eventSub_WebXREndEvent=null;eventSub_WebXRUpdateEvent=null;avatars={};localAvatar=null;k_LocalAvatarNoNetworkingGuid="local";onConnected(){xm&&console.log("Hey you are connected as "+this.context.connection.connectionId),this.localAvatar?.guid===this.k_LocalAvatarNoNetworkingGuid&&(this.localAvatar&&(this.localAvatar?.destroy(),this.avatars[this.localAvatar.guid]=void 0),this.localAvatar=null,this.xrState=null,this.ownership?.freeOwnership(),this.ownership=null)}onXRSessionStart(e){if(console.log("XR session started"),this.context.connection.send("webxr-user-joined",{id:this.context.connection.connectionId,mode:"vr"}),this.localAvatar&&(this.localAvatar?.destroy(),this.avatars[this.localAvatar.guid]=void 0,this.localAvatar=null),this.xrState=null,this.ownership?.freeOwnership(),this.ownership=null,this.avatars)for(let t in this.avatars)this.avatars[t]?.updateFlags()}onXRSessionEnded(e){console.log("XR session ended"),this.context.connection.send("webxr-user-left",{id:this.context.connection.connectionId,mode:"vr"}),this.localAvatar&&(this.localAvatar?.destroy(),this.avatars[this.localAvatar.guid]=void 0,this.localAvatar=null)}ownership=null;xrState=null;builder=new Et(1024);onXRSessionUpdate(e){this.xrState??=new Wt(this.context.connection.connectionId??this.k_LocalAvatarNoNetworkingGuid),this.ownership??=new qn(this.context.connection,this.context.connection.connectionId??this.k_LocalAvatarNoNetworkingGuid),this.ownership.guid=this.context.connection.connectionId??this.k_LocalAvatarNoNetworkingGuid,this.buildLocalAvatar();let{frame:t,xr:i,rig:n}=e,r=t.getViewerPose(i.getReferenceSpace());if(!r)return;let s=r?.transform,a=s.position,c=s.orientation;this.xrState.update(n,a,c,this.webXR,this.getAvatarId()),this.localAvatar&&(this.context.connection.connectionId&&(this.localAvatar.guid=this.context.connection.connectionId),this.localAvatar.tryUpdate(this.xrState,0)),!(this.ownership&&!this.ownership.hasOwnership&&this.context.connection.isConnected&&(this.context.time.frameCount%120===0&&this.ownership.requestOwnership(),!this.ownership.hasOwnership))&&(!this.context.connection.isConnected||!this.context.connection.connectionId||this.xrState.sendAsBuffer(this.builder,this.context.connection))}getAvatarId(){return P("avatar")??null}};async function d_(){return Fa()?!0:"xr"in navigator?await navigator.xr.isSessionSupported("immersive-ar")===!0:!1}async function u_(){return"xr"in navigator?await navigator.xr.isSessionSupported("immersive-vr")===!0:!1}var ju=!1,Hu=!1;d_().then(o=>ju=o);u_().then(o=>Hu=o);var Le=class extends M{enableVR=!0;enableAR=!0;defaultAvatar;handModelPath="";createVRButton=!0;createARButton=!0;static get IsInWebXR(){return this._isInXr}static get XRSupported(){return"xr"in navigator&&(ju||Hu)}static get IsARSupported(){return ju}static get IsVRSupported(){return Hu}static addEventListener(e,t){return this.events.addEventListener(e,t),t}static removeEventListener(e,t){return this.events.removeEventListener(e,t),t}static createVRButton(e,t){Le.XRSupported?e.__internalAwake():console.warn("WebXR is not supported on this device");let i=Zo.createButton(e.context.renderer);return i.classList.add("webxr-ar-button"),i.classList.add("webxr-button"),this.resetButtonStyles(i),(t?.registerClick??!0)&&i.addEventListener("click",e.onClickedVRButton.bind(e)),i}static createARButton(e,t){e.__internalAwake();let i=e.webAR?.getAROverlayContainer(),n={};i?(n.domOverlay={root:i},n.optionalFeatures=["hit-test","dom-overlay"]):console.warn("No dom overlay root found, HTML overlays on top of screen-based AR will not work."),n.optionalFeatures.push("plane-detection"),n.optionalFeatures.push("anchors");let r=$l.createButton(e.context.renderer,n);return r.classList.add("webxr-ar-button"),r.classList.add("webxr-button"),Le.resetButtonStyles(r),(t?.registerClick??!0)&&r.addEventListener("click",e.onClickedARButton.bind(e)),r}static resetButtonStyles(e){!e||(e.style.position="",e.style.bottom="",e.style.left="")}endSession(){let e=this.context.renderer.xr.getSession();e&&e.end()}get Rig(){return this.rig||this.ensureRig(),this.rig}controllers=[];get Controllers(){return this.controllers}get LeftController(){return this.controllers.length>0&&this.controllers[0].input?.handedness==="left"?this.controllers[0]:this.controllers.length>1&&this.controllers[1].input?.handedness==="left"?this.controllers[1]:null}get RightController(){return this.controllers.length>0&&this.controllers[0].input?.handedness==="right"?this.controllers[0]:this.controllers.length>1&&this.controllers[1].input?.handedness==="right"?this.controllers[1]:null}get ARButton(){return this._arButton}get VRButton(){return this._vrButton}get IsInVR(){return this._isInVR}get IsInAR(){return this._isInAR}rig;isInit=!1;_requestedAR=!1;_requestedVR=!1;_isInAR=!1;_isInVR=!1;_arButton;_vrButton;webAR=null;awake(){if(this.defaultAvatar&&typeof this.defaultAvatar=="string"&&(this.defaultAvatar=et.getOrCreate(this.sourceId??"/",this.defaultAvatar,this.context)),!R.findObjectOfType(Sn,this.context)){let e=R.addNewComponent(this.gameObject,Sn,!1);e.webXR=this}this.webAR=new ar(this)}onEnable(){if(this.isInit||!this.enableAR&&!this.enableVR)return;this.isInit=!0,this.context.renderer.xr.enabled=!0;let e=Le.XRSupported,t,i,n=document.createElement("div");n.classList.add("webxr-buttons"),this.context.domElement.append(n),this.enableAR&&this.createARButton&&(t=Le.createARButton(this),this._arButton=t,n.appendChild(t)),this.createVRButton&&this.enableVR&&(i=Le.createVRButton(this),this._vrButton=i,n.appendChild(i)),setTimeout(()=>{Le.resetButtonStyles(i),Le.resetButtonStyles(t)},1e3)}_transformOrientation=new nc;get TransformOrientation(){return this._transformOrientation}_currentHeadPose=null;get HeadPose(){return this._currentHeadPose}onBeforeRender(e){if(!e)return;let t=this.context.renderer.xr.getSession();if(t){let i=e.getViewerPose(this.context.renderer.xr.getReferenceSpace());if(this._currentHeadPose=i,!i)return;let n=i?.transform;n&&this._transformOrientation.set(n.orientation.x,n.orientation.y,n.orientation.z,n.orientation.w);for(let r of this.controllers)r.onUpdate(t);this._isInAR&&this.webAR?.onUpdate(t,e)}Le._isInXr===!1&&t&&this.onEnterXR(t,e),Le.events.dispatchEvent({type:"xrUpdate",frame:e,xr:this.context.renderer.xr,rig:this.rig})}onClickedARButton(){this._isInAR||(this._requestedAR=!0,this._requestedVR=!1,this.captureStateBeforeXR())}onClickedVRButton(){if(!this._isInVR){if(this._requestedVR){this.onExitXR(null);return}this._requestedAR=!1,this._requestedVR=!0,this.captureStateBeforeXR(),this.ensureRig();for(let e=0;e<2;e++)Z.Create(this,e,this.gameObject,0);Le.events.dispatchEvent({type:"requestVRSession"})}}captureStateBeforeXR(){this.context.mainCamera&&(this._originalCameraPosition.copy(B(this.context.mainCamera)),this._originalCameraRotation.copy(me(this.context.mainCamera)),this._originalCameraParent=this.context.mainCamera.parent),this.Rig&&(this._originalXRRigParent=this.Rig.parent,this._originalXRRigPosition.copy(this.Rig.position),this._originalXRRigRotation.copy(this.Rig.quaternion))}ensureRig(){if(!this.rig){let e=R.findObjectOfType(sr,this.context);e?(this.rig=e.gameObject,this.rig.rotateY(Math.PI)):(this.rig=new s_,this.rig.rotateY(Math.PI),this.rig.name="XRRig",this.context.scene.add(this.rig))}}_originalCameraParent=null;_originalCameraPosition=new Lu;_originalCameraRotation=new nc;_originalXRRigParent=null;_originalXRRigPosition=new Lu;_originalXRRigRotation=new nc;onEnterXR(e,t){console.log("[XR] session begin",e),Le._isInXr=!0,this.ensureRig();let i=this.context.renderer.xr.getReferenceSpace();if(i&&this.rig){let a=t.getViewerPose(i)?.transform.orientation;if(a){let c=new nc(a.x,a.y,a.z,a.w),d=new r_().setFromQuaternion(c);this.rig.rotateY(d.y)}}let n=this.context.renderer.xr;if(this.context.mainCamera){let s=n.getCamera(this.context.mainCamera);for(let a of s.cameras)a.layers.enableAll();this.rig.add(this.context.mainCamera),this._requestedAR&&this.context.scene.add(this.rig)}let r=this._requestedAR?2:4;switch(Rt.Global.Set(r),r){case 2:this.context.xrSessionMode="immersive-ar",this._isInAR=!0,this.webAR?.onBegin(e);break;case 4:this.context.xrSessionMode="immersive-vr",this._isInVR=!0,this.onEnterVR(e);break}e.addEventListener("end",()=>{console.log("[XR] session end"),Le._isInXr=!1,this.onExitXR(e)}),this.onEnterXR_HandleMirrorWindow(e),Le.events.dispatchEvent({type:"xrStarted",session:e})}onExitXR(e){let t=this._isInAR;this._isInAR&&e&&this.webAR?.onEnd(e),this._isInAR=!1,this._isInVR=!1,this._requestedAR=!1,this._requestedVR=!1,this.context.xrSessionMode=void 0,this.xrMirrorWindow&&(this.xrMirrorWindow.close(),this.xrMirrorWindow=null),this.destroyControllers(),this.context.mainCamera&&(this._originalCameraParent?.add(this.context.mainCamera),ie(this.context.mainCamera,this._originalCameraPosition),Ze(this.context.mainCamera,this._originalCameraRotation),this.context.mainCamera.scale.set(1,1,1)),t&&(this._originalXRRigParent?.add(this.rig),this.rig.position.copy(this._originalXRRigPosition),this.rig.quaternion.copy(this._originalXRRigRotation)),Rt.Global.Set(17),Le.events.dispatchEvent({type:"xrStopped",session:e})}onEnterVR(e){}destroyControllers(){for(let e=this.controllers.length-1;e>=0;e-=1)this.controllers[e]?.destroy();this.controllers.length=0}xrMirrorWindow=null;onEnterXR_HandleMirrorWindow(e){!P("mirror")||setTimeout(()=>{if(!Le.IsInWebXR)return;let t=new URL(window.location.href);bo(t.searchParams,$o,1),bo(t.searchParams,"isMirror",1);let i=t.toString();this.xrMirrorWindow=window.open(i,"webxr sync","popup=yes"),this.xrMirrorWindow&&(this.xrMirrorWindow.onload=()=>{this.xrMirrorWindow&&(this.xrMirrorWindow.onbeforeunload=()=>{Le.IsInWebXR&&e.end()})})},1e3)}},V=Le;I(V,"_isInXr",!1),I(V,"events",new o_),v([y()],V.prototype,"enableVR",2),v([y()],V.prototype,"enableAR",2),v([y(et)],V.prototype,"defaultAvatar",2),v([y()],V.prototype,"handModelPath",2),v([y()],V.prototype,"createVRButton",2),v([y()],V.prototype,"createARButton",2);var es=class{get webxr(){return this._webxr}_webxr;reticle=null;reticleParent=null;hitTestSource=null;reticleActive=!0;previousBackground=null;previousEnvironment=null;sessionRoot=null;_previousParent=null;get context(){return this.webxr.context}constructor(e){this._webxr=e}arDomOverlay=null;arOverlayElement=null;noHitTestAvailable=!1;didPlaceARSessionRoot=!1;getAROverlayContainer(){this.arDomOverlay=this.webxr.context.domElement;let e=this.arDomOverlay;return e.getAROverlayContainer?this.arOverlayElement=e.getAROverlayContainer():this.arOverlayElement=this.arDomOverlay,this.arOverlayElement}setReticleActive(e){this.reticleActive=e}async onBegin(e){let t=this.webxr.context;this.reticleActive=!0,this.didPlaceARSessionRoot=!1,this.getAROverlayContainer();let i=navigator.userAgent?.includes("OculusBrowser")?0:1,n=i===1?4:2;for(let s=0;s<n;s++)Z.Create(this.webxr,s,this.webxr.gameObject,i);(!this.sessionRoot||this.sessionRoot.destroyed||!this.sessionRoot.activeAndEnabled)&&(this.sessionRoot=R.findObjectOfType(ft,t)),this.previousBackground=t.scene.background,this.previousEnvironment=t.scene.environment,t.scene.background=null,e.requestReferenceSpace("viewer").then(s=>{e.requestHitTestSource?.call(e,{space:s})?.then(a=>{this.hitTestSource=a}).catch(a=>{this.noHitTestAvailable=!0,console.warn("WebXR: Hit test not supported",a)})}),!this.reticle&&this.sessionRoot&&(this.reticle=new a_(new c_(.07,.09,32).rotateX(-Math.PI/2),new l_),this.reticle.name="AR Placement reticle",this.reticle.matrixAutoUpdate=!1,this.reticle.visible=!1,this.reticleParent=new Em,this.reticleParent.name="AR Reticle Parent",this.reticleParent.matrixAutoUpdate=!1,this.reticleParent.add(this.reticle),this.reticleParent.matrix.copy(this.sessionRoot.gameObject.matrixWorld),this.webxr.scene?(this.context.scene.add(this.reticleParent),this.context.scene.visible=!0):console.warn("Could not found WebXR Rig")),this._previousParent=this.webxr.gameObject,es.tempWebXRObject||(es.tempWebXRObject=new Em),this.context.scene.add(es.tempWebXRObject),R.addComponent(es.tempWebXRObject,this.webxr),this.sessionRoot?(this.sessionRoot.webAR=this,this.sessionRoot?.onBegin(e)):console.warn("No WebARSessionRoot found in scene");let r=this.context.domElement;r?.onEnterAR?.call(r,e,this.arOverlayElement),this.context.mainCameraComponent?.applyClearFlagsIfIsActiveCamera()}onEnd(e){this._previousParent&&(R.addComponent(this._previousParent,this.webxr),this._previousParent=null),this.hitTestSource=null;let t=this.webxr.context;t.scene.background=this.previousBackground,t.scene.environment=this.previousEnvironment,this.sessionRoot&&this.sessionRoot.onEnd(this.webxr.Rig,e);let i=this.context.domElement;i.onExitAR?.call(i,e),this.context.mainCameraComponent?.applyClearFlagsIfIsActiveCamera()}onUpdate(e,t){if(this.noHitTestAvailable===!0){if(this.reticle&&(this.reticle.visible=!1),!this.didPlaceARSessionRoot){this.didPlaceARSessionRoot=!0;let n=this.webxr.Rig,r=h_.clone();if(n){let s=new Lu(0,0,0).add(n.position).divideScalar(this.sessionRoot?.arScale??1);r.multiply(new Cm().makeTranslation(s.x,s.y,s.z))}this.sessionRoot?.placeAt(n,r)}return}if(!this.hitTestSource)return;let i=t.getHitTestResults(this.hitTestSource);if(i.length){let n=i[0],r=this.webxr.context.renderer.xr.getReferenceSpace();if(r){let s=n.getPose(r);if(this.sessionRoot){let a=this.sessionRoot.onUpdate(this.webxr.Rig,e,s);this.didPlaceARSessionRoot=a}if(this.reticle&&(this.reticle.visible=this.reticleActive,this.reticleActive&&s)){let a=s.transform.matrix;this.reticle.matrix.fromArray(a),this.webxr.Rig&&this.reticle.matrix.premultiply(this.webxr.Rig.matrix)}}}else this.sessionRoot?.onUpdate(this.webxr.Rig,e,null),this.reticle&&(this.reticle.visible=!1)}},ar=es;I(ar,"tempWebXRObject");var h_=new Cm().identity().makeTranslation(0,-.5,0);import{OrbitControls as f_}from"three/examples/jsm/controls/OrbitControls";import{Object3D as p_}from"three";var Pn=class extends M{constraintActive=!0;locked=!1;sources=[]};v([y(p_)],Pn.prototype,"sources",2);import*as ma from"three";var rc=P("freecam"),m_={LEFT:"",UP:"",RIGHT:"",BOTTOM:""},Fu,nt=class extends M{get controls(){return this._controls}get controllerObject(){return this._cameraObject}onStartInteraction(e){this.controls?.addEventListener("start",e)}autoRotate=!1;autoRotateSpeed=1;enableKeys=!0;enableDamping=!0;dampingFactor=.1;enableZoom=!0;minZoom=0;maxZoom=1/0;enablePan=!0;lookAtConstraint=null;lookAtConstraint01=1;middleClickToFocus=!0;doubleClickToFocus=!0;useSlerp=!0;debugLog=!1;targetLerpSpeed=5;_lookTargetPosition;_controls=null;_cameraObject=null;_lerpToTargetPosition=!1;_lerpCameraToTarget=!1;_cameraTargetPosition=null;_inputs=0;_enableTime=0;_startedListeningToKeyEvents=!1;awake(){this._lookTargetPosition=new ma.Vector3,this._startedListeningToKeyEvents=!1}onEnable(){this._enableTime=this.context.time.time;let t=R.getComponent(this.gameObject,ee)?.cam;this._controls||(console.assert(t!=null,"Missing camera",this),t&&(this._cameraObject=t),this._controls=new f_(t,this.context.renderer.domElement),Fu===void 0&&(Fu={...this._controls.keys})),this._controls&&(rc&&(this.enablePan=!0,this.enableZoom=!0,this.middleClickToFocus=!0,yo()&&(this.doubleClickToFocus=!0)),this._controls.enableDamping=this.enableDamping,this._controls.keys=this.enableKeys?Fu:m_,this._controls.autoRotate=this.autoRotate,this._controls.autoRotateSpeed=this.autoRotateSpeed,this._controls.enableZoom=this.enableZoom,t?.type==="PerspectiveCamera"?rc||(this._controls.minDistance=this.minZoom,this._controls.maxDistance=this.maxZoom):rc||(this._controls.minZoom=this.minZoom,this._controls.maxZoom=this.maxZoom),this._controls.dampingFactor=this.dampingFactor,this._controls.enablePan=this.enablePan,this._startedListeningToKeyEvents||(this._startedListeningToKeyEvents=!0,this._controls.listenToKeyEvents(window.document.body)))}onDisable(){this._controls&&(this._controls.enabled=!1,this._controls.autoRotate=!1)}onDestroy(){this._controls?.dispose()}start(){if(this._controls){let e=R.getComponent(this.gameObject,ee);if(e&&!this.setFromTargetPosition()){this.debugLog&&console.log("NO TARGET");let t=new ma.Vector3(0,0,-1).applyMatrix4(e.cam.matrixWorld);this.setTarget(t,!0)}}this.startCoroutine(this.startRaycastDelayed())}*startRaycastDelayed(){if(yield,!this.setFromTargetPosition()){let e=new be;e.screenPoint=new ma.Vector2(0,0),e.lineThreshold=.1;let t=this.context.physics.raycast(e);t.length>0&&this.setTarget(t[0].point,!0)}}onBeforeRender(){if(!this._controls)return;(this.context.input.getPointerDown(0)||this.context.input.getPointerDown(1)||this.context.input.getPointerDown(2))&&(this._inputs+=1),this._inputs>0&&(this.autoRotate=!1,this._controls.autoRotate=!1,this._lerpCameraToTarget=!1,this._lerpToTargetPosition=!1),this._inputs=0;let e=this.middleClickToFocus&&this.context.input.getPointerClicked(1);if(e||=this.doubleClickToFocus&&this.context.input.getPointerDoubleClicked(0)&&this.context.time.time-this._enableTime>.3,e?this.setTargetFromRaycast():(this.context.input.getPointerDown(0)||this.context.input.mouseWheelChanged)&&(this._lerpToTargetPosition=!1,this._lerpCameraToTarget=!1),this._lerpToTargetPosition||this._lerpCameraToTarget){let t=this.context.time.deltaTime*this.targetLerpSpeed;if(this._lerpCameraToTarget&&this._cameraTargetPosition&&this._cameraObject){if(this.useSlerp){let i=this._cameraObject?.position;Mp(i,this._cameraTargetPosition,t)}else this._cameraObject?.position.lerp(this._cameraTargetPosition,t);this._cameraObject.position.distanceTo(this._cameraTargetPosition)<1e-4&&(this._lerpCameraToTarget=!1)}this._lerpToTargetPosition&&(this.lerpTarget(this._lookTargetPosition,t),this._lookTargetPosition.distanceTo(this._controls.target)<1e-5&&(this._lerpToTargetPosition=!1))}!rc&&this.lookAtConstraint?.locked&&this.setFromTargetPosition(0,this.lookAtConstraint01),this._controls&&!this.context.isInXR&&(this.debugLog&&(this._controls.domElement=this.context.renderer.domElement),this._controls.enabled=!0,this._controls.update())}setCameraTarget(e,t=!1){e?(this._lerpCameraToTarget=!0,this._cameraTargetPosition=e.clone(),t&&this._cameraTargetPosition&&this.controllerObject?.position.copy(this._cameraTargetPosition)):this._lerpCameraToTarget=!1}setFromTargetPosition(e=0,t=1){if(!this._controls)return!1;let i=this.lookAtConstraint?.sources;if(i&&i.length>0){let n=i[e];if(n)return n.getWorldPosition(this._lookTargetPosition),this.lerpTarget(this._lookTargetPosition,t),!0}return!1}setTarget(e=null,t=!1){!this._controls||(e!==null&&this._lookTargetPosition.copy(e),t?this._controls.target.copy(this._lookTargetPosition):this._lerpToTargetPosition=!0)}lerpTarget(e,t){!this._controls||this._controls.target.lerp(e,t)}distanceToTarget(e){return this._controls?this._controls.target.distanceTo(e):-1}setTargetFromRaycast(){if(!this.controls)return;let e=this.context.physics.raycast();for(let t of e)if(t.distance>0&&R.isActiveInHierarchy(t.object)){if(this._lookTargetPosition.copy(t.point),this._lerpToTargetPosition=!0,this._cameraTargetPosition=null,this.context.mainCamera){this._lerpCameraToTarget=!0;let i=B(this.context.mainCamera);this._cameraTargetPosition=i.clone().sub(this.controls.target).add(this._lookTargetPosition),this._cameraObject?.parent?.worldToLocal(this._cameraTargetPosition)}break}}};v([y(Pn)],nt.prototype,"lookAtConstraint",2);var _i=class{used=!1;Use(){this.used=!0}StopPropagation(){this.event?.stopImmediatePropagation()}inputSource;object;isDown;isUp;isPressed;isClicked;event;constructor(e){this.event=e}};import{Object3D as b_}from"three";var v_=P("debugeventsystem"),Ni=class extends M{static createIfNoneExists(e){this.didSearchEventSystem||(this.didSearchEventSystem=!0,Ni.systems.length<=0&&Ni.systems.push(...R.findObjectsOfType(Ni,e)));for(let i of Ni.systems)if(i.context===e)return;let t=new b_;R.addNewComponent(t,Ni),e.scene.add(t)}static get systems(){let e=G.Current;return this._eventSystemMap.has(e)||this._eventSystemMap.set(e,[]),this._eventSystemMap.get(e)}static ensureUpdateMeshUI(e,t){xi.update(e,t)}static markUIDirty(e){xi.markDirty()}static get instance(){return this.systems[0]}orbitControl=null;orbitControlWasEnabled=!1;raycaster=[];constructor(){super(),Ni.systems.push(this)}onDestroy(){Ni.systems.splice(Ni.systems.indexOf(this),1)}start(){}register(e){e&&this.raycaster&&!this.raycaster.includes(e)&&this.raycaster?.push(e)}unregister(e){let t=this.raycaster?.indexOf(e);t!==void 0&&t!==-1&&this.raycaster?.splice(t,1)}_selectStartFn;_selectEndFn;_selectUpdateFn;onEnable(){let e=new Map;this._selectStartFn??=(i,n)=>{if(!n.grab)return;xi.resetLastSelected();let r=new _i;r.inputSource=i,r.isDown=i.selectionDown,r.isUp=i.selectionUp,r.isPressed=i.selectionPressed,r.isClicked=!1,e.set(i,n.grab),n.grab&&!this.handleEvents(n.grab,r)&&(n.grab=null)},this._selectEndFn??=(i,n)=>{if(!n.grab)return;let r=new _i;r.inputSource=i,r.isDown=i.selectionDown,r.isUp=i.selectionUp,r.isPressed=i.selectionPressed,r.isClicked=i.selectionClick,this.handleEvents(n.grab,r);let s=e.get(i);if(e.set(i,null),s)for(let a=0;a<this.raisedPointerDownEvents.length;a++){let c=this.raisedPointerDownEvents[a];this.raisedPointerDownObjects[a]===s&&c&&(c.onPointerUp?.call(c,r),this.raisedPointerDownEvents.splice(a,1),this.raisedPointerDownObjects.splice(a,1),a--)}};let t=new be;this._selectUpdateFn??=i=>{t.ray=i.getRay();let n=this.performRaycast(t);if(!n)return;let r=new _i;r.inputSource=i,this.handleIntersections(n,r)},Z.addEventListener("select-start",this._selectStartFn),Z.addEventListener("select-end",this._selectEndFn),Z.addEventListener("update",this._selectUpdateFn),this.context.pre_update_callbacks.push(this.onBeforeUpdate.bind(this)),this.context.input.addEventListener("pointerdown",this.onPointerDown.bind(this))}onDisable(){Z.removeEventListener("select-start",this._selectStartFn),Z.removeEventListener("select-end",this._selectEndFn),Z.removeEventListener("update",this._selectUpdateFn)}onPointerDown(){this.onBeforeUpdate()}lastPointerEvent=null;objectsHoveredThisFrame=[];objectsHoveredLastFrame=[];raisedPointerDownEvents=[];raisedPointerDownObjects=[];_didMove=!1;onBeforeUpdate(){if(this.objectsHoveredThisFrame.length=0,this.resetMeshUIStates(),V.IsInWebXR||this.context.input.isKeyPressed("Alt"))return;if(!this._didMove){let r=this.context.input.getPointerPositionRC(0);if(r&&r.x===0&&r.y===0)return;this._didMove=!0}let e=this.performRaycast(null),t=new _i(this.context.input.getPointerEvent(0));if(t.inputSource=this.context.input,t.isClicked=this.context.input.mouseClick,t.isDown=this.context.input.mouseDown,t.isUp=this.context.input.mouseUp,t.isPressed=this.context.input.mousePressed,this.lastPointerEvent=t,!e)return;let i=null,n=null;this.context.input.mouseDown&&this.currentActiveMeshUIComponents.length>0&&this.context.mainCameraComponent&&(i=R.getComponent(this.context.mainCameraComponent.gameObject,nt)??null,i&&(n=i.enabled,i.enabled=!1)),this.handleIntersections(e,t),i&&(this.orbitControl=i,this.orbitControl?.enabled?(this.orbitControlWasEnabled=this.orbitControl.enabled,this.orbitControl.enabled=!1):this.orbitControl&&!this.context.input.mousePressed&&(this.orbitControl.enabled=this.orbitControlWasEnabled,this.orbitControl=null))}_tempComponentsArray=[];onBeforeRender(){if(this.lastPointerEvent)this.lastPointerEvent.used=!1;else return;if(this.lastPointerEvent.isUp){for(let t of this.raisedPointerDownEvents)t.onPointerUp&&t.onPointerUp(this.lastPointerEvent);this.raisedPointerDownEvents.length=0,this.raisedPointerDownObjects.length=0}for(let t of this.objectsHoveredLastFrame)if(this.objectsHoveredThisFrame.indexOf(t)<0){this._tempComponentsArray.length=0;let i=R.getComponentsInParent(t,M,this._tempComponentsArray);this.lastPointerEvent.object=t;for(let n=0;n<i.length;n++){let r=i[n];if(!r.gameObject||r.destroyed)continue;let s=r;s.onPointerExit&&s.onPointerExit(this.lastPointerEvent)}}let e=this.objectsHoveredLastFrame;this.objectsHoveredLastFrame=this.objectsHoveredThisFrame,this.objectsHoveredThisFrame=e}_sortedHits=[];performRaycast(e){if(!this.raycaster)return null;this._sortedHits.length=0;for(let t of this.raycaster){if(!t.activeAndEnabled)continue;let i=t.performRaycast(e);i&&i.length>0&&this._sortedHits.push(...i)}return this._sortedHits.sort((t,i)=>t.distance-i.distance),this._sortedHits}handleIntersections(e,t){if(!e||e.length<=0)return!1;e=this.sortCandidates(e);for(let i of e){let{object:n}=i;if(this.handleEvents(n,t))return!0}return!1}_sortingBuffer=[];_noDepthTestingResults=[];sortCandidates(e){this._sortingBuffer.length=0,this._noDepthTestingResults.length=0;for(let t=0;t<e.length;t++){let i=e[t],n=i.object;if(n.material&&n.material.depthTest===!1){this._noDepthTestingResults.push(i);continue}this._sortingBuffer.push(i)}for(let t of this._sortingBuffer)this._noDepthTestingResults.push(t);return this._noDepthTestingResults}handleEventsArray=[];out={};handleEvents(e,t){if(!this.testIsVisible(e))return t.isClicked&&v_&&console.log("not allowed",e),!1;let i=e;t.object=e,this.lastPointerEvent=t;let n=e.parent,r=!1,s=t.isClicked??!1,a=null;if(n&&n.isUI){let c=(t.isPressed||t.isClicked)??!1;if(n[mt]){let d=n[mt].gameObject;if(d){if(!wi.isInteractable(d,this.out))return this.out.canvasGroup?.interactable??!1;a=this.out.canvasGroup??null;let u=this.handleMeshUIIntersection(e,c);e=d,r=!0}}if(!r&&this.handleMeshUiObjectWithoutShadowDom(n,c))return!0}if(this.objectsHoveredThisFrame.push(e),a===null||a.interactable){let c=this.objectsHoveredLastFrame.indexOf(e)>=0;this.handleEventsArray.length=0;let d=R.getComponentsInParent(e,M,this.handleEventsArray);for(let l=0;l<d.length;l++){if(t.used)return!0;if(d[l].destroyed)continue;let u=d[l];u.interactable!==!1&&(u.onPointerEnter&&(c||u.onPointerEnter(t)),t.isDown&&u.onPointerDown&&!this.raisedPointerDownEvents.includes(u)&&(u.onPointerDown(t),this.raisedPointerDownEvents.push(u),this.raisedPointerDownObjects.push(i)),t.isUp&&u.onPointerUp&&u.onPointerUp(t),t.isClicked&&u.onPointerClick&&u.onPointerClick(t))}}return!0}handleMeshUiObjectWithoutShadowDom(e,t){return!e||!e.isUI?!0:this.handleMeshUIIntersection(e,t)}currentActiveMeshUIComponents=[];handleMeshUIIntersection(e,t){let i=xi.updateState(e,t);return i&&this.currentActiveMeshUIComponents.push(i),i!==null}resetMeshUIStates(){if(this.context.input.getPointerPressedCount()>0&&xi.resetLastSelected(),!(!this.currentActiveMeshUIComponents||this.currentActiveMeshUIComponents.length<=0)){for(let e=0;e<this.currentActiveMeshUIComponents.length;e++){let t=this.currentActiveMeshUIComponents[e];xi.resetState(t)}this.currentActiveMeshUIComponents.length=0}}testIsVisible(e){return e?R.isActiveSelf(e)?this.testIsVisible(e.parent):!1:!0}},Ye=Ni;I(Ye,"_eventSystemMap",new Map),I(Ye,"didSearchEventSystem",!1);var xi=class{static markDirty(){this.needsUpdate=!0}static update(e,t){for(let i of this.lastUpdateFrame)if(i.context===t){if(t.time.frameCount===i.frame)return;i.frame=t.time.frameCount,(this.needsUpdate||t.time.frameCount<30)&&(this.needsUpdate=!1,e.update());return}this.lastUpdateFrame=[{context:t,frame:t.time.frameCount}],e.update()}static updateState(e,t){let i=null;if(e&&(i=this.findBlockInParent(e),i&&i!==this.lastSelected)){if(i.interactable===!1)return null;t?(this.lastSelected=i,i.states.pressed&&i.setState("pressed")):i.states.hovered&&i.setState("hovered"),this.needsUpdate=!0}return i}static resetLastSelected(){let e=this.lastSelected;!e||(this.lastSelected=null,this.resetState(e))}static resetState(e){if(!e)return;e.interactable===!1?e.states.disabled&&e.setState("disabled"):e===this.lastSelected&&e.states.selected?e.setState("selected"):e.setState("normal"),this.needsUpdate=!0}static findBlockInParent(e){return e?e.isBlock&&Object.keys(e.states).length>0?e:this.findBlockInParent(e.parent):null}};I(xi,"lastSelected",null),I(xi,"lastUpdateFrame",[]),I(xi,"needsUpdate",!1);import{AxesHelper as y_}from"three";var ts="./include";oc.Block.prototype.interactable={get(){return this.interactive},set(o){this.interactable=o}};var mt=Symbol("shadowDomOwner"),Ve=class extends M{isRoot(){return this.Root?.gameObject===this.gameObject}markDirty(){Ye.markUIDirty(this.context)}shadowComponent=null;_controlsChildLayout=!0;get controlsChildLayout(){return this._controlsChildLayout}set controlsChildLayout(e){this._controlsChildLayout=e,this.shadowComponent&&(this.shadowComponent.autoLayout=e)}_root=void 0;get Root(){return this._root===void 0&&(this._root=R.getComponentInParent(this.gameObject,On)),this._root}_parentComponent=void 0;onEnable(){super.onEnable()}addShadowComponent(e,t){this.removeShadowComponent();let i=this.isRoot()?this.gameObject:this.gameObject.parent;if(this._parentComponent=R.getComponentInParent(i,Ve),!this._parentComponent){console.warn(`Component "${this.name}" doesn't have a UI parent anywhere. Do you have a UI element outside a Canvas?`,this);return}e.name=this.name+" ("+(this.constructor.name??"UI")+")",e.autoLayout=this._parentComponent.controlsChildLayout,e[mt]=this,e.traverse(r=>{r[mt]===void 0&&(r[mt]=this)});let n=!1;if(this.Root?.gameObject===this.gameObject)this.gameObject.add(e);else{let r=this._parentComponent.shadowComponent;r&&(r?.add(e),n=!0)}this.shadowComponent=e,t&&t.shadowComponent&&this.shadowComponent&&t.shadowComponent.add(this.shadowComponent),Ai&&e.add(new y_(.5)),this.onAfterAddedToScene(),n&&oc.update()}set(e){}traverseOwnedShadowComponents(e,t,i){if(!!e&&e[mt]===t){i(e);for(let n of e.children)this.traverseOwnedShadowComponents(n,t,i)}}removeShadowComponent(){this.shadowComponent&&this.shadowComponent.removeFromParent()}onAfterAddedToScene(){}setInteractable(e){this.shadowComponent&&(this.shadowComponent.interactable=e)}},On=class extends Ve{awake(){super.awake()}};var wi=class{static getObject(e){let t=e[mt];return t&&(t.isComponent===!0?e=t.gameObject:e=t),e}static isInteractable(e,t){if(e==null||!e.visible||(e=this.getObject(e),!e.visible))return!1;let i=this.tryFindCanvasGroup(e);if(i?.isCanvasGroup===!0&&(t&&(t.canvasGroup=i),i.blocksRaycasts===!1||i.interactable===!1))return!1;let n=si(e,r=>{if(r.isGraphic===!0)return r},!1);return t&&n?.isGraphic===!0&&(t.graphic=n),n?.raycastTarget!==!1}static tryFindCanvasGroup(e){if(!e)return null;let t=si(e,i=>{let n=i;if(n.blocksRaycasts!==void 0&&n.interactable!==void 0)return n},!1);return t!==void 0?t:this.tryFindCanvasGroup(e.parent)}};var ga=P("debugwebxrcontroller");var Yr=class extends M{},je=class extends M{static CreateRaycastLine(){let e=new C_(this.geometry),t=e.material;return t.color=this.raycastColor,e.layers.set(2),e.name="line",e.scale.z=1,e}static CreateRaycastHitPoint(){let e=new P_(.5,22,22),t=new R_({color:this.raycastColor}),i=new T_(e,t);return i.visible=!1,i.layers.set(2),i}static Create(e,t,i,n){let r=i?R.addNewComponent(i,je,!1):new je;r.webXR=e,r.index=t,r.type=n;let s=e.context;r.controller=s.renderer.xr.getController(t),r.controllerGrip=s.renderer.xr.getControllerGrip(t),r.controllerModel=this.Factory.createControllerModel(r.controller),r.controllerGrip.add(r.controllerModel),r.hand=s.renderer.xr.getHand(t);let a=new A_;yn(a,s),r.webXR.handModelPath&&r.webXR.handModelPath!==""?a.setPath(Mi(e.sourceId,r.webXR.handModelPath)):a.setPath("https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles/generic-hand/");let c=new k_(r.hand,a);return r.hand.add(c),r.hand.traverse(d=>d.layers.set(2)),r.handPointerModel=new M_(r.hand,r.controller),r.controller.addEventListener("connected",d=>{r.setControllerLayers(r.controllerModel,2),r.setControllerLayers(r.controllerGrip,2),r.setControllerLayers(r.hand,2),setTimeout(()=>{r.setControllerLayers(r.controllerModel,2),r.setControllerLayers(r.controllerGrip,2),r.setControllerLayers(r.hand,2)},1e3)}),r.hand.addEventListener("connected",d=>{if(d.data.hand){e.Rig&&e.Rig.add(r.hand),r.type=0,r.handPointerModel.traverse(h=>h.layers.set(2)),r.handPointerModel.pointerObject?.traverse(h=>h.layers.set(2));let u=r.hand.joints;if(u)for(let h of Object.keys(u)){let g=u[h];g.parent||r.hand.add(g)}}}),r}static addEventListener(e,t){let i=this.eventSubs[e]??[];i.push(t),this.eventSubs[e]=i}static removeEventListener(e,t){if(!t)return;let i=this.eventSubs[e]??[],n=i.indexOf(t);n>=0&&i.splice(n,1),this.eventSubs[e]=i}webXR;index=-1;controllerModel;controller;controllerGrip;hand;handPointerModel;grabbed=null;input=null;type=0;showRaycastLine=!0;get isUsingHands(){let e=this.input?.hand;return e!=null}get wrist(){if(!this.hand)return null;let e=this.hand.joints;return e?e.wrist:null}_wristQuaternion=null;getWristQuaternion(){let e=this.wrist;return e?(this._wristQuaternion||(this._wristQuaternion=new sc),me(e).multiply(this._wristQuaternion.setFromEuler(new w_(-Math.PI/4,0,0)))):null}movementVector=new Ei;worldRot=new sc;joystick=new O_;didRotate=!1;didTeleport=!1;didChangeScale=!1;lastHit=null;raycastLine=null;_raycastHitPoint=null;_connnectedCallback=null;_disconnectedCallback=null;_selectStartEvt=null;_selectEndEvt=null;get selectionDown(){return this._selectionPressed&&!this._selectionPressedLastFrame}get selectionUp(){return!this._selectionPressed&&this._selectionPressedLastFrame}get selectionPressed(){return this._selectionPressed}get selectionClick(){return this._selectionEndTime-this._selectionStartTime<.3}get raycastHitPoint(){return this._raycastHitPoint}_selectionPressed=!1;_selectionPressedLastFrame=!1;_selectionStartTime=0;_selectionEndTime=0;get useSmoothing(){return this._useSmoothing}_useSmoothing=!0;awake(){if(!this.controller){console.warn("Missing Controller!!!",this);return}this._connnectedCallback=this.onSourceConnected.bind(this),this._disconnectedCallback=this.onSourceDisconnected.bind(this),this._selectStartEvt=this.onSelectStart.bind(this),this._selectEndEvt=this.onSelectEnd.bind(this),this.type===1&&(this.controllerGrip.addEventListener("connected",this._connnectedCallback),this.controllerGrip.addEventListener("disconnected",this._disconnectedCallback),this.controller.addEventListener("selectstart",this._selectStartEvt),this.controller.addEventListener("selectend",this._selectEndEvt)),this.type===0&&(this.controller.addEventListener("selectstart",this._selectStartEvt),this.controller.addEventListener("selectend",this._selectEndEvt))}onDestroy(){this.type===1&&(this.controllerGrip.removeEventListener("connected",this._connnectedCallback),this.controllerGrip.removeEventListener("disconnected",this._disconnectedCallback),this.controller.removeEventListener("selectstart",this._selectStartEvt),this.controller.removeEventListener("selectend",this._selectEndEvt)),this.type===0&&(this.controller.removeEventListener("selectstart",this._selectStartEvt),this.controller.removeEventListener("selectend",this._selectEndEvt)),this.hand?.clear(),this.controllerGrip?.clear(),this.controller?.clear()}onEnable(){this.hand&&(this.hand.name="Hand"),this.controllerGrip&&(this.controllerGrip.name="ControllerGrip"),this.controller&&(this.controller.name="Controller"),this.raycastLine&&(this.raycastLine.name="RaycastLine;"),this.webXR.Controllers.indexOf(this)<0&&this.webXR.Controllers.push(this),this.raycastLine||(this.raycastLine=je.CreateRaycastLine()),this._raycastHitPoint||(this._raycastHitPoint=je.CreateRaycastHitPoint()),this.webXR.Rig?.add(this.hand),this.webXR.Rig?.add(this.controllerGrip),this.webXR.Rig?.add(this.controller),this.webXR.Rig?.add(this.raycastLine),this.raycastLine?.add(this._raycastHitPoint),this._raycastHitPoint.visible=!1,this.hand.add(this.handPointerModel),ga&&console.log("ADDED TO RIG",this.webXR.Rig)}onDisable(){this.hand?.removeFromParent(),this.controllerGrip?.removeFromParent(),this.controller?.removeFromParent(),this.raycastLine?.removeFromParent(),this._raycastHitPoint?.removeFromParent();let e=this.webXR.Controllers.indexOf(this);e>=0&&this.webXR.Controllers.splice(e,1)}_isConnected=!1;onSourceConnected(e){if(this._isConnected){console.warn("Received connected event for controller that is already connected",this.index,e);return}this._isConnected=!0,this.input=e.data,this.type===1&&(this.onSelectStart(),this.createPointerEvent("down"))}onSourceDisconnected(e){if(!this._isConnected){console.warn("Received discnnected event for controller that is not connected",e);return}this._isConnected=!1,this.type===1&&(this.onSelectEnd(),this.createPointerEvent("up")),this.input=null}createPointerEvent(e){switch(e){case"down":this.context.input.createPointerDown({clientX:0,clientY:0,button:this.index,pointerType:"touch"});break;case"move":break;case"up":this.context.input.createPointerUp({clientX:0,clientY:0,button:this.index,pointerType:"touch"});break}}rayRotation=new sc;update(){this.context.time.frameCount%60===0&&(this.setControllerLayers(this.controller,2),this.setControllerLayers(this.controllerGrip,2),this.setControllerLayers(this.hand,2));let e=je.eventSubs["update"];if(e&&e.length>0)for(let n of e)n(this);let t=1;this.type===0?t=this.context.time.deltaTime/.1:this.isUsingHands&&this.handPointerModel.pinched&&(t=this.context.time.deltaTime/.3),this.rayRotation.slerp(me(this.controller),this.useSmoothing?t:1);let i=B(this.controller);if(this.isUsingHands&&this.handPointerModel.cursorObject&&(this.handPointerModel.cursorObject.visible=!1),this.raycastLine){let n=this.showRaycastLine&&this.context.isInVR;if(this.type===1)this.raycastLine.visible=!1;else if(this.isUsingHands){this.raycastLine.visible=!this.grabbed&&n,ie(this.raycastLine,i);let r=this.hand.joints;if(r&&r.wrist&&this.grabbed&&this.grabbed.isCloseGrab){let a=this.getWristQuaternion();a&&this.rayRotation.copy(a)}Ze(this.raycastLine,this.rayRotation)}else this.raycastLine.visible=n,Ze(this.raycastLine,this.rayRotation),ie(this.raycastLine,i)}this.lastHit=this.updateLastHit(),this.grabbed&&this.grabbed.update(),this._selectionPressedLastFrame=this._selectionPressed,this.selectStartCallback&&this.selectStartCallback()}_pinchStartTime=void 0;onUpdate(e){if(this.lastHit=null,!e||e.inputSources.length<=this.index){this.input=null;return}if(this.type===0&&(this.input=e.inputSources[this.index]),!this.input)return;let t=this.webXR.Rig;if(!t)return;this._didNotEndSelection&&!this.handPointerModel.pinched&&(this._didNotEndSelection=!1,this.onSelectEnd()),this.updateStick(this.input);let i=this.input?.gamepad?.buttons;switch(this.input.handedness){case"left":let n=3*je.MovementSpeedFactor,r=2,s=H.clamp01(this.joystick.length()*2),a=this.joystick.x>0?1:-1,c=Math.pow(this.joystick.x,r);c*=a,c*=s;let d=this.joystick.y>0?1:-1,l=Math.pow(this.joystick.y,r);l*=d,c*=s,t.getWorldQuaternion(this.worldRot),this.movementVector.set(c,0,l),this.movementVector.applyQuaternion(this.webXR.TransformOrientation),this.movementVector.y=0,this.movementVector.applyQuaternion(this.worldRot),this.movementVector.multiplyScalar(n*this.context.time.deltaTime),t.position.add(this.movementVector),this.isUsingHands&&this.runTeleport(t,i);break;case"right":let u=this.joystick.x,h=Math.abs(u);if(h<.4)this.didRotate=!1;else if(h>.5&&!this.didRotate){let g=u>0?-1:1;t.rotateY(H.toRadians(30*g)),this.didRotate=!0}this.runTeleport(t,i);break}}runTeleport(e,t){let i=-this.joystick.y;if(this.hand?.visible&&!this.grabbed){let a=this.handPointerModel.isPinched();a&&this._pinchStartTime===void 0&&(this._pinchStartTime=this.context.time.time),a&&this._pinchStartTime&&this.context.time.time-this._pinchStartTime>.8&&(i=this.handPointerModel.isPinched()?1:0),a||(this._pinchStartTime=void 0)}else this._pinchStartTime=void 0;let n=i>.5&&this.webXR.IsInVR,r=this.webXR.Rig?this.webXR.Rig?.scale?.x<.999:!1,s=null;if(t&&this.input&&!this.input.hand)for(let a=0;a<t.length;a++){let c=t[a];if(a===4)if(c.pressed&&!this.didChangeScale&&this.webXR.IsInVR){this.didChangeScale=!0;let d=this.webXR.Rig;if(d)if(r){r=!1,d.scale.set(1,1,1),s=1,je.MovementSpeedFactor=1;let l=this.context.mainCamera;je.PreviousCameraFarDistance&&(l.far=je.PreviousCameraFarDistance)}else{r=!0,n=!0,s=.1,je.MovementSpeedFactor=s*2;let l=this.context.mainCamera;je.PreviousCameraFarDistance=l.far,l.far/=s}}else c.pressed||(this.didChangeScale=!1)}if(n){if(!this.didTeleport){let a=this.raycast();if(this.didTeleport=!0,a&&a.length>0){let c=a[0];if(r||this.isValidTeleportTarget(c.object)){let d=c.point;ie(e,d)}}}}else i<.1&&(this.didTeleport=!1);s!==null&&(e.scale.set(s,s,s),e.updateMatrixWorld())}isValidTeleportTarget(e){return R.getComponentInParent(e,Yr)!=null}updateStick(e){!e||!e.gamepad||e.gamepad.axes?.length<4||(this.joystick.x=e.gamepad.axes[2],this.joystick.y=e.gamepad.axes[3])}updateLastHit(){let e=this.raycast(),t=e?e[0]:null;this.lastHit=t;let i=1;if(this.webXR.Rig&&(i/=this.webXR.Rig.scale.x),this.raycastLine){this.raycastLine.scale.z=i*(this.lastHit?.distance??9999);let n=this.raycastLine.material;t!=null?n.color=je.raycastColor:n.color=je.raycastNoHitColor}if(this._raycastHitPoint){if(this.lastHit!=null){this._raycastHitPoint.position.z=-1;let n=H.clamp(this.lastHit.distance*.01*i,.015,.1);this._raycastHitPoint.scale.set(n,n,n)}this._raycastHitPoint.visible=this.lastHit!==null&&this.lastHit!==void 0}return t}onSelectStart(){!this.context.connection.allowEditing||(this.selectStartCallback=()=>this.onHandleSelectStart())}selectStartCallback=null;lastSelectStartObject=null;onHandleSelectStart(){this.selectStartCallback=null,this._selectionPressed=!0,this._selectionStartTime=this.context.time.time,this._selectionEndTime=1e3;let e=null,t=!1;if(this.isUsingHands?(e=this.overlap(),e.length<=0?(e=this.raycast(),t=!1):t=!0):e=this.raycast(),ga&&console.log("onHandleSelectStart","close grab? "+t,"intersections",e),e&&e.length>0)for(let i of e){let n=i.object;this.lastSelectStartObject=n;let r={selected:n,grab:n},s=je.eventSubs["select-start"];if(s&&s.length>0)for(let a of s)a(this,r);r.grab!==n&&ga&&console.log("Grabbed object changed","original",n,"new",r.grab),r.grab&&(this.grabbed=gt.TryTake(this,r.grab,i,t));break}else{let i=je.eventSubs["select-start"],n={selected:null,grab:null};if(i&&i.length>0)for(let r of i)r(this,n)}}_didNotEndSelection=!1;onSelectEnd(){if(this.isUsingHands&&this.handPointerModel.pinched){this._didNotEndSelection=!0;return}if(!this._selectionPressed)return;this.selectStartCallback=null,this._selectionPressed=!1,this._selectionEndTime=this.context.time.time;let e={grab:this.grabbed?.selected??this.lastSelectStartObject},t=je.eventSubs["select-end"];if(t&&t.length>0)for(let i of t)i(this,e);this.grabbed&&(this.grabbed.free(),this.grabbed=null)}testIsVisible(e){return!(!e||R.isActiveInHierarchy(e)===!1||wi.isInteractable(e)===!1)}setControllerLayers(e,t){if(!!e&&(e.layers.set(t),e.children))for(let i of e.children)this.grabbed?.selected===i||this.grabbed?.selectedMesh===i||this.setControllerLayers(i,t)}getRay(){let e=new S_;return e.origin.copy(B(this.controller)),e.direction.set(0,0,-1).applyQuaternion(this.rayRotation),e}closeGrabBoundingBoxHelper;overlap(){let e=this.isUsingHands&&this.handPointerModel?this.handPointerModel.pointerObject:this.controllerGrip;if(ga&&(!this.closeGrabBoundingBoxHelper&&e&&(this.closeGrabBoundingBoxHelper=new __(e,16776960),this.scene.add(this.closeGrabBoundingBoxHelper)),this.closeGrabBoundingBoxHelper&&e&&this.closeGrabBoundingBoxHelper.setFromObject(e)),!e)return new Array;let t=B(e).clone();return this.context.physics.sphereOverlap(t,.02)}raycast(){let e=new be;e.layerMask=new E_,e.layerMask.set(0),e.layerMask.disable(2),e.ray=this.getRay();let t=this.context.physics.raycast(e);for(let i=0;i<t.length;i++){let n=t[i],r=n.object;if(!this.testIsVisible(r)){t.splice(i,1),i--;continue}n.object=wi.getObject(r);break}return t}},Z=je;I(Z,"Factory",new I_),I(Z,"raycastColor",new Rm(.9,.3,.3)),I(Z,"raycastNoHitColor",new Rm(.6,.6,.6)),I(Z,"geometry",new x_().setFromPoints([new Ei(0,0,0),new Ei(0,0,-1)])),I(Z,"handModels",{}),I(Z,"eventSubs",{}),I(Z,"PreviousCameraFarDistance"),I(Z,"MovementSpeedFactor",1);var rt=class{static AddEventListener(e,t){return rt.Events[e]||(rt.Events[e]=[]),rt.Events[e].push(t),t}static RemoveEventListener(e,t){if(!t||!rt.Events[e])return;let i=rt.Events[e].indexOf(t);i>=0&&rt.Events[e].splice(i,1)}static Register(e){this.Current.find(t=>t===e)||this.Current.push(e)}static Remove(e){let t=this.Current.indexOf(e);t>=0&&this.Current.splice(t,1)}static TryTake(e,t,i,n){let r=R.getComponentInParent(t,Gt);if(r)t=r.gameObject;else return ga&&console.warn("Prevented taking object that is not interactable",t),null;let s=t,a=R.getComponentInParent(t,St);a&&(a.requestOwnership(),s=a.gameObject);for(let d of this.Current)if(d.selected===s)return d.controller===e||(d.free(),d.Take(e,s,t,a,r,i,n)),d;let c=new rt;return c.Take(e,s,t,a,r,i,n),c}sync=null;selected=null;selectedParent=null;selectedMesh=null;controller=null;grabTime=0;grabUUID="";isCloseGrab=!1;originalMaterial=null;usageMarker=null;rigidbodies=null;didReparent=!1;grabDistance=0;interactable=null;positionSource=null;Take(e,t,i,n,r,s,a){if(console.assert(t!==null,"Expected object to be taken but was",t),e.isUsingHands?this.positionSource=a?e.wrist:e.controller:this.positionSource=e.controller,!this.positionSource)return console.warn("No position source"),this;let c={controller:e,take:t,hit:i,sync:n,interactable:r};rt.Events.WillTake?.forEach(g=>g(this,c));let d=i;d?.material&&(this.originalMaterial=d.material,Array.isArray(d.material)||(d.material=d.material.clone(),d.material&&d.material.emissive&&(d.material.emissive.b=.2))),this.selected=t,this.selectedParent||(this.selectedParent=t.parent),this.selectedMesh=d,this.controller=e,this.interactable=r,this.isCloseGrab=a,this.didReparent=!1,this.sync=n,this.grabTime=e.context.time.time,this.grabUUID=Date.now().toString(),this.usageMarker=R.addNewComponent(this.selected,Vt),this.rigidbodies=R.getComponentsInChildren(this.selected,J),B(this.positionSource,this.lastControllerWorldPos);let l=()=>a?this.lastControllerWorldPos.clone():s.point.clone();this.grabDistance=l().distanceTo(this.lastControllerWorldPos),this.totalChangeAlongDirection=0,this.localPositionOffsetToGrab=this.selected.worldToLocal(l());let u=e.isUsingHands&&a?this.controller.getWristQuaternion().clone():e.rayRotation.clone();me(this.selected,this.localQuaternionToGrab).premultiply(u.invert());let h=this.controller.webXR.Rig;return h&&this.rigPositionLastFrame.copy(B(h)),ye.Add(e.context,this.selected),rt.Register(this),this.sync&&(this.sync.fastMode=!0),rt.Events.DidTake?.forEach(g=>g(this,c)),this}free(){if(!this.selected)return;let e={controller:this.controller,take:this.selected,hit:this.selected,sync:this.sync,interactable:null};rt.Events.WillFree?.forEach(n=>n(this,e)),ye.Remove(this.controller.context,this.selected),rt.Remove(this),this.sync&&(this.sync.fastMode=!1);let t=this.selectedMesh;t&&this.originalMaterial&&t.material&&(t.material=this.originalMaterial);let i=this.selected;if(this.didReparent&&i.parent){let n=this.selectedParent;n?n.attach(i):this.controller?.context.scene.attach(i)}if(this.usageMarker?.destroy(),this.controller&&(this.controller.grabbed=null),this.selected=null,this.selectedParent=null,this.selectedMesh=null,this.sync=null,this.rigidbodies)for(let n of this.rigidbodies)n.wakeUp(),n.setVelocity(n.smoothedVelocity);this.rigidbodies=null,this.localPositionOffsetToGrab=null,this.quaternionLerp=null,rt.Events.DidFree?.forEach(n=>n(this,e))}grabPoint=new Ei;localPositionOffsetToGrab=null;localPositionOffsetToGrab_worldSpace=new Ei;localQuaternionToGrab=new sc(0,0,0,1);targetDir=null;quaternionLerp=null;controllerDir=new Ei;controllerWorldPos=new Ei;lastControllerWorldPos=new Ei;controllerPosDelta=new Ei;totalChangeAlongDirection=0;rigPositionLastFrame=new Ei;controllerMovementSinceLastFrame(){if(!this.positionSource||!this.controller)return 0;this.controllerDir.set(0,0,-1),this.controllerDir.applyQuaternion(this.controller.rayRotation),B(this.positionSource,this.controllerWorldPos),this.controllerPosDelta.copy(this.controllerWorldPos),this.controllerPosDelta.sub(this.lastControllerWorldPos),this.lastControllerWorldPos.copy(this.controllerWorldPos);let e=this.controller.webXR.Rig;if(e){let i=B(e),n=this.rigPositionLastFrame.sub(i);this.controllerPosDelta.add(n),this.rigPositionLastFrame.copy(i)}return this.controllerDir.dot(this.controllerPosDelta)}update(){if(this.rigidbodies)for(let e of this.rigidbodies)e.resetVelocities();if(this.sync&&this.controller&&this.controller.context.connection.isInRoom&&this.controller.context.time.time-this.grabTime>3&&this.sync.hasOwnership()===!1&&(console.log("no ownership, will leave",this.sync.guid),this.free()),!(this.interactable&&!this.interactable.canGrab)){if(!this.didReparent&&this.selected&&this.controller){let e=this.controller.webXR.Rig?.scale.x??1;this.totalChangeAlongDirection+=this.controllerMovementSinceLastFrame();let t=1;this.controller.type===0&&(t=Math.max(0,1+this.totalChangeAlongDirection*2/e),t=t*t*t),this.grabDistance/e<.8&&(t=1),this.targetDir||(this.targetDir=new Ei),this.targetDir.set(0,0,-this.grabDistance*t);let i=this.targetDir.applyQuaternion(this.controller.rayRotation).add(this.controllerWorldPos),n=this.controller.rayRotation.clone().multiplyQuaternions(this.controller.rayRotation,this.localQuaternionToGrab);this.quaternionLerp||(this.quaternionLerp=n.clone()),this.quaternionLerp.slerp(n,this.controller.useSmoothing?this.controller.context.time.deltaTime/.03:1),Ze(this.selected,this.quaternionLerp),this.selected.updateWorldMatrix(!1,!1),this.grabPoint.copy(i),this.localPositionOffsetToGrab&&(this.localPositionOffsetToGrab_worldSpace.copy(this.localPositionOffsetToGrab),this.selected.localToWorld(this.localPositionOffsetToGrab_worldSpace).sub(B(this.selected)),i.sub(this.localPositionOffsetToGrab_worldSpace)),ie(this.selected,i)}if(this.rigidbodies!=null)for(let e of this.rigidbodies)e.wakeUp(),e.setBodyFromGameObject({x:0,y:0,z:0});oe.markDirty(this.selected,!0)}}},gt=rt;I(gt,"Events",{}),I(gt,"Current",[]);import{Object3D as Sm}from"three";var D_=P("debugmouth"),lr=class extends M{idle=[];talking=[];marker=null;voip=null;lastMouthChangeTime=0;mouthChangeLength=0;awake(){setTimeout(()=>{this.voip=R.findObjectOfType(it,this.context),this.marker||(this.marker=R.getComponentInParent(this.gameObject,le))},3e3)}update(){if(!this.voip||this.context.time.frameCount%10!==0)return;let e=this.marker?.connectionId??null;if(!e){D_&&(e=null);return}let t=this.voip.getFrequency(e)??0;this.updateLips(t)}updateLips(e){if(this.context.time.time-this.lastMouthChangeTime>this.mouthChangeLength){if(this.mouthChangeLength=.05+Math.random()*.1,this.talking&&this.talking.length>0&&e>30){this.lastMouthChangeTime=this.context.time.time;let t=Math.floor(Math.random()*this.talking.length);this.setMouthShapeActive(this.talking,t)}else if(this.idle.length>0&&this.context.time.time-this.lastMouthChangeTime>.5){this.lastMouthChangeTime=this.context.time.time;let t=Math.floor(Math.random()*this.idle.length);this.setMouthShapeActive(this.idle,t)}}}setMouthShapeActive(e,t){if(!!e){e!=this.idle?this.idle.map(i=>i.visible=!1):this.talking.map(i=>i.visible=!1);for(let i=0;i<e.length;i++){let n=e[i];n&&(n.visible=i===t)}}}};v([y(Sm)],lr.prototype,"idle",2),v([y(Sm)],lr.prototype,"talking",2);var is=class extends M{voip=null;marker=null;_startPosition=null;awake(){this.voip=R.findObjectOfType(it,this.context),this.marker=R.getComponentInParent(this.gameObject,le)}update(){if(!this.voip||!this.marker||this.context.time.frameCount%10!==0)return;let e=this.marker.connectionId,t=this.voip.getFrequency(e);if(t==null)return;this._startPosition||(this._startPosition=this.gameObject.position.clone());let i=t/100;this.gameObject.position.y=this._startPosition.y+i*.07}};import{Object3D as L_}from"three";var Xi=class extends M{eyes=[];lastBlinkTime=0;blinkLength=0;eyesOpen=!0;state=null;awake(){this.state=R.getComponentInParent(this.gameObject,Ee)}update(){if(!this.gameObject||!this.gameObject.visible||!this.eyes||!Array.isArray(this.eyes)||this.eyes.length===0)return;if(this.context.time.time-this.lastBlinkTime>this.blinkLength){if(this.lastBlinkTime=this.context.time.time,this.state&&!this.state.isOn||!this.activeAndEnabled)return;if(this.eyesOpen=!this.eyesOpen,this.blinkLength=Math.random(),this.eyesOpen?(this.blinkLength*=3,this.blinkLength+=.5,Math.random()<.1&&(this.blinkLength=.1+Math.random()*.2)):(this.blinkLength*=Math.random()*.2,this.blinkLength+=.1),Math.random()<.1&&(this.blinkLength*=3),this.blinkLength=Math.max(.2,this.blinkLength),this.blinkLength=Math.min(3,this.blinkLength),this.eyes)for(let t of this.eyes)t&&(t.visible=this.eyesOpen)}}};v([y(L_)],Xi.prototype,"eyes",2),v([y()],Xi.prototype,"lastBlinkTime",2),v([y()],Xi.prototype,"blinkLength",2),v([y()],Xi.prototype,"eyesOpen",2);import*as ac from"three";import{Object3D as Uu}from"three";var Gu=class extends M{head=null;eyes=null;target=null;brain=null;awake(){this.brain||(this.brain=R.getComponentInParent(this.gameObject,Tn)),this.brain||(console.log("No look at brain found, adding it now"),this.brain=R.addNewComponent(this.gameObject,Tn)),this.brain&&this.target&&(this.brain.controlledTarget=this.target)}vec=new ac.Vector3;currentTargetPoint=new ac.Vector3;update(){let e=this.target;if(e&&this.head){let t=this.eyes;if(t){let i=B(e);this.currentTargetPoint.lerp(i,this.context.time.deltaTime/.1);let n=B(this.head),r=this.vec.copy(this.currentTargetPoint).sub(n).normalize();if(r.length()<.1)return;let s=Gu.forward;if(s.set(0,0,1),s.applyQuaternion(me(this.head)),s.dot(r)>.45)for(let c=0;c<t.length;c++)t[c].lookAt(this.currentTargetPoint)}}}},Qi=Gu;I(Qi,"forward",new ac.Vector3(0,0,1)),v([y(Uu)],Qi.prototype,"head",2),v([y(Uu)],Qi.prototype,"eyes",2),v([y(Uu)],Qi.prototype,"target",2);import{AxesHelper as j_}from"three";var kn=class extends M{length=1;depthTest=!0;isGizmo=!0;_axes=null;onEnable(){if(this.isGizmo&&!Ai)return;this._axes||(this._axes=new j_(this.length)),this.gameObject.add(this._axes);let e=this._axes.material;e&&e.depthTest!==void 0&&(e.depthTest=this.depthTest)}onDisable(){!this._axes||this.gameObject.remove(this._axes)}};v([y()],kn.prototype,"length",2),v([y()],kn.prototype,"depthTest",2),v([y()],kn.prototype,"isGizmo",2);import*as Pm from"three";var ns=class extends M{from;to;hint;desiredDistance=1;onEnable(){}update(){if(!this.from||!this.to||!this.hint)return;let e=B(this.to).clone(),t=B(this.from).clone(),i=e.distanceTo(t),n=e.clone();n.sub(t);let r=t.clone();r.add(e),r.multiplyScalar(.5);let s=B(this.hint).clone();s.sub(r);let a=new Pm.Vector3;a.crossVectors(s,n),a.crossVectors(n,a),a.normalize();let c=i*.5,d=Math.max(this.desiredDistance,c),l=Math.sqrt(d*d-c*c),u=a.clone();u.multiplyScalar(l),u.add(r),ie(this.gameObject,u);let h=r.clone();h.sub(a),this.gameObject.lookAt(h)}};import{Mesh as H_,Vector3 as cr}from"three";var Xt=class extends M{get isCollider(){return!0}attachedRigidbody=null;isTrigger=!1;awake(){super.awake(),this.attachedRigidbody||(this.attachedRigidbody=this.gameObject.getComponentInParent(J))}start(){this.attachedRigidbody||(this.attachedRigidbody=this.gameObject.getComponentInParent(J))}onEnable(){this.attachedRigidbody||(this.attachedRigidbody=this.gameObject.getComponentInParent(J))}onDisable(){this.context.physics.removeBody(this)}};v([y(J)],Xt.prototype,"attachedRigidbody",2),v([y()],Xt.prototype,"isTrigger",2);var dr=class extends Xt{radius=.5;center=new cr(0,0,0);onEnable(){super.onEnable(),this.context.physics.addSphereCollider(this,this.center,this.radius)}};v([y()],dr.prototype,"radius",2),v([y(cr)],dr.prototype,"center",2);var ur=class extends Xt{size=new cr(1,1,1);center=new cr(0,0,0);onEnable(){super.onEnable(),this.context.physics.addBoxCollider(this,this.center,this.size)}};v([y(cr)],ur.prototype,"size",2),v([y(cr)],ur.prototype,"center",2);var Kr=class extends Xt{sharedMesh;convex=!1;onEnable(){super.onEnable(),this.sharedMesh?.isMesh||this.gameObject instanceof H_&&(this.sharedMesh=this.gameObject),this.sharedMesh?.isMesh&&this.context.physics.addMeshCollider(this,this.sharedMesh,this.convex,Ae(this.gameObject))}};v([y()],Kr.prototype,"convex",2);var Nt=class extends Xt{center=new cr(0,0,0);radius=.5;height=2;onEnable(){super.onEnable(),this.context.physics.addCapsuleCollider(this,this.center,this.height,this.radius)}};v([y(cr)],Nt.prototype,"center",2),v([y()],Nt.prototype,"radius",2),v([y()],Nt.prototype,"height",2);import*as Jr from"three";var F_=P("gizmos"),B_=P("debugboxhelper"),Qt=class extends M{box=null;_lastMatrixUpdateFrame=-1;isInBox(e,t){if(!e)return;if(this.box||(this.box=new Jr.Box3),e.type==="Mesh")Qt.testBox.setFromObject(e);else if(e.type==="Group"){if(Qt.testBox.makeEmpty(),e.children.length>0)for(let n=0;n<e.children.length;n++)e.children[n].type==="Mesh"&&Qt.testBox.expandByObject(e)}else{let n=B(e,Qt._position),r=Ae(e,Qt._size);t!==void 0&&r.multiplyScalar(t),Qt.testBox.setFromCenterAndSize(n,r)}this.updateBox();let i=this.box?.intersectsBox(Qt.testBox);return i&&B_&&bn.DrawBox3(Qt.testBox,16711680,5),i}intersects(e){return e?this.updateBox(!1).intersectsBox(e):!1}updateBox(e=!1){if(this.box||(this.box=new Jr.Box3),e||this.context.time.frameCount!=this._lastMatrixUpdateFrame){let t=this._lastMatrixUpdateFrame<0;this._lastMatrixUpdateFrame=this.context.time.frameCount;let i=t,n=B(this.gameObject,Qt._position,i),r=Ae(this.gameObject,Qt._size);this.box.setFromCenterAndSize(n,r)}return this.box}_helper=null;_color=null;awake(){this._helper=null,this._color=null,this.box=null}showHelper(e=null,t=!1){if(!(!F_&&!t)){if(this._helper){e&&this._color?.set(e),this.gameObject.add(this._helper);return}this._helper=dl(e),this.gameObject.add(this._helper)}}},ze=Qt;I(ze,"testBox",new Jr.Box3),I(ze,"_position",new Jr.Vector3),I(ze,"_size",new Jr.Vector3(.01,.01,.01));import{Color as W_,Texture as Lm}from"three";import{LinearEncoding as V_,sRGBEncoding as z_}from"three";import*as Wu from"three-mesh-ui";import{Matrix4 as U_,Object3D as G_,Vector2 as Am,Vector3 as zu}from"three";import{FrontSide as Om,DoubleSide as km}from"three";function Vu(o){let e=o[mt];return e||(o.parent?Vu(o.parent):null)}function rs(o,e){if(!o)return;let t=o.material;t?.isMaterial===!0&&(t.depthTest=!e.renderOnTop,t.side=e.doubleSided??!0?km:Om,t.depthWrite=e.depthWrite??!1,t.shadowSide=e.doubleSided?km:Om,o.castShadow=e.castShadows?e.castShadows:!1,o.receiveShadow=e.receiveShadows?e.receiveShadows:!1);for(let i of o.children)rs(i,e)}function lc(o,e,t){o[e]===void 0&&console.warn("Field",e,"is undefined on",o);let i=Proxy.revocable(o[e],{set(s,a,c,d){let l=s[a],u=Reflect.set(s,a,c,d);return t(c,l),u}}),n=i.revoke,r=o[e];return i.revoke=()=>{o[e]=r,n()},o[e]=i.proxy,i}var Mm=Symbol("Scheduled action");function Im(o,e,t=3){let i=o[Mm];i||(i=o[Mm]={});let n=e.name;i[t]||(i[t]={});let r=i[t];if(r[n])return;function*a(){e?.call(o),r[n]=null}let c=o.startCoroutine(a(),t);r[n]=c}var Dm=P("debugui"),os=class{width;height},Zr=class{x;y;width;height},bt=class extends Ve{offset=.01;get translation(){return this.gameObject.position}get rotation(){return this.gameObject.quaternion}get scale(){return this.gameObject.scale}_anchoredPosition;get anchoredPosition(){return this._anchoredPosition||(this._anchoredPosition=new zu),this._anchoredPosition}rect;sizeDelta;anchoredPosition3D;pivot;lastMatrix;rectBlock;_transformNeedsUpdate=!1;awake(){super.awake(),this.lastMatrix=new U_,this.rectBlock=new G_,this.rectBlock.position.z=.1,this.rectBlock.name=this.name,this._anchoredPosition||(this._anchoredPosition=new zu),lc(this,"_anchoredPosition",()=>{this._transformNeedsUpdate=!0})}onEnable(){super.onEnable(),this.addShadowComponent(this.rectBlock),this._transformNeedsUpdate=!0}onDisable(){super.onDisable(),this.removeShadowComponent()}applyTransform(){let e=this.shadowComponent;!e||(this._transformNeedsUpdate=!1,this.isRoot()?e.rotation.y=Math.PI:(e.position.copy(this.gameObject.position),e.position.x*=-1,e.position.z*=-1,e.position.z-=this.offset,e.quaternion.copy(this.gameObject.quaternion),e.rotation.x*=-1,e.rotation.z*=-1,e.scale.copy(this.gameObject.scale)),this.applyAnchoring(e.position),this.lastMatrix.copy(this.gameObject.matrix))}markDirty(){this._transformNeedsUpdate=!0}onBeforeRender(){(this._transformNeedsUpdate||this.lastMatrix.equals(this.gameObject.matrix)===!1)&&(Dm&&console.log("updating",this.name),this.applyTransform()),Ye.ensureUpdateMeshUI(Wu,this.context)}applyAnchoring(e){if(this.pivot&&this.sizeDelta){let t=this.pivot.x*2-1,i=this.pivot.y*2-1;i-=this.anchoredPosition.y*.05;let n=this.sizeDelta.x*t,r=this.sizeDelta.y*i;e.x-=n*.5,e.y-=r*.5}}getBasicOptions(){let e={width:this.rect.width,height:this.rect.height,offset:this.offset,backgroundOpacity:0,borderWidth:0,borderRadius:0,borderOpacity:0};return this.ensureValidSize(e),e}ensureValidSize(e,t=1e-4){return e.width<=0&&(e.width=t),e.height<=0&&(e.height=1e-4),e}_createdBlocks=[];createNewBlock(e){e={...this.getBasicOptions(),...e},Dm&&console.log(this.name,e);let t=new Wu.Block(e);return this._createdBlocks.push(t),t}};v([y(Zr)],bt.prototype,"rect",2),v([y(Am)],bt.prototype,"sizeDelta",2),v([y(zu)],bt.prototype,"anchoredPosition3D",2),v([y(Am)],bt.prototype,"pivot",2);var ba=class extends Ve{get isGraphic(){return!0}get color(){return this._color||(this._color=new q(1,1,1,1)),this._color}set color(e){(!this._color||this._color.r!==e.r||this._color.g!==e.g||this._color.b!==e.b||this._color.alpha!==e.alpha)&&(this._color||(this._color=new q(1,1,1,1)),this._color.copy(e))}onColorChanged(){let e=this.color;this.setOptions({backgroundColor:e,backgroundOpacity:e.alpha,borderOpacity:e.alpha})}get m_Color(){return this._color}raycastTarget=!0;uiObject=null;_color=null;_rect=null;get rectTransform(){return this._rect||(this._rect=R.getComponent(this.gameObject,bt)),this._rect}setState(e){this.makePanel(),this.uiObject&&this.uiObject.setState(e)}setupState(e){this.makePanel(),this.uiObject&&this.uiObject.setupState(e)}setOptions(e){this.makePanel(),this.uiObject&&(this.uiObject.set(e),(e.backgroundColor!==void 0||e.backgroundOpacity!==void 0)&&this.uiObject.updateBackgroundMaterial?.call(this.uiObject))}awake(){super.awake(),this.makePanel(),lc(this,"_color",()=>Im(this,this.onColorChanged))}onEnable(){super.onEnable(),this.uiObject&&(this.rectTransform.shadowComponent?.add(this.uiObject),this.addShadowComponent(this.uiObject,this.rectTransform))}onDisable(){super.onDisable(),this.uiObject&&this.removeShadowComponent()}_currentlyCreatingPanel=!1;makePanel(){if(this.uiObject||this._currentlyCreatingPanel)return;this._currentlyCreatingPanel=!0;let e={backgroundColor:this.color,backgroundOpacity:this.color.alpha,offset:1};this.onBeforeCreate(e),this.onCreate(e),this.controlsChildLayout=!1,this._currentlyCreatingPanel=!1,this.onAfterCreated()}onBeforeCreate(e){}onCreate(e){this.uiObject=this.rectTransform.createNewBlock(e),this.uiObject.name=this.name}onAfterCreated(){}async setTexture(e){if(!!e&&(this.setOptions({backgroundOpacity:0}),e)){if(e.encoding===z_)if(ba.textureCache.has(e))e=ba.textureCache.get(e);else{let t=e.clone();t.encoding=V_,ba.textureCache.set(e,t),e=t}this.setOptions({backgroundTexture:e,borderRadius:0,backgroundOpacity:this.color.alpha,backgroundSize:"stretch"})}}onAfterAddedToScene(){super.onAfterAddedToScene(),this.shadowComponent&&(this.shadowComponent.offset=this.shadowComponent.position.z)}},vt=ba;I(vt,"textureCache",new Map),v([y(q)],vt.prototype,"color",1),v([y()],vt.prototype,"raycastTarget",2);var Mn=class extends vt{onAfterCreated(){this.uiObject&&(this.uiObject.scale.y*=-1)}};var cc=class{texture;rect};v([y(Lm)],cc.prototype,"texture",2);var In=class extends Mn{sprite;isBuiltinSprite(){switch(this.sprite?.texture?.name){case"InputFieldBackground":case"UISprite":case"Background":return!0}return this.sprite?.texture?.image?.width===32&&this.sprite?.texture?.image?.height===32}onBeforeCreate(e){this.isBuiltinSprite()&&(e.borderRadius=5,e.borderColor=new W_(.4,.4,.4),e.borderOpacity=this.color.alpha,e.borderWidth=.3)}onAfterCreated(){super.onAfterCreated(),!this.isBuiltinSprite()&&this.setTexture(this.sprite?.texture)}};v([y(cc)],In.prototype,"sprite",2);var $r=class extends Mn{mainTexture;onAfterCreated(){super.onAfterCreated(),this.setTexture(this.mainTexture)}};v([y(Lm)],$r.prototype,"mainTexture",2);var ss=P("debugbutton");var An=class{colorMultiplier;disabledColor;fadeDuration;highlightedColor;normalColor;pressedColor;selectedColor};v([y()],An.prototype,"colorMultiplier",2),v([y(q)],An.prototype,"disabledColor",2),v([y()],An.prototype,"fadeDuration",2),v([y(q)],An.prototype,"highlightedColor",2),v([y(q)],An.prototype,"normalColor",2),v([y(q)],An.prototype,"pressedColor",2),v([y(q)],An.prototype,"selectedColor",2);var qt=class extends M{onClick;_isHovered=!1;onPointerEnter(e){ss&&console.log("Button Enter",this.animationTriggers?.highlightedTrigger,this.animator),this._isHovered=!0,this.transition==3&&this.animationTriggers&&this.animator?this.animator.SetTrigger(this.animationTriggers.highlightedTrigger):this.transition===1&&this.colors&&this._image?.setState("hovered"),this.context.input.setCursorPointer()}onPointerExit(){ss&&console.log("Button Exit",this.animationTriggers?.highlightedTrigger,this.animator),this._isHovered=!1,this.transition==3&&this.animationTriggers&&this.animator?this.animator.SetTrigger(this.animationTriggers.normalTrigger):this.transition===1&&this.colors&&this._image?.setState("normal"),this.context.input.setCursorNormal()}onPointerDown(e){ss&&console.log("Button Down",this.animationTriggers?.highlightedTrigger,this.animator),this.transition==3&&this.animationTriggers&&this.animator?this.animator.SetTrigger(this.animationTriggers.pressedTrigger):this.transition===1&&this.colors&&this._image?.setState("pressed")}onPointerUp(e){ss&&console.log("Button Down",this.animationTriggers?.highlightedTrigger,this.animator),this.transition==3&&this.animationTriggers&&this.animator?this.animator.SetTrigger(this._isHovered?this.animationTriggers.highlightedTrigger:this.animationTriggers.normalTrigger):this.transition===1&&this.colors&&this._image?.setState(this._isHovered?"hovered":"normal")}onPointerClick(e){ss&&console.trace("Button Click",this.onClick),this.onClick?.invoke()}colors;transition;animationTriggers;animator;set interactable(e){this._interactable=e,this._image&&(this._image.setInteractable(e),e?this._image.setState("normal"):this._image.setState("disabled"))}get interactable(){return this._interactable}_interactable=!0;set_interactable(e){this.interactable=e}awake(){super.awake(),ss&&console.log(this),this.init()}start(){this._image?.setInteractable(this.interactable)}onEnable(){super.onEnable()}_requestedAnimatorTrigger;*setAnimatorTriggerAtEndOfFrame(e){this._requestedAnimatorTrigger=e,yield,yield,this._requestedAnimatorTrigger==e&&this.animator?.SetTrigger(e)}_isInit=!1;_image;init(){this._isInit||(this._isInit=!0,this._image=R.getComponent(this.gameObject,In),this._image&&(this.stateSetup(this._image),this.interactable?this._image.setState("normal"):this._image.setState("disabled")))}stateSetup(e){e.setInteractable(this.interactable);let t=this.getFinalColor(e.color,this.colors?.normalColor),i={state:"normal",attributes:{backgroundColor:t,backgroundOpacity:t.alpha}};e.setupState(i);let n=this.getFinalColor(e.color,this.colors?.highlightedColor),r={state:"hovered",attributes:{backgroundColor:n,backgroundOpacity:n.alpha}};e.setupState(r);let s=this.getFinalColor(e.color,this.colors?.pressedColor),a={state:"pressed",attributes:{backgroundColor:s,backgroundOpacity:s.alpha}};e.setupState(a);let c=this.getFinalColor(e.color,this.colors?.selectedColor),d={state:"selected",attributes:{backgroundColor:c,backgroundOpacity:c.alpha}};e.setupState(d);let l=this.getFinalColor(e.color,this.colors?.disabledColor),u={state:"disabled",attributes:{backgroundColor:l,backgroundOpacity:l.alpha}};e.setupState(u)}getFinalColor(e,t){return t?e.clone().multiply(t):e.clone()}};v([y(ue)],qt.prototype,"onClick",2),v([y()],qt.prototype,"colors",2),v([y()],qt.prototype,"transition",2),v([y()],qt.prototype,"animationTriggers",2),v([y(Pe)],qt.prototype,"animator",2),v([y()],qt.prototype,"interactable",1);var Nu=class extends On{set renderOnTop(e){e!==this._renderOnTop&&(this._renderOnTop=e,this.onRenderSettingsChanged())}get renderOnTop(){return this._renderOnTop}_renderOnTop=!1;set depthWrite(e){this._depthWrite!==e&&(this._depthWrite=e,this.onRenderSettingsChanged())}get depthWrite(){return this._depthWrite}_depthWrite=!1;set doubleSided(e){this._doubleSided!==e&&(this._doubleSided=e,this.onRenderSettingsChanged())}get doubleSided(){return this._doubleSided}_doubleSided=!0;set castShadows(e){this._castShadows!==e&&(this._castShadows=e,this.onRenderSettingsChanged())}get castShadows(){return this._castShadows}_castShadows=!0;set receiveShadows(e){this._receiveShadows!==e&&(this._receiveShadows=e,this.onRenderSettingsChanged())}get receiveShadows(){return this._receiveShadows}_receiveShadows=!0;get renderMode(){return this._renderMode}set renderMode(e){this._renderMode!==e&&(this._renderMode=e,this.onRenderSettingsChanged())}_renderMode=-1;_rootCanvas;set rootCanvas(e){this._rootCanvas instanceof Nu||(this._rootCanvas=e)}get rootCanvas(){return this._rootCanvas}_scaleFactor=1;get scaleFactor(){return this._scaleFactor}set scaleFactor(e){this._scaleFactor=e}awake(){this.shadowComponent=this.gameObject,super.awake()}onEnable(){super.onEnable(),this._updateRenderSettingsRoutine=void 0,this.onRenderSettingsChanged()}previousAspect=-1;onBeforeRender(){this.isScreenSpace&&this.context.mainCameraComponent&&this.context.mainCameraComponent.aspect!==this.previousAspect&&(this.previousAspect=this.context.mainCameraComponent.aspect,this.updateRenderMode())}_updateRenderSettingsRoutine;onRenderSettingsChanged(){this._updateRenderSettingsRoutine||(this._updateRenderSettingsRoutine=this.startCoroutine(this._updateRenderSettingsDelayed(),3))}*_updateRenderSettingsDelayed(){if(yield,this._updateRenderSettingsRoutine=void 0,this.shadowComponent){this.updateRenderMode(),rs(this.shadowComponent,this);for(let e of R.getComponentsInChildren(this.gameObject,Ve))rs(e.shadowComponent,this)}}_activeRenderMode=-1;get isScreenSpace(){return this._activeRenderMode===1||this._activeRenderMode===0}updateRenderMode(){if(this.renderMode!==this._activeRenderMode)switch(this.renderMode){case 0:case 1:let e=this.context.mainCameraComponent;if(!e)return;let t=this.gameObject;e.gameObject?.add(t);let n=e.farClipPlane;t.position.x=0,t.position.y=0,t.position.z=-n;let r=Math.tan(H.toRadians(e.fieldOfView)*n)*(e.aspect*1.333333),s=r*(this.context.domHeight/this.context.domWidth);t.scale.x=-r,t.scale.y=s;break;case 2:break}}},We=Nu;v([y()],We.prototype,"renderOnTop",1),v([y()],We.prototype,"depthWrite",1),v([y()],We.prototype,"doubleSided",1),v([y()],We.prototype,"castShadows",1),v([y()],We.prototype,"receiveShadows",1),v([y()],We.prototype,"renderMode",1),v([y(We)],We.prototype,"rootCanvas",1),v([y()],We.prototype,"scaleFactor",1);var Dn=class extends M{get alpha(){return this._alpha}set alpha(e){e!==this._alpha&&(this._alpha=e,this.markDirty())}get isCanvasGroup(){return!0}_alpha=1;interactable=!0;blocksRaycasts=!0;_isDirty=!1;markDirty(){this._isDirty||(this._isDirty=!0,this.startCoroutine(this.applyChangesDelayed(),3))}*applyChangesDelayed(){this._isDirty=!1,this.applyChangesNow()}_buffer=[];applyChangesNow(){for(let e of R.getComponentsInChildren(this.gameObject,vt,this._buffer)){let t=e.color;t.alpha=this._alpha,e.color=t}}};v([y()],Dn.prototype,"alpha",1),v([y()],Dn.prototype,"interactable",2),v([y()],Dn.prototype,"blocksRaycasts",2);import{Quaternion as Z_,Ray as $_,Vector3 as eo}from"three";import*as jm from"three";import{Color as X_,Object3D as Q_,Texture as q_,WebGLRenderTarget as Y_}from"three";import{WebGLRenderTarget as N_}from"three";var as=class extends N_{};var Qu=class extends Di{constructor(){super([X_,q])}onDeserialize(e){if(e!=null)return e.a!==void 0?new q(e.r,e.g,e.b,e.a):e.alpha!==void 0?new q(e.r,e.g,e.b,e.alpha):new jm.Color(e.r,e.g,e.b)}onSerialize(e){if(e!=null)return e.a!==void 0?{r:e.r,g:e.g,b:e.b,a:e.a}:{r:e.r,g:e.g,b:e.b}}},K1=new Qu,qu=class extends Di{constructor(){super(Q_)}onSerialize(e,t){if(t.objectToNode!==void 0&&e.uuid){let i=t.objectToNode[e.uuid];return pe&&console.log(i,e.name,e.uuid),{node:i}}}onDeserialize(e,t){if(e){if(e.node!==void 0&&t.nodeToObject){let i=t.nodeToObject[e.node];return pe&&console.log("Deserialized object reference?",e,i,t?.nodeToObject),i||console.warn("Did not find node: "+e.node,t.nodeToObject,t.object),i}else if(e.guid){if(!t.context){console.error("Missing context");return}let i,n=t.gltf?.scene;return n&&(i=R.findByGuid(e.guid,n)),i||(i=R.findByGuid(e.guid,t.context.scene)),i?pe&&console.log("Deserialized object reference?",e,i,t?.nodeToObject):((Ua()||pe)&&console.warn("Could not resolve object reference",t.path,e,t.target,t.context.scene),e.could_not_resolve=!0),i}}}},K_=new qu,Yu=class extends Di{constructor(){super([Tt,M])}onSerialize(e,t){if(e?.guid)return{guid:e.guid}}onDeserialize(e,t){if(e?.guid){pe&&console.log(e.guid,t.root,t.object,t.target);let i=this.findObjectForGuid(e.guid,t.root);if(i||t.context&&(i=this.findObjectForGuid(e.guid,t.context?.scene),i))return i;(Ua()||pe)&&console.warn("Could not resolve component reference",t.path,e,t.target),e.could_not_resolve=!0;return}}findObjectForGuid(e,t){if(t.guid===e)return t;let i=R.foreachComponent(t,n=>{if(n.guid===e)return n},!1);if(i!==void 0)return i;for(let n=0;n<t.children.length;n++){let r=t.children[n],s=this.findObjectForGuid(e,r);if(s)return s}}},Xu=new Yu,Ku=class extends Di{constructor(){super([ue])}onSerialize(e,t){console.log("TODO: SERIALIZE EVENT")}onDeserialize(e,t){if(typeof e=="function")return new ue([new bi(e,!0)]);if(e&&e.type==="EventList"){pe&&console.log("DESERIALIZE EVENT",e);let i=new Array;if(e.calls&&Array.isArray(e.calls))for(let s of e.calls){pe&&console.log(s);let a=Xu.findObjectForGuid(s.target,t.root);!a&&t.context?.scene&&(a=Xu.findObjectForGuid(s.target,t.context?.scene));let c=s.method?.length>0;if(a&&c){let h=()=>console.warn(`Could not find method ${s.method} on object ${a.name}`,a,typeof a[s.method]);if(typeof a[s.method]!="function"){let g=!1;s.method.startsWith("set_")&&s.method.length>4&&(s.method=s.method.substring(4),a[s.method]!==void 0&&(g=!0)),!g&&(Ua()||pe)&&h()}}let d,l=s.argument;s.argument!==void 0?(typeof l=="object"&&(l=K_.onDeserialize(s.argument,t),l||(l=Xu.onDeserialize(s.argument,t))),d=new bi(c?(...h)=>u(...h):void 0,s.enabled)):d=new bi(c?(...h)=>u(...h):void 0,s.enabled);let u=(...h)=>{let g=a[s.method];typeof g=="function"?l!==void 0?g?.call(a,l):g?.call(a,...h):a[s.method]=l};if(d.method||(d.__debuginfo=t.object?.name),!a||!d.method){let h=t.object?"Current object: "+t.object.name+", "+t.object.guid:null;a?console.warn('EventList method not found: "'+s.method+'" on',a):console.warn("EventList is missing target - will be ignored",s.target,h,e)}else i.push(d)}let n=new ue(i);pe&&console.log(n);let r=t.target;return r!==void 0&&t.path!==void 0&&n.setEventTarget(t.path,r),n}}},J1=new Ku,Ju=class extends Di{constructor(){super([as,Y_])}onSerialize(e,t){}onDeserialize(e,t){if(e instanceof q_&&t.type===as){let i=e,n=new as(i.image.width,i.image.height);return n.texture=i,n}}};new Ju;var qi=class extends M{center=new eo(0,0,0);radius=.5;height=2;_rigidbody=null;get rigidbody(){return this._rigidbody?this._rigidbody:(this._rigidbody=this.gameObject.getComponent(J),this._rigidbody||(this._rigidbody=this.gameObject.addNewComponent(J)),this.rigidbody)}onEnable(){let e=this.rigidbody,t=this.gameObject.getComponent(Nt);t||(t=this.gameObject.addNewComponent(Nt)),t.center.copy(this.center),t.radius=this.radius,t.height=this.height,this.gameObject.rotation.x=0,this.gameObject.rotation.z=0,e.lockRotationX=!0,e.lockRotationY=!0,e.lockRotationZ=!0}move(e){this.gameObject.position.add(e)}_activeGroundCollisions=new Set;onCollisionEnter(e){for(let t of e.contacts)if(t.normal.y>.1){this._activeGroundCollisions.add(e);break}}onCollisionExit(e){this._activeGroundCollisions.delete(e)}get isGrounded(){return this._activeGroundCollisions.size>0}};v([y(eo)],qi.prototype,"center",2),v([y()],qi.prototype,"radius",2),v([y()],qi.prototype,"height",2);var Ci=class extends M{controller;movementSpeed=2;rotationSpeed=2;jumpForce=1;animator;lookForward=!0;_currentSpeed=new eo(0,0,0);_currentAngularSpeed=new eo(0,0,0);_temp=new eo(0,0,0);_jumpCount=0;_currentRotation;awake(){this._currentRotation=new Z_}update(){this.controller?.isGrounded&&(this._jumpCount=0,this.animator?.SetBool("doubleJump",!1));let e=this.context.input.isKeyPressed("w"),t=this.context.input.isKeyPressed("s"),i=this.context.input.isKeyPressed("a"),n=this.context.input.isKeyPressed("d"),r=this.context.input.isKeyDown(" "),s=e?1:0+t?-1:0;this._currentSpeed.z+=s*this.movementSpeed*this.context.time.deltaTime,this.animator?.SetBool("running",s!=0),this.animator?.SetBool("jumping",this.controller?.isGrounded===!0&&r),this._temp.copy(this._currentSpeed),this._temp.applyQuaternion(this.gameObject.quaternion),this.controller?this.controller.move(this._temp):this.gameObject.position.add(this._temp);let a=i?1:0+n?-1:0;if(this._currentAngularSpeed.y+=H.toRadians(a*this.rotationSpeed)*this.context.time.deltaTime,this.lookForward&&Math.abs(this._currentAngularSpeed.y)<.01){let c=this.context.mainCameraComponent.forward;c.y=0,c.normalize(),this._currentRotation.setFromUnitVectors(new eo(0,0,1),c),this.gameObject.quaternion.slerp(this._currentRotation,this.context.time.deltaTime*10)}if(this.gameObject.rotateY(this._currentAngularSpeed.y),this._currentSpeed.multiplyScalar(1-this.context.time.deltaTime*10),this._currentAngularSpeed.y*=1-this.context.time.deltaTime*10,this.controller&&r&&this.jumpForce>0){let c=this.controller?.isGrounded;if(!this.controller?.isGrounded&&this._jumpCount===1&&(c=!0,this.animator?.SetBool("doubleJump",!0)),c){this._jumpCount+=1;let d=this.controller.rigidbody,l=this._jumpCount===2?2:1;d.applyImpulse(new eo(0,1,0).multiplyScalar(this.jumpForce*l))}}if(this.controller){let c=this.controller?.rigidbody.getVelocity().y;if(c<-1){this._raycastOptions.ray||(this._raycastOptions.ray=new $_),this._raycastOptions.ray.origin.copy(B(this.gameObject)),this._raycastOptions.ray.direction.set(0,-1,0);let d=this.layer;this.gameObject.layers.disableAll(),this.gameObject.layers.set(2);let l=this.context.physics.raycast(this._raycastOptions);this.gameObject.layers.set(d),(l.length&&l[0].distance>2||c<-10)&&this.animator?.SetBool("falling",!0)}else this.animator?.SetBool("falling",!1)}}_raycastOptions=new be};v([y(qi)],Ci.prototype,"controller",2),v([y()],Ci.prototype,"movementSpeed",2),v([y()],Ci.prototype,"rotationSpeed",2),v([y()],Ci.prototype,"jumpForce",2),v([y(Pe)],Ci.prototype,"animator",2);import{LinearToneMapping as Zu,ACESFilmicToneMapping as Hm,ReinhardToneMapping as ex}from"three";var dc=P("debugvolume"),Bm=(i=>(i[i.None=0]="None",i[i.Neutral=1]="Neutral",i[i.ACES=2]="ACES",i))(Bm||{}),ls=class{overrideState=!1;value=0},Yi=class{active=!1;parameters},pr=class extends Yi{mode;get isToneMapping(){return!0}},fr=class extends Yi{postExposure};function tx(o){return"mode"in o?pr:"postExposure"in o?fr:Yi}var Fm=Symbol("volumeprofile"),hr=class{components;apply(e){this.onUpdate(e,!1)}unapply(e){this.onUpdate(e,!0)}onUpdate(e,t){if(!this.components)return;let i=e.renderer,r=i[Fm]!==void 0;if(t){if(!r)return}else i[Fm]=this;for(let s of this.components)if(s instanceof pr){let a=s;if(!s.active||t){e.renderer.toneMapping=Zu;continue}dc&&console.log("VOLUME:",Bm[a.mode?.value??0]);let c=a.mode;switch((c?.overrideState?c?.value:0)??0){case 0:e.renderer.toneMapping=Zu;break;case 1:e.renderer.toneMapping=ex;break;case 2:e.renderer.toneMapping=Hm;break}}else if(s instanceof fr){let a=s;dc&&console.log(a.postExposure);let c=1;a.postExposure&&(c=Math.pow(2,a.postExposure.value)),e.renderer.toneMapping,Hm;let d=a.postExposure?.overrideState&&!t;e.renderer.toneMappingExposure=d?c:1,e.renderer.toneMapping||(e.renderer.toneMapping=Zu)}}};v([y([o=>tx(o),Yi])],hr.prototype,"components",2);var to=class extends M{sharedProfile;awake(){dc&&(console.log(this),console.log("Press P to toggle post processing"),window.addEventListener("keydown",e=>{e.key==="p"&&(console.log("Toggle volume: "+this.name,!this.enabled),this.enabled=!this.enabled)}))}onEnable(){dc&&console.log("APPLY VOLUME",this),this.sharedProfile?.apply(this.context)}onDisable(){this.sharedProfile?.unapply(this.context)}};v([y(hr)],to.prototype,"sharedProfile",2);import{Matrix4 as Um,Quaternion as ix,Vector3 as Je,Vector2 as Gm,Euler as nx}from"three";import{createNoise4D as rx}from"simplex-noise";var Ri=class{alphaKeys;colorKeys;get duration(){return 1}evaluate(e,t){let i,n=0,r=null,s=0;for(let a=0;a<this.alphaKeys.length;a++){let c=this.alphaKeys[a];(c.time<e||!i)&&(i=c,n=a)}for(let a=0;a<this.colorKeys.length;a++){let c=this.colorKeys[a];(c.time<e||!r)&&(r=c,s=a)}if(r)if(s+1<this.colorKeys.length){let c=this.colorKeys[s+1],d=H.remap(e,r.time,c.time,0,1);t.r=H.lerp(r.color.r,c.color.r,d),t.g=H.lerp(r.color.g,c.color.g,d),t.b=H.lerp(r.color.b,c.color.b,d)}else t.r=r.color.r,t.g=r.color.g,t.b=r.color.b;if(i)if(n+1<this.alphaKeys.length){let c=this.alphaKeys[n+1],d=H.remap(e,i.time,c.time,0,1);t.alpha=H.lerp(i.alpha,c.alpha,d)}else t.alpha=i.alpha;return t}};v([y()],Ri.prototype,"alphaKeys",2),v([y()],Ri.prototype,"colorKeys",2);var Vm=(w=>(w[w.Sphere=0]="Sphere",w[w.SphereShell=1]="SphereShell",w[w.Hemisphere=2]="Hemisphere",w[w.HemisphereShell=3]="HemisphereShell",w[w.Cone=4]="Cone",w[w.Box=5]="Box",w[w.Mesh=6]="Mesh",w[w.ConeShell=7]="ConeShell",w[w.ConeVolume=8]="ConeVolume",w[w.ConeVolumeShell=9]="ConeVolumeShell",w[w.Circle=10]="Circle",w[w.CircleEdge=11]="CircleEdge",w[w.SingleSidedEdge=12]="SingleSidedEdge",w[w.MeshRenderer=13]="MeshRenderer",w[w.SkinnedMeshRenderer=14]="SkinnedMeshRenderer",w[w.BoxShell=15]="BoxShell",w[w.BoxEdge=16]="BoxEdge",w[w.Donut=17]="Donut",w[w.Rectangle=18]="Rectangle",w[w.Sprite=19]="Sprite",w[w.SpriteRenderer=20]="SpriteRenderer",w))(Vm||{});var U=class{mode;constant;constantMin;constantMax;curve;curveMin;curveMax;curveMultiplier;evaluate(e,t){let i=t===void 0?Math.random():t;switch(this.mode){case 0:return this.constant;case 1:return e=H.clamp01(e),this.curve.evaluate(e)*this.curveMultiplier;case 2:let n=e*this.curveMin.duration,r=e*this.curveMax.duration;return H.lerp(this.curveMin.evaluate(n),this.curveMax.evaluate(r),i%1)*this.curveMultiplier;case 3:return H.lerp(this.constantMin,this.constantMax,i%1);default:this.curveMax.evaluate(e)*this.curveMultiplier;break}return 0}};v([y()],U.prototype,"mode",2),v([y()],U.prototype,"constant",2),v([y()],U.prototype,"constantMin",2),v([y()],U.prototype,"constantMax",2),v([y(mi)],U.prototype,"curve",2),v([y(mi)],U.prototype,"curveMin",2),v([y(mi)],U.prototype,"curveMax",2),v([y()],U.prototype,"curveMultiplier",2);var Yt=class{mode;color;colorMin;colorMax;gradient;gradientMin;gradientMax;evaluate(e,t){let i=t===void 0?Math.random():t;switch(this.mode){case 0:return this.color;case 1:return this.gradient.evaluate(e,Yt._temp),Yt._temp;case 2:return Yt._temp.lerpColors(this.colorMin,this.colorMax,i);case 3:return this.gradientMin.evaluate(e,Yt._temp),this.gradientMax.evaluate(e,Yt._temp2),Yt._temp.lerp(Yt._temp2,i)}return Yt._temp.set(16711935),Yt._temp.alpha=1,Yt._temp}},Me=Yt;I(Me,"_temp",new q(0,0,0,1)),I(Me,"_temp2",new q(0,0,0,1)),v([y(q)],Me.prototype,"color",2),v([y(q)],Me.prototype,"colorMin",2),v([y(q)],Me.prototype,"colorMax",2),v([y(Ri)],Me.prototype,"gradient",2),v([y(Ri)],Me.prototype,"gradientMin",2),v([y(Ri)],Me.prototype,"gradientMax",2);var _e=class{cullingMode;duration;emitterVelocityMode;flipRotation;gravityModifier;gravityModifierMultiplier;loop;maxParticles;playOnAwake;prewarm;ringBufferLoopRange;ringBufferMode;scalingMode;simulationSpace;simulationSpeed;startColor;startDelay;startDelayMultiplier;startLifetime;startLifetimeMultiplier;startRotation;startRotationMultiplier;startRotation3D;startRotationX;startRotationXMultiplier;startRotationY;startRotationYMultiplier;startRotationZ;startRotationZMultiplier;startSize;startSize3D;startSizeMultiplier;startSizeX;startSizeXMultiplier;startSizeY;startSizeYMultiplier;startSizeZ;startSizeZMultiplier;startSpeed;startSpeedMultiplier;stopAction;useUnscaledTime};v([y(U)],_e.prototype,"gravityModifier",2),v([y(Me)],_e.prototype,"startColor",2),v([y(U)],_e.prototype,"startDelay",2),v([y(U)],_e.prototype,"startLifetime",2),v([y(U)],_e.prototype,"startRotation",2),v([y(U)],_e.prototype,"startRotationX",2),v([y(U)],_e.prototype,"startRotationY",2),v([y(U)],_e.prototype,"startRotationZ",2),v([y(U)],_e.prototype,"startSize",2),v([y(U)],_e.prototype,"startSizeX",2),v([y(U)],_e.prototype,"startSizeY",2),v([y(U)],_e.prototype,"startSizeZ",2),v([y(U)],_e.prototype,"startSpeed",2);var jn=class{cycleCount;maxCount;minCount;probability;repeatInterval;time;count;_performed=0;reset(){this._performed=0}run(e){if(e<=this.time)return this.reset(),0;let t=0;if(this.cycleCount===0||this._performed<this.cycleCount){let i=this.time+this.repeatInterval*this._performed;if(e>=i&&(this._performed+=1,Math.random()<this.probability))switch(this.count.mode){case 0:t=this.count.constant;break;case 3:t=H.lerp(this.count.constantMin,this.count.constantMax,Math.random());break;case 1:t=this.count.curve.evaluate(Math.random());break;case 2:let n=Math.random();t=H.lerp(this.count.curveMin.evaluate(n),this.count.curveMax.evaluate(n),Math.random());break}}return t}},yt=class{enabled;get burstCount(){return this.bursts?.length??0}bursts;rateOverTime;rateOverTimeMultiplier;rateOverDistance;rateOverDistanceMultiplier;system;reset(){this.bursts?.forEach(e=>e.reset())}getBurst(){let e=0;if(this.burstCount>0)for(let t=0;t<this.burstCount;t++){let i=this.bursts[t];i.time>=this.system.time&&i.reset(),e+=Math.round(i.run(this.system.time))}return e}};v([y()],yt.prototype,"enabled",2),v([y()],yt.prototype,"bursts",2),v([y(U)],yt.prototype,"rateOverTime",2),v([y()],yt.prototype,"rateOverTimeMultiplier",2),v([y(U)],yt.prototype,"rateOverDistance",2),v([y()],yt.prototype,"rateOverDistanceMultiplier",2);var Ln=class{enabled;color};v([y(Me)],Ln.prototype,"color",2);var Kt=class{enabled;separateAxes;size;sizeMultiplier;x;xMultiplier;y;yMultiplier;z;zMultiplier;_time=0;_temp=new Je;evaluate(e,t,i){if(t||(t=this._temp),!this.enabled)return t.x=t.y=t.z=1,t;if(this.separateAxes)t.x=this.x.evaluate(e,i)*this.xMultiplier,t.y=this.y.evaluate(e,i)*this.yMultiplier,t.z=this.z.evaluate(e,i)*this.zMultiplier;else{let n=this.size.evaluate(e,i)*this.sizeMultiplier;t.x=n}return t}};v([y(U)],Kt.prototype,"size",2),v([y(U)],Kt.prototype,"x",2),v([y(U)],Kt.prototype,"y",2),v([y(U)],Kt.prototype,"z",2);var cs=class{get type(){return Vm[this.shapeType]}initialize(e){this.getPosition(),e.position.copy(this._vector)}toJSON(){return this}clone(){return new cs}shapeType=5;enabled=!0;alignToDirection=!1;angle=0;arc=360;arcSpread;arcSpeedMultiplier;arcMode;boxThickness;position;rotation;_rotation=new nx;scale;radius;radiusThickness;sphericalDirectionAmount;randomDirectionAmount;randomPositionAmount;system;_space;_worldSpaceMatrix=new Um;_worldSpaceMatrixInverse=new Um;update(e,t,i,n){this.system=e,this._space=i,i===1&&(this._worldSpaceMatrix.copy(n.matrixWorld),this._worldSpaceMatrix.elements[0]=1,this._worldSpaceMatrix.elements[5]=1,this._worldSpaceMatrix.elements[10]=1,this._worldSpaceMatrixInverse.copy(this._worldSpaceMatrix).invert())}updateRotation(){let e=this.rotation.x!==0||this.rotation.y!==0||this.rotation.z!==0;return e&&(this._rotation.x=H.toRadians(this.rotation.x),this._rotation.y=-H.toRadians(this.rotation.y),this._rotation.z=-H.toRadians(this.rotation.z)),e}_vector=new Je(0,0,0);_temp=new Je(0,0,0);get vector(){return this._vector}getPosition(){this._vector.set(0,0,0);let e=this._temp.copy(this.position),t=this._space===1;t&&e.applyQuaternion(this.system.worldQuaternion);let i=this.radius;if(t&&(i*=this.system.worldScale.x),this.enabled){switch(this.shapeType){case 5:this._vector.x=Math.random()*this.scale.x-this.scale.x/2,this._vector.y=Math.random()*this.scale.y-this.scale.y/2,this._vector.z=Math.random()*this.scale.z-this.scale.z/2,this._vector.add(e);break;case 4:this.randomConePoint(this.position,this.angle,i,this.radiusThickness,this.arc,this.arcMode,this._vector);break;case 0:this.randomSpherePoint(this.position,i,this.radiusThickness,this.arc,this._vector),this._vector.x*=this.scale.x,this._vector.y*=this.scale.y,this._vector.z*=this.scale.z;break;case 10:this.randomSpherePoint(this.position,i,this.radiusThickness,this.arc,this._vector),this._vector.x*=this.scale.x,this._vector.y*=this.scale.y,this._vector.z*=0;break;default:this._vector.set(0,0,0);break}this.randomizePosition(this._vector,this.randomPositionAmount)}this.updateRotation()&&this._vector.applyEuler(this._rotation),t&&this._vector.add(this.system.worldPos)}_dir=new Je;getDirection(e){if(!this.enabled)return this._dir.set(0,0,1),this._dir;switch(this.shapeType){case 5:this._dir.set(0,0,1);break;case 4:this._dir.set(0,0,1);break;case 10:case 0:let t=e.x,i=e.y,n=e.z;this._dir.set(t,i,n).sub(this.position);break;default:this._dir.set(0,0,1);break}return this._space===1&&this._dir.applyMatrix4(this._worldSpaceMatrixInverse),this.updateRotation()&&this._dir.applyEuler(this._rotation),this._dir.normalize(),this.spherizeDirection(this._dir,this.sphericalDirectionAmount),this.randomizeDirection(this._dir,this.randomDirectionAmount),this._dir}randomizePosition(e,t){if(t<=0)return;let i=cs._tempVec;i.set(Math.random()*2-1,Math.random()*2-1,Math.random()*2-1),i.x*=t*this.scale.x,i.y*=t*this.scale.y,i.z*=t*this.scale.z,e.add(i)}randomizeDirection(e,t){if(t===0)return;let i=cs._randomQuat,n=cs._tempVec;n.set(Math.random()-.5,Math.random()-.5,Math.random()-.5).normalize(),i.setFromAxisAngle(n,t*Math.random()*Math.PI),e.applyQuaternion(i)}spherizeDirection(e,t){if(t===0)return;let i=Math.random()*Math.PI*2,n=Math.acos(1-Math.random()*2),r=Math.sin(n)*Math.cos(i),s=Math.sin(n)*Math.sin(i),a=Math.cos(n),c=new Je(r,s,a);e.lerp(c,t)}randomSpherePoint(e,t,i,n,r){let s=Math.random(),a=Math.random(),c=2*Math.PI*s*(n/360),d=Math.acos(2*a-1),l=H.lerp(1,1-Math.pow(1-Math.random(),Math.PI),i)*t,u=e.x+-l*Math.sin(d)*Math.cos(c),h=e.y+l*Math.sin(d)*Math.sin(c),g=e.z+l*Math.cos(d);r.x=u,r.y=h,r.z=g}_loopTime=0;_loopDirection=1;randomConePoint(e,t,i,n,r,s,a){let c=0,d=0;switch(s){case 0:c=Math.random(),d=Math.random();break;case 2:this._loopTime>1&&(this._loopDirection=-1),this._loopTime<0&&(this._loopDirection=1);case 1:c=.5,d=Math.random(),this._loopTime+=this.system.deltaTime*this._loopDirection;break}let l=2*Math.PI*c*(r/360);switch(s){case 2:case 1:l+=Math.PI+.5,l+=this._loopTime*Math.PI*2,l%=H.toRadians(r);break}let u=Math.acos(2*d-1),h=H.lerp(1,1-Math.pow(1-Math.random(),Math.PI),n)*i,g=e.x+-h*Math.sin(u)*Math.cos(l),E=e.y+h*Math.sin(u)*Math.sin(l),_=e.z;a.x=g*this.scale.x,a.y=E*this.scale.y,a.z=_*this.scale.z}},ne=cs;I(ne,"_randomQuat",new ix),I(ne,"_tempVec",new Je),v([y()],ne.prototype,"shapeType",2),v([y()],ne.prototype,"enabled",2),v([y()],ne.prototype,"alignToDirection",2),v([y()],ne.prototype,"angle",2),v([y()],ne.prototype,"arc",2),v([y()],ne.prototype,"arcSpread",2),v([y()],ne.prototype,"arcSpeedMultiplier",2),v([y()],ne.prototype,"arcMode",2),v([y(Je)],ne.prototype,"boxThickness",2),v([y(Je)],ne.prototype,"position",2),v([y(Je)],ne.prototype,"rotation",2),v([y(Je)],ne.prototype,"scale",2),v([y()],ne.prototype,"radius",2),v([y()],ne.prototype,"radiusThickness",2),v([y()],ne.prototype,"sphericalDirectionAmount",2),v([y()],ne.prototype,"randomDirectionAmount",2),v([y()],ne.prototype,"randomPositionAmount",2);var K=class{damping;enabled;frequency;octaveCount;octaveMultiplier;octaveScale;positionAmount;quality;remap;remapEnabled;remapMultiplier;remapX;remapXMultiplier;remapY;remapYMultiplier;remapZ;remapZMultiplier;scrollSpeedMultiplier;separateAxes;strengthMultiplier;strengthX;strengthXMultiplier;strengthY;strengthYMultiplier;strengthZ;strengthZMultiplier;_noise;_time=0;update(e){this._time+=e.time.deltaTime*this.scrollSpeedMultiplier}_temp=new Je;apply(e,t,i,n,r,s){if(!this.enabled)return;this._noise||(this._noise=rx(()=>0));let a=this._temp.set(t.x,t.y,t.z).multiplyScalar(this.frequency),c=this._noise(a.x,a.y,a.z,this._time),d=this._noise(a.x,a.y,a.z,this._time+1e3*this.frequency),l=this._noise(a.x,a.y,a.z,this._time+2e3*this.frequency);this._temp.set(c,d,l).normalize();let u=r/s,h=this.positionAmount.evaluate(u);this.separateAxes?(this._temp.x*=h*this.strengthXMultiplier,this._temp.y*=h*this.strengthYMultiplier,this._temp.z*=h*this.strengthZMultiplier):(this.strengthX&&(h*=this.strengthX.evaluate(u)*1.5),this._temp.multiplyScalar(h)),i.x+=this._temp.x,i.y+=this._temp.y,i.z+=this._temp.z}};v([y()],K.prototype,"damping",2),v([y()],K.prototype,"enabled",2),v([y()],K.prototype,"frequency",2),v([y()],K.prototype,"octaveCount",2),v([y()],K.prototype,"octaveMultiplier",2),v([y()],K.prototype,"octaveScale",2),v([y(U)],K.prototype,"positionAmount",2),v([y()],K.prototype,"quality",2),v([y(U)],K.prototype,"remap",2),v([y()],K.prototype,"remapEnabled",2),v([y()],K.prototype,"remapMultiplier",2),v([y(U)],K.prototype,"remapX",2),v([y()],K.prototype,"remapXMultiplier",2),v([y(U)],K.prototype,"remapY",2),v([y()],K.prototype,"remapYMultiplier",2),v([y(U)],K.prototype,"remapZ",2),v([y()],K.prototype,"remapZMultiplier",2),v([y()],K.prototype,"scrollSpeedMultiplier",2),v([y()],K.prototype,"separateAxes",2),v([y()],K.prototype,"strengthMultiplier",2),v([y(U)],K.prototype,"strengthX",2),v([y()],K.prototype,"strengthXMultiplier",2),v([y(U)],K.prototype,"strengthY",2),v([y()],K.prototype,"strengthYMultiplier",2),v([y(U)],K.prototype,"strengthZ",2),v([y()],K.prototype,"strengthZMultiplier",2);var te=class{enabled;attachRibbonToTransform=!1;colorOverLifetime;colorOverTrail;dieWithParticles=!0;inheritParticleColor=!0;lifetime;lifetimeMultiplier;minVertexDistance=.2;mode=0;ratio=1;ribbonCount=1;shadowBias=0;sizeAffectsLifetime=!1;sizeAffectsWidth=!1;splitSubEmitterRibbons=!1;textureMode=0;widthOverTrail;widthOverTrailMultiplier;worldSpace=!1;getWidth(e,t,i){let n=this.widthOverTrail.evaluate(i);return i===0&&(n=e),e*=n,e}getColor(e,t,i){let n=this.colorOverTrail.evaluate(i),r=this.colorOverLifetime.evaluate(t);e.x*=n.r*r.r,e.y*=n.g*r.g,e.z*=n.b*r.b,e.w*=n.alpha*r.alpha}};v([y()],te.prototype,"enabled",2),v([y()],te.prototype,"attachRibbonToTransform",2),v([y(Me)],te.prototype,"colorOverLifetime",2),v([y(Me)],te.prototype,"colorOverTrail",2),v([y()],te.prototype,"dieWithParticles",2),v([y()],te.prototype,"inheritParticleColor",2),v([y(U)],te.prototype,"lifetime",2),v([y()],te.prototype,"lifetimeMultiplier",2),v([y()],te.prototype,"minVertexDistance",2),v([y()],te.prototype,"mode",2),v([y()],te.prototype,"ratio",2),v([y()],te.prototype,"ribbonCount",2),v([y()],te.prototype,"shadowBias",2),v([y()],te.prototype,"sizeAffectsLifetime",2),v([y()],te.prototype,"sizeAffectsWidth",2),v([y()],te.prototype,"splitSubEmitterRibbons",2),v([y()],te.prototype,"textureMode",2),v([y(U)],te.prototype,"widthOverTrail",2),v([y()],te.prototype,"widthOverTrailMultiplier",2),v([y()],te.prototype,"worldSpace",2);var He=class{enabled;space=0;speedModifier;speedModifierMultiplier;x;xMultiplier;y;yMultiplier;z;zMultiplier;_system;update(e){this._system=e}_temp=new Je;apply(e,t,i,n,r,s){if(!this.enabled)return;let a=r/s,c=this.speedModifier.evaluate(a)*this.speedModifierMultiplier,d=this.x.evaluate(a),l=this.y.evaluate(a),u=this.z.evaluate(a);this._temp.set(-d,l,u),this._system&&(this.space===1&&this._temp.applyQuaternion(this._system.worldQuaternionInverted),this._system.main.simulationSpace===1&&this._temp.applyQuaternion(this._system.worldQuaternion)),i.x+=this._temp.x,i.y+=this._temp.y,i.z+=this._temp.z,i.x*=c,i.y*=c,i.z*=c}};v([y()],He.prototype,"enabled",2),v([y()],He.prototype,"space",2),v([y(U)],He.prototype,"speedModifier",2),v([y()],He.prototype,"speedModifierMultiplier",2),v([y(U)],He.prototype,"x",2),v([y()],He.prototype,"xMultiplier",2),v([y(U)],He.prototype,"y",2),v([y()],He.prototype,"yMultiplier",2),v([y(U)],He.prototype,"z",2),v([y()],He.prototype,"zMultiplier",2);var xe=class{animation;enabled;cycleCount;frameOverTime;frameOverTimeMultiplier;numTilesX;numTilesY;startFrame;startFrameMultiplier;rowMode;rowIndex;spriteCount;timeMode;sampleOnceAtStart(){if(this.timeMode===0)switch(this.frameOverTime.mode){case 0:case 3:return!0}return!1}getStartIndex(){return this.sampleOnceAtStart()?this.frameOverTime.evaluate(Math.random()):0}evaluate(e){if(!this.sampleOnceAtStart())return this.getIndex(e)}getIndex(e){let t=this.numTilesX*this.numTilesY,i=this.frameOverTime.evaluate(e%1);return i*=this.frameOverTimeMultiplier,i*=t,i=i%t,i=Math.floor(i),i}};v([y()],xe.prototype,"animation",2),v([y()],xe.prototype,"enabled",2),v([y()],xe.prototype,"cycleCount",2),v([y(U)],xe.prototype,"frameOverTime",2),v([y()],xe.prototype,"frameOverTimeMultiplier",2),v([y()],xe.prototype,"numTilesX",2),v([y()],xe.prototype,"numTilesY",2),v([y(U)],xe.prototype,"startFrame",2),v([y()],xe.prototype,"startFrameMultiplier",2),v([y()],xe.prototype,"rowMode",2),v([y()],xe.prototype,"rowIndex",2),v([y()],xe.prototype,"spriteCount",2),v([y()],xe.prototype,"timeMode",2);var Ke=class{enabled;separateAxes;x;xMultiplier;y;yMultiplier;z;zMultiplier;evaluate(e){return this.enabled?this.separateAxes?0:this.z.evaluate(e)*-1:0}};v([y()],Ke.prototype,"enabled",2),v([y()],Ke.prototype,"separateAxes",2),v([y(U)],Ke.prototype,"x",2),v([y()],Ke.prototype,"xMultiplier",2),v([y(U)],Ke.prototype,"y",2),v([y()],Ke.prototype,"yMultiplier",2),v([y(U)],Ke.prototype,"z",2),v([y()],Ke.prototype,"zMultiplier",2);var Ne=class{enabled;range;separateAxes;x;xMultiplier;y;yMultiplier;z;zMultiplier;evaluate(e,t){if(!this.enabled)return 0;if(!this.separateAxes){let i=H.lerp(this.range.x,this.range.y,t);return this.z.evaluate(i)*-1}return 0}};v([y()],Ne.prototype,"enabled",2),v([y()],Ne.prototype,"range",2),v([y()],Ne.prototype,"separateAxes",2),v([y(U)],Ne.prototype,"x",2),v([y()],Ne.prototype,"xMultiplier",2),v([y(U)],Ne.prototype,"y",2),v([y()],Ne.prototype,"yMultiplier",2),v([y(U)],Ne.prototype,"z",2),v([y()],Ne.prototype,"zMultiplier",2);var de=class{enabled;dampen;drag;dragMultiplier;limit;limitMultiplier;separateAxes;limitX;limitXMultiplier;limitY;limitYMultiplier;limitZ;limitZMultiplier;multiplyDragByParticleSize=!1;multiplyDragByParticleVelocity=!1;space;_temp=new Je;_temp2=new Je;apply(e,t,i,n,r,s,a){if(!!this.enabled){let c=this.limit.evaluate(r)*this.limitMultiplier;if(t.length()>c){this._temp.copy(t).normalize().multiplyScalar(c);let l=this.dampen*.5;t.x=H.lerp(t.x,this._temp.x,l),t.y=H.lerp(t.y,this._temp.y,l),t.z=H.lerp(t.z,this._temp.z,l),i.x=H.lerp(i.x,this._temp.x,l),i.y=H.lerp(i.y,this._temp.y,l),i.z=H.lerp(i.z,this._temp.z,l)}}}};v([y()],de.prototype,"enabled",2),v([y()],de.prototype,"dampen",2),v([y(U)],de.prototype,"drag",2),v([y()],de.prototype,"dragMultiplier",2),v([y(U)],de.prototype,"limit",2),v([y()],de.prototype,"limitMultiplier",2),v([y()],de.prototype,"separateAxes",2),v([y(U)],de.prototype,"limitX",2),v([y()],de.prototype,"limitXMultiplier",2),v([y(U)],de.prototype,"limitY",2),v([y()],de.prototype,"limitYMultiplier",2),v([y(U)],de.prototype,"limitZ",2),v([y()],de.prototype,"limitZMultiplier",2),v([y()],de.prototype,"multiplyDragByParticleSize",2),v([y()],de.prototype,"multiplyDragByParticleVelocity",2),v([y()],de.prototype,"space",2);var Jt=class{enabled;curve;curveMultiplier;mode;system;_lastWorldPosition;_velocity=new Je;_temp=new Je;update(e){!this.enabled||this.system.worldspace!==!1&&(this._lastWorldPosition?(this._velocity.copy(this.system.worldPos).sub(this._lastWorldPosition).multiplyScalar(1/this.system.deltaTime),this._lastWorldPosition.copy(this.system.worldPos)):(this._velocity.set(0,0,0),this._lastWorldPosition=this.system.worldPos.clone()))}applyInitial(e){if(!!this.enabled&&this.system.worldspace!==!1&&this.mode===0){let t=this.curve.evaluate(Math.random(),Math.random());this._temp.copy(this._velocity).multiplyScalar(t),e.add(this._temp)}}applyCurrent(e,t,i){if(!!this.enabled&&this.system.worldspace!==!1&&this.mode===1){let n=this.curve.evaluate(t,i);this._temp.copy(this._velocity).multiplyScalar(n),e.add(this._temp)}}};v([y()],Jt.prototype,"enabled",2),v([y(U)],Jt.prototype,"curve",2),v([y()],Jt.prototype,"curveMultiplier",2),v([y()],Jt.prototype,"mode",2);var ke=class{enabled;range;separateAxes;size;sizeMultiplier;x;xMultiplier;y;yMultiplier;z;zMultiplier;evaluate(e,t,i,n){let r=e.length(),s=H.remap(r,this.range.x,this.range.y,0,1),a=this.size.evaluate(s,i);return n*a}};v([y()],ke.prototype,"enabled",2),v([y(Gm)],ke.prototype,"range",2),v([y()],ke.prototype,"separateAxes",2),v([y(U)],ke.prototype,"size",2),v([y()],ke.prototype,"sizeMultiplier",2),v([y(U)],ke.prototype,"x",2),v([y()],ke.prototype,"xMultiplier",2),v([y(U)],ke.prototype,"y",2),v([y()],ke.prototype,"yMultiplier",2),v([y(U)],ke.prototype,"z",2),v([y()],ke.prototype,"zMultiplier",2);var Ti=class{enabled;range;color;evaluate(e,t,i){let n=e.length(),r=H.remap(n,this.range.x,this.range.y,0,1),s=this.color.evaluate(r,t);i.x*=s.r,i.y*=s.g,i.z*=s.b,i.w*=s.alpha}};v([y()],Ti.prototype,"enabled",2),v([y(Gm)],Ti.prototype,"range",2),v([y(Me)],Ti.prototype,"color",2);var io=class extends ze{},ds=class extends M{deleteBoxes=[];awake(){this.deleteBoxes=R.findObjectsOfType(io,this.context)}update(){for(let e of this.deleteBoxes){let t=this.gameObject;e.isInBox(t)===!0&&(R.getComponentInParent(this.gameObject,Vt)||Ro(this.gameObject,this.context.connection))}}};var no=class extends M{visibleOn;onEnable(){this.apply()}apply(){this.test()||R.setActive(this.gameObject,!1)}test(){return this.visibleOn<0?!0:ox()?(this.visibleOn&2)!==0:(this.visibleOn&1)!==0}};v([y()],no.prototype,"visibleOn",2);var uc;function ox(){if(uc===!0||uc===!1)return uc;let o=!1;return function(e){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4)))&&(o=!0)}(navigator.userAgent||navigator.vendor||window.opera),uc=o,o}import*as Y from"three";var $u=!1;var Hn=class extends Gt{static get HasAnySelected(){return this._active>0}transformSelf=!0;orbit=null;selectStartEventListener=[];selectEndEventListener=[];constructor(){super(),this.selectStartEventListener=[],this.selectEndEventListener=[],this._dragDelta=new Y.Vector2}addDragEventListener(e,t){switch(e){case"selectstart":this.selectStartEventListener.push(t);break;case"selectend":this.selectEndEventListener.push(t);break}}_dragHelper=null;start(){this.orbit=R.findObjectOfType(nt,this.context)}_draggingRigidbodies=[];allowEdit(e=null){return this.context.connection.allowEditing}onPointerEnter(e){if(!this.allowEdit(this.gameObject)||V.IsInWebXR)return;let t=R.getComponentInParent(e.object,Hn);!t||t!==this||(Hn.lastHovered=e.object,this.context.domElement.style.cursor="pointer")}onPointerExit(e){!this.allowEdit(this.gameObject)||V.IsInWebXR||Hn.lastHovered===e.object&&(this.context.domElement.style.cursor="auto")}_waitingForDragStart=null;onPointerDown(e){!this.allowEdit(this.gameObject)||V.IsInWebXR||(Hn._active+=1,this._dragDelta.set(0,0),this._didDrag=!1,this._waitingForDragStart=e,e.StopPropagation(),this.orbit&&(this.orbit.enabled=!1))}onPointerUp(e){this._waitingForDragStart=null,this.allowEdit(this.gameObject)&&(Hn._active>0&&(Hn._active-=1),!V.IsInWebXR&&(this.onDragEnd(e),e.StopPropagation(),this.orbit&&(this.orbit.enabled=!0)))}update(){if(!V.IsInWebXR){if(this._waitingForDragStart){if(!this._didDrag){let t=this.context.input.getPointerPositionDelta(0);if(t&&this._dragDelta.add(t),this._dragDelta.length()>2)this._didDrag=!0;else return}let e=this._waitingForDragStart;this._waitingForDragStart=null,this.onDragStart(e)}this._dragHelper&&this._dragHelper.hasSelected&&this.onUpdateDrag(),this._isDragging&&this._dragHelper?.hasSelected===!1&&this.onDragEnd(null)}}_isDragging=!1;_marker=null;_dragDelta;_didDrag=!1;onDragStart(e){if(!this._dragHelper)if(this.context.mainCamera)this._dragHelper=new hc(this.context.mainCamera);else return;if(!e||!e.object)return;let t=R.getComponentInParent(e.object,Hn);if(!t||t!==this)return;let i=e.object;this.transformSelf&&(i=this.gameObject);let n={selected:i,attached:i};for(let c of this.selectStartEventListener)c(this,n);if(!n.attached)return;n.attached,i=n.attached,this._isDragging=!0,this._dragHelper.setSelected(i,this.context),this.orbit&&(this.orbit.enabled=!1);let r=R.getComponentInChildren(i,St);$u&&console.log("DRAG START",r,i),r&&(r.fastMode=!0,r?.requestOwnership()),this._marker=R.addNewComponent(i,Vt),this._draggingRigidbodies.length=0;let s=R.getComponentsInChildren(i,J);s&&this._draggingRigidbodies.push(...s);let a=Kc();R.invokeOnChildren(this._dragHelper.selected,a("onDragStart"))}onUpdateDrag(){if(!!this._dragHelper){this._dragHelper.onUpdate(this.context);for(let e of this._draggingRigidbodies)e.wakeUp(),e.resetVelocities()}}onDragEnd(e){if(!this||!this._isDragging||(this._isDragging=!1,!this._dragHelper))return;for(let n of this._draggingRigidbodies)n.setVelocity(n.smoothedVelocity);this._draggingRigidbodies.length=0;let t=this._dragHelper.selected;if($u&&console.log("DRAG END",t,t?.visible),this._dragHelper.setSelected(null,this.context),this.orbit&&(this.orbit.enabled=!0),e?.object){let n=R.getComponentInChildren(e.object,St);n&&(n.fastMode=!1),this._marker&&this._marker.destroy()}for(let n of this.selectEndEventListener)n(this);let i=Kc();R.invokeOnChildren(t,i("onDragEnd"))}},Ki=Hn;I(Ki,"_active",0),I(Ki,"lastHovered");var eh=class{get hasSelected(){return this._selected!==null&&this._selected!==void 0}get selected(){return this._selected}_selected=null;_context=null;_camera;_cameraPlane=new Y.Plane;_hasGroundPlane=!1;_groundPlane=new Y.Plane;_groundOffset=new Y.Vector3;_groundOffsetFactor=0;_groundDistance=0;_groundPlanePoint=new Y.Vector3;_raycaster=new Y.Raycaster;_cameraPlaneOffset=new Y.Vector3;_intersection=new Y.Vector3;_worldPosition=new Y.Vector3;_inverseMatrix=new Y.Matrix4;_rbs=[];_groundLine;_groundMarker;constructor(e){this._camera=e;let t=new Y.Line(eh.geometry),i=t.material;i.color=new Y.Color(.4,.4,.4),t.layers.set(2),t.name="line",t.scale.y=1,this._groundLine=t;let n=new Y.SphereGeometry(.5,22,22),r=new Y.MeshBasicMaterial({color:i.color}),s=new Y.Mesh(n,r);s.visible=!1,s.layers.set(2),this._groundMarker=s}setSelected(e,t){if(this._selected&&t)for(let i of this._rbs)i.wakeUp(),i.setVelocity(0,0,0);if(this._selected&&ye.Remove(t,this._selected),this._selected=e,this._context=t,this._rbs.length=0,e?(t.scene.add(this._groundLine),t.scene.add(this._groundMarker)):(this._groundLine.removeFromParent(),this._groundMarker.removeFromParent()),this._selected){if(!t){console.error("DragHelper: no context");return}ye.Add(t,this._selected,null),this._groundOffsetFactor=0,this._hasGroundPlane=!0,this._groundOffset.set(0,0,0),this._requireUpdateGroundPlane=!0,this.onUpdateScreenSpacePlane()}}_groundOffsetVector=new Y.Vector3(0,1,0);_requireUpdateGroundPlane=!0;_didDragOnGroundPlaneLastFrame=!1;onUpdate(e){if(!this._context)return;let t=" ",i="d",n="s",r=this._context?.input.isKeyPressed(t)||this._context?.input.isKeyPressed(i),s=this._context.input.getTouchesPressedCount()>=2||r;if(s){let c=this._context.input.getPointerPositionDelta(0);c&&(this._groundOffsetVector.set(0,1,0),this._selected?.rotateOnWorldAxis(this._groundOffsetVector,c.x*this._context.time.deltaTime))}let a=this._context.input.getPointerPositionRC(0);if(!!a&&(this._raycaster.setFromCamera(a,this._camera),this._selected)){$u&&console.log("UPDATE DRAG",this._selected),this._groundOffsetVector.set(0,1,0);let c=B(this._camera).clone().sub(B(this._selected)).normalize(),d=Math.abs(c.dot(this._groundOffsetVector)),l=this._context?.input.isKeyPressed(t)||this._context?.input.isKeyPressed(i),u=!s&&d>.2&&!l&&this._context.input.getPointerPressedCount()<=1,h=this._didDragOnGroundPlaneLastFrame!==u;if(this._didDragOnGroundPlaneLastFrame=u,this._hasGroundPlane||(this._requireUpdateGroundPlane=!0),(this._requireUpdateGroundPlane||!u||h)&&this.onUpdateGroundPlane(),this._requireUpdateGroundPlane=!1,this._hasGroundPlane)if(this._raycaster.ray.intersectPlane(this._groundPlane,this._intersection)){let g=this._intersection.y;if(this._groundPlanePoint.copy(this._intersection).sub(this._groundOffset),this._groundPlanePoint.y=g,u){this._groundOffsetVector.set(0,1,0);let E=this._intersection.sub(this._groundOffset).add(this._groundOffsetVector.multiplyScalar(this._groundOffsetFactor));this.onUpdateWorldPosition(E,this._groundPlanePoint,!1),this.onDidUpdate();return}}else this._groundPlanePoint.set(0,99999,0);h&&this.onUpdateScreenSpacePlane(),this._requireUpdateGroundPlane=!0,this._raycaster.ray.intersectPlane(this._cameraPlane,this._intersection)&&(this.onUpdateWorldPosition(this._intersection.sub(this._cameraPlaneOffset),this._groundPlanePoint,!0),this.onDidUpdate())}}onUpdateWorldPosition(e,t,i){if(!!this._selected){if(i){let n=B(this._selected);n.y=e.y,e=n}if(ie(this._selected,e),ie(this._groundLine,e),this._hasGroundPlane?this._groundLine.scale.y=this._groundDistance:this._groundLine.scale.y=1e3,this._groundMarker.visible=t!==null,t){let n=B(this._camera).distanceTo(t)*.01;this._groundMarker.scale.set(n,n,n),ie(this._groundMarker,t)}}}onUpdateScreenSpacePlane(){if(!this._selected||!this._context)return;let e=this._context.input.getPointerPositionRC(0);!e||(this._raycaster.setFromCamera(e,this._camera),this._cameraPlane.setFromNormalAndCoplanarPoint(this._camera.getWorldDirection(this._cameraPlane.normal),this._worldPosition.setFromMatrixPosition(this._selected.matrixWorld)),this._raycaster.ray.intersectPlane(this._cameraPlane,this._intersection)&&this._selected.parent&&(this._inverseMatrix.copy(this._selected.parent.matrixWorld).invert(),this._cameraPlaneOffset.copy(this._intersection).sub(this._worldPosition.setFromMatrixPosition(this._selected.matrixWorld))))}onUpdateGroundPlane(){if(!this._selected||!this._context)return;let e=B(this._selected),t=new Y.Ray(new Y.Vector3(0,.1,0).add(e),new Y.Vector3(0,-1,0)),i=new be;i.ignore=[this._selected];let n=this._context.physics.raycastFromRay(t,i);for(let r=0;r<n.length;r++){let s=n[r];if(!s.face||this.contains(this._selected,s.object))continue;let a=new Y.Vector3(0,1,0);this._groundPlane.setFromNormalAndCoplanarPoint(a,s.point);break}this._hasGroundPlane=!0,this._groundPlane.setFromNormalAndCoplanarPoint(t.direction.multiplyScalar(-1),t.origin),this._raycaster.ray.intersectPlane(this._groundPlane,this._intersection),this._groundDistance=this._intersection.distanceTo(e),this._groundOffset.copy(this._intersection).sub(e)}onDidUpdate(){oe.markDirty(this._selected);for(let e of this._rbs)e.wakeUp(),e.resetForcesAndTorques(),e.setAngularVelocity(0,0,0)}contains(e,t){if(e===t)return!0;if(e.children){for(let i of e.children)if(this.contains(i,t))return!0}return!1}},hc=eh;I(hc,"geometry",new Y.BufferGeometry().setFromPoints([new Y.Vector3(0,0,0),new Y.Vector3(0,-1,0)]));var Si=class extends M{url=null;urlParameterName=null;localhost=null;awake(){this.context.connection.registerProvider(this)}getWebsocketUrl(){let e=this.url?Si.GetUrl(this.url,this.localhost):null;if(this.urlParameterName){let r=P(this.urlParameterName);r&&typeof r=="string"&&(e=r)}if(!e)return null;let i=new RegExp("(((https?)|(?<socket_prefix>wss?))://)?(www.)?(?<url>.+)","gm").exec(e);return i?.groups?i?.groups.socket_prefix?e:"wss://"+i?.groups.url:null}static GetUrl(e,t){let i=e,n=Si.IsLocalNetwork()&&t;return n&&(i=t),e?.startsWith("/")&&(i=(n?i:window.location.origin)+e),i}static IsLocalNetwork(e=window.location.hostname){return lt(e)}};var mr=class extends M{filesBackendUrl;localhost;_dragOver;_drop;onEnable(){this.filesBackendUrl=this.filesBackendUrl?Si.GetUrl(this.filesBackendUrl,this.localhost):void 0,this._dragOver=this.onDrag.bind(this),this._drop=this.onDrop.bind(this),this.context.domElement.addEventListener("dragover",this._dragOver),this.context.domElement.addEventListener("drop",this._drop)}onDisable(){this.context.domElement.removeEventListener("dragover",this._dragOver),this.context.domElement.removeEventListener("drop",this._drop)}onDrag(e){e.preventDefault()}async onDrop(e){if(console.log(e),!e.dataTransfer)return;e.preventDefault();let t=e.dataTransfer.items;if(!!t)for(let i in t){let n=t[i];if(n.kind==="file"){let r=n.getAsFile();if(!r)continue;console.log("Register file "+r.name+" to",this.filesBackendUrl,r);let s=await Df(r,this.context,this.filesBackendUrl);s&&this.addObject(e,s)}else n.kind==="string"&&n.type=="text/plain"&&n.getAsString(async r=>{console.log("dropped url",r);try{let s=new URL(r);if(!s)return;let a=await Lf(s,this.context);a&&this.addObject(e,a)}catch{console.log("dropped string is not a valid URL!",r)}})}}async addObject(e,t){console.log("Dropped",t);let i=new be;i.setMask(16777215),i.screenPointFromOffset(e.offsetX,e.offsetY);let n=this.context.physics.raycast(i),r=t.scene;if(n&&n.length>0)for(let s of n){r.position.copy(s.point);break}this.gameObject.add(r),this.dispatchEvent(new CustomEvent("object-added",{detail:t}))}};v([y()],mr.prototype,"filesBackendUrl",2),v([y()],mr.prototype,"localhost",2);import{Vector3 as sx,Quaternion as ax,Object3D as zm}from"three";var Ji=class extends Gt{parent=null;object=null;limitCount=10;limitInterval=60;_currentCount=0;_startPosition=null;_startQuaternion=null;awake(){if(this.object){if(this.object===this.gameObject){console.error("Can not duplicate self");return}this.object.visible=!1,this._startPosition=this.object.position?.clone()??new sx(0,0,0),this._startQuaternion=this.object.quaternion?.clone()??new ax(0,0,0,1)}let e=R.getComponentInParent(this.gameObject,Ki);e?e.addDragEventListener("selectstart",(t,i)=>{if(this._currentCount>=this.limitCount){i.attached=null;return}let n=this.handleDuplication(i.selected);n&&(console.assert(n!==i.selected,"Duplicated object is original"),i.attached=n)}):console.warn("Could no find drag controls in parent",this.name),Z.addEventListener("select-start",(t,i)=>{if(this._currentCount>=this.limitCount){i.grab=null;return}let n=this.handleDuplication(i.selected);n&&(i.grab=n)}),this.cloneLimitIntervalFn()}cloneLimitIntervalFn(){this.destroyed||(this._currentCount>0&&(this._currentCount-=1),setTimeout(()=>{this.cloneLimitIntervalFn()},this.limitInterval/this.limitCount*1e3))}handleDuplication(e){if(this._currentCount>=this.limitCount||!this.object)return null;if(e===this.gameObject||this.handleMultiObject(e)){if(this.object===this.gameObject)return null;this.object.visible=!0,this._startPosition&&this.object.position.copy(this._startPosition),this._startQuaternion&&this.object.quaternion.copy(this._startQuaternion);let t=new Ue;this.parent||(this.parent=this.gameObject.parent),this.parent&&(t.parent=this.parent.guid??this.parent.userData?.guid,t.keepWorldPosition=!0),t.position=this.worldPosition,t.rotation=this.worldQuaternion,t.context=this.context,this._currentCount+=1;let i=R.instantiateSynced(this.object,t);return console.assert(i!==this.object,"Duplicated object is original"),this.object.visible=!1,this._startPosition&&this.object.position.clone().copy(this._startPosition),this._startQuaternion&&this.object.quaternion.clone().copy(this._startQuaternion),i}return null}handleMultiObject(e){return this.gameObject.type==="Group"||this.gameObject.type==="Object3D"?this.isInChildren(this.gameObject,e):!1}isInChildren(e,t){if(!e)return!1;if(e===t)return!0;if(e.children){for(let i of e.children)if(this.isInChildren(i,t))return!0}return!1}};v([y(zm)],Ji.prototype,"parent",2),v([y(zm)],Ji.prototype,"object",2),v([y()],Ji.prototype,"limitCount",2),v([y()],Ji.prototype,"limitInterval",2);var va=class{eventID;callback};v([y()],va.prototype,"eventID",2),v([y(ue)],va.prototype,"callback",2);var ro=class extends M{triggers;invoke(e){if(!!this.triggers)for(let t of this.triggers)t.eventID===e&&t.callback.invoke()}onPointerClick(e){this.invoke(4)}onPointerEnter(e){this.invoke(0)}onPointerExit(e){this.invoke(1)}onPointerDown(e){this.invoke(2)}onPointerUp(e){this.invoke(3)}};v([y(va)],ro.prototype,"triggers",2);import*as $i from"three";import*as ya from"three";var Fn=class{get lightmap(){return this.lightmapTexture}set lightmap(e){e!==this.lightmapTexture&&(this.lightmapTexture=e,this.setupLightmap())}lightmapIndex=-1;lightmapScaleOffset=new ya.Vector4(1,1,0,0);context;gameObject;lightmapTexture=null;lightmapScaleOffsetUniform={value:new ya.Vector4(1,1,0,0)};lightmapUniform={value:null};beforeRenderCallback;constructor(e,t){this.gameObject=e,this.context=t}init(e,t,i,n=!1){if(console.assert(this.gameObject!==void 0&&this.gameObject!==null,"Missing gameobject",this),this.lightmapIndex=e,this.lightmapIndex<0)return;this.lightmapScaleOffset=t,this.lightmapTexture=i,n&&this.setLightmapDebugMaterial(),this.setupLightmap()}bindOnBeforeRender(){this.beforeRenderCallback=this.onBeforeRenderThreeComplete.bind(this),this.context.addBeforeRenderListener(this.gameObject,this.beforeRenderCallback)}onBeforeRenderThreeComplete(e,t,i,n,r,s){this.onBeforeRenderThree(r)}setupLightmap(){if(this.gameObject.type==="Object3D")return;if(this.gameObject.type==="Group"){console.warn("Lightmap on multimaterial object is not supported yet... please ask kindly for implementation.");return}console.assert(this.gameObject.type==="Mesh","Lightmap only works on meshes",this);let e=this.gameObject;e.geometry.getAttribute("uv2")||e.geometry.setAttribute("uv2",e.geometry.getAttribute("uv"));let t=this.gameObject.material.clone();if(this.gameObject.material=t,this.gameObject.material.onBeforeCompile=(i,n)=>{i.uniforms.lightmap=this.lightmapUniform,i.uniforms.lightmapScaleOffset=this.lightmapScaleOffsetUniform},this.lightmapIndex>=0){let i=this.lightmapTexture,n=this.gameObject.material;n&&i&&(n.uniforms||(n.uniforms={}),n.lightMap=i,n.uniforms.lightmap={value:i})}}onBeforeRenderThree(e){let t=e.uniforms;t&&t.lightmap&&(this.lightmapScaleOffsetUniform.value=this.lightmapScaleOffset,this.lightmapUniform.value=this.lightmapTexture,t.lightmap=this.lightmapUniform,t.lightmapScaleOffset=this.lightmapScaleOffsetUniform)}setLightmapDebugMaterial(){this.gameObject.material=new ya.ShaderMaterial({vertexShader:`
213
+ `;function Zv(o){if(Ju.has(o))return Ju.get(o);{let e=document.createElement("div");e.classList.add(Ui),e.classList.add("desktop"),e.classList.add("debug-container"),e.style.position="absolute",e.style.top="0",e.style.right="5px",e.style.paddingTop="0px",e.style.maxWidth="70%",e.style.maxHeight="calc(100% - 5px)",e.style.zIndex="1000",e.style.pointerEvents="scroll",e.style.display="flex",e.style.alignItems="end",e.style.flexDirection="column",e.style.color="white",e.style.overflow="auto",o.appendChild(e),Ju.set(o,e);let t=document.createElement("style");return t.innerHTML=Jv,e.appendChild(t),e}}var $f=Symbol("logtype"),Hl=new Map;function $v(o){o.remove();let e=o[$f],t=Hl.get(e)??[];t.push(o),Hl.set(e,t)}function ey(o,e){if(Hl.has(o)){let i=Hl.get(o);if(i.length>0){let n=i.pop();return n.innerHTML=e,n}}let t=document.createElement("div");switch(t.style.marginRight="5px",t.style.padding=".5em",t.style.backgroundColor="rgba(0,0,0,.9)",t.style.marginTop="5px",t.style.marginBottom="3px",t.style.borderRadius="8px",t.style.pointerEvents="all",t.style.userSelect="text",t.style.maxWidth="250px",t.style.whiteSpace="pre-wrap",t.style["backdrop-filter"]="blur(10px)",t.style.backgroundColor="rgba(20,20,20,.8)",t.style.boxShadow="inset 0 0 80px rgba(0,0,0,.2), 0 0 5px rgba(0,0,0,.2)",t.style.border="1px solid rgba(160,160,160,.2)",t[$f]=o,o){case 0:t.classList.add("log"),t.style.color="rgba(200,200,200,.7)",t.style.backgroundColor="rgba(40,40,40,.7)";break;case 1:t.classList.add("warn"),t.style.color="rgb(255, 255, 150)",t.style.backgroundColor="rgba(50,50,20,.8)";break;case 2:t.classList.add("error"),t.style.color="rgb(255, 50, 50",t.style.backgroundColor="rgba(50,20,20,.8)";break}return t.title="Open the browser console (F12) for more information",t.innerHTML=e,t}var ed={};cp(ed,{Behaviour:()=>M,Component:()=>Tt,GameObject:()=>R});import*as tt from"three";var R=class extends tt.Object3D{guid;static setActive(e,t,i=!0,n=!0){!e||(Io(e,t,n),Ro(e),t&&i&&el(G.Current,e))}static isActiveSelf(e){return gn(e)}static isActiveInHierarchy(e){return lf(e)}static markAsInstancedRendered(e,t){cf(e,t)}static isUsingInstancing(e){return ul(e)}static foreachComponent(e,t,i=!0){return ai(e,t,i)}static instantiateSynced(e,t){return e?rl(e,t):null}static instantiate(e,t=null){return Dr(e,t)}static destroySynced(e,t,i=!0){if(!e)return;let n=e;t=t??G.Current,So(n,t.connection,i)}static destroy(e,t=!0,i=!0){return si(e,t,i)}static add(e,t,i){if(!(!e||!t)){if(e===t){console.warn("Can not add object to self",e);return}i||(i=G.Current),t.add(e),Io(e,!0),Ro(e),i?R.foreachComponent(e,n=>{bu(n,i),!n.__internalDidAwakeAndStart&&i.new_script_start.includes(n)===!1&&i.new_script_start.push(n)},!0):console.warn("Missing context")}}static remove(e){!e||(e.parent?.remove(e),Io(e,!1),Ro(e),R.foreachComponent(e,t=>{jp(t)},!0))}static invokeOnChildren(e,t,...i){this.invoke(e,t,!0,i)}static invoke(e,t,i=!1,...n){!e||this.foreachComponent(e,r=>{let s=r[t];s&&typeof s=="function"&&s.bind(r)(...n)},i)}static addNewComponent(e,t,i=!0){let n=new t;return Xn(e,n,i),n}static addComponent(e,t){if(t.gameObject==null)throw new Error("Did you mean to create a new component? Use addNewComponent");tf(e,t)}static removeComponent(e){return sl(e.gameObject,e),e}static getOrAddComponent(e,t){return al(e,t)}static getComponent(e,t){return e===null?null:Lr(e,t)}static getComponents(e,t,i=null){return e===null?i??[]:Oo(e,t,i)}static findByGuid(e,t){return Ar(e,t)}static findObjectOfType(e,t,i=!0){return of(e,t??G.Current,i)}static findObjectsOfType(e,t){let i=[];return sf(e,i,t),i}static getComponentInChildren(e,t){return jr(e,t)}static getComponentsInChildren(e,t,i=null){return ko(e,t,i??void 0)}static getComponentInParent(e,t){return Po(e,t)}static getComponentsInParent(e,t,i=null){return Ks(e,t,i)}static getAllComponents(e){return[...e.userData?.components]}static*iterateComponents(e){let t=e?.userData?.components;if(t&&Array.isArray(t))for(let i=0;i<t.length;i++)yield t[i]}},ci=class{get isComponent(){return!0}__context;get context(){return this.__context??G.Current}set context(e){this.__context=e}get scene(){return this.context.scene}get layer(){return this.gameObject?.userData?.layer}get name(){return this.gameObject?.userData.name}__name;set name(e){this.gameObject?(this.gameObject.userData||(this.gameObject.userData={}),this.gameObject.userData.name=e,this.__name=e):this.__name=e}get tag(){return this.gameObject?.userData.tag}set tag(e){this.gameObject&&(this.gameObject.userData.tag=e)}get static(){return this.gameObject?.userData.static}get hideFlags(){return this.gameObject?.userData.hideFlags}get activeAndEnabled(){return!(this.destroyed||this.__isEnabled===!1||!this.__isActiveInHierarchy)}get __isActive(){return this.gameObject.visible}get __isActiveInHierarchy(){if(!this.gameObject)return!1;let e=this.gameObject[ji];return e===void 0?!0:e}set __isActiveInHierarchy(e){!this.gameObject||(this.gameObject[ji]=e)}gameObject;guid="invalid";sourceId;awake(){}onEnable(){}onDisable(){}onDestroy(){this.__destroyed=!0}startCoroutine(e,t=1){return this.context.registerCoroutineUpdate(this,e,t)}stopCoroutine(e,t=1){this.context.unregisterCoroutineUpdate(e,t)}get destroyed(){return this.__destroyed}destroy(){this.__destroyed||this.__internalDestroy()}__didAwake=!1;__didStart=!1;__didEnable=!1;__isEnabled=void 0;__destroyed=!1;get __internalDidAwakeAndStart(){return this.__didAwake&&this.__didStart}constructor(){this.__internalNewInstanceCreated()}__internalNewInstanceCreated(){this.__didAwake=!1,this.__didStart=!1,this.__didEnable=!1,this.__isEnabled=void 0,this.__destroyed=!1}__internalAwake(){this.__didAwake||(this.__didAwake=!0,this.awake())}__internalStart(){this.__didStart||(this.__didStart=!0,this.start&&this.start())}__internalEnable(){return this.__didEnable?!1:(this.__didEnable=!0,this.onEnable(),this.__isEnabled=!0,!0)}__internalDisable(){!this.__didEnable||(this.__didEnable=!1,this.onDisable(),this.__isEnabled=!1)}__internalDestroy(){this.__destroyed||(this.__destroyed=!0,this.destroy?.call(this),nf(this))}get enabled(){return this.__isEnabled??!0}set enabled(e){if(typeof e=="number"&&(e>=.5?e=!0:e=!1),!this.__didAwake){this.__isEnabled=e;return}e?this.__internalEnable():this.__internalDisable()}_worldPosition=void 0;_worldQuaternion=void 0;_worldEuler=void 0;_worldRotation=void 0;get worldPosition(){return this._worldPosition||(this._worldPosition=new tt.Vector3),B(this.gameObject,this._worldPosition),this._worldPosition}set worldPosition(e){ie(this.gameObject,e)}setWorldPosition(e,t,i){ci._worldPositionBuffer.set(e,t,i),this.worldPosition=ci._worldPositionBuffer}get worldQuaternion(){return this._worldQuaternion||(this._worldQuaternion=new tt.Quaternion),me(this.gameObject,this._worldQuaternion)}set worldQuaternion(e){Ze(this.gameObject,e)}setWorldQuaternion(e,t,i,n){ci._worldQuaternionBuffer.set(e,t,i,n),this.worldQuaternion=ci._worldQuaternionBuffer}get worldEuler(){return this._worldEuler||(this._worldEuler=new tt.Euler),this._worldEuler.setFromQuaternion(this.worldQuaternion),this._worldEuler}set worldEuler(e){this._worldQuaternion||(this._worldQuaternion=new tt.Quaternion),this._worldQuaternion?.setFromEuler(e),this.worldQuaternion=this._worldQuaternion}get worldRotation(){let e=this.worldEuler;this._worldRotation||(this._worldRotation=new tt.Vector3);let t=this._worldRotation;return t.set(e.x,e.y,e.z),t.x=H.toDegrees(t.x),t.y=H.toDegrees(t.y),t.z=H.toDegrees(t.z),t}set worldRotation(e){this.setWorldRotation(e.x,e.y,e.z,!0)}setWorldRotation(e,t,i,n=!0){n&&(e=H.toRadians(e),t=H.toRadians(t),i=H.toRadians(i)),ci._worldEulerBuffer.set(e,t,i),ci._worldQuaternionBuffer.setFromEuler(ci._worldEulerBuffer),this.worldQuaternion=ci._worldQuaternionBuffer}get forward(){return ci._forward.set(0,0,-1).applyQuaternion(this.worldQuaternion)}_eventListeners=new Map;addEventListener(e,t){this._eventListeners[e]=this._eventListeners[e]||[],this._eventListeners[e].push(t)}removeEventListener(e,t){if(!this._eventListeners[e])return;let i=this._eventListeners[e].indexOf(t);i>=0&&this._eventListeners[e].splice(i,1)}dispatchEvent(e){if(!this._eventListeners[e.type])return!1;let t=this._eventListeners[e.type];for(let i=0;i<t.length;i++)t[i](e);return!1}},Tt=ci;I(Tt,"_worldPositionBuffer",new tt.Vector3),I(Tt,"_worldQuaternionBuffer",new tt.Quaternion),I(Tt,"_worldEulerBuffer",new tt.Euler),I(Tt,"_tempQuaternionBuffer2",new tt.Quaternion),I(Tt,"_forward",new tt.Vector3);var M=class extends Tt{};var ui=function(o,e){return function(t,i,n){ty(t,i,n,o,e)}};function ty(o,e,t,i,n){if(!(!n&&!i&&!o.onValidate)){if(t!==void 0){console.error("Invalid usage of validate decorator. Only fields can be validated.",o,e,t),Fe("Invalid usage of validate decorator. Only fields can be validated. Property: "+e,2);return}if(o.__internalAwake){let r=Symbol(e),s=o.__internalAwake;o.__internalAwake=function(){this[r]===void 0&&(this[r]=this[e],Object.defineProperty(this,e,{set:function(a){if(this[qa]===!0)this[r]=a;else{i?.call(this,a);let c=this[r];this[r]=a,this.onValidate?.call(this,e,c)}},get:function(){return n?.call(this),this[r]}})),s.call(this)}}}}var Bo=P("debugloadingbar"),iy=P("debugloadingbarrendering");var na=0,em;function td(o){Bo&&console.log(o.progress.loaded.toFixed(0)+"/"+o.progress.total.toFixed(0),o);let e=o.count,t=o.progress.total;t===0||t===void 0?(em!==o.name&&(na=0),em=o.name,na+=(1-na)*.001,Bo&&wo("Loading "+o.name+" did not report total size")):na=o.progress.loaded/t;let i=o.index/e+na/e;return H.clamp01(i)}var Fl=class{loadingProgress=0;container;_progress=0;_allowCustomLoadingElement=!0;_loadingElement;_loadingTextContainer=null;_loadingBar=null;_messageContainer=null;_loadingElementOptions;constructor(e,t){this.container=e,this._loadingElementOptions=t}onLoadingBegin(e){if(Bo&&console.log("Begin Loading"),!this._loadingElement){for(let t=0;t<this.container.children.length;t++){let i=this.container.children[t];if(i.classList.contains(Fl.LoadingContainerClassName)){if(!this._allowCustomLoadingElement){Bo&&console.warn("Remove custom loading container"),this.container.removeChild(i);continue}this._loadingElement=this.createLoadingElement(i)}}this._loadingElement||(this._loadingElement=this.createLoadingElement())}this._progress=0,this.loadingProgress=0,this._loadingElement.style.display="flex",this.container.appendChild(this._loadingElement),this.smoothProgressLoop(),this.setMessage(e??"")}onLoadingUpdate(e,t){this._loadingElement?.parentElement||this.onLoadingBegin(t);let i=0;typeof e=="number"?i=e:("index"in e&&(i=td(e)),!t&&"name"in e&&this.setMessage(e.name)),this.loadingProgress=i,t&&this.setMessage(t),this.updateDisplay()}onLoadingFinished(e){this.loadingProgress=1,this.setMessage(e??"")}setMessage(e){this._messageContainer&&(this._messageContainer.innerText=e)}_progressLoop;smoothProgressLoop(){if(this._progressLoop)return;let e=1/12,t=1-.05;iy&&(e=1/500),this._progressLoop=setInterval(()=>{if(this.loadingProgress>=1&&this._progress>=t){this._loadingElement&&(Bo&&console.log("Hiding loading element"),this._loadingElement.style.display="none",this._loadingElement.remove()),clearInterval(this._progressLoop),this._progressLoop=null;return}this._progress=H.lerp(this._progress,this.loadingProgress,e*this.loadingProgress),this.updateDisplay()},e)}updateDisplay(){let e=this._progress,t=(e*100).toFixed(0)+"%";this._loadingBar&&(this._loadingBar.style.width=e*100+"%"),this._loadingTextContainer&&(this._loadingTextContainer.textContent=t)}createLoadingElement(e){Bo&&!e&&console.log("Creating loading element"),this._loadingElement=e||document.createElement("div"),e||(this._loadingElement.style.position="fixed",this._loadingElement.style.width="100%",this._loadingElement.style.height="100%",this._loadingElement.style.left="0",this._loadingElement.style.top="0",this._loadingElement.style.backgroundColor="#000000",this._loadingElement.style.display="flex",this._loadingElement.style.alignItems="center",this._loadingElement.style.justifyContent="center",this._loadingElement.style.zIndex="1000",this._loadingElement.style.flexDirection="column",this._loadingElement.style.pointerEvents="none",this._loadingElement.style.color="white");let t=this._loadingElementOptions?.className??Fl.LoadingContainerClassName;if(this._loadingElement.classList.add(t),this._loadingElementOptions?.additionalClasses)for(let a of this._loadingElementOptions.additionalClasses)this._loadingElement.classList.add(a);let i=document.createElement("div"),n=30;i.style.display="flex",i.style.width=n+"%",i.style.height="2px",i.style.background="rgba(255,255,255,.1)",this._loadingElement.appendChild(i),this._loadingBar=document.createElement("div"),i.appendChild(this._loadingBar);let r=function(a){return H.lerp(n*.5,100-n*.5,a)+"%"};this._loadingBar.style.background=`linear-gradient(90deg, #02022B ${r(0)}, #0BA398 ${r(.4)}, #99CC33 ${r(.5)}, #D7DB0A ${r(1)})`,this._loadingBar.style.backgroundAttachment="fixed",this._loadingBar.style.width="0%",this._loadingBar.style.height="100%",this._loadingTextContainer=document.createElement("div"),this._loadingTextContainer.style.display="flex",this._loadingTextContainer.style.justifyContent="center",this._loadingTextContainer.style.marginTop=".9em",this._loadingElement.appendChild(this._loadingTextContainer);let s=document.createElement("div");return this._messageContainer=s,s.style.display="flex",s.style.fontSize=".8em",s.style.paddingTop=".5em",s.style.color="rgba(255,255,255,.5)",s.style.justifyContent="center",this._loadingElement.appendChild(s),this._loadingElement}},ra=Fl;I(ra,"LoadingContainerClassName","loading");import{DRACOLoader as id}from"three/examples/jsm/loaders/DRACOLoader.js";import{KTX2Loader as tm}from"three/examples/jsm/loaders/KTX2Loader.js";var oa=P("debugdecoders"),di,Zn;function nd(o){o!==void 0&&typeof o=="string"&&(di||(di=new id),oa&&console.log("Setting draco decoder path to",o),di.setDecoderPath(o))}function rd(o){o!==void 0&&typeof o=="string"&&(di||(di=new id),oa&&console.log("Setting draco decoder type to",o),di.setDecoderConfig({type:o}))}function od(o){o!==void 0&&typeof o=="string"&&(Zn||(Zn=new tm),oa&&console.log("Setting ktx2 transcoder path to",o),Zn.setTranscoderPath(o))}function _n(o,e){di||(di=new id,di.setDecoderPath("./include/draco/"),di.setDecoderConfig({type:"js"}),oa&&console.log("Setting draco decoder path to","./include/draco/")),Zn||(Zn=new tm,Zn.setTranscoderPath("./include/ktx2/"),oa&&console.log("Setting ktx2 transcoder path to","./include/ktx2/"),e.renderer&&Zn.detectSupport(e.renderer)),o.setDRACOLoader(di),o.setKTX2Loader(Zn)}import{AnimationClip as ny,MathUtils as ry}from"three";var Uo=class{_name;get name(){return this._name}_nameHash;get nameHash(){return this._nameHash}_normalizedTime;get normalizedTime(){return this._normalizedTime}_length;get length(){return this._length}_speed;get speed(){return this._speed}constructor(e,t,i,n){this._name=e.name,this._nameHash=e.hash,this._normalizedTime=t,this._length=i,this._speed=n}};function nm(o,e){return{name:"",isLooping:!1,guid:e?.generateUUID()??ry.generateUUID(),index:-1,clip:new ny(o,1,[])}}import{AnimationClip as oy,AnimationMixer as sy,AxesHelper as ay,Euler as rm,LoopOnce as ly,Quaternion as hi,Vector3 as sa}from"three";import*as Ul from"three";var Gi=P("debuganimatorcontroller"),sd=P("debugrootmotion"),fi=class{Play(e,t=-1,i=Number.NEGATIVE_INFINITY,n=0){if(t<0)t=0;else if(t>=this.model.layers.length){console.warn("invalid layer");return}let s=this.model.layers[t].stateMachine;for(let a of s.states)if(a.name===e||a.hash===e){Gi&&console.log("transition to ",a),this.transitionTo(a,n,i);return}console.warn("Could not find "+e+" to play")}Reset(){this.setStartTransition()}SetBool(e,t){let i=typeof e=="string"?"name":"hash";return this.model?.parameters.filter(n=>n[i]===e).forEach(n=>n.value=t)}GetBool(e){let t=typeof e=="string"?"name":"hash";return this.model?.parameters.find(i=>i[t]===e)?.value??!1}SetFloat(e,t){let i=typeof e=="string"?"name":"hash";return this.model?.parameters.filter(n=>n[i]===e).forEach(n=>n.value=t)}GetFloat(e){let t=typeof e=="string"?"name":"hash";return this.model?.parameters.find(i=>i[t]===e)?.value??0}SetInteger(e,t){let i=typeof e=="string"?"name":"hash";return this.model?.parameters.filter(n=>n[i]===e).forEach(n=>n.value=t)}GetInteger(e){let t=typeof e=="string"?"name":"hash";return this.model?.parameters.find(i=>i[t]===e)?.value??0}SetTrigger(e){Gi&&console.log("SET TRIGGER",e);let t=typeof e=="string"?"name":"hash";return this.model?.parameters.filter(i=>i[t]===e).forEach(i=>i.value=!0)}ResetTrigger(e){let t=typeof e=="string"?"name":"hash";return this.model?.parameters.filter(i=>i[t]===e).forEach(i=>i.value=!1)}IsInTransition(){return this._activeStates.length>1}SetSpeed(e){this._speed=e}FindState(e){if(!e)return null;for(let t of this.model.layers)for(let i of t.stateMachine.states)if(i.name===e)return i;return null}normalizedStartOffset=0;_speed=1;animator;model;get context(){return this.animator?.context}bind(e){this.animator=e,this._mixer=new sy(this.animator.gameObject),this.createActions(this.animator)}clone(){let e=Us(this.model,(i,n,r)=>r==null?!0:!(r.type==="Object3D"||r.isObject3D===!0||Dp(r)||r.tracks!==void 0));return console.assert(e!==this.model),new fi(e)}update(){if(!this.animator)return;this.evaluateTransitions(),this.updateActiveStates();let e=this.animator.context.time.deltaTime;this.animator.applyRootMotion&&this.rootMotionHandler?.onBeforeUpdate(),this._mixer.update(e),this.animator.applyRootMotion&&this.rootMotionHandler?.onAfterUpdate()}_mixer;_activeState;constructor(e){this.model=e,Gi&&console.log(this)}_activeStates=[];updateActiveStates(){for(let e=0;e<this._activeStates.length;e++){let t=this._activeStates[e],i=t.motion;if(!i.action)this._activeStates.splice(e,1),e--;else{let n=i.action;n.getEffectiveWeight()<=0&&!n.isRunning()&&(Gi&&console.debug("REMOVE",t.name,n.getEffectiveWeight(),n.isRunning(),n.isScheduled()),this._activeStates.splice(e,1),e--)}}}setStartTransition(){for(let e of this.model.layers){let t=e.stateMachine;t.defaultState===void 0&&(Gi&&console.warn("AnimatorController default state is undefined, will assign state 0 as default",e),t.defaultState=0);let i=t.states[t.defaultState];this.transitionTo(i,0,this.normalizedStartOffset)}}evaluateTransitions(){let t=!1;if(!this._activeState){if(this.setStartTransition(),!this._activeState)return;t=!0}let i=this._activeState,n=i.motion.action,r=0;for(let a of i.transitions){if(++r,!a.hasExitTime&&a.conditions.length<=0)continue;let c=!0;for(let u of a.conditions)if(!this.evaluateCondition(u)){c=!1;break}if(!!c){for(let u of a.conditions){let l=this.model.parameters.find(d=>d.name===u.parameter);l?.type===9&&(l.value=!1)}if(n){let u=i.motion.clip.duration,l=u<=0?1:n.time/u;if(a.hasExitTime?l>=a.exitTime:!0){n.clampWhenFinished=!0,Gi&&console.log("transition to "+a.destinationState,a,l,a.exitTime,a.hasExitTime),this.transitionTo(a.destinationState,a.duration,a.offset);return}}else{this.transitionTo(a.destinationState,a.duration,a.offset);return}}}let s=!1;if(i.motion.isLooping&&n&&n.time>=n.getClip().duration&&(s=!0,n.reset(),n.time=0,n.play()),!s&&i&&!t&&n&&this.animator&&i.behaviours){let a=n?.getClip().duration,c=n.time/a,u=new Uo(this._activeState,c,a,this._speed);for(let l of i.behaviours)l.instance&&l.instance.onStateUpdate?.call(l.instance,this.animator,u,0)}}getState(e,t){return typeof e=="number"&&(e==-1&&(e=this.model.layers[t].stateMachine.defaultState,e===void 0&&(Gi&&console.warn("AnimatorController default state is undefined: ",this.model,"Layer: "+t),e=0)),e=this.model.layers[t].stateMachine.states[e]),e}transitionTo(e,t,i){if(!this.animator)return;let n=0;if(e=this.getState(e,n),!e?.motion||!e.motion.clip)return;let r=this._activeState===e;if(r){let u=e.motion;!u.action_loopback&&u.clip&&(this._mixer.uncacheAction(u.clip,this.animator.gameObject),u.action_loopback=this.createAction(u.clip))}if(this._activeState?.behaviours&&this._activeState.motion.action){let u=this._activeState?.motion.clip.duration,l=this._activeState.motion.action.time/u,d=new Uo(this._activeState,l,u,this._speed);for(let h of this._activeState.behaviours)h.instance?.onStateExit?.call(h.instance,this.animator,d,n)}let s=this._activeState?.motion.action;s&&s.fadeOut(t),r&&(e.motion.action=e.motion.action_loopback,e.motion.action_loopback=s);let a=this._activeState;this._activeState=e;let c=e.motion?.action;if(c){i=Math.max(0,Math.min(1,i)),c.isRunning()&&c.stop(),c.reset(),c.timeScale=this._speed,c.enabled=!0;let u=e.motion.clip.duration;if(c.time=i*u,c.clampWhenFinished=!0,c.setLoop(ly,0),t>0?c.fadeIn(t):c.setEffectiveWeight(1),c.play(),this.rootMotionHandler&&this.rootMotionHandler.onStart(c),this._activeStates.includes(e)||this._activeStates.push(e),this._activeState.behaviours){let l=new Uo(e,i,u,this._speed);for(let d of this._activeState.behaviours)d.instance?.onStateEnter?.call(d.instance,this.animator,l,n)}}else console.warn("No action",e.motion,this);Gi&&console.log("TRANSITION FROM "+a?.name+" TO "+e.name,t,s,c,c?.getEffectiveTimeScale(),c?.getEffectiveWeight(),c?.isRunning(),c?.isScheduled(),c?.paused)}createAction(e){if(this._mixer.existingAction(e)&&this._mixer.uncacheAction(e,this.animator?.gameObject),this.animator?.applyRootMotion){this.rootMotionHandler||(this.rootMotionHandler=new ad(this));let i=this.animator.gameObject;return this.rootMotionHandler.createClip(this._mixer,i,e)}else return this._mixer.clipAction(e)}evaluateCondition(e){let t=this.model.parameters.find(i=>i.name===e.parameter);if(!t)return!1;switch(e.mode){case 1:return t.value===!0;case 2:return t.value===!1;case 3:return t.value>e.threshold;case 4:return t.value<e.threshold;case 6:return t.value===e.threshold;case 7:return t.value!==e.threshold}return!1}createActions(e){for(let t of this.model.layers){let i=t.stateMachine;for(let n=0;n<i.states.length;n++){let r=i.states[n];r.transitions||(r.transitions=[]);for(let s of r.transitions)s.conditions||(s.conditions=[]);if(r.motion||(r.motion=nm(r.name)),this.animator&&r.motion.clips){let s=r.motion.clips?.find(a=>a.node.name===this.animator?.gameObject?.name);r.motion.clip=s?.clip}if(!r.motion.clip){let s=new oy(void 0,void 0,[]);r.motion.clip=s}if(r.motion?.clip){let s=r.motion.clip,a=this.createAction(s);r.motion.action=a}if(r.behaviours&&Array.isArray(r.behaviours))for(let s of r.behaviours){if(!s?.typeName)continue;let a=O.get(s.typeName),c=new a;c.isStateMachineBehaviour&&(c._context=this.context??void 0,Lt(c,s.properties),s.instance=c),Gi&&console.log("Created animator controller behaviour",r.name,s.typeName,s.properties,c)}}}}*enumerateActions(){for(let e of this.model.layers){let t=e.stateMachine;for(let i=0;i<t.states.length;i++){let n=t.states[i];n?.motion&&(n.motion.action&&(yield n.motion.action),n.motion.action_loopback&&(yield n.motion.action_loopback))}}}rootMotionHandler},Bl=class{track;createdInterpolant;originalEvaluate;customEvaluate;constructor(e,t){this.track=e;let i=e,n=i.createInterpolant.bind(e);i.createInterpolant=()=>(i.createInterpolant=n,this.createdInterpolant=n(),this.originalEvaluate=this.createdInterpolant.evaluate.bind(this.createdInterpolant),this.customEvaluate=r=>{if(!this.originalEvaluate)return;let s=this.originalEvaluate(r);return t(r,s)},this.createdInterpolant.evaluate=this.customEvaluate,this.createdInterpolant)}evaluate(e){this.customEvaluate&&this.customEvaluate(e)}dispose(){this.createdInterpolant&&this.originalEvaluate&&(this.createdInterpolant.evaluate=this.originalEvaluate),this.track=void 0,this.createdInterpolant=null,this.originalEvaluate=void 0,this.customEvaluate=void 0}},we=class{set action(e){this._action=e}get action(){return this._action}_action;root;clip;positionWrapper=null;rotationWrapper=null;context;positionChange=new sa;rotationChange=new hi;constructor(e,t,i,n,r){if(this.context=e,this.root=t,this.clip=i,we.firstKeyframeRotation[i.uuid]||(we.firstKeyframeRotation[i.uuid]=new Ul.Quaternion),r){let s=r.values;we.firstKeyframeRotation[i.uuid].set(s[0],s[1],s[2],s[3])}we.spaceRotation[i.uuid]||(we.spaceRotation[i.uuid]=new hi),we.effectiveSpaceRotation[i.uuid]||(we.effectiveSpaceRotation[i.uuid]=new hi),we.clipOffsetRotation[i.uuid]=new hi,r&&we.clipOffsetRotation[i.uuid].set(r.values[0],r.values[1],r.values[2],r.values[3]).invert(),this.handlePosition(i,n),this.handleRotation(i,r)}onStart(e){if(e.getClip()!==this.clip)return;let t=we.lastObjRotation[this.root.uuid];we.spaceRotation[this.clip.uuid].copy(t);{let i=new Ul.Euler().setFromQuaternion(t);console.log("START",this.clip.name,H.toDegrees(i.y))}}getClipRotationOffset(){return we.clipOffsetRotation[this.clip.uuid]}handlePosition(e,t){if(t){let i=this.root;sd&&i.add(new ay),we.lastObjPosition[i.uuid]||(we.lastObjPosition[i.uuid]=new sa);let n=new sa,r=new sa,s=0;this.positionWrapper=new Bl(t,(a,c)=>{let u=this.action.getEffectiveWeight();if(sd&&i.position.length()>8&&i.position.set(0,i.position.y,0),a>s){n.set(c[0],c[1],c[2]),n.sub(r),n.multiplyScalar(u),n.applyQuaternion(this.getClipRotationOffset());let l=this.clip.uuid;n.applyQuaternion(we.spaceRotation[l]),this.positionChange.copy(n)}return r.fromArray(c),s=a,c[0]=0,c[1]=0,c[2]=0,c})}}handleRotation(e,t){if(t){if(sd){let a=t.values,c=new rm().setFromQuaternion(new hi(a[0],a[1],a[2],a[3]));console.log(e.name,t.name,"FIRST ROTATION IN TRACK",H.toDegrees(c.y));let u=t.values.length-4,l=new hi().set(a[u],a[u+1],a[u+2],a[u+3]),d=new rm().setFromQuaternion(l);console.log(e.name,t.name,"LAST ROTATION IN TRACK",H.toDegrees(d.y))}let i=this.root;we.lastObjRotation[i.uuid]||(we.lastObjRotation[i.uuid]=new hi);let n=0,r=new hi,s=new hi;this.rotationWrapper=new Bl(t,(a,c)=>(a>n&&(s.set(c[0],c[1],c[2],c[3]),r.invert(),s.multiply(r),this.rotationChange.copy(s)),r.fromArray(c),n=a,c[0]=0,c[1]=0,c[2]=0,c[3]=1,c))}}onBeforeUpdate(){this.positionChange.set(0,0,0),this.rotationChange.set(0,0,0,1)}onAfterUpdate(){let e=this.action.getEffectiveWeight();this.positionChange.multiplyScalar(e),this.rotationChange.slerp(we.identityQuaternion,1-e)}},pi=we;I(pi,"lastObjPosition",{}),I(pi,"lastObjRotation",{}),I(pi,"firstKeyframeRotation",{}),I(pi,"spaceRotation",{}),I(pi,"effectiveSpaceRotation",{}),I(pi,"clipOffsetRotation",{}),I(pi,"identityQuaternion",new hi);var ad=class{controller;handler=[];root;constructor(e){this.controller=e}createClip(e,t,i){this.root=t;let n="";t&&"name"in t&&(n=t.name);let r=this.findRootTrack(i,".position"),s=this.findRootTrack(i,".quaternion"),a=new pi(this.controller.context,t,i,r,s);this.handler.push(a);let c=e.clipAction(i);return a.action=c,c}onStart(e){for(let t of this.handler)t.onStart(e)}onBeforeUpdate(){for(let e of this.handler)e.onBeforeUpdate()}summedPosition=new sa;summedRotation=new hi;onAfterUpdate(){this.summedPosition.set(0,0,0),this.summedRotation.set(0,0,0,1);for(let e of this.handler)e.onAfterUpdate(),this.summedPosition.add(e.positionChange),this.summedRotation.multiply(e.rotationChange);this.root.position.add(this.summedPosition),this.root.quaternion.multiply(this.summedRotation),pi.lastObjRotation[this.root.uuid].copy(this.root.quaternion)}findRootTrack(e,t){let i=e.tracks;for(let n of i)if(n.name.endsWith(t))return n;return null}};var Go=function(o){return y(o)},y=function(o){if(o===void 0&&(o=null),!Array.isArray(o))o=om(o);else for(let e=0;e<o.length;e++){let t=o[e];o[e]=om(t)}return function(e,t){Object.getOwnPropertyDescriptor(e,"$serializedTypes")||(e.$serializedTypes={});let i=e.$serializedTypes=e.$serializedTypes||{};i[t]=o}};function om(o){switch(o?.prototype?.constructor?.name){case"Number":case"String":case"Boolean":return null}return o}var sm=P("debuganimator"),Pe=class extends M{applyRootMotion=!1;hasRootMotion=!1;keepAnimatorControllerStateOnDisable=!1;set runtimeAnimatorController(e){this._animatorController&&this._animatorController.model===e||(e?e instanceof fi?this._animatorController=e:(sm&&console.log("Assign animator controller",e,this),this._animatorController=new fi(e)):this._animatorController=null)}get runtimeAnimatorController(){return this._animatorController}Play(e,t=-1,i=Number.NEGATIVE_INFINITY,n=0){this.runtimeAnimatorController?.Play(e,t,i,n)}Reset(){this._animatorController?.Reset()}SetBool(e,t){this.runtimeAnimatorController?.SetBool(e,t)}GetBool(e){return this.runtimeAnimatorController?.GetBool(e)??!1}SetFloat(e,t){this.runtimeAnimatorController?.SetFloat(e,t)}GetFloat(e){return this.runtimeAnimatorController?.GetFloat(e)??-1}SetInteger(e,t){this.runtimeAnimatorController?.SetInteger(e,t)}GetInteger(e){return this.runtimeAnimatorController?.GetInteger(e)??-1}SetTrigger(e){this.runtimeAnimatorController?.SetTrigger(e)}ResetTrigger(e){this.runtimeAnimatorController?.ResetTrigger(e)}IsInTransition(){return this.runtimeAnimatorController?.IsInTransition()??!1}SetSpeed(e){e!==this.speed&&(this.speed=e,this._animatorController?.SetSpeed(e))}set minMaxSpeed(e){this.speed=H.lerp(e.x,e.y,Math.random())}set minMaxOffsetNormalized(e){this.normalizedStartOffset=H.lerp(e.x,e.y,Math.random()),this.runtimeAnimatorController&&(this.runtimeAnimatorController.normalizedStartOffset=this.normalizedStartOffset)}speed=1;normalizedStartOffset=0;_animatorController=null;awake(){if(sm&&console.log("ANIMATOR",this.name,this),!!this.gameObject&&this.runtimeAnimatorController){let e=this.runtimeAnimatorController.clone();console.assert(this.runtimeAnimatorController!==e),this.runtimeAnimatorController=e,console.assert(this.runtimeAnimatorController===e),this.runtimeAnimatorController.bind(this),this.runtimeAnimatorController.SetSpeed(this.speed),this.runtimeAnimatorController.normalizedStartOffset=this.normalizedStartOffset}}onDisable(){this.keepAnimatorControllerStateOnDisable||this._animatorController?.Reset()}onBeforeRender(){this._animatorController&&this._animatorController.update()}};v([y()],Pe.prototype,"applyRootMotion",2),v([y()],Pe.prototype,"hasRootMotion",2),v([y()],Pe.prototype,"keepAnimatorControllerStateOnDisable",2),v([y()],Pe.prototype,"runtimeAnimatorController",1);import*as Gr from"three";import{AnimationClip as cy}from"three";var Gl=P("debuganimation"),Bt=class extends M{playAutomatically=!0;randomStartTime=!0;minMaxSpeed;minMaxOffsetNormalized;loop=!0;clampWhenFinished=!1;_tempAnimationClipBeforeGameObjectExisted=null;get clip(){return this.animations?.length?this.animations[0]:null}set clip(e){if(!this.__didAwake){Gl&&console.log("Assign clip during serialization",e),this._tempAnimationClipBeforeGameObjectExisted=e;return}!e||(Gl&&console.log("Assign clip",e,Boolean(this.gameObject)),this.gameObject.animations||(this.gameObject.animations=[]),!this.animations.includes(e)&&(this.animations.length>0?this.animations.splice(0,0,e):this.animations.push(e)))}set clips(e){this.animations=e}set animations(e){Gl&&console.log("assign animations",e),this.gameObject.animations=e}get animations(){return this.gameObject.animations}get currentAction(){return this._currentActions[0]}get currentActions(){return this._currentActions}mixer=void 0;get actions(){return this._actions}set actions(e){this._actions=e}_actions=[];_currentActions=[];_handles=[];awake(){Gl&&console.log(this),this._tempAnimationClipBeforeGameObjectExisted&&(this.clip=this._tempAnimationClipBeforeGameObjectExisted,this._tempAnimationClipBeforeGameObjectExisted=null),this.playAutomatically&&this.init()}onEnable(){if(this.playAutomatically&&this.animations?.length>0&&this.currentActions.length<=0){let e=Math.floor(Math.random()*this.actions.length);this.play(e)}}start(){this.randomStartTime&&this.currentAction&&(this.currentAction.time=Math.random()*this.currentAction.getClip().duration)}update(){if(!!this.mixer){this.mixer.update(this.context.time.deltaTime);for(let e of this._handles)e._update();this._handles?.length>0&&oe.markDirty(this.gameObject)}}getAction(e){return this.actions?.find(t=>t.getClip().name===e)}get isPlaying(){for(let e=0;e<this._currentActions.length;e++)if(this._currentActions[e].isRunning())return!0;return!1}play(e,t){if(this.init(),!this.mixer)return;e===void 0&&(e=0);let i=e;if(typeof e=="number"){if(e>=this.animations.length)return;i=this.animations[e]}else typeof e=="string"&&(i=this.animations.find(r=>r.name===e));if(!i){console.error("Could not find clip",e);return}t||(t={}),t.minMaxOffsetNormalized||(t.minMaxOffsetNormalized=this.minMaxOffsetNormalized),t.minMaxSpeed||(t.minMaxSpeed=this.minMaxSpeed),t.loop||(t.loop=this.loop),t.clampWhenFinished||(t.clampWhenFinished=this.clampWhenFinished);for(let r of this.actions)if(r.getClip()===i)return this.internalOnPlay(r,t);let n=this.mixer.clipAction(i);return this.actions.push(n),this.internalOnPlay(n,t)}internalOnPlay(e,t){var i=this.currentAction;if(i===e&&i.isRunning()&&i.time<i.getClip().duration){let a=this.tryFindHandle(e);if(a)return a.getPromise()}let n=t?.exclusive??!0;t?.fadeDuration?(n&&i?.fadeOut(t.fadeDuration),e.fadeIn(t.fadeDuration)):n&&i?.stop(),e.reset(),e.enabled=!0,e.time=0,e.timeScale=1;let r=e.getClip();t?.minMaxOffsetNormalized&&(e.time=H.lerp(t.minMaxOffsetNormalized.x,t.minMaxOffsetNormalized.y,Math.random())*r.duration),t?.minMaxSpeed&&(e.timeScale=H.lerp(t.minMaxSpeed.x,t.minMaxSpeed.y,Math.random())),t?.clampWhenFinished&&(e.clampWhenFinished=!0),t?.startTime!==void 0&&(e.time=t.startTime),t?.loop!==void 0?e.loop=t.loop?Gr.LoopRepeat:Gr.LoopOnce:e.loop=Gr.LoopOnce,e.play();let s=new ld(e,this.mixer,t,a=>{this._handles.splice(this._handles.indexOf(s),1)});return this._handles.push(s),s.getPromise()}tryFindHandle(e){for(let t of this._handles)if(t.action===e)return t}_didInit=!1;init(){this._didInit||(this._didInit=!0,this.gameObject&&(this.actions=[],this.mixer=new Gr.AnimationMixer(this.gameObject)))}};v([y()],Bt.prototype,"playAutomatically",2),v([y()],Bt.prototype,"randomStartTime",2),v([y()],Bt.prototype,"loop",2),v([y()],Bt.prototype,"clampWhenFinished",2),v([y(cy)],Bt.prototype,"clips",1);var ld=class{mixer;action;promise=null;resolve=null;reject=null;_options;_resolveCallback=null;_rejectCallback=null;_loopCallback;_finishedCallback;_resolvedOrRejectedCallback;constructor(e,t,i,n){this.action=e,this.mixer=t,this._resolvedOrRejectedCallback=n,this._options=i}getPromise(){return this.promise?this.promise:(this.promise=new Promise((e,t)=>{this._resolveCallback=e,this._rejectCallback=t,this.resolve=this.onResolve.bind(this),this.reject=this.onReject.bind(this)}),this._loopCallback=this.onLoop.bind(this),this._finishedCallback=this.onFinished.bind(this),this.mixer.addEventListener("loop",this._loopCallback),this.mixer.addEventListener("finished",this._finishedCallback),this.promise)}_update(){!this._options||this._options.endTime!==void 0&&this.action.time>this._options.endTime&&(this._options.loop===!0?this.action.time=this._options.startTime??0:(this.action.time=this._options.endTime,this.action.timeScale=0,this.onResolve()))}onResolve(){this.dispose(),this._resolvedOrRejectedCallback?.call(this,this),this._resolveCallback?.call(this,this.action)}onReject(e){this.dispose(),this._resolvedOrRejectedCallback?.call(this,this),this._rejectCallback?.call(this,e)}onLoop(e){}onFinished(e){e.action===this.action&&this.onResolve()}dispose(){this._loopCallback&&this.mixer.removeEventListener("loop",this._loopCallback),this._finishedCallback&&this.mixer.removeEventListener("finished",this._finishedCallback),this._loopCallback=void 0,this._finishedCallback=void 0}};import{GLTFLoader as Fg}from"three/examples/jsm/loaders/GLTFLoader.js";import*as X from"three";import{RawShaderMaterial as dy}from"three";var xn=P("debugshaders"),Vo="NEEDLE_techniques_webgl";var cd=class{objectToWorldMatrix=new X.Matrix4;worldToObjectMatrix=new X.Matrix4;objectToWorld=new Array;worldToObject=new Array;updateFrom(e){this.objectToWorldMatrix.copy(e.matrixWorld),ta(this.objectToWorldMatrix,this.objectToWorld),this.worldToObjectMatrix.copy(e.matrixWorld).invert(),ta(this.worldToObjectMatrix,this.worldToObject)}};var ce=class extends dy{identifier;onBeforeRenderSceneCallback=this.onBeforeRenderScene.bind(this);clone(){let e=super.clone();return am(e),e}constructor(e,...t){super(...t),this.identifier=e,xn&&console.log(this),this.type="NEEDLE_CUSTOM_SHADER",this.uniforms[this._objToWorldName]||(this.uniforms[this._objToWorldName]={value:[]}),this.uniforms[this._worldToObjectName]||(this.uniforms[this._worldToObjectName]={value:[]}),this.uniforms[this._viewProjectionName]||(this.uniforms[this._viewProjectionName]={value:[]}),this.uniforms[this._sphericalHarmonicsName]&&this.waitForLighting(),(this.depthTextureUniform||this.opaqueTextureUniform)&&G.Current.pre_render_callbacks.push(this.onBeforeRenderSceneCallback)}dispose(){super.dispose();let e=G.Current.pre_render_callbacks.indexOf(this.onBeforeRenderSceneCallback);e>=0&&G.Current.pre_render_callbacks.splice(e,1)}async waitForLighting(){let e=G.Current;if(!e){console.error("Missing context");return}let t=await e.rendererData.getSceneLightingData(this.identifier);if(!t||!t.array){console.warn("Missing lighting data for custom shader, getSceneLightingData did not return anything");return}xn&&console.log(t);let i=t.array,n=t.texture;this.uniforms.unity_SpecCube0={value:n},Nu(this.uniforms,i);let r=Math.sqrt(Math.PI*.5);this.uniforms.unity_SpecCube0_HDR={value:new X.Vector4(r,r,r,r)},xn&&console.log("Set environment lighting",this.uniforms)}_sphericalHarmonicsName="unity_SpecCube0";_objToWorldName="hlslcc_mtx4x4unity_ObjectToWorld";_worldToObjectName="hlslcc_mtx4x4unity_WorldToObject";_viewProjectionName="hlslcc_mtx4x4unity_MatrixVP";_viewMatrixName="hlslcc_mtx4x4unity_MatrixV";_rendererData=new cd;get depthTextureUniform(){if(!!this.uniforms)return this.uniforms._CameraDepthTexture}get opaqueTextureUniform(){if(!!this.uniforms)return this.uniforms._CameraOpaqueTexture}onBeforeRenderScene(){this.opaqueTextureUniform&&G.Current.setRequireColor(!0),this.depthTextureUniform&&G.Current.setRequireDepth(!0)}onBeforeRender(e,t,i,n,r,s){n.attributes.tangent||n.computeTangents(),this.onUpdateUniforms(i,r)}onUpdateUniforms(e,t){let i=G.Current;e&&(ce.viewProjection&&this.uniforms[this._viewProjectionName]&&(ce.viewProjection.copy(e.projectionMatrix).multiply(e.matrixWorldInverse),ta(ce.viewProjection,ce._viewProjectionValues)),ce.viewMatrix&&this.uniforms[this._viewMatrixName]&&(ce.viewMatrix.copy(e.matrixWorldInverse),ta(ce.viewMatrix,ce._viewMatrixValues)),this.uniforms[ce._worldSpaceCameraPosName]&&ce._worldSpaceCameraPos.setFromMatrixPosition(e.matrixWorld)),this.uniforms._TimeParameters?this.uniforms._TimeParameters.value=i.rendererData.timeVec4:this.uniforms._Time&&(this.uniforms._Time.value=i.rendererData.timeVec4);let n=i.mainLight;if(n){let a=B(n.gameObject,ce._mainLightPosition);this.uniforms._MainLightPosition={value:a.normalize()},ce._mainLightColor.set(n.color.r,n.color.g,n.color.b,0),this.uniforms._MainLightColor={value:ce._mainLightColor};let c=n.intensity;ce._lightData.z=c,this.uniforms.unity_LightData={value:ce._lightData}}if(e&&(ce.viewProjection&&this.uniforms[this._viewProjectionName]&&(this.uniforms[this._viewProjectionName].value=ce._viewProjectionValues),ce.viewMatrix&&this.uniforms[this._viewMatrixName]&&(this.uniforms[this._viewMatrixName].value=ce._viewMatrixValues),this.uniforms[ce._worldSpaceCameraPosName]&&(this.uniforms[ce._worldSpaceCameraPosName]={value:ce._worldSpaceCameraPos}),i.mainCameraComponent)){if(this.uniforms._ProjectionParams){let a=this.uniforms._ProjectionParams.value;a.x=1,a.y=i.mainCameraComponent.nearClipPlane,a.z=i.mainCameraComponent.farClipPlane,a.w=1/a.z,this.uniforms._ProjectionParams.value=a}if(this.uniforms._ZBufferParams){let a=this.uniforms._ZBufferParams.value,c=i.mainCameraComponent;a.x=1-c.farClipPlane/c.nearClipPlane,a.y=c.farClipPlane/c.nearClipPlane,a.z=a.x/c.farClipPlane,a.w=a.y/c.farClipPlane,this.uniforms._ZBufferParams.value=a}if(this.uniforms._ScreenParams){let a=this.uniforms._ScreenParams.value;a.x=i.domWidth,a.y=i.domHeight,a.z=1+1/a.x,a.w=1+1/a.y,this.uniforms._ScreenParams.value=a}}let r=this.depthTextureUniform;r&&(r.value=i.depthTexture);let s=this.opaqueTextureUniform;if(s&&(s.value=i.opaqueColorTexture),t){let a=this._rendererData;a.updateFrom(t),this.uniforms[this._worldToObjectName].value=a.worldToObject,this.uniforms[this._objToWorldName].value=a.objectToWorld}this.uniformsNeedUpdate=!0}},Ut=ce;I(Ut,"viewProjection",new X.Matrix4),I(Ut,"_viewProjectionValues",[]),I(Ut,"viewMatrix",new X.Matrix4),I(Ut,"_viewMatrixValues",[]),I(Ut,"_worldSpaceCameraPosName","_WorldSpaceCameraPos"),I(Ut,"_worldSpaceCameraPos",new X.Vector3),I(Ut,"_mainLightColor",new X.Vector4),I(Ut,"_mainLightPosition",new X.Vector3),I(Ut,"_lightData",new X.Vector4);var Vl=class{get name(){return Vo}parser;identifier;constructor(e,t){this.parser=e,this.identifier=t}loadMaterial(e){let t=this.parser.json.materials[e];if(!t)return xn&&console.log(e,this.parser.json.materials),null;if(!t.extensions||!t.extensions[Vo])return xn&&console.log("material "+e+" does not use NEEDLE_techniques_webgl"),null;let i=t.extensions[Vo].technique;if(i<0)return null;let n=this.parser.json.extensions[Vo];if(!n)return null;xn&&console.log(n);let r=n.techniques[i];return r?new Promise(async(s,a)=>{let c=await Nf(n,r.program),u=c?.fragmentShader,l=c?.vertexShader;if(!u||!l)return a();xn&&console.log("loadMaterial",t,c);let d={},h=r.uniforms;l.includes("_Time")&&(d._Time={value:new X.Vector4(0,0,0,0)});for(let m in h){let f=m;switch(f){case"_TimeParameters":let p=new X.Vector4;d[f]={value:p};break;case"hlslcc_mtx4x4unity_MatrixV":case"hlslcc_mtx4x4unity_MatrixVP":d[f]={value:[]};break;case"_MainLightPosition":case"_MainLightColor":case"_WorldSpaceCameraPos":d[f]={value:[0,0,0,1]};break;case"unity_OrthoParams":break;case"unity_SpecCube0":d[f]={value:null};break;default:case"_ScreenParams":case"_ZBufferParams":case"_ProjectionParams":d[f]={value:[0,0,0,0]};break;case"_CameraOpaqueTexture":case"_CameraDepthTexture":d[f]={value:null};break}}let g=!1;if(t.extensions&&t.extensions[Vo]){let m=t.extensions[Vo];if(m.technique===i){xn&&console.log(t.name,"Material Properties",m);for(let f in m.values){let p=m.values[f];if(typeof p=="string"){if(p.startsWith("/textures/")){let b=p.substring(10),w=Number.parseInt(b);if(w>=0){let C=await this.parser.getDependency("texture",w);C&&(C.encoding=X.LinearEncoding,C.needsUpdate=!0),d[f]={value:C};continue}}switch(f){case"alphaMode":p==="BLEND"&&(g=!0);continue}}if(Array.isArray(p)&&p.length===4){d[f]={value:new X.Vector4(p[0],p[1],p[2],p[3])};continue}d[f]={value:p}}}}let E=new Ut(this.identifier,{name:t.name??"",uniforms:d,vertexShader:l,fragmentShader:u,lights:!1});switch(d._Cull?.value){case 0:E.side=X.DoubleSide;break;case 1:E.side=X.BackSide;break;case 2:E.side=X.FrontSide;break;default:E.side=X.FrontSide;break}switch(d._ZTest?.value){case 3:E.depthTest=!0,E.depthFunc=X.EqualDepth;break;case 6:E.depthTest=!0,E.depthFunc=X.NotEqualDepth;break;case 2:E.depthTest=!0,E.depthFunc=X.LessDepth;break;case 4:E.depthTest=!0,E.depthFunc=X.LessEqualDepth;break;case 5:E.depthTest=!0,E.depthFunc=X.GreaterDepth;break;case 7:E.depthTest=!0,E.depthFunc=X.GreaterEqualDepth;break;case 8:E.depthTest=!1,E.depthFunc=X.AlwaysDepth;break}E.transparent=g,g&&(E.depthWrite=!1),Nu(d),E.onUpdateUniforms();for(let m in h){let f=m,p=h[m].type;if(d[f]?.value===void 0)switch(p){case 35678:d[f]={value:zf},console.warn("Missing/unassigned texture, fallback to white: "+f);break;default:console.warn("TODO: EXPECTED UNIFORM / fallback NOT SET: "+f,h[m]);break}}xn&&console.log(E.uuid,d),am(E),s(E)}):null}};function am(o){if(o.uniforms)for(let e in o.uniforms)Object.getOwnPropertyDescriptor(o,e)||Object.defineProperty(o,e,{get:()=>o.uniforms[e].value,set:t=>{o.uniforms[e].value=t,o.needsUpdate=!0}})}var $n=pe,zl="$___Export_Components",hy="NEEDLE_components",ud=class{[Ir]},dd=class{node;nodeIndex;nodeDef;constructor(e,t,i){this.node=e,this.nodeIndex=t,this.nodeDef=i}},zo=class{get name(){return hy}parser;nodeToObjectMap={};exportContext;objectToNodeMap={};context;writer;registerExport(e){e.register(t=>{if("serializeUserData"in t){let i=t.serializeUserData.bind(t);this.writer=t,t.serializeUserData=(n,r)=>{try{this.serializeUserData(n,r),i(n,r)}finally{this.afterSerializeUserData(n,r)}}}return this})}beforeParse(){this.exportContext={},this.objectToNodeMap={}}serializeUserData(e,t){let i=e.userData?.components;!i||i.length<=0||(delete e.userData.components,e[zl]=i)}afterSerializeUserData(e,t){if(e.type==="Scene"&&$n&&console.log("DONE",JSON.stringify(t)),e[zl]===void 0)return;let i=e[zl];delete e[zl],i!==null&&(e.userData.components=i)}writeNode(e,t){let i=this.writer.json.nodes.length;console.log(e.name,i,e.uuid);let n=new dd(e,i,t);this.exportContext[i]=n,this.objectToNodeMap[e.uuid]=i}afterParse(e){$n&&console.log("AFTER",e);for(let t in this.exportContext){let i=this.exportContext[t],n=i.node,r=i.nodeDef,s=i.nodeIndex,a=n.userData?.components;if(!a||a.length<=0)continue;let c=new ud;r.extensions=r.extensions||{},r.extensions[this.name]=c,this.context.object=n,this.context.nodeId=s,this.context.objectToNode=this.objectToNodeMap;let u=[];for(let l of a){this.context.target=l;let d=qe().writeBuiltinComponentData(l,this.context);d!==null&&u.push(d)}u.length>0&&(c[Ir]=u,$n&&console.log("DID WRITE",n,"nodeIndex",s,u))}}beforeRoot(){return $n&&console.log("BEGIN LOAD"),this.nodeToObjectMap={},null}async afterRoot(e){let t=e.parser,i=t?.extensions;if(!i)return;let n=i[this.name];$n&&console.log("After root",e,this.parser,i);let r=[];if(n===!0){let s=t.json.nodes;for(let a=0;a<s.length;a++){let c=await t.getDependency("node",a);this.nodeToObjectMap[a]=c}for(let a=0;a<s.length;a++){let c=s[a],u=a,l=c.extensions;if(!l)continue;let d=l[this.name];if(!d)continue;$n&&console.log("NODE",c);let h=this.nodeToObjectMap[u];if(!h){console.error("Could not find object for node index: "+u,c,t);continue}Mo(h),r.push(this.createComponents(h,d))}}await Promise.all(r)}async createComponents(e,t){if(!t)return;let i=t[Ir];if(i){let n=new Array;$n&&console.log(e.name,i);for(let r in i){let s=i[r];$n&&console.log("Serialized data",JSON.parse(JSON.stringify(s))),s&&this.parser&&n.push(Eo(this.parser,s)),e.userData=e.userData||{},e.userData[Ir]=e.userData[Ir]||[],e.userData[Ir].push(s)}await Promise.all(n)}}};import{EXRLoader as py}from"three/examples/jsm/loaders/EXRLoader";var hd=P("debugexr"),Wl=class{parser;name;constructor(e){this.parser=e,this.name="EXT_texture_exr",hd&&console.log(e)}loadTexture(e){let t=this.name,i=this.parser,r=i.json.textures[e];if(hd&&console.log("EXT_texture_exr.loadTexture",e,r),!r.extensions||!r.extensions[t])return null;let s=r.extensions[t],a=new py(i.options.manager);return hd&&console.log("EXT_texture_exr.loadTexture",s,a),i.loadTextureImage(e,s.source,a)}};window.addEventListener("unhandledrejection",o=>{});var lm="NEEDLE_gameobject_data",Nl=class{get name(){return lm}parser;constructor(e){this.parser=e}afterRoot(e){let t=[];for(let i=0;i<this.parser.json.nodes.length;i++){let n=this.parser.json.nodes[i];if(n&&n.extensions){let r=n.extensions[lm];if(r){let s=this.findAndApplyExtensionData(i,r);t.push(s)}}}return Promise.all(t).then(()=>{})}async findAndApplyExtensionData(e,t){let i=await this.parser.getDependency("node",e);i&&this.applyExtensionData(i,t)}applyExtensionData(e,t){e.userData.layer=t.layers,e.layers.disableAll(),e.layers.set(t.layers),e.userData.tag=t.tag,e.userData.hideFlags=t.hideFlags,e.userData.static=t.static,e.visible=t.activeSelf,e.guid=t.guid}};import{AmbientLight as fy,Color as cm,HemisphereLight as my}from"three";var um="NEEDLE_lighting_settings",Wo=P("debugenvlight"),Xl=class{get name(){return um}parser;sourceId;context;constructor(e,t,i){this.parser=e,this.sourceId=t,this.context=i}afterRoot(e){let t=this.parser.json.extensions;if(t){let i=t[um];if(i){Wo&&console.log(i);let n=R.addNewComponent(e.scene,pd,!1);n.sourceId=this.sourceId,n.ambientIntensity=i.ambientIntensity,n.ambientLight=new cm().fromArray(i.ambientLight),Array.isArray(i.ambientTrilight)&&(n.ambientTrilight=i.ambientTrilight.map(r=>new cm().fromArray(r))),n.ambientMode=i.ambientMode,n.environmentReflectionSource=i.environmentReflectionSource,this.context&&this.context.rendererData.registerSceneLightSettings(n)}}return null}},pd=class extends M{ambientMode=0;ambientLight;ambientTrilight;ambientIntensity=1;environmentReflectionSource=0;_hasReflection=!1;_ambientLightObj;_lightProbeObj;awake(){if(this.sourceId){let e=this.environmentReflectionSource===0?1:2,t=this.context.lightmaps.tryGet(this.sourceId,e,0);this._hasReflection=t!=null,t&&this.context.rendererData.registerReflection(this.sourceId,t)}Wo&&window.addEventListener("keydown",e=>{switch(e.key){case"l":this.enabled=!this.enabled;break}})}onEnable(){let e=this.context.mainCameraComponent?.sourceId===this.sourceId;if(Wo&&console.log("Enable scene lighting",this.sourceId,e,this,this.context.mainCameraComponent?.sourceId),e||Wo&&console.warn("This is no active?!",this.context.mainCameraComponent?.sourceId),this.ambientMode==3)this.ambientLight&&!this._ambientLightObj&&(this._ambientLightObj=new fy(this.ambientLight,Math.PI*this.ambientIntensity)),this._ambientLightObj&&this.gameObject.add(this._ambientLightObj),this._lightProbeObj&&this._lightProbeObj.removeFromParent();else if(this.ambientMode===1){if(this.ambientTrilight){let t=this.ambientTrilight[0],i=this.ambientTrilight[this.ambientTrilight.length-1],n=new my(i,t,this.ambientIntensity);this.gameObject.add(n)}}else this._ambientLightObj&&this._ambientLightObj.removeFromParent(),this._lightProbeObj?this.enabled&&this.destroyed&&this._lightProbeObj&&this.scene.add(this._lightProbeObj):this.sourceId&&this.context.rendererData.getSceneLightingData(this.sourceId).then(t=>{Wo&&console.log(t),t&&(this._lightProbeObj=t.lightProbe,this.enabled&&!this.destroyed&&this._lightProbeObj&&this.scene.add(this._lightProbeObj))});this.sourceId&&this.context.rendererData.enableReflection(this.sourceId)}onDisable(){Wo&&console.log("disable",this.sourceId,this),this._lightProbeObj&&this._lightProbeObj.removeFromParent(),this._ambientLightObj&&this._ambientLightObj.removeFromParent(),this.sourceId&&this.context.rendererData.disableReflection()}};import{NeverStencilFunc as gy,LessStencilFunc as by,EqualStencilFunc as vy,LessEqualStencilFunc as yy,GreaterStencilFunc as _y,NotEqualStencilFunc as xy,GreaterEqualStencilFunc as wy,AlwaysStencilFunc as Ey,ZeroStencilOp as Cy,KeepStencilOp as Ty,ReplaceStencilOp as Ry,IncrementStencilOp as Sy,DecrementStencilOp as Py,IncrementWrapStencilOp as Oy,DecrementWrapStencilOp as ky,InvertStencilOp as My}from"three";var fd=P("debugstencil");function Iy(o,e){return(o&1<<e.layer)!=0}var Vr=class{static applyStencil(e){if(!e)return;let t=e.sourceId;if(fd&&console.log(t,Vr.stencils),!t)return;let i=Vr.stencils[t];if(!!i)for(let n=i.length-1;n>=0;n--){let r=i[n];if(Iy(r.layer,e)){fd&&console.log(r);let s=e.sharedMaterial?.clone();s&&(e.sharedMaterial=s,e.gameObject.renderOrder=r.event*1e3+r.index*50,s.stencilWrite=!0,s.stencilWriteMask=255,s.stencilFuncMask=255,s.stencilRef=r.value,s.stencilFunc=r.compareFunc,s.stencilZPass=r.passOp,s.stencilFail=r.failOp,s.stencilZFail=r.zFailOp);break}}}parser;source;constructor(e,t){this.parser=e,this.source=t}afterRoot(e){let t=this.parser.json.extensions;if(t){let i=t[Dy];if(i){fd&&console.log(i);let n=i.stencil;if(n&&Array.isArray(n))for(let r of n){let s={...r};s.compareFunc=Ay(s.compareFunc),s.passOp=md(s.passOp),s.failOp=md(s.failOp),s.zFailOp=md(s.zFailOp),Vr.stencils[this.source]||(Vr.stencils[this.source]=[]),Vr.stencils[this.source].push(s)}}}return null}},zr=Vr;I(zr,"stencils",{});function md(o){switch(o){case 0:return Ty;case 1:return Cy;case 2:return Ry;case 3:return Sy;case 4:return Py;case 6:return Oy;case 7:return ky;case 5:return My}return 0}function Ay(o){switch(o){case 1:return gy;case 2:return by;case 3:return vy;case 4:return yy;case 5:return _y;case 6:return xy;case 7:return wy;case 8:return Ey}return 0}var Dy="NEEDLE_render_objects";import{TextureLoader as Ly}from"three";import{GLTFLoader as jy}from"three/examples/jsm/loaders/GLTFLoader";var gd="NEEDLE_progressive",Ge=P("debugprogressive"),vd=new Map,bd=!1;Ge&&window.addEventListener("keyup",o=>{o.key==="p"&&(vd.forEach((e,t)=>{Object.entries(e).forEach(([i,n])=>{bd?t[i]=n.lod0:t[i]=n.original,t.needsUpdate=!0})}),bd=!bd)});var aa=class{static assignTextureLOD(e,t,i,n=0){if(!!i)for(let r of Object.keys(i)){let s=i[r];s?.isTexture===!0&&(Ge&&console.log(`-----------
214
+ `,"FIND",i.name,r,s?.name,s?.userData,s,i),aa.getOrLoadTexture(e,t,i,r,s,n).then(a=>{if(a?.isTexture===!0&&(Ge&&console.log("Assign LOD",i.name,r,a.name,a.guid,i,"Prev:",s,"Now:",a,`
215
+ --------------`),i[r]=a,a.needsUpdate=!0,i.needsUpdate=!0,Ge)){let c=vd.get(i);c||(c={},vd.set(i,c));let u=c[r];u||(u=c[r]={original:s,lod0:a}),u.lod0=a}}))}}get name(){return gd}parser;sourceId;context;constructor(e,t,i){this.parser=e,this.sourceId=t,this.context=i}_loading=[];afterRoot(e){return Ge&&console.log("AFTER",this.sourceId,e),this.parser.json.textures?.forEach((t,i)=>{if(t?.extensions){let n=t?.extensions[gd];if(n){let r=this.parser.getDependency("texture",i);this._loading.splice(this._loading.indexOf(i),1),r.then(s=>{Ge&&console.log("register texture",s.name,s.uuid,n),s.userData.deferred=n,aa.cache.set(s.uuid,n)})}}}),null}static async getOrLoadTexture(e,t,i,n,r,s){let a=r.uuid,c=aa.cache.get(a);if(c){Ge&&console.log(a,c.uri,c.guid);let u=Ii(t,c.uri);if(u.endsWith(".glb")||u.endsWith(".gltf")){if(!c.guid)return console.warn("missing pointer for glb/gltf texture",c),null;let l=u+"_"+c.guid;if(this.resolved[l])return Ge&&console.log("Texture has already been loaded: "+l,i.name,n,r.name),this.resolved[l];let d=this.onProgressiveLoadStart(e,t,u,i,n);try{if(this.currentlyLoading[l]!==void 0)return Ge&&console.log("Already loading:",i.name+"."+n,l),await this.currentlyLoading[l];let h=new Promise(async(E,_)=>{let x=new jy;_n(x,e),Ge&&console.log("Load "+u,i.name,n,c.guid),Ge&&await yo(Math.random()*1e3);let m=await x.loadAsync(u),f=m.parser;Ge&&console.log("Loading finished "+u,i.name,n,c.guid);let p=-1,b=!1;for(let C of m.parser.json.textures)if(p++,C?.extensions){let T=C?.extensions[gd];if(T?.guid&&T.guid===c.guid){b=!0;break}}if(!b)return E(null);let w=await f.getDependency("texture",p);w.encoding=r.encoding,w&&(w.guid=c.guid),this.resolved[l]=w,Ge&&console.log(i.name,n,'change "'+r.name+'" \u2192 "'+w.name+'"',u,p,w,i,l),E(w)});return this.currentlyLoading[l]=h,await h}finally{delete this.currentlyLoading[l],this.onProgressiveLoadEnd(d)}}else{let l=this.onProgressiveLoadStart(e,t,u,i,n);try{Ge&&console.log("Load texture from uri: "+u);let h=await new Ly().loadAsync(u);return h?(h.guid=c.guid,h.flipY=!1,h.needsUpdate=!0,h.encoding=r.encoding,Ge&&console.log(c,h)):Ge&&console.warn("failed loading",u),h}finally{this.onProgressiveLoadEnd(l)}}}else Ge&&console.warn("unknown uuid",r.name,r.uuid,r);return null}static beginListenStart(e,t){this._progressiveEventListeners.has(e)||this._progressiveEventListeners.set(e,new Ql),this._progressiveEventListeners.get(e).start.push(t)}static stopListenStart(e,t){if(!this._progressiveEventListeners.has(e))return;let i=this._progressiveEventListeners.get(e).start,n=i.indexOf(t);n>=0&&i.splice(n,1)}static beginListenEnd(e,t){this._progressiveEventListeners.has(e)||this._progressiveEventListeners.set(e,new Ql),this._progressiveEventListeners.get(e).end.push(t)}static stopListenEnd(e,t){if(!this._progressiveEventListeners.has(e))return;let i=this._progressiveEventListeners.get(e).end,n=i.indexOf(t);n>=0&&i.splice(n,1)}static onProgressiveLoadStart(e,t,i,n,r){this._currentProgressiveLoadingInfo.has(e)||this._currentProgressiveLoadingInfo.set(e,[]);let s=new yd(e,t,i,n,r),a=this._currentProgressiveLoadingInfo.get(e),c=this._progressiveEventListeners.get(e);return c&&c.onStart(s),a.push(s),s}static onProgressiveLoadEnd(e){if(!e)return;let t=e.context;if(!this._currentProgressiveLoadingInfo.has(t))return;let i=this._currentProgressiveLoadingInfo.get(t),n=i.indexOf(e);if(n<0)return;i.splice(n,1);let r=this._progressiveEventListeners.get(t);r&&r.onEnd(e)}},mi=aa;I(mi,"cache",new Map),I(mi,"resolved",{}),I(mi,"currentlyLoading",{}),I(mi,"_progressiveEventListeners",new Map),I(mi,"_currentProgressiveLoadingInfo",new Map);var yd=class{context;source;uri;material;slot;constructor(e,t,i,n,r){this.context=e,this.source=t,this.uri=i,this.material=n,this.slot=r}},Ql=class{start=[];end=[];onStart(e){for(let t of this.start)t(e)}onEnd(e){for(let t of this.end)t(e)}};function xd(o){let e=new zo;return o.register(t=>(e.parser=t,e)),e}var _d=class{resolvePath(e){return e.includes("/extensions/builtin_components/")?e.replace("/extensions/builtin_components/","/userData/components/"):e.includes("extensions/builtin_components/")?e.replace("extensions/builtin_components/","/userData/components/"):e}};function wd(o,e,t){o.register(n=>new Nl(n)),o.register(n=>new Wa(n)),o.register(n=>new Il(n,e.lightmaps,t)),o.register(n=>new Xl(n,t,e)),o.register(n=>new Vl(n,t)),o.register(n=>new zr(n,t)),o.register(n=>new mi(n,t,e)),o.register(n=>new Wl(n));let i=o.setAnimationPointerResolver;typeof i=="function"&&i.bind(o)(new _d)}var Xh={};cp(Xh,{AlignmentConstraint:()=>er,Animation:()=>Bt,AnimationCurve:()=>gi,AnimationExtension:()=>tr,AnimationTrackHandler:()=>ir,Animator:()=>Pe,AnimatorController:()=>fi,AttachedObject:()=>gt,AudioListener:()=>bi,AudioSource:()=>se,AudioTrackHandler:()=>nr,AvatarBlink_Simple:()=>Qi,AvatarEyeLook_Rotation:()=>qi,AvatarLoader:()=>rr,AvatarMarker:()=>le,AvatarModel:()=>Yr,Avatar_Brain_LookAt:()=>Rn,Avatar_MouthShapes:()=>cr,Avatar_MustacheShake:()=>ns,Avatar_POI:()=>ye,AxesHelper:()=>Mn,BaseUIComponent:()=>Ve,BasicIKConstraint:()=>rs,BoxCollider:()=>hr,BoxGizmo:()=>_i,BoxHelperComponent:()=>ze,Button:()=>Yt,CallInfo:()=>vi,Camera:()=>ee,Canvas:()=>We,CanvasGroup:()=>Ln,CapsuleCollider:()=>Qt,CharacterController:()=>Yi,CharacterControllerInput:()=>Ti,Collider:()=>Pt,ColorAdjustments:()=>mr,ColorBySpeedModule:()=>Ri,ColorOverLifetimeModule:()=>jn,ControlTrackHandler:()=>Tn,Deletable:()=>ds,DeleteBox:()=>no,DeviceFlag:()=>ro,DragControls:()=>Ji,DropListener:()=>gr,Duplicatable:()=>Zi,EmissionModule:()=>yt,EventList:()=>de,EventListEvent:()=>Xr,EventSystem:()=>Ye,EventTrigger:()=>oo,FieldWithDefault:()=>ps,FixedJoint:()=>ms,FlyControls:()=>gs,GltfExport:()=>ei,GltfExportBox:()=>bs,Gradient:()=>Si,Graphic:()=>vt,GraphicRaycaster:()=>vs,GridHelper:()=>Un,GridLayoutGroup:()=>xs,GroundProjectedEnv:()=>tn,HingeJoint:()=>br,HorizontalLayoutGroup:()=>_s,Image:()=>An,InheritVelocityModule:()=>Zt,InputField:()=>Ot,Interactable:()=>zt,Keyboard:()=>ws,LODGroup:()=>vr,LODModel:()=>nn,LayoutGroup:()=>Gn,Light:()=>Xe,LimitVelocityOverLifetimeModule:()=>ue,LogStats:()=>Cs,LookAtConstraint:()=>On,MainModule:()=>_e,MaskableGraphic:()=>In,MeshCollider:()=>Jr,MeshRenderer:()=>so,MinMaxCurve:()=>U,MinMaxGradient:()=>Me,NestedGltf:()=>uo,Networking:()=>Pi,NoiseModule:()=>K,ObjectRaycaster:()=>lo,OffsetConstraint:()=>rn,OrbitControls:()=>nt,ParticleBurst:()=>Hn,ParticleSubEmitter:()=>yr,ParticleSystem:()=>ve,ParticleSystemRenderer:()=>on,PlayableDirector:()=>En,PlayerColor:()=>_t,PointerEventData:()=>xi,RGBAColor:()=>q,RawImage:()=>eo,Raycaster:()=>ao,Rect:()=>$r,RectTransform:()=>bt,ReflectionProbe:()=>$t,RegisteredAnimationInfo:()=>Wr,RemoteSkybox:()=>Oi,Renderer:()=>ae,RendererLightmap:()=>Bn,Rigidbody:()=>J,RotationBySpeedModule:()=>Ne,RotationOverLifetimeModule:()=>Ke,ScreenCapture:()=>wr,ShadowCatcher:()=>Er,ShapeModule:()=>ne,SignalAsset:()=>Qr,SignalReceiver:()=>wn,SignalReceiverEvent:()=>qr,SignalTrackHandler:()=>Cn,Size:()=>ss,SizeBySpeedModule:()=>ke,SizeOverLifetimeModule:()=>Jt,SkinnedMeshRenderer:()=>fs,SmoothFollow:()=>kt,SpatialHtml:()=>Ps,SpatialTrigger:()=>Vn,SpatialTriggerReceiver:()=>Mt,SpectatorCamera:()=>Os,SphereCollider:()=>dr,Sprite:()=>ti,SpriteRenderer:()=>sn,SpriteSheet:()=>an,SubEmitterSystem:()=>_r,SyncedCamera:()=>Tr,SyncedRoom:()=>ki,SyncedTransform:()=>St,TeleportTarget:()=>Kr,TestRunner:()=>Ms,TestSimulateUserData:()=>Is,Text:()=>Ie,TextureSheetAnimationModule:()=>xe,ToneMapping:()=>fr,TrailModule:()=>te,TransformData:()=>Nr,TransformGizmo:()=>po,UIRaycastUtils:()=>Ei,UIRootComponent:()=>kn,USDZExporter:()=>Rr,UsageMarker:()=>Wt,VRUserState:()=>Xt,VelocityOverLifetimeModule:()=>He,VerticalLayoutGroup:()=>ys,VideoPlayer:()=>Te,Voip:()=>it,Volume:()=>io,VolumeComponent:()=>Ki,VolumeParameter:()=>cs,VolumeProfile:()=>pr,WebAR:()=>lr,WebARSessionRoot:()=>ft,WebXR:()=>V,WebXRAvatar:()=>Vt,WebXRController:()=>Z,WebXRSync:()=>Pn,XRFlag:()=>Ee,XRGrabModel:()=>fo,XRGrabRendering:()=>As,XRRig:()=>ar,XRState:()=>Rt,__Ignore:()=>Ma});import{Vector3 as Hy}from"three";var er=class extends M{from;to;width=0;centered=!0;_centerPos;awake(){this._centerPos=new Hy}update(){if(!this.from||!this.to)return;let e=B(this.from).clone(),t=B(this.to).clone(),i=e.distanceTo(t);this._centerPos.copy(e),this._centerPos.add(t),this._centerPos.multiplyScalar(.5),ie(this.gameObject,this.centered?this._centerPos:e),this.gameObject.lookAt(B(this.to).clone()),this.gameObject.scale.set(this.width,this.width,i)}};v([y(R)],er.prototype,"from",2),v([y(R)],er.prototype,"to",2);var Vi=class{time;value;inTangent;inWeight;outTangent;outWeight;weightedMode};v([y()],Vi.prototype,"time",2),v([y()],Vi.prototype,"value",2),v([y()],Vi.prototype,"inTangent",2),v([y()],Vi.prototype,"inWeight",2),v([y()],Vi.prototype,"outTangent",2),v([y()],Vi.prototype,"outWeight",2),v([y()],Vi.prototype,"weightedMode",2);var gi=class{keys;get duration(){return!this.keys||this.keys.length==0?0:this.keys[this.keys.length-1].time}evaluate(e){if(!this.keys||this.keys.length==0)return 0;if(this.keys[0].time>=e)return this.keys[0].value;for(let t=0;t<this.keys.length;t++){let i=this.keys[t];if(i.time<=e)if(t+1<this.keys.length){let r=this.keys[t+1];if(r.time<e)continue;let s=H.remap(e,i.time,r.time,0,1);return H.lerp(i.value,r.value,s)}else return i.value}return this.keys[this.keys.length-1].value}};v([y(Vi)],gi.prototype,"keys",2);import{Matrix4 as Fy,Vector3 as dm,Quaternion as By}from"three";import{buildMatrix as Uy}from"three/examples/jsm/exporters/USDZExporter";var No=P("debugusdzanimation"),Wr=class{get start(){return this.ext.getStartTime01(this.root,this.clip)}get duration(){return this.clip.duration}ext;root;clip;constructor(e,t,i){this.ext=e,this.root=t,this.clip=i}},Nr=class{clip;pos;rot;scale;get frameRate(){return 60}ext;root;target;constructor(e,t,i,n){this.ext=e,this.root=t,this.target=i,this.clip=n}addTrack(e){e.name.endsWith("position")&&(this.pos=e),e.name.endsWith("quaternion")&&(this.rot=e),e.name.endsWith("scale")&&(this.scale=e)}getFrames(){return Math.max(this.pos?.times?.length??0,this.rot?.times?.length??0,this.scale?.times?.length??0)}getDuration(){let e=this.pos?.times??this.rot?.times??this.scale?.times;return e?e[e.length-1]:0}getStartTime(e){let t=0;for(let i=0;i<e.length;i++){let n=e[i];if(n===this)return t;t+=n.getDuration()}return t}},tr=class{get extensionName(){return"animation"}dict=new Map;rootTargetMap=new Map;getStartTime01(e,t){let i=this.rootTargetMap.get(e);if(!i)return 1/0;let n=-1;for(let r of i){let s=this.dict.get(r),a=0;if(s?.length){for(let c of s){if(c.clip===t)break;a+=c.getDuration()}n=Math.max(n,a)}else console.warn("No animation found on root",e,t,s)}return n}registerAnimation(e,t){if(!t||!e)return null;this.rootTargetMap.has(e)||this.rootTargetMap.set(e,[]);for(let n of t.tracks){let r=n.name.split(".")[2],s=e.getObjectByName(r);if(!s){console.warn("no object found for track",n.name,"using "+e.name+" instead");continue}this.dict.has(s)||this.dict.set(s,[]);let a=this.dict.get(s);if(!a)continue;let c=a.find(l=>l.clip===t);c||(c=new Nr(this,e,s,t),a.push(c)),c.addTrack(n);let u=this.rootTargetMap.get(e);u?.includes(s)||u?.push(s)}return new Wr(this,e,t)}onAfterHierarchy(e){No&&console.log(this.dict)}serializers=[];onAfterBuildDocument(e){for(let t of this.serializers){let i=t.model?.parent,n=i?.isDynamic===!0;No&&console.log(n,t.model?.parent),n&&t.registerCallback(i)}}onExportObject(e,t,i){R.foreachComponent(e,r=>{let s=r;typeof s.createAnimation=="function"&&s.createAnimation(this,t,i)},!1);let n=new Ed(e,this.dict);this.serializers.push(n),n.registerCallback(t)}},Ed=class{object;dict;model;callback;constructor(e,t){this.object=e,this.dict=t}registerCallback(e){this.model&&this.callback&&this.model.removeEventListener("serialize",this.callback),this.callback||(this.callback=this.onSerialize.bind(this)),No&&console.log("REPARENT",e),this.model=e,this.model.addEventListener("serialize",this.callback)}onSerialize(e,t){No&&console.log("SERIALIZE",this.model.name,this.object.type);let i=this.object,n=this.dict.get(i);if(!n)return;let r=new Fy,s=new dm,a=new By,c=new dm(1,1,1);e.appendLine("matrix4d xformOp:transform.timeSamples = {"),e.indent++;for(let u of n){let l=u.pos?.times;if((!l||u.rot&&u.rot.times?.length>l?.length)&&(l=u.rot?.times),(!l||u.scale&&u.scale.times?.length>l?.length)&&(l=u.scale?.times),!l){console.error("got an animated object but no time values??",i,u);continue}let d=u.getStartTime(n);No&&e.appendLine(u.clip.name+": start="+d.toFixed(3)+", length="+u.getDuration().toFixed(3)+", frames="+u.getFrames());let h=u.pos?.createInterpolant(),g=u.rot?.createInterpolant(),E=u.scale?.createInterpolant();h||s.set(i.position.x,i.position.y,i.position.z),g||a.set(i.quaternion.x,i.quaternion.y,i.quaternion.z,i.quaternion.w),E||c.set(i.scale.x,i.scale.y,i.scale.z);for(let _=0;_<l.length;_++){let x=l[_];if(h){let f=h.evaluate(x);s.set(f[0],f[1],f[2])}if(g){let f=g.evaluate(x);a.set(f[0],f[1],f[2],f[3])}if(E){let f=E.evaluate(x);f.set(f[0],f[1],f[2])}r.compose(s,a,c);let m=`${(d+x)*u.frameRate}: ${Uy(r)},`;No&&(m="#"+_+" "+m),e.appendLine(m)}}e.indent--,e.appendLine("}")}};import*as gm from"three";import*as pm from"three";import*as la from"three";import{PositionalAudioHelper as Gy}from"three/examples/jsm/helpers/PositionalAudioHelper.js";var ht=P("debugaudio");var De=class extends M{static get userInteractionRegistered(){return De._didCallBeginWaitForUserInteraction||(De._didCallBeginWaitForUserInteraction=!0,De._beginWaitForUserInteraction()),De._userInteractionRegistered}static registerWaitForAllowAudio(e){if(e!==null){if(this._userInteractionRegistered){e();return}this.callbacks.indexOf(e)===-1&&this.callbacks.push(e),De._didCallBeginWaitForUserInteraction||(De._didCallBeginWaitForUserInteraction=!0,De._beginWaitForUserInteraction())}}static _beginWaitForUserInteraction(e=null){if(this._userInteractionRegistered){e&&e();return}e!==null&&this.registerWaitForAllowAudio(e);let i=(()=>{if(i!=null&&!De._userInteractionRegistered){De._userInteractionRegistered=!0,console.log("registered interaction, can play audio now"),document.removeEventListener("pointerdown",i),document.removeEventListener("click",i),document.removeEventListener("dragstart",i),document.removeEventListener("touchstart",i);for(let n of this.callbacks)n();this.callbacks.length=0}}).bind(this);document.addEventListener("pointerdown",i),document.addEventListener("click",i),document.addEventListener("dragstart",i),document.addEventListener("touchstart",i)}clip="";playOnAwake=!1;get loop(){return this.sound&&(this._loop=this.sound.getLoop()),this._loop}set loop(e){this._loop=e,this.sound&&this.sound.setLoop(e)}get spatialBlend(){return this._spatialBlend}set spatialBlend(e){e!==this._spatialBlend&&(this._spatialBlend=e,this._needUpdateSpatialDistanceSettings=!0)}get minDistance(){return this._minDistance}set minDistance(e){this._minDistance!==e&&(this._minDistance=e,this._needUpdateSpatialDistanceSettings=!0)}get maxDistance(){return this._maxDistance}set maxDistance(e){this._maxDistance!==e&&(this._maxDistance=e,this._needUpdateSpatialDistanceSettings=!0)}_spatialBlend=0;_minDistance=1;_maxDistance=100;get volume(){return this._volume}set volume(e){this._volume=e,this.sound&&(ht&&console.log(this.name,"audio set volume",e),this.sound.setVolume(e))}_volume=1;rollOffMode=0;_loop=!1;sound=null;helper=null;wasPlaying=!1;audioLoader=null;shouldPlay=!1;_lastClipStartedLoading=null;get Sound(){if(!this.sound&&De._userInteractionRegistered){let e=R.getComponent(this.context.mainCamera,bi)??R.findObjectOfType(bi,this.context);e?.listener&&(this.sound=new la.PositionalAudio(e.listener),this.gameObject.add(this.sound))}return this.sound}get ShouldPlay(){return this.shouldPlay}_focusCallback;awake(){this.audioLoader=new la.AudioLoader,this.playOnAwake&&(this.shouldPlay=!0),window.addEventListener("visibilitychange",e=>{switch(document.visibilityState){case"hidden":this.wasPlaying=this.isPlaying,this.pause();break;case"visible":this.wasPlaying&&this.play();break}}),this._focusCallback=()=>{this.enabled&&this.playOnAwake&&!this.isPlaying&&De._userInteractionRegistered&&this.play()},this.context.application.addEventListener("application-visible",this._focusCallback)}onDestroy(){this.context.application.removeEventListener("application-visible",this._focusCallback)}onEnable(){De._userInteractionRegistered?this.playOnAwake&&this.context.application.isVisible&&this.play():De._beginWaitForUserInteraction(()=>{this.enabled&&!this.destroyed&&this.shouldPlay&&this.loadAndPlay(this.clip)})}onDisable(){this.stop()}lerp=(e,t,i)=>e*(1-i)+t*i;onLoaded(e){ht&&console.log("audio buffer loaded"),De.registerWaitForAllowAudio(()=>{ht&&console.log("finished loading",e);let t=this.Sound;if(!t){console.warn("Failed getting sound",this.name);return}t.isPlaying&&t.stop(),t.setBuffer(e),t.loop=this._loop,t.setVolume(this.volume),t.autoplay=this.shouldPlay,this.applySpatialDistanceSettings(),t.isPlaying&&t.stop(),ht&&console.log(this.name,this.shouldPlay,De.userInteractionRegistered,this),this.shouldPlay&&De._userInteractionRegistered&&this.play()})}applySpatialDistanceSettings(){let e=this.sound;if(!e)return;this._needUpdateSpatialDistanceSettings=!1;let t=this.lerp(10*this._maxDistance/Math.max(1e-4,this.spatialBlend),this._minDistance,this.spatialBlend);switch(ht&&console.log(this.name,this._minDistance,this._maxDistance,this.spatialBlend,"Ref distance="+t),e.setRefDistance(t),e.setMaxDistance(Math.max(.01,this._maxDistance)),this.rollOffMode){case 0:e.setDistanceModel("exponential");break;case 1:e.setDistanceModel("linear");break;case 2:break}this.spatialBlend>0?ht&&!this.helper&&(this.helper=new Gy(e,e.getRefDistance()),e.add(this.helper)):this.helper&&this.helper.parent&&this.helper.removeFromParent()}loadAndPlay(e){if(e&&(this.clip=e),this.clip&&(ht&&console.log(this.clip),this.clip.endsWith(".mp3")||this.clip.endsWith(".wav"))){if(this.audioLoader||(this.audioLoader=new la.AudioLoader),this.shouldPlay=!0,this._lastClipStartedLoading===this.clip){ht&&console.log("Is currently loading:",this._lastClipStartedLoading,this);return}this._lastClipStartedLoading=this.clip,ht&&console.log("load audio",this.clip),this.audioLoader.load(this.clip,this.onLoaded.bind(this),()=>{},console.error)}}play(e=void 0){if(!this.audioLoader||!this.sound||e&&e!==this.clip){this.loadAndPlay(e);return}this.shouldPlay=!0,this._hasEnded=!1,ht&&console.log("play",this.sound?.getVolume(),this.sound),this.sound&&!this.sound.isPlaying&&this.sound.play()}pause(){ht&&console.log("Pause",this),this._hasEnded=!0,this.shouldPlay=!1,this.sound&&this.sound.isPlaying&&this.sound.source&&(this._lastContextTime=this.sound?.context.currentTime,this.sound.pause())}stop(){ht&&console.log("Pause",this),this._hasEnded=!0,this.shouldPlay=!1,this.sound&&this.sound.source&&(this._lastContextTime=this.sound?.context.currentTime,ht&&console.log(this._lastContextTime),this.sound.stop())}_lastContextTime=0;get isPlaying(){return this.sound?.isPlaying??!1}set isPlaying(e){}get time(){return this.sound?.source?this.sound.source?.context.currentTime-this._lastContextTime+this.sound.offset:0}set time(e){if(this.sound){if(e===this.sound.offset)return;let t=this.isPlaying;this.stop(),this.sound.offset=e,t&&this.play()}}_hasEnded=!0;_needUpdateSpatialDistanceSettings=!1;update(){this.helper&&(this.isPlaying&&this.helper.update(),this.helper.visible=this.isPlaying),this._needUpdateSpatialDistanceSettings&&this.applySpatialDistanceSettings(),this.sound&&!this.sound.isPlaying&&this.shouldPlay&&!this._hasEnded&&(this._hasEnded=!0,ht&&console.log("Audio clip ended",this.clip),this.sound.dispatchEvent({type:"ended",target:this}))}},se=De;I(se,"_didCallBeginWaitForUserInteraction",!1),I(se,"callbacks",[]),I(se,"_userInteractionRegistered",!1),v([y()],se.prototype,"clip",2),v([y()],se.prototype,"playOnAwake",2),v([y()],se.prototype,"loop",1),v([y()],se.prototype,"spatialBlend",1),v([y()],se.prototype,"minDistance",1),v([y()],se.prototype,"maxDistance",1),v([y()],se.prototype,"volume",1),v([y()],se.prototype,"rollOffMode",2);import*as Gt from"three";import{Color as Vy}from"three";var q=class extends Vy{alpha=1;get isRGBAColor(){return!0}constructor(e,t,i,n){super(e,t,i),this.alpha=n}clone(){let e=super.clone();return e.alpha=this.alpha,e}copy(e){return super.copy(e),"alpha"in e&&typeof e.alpha=="number"?this.alpha=e.alpha:typeof e.a=="number"&&(this.alpha=e.a),this}lerp(e,t){let i=e;return i.alpha&&(this.alpha=H.lerp(this.alpha,i.alpha,t)),super.lerp(e,t)}lerpColors(e,t,i){let n=e,r=t;return n.alpha&&r.alpha&&(this.alpha=H.lerp(n.alpha,r.alpha,i)),super.lerpColors(e,t,i)}multiply(e){let t=e;return t.alpha&&(this.alpha=this.alpha*t.alpha),super.multiply(e)}};import{PerspectiveCamera as Wy,Ray as Ny}from"three";var ql=P("debugcam"),hm=P("debugscreenpointtoray"),Yl=class extends M{get isCamera(){return!0}get aspect(){return this._cam instanceof Wy?this._cam.aspect:this.context.domWidth/this.context.domHeight}get fieldOfView(){return this._fov}set fieldOfView(e){let t=this._fov!=e;this._fov=e,t&&this._cam&&this._cam instanceof Gt.PerspectiveCamera&&(this._cam.fov=this._fov,this._cam.updateProjectionMatrix())}get nearClipPlane(){return this._nearClipPlane}set nearClipPlane(e){let t=this._nearClipPlane!=e;this._nearClipPlane=e,this._cam&&t&&(this._cam.near=e,this._cam.updateProjectionMatrix())}_nearClipPlane=.1;get farClipPlane(){return this._farClipPlane}set farClipPlane(e){let t=this._farClipPlane!=e;this._farClipPlane=e,this._cam&&t&&(this._cam.far=e,this._cam.updateProjectionMatrix())}_farClipPlane=1e3;get clearFlags(){return this._clearFlags}set clearFlags(e){e!==this._clearFlags&&(this._clearFlags=e,this.applyClearFlagsIfIsActiveCamera())}orthographic=!1;orthographicSize=5;ARBackgroundAlpha=0;set cullingMask(e){this._cullingMask=e,this._cam&&(this._cam.layers.mask=e)}get cullingMask(){return this._cam?this._cam.layers.mask:this._cullingMask}_cullingMask=4294967295;set backgroundBlurriness(e){e!==this._backgroundBlurriness&&(e===void 0?this._backgroundBlurriness=void 0:this._backgroundBlurriness=Math.min(Math.max(e,0),1),this.applyClearFlagsIfIsActiveCamera())}get backgroundBlurriness(){return this._backgroundBlurriness}_backgroundBlurriness;set backgroundIntensity(e){e!==this._backgroundIntensity&&(e===void 0?this._backgroundIntensity=void 0:this._backgroundIntensity=Math.min(Math.max(e,0),10),this.applyClearFlagsIfIsActiveCamera())}get backgroundIntensity(){return this._backgroundIntensity}_backgroundIntensity;get backgroundColor(){return this._backgroundColor??null}set backgroundColor(e){if(!!e){if(this._backgroundColor)this._backgroundColor.copy(e);else{if(!e.clone)return;this._backgroundColor=e.clone()}e.alpha===void 0&&(this._backgroundColor.alpha=1),this.applyClearFlagsIfIsActiveCamera()}}_backgroundColor;_fov=60;_cam=null;_clearFlags=2;_skybox;get cam(){return this.activeAndEnabled&&this.buildCamera(),this._cam}screenPointToRay(e,t,i){let n=this.cam,r=Yl._origin;r.set(e,t,-1),this.context.input.convertScreenspaceToRaycastSpace(r),hm&&console.log("screenPointToRay",e.toFixed(2),t.toFixed(2),"now:",r.x.toFixed(2),r.y.toFixed(2),"isInXR:"+this.context.isInXR),r.z=-1,r.unproject(n);let s=Yl._direction.set(r.x,r.y,r.z),a=B(n);return s.sub(a),s.normalize(),i?(i.set(a,s),i):new Ny(a.clone(),s.clone())}awake(){this.sourceId||console.warn("Camera has no source - the camera should be exported inside a gltf",this.name),hm&&window.addEventListener("pointerdown",e=>{let t=e.clientX,i=e.clientY;console.log("touch",t.toFixed(2),i.toFixed(2));let n=this.screenPointToRay(t,i),r="#"+Math.floor(Math.random()*16777215).toString(16);jt.DrawRay(n.origin,n.direction,r,10)})}onEnable(){ql&&console.log(this),this.buildCamera(),(this.tag=="MainCamera"||!this.context.mainCameraComponent)&&this.context.setCurrentCamera(this),this.applyClearFlagsIfIsActiveCamera()}onDisable(){this.context.removeCamera(this)}buildCamera(){if(this._cam)return;let e=this.gameObject.isCamera,t=null;if(e?(t=this.gameObject,t?.layers.enableAll()):t=this.gameObject.children[0],t&&t.isCamera)t.type==="PerspectiveCamera"&&(t.fov=this._fov,t.near=this._nearClipPlane,t.far=this._farClipPlane,t.updateProjectionMatrix());else if(!this.orthographic)t=new Gt.PerspectiveCamera(this.fieldOfView,window.innerWidth/window.innerHeight,this._nearClipPlane,this._farClipPlane),t.fov=this.fieldOfView;else{let i=this.orthographicSize*100;t=new Gt.OrthographicCamera(window.innerWidth/-i,window.innerWidth/i,window.innerHeight/i,window.innerHeight/-i,this._nearClipPlane,this._farClipPlane)}this._cam=t,this._cam.layers.mask=this._cullingMask,this.tag=="MainCamera"&&this.context.setCurrentCamera(this)}applyClearFlagsIfIsActiveCamera(){if(ql&&Fe("apply Camera clear flags"),this._cam&&this.context.mainCameraComponent===this)switch(this._clearFlags){case 1:if(this.environmentIsTransparent()&&(!this.ARBackgroundAlpha||this.ARBackgroundAlpha<.001)){this.context.scene.background=null,this.context.renderer.setClearColor(0,0);return}this.enableSkybox(),this._backgroundBlurriness!==void 0&&(this.context.scene.backgroundBlurriness=this._backgroundBlurriness),this._backgroundIntensity!==void 0&&(this.context.scene.backgroundIntensity=this._backgroundIntensity);break;case 2:if(this._backgroundColor){let e=this._backgroundColor.alpha;this.environmentIsTransparent()&&(e=this.ARBackgroundAlpha??0),this.context.scene.background=null,this.context.renderer.setClearColor(this._backgroundColor,e)}break;case 4:this.context.scene.background=null,this.context.renderer.setClearColor(0,0);break}}environmentIsTransparent(){let e=this.context.renderer.xr?.getSession();if(!e)return!1;let t=e.environmentBlendMode;ql&&Fe("Environment blend mode: "+t+" on "+navigator.userAgent);let i=t==="additive"||t==="alpha-blend";if(this.context.xrSessionMode==="immersive-ar"&&t==="opaque"){if(navigator.userAgent?.includes("OculusBrowser"))return!0;if(navigator.userAgent?.includes("Mozilla")&&navigator.userAgent?.includes("Mobile WebXRViewer/v2"))return!0}return i}enableSkybox(){this._skybox||(this._skybox=new Cd(this)),this._skybox.enable()}},ee=Yl;I(ee,"_origin",new Gt.Vector3),I(ee,"_direction",new Gt.Vector3),v([y()],ee.prototype,"fieldOfView",1),v([y()],ee.prototype,"nearClipPlane",1),v([y()],ee.prototype,"farClipPlane",1),v([y()],ee.prototype,"clearFlags",1),v([y()],ee.prototype,"orthographic",2),v([y()],ee.prototype,"orthographicSize",2),v([y()],ee.prototype,"ARBackgroundAlpha",2),v([y()],ee.prototype,"cullingMask",1),v([y()],ee.prototype,"backgroundBlurriness",1),v([y()],ee.prototype,"backgroundIntensity",1),v([y(q)],ee.prototype,"backgroundColor",1);var Cd=class{_camera;_skybox;get context(){return this._camera?.context}constructor(e){this._camera=e}enable(){this._skybox=this.context.lightmaps.tryGetSkybox(this._camera.sourceId),this._skybox?this.context.scene.background!==this._skybox&&(ql&&console.log("Set skybox",this._camera,this._skybox),this._skybox.encoding=Gt.sRGBEncoding,this._skybox.mapping=Gt.EquirectangularReflectionMapping,this.context.scene.background=this._skybox):console.warn("Failed to load/find skybox texture",this)}};var bi=class extends M{get listener(){return this._listener==null&&(this._listener=new pm.AudioListener),this._listener}_listener=null;awake(){se.registerWaitForAllowAudio(()=>{let e=this.listener;if(e==null||e.parent)return;let t=R.getComponentInParent(this.gameObject,ee);t?t.cam.add(e):this.gameObject.add(e)})}};var vi=class{method;enabled;constructor(e,t){this.method=e,this.enabled=t!==void 0?t:!0}invoke(...e){if(this.enabled!==!1){if(!this.method){console.warn("No function. Please check you assigned a method to invoke on export",this);return}this.method(...e)}}},Xy=o=>/^[A-Z]*$/.test(o),Xr=class extends Event{args},de=class{target;key;setEventTarget(e,t){if(this.key=e,this.target=t,this.key!==void 0){let i="",n=!1;for(let r of this.key)n&&Xy(r)&&(i+="-"),n=!0,i+=r.toLowerCase();this.key=i}}_isInvoking=!1;methods=[];constructor(e){this.methods=e??[]}invoke(...e){if(this._isInvoking){console.warn("Circular event invocation detected. Please check your event listeners for circular references.",this);return}this._isInvoking=!0;try{for(let t of this.methods)t.invoke(...e);if(typeof this.target=="object"&&typeof this.key=="string"){let t=this.target.dispatchEvent;if(typeof t=="function"){let i=new Xr(this.key);i.args=e,t.call(this.target,i)}}}finally{this._isInvoking=!1}}addEventListener(e){return this.methods.push(new vi(e,!0)),e}removeEventListener(e){if(!!e)for(let t=this.methods.length-1;t>=0;t--)this.methods[t].method===e&&(this.methods[t].enabled=!1,this.methods.splice(t,1))}removeAllEventListeners(){this.methods.length=0}};var Qr=class{guid},qr=class{signal;reaction;$serializedTypes={signal:Qr,reaction:de}},wn=class extends M{events;start(){console.log(this)}invoke(e){if(!this.events||!Array.isArray(this.events))return;let t=typeof e=="object"?e.guid:e;for(let i of this.events)if(i.signal.guid===t)try{if(i.reaction){if(!i.reaction.invoke){console.warn("Missing invoke - possibly a serialization error",i,this);continue}}else{console.warn("Missing reaction for signal",i,this);continue}i.reaction.invoke()}catch(n){console.error(n)}}};v([y(qr)],wn.prototype,"events",2);var mm=P("debugtimeline");var Kl=class extends M{static registerCreateTrack(e,t){this.createTrackFunctions[e]=t}playableAsset;playOnAwake;extrapolationMode=1;get isPlaying(){return this._isPlaying}get isPaused(){return this._isPaused}get time(){return this._time}set time(e){this._time=e}get duration(){return this._duration}set duration(e){this._duration=e}get weight(){return this._weight}set weight(e){this._weight=e}_visibilityChangeEvt;_clonedPlayableAsset=!1;awake(){mm&&console.log(this,this.playableAsset?.tracks),this.rebuildGraph(),this.isValid()||console.warn("PlayableDirector is not valid",this.playableAsset,this.playableAsset?.tracks,Array.isArray(this.playableAsset?.tracks),this)}onEnable(){for(let e of this._audioTracks)e.onEnable?.();for(let e of this._customTracks)e.onEnable?.();this.playOnAwake&&this.play(),this._visibilityChangeEvt||(this._visibilityChangeEvt=()=>{switch(document.visibilityState){case"hidden":this.setAudioTracksAllowPlaying(!1);break;case"visible":this.setAudioTracksAllowPlaying(!0);break}}),window.addEventListener("visibilitychange",this._visibilityChangeEvt)}onDisable(){this.stop();for(let e of this._audioTracks)e.onDisable?.();for(let e of this._customTracks)e.onDisable?.();this._visibilityChangeEvt&&window.removeEventListener("visibilitychange",this._visibilityChangeEvt)}onDestroy(){for(let e of this._audioTracks)e.onDestroy?.()}rebuildGraph(){!this.isValid()||(this.resolveBindings(),this.updateTimelineDuration(),this.setupAndCreateTrackHandlers())}play(){!this.isValid()||(this._isPaused=!1,!this._isPlaying&&(this._isPlaying=!0,this._internalUpdateRoutine=this.startCoroutine(this.internalUpdate())))}pause(){this._isPaused=!0}stop(){this._isPlaying&&(this._time=0,this._isPlaying=!1,this._isPaused=!1,this.evaluate()),this._isPlaying=!1,this._isPaused=!1,this._internalUpdateRoutine&&this.stopCoroutine(this._internalUpdateRoutine),this._internalUpdateRoutine=null}evaluate(){if(!this.isValid())return;let e=this._time;switch(this.extrapolationMode){case 0:e=Math.min(e,this._duration);break;case 1:e%=this._duration;break;case 2:if(e>this._duration){this.stop();return}break}this.internalEvaluate(e)}isValid(){return this.playableAsset&&this.playableAsset.tracks&&Array.isArray(this.playableAsset.tracks)}*forEachTrack(){for(let e of this._allTracks)for(let t of e)yield t}get audioTracks(){return this._audioTracks}_guidsMap;resolveGuids(e){this._guidsMap=e}_isPlaying=!1;_internalUpdateRoutine;_isPaused=!1;_time=0;_duration=0;_weight=1;_animationTracks=[];_audioTracks=[];_signalTracks=[];_controlTracks=[];_customTracks=[];_allTracks=[this._animationTracks,this._audioTracks,this._signalTracks,this._controlTracks,this._customTracks];*internalUpdate(){for(;this._isPlaying&&this.activeAndEnabled;)!this._isPaused&&this._isPlaying&&(this._time+=this.context.time.deltaTime,this.evaluate()),yield}internalEvaluate(e){for(let t of this.playableAsset.tracks)if(!t.muted)switch(t.type){case"ActivationTrack":for(let i=0;i<t.outputs.length;i++){let n=t.outputs[i];if(typeof n=="object"){let r=!1;for(let a of t.clips)a.start<=e&&e<=a.end&&(r=!0);let s=n;s.visible!==void 0&&(s.visible=r)}}break}for(let t of this._animationTracks)t.evaluate(e);for(let t of this._audioTracks)t.evaluate(e);for(let t of this._signalTracks)t.evaluate(e);for(let t of this._controlTracks)t.evaluate(e);for(let t of this._customTracks)t.evaluate(e)}resolveBindings(){if(this._clonedPlayableAsset||(this._clonedPlayableAsset=!0,this.playableAsset=Us(this.playableAsset)),!this.playableAsset||!this.playableAsset.tracks)return;let e=this.findRoot(this.gameObject);for(let t of this.playableAsset.tracks)for(let i=t.outputs.length-1;i>=0;i--){let n=t.outputs[i];if(typeof n=="string"){this._guidsMap&&this._guidsMap[n]&&(n=this._guidsMap[n]);let r=R.findByGuid(n,e);r===null||typeof r!="object"?(t.outputs.splice(i,1),console.warn("Failed to resolve binding",n,t.name,t.type)):(mm&&console.log("Resolved binding",n,"to",r),t.outputs[i]=r,r instanceof Pe)}else if(n===null){if(t.outputs.splice(i,1),Kl.createTrackFunctions[t.type])continue;t.type!=="AudioTrack"&&t.type!=="ControlTrack"&&t.type!=="MarkerTrack"&&console.warn("Missing binding",n,t.name,t.type,this.name,this.playableAsset.name)}}}findRoot(e){return e.parent?this.findRoot(e.parent):e}updateTimelineDuration(){if(this._duration=0,!(!this.playableAsset||!this.playableAsset.tracks)){for(let e of this.playableAsset.tracks)if(e.muted!==!0)for(let t of e.clips)t.end>this._duration&&(this._duration=t.end)}}setupAndCreateTrackHandlers(){if(this._animationTracks.length=0,this._audioTracks.length=0,this._signalTracks.length=0,!this.playableAsset)return;let e=[];for(let t of this.playableAsset.tracks){let i=t.type,n=Kl.createTrackFunctions[i];if(n!=null){let r=n(this,t);if(typeof r.evaluate=="function"){r.director=this,r.track=t,this._customTracks.push(r);continue}}if(t.type==="AnimationTrack"){if(t.clips.length<=0)continue;for(let r=t.outputs.length-1;r>=0;r--){let s=t.outputs[r];typeof s.enabled=="boolean"&&(s.enabled=!1);let a=s?.gameObject?.animations;if(a){let c=new ir;c.trackOffset=t.trackOffset,c.director=this,c.track=t;for(let u=0;u<t.clips.length;u++){let l=t.clips[u],d=l.asset;if(!d){console.error("MISSING anim model?","clip#"+u,l,t,this.playableAsset,this.name);continue}let h=d.clip,g=h;if((typeof g=="string"||typeof g=="number")&&(g=a.find(_=>_.name===h)),!g){console.warn("Could not find animationClip for model",l,t.name,this.name,this.playableAsset?.name);continue}c.mixer||(c.mixer=new gm.AnimationMixer(s.gameObject)),c.clips.push(g),c.mixer.uncacheAction(g),c.createHooks(l.asset,g);let E=c.mixer.clipAction(g);c.actions.push(E),c.models.push(l)}this._animationTracks.push(c)}}}else if(t.type==="AudioTrack"){if(t.clips.length<=0)continue;e.push(t)}else if(t.type==="MarkerTrack"){let r=new Cn;r.director=this,r.track=t;for(let s of t.markers)switch(s.type){case"SignalEmitter":r.models.push(s),r.didTrigger.push(!1);break}if(r!==null&&r.models.length>0){let s=R.getComponent(this.gameObject,wn);s&&(r.receivers.push(s),this._signalTracks.push(r))}}else if(t.type==="SignalTrack"){let r=new Cn;r.director=this,r.track=t;for(let s of t.markers)r.models.push(s),r.didTrigger.push(!1);for(let s of t.outputs)r.receivers.push(s);this._signalTracks.push(r)}else if(t.type==="ControlTrack"){let r=new Tn;r.director=this,r.track=t;for(let s of t.clips)r.models.push(s);r.resolveSourceObjects(this.context),this._controlTracks.push(r)}}se.registerWaitForAllowAudio(()=>{let t=R.findObjectOfType(bi,this.context);if(!!t)for(let i of e){let n=new nr;n.director=this,n.track=i,n.listener=t.listener;for(let r=0;r<i.clips.length;r++){let s=i.clips[r];n.addModel(s)}this._audioTracks.push(n)}})}setAudioTracksAllowPlaying(e){for(let t of this._audioTracks)t.onAllowAudioChanged(e)}},En=Kl;I(En,"createTrackFunctions",{});import*as $ from"three";import{Quaternion as qy,Vector3 as Yy}from"three";var Xo=P("debugtimeline"),Qo=class{director;track;get muted(){return this.track.muted}set muted(e){e!==this.track.muted&&(this.track.muted=e,this.onMuteChanged?.call(this))}*forEachClip(e=!1){if(!!this.track?.clips)if(e)for(let t=this.track.clips.length-1;t>=0;t--)yield this.track.clips[t];else for(let t of this.track.clips)yield t}getClipTime(e,t){return t.clipIn+(e-t.start)*t.timeScale}getClipTimeNormalized(e,t){return(e-t.start)/t.duration}evaluateWeight(e,t,i,n=!0){if(t<0||t>=i.length)return 0;let r=i[t];if(n||e>=r.start&&e<=r.end){let s=1,a=!1;if(r.easeInDuration>0){let c=Math.min((e-r.start)/r.easeInDuration,1);s*=c}if(r.easeOutDuration>0&&!a){let c=Math.min((r.end-e)/r.easeOutDuration,1);s*=c}return s}return 0}},Td=class{clip;rootPositionOffset;rootQuaternionOffset;get hasOffsets(){return this.rootPositionOffset!==void 0||this.rootQuaternionOffset!==void 0}rootStartPosition;rootEndPosition;rootStartQuaternion;rootEndQuaternion;constructor(e){let t=e.getClip();this.clip=t;let i=e.getRoot(),n=i.name+".position",r=i.name+".quaternion";Xo&&console.log(t.name,t.tracks,n);for(let s of t.tracks)if(!(s.times.length<=0)){if(s.name.endsWith(n))this.rootStartPosition=new $.Vector3().fromArray(s.values,0),this.rootEndPosition=new $.Vector3().fromArray(s.values,s.values.length-3),this.rootPositionOffset=this.rootEndPosition.clone().sub(this.rootStartPosition),Xo&&console.log(this.rootPositionOffset);else if(s.name.endsWith(r)&&(this.rootStartQuaternion=new $.Quaternion().fromArray(s.values,0),this.rootEndQuaternion=new $.Quaternion().fromArray(s.values,s.values.length-4),this.rootQuaternionOffset=this.rootEndQuaternion.clone().multiply(this.rootStartQuaternion),Xo)){let a=new $.Euler().setFromQuaternion(this.rootQuaternionOffset);console.log("ROT",a)}}}},ir=class extends Qo{models=[];trackOffset;target;mixer;clips=[];actions=[];_actionOffsets=[];_didBind=!1;createHooks(e,t){if(t.tracks?.length<=0){console.warn("No tracks in AnimationClip",t);return}let i=t.tracks[0].name.split("."),n=i[i.length-2],r=n+".position",s=n+".quaternion",a=!1,c=!1;for(let u of t.tracks)u.name.endsWith(r)?(a=!0,this.createPositionInterpolant(t,e,u)):u.name.endsWith(s)&&(c=!0,this.createRotationInterpolant(t,e,u));if(!a||!c){let u=this.mixer?.getRoot(),l=t.tracks[0],d=l.name.lastIndexOf("."),h=l.name.substring(0,d),g=h.substring(h.lastIndexOf(".")+1),E=u.getObjectByName(g);if(E)if(a){if(!c){let _=t.tracks[0].name.substring(0,d)+".quaternion";Xo&&console.warn("Create quaternion track",g,E);let x=E.quaternion,m=new $.QuaternionKeyframeTrack(_,[0,t.duration],[x.x,x.y,x.z,x.w,x.x,x.y,x.z,x.w]);t.tracks.push(m),this.createRotationInterpolant(t,e,m)}}else{let _=h+".position";Xo&&console.warn("Create position track",g,E);let x=E.position,m=new $.VectorKeyframeTrack(_,[0,t.duration],[x.x,x.y,x.z,x.x,x.y,x.z]);t.tracks.push(m),this.createPositionInterpolant(t,e,m)}}}bind(){if(!this._didBind){this._didBind=!0,Xo&&console.log(this.models),this.mixer?this.target=this.mixer.getRoot():console.warn("No mixer was assigned to animation track");for(let e of this.actions){let t=new Td(e);this._actionOffsets.push(t)}for(let e of this.models){let t=e.asset,i=t.position,n=t.rotation;i.x!==void 0&&(i.isVector3||(t.position=new Yy(i.x,i.y,i.z)),n.isQuaternion||(t.rotation=new qy(n.x,n.y,n.z,n.w)))}this.ensureTrackOffsets()}}ensureTrackOffsets(){if(this.trackOffset){let e=this.trackOffset.position;e&&(e.isVector3||(this.trackOffset.position=new $.Vector3(e.x,e.y,e.z)));let t=this.trackOffset.rotation;t&&(t.isQuaternion||(this.trackOffset.rotation=new $.Quaternion(t.x,t.y,t.z,t.w)))}}_useclipOffsets=!0;_totalOffsetPosition=new $.Vector3;_totalOffsetRotation=new $.Quaternion;_totalOffsetPosition2=new $.Vector3;_totalOffsetRotation2=new $.Quaternion;_summedPos=new $.Vector3;_tempPos=new $.Vector3;_summedRot=new $.Quaternion;_tempRot=new $.Quaternion;evaluate(e){if(this.track.muted||!this.mixer)return;this.bind(),this._totalOffsetPosition.set(0,0,0),this._totalOffsetRotation.set(0,0,0,1),this._totalOffsetPosition2.set(0,0,0),this._totalOffsetRotation2.set(0,0,0,1);let t=0,i=0,n=!1;for(let r=0;r<this.clips.length;r++){let s=this.models[r],a=this.actions[r],c=s.asset;a.weight=0;let u=e>=s.start&&e<=s.end,l=s.postExtrapolationMode,d=u;if(!d&&!n&&s.end<e&&s.postExtrapolationMode!==0){let h=r<this.clips.length-1?this.models[r+1]:null;(!h||h.start>e)&&(d=!0,n=!0)}if(d){let h=1;h*=this.evaluateWeight(e,r,this.models,d);let g=this.getClipTime(e,s),E=0,_=c.duration;if(u){if(c.loop)for(E+=Math.floor(g/(_+1e-6));g>_;)g-=_}else if(!u)switch(l){case 2:g%=_;break;case 3:let f=Math.floor(g/_)%2!==0;g%=_,f&&(g=_-g);break}a.time=g,a.timeScale=0;let x=h*this.director.weight;if(a.weight=x,a.clampWhenFinished=!0,a.isRunning()||a.play(),this._useclipOffsets){let m=t==0?this._totalOffsetPosition:this._totalOffsetPosition2,f=t==0?this._totalOffsetRotation:this._totalOffsetRotation2;t<1&&(i=1-h),t+=1;let p=this._summedPos.set(0,0,0),b=this._tempPos.set(0,0,0),w=this._summedRot.identity(),C=this._tempRot.identity(),T=c.rotation,S=new $.Quaternion;S.slerp(T,h);let A=this._actionOffsets[r];if(A.hasOffsets)for(let D=0;D<E;D++)A.rootPositionOffset?b.copy(A.rootPositionOffset):b.set(0,0,0),b.applyQuaternion(w).applyQuaternion(S),A.rootQuaternionOffset&&(C.copy(A.rootQuaternionOffset),w.multiply(C)),p.add(b);f.multiply(S),f.multiply(w),p.add(c.position),m.add(p)}}}this._useclipOffsets&&(this._totalOffsetPosition.lerp(this._totalOffsetPosition2,i),this._totalOffsetRotation.slerp(this._totalOffsetRotation2,i)),this.mixer.update(e)}createRotationInterpolant(e,t,i){let n=i.createInterpolant.bind(i),r=new $.Quaternion;this.ensureTrackOffsets();let s=this.trackOffset?.rotation;i.createInterpolant=()=>{let a=n(),c=a.evaluate.bind(a);return a.evaluate=u=>{let l=c(u);return r.set(l[0],l[1],l[2],l[3]),r.premultiply(this._totalOffsetRotation),s&&r.premultiply(s),l[0]=r.x,l[1]=r.y,l[2]=r.z,l[3]=r.w,l},a}}createPositionInterpolant(e,t,i){let n=i.createInterpolant.bind(i),r=new $.Vector3;this.ensureTrackOffsets();let s=this.trackOffset?.rotation,a=this.trackOffset?.position,c;i.createInterpolant=()=>{let u=n(),l=u.evaluate.bind(u);return u.evaluate=d=>{let h=l(d);return r.set(h[0],h[1],h[2]),t.removeStartOffset&&(c===void 0?(c=null,c=this._actionOffsets.find(g=>g.clip===e)?.rootStartPosition?.clone()):c?.isVector3&&r.sub(c)),r.applyQuaternion(this._totalOffsetRotation),r.add(this._totalOffsetPosition),s&&r.applyQuaternion(s),a&&(r.x-=a.x,r.y+=a.y,r.z+=a.z),h[0]=r.x,h[1]=r.y,h[2]=r.z,h},u}}},nr=class extends Qo{models=[];listener;audio=[];audioContextTimeOffset=[];lastTime=0;getAudioFilePath(e){let t=this.director.sourceId;return Ii(t,e)}onAllowAudioChanged(e){for(let t=0;t<this.models.length;t++){let i=this.models[t];this.audio[t].setVolume(e?i.asset.volume:0)}}addModel(e){let t=this.getAudioFilePath(e.asset.clip),i=new $.Audio(this.listener);i.setVolume(e.asset.volume);let n=new $.AudioLoader;console.log(t,this.director.sourceId),n.load(t,r=>{i.setBuffer(r),i.loop=e.asset.loop,this.audio.push(i),this.models.push(e)})}onDisable(){for(let e of this.audio)e.isPlaying&&e.stop()}onMuteChanged(){if(this.muted)for(let e=0;e<this.audio.length;e++){let t=this.audio[e];t?.isPlaying&&t.stop()}}evaluate(e){if(!this.track.muted){for(let t=0;t<this.models.length;t++){let i=this.models[t],n=this.audio[t];if(e>=i.start&&e<=i.end){if(this.director.isPaused&&(n.isPlaying&&n.stop(),this.lastTime===e))continue;n.isPlaying||(n.offset=i.clipIn+(e-i.start)*i.timeScale,n.play());let r=i.asset.volume;if(i.easeInDuration>0){let s=Math.min((e-i.start)/i.easeInDuration,1);r*=s}if(i.easeOutDuration>0){let s=Math.min((i.end-e)/i.easeOutDuration,1);r*=s}n.setVolume(r*this.director.weight)}else n.isPlaying&&n.stop()}this.lastTime=e}}},Cn=class extends Qo{models=[];didTrigger=[];receivers=[];evaluate(e){if(!(this.receivers.length<=0)&&!this.track.muted)for(let t=0;t<this.models.length;t++){let i=this.models[t],n=this.didTrigger[t],r=i.time-e;if(i.retroActive?r<0:r<0&&Math.abs(r)<.1){if(!n){this.didTrigger[t]=!0;for(let a of this.receivers)!a||a.invoke(i.asset)}}else i.emitOnce||(this.didTrigger[t]=!1)}}},ca=class extends Qo{models=[];timelines=[];resolveSourceObjects(e){for(let t=this.models.length-1;t>=0;t--){let n=this.models[t].asset;if(typeof n.sourceObject=="string"){let r=n.sourceObject;ca.resolved[r]?n.sourceObject=ca.resolved[r]:(n.sourceObject=R.findByGuid(r,e.scene),ca.resolved[r]=n.sourceObject)}if(n.sourceObject){let r=R.getComponent(n.sourceObject,En);this.timelines.push(r),r&&n.updateDirector&&(r.playOnAwake=!1)}else{this.models.splice(t,1);continue}}}_previousActiveModel=null;evaluate(e){this._previousActiveModel=null;for(let t=0;t<this.models.length;t++){let i=this.models[t],n=i.asset;if(e>=i.start&&e<=i.end){this._previousActiveModel=i;let r=this.getClipTime(e,i);if(n.controlActivation){let s=n.sourceObject;s.visible=!0}if(n.updateDirector){let s=this.timelines[t];s&&(s.isPlaying&&s.pause(),s.time=r,s.evaluate())}}else{let r=this._previousActiveModel?.asset;if(n.controlActivation){let s=n.sourceObject;r?.sourceObject!==s&&(s.visible=!1)}}}}},Tn=ca;I(Tn,"resolved",{});import{BoxHelper as E_,BufferGeometry as C_,Color as Pm,Euler as T_,Layers as R_,Line as S_,Mesh as P_,MeshBasicMaterial as O_,Quaternion as ac,Ray as k_,SphereGeometry as M_,Vector2 as I_,Vector3 as Ci}from"three";import{OculusHandModel as A_}from"three/examples/jsm/webxr/OculusHandModel.js";import{OculusHandPointerModel as D_}from"three/examples/jsm/webxr/OculusHandPointerModel.js";import{XRControllerModelFactory as L_}from"three/examples/jsm/webxr/XRControllerModelFactory.js";import{GLTFLoader as j_}from"three/examples/jsm/loaders/GLTFLoader.js";import*as ym from"three";import{Quaternion as Jy,Vector3 as Zl}from"three";import{GLTFLoader as Ky}from"three/examples/jsm/loaders/GLTFLoader";import*as Jl from"three";var ua=P("debugavatar"),Yr=class{root;head;leftHand;rigthHand;get isValid(){return this.head!==null&&this.head!==void 0}constructor(e,t,i,n){this.root=e,this.head=t,this.leftHand=i,this.rigthHand=n,this.root?.traverse(r=>r.layers.set(2))}},rr=class{avatarRegistryUrl=null;async getOrCreateNewAvatarInstance(e,t){if(!t)return console.error("Can not create avatar: failed to provide id or root object"),null;let i=null;if(typeof t=="string"){if(i=await this.loadAvatar(e,t),!i){let r=new Ue;i=R.instantiate(Wn(t,e.scene),r)}}else i=t;if(!i)return null;let n=this.findAvatar(i);return n.isValid?(ua&&console.log("[Custom Avatar] valid config",t,ua?n:""),n):(console.warn("[Custom Avatar] config isn't valid",t,ua?n:""),null)}async loadAvatar(e,t){if(console.assert(t!=null&&typeof t=="string","Avatar id must not be null"),t.length<=0||!t)return null;if(ua&&console.log("[Custom Avatar] "+t+", loading..."),t.endsWith(".glb")||(t+=".glb"),this.avatarRegistryUrl===null){let n=await fetch("./"+t),r=null;if(n.ok){let a=await n.blob();a&&(r=await a.arrayBuffer())}return!r&&(r=await wl(t,t,0,"no url here go away",!0),!r)?null:(await qe().parseSync(e,r,null,0))?.scene??null}let i=new Ky;return _n(i,e),new Promise((n,r)=>{let s=this.avatarRegistryUrl+"/"+t;i.load(s,async a=>{await qe().createBuiltinComponents(e,s,a,null,void 0),n(a.scene)},a=>{ua&&console.log("[Custom Avatar] "+a.loaded/a.total*100+"% loaded of "+a.total/1024+"kB")},a=>{console.error("[Custom Avatar] Error when loading: "+a),n(null)})})}cacheModel(e,t){}findAvatar(e){let t=e,i=t;i.children.length==1&&(i=e.children[0]);let n=this.findAvatarPart(i,["head"]),r=this.findAvatarPart(i,["left","hand"]),s=this.findAvatarPart(i,["right","hand"]);if(!n){n=t;let c=new Jl.Vector3;new Jl.Box3().setFromObject(n).getSize(c);let u=Math.max(c.x,c.y,c.z);console.warn("[Custom Avatar] Normalizing head scale, it's too big: "+u+" meters! Should be < 0.3m"),u>.3&&n.scale.multiplyScalar(1/u*.3)}return new Yr(t,n,r,s)}findAvatarPart(e,t){let i=e.name.toLowerCase(),n=!0;for(let r of t){if(!n)break;i.indexOf(r)===-1&&(n=!1)}if(n)return e;if(e.children)for(let r of e.children){let s=this.findAvatarPart(r,t);if(s)return s}return null}handleCustomAvatarErrors(e){if(!e.ok)throw Error(e.statusText);return e}};var qo=P("debugflags");var Rd=class{Mask=17;Has(e){return(this.Mask&e)!==0}Set(e){qo&&console.warn("Set XR flag state to",e),this.Mask=e,Ee.Apply()}Enable(e){this.Mask|=e,Ee.Apply()}Disable(e){this.Mask&=~e,Ee.Apply()}Toggle(e){this.Mask^=e,Ee.Apply()}EnableAll(){this.Mask=-1,Ee.Apply()}DisableAll(){this.Mask=0,Ee.Apply()}},Rt=Rd;I(Rt,"Global",new Rd);var zi=class extends M{static Apply(){for(let e of this.registry)e.UpdateVisible(Rt.Global)}awake(){zi.registry.push(this)}onEnable(){zi.firstApply||(zi.firstApply=!0,zi.Apply())}onDestroy(){let e=zi.registry.indexOf(this);e>=0&&zi.registry.splice(e,1)}visibleIn;get isOn(){return this.gameObject.visible}UpdateVisible(e=null){let t,i=e;i&&typeof i=="number"&&(console.assert(typeof i=="number","XRFlag.UpdateVisible: state must be a number",i),qo&&console.log(i),zi.buffer.Mask=i,e=zi.buffer);let n=e;if(n?(qo&&console.warn(this.name,"use passed in mask",n.Mask,this.visibleIn),t=n.Has(this.visibleIn)):(qo&&console.log(this.name,"use global mask"),Rt.Global.Has(this.visibleIn)),t!==void 0)if(t)qo&&console.log(this.name,"is visible",this.gameObject.uuid),R.setActive(this.gameObject,!0);else{if(qo&&console.log(this.name,"is not visible",this.gameObject.uuid),!this.gameObject.visible)return;this.gameObject.visible=!1}}},Ee=zi;I(Ee,"registry",[]),I(Ee,"firstApply"),I(Ee,"buffer",new Rt);import{Object3D as Sd}from"three";var or=P("debugavatar"),yi=class extends M{static getAvatar(e){return e>=0&&e<yi.instances.length?yi.instances[e]:null}static onAvatarMarkerCreated(e){return yi._onNewAvatarMarkerAdded.push(e),e}static onAvatarMarkerDestroyed(e){return yi._onAvatarMarkerDestroyed.push(e),e}connectionId;avatar;awake(){yi.instances.push(this),or&&console.log(this);for(let e of yi._onNewAvatarMarkerAdded)e({avatarMarker:this,gameObject:this.gameObject})}onDestroy(){yi.instances.splice(yi.instances.indexOf(this),1);for(let e of yi._onAvatarMarkerDestroyed)e({avatarMarker:this,gameObject:this.gameObject})}isLocalAvatar(){return this.connectionId===this.context.connection.connectionId}setVisible(e){this.avatar&&("setVisible"in this.avatar?this.avatar.setVisible(e):R.setActive(this.avatar,e))}},le=yi;I(le,"instances",[]),I(le,"_onNewAvatarMarkerAdded",[]),I(le,"_onAvatarMarkerDestroyed",[]);var da=class{_isVisible=!0;setVisible(e){this._isVisible=e,this.updateVisibility()}get isWebXRAvatar(){return!0}guid;root=null;head=null;handLeft=null;handRight=null;lastUpdate=-1;isLocalAvatar=!1;flags=null;headScale=new Zl(1,1,1);handLeftScale=new Zl(1,1,1);handRightScale=new Zl(1,1,1);webxr;lastAvatarId=null;hasAvatarOverride=!1;context;avatarMarker=null;constructor(e,t,i){this.context=e,this.guid=t,this.webxr=i,this.setupCustomAvatar(this.webxr.defaultAvatar)}updateFlags(){if(!this.flags)return;let e=this.isLocalAvatar?8:16;this.context.isInVR?e|=4:this.context.isInAR?e|=2:e|=1;for(let t of this.flags)t.gameObject.visible=!0,t.UpdateVisible(e)}async setAvatarOverride(e){return this.hasAvatarOverride=e!==null,this.hasAvatarOverride&&this.lastAvatarId!==e&&(this.lastAvatarId=e,e!=null&&e.length>0)?await this.setupCustomAvatar(e):null}_headTarget=new Sd;_handLeftTarget=new Sd;_handRightTarget=new Sd;_canInterpolate=!1;tryUpdate(e,t){if(e.guid===this.guid&&(this.lastAvatarId!==e.avatarId&&e.avatarId&&e.avatarId.length>0&&(this.lastAvatarId=e.avatarId,this.setupCustomAvatar(e.avatarId)),this.lastUpdate=e.time,this.head)){let i=this.webxr.IsInAR?"handheld":"headset",n=this.head;this.context.players.setPlayerView(e.guid,n,i),oe.markDirty(this.head),this._canInterpolate=!0;let r=this.isLocalAvatar?this.head:this._headTarget;if(r.position.set(e.position.x,e.position.y,e.position.z),r.quaternion.set(e.rotation.x,e.rotation.y,e.rotation.z,e.rotation.w),r.scale.set(e.scale,e.scale,e.scale),r.scale.multiply(this.headScale),this.handLeft){let s=this.isLocalAvatar?this.handLeft:this._handLeftTarget;s.position.set(e.posLeftHand.x,e.posLeftHand.y,e.posLeftHand.z),s.quaternion.set(e.rotLeftHand._x,e.rotLeftHand._y,e.rotLeftHand._z,e.rotLeftHand._w),s.quaternion.multiply(da.invertRotation),s.scale.set(e.scale,e.scale,e.scale),s.scale.multiply(this.handLeftScale),oe.markDirty(this.handLeft)}if(this.handRight){let s=this.isLocalAvatar?this.handRight:this._handRightTarget;s.position.set(e.posRightHand.x,e.posRightHand.y,e.posRightHand.z),s.quaternion.set(e.rotRightHand._x,e.rotRightHand._y,e.rotRightHand._z,e.rotRightHand._w),s.quaternion.multiply(da.invertRotation),s.scale.set(e.scale,e.scale,e.scale),s.scale.multiply(this.handRightScale),oe.markDirty(this.handRight)}}}update(){if(this.isLocalAvatar||!this._canInterpolate)return;let e=this.context.time.deltaTime/.1;this.head&&(this.head.position.lerp(this._headTarget.position,e),this.head.quaternion.slerp(this._headTarget.quaternion,e),this.head.scale.lerp(this._headTarget.scale,e)),this.handLeft&&this._handLeftTarget&&(this.handLeft.position.lerp(this._handLeftTarget.position,e),this.handLeft.quaternion.slerp(this._handLeftTarget.quaternion,e),this.handLeft.scale.lerp(this._handLeftTarget.scale,e)),this.handRight&&this._handRightTarget&&(this.handRight.position.lerp(this._handRightTarget.position,e),this.handRight.quaternion.slerp(this._handRightTarget.quaternion,e),this.handRight.scale.lerp(this._handRightTarget.scale,e))}destroy(){or&&console.log("Destroy avatar",this.guid),this.root?.removeFromParent(),this.avatarMarker?.destroy(),this.lastAvatarId=null,this.head&&ye.Remove(this.context,this.head)}updateVisibility(){let e=this.root;e&&R.setActive(e,this._isVisible)}async setupCustomAvatar(e){if(or&&console.log("LOAD",e,this),!e||typeof e=="string"&&e.length<=0)return!1;this.head&&ye.Remove(this.context,this.head);let t=e;if(t?.loadAssetAsync!==void 0){await t.loadAssetAsync();let n=t.asset;R.setActive(n,!1),e=R.instantiate(n),R.setActive(e,!0)}or&&console.log(e);let i=await da.loader.getOrCreateNewAvatarInstance(this.context,e);if(or&&console.log(i,i?.isValid,this.lastAvatarId,e),i?.isValid){if(this.root=i.root,this.root.position.set(0,0,0),this.root.quaternion.set(0,0,0,1),this.root.scale.set(1,1,1),this.avatarMarker=R.addNewComponent(this.root,le),this.avatarMarker.connectionId=this.guid,this.avatarMarker.avatar=this,this.head&&this.head!==i.head&&this.head?.removeFromParent(),this.head=i.head,this.headScale.copy(this.head.scale),this.head&&!this.isLocalAvatar&&ye.Add(this.context,this.head,this.avatarMarker),i.leftHand&&this.handLeft?.removeFromParent(),this.handLeft=i.leftHand??this.handLeft,this.handLeft?this.handLeftScale.copy(this.handLeft.scale):this.handLeftScale.set(1,1,1),i.rigthHand&&this.handRight?.removeFromParent(),this.handRight=i.rigthHand??this.handRight,this.handRight?this.handRightScale.copy(this.handRight.scale):this.handRightScale.set(1,1,1),this.context.scene.add(this.root),this.flags==null&&(this.flags=[]),this.flags.length=0,this.flags.push(...R.getComponentsInChildren(this.root,Ee)),this.flags.length<=0&&this.head){let n=R.addNewComponent(this.head,Ee);n.visibleIn=20,this.flags.push(n),or&&console.log("Added flag to head: "+n.visibleIn,this.head.name)}return or&&console.log("[Avatar], is Local? ",this.isLocalAvatar,this.root),this.updateFlags(),this.updateVisibility(),!0}else return or&&console.warn("build avatar failed"),!1}},Vt=da;I(Vt,"loader",new rr),I(Vt,"invertRotation",new Jy().setFromAxisAngle(new Zl(0,1,0),Math.PI));var ye=class{static Add(e,t,i=null){if(!!t){for(let n of this.Pois)if(n.obj===t)return;this.Pois.push({obj:t,avatar:i}),this.LastChangeTime=e.time.time}}static Remove(e,t){if(!!t){for(let i of this.Pois)if(i.obj===t){this.Pois.splice(this.Pois.indexOf(i),1),this.LastChangeTime=e?.time.time??G.Current?.time.time;return}}}};I(ye,"Pois",[]),I(ye,"LastChangeTime",0);var Pd=class{guid;position=new ym.Vector3},Rn=class extends M{set controlledTarget(e){this.target=e;let t=O.get("MoveRandom");if(t&&this.target){let i=R.getComponent(this.target,t);i&&i.destroy()}}target=null;avatar=null;_model=null;_targetModel=new Pd;_currentTargetObject=null;_lastUpdateTime=0;_lookDuration=0;_lastPoiChangedTime=0;awake(){if(this.avatar=R.getComponentInParent(this.gameObject,le),this.avatar){let e=R.getComponentInParent(this.gameObject,le);this._model=new Yn(this.context.connection,this.guid),e?.isLocalAvatar&&this._model.requestOwnership()}this.context.connection.beginListen("avatar-look-target-changed",e=>{this.target&&e&&e.guid===this.avatar?.guid&&ie(this.target,e.position)})}update(){if((!this.context.connection.isConnected||this._model?.hasOwnership)&&(ye.LastChangeTime!==this._lastPoiChangedTime&&(this._lastPoiChangedTime=ye.LastChangeTime,this._lookDuration=0),this.selectTarget(),this._currentTargetObject&&this.context.time.frameCount%10===0&&this.target)){let t=B(this._currentTargetObject);ie(this.target,t),this.context.connection.isConnected&&this.avatar&&(this.context.connection.send("avatar-look-target-changed",this._targetModel),this._targetModel.guid=this.avatar.guid,this._targetModel.position.copy(t))}}selectTarget(){if(this.context.time.time-this._lastUpdateTime>this._lookDuration){this._lastUpdateTime=this.context.time.time,this._lookDuration=Math.random()*.5+.2;let t=ye.Pois;if(t.length>0){let i=t[Math.floor(Math.random()*t.length)];if(i&&i.obj){if(i.avatar&&i.avatar===this.avatar)return;this._currentTargetObject=i.obj}}}}};var zt=class extends M{canGrab=!0;onPointerClick(e){}},Wt=class extends M{isUsed=!0;usedBy=null};import*as Yo from"three";import{Matrix4 as Zy,Vector3 as _m}from"three";var Od=class{get isDirty(){return this.positionChanged||this.rotationChanged}positionChanged=!1;rotationChanged=!1;position;quaternion;_positionKeys=["x","y","z"];_quaternionKeys=["_x","_y","_z","_w"];reset(e=!1){if(this.positionChanged=!1,this.rotationChanged=!1,this.mute=!1,e){if(this.position)for(let t of this._positionKeys)delete this.position[t];if(this.quaternion)for(let t of this._quaternionKeys)delete this.quaternion[t]}}syncValues(){for(let e of this._positionKeys)this.position[e]=this.obj.position[e];for(let e of this._quaternionKeys)this.quaternion[e]=this.obj.quaternion[e]}mute=!1;applyValues(){if(this.positionChanged&&this.position)for(let e of this._positionKeys){let t=this.position[e];t!==void 0&&(this.obj.position[e]=t)}if(this.rotationChanged&&this.quaternion)for(let e of this._quaternionKeys){let t=this.quaternion[e];t!==void 0&&(this.obj.quaternion[e]=t)}}context;obj;_positionWatch;_rotationWatch;constructor(e,t){this.context=t,this.obj=e}start(e,t){this.reset(),e&&(this._positionWatch||(this._positionWatch=new dn(this.obj.position,["x","y","z"])),this._positionWatch.apply(),this.position={},this._positionWatch.subscribeWrite((r,s)=>{if(this.context.physics.isUpdating||this.mute)return;let a=this.position[s];Math.abs(a-r)<1e-5||(this.position[s]=r,this.positionChanged=!0)})),t&&(this._rotationWatch||(this._rotationWatch=new dn(this.obj.quaternion,["_x","_y","_z","_w"])),this._rotationWatch.apply(),this.quaternion={},this._rotationWatch.subscribeWrite((r,s)=>{if(this.context.physics.isUpdating||this.mute)return;let a=this.quaternion[s];Math.abs(a-r)<1e-5||(this.quaternion[s]=r,this.rotationChanged=!0)}));let i=this.obj.matrixWorld.multiplyMatrices.bind(this.obj.matrixWorld),n=new Zy;this.obj.matrixWorld.multiplyMatrices=(r,s)=>(n.equals(r)||(this.positionChanged=!0,this.rotationChanged=!0,n.copy(r)),i(r,s))}stop(){this._positionWatch?.revoke(),this._rotationWatch?.revoke()}},$l=class extends M{mass=1;useGravity=!0;constraints=0;isKinematic=!1;drag=0;angularDrag=1;detectCollisions=!0;sleepThreshold=.01;collisionDetectionMode=0;get lockPositionX(){return(this.constraints&2)!==0}get lockPositionY(){return(this.constraints&4)!==0}get lockPositionZ(){return(this.constraints&8)!==0}get lockRotationX(){return(this.constraints&16)!==0}get lockRotationY(){return(this.constraints&32)!==0}get lockRotationZ(){return(this.constraints&64)!==0}set lockPositionX(e){e?this.constraints|=2:this.constraints&=-3}set lockPositionY(e){e?this.constraints|=4:this.constraints&=-5}set lockPositionZ(e){e?this.constraints|=8:this.constraints&=-9}set lockRotationX(e){e?this.constraints|=16:this.constraints&=-17}set lockRotationY(e){e?this.constraints|=32:this.constraints&=-33}set lockRotationZ(e){e?this.constraints|=64:this.constraints&=-65}_propertiesChanged=!1;_currentVelocity=new Yo.Vector3;_smoothedVelocity=new Yo.Vector3;_smoothedVelocityGetter=new Yo.Vector3;_lastPosition=new Yo.Vector3;_watch;awake(){this._watch=void 0,this._propertiesChanged=!1}onEnable(){this._watch||(this._watch=new Od(this.gameObject,this.context)),this._watch.start(!0,!0),this.startCoroutine(this.beforePhysics(),2)}onDisable(){this._watch?.stop(),this.context.physics.removeBody(this)}onDestroy(){this.context.physics.removeBody(this)}onValidate(){this._propertiesChanged=!0}*beforePhysics(){for(;;)this._propertiesChanged&&(this._propertiesChanged=!1,this.context.physics.updateProperties(this)),this._watch?.isDirty?(this._watch.mute=!0,this._watch.applyValues(),this.context.physics.updateBody(this,this._watch.positionChanged,this._watch.rotationChanged),this._watch.reset()):this._watch?.syncValues(),this.captureVelocity(),yield}get body(){return this.context.physics.internal_getRigidbody(this)}teleport(e,t=!0){this._watch?.reset(!0),t?this.gameObject.position.set(e.x,e.y,e.z):this.setWorldPosition(e.x,e.y,e.z),this.resetForcesAndTorques(),this.resetVelocities()}resetForces(){this.body?.resetForces(!0)}resetTorques(){this.body?.resetTorques(!0)}resetVelocities(){this.setVelocity(0,0,0),this.setAngularVelocity(0,0,0)}resetForcesAndTorques(){this.resetForces(),this.resetTorques()}wakeUp(){this.body?.wakeUp()}applyForce(e,t){this.body?.addForce(e,!0)}applyImpulse(e){this.body?.applyImpulse(e,!0)}setForce(e,t,i){this.body?.resetForces(!0),this.body?.addForce({x:e,y:t,z:i},!0)}getVelocity(){let e=this.body?.linvel();return e?(this._currentVelocity.x=e.x,this._currentVelocity.y=e.y,this._currentVelocity.z=e.z,this._currentVelocity):this._currentVelocity.set(0,0,0)}setVelocity(e,t,i){if(e instanceof _m){let n=e;this.body?.setLinvel(n,!0);return}t===void 0||i===void 0||this.body?.setLinvel({x:e,y:t,z:i},!0)}setAngularVelocity(e,t,i){if(e instanceof _m){let n=e;this.body?.setAngvel(n,!0);return}t===void 0||i===void 0||this.body?.setAngvel({x:e,y:t,z:i},!0)}setTorque(e,t,i){this.setAngularVelocity(e,t,i)}get smoothedVelocity(){return this._smoothedVelocityGetter.copy(this._smoothedVelocity),this._smoothedVelocityGetter.multiplyScalar(1/this.context.time.deltaTime)}setBodyFromGameObject(e=null){}captureVelocity(){if(this.body){let e=B(this.gameObject);$l.tempPosition.copy(e);let t=e.sub(this._lastPosition);this._lastPosition.copy($l.tempPosition),this._smoothedVelocity.lerp(t,this.context.time.deltaTime/.1)}}},J=$l;I(J,"tempPosition",new Yo.Vector3),v([ui(),y()],J.prototype,"mass",2),v([ui(),y()],J.prototype,"useGravity",2),v([ui(),y()],J.prototype,"constraints",2),v([ui(),y()],J.prototype,"isKinematic",2),v([ui(),y()],J.prototype,"drag",2),v([ui(),y()],J.prototype,"angularDrag",2),v([ui(),y()],J.prototype,"detectCollisions",2),v([ui(),y()],J.prototype,"sleepThreshold",2),v([ui(),y()],J.prototype,"collisionDetectionMode",2);import*as Sn from"three";var Ce=class{bb=null;bb_pos=0;__init(e,t){return this.bb_pos=e,this.bb=t,this}x(){return this.bb.readFloat32(this.bb_pos)}y(){return this.bb.readFloat32(this.bb_pos+4)}z(){return this.bb.readFloat32(this.bb_pos+8)}static sizeOf(){return 12}static createVec3(e,t,i,n){return e.prep(4,12),e.writeFloat32(n),e.writeFloat32(i),e.writeFloat32(t),e.offset()}};var Ko=class{bb=null;bb_pos=0;__init(e,t){return this.bb_pos=e,this.bb=t,this}position(e){return(e||new Ce).__init(this.bb_pos,this.bb)}rotation(e){return(e||new Ce).__init(this.bb_pos+12,this.bb)}scale(e){return(e||new Ce).__init(this.bb_pos+24,this.bb)}static sizeOf(){return 36}static createTransform(e,t,i,n,r,s,a,c,u,l){return e.prep(4,36),e.prep(4,12),e.writeFloat32(l),e.writeFloat32(u),e.writeFloat32(c),e.prep(4,12),e.writeFloat32(a),e.writeFloat32(s),e.writeFloat32(r),e.prep(4,12),e.writeFloat32(n),e.writeFloat32(i),e.writeFloat32(t),e.offset()}};var Nt=class{bb=null;bb_pos=0;__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsSyncedTransformModel(e,t){return(t||new Nt).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsSyncedTransformModel(e,t){return e.setPosition(e.position()+4),(t||new Nt).__init(e.readInt32(e.position())+e.position(),e)}guid(e){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.__string(this.bb_pos+t,e):null}fast(){let e=this.bb.__offset(this.bb_pos,6);return e?!!this.bb.readInt8(this.bb_pos+e):!1}transform(e){let t=this.bb.__offset(this.bb_pos,8);return t?(e||new Ko).__init(this.bb_pos+t,this.bb):null}dontSave(){let e=this.bb.__offset(this.bb_pos,10);return e?!!this.bb.readInt8(this.bb_pos+e):!1}static startSyncedTransformModel(e){e.startObject(4)}static addGuid(e,t){e.addFieldOffset(0,t,0)}static addFast(e,t){e.addFieldInt8(1,+t,0)}static addTransform(e,t){e.addFieldStruct(2,t,0)}static addDontSave(e,t){e.addFieldInt8(3,+t,0)}static endSyncedTransformModel(e){return e.endObject()}static finishSyncedTransformModelBuffer(e,t){e.finish(t)}static finishSizePrefixedSyncedTransformModelBuffer(e,t){e.finish(t,void 0,!0)}};var sr=P("debugsync"),Jo="STRS";Ho(Jo,Nt.getRootAsSyncedTransformModel);var Wi=new Et;function kd(o,e,t=!0){Wi.clear();let i=Wi.createString(o);Nt.startSyncedTransformModel(Wi),Nt.addGuid(Wi,i),Nt.addFast(Wi,t);let n=e.worldPosition,r=e.worldEuler,s=e.gameObject.scale;Nt.addTransform(Wi,Ko.createTransform(Wi,n.x,n.y,n.z,r.x,r.y,r.z,s.x,s.y,s.z));let a=Nt.endSyncedTransformModel(Wi);return Wi.finish(a,Jo),Wi.asUint8Array()}var St=class extends M{overridePhysics=!0;interpolatePosition=!0;interpolateRotation=!0;fastMode=!1;syncDestroy=!1;_model=null;_needsUpdate=!0;rb=null;_wasKinematic=!1;_receivedDataBefore=!1;_targetPosition;_targetRotation;_receivedFastUpdate=!1;_shouldRequestOwnership=!1;requestOwnership(){sr&&console.log("Request ownership"),this._model?this._model.requestOwnership():(this._shouldRequestOwnership=!0,this._needsUpdate=!0)}hasOwnership(){return this._model?.hasOwnership??void 0}isOwned(){return this._model?.isOwned}joinedRoomCallback=null;receivedDataCallback=null;awake(){sr&&console.log("new instance",this.guid,this),this._receivedDataBefore=!1,this._targetPosition=new Sn.Vector3,this._targetRotation=new Sn.Quaternion,this.lastWorldPos=new Sn.Vector3,this.lastWorldRotation=new Sn.Quaternion,this.rb=R.getComponentInChildren(this.gameObject,J),this.rb&&(this._wasKinematic=this.rb.isKinematic),this.receivedUpdate=!0,this._model=new Yn(this.context.connection,this.guid),this.context.connection.isConnected&&this.tryGetLastState(),this.joinedRoomCallback=this.tryGetLastState.bind(this),this.context.connection.beginListen("joined-room",this.joinedRoomCallback),this.receivedDataCallback=this.onReceivedData.bind(this),this.context.connection.beginListenBinrary(Jo,this.receivedDataCallback)}onDestroy(){this.syncDestroy&&Np(this.guid,this.context.connection),this._model=null,this.context.connection.stopListening("joined-room",this.joinedRoomCallback),this.context.connection.stopListenBinary(Jo,this.receivedDataCallback)}tryGetLastState(){let e=this.context.connection.tryGetState(this.guid);e&&this.onReceivedData(e)}tempEuler=new Sn.Euler;onReceivedData(e){if(!this.destroyed&&typeof e.guid=="function"&&e.guid()===this.guid){sr&&console.log("new data",this.context.connection.connectionId,this.context.time.frameCount,this.guid,e),this.receivedUpdate=!0,this._receivedFastUpdate=e.fast();let t=e.transform();if(t){oe.markDirty(this.gameObject,!0);let i=t.position();i&&(this.interpolatePosition&&this._targetPosition?.set(i.x(),i.y(),i.z()),(!this.interpolatePosition||!this._receivedDataBefore)&&this.setWorldPosition(i.x(),i.y(),i.z()));let n=t.rotation();n&&(this.tempEuler.set(n.x(),n.y(),n.z()),this.interpolateRotation&&this._targetRotation.setFromEuler(this.tempEuler),(!this.interpolateRotation||!this._receivedDataBefore)&&Ap(this.gameObject,this.tempEuler))}this._receivedDataBefore=!0}}onEnable(){this.lastWorldPos.copy(this.worldPosition),this.lastWorldRotation.copy(this.worldQuaternion),this._needsUpdate=!0,this._model&&this._model.updateIsOwned()}onDisable(){this._model&&this._model.freeOwnership()}receivedUpdate=!1;lastWorldPos;lastWorldRotation;onBeforeRender(){if(!this.activeAndEnabled||!this.context.connection.isConnected)return;if(!this.context.connection.isInRoom||!this._model){sr&&console.log("no model or room",this.name,this.guid,this.context.connection.isInRoom);return}this._shouldRequestOwnership&&(this._shouldRequestOwnership=!1,this._model.requestOwnership());let e=this.worldPosition,t=this.worldQuaternion;if(this._model.isOwned&&!this.receivedUpdate){let r=e.distanceTo(this.lastWorldPos),s=t.angleTo(this.lastWorldRotation),a=this._model.hasOwnership||this.fastMode?1e-4:.001;(r>a||s>a)&&(this._model.hasOwnership?this._needsUpdate=!0:(sr&&console.log(this.guid,"reset because not owned but",this.gameObject.name,this.lastWorldPos),this.worldPosition=this.lastWorldPos,e.copy(this.lastWorldPos),this.worldQuaternion=this.lastWorldRotation,t.copy(this.lastWorldRotation),oe.markDirty(this.gameObject,!0),this._needsUpdate=!1))}if(this._model&&!this._model.hasOwnership&&this._model.isOwned&&this._receivedDataBefore){let s=this._receivedFastUpdate||this.fastMode?.5:.3,a=!1;if(this.interpolatePosition&&this._targetPosition){let c=this.worldPosition;c.lerp(this._targetPosition,s),this.worldPosition=c,a=!0}if(this.interpolateRotation&&this._targetRotation){let c=this.worldQuaternion;c.slerp(this._targetRotation,s),this.worldQuaternion=c,a=!0}a&&oe.markDirty(this.gameObject,!0)}if(this.receivedUpdate=!1,this.lastWorldPos.copy(e),this.lastWorldRotation.copy(t),!this._model)return;if(!this._model||this._model.hasOwnership===void 0||!this._model.hasOwnership){this.rb&&(this.rb.isKinematic=this._model.isOwned??!1,this.rb.setVelocity(0,0,0));return}this.rb&&(this._wasKinematic!==void 0&&(sr&&console.log("reset kinematic",this.rb.name,this._wasKinematic),this.rb.isKinematic=this._wasKinematic),this.gameObject.position.distanceTo(new Sn.Vector3(0,0,0))>1e3&&(sr&&console.log("RESET",this.name),this.gameObject.position.set(0,1,0),this.rb.setVelocity(0,0,0)));let i=10,n=this.rb||this.fastMode;if(this._needsUpdate&&(i<=0||i>0&&this.context.time.frameCount%i===0||n)){sr&&console.log("send update",this.context.connection.connectionId,this.guid,this.gameObject.name,this.gameObject.guid),this.overridePhysics&&this.rb,this._needsUpdate=!1;let r=kd(this.guid,this,!!n);this.context.connection.sendBinary(r)}}};import*as sc from"three-mesh-ui";import{Euler as s_,EventDispatcher as a_,Group as l_,Matrix4 as c_,Mesh as u_,MeshBasicMaterial as d_,Object3D as Tm,Quaternion as rc,RingGeometry as h_,Vector3 as Rm}from"three";var ec=class{static createButton(e,t={}){let i=document.createElement("button"),n=!1;function r(){if(t.domOverlay===void 0){var u=document.createElement("div");u.style.display="none",document.body.appendChild(u);var l=document.createElementNS("http://www.w3.org/2000/svg","svg");l.setAttribute("width",38),l.setAttribute("height",38),l.style.position="absolute",l.style.right="20px",l.style.top="20px",l.addEventListener("click",function(){h.end()}),u.appendChild(l);var d=document.createElementNS("http://www.w3.org/2000/svg","path");d.setAttribute("d","M 12,12 L 28,28 M 28,12 12,28"),d.setAttribute("stroke","#fff"),d.setAttribute("stroke-width",2),l.appendChild(d),t.optionalFeatures===void 0&&(t.optionalFeatures=[]),t.optionalFeatures.push("dom-overlay"),t.domOverlay={root:u},n=!0}t.optionalFeatures===void 0&&(t.optionalFeatures=[]),t.optionalFeatures.push("local-floor"),t.optionalFeatures.push("hand-tracking"),t.optionalFeatures.push("layers");let h=null,g=null;async function E(x){if(/WebXRViewer\//i.test(navigator.userAgent))if(t.domOverlay?.root){let f=t.domOverlay.root;g=f.parentElement,g&&(console.log("Reparent DOM Overlay to body",f,f.style.display),f.style.display="",f.style.visibility="",document.body.appendChild(f))}else console.warn("WebXRViewer: No DOM Overlay found");x.addEventListener("end",_),await e.xr.setSession(x),i.textContent="STOP AR",n&&(t.domOverlay.root.style.display=""),h=x}function _(){h.removeEventListener("end",_),i.textContent="START AR",g&&g.appendChild(t.domOverlay.root),n&&(t.domOverlay.root.style.display="none"),h=null}i.style.display="",i.style.cursor="pointer",i.style.left="calc(50% - 50px)",i.style.width="100px",i.textContent="START AR",i.onmouseenter=function(){i.style.opacity="1.0"},i.onmouseleave=function(){i.style.opacity="0.5"},i.onclick=function(){h===null?navigator.xr.requestSession("immersive-ar",t).then(E):h.end()}}function s(){i.disabled=!0,i.style.display="",i.style.cursor="auto",i.style.left="calc(50% - 75px)",i.style.width="150px",i.onmouseenter=null,i.onmouseleave=null,i.onclick=null}function a(){s(),i.textContent="AR NOT SUPPORTED"}function c(u){u.style.position="absolute",u.style.bottom="20px",u.style.padding="12px 6px",u.style.border="1px solid #fff",u.style.borderRadius="4px",u.style.background="rgba(0,0,0,0.1)",u.style.color="#fff",u.style.font="normal 13px sans-serif",u.style.textAlign="center",u.style.opacity="0.5",u.style.outline="none",u.style.zIndex="999"}if("xr"in navigator)return i.id="ARButton",i.style.display="none",c(i),navigator.xr.isSessionSupported("immersive-ar").then(function(u){u?r():a()}).catch(a),i;{let u=document.createElement("a");return window.isSecureContext===!1?(u.href=document.location.href.replace(/^http:/,"https:"),u.innerHTML="WEBXR NEEDS HTTPS"):(u.href="https://immersiveweb.dev/",u.innerHTML="WEBXR NOT AVAILABLE"),u.style.left="calc(50% - 90px)",u.style.width="180px",u.style.textDecoration="none",c(u),u}}};var tc=class{static createButton(e,t){t&&console.error('THREE.VRButton: The "options" parameter has been removed. Please set the reference space type via renderer.xr.setReferenceSpaceType() instead.');let i=document.createElement("button");function n(){let c=null;async function u(d){d.addEventListener("end",l),await e.xr.setSession(d),i.textContent="EXIT VR",c=d}function l(){c.removeEventListener("end",l),i.textContent="ENTER VR",c=null}i.style.display="",i.style.cursor="pointer",i.style.left="calc(50% - 50px)",i.style.width="100px",i.textContent="ENTER VR",i.onmouseenter=function(){i.style.opacity="1.0"},i.onmouseleave=function(){i.style.opacity="0.5"},i.onclick=function(){if(c===null){let d={optionalFeatures:["local-floor","bounded-floor","hand-tracking","high-fixed-foveation-level","layers"]};navigator.xr.requestSession("immersive-vr",d).then(u)}else c.end()}}function r(){i.disabled=!0,i.style.display="",i.style.cursor="auto",i.style.left="calc(50% - 75px)",i.style.width="150px",i.onmouseenter=null,i.onmouseleave=null,i.onclick=null}function s(){r(),i.textContent="VR NOT SUPPORTED"}function a(c){c.style.position="absolute",c.style.bottom="20px",c.style.padding="12px 6px",c.style.border="1px solid #fff",c.style.borderRadius="4px",c.style.background="rgba(0,0,0,0.1)",c.style.color="#fff",c.style.font="normal 13px sans-serif",c.style.textAlign="center",c.style.opacity="0.5",c.style.outline="none",c.style.zIndex="999"}if("xr"in navigator)return i.id="VRButton",i.style.display="none",a(i),navigator.xr.isSessionSupported("immersive-vr").then(function(c){c?n():s(),tc.xrSessionIsGranted&&(console.log("XR session is granted - will enter immersive web now"),i.click())}),i;{let c=document.createElement("a");return window.isSecureContext===!1?(c.href=document.location.href.replace(/^http:/,"https:"),c.innerHTML="WEBXR NEEDS HTTPS"):(c.href="https://immersiveweb.dev/",c.innerHTML="WEBXR NOT AVAILABLE"),c.style.left="calc(50% - 90px)",c.style.width="180px",c.style.textDecoration="none",a(c),c}}static registerSessionGrantedListener(){if("xr"in navigator){if(/WebXRViewer\//i.test(navigator.userAgent))return;navigator.xr.addEventListener("sessiongranted",()=>{tc.xrSessionIsGranted=!0})}}},$o=tc;I($o,"xrSessionIsGranted",!1);$o.registerSessionGrantedListener();import*as ic from"three";var xm=Fa(gl(),1);import{AudioAnalyser as $y}from"three";var es="noVoip",pt=P("debugvoip"),e_=P("voip");var Md=class{id;constructor(e){this.id=e}};var Id=class{peer;voip;userId;peerId;call=null;callErrorListener=null;stream=null;constructor(e,t,i,n){this.voip=e,this.peer=t,this.userId=i,this.peerId=n}close(){pt&&console.log("close voip call"),this.callErrorListener&&this.peer.off("error",this.callErrorListener),this.call&&this.call.open&&this.call.close(),this.stream?.getTracks().forEach(function(e){e.stop()})}updateMute(e){if(!this.stream)return;let t=this.stream?.getAudioTracks();for(let i of t)i.enabled=!e}async startVoipCall(){if(!await it.HasMicrophonePermissions()){console.warn("no permission to use microphone, can not start call");return}pt&&console.log("start voip call"),this.stream=await navigator.mediaDevices.getUserMedia({audio:!0,video:!1}),this.updateMute(this.voip.muteOutput),pt&&console.log(this.stream),this.call=this.peer.call(this.peerId,this.stream,{metadata:{userId:this.userId}}),this.call.on("error",t=>{console.error(t)}),this.call.on("stream",t=>{pt&&console.log("received stream from remote again",t)}),this.peer.on("close",this.onCallClose.bind(this)),this.callErrorListener=t=>{t.message.includes(this.peerId)?(console.log("Could not connect to "+this.peerId),this.callErrorListener&&this.peer.off("error",this.callErrorListener),this.call&&this.call.close(),this.stream?.getTracks().forEach(function(i){i.stop()}),this.stream=null):console.error(t)},this.peer.on("error",this.callErrorListener)}onCallClose(e){pt&&console.log("call closed",e)}},Ad=class{get currentStream(){return this.stream}get currentAudio(){return this.audio}get currentAnalyzer(){return this.analyzer}voip;call;audio=null;stream=null;obj;analyzer=null;waitingForStart=!1;closed=!1;audioElement=null;constructor(e,t,i){this.voip=e,this.obj=t,this.call=i}openAudioStream(e){let t=e.getAudioTracks();for(let i of t)if(i.kind==="audio"&&i.readyState==="live"){this.open(i);return}console.warn("failed finding valid audio stream to begin call")}open(e){console.assert(e.kind==="audio","invalid track kind, expected audio but received "+e.kind),!this.waitingForStart&&(this.waitingForStart=!0,se.userInteractionRegistered||pt&&console.log("Incoming call, waiting for user interaction before opening audio"),se.registerWaitForAllowAudio(async()=>{if(this.call.open&&!this.closed){pt&&console.log("Setup audio and begin listening"),this.stream=new MediaStream([e]);let t=new ic.AudioListener;this.audio=new ic.Audio(t),this.audio.setVolume(this.voip.muteInput?0:1),this.audio.setMediaStreamSource(this.stream);let i=document.createElement("audio");this.audioElement=i,i.style.display="none",document.body.appendChild(i),i.srcObject=this.stream,i.sinkId!==void 0&&navigator.mediaDevices.enumerateDevices().then(n=>{if(!!i){console.log(n);for(let r of n)if(r.label==="Speakerphone"){i.sinkId=r.deviceId;break}}}),pt&&console.log("call is setup, you should hear something now"),this.analyzer=new $y(this.audio,32)}}))}close(){this.closed=!0,this.call?.open&&this.call.close(),this.audio?.disconnect(),this.stream?.getTracks().forEach(e=>{e.stop()}),this.stream=null,this.audioElement&&this.audioElement.remove()}},it=class extends M{requireParam=!1;set muteInput(e){if(e===this._inputMuted||(this._inputMuted=e,!this.currentIncomingCalls))return;let t=this._inputMuted?0:1;for(let i in this.currentIncomingCalls)this.currentIncomingCalls[i]?.currentAudio?.setVolume(t)}get muteInput(){return this._inputMuted}set muteOutput(e){if(e!==this._outputMuted&&(this._outputMuted=e,!!this.connections))for(let t in this.connections)this.connections[t]?.updateMute(e)}get muteOutput(){return this._outputMuted}getFrequency(e){if(e===null){for(let i in this.currentIncomingCalls){let n=this.currentIncomingCalls[i];if(n&&n.currentAnalyzer)return n.currentAnalyzer.getAverageFrequency()}return null}let t=this.currentIncomingCalls[e];return t&&t.currentAnalyzer?t.currentAnalyzer.getAverageFrequency():null}peer=null;model=null;connections={};currentIncomingCalls={};_inputMuted=!1;_outputMuted=!1;awake(){if(P(es)){console.log("VOIP is disabled by url parameter: "+es);return}if(this.requireParam&&!e_){console.debug("VOIP must be enabled explicitly by url parameter");return}if(xo()&&Ua()){console.log("VOIP is currently not supported on Safari iOS");return}this.peer=new xm.default,navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia,this.context.connection.beginListen("joined-room",e=>{navigator.mediaDevices.getUserMedia({audio:!0,video:!1})}),this.context.connection.beginListen("peer-update-id",e=>{if(e.id!==this.context.connection.connectionId){let t=this.connections[e.id];if(t&&t.close(),this.peer&&this.context.connection.connectionId){let i=new Id(this,this.peer,this.context.connection.connectionId,e.peerId);this.connections[e.id]=i,i.startVoipCall()}}}),this.context.connection.beginListen("user-left-room",e=>{let{userId:t}=e,i=this.connections[t];this.connections[t]=null,i&&i.close();let n=this.currentIncomingCalls[t];pt&&console.log("UserLeftRoom",e,t,n),n&&(n.close(),this.currentIncomingCalls[t]=null)}),this.peer.on("open",this.onOpenPeerConnection.bind(this))}onEnable(){}onDisable(){console.log("TODO: close all");for(let e in this.currentIncomingCalls)try{this.currentIncomingCalls[e]?.close(),this.connections[e]?.close()}catch(t){console.error(t)}}async onOpenPeerConnection(e){pt&&console.log("Peer connection established and received id"),this.model=new Md(e),this.context.connection.send("peer-update-id",this.model,1),this.peer&&(this.peer.on("call",this.onReceiveCall.bind(this)),this.peer.on("connection",function(t){pt&&console.log("CONNECTION",t),t.on("data",function(i){pt&&console.log("Received",i)})}))}async onReceiveCall(e){let{metadata:t}=e;console.assert(t.userId);let{userId:i}=t,{peer:n}=e,r=this.currentIncomingCalls[i];if(r&&r.close(),pt&&console.log("received call"),await it.HasMicrophonePermissions()){let s=await navigator.mediaDevices.getUserMedia({audio:!0,video:!1});e.answer(s)}else e.answer(null);this.currentIncomingCalls[i]=new Ad(this,this.gameObject,e),e.on("stream",s=>{pt&&console.log("receive caller stream, will setup audio now"),this.currentIncomingCalls[i]?.openAudioStream(s)}),e.on("error",console.error)}static async HasMicrophonePermissions(){return(await navigator.permissions.query({name:"microphone"})).state!=="denied"}};import{Matrix4 as ha}from"three";var ft=class extends M{webAR=null;get rig(){return this.webAR?.webxr.Rig}invertForward=!1;get arScale(){return this._arScale}set arScale(e){e!==this._arScale&&(this._arScale=e,this.setScale(e))}_initalMatrix=new ha;_selectStartFn=this.onSelectStart.bind(this);_selectEndFn=this.onSelectEnd.bind(this);start(){let e=R.findObjectOfType(V);e&&(e.Rig.updateMatrix(),this._initalMatrix.copy(e.Rig.matrix))}_arScale=5;_rig=null;_startPose=null;_placementPose=null;_isTouching=!1;_rigStartPose=null;onBegin(e){this._placementPose=null,this.gameObject.visible=!1,this.gameObject.matrixAutoUpdate=!1,this._startPose=this.gameObject.matrix.clone(),this._rigStartPose=this.rig?.matrix.clone(),e.addEventListener("selectstart",this._selectStartFn),e.addEventListener("selectend",this._selectEndFn),this.gameObject.visible=!1,this.rig&&(this.rig.matrixAutoUpdate=!0,this._initalMatrix.decompose(this.rig.position,this.rig.quaternion,this.rig.scale))}onUpdate(e,t,i){return i&&!this._placementPose&&this._isTouching?(this.webAR&&this.webAR.setReticleActive(!1),this.placeAt(e,new ha().fromArray(i.transform.matrix).invert()),!0):!1}placeAt(e,t){this._placementPose||(this._placementPose=new ha),this._placementPose.copy(t);let i=this.gameObject.matrixWorld.clone().invert();if(this._placementPose.premultiply(i),e){if(this.invertForward){let n=new ha().makeRotationY(Math.PI);this._placementPose.premultiply(n)}this._rig=e,this.setScale(this.arScale)}else this._rig=null;this.gameObject.visible=!0}onEnd(e,t){this._placementPose=null,this.gameObject.visible=!1,this.gameObject.matrixAutoUpdate=!1,this._startPose&&this.gameObject.matrix.copy(this._startPose),e&&(e.matrixAutoUpdate=!0,this._rigStartPose&&this._rigStartPose.decompose(e.position,e.quaternion,e.scale)),oe.markDirty(this.gameObject,!0),setTimeout(()=>{this.gameObject.matrixAutoUpdate=!0,this.gameObject.visible=!0},100)}onSelectStart(){this._isTouching=!0}onSelectEnd(){this._isTouching=!1}setScale(e){let t=this._rig;!t||!this._placementPose||(this._rigStartPose||(this._rigStartPose=t.matrix.clone()),t.matrixAutoUpdate=!1,t.matrix.multiplyMatrices(new ha().makeScale(e,e,e),this._placementPose),t.matrix.decompose(t.position,t.quaternion,t.scale),t.updateMatrixWorld(),console.log("Place",t.position))}};v([y()],ft.prototype,"invertForward",2),v([y()],ft.prototype,"arScale",1);import{Object3D as i_}from"three";import*as wm from"three";import{Color as t_}from"three";var _i=class extends M{objectBounds=!1;color;isGizmo=!0;_gizmoObject=null;_boxHelper=null;onEnable(){this.isGizmo&&!Di||(this._gizmoObject||(this.objectBounds&&this.gameObject.isMesh===!0?this._gizmoObject=new wm.BoxHelper(this.gameObject,this.color??16776960):(this.objectBounds=!1,this._gizmoObject=dl(this.color??16776960))),this.objectBounds?(this.scene.add(this._gizmoObject),this._boxHelper=this._gizmoObject,this.startCoroutine(this.syncObjectBounds(),3)):this.gameObject.add(this._gizmoObject))}onDisable(){this._gizmoObject&&this.gameObject.remove(this._gizmoObject)}*syncObjectBounds(){for(;this._boxHelper;)this._boxHelper?.update(),yield}};v([y()],_i.prototype,"objectBounds",2),v([y(t_)],_i.prototype,"color",2),v([y()],_i.prototype,"isGizmo",2);var n_=P("debugrig"),ar=class extends M{awake(){if(n_){let e=new i_;e.position.y+=.5,this.gameObject.add(e);let t=e.addNewComponent(_i);t&&(t.isGizmo=!1)}}};import{Quaternion as pa,Vector3 as nc,Vector4 as r_}from"three";var Ni=class{bb=null;bb_pos=0;__init(e,t){return this.bb_pos=e,this.bb=t,this}x(){return this.bb.readFloat32(this.bb_pos)}y(){return this.bb.readFloat32(this.bb_pos+4)}z(){return this.bb.readFloat32(this.bb_pos+8)}w(){return this.bb.readFloat32(this.bb_pos+12)}static sizeOf(){return 16}static createVec4(e,t,i,n,r){return e.prep(4,16),e.writeFloat32(r),e.writeFloat32(n),e.writeFloat32(i),e.writeFloat32(t),e.offset()}};var Oe=class{bb=null;bb_pos=0;__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsVrUserStateBuffer(e,t){return(t||new Oe).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsVrUserStateBuffer(e,t){return e.setPosition(e.position()+4),(t||new Oe).__init(e.readInt32(e.position())+e.position(),e)}guid(e){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.__string(this.bb_pos+t,e):null}time(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readInt64(this.bb_pos+e):this.bb.createLong(0,0)}avatarId(e){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.__string(this.bb_pos+t,e):null}position(e){let t=this.bb.__offset(this.bb_pos,10);return t?(e||new Ce).__init(this.bb_pos+t,this.bb):null}rotation(e){let t=this.bb.__offset(this.bb_pos,12);return t?(e||new Ni).__init(this.bb_pos+t,this.bb):null}scale(){let e=this.bb.__offset(this.bb_pos,14);return e?this.bb.readFloat32(this.bb_pos+e):0}posLeftHand(e){let t=this.bb.__offset(this.bb_pos,16);return t?(e||new Ce).__init(this.bb_pos+t,this.bb):null}posRightHand(e){let t=this.bb.__offset(this.bb_pos,18);return t?(e||new Ce).__init(this.bb_pos+t,this.bb):null}rotLeftHand(e){let t=this.bb.__offset(this.bb_pos,20);return t?(e||new Ni).__init(this.bb_pos+t,this.bb):null}rotRightHand(e){let t=this.bb.__offset(this.bb_pos,22);return t?(e||new Ni).__init(this.bb_pos+t,this.bb):null}static startVrUserStateBuffer(e){e.startObject(10)}static addGuid(e,t){e.addFieldOffset(0,t,0)}static addTime(e,t){e.addFieldInt64(1,t,e.createLong(0,0))}static addAvatarId(e,t){e.addFieldOffset(2,t,0)}static addPosition(e,t){e.addFieldStruct(3,t,0)}static addRotation(e,t){e.addFieldStruct(4,t,0)}static addScale(e,t){e.addFieldFloat32(5,t,0)}static addPosLeftHand(e,t){e.addFieldStruct(6,t,0)}static addPosRightHand(e,t){e.addFieldStruct(7,t,0)}static addRotLeftHand(e,t){e.addFieldStruct(8,t,0)}static addRotRightHand(e,t){e.addFieldStruct(9,t,0)}static endVrUserStateBuffer(e){return e.endObject()}static finishVrUserStateBufferBuffer(e,t){e.finish(t)}static finishSizePrefixedVrUserStateBufferBuffer(e,t){e.finish(t,void 0,!0)}};var Em=P("debugxr"),fa=P("debugavatar");var Ld="VRUS";Ho(Ld,Oe.getRootAsVrUserStateBuffer);function Dd(){return new Date().getTime()}function o_(o){let e=o&4294967295,t=o/Math.pow(2,32)&1048575;return Qe.create(e,t)}var ma=class{guid;time;avatarId;position=new nc;rotation=new r_;scale=1;posLeftHand=new nc;posRightHand=new nc;rotLeftHand=new pa;rotRightHand=new pa;constructor(e){this.guid=e}update(e,t,i,n,r){this.time=Dd(),this.avatarId=r,this.position.set(t.x,t.y,t.z),e&&this.position.applyMatrix4(e.matrixWorld);let s=ma.quat0,a=ma.quat1;s.set(i.x,i.y,i.z,i.w),s=s.multiplyQuaternions(s,ma.invertRotation),e&&(e.getWorldQuaternion(a),s.multiplyQuaternions(a,s)),this.rotation.set(s.x,s.y,s.z,s.w),this.scale=e.scale.x;let c=n.LeftController?.controllerGrip;c&&(c.getWorldPosition(this.posLeftHand),c.getWorldQuaternion(this.rotLeftHand));let u=n.RightController?.controllerGrip;if(u&&(u.getWorldPosition(this.posRightHand),u.getWorldQuaternion(this.rotRightHand)),n.LeftController?.hand?.visible){let l=n.LeftController.wrist;l&&(l.getWorldPosition(this.posLeftHand),l.getWorldQuaternion(this.rotLeftHand))}if(n.RightController?.hand?.visible){let l=n.RightController.wrist;l&&(l.getWorldPosition(this.posRightHand),l.getWorldQuaternion(this.rotRightHand))}}sendAsBuffer(e,t){e.clear();let i=e.createString(this.guid),n=e.createString(this.avatarId);Oe.startVrUserStateBuffer(e),Oe.addGuid(e,i),Oe.addTime(e,o_(this.time)),Oe.addAvatarId(e,n),Oe.addPosition(e,Ce.createVec3(e,this.position.x,this.position.y,this.position.z)),Oe.addRotation(e,Ni.createVec4(e,this.rotation.x,this.rotation.y,this.rotation.z,this.rotation.w)),Oe.addScale(e,this.scale),Oe.addPosLeftHand(e,Ce.createVec3(e,this.posLeftHand.x,this.posLeftHand.y,this.posLeftHand.z)),Oe.addPosRightHand(e,Ce.createVec3(e,this.posRightHand.x,this.posRightHand.y,this.posRightHand.z)),Oe.addRotLeftHand(e,Ni.createVec4(e,this.rotLeftHand.x,this.rotLeftHand.y,this.rotLeftHand.z,this.rotLeftHand.w)),Oe.addRotRightHand(e,Ni.createVec4(e,this.rotRightHand.x,this.rotRightHand.y,this.rotRightHand.z,this.rotRightHand.w));let r=Oe.endVrUserStateBuffer(e);e.finish(r,Ld);let s=e.asUint8Array();t.sendBinary(s)}setFromBuffer(e,t){if(!e)return;this.guid=e,this.time=t.time().toFloat64();let i=t.avatarId();i&&(this.avatarId=i);let n=t.position();n&&this.position.set(n.x(),n.y(),n.z());let r=t.rotation();r&&this.rotation.set(r.x(),r.y(),r.z(),r.w());let s=t.posLeftHand();s&&this.posLeftHand.set(s.x(),s.y(),s.z());let a=t.posRightHand();a&&this.posRightHand.set(a.x(),a.y(),a.z());let c=t.rotLeftHand();c&&this.rotLeftHand.set(c.x(),c.y(),c.z(),c.w());let u=t.rotRightHand();u&&this.rotRightHand.set(u.x(),u.y(),u.z(),u.w()),this.scale=t.scale()}},Xt=ma;I(Xt,"invertRotation",new pa().setFromAxisAngle(new nc(0,1,0),Math.PI)),I(Xt,"quat0",new pa),I(Xt,"quat1",new pa);var Pn=class extends M{webXR=null;debugAvatarUser=null;voip=null;async awake(){if(this.webXR||(this.webXR=R.getComponent(this.gameObject,V)),this.webXR||(this.webXR=R.findObjectOfType(V,this.context)),!this.webXR&&(console.log("Missing webxr component"),this.webXR=R.findObjectOfType(V,this.context),!this.webXR)){console.error("Could not find webxr component");return}if(this.voip||(this.voip=R.findObjectOfType(it,this.context)),fa){let e="debug-avatar-"+fa,t=new Vt(this.context,e,this.webXR);if(this.debugAvatarUser=t,typeof fa=="string"&&fa.length>0)if(await t.setAvatarOverride(fa)){let i=new Xt(e);i.position.y+=1;let n=.5;i.posLeftHand.y+=n,i.posLeftHand.x+=n,i.posRightHand.y+=n,i.posRightHand.x-=n,t.tryUpdate(i,0)}else t.destroy()}}onEnable(){if(!this.webXR&&(this.webXR=R.getComponent(this.gameObject,V),!this.webXR)){console.warn("Missing webxr component on "+this.gameObject.name);return}this.eventSub_WebXRStartEvent=this.onXRSessionStart.bind(this),V.addEventListener("xrStarted",this.eventSub_WebXRStartEvent),this.eventSub_WebXRUpdateEvent=this.onXRSessionUpdate.bind(this),V.addEventListener("xrUpdate",this.eventSub_WebXRUpdateEvent),this.eventSub_WebXREndEvent=this.onXRSessionEnded.bind(this),V.addEventListener("xrStopped",this.eventSub_WebXREndEvent),this.eventSub_ConnectionEvent=this.onConnected.bind(this),this.context.connection.beginListen("joined-room",this.eventSub_ConnectionEvent),this.context.connection.beginListen("webxr-user-joined",e=>{console.log("webxr user joined evt")}),this.context.connection.beginListen("webxr-user-left",e=>{let t=e.id!==null&&e.id!==void 0;!t||(console.log("webxr user left evt"),t&&(this.avatars[e.id]?.destroy(),this.avatars[e.id]=void 0))}),this.context.connection.beginListenBinrary(Ld,e=>{let t=e.guid();if(!t)return;let i=e.time().toFloat64(),n=this.tempState;n.setFromBuffer(t,e),this.onTryGetAvatar(t,i)?.tryUpdate(n,i)}),this.context.connection.beginListen("vr-session-update",e=>{let t=e.guid,i=e.time;this.onTryGetAvatar(t,i)?.tryUpdate(e,i)})}tempState=new Xt("");onTryGetAvatar(e,t){if(e===this.context.connection.connectionId)return null;let i=new Date().getTime()-t;if(i>5e3)return Em&&console.log("old data",i,e),null;let n=this.avatars[e];if(n===void 0)try{console.log("create new avatar");let r=new Vt(this.context,e,this.webXR);n=r,this.avatars[e]=r}catch(r){this.avatars[e]=null,console.error(r)}return n}onDisable(){this.eventSub_ConnectionEvent&&this.context.connection.stopListening("joined-room",this.eventSub_ConnectionEvent),V.removeEventListener("xrStarted",this.eventSub_WebXRStartEvent),V.removeEventListener("xrUpdate",this.eventSub_WebXRUpdateEvent),V.removeEventListener("xrStopped",this.eventSub_WebXREndEvent)}update(){let e=Dd();this.debugAvatarUser&&(this.debugAvatarUser.lastUpdate=e),this.detectPotentiallyDisconnectedAvatarsAndRemove();for(let t in this.avatars){let i=this.avatars[t];!i||i.update()}}_removeAvatarsList=[];detectPotentiallyDisconnectedAvatarsAndRemove(){let e=Dd();for(let t in this.avatars){let i=this.avatars[t];if(!i){this._removeAvatarsList.push(t);continue}e-i.lastUpdate>1e4&&(console.log("avatar timed out (didnt receive any updates in a while) - destroying it now"),i.destroy(),this.avatars[t]=void 0)}for(let t of this._removeAvatarsList)delete this.avatars[t];this._removeAvatarsList.length=0}buildLocalAvatar(){if(this.localAvatar)return;let e=this.context.connection?.connectionId??this.k_LocalAvatarNoNetworkingGuid;this.localAvatar=new Vt(this.context,e,this.webXR),this.localAvatar.isLocalAvatar=!0,this.localAvatar.setAvatarOverride(this.getAvatarId()),this.avatars[this.localAvatar.guid]=this.localAvatar}eventSub_ConnectionEvent=null;eventSub_WebXRStartEvent=null;eventSub_WebXREndEvent=null;eventSub_WebXRUpdateEvent=null;avatars={};localAvatar=null;k_LocalAvatarNoNetworkingGuid="local";onConnected(){Em&&console.log("Hey you are connected as "+this.context.connection.connectionId),this.localAvatar?.guid===this.k_LocalAvatarNoNetworkingGuid&&(this.localAvatar&&(this.localAvatar?.destroy(),this.avatars[this.localAvatar.guid]=void 0),this.localAvatar=null,this.xrState=null,this.ownership?.freeOwnership(),this.ownership=null)}onXRSessionStart(e){if(console.log("XR session started"),this.context.connection.send("webxr-user-joined",{id:this.context.connection.connectionId,mode:"vr"}),this.localAvatar&&(this.localAvatar?.destroy(),this.avatars[this.localAvatar.guid]=void 0,this.localAvatar=null),this.xrState=null,this.ownership?.freeOwnership(),this.ownership=null,this.avatars)for(let t in this.avatars)this.avatars[t]?.updateFlags()}onXRSessionEnded(e){console.log("XR session ended"),this.context.connection.send("webxr-user-left",{id:this.context.connection.connectionId,mode:"vr"}),this.localAvatar&&(this.localAvatar?.destroy(),this.avatars[this.localAvatar.guid]=void 0,this.localAvatar=null)}ownership=null;xrState=null;builder=new Et(1024);onXRSessionUpdate(e){this.xrState??=new Xt(this.context.connection.connectionId??this.k_LocalAvatarNoNetworkingGuid),this.ownership??=new Yn(this.context.connection,this.context.connection.connectionId??this.k_LocalAvatarNoNetworkingGuid),this.ownership.guid=this.context.connection.connectionId??this.k_LocalAvatarNoNetworkingGuid,this.buildLocalAvatar();let{frame:t,xr:i,rig:n}=e,r=t.getViewerPose(i.getReferenceSpace());if(!r)return;let s=r?.transform,a=s.position,c=s.orientation;this.xrState.update(n,a,c,this.webXR,this.getAvatarId()),this.localAvatar&&(this.context.connection.connectionId&&(this.localAvatar.guid=this.context.connection.connectionId),this.localAvatar.tryUpdate(this.xrState,0)),!(this.ownership&&!this.ownership.hasOwnership&&this.context.connection.isConnected&&(this.context.time.frameCount%120===0&&this.ownership.requestOwnership(),!this.ownership.hasOwnership))&&(!this.context.connection.isConnected||!this.context.connection.connectionId||this.xrState.sendAsBuffer(this.builder,this.context.connection))}getAvatarId(){return P("avatar")??null}};async function p_(){return Ba()?!0:"xr"in navigator?await navigator.xr.isSessionSupported("immersive-ar")===!0:!1}async function f_(){return"xr"in navigator?await navigator.xr.isSessionSupported("immersive-vr")===!0:!1}var jd=!1,Hd=!1;p_().then(o=>jd=o);f_().then(o=>Hd=o);var Le=class extends M{enableVR=!0;enableAR=!0;defaultAvatar;handModelPath="";createVRButton=!0;createARButton=!0;static get IsInWebXR(){return this._isInXr}static get XRSupported(){return"xr"in navigator&&(jd||Hd)}static get IsARSupported(){return jd}static get IsVRSupported(){return Hd}static addEventListener(e,t){return this.events.addEventListener(e,t),t}static removeEventListener(e,t){return this.events.removeEventListener(e,t),t}static createVRButton(e,t){Le.XRSupported?e.__internalAwake():console.warn("WebXR is not supported on this device");let i=$o.createButton(e.context.renderer);return i.classList.add("webxr-ar-button"),i.classList.add("webxr-button"),this.resetButtonStyles(i),(t?.registerClick??!0)&&i.addEventListener("click",e.onClickedVRButton.bind(e)),i}static createARButton(e,t){e.__internalAwake();let i=e.webAR?.getAROverlayContainer(),n={};i?(n.domOverlay={root:i},n.optionalFeatures=["hit-test","dom-overlay"]):console.warn("No dom overlay root found, HTML overlays on top of screen-based AR will not work."),n.optionalFeatures.push("plane-detection"),n.optionalFeatures.push("anchors");let r=ec.createButton(e.context.renderer,n);return r.classList.add("webxr-ar-button"),r.classList.add("webxr-button"),Le.resetButtonStyles(r),(t?.registerClick??!0)&&r.addEventListener("click",e.onClickedARButton.bind(e)),r}static resetButtonStyles(e){!e||(e.style.position="",e.style.bottom="",e.style.left="")}endSession(){let e=this.context.renderer.xr.getSession();e&&e.end()}get Rig(){return this.rig||this.ensureRig(),this.rig}controllers=[];get Controllers(){return this.controllers}get LeftController(){return this.controllers.length>0&&this.controllers[0].input?.handedness==="left"?this.controllers[0]:this.controllers.length>1&&this.controllers[1].input?.handedness==="left"?this.controllers[1]:null}get RightController(){return this.controllers.length>0&&this.controllers[0].input?.handedness==="right"?this.controllers[0]:this.controllers.length>1&&this.controllers[1].input?.handedness==="right"?this.controllers[1]:null}get ARButton(){return this._arButton}get VRButton(){return this._vrButton}get IsInVR(){return this._isInVR}get IsInAR(){return this._isInAR}rig;isInit=!1;_requestedAR=!1;_requestedVR=!1;_isInAR=!1;_isInVR=!1;_arButton;_vrButton;webAR=null;awake(){if(this.defaultAvatar&&typeof this.defaultAvatar=="string"&&(this.defaultAvatar=et.getOrCreate(this.sourceId??"/",this.defaultAvatar,this.context)),!R.findObjectOfType(Pn,this.context)){let e=R.addNewComponent(this.gameObject,Pn,!1);e.webXR=this}this.webAR=new lr(this)}onEnable(){if(this.isInit||!this.enableAR&&!this.enableVR)return;this.isInit=!0,this.context.renderer.xr.enabled=!0;let e=Le.XRSupported,t,i,n=document.createElement("div");n.classList.add("webxr-buttons"),this.context.domElement.append(n),this.enableAR&&this.createARButton&&(t=Le.createARButton(this),this._arButton=t,n.appendChild(t)),this.createVRButton&&this.enableVR&&(i=Le.createVRButton(this),this._vrButton=i,n.appendChild(i)),setTimeout(()=>{Le.resetButtonStyles(i),Le.resetButtonStyles(t)},1e3)}_transformOrientation=new rc;get TransformOrientation(){return this._transformOrientation}_currentHeadPose=null;get HeadPose(){return this._currentHeadPose}onBeforeRender(e){if(!e)return;let t=this.context.renderer.xr.getSession();if(t){let i=e.getViewerPose(this.context.renderer.xr.getReferenceSpace());if(!i)return;this._currentHeadPose=i;let n=i?.transform;n&&this._transformOrientation.set(n.orientation.x,n.orientation.y,n.orientation.z,n.orientation.w),Le._isInXr===!1&&t&&this.onEnterXR(t,e);for(let r of this.controllers)r.onUpdate(t);this._isInAR&&this.webAR?.onUpdate(t,e)}Le.events.dispatchEvent({type:"xrUpdate",frame:e,xr:this.context.renderer.xr,rig:this.rig})}onClickedARButton(){this._isInAR||(this._requestedAR=!0,this._requestedVR=!1,this.captureStateBeforeXR())}onClickedVRButton(){if(!this._isInVR){if(this._requestedVR){this.onExitXR(null);return}this._requestedAR=!1,this._requestedVR=!0,this.captureStateBeforeXR(),this.ensureRig();for(let e=0;e<2;e++)Z.Create(this,e,this.gameObject,0);Le.events.dispatchEvent({type:"requestVRSession"})}}captureStateBeforeXR(){this.context.mainCamera&&(this._originalCameraPosition.copy(B(this.context.mainCamera)),this._originalCameraRotation.copy(me(this.context.mainCamera)),this._originalCameraParent=this.context.mainCamera.parent),this.Rig&&(this._originalXRRigParent=this.Rig.parent,this._originalXRRigPosition.copy(this.Rig.position),this._originalXRRigRotation.copy(this.Rig.quaternion))}ensureRig(){if(!this.rig){let e=R.findObjectOfType(ar,this.context);e?this.rig=e.gameObject:(this.rig=new l_,this.rig.rotateY(Math.PI),this.rig.name="XRRig",this.context.scene.add(this.rig))}}_originalCameraParent=null;_originalCameraPosition=new Rm;_originalCameraRotation=new rc;_originalXRRigParent=null;_originalXRRigPosition=new Rm;_originalXRRigRotation=new rc;onEnterXR(e,t){console.log("[XR] session begin",e),Le._isInXr=!0,this.ensureRig();let i=this.context.renderer.xr.getReferenceSpace();if(i&&this.rig){let a=t.getViewerPose(i)?.transform.orientation;if(a){let c=new rc(a.x,a.y,a.z,a.w),u=new s_().setFromQuaternion(c);this.rig.rotateY(u.y)}}let n=this.context.renderer.xr;if(this.context.mainCamera){let s=n.getCamera(this.context.mainCamera);for(let a of s.cameras)a.layers.enableAll();this.rig.add(this.context.mainCamera),this._requestedAR&&this.context.scene.add(this.rig)}let r=this._requestedAR?2:4;switch(Rt.Global.Set(r),r){case 2:this.context.xrSessionMode="immersive-ar",this._isInAR=!0,this.webAR?.onBegin(e);break;case 4:this.context.xrSessionMode="immersive-vr",this._isInVR=!0,this.onEnterVR(e);break}e.addEventListener("end",()=>{console.log("[XR] session end"),Le._isInXr=!1,this.onExitXR(e)}),this.onEnterXR_HandleMirrorWindow(e),Le.events.dispatchEvent({type:"xrStarted",session:e})}onExitXR(e){let t=this._isInAR;this._isInAR&&e&&this.webAR?.onEnd(e),this._isInAR=!1,this._isInVR=!1,this._requestedAR=!1,this._requestedVR=!1,this.context.xrSessionMode=void 0,this.xrMirrorWindow&&(this.xrMirrorWindow.close(),this.xrMirrorWindow=null),this.destroyControllers(),this.context.mainCamera&&(this._originalCameraParent?.add(this.context.mainCamera),ie(this.context.mainCamera,this._originalCameraPosition),Ze(this.context.mainCamera,this._originalCameraRotation),this.context.mainCamera.scale.set(1,1,1)),t&&(this._originalXRRigParent?.add(this.rig),this.rig.position.copy(this._originalXRRigPosition),this.rig.quaternion.copy(this._originalXRRigRotation)),Rt.Global.Set(17),Le.events.dispatchEvent({type:"xrStopped",session:e})}onEnterVR(e){}destroyControllers(){for(let e=this.controllers.length-1;e>=0;e-=1)this.controllers[e]?.destroy();this.controllers.length=0}xrMirrorWindow=null;onEnterXR_HandleMirrorWindow(e){!P("mirror")||setTimeout(()=>{if(!Le.IsInWebXR)return;let t=new URL(window.location.href);vo(t.searchParams,es,1),vo(t.searchParams,"isMirror",1);let i=t.toString();this.xrMirrorWindow=window.open(i,"webxr sync","popup=yes"),this.xrMirrorWindow&&(this.xrMirrorWindow.onload=()=>{this.xrMirrorWindow&&(this.xrMirrorWindow.onbeforeunload=()=>{Le.IsInWebXR&&e.end()})})},1e3)}},V=Le;I(V,"_isInXr",!1),I(V,"events",new a_),v([y()],V.prototype,"enableVR",2),v([y()],V.prototype,"enableAR",2),v([y(et)],V.prototype,"defaultAvatar",2),v([y()],V.prototype,"handModelPath",2),v([y()],V.prototype,"createVRButton",2),v([y()],V.prototype,"createARButton",2);var ts=class{get webxr(){return this._webxr}_webxr;reticle=null;reticleParent=null;hitTestSource=null;reticleActive=!0;previousBackground=null;previousEnvironment=null;sessionRoot=null;_previousParent=null;get context(){return this.webxr.context}constructor(e){this._webxr=e}arDomOverlay=null;arOverlayElement=null;noHitTestAvailable=!1;didPlaceARSessionRoot=!1;getAROverlayContainer(){this.arDomOverlay=this.webxr.context.domElement;let e=this.arDomOverlay;return e.getAROverlayContainer?this.arOverlayElement=e.getAROverlayContainer():this.arOverlayElement=this.arDomOverlay,this.arOverlayElement}setReticleActive(e){this.reticleActive=e}async onBegin(e){let t=this.webxr.context;this.reticleActive=!0,this.didPlaceARSessionRoot=!1,this.getAROverlayContainer();let i=navigator.userAgent?.includes("OculusBrowser")?0:1,n=i===1?4:2;for(let s=0;s<n;s++)Z.Create(this.webxr,s,this.webxr.gameObject,i);(!this.sessionRoot||this.sessionRoot.destroyed||!this.sessionRoot.activeAndEnabled)&&(this.sessionRoot=R.findObjectOfType(ft,t)),this.previousBackground=t.scene.background,this.previousEnvironment=t.scene.environment,t.scene.background=null,e.requestReferenceSpace("viewer").then(s=>{e.requestHitTestSource?.call(e,{space:s})?.then(a=>{this.hitTestSource=a}).catch(a=>{this.noHitTestAvailable=!0,console.warn("WebXR: Hit test not supported",a)})}),!this.reticle&&this.sessionRoot&&(this.reticle=new u_(new h_(.07,.09,32).rotateX(-Math.PI/2),new d_),this.reticle.name="AR Placement reticle",this.reticle.matrixAutoUpdate=!1,this.reticle.visible=!1,this.reticleParent=new Tm,this.reticleParent.name="AR Reticle Parent",this.reticleParent.matrixAutoUpdate=!1,this.reticleParent.add(this.reticle),this.webxr.scene?(this.context.scene.add(this.reticleParent),this.context.scene.visible=!0):console.warn("Could not found WebXR Rig")),this._previousParent=this.webxr.gameObject,ts.tempWebXRObject||(ts.tempWebXRObject=new Tm),this.context.scene.add(ts.tempWebXRObject),R.addComponent(ts.tempWebXRObject,this.webxr),this.sessionRoot?(this.sessionRoot.webAR=this,this.sessionRoot?.onBegin(e)):console.warn("No WebARSessionRoot found in scene");let r=this.context.domElement;r?.onEnterAR?.call(r,e,this.arOverlayElement),this.context.mainCameraComponent?.applyClearFlagsIfIsActiveCamera()}onEnd(e){this._previousParent&&(R.addComponent(this._previousParent,this.webxr),this._previousParent=null),this.hitTestSource=null;let t=this.webxr.context;t.scene.background=this.previousBackground,t.scene.environment=this.previousEnvironment,this.sessionRoot&&this.sessionRoot.onEnd(this.webxr.Rig,e);let i=this.context.domElement;i.onExitAR?.call(i,e),this.context.mainCameraComponent?.applyClearFlagsIfIsActiveCamera()}onUpdate(e,t){if(this.noHitTestAvailable===!0){if(this.reticle&&(this.reticle.visible=!1),!this.didPlaceARSessionRoot){this.didPlaceARSessionRoot=!0;let n=this.webxr.Rig,r=m_.clone();this.sessionRoot?.placeAt(n,r)}return}if(!this.hitTestSource)return;let i=t.getHitTestResults(this.hitTestSource);if(i.length){let n=i[0],r=this.webxr.context.renderer.xr.getReferenceSpace();if(r){let s=n.getPose(r);if(this.sessionRoot){let a=this.sessionRoot.onUpdate(this.webxr.Rig,e,s);this.didPlaceARSessionRoot=a}if(this.reticle&&(this.reticle.visible=this.reticleActive,this.reticleActive&&s)){let a=s.transform.matrix;this.reticle.matrix.fromArray(a),this.webxr.Rig&&this.reticle.matrix.premultiply(this.webxr.Rig.matrix)}}}else this.sessionRoot?.onUpdate(this.webxr.Rig,e,null),this.reticle&&(this.reticle.visible=!1)}},lr=ts;I(lr,"tempWebXRObject");var m_=new c_().identity().makeTranslation(0,0,0);import{OrbitControls as b_}from"three/examples/jsm/controls/OrbitControls";import{Object3D as g_}from"three";var On=class extends M{constraintActive=!0;locked=!1;sources=[]};v([y(g_)],On.prototype,"sources",2);import*as ga from"three";var oc=P("freecam"),v_={LEFT:"",UP:"",RIGHT:"",BOTTOM:""},Fd,nt=class extends M{get controls(){return this._controls}get controllerObject(){return this._cameraObject}onStartInteraction(e){this.controls?.addEventListener("start",e)}autoRotate=!1;autoRotateSpeed=1;enableKeys=!0;enableDamping=!0;dampingFactor=.1;enableZoom=!0;minZoom=0;maxZoom=1/0;enablePan=!0;lookAtConstraint=null;lookAtConstraint01=1;middleClickToFocus=!0;doubleClickToFocus=!0;useSlerp=!0;debugLog=!1;targetLerpSpeed=5;_lookTargetPosition;_controls=null;_cameraObject=null;_lerpToTargetPosition=!1;_lerpCameraToTarget=!1;_cameraTargetPosition=null;_inputs=0;_enableTime=0;_startedListeningToKeyEvents=!1;awake(){this._lookTargetPosition=new ga.Vector3,this._startedListeningToKeyEvents=!1}onEnable(){this._enableTime=this.context.time.time;let t=R.getComponent(this.gameObject,ee)?.cam;this._controls||(console.assert(t!=null,"Missing camera",this),t&&(this._cameraObject=t),this._controls=new b_(t,this.context.renderer.domElement),Fd===void 0&&(Fd={...this._controls.keys})),this._controls&&(oc&&(this.enablePan=!0,this.enableZoom=!0,this.middleClickToFocus=!0,_o()&&(this.doubleClickToFocus=!0)),this._controls.enableDamping=this.enableDamping,this._controls.keys=this.enableKeys?Fd:v_,this._controls.autoRotate=this.autoRotate,this._controls.autoRotateSpeed=this.autoRotateSpeed,this._controls.enableZoom=this.enableZoom,t?.type==="PerspectiveCamera"?oc||(this._controls.minDistance=this.minZoom,this._controls.maxDistance=this.maxZoom):oc||(this._controls.minZoom=this.minZoom,this._controls.maxZoom=this.maxZoom),this._controls.dampingFactor=this.dampingFactor,this._controls.enablePan=this.enablePan,this._startedListeningToKeyEvents||(this._startedListeningToKeyEvents=!0,this._controls.listenToKeyEvents(window.document.body)))}onDisable(){this._controls&&(this._controls.enabled=!1,this._controls.autoRotate=!1)}onDestroy(){this._controls?.dispose()}start(){if(this._controls){let e=R.getComponent(this.gameObject,ee);if(e&&!this.setFromTargetPosition()){this.debugLog&&console.log("NO TARGET");let t=new ga.Vector3(0,0,-1).applyMatrix4(e.cam.matrixWorld);this.setTarget(t,!0)}}this.startCoroutine(this.startRaycastDelayed())}*startRaycastDelayed(){if(yield,!this.setFromTargetPosition()){let e=new be;e.screenPoint=new ga.Vector2(0,0),e.lineThreshold=.1;let t=this.context.physics.raycast(e);t.length>0&&this.setTarget(t[0].point,!0)}}onBeforeRender(){if(!this._controls)return;(this.context.input.getPointerDown(0)||this.context.input.getPointerDown(1)||this.context.input.getPointerDown(2))&&(this._inputs+=1),this._inputs>0&&(this.autoRotate=!1,this._controls.autoRotate=!1,this._lerpCameraToTarget=!1,this._lerpToTargetPosition=!1),this._inputs=0;let e=this.middleClickToFocus&&this.context.input.getPointerClicked(1);if(e||=this.doubleClickToFocus&&this.context.input.getPointerDoubleClicked(0)&&this.context.time.time-this._enableTime>.3,e?this.setTargetFromRaycast():(this.context.input.getPointerDown(0)||this.context.input.mouseWheelChanged)&&(this._lerpToTargetPosition=!1,this._lerpCameraToTarget=!1),this._lerpToTargetPosition||this._lerpCameraToTarget){let t=this.context.time.deltaTime*this.targetLerpSpeed;if(this._lerpCameraToTarget&&this._cameraTargetPosition&&this._cameraObject){if(this.useSlerp){let i=this._cameraObject?.position;Mp(i,this._cameraTargetPosition,t)}else this._cameraObject?.position.lerp(this._cameraTargetPosition,t);this._cameraObject.position.distanceTo(this._cameraTargetPosition)<1e-4&&(this._lerpCameraToTarget=!1)}this._lerpToTargetPosition&&(this.lerpTarget(this._lookTargetPosition,t),this._lookTargetPosition.distanceTo(this._controls.target)<1e-5&&(this._lerpToTargetPosition=!1))}!oc&&this.lookAtConstraint?.locked&&this.setFromTargetPosition(0,this.lookAtConstraint01),this._controls&&!this.context.isInXR&&(this.debugLog&&(this._controls.domElement=this.context.renderer.domElement),this._controls.enabled=!0,this._controls.update())}setCameraTarget(e,t=!1){e?(this._lerpCameraToTarget=!0,this._cameraTargetPosition=e.clone(),t&&this._cameraTargetPosition&&this.controllerObject?.position.copy(this._cameraTargetPosition)):this._lerpCameraToTarget=!1}setFromTargetPosition(e=0,t=1){if(!this._controls)return!1;let i=this.lookAtConstraint?.sources;if(i&&i.length>0){let n=i[e];if(n)return n.getWorldPosition(this._lookTargetPosition),this.lerpTarget(this._lookTargetPosition,t),!0}return!1}setTarget(e=null,t=!1){!this._controls||(e!==null&&this._lookTargetPosition.copy(e),t?this._controls.target.copy(this._lookTargetPosition):this._lerpToTargetPosition=!0)}lerpTarget(e,t){!this._controls||this._controls.target.lerp(e,t)}distanceToTarget(e){return this._controls?this._controls.target.distanceTo(e):-1}setTargetFromRaycast(){if(!this.controls)return;let e=this.context.physics.raycast();for(let t of e)if(t.distance>0&&R.isActiveInHierarchy(t.object)){if(this._lookTargetPosition.copy(t.point),this._lerpToTargetPosition=!0,this._cameraTargetPosition=null,this.context.mainCamera){this._lerpCameraToTarget=!0;let i=B(this.context.mainCamera);this._cameraTargetPosition=i.clone().sub(this.controls.target).add(this._lookTargetPosition),this._cameraObject?.parent?.worldToLocal(this._cameraTargetPosition)}break}}};v([y(On)],nt.prototype,"lookAtConstraint",2);var xi=class{used=!1;Use(){this.used=!0}StopPropagation(){this.event?.stopImmediatePropagation()}inputSource;object;isDown;isUp;isPressed;isClicked;event;constructor(e){this.event=e}};import{Object3D as __}from"three";var x_=P("debugeventsystem"),Xi=class extends M{static createIfNoneExists(e){this.didSearchEventSystem||(this.didSearchEventSystem=!0,Xi.systems.length<=0&&Xi.systems.push(...R.findObjectsOfType(Xi,e)));for(let i of Xi.systems)if(i.context===e)return;let t=new __;R.addNewComponent(t,Xi),e.scene.add(t)}static get systems(){let e=G.Current;return this._eventSystemMap.has(e)||this._eventSystemMap.set(e,[]),this._eventSystemMap.get(e)}static ensureUpdateMeshUI(e,t){wi.update(e,t)}static markUIDirty(e){wi.markDirty()}static get instance(){return this.systems[0]}orbitControl=null;orbitControlWasEnabled=!1;raycaster=[];constructor(){super(),Xi.systems.push(this)}onDestroy(){Xi.systems.splice(Xi.systems.indexOf(this),1)}start(){}register(e){e&&this.raycaster&&!this.raycaster.includes(e)&&this.raycaster?.push(e)}unregister(e){let t=this.raycaster?.indexOf(e);t!==void 0&&t!==-1&&this.raycaster?.splice(t,1)}_selectStartFn;_selectEndFn;_selectUpdateFn;onEnable(){let e=new Map;this._selectStartFn??=(i,n)=>{if(!n.grab)return;wi.resetLastSelected();let r=new xi;r.inputSource=i,r.isDown=i.selectionDown,r.isUp=i.selectionUp,r.isPressed=i.selectionPressed,r.isClicked=!1,e.set(i,n.grab),n.grab&&!this.handleEvents(n.grab,r)&&(n.grab=null)},this._selectEndFn??=(i,n)=>{if(!n.grab)return;let r=new xi;r.inputSource=i,r.isDown=i.selectionDown,r.isUp=i.selectionUp,r.isPressed=i.selectionPressed,r.isClicked=i.selectionClick,this.handleEvents(n.grab,r);let s=e.get(i);if(e.set(i,null),s)for(let a=0;a<this.raisedPointerDownEvents.length;a++){let c=this.raisedPointerDownEvents[a];this.raisedPointerDownObjects[a]===s&&c&&(c.onPointerUp?.call(c,r),this.raisedPointerDownEvents.splice(a,1),this.raisedPointerDownObjects.splice(a,1),a--)}};let t=new be;this._selectUpdateFn??=i=>{t.ray=i.getRay();let n=this.performRaycast(t);if(!n)return;let r=new xi;r.inputSource=i,this.handleIntersections(n,r)},Z.addEventListener("select-start",this._selectStartFn),Z.addEventListener("select-end",this._selectEndFn),Z.addEventListener("update",this._selectUpdateFn),this.context.pre_update_callbacks.push(this.onBeforeUpdate.bind(this)),this.context.input.addEventListener("pointerdown",this.onPointerDown.bind(this))}onDisable(){Z.removeEventListener("select-start",this._selectStartFn),Z.removeEventListener("select-end",this._selectEndFn),Z.removeEventListener("update",this._selectUpdateFn)}onPointerDown(){this.onBeforeUpdate()}lastPointerEvent=null;objectsHoveredThisFrame=[];objectsHoveredLastFrame=[];raisedPointerDownEvents=[];raisedPointerDownObjects=[];_didMove=!1;onBeforeUpdate(){if(this.objectsHoveredThisFrame.length=0,this.resetMeshUIStates(),V.IsInWebXR||this.context.input.isKeyPressed("Alt"))return;if(!this._didMove){let r=this.context.input.getPointerPositionRC(0);if(r&&r.x===0&&r.y===0)return;this._didMove=!0}let e=this.performRaycast(null),t=new xi(this.context.input.getPointerEvent(0));if(t.inputSource=this.context.input,t.isClicked=this.context.input.mouseClick,t.isDown=this.context.input.mouseDown,t.isUp=this.context.input.mouseUp,t.isPressed=this.context.input.mousePressed,this.lastPointerEvent=t,!e)return;let i=null,n=null;this.context.input.mouseDown&&this.currentActiveMeshUIComponents.length>0&&this.context.mainCameraComponent&&(i=R.getComponent(this.context.mainCameraComponent.gameObject,nt)??null,i&&(n=i.enabled,i.enabled=!1)),this.handleIntersections(e,t),i&&(this.orbitControl=i,this.orbitControl?.enabled?(this.orbitControlWasEnabled=this.orbitControl.enabled,this.orbitControl.enabled=!1):this.orbitControl&&!this.context.input.mousePressed&&(this.orbitControl.enabled=this.orbitControlWasEnabled,this.orbitControl=null))}_tempComponentsArray=[];onBeforeRender(){if(this.lastPointerEvent)this.lastPointerEvent.used=!1;else return;if(this.lastPointerEvent.isUp){for(let t of this.raisedPointerDownEvents)t.onPointerUp&&t.onPointerUp(this.lastPointerEvent);this.raisedPointerDownEvents.length=0,this.raisedPointerDownObjects.length=0}for(let t of this.objectsHoveredLastFrame)if(this.objectsHoveredThisFrame.indexOf(t)<0){this._tempComponentsArray.length=0;let i=R.getComponentsInParent(t,M,this._tempComponentsArray);this.lastPointerEvent.object=t;for(let n=0;n<i.length;n++){let r=i[n];if(!r.gameObject||r.destroyed)continue;let s=r;s.onPointerExit&&s.onPointerExit(this.lastPointerEvent)}}let e=this.objectsHoveredLastFrame;this.objectsHoveredLastFrame=this.objectsHoveredThisFrame,this.objectsHoveredThisFrame=e}_sortedHits=[];performRaycast(e){if(!this.raycaster)return null;this._sortedHits.length=0;for(let t of this.raycaster){if(!t.activeAndEnabled)continue;let i=t.performRaycast(e);i&&i.length>0&&this._sortedHits.push(...i)}return this._sortedHits.sort((t,i)=>t.distance-i.distance),this._sortedHits}handleIntersections(e,t){if(!e||e.length<=0)return!1;e=this.sortCandidates(e);for(let i of e){let{object:n}=i;if(this.handleEvents(n,t))return!0}return!1}_sortingBuffer=[];_noDepthTestingResults=[];sortCandidates(e){this._sortingBuffer.length=0,this._noDepthTestingResults.length=0;for(let t=0;t<e.length;t++){let i=e[t],n=i.object;if(n.material&&n.material.depthTest===!1){this._noDepthTestingResults.push(i);continue}this._sortingBuffer.push(i)}for(let t of this._sortingBuffer)this._noDepthTestingResults.push(t);return this._noDepthTestingResults}handleEventsArray=[];out={};handleEvents(e,t){if(!this.testIsVisible(e))return t.isClicked&&x_&&console.log("not allowed",e),!1;let i=e;t.object=e,this.lastPointerEvent=t;let n=e.parent,r=!1,s=t.isClicked??!1,a=null;if(n&&n.isUI){let c=(t.isPressed||t.isClicked)??!1;if(n[mt]){let u=n[mt].gameObject;if(u){if(!Ei.isInteractable(u,this.out))return this.out.canvasGroup?.interactable??!1;a=this.out.canvasGroup??null;let d=this.handleMeshUIIntersection(e,c);e=u,r=!0}}if(!r&&this.handleMeshUiObjectWithoutShadowDom(n,c))return!0}if(this.objectsHoveredThisFrame.push(e),a===null||a.interactable){let c=this.objectsHoveredLastFrame.indexOf(e)>=0;this.handleEventsArray.length=0;let u=R.getComponentsInParent(e,M,this.handleEventsArray);for(let l=0;l<u.length;l++){if(t.used)return!0;if(u[l].destroyed)continue;let d=u[l];d.interactable!==!1&&(d.onPointerEnter&&(c||d.onPointerEnter(t)),t.isDown&&d.onPointerDown&&!this.raisedPointerDownEvents.includes(d)&&(d.onPointerDown(t),this.raisedPointerDownEvents.push(d),this.raisedPointerDownObjects.push(i)),t.isUp&&d.onPointerUp&&d.onPointerUp(t),t.isClicked&&d.onPointerClick&&d.onPointerClick(t))}}return!0}handleMeshUiObjectWithoutShadowDom(e,t){return!e||!e.isUI?!0:this.handleMeshUIIntersection(e,t)}currentActiveMeshUIComponents=[];handleMeshUIIntersection(e,t){let i=wi.updateState(e,t);return i&&this.currentActiveMeshUIComponents.push(i),i!==null}resetMeshUIStates(){if(this.context.input.getPointerPressedCount()>0&&wi.resetLastSelected(),!(!this.currentActiveMeshUIComponents||this.currentActiveMeshUIComponents.length<=0)){for(let e=0;e<this.currentActiveMeshUIComponents.length;e++){let t=this.currentActiveMeshUIComponents[e];wi.resetState(t)}this.currentActiveMeshUIComponents.length=0}}testIsVisible(e){return e?R.isActiveSelf(e)?this.testIsVisible(e.parent):!1:!0}},Ye=Xi;I(Ye,"_eventSystemMap",new Map),I(Ye,"didSearchEventSystem",!1);var wi=class{static markDirty(){this.needsUpdate=!0}static update(e,t){for(let i of this.lastUpdateFrame)if(i.context===t){if(t.time.frameCount===i.frame)return;i.frame=t.time.frameCount,(this.needsUpdate||t.time.frameCount<30)&&(this.needsUpdate=!1,e.update());return}this.lastUpdateFrame=[{context:t,frame:t.time.frameCount}],e.update()}static updateState(e,t){let i=null;if(e&&(i=this.findBlockInParent(e),i&&i!==this.lastSelected)){if(i.interactable===!1)return null;t?(this.lastSelected=i,i.states.pressed&&i.setState("pressed")):i.states.hovered&&i.setState("hovered"),this.needsUpdate=!0}return i}static resetLastSelected(){let e=this.lastSelected;!e||(this.lastSelected=null,this.resetState(e))}static resetState(e){if(!e)return;e.interactable===!1?e.states.disabled&&e.setState("disabled"):e===this.lastSelected&&e.states.selected?e.setState("selected"):e.setState("normal"),this.needsUpdate=!0}static findBlockInParent(e){return e?e.isBlock&&Object.keys(e.states).length>0?e:this.findBlockInParent(e.parent):null}};I(wi,"lastSelected",null),I(wi,"lastUpdateFrame",[]),I(wi,"needsUpdate",!1);import{AxesHelper as w_}from"three";var is="./include";sc.Block.prototype.interactable={get(){return this.interactive},set(o){this.interactable=o}};var mt=Symbol("shadowDomOwner"),Ve=class extends M{isRoot(){return this.Root?.gameObject===this.gameObject}markDirty(){Ye.markUIDirty(this.context)}shadowComponent=null;_controlsChildLayout=!0;get controlsChildLayout(){return this._controlsChildLayout}set controlsChildLayout(e){this._controlsChildLayout=e,this.shadowComponent&&(this.shadowComponent.autoLayout=e)}_root=void 0;get Root(){return this._root===void 0&&(this._root=R.getComponentInParent(this.gameObject,kn)),this._root}_parentComponent=void 0;onEnable(){super.onEnable()}addShadowComponent(e,t){this.removeShadowComponent();let i=this.isRoot()?this.gameObject:this.gameObject.parent;if(this._parentComponent=R.getComponentInParent(i,Ve),!this._parentComponent){console.warn(`Component "${this.name}" doesn't have a UI parent anywhere. Do you have a UI element outside a Canvas?`,this);return}e.name=this.name+" ("+(this.constructor.name??"UI")+")",e.autoLayout=this._parentComponent.controlsChildLayout,e[mt]=this,e.traverse(r=>{r[mt]===void 0&&(r[mt]=this)});let n=!1;if(this.Root?.gameObject===this.gameObject)this.gameObject.add(e);else{let r=this._parentComponent.shadowComponent;r&&(r?.add(e),n=!0)}this.shadowComponent=e,t&&t.shadowComponent&&this.shadowComponent&&t.shadowComponent.add(this.shadowComponent),Di&&e.add(new w_(.5)),this.onAfterAddedToScene(),n&&sc.update()}set(e){}traverseOwnedShadowComponents(e,t,i){if(!!e&&e[mt]===t){i(e);for(let n of e.children)this.traverseOwnedShadowComponents(n,t,i)}}removeShadowComponent(){this.shadowComponent&&this.shadowComponent.removeFromParent()}onAfterAddedToScene(){}setInteractable(e){this.shadowComponent&&(this.shadowComponent.interactable=e)}},kn=class extends Ve{awake(){super.awake()}};var Ei=class{static getObject(e){let t=e[mt];return t&&(t.isComponent===!0?e=t.gameObject:e=t),e}static isInteractable(e,t){if(e==null||!e.visible||(e=this.getObject(e),!e.visible))return!1;let i=this.tryFindCanvasGroup(e);if(i?.isCanvasGroup===!0&&(t&&(t.canvasGroup=i),i.blocksRaycasts===!1||i.interactable===!1))return!1;let n=ai(e,r=>{if(r.isGraphic===!0)return r},!1);return t&&n?.isGraphic===!0&&(t.graphic=n),n?.raycastTarget!==!1}static tryFindCanvasGroup(e){if(!e)return null;let t=ai(e,i=>{let n=i;if(n.blocksRaycasts!==void 0&&n.interactable!==void 0)return n},!1);return t!==void 0?t:this.tryFindCanvasGroup(e.parent)}};var ba=P("debugwebxrcontroller");var Kr=class extends M{},je=class extends M{static CreateRaycastLine(){let e=new S_(this.geometry),t=e.material;return t.color=this.raycastColor,e.layers.set(2),e.name="line",e.scale.z=1,e}static CreateRaycastHitPoint(){let e=new M_(.5,22,22),t=new O_({color:this.raycastColor}),i=new P_(e,t);return i.visible=!1,i.layers.set(2),i}static Create(e,t,i,n){let r=i?R.addNewComponent(i,je,!1):new je;r.webXR=e,r.index=t,r.type=n;let s=e.context;r.controller=s.renderer.xr.getController(t),r.controllerGrip=s.renderer.xr.getControllerGrip(t),r.controllerModel=this.Factory.createControllerModel(r.controller),r.controllerGrip.add(r.controllerModel),r.hand=s.renderer.xr.getHand(t);let a=new j_;_n(a,s),r.webXR.handModelPath&&r.webXR.handModelPath!==""?a.setPath(Ii(e.sourceId,r.webXR.handModelPath)):a.setPath("https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles/generic-hand/");let c=new A_(r.hand,a);return r.hand.add(c),r.hand.traverse(u=>u.layers.set(2)),r.handPointerModel=new D_(r.hand,r.controller),r.controller.addEventListener("connected",u=>{r.setControllerLayers(r.controllerModel,2),r.setControllerLayers(r.controllerGrip,2),r.setControllerLayers(r.hand,2),setTimeout(()=>{r.setControllerLayers(r.controllerModel,2),r.setControllerLayers(r.controllerGrip,2),r.setControllerLayers(r.hand,2)},1e3)}),r.hand.addEventListener("connected",u=>{if(u.data.hand){e.Rig&&e.Rig.add(r.hand),r.type=0,r.handPointerModel.traverse(h=>h.layers.set(2)),r.handPointerModel.pointerObject?.traverse(h=>h.layers.set(2));let d=r.hand.joints;if(d)for(let h of Object.keys(d)){let g=d[h];g.parent||r.hand.add(g)}}}),r}static addEventListener(e,t){let i=this.eventSubs[e]??[];i.push(t),this.eventSubs[e]=i}static removeEventListener(e,t){if(!t)return;let i=this.eventSubs[e]??[],n=i.indexOf(t);n>=0&&i.splice(n,1),this.eventSubs[e]=i}webXR;index=-1;controllerModel;controller;controllerGrip;hand;handPointerModel;grabbed=null;input=null;type=0;showRaycastLine=!0;get isUsingHands(){let e=this.input?.hand;return e!=null}get wrist(){if(!this.hand)return null;let e=this.hand.joints;return e?e.wrist:null}_wristQuaternion=null;getWristQuaternion(){let e=this.wrist;return e?(this._wristQuaternion||(this._wristQuaternion=new ac),me(e).multiply(this._wristQuaternion.setFromEuler(new T_(-Math.PI/4,0,0)))):null}movementVector=new Ci;worldRot=new ac;joystick=new I_;didRotate=!1;didTeleport=!1;didChangeScale=!1;lastHit=null;raycastLine=null;_raycastHitPoint=null;_connnectedCallback=null;_disconnectedCallback=null;_selectStartEvt=null;_selectEndEvt=null;get selectionDown(){return this._selectionPressed&&!this._selectionPressedLastFrame}get selectionUp(){return!this._selectionPressed&&this._selectionPressedLastFrame}get selectionPressed(){return this._selectionPressed}get selectionClick(){return this._selectionEndTime-this._selectionStartTime<.3}get raycastHitPoint(){return this._raycastHitPoint}_selectionPressed=!1;_selectionPressedLastFrame=!1;_selectionStartTime=0;_selectionEndTime=0;get useSmoothing(){return this._useSmoothing}_useSmoothing=!0;awake(){if(!this.controller){console.warn("Missing Controller!!!",this);return}this._connnectedCallback=this.onSourceConnected.bind(this),this._disconnectedCallback=this.onSourceDisconnected.bind(this),this._selectStartEvt=this.onSelectStart.bind(this),this._selectEndEvt=this.onSelectEnd.bind(this),this.type===1&&(this.controllerGrip.addEventListener("connected",this._connnectedCallback),this.controllerGrip.addEventListener("disconnected",this._disconnectedCallback),this.controller.addEventListener("selectstart",this._selectStartEvt),this.controller.addEventListener("selectend",this._selectEndEvt)),this.type===0&&(this.controller.addEventListener("selectstart",this._selectStartEvt),this.controller.addEventListener("selectend",this._selectEndEvt))}onDestroy(){this.type===1&&(this.controllerGrip.removeEventListener("connected",this._connnectedCallback),this.controllerGrip.removeEventListener("disconnected",this._disconnectedCallback),this.controller.removeEventListener("selectstart",this._selectStartEvt),this.controller.removeEventListener("selectend",this._selectEndEvt)),this.type===0&&(this.controller.removeEventListener("selectstart",this._selectStartEvt),this.controller.removeEventListener("selectend",this._selectEndEvt)),this.hand?.clear(),this.controllerGrip?.clear(),this.controller?.clear()}onEnable(){this.hand&&(this.hand.name="Hand"),this.controllerGrip&&(this.controllerGrip.name="ControllerGrip"),this.controller&&(this.controller.name="Controller"),this.raycastLine&&(this.raycastLine.name="RaycastLine;"),this.webXR.Controllers.indexOf(this)<0&&this.webXR.Controllers.push(this),this.raycastLine||(this.raycastLine=je.CreateRaycastLine()),this._raycastHitPoint||(this._raycastHitPoint=je.CreateRaycastHitPoint()),this.webXR.Rig?.add(this.hand),this.webXR.Rig?.add(this.controllerGrip),this.webXR.Rig?.add(this.controller),this.webXR.Rig?.add(this.raycastLine),this.raycastLine?.add(this._raycastHitPoint),this._raycastHitPoint.visible=!1,this.hand.add(this.handPointerModel),ba&&console.log("ADDED TO RIG",this.webXR.Rig)}onDisable(){this.hand?.removeFromParent(),this.controllerGrip?.removeFromParent(),this.controller?.removeFromParent(),this.raycastLine?.removeFromParent(),this._raycastHitPoint?.removeFromParent();let e=this.webXR.Controllers.indexOf(this);e>=0&&this.webXR.Controllers.splice(e,1)}_isConnected=!1;onSourceConnected(e){if(this._isConnected){console.warn("Received connected event for controller that is already connected",this.index,e);return}this._isConnected=!0,this.input=e.data,this.type===1&&(this.onSelectStart(),this.createPointerEvent("down"))}onSourceDisconnected(e){if(!this._isConnected){console.warn("Received discnnected event for controller that is not connected",e);return}this._isConnected=!1,this.type===1&&(this.onSelectEnd(),this.createPointerEvent("up")),this.input=null}createPointerEvent(e){switch(e){case"down":this.context.input.createPointerDown({clientX:0,clientY:0,button:this.index,pointerType:"touch"});break;case"move":break;case"up":this.context.input.createPointerUp({clientX:0,clientY:0,button:this.index,pointerType:"touch"});break}}rayRotation=new ac;update(){this.context.time.frameCount%60===0&&(this.setControllerLayers(this.controller,2),this.setControllerLayers(this.controllerGrip,2),this.setControllerLayers(this.hand,2));let e=je.eventSubs["update"];if(e&&e.length>0)for(let n of e)n(this);let t=1;this.type===0?t=this.context.time.deltaTime/.1:this.isUsingHands&&this.handPointerModel.pinched&&(t=this.context.time.deltaTime/.3),this.rayRotation.slerp(me(this.controller),this.useSmoothing?t:1);let i=B(this.controller);if(this.isUsingHands&&this.handPointerModel.cursorObject&&(this.handPointerModel.cursorObject.visible=!1),this.raycastLine){let n=this.showRaycastLine&&this.type!==1;if(this.type===1)this.raycastLine.visible=!1;else if(this.isUsingHands){this.raycastLine.visible=!this.grabbed&&n,ie(this.raycastLine,i);let r=this.hand.joints;if(r&&r.wrist&&this.grabbed&&this.grabbed.isCloseGrab){let a=this.getWristQuaternion();a&&this.rayRotation.copy(a)}Ze(this.raycastLine,this.rayRotation)}else this.raycastLine.visible=n,Ze(this.raycastLine,this.rayRotation),ie(this.raycastLine,i)}this.lastHit=this.updateLastHit(),this.grabbed&&this.grabbed.update(),this._selectionPressedLastFrame=this._selectionPressed,this.selectStartCallback&&this.selectStartCallback()}_pinchStartTime=void 0;onUpdate(e){if(this.lastHit=null,!e||e.inputSources.length<=this.index){this.input=null;return}if(this.type===0&&(this.input=e.inputSources[this.index]),!this.input)return;let t=this.webXR.Rig;if(!t)return;this._didNotEndSelection&&!this.handPointerModel.pinched&&(this._didNotEndSelection=!1,this.onSelectEnd()),this.updateStick(this.input);let i=this.input?.gamepad?.buttons;switch(this.input.handedness){case"left":let n=3*je.MovementSpeedFactor,r=2,s=H.clamp01(this.joystick.length()*2),a=this.joystick.x>0?1:-1,c=Math.pow(this.joystick.x,r);c*=a,c*=s;let u=this.joystick.y>0?1:-1,l=Math.pow(this.joystick.y,r);l*=u,c*=s,t.getWorldQuaternion(this.worldRot),this.movementVector.set(c,0,l),this.movementVector.applyQuaternion(this.webXR.TransformOrientation),this.movementVector.y=0,this.movementVector.applyQuaternion(this.worldRot),this.movementVector.multiplyScalar(n*this.context.time.deltaTime),t.position.add(this.movementVector),this.isUsingHands&&this.runTeleport(t,i);break;case"right":let d=this.joystick.x,h=Math.abs(d);if(h<.4)this.didRotate=!1;else if(h>.5&&!this.didRotate){let g=d>0?-1:1;t.rotateY(H.toRadians(30*g)),this.didRotate=!0}this.runTeleport(t,i);break}}runTeleport(e,t){let i=-this.joystick.y;if(this.hand?.visible&&!this.grabbed){let a=this.handPointerModel.isPinched();a&&this._pinchStartTime===void 0&&(this._pinchStartTime=this.context.time.time),a&&this._pinchStartTime&&this.context.time.time-this._pinchStartTime>.8&&(i=this.handPointerModel.isPinched()?1:0),a||(this._pinchStartTime=void 0)}else this._pinchStartTime=void 0;let n=i>.5&&this.webXR.IsInVR,r=this.webXR.Rig?this.webXR.Rig?.scale?.x<.999:!1,s=null;if(t&&this.input&&!this.input.hand)for(let a=0;a<t.length;a++){let c=t[a];if(a===4)if(c.pressed&&!this.didChangeScale&&this.webXR.IsInVR){this.didChangeScale=!0;let u=this.webXR.Rig;if(u)if(r){r=!1,u.scale.set(1,1,1),s=1,je.MovementSpeedFactor=1;let l=this.context.mainCamera;je.PreviousCameraFarDistance&&(l.far=je.PreviousCameraFarDistance)}else{r=!0,n=!0,s=.1,je.MovementSpeedFactor=s*2;let l=this.context.mainCamera;je.PreviousCameraFarDistance=l.far,l.far/=s}}else c.pressed||(this.didChangeScale=!1)}if(n){if(!this.didTeleport){let a=this.raycast();if(this.didTeleport=!0,a&&a.length>0){let c=a[0];if(r||this.isValidTeleportTarget(c.object)){let u=c.point;ie(e,u)}}}}else i<.1&&(this.didTeleport=!1);s!==null&&(e.scale.set(s,s,s),e.updateMatrixWorld())}isValidTeleportTarget(e){return R.getComponentInParent(e,Kr)!=null}updateStick(e){!e||!e.gamepad||e.gamepad.axes?.length<4||(this.joystick.x=e.gamepad.axes[2],this.joystick.y=e.gamepad.axes[3])}updateLastHit(){let e=this.raycast(),t=e?e[0]:null;this.lastHit=t;let i=1;if(this.webXR.Rig&&(i/=this.webXR.Rig.scale.x),this.raycastLine){this.raycastLine.scale.z=i*(this.lastHit?.distance??9999);let n=this.raycastLine.material;t!=null?n.color=je.raycastColor:n.color=je.raycastNoHitColor}if(this._raycastHitPoint){if(this.lastHit!=null){this._raycastHitPoint.position.z=-1;let n=H.clamp(this.lastHit.distance*.01*i,.015,.1);this._raycastHitPoint.scale.set(n,n,n)}this._raycastHitPoint.visible=this.lastHit!==null&&this.lastHit!==void 0}return t}onSelectStart(){!this.context.connection.allowEditing||(this.selectStartCallback=()=>this.onHandleSelectStart())}selectStartCallback=null;lastSelectStartObject=null;onHandleSelectStart(){this.selectStartCallback=null,this._selectionPressed=!0,this._selectionStartTime=this.context.time.time,this._selectionEndTime=1e3;let e=null,t=!1;if(this.isUsingHands?(e=this.overlap(),e.length<=0?(e=this.raycast(),t=!1):t=!0):e=this.raycast(),ba&&console.log("onHandleSelectStart","close grab? "+t,"intersections",e),e&&e.length>0)for(let i of e){let n=i.object;this.lastSelectStartObject=n;let r={selected:n,grab:n},s=je.eventSubs["select-start"];if(s&&s.length>0)for(let a of s)a(this,r);r.grab!==n&&ba&&console.log("Grabbed object changed","original",n,"new",r.grab),r.grab&&(this.grabbed=gt.TryTake(this,r.grab,i,t));break}else{let i=je.eventSubs["select-start"],n={selected:null,grab:null};if(i&&i.length>0)for(let r of i)r(this,n)}}_didNotEndSelection=!1;onSelectEnd(){if(this.isUsingHands&&this.handPointerModel.pinched){this._didNotEndSelection=!0;return}if(!this._selectionPressed)return;this.selectStartCallback=null,this._selectionPressed=!1,this._selectionEndTime=this.context.time.time;let e={grab:this.grabbed?.selected??this.lastSelectStartObject},t=je.eventSubs["select-end"];if(t&&t.length>0)for(let i of t)i(this,e);this.grabbed&&(this.grabbed.free(),this.grabbed=null)}testIsVisible(e){return!(!e||R.isActiveInHierarchy(e)===!1||Ei.isInteractable(e)===!1)}setControllerLayers(e,t){if(!!e&&(e.layers.set(t),e.children))for(let i of e.children)this.grabbed?.selected===i||this.grabbed?.selectedMesh===i||this.setControllerLayers(i,t)}getRay(){let e=new k_;return e.origin.copy(B(this.controller)),e.direction.set(0,0,-1).applyQuaternion(this.rayRotation),e}closeGrabBoundingBoxHelper;overlap(){let e=this.isUsingHands&&this.handPointerModel?this.handPointerModel.pointerObject:this.controllerGrip;if(ba&&(!this.closeGrabBoundingBoxHelper&&e&&(this.closeGrabBoundingBoxHelper=new E_(e,16776960),this.scene.add(this.closeGrabBoundingBoxHelper)),this.closeGrabBoundingBoxHelper&&e&&this.closeGrabBoundingBoxHelper.setFromObject(e)),!e)return new Array;let t=B(e).clone();return this.context.physics.sphereOverlap(t,.02)}raycast(){let e=new be;e.layerMask=new R_,e.layerMask.set(0),e.layerMask.disable(2),e.ray=this.getRay();let t=this.context.physics.raycast(e);for(let i=0;i<t.length;i++){let n=t[i],r=n.object;if(!this.testIsVisible(r)){t.splice(i,1),i--;continue}n.object=Ei.getObject(r);break}return t}},Z=je;I(Z,"Factory",new L_),I(Z,"raycastColor",new Pm(.9,.3,.3)),I(Z,"raycastNoHitColor",new Pm(.6,.6,.6)),I(Z,"geometry",new C_().setFromPoints([new Ci(0,0,0),new Ci(0,0,-1)])),I(Z,"handModels",{}),I(Z,"eventSubs",{}),I(Z,"PreviousCameraFarDistance"),I(Z,"MovementSpeedFactor",1);var rt=class{static AddEventListener(e,t){return rt.Events[e]||(rt.Events[e]=[]),rt.Events[e].push(t),t}static RemoveEventListener(e,t){if(!t||!rt.Events[e])return;let i=rt.Events[e].indexOf(t);i>=0&&rt.Events[e].splice(i,1)}static Register(e){this.Current.find(t=>t===e)||this.Current.push(e)}static Remove(e){let t=this.Current.indexOf(e);t>=0&&this.Current.splice(t,1)}static TryTake(e,t,i,n){let r=R.getComponentInParent(t,zt);if(r)t=r.gameObject;else return ba&&console.warn("Prevented taking object that is not interactable",t),null;let s=t,a=R.getComponentInParent(t,St);a&&(a.requestOwnership(),s=a.gameObject);for(let u of this.Current)if(u.selected===s)return u.controller===e||(u.free(),u.Take(e,s,t,a,r,i,n)),u;let c=new rt;return c.Take(e,s,t,a,r,i,n),c}sync=null;selected=null;selectedParent=null;selectedMesh=null;controller=null;grabTime=0;grabUUID="";isCloseGrab=!1;originalMaterial=null;usageMarker=null;rigidbodies=null;didReparent=!1;grabDistance=0;interactable=null;positionSource=null;Take(e,t,i,n,r,s,a){if(console.assert(t!==null,"Expected object to be taken but was",t),e.isUsingHands?this.positionSource=a?e.wrist:e.controller:this.positionSource=e.controller,!this.positionSource)return console.warn("No position source"),this;let c={controller:e,take:t,hit:i,sync:n,interactable:r};rt.Events.WillTake?.forEach(g=>g(this,c));let u=i;u?.material&&(this.originalMaterial=u.material,Array.isArray(u.material)||(u.material=u.material.clone(),u.material&&u.material.emissive&&(u.material.emissive.b=.2))),this.selected=t,this.selectedParent||(this.selectedParent=t.parent),this.selectedMesh=u,this.controller=e,this.interactable=r,this.isCloseGrab=a,this.didReparent=!1,this.sync=n,this.grabTime=e.context.time.time,this.grabUUID=Date.now().toString(),this.usageMarker=R.addNewComponent(this.selected,Wt),this.rigidbodies=R.getComponentsInChildren(this.selected,J),B(this.positionSource,this.lastControllerWorldPos);let l=()=>a?this.lastControllerWorldPos.clone():s.point.clone();this.grabDistance=l().distanceTo(this.lastControllerWorldPos),this.totalChangeAlongDirection=0,this.localPositionOffsetToGrab=this.selected.worldToLocal(l());let d=e.isUsingHands&&a?this.controller.getWristQuaternion().clone():e.rayRotation.clone();me(this.selected,this.localQuaternionToGrab).premultiply(d.invert());let h=this.controller.webXR.Rig;return h&&this.rigPositionLastFrame.copy(B(h)),ye.Add(e.context,this.selected),rt.Register(this),this.sync&&(this.sync.fastMode=!0),rt.Events.DidTake?.forEach(g=>g(this,c)),this}free(){if(!this.selected)return;let e={controller:this.controller,take:this.selected,hit:this.selected,sync:this.sync,interactable:null};rt.Events.WillFree?.forEach(n=>n(this,e)),ye.Remove(this.controller.context,this.selected),rt.Remove(this),this.sync&&(this.sync.fastMode=!1);let t=this.selectedMesh;t&&this.originalMaterial&&t.material&&(t.material=this.originalMaterial);let i=this.selected;if(this.didReparent&&i.parent){let n=this.selectedParent;n?n.attach(i):this.controller?.context.scene.attach(i)}if(this.usageMarker?.destroy(),this.controller&&(this.controller.grabbed=null),this.selected=null,this.selectedParent=null,this.selectedMesh=null,this.sync=null,this.rigidbodies)for(let n of this.rigidbodies)n.wakeUp(),n.setVelocity(n.smoothedVelocity);this.rigidbodies=null,this.localPositionOffsetToGrab=null,this.quaternionLerp=null,rt.Events.DidFree?.forEach(n=>n(this,e))}grabPoint=new Ci;localPositionOffsetToGrab=null;localPositionOffsetToGrab_worldSpace=new Ci;localQuaternionToGrab=new ac(0,0,0,1);targetDir=null;quaternionLerp=null;controllerDir=new Ci;controllerWorldPos=new Ci;lastControllerWorldPos=new Ci;controllerPosDelta=new Ci;totalChangeAlongDirection=0;rigPositionLastFrame=new Ci;controllerMovementSinceLastFrame(){if(!this.positionSource||!this.controller)return 0;this.controllerDir.set(0,0,-1),this.controllerDir.applyQuaternion(this.controller.rayRotation),B(this.positionSource,this.controllerWorldPos),this.controllerPosDelta.copy(this.controllerWorldPos),this.controllerPosDelta.sub(this.lastControllerWorldPos),this.lastControllerWorldPos.copy(this.controllerWorldPos);let e=this.controller.webXR.Rig;if(e){let i=B(e),n=this.rigPositionLastFrame.sub(i);this.controllerPosDelta.add(n),this.rigPositionLastFrame.copy(i)}return this.controllerDir.dot(this.controllerPosDelta)}update(){if(this.rigidbodies)for(let e of this.rigidbodies)e.resetVelocities();if(this.sync&&this.controller&&this.controller.context.connection.isInRoom&&this.controller.context.time.time-this.grabTime>3&&this.sync.hasOwnership()===!1&&(console.log("no ownership, will leave",this.sync.guid),this.free()),!(this.interactable&&!this.interactable.canGrab)){if(!this.didReparent&&this.selected&&this.controller){let e=this.controller.webXR.Rig?.scale.x??1;this.totalChangeAlongDirection+=this.controllerMovementSinceLastFrame();let t=1;this.controller.type===0&&(t=Math.max(0,1+this.totalChangeAlongDirection*2/e),t=t*t*t),this.grabDistance/e<.8&&(t=1),this.targetDir||(this.targetDir=new Ci),this.targetDir.set(0,0,-this.grabDistance*t);let i=this.targetDir.applyQuaternion(this.controller.rayRotation).add(this.controllerWorldPos),n=this.controller.rayRotation.clone().multiplyQuaternions(this.controller.rayRotation,this.localQuaternionToGrab);this.quaternionLerp||(this.quaternionLerp=n.clone()),this.quaternionLerp.slerp(n,this.controller.useSmoothing?this.controller.context.time.deltaTime/.03:1),Ze(this.selected,this.quaternionLerp),this.selected.updateWorldMatrix(!1,!1),this.grabPoint.copy(i),this.localPositionOffsetToGrab&&(this.localPositionOffsetToGrab_worldSpace.copy(this.localPositionOffsetToGrab),this.selected.localToWorld(this.localPositionOffsetToGrab_worldSpace).sub(B(this.selected)),i.sub(this.localPositionOffsetToGrab_worldSpace)),ie(this.selected,i)}if(this.rigidbodies!=null)for(let e of this.rigidbodies)e.wakeUp();oe.markDirty(this.selected,!0)}}},gt=rt;I(gt,"Events",{}),I(gt,"Current",[]);import{Object3D as Om}from"three";var H_=P("debugmouth"),cr=class extends M{idle=[];talking=[];marker=null;voip=null;lastMouthChangeTime=0;mouthChangeLength=0;awake(){setTimeout(()=>{this.voip=R.findObjectOfType(it,this.context),this.marker||(this.marker=R.getComponentInParent(this.gameObject,le))},3e3)}update(){if(!this.voip||this.context.time.frameCount%10!==0)return;let e=this.marker?.connectionId??null;if(!e){H_&&(e=null);return}let t=this.voip.getFrequency(e)??0;this.updateLips(t)}updateLips(e){if(this.context.time.time-this.lastMouthChangeTime>this.mouthChangeLength){if(this.mouthChangeLength=.05+Math.random()*.1,this.talking&&this.talking.length>0&&e>30){this.lastMouthChangeTime=this.context.time.time;let t=Math.floor(Math.random()*this.talking.length);this.setMouthShapeActive(this.talking,t)}else if(this.idle.length>0&&this.context.time.time-this.lastMouthChangeTime>.5){this.lastMouthChangeTime=this.context.time.time;let t=Math.floor(Math.random()*this.idle.length);this.setMouthShapeActive(this.idle,t)}}}setMouthShapeActive(e,t){if(!!e){e!=this.idle?this.idle.map(i=>i.visible=!1):this.talking.map(i=>i.visible=!1);for(let i=0;i<e.length;i++){let n=e[i];n&&(n.visible=i===t)}}}};v([y(Om)],cr.prototype,"idle",2),v([y(Om)],cr.prototype,"talking",2);var ns=class extends M{voip=null;marker=null;_startPosition=null;awake(){this.voip=R.findObjectOfType(it,this.context),this.marker=R.getComponentInParent(this.gameObject,le)}update(){if(!this.voip||!this.marker||this.context.time.frameCount%10!==0)return;let e=this.marker.connectionId,t=this.voip.getFrequency(e);if(t==null)return;this._startPosition||(this._startPosition=this.gameObject.position.clone());let i=t/100;this.gameObject.position.y=this._startPosition.y+i*.07}};import{Object3D as F_}from"three";var Qi=class extends M{eyes=[];lastBlinkTime=0;blinkLength=0;eyesOpen=!0;state=null;awake(){this.state=R.getComponentInParent(this.gameObject,Ee)}update(){if(!this.gameObject||!this.gameObject.visible||!this.eyes||!Array.isArray(this.eyes)||this.eyes.length===0)return;if(this.context.time.time-this.lastBlinkTime>this.blinkLength){if(this.lastBlinkTime=this.context.time.time,this.state&&!this.state.isOn||!this.activeAndEnabled)return;if(this.eyesOpen=!this.eyesOpen,this.blinkLength=Math.random(),this.eyesOpen?(this.blinkLength*=3,this.blinkLength+=.5,Math.random()<.1&&(this.blinkLength=.1+Math.random()*.2)):(this.blinkLength*=Math.random()*.2,this.blinkLength+=.1),Math.random()<.1&&(this.blinkLength*=3),this.blinkLength=Math.max(.2,this.blinkLength),this.blinkLength=Math.min(3,this.blinkLength),this.eyes)for(let t of this.eyes)t&&(t.visible=this.eyesOpen)}}};v([y(F_)],Qi.prototype,"eyes",2),v([y()],Qi.prototype,"lastBlinkTime",2),v([y()],Qi.prototype,"blinkLength",2),v([y()],Qi.prototype,"eyesOpen",2);import*as lc from"three";import{Object3D as Ud}from"three";var Gd=class extends M{head=null;eyes=null;target=null;brain=null;awake(){this.brain||(this.brain=R.getComponentInParent(this.gameObject,Rn)),this.brain||(console.log("No look at brain found, adding it now"),this.brain=R.addNewComponent(this.gameObject,Rn)),this.brain&&this.target&&(this.brain.controlledTarget=this.target)}vec=new lc.Vector3;currentTargetPoint=new lc.Vector3;update(){let e=this.target;if(e&&this.head){let t=this.eyes;if(t){let i=B(e);this.currentTargetPoint.lerp(i,this.context.time.deltaTime/.1);let n=B(this.head),r=this.vec.copy(this.currentTargetPoint).sub(n).normalize();if(r.length()<.1)return;let s=Gd.forward;if(s.set(0,0,1),s.applyQuaternion(me(this.head)),s.dot(r)>.45)for(let c=0;c<t.length;c++)t[c].lookAt(this.currentTargetPoint)}}}},qi=Gd;I(qi,"forward",new lc.Vector3(0,0,1)),v([y(Ud)],qi.prototype,"head",2),v([y(Ud)],qi.prototype,"eyes",2),v([y(Ud)],qi.prototype,"target",2);import{AxesHelper as B_}from"three";var Mn=class extends M{length=1;depthTest=!0;isGizmo=!0;_axes=null;onEnable(){if(this.isGizmo&&!Di)return;this._axes||(this._axes=new B_(this.length)),this.gameObject.add(this._axes);let e=this._axes.material;e&&e.depthTest!==void 0&&(e.depthTest=this.depthTest)}onDisable(){!this._axes||this.gameObject.remove(this._axes)}};v([y()],Mn.prototype,"length",2),v([y()],Mn.prototype,"depthTest",2),v([y()],Mn.prototype,"isGizmo",2);import*as km from"three";var rs=class extends M{from;to;hint;desiredDistance=1;onEnable(){}update(){if(!this.from||!this.to||!this.hint)return;let e=B(this.to).clone(),t=B(this.from).clone(),i=e.distanceTo(t),n=e.clone();n.sub(t);let r=t.clone();r.add(e),r.multiplyScalar(.5);let s=B(this.hint).clone();s.sub(r);let a=new km.Vector3;a.crossVectors(s,n),a.crossVectors(n,a),a.normalize();let c=i*.5,u=Math.max(this.desiredDistance,c),l=Math.sqrt(u*u-c*c),d=a.clone();d.multiplyScalar(l),d.add(r),ie(this.gameObject,d);let h=r.clone();h.sub(a),this.gameObject.lookAt(h)}};import{Mesh as U_,Vector3 as ur}from"three";var Pt=class extends M{get isCollider(){return!0}attachedRigidbody=null;isTrigger=!1;sharedMaterial;awake(){super.awake(),this.attachedRigidbody||(this.attachedRigidbody=this.gameObject.getComponentInParent(J))}start(){this.attachedRigidbody||(this.attachedRigidbody=this.gameObject.getComponentInParent(J))}onEnable(){this.attachedRigidbody||(this.attachedRigidbody=this.gameObject.getComponentInParent(J))}onDisable(){this.context.physics.removeBody(this)}};v([y(J)],Pt.prototype,"attachedRigidbody",2),v([y()],Pt.prototype,"isTrigger",2),v([y()],Pt.prototype,"sharedMaterial",2);var dr=class extends Pt{radius=.5;center=new ur(0,0,0);onEnable(){super.onEnable(),this.context.physics.addSphereCollider(this,this.center,this.radius)}};v([y()],dr.prototype,"radius",2),v([y(ur)],dr.prototype,"center",2);var hr=class extends Pt{size=new ur(1,1,1);center=new ur(0,0,0);onEnable(){super.onEnable(),this.context.physics.addBoxCollider(this,this.center,this.size)}};v([y(ur)],hr.prototype,"size",2),v([y(ur)],hr.prototype,"center",2);var Jr=class extends Pt{sharedMesh;convex=!1;onEnable(){super.onEnable(),this.sharedMesh?.isMesh||this.gameObject instanceof U_&&(this.sharedMesh=this.gameObject),this.sharedMesh?.isMesh&&this.context.physics.addMeshCollider(this,this.sharedMesh,this.convex,Ae(this.gameObject))}};v([y()],Jr.prototype,"convex",2);var Qt=class extends Pt{center=new ur(0,0,0);radius=.5;height=2;onEnable(){super.onEnable(),this.context.physics.addCapsuleCollider(this,this.center,this.height,this.radius)}};v([y(ur)],Qt.prototype,"center",2),v([y()],Qt.prototype,"radius",2),v([y()],Qt.prototype,"height",2);import*as Zr from"three";var G_=P("gizmos"),V_=P("debugboxhelper"),qt=class extends M{box=null;_lastMatrixUpdateFrame=-1;isInBox(e,t){if(!e)return;if(this.box||(this.box=new Zr.Box3),e.type==="Mesh")qt.testBox.setFromObject(e);else if(e.type==="Group"){if(qt.testBox.makeEmpty(),e.children.length>0)for(let n=0;n<e.children.length;n++)e.children[n].type==="Mesh"&&qt.testBox.expandByObject(e)}else{let n=B(e,qt._position),r=Ae(e,qt._size);t!==void 0&&r.multiplyScalar(t),qt.testBox.setFromCenterAndSize(n,r)}this.updateBox();let i=this.box?.intersectsBox(qt.testBox);return i&&V_&&jt.DrawBox3(qt.testBox,16711680,5),i}intersects(e){return e?this.updateBox(!1).intersectsBox(e):!1}updateBox(e=!1){if(this.box||(this.box=new Zr.Box3),e||this.context.time.frameCount!=this._lastMatrixUpdateFrame){let t=this._lastMatrixUpdateFrame<0;this._lastMatrixUpdateFrame=this.context.time.frameCount;let i=t,n=B(this.gameObject,qt._position,i),r=Ae(this.gameObject,qt._size);this.box.setFromCenterAndSize(n,r)}return this.box}_helper=null;_color=null;awake(){this._helper=null,this._color=null,this.box=null}showHelper(e=null,t=!1){if(!(!G_&&!t)){if(this._helper){e&&this._color?.set(e),this.gameObject.add(this._helper);return}this._helper=dl(e),this.gameObject.add(this._helper)}}},ze=qt;I(ze,"testBox",new Zr.Box3),I(ze,"_position",new Zr.Vector3),I(ze,"_size",new Zr.Vector3(.01,.01,.01));import{Color as Q_,Texture as Hm}from"three";import{LinearEncoding as N_,sRGBEncoding as X_}from"three";import*as Wd from"three-mesh-ui";import{Matrix4 as z_,Object3D as W_,Vector2 as Lm,Vector3 as zd}from"three";import{FrontSide as Mm,DoubleSide as Im}from"three";function Vd(o){let e=o[mt];return e||(o.parent?Vd(o.parent):null)}function os(o,e){if(!o)return;let t=o.material;t?.isMaterial===!0&&(t.depthTest=!e.renderOnTop,t.side=e.doubleSided??!0?Im:Mm,t.depthWrite=e.depthWrite??!1,t.shadowSide=e.doubleSided?Im:Mm,o.castShadow=e.castShadows?e.castShadows:!1,o.receiveShadow=e.receiveShadows?e.receiveShadows:!1);for(let i of o.children)os(i,e)}function cc(o,e,t){o[e]===void 0&&console.warn("Field",e,"is undefined on",o);let i=Proxy.revocable(o[e],{set(s,a,c,u){let l=s[a],d=Reflect.set(s,a,c,u);return t(c,l),d}}),n=i.revoke,r=o[e];return i.revoke=()=>{o[e]=r,n()},o[e]=i.proxy,i}var Am=Symbol("Scheduled action");function Dm(o,e,t=3){let i=o[Am];i||(i=o[Am]={});let n=e.name;i[t]||(i[t]={});let r=i[t];if(r[n])return;function*a(){e?.call(o),r[n]=null}let c=o.startCoroutine(a(),t);r[n]=c}var jm=P("debugui"),ss=class{width;height},$r=class{x;y;width;height},bt=class extends Ve{offset=.01;get translation(){return this.gameObject.position}get rotation(){return this.gameObject.quaternion}get scale(){return this.gameObject.scale}_anchoredPosition;get anchoredPosition(){return this._anchoredPosition||(this._anchoredPosition=new zd),this._anchoredPosition}rect;sizeDelta;anchoredPosition3D;pivot;lastMatrix;rectBlock;_transformNeedsUpdate=!1;awake(){super.awake(),this.lastMatrix=new z_,this.rectBlock=new W_,this.rectBlock.position.z=.1,this.rectBlock.name=this.name,this._anchoredPosition||(this._anchoredPosition=new zd),cc(this,"_anchoredPosition",()=>{this._transformNeedsUpdate=!0})}onEnable(){super.onEnable(),this.addShadowComponent(this.rectBlock),this._transformNeedsUpdate=!0}onDisable(){super.onDisable(),this.removeShadowComponent()}applyTransform(){let e=this.shadowComponent;!e||(this._transformNeedsUpdate=!1,this.isRoot()?e.rotation.y=Math.PI:(e.position.copy(this.gameObject.position),e.position.x*=-1,e.position.z*=-1,e.position.z-=this.offset,e.quaternion.copy(this.gameObject.quaternion),e.rotation.x*=-1,e.rotation.z*=-1,e.scale.copy(this.gameObject.scale)),this.applyAnchoring(e.position),this.lastMatrix.copy(this.gameObject.matrix))}markDirty(){this._transformNeedsUpdate=!0}onBeforeRender(){(this._transformNeedsUpdate||this.lastMatrix.equals(this.gameObject.matrix)===!1)&&(jm&&console.log("updating",this.name),this.applyTransform()),Ye.ensureUpdateMeshUI(Wd,this.context)}applyAnchoring(e){if(this.pivot&&this.sizeDelta){let t=this.pivot.x*2-1,i=this.pivot.y*2-1;i-=this.anchoredPosition.y*.05;let n=this.sizeDelta.x*t,r=this.sizeDelta.y*i;e.x-=n*.5,e.y-=r*.5}}getBasicOptions(){let e={width:this.rect.width,height:this.rect.height,offset:this.offset,backgroundOpacity:0,borderWidth:0,borderRadius:0,borderOpacity:0};return this.ensureValidSize(e),e}ensureValidSize(e,t=1e-4){return e.width<=0&&(e.width=t),e.height<=0&&(e.height=1e-4),e}_createdBlocks=[];createNewBlock(e){e={...this.getBasicOptions(),...e},jm&&console.log(this.name,e);let t=new Wd.Block(e);return this._createdBlocks.push(t),t}};v([y($r)],bt.prototype,"rect",2),v([y(Lm)],bt.prototype,"sizeDelta",2),v([y(zd)],bt.prototype,"anchoredPosition3D",2),v([y(Lm)],bt.prototype,"pivot",2);var va=class extends Ve{get isGraphic(){return!0}get color(){return this._color||(this._color=new q(1,1,1,1)),this._color}set color(e){(!this._color||this._color.r!==e.r||this._color.g!==e.g||this._color.b!==e.b||this._color.alpha!==e.alpha)&&(this._color||(this._color=new q(1,1,1,1)),this._color.copy(e))}onColorChanged(){let e=this.color;this.setOptions({backgroundColor:e,backgroundOpacity:e.alpha,borderOpacity:e.alpha})}get m_Color(){return this._color}raycastTarget=!0;uiObject=null;_color=null;_rect=null;get rectTransform(){return this._rect||(this._rect=R.getComponent(this.gameObject,bt)),this._rect}setState(e){this.makePanel(),this.uiObject&&this.uiObject.setState(e)}setupState(e){this.makePanel(),this.uiObject&&this.uiObject.setupState(e)}setOptions(e){this.makePanel(),this.uiObject&&(this.uiObject.set(e),(e.backgroundColor!==void 0||e.backgroundOpacity!==void 0)&&this.uiObject.updateBackgroundMaterial?.call(this.uiObject))}awake(){super.awake(),this.makePanel(),cc(this,"_color",()=>Dm(this,this.onColorChanged))}onEnable(){super.onEnable(),this.uiObject&&(this.rectTransform.shadowComponent?.add(this.uiObject),this.addShadowComponent(this.uiObject,this.rectTransform))}onDisable(){super.onDisable(),this.uiObject&&this.removeShadowComponent()}_currentlyCreatingPanel=!1;makePanel(){if(this.uiObject||this._currentlyCreatingPanel)return;this._currentlyCreatingPanel=!0;let e={backgroundColor:this.color,backgroundOpacity:this.color.alpha,offset:1};this.onBeforeCreate(e),this.onCreate(e),this.controlsChildLayout=!1,this._currentlyCreatingPanel=!1,this.onAfterCreated()}onBeforeCreate(e){}onCreate(e){this.uiObject=this.rectTransform.createNewBlock(e),this.uiObject.name=this.name}onAfterCreated(){}async setTexture(e){if(!!e&&(this.setOptions({backgroundOpacity:0}),e)){if(e.encoding===X_)if(va.textureCache.has(e))e=va.textureCache.get(e);else{let t=e.clone();t.encoding=N_,va.textureCache.set(e,t),e=t}this.setOptions({backgroundTexture:e,borderRadius:0,backgroundOpacity:this.color.alpha,backgroundSize:"stretch"})}}onAfterAddedToScene(){super.onAfterAddedToScene(),this.shadowComponent&&(this.shadowComponent.offset=this.shadowComponent.position.z)}},vt=va;I(vt,"textureCache",new Map),v([y(q)],vt.prototype,"color",1),v([y()],vt.prototype,"raycastTarget",2);var In=class extends vt{onAfterCreated(){this.uiObject&&(this.uiObject.scale.y*=-1)}};var uc=class{texture;rect};v([y(Hm)],uc.prototype,"texture",2);var An=class extends In{sprite;isBuiltinSprite(){switch(this.sprite?.texture?.name){case"InputFieldBackground":case"UISprite":case"Background":return!0}return this.sprite?.texture?.image?.width===32&&this.sprite?.texture?.image?.height===32}onBeforeCreate(e){this.isBuiltinSprite()&&(e.borderRadius=5,e.borderColor=new Q_(.4,.4,.4),e.borderOpacity=this.color.alpha,e.borderWidth=.3)}onAfterCreated(){super.onAfterCreated(),!this.isBuiltinSprite()&&this.setTexture(this.sprite?.texture)}};v([y(uc)],An.prototype,"sprite",2);var eo=class extends In{mainTexture;onAfterCreated(){super.onAfterCreated(),this.setTexture(this.mainTexture)}};v([y(Hm)],eo.prototype,"mainTexture",2);var as=P("debugbutton");var Dn=class{colorMultiplier;disabledColor;fadeDuration;highlightedColor;normalColor;pressedColor;selectedColor};v([y()],Dn.prototype,"colorMultiplier",2),v([y(q)],Dn.prototype,"disabledColor",2),v([y()],Dn.prototype,"fadeDuration",2),v([y(q)],Dn.prototype,"highlightedColor",2),v([y(q)],Dn.prototype,"normalColor",2),v([y(q)],Dn.prototype,"pressedColor",2),v([y(q)],Dn.prototype,"selectedColor",2);var Yt=class extends M{onClick;_isHovered=!1;onPointerEnter(e){as&&console.log("Button Enter",this.animationTriggers?.highlightedTrigger,this.animator),this._isHovered=!0,this.transition==3&&this.animationTriggers&&this.animator?this.animator.SetTrigger(this.animationTriggers.highlightedTrigger):this.transition===1&&this.colors&&this._image?.setState("hovered"),this.context.input.setCursorPointer()}onPointerExit(){as&&console.log("Button Exit",this.animationTriggers?.highlightedTrigger,this.animator),this._isHovered=!1,this.transition==3&&this.animationTriggers&&this.animator?this.animator.SetTrigger(this.animationTriggers.normalTrigger):this.transition===1&&this.colors&&this._image?.setState("normal"),this.context.input.setCursorNormal()}onPointerDown(e){as&&console.log("Button Down",this.animationTriggers?.highlightedTrigger,this.animator),this.transition==3&&this.animationTriggers&&this.animator?this.animator.SetTrigger(this.animationTriggers.pressedTrigger):this.transition===1&&this.colors&&this._image?.setState("pressed")}onPointerUp(e){as&&console.log("Button Down",this.animationTriggers?.highlightedTrigger,this.animator),this.transition==3&&this.animationTriggers&&this.animator?this.animator.SetTrigger(this._isHovered?this.animationTriggers.highlightedTrigger:this.animationTriggers.normalTrigger):this.transition===1&&this.colors&&this._image?.setState(this._isHovered?"hovered":"normal")}onPointerClick(e){as&&console.trace("Button Click",this.onClick),this.onClick?.invoke()}colors;transition;animationTriggers;animator;set interactable(e){this._interactable=e,this._image&&(this._image.setInteractable(e),e?this._image.setState("normal"):this._image.setState("disabled"))}get interactable(){return this._interactable}_interactable=!0;set_interactable(e){this.interactable=e}awake(){super.awake(),as&&console.log(this),this.init()}start(){this._image?.setInteractable(this.interactable)}onEnable(){super.onEnable()}_requestedAnimatorTrigger;*setAnimatorTriggerAtEndOfFrame(e){this._requestedAnimatorTrigger=e,yield,yield,this._requestedAnimatorTrigger==e&&this.animator?.SetTrigger(e)}_isInit=!1;_image;init(){this._isInit||(this._isInit=!0,this._image=R.getComponent(this.gameObject,An),this._image&&(this.stateSetup(this._image),this.interactable?this._image.setState("normal"):this._image.setState("disabled")))}stateSetup(e){e.setInteractable(this.interactable);let t=this.getFinalColor(e.color,this.colors?.normalColor),i={state:"normal",attributes:{backgroundColor:t,backgroundOpacity:t.alpha}};e.setupState(i);let n=this.getFinalColor(e.color,this.colors?.highlightedColor),r={state:"hovered",attributes:{backgroundColor:n,backgroundOpacity:n.alpha}};e.setupState(r);let s=this.getFinalColor(e.color,this.colors?.pressedColor),a={state:"pressed",attributes:{backgroundColor:s,backgroundOpacity:s.alpha}};e.setupState(a);let c=this.getFinalColor(e.color,this.colors?.selectedColor),u={state:"selected",attributes:{backgroundColor:c,backgroundOpacity:c.alpha}};e.setupState(u);let l=this.getFinalColor(e.color,this.colors?.disabledColor),d={state:"disabled",attributes:{backgroundColor:l,backgroundOpacity:l.alpha}};e.setupState(d)}getFinalColor(e,t){return t?e.clone().multiply(t):e.clone()}};v([y(de)],Yt.prototype,"onClick",2),v([y()],Yt.prototype,"colors",2),v([y()],Yt.prototype,"transition",2),v([y()],Yt.prototype,"animationTriggers",2),v([y(Pe)],Yt.prototype,"animator",2),v([y()],Yt.prototype,"interactable",1);var Nd=class extends kn{set renderOnTop(e){e!==this._renderOnTop&&(this._renderOnTop=e,this.onRenderSettingsChanged())}get renderOnTop(){return this._renderOnTop}_renderOnTop=!1;set depthWrite(e){this._depthWrite!==e&&(this._depthWrite=e,this.onRenderSettingsChanged())}get depthWrite(){return this._depthWrite}_depthWrite=!1;set doubleSided(e){this._doubleSided!==e&&(this._doubleSided=e,this.onRenderSettingsChanged())}get doubleSided(){return this._doubleSided}_doubleSided=!0;set castShadows(e){this._castShadows!==e&&(this._castShadows=e,this.onRenderSettingsChanged())}get castShadows(){return this._castShadows}_castShadows=!0;set receiveShadows(e){this._receiveShadows!==e&&(this._receiveShadows=e,this.onRenderSettingsChanged())}get receiveShadows(){return this._receiveShadows}_receiveShadows=!0;get renderMode(){return this._renderMode}set renderMode(e){this._renderMode!==e&&(this._renderMode=e,this.onRenderSettingsChanged())}_renderMode=-1;_rootCanvas;set rootCanvas(e){this._rootCanvas instanceof Nd||(this._rootCanvas=e)}get rootCanvas(){return this._rootCanvas}_scaleFactor=1;get scaleFactor(){return this._scaleFactor}set scaleFactor(e){this._scaleFactor=e}awake(){this.shadowComponent=this.gameObject,super.awake()}onEnable(){super.onEnable(),this._updateRenderSettingsRoutine=void 0,this.onRenderSettingsChanged()}previousAspect=-1;onBeforeRender(){this.isScreenSpace&&this.context.mainCameraComponent&&this.context.mainCameraComponent.aspect!==this.previousAspect&&(this.previousAspect=this.context.mainCameraComponent.aspect,this.updateRenderMode())}_updateRenderSettingsRoutine;onRenderSettingsChanged(){this._updateRenderSettingsRoutine||(this._updateRenderSettingsRoutine=this.startCoroutine(this._updateRenderSettingsDelayed(),3))}*_updateRenderSettingsDelayed(){if(yield,this._updateRenderSettingsRoutine=void 0,this.shadowComponent){this.updateRenderMode(),os(this.shadowComponent,this);for(let e of R.getComponentsInChildren(this.gameObject,Ve))os(e.shadowComponent,this)}}_activeRenderMode=-1;get isScreenSpace(){return this._activeRenderMode===1||this._activeRenderMode===0}updateRenderMode(){if(this.renderMode!==this._activeRenderMode)switch(this.renderMode){case 0:case 1:let e=this.context.mainCameraComponent;if(!e)return;let t=this.gameObject;e.gameObject?.add(t);let n=e.farClipPlane;t.position.x=0,t.position.y=0,t.position.z=-n;let r=Math.tan(H.toRadians(e.fieldOfView)*n)*(e.aspect*1.333333),s=r*(this.context.domHeight/this.context.domWidth);t.scale.x=-r,t.scale.y=s;break;case 2:break}}},We=Nd;v([y()],We.prototype,"renderOnTop",1),v([y()],We.prototype,"depthWrite",1),v([y()],We.prototype,"doubleSided",1),v([y()],We.prototype,"castShadows",1),v([y()],We.prototype,"receiveShadows",1),v([y()],We.prototype,"renderMode",1),v([y(We)],We.prototype,"rootCanvas",1),v([y()],We.prototype,"scaleFactor",1);var Ln=class extends M{get alpha(){return this._alpha}set alpha(e){e!==this._alpha&&(this._alpha=e,this.markDirty())}get isCanvasGroup(){return!0}_alpha=1;interactable=!0;blocksRaycasts=!0;_isDirty=!1;markDirty(){this._isDirty||(this._isDirty=!0,this.startCoroutine(this.applyChangesDelayed(),3))}*applyChangesDelayed(){this._isDirty=!1,this.applyChangesNow()}_buffer=[];applyChangesNow(){for(let e of R.getComponentsInChildren(this.gameObject,vt,this._buffer)){let t=e.color;t.alpha=this._alpha,e.color=t}}};v([y()],Ln.prototype,"alpha",1),v([y()],Ln.prototype,"interactable",2),v([y()],Ln.prototype,"blocksRaycasts",2);import{Quaternion as tx,Ray as ix,Vector3 as to}from"three";import*as Fm from"three";import{Color as Y_,Object3D as K_,Texture as J_,WebGLRenderTarget as Z_}from"three";import{WebGLRenderTarget as q_}from"three";var ls=class extends q_{};var Qd=class extends Li{constructor(){super([Y_,q])}onDeserialize(e){if(e!=null)return e.a!==void 0?new q(e.r,e.g,e.b,e.a):e.alpha!==void 0?new q(e.r,e.g,e.b,e.alpha):new Fm.Color(e.r,e.g,e.b)}onSerialize(e){if(e!=null)return e.a!==void 0?{r:e.r,g:e.g,b:e.b,a:e.a}:{r:e.r,g:e.g,b:e.b}}},nL=new Qd,qd=class extends Li{constructor(){super(K_)}onSerialize(e,t){if(t.objectToNode!==void 0&&e.uuid){let i=t.objectToNode[e.uuid];return pe&&console.log(i,e.name,e.uuid),{node:i}}}onDeserialize(e,t){if(e){if(e.node!==void 0&&t.nodeToObject){let i=t.nodeToObject[e.node];return pe&&console.log("Deserialized object reference?",e,i,t?.nodeToObject),i||console.warn("Did not find node: "+e.node,t.nodeToObject,t.object),i}else if(e.guid){if(!t.context){console.error("Missing context");return}let i,n=t.gltf?.scene;return n&&(i=R.findByGuid(e.guid,n)),i||(i=R.findByGuid(e.guid,t.context.scene)),i?pe&&console.log("Deserialized object reference?",e,i,t?.nodeToObject):((Ga()||pe)&&console.warn("Could not resolve object reference",t.path,e,t.target,t.context.scene),e.could_not_resolve=!0),i}}}},$_=new qd,Yd=class extends Li{constructor(){super([Tt,M])}onSerialize(e,t){if(e?.guid)return{guid:e.guid}}onDeserialize(e,t){if(e?.guid){pe&&console.log(e.guid,t.root,t.object,t.target);let i=this.findObjectForGuid(e.guid,t.root);if(i||t.context&&(i=this.findObjectForGuid(e.guid,t.context?.scene),i))return i;(Ga()||pe)&&console.warn("Could not resolve component reference",t.path,e,t.target),e.could_not_resolve=!0;return}}findObjectForGuid(e,t){if(t.guid===e)return t;let i=R.foreachComponent(t,n=>{if(n.guid===e)return n},!1);if(i!==void 0)return i;for(let n=0;n<t.children.length;n++){let r=t.children[n],s=this.findObjectForGuid(e,r);if(s)return s}}},Xd=new Yd,Kd=class extends Li{constructor(){super([de])}onSerialize(e,t){console.log("TODO: SERIALIZE EVENT")}onDeserialize(e,t){if(typeof e=="function")return new de([new vi(e,!0)]);if(e&&e.type==="EventList"){pe&&console.log("DESERIALIZE EVENT",e);let i=new Array;if(e.calls&&Array.isArray(e.calls))for(let s of e.calls){pe&&console.log(s);let a=Xd.findObjectForGuid(s.target,t.root);!a&&t.context?.scene&&(a=Xd.findObjectForGuid(s.target,t.context?.scene));let c=s.method?.length>0;if(a&&c){let h=()=>console.warn(`Could not find method ${s.method} on object ${a.name}`,a,typeof a[s.method]);if(typeof a[s.method]!="function"){let g=!1;s.method.startsWith("set_")&&s.method.length>4&&(s.method=s.method.substring(4),a[s.method]!==void 0&&(g=!0)),!g&&(Ga()||pe)&&h()}}let u,l=s.argument;s.argument!==void 0?(typeof l=="object"&&(l=$_.onDeserialize(s.argument,t),l||(l=Xd.onDeserialize(s.argument,t))),u=new vi(c?(...h)=>d(...h):void 0,s.enabled)):u=new vi(c?(...h)=>d(...h):void 0,s.enabled);let d=(...h)=>{let g=a[s.method];typeof g=="function"?l!==void 0?g?.call(a,l):g?.call(a,...h):a[s.method]=l};if(u.method||(u.__debuginfo=t.object?.name),!a||!u.method){let h=t.object?"Current object: "+t.object.name+", "+t.object.guid:null;a?console.warn('EventList method not found: "'+s.method+'" on',a):console.warn("EventList is missing target - will be ignored",s.target,h,e)}else i.push(u)}let n=new de(i);pe&&console.log(n);let r=t.target;return r!==void 0&&t.path!==void 0&&n.setEventTarget(t.path,r),n}}},rL=new Kd,Jd=class extends Li{constructor(){super([ls,Z_])}onSerialize(e,t){}onDeserialize(e,t){if(e instanceof J_&&t.type===ls){let i=e,n=new ls(i.image.width,i.image.height);return n.texture=i,n}}};new Jd;var Yi=class extends M{center=new to(0,0,0);radius=.5;height=2;_rigidbody=null;get rigidbody(){return this._rigidbody?this._rigidbody:(this._rigidbody=this.gameObject.getComponent(J),this._rigidbody||(this._rigidbody=this.gameObject.addNewComponent(J)),this.rigidbody)}onEnable(){let e=this.rigidbody,t=this.gameObject.getComponent(Qt);t||(t=this.gameObject.addNewComponent(Qt)),t.center.copy(this.center),t.radius=this.radius,t.height=this.height,this.gameObject.rotation.x=0,this.gameObject.rotation.z=0,e.lockRotationX=!0,e.lockRotationY=!0,e.lockRotationZ=!0}move(e){this.gameObject.position.add(e)}_activeGroundCollisions=new Set;onCollisionEnter(e){for(let t of e.contacts)if(t.normal.y>.1){this._activeGroundCollisions.add(e);break}}onCollisionExit(e){this._activeGroundCollisions.delete(e)}get isGrounded(){return this._activeGroundCollisions.size>0}};v([y(to)],Yi.prototype,"center",2),v([y()],Yi.prototype,"radius",2),v([y()],Yi.prototype,"height",2);var Ti=class extends M{controller;movementSpeed=2;rotationSpeed=2;jumpForce=1;animator;lookForward=!0;_currentSpeed=new to(0,0,0);_currentAngularSpeed=new to(0,0,0);_temp=new to(0,0,0);_jumpCount=0;_currentRotation;awake(){this._currentRotation=new tx}update(){this.controller?.isGrounded&&(this._jumpCount=0,this.animator?.SetBool("doubleJump",!1));let e=this.context.input.isKeyPressed("w"),t=this.context.input.isKeyPressed("s"),i=this.context.input.isKeyPressed("a"),n=this.context.input.isKeyPressed("d"),r=this.context.input.isKeyDown(" "),s=e?1:0+t?-1:0;this._currentSpeed.z+=s*this.movementSpeed*this.context.time.deltaTime,this.animator?.SetBool("running",s!=0),this.animator?.SetBool("jumping",this.controller?.isGrounded===!0&&r),this._temp.copy(this._currentSpeed),this._temp.applyQuaternion(this.gameObject.quaternion),this.controller?this.controller.move(this._temp):this.gameObject.position.add(this._temp);let a=i?1:0+n?-1:0;if(this._currentAngularSpeed.y+=H.toRadians(a*this.rotationSpeed)*this.context.time.deltaTime,this.lookForward&&Math.abs(this._currentAngularSpeed.y)<.01){let c=this.context.mainCameraComponent.forward;c.y=0,c.normalize(),this._currentRotation.setFromUnitVectors(new to(0,0,1),c),this.gameObject.quaternion.slerp(this._currentRotation,this.context.time.deltaTime*10)}if(this.gameObject.rotateY(this._currentAngularSpeed.y),this._currentSpeed.multiplyScalar(1-this.context.time.deltaTime*10),this._currentAngularSpeed.y*=1-this.context.time.deltaTime*10,this.controller&&r&&this.jumpForce>0){let c=this.controller?.isGrounded;if(!this.controller?.isGrounded&&this._jumpCount===1&&(c=!0,this.animator?.SetBool("doubleJump",!0)),c){this._jumpCount+=1;let u=this.controller.rigidbody,l=this._jumpCount===2?2:1;u.applyImpulse(new to(0,1,0).multiplyScalar(this.jumpForce*l))}}if(this.controller){let c=this.controller?.rigidbody.getVelocity().y;if(c<-1){this._raycastOptions.ray||(this._raycastOptions.ray=new ix),this._raycastOptions.ray.origin.copy(B(this.gameObject)),this._raycastOptions.ray.direction.set(0,-1,0);let u=this.layer;this.gameObject.layers.disableAll(),this.gameObject.layers.set(2);let l=this.context.physics.raycast(this._raycastOptions);this.gameObject.layers.set(u),(l.length&&l[0].distance>2||c<-10)&&this.animator?.SetBool("falling",!0)}else this.animator?.SetBool("falling",!1)}}_raycastOptions=new be};v([y(Yi)],Ti.prototype,"controller",2),v([y()],Ti.prototype,"movementSpeed",2),v([y()],Ti.prototype,"rotationSpeed",2),v([y()],Ti.prototype,"jumpForce",2),v([y(Pe)],Ti.prototype,"animator",2);import{LinearToneMapping as Zd,ACESFilmicToneMapping as Bm,ReinhardToneMapping as nx}from"three";var dc=P("debugvolume"),Gm=(i=>(i[i.None=0]="None",i[i.Neutral=1]="Neutral",i[i.ACES=2]="ACES",i))(Gm||{}),cs=class{overrideState=!1;value=0},Ki=class{active=!1;parameters},fr=class extends Ki{mode;get isToneMapping(){return!0}},mr=class extends Ki{postExposure};function rx(o){return"mode"in o?fr:"postExposure"in o?mr:Ki}var Um=Symbol("volumeprofile"),pr=class{components;apply(e){this.onUpdate(e,!1)}unapply(e){this.onUpdate(e,!0)}onUpdate(e,t){if(!this.components)return;let i=e.renderer,r=i[Um]!==void 0;if(t){if(!r)return}else i[Um]=this;for(let s of this.components)if(s instanceof fr){let a=s;if(!s.active||t){e.renderer.toneMapping=Zd;continue}dc&&console.log("VOLUME:",Gm[a.mode?.value??0]);let c=a.mode;switch((c?.overrideState?c?.value:0)??0){case 0:e.renderer.toneMapping=Zd;break;case 1:e.renderer.toneMapping=nx;break;case 2:e.renderer.toneMapping=Bm;break}}else if(s instanceof mr){let a=s;dc&&console.log(a.postExposure);let c=1;a.postExposure&&(c=Math.pow(2,a.postExposure.value)),e.renderer.toneMapping,Bm;let u=a.postExposure?.overrideState&&!t;e.renderer.toneMappingExposure=u?c:1,e.renderer.toneMapping||(e.renderer.toneMapping=Zd)}}};v([y([o=>rx(o),Ki])],pr.prototype,"components",2);var io=class extends M{sharedProfile;awake(){dc&&(console.log(this),console.log("Press P to toggle post processing"),window.addEventListener("keydown",e=>{e.key==="p"&&(console.log("Toggle volume: "+this.name,!this.enabled),this.enabled=!this.enabled)}))}onEnable(){dc&&console.log("APPLY VOLUME",this),this.sharedProfile?.apply(this.context)}onDisable(){this.sharedProfile?.unapply(this.context)}};v([y(pr)],io.prototype,"sharedProfile",2);import{Matrix4 as Vm,Quaternion as ox,Vector3 as Je,Vector2 as zm,Euler as sx}from"three";import{createNoise4D as ax}from"simplex-noise";var lx=P("debugparticles");var Si=class{alphaKeys;colorKeys;get duration(){return 1}evaluate(e,t){let i,n=0,r=null,s=0;for(let a=0;a<this.alphaKeys.length;a++){let c=this.alphaKeys[a];(c.time<e||!i)&&(i=c,n=a)}for(let a=0;a<this.colorKeys.length;a++){let c=this.colorKeys[a];(c.time<e||!r)&&(r=c,s=a)}if(r)if(s+1<this.colorKeys.length){let c=this.colorKeys[s+1],u=H.remap(e,r.time,c.time,0,1);t.r=H.lerp(r.color.r,c.color.r,u),t.g=H.lerp(r.color.g,c.color.g,u),t.b=H.lerp(r.color.b,c.color.b,u)}else t.r=r.color.r,t.g=r.color.g,t.b=r.color.b;if(i)if(n+1<this.alphaKeys.length){let c=this.alphaKeys[n+1],u=H.remap(e,i.time,c.time,0,1);t.alpha=H.lerp(i.alpha,c.alpha,u)}else t.alpha=i.alpha;return t}};v([y()],Si.prototype,"alphaKeys",2),v([y()],Si.prototype,"colorKeys",2);var Wm=(w=>(w[w.Sphere=0]="Sphere",w[w.SphereShell=1]="SphereShell",w[w.Hemisphere=2]="Hemisphere",w[w.HemisphereShell=3]="HemisphereShell",w[w.Cone=4]="Cone",w[w.Box=5]="Box",w[w.Mesh=6]="Mesh",w[w.ConeShell=7]="ConeShell",w[w.ConeVolume=8]="ConeVolume",w[w.ConeVolumeShell=9]="ConeVolumeShell",w[w.Circle=10]="Circle",w[w.CircleEdge=11]="CircleEdge",w[w.SingleSidedEdge=12]="SingleSidedEdge",w[w.MeshRenderer=13]="MeshRenderer",w[w.SkinnedMeshRenderer=14]="SkinnedMeshRenderer",w[w.BoxShell=15]="BoxShell",w[w.BoxEdge=16]="BoxEdge",w[w.Donut=17]="Donut",w[w.Rectangle=18]="Rectangle",w[w.Sprite=19]="Sprite",w[w.SpriteRenderer=20]="SpriteRenderer",w))(Wm||{});var U=class{mode;constant;constantMin;constantMax;curve;curveMin;curveMax;curveMultiplier;evaluate(e,t){let i=t===void 0?Math.random():t;switch(this.mode){case 0:return this.constant;case 1:return e=H.clamp01(e),this.curve.evaluate(e)*this.curveMultiplier;case 2:let n=e*this.curveMin.duration,r=e*this.curveMax.duration;return H.lerp(this.curveMin.evaluate(n),this.curveMax.evaluate(r),i%1)*this.curveMultiplier;case 3:return H.lerp(this.constantMin,this.constantMax,i%1);default:this.curveMax.evaluate(e)*this.curveMultiplier;break}return 0}};v([y()],U.prototype,"mode",2),v([y()],U.prototype,"constant",2),v([y()],U.prototype,"constantMin",2),v([y()],U.prototype,"constantMax",2),v([y(gi)],U.prototype,"curve",2),v([y(gi)],U.prototype,"curveMin",2),v([y(gi)],U.prototype,"curveMax",2),v([y()],U.prototype,"curveMultiplier",2);var Kt=class{mode;color;colorMin;colorMax;gradient;gradientMin;gradientMax;evaluate(e,t){let i=t===void 0?Math.random():t;switch(this.mode){case 0:return this.color;case 1:return this.gradient.evaluate(e,Kt._temp),Kt._temp;case 2:return Kt._temp.lerpColors(this.colorMin,this.colorMax,i);case 3:return this.gradientMin.evaluate(e,Kt._temp),this.gradientMax.evaluate(e,Kt._temp2),Kt._temp.lerp(Kt._temp2,i)}return Kt._temp.set(16711935),Kt._temp.alpha=1,Kt._temp}},Me=Kt;I(Me,"_temp",new q(0,0,0,1)),I(Me,"_temp2",new q(0,0,0,1)),v([y(q)],Me.prototype,"color",2),v([y(q)],Me.prototype,"colorMin",2),v([y(q)],Me.prototype,"colorMax",2),v([y(Si)],Me.prototype,"gradient",2),v([y(Si)],Me.prototype,"gradientMin",2),v([y(Si)],Me.prototype,"gradientMax",2);var _e=class{cullingMode;duration;emitterVelocityMode;flipRotation;gravityModifier;gravityModifierMultiplier;loop;maxParticles;playOnAwake;prewarm;ringBufferLoopRange;ringBufferMode;scalingMode;simulationSpace;simulationSpeed;startColor;startDelay;startDelayMultiplier;startLifetime;startLifetimeMultiplier;startRotation;startRotationMultiplier;startRotation3D;startRotationX;startRotationXMultiplier;startRotationY;startRotationYMultiplier;startRotationZ;startRotationZMultiplier;startSize;startSize3D;startSizeMultiplier;startSizeX;startSizeXMultiplier;startSizeY;startSizeYMultiplier;startSizeZ;startSizeZMultiplier;startSpeed;startSpeedMultiplier;stopAction;useUnscaledTime};v([y(U)],_e.prototype,"gravityModifier",2),v([y(Me)],_e.prototype,"startColor",2),v([y(U)],_e.prototype,"startDelay",2),v([y(U)],_e.prototype,"startLifetime",2),v([y(U)],_e.prototype,"startRotation",2),v([y(U)],_e.prototype,"startRotationX",2),v([y(U)],_e.prototype,"startRotationY",2),v([y(U)],_e.prototype,"startRotationZ",2),v([y(U)],_e.prototype,"startSize",2),v([y(U)],_e.prototype,"startSizeX",2),v([y(U)],_e.prototype,"startSizeY",2),v([y(U)],_e.prototype,"startSizeZ",2),v([y(U)],_e.prototype,"startSpeed",2);var Hn=class{cycleCount;maxCount;minCount;probability;repeatInterval;time;count;_performed=0;reset(){this._performed=0}run(e){if(e<=this.time)return this.reset(),0;let t=0;if(this.cycleCount===0||this._performed<this.cycleCount){let i=this.time+this.repeatInterval*this._performed;if(e>=i&&(this._performed+=1,Math.random()<this.probability))switch(this.count.mode){case 0:t=this.count.constant;break;case 3:t=H.lerp(this.count.constantMin,this.count.constantMax,Math.random());break;case 1:t=this.count.curve.evaluate(Math.random());break;case 2:let n=Math.random();t=H.lerp(this.count.curveMin.evaluate(n),this.count.curveMax.evaluate(n),Math.random());break}}return t}},yt=class{enabled;get burstCount(){return this.bursts?.length??0}bursts;rateOverTime;rateOverTimeMultiplier;rateOverDistance;rateOverDistanceMultiplier;system;reset(){this.bursts?.forEach(e=>e.reset())}getBurst(){let e=0;if(this.burstCount>0)for(let t=0;t<this.burstCount;t++){let i=this.bursts[t];i.time>=this.system.time&&i.reset(),e+=Math.round(i.run(this.system.time))}return e}};v([y()],yt.prototype,"enabled",2),v([y()],yt.prototype,"bursts",2),v([y(U)],yt.prototype,"rateOverTime",2),v([y()],yt.prototype,"rateOverTimeMultiplier",2),v([y(U)],yt.prototype,"rateOverDistance",2),v([y()],yt.prototype,"rateOverDistanceMultiplier",2);var jn=class{enabled;color};v([y(Me)],jn.prototype,"color",2);var Jt=class{enabled;separateAxes;size;sizeMultiplier;x;xMultiplier;y;yMultiplier;z;zMultiplier;_time=0;_temp=new Je;evaluate(e,t,i){if(t||(t=this._temp),!this.enabled)return t.x=t.y=t.z=1,t;if(this.separateAxes)t.x=this.x.evaluate(e,i)*this.xMultiplier,t.y=this.y.evaluate(e,i)*this.yMultiplier,t.z=this.z.evaluate(e,i)*this.zMultiplier;else{let n=this.size.evaluate(e,i)*this.sizeMultiplier;t.x=n}return t}};v([y(U)],Jt.prototype,"size",2),v([y(U)],Jt.prototype,"x",2),v([y(U)],Jt.prototype,"y",2),v([y(U)],Jt.prototype,"z",2);var us=class{get type(){return Wm[this.shapeType]}initialize(e){this.getPosition(),e.position.copy(this._vector)}toJSON(){return this}clone(){return new us}shapeType=5;enabled=!0;alignToDirection=!1;angle=0;arc=360;arcSpread;arcSpeedMultiplier;arcMode;boxThickness;position;rotation;_rotation=new sx;scale;radius;radiusThickness;sphericalDirectionAmount;randomDirectionAmount;randomPositionAmount;system;_space;_worldSpaceMatrix=new Vm;_worldSpaceMatrixInverse=new Vm;update(e,t,i,n){this.system=e,this._space=i,i===1&&(this._worldSpaceMatrix.copy(n.matrixWorld),this._worldSpaceMatrix.elements[0]=1,this._worldSpaceMatrix.elements[5]=1,this._worldSpaceMatrix.elements[10]=1,this._worldSpaceMatrixInverse.copy(this._worldSpaceMatrix).invert())}updateRotation(){let e=this.rotation.x!==0||this.rotation.y!==0||this.rotation.z!==0;return e&&(this._rotation.x=H.toRadians(this.rotation.x),this._rotation.y=-H.toRadians(this.rotation.y),this._rotation.z=-H.toRadians(this.rotation.z)),e}_vector=new Je(0,0,0);_temp=new Je(0,0,0);get vector(){return this._vector}getPosition(){this._vector.set(0,0,0);let e=this._temp.copy(this.position),t=this._space===1;t&&e.applyQuaternion(this.system.worldQuaternion);let i=this.radius;if(t&&(i*=this.system.worldScale.x),this.enabled){switch(this.shapeType){case 5:this._vector.x=Math.random()*this.scale.x-this.scale.x/2,this._vector.y=Math.random()*this.scale.y-this.scale.y/2,this._vector.z=Math.random()*this.scale.z-this.scale.z/2,this._vector.add(e);break;case 4:this.randomConePoint(this.position,this.angle,i,this.radiusThickness,this.arc,this.arcMode,this._vector);break;case 0:this.randomSpherePoint(this.position,i,this.radiusThickness,this.arc,this._vector,this.scale);break;case 10:this._temp.copy(this.scale),this._temp.z=0,this.randomSpherePoint(this.position,i,this.radiusThickness,this.arc,this._vector,this._temp);break;default:this._vector.set(0,0,0);break}this.randomizePosition(this._vector,this.randomPositionAmount)}this.updateRotation()&&this._vector.applyEuler(this._rotation),t&&(this._vector.applyQuaternion(this.system.worldQuaternion),this._vector.add(this.system.worldPos))}_dir=new Je;getDirection(e){if(!this.enabled)return this._dir.set(0,0,1),this._dir;switch(this.shapeType){case 5:this._dir.set(0,0,1);break;case 4:this._dir.set(0,0,1);break;case 10:case 0:let t=e.x,i=e.y,n=e.z;this._dir.set(t,i,n),this._dir.sub(this.position);break;default:this._dir.set(0,0,1);break}return this._space===1&&this._dir.applyMatrix4(this._worldSpaceMatrixInverse),this.updateRotation()&&this._dir.applyEuler(this._rotation),this._dir.normalize(),this.spherizeDirection(this._dir,this.sphericalDirectionAmount),this.randomizeDirection(this._dir,this.randomDirectionAmount),lx&&(jt.DrawSphere(e,.01,8925952,.5,!0),jt.DrawDirection(e,this._dir,8925952,.5,!0)),this._dir}randomizePosition(e,t){if(t<=0)return;let i=us._tempVec;i.set(Math.random()*2-1,Math.random()*2-1,Math.random()*2-1),i.x*=t*this.scale.x,i.y*=t*this.scale.y,i.z*=t*this.scale.z,e.add(i)}randomizeDirection(e,t){if(t===0)return;let i=us._randomQuat,n=us._tempVec;n.set(Math.random()-.5,Math.random()-.5,Math.random()-.5).normalize(),i.setFromAxisAngle(n,t*Math.random()*Math.PI),e.applyQuaternion(i)}spherizeDirection(e,t){if(t===0)return;let i=Math.random()*Math.PI*2,n=Math.acos(1-Math.random()*2),r=Math.sin(n)*Math.cos(i),s=Math.sin(n)*Math.sin(i),a=Math.cos(n),c=new Je(r,s,a);e.lerp(c,t)}randomSpherePoint(e,t,i,n,r,s){let a=Math.random(),c=Math.random(),u=2*Math.PI*a*(n/360),l=Math.acos(2*c-1),d=H.lerp(1,1-Math.pow(1-Math.random(),Math.PI),i)*t,h=e.x+s.x*(-d*Math.sin(l)*Math.cos(u)),g=e.y+s.y*(d*Math.sin(l)*Math.sin(u)),E=e.z+s.z*(d*Math.cos(l));r.x=h,r.y=g,r.z=E}_loopTime=0;_loopDirection=1;randomConePoint(e,t,i,n,r,s,a){let c=0,u=0;switch(s){case 0:c=Math.random(),u=Math.random();break;case 2:this._loopTime>1&&(this._loopDirection=-1),this._loopTime<0&&(this._loopDirection=1);case 1:c=.5,u=Math.random(),this._loopTime+=this.system.deltaTime*this._loopDirection;break}let l=2*Math.PI*c*(r/360);switch(s){case 2:case 1:l+=Math.PI+.5,l+=this._loopTime*Math.PI*2,l%=H.toRadians(r);break}let d=Math.acos(2*u-1),h=H.lerp(1,1-Math.pow(1-Math.random(),Math.PI),n)*i,g=e.x+-h*Math.sin(d)*Math.cos(l),E=e.y+h*Math.sin(d)*Math.sin(l),_=e.z;a.x=g*this.scale.x,a.y=E*this.scale.y,a.z=_*this.scale.z}},ne=us;I(ne,"_randomQuat",new ox),I(ne,"_tempVec",new Je),v([y()],ne.prototype,"shapeType",2),v([y()],ne.prototype,"enabled",2),v([y()],ne.prototype,"alignToDirection",2),v([y()],ne.prototype,"angle",2),v([y()],ne.prototype,"arc",2),v([y()],ne.prototype,"arcSpread",2),v([y()],ne.prototype,"arcSpeedMultiplier",2),v([y()],ne.prototype,"arcMode",2),v([y(Je)],ne.prototype,"boxThickness",2),v([y(Je)],ne.prototype,"position",2),v([y(Je)],ne.prototype,"rotation",2),v([y(Je)],ne.prototype,"scale",2),v([y()],ne.prototype,"radius",2),v([y()],ne.prototype,"radiusThickness",2),v([y()],ne.prototype,"sphericalDirectionAmount",2),v([y()],ne.prototype,"randomDirectionAmount",2),v([y()],ne.prototype,"randomPositionAmount",2);var K=class{damping;enabled;frequency;octaveCount;octaveMultiplier;octaveScale;positionAmount;quality;remap;remapEnabled;remapMultiplier;remapX;remapXMultiplier;remapY;remapYMultiplier;remapZ;remapZMultiplier;scrollSpeedMultiplier;separateAxes;strengthMultiplier;strengthX;strengthXMultiplier;strengthY;strengthYMultiplier;strengthZ;strengthZMultiplier;_noise;_time=0;update(e){this._time+=e.time.deltaTime*this.scrollSpeedMultiplier}_temp=new Je;apply(e,t,i,n,r,s){if(!this.enabled)return;this._noise||(this._noise=ax(()=>0));let a=this._temp.set(t.x,t.y,t.z).multiplyScalar(this.frequency),c=this._noise(a.x,a.y,a.z,this._time),u=this._noise(a.x,a.y,a.z,this._time+1e3*this.frequency),l=this._noise(a.x,a.y,a.z,this._time+2e3*this.frequency);this._temp.set(c,u,l).normalize();let d=r/s,h=this.positionAmount.evaluate(d);this.separateAxes?(this._temp.x*=h*this.strengthXMultiplier,this._temp.y*=h*this.strengthYMultiplier,this._temp.z*=h*this.strengthZMultiplier):(this.strengthX&&(h*=this.strengthX.evaluate(d)*1.5),this._temp.multiplyScalar(h)),i.x+=this._temp.x,i.y+=this._temp.y,i.z+=this._temp.z}};v([y()],K.prototype,"damping",2),v([y()],K.prototype,"enabled",2),v([y()],K.prototype,"frequency",2),v([y()],K.prototype,"octaveCount",2),v([y()],K.prototype,"octaveMultiplier",2),v([y()],K.prototype,"octaveScale",2),v([y(U)],K.prototype,"positionAmount",2),v([y()],K.prototype,"quality",2),v([y(U)],K.prototype,"remap",2),v([y()],K.prototype,"remapEnabled",2),v([y()],K.prototype,"remapMultiplier",2),v([y(U)],K.prototype,"remapX",2),v([y()],K.prototype,"remapXMultiplier",2),v([y(U)],K.prototype,"remapY",2),v([y()],K.prototype,"remapYMultiplier",2),v([y(U)],K.prototype,"remapZ",2),v([y()],K.prototype,"remapZMultiplier",2),v([y()],K.prototype,"scrollSpeedMultiplier",2),v([y()],K.prototype,"separateAxes",2),v([y()],K.prototype,"strengthMultiplier",2),v([y(U)],K.prototype,"strengthX",2),v([y()],K.prototype,"strengthXMultiplier",2),v([y(U)],K.prototype,"strengthY",2),v([y()],K.prototype,"strengthYMultiplier",2),v([y(U)],K.prototype,"strengthZ",2),v([y()],K.prototype,"strengthZMultiplier",2);var te=class{enabled;attachRibbonToTransform=!1;colorOverLifetime;colorOverTrail;dieWithParticles=!0;inheritParticleColor=!0;lifetime;lifetimeMultiplier;minVertexDistance=.2;mode=0;ratio=1;ribbonCount=1;shadowBias=0;sizeAffectsLifetime=!1;sizeAffectsWidth=!1;splitSubEmitterRibbons=!1;textureMode=0;widthOverTrail;widthOverTrailMultiplier;worldSpace=!1;getWidth(e,t,i){let n=this.widthOverTrail.evaluate(i);return i===0&&(n=e),e*=n,e}getColor(e,t,i){let n=this.colorOverTrail.evaluate(i),r=this.colorOverLifetime.evaluate(t);e.x*=n.r*r.r,e.y*=n.g*r.g,e.z*=n.b*r.b,e.w*=n.alpha*r.alpha}};v([y()],te.prototype,"enabled",2),v([y()],te.prototype,"attachRibbonToTransform",2),v([y(Me)],te.prototype,"colorOverLifetime",2),v([y(Me)],te.prototype,"colorOverTrail",2),v([y()],te.prototype,"dieWithParticles",2),v([y()],te.prototype,"inheritParticleColor",2),v([y(U)],te.prototype,"lifetime",2),v([y()],te.prototype,"lifetimeMultiplier",2),v([y()],te.prototype,"minVertexDistance",2),v([y()],te.prototype,"mode",2),v([y()],te.prototype,"ratio",2),v([y()],te.prototype,"ribbonCount",2),v([y()],te.prototype,"shadowBias",2),v([y()],te.prototype,"sizeAffectsLifetime",2),v([y()],te.prototype,"sizeAffectsWidth",2),v([y()],te.prototype,"splitSubEmitterRibbons",2),v([y()],te.prototype,"textureMode",2),v([y(U)],te.prototype,"widthOverTrail",2),v([y()],te.prototype,"widthOverTrailMultiplier",2),v([y()],te.prototype,"worldSpace",2);var He=class{enabled;space=0;speedModifier;speedModifierMultiplier;x;xMultiplier;y;yMultiplier;z;zMultiplier;_system;update(e){this._system=e}_temp=new Je;apply(e,t,i,n,r,s){if(!this.enabled)return;let a=r/s,c=this.speedModifier.evaluate(a)*this.speedModifierMultiplier,u=this.x.evaluate(a),l=this.y.evaluate(a),d=this.z.evaluate(a);this._temp.set(-u,l,d),this._system&&(this.space===1&&this._temp.applyQuaternion(this._system.worldQuaternionInverted),this._system.main.simulationSpace===1&&this._temp.applyQuaternion(this._system.worldQuaternion)),i.x+=this._temp.x,i.y+=this._temp.y,i.z+=this._temp.z,i.x*=c,i.y*=c,i.z*=c}};v([y()],He.prototype,"enabled",2),v([y()],He.prototype,"space",2),v([y(U)],He.prototype,"speedModifier",2),v([y()],He.prototype,"speedModifierMultiplier",2),v([y(U)],He.prototype,"x",2),v([y()],He.prototype,"xMultiplier",2),v([y(U)],He.prototype,"y",2),v([y()],He.prototype,"yMultiplier",2),v([y(U)],He.prototype,"z",2),v([y()],He.prototype,"zMultiplier",2);var xe=class{animation;enabled;cycleCount;frameOverTime;frameOverTimeMultiplier;numTilesX;numTilesY;startFrame;startFrameMultiplier;rowMode;rowIndex;spriteCount;timeMode;sampleOnceAtStart(){if(this.timeMode===0)switch(this.frameOverTime.mode){case 0:case 3:return!0}return!1}getStartIndex(){return this.sampleOnceAtStart()?this.frameOverTime.evaluate(Math.random()):0}evaluate(e){if(!this.sampleOnceAtStart())return this.getIndex(e)}getIndex(e){let t=this.numTilesX*this.numTilesY,i=this.frameOverTime.evaluate(e%1);return i*=this.frameOverTimeMultiplier,i*=t,i=i%t,i=Math.floor(i),i}};v([y()],xe.prototype,"animation",2),v([y()],xe.prototype,"enabled",2),v([y()],xe.prototype,"cycleCount",2),v([y(U)],xe.prototype,"frameOverTime",2),v([y()],xe.prototype,"frameOverTimeMultiplier",2),v([y()],xe.prototype,"numTilesX",2),v([y()],xe.prototype,"numTilesY",2),v([y(U)],xe.prototype,"startFrame",2),v([y()],xe.prototype,"startFrameMultiplier",2),v([y()],xe.prototype,"rowMode",2),v([y()],xe.prototype,"rowIndex",2),v([y()],xe.prototype,"spriteCount",2),v([y()],xe.prototype,"timeMode",2);var Ke=class{enabled;separateAxes;x;xMultiplier;y;yMultiplier;z;zMultiplier;evaluate(e){return this.enabled?this.separateAxes?0:this.z.evaluate(e)*-1:0}};v([y()],Ke.prototype,"enabled",2),v([y()],Ke.prototype,"separateAxes",2),v([y(U)],Ke.prototype,"x",2),v([y()],Ke.prototype,"xMultiplier",2),v([y(U)],Ke.prototype,"y",2),v([y()],Ke.prototype,"yMultiplier",2),v([y(U)],Ke.prototype,"z",2),v([y()],Ke.prototype,"zMultiplier",2);var Ne=class{enabled;range;separateAxes;x;xMultiplier;y;yMultiplier;z;zMultiplier;evaluate(e,t){if(!this.enabled)return 0;if(!this.separateAxes){let i=H.lerp(this.range.x,this.range.y,t);return this.z.evaluate(i)*-1}return 0}};v([y()],Ne.prototype,"enabled",2),v([y()],Ne.prototype,"range",2),v([y()],Ne.prototype,"separateAxes",2),v([y(U)],Ne.prototype,"x",2),v([y()],Ne.prototype,"xMultiplier",2),v([y(U)],Ne.prototype,"y",2),v([y()],Ne.prototype,"yMultiplier",2),v([y(U)],Ne.prototype,"z",2),v([y()],Ne.prototype,"zMultiplier",2);var ue=class{enabled;dampen;drag;dragMultiplier;limit;limitMultiplier;separateAxes;limitX;limitXMultiplier;limitY;limitYMultiplier;limitZ;limitZMultiplier;multiplyDragByParticleSize=!1;multiplyDragByParticleVelocity=!1;space;_temp=new Je;_temp2=new Je;apply(e,t,i,n,r,s,a){if(!!this.enabled){let c=this.limit.evaluate(r)*this.limitMultiplier;if(t.length()>c){this._temp.copy(t).normalize().multiplyScalar(c);let l=this.dampen*.5;t.x=H.lerp(t.x,this._temp.x,l),t.y=H.lerp(t.y,this._temp.y,l),t.z=H.lerp(t.z,this._temp.z,l),i.x=H.lerp(i.x,this._temp.x,l),i.y=H.lerp(i.y,this._temp.y,l),i.z=H.lerp(i.z,this._temp.z,l)}}}};v([y()],ue.prototype,"enabled",2),v([y()],ue.prototype,"dampen",2),v([y(U)],ue.prototype,"drag",2),v([y()],ue.prototype,"dragMultiplier",2),v([y(U)],ue.prototype,"limit",2),v([y()],ue.prototype,"limitMultiplier",2),v([y()],ue.prototype,"separateAxes",2),v([y(U)],ue.prototype,"limitX",2),v([y()],ue.prototype,"limitXMultiplier",2),v([y(U)],ue.prototype,"limitY",2),v([y()],ue.prototype,"limitYMultiplier",2),v([y(U)],ue.prototype,"limitZ",2),v([y()],ue.prototype,"limitZMultiplier",2),v([y()],ue.prototype,"multiplyDragByParticleSize",2),v([y()],ue.prototype,"multiplyDragByParticleVelocity",2),v([y()],ue.prototype,"space",2);var Zt=class{enabled;curve;curveMultiplier;mode;system;_lastWorldPosition;_velocity=new Je;_temp=new Je;update(e){!this.enabled||this.system.worldspace!==!1&&(this._lastWorldPosition?(this._velocity.copy(this.system.worldPos).sub(this._lastWorldPosition).multiplyScalar(1/this.system.deltaTime),this._lastWorldPosition.copy(this.system.worldPos)):(this._velocity.set(0,0,0),this._lastWorldPosition=this.system.worldPos.clone()))}applyInitial(e){if(!!this.enabled&&this.system.worldspace!==!1&&this.mode===0){let t=this.curve.evaluate(Math.random(),Math.random());this._temp.copy(this._velocity).multiplyScalar(t),e.add(this._temp)}}applyCurrent(e,t,i){if(!!this.enabled&&this.system.worldspace!==!1&&this.mode===1){let n=this.curve.evaluate(t,i);this._temp.copy(this._velocity).multiplyScalar(n),e.add(this._temp)}}};v([y()],Zt.prototype,"enabled",2),v([y(U)],Zt.prototype,"curve",2),v([y()],Zt.prototype,"curveMultiplier",2),v([y()],Zt.prototype,"mode",2);var ke=class{enabled;range;separateAxes;size;sizeMultiplier;x;xMultiplier;y;yMultiplier;z;zMultiplier;evaluate(e,t,i,n){let r=e.length(),s=H.remap(r,this.range.x,this.range.y,0,1),a=this.size.evaluate(s,i);return n*a}};v([y()],ke.prototype,"enabled",2),v([y(zm)],ke.prototype,"range",2),v([y()],ke.prototype,"separateAxes",2),v([y(U)],ke.prototype,"size",2),v([y()],ke.prototype,"sizeMultiplier",2),v([y(U)],ke.prototype,"x",2),v([y()],ke.prototype,"xMultiplier",2),v([y(U)],ke.prototype,"y",2),v([y()],ke.prototype,"yMultiplier",2),v([y(U)],ke.prototype,"z",2),v([y()],ke.prototype,"zMultiplier",2);var Ri=class{enabled;range;color;evaluate(e,t,i){let n=e.length(),r=H.remap(n,this.range.x,this.range.y,0,1),s=this.color.evaluate(r,t);i.x*=s.r,i.y*=s.g,i.z*=s.b,i.w*=s.alpha}};v([y()],Ri.prototype,"enabled",2),v([y(zm)],Ri.prototype,"range",2),v([y(Me)],Ri.prototype,"color",2);var no=class extends ze{},ds=class extends M{deleteBoxes=[];awake(){this.deleteBoxes=R.findObjectsOfType(no,this.context)}update(){for(let e of this.deleteBoxes){let t=this.gameObject;e.isInBox(t)===!0&&(R.getComponentInParent(this.gameObject,Wt)||So(this.gameObject,this.context.connection))}}};var ro=class extends M{visibleOn;onEnable(){this.apply()}apply(){this.test()||R.setActive(this.gameObject,!1)}test(){return this.visibleOn<0?!0:cx()?(this.visibleOn&2)!==0:(this.visibleOn&1)!==0}};v([y()],ro.prototype,"visibleOn",2);var hc;function cx(){if(hc===!0||hc===!1)return hc;let o=!1;return function(e){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4)))&&(o=!0)}(navigator.userAgent||navigator.vendor||window.opera),hc=o,o}import*as Y from"three";var $d=!1;var Fn=class extends zt{static get HasAnySelected(){return this._active>0}transformSelf=!0;orbit=null;selectStartEventListener=[];selectEndEventListener=[];constructor(){super(),this.selectStartEventListener=[],this.selectEndEventListener=[],this._dragDelta=new Y.Vector2}addDragEventListener(e,t){switch(e){case"selectstart":this.selectStartEventListener.push(t);break;case"selectend":this.selectEndEventListener.push(t);break}}_dragHelper=null;start(){this.orbit=R.findObjectOfType(nt,this.context)}_draggingRigidbodies=[];allowEdit(e=null){return this.context.connection.allowEditing}onPointerEnter(e){if(!this.allowEdit(this.gameObject)||V.IsInWebXR)return;let t=R.getComponentInParent(e.object,Fn);!t||t!==this||(Fn.lastHovered=e.object,this.context.domElement.style.cursor="pointer")}onPointerExit(e){!this.allowEdit(this.gameObject)||V.IsInWebXR||Fn.lastHovered===e.object&&(this.context.domElement.style.cursor="auto")}_waitingForDragStart=null;onPointerDown(e){!this.allowEdit(this.gameObject)||V.IsInWebXR||(Fn._active+=1,this._dragDelta.set(0,0),this._didDrag=!1,this._waitingForDragStart=e,e.StopPropagation(),this.orbit&&(this.orbit.enabled=!1))}onPointerUp(e){this._waitingForDragStart=null,this.allowEdit(this.gameObject)&&(Fn._active>0&&(Fn._active-=1),!V.IsInWebXR&&(this.onDragEnd(e),e.StopPropagation(),this.orbit&&(this.orbit.enabled=!0)))}update(){if(!V.IsInWebXR){if(this._waitingForDragStart){if(!this._didDrag){let t=this.context.input.getPointerPositionDelta(0);if(t&&this._dragDelta.add(t),this._dragDelta.length()>2)this._didDrag=!0;else return}let e=this._waitingForDragStart;this._waitingForDragStart=null,this.onDragStart(e)}this._dragHelper&&this._dragHelper.hasSelected&&this.onUpdateDrag(),this._isDragging&&this._dragHelper?.hasSelected===!1&&this.onDragEnd(null)}}_isDragging=!1;_marker=null;_dragDelta;_didDrag=!1;onDragStart(e){if(!this._dragHelper)if(this.context.mainCamera)this._dragHelper=new pc(this.context.mainCamera);else return;if(!e||!e.object)return;let t=R.getComponentInParent(e.object,Fn);if(!t||t!==this)return;let i=e.object;this.transformSelf&&(i=this.gameObject);let n={selected:i,attached:i};for(let c of this.selectStartEventListener)c(this,n);if(!n.attached)return;n.attached,i=n.attached,this._isDragging=!0,this._dragHelper.setSelected(i,this.context),this.orbit&&(this.orbit.enabled=!1);let r=R.getComponentInChildren(i,St);$d&&console.log("DRAG START",r,i),r&&(r.fastMode=!0,r?.requestOwnership()),this._marker=R.addNewComponent(i,Wt),this._draggingRigidbodies.length=0;let s=R.getComponentsInChildren(i,J);s&&this._draggingRigidbodies.push(...s);let a=Jc();R.invokeOnChildren(this._dragHelper.selected,a("onDragStart"))}onUpdateDrag(){if(!!this._dragHelper){this._dragHelper.onUpdate(this.context);for(let e of this._draggingRigidbodies)e.wakeUp(),e.resetVelocities()}}onDragEnd(e){if(!this||!this._isDragging||(this._isDragging=!1,!this._dragHelper))return;for(let n of this._draggingRigidbodies)n.setVelocity(n.smoothedVelocity);this._draggingRigidbodies.length=0;let t=this._dragHelper.selected;if($d&&console.log("DRAG END",t,t?.visible),this._dragHelper.setSelected(null,this.context),this.orbit&&(this.orbit.enabled=!0),e?.object){let n=R.getComponentInChildren(e.object,St);n&&(n.fastMode=!1),this._marker&&this._marker.destroy()}for(let n of this.selectEndEventListener)n(this);let i=Jc();R.invokeOnChildren(t,i("onDragEnd"))}},Ji=Fn;I(Ji,"_active",0),I(Ji,"lastHovered");var eh=class{get hasSelected(){return this._selected!==null&&this._selected!==void 0}get selected(){return this._selected}_selected=null;_context=null;_camera;_cameraPlane=new Y.Plane;_hasGroundPlane=!1;_groundPlane=new Y.Plane;_groundOffset=new Y.Vector3;_groundOffsetFactor=0;_groundDistance=0;_groundPlanePoint=new Y.Vector3;_raycaster=new Y.Raycaster;_cameraPlaneOffset=new Y.Vector3;_intersection=new Y.Vector3;_worldPosition=new Y.Vector3;_inverseMatrix=new Y.Matrix4;_rbs=[];_groundLine;_groundMarker;constructor(e){this._camera=e;let t=new Y.Line(eh.geometry),i=t.material;i.color=new Y.Color(.4,.4,.4),t.layers.set(2),t.name="line",t.scale.y=1,this._groundLine=t;let n=new Y.SphereGeometry(.5,22,22),r=new Y.MeshBasicMaterial({color:i.color}),s=new Y.Mesh(n,r);s.visible=!1,s.layers.set(2),this._groundMarker=s}setSelected(e,t){if(this._selected&&t)for(let i of this._rbs)i.wakeUp(),i.setVelocity(0,0,0);if(this._selected&&ye.Remove(t,this._selected),this._selected=e,this._context=t,this._rbs.length=0,e?(t.scene.add(this._groundLine),t.scene.add(this._groundMarker)):(this._groundLine.removeFromParent(),this._groundMarker.removeFromParent()),this._selected){if(!t){console.error("DragHelper: no context");return}ye.Add(t,this._selected,null),this._groundOffsetFactor=0,this._hasGroundPlane=!0,this._groundOffset.set(0,0,0),this._requireUpdateGroundPlane=!0,this.onUpdateScreenSpacePlane()}}_groundOffsetVector=new Y.Vector3(0,1,0);_requireUpdateGroundPlane=!0;_didDragOnGroundPlaneLastFrame=!1;onUpdate(e){if(!this._context)return;let t=" ",i="d",n="s",r=this._context?.input.isKeyPressed(t)||this._context?.input.isKeyPressed(i),s=this._context.input.getTouchesPressedCount()>=2||r;if(s){let c=this._context.input.getPointerPositionDelta(0);c&&(this._groundOffsetVector.set(0,1,0),this._selected?.rotateOnWorldAxis(this._groundOffsetVector,c.x*this._context.time.deltaTime))}let a=this._context.input.getPointerPositionRC(0);if(!!a&&(this._raycaster.setFromCamera(a,this._camera),this._selected)){$d&&console.log("UPDATE DRAG",this._selected),this._groundOffsetVector.set(0,1,0);let c=B(this._camera).clone().sub(B(this._selected)).normalize(),u=Math.abs(c.dot(this._groundOffsetVector)),l=this._context?.input.isKeyPressed(t)||this._context?.input.isKeyPressed(i),d=!s&&u>.2&&!l&&this._context.input.getPointerPressedCount()<=1,h=this._didDragOnGroundPlaneLastFrame!==d;if(this._didDragOnGroundPlaneLastFrame=d,this._hasGroundPlane||(this._requireUpdateGroundPlane=!0),(this._requireUpdateGroundPlane||!d||h)&&this.onUpdateGroundPlane(),this._requireUpdateGroundPlane=!1,this._hasGroundPlane)if(this._raycaster.ray.intersectPlane(this._groundPlane,this._intersection)){let g=this._intersection.y;if(this._groundPlanePoint.copy(this._intersection).sub(this._groundOffset),this._groundPlanePoint.y=g,d){this._groundOffsetVector.set(0,1,0);let E=this._intersection.sub(this._groundOffset).add(this._groundOffsetVector.multiplyScalar(this._groundOffsetFactor));this.onUpdateWorldPosition(E,this._groundPlanePoint,!1),this.onDidUpdate();return}}else this._groundPlanePoint.set(0,99999,0);h&&this.onUpdateScreenSpacePlane(),this._requireUpdateGroundPlane=!0,this._raycaster.ray.intersectPlane(this._cameraPlane,this._intersection)&&(this.onUpdateWorldPosition(this._intersection.sub(this._cameraPlaneOffset),this._groundPlanePoint,!0),this.onDidUpdate())}}onUpdateWorldPosition(e,t,i){if(!!this._selected){if(i){let n=B(this._selected);n.y=e.y,e=n}if(ie(this._selected,e),ie(this._groundLine,e),this._hasGroundPlane?this._groundLine.scale.y=this._groundDistance:this._groundLine.scale.y=1e3,this._groundMarker.visible=t!==null,t){let n=B(this._camera).distanceTo(t)*.01;this._groundMarker.scale.set(n,n,n),ie(this._groundMarker,t)}}}onUpdateScreenSpacePlane(){if(!this._selected||!this._context)return;let e=this._context.input.getPointerPositionRC(0);!e||(this._raycaster.setFromCamera(e,this._camera),this._cameraPlane.setFromNormalAndCoplanarPoint(this._camera.getWorldDirection(this._cameraPlane.normal),this._worldPosition.setFromMatrixPosition(this._selected.matrixWorld)),this._raycaster.ray.intersectPlane(this._cameraPlane,this._intersection)&&this._selected.parent&&(this._inverseMatrix.copy(this._selected.parent.matrixWorld).invert(),this._cameraPlaneOffset.copy(this._intersection).sub(this._worldPosition.setFromMatrixPosition(this._selected.matrixWorld))))}onUpdateGroundPlane(){if(!this._selected||!this._context)return;let e=B(this._selected),t=new Y.Ray(new Y.Vector3(0,.1,0).add(e),new Y.Vector3(0,-1,0)),i=new be;i.ignore=[this._selected];let n=this._context.physics.raycastFromRay(t,i);for(let r=0;r<n.length;r++){let s=n[r];if(!s.face||this.contains(this._selected,s.object))continue;let a=new Y.Vector3(0,1,0);this._groundPlane.setFromNormalAndCoplanarPoint(a,s.point);break}this._hasGroundPlane=!0,this._groundPlane.setFromNormalAndCoplanarPoint(t.direction.multiplyScalar(-1),t.origin),this._raycaster.ray.intersectPlane(this._groundPlane,this._intersection),this._groundDistance=this._intersection.distanceTo(e),this._groundOffset.copy(this._intersection).sub(e)}onDidUpdate(){oe.markDirty(this._selected);for(let e of this._rbs)e.wakeUp(),e.resetForcesAndTorques(),e.setAngularVelocity(0,0,0)}contains(e,t){if(e===t)return!0;if(e.children){for(let i of e.children)if(this.contains(i,t))return!0}return!1}},pc=eh;I(pc,"geometry",new Y.BufferGeometry().setFromPoints([new Y.Vector3(0,0,0),new Y.Vector3(0,-1,0)]));var Pi=class extends M{url=null;urlParameterName=null;localhost=null;awake(){this.context.connection.registerProvider(this)}getWebsocketUrl(){let e=this.url?Pi.GetUrl(this.url,this.localhost):null;if(this.urlParameterName){let r=P(this.urlParameterName);r&&typeof r=="string"&&(e=r)}if(!e)return null;let i=new RegExp("(((https?)|(?<socket_prefix>wss?))://)?(www.)?(?<url>.+)","gm").exec(e);return i?.groups?i?.groups.socket_prefix?e:"wss://"+i?.groups.url:null}static GetUrl(e,t){let i=e,n=Pi.IsLocalNetwork()&&t;return n&&(i=t),e?.startsWith("/")&&(i=(n?i:window.location.origin)+e),i}static IsLocalNetwork(e=window.location.hostname){return lt(e)}};var gr=class extends M{filesBackendUrl;localhost;_dragOver;_drop;onEnable(){this.filesBackendUrl=this.filesBackendUrl?Pi.GetUrl(this.filesBackendUrl,this.localhost):void 0,this._dragOver=this.onDrag.bind(this),this._drop=this.onDrop.bind(this),this.context.domElement.addEventListener("dragover",this._dragOver),this.context.domElement.addEventListener("drop",this._drop)}onDisable(){this.context.domElement.removeEventListener("dragover",this._dragOver),this.context.domElement.removeEventListener("drop",this._drop)}onDrag(e){e.preventDefault()}async onDrop(e){if(console.log(e),!e.dataTransfer)return;e.preventDefault();let t=e.dataTransfer.items;if(!!t)for(let i in t){let n=t[i];if(n.kind==="file"){let r=n.getAsFile();if(!r)continue;console.log("Register file "+r.name+" to",this.filesBackendUrl,r);let s=await jf(r,this.context,this.filesBackendUrl);s&&this.addObject(e,s)}else n.kind==="string"&&n.type=="text/plain"&&n.getAsString(async r=>{console.log("dropped url",r);try{let s=new URL(r);if(!s)return;let a=await Hf(s,this.context);a&&this.addObject(e,a)}catch{console.log("dropped string is not a valid URL!",r)}})}}async addObject(e,t){console.log("Dropped",t);let i=new be;i.setMask(16777215),i.screenPointFromOffset(e.offsetX,e.offsetY);let n=this.context.physics.raycast(i),r=t.scene;if(n&&n.length>0)for(let s of n){r.position.copy(s.point);break}this.gameObject.add(r),this.dispatchEvent(new CustomEvent("object-added",{detail:t}))}};v([y()],gr.prototype,"filesBackendUrl",2),v([y()],gr.prototype,"localhost",2);import{Vector3 as ux,Quaternion as dx,Object3D as Nm}from"three";var Zi=class extends zt{parent=null;object=null;limitCount=10;limitInterval=60;_currentCount=0;_startPosition=null;_startQuaternion=null;awake(){if(this.object){if(this.object===this.gameObject){console.error("Can not duplicate self");return}this.object.visible=!1,this._startPosition=this.object.position?.clone()??new ux(0,0,0),this._startQuaternion=this.object.quaternion?.clone()??new dx(0,0,0,1)}let e=R.getComponentInParent(this.gameObject,Ji);e?e.addDragEventListener("selectstart",(t,i)=>{if(this._currentCount>=this.limitCount){i.attached=null;return}let n=this.handleDuplication(i.selected);n&&(console.assert(n!==i.selected,"Duplicated object is original"),i.attached=n)}):console.warn("Could no find drag controls in parent",this.name),Z.addEventListener("select-start",(t,i)=>{if(this._currentCount>=this.limitCount){i.grab=null;return}let n=this.handleDuplication(i.selected);n&&(i.grab=n)}),this.cloneLimitIntervalFn()}cloneLimitIntervalFn(){this.destroyed||(this._currentCount>0&&(this._currentCount-=1),setTimeout(()=>{this.cloneLimitIntervalFn()},this.limitInterval/this.limitCount*1e3))}handleDuplication(e){if(this._currentCount>=this.limitCount||!this.object)return null;if(e===this.gameObject||this.handleMultiObject(e)){if(this.object===this.gameObject)return null;this.object.visible=!0,this._startPosition&&this.object.position.copy(this._startPosition),this._startQuaternion&&this.object.quaternion.copy(this._startQuaternion);let t=new Ue;this.parent||(this.parent=this.gameObject.parent),this.parent&&(t.parent=this.parent.guid??this.parent.userData?.guid,t.keepWorldPosition=!0),t.position=this.worldPosition,t.rotation=this.worldQuaternion,t.context=this.context,this._currentCount+=1;let i=R.instantiateSynced(this.object,t);return console.assert(i!==this.object,"Duplicated object is original"),this.object.visible=!1,this._startPosition&&this.object.position.clone().copy(this._startPosition),this._startQuaternion&&this.object.quaternion.clone().copy(this._startQuaternion),i}return null}handleMultiObject(e){return this.gameObject.type==="Group"||this.gameObject.type==="Object3D"?this.isInChildren(this.gameObject,e):!1}isInChildren(e,t){if(!e)return!1;if(e===t)return!0;if(e.children){for(let i of e.children)if(this.isInChildren(i,t))return!0}return!1}};v([y(Nm)],Zi.prototype,"parent",2),v([y(Nm)],Zi.prototype,"object",2),v([y()],Zi.prototype,"limitCount",2),v([y()],Zi.prototype,"limitInterval",2);var ya=class{eventID;callback};v([y()],ya.prototype,"eventID",2),v([y(de)],ya.prototype,"callback",2);var oo=class extends M{triggers;invoke(e){if(!!this.triggers)for(let t of this.triggers)t.eventID===e&&t.callback.invoke()}onPointerClick(e){this.invoke(4)}onPointerEnter(e){this.invoke(0)}onPointerExit(e){this.invoke(1)}onPointerDown(e){this.invoke(2)}onPointerUp(e){this.invoke(3)}};v([y(ya)],oo.prototype,"triggers",2);import*as en from"three";import*as _a from"three";var Bn=class{get lightmap(){return this.lightmapTexture}set lightmap(e){e!==this.lightmapTexture&&(this.lightmapTexture=e,this.setupLightmap())}lightmapIndex=-1;lightmapScaleOffset=new _a.Vector4(1,1,0,0);context;gameObject;lightmapTexture=null;lightmapScaleOffsetUniform={value:new _a.Vector4(1,1,0,0)};lightmapUniform={value:null};beforeRenderCallback;constructor(e,t){this.gameObject=e,this.context=t}init(e,t,i,n=!1){if(console.assert(this.gameObject!==void 0&&this.gameObject!==null,"Missing gameobject",this),this.lightmapIndex=e,this.lightmapIndex<0)return;this.lightmapScaleOffset=t,this.lightmapTexture=i,n&&this.setLightmapDebugMaterial(),this.setupLightmap()}bindOnBeforeRender(){this.beforeRenderCallback=this.onBeforeRenderThreeComplete.bind(this),this.context.addBeforeRenderListener(this.gameObject,this.beforeRenderCallback)}onBeforeRenderThreeComplete(e,t,i,n,r,s){this.onBeforeRenderThree(r)}setupLightmap(){if(this.gameObject.type==="Object3D")return;if(this.gameObject.type==="Group"){console.warn("Lightmap on multimaterial object is not supported yet... please ask kindly for implementation.");return}console.assert(this.gameObject.type==="Mesh","Lightmap only works on meshes",this);let e=this.gameObject;e.geometry.getAttribute("uv2")||e.geometry.setAttribute("uv2",e.geometry.getAttribute("uv"));let t=this.gameObject.material.clone();if(this.gameObject.material=t,this.gameObject.material.onBeforeCompile=(i,n)=>{i.uniforms.lightmap=this.lightmapUniform,i.uniforms.lightmapScaleOffset=this.lightmapScaleOffsetUniform},this.lightmapIndex>=0){let i=this.lightmapTexture,n=this.gameObject.material;n&&i&&(n.uniforms||(n.uniforms={}),n.lightMap=i,n.uniforms.lightmap={value:i})}}onBeforeRenderThree(e){let t=e.uniforms;t&&t.lightmap&&(this.lightmapScaleOffsetUniform.value=this.lightmapScaleOffset,this.lightmapUniform.value=this.lightmapTexture,t.lightmap=this.lightmapUniform,t.lightmapScaleOffset=this.lightmapScaleOffsetUniform)}setLightmapDebugMaterial(){this.gameObject.material=new _a.ShaderMaterial({vertexShader:`
216
216
  attribute vec2 uv2;
217
217
  varying vec2 vUv2;
218
218
  void main()
@@ -244,8 +244,8 @@ a:hover {
244
244
  // gl_FragColor = vec4(vUv2.xy, 0, 1);
245
245
  gl_FragColor = lightMapTexel;
246
246
  }
247
- `,defines:{USE_LIGHTMAP:""}})}};import{AxesHelper as px,Object3D as fx,Vector4 as mx}from"three";import{EquirectangularReflectionMapping as lx,sRGBEncoding as cx,Vector3 as Wm}from"three";var us=P("debugreflectionprobe"),Nm=P("noreflectionprobe"),dx=Symbol("reflectionProbeKey"),ux=Symbol("original material"),Zi=class extends M{static get(e,t,i){if(!e||e.isObject3D!==!0||Nm)return null;let n=Zi._probes.get(t);if(n){for(let r of n)if(r.__didAwake||r.__internalAwake(),r.enabled&&r.isInBox(e,i?1e-8:void 0))return us&&console.log("Found reflection probe",e.name,r.name),r}return us&&console.debug("Did not find reflection probe",e.name,i,e),null}_texture;set texture(e){this._texture=e}get texture(){return this._texture}center;size;_boxHelper;isInBox(e,t){return this._boxHelper?.isInBox(e,t)}constructor(){super(),Zi._probes.has(this.context)||Zi._probes.set(this.context,[]),Zi._probes.get(this.context)?.push(this)}awake(){this._boxHelper=this.gameObject.addNewComponent(ze),this._boxHelper.updateBox(!0),us&&this._boxHelper.showHelper(5592320,!0),this.texture&&(this.texture.mapping=lx,this.texture.encoding=cx,this.texture.needsUpdate=!0)}onDestroy(){let e=Zi._probes.get(this.context);if(e){let t=e.indexOf(this);t>=0&&e.splice(t,1)}}onSet(e){if(Nm||e.sharedMaterials?.length<=0||!this.texture)return;let t=Zi._rendererMaterialsCache.get(e);t||(t=[],Zi._rendererMaterialsCache.set(e,t));for(let i=0;i<e.sharedMaterials.length;i++){let n=e.sharedMaterials[i];if(!n||n.envMap===void 0||n.envMap===this.texture)continue;let r=t[i];if(!r||r.material!==n||r.material.version!==n.version){let a=n.clone();r?(r.copy=a,r.material=n):(r={material:n,copy:a},t.push(r)),a[dx]=this,a[ux]=n,a.envMap=this.texture,us&&console.log("Set reflection",e.name,e.guid)}let s=r?.copy;e.sharedMaterials[i]=s}}onUnset(e){let t=Zi._rendererMaterialsCache.get(e);if(t)for(let i=0;i<t.length;i++){let n=t[i];e.sharedMaterials[i]=n.material}}},Zt=Zi;I(Zt,"_probes",new Map),I(Zt,"_rendererMaterialsCache",new Map),v([y(Wm)],Zt.prototype,"center",2),v([y(Wm)],Zt.prototype,"size",2);import{Layers as $j}from"three";var hx=Symbol("customVisibilityFlag");function pc(o,e){o.layers[hx]=e}var tH=Symbol("DidPatchLayers");var Xm=P("noInstancing"),Qm=!!P("debuglightmaps"),gx=P("debuginstancing"),bx=P("debugprogressive"),vx=P("noprogressive");var hs=class{path=null;asset=null;default};var th=class{_renderer;_targets=[];is(e){return this._renderer===e}constructor(e){this._renderer=e;let t=this.setMaterial.bind(this),i=this.getMaterial.bind(this),n=e.gameObject;if(this._targets=[],n)switch(n.type){case"Group":this._targets=[...n.children];break;case"SkinnedMesh":case"Mesh":this._targets.push(n);break}return new Proxy(this,{get(r,s){if(typeof s=="string"){let a=parseInt(s);if(!isNaN(a))return i(a)}return r[s]},set(r,s,a){return typeof s=="string"&&t(a,Number.parseInt(s)),Reflect.set(r,s,a)}})}get length(){return this._targets.length}setMaterial(e,t){if(t<0||t>=this._targets.length)return;let i=this._targets[t];!i||i.material===void 0||(i.material=e)}getMaterial(e){if(e<0)return null;let t=this._targets;if(e>=t.length)return null;let i=t[e];return i?i.material:null}},mc=class extends M{static setVisible(e,t){pc(e,t)}receiveShadows=!1;shadowCastingMode=ih.Off;lightmapIndex=-1;lightmapScaleOffset=new $i.Vector4(1,1,0,0);enableInstancing=void 0;renderOrder=void 0;allowOcclusionWhenDynamic=!0;probeAnchor;reflectionProbeUsage=0;_lightmaps;get sharedMesh(){if(this.gameObject.type==="Mesh")return this.gameObject;if(this.gameObject.type==="SkinnesMesh")return this.gameObject;if(this.gameObject.type==="Group")return this.gameObject.children[0]}get sharedMaterial(){return this.sharedMaterials[0]}set sharedMaterial(e){this.sharedMaterials[0]=e}get material(){return this.sharedMaterials[0]}set material(e){this.sharedMaterials[0]=e}_sharedMaterials;get sharedMaterials(){return(!this._sharedMaterials||!this._sharedMaterials.is(this))&&(this._sharedMaterials=new th(this)),this._sharedMaterials}static get shouldSuppressInstancing(){return Xm}_lightmapTextureOverride=void 0;get lightmap(){return this._lightmaps?.length?this._lightmaps[0].lightmap:null}set lightmap(e){if(this._lightmapTextureOverride=e,e===void 0&&(e=this.context.lightmaps.tryGetLightmap(this.sourceId,this.lightmapIndex)),this._lightmaps?.length)for(let t of this._lightmaps)t.lightmap=e}get hasLightmap(){let e=this.lightmap;return e!=null}allowProgressiveLoading=!0;awake(){this.clearInstancingState(),this.probeAnchor&&us&&this.probeAnchor.add(new px(.2)),this._reflectionProbe=null;let e=this.gameObject.type;if(this.isMultiMaterialObject(this.gameObject)){for(let t of this.gameObject.children)this.context.addBeforeRenderListener(t,this.onBeforeRenderThree.bind(this)),t.layers.mask=this.gameObject.layers.mask;if(this.renderOrder!==void 0){let t=0;for(let i=0;i<this.gameObject.children.length;i++){let n=this.gameObject.children[i];if(!(n.type!=="Mesh"||R.getComponent(n,mc))){if(this.renderOrder.length<=t){console.error("Incorrect element count",this);break}n.renderOrder=this.renderOrder[t],t+=1}}}}else this.isMeshOrSkinnedMesh(this.gameObject)&&(this.context.addBeforeRenderListener(this.gameObject,this.onBeforeRenderThree.bind(this)),this.renderOrder!==void 0&&this.renderOrder.length>0&&(this.gameObject.renderOrder=this.renderOrder[0]));if(this.lightmapIndex>=0){let t=this._lightmapTextureOverride!==void 0?this._lightmapTextureOverride:this.context.lightmaps.tryGetLightmap(this.sourceId,this.lightmapIndex);if(t){if(this._lightmaps=[],e==="Mesh"){if(!this.gameObject.material?.isMeshBasicMaterial){let i=new Fn(this.gameObject,this.context);this._lightmaps.push(i),i.init(this.lightmapIndex,this.lightmapScaleOffset,t,Qm)}}else if(this.isMultiMaterialObject(this.gameObject)){for(let i of this.gameObject.children)if(!i.material?.isMeshBasicMaterial){let n=new Fn(i,this.context);this._lightmaps.push(n),n.init(this.lightmapIndex,this.lightmapScaleOffset,t,Qm),n.bindOnBeforeRender()}}}}}_isInstancingEnabled=!1;handles=void 0;prevLayers=void 0;clearInstancingState(){this._isInstancingEnabled=!1,this.handles=void 0,this.prevLayers=void 0}setInstancingEnabled(e){if(this._isInstancingEnabled===e)return e&&(this.handles===void 0||this.handles!=null&&this.handles.length>0);if(this._isInstancingEnabled=e,e){if(this.handles===void 0){if(this.handles=yx.setup(this.gameObject,this.context,null,{rend:this,foundMeshes:0}),this.handles)return R.markAsInstancedRendered(this.gameObject,!0),!0}else if(this.handles!==null){for(let t of this.handles)t.updateInstanceMatrix(!0),t.add();return R.markAsInstancedRendered(this.gameObject,!0),!0}}else{if(this.handles)for(let t of this.handles)t.remove();return!0}return!1}start(){if(this.enableInstancing&&!Xm&&this.setInstancingEnabled(!0),this.gameObject.frustumCulled=this.allowOcclusionWhenDynamic,this.isMultiMaterialObject(this.gameObject))for(let e=0;e<this.gameObject.children.length;e++){let t=this.gameObject.children[e];t.frustumCulled=this.allowOcclusionWhenDynamic}}onEnable(){this.setVisibility(!0),this._isInstancingEnabled?this.setInstancingEnabled(!0):this.enabled&&this.applyStencil(),this.updateReflectionProbe()}onDisable(){this.setVisibility(!1),this.handles&&this.handles.length>0&&this.setInstancingEnabled(!1)}onDestroy(){this.handles=null}applyStencil(){Vr.applyStencil(this)}onBeforeRender(){if(!this.gameObject)return;mc.envmap=this.scene.environment;let e=this.gameObject[ll]===!0||this.gameObject.matrixWorldNeedsUpdate;if(this.isMultiMaterialObject(this.gameObject)&&this.gameObject.children?.length>0)for(let t of this.gameObject.children)this.applySettings(t);else this.applySettings(this.gameObject);if(e&&(delete this.gameObject[ll],this.handles)){for(let i=this.handles.length-1;i>=0;i--)this.handles[i].updateInstanceMatrix();this.gameObject.matrixWorldNeedsUpdate=!1}if(this.handles&&this.handles.length<=0&&R.markAsInstancedRendered(this.gameObject,!1),this._isInstancingEnabled&&this.handles)for(let t=0;t<this.handles.length;t++){let i=this.handles[t];this.prevLayers||(this.prevLayers=[]);let n=i.object.layers.mask;t>=this.prevLayers.length?this.prevLayers.push(n):this.prevLayers[t]=n,i.object.layers.disableAll()}this.reflectionProbeUsage!==0&&this._reflectionProbe&&this._reflectionProbe.onSet(this)}onBeforeRenderThree(e,t,i,n,r,s){if(!vx&&r._didRequestTextureLOD===void 0&&this.allowProgressiveLoading&&(r._didRequestTextureLOD=0,bx&&console.log("Load material LOD",r.name),fi.assignTextureLOD(this.context,this.sourceId,r)),r.envMapIntensity!==void 0){let a=this.hasLightmap?Math.PI:1;r.envMapIntensity=Math.max(0,this.context.rendererData.environmentIntensity/a)}if(this._lightmaps)for(let a of this._lightmaps)a.onBeforeRenderThree(r)}onAfterRender(){if(this._isInstancingEnabled&&this.handles&&this.prevLayers&&this.prevLayers.length>=this.handles.length)for(let e=0;e<this.handles.length;e++){let t=this.handles[e];t.object.layers.mask=this.prevLayers[e]}this.reflectionProbeUsage!==0&&this._reflectionProbe&&this._reflectionProbe.onUnset(this)}applySettings(e){e.receiveShadow=this.receiveShadows,this.shadowCastingMode==ih.On?e.castShadow=!0:e.castShadow=!1}_reflectionProbe=null;updateReflectionProbe(){if(this._reflectionProbe=null,this.reflectionProbeUsage!==0){if(!this.probeAnchor)return;this.startCoroutine(this._updateReflectionProbe(),2)}}*_updateReflectionProbe(){let e=this.probeAnchor||this.gameObject,t=!!this.probeAnchor;this._reflectionProbe=Zt.get(e,this.context,t)}setVisibility(e){if(!this.isMultiMaterialObject(this.gameObject))pc(this.gameObject,e);else for(let t of this.gameObject.children)this.isMeshOrSkinnedMesh(t)&&pc(t,e)}isMultiMaterialObject(e){return e.type==="Group"}isMeshOrSkinnedMesh(e){return e.type==="Mesh"||e.type==="SkinnedMesh"}},ae=mc;I(ae,"envmap",null),v([y()],ae.prototype,"receiveShadows",2),v([y()],ae.prototype,"shadowCastingMode",2),v([y()],ae.prototype,"lightmapIndex",2),v([y(mx)],ae.prototype,"lightmapScaleOffset",2),v([y()],ae.prototype,"enableInstancing",2),v([y()],ae.prototype,"renderOrder",2),v([y()],ae.prototype,"allowOcclusionWhenDynamic",2),v([y(fx)],ae.prototype,"probeAnchor",2),v([y()],ae.prototype,"reflectionProbeUsage",2);var oo=class extends ae{},ps=class extends oo{awake(){super.awake(),this.allowOcclusionWhenDynamic=!1}},ih=(n=>(n[n.Off=0]="Off",n[n.On=1]="On",n[n.TwoSided=2]="TwoSided",n[n.ShadowsOnly=3]="ShadowsOnly",n))(ih||{}),nh=class{objs=[];setup(e,t,i,n,r=0){let s=this.tryCreateOrAddInstance(e,t,n);if(s)return i===null&&(i=[]),i.push(s),i;if(r<=0&&e.type!=="Mesh"){let a=r+1;for(let c of e.children)i=this.setup(c,t,i,n,a)}return i}tryCreateOrAddInstance(e,t,i){if(e.type==="Mesh"){let n=i.foundMeshes;if(i.foundMeshes+=1,!i.rend.enableInstancing||n>=i.rend.enableInstancing.length||!i.rend.enableInstancing[n])return null;let r=e,s=r.geometry,a=r.material;for(let d of this.objs)if(!d.isFull()&&d.geo===s&&d.material===a)return d.addInstance(r);let c=new fc(e.name,s,a,200,t);return this.objs.push(c),c.addInstance(r)}return null}},yx=new nh,rh=class{get name(){return this.object.name}instanceIndex=-1;object;instancer;constructor(e,t,i){this.instanceIndex=e,this.object=t,this.instancer=i,R.markAsInstancedRendered(t,!0)}updateInstanceMatrix(e=!1){this.instanceIndex<0||(this.object.updateWorldMatrix(!0,e),this.instancer.updateInstance(this.object.matrixWorld,this.instanceIndex))}add(){this.instanceIndex>=0||this.instancer.add(this)}remove(){this.instanceIndex<0||this.instancer.remove(this)}},oh=class{name="";geo;material;get currentCount(){return this.inst.count}context;inst;handles=[];maxCount;isFull(){return this.currentCount>=this.maxCount}constructor(e,t,i,n,r){this.name=e,this.geo=t,this.material=i,this.context=r,this.maxCount=n,gx&&(i=new $i.MeshBasicMaterial({color:this.randomColor()})),this.inst=new $i.InstancedMesh(t,i,n),this.inst.count=0,this.inst.layers.set(2),this.inst.visible=!0,this.context.scene.add(this.inst)}randomColor(){return new $i.Color(Math.random(),Math.random(),Math.random())}addInstance(e){if(this.currentCount>=this.maxCount)return console.error("TOO MANY INSTANCES - resize is not yet implemented!",this.inst.count),null;let t=new rh(-1,e,this);return this.add(t),t}add(e){e.instanceIndex<0&&(e.instanceIndex=this.currentCount,e.instanceIndex>=this.handles.length?this.handles.push(e):this.handles[e.instanceIndex]=e),e.object.updateWorldMatrix(!0,!0),this.inst.setMatrixAt(e.instanceIndex,e.object.matrixWorld),this.inst.instanceMatrix.needsUpdate=!0,this.inst.count+=1,this.inst.count>0&&(this.inst.visible=!0)}remove(e){if(!e||e.instanceIndex<0||e.instanceIndex>=this.handles.length||this.inst.count<=0)return;if(this.handles[e.instanceIndex]!==e){console.error("instance handle is not part of renderer, was it removed before?",e.instanceIndex,this.name);let i=this.handles.indexOf(e);if(i<0)return;e.instanceIndex=i}if(this.handles[e.instanceIndex]=null,this.inst.setMatrixAt(e.instanceIndex,oh.nullMatrix),!(e.instanceIndex>=this.currentCount-1)&&this.currentCount>0){let i=this.handles[this.currentCount-1];i&&(i.instanceIndex=e.instanceIndex,i.updateInstanceMatrix(),this.handles[e.instanceIndex]=i,this.handles[this.currentCount-1]=null)}this.inst.count>0&&(this.inst.count-=1),e.instanceIndex=-1,this.inst.count<=0&&(this.inst.visible=!1),this.inst.instanceMatrix.needsUpdate=!0}updateInstance(e,t){this.inst.setMatrixAt(t,e),this.inst.instanceMatrix.needsUpdate=!0}},fc=oh;I(fc,"nullMatrix",new $i.Matrix4);import{Vector3 as qm}from"three";var _a=class extends M{connectedBody;get rigidBody(){return this._rigidBody}_rigidBody=null;onEnable(){this._rigidBody||(this._rigidBody=this.gameObject.getComponent(J)),this.rigidBody&&this.connectedBody&&this.startCoroutine(this.create())}*create(){yield,this.rigidBody&&this.connectedBody&&this.createJoint(this.rigidBody,this.connectedBody)}};v([y(J)],_a.prototype,"connectedBody",2);var fs=class extends _a{createJoint(e,t){this.context.physics.addFixedJoint(e,t)}},gr=class extends _a{anchor;axis;createJoint(e,t){this.axis&&this.anchor&&this.context.physics.addHingeJoint(e,t,this.anchor,this.axis)}};v([y(qm)],gr.prototype,"anchor",2),v([y(qm)],gr.prototype,"axis",2);import{FlyControls as _x}from"three/examples/jsm/controls/FlyControls";var ms=class extends M{_controls=null;onEnable(){let e=R.getComponent(this.gameObject,ee)?.cam;this._controls=new _x(e,this.context.renderer.domElement),this._controls.rollSpeed=.5,this._controls.movementSpeed=3,this._controls.dragToLook=!0}onDisable(){this._controls?.dispose(),this._controls=null}update(){this._controls&&this._controls.update(this.context.time.deltaTime)}};import{GLTFExporter as Ex}from"three/examples/jsm/exporters/GLTFExporter.js";import{BufferAttribute as sh,Matrix4 as xx,Vector3 as Ym,Quaternion as wx}from"three";var xa=class{constructor(e){this.writer=e,this.name="EXT_mesh_gpu_instancing"}writeNode(e,t){if(e.constructor.name!=="InstancedMesh")return;let i=this.writer,n=i.extensionsUsed,r={};t.extensions=t.extensions||{},t.extensions[this.name]=r;let s=new xx,a=new Array,c=new Array,d=new Array;for(let g=0;g<e.count;g++){e.getMatrixAt(g,s);let E=new Ym,_=new wx,x=new Ym;s.decompose(E,_,x),a.push(E.x,E.y,E.z),c.push(_.x,_.y,_.z,_.w),d.push(x.x,x.y,x.z)}let l=new Float32Array(a),u=new Float32Array(c),h=new Float32Array(d);r.attributes={TRANSLATION:i.processAccessor(new sh(l,3)),ROTATION:i.processAccessor(new sh(u,4)),SCALE:i.processAccessor(new sh(h,3))},n[this.name]=!0}};import{Object3D as Cx,Vector3 as Tx}from"three";var gs=class extends ze{sceneRoot;start(){this.startCoroutine(this.updateGltfBox())}*updateGltfBox(){for(;;)for(let e=0;e<10;e++)yield}},$t=class extends M{binary=!0;objects=[];exporter;ext;async exportNow(e){console.log("DO EXPORT",this.objects);let t={binary:this.binary,pivot:$t.calculateCenter(this.objects)},i=await this.export(this.objects,t);this.binary?e.endsWith(".glb")||(e+=".glb"):e.endsWith(".gltf")||(e+=".gltf"),this.binary?$t.saveArrayBuffer(i,e):$t.saveJson(i,e)}async export(e,t){if(e===null||e.length<=0){console.log("no objects set to export");return}this.exporter||(this.exporter=new Ex,this.exporter.register(a=>new xa(a)),this.ext=new Vo,this.ext.registerExport(this.exporter)),$t.filterTopmostParent(e);let i={trs:!1,onlyVisible:!0,truncateDrawRange:!1,binary:t?.binary??!0,maxTextureSize:1/0,embedImages:!0,includeCustomExtensions:!0,animations:$t.collectAnimations(e)},n=new Cx;t?.pivot&&n.position.sub(t.pivot),console.log("EXPORT",e),e.forEach(a=>{a&&(n.children.push(a),a.matrixAutoUpdate=!1,a.matrix.copy(a.matrixWorld),R.getComponentsInChildren(a,ae).forEach(c=>{R.isActiveInHierarchy(c.gameObject)&&c.setInstancingEnabled(!1)}))});let r=new Eo(n);return this.ext.context=r,new Promise((a,c)=>{try{this.exporter?.parse(n,d=>{s(),a(d)},d=>{s(),c(d)},i)}catch(d){console.error(d),c(d)}finally{console.log("FINALLY")}});function s(){e.forEach(a=>{!a||(a.matrixAutoUpdate=!0,R.getComponentsInChildren(a,ae).forEach(c=>{R.isActiveInHierarchy(c.gameObject)&&c.setInstancingEnabled(!1)}))})}}static saveArrayBuffer(e,t){this.save(new Blob([e],{type:"application/octet-stream"}),t)}static saveJson(e,t){this.save("data: text/json;charset=utf-8,"+encodeURIComponent(JSON.stringify(e)),t)}static save(e,t){let i=document.createElement("a");i.style.display="none",document.body.appendChild(i),typeof e=="string"?i.href=e:i.href=URL.createObjectURL(e),i.download=t,i.click(),i.remove()}static collectAnimations(e,t){t=t||[];for(let i of e)!i||i.traverseVisible(n=>{n.animations&&n.animations.length>0&&t.push(...n.animations)});return t}static calculateCenter(e,t){let i=t||new Tx;return i.set(0,0,0),e.forEach(n=>{i.add(B(n))}),console.log(i),i.divideScalar(e.length),i}static filterTopmostParent(e){if(!(e.length<=0))for(let t=0;t<e.length;t++){let i=e[t];if(!i){e.splice(t,1),t--;continue}for(;i.parent;){if(e.includes(i.parent)){e.splice(t,1),t--;break}i=i.parent}}}};var so=class extends M{awake(){Ye.createIfNoneExists(this.context)}onEnable(){Ye.instance?.register(this)}onDisable(){Ye.instance?.unregister(this)}performRaycast(e=null){return null}},ao=class extends so{targets=null;raycastHits=[];start(){this.targets=[this.gameObject]}performRaycast(e=null){return this.targets?(e??=new be,e.targets=this.targets,e.results=this.raycastHits,this.context.physics.raycast(e)):null}},bs=class extends ao{};import{Color as gc,GridHelper as Rx}from"three";var Bn=class extends M{isGizmo=!1;color0;color1;gridHelper;size;divisions;offset;onEnable(){if(this.isGizmo&&!Ai)return;let e=this.size,t=this.divisions;this.gridHelper||(this.gridHelper=new Rx(e,t,this.color0??new gc(.4,.4,.4),this.color1??new gc(.6,.6,.6)),this.offset!==void 0&&(this.gridHelper.position.y+=this.offset),this.gameObject.add(this.gridHelper))}};v([y()],Bn.prototype,"isGizmo",2),v([y(gc)],Bn.prototype,"color0",2),v([y(gc)],Bn.prototype,"color1",2);var Un=class extends M{reverseArrangement=!1},vs=class extends Un{},ys=class extends Un{},_s=class extends Un{};import{GroundProjectedEnv as Sx}from"three/examples/jsm/objects/GroundProjectedEnv.js";var en=class extends M{applyOnAwake=!1;set scale(e){this._scale=e,this.env?.scale.setScalar(e)}get scale(){return this._scale}_scale=20;set radius(e){this._radius=e,this.env&&(this.env.height=e)}get radius(){return this._radius}_radius=100;set height(e){this._height=e,this.env&&(this.env.height=e)}get height(){return this._height}_height=100;_lastEnvironment;env;_watcher;awake(){this.applyOnAwake&&this.updateAndCreate()}onEnable(){this.context.time.frameCount>0&&this.applyOnAwake&&this.updateAndCreate(),this._watcher||(this._watcher=new dn(this.context.scene,"environment"),this._watcher.subscribeWrite(e=>{this.updateProjection()}))}onDisable(){this._watcher?.revoke(),this.env?.removeFromParent()}updateAndCreate(){this.updateProjection(),this._watcher?.apply()}updateProjection(){if(!this.context.scene.environment){this.env?.removeFromParent();return}(!this.env||this.context.scene.environment!==this._lastEnvironment)&&(console.log("Create/Update Ground Projection",this.context.scene.environment.name),this.env=new Sx(this.context.scene.environment)),this._lastEnvironment=this.context.scene.environment,this.env.parent||this.gameObject.add(this.env),this.env.scale.setScalar(this._scale),this.env.radius=this._radius,this.env.height=this._height,this.env.isObject3D===!0&&this.env.layers.set(2)}};v([y()],en.prototype,"applyOnAwake",2),v([y()],en.prototype,"scale",1),v([y()],en.prototype,"radius",1),v([y()],en.prototype,"height",1);import*as Km from"three-mesh-ui";import{Color as L}from"three";var Px=P("debugtext");var Ie=class extends vt{canvas;alignment=0;verticalOverflow=0;horizontalOverflow=0;lineSpacing=1;supportRichText=!1;font;fontStyle=0;get text(){return this._text}set text(e){if(this._text=e,!this._textMeshUi&&this._text.length>0&&this.context.time.frame>0&&this.createText(e,this.getTextOpts(),this.supportRichText),this._textMeshUi){if(this._textMeshUi.length>1){this.requestRebuild();return}this._textMeshUi[0].set({content:e}),this.markDirty()}}set_text(e){this.text=e}get fontSize(){return this._fontSize}set fontSize(e){if(this._fontSize=e,this._textMeshUi){if(this._textMeshUi.length>1){this.requestRebuild();return}this._textMeshUi[0].set({content:e}),this.markDirty()}}onColorChanged(){if(this._textMeshUi){if(this._textMeshUi.length>1){this.requestRebuild();return}let e=this.color;this._textMeshUi[0].set({fontColor:e,fontOpacity:e.alpha}),this.markDirty()}}_isWaitingForRebuild=!1;requestRebuild(){this._isWaitingForRebuild||(this._isWaitingForRebuild=!0,this.startCoroutine(this.rebuildDelayedRoutine(),0))}*rebuildDelayedRoutine(){if(this._isWaitingForRebuild=!1,this._textMeshUi){for(let e of this._textMeshUi)e.removeFromParent();this._textMeshUi.length=0}this.createText(this.text,this.getTextOpts(),this.supportRichText),this.markDirty()}onCreate(e){Px&&console.log(this);let t=this.verticalOverflow==0&&this.horizontalOverflow==0;t&&(this.context.renderer.localClippingEnabled=!0);let i=this.rectTransform;this._textContainer=this.uiObject=this.createBlock(i,t,null,!0),this.createText(this.text,this.getTextOpts(),this.supportRichText),this.uiObject,this.uiObject=this.createBlock(i,t,this.uiObject,!1)}onAfterAddedToScene(){super.onAfterAddedToScene(),this.handleTextRenderOnTop()}_text="";_fontSize=12;_textMeshUi=null;_textContainer=null;getTextOpts(){let e=this.fontSize,t={content:this.text,fontColor:this.color,fontOpacity:this.color.alpha,fontSize:e,fontKerning:"normal"};return this.font=this.font?.toLocaleLowerCase(),this.setFont(t,this.fontStyle),t}onEnable(){super.onEnable(),this._didHandleTextRenderOnTop=!1,this.uiObject&&(this.uiObject.onAfterUpdate=this.updateWidth.bind(this))}createBlock(e,t,i,n=!1){let r={};r.hiddenOverflow=t,r.interLine=(this.lineSpacing-1)*this.fontSize*1.333,this.getAlignment(r,n);let s=e.createNewBlock(r);return i&&(Array.isArray(i)?s.add(...i):s.add(i)),s}getAlignment(e,t=!1){switch(t||(e.contentDirection="row"),this.alignment){default:case 0:case 1:case 2:e.justifyContent="start";break;case 3:case 4:case 5:e.justifyContent="center";break;case 6:case 7:case 8:e.justifyContent="end";break}switch(this.alignment){case 0:case 3:case 6:e.alignContent=t?"left":"top";break;case 1:case 4:case 7:e.alignContent="center";break;case 2:case 5:case 8:e.alignContent=t?"right":"bottom";break}return e}updateWidth(){this.horizontalOverflow===1&&setTimeout(()=>{if(!this._textMeshUi)return;let e=this._textMeshUi[0].parent;if(!!e&&e.lines){let t=e.lines.reduce((i,n)=>i+n.width,0);t+=e.getFontSize()*5,t+=e.padding*2||0,t+=this.fontSize*1.5,e.set({width:t}),this.ensureShadowComponentOwner()}},1)}ensureShadowComponentOwner(){this.shadowComponent&&this.shadowComponent.traverse(e=>{e[mt]===void 0&&(e[mt]=this)})}createText(e,t,i){if(!(!e||e.length<=0))if(this._textMeshUi||(this._textMeshUi=[]),i){let n=this.getNextTag(e);if(n)n.startIndex>0&&this.createText(e.substring(0,n.startIndex),t,!1);else return this.createText(e,t,!1);let r=[];for(;n;){let s=this.getNextTag(e,n.endIndex);if(s){let a=this.getText(e,n,s);this.handleTag(n,t,r),this.createText(a,t,!1)}else{let a=e.substring(n.endIndex);this.handleTag(n,t,r),this.createText(a,t,!1)}n=s}}else{let n={...t};n.content=e;let r=new Km.Text(n);this._textMeshUi.push(r),this._textContainer&&this._textContainer.add(r)}}_didHandleTextRenderOnTop=!1;handleTextRenderOnTop(){this._didHandleTextRenderOnTop||(this._didHandleTextRenderOnTop=!0,this.startCoroutine(this.renderOnTopCoroutine()))}*renderOnTopCoroutine(){if(!this.canvas)return;let e=[],t=this.canvas,i={renderOnTop:t.renderOnTop,depthWrite:t.depthWrite,doubleSided:t.doubleSided};for(;;){let n=!1;if(this._textMeshUi)for(let r=0;r<this._textMeshUi.length;r++){if(e[r]===!0)continue;n=!0;let s=this._textMeshUi[r];!s.textContent||(rs(s,i),e[r]=!0)}if(!n)break;yield}}handleTag(e,t,i){if(e.isEndTag){if(i.length>0){let n=i.pop();if(n)for(let r in n.previousValues){let s=n.previousValues[r];t[r]=s}}}else if(e.type.includes("color")){let n=new wa(e,{fontColor:t.fontColor});if(i.push(n),e.type.length>6){let r=e.type.substring(6);t.fontColor=Ox(r)}else t.fontColor=new L(1,1,1)}else if(e.type=="b"){let n=new wa(e,{fontFamily:t.fontFamily,fontTexture:t.fontTexture});i.push(n),this.setFont(t,1)}else if(e.type=="i"){let n=new wa(e,{fontFamily:t.fontFamily,fontTexture:t.fontTexture});i.push(n),this.setFont(t,2)}}getText(e,t,i){return e.substring(t.endIndex,i.startIndex)}getNextTag(e,t=0){let i=e.indexOf("<",t),n=e.indexOf(">",i);if(i>=0&&n>=0){let r=e.substring(i+1,n);return{type:r,startIndex:i,endIndex:n+1,isEndTag:r.startsWith("/")}}return null}setFont(e,t){let i=this.getFontName(t),n=i;n?.endsWith("-msdf.json")||(n+="-msdf.json"),e.fontFamily=n;let r=i;r?.endsWith(".png")||(r+=".png"),e.fontTexture=r}getFontName(e){return this.font?(this.font=Mi(this.sourceId,this.font),this.font):null}};v([y(We)],Ie.prototype,"canvas",2),v([y()],Ie.prototype,"alignment",2),v([y()],Ie.prototype,"verticalOverflow",2),v([y()],Ie.prototype,"horizontalOverflow",2),v([y()],Ie.prototype,"lineSpacing",2),v([y()],Ie.prototype,"supportRichText",2),v([y()],Ie.prototype,"font",2),v([y()],Ie.prototype,"fontStyle",2),v([y()],Ie.prototype,"text",1),v([y()],Ie.prototype,"fontSize",1);var wa=class{tag;previousValues;constructor(e,t){this.tag=e,this.previousValues=t}};function Ox(o){if(o.startsWith("#")){let t=o.substring(1);var e=parseInt(t,16);let i=e>>16&255,n=e>>8&255,r=e&255;return new L(i/255,n/255,r/255)}switch(o){case"black":return new L(0,0,0);case"white":return new L(1,1,1);case"red":return new L(1,0,0);case"lime":return new L(0,1,0);case"blue":return new L(0,0,1);case"yellow":return new L(1,1,0);case"cyan":return new L(0,1,1);case"magenta":return new L(1,0,1);case"silver":return new L(.75,.75,.75);case"gray":return new L(.5,.5,.5);case"maroon":return new L(.5,0,0);case"olive":return new L(.5,.5,0);case"green":return new L(0,.5,0);case"purple":return new L(.5,0,.5);case"teal":return new L(0,.5,.5);case"navy":return new L(0,0,.5);case"darkred":return new L(.54,0,0);case"brown":return new L(.55,.27,0);case"firebrick":return new L(.69,.13,.13);case"crimson":return new L(.86,.08,.24);case"tomato":return new L(1,.39,.28);case"coral":return new L(1,.49,.31);case"indianred":return new L(.6,.31,.51);case"lightcoral":return new L(.94,.5,.5);case"darkorange":return new L(1,.55,0);case"orange":return new L(1,.65,0);case"gold":return new L(1,.84,0);case"darkgoldenrod":return new L(.72,.53,.04);case"goldenrod":return new L(.85,.65,.13);case"palegoldenrod":return new L(.93,.87,.67);case"darkkhaki":return new L(.74,.7,.42);case"khaki":return new L(.94,.9,.55);case"yellowgreen":return new L(.6,.8,.19);case"darkolivegreen":return new L(.33,.42,.18);case"olivedrab":return new L(.42,.56,.14);case"lawngreen":return new L(.49,.99,0);case"chartreuse":return new L(.5,1,0);case"greenyellow":return new L(.68,1,.18);case"darkgreen":return new L(0,.39,0);case"forestgreen":return new L(.13,.55,.13);case"limegreen":return new L(.19,.8,.19);case"lightgreen":return new L(.56,.93,.56);case"palegreen":return new L(.59,.98,.59);case"darkseagreen":return new L(.56,.74,.56);case"mediumspringgreen":return new L(0,.98,.6);case"springgreen":return new L(0,1,.5);case"seagreen":return new L(.18,.31,.31);case"mediumaquamarine":return new L(.4,.8,.66);case"mediumseagreen":return new L(.24,.7,.44);case"lightseagreen":return new L(.13,.7,.67);case"darkslategray":return new L(.18,.31,.31);case"darkcyan":return new L(0,.55,.55);case"aqua":return new L(0,1,1);case"lightcyan":return new L(.8,1,1);case"darkturquoise":return new L(0,.81,.82);case"turquoise":return new L(0,.82,.82);case"mediumturquoise":return new L(.28,.82,.8);case"paleturquoise":return new L(.68,1,.93);case"aquamarine":return new L(.5,1,.83);case"powderblue":return new L(.69,.88,.9);case"cadetblue":return new L(.37,.62,.63);case"steelblue":return new L(.27,.51,.71);case"cornflowerblue":return new L(.39,.58,.93);case"deepskyblue":return new L(0,.7,1);case"dodgerblue":return new L(.12,.56,1);case"lightblue":return new L(.68,.85,.9);case"skyblue":return new L(.53,.81,.92);case"lightskyblue":return new L(.53,.81,.98);case"midnightblue":return new L(.18,.18,.31);case"darkblue":return new L(0,0,.55);case"mediumblue":return new L(0,0,.82);case"royalblue":return new L(.25,.41,.88);case"blueviolet":return new L(.54,.17,.89);case"indigo":return new L(.29,0,.51);case"darkslateblue":return new L(.28,.24,.55);case"slateblue":return new L(.42,.35,.8);case"mediumslateblue":return new L(.48,.41,.9);case"mediumpurple":return new L(.58,.44,.86);case"darkmagenta":return new L(.55,0,.55);case"darkviolet":return new L(.58,0,.83);case"darkorchid":return new L(.6,.2,.8);case"mediumorchid":return new L(.73,.33,.83);case"thistle":return new L(.84,.75,.85);case"plum":return new L(.87,.63,.87);case"violet":return new L(.93,.51,.93);case"fuchsia":return new L(1,0,1);case"orchid":return new L(.85,.44,.84);case"mediumvioletred":return new L(.78,.08,.52);case"palevioletred":return new L(.86,.44,.58);case"hotpink":return new L(1,.4,.71);case"deeppink":return new L(1,.08,.58);case"lightpink":return new L(1,.71,.76);case"pink":return new L(1,.75,.78);case"antiquewhite":return new L(.98,.92,.84);case"beige":return new L(.96,.96,.86);case"bisque":return new L(1,.89,.77);case"blanchedalmond":return new L(1,.92,.82);case"wheat":return new L(.96,.87,.87);case"cornsilk":return new L(1,.97,.86);case"lemonchiffon":return new L(1,.98,.8);case"lightgoldenrodyellow":return new L(.98,.98,.82);case"lightyellow":return new L(1,1,.8);case"saddlebrown":return new L(.55,.27,.07);case"sienna":return new L(.63,.32,.18);case"chocolate":return new L(.82,.41,.12);case"peru":return new L(.82,.52,.25);case"sandybrown":return new L(.96,.64,.38);case"burlywood":return new L(.87,.72,.53);case"tan":return new L(.82,.71,.55);case"rosybrown":return new L(.74,.56,.56);case"moccasin":return new L(1,.89,.71);case"navajowhite":return new L(1,.87,.68);case"peachpuff":return new L(1,.85,.73);case"mistyrose":return new L(1,.89,.88);case"lavenderblush":return new L(1,.94,.93);case"linen":return new L(.98,.94,.9);case"oldlace":return new L(.99,.96,.9);case"papayawhip":return new L(1,.94,.84);case"seashell":return new L(1,.96,.93);case"mintcream":return new L(.98,1,.98);case"slategray":return new L(.44,.5,.56);case"lightslategray":return new L(.47,.53,.6);case"lightsteelblue":return new L(.69,.77,.87);case"lavender":return new L(.9,.9,.98);case"floralwhite":return new L(1,.98,.98);case"aliceblue":return new L(.94,.97,1);case"ghostwhite":return new L(.97,.97,1);case"honeydew":return new L(.94,1,.94);case"ivory":return new L(1,1,.94);case"azure":return new L(.94,1,1);case"snow":return new L(1,.98,.98);case"dimgray":return new L(.4,.4,.4);case"darkgray":return new L(.66,.66,.66);case"lightgray":return new L(.83,.83,.83);case"gainsboro":return new L(.86,.86,.86);case"whitesmoke":return new L(.96,.96,.96)}return new L(1,1,1)}var lo=P("debuginputfield"),N=class extends M{get text(){return this.textComponent?.text??""}get isFocused(){return N.active===this}textComponent;placeholder;onValueChanged;onEndEdit;inputEventFn;_iosEventFn;start(){lo&&console.log(this.name,this)}onEnable(){N.htmlField||(N.htmlField=document.createElement("input"),N.htmlField.style.caretColor="transparent",N.htmlField.classList.add("ar"),document.body.appendChild(N.htmlField)),this.inputEventFn||(this.inputEventFn=this.onInput.bind(this)),N.htmlField.addEventListener("keyup",this.inputEventFn),this.placeholder&&this.textComponent?.text.length&&R.setActive(this.placeholder.gameObject,!1),_o()&&(this._iosEventFn=this.processInputOniOS.bind(this),window.addEventListener("touchend",this._iosEventFn))}onDisable(){N.htmlField?.removeEventListener("keyup",this.inputEventFn),this.onDeselected(),this._iosEventFn&&window.removeEventListener("touchend",this._iosEventFn)}onPointerClick(e){lo&&console.log("CLICK",e,N.active),N.activeTime=this.context.time.time,N.active!==this&&this.startCoroutine(this.activeLoop(),2),this.selectInputField()}*activeLoop(){for(this.onSelected();N.active===this&&!(this.context.input.getPointerUp(0)&&this.context.time.time-N.activeTime>.2);)this.setTextFromInputField(),yield;this.onDeselected()}onSelected(){if(N.active!==this&&(lo&&console.log("Select",this.name,this,N.htmlField,this.context.isInXR,this.context.arOverlayElement,this.textComponent?.text,N.htmlField?.value),N.active?.onDeselected(),N.active=this,this.placeholder&&R.setActive(this.placeholder.gameObject,!1),N.htmlField)){if(N.htmlField.value=this.textComponent?.text||"",lo&&console.log("set input field value",N.htmlField.value),this.context.isInXR){let e=this.context.arOverlayElement;e&&(N.htmlField.style.width="0px",N.htmlField.style.height="0px",e.append(N.htmlField))}this.selectInputField()}}onDeselected(){N.active===this&&(N.active=null,lo&&console.log("Deselect",this.name,this),N.htmlField&&(N.htmlField.blur(),document.body.append(N.htmlField),N.htmlField.style.width="",N.htmlField.style.height=""),this.placeholder&&(!this.textComponent||this.textComponent.text.length<=0)&&R.setActive(this.placeholder.gameObject,!0),this.onEndEdit?.invoke())}onInput(e){if(N.active===this){if(lo&&console.log(e.code,e,N.htmlField?.value,this.textComponent?.text),e.code==="Escape"||e.code==="Enter"){this.onDeselected();return}N.htmlField&&(this.textComponent&&(this.setTextFromInputField(),this.placeholder&&R.setActive(this.placeholder.gameObject,this.textComponent.text.length<=0)),this.selectInputField())}}setTextFromInputField(){if(this.textComponent&&N.htmlField){if(this.textComponent.text!==N.htmlField.value){lo&&console.log("VALUE CHANGED");let e=this.textComponent.text,t=N.htmlField.value;this.onValueChanged?.invoke(t,e)}this.textComponent.text=N.htmlField.value}}selectInputField(){N.htmlField&&(N.htmlField.setSelectionRange(N.htmlField.value.length,N.htmlField.value.length),N.htmlField.focus())}processInputOniOS(){let e=this.context.physics.raycast();if(!e.length)return;let i=e[0].object,n=Vu(i);(n?.gameObject===this.gameObject||n?.gameObject.parent===this.gameObject)&&this.selectInputField()}},Pt=N;I(Pt,"active",null),I(Pt,"activeTime",-1),I(Pt,"htmlField",null),v([y(Ie)],Pt.prototype,"textComponent",2),v([y(Ie)],Pt.prototype,"placeholder",2),v([y(ue)],Pt.prototype,"onValueChanged",2),v([y(ue)],Pt.prototype,"onEndEdit",2);import*as Jm from"three-mesh-ui";import*as Ea from"three";var Zm=(a=>(a[a.fr=0]="fr",a[a.ru=1]="ru",a[a.de=2]="de",a[a.es=3]="es",a[a.el=4]="el",a[a.nord=5]="nord",a[a.eng=6]="eng",a))(Zm||{}),xs=class extends Ve{font;text;keymap;padding;margin;fontSize;borderRadius;colors={keyboardBack:8750469,panelBack:2500134,button:3552822,hovered:1842204,selected:1088605};awake(){super.awake();let e=Zm[this.keymap||6];this.makeKeyboard(e)}onEnable(){this.addShadowComponent(this.keyboard)}onDisable(){this.removeShadowComponent()}keyboard=null;_lastKeyPressed;_lastKeyPressedStartTime=0;_lastKeyPressedTime=0;makeKeyboard(e){!e&&!navigator.language&&(e="en");let t=this.font?this.font:"arial",i=R.getComponent(this.gameObject,bt);if(!i){console.error("Missing rect transform, please add this component inside a canvas");return}let n={...i.getBasicOptions(),margin:this.margin||0,padding:this.padding||0,language:e,fontFamily:ts+"/"+t+"-msdf.json",fontTexture:ts+"/"+t+".png",fontSize:this.fontSize||6,backgroundColor:new Ea.Color(this.colors.keyboardBack),backspaceTexture:ts+"/backspace.png",shiftTexture:ts+"/shift.png",enterTexture:ts+"/enter.png",borderRadius:this.borderRadius||0,autoLayout:!1},r=this.gameObject.scale;n.width*=this.gameObject.scale.x,n.height*=this.gameObject.scale.y,n.fontSize*=Math.max(r.x,r.y),this.keyboard=new Jm.Keyboard(n),this.gameObject.scale.set(1,1,1),this.keyboard.keys.forEach(s=>{s.setupState({state:"normal",attributes:{offset:.003,backgroundColor:new Ea.Color(this.colors.button),backgroundOpacity:1}}),s.setState("normal"),s.setupState({state:"hovered",attributes:{offset:.3,backgroundColor:new Ea.Color(this.colors.hovered),backgroundOpacity:1}}),s.setupState({state:"pressed",attributes:{offset:.1,backgroundColor:new Ea.Color(this.colors.selected),backgroundOpacity:1},onSet:()=>{let a=s.info.input,c=s.info.command;if(this._lastKeyPressed!==a)this._lastKeyPressedStartTime=this.context.time.time;else if(this.context.time.time-this._lastKeyPressedTime>.05)this._lastKeyPressedStartTime=this.context.time.time;else if(this.context.time.time-this._lastKeyPressedStartTime<.5||c=="switch"||c=="shift"||c=="switch-set"){this._lastKeyPressedTime=this.context.time.time;return}if(this._lastKeyPressedTime=this.context.time.time,this._lastKeyPressed=a,c)switch(c){case"switch":this.keyboard.setNextPanel();break;case"switch-set":this.keyboard.setNextCharset();break;case"enter":this.tryAppend(`
248
- `);break;case"space":this.tryAppend(" ");break;case"backspace":if(!this.text?.text?.length)break;this.text?.text&&(this.text.text=this.text.text.substring(0,this.text.text.length-1)||"");break;case"shift":this.keyboard.toggleCase();break}else s.info.input!==void 0&&this.tryAppend(s.info.input)}})})}tryAppend(e){this.text&&(this.text.text+=e,this.markDirty())}};import*as ot from"three";import{Color as kx}from"three";function ah(o){return o*Math.PI/180}var $m=300,lh=P("debuglights");var Xe=class extends M{type=0;range=1;spotAngle=1;innerSpotAngle=1;color=new ot.Color(16777215);set shadowNearPlane(e){if(e!==this._shadowNearPlane&&(this._shadowNearPlane=e,this.light?.shadow?.camera!==void 0)){let t=this.light.shadow.camera;t.near=e}}get shadowNearPlane(){return this._shadowNearPlane}_shadowNearPlane=.1;set shadowBias(e){e!==this._shadowBias&&(this._shadowBias=e,this.light?.shadow?.bias!==void 0&&(this.light.shadow.bias=e,this.light.shadow.needsUpdate=!0))}get shadowBias(){return this._shadowBias}_shadowBias=0;set shadowNormalBias(e){e!==this._shadowNormalBias&&(this._shadowNormalBias=e,this.light?.shadow?.normalBias!==void 0&&(this.light.shadow.normalBias=e,this.light.shadow.needsUpdate=!0))}get shadowNormalBias(){return this._shadowNormalBias}_shadowNormalBias=1;_overrideShadowBiasSettings=!1;set shadows(e){this._shadows=e,this.light&&(this.light.castShadow=e!==0,this.updateShadowSoftHard())}get shadows(){return this._shadows}_shadows=1;lightmapBakeType=4;set intensity(e){if(this._intensity=e,this.light){let t=1;if(this.context.isInXR&&this._webARRoot){let i=this._webARRoot?.arScale;typeof i=="number"&&i>0&&(t/=i)}this.light.intensity=e*t}}get intensity(){return this._intensity}_intensity=-1;get shadowDistance(){let e=this.light;return e?e.shadow.camera.far:-1}set shadowDistance(e){this._shadowDistance=e;let t=this.light;if(t){let i=t.shadow.camera;i.far=e,i.updateProjectionMatrix()}}_shadowDistance;shadowWidth;shadowHeight;get shadowResolution(){let e=this.light;return e?e.shadow.mapSize.x:-1}set shadowResolution(e){if(e===this._shadowResolution)return;this._shadowResolution=e;let t=this.light;t&&(t.shadow.mapSize.set(e,e),t.shadow.needsUpdate=!0)}_shadowResolution=void 0;get isBaked(){return this.lightmapBakeType===2}get selfIsLight(){if(this.gameObject.isLight===!0)return!0;switch(this.gameObject.type){case"SpotLight":case"PointLight":case"DirectionalLight":return!0}return!1}light=void 0;getWorldPosition(e){return this.light?this.type===1?this.light.getWorldPosition(e).multiplyScalar(1):this.light.getWorldPosition(e):e}updateIntensity(){this.intensity=this._intensity}awake(){this.color=new ot.Color(this.color??16777215)}onEnable(){this.createLight(),!this.isBaked&&(this.light&&(this.selfIsLight||this.light.parent!==this.gameObject&&this.gameObject.add(this.light)),this.type===1&&this.startCoroutine(this.updateMainLightRoutine(),2),this._webXRStartedListener=V.addEventListener("xrStarted",this.onWebXRStarted.bind(this)),this._webXREndedListener=V.addEventListener("xrStopped",this.onWebXREnded.bind(this)))}onDisable(){V.removeEventListener("xrStarted",this._webXRStartedListener),V.removeEventListener("xrStopped",this._webXREndedListener)}_webXRStartedListener;_webXREndedListener;_webARRoot;onWebXRStarted(){this._webARRoot=R.getComponentInParent(this.gameObject,ft)??void 0,this.startCoroutine(this._updateLightIntensityInARRoutine())}*_updateLightIntensityInARRoutine(){for(;this.context.isInAR;){yield,this.updateIntensity();for(let e=0;e<30;e++)yield}}onWebXREnded(){this.updateIntensity()}createLight(){let e=this.selfIsLight;if(e&&!this.light)switch(this.light=this.gameObject,this._intensity=this.light.intensity,this.type){case 1:this.setDirectionalLight(this.light);break}else if(!this.light)switch(this.type){case 1:let t=new ot.DirectionalLight(this.color,this.intensity*Math.PI);if(t.position.set(0,0,-$m*.5).applyQuaternion(this.gameObject.quaternion),this.gameObject.add(t.target),hn(t.target,0,0,0),this.light=t,this.gameObject.position.set(0,0,0),this.gameObject.rotation.set(0,0,0),lh){let s=new ot.DirectionalLightHelper(this.light,.2,this.color);this.context.scene.add(s)}break;case 0:let i=new ot.SpotLight(this.color,this.intensity*Math.PI,this.range,ah(this.spotAngle/2),1-ah(this.innerSpotAngle/2)/ah(this.spotAngle/2),2);i.position.set(0,0,0),i.rotation.set(0,0,0),this.light=i;let n=i.target;i.add(n),n.position.set(0,0,this.range),n.rotation.set(0,0,0);break;case 2:let r=new ot.PointLight(this.color,this.intensity*Math.PI,this.range);this.light=r;break}if(this.light){this._intensity>=0?this.light.intensity=this._intensity:this._intensity=this.light.intensity,this.shadows!==0?this.light.castShadow=!0:this.light.castShadow=!1,this._shadowResolution!==void 0&&this._shadowResolution>4?(this.light.shadow.mapSize.width=this._shadowResolution,this.light.shadow.mapSize.height=this._shadowResolution):(this.light.shadow.mapSize.width=2048,this.light.shadow.mapSize.height=2048),lh&&console.log("Override shadow bias?",this._overrideShadowBiasSettings,this.shadowBias,this.shadowNormalBias),this._overrideShadowBiasSettings===!0?(this.light.shadow.bias=this.shadowBias,this.light.shadow.normalBias=this.shadowNormalBias):(this.light.shadow.bias=this.shadowBias*1e-5,this.light.shadow.normalBias=this.shadowNormalBias*1e-4),this.updateShadowSoftHard();let t=this.light.shadow.camera;if(t.near=this.shadowNearPlane,this._shadowDistance!==void 0&&typeof this._shadowDistance=="number"?t.far=this._shadowDistance:t.far=$m*Math.abs(this.gameObject.scale.z),this.gameObject.scale.set(1,1,1),this.shadowWidth!==void 0)t.left=-this.shadowWidth/2,t.right=this.shadowWidth/2;else{let i=this.gameObject.scale.x;t.left*=i,t.right*=i}if(this.shadowHeight!==void 0)t.top=this.shadowHeight/2,t.bottom=-this.shadowHeight/2;else{let i=this.gameObject.scale.y;t.top*=i,t.bottom*=i}this.light.shadow.needsUpdate=!0,lh&&this.context.scene.add(new ot.CameraHelper(t)),this.isBaked?this.light.removeFromParent():e||this.gameObject.add(this.light)}}*updateMainLightRoutine(){for(;;){this.type===1&&((!this.context.mainLight||this.intensity>this.context.mainLight.intensity)&&(this.context.mainLight=this),yield);break}}updateShadowSoftHard(){!this.light||this.shadows===2||(this.light.shadow.radius=1,this.light.shadow.blurSamples=1)}setDirectionalLight(e){e.add(e.target),e.target.position.set(0,0,-1)}};I(Xe,"allowChangingRendererShadowMapType",!0),v([y()],Xe.prototype,"type",2),v([y(kx)],Xe.prototype,"color",2),v([y()],Xe.prototype,"shadowNearPlane",1),v([y()],Xe.prototype,"shadowBias",1),v([y()],Xe.prototype,"shadowNormalBias",1),v([y()],Xe.prototype,"shadows",1),v([y()],Xe.prototype,"lightmapBakeType",2),v([y()],Xe.prototype,"intensity",1),v([y()],Xe.prototype,"shadowDistance",1),v([y()],Xe.prototype,"shadowResolution",1);var z3=new ot.Vector3(0,0,0);import*as bc from"three";import{Vector3 as Mx}from"three";var ws=P("debugLODs"),Ix=P("noLODs");var tn=class{screenRelativeTransitionHeight;distance;renderers};v([y()],tn.prototype,"screenRelativeTransitionHeight",2),v([y()],tn.prototype,"distance",2),v([y()],tn.prototype,"renderers",2);var ch=class{model;renderers;constructor(e,t){this.model=t,this.renderers=[];for(let i of t.renderers){let n=this.findRenderer(i,e.gameObject);n&&n.gameObject?this.renderers.push(n):ws&&console.warn("Renderer not found: "+i,e.gameObject)}}findRenderer(e,t){let i=R.foreachComponent(t,n=>n.guid===e||Object.getPrototypeOf(n)?.guid===e?n:null);if(i)return i;for(let n of t.children){let r=this.findRenderer(e,n);if(r)return r}return null}},br=class extends M{fadeMode=0;localReferencePoint=void 0;lodCount=0;size=0;animateCrossFading=!1;lodModels;_lods=[];_settings=[];_lodsHandler;start(){if(!Ix&&!this._lodsHandler&&!!this.gameObject&&(ws&&console.log(this),this.lodModels&&Array.isArray(this.lodModels))){let e=0,t=[];for(let n of this.lodModels){e=Math.max(n.distance,e);let r=new ch(this,n);this._lods.push(r);for(let s of r.renderers)t.includes(s)||t.push(s)}this._lodsHandler=new Array;for(let n=0;n<t.length;n++){let r=new bc.LOD;this._lodsHandler.push(r),this.gameObject.add(r)}let i=new bc.Object3D;ws&&console.log(t);for(let n=0;n<t.length;n++){let r=t[n],s=this._lodsHandler[n],a=r.gameObject,c=0,d=0;ws&&console.log(n,a.name);for(let u of this._lods){let h=null;u.renderers.includes(r)?h=a:h=i,ws&&console.log("add",u.model.distance,h.name);let g=u.model.distance;d=g-c,c=Math.max(g,c),this.onAddLodLevel(s,h,g)}let l=c+d;ws&&console.log("cull",l),this.onAddLodLevel(s,i,l)}}}update(){if(!this.gameObject||!this._lodsHandler)return;let e=this.context.mainCamera;if(!!e)for(let t of this._lodsHandler)t.update(e)}onAddLodLevel(e,t,i){e.addLevel(t,i*this._distanceFactor);let n={lod:e,levelIndex:e.levels.length-1,distance:i};this._settings.push(n)}_distanceFactor=1;distanceFactor(e){if(e!==this._distanceFactor){this._distanceFactor=e;for(let t of this._settings){let i=t.lod.levels[t.levelIndex];i.distance=t.distance*e}}}};v([y(Mx)],br.prototype,"localReferencePoint",2),v([y(tn)],br.prototype,"lodModels",2);var Ax=P("logstats"),Es=class extends M{onEnable(){console.log(this),Ax&&this.startCoroutine(this.run(),4)}*run(){for(;this.enabled;){let e=this.context.renderer.info;console.log(e.memory,e.render,e.programs),yield}}};var dh=P("debugnestedgltf"),co=class extends M{filePath;_isLoadingOrDoneLoading=!1;listenToProgress(e){this.filePath?.beginListenDownload(e)}preload(){this.filePath?.preload()}async start(){if(this._isLoadingOrDoneLoading)return;dh&&console.log(this,this.guid);let e=this.gameObject.parent;if(e){this._isLoadingOrDoneLoading=!0;let t=new Ue;t.idProvider=new Re(this.hash(this.guid)),t.parent=e,this.gameObject.updateMatrix();let i=this.gameObject.matrix;dh&&console.log("Load nested:",this.filePath?.uri??this.filePath,this.gameObject.position);let n=await this.filePath?.instantiate?.call(this.filePath,t);n&&(n.matrixAutoUpdate=!1,n.matrix.identity(),n.applyMatrix4(i),n.matrixAutoUpdate=!0,n.layers.disableAll(),n.layers.set(this.layer)),this.destroy(),dh&&console.log("Nested loading done:",this.filePath?.uri??this.filePath,n)}}hash(e){let t=0;for(let i=0;i<e.length;i++)t=e.charCodeAt(i)+((t<<5)-t);return t}};v([y(et)],co.prototype,"filePath",2);import{Quaternion as Dx,Euler as Lx,Vector3 as uo,Plane as jx}from"three";var nn=class extends M{referenceSpace;from;affectPosition=!1;affectRotation=!1;alignLookDirection=!1;levelLookDirection=!1;levelPosition=!1;positionOffset=new uo(0,0,0);rotationOffset=new uo(0,0,0);offset=new uo(0,0,0);update(){if(!this.from)return;var e=B(this.from),t=me(this.from);this.offset.copy(this.positionOffset);let i=this.offset.length();if(this.referenceSpace&&this.offset.transformDirection(this.referenceSpace.matrixWorld).multiplyScalar(i),e.add(this.offset),this.levelPosition&&this.referenceSpace){let a=new jx(this.gameObject.up,0),c=B(this.referenceSpace);a.setFromNormalAndCoplanarPoint(this.gameObject.up,c);let d=new uo(0,0,0);a.projectPoint(e,d),e.copy(d)}this.affectPosition&&ie(this.gameObject,e);let n=new Lx(this.rotationOffset.x,this.rotationOffset.y,this.rotationOffset.z),r=new Dx().setFromEuler(n);this.affectRotation&&Ze(this.gameObject,t.multiply(r));let s=new uo;this.from.getWorldDirection(s).multiplyScalar(50),this.levelLookDirection&&(s.y=0),this.alignLookDirection&&this.gameObject.lookAt(s)}};v([y(R)],nn.prototype,"referenceSpace",2),v([y(R)],nn.prototype,"from",2),v([y(uo)],nn.prototype,"positionOffset",2),v([y(uo)],nn.prototype,"rotationOffset",2);import{Vector3 as vc,Quaternion as Hx,Matrix4 as uh}from"three";var vF=new vc(1,1,1),yF=new vc(0,0,1),_F=Symbol("emitterMatrix"),vr=class{constructor(e,t,i,n){this.system=e;this.particleSystem=t;this.subSystem=i;this.subParticleSystem=n;this.subParticleSystem&&this.subParticleSystem&&(this.subParticleSystem.onlyUsedByOther=!0);let r=1e3;this._circularBuffer=new ki(()=>new uh,r)}type="NeedleParticleSubEmitter";q_=new Hx;v_=new vc;v2_=new vc;_emitterMatrix=new uh;_circularBuffer;clone(){throw new Error("Method not implemented.")}initialize(e){e.emissionState={burstIndex:0,burstWaveIndex:0,time:0,waitEmiting:0},this._emitterMatrix.copy(this.subSystem.matrixWorld).invert().premultiply(this.system.matrixWorld)}update(e,t){if(this.subSystem.currentParticles>=this.subSystem.main.maxParticles||!this.subParticleSystem||!e.emissionState)return;let i=new uh;i.set(1,0,0,e.position.x,0,1,0,e.position.y,0,0,1,e.position.z,0,0,0,1),this.particleSystem.worldSpace||i.multiplyMatrices(this._emitterMatrix,i),this.subParticleSystem.emit(t,e.emissionState,i)}frameUpdate(e){}toJSON(){}};import*as Ts from"three";import{AxesHelper as Fx,Material as eg,Mesh as tg,Object3D as Bx,Quaternion as hh,Vector3 as Ca,Vector4 as Ux}from"three";import{BatchedParticleRenderer as Gx,ConstantColor as Vx,ConstantValue as zx,ParticleSystem as Wx,RenderMode as yc,TrailParticle as ig}from"three.quarks";var lg=P("debugparticles"),yr=class{particleSystem;_deserialize(e){let t=this.particleSystem;t&&!(t instanceof ve)&&typeof t.guid=="string"&&(lg&&console.log("DESERIALIZE SUBEMITTER",t),this.particleSystem=void 0,this.particleSystem=R.findByGuid(t.guid,e.scene))}},rn=class extends M{renderMode;particleMaterial;trailMaterial;particleMesh;get transparent(){return this.particleMaterial?.transparent??!1}getMaterial(e=!1){return e===!0&&this.trailMaterial?this.trailMaterial:this.particleMaterial}getMesh(){let e=null;return this.particleMesh instanceof tg&&(e=this.particleMesh.geometry),e===null&&(e=new Ts.BoxGeometry(1,1,1)),new tg(e,this.getMaterial())}};v([y()],rn.prototype,"renderMode",2),v([y(eg)],rn.prototype,"particleMaterial",2),v([y(eg)],rn.prototype,"trailMaterial",2);var Cs=class{_curve;constructor(e){this._curve=e}type="function";genValue(e){return this._curve.evaluate(e,Math.random())}toJSON(){throw new Error("Method not implemented.")}clone(){throw new Error("Method not implemented.")}};var Ta=class{type="value";toJSON(){throw new Error("Method not implemented.")}clone(){throw new Error("Method not implemented.")}system;constructor(e){this.system=e}},ph=class extends Ta{genValue(){return this.system.textureSheetAnimation.getStartIndex()}},fh=class extends Ta{_lastPosition=new Ca;_lastDistance=0;update(){let e=B(this.system.gameObject);this._lastDistance=this._lastPosition.distanceTo(e),this._lastPosition.copy(e)}genValue(){if(this.system.currentParticles>=this.system.maxParticles)return 0;let e=this.system.emission.rateOverTime.evaluate(this.system.time/this.system.duration,Math.random());if(this.system.deltaTime>0){let n=this.system.emission.rateOverDistance.evaluate(this.system.time/this.system.duration,Math.random()),s=this._lastDistance/this.system.deltaTime*n;Number.isFinite(s)||(s=0),e+=s}let t=this.system.emission.getBurst();t>0&&(e+=t/this.system.deltaTime);let i=this.system.maxParticles-this.system.currentParticles;return H.clamp(e,0,i/this.system.deltaTime)}},mh=class extends Ta{genValue(){return 0}},_r=class{system;get scaleFactorDiff(){return this.system.worldScale.x-this.system.scale}constructor(e){this.system=e}initialize(e){}update(e,t){}frameUpdate(e){}toJSON(){throw new Error("Method not implemented.")}clone(){throw new Error("Method not implemented.")}},gh=class extends _r{type="NeedleTextureSheet";update(e,t){let i=this.system.textureSheetAnimation;if(i.enabled){let n=e.age/e.life,r=i.evaluate(n);r!==void 0&&(e.uvTile=r)}}},bh=class extends _r{type="NeedleRotation";update(e,t){if(e.rotation===void 0)return;let i=e.age/e.life;if(typeof e.rotation=="number"&&(this.system.rotationOverLifetime.enabled?e.rotation+=this.system.rotationOverLifetime.evaluate(i)*t:this.system.renderer.renderMode===0&&(e.rotation=Math.PI),this.system.rotationBySpeed.enabled)){let n=e.velocity.length();e.rotation+=this.system.rotationBySpeed.evaluate(i,n)*t}}},ng=Symbol("sizeLerpFactor"),vh=class extends _r{type="NeedleSize";initialize(e){e[ng]=Math.random()}update(e,t){if(this.system.renderer.renderMode!==4){let i=e.age/e.life,n=1;this.system.sizeOverLifetime.enabled&&(n*=this.system.sizeOverLifetime.evaluate(i,void 0,e[ng]).x);let r=this.system.worldScale.x/this.system.cameraScale;e.size=e.startSize*n*r}}},_c=Symbol("particleLife"),xc=Symbol("trailLifetime"),rg=Symbol("trailStartLength"),yh=class extends _r{type="NeedleTrail";initialize(e){e instanceof ig&&(e[_c]=e.life,e[xc]=e.life,this.system.trails.enabled&&this.system.trails.dieWithParticles===!1&&(e[xc]=this.system.trails.lifetime.evaluate(Math.random(),Math.random()),e.life+=e[xc]),e[rg]=e.length)}update(e){if(this.system.trails?.enabled&&e instanceof ig){let t=e,i=e.age/e[_c],n=e.previous.values(),r=e.previous.length;for(let s=0;s<r;s++){let c=n.next().value,d=1-s/(r-1);c.size=this.system.trails.getWidth(e.size,i,d),c.color.copy(e.color),this.system.trails.getColor(c.color,i,d)}if(e.age>e[_c]){e.velocity.set(0,0,0);let s=(e.age-e[_c])/e[xc];t.length=H.lerp(e[rg],0,s)}}}},wc=Symbol("startVelocity"),og=Symbol("gravityModifier"),Ec=Symbol("velocity lerp factor"),sg=new Ca,gB=new hh,_h=class extends _r{type="NeedleVelocity";_gravityDirection=new Ca;initialize(e){let t=1+this.scaleFactorDiff;e.startSpeed=this.system.main.startSpeed.evaluate(Math.random(),Math.random())*t,e.velocity.copy(this.system.shape.getDirection(e.position)).multiplyScalar(e.startSpeed),this.system.inheritVelocity?.enabled&&this.system.inheritVelocity.applyInitial(e.velocity),e[wc]?e[wc].copy(e.velocity):e[wc]=e.velocity.clone();let i=this.system.main.gravityModifier.evaluate(Math.random(),Math.random())/(9.81*2);e[og]=i,e[Ec]=Math.random(),this._gravityDirection.set(0,-1,0),this.system.main.simulationSpace===0&&this._gravityDirection.applyQuaternion(this.system.worldQuaternionInverted)}update(e,t){let i=e[wc],n=e[og];n!==0&&(sg.copy(this._gravityDirection).multiplyScalar(n),i.add(sg)),e.velocity.copy(i);let r=e.age/e.life;this.system.inheritVelocity?.enabled&&this.system.inheritVelocity.applyCurrent(e.velocity,r,e[Ec]);let s=this.system.noise;s.enabled&&s.apply(0,e.position,e.velocity,t,e.age,e.life);let a=this.system.sizeBySpeed;a?.enabled&&(e.size=a.evaluate(e.velocity,r,e[Ec],e.size));let c=this.system.colorBySpeed;c?.enabled&&c.evaluate(e.velocity,e[Ec],e.color);let d=this.system.velocityOverLifetime;d.enabled&&d.apply(0,e.position,e.velocity,t,e.age,e.life);let l=this.system.limitVelocityOverLifetime;l.enabled&&l.apply(e.position,i,e.velocity,e.size,r,t,1)}},ag=Symbol("colorLerpFactor"),xh=class extends _r{type="NeedleColor";initialize(e){let t=this.system.main.startColor.evaluate(e.age/e.life,Math.random());e.startColor.set(t.r,t.g,t.b,t.alpha),e.color.copy(e.startColor),e[ag]=Math.random()}update(e,t){if(this.system.colorOverLifetime.enabled){let i=e.age/e.life,n=this.system.colorOverLifetime.color.evaluate(i,e[ag]);e.color.set(n.r,n.g,n.b,n.alpha).multiply(e.startColor)}else e.color.copy(e.startColor)}},wh=class{system;emission;get anim(){return this.system.textureSheetAnimation}constructor(e){this.system=e,this.emission=new fh(this.system)}update(){this.emission.update()}autoDestroy;get looping(){return this.system.main.loop}get duration(){return this.system.duration}get shape(){return this.system.shape}get startLife(){return new Cs(this.system.main.startLifetime)}get startSpeed(){return new Cs(this.system.main.startSpeed)}get startRotation(){return new Cs(this.system.main.startRotation)}get startSize(){return new Cs(this.system.main.startSize)}startLength;get startColor(){return new Vx(new Ux(1,1,1,1))}get emissionOverTime(){return this.emission}get emissionOverDistance(){return new mh(this.system)}emissionBursts;onlyUsedByOther;behaviors=[];get instancingGeometry(){return this.system.renderer.getMesh().geometry}get renderMode(){if(this.system.trails.enabled===!0)return yc.Trail;switch(this.system.renderer.renderMode){case 0:return yc.BillBoard;case 4:return yc.LocalSpace}return yc.BillBoard}rendererEmitterSettings={startLength:new zx(220),followLocalOrigin:!1};get speedFactor(){return this.system.main.simulationSpeed}get texture(){let e=this.system.renderer.getMaterial(this.system.trails.enabled);if(e&&e.map){let t=e.map;return t.premultiplyAlpha=!1,t.encoding=Ts.LinearEncoding,t}return Tl(new q(1,1,1,1),1)}get startTileIndex(){return new ph(this.system)}get uTileCount(){return this.anim.enabled?this.anim?.numTilesX:void 0}get vTileCount(){return this.anim.enabled?this.anim?.numTilesY:void 0}get renderOrder(){return 1}get blending(){return this.system.renderer.particleMaterial?.blending??Ts.NormalBlending}get transparent(){return this.system.renderer.transparent}get worldSpace(){return this.system.main.simulationSpace===1}},Eh=class{burstIndex=0;burstWaveIndex=0;time=0;waitEmiting=0},Ch=class extends M{play(e=!1){e&&R.foreachComponent(this.gameObject,t=>{t instanceof Ch&&t!==this&&t.play(!1)},!0),this._isPlaying=!0,this._time=0,this._particleSystem&&(this._particleSystem.emissionState.time=0,this._particleSystem.emitEnded=!1),this.emission?.reset()}pause(){this._isPlaying=!1}stop(){this._isPlaying=!1,this._time=0}_state;emit(e){if(this._particleSystem){e=Math.min(e,this.maxParticles-this.currentParticles),this._state||(this._state=new Eh),this._state.waitEmiting=e,this._state.time=0;let t=this._particleSystem.emitEnded;this._particleSystem.emitEnded=!1,this._particleSystem.emit(this.deltaTime,this._state,this._particleSystem.emitter.matrixWorld),this._particleSystem.emitEnded=t}}colorOverLifetime;main;emission;sizeOverLifetime;shape;noise;trails;velocityOverLifetime;limitVelocityOverLifetime;inheritVelocity;colorBySpeed;textureSheetAnimation;rotationOverLifetime;rotationBySpeed;sizeBySpeed;get renderer(){return this._renderer}get isPlaying(){return this._isPlaying}get currentParticles(){return this._particleSystem?.particleNum??0}get maxParticles(){return this.main.maxParticles}get time(){return this._time}get duration(){return this.main.duration}get deltaTime(){return this.context.time.deltaTime*this.main.simulationSpeed}get scale(){return this.gameObject.scale.x}get cameraScale(){return this._cameraScale}_cameraScale=1;get container(){return this._container}get worldspace(){return this.main.simulationSpace===1}__worldQuaternion=new hh;get worldQuaternion(){return this.__worldQuaternion}_worldQuaternionInverted=new hh;get worldQuaternionInverted(){return this._worldQuaternionInverted}_worldScale=new Ca;get worldScale(){return this._worldScale}_worldPositionFrame=-1;_worldPos=new Ca;get worldPos(){return this._worldPositionFrame!==this.context.time.frame&&(this._worldPositionFrame=this.context.time.frame,B(this.gameObject,this._worldPos)),this._worldPos}get matrixWorld(){return this._container.matrixWorld}get isSubsystem(){return this._isUsedAsSubsystem}_renderer;_batchSystem;_particleSystem;_interface;_container;_time=0;_isPlaying=!0;_isUsedAsSubsystem=!1;set bursts(e){for(let t=0;t<e.length;t++){let i=e[t];if(!(i instanceof jn)){let n=new jn;Dt(n,i),e[t]=n}}this._bursts=e}_bursts;set subEmitterSystems(e){for(let t=0;t<e.length;t++){let i=e[t];if(!(i instanceof yr)){let n=new yr;Dt(n,i),e[t]=n}}this._subEmitterSystems=e}_subEmitterSystems;awake(){if(this._subEmitterSystems&&Array.isArray(this._subEmitterSystems))for(let t of this._subEmitterSystems)t._deserialize(this.context);this._renderer=this.gameObject.getComponent(rn),this._container=new Bx,this._container.matrixAutoUpdate=!1,this.main.simulationSpace==0?this.gameObject.add(this._container):this.context.scene.add(this._container),this._batchSystem=new Gx,this._batchSystem.name=this.gameObject.name,this._container.add(this._batchSystem),this._interface=new wh(this),this._particleSystem=new Wx(this._batchSystem,this._interface),this._particleSystem.addBehavior(new vh(this)),this._particleSystem.addBehavior(new xh(this)),this._particleSystem.addBehavior(new gh(this)),this._particleSystem.addBehavior(new bh(this)),this._particleSystem.addBehavior(new _h(this)),this._particleSystem.addBehavior(new yh(this));let e=this._particleSystem.emitter;this.context.scene.add(e),lg&&(console.log(this),this.gameObject.add(new Fx(1)))}start(){this.addSubParticleSystems()}onEnable(){this.inheritVelocity&&(this.inheritVelocity.system=this),this.play()}onDisable(){}onBeforeRender(){if(this._bursts&&(this.emission.bursts=this._bursts,delete this._bursts),!this._isPlaying)return;let e=this.context.mainCamera;if(e){let n=Ae(e);this._cameraScale=n.x}let t=this._container;if(this.worldspace&&(t=this.gameObject),me(t,this.__worldQuaternion),this._worldQuaternionInverted.copy(this.__worldQuaternion).invert(),Ae(this.gameObject,this._worldScale),!this.worldspace&&this._container&&this.gameObject?.parent){let n=Ae(this.gameObject.parent);n.x=1/n.x,n.y=1/n.y,n.z=1/n.z,this._container.matrix.identity(),this._container.matrix.scale(n)}this.emission.system=this;let i=this.deltaTime;this._interface.update(),this.shape.update(this,this.context,this.main.simulationSpace,this.gameObject),this.noise.update(this.context),this.inheritVelocity?.update(this.context),this.velocityOverLifetime.update(this),this._batchSystem?.update(i),this._time+=i,this._time>this.duration&&(this._time=0)}addSubParticleSystems(){if(this._subEmitterSystems&&this._particleSystem)for(let e of this._subEmitterSystems){let t=e.particleSystem?._particleSystem;if(t){e.particleSystem._isUsedAsSubsystem=!0;let i=new vr(this,this._particleSystem,e.particleSystem,t);this._particleSystem.addBehavior(i)}}}},ve=Ch;v([y(Ln)],ve.prototype,"colorOverLifetime",2),v([y(_e)],ve.prototype,"main",2),v([y(yt)],ve.prototype,"emission",2),v([y(Kt)],ve.prototype,"sizeOverLifetime",2),v([y(ne)],ve.prototype,"shape",2),v([y(K)],ve.prototype,"noise",2),v([y(te)],ve.prototype,"trails",2),v([y(He)],ve.prototype,"velocityOverLifetime",2),v([y(de)],ve.prototype,"limitVelocityOverLifetime",2),v([y(Jt)],ve.prototype,"inheritVelocity",2),v([y(Ti)],ve.prototype,"colorBySpeed",2),v([y(xe)],ve.prototype,"textureSheetAnimation",2),v([y(Ke)],ve.prototype,"rotationOverLifetime",2),v([y(Ne)],ve.prototype,"rotationBySpeed",2),v([y(ke)],ve.prototype,"sizeBySpeed",2);import*as dg from"three";function*cg(o,e=null){let t=e?e.time:G.Current.time,i=t.time;for(;t.time-i<o;)yield}var _t=class extends M{awake(){this.context.connection.beginListen("joined-room",this.tryAssignColor.bind(this))}_didAssignPlayerColor=!1;onEnable(){this._didAssignPlayerColor||this.startCoroutine(this.waitForConnection())}*waitForConnection(){for(;!this.destroyed&&this.enabled&&(yield cg(.2),!this.tryAssignColor()););}tryAssignColor(){let e=R.getComponentInParent(this.gameObject,le);return e&&e.connectionId?(this._didAssignPlayerColor=!0,this.assignUserColor(e.connectionId),!0):!1}assignUserColor(e){let t=_t.hashCode(e),i=_t.colorFromHashCode(t);if(this.gameObject.type==="Mesh"){let n=this.gameObject;this.assignColor(i,e,n)}else if(this.gameObject.children)for(let n of this.gameObject.children){let r=n;r.material&&r.material.color&&this.assignColor(i,e,r)}}assignColor(e,t,i){let n=i.material;!n||(n._playerMaterial!==t&&(n=n.clone(),n._playerMaterial=t,i.material=n),n.color=e)}static hashCode(e){var t=0,i,n;if(e.length===0)return t;for(i=0;i<e.length;i++)n=e.charCodeAt(i),t=(t<<5)-t+n,t|=0;return t}static colorFromHashCode(e){let t=(e&16711680)>>16,i=(e&65280)>>8,n=e&255;return new dg.Color(t/255,i/255,n/255)}};import{RGBELoader as Qx}from"three/examples/jsm/loaders/RGBELoader.js";import{EXRLoader as qx}from"three/examples/jsm/loaders/EXRLoader";import{EquirectangularRefractionMapping as Yx,sRGBEncoding as Kx,TextureLoader as pg}from"three";var ug=P("debugautosync"),Th=class{_syncers={};getOrCreateSyncer(e){if(!e.guid)return null;if(this._syncers[e.guid])return this._syncers[e.guid];let t=new Rh(e);return this._syncers[e.guid]=t,t}},hg=new Th,Rh=class{comp;constructor(e){this.comp=e}hasChanges=!1;changedProperties={};data={};_boundEvent;get networkingKey(){return this.comp.constructor.name}_isReceiving=!1;_isInit=!1;init(e){if(this._isInit)return;this._isInit=!0,this.comp=e,this._boundEvent=this.onHandleSending.bind(this),this.comp.context.post_render_callbacks.push(this._boundEvent),this.comp.context.connection.beginListen(this.networkingKey,this.onHandleReceiving.bind(this));let t=this.comp.context.connection.tryGetState(this.comp.guid);t&&this.onHandleReceiving(t)}notifyChanged(e,t){this._isReceiving||(this.hasChanges=!0,this.changedProperties[e]=t)}onHandleSending(){if(!this.hasChanges)return;this.hasChanges=!1;let e=this.comp.context.connection;if(!e||!e.isConnected){for(let t in this.changedProperties)delete this.changedProperties[t];return}for(let t in this.data)delete this.data[t];this.data.guid=this.comp.guid;for(let t in this.changedProperties){let i=this.changedProperties[t];delete this.changedProperties[t],this.data[t]=i}e.send(this.networkingKey,this.data)}onHandleReceiving(e){if(!this._isInit||!this.comp)return;let t=e.guid;if(!(t&&t!==this.comp.guid)){ug&&console.log("RECEIVED",this.comp.name,this.comp.guid,e);try{this._isReceiving=!0;for(let i in e){if(i==="guid")continue;let n=e[i];this.comp[i]=n}}catch(i){console.error(i)}finally{this._isReceiving=!1}}}};function Nx(o,e){let t=e!==o;if(!t&&o&&e){if(Array.isArray(o)&&Array.isArray(e))t=!0;else if(typeof o=="object"&&typeof e=="object"){for(let i of Object.keys(o))if(o[i]!==e[i]){t=!0;break}}}return t}function Xx(o){if(o.__autoPropertySyncHandler)return o.__autoPropertySyncHandler;let e=hg.getOrCreateSyncer(o);return e?.init(o),o.__autoPropertySyncHandler=e,e}var Cc=function(o){return function(e,t){let i=null,n=o?e[o]:void 0,r=e,s=r.__internalAwake;ug&&console.log(t);let a=t+"k__BackingField";r.__internalAwake=function(){if(this[a]!==void 0)return;this[a]=this[t],s.call(this),i=hg.getOrCreateSyncer(this),Object.getOwnPropertyDescriptor(this,t)?.set===void 0&&Object.defineProperty(this,t,{set:function(d){let l=this[a];this[a]=d,Nx(d,l)&&n?.call(this,d,l)!==!1&&Xx(this)?.notifyChanged(t,d)},get:function(){return this[a]},configurable:!0,enumerable:!0}),i?.init(this)}}};var Pi=class extends M{url;allowDrop=!0;background=!0;backgroundBlurriness=0;environment=!0;_loader;_prevLoadedEnvironment;_prevEnvironment=null;_prevBackground=null;onEnable(){this.setSkybox(this.url),this.registerDropEvents()}onDisable(){this.context.scene.environment===this._prevLoadedEnvironment&&(this.context.isInXR||(this.context.scene.environment=this._prevEnvironment,this.context.scene.background=this._prevBackground),this._prevLoadedEnvironment=void 0),this.unregisterDropEvents()}async setSkybox(e){if(!e)return;if(!e?.endsWith(".hdr")&&!e.endsWith(".exr")&&console.warn("Potentially invalid skybox url",this.url,"on",this.name),!this._loader){let n=e.endsWith(".exr"),r=e.endsWith(".hdr");n?this._loader=new qx:r?this._loader=new Qx:this._loader=new pg}let t=await this._loader.loadAsync(e);if(!t||!this.enabled)return;this.url=e,t.mapping=Yx,this._loader instanceof pg&&(t.encoding=Kx),this._prevBackground=this.context.scene.background,this._prevEnvironment=this.context.scene.environment,console.log("Set skybox",this.url),this.environment&&(this.context.scene.environment=t),this.background&&(this.context.scene.background=t),this._prevLoadedEnvironment=t;let i=e.lastIndexOf("/");t.name=e.substring(i>=0?i+1:0),this.context.scene.backgroundBlurriness=this.backgroundBlurriness}dragOverEvent;dropEvent;registerDropEvents(){this.dragOverEvent||(this.dragOverEvent=e=>{if(!!this.allowDrop&&!!e.dataTransfer)for(let t of e.dataTransfer.types)t==="text/uri-list"&&e.preventDefault()},this.dropEvent=e=>{if(!!this.allowDrop&&(e.preventDefault(),!!e.dataTransfer)){for(let t of e.dataTransfer.types)if(t==="text/uri-list"){let i=e.dataTransfer.getData(t);console.log(t,i);let n=new RegExp(/polyhaven.com\/asset_img\/.+?\/(?<name>.+)\.png/).exec(i)?.groups?.name;if(n||(n=new RegExp(/polyhaven\.com\/a\/(?<name>.+)/).exec(i)?.groups?.name),console.log(n),n){let r="https://dl.polyhaven.org/file/ph-assets/HDRIs/exr/1k/"+n+"_1k.exr";this.setSkybox(r)}else console.warn("Could not resolve skybox name from dropped url",i)}}},this.context.domElement.addEventListener("dragover",this.dragOverEvent),this.context.domElement.addEventListener("drop",this.dropEvent))}unregisterDropEvents(){!this.dragOverEvent||(this.context.domElement.removeEventListener("dragover",this.dragOverEvent),this.context.domElement.removeEventListener("drop",this.dropEvent))}};v([Cc("setSkybox"),y()],Pi.prototype,"url",2),v([y()],Pi.prototype,"allowDrop",2),v([y()],Pi.prototype,"background",2),v([y()],Pi.prototype,"backgroundBlurriness",2),v([y()],Pi.prototype,"environment",2);import*as Sc from"three";import{Object3D as tw,ShaderMaterial as iw,Texture as nw,Vector2 as Sh,Vector4 as rw}from"three";function Jx(){return new Promise((o,e)=>{let i=()=>{i!=null&&(document.removeEventListener("pointerdown",i),document.removeEventListener("click",i),document.removeEventListener("dragstart",i),document.removeEventListener("touchstart",i),o())};document.addEventListener("pointerdown",i),document.addEventListener("click",i),document.addEventListener("dragstart",i),document.addEventListener("touchstart",i)})}async function fg(o){await Jx(),o()}import{PlaneGeometry as Zx,MeshBasicMaterial as $x,Mesh as ew}from"three";var Tc=class{static createPrimitive(e,t){let i;switch(e){case 0:let n=new Zx(1,1,1,1),r=t?.material??new $x({color:16777215});i=new ew(n,r)}return t?.name&&(i.name=t.name),i}};var Rc=P("debugvideo");var mg=(n=>(n[n.CameraFarPlane=0]="CameraFarPlane",n[n.CameraNearPlane=1]="CameraNearPlane",n[n.RenderTexture=2]="RenderTexture",n[n.MaterialOverride=3]="MaterialOverride",n))(mg||{}),Te=class extends M{renderer=null;playOnAwake=!0;playOnEnable;aspectMode=0;renderMode;targetMaterialProperty;targetMaterialRenderer;targetTexture;time=0;_playbackSpeed=1;get playbackSpeed(){return this.videoElement?.playbackRate??this._playbackSpeed}set playbackSpeed(e){this._playbackSpeed=e,this.videoElement&&(this.videoElement.playbackRate=e)}_isLooping=!1;get isLooping(){return this.videoElement?.loop??this._isLooping}set isLooping(e){this._isLooping=e,this.videoElement&&(this.videoElement.loop=e)}get currentTime(){return this.videoElement?.currentTime??this.time}set currentTime(e){this.videoElement?this.videoElement.currentTime=e:this.time=e}get isPlaying(){let e=this.videoElement;return e?e.currentTime>0&&!e.paused&&!e.ended&&e.readyState>e.HAVE_CURRENT_DATA:!1}get crossOrigin(){return this.videoElement?.crossOrigin??this._crossOrigin}set crossOrigin(e){this._crossOrigin=e,this.videoElement&&(e!==null?this.videoElement.setAttribute("crossorigin",e):this.videoElement.removeAttribute("crossorigin"))}get videoTexture(){return this._videoTexture}_crossOrigin="anonymous";audioOutputMode=1;source;clip=null;url=null;videoElement=null;_videoTexture=null;videoMaterial=null;_isPlaying=!1;wasPlaying=!1;setVideo(e){this.clip=e,this.source=0,this.videoElement?(this.videoElement.srcObject=e,this._isPlaying&&this.videoElement.play(),this.updateAspect()):this.create(!0)}setClipURL(e){this.url!==e&&(this.url=e,this.source=1,Rc&&console.log("set url",e),this.videoElement?(this.videoElement.src=e,this._isPlaying&&(this.stop(),this.play())):this.create(!0))}awake(){this.create(this.playOnAwake),window.addEventListener("visibilitychange",e=>{switch(document.visibilityState){case"hidden":this.wasPlaying=this._isPlaying,this.pause();break;case"visible":this.wasPlaying&&this.play();break}})}onEnable(){this.playOnEnable===!0&&this.handleBeginPlaying(!0),this.screenspace?this._overlay?.start():this._overlay?.stop()}onDisable(){this.pause()}onDestroy(){this.videoElement&&(this.videoElement.parentElement?.removeChild(this.videoElement),this.videoElement=null),this._videoTexture&&(this._videoTexture.dispose(),this._videoTexture=null)}_receivedInput=!1;constructor(){super(),fg(()=>{this._receivedInput=!0,this.updateVideoElementSettings()}),this._targetObjects=[],P("videoscreenspace")&&window.addEventListener("keydown",e=>{e.key==="f"&&(this.screenspace=!this.screenspace)})}play(){!this.videoElement||this._isPlaying&&!this.videoElement?.ended&&!this.videoElement?.paused||(this._isPlaying=!0,this._receivedInput||(this.videoElement.muted=!0),this.updateVideoElementSettings(),this.videoElement?.play().catch(e=>{console.warn(e)}),Rc&&console.log("play",this.videoElement))}stop(){this._isPlaying=!1,this.videoElement&&(this.videoElement.currentTime=0,this.videoElement.pause())}pause(){this._isPlaying=!1,this.videoElement?.pause()}create(e){let t;switch(this.source){case 0:t=this.clip;break;case 1:t=this.url;break}if(!!t){if(this.videoElement||(this.videoElement=this.createVideoElement(),this.context.domElement?.prepend(this.videoElement),this.updateVideoElementStyles()),typeof t=="string"){this.videoElement.src=t;let i=this.videoElement.captureStream?.call(this.videoElement);this.clip=i}else this.videoElement.srcObject=t;this._videoTexture||(this._videoTexture=new Sc.VideoTexture(this.videoElement)),this._videoTexture.flipY=!1,this._videoTexture.encoding=Sc.sRGBEncoding,this.handleBeginPlaying(e),Rc&&console.log(this)}}updateAspect(){this.aspectMode!==0&&this.startCoroutine(this.updateAspectImpl())}_overlay=null;get screenspace(){return this._overlay?.enabled??!1}set screenspace(e){if(e){if(!this._videoTexture)return;this._overlay||(this._overlay=new Ph(this.context)),this._overlay.add(this._videoTexture)}else this._overlay?.remove(this._videoTexture);this._overlay&&(this._overlay.enabled=e)}_targetObjects;createVideoElement(){let e=document.createElement("video");return this._crossOrigin&&e.setAttribute("crossorigin",this._crossOrigin),Rc&&console.log("create video elment",e),e}handleBeginPlaying(e){if(!this.enabled||!this.videoElement)return;this._targetObjects.length=0;let t=this.gameObject;switch(this.renderMode){case 3:t=this.targetMaterialRenderer?.gameObject,t||(t=R.getComponent(this.gameObject,ae)?.gameObject);break;case 2:console.error("VideoPlayer renderTexture not implemented yet. Please use material override instead");return}if(!t){console.error("Missing target for video material renderer",this.name,mg[this.renderMode],this);return}let i=t.material;if(i)if(this._targetObjects.push(t),i!==this.videoMaterial&&(this.videoMaterial=i.clone(),t.material=this.videoMaterial),!this.targetMaterialProperty)this.videoMaterial.map=this._videoTexture;else switch(this.targetMaterialProperty){default:this.videoMaterial.map=this._videoTexture;break}else{console.warn("Can not play video, no material found, this might be a multimaterial case which is not supported yet");return}this.updateVideoElementSettings(),this.updateVideoElementStyles(),e&&this.play()}updateVideoElementSettings(){!this.videoElement||(this.videoElement.loop=this._isLooping,this.videoElement.currentTime=this.currentTime,this.videoElement.playbackRate=this._playbackSpeed,this.videoElement.playsInline=!0,this.videoElement.muted=!this._receivedInput&&this.audioOutputMode!==0,(this.playOnAwake||this.playOnEnable)&&(this.videoElement.autoplay=!0))}updateVideoElementStyles(){!this.videoElement||(this.videoElement.style.userSelect="none",this.videoElement.style.visibility="hidden",this.videoElement.style.display="none",this.updateAspect())}_updateAspectRoutineId=-1;*updateAspectImpl(){let e=++this._updateAspectRoutineId,t=void 0,i=this.clip;for(;e===this._updateAspectRoutineId&&this.aspectMode!==0&&this.clip&&i===this.clip&&this._isPlaying;){if(!i||typeof i=="string")return;let n;for(let r of i.getVideoTracks()){let s=r.getSettings();if(s&&s.width&&s.height){n=s.width/s.height;break}else n=this.context.renderer.domElement.clientWidth/this.context.renderer.domElement.clientHeight}if(n===void 0){for(let r=0;r<10;r++)yield;if(!this.isPlaying)break;continue}if(t===n){yield;continue}for(let r of this._targetObjects){let s=1;if(r.parent){let a=Ae(r.parent);s=a.x/a.y}switch(this.aspectMode){case 1:r.scale.y=1/n*r.scale.x*s;break;case 2:r.scale.x=n*r.scale.y*s;break}}for(let r=0;r<3;r++)yield}}};v([y(tw)],Te.prototype,"renderer",2),v([y()],Te.prototype,"playOnAwake",2),v([y()],Te.prototype,"playOnEnable",2),v([y()],Te.prototype,"aspectMode",2),v([y()],Te.prototype,"renderMode",2),v([y()],Te.prototype,"targetMaterialProperty",2),v([y(ae)],Te.prototype,"targetMaterialRenderer",2),v([y(nw)],Te.prototype,"targetTexture",2),v([y()],Te.prototype,"time",2),v([y()],Te.prototype,"playbackSpeed",1),v([y()],Te.prototype,"isLooping",1);var Ph=class{context;constructor(e){this.context=e,this._input=new Oh(this)}get enabled(){return this._isInScreenspaceMode}set enabled(e){e?this.start():this.stop()}add(e){this._videos.indexOf(e)===-1&&this._videos.push(e)}remove(e){if(!e)return;let t=this._videos.indexOf(e);t>=0&&this._videos.splice(t,1)}start(){if(this._isInScreenspaceMode||this._videos.length<0)return;let e=this._videos[this._videos.length-1];if(!e)return;if(this._isInScreenspaceMode=!0,!this._screenspaceModeQuad){if(this._screenspaceModeQuad=Tc.createPrimitive(0,{material:new kh(e)}),!this._screenspaceModeQuad)return;this._screenspaceModeQuad.geometry.scale(2,2,2)}let t=this._screenspaceModeQuad;this.context.scene.add(t),this.updateScreenspaceMaterialUniforms();let i=t.material;i?.reset(),this._input?.enable(i)}stop(){this._isInScreenspaceMode=!1,this._screenspaceModeQuad&&(this._input?.disable(),this._screenspaceModeQuad.removeFromParent())}updateScreenspaceMaterialUniforms(){let e=this._screenspaceModeQuad?.material;!e||(e.screenAspect=this.context.domElement.clientWidth/this.context.domElement.clientHeight)}_videos=[];_screenspaceModeQuad;_isInScreenspaceMode=!1;_input},Oh=class{_onResizeScreenFn;_onKeyUpFn;_onMouseWheelFn;context;overlay;constructor(e){this.overlay=e,this.context=e.context}_material;enable(e){this._material=e,window.addEventListener("resize",this._onResizeScreenFn=()=>{this.overlay.updateScreenspaceMaterialUniforms()}),window.addEventListener("keyup",this._onKeyUpFn=n=>{n.key==="Escape"&&this.overlay.stop()}),window.addEventListener("wheel",this._onMouseWheelFn=n=>{this.overlay.enabled&&(e.zoom+=n.deltaY*5e-4,n.preventDefault())},{passive:!1});let t=new Sh;window.addEventListener("mousemove",n=>{if(this.overlay.enabled&&this.context.input.getPointerPressed(0)){let r=new Sh(n.movementX,n.movementY);r.x/=this.context.domElement.clientWidth,r.y/=this.context.domElement.clientHeight,t.set(r.x,r.y),t.multiplyScalar(e.zoom/-this.context.time.deltaTime*.01),e.offset=e.offset.add(t)}}),window.addEventListener("pointermove",n=>{this.overlay.enabled&&this.context.input.getPointerPressed(0)&&this.context.input.getTouchesPressedCount()===1&&(t.set(n.movementX,n.movementY),t.multiplyScalar(e.zoom*-this.context.time.deltaTime*.05),e.offset=e.offset.add(t))});let i=0;window.addEventListener("touchstart",n=>{if(n.touches.length<2){this.context.time.time-i<.3&&this.overlay.stop(),i=this.context.time.time;return}this._isPinching=!0,this._lastPinch=0}),window.addEventListener("touchmove",n=>{if(!this._isPinching||!this._material)return;let r=n.touches[0],s=n.touches[1],a=r.clientX-s.clientX,c=r.clientY-s.clientY,d=Math.sqrt(a*a+c*c);if(this._lastPinch!==0){let l=d-this._lastPinch;this._material.zoom-=l*.004}this._lastPinch=d}),window.addEventListener("touchend",()=>{this._isPinching=!1})}_isPinching=!1;_lastPinch=0;disable(){this._onResizeScreenFn&&(window.removeEventListener("resize",this._onResizeScreenFn),this._onResizeScreenFn=void 0),this._onKeyUpFn&&(window.removeEventListener("keyup",this._onKeyUpFn),this._onKeyUpFn=void 0),this._onMouseWheelFn&&(window.removeEventListener("wheel",this._onMouseWheelFn),this._onMouseWheelFn=void 0)}},kh=class extends iw{set screenAspect(e){this.uniforms.screenAspect.value=e,this.needsUpdate=!0}set offset(e){let t=this.uniforms.offsetScale.value;t.x=e.x,t.y=e.y,this.uniforms.offsetScale.value=t,this.needsUpdate=!0}_offset=new Sh;get offset(){let e=this.uniforms.offsetScale.value;return this._offset.set(e.x,e.y),this._offset}set zoom(e){let t=this.uniforms.offsetScale.value;e<.001&&(e=.001),t.z=e,this.needsUpdate=!0}get zoom(){return this.uniforms.offsetScale.value.z}reset(){this.offset=this.offset.set(0,0),this.zoom=1,this.needsUpdate=!0}constructor(e){super(),this.uniforms={map:{value:e},screenAspect:{value:1},offsetScale:{value:new rw(0,0,1,1)}},this.vertexShader=`
247
+ `,defines:{USE_LIGHTMAP:""}})}};import{AxesHelper as bx,Object3D as vx,Vector4 as yx}from"three";import{EquirectangularReflectionMapping as hx,sRGBEncoding as px,Vector3 as Xm}from"three";var hs=P("debugreflectionprobe"),Qm=P("noreflectionprobe"),fx=Symbol("reflectionProbeKey"),mx=Symbol("original material"),$i=class extends M{static get(e,t,i){if(!e||e.isObject3D!==!0||Qm)return null;let n=$i._probes.get(t);if(n){for(let r of n)if(r.__didAwake||r.__internalAwake(),r.enabled&&r.isInBox(e,i?1e-8:void 0))return hs&&console.log("Found reflection probe",e.name,r.name),r}return hs&&console.debug("Did not find reflection probe",e.name,i,e),null}_texture;set texture(e){this._texture=e}get texture(){return this._texture}center;size;_boxHelper;isInBox(e,t){return this._boxHelper?.isInBox(e,t)}constructor(){super(),$i._probes.has(this.context)||$i._probes.set(this.context,[]),$i._probes.get(this.context)?.push(this)}awake(){this._boxHelper=this.gameObject.addNewComponent(ze),this._boxHelper.updateBox(!0),hs&&this._boxHelper.showHelper(5592320,!0),this.texture&&(this.texture.mapping=hx,this.texture.encoding=px,this.texture.needsUpdate=!0)}onDestroy(){let e=$i._probes.get(this.context);if(e){let t=e.indexOf(this);t>=0&&e.splice(t,1)}}onSet(e){if(Qm||e.sharedMaterials?.length<=0||!this.texture)return;let t=$i._rendererMaterialsCache.get(e);t||(t=[],$i._rendererMaterialsCache.set(e,t));for(let i=0;i<e.sharedMaterials.length;i++){let n=e.sharedMaterials[i];if(!n||n.envMap===void 0||n.envMap===this.texture)continue;let r=t[i];if(!r||r.material!==n||r.material.version!==n.version){let a=n.clone();r?(r.copy=a,r.material=n):(r={material:n,copy:a},t.push(r)),a[fx]=this,a[mx]=n,a.envMap=this.texture,hs&&console.log("Set reflection",e.name,e.guid)}let s=r?.copy;e.sharedMaterials[i]=s}}onUnset(e){let t=$i._rendererMaterialsCache.get(e);if(t)for(let i=0;i<t.length;i++){let n=t[i];e.sharedMaterials[i]=n.material}}},$t=$i;I($t,"_probes",new Map),I($t,"_rendererMaterialsCache",new Map),v([y(Xm)],$t.prototype,"center",2),v([y(Xm)],$t.prototype,"size",2);import{Layers as lH}from"three";var gx=Symbol("customVisibilityFlag");function fc(o,e){o.layers[gx]=e}var uH=Symbol("DidPatchLayers");var qm=P("noInstancing"),Ym=!!P("debuglightmaps"),_x=P("debuginstancing"),xx=P("debugprogressive"),wx=P("noprogressive");var ps=class{path=null;asset=null;default};var th=class{_renderer;_targets=[];is(e){return this._renderer===e}constructor(e){this._renderer=e;let t=this.setMaterial.bind(this),i=this.getMaterial.bind(this),n=e.gameObject;if(this._targets=[],n)switch(n.type){case"Group":this._targets=[...n.children];break;case"SkinnedMesh":case"Mesh":this._targets.push(n);break}return new Proxy(this,{get(r,s){if(typeof s=="string"){let a=parseInt(s);if(!isNaN(a))return i(a)}return r[s]},set(r,s,a){return typeof s=="string"&&t(a,Number.parseInt(s)),Reflect.set(r,s,a)}})}get length(){return this._targets.length}setMaterial(e,t){if(t<0||t>=this._targets.length)return;let i=this._targets[t];!i||i.material===void 0||(i.material=e)}getMaterial(e){if(e<0)return null;let t=this._targets;if(e>=t.length)return null;let i=t[e];return i?i.material:null}},gc=class extends M{static setVisible(e,t){fc(e,t)}receiveShadows=!1;shadowCastingMode=ih.Off;lightmapIndex=-1;lightmapScaleOffset=new en.Vector4(1,1,0,0);enableInstancing=void 0;renderOrder=void 0;allowOcclusionWhenDynamic=!0;probeAnchor;reflectionProbeUsage=0;_lightmaps;get sharedMesh(){if(this.gameObject.type==="Mesh")return this.gameObject;if(this.gameObject.type==="SkinnesMesh")return this.gameObject;if(this.gameObject.type==="Group")return this.gameObject.children[0]}get sharedMaterial(){return this.sharedMaterials[0]}set sharedMaterial(e){this.sharedMaterials[0]=e}get material(){return this.sharedMaterials[0]}set material(e){this.sharedMaterials[0]=e}_sharedMaterials;get sharedMaterials(){return(!this._sharedMaterials||!this._sharedMaterials.is(this))&&(this._sharedMaterials=new th(this)),this._sharedMaterials}static get shouldSuppressInstancing(){return qm}_lightmapTextureOverride=void 0;get lightmap(){return this._lightmaps?.length?this._lightmaps[0].lightmap:null}set lightmap(e){if(this._lightmapTextureOverride=e,e===void 0&&(e=this.context.lightmaps.tryGetLightmap(this.sourceId,this.lightmapIndex)),this._lightmaps?.length)for(let t of this._lightmaps)t.lightmap=e}get hasLightmap(){let e=this.lightmap;return e!=null}allowProgressiveLoading=!0;registering(){this.enabled||this.setVisibility(!1)}awake(){this.clearInstancingState(),this.probeAnchor&&hs&&this.probeAnchor.add(new bx(.2)),this._reflectionProbe=null;let e=this.gameObject.type;if(this.isMultiMaterialObject(this.gameObject)){for(let t of this.gameObject.children)this.context.addBeforeRenderListener(t,this.onBeforeRenderThree.bind(this)),t.layers.mask=this.gameObject.layers.mask;if(this.renderOrder!==void 0){let t=0;for(let i=0;i<this.gameObject.children.length;i++){let n=this.gameObject.children[i];if(!(n.type!=="Mesh"||R.getComponent(n,gc))){if(this.renderOrder.length<=t){console.error("Incorrect element count",this);break}n.renderOrder=this.renderOrder[t],t+=1}}}}else this.isMeshOrSkinnedMesh(this.gameObject)&&(this.context.addBeforeRenderListener(this.gameObject,this.onBeforeRenderThree.bind(this)),this.renderOrder!==void 0&&this.renderOrder.length>0&&(this.gameObject.renderOrder=this.renderOrder[0]));if(this.lightmapIndex>=0){let t=this._lightmapTextureOverride!==void 0?this._lightmapTextureOverride:this.context.lightmaps.tryGetLightmap(this.sourceId,this.lightmapIndex);if(t){if(this._lightmaps=[],e==="Mesh"){if(!this.gameObject.material?.isMeshBasicMaterial){let i=new Bn(this.gameObject,this.context);this._lightmaps.push(i),i.init(this.lightmapIndex,this.lightmapScaleOffset,t,Ym)}}else if(this.isMultiMaterialObject(this.gameObject)){for(let i of this.gameObject.children)if(!i.material?.isMeshBasicMaterial){let n=new Bn(i,this.context);this._lightmaps.push(n),n.init(this.lightmapIndex,this.lightmapScaleOffset,t,Ym),n.bindOnBeforeRender()}}}}}_isInstancingEnabled=!1;handles=void 0;prevLayers=void 0;clearInstancingState(){this._isInstancingEnabled=!1,this.handles=void 0,this.prevLayers=void 0}setInstancingEnabled(e){if(this._isInstancingEnabled===e)return e&&(this.handles===void 0||this.handles!=null&&this.handles.length>0);if(this._isInstancingEnabled=e,e){if(this.handles===void 0){if(this.handles=Ex.setup(this.gameObject,this.context,null,{rend:this,foundMeshes:0}),this.handles)return R.markAsInstancedRendered(this.gameObject,!0),!0}else if(this.handles!==null){for(let t of this.handles)t.updateInstanceMatrix(!0),t.add();return R.markAsInstancedRendered(this.gameObject,!0),!0}}else{if(this.handles)for(let t of this.handles)t.remove();return!0}return!1}start(){if(this.enableInstancing&&!qm&&this.setInstancingEnabled(!0),this.gameObject.frustumCulled=this.allowOcclusionWhenDynamic,this.isMultiMaterialObject(this.gameObject))for(let e=0;e<this.gameObject.children.length;e++){let t=this.gameObject.children[e];t.frustumCulled=this.allowOcclusionWhenDynamic}}onEnable(){this.setVisibility(!0),this._isInstancingEnabled?this.setInstancingEnabled(!0):this.enabled&&this.applyStencil(),this.updateReflectionProbe()}onDisable(){this.setVisibility(!1),this.handles&&this.handles.length>0&&this.setInstancingEnabled(!1)}onDestroy(){this.handles=null}applyStencil(){zr.applyStencil(this)}onBeforeRender(){if(!this.gameObject)return;gc.envmap=this.scene.environment;let e=this.gameObject[cl]===!0||this.gameObject.matrixWorldNeedsUpdate;if(this.isMultiMaterialObject(this.gameObject)&&this.gameObject.children?.length>0)for(let t of this.gameObject.children)this.applySettings(t);else this.applySettings(this.gameObject);if(e&&(delete this.gameObject[cl],this.handles)){for(let i=this.handles.length-1;i>=0;i--)this.handles[i].updateInstanceMatrix();this.gameObject.matrixWorldNeedsUpdate=!1}if(this.handles&&this.handles.length<=0&&R.markAsInstancedRendered(this.gameObject,!1),this._isInstancingEnabled&&this.handles)for(let t=0;t<this.handles.length;t++){let i=this.handles[t];this.prevLayers||(this.prevLayers=[]);let n=i.object.layers.mask;t>=this.prevLayers.length?this.prevLayers.push(n):this.prevLayers[t]=n,i.object.layers.disableAll()}this.reflectionProbeUsage!==0&&this._reflectionProbe&&this._reflectionProbe.onSet(this)}onBeforeRenderThree(e,t,i,n,r,s){if(!wx&&r._didRequestTextureLOD===void 0&&this.allowProgressiveLoading&&(r._didRequestTextureLOD=0,xx&&console.log("Load material LOD",r.name),mi.assignTextureLOD(this.context,this.sourceId,r)),r.envMapIntensity!==void 0){let a=this.hasLightmap?Math.PI:1;r.envMapIntensity=Math.max(0,this.context.rendererData.environmentIntensity/a)}if(this._lightmaps)for(let a of this._lightmaps)a.onBeforeRenderThree(r)}onAfterRender(){if(this._isInstancingEnabled&&this.handles&&this.prevLayers&&this.prevLayers.length>=this.handles.length)for(let e=0;e<this.handles.length;e++){let t=this.handles[e];t.object.layers.mask=this.prevLayers[e]}this.reflectionProbeUsage!==0&&this._reflectionProbe&&this._reflectionProbe.onUnset(this)}applySettings(e){e.receiveShadow=this.receiveShadows,this.shadowCastingMode==ih.On?e.castShadow=!0:e.castShadow=!1}_reflectionProbe=null;updateReflectionProbe(){if(this._reflectionProbe=null,this.reflectionProbeUsage!==0){if(!this.probeAnchor)return;this.startCoroutine(this._updateReflectionProbe(),2)}}*_updateReflectionProbe(){let e=this.probeAnchor||this.gameObject,t=!!this.probeAnchor;this._reflectionProbe=$t.get(e,this.context,t)}setVisibility(e){if(!this.isMultiMaterialObject(this.gameObject))fc(this.gameObject,e);else for(let t of this.gameObject.children)this.isMeshOrSkinnedMesh(t)&&fc(t,e)}isMultiMaterialObject(e){return e.type==="Group"}isMeshOrSkinnedMesh(e){return e.type==="Mesh"||e.type==="SkinnedMesh"}},ae=gc;I(ae,"envmap",null),v([y()],ae.prototype,"receiveShadows",2),v([y()],ae.prototype,"shadowCastingMode",2),v([y()],ae.prototype,"lightmapIndex",2),v([y(yx)],ae.prototype,"lightmapScaleOffset",2),v([y()],ae.prototype,"enableInstancing",2),v([y()],ae.prototype,"renderOrder",2),v([y()],ae.prototype,"allowOcclusionWhenDynamic",2),v([y(vx)],ae.prototype,"probeAnchor",2),v([y()],ae.prototype,"reflectionProbeUsage",2);var so=class extends ae{},fs=class extends so{awake(){super.awake(),this.allowOcclusionWhenDynamic=!1}},ih=(n=>(n[n.Off=0]="Off",n[n.On=1]="On",n[n.TwoSided=2]="TwoSided",n[n.ShadowsOnly=3]="ShadowsOnly",n))(ih||{}),nh=class{objs=[];setup(e,t,i,n,r=0){let s=this.tryCreateOrAddInstance(e,t,n);if(s)return i===null&&(i=[]),i.push(s),i;if(r<=0&&e.type!=="Mesh"){let a=r+1;for(let c of e.children)i=this.setup(c,t,i,n,a)}return i}tryCreateOrAddInstance(e,t,i){if(e.type==="Mesh"){let n=i.foundMeshes;if(i.foundMeshes+=1,!i.rend.enableInstancing||n>=i.rend.enableInstancing.length||!i.rend.enableInstancing[n])return null;let r=e,s=r.geometry,a=r.material;for(let u of this.objs)if(!u.isFull()&&u.geo===s&&u.material===a)return u.addInstance(r);let c=new mc(e.name,s,a,200,t);return this.objs.push(c),c.addInstance(r)}return null}},Ex=new nh,rh=class{get name(){return this.object.name}instanceIndex=-1;object;instancer;constructor(e,t,i){this.instanceIndex=e,this.object=t,this.instancer=i,R.markAsInstancedRendered(t,!0)}updateInstanceMatrix(e=!1){this.instanceIndex<0||(this.object.updateWorldMatrix(!0,e),this.instancer.updateInstance(this.object.matrixWorld,this.instanceIndex))}add(){this.instanceIndex>=0||this.instancer.add(this)}remove(){this.instanceIndex<0||this.instancer.remove(this)}},oh=class{name="";geo;material;get currentCount(){return this.inst.count}context;inst;handles=[];maxCount;isFull(){return this.currentCount>=this.maxCount}constructor(e,t,i,n,r){this.name=e,this.geo=t,this.material=i,this.context=r,this.maxCount=n,_x&&(i=new en.MeshBasicMaterial({color:this.randomColor()})),this.inst=new en.InstancedMesh(t,i,n),this.inst.count=0,this.inst.layers.set(2),this.inst.visible=!0,this.context.scene.add(this.inst)}randomColor(){return new en.Color(Math.random(),Math.random(),Math.random())}addInstance(e){if(this.currentCount>=this.maxCount)return console.error("TOO MANY INSTANCES - resize is not yet implemented!",this.inst.count),null;let t=new rh(-1,e,this);return this.add(t),t}add(e){e.instanceIndex<0&&(e.instanceIndex=this.currentCount,e.instanceIndex>=this.handles.length?this.handles.push(e):this.handles[e.instanceIndex]=e),e.object.updateWorldMatrix(!0,!0),this.inst.setMatrixAt(e.instanceIndex,e.object.matrixWorld),this.inst.instanceMatrix.needsUpdate=!0,this.inst.count+=1,this.inst.count>0&&(this.inst.visible=!0)}remove(e){if(!e||e.instanceIndex<0||e.instanceIndex>=this.handles.length||this.inst.count<=0)return;if(this.handles[e.instanceIndex]!==e){console.error("instance handle is not part of renderer, was it removed before?",e.instanceIndex,this.name);let i=this.handles.indexOf(e);if(i<0)return;e.instanceIndex=i}if(this.handles[e.instanceIndex]=null,this.inst.setMatrixAt(e.instanceIndex,oh.nullMatrix),!(e.instanceIndex>=this.currentCount-1)&&this.currentCount>0){let i=this.handles[this.currentCount-1];i&&(i.instanceIndex=e.instanceIndex,i.updateInstanceMatrix(),this.handles[e.instanceIndex]=i,this.handles[this.currentCount-1]=null)}this.inst.count>0&&(this.inst.count-=1),e.instanceIndex=-1,this.inst.count<=0&&(this.inst.visible=!1),this.inst.instanceMatrix.needsUpdate=!0}updateInstance(e,t){this.inst.setMatrixAt(t,e),this.inst.instanceMatrix.needsUpdate=!0}},mc=oh;I(mc,"nullMatrix",new en.Matrix4);import{Vector3 as Km}from"three";var xa=class extends M{connectedBody;get rigidBody(){return this._rigidBody}_rigidBody=null;onEnable(){this._rigidBody||(this._rigidBody=this.gameObject.getComponent(J)),this.rigidBody&&this.connectedBody&&this.startCoroutine(this.create())}*create(){yield,this.rigidBody&&this.connectedBody&&this.createJoint(this.rigidBody,this.connectedBody)}};v([y(J)],xa.prototype,"connectedBody",2);var ms=class extends xa{createJoint(e,t){this.context.physics.addFixedJoint(e,t)}},br=class extends xa{anchor;axis;createJoint(e,t){this.axis&&this.anchor&&this.context.physics.addHingeJoint(e,t,this.anchor,this.axis)}};v([y(Km)],br.prototype,"anchor",2),v([y(Km)],br.prototype,"axis",2);import{FlyControls as Cx}from"three/examples/jsm/controls/FlyControls";var gs=class extends M{_controls=null;onEnable(){let e=R.getComponent(this.gameObject,ee)?.cam;this._controls=new Cx(e,this.context.renderer.domElement),this._controls.rollSpeed=.5,this._controls.movementSpeed=3,this._controls.dragToLook=!0}onDisable(){this._controls?.dispose(),this._controls=null}update(){this._controls&&this._controls.update(this.context.time.deltaTime)}};import{GLTFExporter as Sx}from"three/examples/jsm/exporters/GLTFExporter.js";import{BufferAttribute as sh,Matrix4 as Tx,Vector3 as Jm,Quaternion as Rx}from"three";var wa=class{constructor(e){this.writer=e,this.name="EXT_mesh_gpu_instancing"}writeNode(e,t){if(e.constructor.name!=="InstancedMesh")return;let i=this.writer,n=i.extensionsUsed,r={};t.extensions=t.extensions||{},t.extensions[this.name]=r;let s=new Tx,a=new Array,c=new Array,u=new Array;for(let g=0;g<e.count;g++){e.getMatrixAt(g,s);let E=new Jm,_=new Rx,x=new Jm;s.decompose(E,_,x),a.push(E.x,E.y,E.z),c.push(_.x,_.y,_.z,_.w),u.push(x.x,x.y,x.z)}let l=new Float32Array(a),d=new Float32Array(c),h=new Float32Array(u);r.attributes={TRANSLATION:i.processAccessor(new sh(l,3)),ROTATION:i.processAccessor(new sh(d,4)),SCALE:i.processAccessor(new sh(h,3))},n[this.name]=!0}};import{Object3D as Px,Vector3 as Ox}from"three";var bs=class extends ze{sceneRoot;start(){this.startCoroutine(this.updateGltfBox())}*updateGltfBox(){for(;;)for(let e=0;e<10;e++)yield}},ei=class extends M{binary=!0;objects=[];exporter;ext;async exportNow(e){console.log("DO EXPORT",this.objects);let t={binary:this.binary,pivot:ei.calculateCenter(this.objects)},i=await this.export(this.objects,t);this.binary?e.endsWith(".glb")||(e+=".glb"):e.endsWith(".gltf")||(e+=".gltf"),this.binary?ei.saveArrayBuffer(i,e):ei.saveJson(i,e)}async export(e,t){if(e===null||e.length<=0){console.log("no objects set to export");return}this.exporter||(this.exporter=new Sx,this.exporter.register(a=>new wa(a)),this.ext=new zo,this.ext.registerExport(this.exporter)),ei.filterTopmostParent(e);let i={trs:!1,onlyVisible:!0,truncateDrawRange:!1,binary:t?.binary??!0,maxTextureSize:1/0,embedImages:!0,includeCustomExtensions:!0,animations:ei.collectAnimations(e)},n=new Px;t?.pivot&&n.position.sub(t.pivot),console.log("EXPORT",e),e.forEach(a=>{a&&(n.children.push(a),a.matrixAutoUpdate=!1,a.matrix.copy(a.matrixWorld),R.getComponentsInChildren(a,ae).forEach(c=>{R.isActiveInHierarchy(c.gameObject)&&c.setInstancingEnabled(!1)}))});let r=new Co(n);return this.ext.context=r,new Promise((a,c)=>{try{this.exporter?.parse(n,u=>{s(),a(u)},u=>{s(),c(u)},i)}catch(u){console.error(u),c(u)}finally{console.log("FINALLY")}});function s(){e.forEach(a=>{!a||(a.matrixAutoUpdate=!0,R.getComponentsInChildren(a,ae).forEach(c=>{R.isActiveInHierarchy(c.gameObject)&&c.setInstancingEnabled(!1)}))})}}static saveArrayBuffer(e,t){this.save(new Blob([e],{type:"application/octet-stream"}),t)}static saveJson(e,t){this.save("data: text/json;charset=utf-8,"+encodeURIComponent(JSON.stringify(e)),t)}static save(e,t){let i=document.createElement("a");i.style.display="none",document.body.appendChild(i),typeof e=="string"?i.href=e:i.href=URL.createObjectURL(e),i.download=t,i.click(),i.remove()}static collectAnimations(e,t){t=t||[];for(let i of e)!i||i.traverseVisible(n=>{n.animations&&n.animations.length>0&&t.push(...n.animations)});return t}static calculateCenter(e,t){let i=t||new Ox;return i.set(0,0,0),e.forEach(n=>{i.add(B(n))}),console.log(i),i.divideScalar(e.length),i}static filterTopmostParent(e){if(!(e.length<=0))for(let t=0;t<e.length;t++){let i=e[t];if(!i){e.splice(t,1),t--;continue}for(;i.parent;){if(e.includes(i.parent)){e.splice(t,1),t--;break}i=i.parent}}}};var ao=class extends M{awake(){Ye.createIfNoneExists(this.context)}onEnable(){Ye.instance?.register(this)}onDisable(){Ye.instance?.unregister(this)}performRaycast(e=null){return null}},lo=class extends ao{targets=null;raycastHits=[];start(){this.targets=[this.gameObject]}performRaycast(e=null){return this.targets?(e??=new be,e.targets=this.targets,e.results=this.raycastHits,this.context.physics.raycast(e)):null}},vs=class extends lo{};import{Color as bc,GridHelper as kx}from"three";var Un=class extends M{isGizmo=!1;color0;color1;gridHelper;size;divisions;offset;onEnable(){if(this.isGizmo&&!Di)return;let e=this.size,t=this.divisions;this.gridHelper||(this.gridHelper=new kx(e,t,this.color0??new bc(.4,.4,.4),this.color1??new bc(.6,.6,.6)),this.offset!==void 0&&(this.gridHelper.position.y+=this.offset),this.gameObject.add(this.gridHelper))}};v([y()],Un.prototype,"isGizmo",2),v([y(bc)],Un.prototype,"color0",2),v([y(bc)],Un.prototype,"color1",2);var Gn=class extends M{reverseArrangement=!1},ys=class extends Gn{},_s=class extends Gn{},xs=class extends Gn{};import{GroundProjectedEnv as Mx}from"three/examples/jsm/objects/GroundProjectedEnv.js";var tn=class extends M{applyOnAwake=!1;set scale(e){this._scale=e,this.env?.scale.setScalar(e)}get scale(){return this._scale}_scale=20;set radius(e){this._radius=e,this.env&&(this.env.height=e)}get radius(){return this._radius}_radius=100;set height(e){this._height=e,this.env&&(this.env.height=e)}get height(){return this._height}_height=100;_lastEnvironment;env;_watcher;awake(){this.applyOnAwake&&this.updateAndCreate()}onEnable(){this.context.time.frameCount>0&&this.applyOnAwake&&this.updateAndCreate(),this._watcher||(this._watcher=new dn(this.context.scene,"environment"),this._watcher.subscribeWrite(e=>{this.updateProjection()}))}onDisable(){this._watcher?.revoke(),this.env?.removeFromParent()}updateAndCreate(){this.updateProjection(),this._watcher?.apply()}updateProjection(){if(!this.context.scene.environment){this.env?.removeFromParent();return}(!this.env||this.context.scene.environment!==this._lastEnvironment)&&(console.log("Create/Update Ground Projection",this.context.scene.environment.name),this.env=new Mx(this.context.scene.environment)),this._lastEnvironment=this.context.scene.environment,this.env.parent||this.gameObject.add(this.env),this.env.scale.setScalar(this._scale),this.env.radius=this._radius,this.env.height=this._height,this.env.isObject3D===!0&&this.env.layers.set(2)}};v([y()],tn.prototype,"applyOnAwake",2),v([y()],tn.prototype,"scale",1),v([y()],tn.prototype,"radius",1),v([y()],tn.prototype,"height",1);import*as Zm from"three-mesh-ui";import{Color as L}from"three";var Ix=P("debugtext");var Ie=class extends vt{canvas;alignment=0;verticalOverflow=0;horizontalOverflow=0;lineSpacing=1;supportRichText=!1;font;fontStyle=0;get text(){return this._text}set text(e){if(this._text=e,!this._textMeshUi&&this._text.length>0&&this.context.time.frame>0&&this.createText(e,this.getTextOpts(),this.supportRichText),this._textMeshUi){if(this._textMeshUi.length>1){this.requestRebuild();return}this._textMeshUi[0].set({content:e}),this.markDirty()}}set_text(e){this.text=e}get fontSize(){return this._fontSize}set fontSize(e){if(this._fontSize=e,this._textMeshUi){if(this._textMeshUi.length>1){this.requestRebuild();return}this._textMeshUi[0].set({content:e}),this.markDirty()}}onColorChanged(){if(this._textMeshUi){if(this._textMeshUi.length>1){this.requestRebuild();return}let e=this.color;this._textMeshUi[0].set({fontColor:e,fontOpacity:e.alpha}),this.markDirty()}}_isWaitingForRebuild=!1;requestRebuild(){this._isWaitingForRebuild||(this._isWaitingForRebuild=!0,this.startCoroutine(this.rebuildDelayedRoutine(),0))}*rebuildDelayedRoutine(){if(this._isWaitingForRebuild=!1,this._textMeshUi){for(let e of this._textMeshUi)e.removeFromParent();this._textMeshUi.length=0}this.createText(this.text,this.getTextOpts(),this.supportRichText),this.markDirty()}onCreate(e){Ix&&console.log(this);let t=this.verticalOverflow==0&&this.horizontalOverflow==0;t&&(this.context.renderer.localClippingEnabled=!0);let i=this.rectTransform;this._textContainer=this.uiObject=this.createBlock(i,t,null,!0),this.createText(this.text,this.getTextOpts(),this.supportRichText),this.uiObject,this.uiObject=this.createBlock(i,t,this.uiObject,!1)}onAfterAddedToScene(){super.onAfterAddedToScene(),this.handleTextRenderOnTop()}_text="";_fontSize=12;_textMeshUi=null;_textContainer=null;getTextOpts(){let e=this.fontSize,t={content:this.text,fontColor:this.color,fontOpacity:this.color.alpha,fontSize:e,fontKerning:"normal"};return this.font=this.font?.toLocaleLowerCase(),this.setFont(t,this.fontStyle),t}onEnable(){super.onEnable(),this._didHandleTextRenderOnTop=!1,this.uiObject&&(this.uiObject.onAfterUpdate=this.updateWidth.bind(this))}createBlock(e,t,i,n=!1){let r={};r.hiddenOverflow=t,r.interLine=(this.lineSpacing-1)*this.fontSize*1.333,this.getAlignment(r,n);let s=e.createNewBlock(r);return i&&(Array.isArray(i)?s.add(...i):s.add(i)),s}getAlignment(e,t=!1){switch(t||(e.contentDirection="row"),this.alignment){default:case 0:case 1:case 2:e.justifyContent="start";break;case 3:case 4:case 5:e.justifyContent="center";break;case 6:case 7:case 8:e.justifyContent="end";break}switch(this.alignment){case 0:case 3:case 6:e.alignContent=t?"left":"top";break;case 1:case 4:case 7:e.alignContent="center";break;case 2:case 5:case 8:e.alignContent=t?"right":"bottom";break}return e}updateWidth(){this.horizontalOverflow===1&&setTimeout(()=>{if(!this._textMeshUi)return;let e=this._textMeshUi[0].parent;if(!!e&&e.lines){let t=e.lines.reduce((i,n)=>i+n.width,0);t+=e.getFontSize()*5,t+=e.padding*2||0,t+=this.fontSize*1.5,e.set({width:t}),this.ensureShadowComponentOwner()}},1)}ensureShadowComponentOwner(){this.shadowComponent&&this.shadowComponent.traverse(e=>{e[mt]===void 0&&(e[mt]=this)})}createText(e,t,i){if(!(!e||e.length<=0))if(this._textMeshUi||(this._textMeshUi=[]),i){let n=this.getNextTag(e);if(n)n.startIndex>0&&this.createText(e.substring(0,n.startIndex),t,!1);else return this.createText(e,t,!1);let r=[];for(;n;){let s=this.getNextTag(e,n.endIndex);if(s){let a=this.getText(e,n,s);this.handleTag(n,t,r),this.createText(a,t,!1)}else{let a=e.substring(n.endIndex);this.handleTag(n,t,r),this.createText(a,t,!1)}n=s}}else{let n={...t};n.content=e;let r=new Zm.Text(n);this._textMeshUi.push(r),this._textContainer&&this._textContainer.add(r)}}_didHandleTextRenderOnTop=!1;handleTextRenderOnTop(){this._didHandleTextRenderOnTop||(this._didHandleTextRenderOnTop=!0,this.startCoroutine(this.renderOnTopCoroutine()))}*renderOnTopCoroutine(){if(!this.canvas)return;let e=[],t=this.canvas,i={renderOnTop:t.renderOnTop,depthWrite:t.depthWrite,doubleSided:t.doubleSided};for(;;){let n=!1;if(this._textMeshUi)for(let r=0;r<this._textMeshUi.length;r++){if(e[r]===!0)continue;n=!0;let s=this._textMeshUi[r];!s.textContent||(os(s,i),e[r]=!0)}if(!n)break;yield}}handleTag(e,t,i){if(e.isEndTag){if(i.length>0){let n=i.pop();if(n)for(let r in n.previousValues){let s=n.previousValues[r];t[r]=s}}}else if(e.type.includes("color")){let n=new Ea(e,{fontColor:t.fontColor});if(i.push(n),e.type.length>6){let r=e.type.substring(6);t.fontColor=Ax(r)}else t.fontColor=new L(1,1,1)}else if(e.type=="b"){let n=new Ea(e,{fontFamily:t.fontFamily,fontTexture:t.fontTexture});i.push(n),this.setFont(t,1)}else if(e.type=="i"){let n=new Ea(e,{fontFamily:t.fontFamily,fontTexture:t.fontTexture});i.push(n),this.setFont(t,2)}}getText(e,t,i){return e.substring(t.endIndex,i.startIndex)}getNextTag(e,t=0){let i=e.indexOf("<",t),n=e.indexOf(">",i);if(i>=0&&n>=0){let r=e.substring(i+1,n);return{type:r,startIndex:i,endIndex:n+1,isEndTag:r.startsWith("/")}}return null}setFont(e,t){let i=this.getFontName(t),n=i;n?.endsWith("-msdf.json")||(n+="-msdf.json"),e.fontFamily=n;let r=i;r?.endsWith(".png")||(r+=".png"),e.fontTexture=r}getFontName(e){return this.font?(this.font=Ii(this.sourceId,this.font),this.font):null}};v([y(We)],Ie.prototype,"canvas",2),v([y()],Ie.prototype,"alignment",2),v([y()],Ie.prototype,"verticalOverflow",2),v([y()],Ie.prototype,"horizontalOverflow",2),v([y()],Ie.prototype,"lineSpacing",2),v([y()],Ie.prototype,"supportRichText",2),v([y()],Ie.prototype,"font",2),v([y()],Ie.prototype,"fontStyle",2),v([y()],Ie.prototype,"text",1),v([y()],Ie.prototype,"fontSize",1);var Ea=class{tag;previousValues;constructor(e,t){this.tag=e,this.previousValues=t}};function Ax(o){if(o.startsWith("#")){let t=o.substring(1);var e=parseInt(t,16);let i=e>>16&255,n=e>>8&255,r=e&255;return new L(i/255,n/255,r/255)}switch(o){case"black":return new L(0,0,0);case"white":return new L(1,1,1);case"red":return new L(1,0,0);case"lime":return new L(0,1,0);case"blue":return new L(0,0,1);case"yellow":return new L(1,1,0);case"cyan":return new L(0,1,1);case"magenta":return new L(1,0,1);case"silver":return new L(.75,.75,.75);case"gray":return new L(.5,.5,.5);case"maroon":return new L(.5,0,0);case"olive":return new L(.5,.5,0);case"green":return new L(0,.5,0);case"purple":return new L(.5,0,.5);case"teal":return new L(0,.5,.5);case"navy":return new L(0,0,.5);case"darkred":return new L(.54,0,0);case"brown":return new L(.55,.27,0);case"firebrick":return new L(.69,.13,.13);case"crimson":return new L(.86,.08,.24);case"tomato":return new L(1,.39,.28);case"coral":return new L(1,.49,.31);case"indianred":return new L(.6,.31,.51);case"lightcoral":return new L(.94,.5,.5);case"darkorange":return new L(1,.55,0);case"orange":return new L(1,.65,0);case"gold":return new L(1,.84,0);case"darkgoldenrod":return new L(.72,.53,.04);case"goldenrod":return new L(.85,.65,.13);case"palegoldenrod":return new L(.93,.87,.67);case"darkkhaki":return new L(.74,.7,.42);case"khaki":return new L(.94,.9,.55);case"yellowgreen":return new L(.6,.8,.19);case"darkolivegreen":return new L(.33,.42,.18);case"olivedrab":return new L(.42,.56,.14);case"lawngreen":return new L(.49,.99,0);case"chartreuse":return new L(.5,1,0);case"greenyellow":return new L(.68,1,.18);case"darkgreen":return new L(0,.39,0);case"forestgreen":return new L(.13,.55,.13);case"limegreen":return new L(.19,.8,.19);case"lightgreen":return new L(.56,.93,.56);case"palegreen":return new L(.59,.98,.59);case"darkseagreen":return new L(.56,.74,.56);case"mediumspringgreen":return new L(0,.98,.6);case"springgreen":return new L(0,1,.5);case"seagreen":return new L(.18,.31,.31);case"mediumaquamarine":return new L(.4,.8,.66);case"mediumseagreen":return new L(.24,.7,.44);case"lightseagreen":return new L(.13,.7,.67);case"darkslategray":return new L(.18,.31,.31);case"darkcyan":return new L(0,.55,.55);case"aqua":return new L(0,1,1);case"lightcyan":return new L(.8,1,1);case"darkturquoise":return new L(0,.81,.82);case"turquoise":return new L(0,.82,.82);case"mediumturquoise":return new L(.28,.82,.8);case"paleturquoise":return new L(.68,1,.93);case"aquamarine":return new L(.5,1,.83);case"powderblue":return new L(.69,.88,.9);case"cadetblue":return new L(.37,.62,.63);case"steelblue":return new L(.27,.51,.71);case"cornflowerblue":return new L(.39,.58,.93);case"deepskyblue":return new L(0,.7,1);case"dodgerblue":return new L(.12,.56,1);case"lightblue":return new L(.68,.85,.9);case"skyblue":return new L(.53,.81,.92);case"lightskyblue":return new L(.53,.81,.98);case"midnightblue":return new L(.18,.18,.31);case"darkblue":return new L(0,0,.55);case"mediumblue":return new L(0,0,.82);case"royalblue":return new L(.25,.41,.88);case"blueviolet":return new L(.54,.17,.89);case"indigo":return new L(.29,0,.51);case"darkslateblue":return new L(.28,.24,.55);case"slateblue":return new L(.42,.35,.8);case"mediumslateblue":return new L(.48,.41,.9);case"mediumpurple":return new L(.58,.44,.86);case"darkmagenta":return new L(.55,0,.55);case"darkviolet":return new L(.58,0,.83);case"darkorchid":return new L(.6,.2,.8);case"mediumorchid":return new L(.73,.33,.83);case"thistle":return new L(.84,.75,.85);case"plum":return new L(.87,.63,.87);case"violet":return new L(.93,.51,.93);case"fuchsia":return new L(1,0,1);case"orchid":return new L(.85,.44,.84);case"mediumvioletred":return new L(.78,.08,.52);case"palevioletred":return new L(.86,.44,.58);case"hotpink":return new L(1,.4,.71);case"deeppink":return new L(1,.08,.58);case"lightpink":return new L(1,.71,.76);case"pink":return new L(1,.75,.78);case"antiquewhite":return new L(.98,.92,.84);case"beige":return new L(.96,.96,.86);case"bisque":return new L(1,.89,.77);case"blanchedalmond":return new L(1,.92,.82);case"wheat":return new L(.96,.87,.87);case"cornsilk":return new L(1,.97,.86);case"lemonchiffon":return new L(1,.98,.8);case"lightgoldenrodyellow":return new L(.98,.98,.82);case"lightyellow":return new L(1,1,.8);case"saddlebrown":return new L(.55,.27,.07);case"sienna":return new L(.63,.32,.18);case"chocolate":return new L(.82,.41,.12);case"peru":return new L(.82,.52,.25);case"sandybrown":return new L(.96,.64,.38);case"burlywood":return new L(.87,.72,.53);case"tan":return new L(.82,.71,.55);case"rosybrown":return new L(.74,.56,.56);case"moccasin":return new L(1,.89,.71);case"navajowhite":return new L(1,.87,.68);case"peachpuff":return new L(1,.85,.73);case"mistyrose":return new L(1,.89,.88);case"lavenderblush":return new L(1,.94,.93);case"linen":return new L(.98,.94,.9);case"oldlace":return new L(.99,.96,.9);case"papayawhip":return new L(1,.94,.84);case"seashell":return new L(1,.96,.93);case"mintcream":return new L(.98,1,.98);case"slategray":return new L(.44,.5,.56);case"lightslategray":return new L(.47,.53,.6);case"lightsteelblue":return new L(.69,.77,.87);case"lavender":return new L(.9,.9,.98);case"floralwhite":return new L(1,.98,.98);case"aliceblue":return new L(.94,.97,1);case"ghostwhite":return new L(.97,.97,1);case"honeydew":return new L(.94,1,.94);case"ivory":return new L(1,1,.94);case"azure":return new L(.94,1,1);case"snow":return new L(1,.98,.98);case"dimgray":return new L(.4,.4,.4);case"darkgray":return new L(.66,.66,.66);case"lightgray":return new L(.83,.83,.83);case"gainsboro":return new L(.86,.86,.86);case"whitesmoke":return new L(.96,.96,.96)}return new L(1,1,1)}var co=P("debuginputfield"),N=class extends M{get text(){return this.textComponent?.text??""}get isFocused(){return N.active===this}textComponent;placeholder;onValueChanged;onEndEdit;inputEventFn;_iosEventFn;start(){co&&console.log(this.name,this)}onEnable(){N.htmlField||(N.htmlField=document.createElement("input"),N.htmlField.style.caretColor="transparent",N.htmlField.classList.add("ar"),document.body.appendChild(N.htmlField)),this.inputEventFn||(this.inputEventFn=this.onInput.bind(this)),N.htmlField.addEventListener("keyup",this.inputEventFn),this.placeholder&&this.textComponent?.text.length&&R.setActive(this.placeholder.gameObject,!1),xo()&&(this._iosEventFn=this.processInputOniOS.bind(this),window.addEventListener("touchend",this._iosEventFn))}onDisable(){N.htmlField?.removeEventListener("keyup",this.inputEventFn),this.onDeselected(),this._iosEventFn&&window.removeEventListener("touchend",this._iosEventFn)}onPointerClick(e){co&&console.log("CLICK",e,N.active),N.activeTime=this.context.time.time,N.active!==this&&this.startCoroutine(this.activeLoop(),2),this.selectInputField()}*activeLoop(){for(this.onSelected();N.active===this&&!(this.context.input.getPointerUp(0)&&this.context.time.time-N.activeTime>.2);)this.setTextFromInputField(),yield;this.onDeselected()}onSelected(){if(N.active!==this&&(co&&console.log("Select",this.name,this,N.htmlField,this.context.isInXR,this.context.arOverlayElement,this.textComponent?.text,N.htmlField?.value),N.active?.onDeselected(),N.active=this,this.placeholder&&R.setActive(this.placeholder.gameObject,!1),N.htmlField)){if(N.htmlField.value=this.textComponent?.text||"",co&&console.log("set input field value",N.htmlField.value),this.context.isInXR){let e=this.context.arOverlayElement;e&&(N.htmlField.style.width="0px",N.htmlField.style.height="0px",e.append(N.htmlField))}this.selectInputField()}}onDeselected(){N.active===this&&(N.active=null,co&&console.log("Deselect",this.name,this),N.htmlField&&(N.htmlField.blur(),document.body.append(N.htmlField),N.htmlField.style.width="",N.htmlField.style.height=""),this.placeholder&&(!this.textComponent||this.textComponent.text.length<=0)&&R.setActive(this.placeholder.gameObject,!0),this.onEndEdit?.invoke())}onInput(e){if(N.active===this){if(co&&console.log(e.code,e,N.htmlField?.value,this.textComponent?.text),e.code==="Escape"||e.code==="Enter"){this.onDeselected();return}N.htmlField&&(this.textComponent&&(this.setTextFromInputField(),this.placeholder&&R.setActive(this.placeholder.gameObject,this.textComponent.text.length<=0)),this.selectInputField())}}setTextFromInputField(){if(this.textComponent&&N.htmlField){if(this.textComponent.text!==N.htmlField.value){co&&console.log("VALUE CHANGED");let e=this.textComponent.text,t=N.htmlField.value;this.onValueChanged?.invoke(t,e)}this.textComponent.text=N.htmlField.value}}selectInputField(){N.htmlField&&(N.htmlField.setSelectionRange(N.htmlField.value.length,N.htmlField.value.length),N.htmlField.focus())}processInputOniOS(){let e=this.context.physics.raycast();if(!e.length)return;let i=e[0].object,n=Vd(i);(n?.gameObject===this.gameObject||n?.gameObject.parent===this.gameObject)&&this.selectInputField()}},Ot=N;I(Ot,"active",null),I(Ot,"activeTime",-1),I(Ot,"htmlField",null),v([y(Ie)],Ot.prototype,"textComponent",2),v([y(Ie)],Ot.prototype,"placeholder",2),v([y(de)],Ot.prototype,"onValueChanged",2),v([y(de)],Ot.prototype,"onEndEdit",2);import*as $m from"three-mesh-ui";import*as Ca from"three";var eg=(a=>(a[a.fr=0]="fr",a[a.ru=1]="ru",a[a.de=2]="de",a[a.es=3]="es",a[a.el=4]="el",a[a.nord=5]="nord",a[a.eng=6]="eng",a))(eg||{}),ws=class extends Ve{font;text;keymap;padding;margin;fontSize;borderRadius;colors={keyboardBack:8750469,panelBack:2500134,button:3552822,hovered:1842204,selected:1088605};awake(){super.awake();let e=eg[this.keymap||6];this.makeKeyboard(e)}onEnable(){this.addShadowComponent(this.keyboard)}onDisable(){this.removeShadowComponent()}keyboard=null;_lastKeyPressed;_lastKeyPressedStartTime=0;_lastKeyPressedTime=0;makeKeyboard(e){!e&&!navigator.language&&(e="en");let t=this.font?this.font:"arial",i=R.getComponent(this.gameObject,bt);if(!i){console.error("Missing rect transform, please add this component inside a canvas");return}let n={...i.getBasicOptions(),margin:this.margin||0,padding:this.padding||0,language:e,fontFamily:is+"/"+t+"-msdf.json",fontTexture:is+"/"+t+".png",fontSize:this.fontSize||6,backgroundColor:new Ca.Color(this.colors.keyboardBack),backspaceTexture:is+"/backspace.png",shiftTexture:is+"/shift.png",enterTexture:is+"/enter.png",borderRadius:this.borderRadius||0,autoLayout:!1},r=this.gameObject.scale;n.width*=this.gameObject.scale.x,n.height*=this.gameObject.scale.y,n.fontSize*=Math.max(r.x,r.y),this.keyboard=new $m.Keyboard(n),this.gameObject.scale.set(1,1,1),this.keyboard.keys.forEach(s=>{s.setupState({state:"normal",attributes:{offset:.003,backgroundColor:new Ca.Color(this.colors.button),backgroundOpacity:1}}),s.setState("normal"),s.setupState({state:"hovered",attributes:{offset:.3,backgroundColor:new Ca.Color(this.colors.hovered),backgroundOpacity:1}}),s.setupState({state:"pressed",attributes:{offset:.1,backgroundColor:new Ca.Color(this.colors.selected),backgroundOpacity:1},onSet:()=>{let a=s.info.input,c=s.info.command;if(this._lastKeyPressed!==a)this._lastKeyPressedStartTime=this.context.time.time;else if(this.context.time.time-this._lastKeyPressedTime>.05)this._lastKeyPressedStartTime=this.context.time.time;else if(this.context.time.time-this._lastKeyPressedStartTime<.5||c=="switch"||c=="shift"||c=="switch-set"){this._lastKeyPressedTime=this.context.time.time;return}if(this._lastKeyPressedTime=this.context.time.time,this._lastKeyPressed=a,c)switch(c){case"switch":this.keyboard.setNextPanel();break;case"switch-set":this.keyboard.setNextCharset();break;case"enter":this.tryAppend(`
248
+ `);break;case"space":this.tryAppend(" ");break;case"backspace":if(!this.text?.text?.length)break;this.text?.text&&(this.text.text=this.text.text.substring(0,this.text.text.length-1)||"");break;case"shift":this.keyboard.toggleCase();break}else s.info.input!==void 0&&this.tryAppend(s.info.input)}})})}tryAppend(e){this.text&&(this.text.text+=e,this.markDirty())}};import*as ot from"three";import{Color as Dx}from"three";function ah(o){return o*Math.PI/180}var tg=300,lh=P("debuglights");var Xe=class extends M{type=0;range=1;spotAngle=1;innerSpotAngle=1;color=new ot.Color(16777215);set shadowNearPlane(e){if(e!==this._shadowNearPlane&&(this._shadowNearPlane=e,this.light?.shadow?.camera!==void 0)){let t=this.light.shadow.camera;t.near=e}}get shadowNearPlane(){return this._shadowNearPlane}_shadowNearPlane=.1;set shadowBias(e){e!==this._shadowBias&&(this._shadowBias=e,this.light?.shadow?.bias!==void 0&&(this.light.shadow.bias=e,this.light.shadow.needsUpdate=!0))}get shadowBias(){return this._shadowBias}_shadowBias=0;set shadowNormalBias(e){e!==this._shadowNormalBias&&(this._shadowNormalBias=e,this.light?.shadow?.normalBias!==void 0&&(this.light.shadow.normalBias=e,this.light.shadow.needsUpdate=!0))}get shadowNormalBias(){return this._shadowNormalBias}_shadowNormalBias=1;_overrideShadowBiasSettings=!1;set shadows(e){this._shadows=e,this.light&&(this.light.castShadow=e!==0,this.updateShadowSoftHard())}get shadows(){return this._shadows}_shadows=1;lightmapBakeType=4;set intensity(e){if(this._intensity=e,this.light){let t=1;if(this.context.isInXR&&this._webARRoot){let i=this._webARRoot?.arScale;typeof i=="number"&&i>0&&(t/=i)}this.light.intensity=e*t}}get intensity(){return this._intensity}_intensity=-1;get shadowDistance(){let e=this.light;return e?e.shadow.camera.far:-1}set shadowDistance(e){this._shadowDistance=e;let t=this.light;if(t){let i=t.shadow.camera;i.far=e,i.updateProjectionMatrix()}}_shadowDistance;shadowWidth;shadowHeight;get shadowResolution(){let e=this.light;return e?e.shadow.mapSize.x:-1}set shadowResolution(e){if(e===this._shadowResolution)return;this._shadowResolution=e;let t=this.light;t&&(t.shadow.mapSize.set(e,e),t.shadow.needsUpdate=!0)}_shadowResolution=void 0;get isBaked(){return this.lightmapBakeType===2}get selfIsLight(){if(this.gameObject.isLight===!0)return!0;switch(this.gameObject.type){case"SpotLight":case"PointLight":case"DirectionalLight":return!0}return!1}light=void 0;getWorldPosition(e){return this.light?this.type===1?this.light.getWorldPosition(e).multiplyScalar(1):this.light.getWorldPosition(e):e}updateIntensity(){this.intensity=this._intensity}awake(){this.color=new ot.Color(this.color??16777215)}onEnable(){this.createLight(),!this.isBaked&&(this.light&&(this.selfIsLight||this.light.parent!==this.gameObject&&this.gameObject.add(this.light)),this.type===1&&this.startCoroutine(this.updateMainLightRoutine(),2),this._webXRStartedListener=V.addEventListener("xrStarted",this.onWebXRStarted.bind(this)),this._webXREndedListener=V.addEventListener("xrStopped",this.onWebXREnded.bind(this)))}onDisable(){V.removeEventListener("xrStarted",this._webXRStartedListener),V.removeEventListener("xrStopped",this._webXREndedListener)}_webXRStartedListener;_webXREndedListener;_webARRoot;onWebXRStarted(){this._webARRoot=R.getComponentInParent(this.gameObject,ft)??void 0,this.startCoroutine(this._updateLightIntensityInARRoutine())}*_updateLightIntensityInARRoutine(){for(;this.context.isInAR;){yield,this.updateIntensity();for(let e=0;e<30;e++)yield}}onWebXREnded(){this.updateIntensity()}createLight(){let e=this.selfIsLight;if(e&&!this.light)switch(this.light=this.gameObject,this._intensity=this.light.intensity,this.type){case 1:this.setDirectionalLight(this.light);break}else if(!this.light)switch(this.type){case 1:let t=new ot.DirectionalLight(this.color,this.intensity*Math.PI);if(t.position.set(0,0,-tg*.5).applyQuaternion(this.gameObject.quaternion),this.gameObject.add(t.target),pn(t.target,0,0,0),this.light=t,this.gameObject.position.set(0,0,0),this.gameObject.rotation.set(0,0,0),lh){let s=new ot.DirectionalLightHelper(this.light,.2,this.color);this.context.scene.add(s)}break;case 0:let i=new ot.SpotLight(this.color,this.intensity*Math.PI,this.range,ah(this.spotAngle/2),1-ah(this.innerSpotAngle/2)/ah(this.spotAngle/2),2);i.position.set(0,0,0),i.rotation.set(0,0,0),this.light=i;let n=i.target;i.add(n),n.position.set(0,0,this.range),n.rotation.set(0,0,0);break;case 2:let r=new ot.PointLight(this.color,this.intensity*Math.PI,this.range);this.light=r;break}if(this.light){this._intensity>=0?this.light.intensity=this._intensity:this._intensity=this.light.intensity,this.shadows!==0?this.light.castShadow=!0:this.light.castShadow=!1,this._shadowResolution!==void 0&&this._shadowResolution>4?(this.light.shadow.mapSize.width=this._shadowResolution,this.light.shadow.mapSize.height=this._shadowResolution):(this.light.shadow.mapSize.width=2048,this.light.shadow.mapSize.height=2048),lh&&console.log("Override shadow bias?",this._overrideShadowBiasSettings,this.shadowBias,this.shadowNormalBias),this._overrideShadowBiasSettings===!0?(this.light.shadow.bias=this.shadowBias,this.light.shadow.normalBias=this.shadowNormalBias):(this.light.shadow.bias=this.shadowBias*1e-5,this.light.shadow.normalBias=this.shadowNormalBias*1e-4),this.updateShadowSoftHard();let t=this.light.shadow.camera;if(t.near=this.shadowNearPlane,this._shadowDistance!==void 0&&typeof this._shadowDistance=="number"?t.far=this._shadowDistance:t.far=tg*Math.abs(this.gameObject.scale.z),this.gameObject.scale.set(1,1,1),this.shadowWidth!==void 0)t.left=-this.shadowWidth/2,t.right=this.shadowWidth/2;else{let i=this.gameObject.scale.x;t.left*=i,t.right*=i}if(this.shadowHeight!==void 0)t.top=this.shadowHeight/2,t.bottom=-this.shadowHeight/2;else{let i=this.gameObject.scale.y;t.top*=i,t.bottom*=i}this.light.shadow.needsUpdate=!0,lh&&this.context.scene.add(new ot.CameraHelper(t)),this.isBaked?this.light.removeFromParent():e||this.gameObject.add(this.light)}}*updateMainLightRoutine(){for(;;){this.type===1&&((!this.context.mainLight||this.intensity>this.context.mainLight.intensity)&&(this.context.mainLight=this),yield);break}}updateShadowSoftHard(){!this.light||this.shadows===2||(this.light.shadow.radius=1,this.light.shadow.blurSamples=1)}setDirectionalLight(e){e.add(e.target),e.target.position.set(0,0,-1)}};I(Xe,"allowChangingRendererShadowMapType",!0),v([y()],Xe.prototype,"type",2),v([y(Dx)],Xe.prototype,"color",2),v([y()],Xe.prototype,"shadowNearPlane",1),v([y()],Xe.prototype,"shadowBias",1),v([y()],Xe.prototype,"shadowNormalBias",1),v([y()],Xe.prototype,"shadows",1),v([y()],Xe.prototype,"lightmapBakeType",2),v([y()],Xe.prototype,"intensity",1),v([y()],Xe.prototype,"shadowDistance",1),v([y()],Xe.prototype,"shadowResolution",1);var Z3=new ot.Vector3(0,0,0);import*as vc from"three";import{Vector3 as Lx}from"three";var Es=P("debugLODs"),jx=P("noLODs");var nn=class{screenRelativeTransitionHeight;distance;renderers};v([y()],nn.prototype,"screenRelativeTransitionHeight",2),v([y()],nn.prototype,"distance",2),v([y()],nn.prototype,"renderers",2);var ch=class{model;renderers;constructor(e,t){this.model=t,this.renderers=[];for(let i of t.renderers){let n=this.findRenderer(i,e.gameObject);n&&n.gameObject?this.renderers.push(n):Es&&console.warn("Renderer not found: "+i,e.gameObject)}}findRenderer(e,t){let i=R.foreachComponent(t,n=>n.guid===e||Object.getPrototypeOf(n)?.guid===e?n:null);if(i)return i;for(let n of t.children){let r=this.findRenderer(e,n);if(r)return r}return null}},vr=class extends M{fadeMode=0;localReferencePoint=void 0;lodCount=0;size=0;animateCrossFading=!1;lodModels;_lods=[];_settings=[];_lodsHandler;start(){if(!jx&&!this._lodsHandler&&!!this.gameObject&&(Es&&console.log(this),this.lodModels&&Array.isArray(this.lodModels))){let e=0,t=[];for(let n of this.lodModels){e=Math.max(n.distance,e);let r=new ch(this,n);this._lods.push(r);for(let s of r.renderers)t.includes(s)||t.push(s)}this._lodsHandler=new Array;for(let n=0;n<t.length;n++){let r=new vc.LOD;this._lodsHandler.push(r),this.gameObject.add(r)}let i=new vc.Object3D;Es&&console.log(t);for(let n=0;n<t.length;n++){let r=t[n],s=this._lodsHandler[n],a=r.gameObject,c=0,u=0;Es&&console.log(n,a.name);for(let d of this._lods){let h=null;d.renderers.includes(r)?h=a:h=i,Es&&console.log("add",d.model.distance,h.name);let g=d.model.distance;u=g-c,c=Math.max(g,c),this.onAddLodLevel(s,h,g)}let l=c+u;Es&&console.log("cull",l),this.onAddLodLevel(s,i,l)}}}update(){if(!this.gameObject||!this._lodsHandler)return;let e=this.context.mainCamera;if(!!e)for(let t of this._lodsHandler)t.update(e)}onAddLodLevel(e,t,i){e.addLevel(t,i*this._distanceFactor);let n={lod:e,levelIndex:e.levels.length-1,distance:i};this._settings.push(n)}_distanceFactor=1;distanceFactor(e){if(e!==this._distanceFactor){this._distanceFactor=e;for(let t of this._settings){let i=t.lod.levels[t.levelIndex];i.distance=t.distance*e}}}};v([y(Lx)],vr.prototype,"localReferencePoint",2),v([y(nn)],vr.prototype,"lodModels",2);var Hx=P("logstats"),Cs=class extends M{onEnable(){console.log(this),Hx&&this.startCoroutine(this.run(),4)}*run(){for(;this.enabled;){let e=this.context.renderer.info;console.log(e.memory,e.render,e.programs),yield}}};var uh=P("debugnestedgltf"),uo=class extends M{filePath;_isLoadingOrDoneLoading=!1;listenToProgress(e){this.filePath?.beginListenDownload(e)}preload(){this.filePath?.preload()}async start(){if(this._isLoadingOrDoneLoading)return;uh&&console.log(this,this.guid);let e=this.gameObject.parent;if(e){this._isLoadingOrDoneLoading=!0;let t=new Ue;t.idProvider=new Re(this.hash(this.guid)),t.parent=e,this.gameObject.updateMatrix();let i=this.gameObject.matrix;uh&&console.log("Load nested:",this.filePath?.uri??this.filePath,this.gameObject.position);let n=await this.filePath?.instantiate?.call(this.filePath,t);n&&(n.matrixAutoUpdate=!1,n.matrix.identity(),n.applyMatrix4(i),n.matrixAutoUpdate=!0,n.layers.disableAll(),n.layers.set(this.layer)),this.destroy(),uh&&console.log("Nested loading done:",this.filePath?.uri??this.filePath,n)}}hash(e){let t=0;for(let i=0;i<e.length;i++)t=e.charCodeAt(i)+((t<<5)-t);return t}};v([y(et)],uo.prototype,"filePath",2);import{Quaternion as Fx,Euler as Bx,Vector3 as ho,Plane as Ux}from"three";var rn=class extends M{referenceSpace;from;affectPosition=!1;affectRotation=!1;alignLookDirection=!1;levelLookDirection=!1;levelPosition=!1;positionOffset=new ho(0,0,0);rotationOffset=new ho(0,0,0);offset=new ho(0,0,0);update(){if(!this.from)return;var e=B(this.from),t=me(this.from);this.offset.copy(this.positionOffset);let i=this.offset.length();if(this.referenceSpace&&this.offset.transformDirection(this.referenceSpace.matrixWorld).multiplyScalar(i),e.add(this.offset),this.levelPosition&&this.referenceSpace){let a=new Ux(this.gameObject.up,0),c=B(this.referenceSpace);a.setFromNormalAndCoplanarPoint(this.gameObject.up,c);let u=new ho(0,0,0);a.projectPoint(e,u),e.copy(u)}this.affectPosition&&ie(this.gameObject,e);let n=new Bx(this.rotationOffset.x,this.rotationOffset.y,this.rotationOffset.z),r=new Fx().setFromEuler(n);this.affectRotation&&Ze(this.gameObject,t.multiply(r));let s=new ho;this.from.getWorldDirection(s).multiplyScalar(50),this.levelLookDirection&&(s.y=0),this.alignLookDirection&&this.gameObject.lookAt(s)}};v([y(R)],rn.prototype,"referenceSpace",2),v([y(R)],rn.prototype,"from",2),v([y(ho)],rn.prototype,"positionOffset",2),v([y(ho)],rn.prototype,"rotationOffset",2);import{Vector3 as yc,Quaternion as Gx,Matrix4 as dh}from"three";var SF=new yc(1,1,1),PF=new yc(0,0,1),OF=Symbol("emitterMatrix"),yr=class{constructor(e,t,i,n){this.system=e;this.particleSystem=t;this.subSystem=i;this.subParticleSystem=n;this.subParticleSystem&&this.subParticleSystem&&(this.subParticleSystem.onlyUsedByOther=!0);let r=1e3;this._circularBuffer=new Mi(()=>new dh,r)}type="NeedleParticleSubEmitter";q_=new Gx;v_=new yc;v2_=new yc;_emitterMatrix=new dh;_circularBuffer;clone(){throw new Error("Method not implemented.")}initialize(e){e.emissionState={burstIndex:0,burstWaveIndex:0,time:0,waitEmiting:0},this._emitterMatrix.copy(this.subSystem.matrixWorld).invert().premultiply(this.system.matrixWorld)}update(e,t){if(this.subSystem.currentParticles>=this.subSystem.main.maxParticles||!this.subParticleSystem||!e.emissionState)return;let i=new dh;i.set(1,0,0,e.position.x,0,1,0,e.position.y,0,0,1,e.position.z,0,0,0,1),this.particleSystem.worldSpace||i.multiplyMatrices(this._emitterMatrix,i),this.subParticleSystem.emit(t,e.emissionState,i)}frameUpdate(e){}toJSON(){}};import*as Rs from"three";import{AxesHelper as Vx,Material as ig,Mesh as ng,Object3D as zx,Quaternion as hh,Vector3 as Ta,Vector4 as Wx}from"three";import{BatchedParticleRenderer as Nx,ConstantColor as Xx,ConstantValue as Qx,ParticleSystem as qx,RenderMode as _c,TrailParticle as rg}from"three.quarks";var ug=P("debugparticles"),_r=class{particleSystem;_deserialize(e){let t=this.particleSystem;t&&!(t instanceof ve)&&typeof t.guid=="string"&&(ug&&console.log("DESERIALIZE SUBEMITTER",t),this.particleSystem=void 0,this.particleSystem=R.findByGuid(t.guid,e.scene))}},on=class extends M{renderMode;particleMaterial;trailMaterial;particleMesh;get transparent(){return this.particleMaterial?.transparent??!1}getMaterial(e=!1){return e===!0&&this.trailMaterial?this.trailMaterial:this.particleMaterial}getMesh(){let e=null;return this.particleMesh instanceof ng&&(e=this.particleMesh.geometry),e===null&&(e=new Rs.BoxGeometry(1,1,1)),new ng(e,this.getMaterial())}};v([y()],on.prototype,"renderMode",2),v([y(ig)],on.prototype,"particleMaterial",2),v([y(ig)],on.prototype,"trailMaterial",2);var Ts=class{_curve;constructor(e){this._curve=e}type="function";genValue(e){return this._curve.evaluate(e,Math.random())}toJSON(){throw new Error("Method not implemented.")}clone(){throw new Error("Method not implemented.")}};var Ra=class{type="value";toJSON(){throw new Error("Method not implemented.")}clone(){throw new Error("Method not implemented.")}system;constructor(e){this.system=e}},ph=class extends Ra{genValue(){return this.system.textureSheetAnimation.getStartIndex()}},fh=class extends Ra{_lastPosition=new Ta;_lastDistance=0;update(){let e=B(this.system.gameObject);this._lastDistance=this._lastPosition.distanceTo(e),this._lastPosition.copy(e)}genValue(){if(this.system.currentParticles>=this.system.maxParticles)return 0;let e=this.system.emission.rateOverTime.evaluate(this.system.time/this.system.duration,Math.random());if(this.system.deltaTime>0){let n=this.system.emission.rateOverDistance.evaluate(this.system.time/this.system.duration,Math.random()),s=this._lastDistance/this.system.deltaTime*n;Number.isFinite(s)||(s=0),e+=s}let t=this.system.emission.getBurst();t>0&&(e+=t/this.system.deltaTime);let i=this.system.maxParticles-this.system.currentParticles;return H.clamp(e,0,i/this.system.deltaTime)}},mh=class extends Ra{genValue(){return 0}},xr=class{system;get scaleFactorDiff(){return this.system.worldScale.x-this.system.scale}constructor(e){this.system=e}initialize(e){}update(e,t){}frameUpdate(e){}toJSON(){throw new Error("Method not implemented.")}clone(){throw new Error("Method not implemented.")}},gh=class extends xr{type="NeedleTextureSheet";update(e,t){let i=this.system.textureSheetAnimation;if(i.enabled){let n=e.age/e.life,r=i.evaluate(n);r!==void 0&&(e.uvTile=r)}}},bh=class extends xr{type="NeedleRotation";update(e,t){if(e.rotation===void 0)return;let i=e.age/e.life;if(typeof e.rotation=="number"&&(this.system.rotationOverLifetime.enabled?e.rotation+=this.system.rotationOverLifetime.evaluate(i)*t:this.system.renderer.renderMode===0&&(e.rotation=Math.PI),this.system.rotationBySpeed.enabled)){let n=e.velocity.length();e.rotation+=this.system.rotationBySpeed.evaluate(i,n)*t}}},og=Symbol("sizeLerpFactor"),vh=class extends xr{type="NeedleSize";initialize(e){e[og]=Math.random()}update(e,t){if(this.system.renderer.renderMode!==4){let i=e.age/e.life,n=1;this.system.sizeOverLifetime.enabled&&(n*=this.system.sizeOverLifetime.evaluate(i,void 0,e[og]).x);let r=this.system.worldScale.x/this.system.cameraScale;e.size=e.startSize*n*r}}},xc=Symbol("particleLife"),wc=Symbol("trailLifetime"),sg=Symbol("trailStartLength"),yh=class extends xr{type="NeedleTrail";initialize(e){e instanceof rg&&(e[xc]=e.life,e[wc]=e.life,this.system.trails.enabled&&this.system.trails.dieWithParticles===!1&&(e[wc]=this.system.trails.lifetime.evaluate(Math.random(),Math.random()),e.life+=e[wc]),e[sg]=e.length)}update(e){if(this.system.trails?.enabled&&e instanceof rg){let t=e,i=e.age/e[xc],n=e.previous.values(),r=e.previous.length;for(let s=0;s<r;s++){let c=n.next().value,u=1-s/(r-1);c.size=this.system.trails.getWidth(e.size,i,u),c.color.copy(e.color),this.system.trails.getColor(c.color,i,u)}if(e.age>e[xc]){e.velocity.set(0,0,0);let s=(e.age-e[xc])/e[wc];t.length=H.lerp(e[sg],0,s)}}}},Ec=Symbol("startVelocity"),ag=Symbol("gravityModifier"),Cc=Symbol("velocity lerp factor"),lg=new Ta,TB=new hh,_h=class extends xr{type="NeedleVelocity";_gravityDirection=new Ta;initialize(e){let t=1+this.scaleFactorDiff;e.startSpeed=this.system.main.startSpeed.evaluate(Math.random(),Math.random())*t,e.velocity.copy(this.system.shape.getDirection(e.position)).multiplyScalar(e.startSpeed),this.system.inheritVelocity?.enabled&&this.system.inheritVelocity.applyInitial(e.velocity),e[Ec]?e[Ec].copy(e.velocity):e[Ec]=e.velocity.clone();let i=this.system.main.gravityModifier.evaluate(Math.random(),Math.random())/(9.81*2);e[ag]=i,e[Cc]=Math.random(),this._gravityDirection.set(0,-1,0),this.system.main.simulationSpace===0&&this._gravityDirection.applyQuaternion(this.system.worldQuaternionInverted)}update(e,t){let i=e[Ec],n=e[ag];n!==0&&(lg.copy(this._gravityDirection).multiplyScalar(n),i.add(lg)),e.velocity.copy(i);let r=e.age/e.life;this.system.inheritVelocity?.enabled&&this.system.inheritVelocity.applyCurrent(e.velocity,r,e[Cc]);let s=this.system.noise;s.enabled&&s.apply(0,e.position,e.velocity,t,e.age,e.life);let a=this.system.sizeBySpeed;a?.enabled&&(e.size=a.evaluate(e.velocity,r,e[Cc],e.size));let c=this.system.colorBySpeed;c?.enabled&&c.evaluate(e.velocity,e[Cc],e.color);let u=this.system.velocityOverLifetime;u.enabled&&u.apply(0,e.position,e.velocity,t,e.age,e.life);let l=this.system.limitVelocityOverLifetime;l.enabled&&l.apply(e.position,i,e.velocity,e.size,r,t,1)}},cg=Symbol("colorLerpFactor"),xh=class extends xr{type="NeedleColor";initialize(e){let t=this.system.main.startColor.evaluate(e.age/e.life,Math.random());e.startColor.set(t.r,t.g,t.b,t.alpha),e.color.copy(e.startColor),e[cg]=Math.random()}update(e,t){if(this.system.colorOverLifetime.enabled){let i=e.age/e.life,n=this.system.colorOverLifetime.color.evaluate(i,e[cg]);e.color.set(n.r,n.g,n.b,n.alpha).multiply(e.startColor)}else e.color.copy(e.startColor)}},wh=class{system;emission;get anim(){return this.system.textureSheetAnimation}constructor(e){this.system=e,this.emission=new fh(this.system)}update(){this.emission.update()}autoDestroy;get looping(){return this.system.main.loop}get duration(){return this.system.duration}get shape(){return this.system.shape}get startLife(){return new Ts(this.system.main.startLifetime)}get startSpeed(){return new Ts(this.system.main.startSpeed)}get startRotation(){return new Ts(this.system.main.startRotation)}get startSize(){return new Ts(this.system.main.startSize)}startLength;get startColor(){return new Xx(new Wx(1,1,1,1))}get emissionOverTime(){return this.emission}get emissionOverDistance(){return new mh(this.system)}emissionBursts;onlyUsedByOther;behaviors=[];get instancingGeometry(){return this.system.renderer.getMesh().geometry}get renderMode(){if(this.system.trails.enabled===!0)return _c.Trail;switch(this.system.renderer.renderMode){case 0:return _c.BillBoard;case 4:return _c.LocalSpace}return _c.BillBoard}rendererEmitterSettings={startLength:new Qx(220),followLocalOrigin:!1};get speedFactor(){return this.system.main.simulationSpeed}get texture(){let e=this.system.renderer.getMaterial(this.system.trails.enabled);if(e&&e.map){let t=e.map;return t.premultiplyAlpha=!1,t.encoding=Rs.LinearEncoding,t}return Rl(new q(1,1,1,1),1)}get startTileIndex(){return new ph(this.system)}get uTileCount(){return this.anim.enabled?this.anim?.numTilesX:void 0}get vTileCount(){return this.anim.enabled?this.anim?.numTilesY:void 0}get renderOrder(){return 1}get blending(){return this.system.renderer.particleMaterial?.blending??Rs.NormalBlending}get transparent(){return this.system.renderer.transparent}get worldSpace(){return this.system.main.simulationSpace===1}},Eh=class{burstIndex=0;burstWaveIndex=0;time=0;waitEmiting=0},Ch=class extends M{play(e=!1){e&&R.foreachComponent(this.gameObject,t=>{t instanceof Ch&&t!==this&&t.play(!1)},!0),this._isPlaying=!0,this._time=0,this._particleSystem&&(this._particleSystem.emissionState.time=0,this._particleSystem.emitEnded=!1),this.emission?.reset()}pause(){this._isPlaying=!1}stop(){this._isPlaying=!1,this._time=0}_state;emit(e){if(this._particleSystem){this.onUpdate(),e=Math.min(e,this.maxParticles-this.currentParticles),this._state||(this._state=new Eh),this._state.waitEmiting=e,this._state.time=0;let t=this._particleSystem.emitEnded;this._particleSystem.emitEnded=!1,this._particleSystem.emit(this.deltaTime,this._state,this._particleSystem.emitter.matrixWorld),this._particleSystem.emitEnded=t}}colorOverLifetime;main;emission;sizeOverLifetime;shape;noise;trails;velocityOverLifetime;limitVelocityOverLifetime;inheritVelocity;colorBySpeed;textureSheetAnimation;rotationOverLifetime;rotationBySpeed;sizeBySpeed;get renderer(){return this._renderer}get isPlaying(){return this._isPlaying}get currentParticles(){return this._particleSystem?.particleNum??0}get maxParticles(){return this.main.maxParticles}get time(){return this._time}get duration(){return this.main.duration}get deltaTime(){return this.context.time.deltaTime*this.main.simulationSpeed}get scale(){return this.gameObject.scale.x}get cameraScale(){return this._cameraScale}_cameraScale=1;get container(){return this._container}get worldspace(){return this.main.simulationSpace===1}__worldQuaternion=new hh;get worldQuaternion(){return this.__worldQuaternion}_worldQuaternionInverted=new hh;get worldQuaternionInverted(){return this._worldQuaternionInverted}_worldScale=new Ta;get worldScale(){return this._worldScale}_worldPositionFrame=-1;_worldPos=new Ta;get worldPos(){return this._worldPositionFrame!==this.context.time.frame&&(this._worldPositionFrame=this.context.time.frame,B(this.gameObject,this._worldPos)),this._worldPos}get matrixWorld(){return this._container.matrixWorld}get isSubsystem(){return this._isUsedAsSubsystem}_renderer;_batchSystem;_particleSystem;_interface;_container;_time=0;_isPlaying=!0;_isUsedAsSubsystem=!1;set bursts(e){for(let t=0;t<e.length;t++){let i=e[t];if(!(i instanceof Hn)){let n=new Hn;Lt(n,i),e[t]=n}}this._bursts=e}_bursts;set subEmitterSystems(e){for(let t=0;t<e.length;t++){let i=e[t];if(!(i instanceof _r)){let n=new _r;Lt(n,i),e[t]=n}}this._subEmitterSystems=e}_subEmitterSystems;awake(){if(this._subEmitterSystems&&Array.isArray(this._subEmitterSystems))for(let t of this._subEmitterSystems)t._deserialize(this.context);this._renderer=this.gameObject.getComponent(on),this._container=new zx,this._container.matrixAutoUpdate=!1,this.main.simulationSpace==0?this.gameObject.add(this._container):this.context.scene.add(this._container),this._batchSystem=new Nx,this._batchSystem.name=this.gameObject.name,this._container.add(this._batchSystem),this._interface=new wh(this),this._particleSystem=new qx(this._batchSystem,this._interface),this._particleSystem.addBehavior(new vh(this)),this._particleSystem.addBehavior(new xh(this)),this._particleSystem.addBehavior(new gh(this)),this._particleSystem.addBehavior(new bh(this)),this._particleSystem.addBehavior(new _h(this)),this._particleSystem.addBehavior(new yh(this));let e=this._particleSystem.emitter;this.context.scene.add(e),ug&&(console.log(this),this.gameObject.add(new Vx(1)))}start(){this.addSubParticleSystems()}onEnable(){this.inheritVelocity&&(this.inheritVelocity.system=this),this.play()}onDisable(){}onBeforeRender(){this.onUpdate();let e=this.deltaTime;this._batchSystem?.update(e),this._time+=e,this._time>this.duration&&(this._time=0)}onUpdate(){if(this._bursts&&(this.emission.bursts=this._bursts,delete this._bursts),!this._isPlaying)return;let e=this.context.mainCamera;if(e){let i=Ae(e);this._cameraScale=i.x}let t=this._container;if(this.worldspace&&(t=this.gameObject),me(t,this.__worldQuaternion),this._worldQuaternionInverted.copy(this.__worldQuaternion).invert(),Ae(this.gameObject,this._worldScale),!this.worldspace&&this._container&&this.gameObject?.parent){let i=Ae(this.gameObject.parent);i.x=1/i.x,i.y=1/i.y,i.z=1/i.z,this._container.matrix.identity(),this._container.matrix.scale(i)}this.emission.system=this,this._interface.update(),this.shape.update(this,this.context,this.main.simulationSpace,this.gameObject),this.noise.update(this.context),this.inheritVelocity?.update(this.context),this.velocityOverLifetime.update(this)}addSubParticleSystems(){if(this._subEmitterSystems&&this._particleSystem)for(let e of this._subEmitterSystems){let t=e.particleSystem?._particleSystem;if(t){e.particleSystem._isUsedAsSubsystem=!0;let i=new yr(this,this._particleSystem,e.particleSystem,t);this._particleSystem.addBehavior(i)}}}},ve=Ch;v([y(jn)],ve.prototype,"colorOverLifetime",2),v([y(_e)],ve.prototype,"main",2),v([y(yt)],ve.prototype,"emission",2),v([y(Jt)],ve.prototype,"sizeOverLifetime",2),v([y(ne)],ve.prototype,"shape",2),v([y(K)],ve.prototype,"noise",2),v([y(te)],ve.prototype,"trails",2),v([y(He)],ve.prototype,"velocityOverLifetime",2),v([y(ue)],ve.prototype,"limitVelocityOverLifetime",2),v([y(Zt)],ve.prototype,"inheritVelocity",2),v([y(Ri)],ve.prototype,"colorBySpeed",2),v([y(xe)],ve.prototype,"textureSheetAnimation",2),v([y(Ke)],ve.prototype,"rotationOverLifetime",2),v([y(Ne)],ve.prototype,"rotationBySpeed",2),v([y(ke)],ve.prototype,"sizeBySpeed",2);import*as hg from"three";function*dg(o,e=null){let t=e?e.time:G.Current.time,i=t.time;for(;t.time-i<o;)yield}var _t=class extends M{awake(){this.context.connection.beginListen("joined-room",this.tryAssignColor.bind(this))}_didAssignPlayerColor=!1;onEnable(){this._didAssignPlayerColor||this.startCoroutine(this.waitForConnection())}*waitForConnection(){for(;!this.destroyed&&this.enabled&&(yield dg(.2),!this.tryAssignColor()););}tryAssignColor(){let e=R.getComponentInParent(this.gameObject,le);return e&&e.connectionId?(this._didAssignPlayerColor=!0,this.assignUserColor(e.connectionId),!0):!1}assignUserColor(e){let t=_t.hashCode(e),i=_t.colorFromHashCode(t);if(this.gameObject.type==="Mesh"){let n=this.gameObject;this.assignColor(i,e,n)}else if(this.gameObject.children)for(let n of this.gameObject.children){let r=n;r.material&&r.material.color&&this.assignColor(i,e,r)}}assignColor(e,t,i){let n=i.material;!n||(n._playerMaterial!==t&&(n=n.clone(),n._playerMaterial=t,i.material=n),n.color=e)}static hashCode(e){var t=0,i,n;if(e.length===0)return t;for(i=0;i<e.length;i++)n=e.charCodeAt(i),t=(t<<5)-t+n,t|=0;return t}static colorFromHashCode(e){let t=(e&16711680)>>16,i=(e&65280)>>8,n=e&255;return new hg.Color(t/255,i/255,n/255)}};import{RGBELoader as Jx}from"three/examples/jsm/loaders/RGBELoader.js";import{EXRLoader as Zx}from"three/examples/jsm/loaders/EXRLoader";import{EquirectangularRefractionMapping as $x,sRGBEncoding as ew,TextureLoader as mg}from"three";var pg=P("debugautosync"),Th=class{_syncers={};getOrCreateSyncer(e){if(!e.guid)return null;if(this._syncers[e.guid])return this._syncers[e.guid];let t=new Rh(e);return this._syncers[e.guid]=t,t}},fg=new Th,Rh=class{comp;constructor(e){this.comp=e}hasChanges=!1;changedProperties={};data={};_boundEvent;get networkingKey(){return this.comp.constructor.name}_isReceiving=!1;_isInit=!1;init(e){if(this._isInit)return;this._isInit=!0,this.comp=e,this._boundEvent=this.onHandleSending.bind(this),this.comp.context.post_render_callbacks.push(this._boundEvent),this.comp.context.connection.beginListen(this.networkingKey,this.onHandleReceiving.bind(this));let t=this.comp.context.connection.tryGetState(this.comp.guid);t&&this.onHandleReceiving(t)}notifyChanged(e,t){this._isReceiving||(this.hasChanges=!0,this.changedProperties[e]=t)}onHandleSending(){if(!this.hasChanges)return;this.hasChanges=!1;let e=this.comp.context.connection;if(!e||!e.isConnected){for(let t in this.changedProperties)delete this.changedProperties[t];return}for(let t in this.data)delete this.data[t];this.data.guid=this.comp.guid;for(let t in this.changedProperties){let i=this.changedProperties[t];delete this.changedProperties[t],this.data[t]=i}e.send(this.networkingKey,this.data)}onHandleReceiving(e){if(!this._isInit||!this.comp)return;let t=e.guid;if(!(t&&t!==this.comp.guid)){pg&&console.log("RECEIVED",this.comp.name,this.comp.guid,e);try{this._isReceiving=!0;for(let i in e){if(i==="guid")continue;let n=e[i];this.comp[i]=n}}catch(i){console.error(i)}finally{this._isReceiving=!1}}}};function Yx(o,e){let t=e!==o;if(!t&&o&&e){if(Array.isArray(o)&&Array.isArray(e))t=!0;else if(typeof o=="object"&&typeof e=="object"){for(let i of Object.keys(o))if(o[i]!==e[i]){t=!0;break}}}return t}function Kx(o){if(o.__autoPropertySyncHandler)return o.__autoPropertySyncHandler;let e=fg.getOrCreateSyncer(o);return e?.init(o),o.__autoPropertySyncHandler=e,e}var Tc=function(o){return function(e,t){let i=null,n=o?e[o]:void 0,r=e,s=r.__internalAwake;pg&&console.log(t);let a=t+"k__BackingField";r.__internalAwake=function(){if(this[a]!==void 0)return;this[a]=this[t],s.call(this),i=fg.getOrCreateSyncer(this),Object.getOwnPropertyDescriptor(this,t)?.set===void 0&&Object.defineProperty(this,t,{set:function(u){let l=this[a];this[a]=u,Yx(u,l)&&n?.call(this,u,l)!==!1&&Kx(this)?.notifyChanged(t,u)},get:function(){return this[a]},configurable:!0,enumerable:!0}),i?.init(this)}}};var Oi=class extends M{url;allowDrop=!0;background=!0;backgroundBlurriness=0;environment=!0;_loader;_prevLoadedEnvironment;_prevEnvironment=null;_prevBackground=null;onEnable(){this.setSkybox(this.url),this.registerDropEvents()}onDisable(){this.context.scene.environment===this._prevLoadedEnvironment&&(this.context.isInXR||(this.context.scene.environment=this._prevEnvironment,this.context.scene.background=this._prevBackground),this._prevLoadedEnvironment=void 0),this.unregisterDropEvents()}async setSkybox(e){if(!e)return;if(!e?.endsWith(".hdr")&&!e.endsWith(".exr")&&console.warn("Potentially invalid skybox url",this.url,"on",this.name),!this._loader){let n=e.endsWith(".exr"),r=e.endsWith(".hdr");n?this._loader=new Zx:r?this._loader=new Jx:this._loader=new mg}let t=await this._loader.loadAsync(e);if(!t||!this.enabled)return;this.url=e,t.mapping=$x,this._loader instanceof mg&&(t.encoding=ew),this._prevBackground=this.context.scene.background,this._prevEnvironment=this.context.scene.environment,console.log("Set skybox",this.url),this.environment&&(this.context.scene.environment=t),this.background&&(this.context.scene.background=t),this._prevLoadedEnvironment=t;let i=e.lastIndexOf("/");t.name=e.substring(i>=0?i+1:0),this.context.scene.backgroundBlurriness=this.backgroundBlurriness}dragOverEvent;dropEvent;registerDropEvents(){this.dragOverEvent||(this.dragOverEvent=e=>{if(!!this.allowDrop&&!!e.dataTransfer)for(let t of e.dataTransfer.types)t==="text/uri-list"&&e.preventDefault()},this.dropEvent=e=>{if(!!this.allowDrop&&(e.preventDefault(),!!e.dataTransfer)){for(let t of e.dataTransfer.types)if(t==="text/uri-list"){let i=e.dataTransfer.getData(t);console.log(t,i);let n=new RegExp(/polyhaven.com\/asset_img\/.+?\/(?<name>.+)\.png/).exec(i)?.groups?.name;if(n||(n=new RegExp(/polyhaven\.com\/a\/(?<name>.+)/).exec(i)?.groups?.name),console.log(n),n){let r="https://dl.polyhaven.org/file/ph-assets/HDRIs/exr/1k/"+n+"_1k.exr";this.setSkybox(r)}else console.warn("Could not resolve skybox name from dropped url",i)}}},this.context.domElement.addEventListener("dragover",this.dragOverEvent),this.context.domElement.addEventListener("drop",this.dropEvent))}unregisterDropEvents(){!this.dragOverEvent||(this.context.domElement.removeEventListener("dragover",this.dragOverEvent),this.context.domElement.removeEventListener("drop",this.dropEvent))}};v([Tc("setSkybox"),y()],Oi.prototype,"url",2),v([y()],Oi.prototype,"allowDrop",2),v([y()],Oi.prototype,"background",2),v([y()],Oi.prototype,"backgroundBlurriness",2),v([y()],Oi.prototype,"environment",2);import*as Pc from"three";import{Object3D as ow,ShaderMaterial as sw,Texture as aw,Vector2 as Sh,Vector4 as lw}from"three";function tw(){return new Promise((o,e)=>{let i=()=>{i!=null&&(document.removeEventListener("pointerdown",i),document.removeEventListener("click",i),document.removeEventListener("dragstart",i),document.removeEventListener("touchstart",i),o())};document.addEventListener("pointerdown",i),document.addEventListener("click",i),document.addEventListener("dragstart",i),document.addEventListener("touchstart",i)})}async function gg(o){await tw(),o()}import{PlaneGeometry as iw,MeshBasicMaterial as nw,Mesh as rw}from"three";var Rc=class{static createPrimitive(e,t){let i;switch(e){case 0:let n=new iw(1,1,1,1),r=t?.material??new nw({color:16777215});i=new rw(n,r)}return t?.name&&(i.name=t.name),i}};var Sc=P("debugvideo");var bg=(n=>(n[n.CameraFarPlane=0]="CameraFarPlane",n[n.CameraNearPlane=1]="CameraNearPlane",n[n.RenderTexture=2]="RenderTexture",n[n.MaterialOverride=3]="MaterialOverride",n))(bg||{}),Te=class extends M{renderer=null;playOnAwake=!0;playOnEnable;aspectMode=0;renderMode;targetMaterialProperty;targetMaterialRenderer;targetTexture;time=0;_playbackSpeed=1;get playbackSpeed(){return this._videoElement?.playbackRate??this._playbackSpeed}set playbackSpeed(e){this._playbackSpeed=e,this._videoElement&&(this._videoElement.playbackRate=e)}_isLooping=!1;get isLooping(){return this._videoElement?.loop??this._isLooping}set isLooping(e){this._isLooping=e,this._videoElement&&(this._videoElement.loop=e)}get currentTime(){return this._videoElement?.currentTime??this.time}set currentTime(e){this._videoElement?this._videoElement.currentTime=e:this.time=e}get isPlaying(){let e=this._videoElement;return e?e.currentTime>0&&!e.paused&&!e.ended&&e.readyState>e.HAVE_CURRENT_DATA:!1}get crossOrigin(){return this._videoElement?.crossOrigin??this._crossOrigin}set crossOrigin(e){this._crossOrigin=e,this._videoElement&&(e!==null?this._videoElement.setAttribute("crossorigin",e):this._videoElement.removeAttribute("crossorigin"))}get videoTexture(){return this._videoTexture}get videoElement(){return this._videoElement}_crossOrigin="anonymous";audioOutputMode=1;source;clip=null;url=null;_videoElement=null;_videoTexture=null;videoMaterial=null;_isPlaying=!1;wasPlaying=!1;setVideo(e){this.clip=e,this.source=0,this._videoElement?(this._videoElement.srcObject=e,this._isPlaying&&this._videoElement.play(),this.updateAspect()):this.create(!0)}setClipURL(e){this.url!==e&&(this.url=e,this.source=1,Sc&&console.log("set url",e),this._videoElement?(this._videoElement.src=e,this._isPlaying&&(this.stop(),this.play())):this.create(!0))}awake(){this.create(this.playOnAwake),window.addEventListener("visibilitychange",e=>{switch(document.visibilityState){case"hidden":this.wasPlaying=this._isPlaying,this.pause();break;case"visible":this.wasPlaying&&this.play();break}})}onEnable(){this.playOnEnable===!0&&this.handleBeginPlaying(!0),this.screenspace?this._overlay?.start():this._overlay?.stop()}onDisable(){this.pause()}onDestroy(){this._videoElement&&(this._videoElement.parentElement?.removeChild(this._videoElement),this._videoElement=null),this._videoTexture&&(this._videoTexture.dispose(),this._videoTexture=null)}_receivedInput=!1;constructor(){super(),gg(()=>{this._receivedInput=!0,this.updateVideoElementSettings()}),this._targetObjects=[],P("videoscreenspace")&&window.addEventListener("keydown",e=>{e.key==="f"&&(this.screenspace=!this.screenspace)})}play(){!this._videoElement||this._isPlaying&&!this._videoElement?.ended&&!this._videoElement?.paused||(this._isPlaying=!0,this._receivedInput||(this._videoElement.muted=!0),this.updateVideoElementSettings(),this._videoElement?.play().catch(e=>{console.warn(e)}),Sc&&console.log("play",this._videoElement))}stop(){this._isPlaying=!1,this._videoElement&&(this._videoElement.currentTime=0,this._videoElement.pause())}pause(){this._isPlaying=!1,this._videoElement?.pause()}create(e){let t;switch(this.source){case 0:t=this.clip;break;case 1:t=this.url;break}if(!!t){if(this._videoElement||(this._videoElement=this.createVideoElement(),this.context.domElement?.prepend(this._videoElement),this.updateVideoElementStyles()),typeof t=="string"){this._videoElement.src=t;let i=this._videoElement.captureStream?.call(this._videoElement);this.clip=i}else this._videoElement.srcObject=t;this._videoTexture||(this._videoTexture=new Pc.VideoTexture(this._videoElement)),this._videoTexture.flipY=!1,this._videoTexture.encoding=Pc.sRGBEncoding,this.handleBeginPlaying(e),Sc&&console.log(this)}}updateAspect(){this.aspectMode!==0&&this.startCoroutine(this.updateAspectImpl())}_overlay=null;get screenspace(){return this._overlay?.enabled??!1}set screenspace(e){if(e){if(!this._videoTexture)return;this._overlay||(this._overlay=new Ph(this.context)),this._overlay.add(this._videoTexture)}else this._overlay?.remove(this._videoTexture);this._overlay&&(this._overlay.enabled=e)}_targetObjects;createVideoElement(){let e=document.createElement("video");return this._crossOrigin&&e.setAttribute("crossorigin",this._crossOrigin),Sc&&console.log("create video elment",e),e}handleBeginPlaying(e){if(!this.enabled||!this._videoElement)return;this._targetObjects.length=0;let t=this.gameObject;switch(this.renderMode){case 3:t=this.targetMaterialRenderer?.gameObject,t||(t=R.getComponent(this.gameObject,ae)?.gameObject);break;case 2:console.error("VideoPlayer renderTexture not implemented yet. Please use material override instead");return}if(!t){console.error("Missing target for video material renderer",this.name,bg[this.renderMode],this);return}let i=t.material;if(i)if(this._targetObjects.push(t),i!==this.videoMaterial&&(this.videoMaterial=i.clone(),t.material=this.videoMaterial),!this.targetMaterialProperty)this.videoMaterial.map=this._videoTexture;else switch(this.targetMaterialProperty){default:this.videoMaterial.map=this._videoTexture;break}else{console.warn("Can not play video, no material found, this might be a multimaterial case which is not supported yet");return}this.updateVideoElementSettings(),this.updateVideoElementStyles(),e&&this.play()}updateVideoElementSettings(){!this._videoElement||(this._videoElement.loop=this._isLooping,this._videoElement.currentTime=this.currentTime,this._videoElement.playbackRate=this._playbackSpeed,this._videoElement.playsInline=!0,this._videoElement.muted=!this._receivedInput&&this.audioOutputMode!==0,(this.playOnAwake||this.playOnEnable)&&(this._videoElement.autoplay=!0))}updateVideoElementStyles(){!this._videoElement||(this._videoElement.style.userSelect="none",this._videoElement.style.visibility="hidden",this._videoElement.style.display="none",this.updateAspect())}_updateAspectRoutineId=-1;*updateAspectImpl(){let e=++this._updateAspectRoutineId,t=void 0,i=this.clip;for(;e===this._updateAspectRoutineId&&this.aspectMode!==0&&this.clip&&i===this.clip&&this._isPlaying;){if(!i||typeof i=="string")return;let n;for(let r of i.getVideoTracks()){let s=r.getSettings();if(s&&s.width&&s.height){n=s.width/s.height;break}else n=this.context.renderer.domElement.clientWidth/this.context.renderer.domElement.clientHeight}if(n===void 0){for(let r=0;r<10;r++)yield;if(!this.isPlaying)break;continue}if(t===n){yield;continue}for(let r of this._targetObjects){let s=1;if(r.parent){let a=Ae(r.parent);s=a.x/a.y}switch(this.aspectMode){case 1:r.scale.y=1/n*r.scale.x*s;break;case 2:r.scale.x=n*r.scale.y*s;break}}for(let r=0;r<3;r++)yield}}};v([y(ow)],Te.prototype,"renderer",2),v([y()],Te.prototype,"playOnAwake",2),v([y()],Te.prototype,"playOnEnable",2),v([y()],Te.prototype,"aspectMode",2),v([y()],Te.prototype,"renderMode",2),v([y()],Te.prototype,"targetMaterialProperty",2),v([y(ae)],Te.prototype,"targetMaterialRenderer",2),v([y(aw)],Te.prototype,"targetTexture",2),v([y()],Te.prototype,"time",2),v([y()],Te.prototype,"playbackSpeed",1),v([y()],Te.prototype,"isLooping",1);var Ph=class{context;constructor(e){this.context=e,this._input=new Oh(this)}get enabled(){return this._isInScreenspaceMode}set enabled(e){e?this.start():this.stop()}add(e){this._videos.indexOf(e)===-1&&this._videos.push(e)}remove(e){if(!e)return;let t=this._videos.indexOf(e);t>=0&&this._videos.splice(t,1)}start(){if(this._isInScreenspaceMode||this._videos.length<0)return;let e=this._videos[this._videos.length-1];if(!e)return;if(this._isInScreenspaceMode=!0,!this._screenspaceModeQuad){if(this._screenspaceModeQuad=Rc.createPrimitive(0,{material:new kh(e)}),!this._screenspaceModeQuad)return;this._screenspaceModeQuad.geometry.scale(2,2,2)}let t=this._screenspaceModeQuad;this.context.scene.add(t),this.updateScreenspaceMaterialUniforms();let i=t.material;i?.reset(),this._input?.enable(i)}stop(){this._isInScreenspaceMode=!1,this._screenspaceModeQuad&&(this._input?.disable(),this._screenspaceModeQuad.removeFromParent())}updateScreenspaceMaterialUniforms(){let e=this._screenspaceModeQuad?.material;!e||(e.screenAspect=this.context.domElement.clientWidth/this.context.domElement.clientHeight)}_videos=[];_screenspaceModeQuad;_isInScreenspaceMode=!1;_input},Oh=class{_onResizeScreenFn;_onKeyUpFn;_onMouseWheelFn;context;overlay;constructor(e){this.overlay=e,this.context=e.context}_material;enable(e){this._material=e,window.addEventListener("resize",this._onResizeScreenFn=()=>{this.overlay.updateScreenspaceMaterialUniforms()}),window.addEventListener("keyup",this._onKeyUpFn=n=>{n.key==="Escape"&&this.overlay.stop()}),window.addEventListener("wheel",this._onMouseWheelFn=n=>{this.overlay.enabled&&(e.zoom+=n.deltaY*5e-4,n.preventDefault())},{passive:!1});let t=new Sh;window.addEventListener("mousemove",n=>{if(this.overlay.enabled&&this.context.input.getPointerPressed(0)){let r=new Sh(n.movementX,n.movementY);r.x/=this.context.domElement.clientWidth,r.y/=this.context.domElement.clientHeight,t.set(r.x,r.y),t.multiplyScalar(e.zoom/-this.context.time.deltaTime*.01),e.offset=e.offset.add(t)}}),window.addEventListener("pointermove",n=>{this.overlay.enabled&&this.context.input.getPointerPressed(0)&&this.context.input.getTouchesPressedCount()===1&&(t.set(n.movementX,n.movementY),t.multiplyScalar(e.zoom*-this.context.time.deltaTime*.05),e.offset=e.offset.add(t))});let i=0;window.addEventListener("touchstart",n=>{if(n.touches.length<2){this.context.time.time-i<.3&&this.overlay.stop(),i=this.context.time.time;return}this._isPinching=!0,this._lastPinch=0}),window.addEventListener("touchmove",n=>{if(!this._isPinching||!this._material)return;let r=n.touches[0],s=n.touches[1],a=r.clientX-s.clientX,c=r.clientY-s.clientY,u=Math.sqrt(a*a+c*c);if(this._lastPinch!==0){let l=u-this._lastPinch;this._material.zoom-=l*.004}this._lastPinch=u}),window.addEventListener("touchend",()=>{this._isPinching=!1})}_isPinching=!1;_lastPinch=0;disable(){this._onResizeScreenFn&&(window.removeEventListener("resize",this._onResizeScreenFn),this._onResizeScreenFn=void 0),this._onKeyUpFn&&(window.removeEventListener("keyup",this._onKeyUpFn),this._onKeyUpFn=void 0),this._onMouseWheelFn&&(window.removeEventListener("wheel",this._onMouseWheelFn),this._onMouseWheelFn=void 0)}},kh=class extends sw{set screenAspect(e){this.uniforms.screenAspect.value=e,this.needsUpdate=!0}set offset(e){let t=this.uniforms.offsetScale.value;t.x=e.x,t.y=e.y,this.uniforms.offsetScale.value=t,this.needsUpdate=!0}_offset=new Sh;get offset(){let e=this.uniforms.offsetScale.value;return this._offset.set(e.x,e.y),this._offset}set zoom(e){let t=this.uniforms.offsetScale.value;e<.001&&(e=.001),t.z=e,this.needsUpdate=!0}get zoom(){return this.uniforms.offsetScale.value.z}reset(){this.offset=this.offset.set(0,0),this.zoom=1,this.needsUpdate=!0}constructor(e){super(),this.uniforms={map:{value:e},screenAspect:{value:1},offsetScale:{value:new lw(0,0,1,1)}},this.vertexShader=`
249
249
  uniform sampler2D map;
250
250
  uniform float screenAspect;
251
251
  uniform vec4 offsetScale;
@@ -295,7 +295,7 @@ a:hover {
295
295
  else
296
296
  gl_FragColor = texture2D(map, vUv);
297
297
  }
298
- `}};var gg=Ha(ml(),1);import{EventDispatcher as Lh}from"three";var bg=P("debugscreenshare");function Pc(o){if(!!o)for(let e of o.getTracks())e.stop()}var xr=class extends M{onPointerClick(){if(this.context.connection.isInRoom!==!1){if(this.isReceiving){this.videoPlayer&&(this.videoPlayer.screenspace=!this.videoPlayer.screenspace);return}if(this.isSending){this.close();return}this.share()}}videoPlayer;device=0;get currentScream(){return this._currentStream}get currentMode(){return this._currentMode}get isSending(){return this._currentStream?.active&&this._currentMode===1}get isReceiving(){if(this._currentMode===2){if(!this._currentStream||this._currentStream.active===!1)return!1;let e=this._currentStream.getTracks();for(let t of e)if(t.readyState==="live")return!0}return!1}_net;_requestOpen=!1;_currentStream=null;_currentMode=0;awake(){bg&&console.log(this),se.registerWaitForAllowAudio(()=>{this.videoPlayer&&this._currentStream&&this._currentMode===2&&this.videoPlayer.setVideo(this._currentStream)})}start(){if(this.videoPlayer||(this.videoPlayer=R.getComponent(this.gameObject,Te)??void 0),!this.videoPlayer){console.error("Screencapture did not find a VideoPlayer component");return}let e=Oc.getOrCreate(this.context,this.guid);this._net=new Dh(this.context,e),this._net.enable(),this._net.addEventListener(vg.ReceiveVideo,this.onReceiveVideo.bind(this))}async share(e){e?.device&&(this.device=e.device),this._requestOpen=!0;try{if(this.videoPlayer){let t=e?.constraints??{echoCancellation:!0,autoGainControl:!1},i={video:t,audio:t};switch(this.device){case 1:this.tryShareUserCamera(i,e);break;case 0:if(!navigator.mediaDevices.getDisplayMedia){console.error("No getDisplayMedia support");return}let n=await navigator.mediaDevices.getDisplayMedia(i);this._requestOpen?this.setVideo(n,1):Pc(n);break;case 2:let r=0,s=this.context.renderer.domElement.captureStream(r);this.setVideo(s,1);break}}}catch(t){if(t.name==="NotAllowedError"){console.log("Selection cancelled"),this._requestOpen=!1;return}console.error("Error opening video",t)}}close(){this._requestOpen=!1,this._currentStream&&(console.warn("Close current stream / disposing resources"),this._net?.stopSendingVideo(this._currentStream),Pc(this._currentStream),this._currentMode=0,this._currentStream=null)}setVideo(e,t){if(e===this._currentStream||(this.close(),!e||!this.videoPlayer))return;this._currentStream=e,this._requestOpen=!0,this._currentMode=t,this.videoPlayer.setVideo(e),t===1&&this._net?.startSendingVideo(e),e.addEventListener("ended",()=>{this.close()})}onReceiveVideo(e){this.setVideo(e.stream,2)}async tryShareUserCamera(e,t){let i=(await navigator.mediaDevices.enumerateDevices()).filter(n=>n.kind==="videoinput");console.log("Request camera",i);for(let n of i)try{if(!this._requestOpen)break;if(n.kind!=="videoinput")continue;let r=n.deviceId;if(t?.deviceId!==void 0&&r!==t.deviceId)continue;e.video!==!1&&((typeof e.video>"u"||typeof e.video=="boolean")&&(e.video={}),e.video.deviceId=r);let s=await navigator.mediaDevices.getUserMedia(e);this._requestOpen?this.setVideo(s,1):Pc(s),console.log("Selected camera",n);break}catch(r){console.warn(r)}}};v([y(Te)],xr.prototype,"videoPlayer",2),v([y()],xr.prototype,"device",2);var vg=(i=>(i.Connected="peer-user-connected",i.ReceiveVideo="receive-video",i.Disconnected="peer-user-disconnected",i))(vg||{}),Mh=class{type="receive-video";stream;target;constructor(e,t){this.stream=e,this.target=t}},Ih=class{guid;peerId;dontSave=!0;constructor(e,t){this.guid=e.id,this.peerId=t}};var Ah=class extends Lh{userId;direction;call;get stream(){return this._stream}_stream=null;_isDisposed=!1;close(){this._isDisposed||(this._isDisposed=!0,this.call.close(),Pc(this._stream))}get isOpen(){return this.call.peerConnection?.connectionState==="connected"}get isClosed(){return!this.isOpen}constructor(e,t,i){super(),this.userId=e,this.call=t,this.direction=i,this._stream=null,t.on("stream",n=>{if(console.log("Receive video",n.getAudioTracks(),n.getVideoTracks()),this._stream=n,i==="incoming"){let r=new Mh(n,this);this.dispatchEvent(r)}})}},Rs=class extends Lh{static getOrCreate(e,t){if(Rs.instances.has(t))return Rs.instances.get(t);let i=new Rs(e,t);return Rs.instances.set(t,i),i}getMyPeerId(){if(this.context.connection.connectionId)return this.getPeerIdFromUserId(this.context.connection.connectionId)}getPeerIdFromUserId(e){return this.id+"-"+e}getUserIdFromPeerId(e){return e.substring(this.id.length+1)}makeCall(e,t){let i={metadata:{userId:this.context.connection.connectionId}},n=this._peer?.call(e,t,i);if(n)return this.registerCall(n,"outgoing")}get peer(){return this._peer}id;context;_peer;_incomingCalls=[];_outgoingCalls=[];constructor(e,t){super(),this.context=e,this.id=t,this.setupPeer(),navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia}_enabled=!1;_enabledPeer=!1;onConnectRoomFn=this.onConnectRoom.bind(this);onUserJoinedOrLeftRoomFn=this.onUserJoinedOrLeftRoom.bind(this);onPeerConnectFn=this.onPeerConnect.bind(this);onPeerReceiveCallFn=this.onPeerReceivingCall.bind(this);enable(){this._enabled||(this._enabled=!0,this.context.connection.beginListen("joined-room",this.onConnectRoomFn),this.context.connection.beginListen("user-joined-room",this.onUserJoinedOrLeftRoomFn),this.context.connection.beginListen("user-left-room",this.onUserJoinedOrLeftRoomFn),this.subscribePeerEvents())}disable(){!this._enabled||(this._enabled=!1,this.context.connection.stopListening("joined-room",this.onConnectRoomFn),this.context.connection.stopListening("user-joined-room",this.onUserJoinedOrLeftRoomFn),this.context.connection.stopListening("user-left-room",this.onUserJoinedOrLeftRoomFn),this.unsubscribePeerEvents())}onConnectRoom(){this.setupPeer()}onUserJoinedOrLeftRoom(e){}setupPeer(){if(!!this.context.connection.connectionId&&!this._enabledPeer){if(this._enabledPeer=!0,!this._peer){let e=this.getMyPeerId();this._peer=new gg.default(e)}this._enabled&&this.subscribePeerEvents()}}subscribePeerEvents(){!this._peer||(this._peer.on("open",this.onPeerConnectFn),this._peer.on("call",this.onPeerReceiveCallFn))}unsubscribePeerEvents(){}onPeerConnect(e){bg&&console.log("Peer connected as",e),this.context.connection.send("peer-user-connected",new Ih(this,e))}onPeerReceivingCall(e){e.answer(),this.registerCall(e,"incoming")}registerCall(e,t){let i=e.metadata;(!i||!i.userId)&&console.error("Missing call metadata",e);let n=i.userId;console.log(t==="incoming"?"Receive call from":"Make call to",e.metadata);let r=t==="incoming"?this._incomingCalls:this._outgoingCalls,s=new Ah(n,e,t);return r.push(s),e.on("error",a=>{console.error("Call error",a)}),e.on("close",()=>{console.log("Call ended",e.metadata),e.close();let a=r.indexOf(s);a!==-1&&r.splice(a,1)}),t==="incoming"&&(s.addEventListener("receive-video",a=>{this.dispatchEvent(a)}),e.on("stream",()=>{let a=setInterval(()=>{s.isOpen||(clearInterval(a),s.close())},2e3)})),s}},Oc=Rs;I(Oc,"instances",new Map);var Dh=class extends Lh{context;peer;_sendingVideoStreams=new Map;constructor(e,t){super(),this.context=e,this.peer=t}startSendingVideo(e){this._sendingVideoStreams.has(e)||(this._sendingVideoStreams.set(e,[]),this.updateSendingCalls())}stopSendingVideo(e){if(e){let t=this._sendingVideoStreams.get(e);if(t){console.log("Closing calls",t);for(let i of t)i.close()}this._sendingVideoStreams.delete(e),t&&console.log("Currently sending",this._sendingVideoStreams)}}onConnectRoomFn=this.onConnectRoom.bind(this);onUserConnectedFn=this.onUserConnected.bind(this);onUserLeftFn=this.onUserLeft.bind(this);enable(){this.peer.enable(),this.context.connection.beginListen("peer-user-connected",this.onUserConnectedFn),this.peer.addEventListener("receive-video",this.onReceiveVideo.bind(this))}disable(){this.peer.disable()}onReceiveVideo(e){console.log("RECEIVE VIDEO",e),this.dispatchEvent({type:"receive-video",target:this,stream:e.stream,userId:e.userId})}onConnectRoom(){}onUserConnected(e){if(this.peer.id===e.guid){console.log("USER CONNECTED",e);let t=this._sendingVideoStreams.keys().next().value;this.peer.makeCall(e.peerId,t)}}onUserLeft(e){this.stopCallsToUsersThatAreNotInTheRoomAnymore()}updateSendingCalls(){let e=!1;for(let t of this._sendingVideoStreams.keys()){let i=this._sendingVideoStreams.get(t)||[];for(let n of this.context.connection.usersInRoom()){if(n===this.context.connection.connectionId)continue;if(!i.find(s=>s.userId===n)){let s=this.peer.makeCall(this.peer.getPeerIdFromUserId(n),t);s&&(e=!0,i.push(s))}}this._sendingVideoStreams.set(t,i)}this.stopCallsToUsersThatAreNotInTheRoomAnymore(),e&&console.log("Currently sending",this._sendingVideoStreams)}stopCallsToUsersThatAreNotInTheRoomAnymore(){for(let e of this._sendingVideoStreams.keys()){let t=this._sendingVideoStreams.get(e);if(!!t)for(let i=t.length-1;i>=0;i--){let n=t[i];this.context.connection.userIsInRoom(n.userId)||(n.close(),t.splice(i,1))}}}};import{ShadowMaterial as ow,AdditiveBlending as sw}from"three";var wr=class extends M{mode=0;shadowColor=new q(0,0,0,1);awake(){switch(this.mode){case 0:this.applyShadowMaterial();break;case 1:this.applyLightBlendMaterial();break}}applyLightBlendMaterial(){let e=R.getComponent(this.gameObject,ae);if(e){let t=e.sharedMaterial;t.blending=sw,this.applyMaterialOptions(t),t.onBeforeCompile=i=>{i.fragmentShader=i.fragmentShader.replace("vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;",`vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;
298
+ `}};var vg=Fa(gl(),1);import{EventDispatcher as Lh}from"three";var yg=P("debugscreenshare");function Oc(o){if(!!o)for(let e of o.getTracks())e.stop()}var wr=class extends M{onPointerClick(){if(this.context.connection.isInRoom!==!1){if(this.isReceiving){this.videoPlayer&&(this.videoPlayer.screenspace=!this.videoPlayer.screenspace);return}if(this.isSending){this.close();return}this.share()}}videoPlayer;device=0;get currentScream(){return this._currentStream}get currentMode(){return this._currentMode}get isSending(){return this._currentStream?.active&&this._currentMode===1}get isReceiving(){if(this._currentMode===2){if(!this._currentStream||this._currentStream.active===!1)return!1;let e=this._currentStream.getTracks();for(let t of e)if(t.readyState==="live")return!0}return!1}_net;_requestOpen=!1;_currentStream=null;_currentMode=0;awake(){yg&&console.log(this),se.registerWaitForAllowAudio(()=>{this.videoPlayer&&this._currentStream&&this._currentMode===2&&this.videoPlayer.setVideo(this._currentStream)})}start(){if(this.videoPlayer||(this.videoPlayer=R.getComponent(this.gameObject,Te)??void 0),!this.videoPlayer){console.error("Screencapture did not find a VideoPlayer component");return}let e=kc.getOrCreate(this.context,this.guid);this._net=new Dh(this.context,e),this._net.enable(),this._net.addEventListener(_g.ReceiveVideo,this.onReceiveVideo.bind(this))}async share(e){e?.device&&(this.device=e.device),this._requestOpen=!0;try{if(this.videoPlayer){let t=e?.constraints??{echoCancellation:!0,autoGainControl:!1},i={video:t,audio:t};switch(this.device){case 1:this.tryShareUserCamera(i,e);break;case 0:if(!navigator.mediaDevices.getDisplayMedia){console.error("No getDisplayMedia support");return}let n=await navigator.mediaDevices.getDisplayMedia(i);this._requestOpen?this.setVideo(n,1):Oc(n);break;case 2:let r=0,s=this.context.renderer.domElement.captureStream(r);this.setVideo(s,1);break}}}catch(t){if(t.name==="NotAllowedError"){console.log("Selection cancelled"),this._requestOpen=!1;return}console.error("Error opening video",t)}}close(){this._requestOpen=!1,this._currentStream&&(console.warn("Close current stream / disposing resources"),this._net?.stopSendingVideo(this._currentStream),Oc(this._currentStream),this._currentMode=0,this._currentStream=null)}setVideo(e,t){if(e===this._currentStream||(this.close(),!e||!this.videoPlayer))return;this._currentStream=e,this._requestOpen=!0,this._currentMode=t,this.videoPlayer.setVideo(e),t===1&&this._net?.startSendingVideo(e),e.addEventListener("ended",()=>{this.close()})}onReceiveVideo(e){this.setVideo(e.stream,2)}async tryShareUserCamera(e,t){let i=(await navigator.mediaDevices.enumerateDevices()).filter(n=>n.kind==="videoinput");console.log("Request camera",i);for(let n of i)try{if(!this._requestOpen)break;if(n.kind!=="videoinput")continue;let r=n.deviceId;if(t?.deviceId!==void 0&&r!==t.deviceId)continue;e.video!==!1&&((typeof e.video>"u"||typeof e.video=="boolean")&&(e.video={}),e.video.deviceId=r);let s=await navigator.mediaDevices.getUserMedia(e);this._requestOpen?this.setVideo(s,1):Oc(s),console.log("Selected camera",n);break}catch(r){console.warn(r)}}};v([y(Te)],wr.prototype,"videoPlayer",2),v([y()],wr.prototype,"device",2);var _g=(i=>(i.Connected="peer-user-connected",i.ReceiveVideo="receive-video",i.Disconnected="peer-user-disconnected",i))(_g||{}),Mh=class{type="receive-video";stream;target;constructor(e,t){this.stream=e,this.target=t}},Ih=class{guid;peerId;dontSave=!0;constructor(e,t){this.guid=e.id,this.peerId=t}};var Ah=class extends Lh{userId;direction;call;get stream(){return this._stream}_stream=null;_isDisposed=!1;close(){this._isDisposed||(this._isDisposed=!0,this.call.close(),Oc(this._stream))}get isOpen(){return this.call.peerConnection?.connectionState==="connected"}get isClosed(){return!this.isOpen}constructor(e,t,i){super(),this.userId=e,this.call=t,this.direction=i,this._stream=null,t.on("stream",n=>{if(console.log("Receive video",n.getAudioTracks(),n.getVideoTracks()),this._stream=n,i==="incoming"){let r=new Mh(n,this);this.dispatchEvent(r)}})}},Ss=class extends Lh{static getOrCreate(e,t){if(Ss.instances.has(t))return Ss.instances.get(t);let i=new Ss(e,t);return Ss.instances.set(t,i),i}getMyPeerId(){if(this.context.connection.connectionId)return this.getPeerIdFromUserId(this.context.connection.connectionId)}getPeerIdFromUserId(e){return this.id+"-"+e}getUserIdFromPeerId(e){return e.substring(this.id.length+1)}makeCall(e,t){let i={metadata:{userId:this.context.connection.connectionId}},n=this._peer?.call(e,t,i);if(n)return this.registerCall(n,"outgoing")}get peer(){return this._peer}id;context;_peer;_incomingCalls=[];_outgoingCalls=[];constructor(e,t){super(),this.context=e,this.id=t,this.setupPeer(),navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia}_enabled=!1;_enabledPeer=!1;onConnectRoomFn=this.onConnectRoom.bind(this);onUserJoinedOrLeftRoomFn=this.onUserJoinedOrLeftRoom.bind(this);onPeerConnectFn=this.onPeerConnect.bind(this);onPeerReceiveCallFn=this.onPeerReceivingCall.bind(this);enable(){this._enabled||(this._enabled=!0,this.context.connection.beginListen("joined-room",this.onConnectRoomFn),this.context.connection.beginListen("user-joined-room",this.onUserJoinedOrLeftRoomFn),this.context.connection.beginListen("user-left-room",this.onUserJoinedOrLeftRoomFn),this.subscribePeerEvents())}disable(){!this._enabled||(this._enabled=!1,this.context.connection.stopListening("joined-room",this.onConnectRoomFn),this.context.connection.stopListening("user-joined-room",this.onUserJoinedOrLeftRoomFn),this.context.connection.stopListening("user-left-room",this.onUserJoinedOrLeftRoomFn),this.unsubscribePeerEvents())}onConnectRoom(){this.setupPeer()}onUserJoinedOrLeftRoom(e){}setupPeer(){if(!!this.context.connection.connectionId&&!this._enabledPeer){if(this._enabledPeer=!0,!this._peer){let e=this.getMyPeerId();this._peer=new vg.default(e)}this._enabled&&this.subscribePeerEvents()}}subscribePeerEvents(){!this._peer||(this._peer.on("open",this.onPeerConnectFn),this._peer.on("call",this.onPeerReceiveCallFn))}unsubscribePeerEvents(){}onPeerConnect(e){yg&&console.log("Peer connected as",e),this.context.connection.send("peer-user-connected",new Ih(this,e))}onPeerReceivingCall(e){e.answer(),this.registerCall(e,"incoming")}registerCall(e,t){let i=e.metadata;(!i||!i.userId)&&console.error("Missing call metadata",e);let n=i.userId;console.log(t==="incoming"?"Receive call from":"Make call to",e.metadata);let r=t==="incoming"?this._incomingCalls:this._outgoingCalls,s=new Ah(n,e,t);return r.push(s),e.on("error",a=>{console.error("Call error",a)}),e.on("close",()=>{console.log("Call ended",e.metadata),e.close();let a=r.indexOf(s);a!==-1&&r.splice(a,1)}),t==="incoming"&&(s.addEventListener("receive-video",a=>{this.dispatchEvent(a)}),e.on("stream",()=>{let a=setInterval(()=>{s.isOpen||(clearInterval(a),s.close())},2e3)})),s}},kc=Ss;I(kc,"instances",new Map);var Dh=class extends Lh{context;peer;_sendingVideoStreams=new Map;constructor(e,t){super(),this.context=e,this.peer=t}startSendingVideo(e){this._sendingVideoStreams.has(e)||(this._sendingVideoStreams.set(e,[]),this.updateSendingCalls())}stopSendingVideo(e){if(e){let t=this._sendingVideoStreams.get(e);if(t){console.log("Closing calls",t);for(let i of t)i.close()}this._sendingVideoStreams.delete(e),t&&console.log("Currently sending",this._sendingVideoStreams)}}onConnectRoomFn=this.onConnectRoom.bind(this);onUserConnectedFn=this.onUserConnected.bind(this);onUserLeftFn=this.onUserLeft.bind(this);enable(){this.peer.enable(),this.context.connection.beginListen("peer-user-connected",this.onUserConnectedFn),this.peer.addEventListener("receive-video",this.onReceiveVideo.bind(this))}disable(){this.peer.disable()}onReceiveVideo(e){console.log("RECEIVE VIDEO",e),this.dispatchEvent({type:"receive-video",target:this,stream:e.stream,userId:e.userId})}onConnectRoom(){}onUserConnected(e){if(this.peer.id===e.guid){console.log("USER CONNECTED",e);let t=this._sendingVideoStreams.keys().next().value;this.peer.makeCall(e.peerId,t)}}onUserLeft(e){this.stopCallsToUsersThatAreNotInTheRoomAnymore()}updateSendingCalls(){let e=!1;for(let t of this._sendingVideoStreams.keys()){let i=this._sendingVideoStreams.get(t)||[];for(let n of this.context.connection.usersInRoom()){if(n===this.context.connection.connectionId)continue;if(!i.find(s=>s.userId===n)){let s=this.peer.makeCall(this.peer.getPeerIdFromUserId(n),t);s&&(e=!0,i.push(s))}}this._sendingVideoStreams.set(t,i)}this.stopCallsToUsersThatAreNotInTheRoomAnymore(),e&&console.log("Currently sending",this._sendingVideoStreams)}stopCallsToUsersThatAreNotInTheRoomAnymore(){for(let e of this._sendingVideoStreams.keys()){let t=this._sendingVideoStreams.get(e);if(!!t)for(let i=t.length-1;i>=0;i--){let n=t[i];this.context.connection.userIsInRoom(n.userId)||(n.close(),t.splice(i,1))}}}};import{ShadowMaterial as cw,AdditiveBlending as uw}from"three";var Er=class extends M{mode=0;shadowColor=new q(0,0,0,1);awake(){switch(this.mode){case 0:this.applyShadowMaterial();break;case 1:this.applyLightBlendMaterial();break}}applyLightBlendMaterial(){let e=R.getComponent(this.gameObject,ae);if(e){let t=e.sharedMaterial;t.blending=uw,this.applyMaterialOptions(t),t.onBeforeCompile=i=>{i.fragmentShader=i.fragmentShader.replace("vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;",`vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;
299
299
  // diffuse-only lighting with overdrive to somewhat compensate
300
300
  // for the loss of indirect lighting and to make it more visible.
301
301
  vec3 direct = reflectedLight.directDiffuse * 3.;
@@ -305,12 +305,12 @@ a:hover {
305
305
  // be blended onto the scene.
306
306
  gl_FragColor = vec4(direct, max);
307
307
  return;
308
- `)}}}applyShadowMaterial(){let e=R.getComponent(this.gameObject,ae);if(e)if(e.sharedMaterial?.type!=="ShadowMaterial"){let t=new ow;t.color=this.shadowColor,t.opacity=this.shadowColor.alpha,this.applyMaterialOptions(t),e.sharedMaterial=t}else{let t=e.sharedMaterial;t.color=this.shadowColor,t.opacity=this.shadowColor.alpha,this.applyMaterialOptions(t)}}applyMaterialOptions(e){e&&(e.depthWrite=!1,e.stencilWrite=!1)}};v([y()],wr.prototype,"mode",2),v([y(q)],wr.prototype,"shadowColor",2);import*as kc from"three";import{Object3D as aw}from"three";var jh=class extends M{target=null;followFactor=.1;rotateFactor=.1;positionAxes=-1;flipForward=!1;_firstUpdate=!0;onBeforeRender(){this.updateNow(!1)}updateNow(e){if(!(!this.target||this.target===this.gameObject)){if(this.followFactor>0){let t=B(this.target),i=this._firstUpdate||e?1:H.clamp01(this.context.time.deltaTime*this.followFactor),n=this.worldPosition;this.positionAxes&2&&(n.x=H.lerp(n.x,t.x,i)),this.positionAxes&4&&(n.y=H.lerp(n.y,t.y,i)),this.positionAxes&8&&(n.z=H.lerp(n.z,t.z,i)),this.worldPosition=n}if(this.rotateFactor>0){let t=me(this.target);this.flipForward&&t.premultiply(jh._invertForward);let i=this._firstUpdate||e?1:H.clamp01(this.context.time.deltaTime*this.rotateFactor);this.worldQuaternion=this.worldQuaternion.slerp(t,i)}this._firstUpdate=!1}}},Ot=jh;I(Ot,"_invertForward",new kc.Quaternion().setFromAxisAngle(new kc.Vector3(0,1,0),Math.PI)),v([y(aw)],Ot.prototype,"target",2),v([y()],Ot.prototype,"followFactor",2),v([y()],Ot.prototype,"rotateFactor",2),v([y()],Ot.prototype,"positionAxes",2);import*as yg from"three";import{HTMLMesh as lw}from"three/examples/jsm/interactive/HTMLMesh.js";import{InteractiveGroup as cw}from"three/examples/jsm/interactive/InteractiveGroup.js";var Ss=class extends M{id=null;keepAspect=!1;start(){if(!this.id||!this.context.mainCamera)return;let e=document.getElementById(this.id);if(!e){console.warn('Could not find element with id "'+this.id+'"');return}e.style.display="block",e.style.visibility="hidden";let t=new cw(this.context.renderer,this.context.mainCamera);this.gameObject.add(t);let i=new lw(e);t.add(i),i.visible=!1,console.log(i);let n=i.material;n.transparent=!0,setTimeout(()=>{i.visible=!0;let r=Ka(this.gameObject).clone();Ja(this.gameObject,0,0,0),this.gameObject.updateMatrixWorld();let s=new yg.Box3;s.setFromObject(t),this.setWorldRotation(r.x,r.y,r.z);let a=s.max.x-s.min.x,c=s.max.y-s.min.y;if(this.keepAspect){let l=a/c;a>c?i.scale.set(1/a,1/c/l,1):i.scale.set(1/a*l,1/c,1)}else i.scale.set(1/a,1/c,1);let d=this.gameObject.scale;i.scale.multiply(d)},1)}};import{Layers as wg}from"three";var Ra=P("debugspatialtrigger"),_g=new wg,xg=new wg;function dw(o,e){return _g.mask=o,xg.mask=e,_g.test(xg)}var kt=class extends M{triggerMask=0;onEnter;onStay;onExit;start(){Ra&&console.log(this.name,this.triggerMask,this)}update(){this.currentIntersected.length=0;for(let e of Gn.triggers)dw(e.triggerMask,this.triggerMask)&&e.test(this.gameObject)&&this.currentIntersected.push(e);for(let e=this.lastIntersected.length-1;e>=0;e--){let t=this.lastIntersected[e];this.currentIntersected.indexOf(t)<0&&(this.onExitTrigger(t),this.lastIntersected.splice(e,1))}for(let e of this.currentIntersected)this.lastIntersected.indexOf(e)<0&&this.onEnterTrigger(e),this.onStayTrigger(e);this.lastIntersected.length=0,this.lastIntersected.push(...this.currentIntersected)}currentIntersected=[];lastIntersected=[];onEnterTrigger(e){Ra&&console.log("ENTER TRIGGER",this.name,e.name,this,e),e.raiseOnEnterEvent(this),this.onEnter?.invoke(this,e)}onExitTrigger(e){Ra&&console.log("EXIT TRIGGER",this.name,e.name,this,e),e.raiseOnExitEvent(this),this.onExit?.invoke(this,e)}onStayTrigger(e){e.raiseOnStayEvent(this),this.onStay?.invoke(this,e)}};v([y()],kt.prototype,"triggerMask",2),v([y(ue)],kt.prototype,"onEnter",2),v([y(ue)],kt.prototype,"onStay",2),v([y(ue)],kt.prototype,"onExit",2);var Sa=class extends M{triggerMask;boxHelper;start(){Ra&&console.log(this.name,this.triggerMask,this)}onEnable(){Sa.triggers.push(this),this.boxHelper||(this.boxHelper=R.addNewComponent(this.gameObject,ze),this.boxHelper?.showHelper(null,Ra))}onDisable(){Sa.triggers.splice(Sa.triggers.indexOf(this),1)}test(e){return this.boxHelper?this.boxHelper.isInBox(e)??!1:!1}raiseOnEnterEvent(e){R.foreachComponent(this.gameObject,t=>{t!==e&&t instanceof kt&&t.onEnterTrigger(this)},!1)}raiseOnStayEvent(e){R.foreachComponent(this.gameObject,t=>{t!==e&&t instanceof kt&&t.onStayTrigger(this)},!1)}raiseOnExitEvent(e){R.foreachComponent(this.gameObject,t=>{t!==e&&t instanceof kt&&t.onExitTrigger(this)},!1)}},Gn=Sa;I(Gn,"triggers",[]),v([y()],Gn.prototype,"triggerMask",2);import*as Er from"three";var Mt=P("debugspectator"),Ps=class extends M{cam=null;_mode=0;get mode(){return this._mode}set mode(e){this._mode=e}get isSpectating(){return this._handler?.currentTarget!==void 0}isSpectatingUser(e){return this.target?.userId===e}isFollowedBy(e){return this.followers?.includes(e)}get followers(){return this._networking.followers}stopSpectating(){if(this.context.isInXR){this.followSelf();return}this.target=void 0}get localId(){return this.context.connection.connectionId??"local"}set target(e){if(this._handler){let t=this._handler.currentTarget?.userId,i=this.context.players.getPlayerView(this.localId);e===void 0||this.context.isInXR===!1&&i?.currentObject===e.currentObject?this._handler.currentTarget!==void 0&&(this._handler.disable(),R.setActive(this.gameObject,!1),this.orbit&&(this.orbit.enabled=!0),this._networking.onSpectatedObjectChanged(e,t)):this._handler.currentTarget!==e&&(this._handler.set(e),R.setActive(this.gameObject,!0),this.orbit&&(this.orbit.enabled=!1),this._networking.onSpectatedObjectChanged(e,t))}}get target(){return this._handler?.currentTarget}requestAllFollowMe(){this._networking.onRequestFollowMe()}get isSpectatingSelf(){return this.isSpectating&&this.target?.currentObject===this.context.players.getPlayerView(this.localId)?.currentObject}orbit=null;_handler;eventSub_WebXRRequestStartEvent=null;eventSub_WebXRStartEvent=null;eventSub_WebXREndEvent=null;_debug;_networking;awake(){if(this._debug=new Fh(this.context,this),this._networking=new Gh(this.context,this),this._networking.awake(),R.setActive(this.gameObject,!1),this.cam=R.getComponent(this.gameObject,ee),!this.cam){console.error("Spectator camera needs camera component",this);return}!this._handler&&this.cam&&(this._handler=new Hh(this.context,this.cam,this)),this.eventSub_WebXRRequestStartEvent=this.onXRSessionRequestStart.bind(this),this.eventSub_WebXRStartEvent=this.onXRSessionStart.bind(this),this.eventSub_WebXREndEvent=this.onXRSessionEnded.bind(this),V.addEventListener("requestVRSession",this.eventSub_WebXRRequestStartEvent),V.addEventListener("xrStarted",this.eventSub_WebXRStartEvent),V.addEventListener("xrStopped",this.eventSub_WebXREndEvent),this.orbit=R.getComponent(this.context.mainCamera,nt)}onDestroy(){this.stopSpectating(),V.removeEventListener("requestVRSession",this.eventSub_WebXRStartEvent),V.removeEventListener("xrStarted",this.eventSub_WebXRStartEvent),V.removeEventListener("xrStopped",this.eventSub_WebXREndEvent),this._handler?.destroy(),this._networking.destroy()}isSupportedPlatform(){let e=window.navigator.userAgent,t=/Windows|MacOS/.test(e),i=/Windows NT/.test(e)&&/Edg/.test(e)&&!/Win64/.test(e);return t&&!i}onXRSessionRequestStart(e){!this.isSupportedPlatform()||R.setActive(this.gameObject,!0)}onXRSessionStart(e){!this.isSupportedPlatform()||(Mt&&console.log(this.context.mainCamera),this.context.mainCamera&&this.followSelf())}onXRSessionEnded(e){this.context.removeCamera(this.cam),R.setActive(this.gameObject,!1),this.orbit&&(this.orbit.enabled=!0),this._handler?.set(void 0),this._handler?.disable(),this.isSpectatingSelf&&this.stopSpectating()}followSelf(){this.target=this.context.players.getPlayerView(this.context.connection.connectionId),this.target||(this.context.players.setPlayerView(this.localId,this.context.mainCamera,"headset"),this.target=this.context.players.getPlayerView(this.localId)),Mt&&console.log("Follow self",this.target)}onAfterRender(){if(!this.cam)return;let e=this.context.renderer,t=e.xr.enabled;if(!e.xr.isPresenting&&!this._handler?.currentTarget)return;this._handler?.update(this._mode);let i=e.getRenderTarget(),n=null;if(!i){if(!e.state.bindFramebuffer||!e.state.bindXRFramebuffer)return;n=e._framebuffer,e.state.bindXRFramebuffer(null)}this.setAvatarFlagsBeforeRender();let r=this.context.mainCameraComponent;if(r){let c=r.backgroundColor;c&&e.setClearColor(c,c.alpha),this.cam.backgroundColor=c,this.cam.clearFlags=r.clearFlags,this.cam.nearClipPlane=r.nearClipPlane,this.cam.farClipPlane=r.farClipPlane}else e.setClearColor(new Er.Color(1,1,1));e.setRenderTarget(null),e.xr.enabled=!1;let s=this.cam?.cam;this.context.updateAspect(s);let a=e.xr.isPresenting;e.xr.isPresenting=!1,e.setSize(this.context.domWidth,this.context.domHeight),e.render(this.context.scene,s),e.xr.isPresenting=a,e.xr.enabled=t,i?e.setRenderTarget(i):e.state.bindXRFramebuffer(n),this.resetAvatarFlags()}setAvatarFlagsBeforeRender(){let e=this._mode===0;for(let t of le.instances)if(t.avatar&&"isLocalAvatar"in t.avatar){let i=4294967295;this.isSpectatingSelf&&(i=e&&t.avatar.isLocalAvatar?8:16);let n=t.avatar.flags;if(!n)continue;for(let r of n)r.UpdateVisible(i)}}resetAvatarFlags(){for(let e of le.instances)if(e.avatar&&"flags"in e.avatar){let t=e.avatar.flags;if(!t)continue;for(let i of t)e.avatar?.isLocalAvatar?i.UpdateVisible(8):i.UpdateVisible(16)}}},Hh=class{context;cam;spectator;follow;target;view;currentObject;get currentTarget(){return this.view}constructor(e,t,i){this.context=e,this.cam=t,this.spectator=i}set(e){let t=e?.currentObject;if(!t){this.spectator.stopSpectating();return}t!==this.currentObject&&(this.currentObject=t,this.view=e,this.follow||(this.follow=R.addNewComponent(this.cam.gameObject,Ot)),this.target||(this.target=new Er.Object3D),t.add(this.target),this.follow.enabled=!0,this.follow.target=this.target,Mt&&console.log("FOLLOW",t),this.context.isInXR?this.context.removeCamera(this.cam):this.context.setCurrentCamera(this.cam))}disable(){Mt&&console.log("STOP FOLLOW",this.currentObject),this.view=void 0,this.currentObject=void 0,this.context.removeCamera(this.cam),this.follow&&(this.follow.enabled=!1)}destroy(){this.target?.removeFromParent(),this.follow&&R.destroy(this.follow)}update(e){if(this.currentTarget?.isConnected===!1||this.currentTarget?.removed===!0){Mt&&console.log("Target disconnected or timeout",this.currentTarget),this.spectator.stopSpectating();return}this.currentTarget&&this.currentTarget?.currentObject!==this.currentObject&&(Mt&&console.log("Target changed",this.currentObject,"to",this.currentTarget.currentObject),this.set(this.currentTarget));let t=this.context.mainCamera;t&&(this.cam.cam.near!==t.near||this.cam.cam.far!==t.far)&&(this.cam.cam.near=t.near,this.cam.cam.far=t.far,this.cam.cam.updateProjectionMatrix());let i=this.follow?.target;if(!(!i||!this.follow)){switch(e){case 0:this.view?.viewDevice!=="browser"?(this.follow.followFactor=5,this.follow.rotateFactor=5):(this.follow.followFactor=50,this.follow.rotateFactor=50),i.position.set(0,0,0);break;case 1:this.follow.followFactor=3,this.follow.rotateFactor=2,i.position.set(0,.5,1.5);break}this.follow.flipForward=!1,this.view?.viewDevice!=="browser"?i.quaternion.copy(uw):i.quaternion.identity()}}},uw=new Er.Quaternion().setFromAxisAngle(new Er.Vector3(0,1,0),Math.PI),Fh=class{context;spectator;constructor(e,t){this.context=e,this.spectator=t,console.log("Click other avatars or cameras to follow them. Press ESC to exit spectator mode."),window.addEventListener("keydown",n=>{n.key==="Escape"&&this.spectator.stopSpectating()});let i=0;this.context.input.addEventListener("pointerdown",n=>{i=this.context.time.time}),this.context.input.addEventListener("pointerup",n=>{let r=this.context.time.time-i;r>1?this.spectator.stopSpectating():this.context.input.getPointerClicked(0)&&r<.3&&this.trySelectObject()})}trySelectObject(){let e=new be;e.setMask(16777215);let t=this.context.physics.raycast(e);if(Mt&&console.log(...t),t?.length)for(let i of t){if(i.distance<.2)continue;let n=i.object,r=R.getComponentInParent(n,le),s=r?.connectionId;if(s){let a=this.context.players.getPlayerView(s);this.spectator.target=a,Mt&&console.log("spectate",s,r);break}}}},Bh=class{guid;dontSave=!0;targetUserId;stoppedFollowing;constructor(e,t,i){this.guid=e,this.targetUserId=t,this.stoppedFollowing=i}},Uh=class{guid;userId;constructor(e,t){this.guid=e.guid,this.userId=t}},Gh=class{followers=[];context;spectator;_followerEventMethod;_requestFollowMethod;_joinedRoomMethod;constructor(e,t){this.context=e,this.spectator=t,this._followerEventMethod=this.onFollowerEvent.bind(this),this._requestFollowMethod=this.onRequestFollowEvent.bind(this),this._joinedRoomMethod=this.onUserJoinedRoom.bind(this)}awake(){this.context.connection.beginListen("spectator-follower-changed",this._followerEventMethod),this.context.connection.beginListen("spectator-request-follow",this._requestFollowMethod),this.context.connection.beginListen("joined-room",this._joinedRoomMethod),document.addEventListener("keydown",e=>{e.key==="f"?this.onRequestFollowMe():e.key==="Escape"&&this.onRequestFollowMe(!0)})}destroy(){this.context.connection.stopListening("spectator-follower-changed",this._followerEventMethod),this.context.connection.stopListening("spectator-request-follow",this._requestFollowMethod),this.context.connection.stopListening("joined-room",this._joinedRoomMethod)}onSpectatedObjectChanged(e,t){if(Mt&&console.log(this.context.connection.connectionId,"onSpectatedObjectChanged",e,t),this.context.connection.connectionId){let i=e?.userId===void 0,n=i?t:e?.userId,r=new Bh(this.context.connection.connectionId,n,i);this.context.connection.send("spectator-follower-changed",r)}}onRequestFollowMe(e=!1){if(Mt&&console.log("Request follow",this.context.connection.connectionId),this.context.connection.connectionId){this.spectator.stopSpectating();let t=e?void 0:this.context.connection.connectionId,i=new Uh(this.spectator,t);this.context.connection.send("spectator-request-follow",i)}}onUserJoinedRoom(){P("followme")&&this.onRequestFollowMe()}onFollowerEvent(e){let t=e.targetUserId,i=e.guid;if(Mt&&console.log(e),t===this.context.connection.connectionId)if(e.stoppedFollowing){let n=this.followers.indexOf(i);n!==-1&&(this.followers.splice(n,1),this.removeDisconnectedFollowers(),console.log(i,"unfollows you",this.followers.length))}else this.followers.includes(i)||(this.followers.push(i),this.removeDisconnectedFollowers(),console.log(i,"follows you",this.followers.length))}removeDisconnectedFollowers(){for(let e=this.followers.length-1;e>=0;e--){let t=this.followers[e];this.context.connection.userIsInRoom(t)===!1&&this.followers.splice(e,1)}}_lastRequestFollowUser;onRequestFollowEvent(e){if(this._lastRequestFollowUser=e,e.userId===this.context.connection.connectionId)this.spectator.stopSpectating();else if(e.userId===void 0)this.spectator.stopSpectating();else{let t=this.context.players.getPlayerView(e.userId);if(t)this.spectator.target=t;else return Mt&&console.warn("Could not find view",e.userId),this.enforceFollow(),!1}return!0}_enforceFollowInterval;enforceFollow(){this._enforceFollowInterval||(this._enforceFollowInterval=setInterval(()=>{this._lastRequestFollowUser===void 0||this._lastRequestFollowUser.userId&&this.spectator.isFollowedBy(this._lastRequestFollowUser.userId)?(clearInterval(this._enforceFollowInterval),this._enforceFollowInterval=void 0):(Mt&&console.log("REQUEST FOLLOW AGAIN",this._lastRequestFollowUser.userId),this.onRequestFollowEvent(this._lastRequestFollowUser))},1e3))}};import*as st from"three";import{Material as hw,NearestFilter as Eg,Texture as pw,Vector2 as Cg}from"three";var zh=P("debugspriterenderer"),Mc=class{static getOrCreateGeometry(e){if(e._geometry)return e._geometry;if(e.guid&&Mc.cache[e.guid])return zh&&console.log("Take cached geometry for sprite",e.guid),Mc.cache[e.guid];let t=new st.BufferGeometry;e._geometry=t;let i=new Float32Array(e.triangles.length*3),n=new Float32Array(e.triangles.length*2);for(let r=0;r<e.triangles.length;r+=1){let s=e.triangles[r];i[r*3]=-e.vertices[s].x,i[r*3+1]=e.vertices[s].y,i[r*3+2]=0;let a=e.uv[s];n[r*2]=a.x,n[r*2+1]=1-a.y}return t.setAttribute("position",new st.BufferAttribute(i,3)),t.setAttribute("uv",new st.BufferAttribute(n,2)),e.guid&&(this.cache[e.guid]=t),zh&&console.log("Built sprite geometry",e,t),t}},Pa=Mc;I(Pa,"cache",{});var ei=class{guid;texture;triangles;uv;vertices;_geometry};v([y()],ei.prototype,"guid",2),v([y(pw)],ei.prototype,"texture",2),v([Uo()],ei.prototype,"triangles",2),v([Uo()],ei.prototype,"uv",2),v([Uo()],ei.prototype,"vertices",2);var Os=class{name;offset;size};v([y()],Os.prototype,"name",2),v([y(Cg)],Os.prototype,"offset",2),v([y(Cg)],Os.prototype,"size",2);var Vh=Symbol("spriteOwner"),sn=class{sprite;index=0;slices;update(){let e=this.index;if(e<0||e>=this.slices.length)return;let t=this.slices[e],i=this.sprite?.texture;!i||(i.encoding=st.sRGBEncoding,i.offset.set(t.offset.x,t.offset.y),i.minFilter==Eg&&i.magFilter==Eg&&(i.anisotropy=1),i.needsUpdate=!0)}};v([y(ei)],sn.prototype,"sprite",2),v([y()],sn.prototype,"index",2),v([y(Os)],sn.prototype,"slices",2);var on=class extends M{drawMode=0;size={x:1,y:1};color;sharedMaterial;get sprite(){return this._spriteSheet}set sprite(e){if(e!==this._spriteSheet)if(typeof e=="number"){let t=Math.floor(e);t===e&&(this.spriteIndex=t);return}else this._spriteSheet=e,this.updateSprite()}set spriteIndex(e){!this._spriteSheet||(this._spriteSheet.index=e,this._spriteSheet.update())}get spriteIndex(){return this._spriteSheet?.index??0}get spriteFrames(){return this._spriteSheet?.slices.length??0}_spriteSheet;_currentSprite;awake(){this._currentSprite=void 0,zh&&(console.log("Awake",this.name,this,this.sprite?.sprite?.texture),this.sprite?.sprite?.texture&&console.log(this.sprite.sprite.texture.minFilter.toString(),this.sprite.sprite.texture.magFilter.toString()))}start(){this._currentSprite?this.gameObject&&this.gameObject.add(this._currentSprite):this.updateSprite()}updateSprite(){if(!this.__didAwake||!this.sprite?.sprite)return;let e=this.sprite.sprite;if(this._currentSprite)this._currentSprite.geometry=Pa.getOrCreateGeometry(e),this._currentSprite.material.map=e.texture;else{let t=new st.MeshBasicMaterial({color:16777215,side:st.DoubleSide});if(!t)return;if(this.color&&(t.color||(t.color=new st.Color),t.color.copy(this.color),t.opacity=this.color.alpha),t.alphaTest=.5,e.texture&&!t.wireframe){let i=e.texture;i[Vh]!==void 0&&i[Vh]!==this&&this.spriteFrames>1&&(i=e.texture=i.clone()),i[Vh]=this,t.map=i}this.sharedMaterial=t,this._currentSprite=new st.Mesh(Pa.getOrCreateGeometry(e),t)}this._currentSprite.parent!==this.gameObject&&(this.drawMode===2&&this._currentSprite.scale.set(this.size.x,this.size.y,1),this.gameObject&&this.gameObject.add(this._currentSprite)),this._spriteSheet?.update()}};v([y()],on.prototype,"drawMode",2),v([y(q)],on.prototype,"color",2),v([y(hw)],on.prototype,"sharedMaterial",2),v([y(sn)],on.prototype,"sprite",1);var It=class{bb=null;bb_pos=0;__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsSyncedCameraModel(e,t){return(t||new It).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsSyncedCameraModel(e,t){return e.setPosition(e.position()+4),(t||new It).__init(e.readInt32(e.position())+e.position(),e)}userId(e){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.__string(this.bb_pos+t,e):null}guid(e){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.__string(this.bb_pos+t,e):null}dontSave(){let e=this.bb.__offset(this.bb_pos,8);return e?!!this.bb.readInt8(this.bb_pos+e):!1}pos(e){let t=this.bb.__offset(this.bb_pos,10);return t?(e||new Ce).__init(this.bb_pos+t,this.bb):null}rot(e){let t=this.bb.__offset(this.bb_pos,12);return t?(e||new Ce).__init(this.bb_pos+t,this.bb):null}static startSyncedCameraModel(e){e.startObject(5)}static addUserId(e,t){e.addFieldOffset(0,t,0)}static addGuid(e,t){e.addFieldOffset(1,t,0)}static addDontSave(e,t){e.addFieldInt8(2,+t,0)}static addPos(e,t){e.addFieldStruct(3,t,0)}static addRot(e,t){e.addFieldStruct(4,t,0)}static endSyncedCameraModel(e){return e.endObject()}static finishSyncedCameraModelBuffer(e,t){e.finish(t)}static finishSizePrefixedSyncedCameraModelBuffer(e,t){e.finish(t,void 0,!0)}};import{Object3D as fw}from"three";var Ic="SCAM";jo(Ic,It.getRootAsSyncedCameraModel);var At=new Et,Wh=class{userId;guid;constructor(e,t){this.guid=t,this.userId=e}send(e,t){if(e){At.clear();let i=At.createString(this.guid),n=At.createString(this.userId);It.startSyncedCameraModel(At),It.addGuid(At,i),It.addUserId(At,n);let r=B(e),s=Ka(e);It.addPos(At,Ce.createVec3(At,r.x,r.y,r.z)),It.addRot(At,Ce.createVec3(At,s.x,s.y,s.z));let a=It.endSyncedCameraModel(At);At.finish(a,Ic),t.sendBinary(At.asUint8Array())}}},Ac=class extends M{getCameraObject(e){let t=this.userToCamMap[e];return t?this.remoteCams[t].obj:null}cameraPrefab=null;_lastWorldPosition;_lastWorldQuaternion;_model=null;_needsUpdate=!0;_lastUpdateTime=0;remoteCams={};userToCamMap={};_camTimeoutInSeconds=10;_receiveCallback=null;async awake(){this._lastWorldPosition=this.worldPosition.clone(),this._lastWorldQuaternion=this.worldQuaternion.clone(),this.cameraPrefab&&("uri"in this.cameraPrefab&&(this.cameraPrefab=await this.cameraPrefab.instantiate(this.gameObject)),this.cameraPrefab&&"isObject3D"in this.cameraPrefab&&(this.cameraPrefab.visible=!1))}onEnable(){this._receiveCallback=this.context.connection.beginListenBinrary(Ic,this.onReceivedRemoteCameraInfoBin.bind(this))}onDisable(){this.context.connection.stopListenBinary(Ic,this._receiveCallback)}update(){for(let n in this.remoteCams){let r=this.remoteCams[n],s=this.context.time.realtimeSinceStartup-r.lastUpdate;if(!r||s>this._camTimeoutInSeconds){console.log("Remote cam timeout",r,s),r?.obj&&R.destroy(r.obj),delete this.remoteCams[n],r&&delete this.userToCamMap[r.userId],Ac.instances.push(r),this.context.players.removePlayerView(r.userId,"browser");continue}}if(V.IsInWebXR)return;let e=this.context.mainCamera;if(e===null){this.enabled=!1;return}if(!this.context.connection.isConnected||this.context.connection.connectionId===null)return;this._model===null&&(this._model=new Wh(this.context.connection.connectionId,this.context.connection.connectionId+"_camera"));let t=B(e),i=me(e);(t.distanceTo(this._lastWorldPosition)>.001||i.angleTo(this._lastWorldQuaternion)>.01)&&(this._needsUpdate=!0),this._lastWorldPosition.copy(t),this._lastWorldQuaternion.copy(i),!((!this._needsUpdate||this.context.time.frameCount%2!==0)&&!(this.context.time.realtimeSinceStartup-this._lastUpdateTime>this._camTimeoutInSeconds*.5))&&(this._lastUpdateTime=this.context.time.realtimeSinceStartup,this._needsUpdate=!1,this._model.send(e,this.context.connection),this.context.isInXR||this.context.players.setPlayerView(this.context.connection.connectionId,e,"browser"))}onReceivedRemoteCameraInfoBin(e){let t=e.guid();if(!t)return;let i=e.userId();if(!i||!this.context.connection.userIsInRoom(i)||!this.cameraPrefab)return;let n=this.remoteCams[t];if(!n)if("isObject3D"in this.cameraPrefab){let c=new Ue;c.context=this.context;let d=R.instantiate(this.cameraPrefab,c);n=this.remoteCams[t]={obj:d,lastUpdate:this.context.time.realtimeSinceStartup,userId:i},n.obj.visible=!0,this.gameObject.add(d),this.userToCamMap[i]=t,Ac.instances.push(n);let l=R.getOrAddComponent(d,le);l.connectionId=i,l.avatar=d}else return;let r=n.obj;this.context.players.setPlayerView(i,r,"browser"),n.lastUpdate=this.context.time.realtimeSinceStartup,oe.markDirty(r);let s=e.pos();s&&hn(r,s.x(),s.y(),s.z());let a=e.rot();a&&Ja(r,a.x(),a.y(),a.z())}},Cr=Ac;I(Cr,"instances",[]),v([y([fw,et])],Cr.prototype,"cameraPrefab",2);var Nh="view",Dc=P("debugsyncedroom"),Oi=class extends M{roomName;urlParameterName="room";joinRandomRoom=!0;requireRoomParameter=!1;autoRejoin=!0;_roomPrefix;awake(){Dc&&console.log("Room",this.roomName,this.urlParameterName,this.joinRandomRoom,this.requireRoomParameter,this.autoRejoin),this._roomPrefix===void 0&&(this._roomPrefix=this.roomName,this.roomName="")}onEnable(){let e=P(Nh);if(e&&typeof e=="string"&&e.length>0){console.log("Join as viewer"),this.context.connection.joinRoom(e,!0);return}this.tryJoinRoom()}onDisable(){this.roomName&&this.roomName.length>0&&this.context.connection.leaveRoom(this.roomName)}tryJoinRoom(e=0){e===void 0&&(e=0);let t=!1;if(this.urlParameterName){let i=P(this.urlParameterName);if(i&&typeof i=="string"){t=!0;let n=mp(i);this.roomName=n}else if(this.joinRandomRoom&&(console.log("No room name found in url, generating random one"),this.setRandomRoomUrlParameter(),e<1))return this.tryJoinRoom(e+1)}else this.joinRandomRoom&&(this.roomName===null||this.roomName===void 0||this.roomName.length<=0)&&(console.log("generate room name"),this.roomName=this.generateRoomName());return this.requireRoomParameter&&!t?(Dc&&console.log('No required room parameter "'+this.urlParameterName+'" in url - will not connect to networking backend.'),!1):!this.roomName||this.roomName.length<=0?(Dc&&console.error('Missing room name on "'+this.name+'". Make sure this is correctly configured in Unity',this.context.connection.isDebugEnabled?this:""),!1):(this.context.connection.isConnected||this.context.connection.connect(),Dc&&console.log("Join "+this.roomName),this._roomPrefix&&(this.roomName=this._roomPrefix+this.roomName),this.context.connection.joinRoom(this.roomName),!0)}_lastPingTime=0;_lastRoomTime=-1;update(){this.context.connection.isConnected&&(this.context.time.time-this._lastPingTime>3&&(this._lastPingTime=this.context.time.time,this.context.connection.send("ping",{time:this.context.time.time})),this.context.connection.isInRoom&&(this._lastRoomTime=this.context.time.time)),this._lastRoomTime>0&&this.context.time.time-this._lastRoomTime>.3&&(this._lastRoomTime=-1,this.autoRejoin?(console.log("Disconnected from networking backend - attempt reconnecting now"),this.tryJoinRoom()):console.warn("You are not connected to a room anymore (possibly because the tab was inactive for too long and the server kicked you)"))}get currentRoomName(){let e=P(Nh);return e||P(this.urlParameterName)}setRandomRoomUrlParameter(){let e=Zc(),t=this.generateRoomName();P(this.urlParameterName)?e.set(this.urlParameterName,t):e.append(this.urlParameterName,t),hp(t,e)}generateRoomName(){return fp()+"_"+pp(100,999)}getViewOnlyUrl(){if(this.context.connection.isConnected&&this.context.connection.currentRoomViewId){let e=window.location.search,t=new URLSearchParams(e);return t.has(this.urlParameterName)&&t.delete(this.urlParameterName),t.set(Nh,this.context.connection.currentRoomViewId),window.location.origin+window.location.pathname+"?"+t.toString()}return null}};v([y()],Oi.prototype,"roomName",2),v([y()],Oi.prototype,"urlParameterName",2),v([y()],Oi.prototype,"joinRandomRoom",2),v([y()],Oi.prototype,"requireRoomParameter",2),v([y()],Oi.prototype,"autoRejoin",2);function Tg(){let o=P("testwindowcount")||0;o&&o>0&&mw(o)}function mw(o){if(P("testwindow"))return null;let e=new URL(window.location.href);bo(e.searchParams,$o,1),bo(e.searchParams,"testwindow",1);let t=e.toString(),i=[];window.onbeforeunload=()=>{for(let c of i)c.close()};let n=.05,r=128,s=0,a=0;for(let c=0;c<o;c++){s*r+r*.01>=window.innerWidth&&(a+=1,s=0);let d=s*(r*(1+n))+window.screenLeft,l=a*(r*(1+n))+window.screenTop+90+60*a;s+=1;let u=window.open(t,"test window "+c,`popup=yes width=${r} height=${r} top=${l} left=${d}`);if(!u){console.warn("Failed to open window");continue}i.push(u),u.onload=()=>{u.onbeforeunload=()=>{for(let h=0;h<i.length;h++){let g=i[h];g!==u&&g.close()}i.length=0}}}return i}import{Vector3 as bw}from"three";var ks=class extends M{awake(){Tg()}},Ms=class extends M{transformsPerFrame=10;interval=0;useFlatbuffers=!0;awake(){if(this.useFlatbuffers)this.context.connection.beginListenBinrary(Ko,e=>{});else{this.models=[];for(let e=0;e<this.transformsPerFrame;e++)this.models.push(new Lc(this.context.connection.connectionId+"_simulatedTransform_"+e,this))}}builder=null;models=null;update(){if(!!this.context.connection.isConnected){if(this.useFlatbuffers){if(!this.context.connection.connectionId||this.context.time.frameCount%this.interval!==0)return;this.builder===null&&(this.builder=new Et(1024));let e=this.builder;for(let t=0;t<this.transformsPerFrame;t++){e.clear();let i=Ou(this.context.connection.connectionId,this);this.context.connection.sendBinary(i)}}else if(this.models)for(let e=0;e<this.models.length;e++){let t=this.models[e];t.dontSave=!0,t.update(this,null),this.context.connection.send("TestSimulateUserData-"+e,t)}}}},Lc=class{guid;fast=!1;position;rotation;velocity=void 0;dontSave;isValid(){return this.fast!==void 0||this.position!==void 0||this.rotation!==void 0||this.velocity!==void 0}constructor(e,t){this.guid=e,this.position={x:0,y:0,z:0},this.rotation={x:0,y:0,z:0,w:0},this.update(t,null)}update(e,t){let i=e.worldPosition;this.position.x=i.x,this.position.y=i.y,this.position.z=i.z;let n=e.worldQuaternion;if(this.rotation.x=n.x,this.rotation.y=n.y,this.rotation.z=n.z,this.rotation.w=n.w,this.fast=!1,t){let r=t.getVelocity();this.velocity===void 0&&(this.velocity={x:0,y:0,z:0}),this.velocity.x=r.x,this.velocity.y=r.y,this.velocity.z=r.z}}};I(Lc,"temp",new bw);import{MathUtils as vw}from"three";import{TransformControls as yw}from"three/examples/jsm/controls/TransformControls";import{OrbitControls as _w}from"three/examples/jsm/controls/OrbitControls";var ho=class extends M{isGizmo=!0;control;orbit;awake(){this.isGizmo&&!Ai||!this.context.mainCamera||(this.control=new yw(this.context.mainCamera,this.context.renderer.domElement),this.control.visible=!0,this.control.enabled=!0,this.control.getRaycaster().layers.set(2),this.control.size=.6,this.control.traverse(e=>{let t=e;if(t.layers.set(2),t){let i=t.material;i&&(i.opacity=.3)}}))}start(){if(this.context.mainCamera){let e=R.getComponentInParent(this.context.mainCamera,_w)??void 0;this.orbit=e}}changeEventListener;windowKeyDownListener;windowKeyUpListener;onEnable(){this.control&&(this.context.scene.add(this.control),this.control.attach(this.gameObject)),this.changeEventListener=this.onControlChangedEvent.bind(this),this.control?.addEventListener("dragging-changed",this.changeEventListener),this.attachWindowEvents()}onDisable(){this.control?.removeFromParent(),this.changeEventListener&&this.control?.removeEventListener("dragging-changed",this.changeEventListener)}onControlChangedEvent(e){let t=this.orbit;if(t&&(t.enabled=!e.value),e.value){let i=R.getComponentInParent(this.gameObject,St);i&&i.requestOwnership()}}attachWindowEvents(){let e=this.control;!e||(this.windowKeyDownListener||(this.windowKeyDownListener=t=>{switch(t.keyCode){case 81:e.setSpace(e.space==="local"?"world":"local");break;case 16:e.setTranslationSnap(100),e.setRotationSnap(vw.degToRad(15)),e.setScaleSnap(.25);break;case 87:e.setMode("translate");break;case 69:e.setMode("rotate");break;case 82:e.setMode("scale");break;case 187:case 107:e.setSize(e.size+.1);break;case 189:case 109:e.setSize(Math.max(e.size-.1,.1));break;case 88:e.showX=!e.showX;break;case 89:e.showY=!e.showY;break;case 90:e.showZ=!e.showZ;break;case 32:e.enabled=!e.enabled;break}}),this.windowKeyUpListener||(this.windowKeyUpListener=t=>{switch(t.keyCode){case 16:e.setTranslationSnap(null),e.setRotationSnap(null),e.setScaleSnap(null);break}}),window.addEventListener("keydown",this.windowKeyDownListener),window.addEventListener("keyup",this.windowKeyUpListener))}};v([y()],ho.prototype,"isGizmo",2);import{Object3D as ww}from"three";import*as kg from"three";import{USDZExporter as Ew}from"three/examples/jsm/exporters/USDZExporter";function Rg(o){let e=o.domElement.querySelector("link[rel='ar']");if(e)return e;let t=document.createElement("div");t.classList.add("menu"),t.classList.add("quicklook-menu"),t.style.display="none",t.style.visibility="hidden";let i=document.createElement("button");i.id="open-in-ar",i.innerText="Open in QuickLook",t.appendChild(i);let n=document.createElement("a");n.id="needle-usdz-link",n.style.display="none",n.rel="ar",n.href="",t.appendChild(n);let r=document.createElement("img");return r.id="button",n.appendChild(r),o.domElement.appendChild(t),n}function Sg(){var o=new Date;let e=o.getMonth()+1,t=o.getDate(),i=o.getHours(),n=o.getMinutes(),r=o.getSeconds(),s=(e<10?"0":"")+e,a=(t<10?"0":"")+t,c=(i<10?"0":"")+i,d=(n<10?"0":"")+n,l=(r<10?"0":"")+r;return o.getFullYear()+s+a+"-"+c+d+l}import{AnimationClip as xw,KeyframeTrack as Pg}from"three";var jc=P("debugusdz");function Og(o,e){let t=[],i=R.getComponentsInChildren(o,Pe),n=!1;jc&&console.log(i);for(let r of i){if(!r||!r.runtimeAnimatorController)continue;jc&&console.log(r);let s=[];for(let a of r.runtimeAnimatorController.enumerateActions()){jc&&console.log(a);let c=a.getClip();if(!n&&c.tracks.length>0){n=!0;let d=c.tracks[0],l=d.name.substring(0,d.name.lastIndexOf(".")),u=new Pg(l+".position",[0,.01],[0,0,0,0,0,0]),h=new Pg(l+".quaternion",[0,.01],[0,0,0,1,0,0,0,1]);s.push(new xw("rest",.01,[u,h]))}s.includes(c)||s.push(c)}t.push({root:r.gameObject,clips:s})}jc&&console.log(t);for(let r of t)for(let s of r.clips)e.registerAnimation(r.root,s)}var Oa=P("debugusdz"),Tr=class extends M{objectToExport;autoExportAnimations=!1;extensions=[];link;webxr;webARSessionRoot;start(){Oa&&(window.addEventListener("keydown",e=>{switch(e.key){case"t":this.exportAsync();break}}),yo()&&setTimeout(()=>{this.exportAsync()},2e3)),document.getElementById("open-in-ar")?.addEventListener("click",e=>{e.preventDefault(),this.exportAsync()}),this.objectToExport||(this.objectToExport=this.gameObject)}onEnable(){let e=_o(),t=Ba();(Oa||e&&t)&&(this.createQuicklookButton(),this.webARSessionRoot=R.findObjectOfType(ft)??void 0,this.lastCallback=this.quicklookCallback.bind(this),this.link=Rg(this.context),this.link.addEventListener("message",this.lastCallback))}onDisable(){this.link?.removeEventListener("message",this.lastCallback)}async exportAsync(){if(!this.objectToExport)return;if(this.webARSessionRoot){let h=this.webARSessionRoot.gameObject,g=1/this.webARSessionRoot.arScale;h.matrix.makeScale(g,g,g),this.webARSessionRoot.invertForward&&h.matrix.multiply(new kg.Matrix4().makeRotationY(Math.PI))}let e=new Ew,t=[...this.extensions],i=new er;t.push(i),this.autoExportAnimations&&Og(this.objectToExport,i);let n={self:this,exporter:e,extensions:t,object:this.objectToExport};this.dispatchEvent(new CustomEvent("before-export",{detail:n}));let r="needle";Oa&&(r+="-"+Sg()),e.debug=Oa;let s=await e.parse(this.objectToExport,t),a=new Blob([s],{type:"application/octet-stream"});this.dispatchEvent(new CustomEvent("after-export",{detail:n}));let c=this.buildQuicklookOverlay(),d=c.callToAction?encodeURIComponent(c.callToAction):"",l=c.checkoutTitle?encodeURIComponent(c.checkoutTitle):"",u=c.checkoutSubtitle?encodeURIComponent(c.checkoutSubtitle):"";this.link.href=URL.createObjectURL(a)+`#callToAction=${d}&checkoutTitle=${l}&checkoutSubtitle=${u}&`,this.lastCallback||(this.lastCallback=this.quicklookCallback.bind(this),this.link.addEventListener("message",this.lastCallback)),this.link.download=r+".usdz",this.link.click()}lastCallback;quicklookCallback(e){e?.data=="_apple_ar_quicklook_button_tapped"&&(Oa&&xo("Quicklook closed via call to action button"),this.dispatchEvent(new CustomEvent("quicklook-button-tapped",{detail:this})))}buildQuicklookOverlay(){let e={};return e.callToAction="Close",e.checkoutTitle="\u{1F335} Made with Needle",e.checkoutSubtitle="_",this.dispatchEvent(new CustomEvent("quicklook-overlay",{detail:e})),e}_arButton;async createQuicklookButton(){if(!this.webxr)if(await vo(1),this.webxr=R.findObjectOfType(V)??void 0,this.webxr)if(this.webxr.VRButton&&this.webxr.VRButton.parentElement?.removeChild(this.webxr.VRButton),this.webxr.ARButton&&this._arButton!==this.webxr.ARButton){this._arButton=this.webxr.ARButton;let e=this.webxr.ARButton.parentElement?.querySelector("a");e&&(e.href=""),this.webxr.ARButton.innerText="Open in Quicklook",this.webxr.ARButton.disabled=!1,this.webxr.ARButton.addEventListener("click",t=>{t.preventDefault(),this.exportAsync()}),this.webxr.ARButton.classList.add("quicklook-ar-button"),this.dispatchEvent(new CustomEvent("created-button",{detail:this.webxr.ARButton}))}else{this.webxr.createARButton=!1,this.webxr.createVRButton=!1;let e=window.document.querySelector(".webxr-buttons");e||(e=document.createElement("div"),e.classList.add("webxr-buttons"));let t=document.createElement("button");t.innerText="Open in Quicklook",t.addEventListener("click",()=>{this.exportAsync()}),t.classList.add("webxr-ar-button"),t.classList.add("webxr-button"),t.classList.add("quicklook-ar-button"),e.appendChild(t),this.dispatchEvent(new CustomEvent("created-button",{detail:t}))}else console.warn("Could not find WebXR component: will not create Quicklook button",G.Current)}resetStyles(e){e.style.position="",e.style.top="",e.style.left="",e.style.width="",e.style.height="",e.style.margin="",e.style.padding="",e.style.border="",e.style.background="",e.style.color="",e.style.font="",e.style.textAlign="",e.style.opacity="",e.style.zIndex=""}};v([y(ww)],Tr.prototype,"objectToExport",2),v([y()],Tr.prototype,"autoExportAnimations",2);import{Vector3 as Cw}from"three";var po=class{guid;dontSave=!0;userId;point={x:0,y:0,z:0};source={x:0,y:0,z:0};target;update(e,t,i,n=void 0){this.userId=e.connection.connectionId,this.point.x=t.x,this.point.y=t.y,this.point.z=t.z,this.source.x=i.x,this.source.y=i.y,this.source.z=i.z,this.target=n}},Is=class extends M{prefab=null;_grabModels=[];_grabModelsUpdateTime=[];_addOrUpdateSub=null;_endSub=null;_freeSub=null;_instances={};awake(){this.prefab&&(this.prefab.visible=!1)}onEnable(){this._addOrUpdateSub=this.context.connection.beginListen("xr-grab-visual-start-or-update",this.onRemoteGrabStartOrUpdate.bind(this)),this._endSub=this.context.connection.beginListen("xr-grab-visual-end",this.onRemoteGrabEnd.bind(this)),this._freeSub=gt.AddEventListener("WillFree",this.onAttachedObjectFree.bind(this))}onDisable(){this.context.connection.stopListening("xr-grab-visual-start-or-update",this._addOrUpdateSub),this.context.connection.stopListening("xr-grab-visual-end",this._endSub),gt.RemoveEventListener("WillFree",this._freeSub)}addOrUpdateGrab(e){this.context.connection.send("xr-grab-visual-start-or-update",e,2)}endGrab(e){this.context.connection.send("xr-grab-visual-end",e,2)}onRemoteGrabStartOrUpdate(e){if(!this.prefab)return;let t=this._instances[e.guid];if(!t){let i=R.instantiate(this.prefab);if(i.visible=!0,this._instances[e.guid]={instance:i,model:e},e.userId){let n=R.getComponentsInChildren(i,_t);if(n?.length>0)for(let r of n)r.assignUserColor(e.userId)}return}t.model=e}onRemoteGrabEnd(e){if(!e)return;let t=e.guid;this._instances[t]&&(R.destroy(this._instances[t].instance),delete this._instances[t])}onAttachedObjectFree(e){if(this._grabModels.length<=0)return;let t=this._grabModels[0];this.updateModel(t,e),this.endGrab(t)}onBeforeRender(){if(this.updateRendering(),!!this.prefab&&(this.prefab.visible=!1,this.context.time.frameCount%10===0))for(let e=0;e<gt.Current.length;e++){let t=gt.Current[e];if(!t.controller||!t.selected)continue;this._grabModels.length<=e&&(this._grabModels.push(new po),this._grabModelsUpdateTime.push(0)),this._grabModelsUpdateTime[e]=this.context.time.time;let i=this._grabModels[e];this.updateModel(i,t),this.addOrUpdateGrab(i)}}updateModel(e,t){if(!t.controller||!t.selected)return;e.guid=t.grabUUID;let i=t.selected.guid;e.update(this.context,t.grabPoint,t.controller.worldPosition,i)}temp=new Cw;updateRendering(){let e=this.context.time.deltaTime/.5;for(let t in this._instances){let{instance:i,model:n}=this._instances[t];if(!i||!n)continue;let{point:r}=n,s=B(i);this.temp.set(r.x,r.y,r.z),s.lerp(this.temp,e),ie(i,s)}}};var ka=class{};import*as Hc from"three";import{MeshLine as Tw,MeshLineMaterial as Rw}from"three.meshline";var Qh=class{id=0;points=[];line=new Tw;material;mesh;constructor(e,t){if(t&&(this.material=t.material),this.material||(this.material=this.defaultLineMaterial),t){let i=t.options;i&&Object.assign(this.material,i)}this.mesh=new Hc.Mesh(this.line,this.material),e.add(this.mesh)}appendPoint(e){let t=Qh.wp;t.set(e.x,e.y,e.z);let i=this.mesh?.parent;return i&&(t=i.worldToLocal(t),e.x=t.x,e.y=t.y,e.z=t.z),this.points.push(e.x,e.y,e.z),this.line.setPoints(this.points),e}defaultLineMaterial=new Rw({color:10066329,lineWidth:.01})},As=Qh;I(As,"wp",new Hc.Vector3);var fo=class extends M{startLine(e,t){let i=Math.random()*Number.MAX_SAFE_INTEGER;return this.internalStartLine(e,i,!0,t)}updateLine(e,t){let i=this.inFlight[e.id];if(!i)return;t.point&&(t.point=i.appendPoint(t.point));let n=this.buffer[e.id];n&&(t.point&&n.push(t.point.x,t.point.y,t.point.z),n.length>5&&(this.sendLineUpdate(i,!1,void 0,n),n.length=0))}endLine(e,t=!0){let i=this.inFlight[e.id];if(!i)return;this.finished.push(i),delete this.inFlight[e.id],t&&this.sendLineUpdate(i,!0,0);let n=this.buffer[e.id];if(n){delete this.buffer[e.id];let r=n;r.length=0,this.freeBuffer.push(r)}return i}getLine(e){return this.inFlight[e.id]}finished=[];inFlight=[];buffer={};freeBuffer=new Array;awake(){this.context.connection.beginListen("line-start",e=>{this.onEnsureLine(e.id,e.parentGuid)}),this.context.connection.beginListen("line-update",e=>{let t=this.onEnsureLine(e.guid,e.parentGuid);t&&e.points&&(e.startIndex<=0?t.points=e.points:e.startIndex>=t.points.length&&t.points.push(...e.points),t.line.setPoints(t.points),t.material.lineWidth=e.width,t.material.color.fromArray(e.color),e.finished===!0&&this.endLine({id:t.id},!1))})}onEnsureLine(e,t){if(this.inFlight[e])return this.inFlight[e];let i=R.findByGuid(t,this.context.scene);return i?(this.internalStartLine(i,e,!1),this.inFlight[e]):null}internalStartLine(e,t,i=!0,n){let r=new As(e??this.context.scene,n);r.id=t,this.inFlight[t]=r,i&&this.sendLineStart(r);let s;return this.freeBuffer.length<=0?s=new Array:s=this.freeBuffer.pop(),this.buffer[t]=s,{id:t}}sendLineStart(e){let t=e.mesh.parent;this.context.connection.send("line-start",{id:e.id,parentGuid:t?t.guid:void 0})}sendLineUpdate(e,t,i,n){if(e){let r={parentGuid:e.mesh.parent.guid,guid:e.id,points:n?[...n]:e.points,width:e.material.lineWidth,color:e.material.color.toArray(),startIndex:i!==void 0?i:e.points.length,finished:t};this.context.connection.send("line-update",r)}}};import*as Mg from"three";import{Raycaster as Sw,Vector3 as Pw}from"three";import{MeshLineMaterial as Ow}from"three.meshline";var Fc=class{isDrawing;lastHit;currentHandle;maxDistance;prevDistance;lastParent;constructor(){this.isDrawing=!1,this.lastHit=new Pw,this.currentHandle=null,this.maxDistance=0,this.prevDistance=0,this.lastParent=null}},Bc=class extends M{lines;colliders;alignToSurface=!0;addToPaintedObject=!0;orbit;start(){this.lines||(this.lines=R.getComponent(this.gameObject,fo),this.lines||(this.lines=R.addNewComponent(this.gameObject,fo))),this.orbit=R.findObjectOfType(nt,this.context)??void 0,this._states.mouse=new Fc;let e={};Z.addEventListener("select-start",(t,i)=>{e[t.controller.uuid]=!0}),Z.addEventListener("update",(t,i)=>{if(e[t.controller.uuid]===!0){let n=t.getRay();this.updateLine(t.controller.uuid,n,!0,!1,!1)}}),Z.addEventListener("select-end",(t,i)=>{e[t.controller.uuid]=!1;let n=t.getRay();this.updateLine(t.controller.uuid,n,!0,!0,!1)})}_states={};update(){if(this.orbit&&this._states.mouse&&this.orbit&&(this.orbit.enabled=!this._states.mouse.isDrawing),!this.context.mainCamera)return;let e=this.context.input.getPointerPressedCount()>1,t=this.context.input.getPointerPositionRC(0);if(!t)return;Bc._raycaster.setFromCamera(t,this.context.mainCamera);let i=Bc._raycaster.ray;this.updateLine("mouse",i,this.context.input.getPointerPressed(0),this.context.input.getPointerUp(0),e||this.context.input.isKeyPressed("Alt"))}updateLine(e,t,i,n,r=!1){let s=this._states[e];if(s||(this._states[e]=new Fc,s=this._states[e]),n)s.isDrawing=!1,s.currentHandle&&(this.lines.endLine(s.currentHandle),s.currentHandle=null);else if(i){if(r)return s;let a=this.getHit(t),c=null,d=s.prevDistance;if(a)s.currentHandle||(s.maxDistance=a.distance),c=a.point,a.face&&c.add(a.face.normal.multiplyScalar(.01)),s.prevDistance=a.distance;else if(s.maxDistance>0){let l=s.maxDistance;if(!s.currentHandle&&s.lastHit){let u=B(this.context.mainCamera);l=s.lastHit.distanceTo(u)}c=t.origin.add(t.direction.multiplyScalar(s.maxDistance)),s.prevDistance=s.maxDistance}if(c){if(!s.currentHandle){let l=s.lastParent??this.gameObject;this.addToPaintedObject&&a&&(l=a.object),s.lastParent=l,s.currentHandle=this.lines.startLine(l,{material:this.createRandomMaterial()})}if(this.alignToSurface&&(s.prevDistance>s.maxDistance||Math.abs(d-s.prevDistance)>.2)){let l=s.maxDistance;c=t.origin.add(t.direction.multiplyScalar(l)),s.prevDistance=l}if(s.lastHit&&s.lastHit.distanceTo(c)<s.prevDistance*.01)return s;this.lines.updateLine(s.currentHandle,{point:c}),s.lastHit.copy(c)}s.isDrawing=s.currentHandle!==null}return s}_raycastOptions=new be;getHit(e){(!this.colliders||this.colliders.length===0)&&(this.colliders=[this.gameObject]),this._raycastOptions.targets=this.colliders,this._raycastOptions.ray=e;let t=this.context.physics.raycast(this._raycastOptions);if(t.length>0){for(let i of t)if(!!R.isActiveInHierarchy(i.object))return i}return null}createRandomMaterial(){let e;return this.context.connection.connectionId?e=_t.colorFromHashCode(_t.hashCode(this.context.connection.connectionId)):e=new Mg.Color("hsl("+(Math.random()*100).toFixed(0)+", 80%, 30%)"),new Ow({color:e,lineWidth:H.lerp(.005,.01,Math.random())})}},Ma=Bc;I(Ma,"_raycaster",new Sw);import{Object3D as kw}from"three";var Ia=class extends M{asset;joinedRoomFunction;awake(){this.watchTabVisible(),this.joinedRoomFunction=this.onUserJoined.bind(this)}onEnable(){this.context.connection.beginListen("joined-room",this.joinedRoomFunction)}onDisable(){this.context.connection.stopListening("joined-room",this.joinedRoomFunction)}async onUserJoined(e){let t=await this.asset?.instantiateSynced({parent:this.gameObject},!0);if(t){let i=R.getComponent(t,an);i&&(i.owner=this.context.connection.connectionId)}}watchTabVisible(){window.addEventListener("visibilitychange",e=>{if(document.visibilityState==="visible")for(let t=an.all.length-1;t>=0;t--){let i=an.all[t];(!i.owner||!this.context.connection.userIsInRoom(i.owner))&&i.doDestroy()}})}};v([y(et)],Ia.prototype,"asset",2);var ti=class extends M{static get all(){return ti._all}static get local(){return ti._local}static isLocalPlayer(e){return e instanceof kw?R.getComponentInParent(e,ti)?.isLocalPlayer??!1:e instanceof Tt?R.getComponentInParent(e.gameObject,ti)?.isLocalPlayer??!1:!1}owner;get isLocalPlayer(){return this.owner===this.context.connection.connectionId}awake(){this.isLocalPlayer&&ti.local.push(this),ti.all.push(this),this.context.connection.beginListen("user-left-room",e=>{if(e.userId===this.owner){this.doDestroy();return}})}start(){if(!this.owner||!this.context.connection.userIsInRoom(this.owner)){this.doDestroy();return}}doDestroy(){Ro(this.gameObject,this.context.connection)}onDestroy(){if(ti.all.splice(ti.all.indexOf(this),1),this.isLocalPlayer){let e=ti._local.indexOf(this);e>=0&&ti._local.splice(e,1)}}},an=ti;I(an,"_all",[]),I(an,"_local",[]),v([Cc(),y()],an.prototype,"owner",2);var Uc=class extends M{toggleKey="p";update(){this.context.input.isKeyDown("p")&&this.context.domElement.classList.toggle("presentation-mode")}};O.add("__Ignore",ka);O.add("AlignmentConstraint",$n);O.add("Animation",Ht);O.add("AnimationCurve",mi);O.add("AnimationExtension",er);O.add("AnimationTrackHandler",tr);O.add("Animator",Pe);O.add("AnimatorController",pi);O.add("AttachedObject",gt);O.add("AudioListener",gi);O.add("AudioSource",se);O.add("AudioTrackHandler",ir);O.add("Avatar_Brain_LookAt",Tn);O.add("Avatar_MouthShapes",lr);O.add("Avatar_MustacheShake",is);O.add("Avatar_POI",ye);O.add("AvatarBlink_Simple",Xi);O.add("AvatarEyeLook_Rotation",Qi);O.add("AvatarLoader",nr);O.add("AvatarMarker",le);O.add("AvatarModel",qr);O.add("AxesHelper",kn);O.add("BaseUIComponent",Ve);O.add("BasicIKConstraint",ns);O.add("BoxCollider",ur);O.add("BoxGizmo",yi);O.add("BoxHelperComponent",ze);O.add("Button",qt);O.add("CallInfo",bi);O.add("Camera",ee);O.add("Canvas",We);O.add("CanvasGroup",Dn);O.add("CapsuleCollider",Nt);O.add("CharacterController",qi);O.add("CharacterControllerInput",Ci);O.add("Collider",Xt);O.add("ColorAdjustments",fr);O.add("ColorBySpeedModule",Ti);O.add("ColorOverLifetimeModule",Ln);O.add("ControlTrackHandler",Cn);O.add("Deletable",ds);O.add("DeleteBox",io);O.add("DeviceFlag",no);O.add("DragControls",Ki);O.add("DropListener",mr);O.add("Duplicatable",Ji);O.add("EmissionModule",yt);O.add("EventList",ue);O.add("EventListEvent",Nr);O.add("EventSystem",Ye);O.add("EventTrigger",ro);O.add("FieldWithDefault",hs);O.add("FixedJoint",fs);O.add("FlyControls",ms);O.add("GltfExport",$t);O.add("GltfExportBox",gs);O.add("Gradient",Ri);O.add("Graphic",vt);O.add("GraphicRaycaster",bs);O.add("GridHelper",Bn);O.add("GridLayoutGroup",_s);O.add("GroundProjectedEnv",en);O.add("HingeJoint",gr);O.add("HorizontalLayoutGroup",ys);O.add("Image",In);O.add("InheritVelocityModule",Jt);O.add("InputField",Pt);O.add("Interactable",Gt);O.add("Keyboard",xs);O.add("LayoutGroup",Un);O.add("Light",Xe);O.add("LimitVelocityOverLifetimeModule",de);O.add("LineInstanceHandler",As);O.add("LinesDrawer",Ma);O.add("LinesManager",fo);O.add("LODGroup",br);O.add("LODModel",tn);O.add("LogStats",Es);O.add("LookAtConstraint",Pn);O.add("MainModule",_e);O.add("MaskableGraphic",Mn);O.add("MeshCollider",Kr);O.add("MeshRenderer",oo);O.add("MinMaxCurve",U);O.add("MinMaxGradient",Me);O.add("NestedGltf",co);O.add("Networking",Si);O.add("NoiseModule",K);O.add("ObjectRaycaster",ao);O.add("OffsetConstraint",nn);O.add("OrbitControls",nt);O.add("ParticleBurst",jn);O.add("ParticleSubEmitter",vr);O.add("ParticleSystem",ve);O.add("ParticleSystemRenderer",rn);O.add("PlayableDirector",wn);O.add("PlayerColor",_t);O.add("PlayerState",an);O.add("PlayerSync",Ia);O.add("PointerEventData",_i);O.add("PresentationMode",Uc);O.add("RawImage",$r);O.add("Raycaster",so);O.add("Rect",Zr);O.add("RectTransform",bt);O.add("ReflectionProbe",Zt);O.add("RegisteredAnimationInfo",zr);O.add("RemoteSkybox",Pi);O.add("Renderer",ae);O.add("RendererLightmap",Fn);O.add("RGBAColor",q);O.add("Rigidbody",J);O.add("RotationBySpeedModule",Ne);O.add("RotationOverLifetimeModule",Ke);O.add("ScreenCapture",xr);O.add("ShadowCatcher",wr);O.add("ShapeModule",ne);O.add("SignalAsset",Xr);O.add("SignalReceiver",xn);O.add("SignalReceiverEvent",Qr);O.add("SignalTrackHandler",En);O.add("Size",os);O.add("SizeBySpeedModule",ke);O.add("SizeOverLifetimeModule",Kt);O.add("SkinnedMeshRenderer",ps);O.add("SmoothFollow",Ot);O.add("SpatialHtml",Ss);O.add("SpatialTrigger",Gn);O.add("SpatialTriggerReceiver",kt);O.add("SpectatorCamera",Ps);O.add("SphereCollider",dr);O.add("Sprite",ei);O.add("SpriteRenderer",on);O.add("SpriteSheet",sn);O.add("SubEmitterSystem",yr);O.add("SyncedCamera",Cr);O.add("SyncedRoom",Oi);O.add("SyncedTransform",St);O.add("TeleportTarget",Yr);O.add("TestRunner",ks);O.add("TestSimulateUserData",Ms);O.add("Text",Ie);O.add("TextureSheetAnimationModule",xe);O.add("ToneMapping",pr);O.add("TrailModule",te);O.add("TransformData",Wr);O.add("TransformGizmo",ho);O.add("UIRaycastUtils",wi);O.add("UIRootComponent",On);O.add("UsageMarker",Vt);O.add("USDZExporter",Tr);O.add("VelocityOverLifetimeModule",He);O.add("VerticalLayoutGroup",vs);O.add("VideoPlayer",Te);O.add("Voip",it);O.add("Volume",to);O.add("VolumeComponent",Yi);O.add("VolumeParameter",ls);O.add("VolumeProfile",hr);O.add("VRUserState",Wt);O.add("WebAR",ar);O.add("WebARSessionRoot",ft);O.add("WebXR",V);O.add("WebXRAvatar",Ut);O.add("WebXRController",Z);O.add("WebXRSync",Sn);O.add("XRFlag",Ee);O.add("XRGrabModel",po);O.add("XRGrabRendering",Is);O.add("XRRig",sr);O.add("XRState",Rt);var Ig=pe,Mw=P("debugtypestore");Mw&&console.log(O);function Ag(o,e){let i=ud(o,e);return i!==void 0?i:null}var Iw=new Xa;async function Dg(o,e,t,i=null,n){if(!t)return;let r=[],s=i;typeof s=="number"&&(s=new Re(i));let a=new Eo(t.scene);a.gltfId=e,a.context=o,a.gltf=t,a.nodeToObject=n?.nodeToObjectMap,a.implementationInformation=Iw;let c=[];if(t.scenes)for(let d of t.scenes)await Yh(a,d,c,r);if(t.children)for(let d of t.children)await Yh(a,d,c,r);o.new_scripts_pre_setup_callbacks.push(()=>{for(let d of c)Aw(d,a);if(s){qh(t,s);for(let d of t.scenes)qh(d,s)}})}function qh(o,e){if(e!==null&&!!o){if(o.guid=e.generateUUID(),o&&o.userData&&o.userData.components)for(let t of o.userData.components)t!==null&&(t.guid=e.generateUUID());if(o.children)for(let t of o.children)qh(t,e)}}var Aa=[];async function Yh(o,e,t,i){if(!e)return;let n=e.userData;if(n){let r=n.builtin_components;if(r&&r.length>0)for(let s of r)try{if(s===null)continue;let a=O.get(s.name);if(a!=null){let c=new a;c.sourceId=o.gltfId,Dt(c,s,o.implementationInformation),Nn(e,c,!1),t.push({instance:c,compData:s,obj:e})}else Ig&&console.debug("unknown component: "+s.name),Aa.includes(s.name)||Aa.push(s.name)}catch(a){console.error(s.name+" - "+a.message,a)}if(Aa.length>0){let s=Aa.join(", ");console.warn("unknown components: "+s),Aa.length=0,lt()&&Fe(`<strong>Unknown components in scene</strong>:
308
+ `)}}}applyShadowMaterial(){let e=R.getComponent(this.gameObject,ae);if(e)if(e.sharedMaterial?.type!=="ShadowMaterial"){let t=new cw;t.color=this.shadowColor,t.opacity=this.shadowColor.alpha,this.applyMaterialOptions(t),e.sharedMaterial=t}else{let t=e.sharedMaterial;t.color=this.shadowColor,t.opacity=this.shadowColor.alpha,this.applyMaterialOptions(t)}}applyMaterialOptions(e){e&&(e.depthWrite=!1,e.stencilWrite=!1)}};v([y()],Er.prototype,"mode",2),v([y(q)],Er.prototype,"shadowColor",2);import*as Mc from"three";import{Object3D as dw}from"three";var jh=class extends M{target=null;followFactor=.1;rotateFactor=.1;positionAxes=-1;flipForward=!1;_firstUpdate=!0;onBeforeRender(){this.updateNow(!1)}updateNow(e){if(!(!this.target||this.target===this.gameObject)){if(this.followFactor>0){let t=B(this.target),i=this._firstUpdate||e?1:H.clamp01(this.context.time.deltaTime*this.followFactor),n=this.worldPosition;this.positionAxes&2&&(n.x=H.lerp(n.x,t.x,i)),this.positionAxes&4&&(n.y=H.lerp(n.y,t.y,i)),this.positionAxes&8&&(n.z=H.lerp(n.z,t.z,i)),this.worldPosition=n}if(this.rotateFactor>0){let t=me(this.target);this.flipForward&&t.premultiply(jh._invertForward);let i=this._firstUpdate||e?1:H.clamp01(this.context.time.deltaTime*this.rotateFactor);this.worldQuaternion=this.worldQuaternion.slerp(t,i)}this._firstUpdate=!1}}},kt=jh;I(kt,"_invertForward",new Mc.Quaternion().setFromAxisAngle(new Mc.Vector3(0,1,0),Math.PI)),v([y(dw)],kt.prototype,"target",2),v([y()],kt.prototype,"followFactor",2),v([y()],kt.prototype,"rotateFactor",2),v([y()],kt.prototype,"positionAxes",2);import*as xg from"three";import{HTMLMesh as hw}from"three/examples/jsm/interactive/HTMLMesh.js";import{InteractiveGroup as pw}from"three/examples/jsm/interactive/InteractiveGroup.js";var Ps=class extends M{id=null;keepAspect=!1;start(){if(!this.id||!this.context.mainCamera)return;let e=document.getElementById(this.id);if(!e){console.warn('Could not find element with id "'+this.id+'"');return}e.style.display="block",e.style.visibility="hidden";let t=new pw(this.context.renderer,this.context.mainCamera);this.gameObject.add(t);let i=new hw(e);t.add(i),i.visible=!1,console.log(i);let n=i.material;n.transparent=!0,setTimeout(()=>{i.visible=!0;let r=Ja(this.gameObject).clone();Za(this.gameObject,0,0,0),this.gameObject.updateMatrixWorld();let s=new xg.Box3;s.setFromObject(t),this.setWorldRotation(r.x,r.y,r.z);let a=s.max.x-s.min.x,c=s.max.y-s.min.y;if(this.keepAspect){let l=a/c;a>c?i.scale.set(1/a,1/c/l,1):i.scale.set(1/a*l,1/c,1)}else i.scale.set(1/a,1/c,1);let u=this.gameObject.scale;i.scale.multiply(u)},1)}};import{Layers as Cg}from"three";var Sa=P("debugspatialtrigger"),wg=new Cg,Eg=new Cg;function fw(o,e){return wg.mask=o,Eg.mask=e,wg.test(Eg)}var Mt=class extends M{triggerMask=0;onEnter;onStay;onExit;start(){Sa&&console.log(this.name,this.triggerMask,this)}update(){this.currentIntersected.length=0;for(let e of Vn.triggers)fw(e.triggerMask,this.triggerMask)&&e.test(this.gameObject)&&this.currentIntersected.push(e);for(let e=this.lastIntersected.length-1;e>=0;e--){let t=this.lastIntersected[e];this.currentIntersected.indexOf(t)<0&&(this.onExitTrigger(t),this.lastIntersected.splice(e,1))}for(let e of this.currentIntersected)this.lastIntersected.indexOf(e)<0&&this.onEnterTrigger(e),this.onStayTrigger(e);this.lastIntersected.length=0,this.lastIntersected.push(...this.currentIntersected)}currentIntersected=[];lastIntersected=[];onEnterTrigger(e){Sa&&console.log("ENTER TRIGGER",this.name,e.name,this,e),e.raiseOnEnterEvent(this),this.onEnter?.invoke(this,e)}onExitTrigger(e){Sa&&console.log("EXIT TRIGGER",this.name,e.name,this,e),e.raiseOnExitEvent(this),this.onExit?.invoke(this,e)}onStayTrigger(e){e.raiseOnStayEvent(this),this.onStay?.invoke(this,e)}};v([y()],Mt.prototype,"triggerMask",2),v([y(de)],Mt.prototype,"onEnter",2),v([y(de)],Mt.prototype,"onStay",2),v([y(de)],Mt.prototype,"onExit",2);var Pa=class extends M{triggerMask;boxHelper;start(){Sa&&console.log(this.name,this.triggerMask,this)}onEnable(){Pa.triggers.push(this),this.boxHelper||(this.boxHelper=R.addNewComponent(this.gameObject,ze),this.boxHelper?.showHelper(null,Sa))}onDisable(){Pa.triggers.splice(Pa.triggers.indexOf(this),1)}test(e){return this.boxHelper?this.boxHelper.isInBox(e)??!1:!1}raiseOnEnterEvent(e){R.foreachComponent(this.gameObject,t=>{t!==e&&t instanceof Mt&&t.onEnterTrigger(this)},!1)}raiseOnStayEvent(e){R.foreachComponent(this.gameObject,t=>{t!==e&&t instanceof Mt&&t.onStayTrigger(this)},!1)}raiseOnExitEvent(e){R.foreachComponent(this.gameObject,t=>{t!==e&&t instanceof Mt&&t.onExitTrigger(this)},!1)}},Vn=Pa;I(Vn,"triggers",[]),v([y()],Vn.prototype,"triggerMask",2);import*as Cr from"three";var It=P("debugspectator"),Os=class extends M{cam=null;_mode=0;get mode(){return this._mode}set mode(e){this._mode=e}get isSpectating(){return this._handler?.currentTarget!==void 0}isSpectatingUser(e){return this.target?.userId===e}isFollowedBy(e){return this.followers?.includes(e)}get followers(){return this._networking.followers}stopSpectating(){if(this.context.isInXR){this.followSelf();return}this.target=void 0}get localId(){return this.context.connection.connectionId??"local"}set target(e){if(this._handler){let t=this._handler.currentTarget?.userId,i=this.context.players.getPlayerView(this.localId);e===void 0||this.context.isInXR===!1&&i?.currentObject===e.currentObject?this._handler.currentTarget!==void 0&&(this._handler.disable(),R.setActive(this.gameObject,!1),this.orbit&&(this.orbit.enabled=!0),this._networking.onSpectatedObjectChanged(e,t)):this._handler.currentTarget!==e&&(this._handler.set(e),R.setActive(this.gameObject,!0),this.orbit&&(this.orbit.enabled=!1),this._networking.onSpectatedObjectChanged(e,t))}}get target(){return this._handler?.currentTarget}requestAllFollowMe(){this._networking.onRequestFollowMe()}get isSpectatingSelf(){return this.isSpectating&&this.target?.currentObject===this.context.players.getPlayerView(this.localId)?.currentObject}orbit=null;_handler;eventSub_WebXRRequestStartEvent=null;eventSub_WebXRStartEvent=null;eventSub_WebXREndEvent=null;_debug;_networking;awake(){if(this._debug=new Fh(this.context,this),this._networking=new Gh(this.context,this),this._networking.awake(),R.setActive(this.gameObject,!1),this.cam=R.getComponent(this.gameObject,ee),!this.cam){console.error("Spectator camera needs camera component",this);return}!this._handler&&this.cam&&(this._handler=new Hh(this.context,this.cam,this)),this.eventSub_WebXRRequestStartEvent=this.onXRSessionRequestStart.bind(this),this.eventSub_WebXRStartEvent=this.onXRSessionStart.bind(this),this.eventSub_WebXREndEvent=this.onXRSessionEnded.bind(this),V.addEventListener("requestVRSession",this.eventSub_WebXRRequestStartEvent),V.addEventListener("xrStarted",this.eventSub_WebXRStartEvent),V.addEventListener("xrStopped",this.eventSub_WebXREndEvent),this.orbit=R.getComponent(this.context.mainCamera,nt)}onDestroy(){this.stopSpectating(),V.removeEventListener("requestVRSession",this.eventSub_WebXRStartEvent),V.removeEventListener("xrStarted",this.eventSub_WebXRStartEvent),V.removeEventListener("xrStopped",this.eventSub_WebXREndEvent),this._handler?.destroy(),this._networking.destroy()}isSupportedPlatform(){let e=window.navigator.userAgent,t=/Windows|MacOS/.test(e),i=/Windows NT/.test(e)&&/Edg/.test(e)&&!/Win64/.test(e);return t&&!i}onXRSessionRequestStart(e){!this.isSupportedPlatform()||R.setActive(this.gameObject,!0)}onXRSessionStart(e){!this.isSupportedPlatform()||(It&&console.log(this.context.mainCamera),this.context.mainCamera&&this.followSelf())}onXRSessionEnded(e){this.context.removeCamera(this.cam),R.setActive(this.gameObject,!1),this.orbit&&(this.orbit.enabled=!0),this._handler?.set(void 0),this._handler?.disable(),this.isSpectatingSelf&&this.stopSpectating()}followSelf(){this.target=this.context.players.getPlayerView(this.context.connection.connectionId),this.target||(this.context.players.setPlayerView(this.localId,this.context.mainCamera,"headset"),this.target=this.context.players.getPlayerView(this.localId)),It&&console.log("Follow self",this.target)}onAfterRender(){if(!this.cam)return;let e=this.context.renderer,t=e.xr.enabled;if(!e.xr.isPresenting&&!this._handler?.currentTarget)return;this._handler?.update(this._mode);let i=e.getRenderTarget(),n=null;if(!i){if(!e.state.bindFramebuffer||!e.state.bindXRFramebuffer)return;n=e._framebuffer,e.state.bindXRFramebuffer(null)}this.setAvatarFlagsBeforeRender();let r=this.context.mainCameraComponent;if(r){let c=r.backgroundColor;c&&e.setClearColor(c,c.alpha),this.cam.backgroundColor=c,this.cam.clearFlags=r.clearFlags,this.cam.nearClipPlane=r.nearClipPlane,this.cam.farClipPlane=r.farClipPlane}else e.setClearColor(new Cr.Color(1,1,1));e.setRenderTarget(null),e.xr.enabled=!1;let s=this.cam?.cam;this.context.updateAspect(s);let a=e.xr.isPresenting;e.xr.isPresenting=!1,e.setSize(this.context.domWidth,this.context.domHeight),e.render(this.context.scene,s),e.xr.isPresenting=a,e.xr.enabled=t,i?e.setRenderTarget(i):e.state.bindXRFramebuffer(n),this.resetAvatarFlags()}setAvatarFlagsBeforeRender(){let e=this._mode===0;for(let t of le.instances)if(t.avatar&&"isLocalAvatar"in t.avatar){let i=4294967295;this.isSpectatingSelf&&(i=e&&t.avatar.isLocalAvatar?8:16);let n=t.avatar.flags;if(!n)continue;for(let r of n)r.UpdateVisible(i)}}resetAvatarFlags(){for(let e of le.instances)if(e.avatar&&"flags"in e.avatar){let t=e.avatar.flags;if(!t)continue;for(let i of t)e.avatar?.isLocalAvatar?i.UpdateVisible(8):i.UpdateVisible(16)}}},Hh=class{context;cam;spectator;follow;target;view;currentObject;get currentTarget(){return this.view}constructor(e,t,i){this.context=e,this.cam=t,this.spectator=i}set(e){let t=e?.currentObject;if(!t){this.spectator.stopSpectating();return}t!==this.currentObject&&(this.currentObject=t,this.view=e,this.follow||(this.follow=R.addNewComponent(this.cam.gameObject,kt)),this.target||(this.target=new Cr.Object3D),t.add(this.target),this.follow.enabled=!0,this.follow.target=this.target,It&&console.log("FOLLOW",t),this.context.isInXR?this.context.removeCamera(this.cam):this.context.setCurrentCamera(this.cam))}disable(){It&&console.log("STOP FOLLOW",this.currentObject),this.view=void 0,this.currentObject=void 0,this.context.removeCamera(this.cam),this.follow&&(this.follow.enabled=!1)}destroy(){this.target?.removeFromParent(),this.follow&&R.destroy(this.follow)}update(e){if(this.currentTarget?.isConnected===!1||this.currentTarget?.removed===!0){It&&console.log("Target disconnected or timeout",this.currentTarget),this.spectator.stopSpectating();return}this.currentTarget&&this.currentTarget?.currentObject!==this.currentObject&&(It&&console.log("Target changed",this.currentObject,"to",this.currentTarget.currentObject),this.set(this.currentTarget));let t=this.context.mainCamera;t&&(this.cam.cam.near!==t.near||this.cam.cam.far!==t.far)&&(this.cam.cam.near=t.near,this.cam.cam.far=t.far,this.cam.cam.updateProjectionMatrix());let i=this.follow?.target;if(!(!i||!this.follow)){switch(e){case 0:this.view?.viewDevice!=="browser"?(this.follow.followFactor=5,this.follow.rotateFactor=5):(this.follow.followFactor=50,this.follow.rotateFactor=50),i.position.set(0,0,0);break;case 1:this.follow.followFactor=3,this.follow.rotateFactor=2,i.position.set(0,.5,1.5);break}this.follow.flipForward=!1,this.view?.viewDevice!=="browser"?i.quaternion.copy(mw):i.quaternion.identity()}}},mw=new Cr.Quaternion().setFromAxisAngle(new Cr.Vector3(0,1,0),Math.PI),Fh=class{context;spectator;constructor(e,t){this.context=e,this.spectator=t,console.log("Click other avatars or cameras to follow them. Press ESC to exit spectator mode."),window.addEventListener("keydown",n=>{n.key==="Escape"&&this.spectator.stopSpectating()});let i=0;this.context.input.addEventListener("pointerdown",n=>{i=this.context.time.time}),this.context.input.addEventListener("pointerup",n=>{let r=this.context.time.time-i;r>1?this.spectator.stopSpectating():this.context.input.getPointerClicked(0)&&r<.3&&this.trySelectObject()})}trySelectObject(){let e=new be;e.setMask(16777215);let t=this.context.physics.raycast(e);if(It&&console.log(...t),t?.length)for(let i of t){if(i.distance<.2)continue;let n=i.object,r=R.getComponentInParent(n,le),s=r?.connectionId;if(s){let a=this.context.players.getPlayerView(s);this.spectator.target=a,It&&console.log("spectate",s,r);break}}}},Bh=class{guid;dontSave=!0;targetUserId;stoppedFollowing;constructor(e,t,i){this.guid=e,this.targetUserId=t,this.stoppedFollowing=i}},Uh=class{guid;userId;constructor(e,t){this.guid=e.guid,this.userId=t}},Gh=class{followers=[];context;spectator;_followerEventMethod;_requestFollowMethod;_joinedRoomMethod;constructor(e,t){this.context=e,this.spectator=t,this._followerEventMethod=this.onFollowerEvent.bind(this),this._requestFollowMethod=this.onRequestFollowEvent.bind(this),this._joinedRoomMethod=this.onUserJoinedRoom.bind(this)}awake(){this.context.connection.beginListen("spectator-follower-changed",this._followerEventMethod),this.context.connection.beginListen("spectator-request-follow",this._requestFollowMethod),this.context.connection.beginListen("joined-room",this._joinedRoomMethod),document.addEventListener("keydown",e=>{e.key==="f"?this.onRequestFollowMe():e.key==="Escape"&&this.onRequestFollowMe(!0)})}destroy(){this.context.connection.stopListening("spectator-follower-changed",this._followerEventMethod),this.context.connection.stopListening("spectator-request-follow",this._requestFollowMethod),this.context.connection.stopListening("joined-room",this._joinedRoomMethod)}onSpectatedObjectChanged(e,t){if(It&&console.log(this.context.connection.connectionId,"onSpectatedObjectChanged",e,t),this.context.connection.connectionId){let i=e?.userId===void 0,n=i?t:e?.userId,r=new Bh(this.context.connection.connectionId,n,i);this.context.connection.send("spectator-follower-changed",r)}}onRequestFollowMe(e=!1){if(It&&console.log("Request follow",this.context.connection.connectionId),this.context.connection.connectionId){this.spectator.stopSpectating();let t=e?void 0:this.context.connection.connectionId,i=new Uh(this.spectator,t);this.context.connection.send("spectator-request-follow",i)}}onUserJoinedRoom(){P("followme")&&this.onRequestFollowMe()}onFollowerEvent(e){let t=e.targetUserId,i=e.guid;if(It&&console.log(e),t===this.context.connection.connectionId)if(e.stoppedFollowing){let n=this.followers.indexOf(i);n!==-1&&(this.followers.splice(n,1),this.removeDisconnectedFollowers(),console.log(i,"unfollows you",this.followers.length))}else this.followers.includes(i)||(this.followers.push(i),this.removeDisconnectedFollowers(),console.log(i,"follows you",this.followers.length))}removeDisconnectedFollowers(){for(let e=this.followers.length-1;e>=0;e--){let t=this.followers[e];this.context.connection.userIsInRoom(t)===!1&&this.followers.splice(e,1)}}_lastRequestFollowUser;onRequestFollowEvent(e){if(this._lastRequestFollowUser=e,e.userId===this.context.connection.connectionId)this.spectator.stopSpectating();else if(e.userId===void 0)this.spectator.stopSpectating();else{let t=this.context.players.getPlayerView(e.userId);if(t)this.spectator.target=t;else return It&&console.warn("Could not find view",e.userId),this.enforceFollow(),!1}return!0}_enforceFollowInterval;enforceFollow(){this._enforceFollowInterval||(this._enforceFollowInterval=setInterval(()=>{this._lastRequestFollowUser===void 0||this._lastRequestFollowUser.userId&&this.spectator.isFollowedBy(this._lastRequestFollowUser.userId)?(clearInterval(this._enforceFollowInterval),this._enforceFollowInterval=void 0):(It&&console.log("REQUEST FOLLOW AGAIN",this._lastRequestFollowUser.userId),this.onRequestFollowEvent(this._lastRequestFollowUser))},1e3))}};import*as st from"three";import{Material as gw,NearestFilter as Tg,Texture as bw,Vector2 as Rg}from"three";var zh=P("debugspriterenderer"),Ic=class{static getOrCreateGeometry(e){if(e._geometry)return e._geometry;if(e.guid&&Ic.cache[e.guid])return zh&&console.log("Take cached geometry for sprite",e.guid),Ic.cache[e.guid];let t=new st.BufferGeometry;e._geometry=t;let i=new Float32Array(e.triangles.length*3),n=new Float32Array(e.triangles.length*2);for(let r=0;r<e.triangles.length;r+=1){let s=e.triangles[r];i[r*3]=-e.vertices[s].x,i[r*3+1]=e.vertices[s].y,i[r*3+2]=0;let a=e.uv[s];n[r*2]=a.x,n[r*2+1]=1-a.y}return t.setAttribute("position",new st.BufferAttribute(i,3)),t.setAttribute("uv",new st.BufferAttribute(n,2)),e.guid&&(this.cache[e.guid]=t),zh&&console.log("Built sprite geometry",e,t),t}},Oa=Ic;I(Oa,"cache",{});var ti=class{guid;texture;triangles;uv;vertices;_geometry};v([y()],ti.prototype,"guid",2),v([y(bw)],ti.prototype,"texture",2),v([Go()],ti.prototype,"triangles",2),v([Go()],ti.prototype,"uv",2),v([Go()],ti.prototype,"vertices",2);var ks=class{name;offset;size};v([y()],ks.prototype,"name",2),v([y(Rg)],ks.prototype,"offset",2),v([y(Rg)],ks.prototype,"size",2);var Vh=Symbol("spriteOwner"),an=class{sprite;index=0;slices;update(){let e=this.index;if(e<0||e>=this.slices.length)return;let t=this.slices[e],i=this.sprite?.texture;!i||(i.encoding=st.sRGBEncoding,i.offset.set(t.offset.x,t.offset.y),i.minFilter==Tg&&i.magFilter==Tg&&(i.anisotropy=1),i.needsUpdate=!0)}};v([y(ti)],an.prototype,"sprite",2),v([y()],an.prototype,"index",2),v([y(ks)],an.prototype,"slices",2);var sn=class extends M{drawMode=0;size={x:1,y:1};color;sharedMaterial;get sprite(){return this._spriteSheet}set sprite(e){if(e!==this._spriteSheet)if(typeof e=="number"){let t=Math.floor(e);t===e&&(this.spriteIndex=t);return}else this._spriteSheet=e,this.updateSprite()}set spriteIndex(e){!this._spriteSheet||(this._spriteSheet.index=e,this._spriteSheet.update())}get spriteIndex(){return this._spriteSheet?.index??0}get spriteFrames(){return this._spriteSheet?.slices.length??0}_spriteSheet;_currentSprite;awake(){this._currentSprite=void 0,zh&&(console.log("Awake",this.name,this,this.sprite?.sprite?.texture),this.sprite?.sprite?.texture&&console.log(this.sprite.sprite.texture.minFilter.toString(),this.sprite.sprite.texture.magFilter.toString()))}start(){this._currentSprite?this.gameObject&&this.gameObject.add(this._currentSprite):this.updateSprite()}updateSprite(){if(!this.__didAwake||!this.sprite?.sprite)return;let e=this.sprite.sprite;if(this._currentSprite)this._currentSprite.geometry=Oa.getOrCreateGeometry(e),this._currentSprite.material.map=e.texture;else{let t=new st.MeshBasicMaterial({color:16777215,side:st.DoubleSide});if(!t)return;if(this.color&&(t.color||(t.color=new st.Color),t.color.copy(this.color),t.opacity=this.color.alpha),t.alphaTest=.5,e.texture&&!t.wireframe){let i=e.texture;i[Vh]!==void 0&&i[Vh]!==this&&this.spriteFrames>1&&(i=e.texture=i.clone()),i[Vh]=this,t.map=i}this.sharedMaterial=t,this._currentSprite=new st.Mesh(Oa.getOrCreateGeometry(e),t)}this._currentSprite.parent!==this.gameObject&&(this.drawMode===2&&this._currentSprite.scale.set(this.size.x,this.size.y,1),this.gameObject&&this.gameObject.add(this._currentSprite)),this._spriteSheet?.update()}};v([y()],sn.prototype,"drawMode",2),v([y(q)],sn.prototype,"color",2),v([y(gw)],sn.prototype,"sharedMaterial",2),v([y(an)],sn.prototype,"sprite",1);var At=class{bb=null;bb_pos=0;__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsSyncedCameraModel(e,t){return(t||new At).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsSyncedCameraModel(e,t){return e.setPosition(e.position()+4),(t||new At).__init(e.readInt32(e.position())+e.position(),e)}userId(e){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.__string(this.bb_pos+t,e):null}guid(e){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.__string(this.bb_pos+t,e):null}dontSave(){let e=this.bb.__offset(this.bb_pos,8);return e?!!this.bb.readInt8(this.bb_pos+e):!1}pos(e){let t=this.bb.__offset(this.bb_pos,10);return t?(e||new Ce).__init(this.bb_pos+t,this.bb):null}rot(e){let t=this.bb.__offset(this.bb_pos,12);return t?(e||new Ce).__init(this.bb_pos+t,this.bb):null}static startSyncedCameraModel(e){e.startObject(5)}static addUserId(e,t){e.addFieldOffset(0,t,0)}static addGuid(e,t){e.addFieldOffset(1,t,0)}static addDontSave(e,t){e.addFieldInt8(2,+t,0)}static addPos(e,t){e.addFieldStruct(3,t,0)}static addRot(e,t){e.addFieldStruct(4,t,0)}static endSyncedCameraModel(e){return e.endObject()}static finishSyncedCameraModelBuffer(e,t){e.finish(t)}static finishSizePrefixedSyncedCameraModelBuffer(e,t){e.finish(t,void 0,!0)}};import{Object3D as vw}from"three";var Ac="SCAM";Ho(Ac,At.getRootAsSyncedCameraModel);var Dt=new Et,Wh=class{userId;guid;constructor(e,t){this.guid=t,this.userId=e}send(e,t){if(e){Dt.clear();let i=Dt.createString(this.guid),n=Dt.createString(this.userId);At.startSyncedCameraModel(Dt),At.addGuid(Dt,i),At.addUserId(Dt,n);let r=B(e),s=Ja(e);At.addPos(Dt,Ce.createVec3(Dt,r.x,r.y,r.z)),At.addRot(Dt,Ce.createVec3(Dt,s.x,s.y,s.z));let a=At.endSyncedCameraModel(Dt);Dt.finish(a,Ac),t.sendBinary(Dt.asUint8Array())}}},Dc=class extends M{getCameraObject(e){let t=this.userToCamMap[e];return t?this.remoteCams[t].obj:null}cameraPrefab=null;_lastWorldPosition;_lastWorldQuaternion;_model=null;_needsUpdate=!0;_lastUpdateTime=0;remoteCams={};userToCamMap={};_camTimeoutInSeconds=10;_receiveCallback=null;async awake(){this._lastWorldPosition=this.worldPosition.clone(),this._lastWorldQuaternion=this.worldQuaternion.clone(),this.cameraPrefab&&("uri"in this.cameraPrefab&&(this.cameraPrefab=await this.cameraPrefab.instantiate(this.gameObject)),this.cameraPrefab&&"isObject3D"in this.cameraPrefab&&(this.cameraPrefab.visible=!1))}onEnable(){this._receiveCallback=this.context.connection.beginListenBinrary(Ac,this.onReceivedRemoteCameraInfoBin.bind(this))}onDisable(){this.context.connection.stopListenBinary(Ac,this._receiveCallback)}update(){for(let n in this.remoteCams){let r=this.remoteCams[n],s=this.context.time.realtimeSinceStartup-r.lastUpdate;if(!r||s>this._camTimeoutInSeconds){console.log("Remote cam timeout",r,s),r?.obj&&R.destroy(r.obj),delete this.remoteCams[n],r&&delete this.userToCamMap[r.userId],Dc.instances.push(r),this.context.players.removePlayerView(r.userId,"browser");continue}}if(V.IsInWebXR)return;let e=this.context.mainCamera;if(e===null){this.enabled=!1;return}if(!this.context.connection.isConnected||this.context.connection.connectionId===null)return;this._model===null&&(this._model=new Wh(this.context.connection.connectionId,this.context.connection.connectionId+"_camera"));let t=B(e),i=me(e);(t.distanceTo(this._lastWorldPosition)>.001||i.angleTo(this._lastWorldQuaternion)>.01)&&(this._needsUpdate=!0),this._lastWorldPosition.copy(t),this._lastWorldQuaternion.copy(i),!((!this._needsUpdate||this.context.time.frameCount%2!==0)&&!(this.context.time.realtimeSinceStartup-this._lastUpdateTime>this._camTimeoutInSeconds*.5))&&(this._lastUpdateTime=this.context.time.realtimeSinceStartup,this._needsUpdate=!1,this._model.send(e,this.context.connection),this.context.isInXR||this.context.players.setPlayerView(this.context.connection.connectionId,e,"browser"))}onReceivedRemoteCameraInfoBin(e){let t=e.guid();if(!t)return;let i=e.userId();if(!i||!this.context.connection.userIsInRoom(i)||!this.cameraPrefab)return;let n=this.remoteCams[t];if(!n)if("isObject3D"in this.cameraPrefab){let c=new Ue;c.context=this.context;let u=R.instantiate(this.cameraPrefab,c);n=this.remoteCams[t]={obj:u,lastUpdate:this.context.time.realtimeSinceStartup,userId:i},n.obj.visible=!0,this.gameObject.add(u),this.userToCamMap[i]=t,Dc.instances.push(n);let l=R.getOrAddComponent(u,le);l.connectionId=i,l.avatar=u}else return;let r=n.obj;this.context.players.setPlayerView(i,r,"browser"),n.lastUpdate=this.context.time.realtimeSinceStartup,oe.markDirty(r);let s=e.pos();s&&pn(r,s.x(),s.y(),s.z());let a=e.rot();a&&Za(r,a.x(),a.y(),a.z())}},Tr=Dc;I(Tr,"instances",[]),v([y([vw,et])],Tr.prototype,"cameraPrefab",2);var Nh="view",Lc=P("debugsyncedroom"),ki=class extends M{roomName;urlParameterName="room";joinRandomRoom=!0;requireRoomParameter=!1;autoRejoin=!0;_roomPrefix;awake(){Lc&&console.log("Room",this.roomName,this.urlParameterName,this.joinRandomRoom,this.requireRoomParameter,this.autoRejoin),this._roomPrefix===void 0&&(this._roomPrefix=this.roomName,this.roomName="")}onEnable(){let e=P(Nh);if(e&&typeof e=="string"&&e.length>0){console.log("Join as viewer"),this.context.connection.joinRoom(e,!0);return}this.tryJoinRoom()}onDisable(){this.roomName&&this.roomName.length>0&&this.context.connection.leaveRoom(this.roomName)}tryJoinRoom(e=0){e===void 0&&(e=0);let t=!1;if(this.urlParameterName){let i=P(this.urlParameterName);if(i&&typeof i=="string"){t=!0;let n=mp(i);this.roomName=n}else if(this.joinRandomRoom&&(console.log("No room name found in url, generating random one"),this.setRandomRoomUrlParameter(),e<1))return this.tryJoinRoom(e+1)}else this.joinRandomRoom&&(this.roomName===null||this.roomName===void 0||this.roomName.length<=0)&&(console.log("generate room name"),this.roomName=this.generateRoomName());return this.requireRoomParameter&&!t?(Lc&&console.log('No required room parameter "'+this.urlParameterName+'" in url - will not connect to networking backend.'),!1):!this.roomName||this.roomName.length<=0?(Lc&&console.error('Missing room name on "'+this.name+'". Make sure this is correctly configured in Unity',this.context.connection.isDebugEnabled?this:""),!1):(this.context.connection.isConnected||this.context.connection.connect(),Lc&&console.log("Join "+this.roomName),this._roomPrefix&&(this.roomName=this._roomPrefix+this.roomName),this.context.connection.joinRoom(this.roomName),!0)}_lastPingTime=0;_lastRoomTime=-1;update(){this.context.connection.isConnected&&(this.context.time.time-this._lastPingTime>3&&(this._lastPingTime=this.context.time.time,this.context.connection.send("ping",{time:this.context.time.time})),this.context.connection.isInRoom&&(this._lastRoomTime=this.context.time.time)),this._lastRoomTime>0&&this.context.time.time-this._lastRoomTime>.3&&(this._lastRoomTime=-1,this.autoRejoin?(console.log("Disconnected from networking backend - attempt reconnecting now"),this.tryJoinRoom()):console.warn("You are not connected to a room anymore (possibly because the tab was inactive for too long and the server kicked you)"))}get currentRoomName(){let e=P(Nh);return e||P(this.urlParameterName)}setRandomRoomUrlParameter(){let e=$c(),t=this.generateRoomName();P(this.urlParameterName)?e.set(this.urlParameterName,t):e.append(this.urlParameterName,t),hp(t,e)}generateRoomName(){return fp()+"_"+pp(100,999)}getViewOnlyUrl(){if(this.context.connection.isConnected&&this.context.connection.currentRoomViewId){let e=window.location.search,t=new URLSearchParams(e);return t.has(this.urlParameterName)&&t.delete(this.urlParameterName),t.set(Nh,this.context.connection.currentRoomViewId),window.location.origin+window.location.pathname+"?"+t.toString()}return null}};v([y()],ki.prototype,"roomName",2),v([y()],ki.prototype,"urlParameterName",2),v([y()],ki.prototype,"joinRandomRoom",2),v([y()],ki.prototype,"requireRoomParameter",2),v([y()],ki.prototype,"autoRejoin",2);function Sg(){let o=P("testwindowcount")||0;o&&o>0&&yw(o)}function yw(o){if(P("testwindow"))return null;let e=new URL(window.location.href);vo(e.searchParams,es,1),vo(e.searchParams,"testwindow",1);let t=e.toString(),i=[];window.onbeforeunload=()=>{for(let c of i)c.close()};let n=.05,r=128,s=0,a=0;for(let c=0;c<o;c++){s*r+r*.01>=window.innerWidth&&(a+=1,s=0);let u=s*(r*(1+n))+window.screenLeft,l=a*(r*(1+n))+window.screenTop+90+60*a;s+=1;let d=window.open(t,"test window "+c,`popup=yes width=${r} height=${r} top=${l} left=${u}`);if(!d){console.warn("Failed to open window");continue}i.push(d),d.onload=()=>{d.onbeforeunload=()=>{for(let h=0;h<i.length;h++){let g=i[h];g!==d&&g.close()}i.length=0}}}return i}import{Vector3 as xw}from"three";var Ms=class extends M{awake(){Sg()}},Is=class extends M{transformsPerFrame=10;interval=0;useFlatbuffers=!0;awake(){if(this.useFlatbuffers)this.context.connection.beginListenBinrary(Jo,e=>{});else{this.models=[];for(let e=0;e<this.transformsPerFrame;e++)this.models.push(new jc(this.context.connection.connectionId+"_simulatedTransform_"+e,this))}}builder=null;models=null;update(){if(!!this.context.connection.isConnected){if(this.useFlatbuffers){if(!this.context.connection.connectionId||this.context.time.frameCount%this.interval!==0)return;this.builder===null&&(this.builder=new Et(1024));let e=this.builder;for(let t=0;t<this.transformsPerFrame;t++){e.clear();let i=kd(this.context.connection.connectionId,this);this.context.connection.sendBinary(i)}}else if(this.models)for(let e=0;e<this.models.length;e++){let t=this.models[e];t.dontSave=!0,t.update(this,null),this.context.connection.send("TestSimulateUserData-"+e,t)}}}},jc=class{guid;fast=!1;position;rotation;velocity=void 0;dontSave;isValid(){return this.fast!==void 0||this.position!==void 0||this.rotation!==void 0||this.velocity!==void 0}constructor(e,t){this.guid=e,this.position={x:0,y:0,z:0},this.rotation={x:0,y:0,z:0,w:0},this.update(t,null)}update(e,t){let i=e.worldPosition;this.position.x=i.x,this.position.y=i.y,this.position.z=i.z;let n=e.worldQuaternion;if(this.rotation.x=n.x,this.rotation.y=n.y,this.rotation.z=n.z,this.rotation.w=n.w,this.fast=!1,t){let r=t.getVelocity();this.velocity===void 0&&(this.velocity={x:0,y:0,z:0}),this.velocity.x=r.x,this.velocity.y=r.y,this.velocity.z=r.z}}};I(jc,"temp",new xw);import{MathUtils as ww}from"three";import{TransformControls as Ew}from"three/examples/jsm/controls/TransformControls";import{OrbitControls as Cw}from"three/examples/jsm/controls/OrbitControls";var po=class extends M{isGizmo=!0;control;orbit;awake(){this.isGizmo&&!Di||!this.context.mainCamera||(this.control=new Ew(this.context.mainCamera,this.context.renderer.domElement),this.control.visible=!0,this.control.enabled=!0,this.control.getRaycaster().layers.set(2),this.control.size=.6,this.control.traverse(e=>{let t=e;if(t.layers.set(2),t){let i=t.material;i&&(i.opacity=.3)}}))}start(){if(this.context.mainCamera){let e=R.getComponentInParent(this.context.mainCamera,Cw)??void 0;this.orbit=e}}changeEventListener;windowKeyDownListener;windowKeyUpListener;onEnable(){this.control&&(this.context.scene.add(this.control),this.control.attach(this.gameObject)),this.changeEventListener=this.onControlChangedEvent.bind(this),this.control?.addEventListener("dragging-changed",this.changeEventListener),this.attachWindowEvents()}onDisable(){this.control?.removeFromParent(),this.changeEventListener&&this.control?.removeEventListener("dragging-changed",this.changeEventListener)}onControlChangedEvent(e){let t=this.orbit;if(t&&(t.enabled=!e.value),e.value){let i=R.getComponentInParent(this.gameObject,St);i&&i.requestOwnership()}}attachWindowEvents(){let e=this.control;!e||(this.windowKeyDownListener||(this.windowKeyDownListener=t=>{switch(t.keyCode){case 81:e.setSpace(e.space==="local"?"world":"local");break;case 16:e.setTranslationSnap(100),e.setRotationSnap(ww.degToRad(15)),e.setScaleSnap(.25);break;case 87:e.setMode("translate");break;case 69:e.setMode("rotate");break;case 82:e.setMode("scale");break;case 187:case 107:e.setSize(e.size+.1);break;case 189:case 109:e.setSize(Math.max(e.size-.1,.1));break;case 88:e.showX=!e.showX;break;case 89:e.showY=!e.showY;break;case 90:e.showZ=!e.showZ;break;case 32:e.enabled=!e.enabled;break}}),this.windowKeyUpListener||(this.windowKeyUpListener=t=>{switch(t.keyCode){case 16:e.setTranslationSnap(null),e.setRotationSnap(null),e.setScaleSnap(null);break}}),window.addEventListener("keydown",this.windowKeyDownListener),window.addEventListener("keyup",this.windowKeyUpListener))}};v([y()],po.prototype,"isGizmo",2);import{Object3D as Rw}from"three";import*as Ig from"three";import{USDZExporter as Sw}from"three/examples/jsm/exporters/USDZExporter";function Pg(o){let e=o.domElement.querySelector("link[rel='ar']");if(e)return e;let t=document.createElement("div");t.classList.add("menu"),t.classList.add("quicklook-menu"),t.style.display="none",t.style.visibility="hidden";let i=document.createElement("button");i.id="open-in-ar",i.innerText="Open in QuickLook",t.appendChild(i);let n=document.createElement("a");n.id="needle-usdz-link",n.style.display="none",n.rel="ar",n.href="",t.appendChild(n);let r=document.createElement("img");return r.id="button",n.appendChild(r),o.domElement.appendChild(t),n}function Og(){var o=new Date;let e=o.getMonth()+1,t=o.getDate(),i=o.getHours(),n=o.getMinutes(),r=o.getSeconds(),s=(e<10?"0":"")+e,a=(t<10?"0":"")+t,c=(i<10?"0":"")+i,u=(n<10?"0":"")+n,l=(r<10?"0":"")+r;return o.getFullYear()+s+a+"-"+c+u+l}import{AnimationClip as Tw,KeyframeTrack as kg}from"three";var Hc=P("debugusdz");function Mg(o,e){let t=[],i=R.getComponentsInChildren(o,Pe),n=!1;Hc&&console.log(i);for(let r of i){if(!r||!r.runtimeAnimatorController)continue;Hc&&console.log(r);let s=[];for(let a of r.runtimeAnimatorController.enumerateActions()){Hc&&console.log(a);let c=a.getClip();if(!n&&c.tracks.length>0){n=!0;let u=c.tracks[0],l=u.name.substring(0,u.name.lastIndexOf(".")),d=new kg(l+".position",[0,.01],[0,0,0,0,0,0]),h=new kg(l+".quaternion",[0,.01],[0,0,0,1,0,0,0,1]);s.push(new Tw("rest",.01,[d,h]))}s.includes(c)||s.push(c)}t.push({root:r.gameObject,clips:s})}Hc&&console.log(t);for(let r of t)for(let s of r.clips)e.registerAnimation(r.root,s)}var ka=P("debugusdz"),Rr=class extends M{objectToExport;autoExportAnimations=!1;extensions=[];link;webxr;webARSessionRoot;start(){ka&&(window.addEventListener("keydown",e=>{switch(e.key){case"t":this.exportAsync();break}}),_o()&&setTimeout(()=>{this.exportAsync()},2e3)),document.getElementById("open-in-ar")?.addEventListener("click",e=>{e.preventDefault(),this.exportAsync()}),this.objectToExport||(this.objectToExport=this.gameObject)}onEnable(){let e=xo(),t=Ua();(ka||e&&t)&&(this.createQuicklookButton(),this.webARSessionRoot=R.findObjectOfType(ft)??void 0,this.lastCallback=this.quicklookCallback.bind(this),this.link=Pg(this.context),this.link.addEventListener("message",this.lastCallback))}onDisable(){this.link?.removeEventListener("message",this.lastCallback)}async exportAsync(){if(!this.objectToExport)return;if(this.webARSessionRoot){let h=this.webARSessionRoot.gameObject,g=1/this.webARSessionRoot.arScale;h.matrix.makeScale(g,g,g),this.webARSessionRoot.invertForward&&h.matrix.multiply(new Ig.Matrix4().makeRotationY(Math.PI))}let e=new Sw,t=[...this.extensions],i=new tr;t.push(i),this.autoExportAnimations&&Mg(this.objectToExport,i);let n={self:this,exporter:e,extensions:t,object:this.objectToExport};this.dispatchEvent(new CustomEvent("before-export",{detail:n}));let r="needle";ka&&(r+="-"+Og()),e.debug=ka;let s=await e.parse(this.objectToExport,t),a=new Blob([s],{type:"application/octet-stream"});this.dispatchEvent(new CustomEvent("after-export",{detail:n}));let c=this.buildQuicklookOverlay(),u=c.callToAction?encodeURIComponent(c.callToAction):"",l=c.checkoutTitle?encodeURIComponent(c.checkoutTitle):"",d=c.checkoutSubtitle?encodeURIComponent(c.checkoutSubtitle):"";this.link.href=URL.createObjectURL(a)+`#callToAction=${u}&checkoutTitle=${l}&checkoutSubtitle=${d}&`,this.lastCallback||(this.lastCallback=this.quicklookCallback.bind(this),this.link.addEventListener("message",this.lastCallback)),this.link.download=r+".usdz",this.link.click()}lastCallback;quicklookCallback(e){e?.data=="_apple_ar_quicklook_button_tapped"&&(ka&&wo("Quicklook closed via call to action button"),this.dispatchEvent(new CustomEvent("quicklook-button-tapped",{detail:this})))}buildQuicklookOverlay(){let e={};return e.callToAction="Close",e.checkoutTitle="\u{1F335} Made with Needle",e.checkoutSubtitle="_",this.dispatchEvent(new CustomEvent("quicklook-overlay",{detail:e})),e}_arButton;async createQuicklookButton(){if(!this.webxr)if(await yo(1),this.webxr=R.findObjectOfType(V)??void 0,this.webxr)if(this.webxr.VRButton&&this.webxr.VRButton.parentElement?.removeChild(this.webxr.VRButton),this.webxr.ARButton&&this._arButton!==this.webxr.ARButton){this._arButton=this.webxr.ARButton;let e=this.webxr.ARButton.parentElement?.querySelector("a");e&&(e.href=""),this.webxr.ARButton.innerText="Open in Quicklook",this.webxr.ARButton.disabled=!1,this.webxr.ARButton.addEventListener("click",t=>{t.preventDefault(),this.exportAsync()}),this.webxr.ARButton.classList.add("quicklook-ar-button"),this.dispatchEvent(new CustomEvent("created-button",{detail:this.webxr.ARButton}))}else{this.webxr.createARButton=!1,this.webxr.createVRButton=!1;let e=window.document.querySelector(".webxr-buttons");e||(e=document.createElement("div"),e.classList.add("webxr-buttons"));let t=document.createElement("button");t.innerText="Open in Quicklook",t.addEventListener("click",()=>{this.exportAsync()}),t.classList.add("webxr-ar-button"),t.classList.add("webxr-button"),t.classList.add("quicklook-ar-button"),e.appendChild(t),this.dispatchEvent(new CustomEvent("created-button",{detail:t}))}else console.warn("Could not find WebXR component: will not create Quicklook button",G.Current)}resetStyles(e){e.style.position="",e.style.top="",e.style.left="",e.style.width="",e.style.height="",e.style.margin="",e.style.padding="",e.style.border="",e.style.background="",e.style.color="",e.style.font="",e.style.textAlign="",e.style.opacity="",e.style.zIndex=""}};v([y(Rw)],Rr.prototype,"objectToExport",2),v([y()],Rr.prototype,"autoExportAnimations",2);import{Vector3 as Pw}from"three";var fo=class{guid;dontSave=!0;userId;point={x:0,y:0,z:0};source={x:0,y:0,z:0};target;update(e,t,i,n=void 0){this.userId=e.connection.connectionId,this.point.x=t.x,this.point.y=t.y,this.point.z=t.z,this.source.x=i.x,this.source.y=i.y,this.source.z=i.z,this.target=n}},As=class extends M{prefab=null;_grabModels=[];_grabModelsUpdateTime=[];_addOrUpdateSub=null;_endSub=null;_freeSub=null;_instances={};awake(){this.prefab&&(this.prefab.visible=!1)}onEnable(){this._addOrUpdateSub=this.context.connection.beginListen("xr-grab-visual-start-or-update",this.onRemoteGrabStartOrUpdate.bind(this)),this._endSub=this.context.connection.beginListen("xr-grab-visual-end",this.onRemoteGrabEnd.bind(this)),this._freeSub=gt.AddEventListener("WillFree",this.onAttachedObjectFree.bind(this))}onDisable(){this.context.connection.stopListening("xr-grab-visual-start-or-update",this._addOrUpdateSub),this.context.connection.stopListening("xr-grab-visual-end",this._endSub),gt.RemoveEventListener("WillFree",this._freeSub)}addOrUpdateGrab(e){this.context.connection.send("xr-grab-visual-start-or-update",e,2)}endGrab(e){this.context.connection.send("xr-grab-visual-end",e,2)}onRemoteGrabStartOrUpdate(e){if(!this.prefab)return;let t=this._instances[e.guid];if(!t){let i=R.instantiate(this.prefab);if(i.visible=!0,this._instances[e.guid]={instance:i,model:e},e.userId){let n=R.getComponentsInChildren(i,_t);if(n?.length>0)for(let r of n)r.assignUserColor(e.userId)}return}t.model=e}onRemoteGrabEnd(e){if(!e)return;let t=e.guid;this._instances[t]&&(R.destroy(this._instances[t].instance),delete this._instances[t])}onAttachedObjectFree(e){if(this._grabModels.length<=0)return;let t=this._grabModels[0];this.updateModel(t,e),this.endGrab(t)}onBeforeRender(){if(this.updateRendering(),!!this.prefab&&(this.prefab.visible=!1,this.context.time.frameCount%10===0))for(let e=0;e<gt.Current.length;e++){let t=gt.Current[e];if(!t.controller||!t.selected)continue;this._grabModels.length<=e&&(this._grabModels.push(new fo),this._grabModelsUpdateTime.push(0)),this._grabModelsUpdateTime[e]=this.context.time.time;let i=this._grabModels[e];this.updateModel(i,t),this.addOrUpdateGrab(i)}}updateModel(e,t){if(!t.controller||!t.selected)return;e.guid=t.grabUUID;let i=t.selected.guid;e.update(this.context,t.grabPoint,t.controller.worldPosition,i)}temp=new Pw;updateRendering(){let e=this.context.time.deltaTime/.5;for(let t in this._instances){let{instance:i,model:n}=this._instances[t];if(!i||!n)continue;let{point:r}=n,s=B(i);this.temp.set(r.x,r.y,r.z),s.lerp(this.temp,e),ie(i,s)}}};var Ma=class{};import*as Fc from"three";import{MeshLine as Ow,MeshLineMaterial as kw}from"three.meshline";var Qh=class{id=0;points=[];line=new Ow;material;mesh;constructor(e,t){if(t&&(this.material=t.material),this.material||(this.material=this.defaultLineMaterial),t){let i=t.options;i&&Object.assign(this.material,i)}this.mesh=new Fc.Mesh(this.line,this.material),e.add(this.mesh)}appendPoint(e){let t=Qh.wp;t.set(e.x,e.y,e.z);let i=this.mesh?.parent;return i&&(t=i.worldToLocal(t),e.x=t.x,e.y=t.y,e.z=t.z),this.points.push(e.x,e.y,e.z),this.line.setPoints(this.points),e}defaultLineMaterial=new kw({color:10066329,lineWidth:.01})},Ds=Qh;I(Ds,"wp",new Fc.Vector3);var mo=class extends M{startLine(e,t){let i=Math.random()*Number.MAX_SAFE_INTEGER;return this.internalStartLine(e,i,!0,t)}updateLine(e,t){let i=this.inFlight[e.id];if(!i)return;t.point&&(t.point=i.appendPoint(t.point));let n=this.buffer[e.id];n&&(t.point&&n.push(t.point.x,t.point.y,t.point.z),n.length>5&&(this.sendLineUpdate(i,!1,void 0,n),n.length=0))}endLine(e,t=!0){let i=this.inFlight[e.id];if(!i)return;this.finished.push(i),delete this.inFlight[e.id],t&&this.sendLineUpdate(i,!0,0);let n=this.buffer[e.id];if(n){delete this.buffer[e.id];let r=n;r.length=0,this.freeBuffer.push(r)}return i}getLine(e){return this.inFlight[e.id]}finished=[];inFlight=[];buffer={};freeBuffer=new Array;awake(){this.context.connection.beginListen("line-start",e=>{this.onEnsureLine(e.id,e.parentGuid)}),this.context.connection.beginListen("line-update",e=>{let t=this.onEnsureLine(e.guid,e.parentGuid);t&&e.points&&(e.startIndex<=0?t.points=e.points:e.startIndex>=t.points.length&&t.points.push(...e.points),t.line.setPoints(t.points),t.material.lineWidth=e.width,t.material.color.fromArray(e.color),e.finished===!0&&this.endLine({id:t.id},!1))})}onEnsureLine(e,t){if(this.inFlight[e])return this.inFlight[e];let i=R.findByGuid(t,this.context.scene);return i?(this.internalStartLine(i,e,!1),this.inFlight[e]):null}internalStartLine(e,t,i=!0,n){let r=new Ds(e??this.context.scene,n);r.id=t,this.inFlight[t]=r,i&&this.sendLineStart(r);let s;return this.freeBuffer.length<=0?s=new Array:s=this.freeBuffer.pop(),this.buffer[t]=s,{id:t}}sendLineStart(e){let t=e.mesh.parent;this.context.connection.send("line-start",{id:e.id,parentGuid:t?t.guid:void 0})}sendLineUpdate(e,t,i,n){if(e){let r={parentGuid:e.mesh.parent.guid,guid:e.id,points:n?[...n]:e.points,width:e.material.lineWidth,color:e.material.color.toArray(),startIndex:i!==void 0?i:e.points.length,finished:t};this.context.connection.send("line-update",r)}}};import*as Ag from"three";import{Raycaster as Mw,Vector3 as Iw}from"three";import{MeshLineMaterial as Aw}from"three.meshline";var Bc=class{isDrawing;lastHit;currentHandle;maxDistance;prevDistance;lastParent;constructor(){this.isDrawing=!1,this.lastHit=new Iw,this.currentHandle=null,this.maxDistance=0,this.prevDistance=0,this.lastParent=null}},Uc=class extends M{lines;colliders;alignToSurface=!0;addToPaintedObject=!0;orbit;start(){this.lines||(this.lines=R.getComponent(this.gameObject,mo),this.lines||(this.lines=R.addNewComponent(this.gameObject,mo))),this.orbit=R.findObjectOfType(nt,this.context)??void 0,this._states.mouse=new Bc;let e={};Z.addEventListener("select-start",(t,i)=>{e[t.controller.uuid]=!0}),Z.addEventListener("update",(t,i)=>{if(e[t.controller.uuid]===!0){let n=t.getRay();this.updateLine(t.controller.uuid,n,!0,!1,!1)}}),Z.addEventListener("select-end",(t,i)=>{e[t.controller.uuid]=!1;let n=t.getRay();this.updateLine(t.controller.uuid,n,!0,!0,!1)})}_states={};update(){if(this.orbit&&this._states.mouse&&this.orbit&&(this.orbit.enabled=!this._states.mouse.isDrawing),!this.context.mainCamera)return;let e=this.context.input.getPointerPressedCount()>1,t=this.context.input.getPointerPositionRC(0);if(!t)return;Uc._raycaster.setFromCamera(t,this.context.mainCamera);let i=Uc._raycaster.ray;this.updateLine("mouse",i,this.context.input.getPointerPressed(0),this.context.input.getPointerUp(0),e||this.context.input.isKeyPressed("Alt"))}updateLine(e,t,i,n,r=!1){let s=this._states[e];if(s||(this._states[e]=new Bc,s=this._states[e]),n)s.isDrawing=!1,s.currentHandle&&(this.lines.endLine(s.currentHandle),s.currentHandle=null);else if(i){if(r)return s;let a=this.getHit(t),c=null,u=s.prevDistance;if(a)s.currentHandle||(s.maxDistance=a.distance),c=a.point,a.face&&c.add(a.face.normal.multiplyScalar(.01)),s.prevDistance=a.distance;else if(s.maxDistance>0){let l=s.maxDistance;if(!s.currentHandle&&s.lastHit){let d=B(this.context.mainCamera);l=s.lastHit.distanceTo(d)}c=t.origin.add(t.direction.multiplyScalar(s.maxDistance)),s.prevDistance=s.maxDistance}if(c){if(!s.currentHandle){let l=s.lastParent??this.gameObject;this.addToPaintedObject&&a&&(l=a.object),s.lastParent=l,s.currentHandle=this.lines.startLine(l,{material:this.createRandomMaterial()})}if(this.alignToSurface&&(s.prevDistance>s.maxDistance||Math.abs(u-s.prevDistance)>.2)){let l=s.maxDistance;c=t.origin.add(t.direction.multiplyScalar(l)),s.prevDistance=l}if(s.lastHit&&s.lastHit.distanceTo(c)<s.prevDistance*.01)return s;this.lines.updateLine(s.currentHandle,{point:c}),s.lastHit.copy(c)}s.isDrawing=s.currentHandle!==null}return s}_raycastOptions=new be;getHit(e){(!this.colliders||this.colliders.length===0)&&(this.colliders=[this.gameObject]),this._raycastOptions.targets=this.colliders,this._raycastOptions.ray=e;let t=this.context.physics.raycast(this._raycastOptions);if(t.length>0){for(let i of t)if(!!R.isActiveInHierarchy(i.object))return i}return null}createRandomMaterial(){let e;return this.context.connection.connectionId?e=_t.colorFromHashCode(_t.hashCode(this.context.connection.connectionId)):e=new Ag.Color("hsl("+(Math.random()*100).toFixed(0)+", 80%, 30%)"),new Aw({color:e,lineWidth:H.lerp(.005,.01,Math.random())})}},Ia=Uc;I(Ia,"_raycaster",new Mw);import{Object3D as Dw}from"three";var Aa=class extends M{asset;joinedRoomFunction;awake(){this.watchTabVisible(),this.joinedRoomFunction=this.onUserJoined.bind(this)}onEnable(){this.context.connection.beginListen("joined-room",this.joinedRoomFunction)}onDisable(){this.context.connection.stopListening("joined-room",this.joinedRoomFunction)}async onUserJoined(e){let t=await this.asset?.instantiateSynced({parent:this.gameObject},!0);if(t){let i=R.getComponent(t,ln);i&&(i.owner=this.context.connection.connectionId)}}watchTabVisible(){window.addEventListener("visibilitychange",e=>{if(document.visibilityState==="visible")for(let t=ln.all.length-1;t>=0;t--){let i=ln.all[t];(!i.owner||!this.context.connection.userIsInRoom(i.owner))&&i.doDestroy()}})}};v([y(et)],Aa.prototype,"asset",2);var ii=class extends M{static get all(){return ii._all}static get local(){return ii._local}static isLocalPlayer(e){return e instanceof Dw?R.getComponentInParent(e,ii)?.isLocalPlayer??!1:e instanceof Tt?R.getComponentInParent(e.gameObject,ii)?.isLocalPlayer??!1:!1}owner;get isLocalPlayer(){return this.owner===this.context.connection.connectionId}awake(){this.isLocalPlayer&&ii.local.push(this),ii.all.push(this),this.context.connection.beginListen("user-left-room",e=>{if(e.userId===this.owner){this.doDestroy();return}})}start(){if(!this.owner||!this.context.connection.userIsInRoom(this.owner)){this.doDestroy();return}}doDestroy(){So(this.gameObject,this.context.connection)}onDestroy(){if(ii.all.splice(ii.all.indexOf(this),1),this.isLocalPlayer){let e=ii._local.indexOf(this);e>=0&&ii._local.splice(e,1)}}},ln=ii;I(ln,"_all",[]),I(ln,"_local",[]),v([Tc(),y()],ln.prototype,"owner",2);var Gc=class extends M{toggleKey="p";update(){this.context.input.isKeyDown("p")&&this.context.domElement.classList.toggle("presentation-mode")}};O.add("__Ignore",Ma);O.add("AlignmentConstraint",er);O.add("Animation",Bt);O.add("AnimationCurve",gi);O.add("AnimationExtension",tr);O.add("AnimationTrackHandler",ir);O.add("Animator",Pe);O.add("AnimatorController",fi);O.add("AttachedObject",gt);O.add("AudioListener",bi);O.add("AudioSource",se);O.add("AudioTrackHandler",nr);O.add("Avatar_Brain_LookAt",Rn);O.add("Avatar_MouthShapes",cr);O.add("Avatar_MustacheShake",ns);O.add("Avatar_POI",ye);O.add("AvatarBlink_Simple",Qi);O.add("AvatarEyeLook_Rotation",qi);O.add("AvatarLoader",rr);O.add("AvatarMarker",le);O.add("AvatarModel",Yr);O.add("AxesHelper",Mn);O.add("BaseUIComponent",Ve);O.add("BasicIKConstraint",rs);O.add("BoxCollider",hr);O.add("BoxGizmo",_i);O.add("BoxHelperComponent",ze);O.add("Button",Yt);O.add("CallInfo",vi);O.add("Camera",ee);O.add("Canvas",We);O.add("CanvasGroup",Ln);O.add("CapsuleCollider",Qt);O.add("CharacterController",Yi);O.add("CharacterControllerInput",Ti);O.add("Collider",Pt);O.add("ColorAdjustments",mr);O.add("ColorBySpeedModule",Ri);O.add("ColorOverLifetimeModule",jn);O.add("ControlTrackHandler",Tn);O.add("Deletable",ds);O.add("DeleteBox",no);O.add("DeviceFlag",ro);O.add("DragControls",Ji);O.add("DropListener",gr);O.add("Duplicatable",Zi);O.add("EmissionModule",yt);O.add("EventList",de);O.add("EventListEvent",Xr);O.add("EventSystem",Ye);O.add("EventTrigger",oo);O.add("FieldWithDefault",ps);O.add("FixedJoint",ms);O.add("FlyControls",gs);O.add("GltfExport",ei);O.add("GltfExportBox",bs);O.add("Gradient",Si);O.add("Graphic",vt);O.add("GraphicRaycaster",vs);O.add("GridHelper",Un);O.add("GridLayoutGroup",xs);O.add("GroundProjectedEnv",tn);O.add("HingeJoint",br);O.add("HorizontalLayoutGroup",_s);O.add("Image",An);O.add("InheritVelocityModule",Zt);O.add("InputField",Ot);O.add("Interactable",zt);O.add("Keyboard",ws);O.add("LayoutGroup",Gn);O.add("Light",Xe);O.add("LimitVelocityOverLifetimeModule",ue);O.add("LineInstanceHandler",Ds);O.add("LinesDrawer",Ia);O.add("LinesManager",mo);O.add("LODGroup",vr);O.add("LODModel",nn);O.add("LogStats",Cs);O.add("LookAtConstraint",On);O.add("MainModule",_e);O.add("MaskableGraphic",In);O.add("MeshCollider",Jr);O.add("MeshRenderer",so);O.add("MinMaxCurve",U);O.add("MinMaxGradient",Me);O.add("NestedGltf",uo);O.add("Networking",Pi);O.add("NoiseModule",K);O.add("ObjectRaycaster",lo);O.add("OffsetConstraint",rn);O.add("OrbitControls",nt);O.add("ParticleBurst",Hn);O.add("ParticleSubEmitter",yr);O.add("ParticleSystem",ve);O.add("ParticleSystemRenderer",on);O.add("PlayableDirector",En);O.add("PlayerColor",_t);O.add("PlayerState",ln);O.add("PlayerSync",Aa);O.add("PointerEventData",xi);O.add("PresentationMode",Gc);O.add("RawImage",eo);O.add("Raycaster",ao);O.add("Rect",$r);O.add("RectTransform",bt);O.add("ReflectionProbe",$t);O.add("RegisteredAnimationInfo",Wr);O.add("RemoteSkybox",Oi);O.add("Renderer",ae);O.add("RendererLightmap",Bn);O.add("RGBAColor",q);O.add("Rigidbody",J);O.add("RotationBySpeedModule",Ne);O.add("RotationOverLifetimeModule",Ke);O.add("ScreenCapture",wr);O.add("ShadowCatcher",Er);O.add("ShapeModule",ne);O.add("SignalAsset",Qr);O.add("SignalReceiver",wn);O.add("SignalReceiverEvent",qr);O.add("SignalTrackHandler",Cn);O.add("Size",ss);O.add("SizeBySpeedModule",ke);O.add("SizeOverLifetimeModule",Jt);O.add("SkinnedMeshRenderer",fs);O.add("SmoothFollow",kt);O.add("SpatialHtml",Ps);O.add("SpatialTrigger",Vn);O.add("SpatialTriggerReceiver",Mt);O.add("SpectatorCamera",Os);O.add("SphereCollider",dr);O.add("Sprite",ti);O.add("SpriteRenderer",sn);O.add("SpriteSheet",an);O.add("SubEmitterSystem",_r);O.add("SyncedCamera",Tr);O.add("SyncedRoom",ki);O.add("SyncedTransform",St);O.add("TeleportTarget",Kr);O.add("TestRunner",Ms);O.add("TestSimulateUserData",Is);O.add("Text",Ie);O.add("TextureSheetAnimationModule",xe);O.add("ToneMapping",fr);O.add("TrailModule",te);O.add("TransformData",Nr);O.add("TransformGizmo",po);O.add("UIRaycastUtils",Ei);O.add("UIRootComponent",kn);O.add("UsageMarker",Wt);O.add("USDZExporter",Rr);O.add("VelocityOverLifetimeModule",He);O.add("VerticalLayoutGroup",ys);O.add("VideoPlayer",Te);O.add("Voip",it);O.add("Volume",io);O.add("VolumeComponent",Ki);O.add("VolumeParameter",cs);O.add("VolumeProfile",pr);O.add("VRUserState",Xt);O.add("WebAR",lr);O.add("WebARSessionRoot",ft);O.add("WebXR",V);O.add("WebXRAvatar",Vt);O.add("WebXRController",Z);O.add("WebXRSync",Pn);O.add("XRFlag",Ee);O.add("XRGrabModel",fo);O.add("XRGrabRendering",As);O.add("XRRig",ar);O.add("XRState",Rt);var Dg=pe,Lw=P("debugtypestore");Lw&&console.log(O);function Lg(o,e){let i=hu(o,e);return i!==void 0?i:null}var jw=new Qa;async function jg(o,e,t,i=null,n){if(!t)return;let r=[],s=i;typeof s=="number"&&(s=new Re(i));let a=new Co(t.scene);a.gltfId=e,a.context=o,a.gltf=t,a.nodeToObject=n?.nodeToObjectMap,a.implementationInformation=jw;let c=[];if(t.scenes)for(let u of t.scenes)await Yh(a,u,c,r);if(t.children)for(let u of t.children)await Yh(a,u,c,r);o.new_scripts_pre_setup_callbacks.push(()=>{for(let u of c)Hw(u,a);if(s){qh(t,s);for(let u of t.scenes)qh(u,s)}})}function qh(o,e){if(e!==null&&!!o){if(o.guid=e.generateUUID(),o&&o.userData&&o.userData.components)for(let t of o.userData.components)t!==null&&(t.guid=e.generateUUID());if(o.children)for(let t of o.children)qh(t,e)}}var Da=[];async function Yh(o,e,t,i){if(!e)return;let n=e.userData;if(n){let r=n.builtin_components;if(r&&r.length>0)for(let s of r)try{if(s===null)continue;let a=O.get(s.name);if(a!=null){let c=new a;c.sourceId=o.gltfId,Lt(c,s,o.implementationInformation),Xn(e,c,!1),t.push({instance:c,compData:s,obj:e})}else Dg&&console.debug("unknown component: "+s.name),Da.includes(s.name)||Da.push(s.name)}catch(a){console.error(s.name+" - "+a.message,a)}if(Da.length>0){let s=Da.join(", ");console.warn("unknown components: "+s),Da.length=0,lt()&&Fe(`<strong>Unknown components in scene</strong>:
309
309
 
310
310
  ${s}
311
311
 
312
312
  This could mean you forgot to add a npmdef to your ExportInfo
313
- <a href="https://engine.needle.tools/docs/project_structure.html#creating-and-installing-a-npmdef" target="_blank">documentation</a>`,1)}}if(e.children)for(let r of e.children)await Yh(o,r,t,i)}function Aw(o,e){let{instance:t,compData:i,obj:n}=o;e.object=n,e.target=t;let r=!0;r=Vs(t,i,e)===!0,Ig&&console.debug("add "+i.name,i,t)}var Da=class{createBuiltinComponents(e,t,i,n,r){return Dg(e,t,i,n,r)}writeBuiltinComponentData(e,t){return Ag(e,t)}parseSync(e,t,i,n){return Lw(e,t,i,n)}loadSync(e,t,i,n,r){return jw(e,t,i,n,r)}};El(Da);var Dw=P("printGltf");var Rr=class{context;loader;path;gltf;constructor(e,t,i,n){this.context=e,this.path=t,this.loader=i,this.gltf=n}},Lg={};function Ds(o,e){if(Lg[o])for(let t of Lg[o])t(e)}async function Hg(o,e,t,i,n){Dw&&console.log(t),await o.assets.registerGltf(t),await qe().createBuiltinComponents(o,e,t,i,n)}function Lw(o,e,t,i){typeof t!="string"&&console.warn("Parse gltf binary without path, this might lead to errors in resolving extensions. Please provide the source path of the gltf/glb file",t,typeof t);let n=new jg;xu(n,o,t);let s=_u(n);return new Promise((a,c)=>{try{yn(n,o),Ds(0,new Rr(o,t,n)),n.parse(e,t,async d=>{Ds(1,new Rr(o,t,n,d)),await Hg(o,t,d,i,s),Ds(10,new Rr(o,t,n,d)),a(d)},d=>{console.error("failed loading "+t,d),a(void 0)})}catch(d){console.error(d),c(d)}})}function jw(o,e,t,i=!1,n){let r=new jg;xu(r,o,e);let a=_u(r);return new Promise((c,d)=>{try{yn(r,o),Ds(0,new Rr(o,e,r)),r.load(e,async l=>{Ds(1,new Rr(o,e,r,l)),await Hg(o,e,l,t,a),Ds(10,new Rr(o,e,r,l)),c(l)},l=>{n?.call(r,l)},l=>{console.error("failed loading "+e,l),c(void 0)})}catch(l){console.error(l),d(l)}})}El(Da);var Vn=P("debugwebcomponent"),Kh=class{id;context;previouslyAdded;previousSource;networkEvent;constructor(e,t){this.id=e,this.context=t,this.networkEvent="needle-engine-source-changed",this.id&&(this.networkEvent+="-"+this.id),this.context.connection.beginListen(this.networkEvent,i=>{this.onSourceChanged(i,!0)})}async onSourceChanged(e,t=!1,i=!1){this.previouslyAdded&&(t&&e===this.previousSource||R.destroySynced(this.previouslyAdded)),this.previouslyAdded=null,t||this.context.connection.send(this.networkEvent,e),this.previousSource=e,G.Current=this.context;let n=await qe().loadSync(this.context,e,this.getHashFromString(e),!1);i||gn(this.context);let r=n?.scene;r&&(this.previouslyAdded=r,this.context.scene.add(r))}getHashFromString(e){let t=0;for(let i=0;i<e.length;i++)t=e.charCodeAt(i)+((t<<5)-t);return t}},Hw="needle-engine",Fg="vr",Bg="desktop",Fw=[Bi,Fg,Bg],La="ar-session-active",ja="desktop-session-active",Jh=class extends HTMLElement{get loadingProgress01(){return this._loadingProgress01}get loadingFinished(){return this.loadingProgress01>.999}getContext(){return new Promise((e,t)=>{if(this._context&&this.loadingFinished)e(this._context);else{let i=()=>{this.removeEventListener("loadfinished",i),this._context&&this.loadingFinished&&e(this._context)};this.addEventListener("loadfinished",i)}})}get Context(){return this._context}gameObject=R;GameObject=R;_context=null;_overlay_ar;_loadingProgress01=0;_watcher;_loadingView;constructor(){super(),this._overlay_ar=new Ll}async connectedCallback(){this.onSetupDesktop();var e=new MutationObserver(this.onElementsChanged.bind(this));e.observe(this,{childList:!0});let t=()=>{let a=this.getAttribute("src");return a?.endsWith(".glb")||a?.endsWith(".gltf")?a:null},i="loadScene",n=t();n&&(i=n);let r=this.getAttribute("alias"),s=this.getAttribute("hash");if(this._context=new G({name:i,domElement:this,alias:r,hash:s??void 0}),this._watcher=new Kh(this.getAttribute("id")??r??"",this._context),i&&i.length>0){if(!n)for(;Object.keys(Dl).length<=0;){if(!this.isConnected)return;await vo(10)}let a=Dl[i]??window[i],c=null;if((!a||n)&&(n&&(i=n),a=async d=>{let l=t();l&&this._watcher&&(c=l,await this._watcher.onSourceChanged(l,!0,!0))}),a){this.classList.add("loading"),Vn&&console.log("Needle Engine: Begin loading",r??"");let d=!0,l=this.dispatchEvent(new CustomEvent("loadstart",{detail:{context:this._context,alias:r},cancelable:d}));!this._loadingView&&l&&(this._loadingView=new na(this)),l&&this._loadingView?.onLoadingBegin("begin load");let u=(g,E)=>{this._loadingProgress01=eu(g),l&&this._loadingView?.onLoadingUpdate(g,E),this.dispatchEvent(new CustomEvent("progress",{detail:{context:this._context,name:g.name,progress:g.progress,index:g.index,count:g.count,totalProgress01:this._loadingProgress01}}))};this.onBeforeBeginLoading(),await this._context.onCreate(a,{progress:u});let h=t();h&&h!==c&&await this._watcher.onSourceChanged(h,!0,!0),this._loadingProgress01=1,l&&this._loadingView?.onLoadingFinished("create scene"),this.classList.remove("loading"),this.classList.add("loading-finished"),Vn&&console.log("Needle Engine: finished loading",r??""),this.dispatchEvent(new CustomEvent("loadfinished",{detail:{context:this._context,src:r??i}})),this.onSetupDesktop()}else console.error('Could not find scene function named "'+i+'", it must be either in global scope or added to build_scene_functions',Dl)}else console.error("Missing src attribute - please provide a function name",this)}disconnectedCallback(){this._context&&this._context.onDestroy()}static get observedAttributes(){return["hash","src","loadstart","progress","loadfinished","dracoDecoderPath","dracoDecoderType","ktx2DecoderPath"]}attributeChangedCallback(e,t,i){switch(e){case"src":this._watcher?.onSourceChanged(i);break;case"loadstart":case"progress":case"loadfinished":typeof i=="string"&&i.length>0&&(Vn&&console.log(e+" attribute changed",i),this.registerEventFromAttribute(e,i));break;case"dracoDecoderPath":Vn&&console.log("dracoDecoderPath",i),iu(i);break;case"dracoDecoderType":i==="wasm"||i==="js"?(Vn&&console.log("dracoDecoderType",i),nu(i)):console.error("Invalid dracoDecoderType",i,"expected js or wasm");break;case"ktx2DecoderPath":Vn&&console.log("ktx2DecoderPath",i),ru(i);break}}registerEventFromAttribute(e,t){if(typeof t=="string"&&t.length>0){let i=(0,eval)(t);typeof i=="function"&&this.addEventListener(e,n=>i?.call(globalThis,this._context,n))}}getAROverlayContainer(){return this._overlay_ar.findOrCreateARContainer(this)}getVROverlayContainer(){for(let e=0;e<this.children.length;e++){let t=this.children[e];if(t.classList.contains("vr"))return t}return null}onEnterAR(e,t){this.onSetupAR(),this._overlay_ar.onBegin(this._context,t,e),this.dispatchEvent(new CustomEvent("enter-ar",{detail:{session:e,context:this._context,htmlContainer:this._overlay_ar?.ARContainer}}))}onExitAR(e){this._overlay_ar.onEnd(this._context),this.onSetupDesktop(),this.dispatchEvent(new CustomEvent("exit-ar",{detail:{session:e,context:this._context,htmlContainer:this._overlay_ar?.ARContainer}}))}onEnterVR(e){this.onSetupVR(),this.dispatchEvent(new CustomEvent("enter-vr",{detail:{session:e,context:this._context}}))}onExitVR(e){this.onSetupDesktop(),this.dispatchEvent(new CustomEvent("exit-vr",{detail:{session:e,context:this._context}}))}onElementsChanged(){}onSetupAR(){this.classList.add(La),this.classList.remove(ja);let e=this.getAROverlayContainer();e&&(e.classList.add(La),e.classList.remove(ja)),this.foreachHtmlElement(t=>this.setupElementsForMode(t,Bi))}onSetupVR(){this.classList.remove(La),this.classList.remove(ja),this.foreachHtmlElement(e=>this.setupElementsForMode(e,Fg))}onSetupDesktop(){this.classList.remove(La),this.classList.add(ja);let e=this.getAROverlayContainer();e&&(e.classList.remove(La),e.classList.add(ja)),this.foreachHtmlElement(t=>this.setupElementsForMode(t,Bg))}setupElementsForMode(e,t,i=null){if(e===this._context?.renderer.domElement||e.id==="VRButton"||e.id==="ARButton")return;if(e.style.position="absolute",e.classList.contains(t))e.style.visibility="visible",e.style.display==="none"&&(e.style.display="block");else for(let r of Fw)e.classList.contains(r)&&(e.style.visibility="hidden",e.style.display="none")}foreachHtmlElement(e){for(let t=0;t<this.children.length;t++){let i=this.children[t];i.style&&e(i)}}onBeforeBeginLoading(){let e=this.getAttribute("dracoDecoderPath");e&&(Vn&&console.log("using custom draco decoder path",e),iu(e));let t=this.getAttribute("dracoDecoderType");t&&(Vn&&console.log("using custom draco decoder type",t),nu(t));let i=this.getAttribute("ktx2DecoderPath");i&&(Vn&&console.log("using custom ktx2 decoder path",i),ru(i))}};window.customElements.define(Hw,Jh);import*as Bw from"three";Yf();var Zh={Context:G};globalThis.Needle=Zh;function Ug(o){for(let e in o)Zh[e]=o[e]}Ug($d);Ug(Xh);for(let o of Object.getOwnPropertyNames(R))switch(o){case"prototype":case"constructor":case"length":case"name":continue;default:Zh[o]=R[o];break}globalThis.THREE?console.warn("Threejs is already imported"):globalThis.THREE=Bw;export{$n as AlignmentConstraint,Ht as Animation,mi as AnimationCurve,er as AnimationExtension,tr as AnimationTrackHandler,Pe as Animator,pi as AnimatorController,et as AssetReference,gt as AttachedObject,gi as AudioListener,se as AudioSource,ir as AudioTrackHandler,Xi as AvatarBlink_Simple,Qi as AvatarEyeLook_Rotation,nr as AvatarLoader,le as AvatarMarker,qr as AvatarModel,Tn as Avatar_Brain_LookAt,lr as Avatar_MouthShapes,is as Avatar_MustacheShake,ye as Avatar_POI,kn as AxesHelper,Ve as BaseUIComponent,ns as BasicIKConstraint,M as Behaviour,ur as BoxCollider,yi as BoxGizmo,ze as BoxHelperComponent,qt as Button,bi as CallInfo,ee as Camera,We as Canvas,Dn as CanvasGroup,Nt as CapsuleCollider,qi as CharacterController,Ci as CharacterControllerInput,Xt as Collider,Xs as Collision,fr as ColorAdjustments,Ti as ColorBySpeedModule,Ln as ColorOverLifetimeModule,Cn as ControlTrackHandler,ds as Deletable,io as DeleteBox,no as DeviceFlag,Ki as DragControls,mr as DropListener,Ji as Duplicatable,yt as EmissionModule,ue as EventList,Nr as EventListEvent,Ye as EventSystem,ro as EventTrigger,hs as FieldWithDefault,fs as FixedJoint,ms as FlyControls,Ct as FrameEvent,R as GameObject,bn as Gizmos,$t as GltfExport,gs as GltfExportBox,Ri as Gradient,vt as Graphic,bs as GraphicRaycaster,Bn as GridHelper,_s as GridLayoutGroup,en as GroundProjectedEnv,jb as HideFlags,gr as HingeJoint,ys as HorizontalLayoutGroup,In as Image,Jt as InheritVelocityModule,Pt as InputField,oe as InstancingUtil,Ue as InstantiateOptions,Gt as Interactable,xs as Keyboard,br as LODGroup,tn as LODModel,Un as LayoutGroup,Xe as Light,de as LimitVelocityOverLifetimeModule,Es as LogStats,Us as LogType,Pn as LookAtConstraint,_e as MainModule,Mn as MaskableGraphic,Kr as MeshCollider,oo as MeshRenderer,U as MinMaxCurve,Me as MinMaxGradient,co as NestedGltf,Si as Networking,K as NoiseModule,ao as ObjectRaycaster,nn as OffsetConstraint,nt as OrbitControls,jn as ParticleBurst,vr as ParticleSubEmitter,ve as ParticleSystem,rn as ParticleSystemRenderer,wn as PlayableDirector,_t as PlayerColor,_i as PointerEventData,q as RGBAColor,$r as RawImage,so as Raycaster,Zr as Rect,bt as RectTransform,Zt as ReflectionProbe,zr as RegisteredAnimationInfo,Pi as RemoteSkybox,ae as Renderer,Fn as RendererLightmap,J as Rigidbody,Ne as RotationBySpeedModule,Ke as RotationOverLifetimeModule,xr as ScreenCapture,wr as ShadowCatcher,ne as ShapeModule,Xr as SignalAsset,xn as SignalReceiver,Qr as SignalReceiverEvent,En as SignalTrackHandler,os as Size,ke as SizeBySpeedModule,Kt as SizeOverLifetimeModule,ps as SkinnedMeshRenderer,Ot as SmoothFollow,Ss as SpatialHtml,Gn as SpatialTrigger,kt as SpatialTriggerReceiver,Ps as SpectatorCamera,dr as SphereCollider,ei as Sprite,on as SpriteRenderer,sn as SpriteSheet,yr as SubEmitterSystem,Cr as SyncedCamera,Oi as SyncedRoom,St as SyncedTransform,Yr as TeleportTarget,ks as TestRunner,Ms as TestSimulateUserData,Ie as Text,xe as TextureSheetAnimationModule,pr as ToneMapping,te as TrailModule,Wr as TransformData,ho as TransformGizmo,O as TypeStore,wi as UIRaycastUtils,On as UIRootComponent,Tr as USDZExporter,Vt as UsageMarker,Wt as VRUserState,He as VelocityOverLifetimeModule,vs as VerticalLayoutGroup,Te as VideoPlayer,it as Voip,to as Volume,Yi as VolumeComponent,ls as VolumeParameter,hr as VolumeProfile,ar as WebAR,ft as WebARSessionRoot,V as WebXR,Ut as WebXRAvatar,Z as WebXRController,Sn as WebXRSync,Ee as XRFlag,po as XRGrabModel,Is as XRGrabRendering,sr as XRRig,Rt as XRState,ka as __Ignore,Nn as addNewComponent,ko as apply,oi as destroy,nf as destroyComponentInstance,Ir as findByGuid,of as findObjectOfType,sf as findObjectsOfType,si as foreachComponent,Dr as getComponent,Lr as getComponentInChildren,So as getComponentInParent,Po as getComponents,Oo as getComponentsInChildren,Ys as getComponentsInParent,sl as getOrAddComponent,Ar as instantiate,lf as isActiveInHierarchy,mn as isActiveSelf,Ua as isDevEnvironment,cl as isUsingInstancing,cf as markAsInstancedRendered,tf as moveComponentInstance,ol as removeComponent,y as serializable,Uo as serializeable,Mo as setActive,Fe as showBalloonMessage,xo as showBalloonWarning,nd as showDebugConsole,ci as validate};
313
+ <a href="https://engine.needle.tools/docs/project_structure.html#creating-and-installing-a-npmdef" target="_blank">documentation</a>`,1)}}if(e.children)for(let r of e.children)await Yh(o,r,t,i)}function Hw(o,e){let{instance:t,compData:i,obj:n}=o;e.object=n,e.target=t;let r=!0;r=zs(t,i,e)===!0,Dg&&console.debug("add "+i.name,i,t)}var La=class{createBuiltinComponents(e,t,i,n,r){return jg(e,t,i,n,r)}writeBuiltinComponentData(e,t){return Lg(e,t)}parseSync(e,t,i,n){return Bw(e,t,i,n)}loadSync(e,t,i,n,r){return Uw(e,t,i,n,r)}};Cl(La);var Fw=P("printGltf");var Sr=class{context;loader;path;gltf;constructor(e,t,i,n){this.context=e,this.path=t,this.loader=i,this.gltf=n}},Hg={};function Ls(o,e){if(Hg[o])for(let t of Hg[o])t(e)}async function Bg(o,e,t,i,n){Fw&&console.log(t),await o.assets.registerGltf(t),await qe().createBuiltinComponents(o,e,t,i,n)}function Bw(o,e,t,i){typeof t!="string"&&console.warn("Parse gltf binary without path, this might lead to errors in resolving extensions. Please provide the source path of the gltf/glb file",t,typeof t);let n=new Fg;wd(n,o,t);let s=xd(n);return new Promise((a,c)=>{try{_n(n,o),Ls(0,new Sr(o,t,n)),n.parse(e,t,async u=>{Ls(1,new Sr(o,t,n,u)),await Bg(o,t,u,i,s),Ls(10,new Sr(o,t,n,u)),a(u)},u=>{console.error("failed loading "+t,u),a(void 0)})}catch(u){console.error(u),c(u)}})}function Uw(o,e,t,i=!1,n){let r=new Fg;wd(r,o,e);let a=xd(r);return new Promise((c,u)=>{try{_n(r,o),Ls(0,new Sr(o,e,r)),r.load(e,async l=>{Ls(1,new Sr(o,e,r,l)),await Bg(o,e,l,t,a),Ls(10,new Sr(o,e,r,l)),c(l)},l=>{n?.call(r,l)},l=>{console.error("failed loading "+e,l),c(void 0)})}catch(l){console.error(l),u(l)}})}Cl(La);var zn=P("debugwebcomponent"),Kh=class{id;context;previouslyAdded;previousSource;networkEvent;constructor(e,t){this.id=e,this.context=t,this.networkEvent="needle-engine-source-changed",this.id&&(this.networkEvent+="-"+this.id),this.context.connection.beginListen(this.networkEvent,i=>{this.onSourceChanged(i,!0)})}async onSourceChanged(e,t=!1,i=!1){this.previouslyAdded&&(t&&e===this.previousSource||R.destroySynced(this.previouslyAdded)),this.previouslyAdded=null,t||this.context.connection.send(this.networkEvent,e),this.previousSource=e,G.Current=this.context;let n=await qe().loadSync(this.context,e,this.getHashFromString(e),!1);i||bn(this.context);let r=n?.scene;r&&(this.previouslyAdded=r,this.context.scene.add(r))}getHashFromString(e){let t=0;for(let i=0;i<e.length;i++)t=e.charCodeAt(i)+((t<<5)-t);return t}},Gw="needle-engine",Ug="vr",Gg="desktop",Vw=[Ui,Ug,Gg],ja="ar-session-active",Ha="desktop-session-active",Jh=class extends HTMLElement{get loadingProgress01(){return this._loadingProgress01}get loadingFinished(){return this.loadingProgress01>.999}getContext(){return new Promise((e,t)=>{if(this._context&&this.loadingFinished)e(this._context);else{let i=()=>{this.removeEventListener("loadfinished",i),this._context&&this.loadingFinished&&e(this._context)};this.addEventListener("loadfinished",i)}})}get Context(){return this._context}gameObject=R;GameObject=R;_context=null;_overlay_ar;_loadingProgress01=0;_watcher;_loadingView;constructor(){super(),this._overlay_ar=new jl}async connectedCallback(){this.onSetupDesktop();var e=new MutationObserver(this.onElementsChanged.bind(this));e.observe(this,{childList:!0});let t=()=>{let a=this.getAttribute("src");return a?.endsWith(".glb")||a?.endsWith(".gltf")?a:null},i="loadScene",n=t();n&&(i=n);let r=this.getAttribute("alias"),s=this.getAttribute("hash");if(this._context=new G({name:i,domElement:this,alias:r,hash:s??void 0}),this._watcher=new Kh(this.getAttribute("id")??r??"",this._context),i&&i.length>0){if(!n)for(;Object.keys(Ll).length<=0;){if(!this.isConnected)return;await yo(10)}let a=Ll[i]??window[i],c=null;if((!a||n)&&(n&&(i=n),a=async u=>{let l=t();l&&this._watcher&&(c=l,await this._watcher.onSourceChanged(l,!0,!0))}),a){this.classList.add("loading"),zn&&console.log("Needle Engine: Begin loading",r??"");let u=!0,l=this.dispatchEvent(new CustomEvent("loadstart",{detail:{context:this._context,alias:r},cancelable:u}));!this._loadingView&&l&&(this._loadingView=new ra(this)),l&&this._loadingView?.onLoadingBegin("begin load");let d=(g,E)=>{this._loadingProgress01=td(g),l&&this._loadingView?.onLoadingUpdate(g,E),this.dispatchEvent(new CustomEvent("progress",{detail:{context:this._context,name:g.name,progress:g.progress,index:g.index,count:g.count,totalProgress01:this._loadingProgress01}}))};this.onBeforeBeginLoading(),await this._context.onCreate(a,{progress:d});let h=t();h&&h!==c&&await this._watcher.onSourceChanged(h,!0,!0),this._loadingProgress01=1,l&&this._loadingView?.onLoadingFinished("create scene"),this.classList.remove("loading"),this.classList.add("loading-finished"),zn&&console.log("Needle Engine: finished loading",r??""),this.dispatchEvent(new CustomEvent("loadfinished",{detail:{context:this._context,src:r??i}})),this.onSetupDesktop()}else console.error('Could not find scene function named "'+i+'", it must be either in global scope or added to build_scene_functions',Ll)}else console.error("Missing src attribute - please provide a function name",this)}disconnectedCallback(){this._context&&this._context.onDestroy()}static get observedAttributes(){return["hash","src","loadstart","progress","loadfinished","dracoDecoderPath","dracoDecoderType","ktx2DecoderPath"]}attributeChangedCallback(e,t,i){switch(e){case"src":this._watcher?.onSourceChanged(i);break;case"loadstart":case"progress":case"loadfinished":typeof i=="string"&&i.length>0&&(zn&&console.log(e+" attribute changed",i),this.registerEventFromAttribute(e,i));break;case"dracoDecoderPath":zn&&console.log("dracoDecoderPath",i),nd(i);break;case"dracoDecoderType":i==="wasm"||i==="js"?(zn&&console.log("dracoDecoderType",i),rd(i)):console.error("Invalid dracoDecoderType",i,"expected js or wasm");break;case"ktx2DecoderPath":zn&&console.log("ktx2DecoderPath",i),od(i);break}}registerEventFromAttribute(e,t){if(typeof t=="string"&&t.length>0){let i=(0,eval)(t);typeof i=="function"&&this.addEventListener(e,n=>i?.call(globalThis,this._context,n))}}getAROverlayContainer(){return this._overlay_ar.findOrCreateARContainer(this)}getVROverlayContainer(){for(let e=0;e<this.children.length;e++){let t=this.children[e];if(t.classList.contains("vr"))return t}return null}onEnterAR(e,t){this.onSetupAR(),this._overlay_ar.onBegin(this._context,t,e),this.dispatchEvent(new CustomEvent("enter-ar",{detail:{session:e,context:this._context,htmlContainer:this._overlay_ar?.ARContainer}}))}onExitAR(e){this._overlay_ar.onEnd(this._context),this.onSetupDesktop(),this.dispatchEvent(new CustomEvent("exit-ar",{detail:{session:e,context:this._context,htmlContainer:this._overlay_ar?.ARContainer}}))}onEnterVR(e){this.onSetupVR(),this.dispatchEvent(new CustomEvent("enter-vr",{detail:{session:e,context:this._context}}))}onExitVR(e){this.onSetupDesktop(),this.dispatchEvent(new CustomEvent("exit-vr",{detail:{session:e,context:this._context}}))}onElementsChanged(){}onSetupAR(){this.classList.add(ja),this.classList.remove(Ha);let e=this.getAROverlayContainer();e&&(e.classList.add(ja),e.classList.remove(Ha)),this.foreachHtmlElement(t=>this.setupElementsForMode(t,Ui))}onSetupVR(){this.classList.remove(ja),this.classList.remove(Ha),this.foreachHtmlElement(e=>this.setupElementsForMode(e,Ug))}onSetupDesktop(){this.classList.remove(ja),this.classList.add(Ha);let e=this.getAROverlayContainer();e&&(e.classList.remove(ja),e.classList.add(Ha)),this.foreachHtmlElement(t=>this.setupElementsForMode(t,Gg))}setupElementsForMode(e,t,i=null){if(e===this._context?.renderer.domElement||e.id==="VRButton"||e.id==="ARButton")return;if(e.style.position="absolute",e.classList.contains(t))e.style.visibility="visible",e.style.display==="none"&&(e.style.display="block");else for(let r of Vw)e.classList.contains(r)&&(e.style.visibility="hidden",e.style.display="none")}foreachHtmlElement(e){for(let t=0;t<this.children.length;t++){let i=this.children[t];i.style&&e(i)}}onBeforeBeginLoading(){let e=this.getAttribute("dracoDecoderPath");e&&(zn&&console.log("using custom draco decoder path",e),nd(e));let t=this.getAttribute("dracoDecoderType");t&&(zn&&console.log("using custom draco decoder type",t),rd(t));let i=this.getAttribute("ktx2DecoderPath");i&&(zn&&console.log("using custom ktx2 decoder path",i),od(i))}};window.customElements.define(Gw,Jh);import*as zw from"three";Jf();var Zh={Context:G};globalThis.Needle=Zh;function Vg(o){for(let e in o)Zh[e]=o[e]}Vg(ed);Vg(Xh);for(let o of Object.getOwnPropertyNames(R))switch(o){case"prototype":case"constructor":case"length":case"name":continue;default:Zh[o]=R[o];break}globalThis.THREE?console.warn("Threejs is already imported"):globalThis.THREE=zw;export{er as AlignmentConstraint,Bt as Animation,gi as AnimationCurve,tr as AnimationExtension,ir as AnimationTrackHandler,Pe as Animator,fi as AnimatorController,et as AssetReference,gt as AttachedObject,bi as AudioListener,se as AudioSource,nr as AudioTrackHandler,Qi as AvatarBlink_Simple,qi as AvatarEyeLook_Rotation,rr as AvatarLoader,le as AvatarMarker,Yr as AvatarModel,Rn as Avatar_Brain_LookAt,cr as Avatar_MouthShapes,ns as Avatar_MustacheShake,ye as Avatar_POI,Mn as AxesHelper,Ve as BaseUIComponent,rs as BasicIKConstraint,M as Behaviour,hr as BoxCollider,_i as BoxGizmo,ze as BoxHelperComponent,Yt as Button,vi as CallInfo,ee as Camera,We as Canvas,Ln as CanvasGroup,Qt as CapsuleCollider,Yi as CharacterController,Ti as CharacterControllerInput,Pt as Collider,Qs as Collision,mr as ColorAdjustments,Ri as ColorBySpeedModule,jn as ColorOverLifetimeModule,Tn as ControlTrackHandler,ds as Deletable,no as DeleteBox,ro as DeviceFlag,Ji as DragControls,gr as DropListener,Zi as Duplicatable,yt as EmissionModule,de as EventList,Xr as EventListEvent,Ye as EventSystem,oo as EventTrigger,ps as FieldWithDefault,ms as FixedJoint,gs as FlyControls,Ct as FrameEvent,R as GameObject,jt as Gizmos,ei as GltfExport,bs as GltfExportBox,Si as Gradient,vt as Graphic,vs as GraphicRaycaster,Un as GridHelper,xs as GridLayoutGroup,tn as GroundProjectedEnv,Fb as HideFlags,br as HingeJoint,_s as HorizontalLayoutGroup,An as Image,Zt as InheritVelocityModule,Ot as InputField,oe as InstancingUtil,Ue as InstantiateOptions,zt as Interactable,ws as Keyboard,vr as LODGroup,nn as LODModel,Gn as LayoutGroup,Xe as Light,ue as LimitVelocityOverLifetimeModule,Cs as LogStats,Gs as LogType,On as LookAtConstraint,_e as MainModule,In as MaskableGraphic,Jr as MeshCollider,so as MeshRenderer,U as MinMaxCurve,Me as MinMaxGradient,uo as NestedGltf,Pi as Networking,K as NoiseModule,lo as ObjectRaycaster,rn as OffsetConstraint,nt as OrbitControls,Hn as ParticleBurst,yr as ParticleSubEmitter,ve as ParticleSystem,on as ParticleSystemRenderer,En as PlayableDirector,_t as PlayerColor,xi as PointerEventData,q as RGBAColor,eo as RawImage,ao as Raycaster,$r as Rect,bt as RectTransform,$t as ReflectionProbe,Wr as RegisteredAnimationInfo,Oi as RemoteSkybox,ae as Renderer,Bn as RendererLightmap,J as Rigidbody,Ne as RotationBySpeedModule,Ke as RotationOverLifetimeModule,wr as ScreenCapture,Er as ShadowCatcher,ne as ShapeModule,Qr as SignalAsset,wn as SignalReceiver,qr as SignalReceiverEvent,Cn as SignalTrackHandler,ss as Size,ke as SizeBySpeedModule,Jt as SizeOverLifetimeModule,fs as SkinnedMeshRenderer,kt as SmoothFollow,Ps as SpatialHtml,Vn as SpatialTrigger,Mt as SpatialTriggerReceiver,Os as SpectatorCamera,dr as SphereCollider,ti as Sprite,sn as SpriteRenderer,an as SpriteSheet,_r as SubEmitterSystem,Tr as SyncedCamera,ki as SyncedRoom,St as SyncedTransform,Kr as TeleportTarget,Ms as TestRunner,Is as TestSimulateUserData,Ie as Text,xe as TextureSheetAnimationModule,fr as ToneMapping,te as TrailModule,Nr as TransformData,po as TransformGizmo,O as TypeStore,Ei as UIRaycastUtils,kn as UIRootComponent,Rr as USDZExporter,Wt as UsageMarker,Xt as VRUserState,He as VelocityOverLifetimeModule,ys as VerticalLayoutGroup,Te as VideoPlayer,it as Voip,io as Volume,Ki as VolumeComponent,cs as VolumeParameter,pr as VolumeProfile,lr as WebAR,ft as WebARSessionRoot,V as WebXR,Vt as WebXRAvatar,Z as WebXRController,Pn as WebXRSync,Ee as XRFlag,fo as XRGrabModel,As as XRGrabRendering,ar as XRRig,Rt as XRState,Ma as __Ignore,Xn as addNewComponent,Mo as apply,si as destroy,nf as destroyComponentInstance,Ar as findByGuid,of as findObjectOfType,sf as findObjectsOfType,ai as foreachComponent,Lr as getComponent,jr as getComponentInChildren,Po as getComponentInParent,Oo as getComponents,ko as getComponentsInChildren,Ks as getComponentsInParent,al as getOrAddComponent,Dr as instantiate,lf as isActiveInHierarchy,gn as isActiveSelf,Ga as isDevEnvironment,ul as isUsingInstancing,cf as markAsInstancedRendered,tf as moveComponentInstance,sl as removeComponent,y as serializable,Go as serializeable,Io as setActive,Fe as showBalloonMessage,wo as showBalloonWarning,ru as showDebugConsole,ui as validate};
314
314
  /*!
315
315
  * Determine if an object is a Buffer
316
316
  *