@abi-software/scaffoldvuer 1.4.0 → 1.4.1

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.
@@ -31302,7 +31302,7 @@ const Wz = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
31302
31302
  /* 2 */
31303
31303
  /***/
31304
31304
  (o) => {
31305
- o.exports = /* @__PURE__ */ JSON.parse('{"name":"zincjs","version":"1.11.1","description":"ZincJS (Web-based-Zinc-Visualisation)","main":"build/zinc.js","directories":{"doc":"docs"},"files":["package.json","LICENSE","README.md","src/*","build/zinc.js","build/zinc.frontend.js","build/zinc.js.map","webpack.config.js"],"scripts":{"build-bundle":"webpack --config webpack.frontend.js; webpack --config webpack.backend.js","build-backend":"webpack --config webpack.backend.js","test":"npm --prefix ./test install && npm --prefix ./test run test-ci","changelog":"auto-changelog -p --output CHANGELOG.md --template keepachangelog","jsdoc":"jsdoc -c jsdoc_conf.json","version":"npm run build-bundle;npm run jsdoc;npm run changelog; git add CHANGELOG.md docs","release:beta":"npm version prerelease --preid=beta; npm publish --tag beta","release:minor":"npm version minor; npm publish","release:patch":"npm version patch; npm publish"},"repository":{"type":"git","url":"git+https://github.com/alan-wu/ZincJS.git"},"keywords":["library","webgl","3d","zincjs"],"author":"Alan Wu <alan.wu@auckland.ac.nz>","license":"MIT","bugs":{"url":"https://github.com/alan-wu/ZincJS/issues"},"homepage":"http://alan-wu.github.io/ZincJS/","devDependencies":{"@babel/core":"^7.23.9","@babel/preset-env":"^7.23.9","auto-changelog":"^2.4.0","babel-loader":"^9.1.3","babel-preset-minify":"^0.5.1","file-loader":"^6.2.0","jsdoc":"^4.0.2","raw-loader":"^4.0.2","webpack":"^5.90.3","webpack-cli":"^5.1.4","webpack-node-externals":"^3.0.0"},"dependencies":{"css-element-queries":"^1.2.2","lodash":"^4.17.19","promise-polyfill":"^8.1.3","three":"^0.130.1","three-spritetext":"1.6.2","url-loader":"^4.1.1","url-polyfill":"^1.1.7","webworkify-webpack":"^2.1.5"}}');
31305
+ o.exports = /* @__PURE__ */ JSON.parse('{"name":"zincjs","version":"1.11.4","description":"ZincJS (Web-based-Zinc-Visualisation)","main":"build/zinc.js","directories":{"doc":"docs"},"files":["package.json","LICENSE","README.md","src/*","build/zinc.js","build/zinc.frontend.js","build/zinc.js.map","webpack.config.js"],"scripts":{"build-bundle":"webpack --config webpack.frontend.js; webpack --config webpack.backend.js","build-backend":"webpack --config webpack.backend.js","test":"npm --prefix ./test install && npm --prefix ./test run test-ci","changelog":"auto-changelog -p --output CHANGELOG.md --template keepachangelog","jsdoc":"jsdoc -c jsdoc_conf.json","version":"npm run build-bundle;npm run jsdoc;npm run changelog; git add CHANGELOG.md docs","release:beta":"npm version prerelease --preid=beta; npm publish --tag beta","release:minor":"npm version minor; npm publish","release:patch":"npm version patch; npm publish"},"repository":{"type":"git","url":"git+https://github.com/alan-wu/ZincJS.git"},"keywords":["library","webgl","3d","zincjs"],"author":"Alan Wu <alan.wu@auckland.ac.nz>","license":"MIT","bugs":{"url":"https://github.com/alan-wu/ZincJS/issues"},"homepage":"http://alan-wu.github.io/ZincJS/","devDependencies":{"@babel/core":"^7.23.9","@babel/preset-env":"^7.23.9","auto-changelog":"^2.4.0","babel-loader":"^9.1.3","babel-preset-minify":"^0.5.1","file-loader":"^6.2.0","jsdoc":"^4.0.2","raw-loader":"^4.0.2","webpack":"^5.90.3","webpack-cli":"^5.1.4","webpack-node-externals":"^3.0.0"},"dependencies":{"css-element-queries":"^1.2.2","lodash":"^4.17.19","promise-polyfill":"^8.1.3","three":"^0.130.1","three-spritetext":"1.6.2","url-loader":"^4.1.1","url-polyfill":"^1.1.7","webworkify-webpack":"^2.1.5"}}');
31306
31306
  },
31307
31307
  /* 3 */
31308
31308
  /***/
@@ -31496,7 +31496,7 @@ const Wz = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
31496
31496
  }
31497
31497
  function M(b, S, E, L, A, C) {
31498
31498
  var P = new p(b, S, E, L, A, C);
31499
- return P.material.sizeAttenuation = !1, P.material.alphaTest = 0.5, P.material.transparent = !0, P.material.depthWrite = !1, P.material.depthTest = !1, P.center.set(0.5, -1.2), P.renderOrder = 1e4, P;
31499
+ return P.fontFace = L, P.fontSize = A, P.fontWeight = C, P.material.map.generateMipmaps = !1, P.material.map.anisotropy = 4, P.material.sizeAttenuation = !1, P.material.alphaTest = 0.5, P.material.transparent = !0, P.material.depthWrite = !1, P.material.depthTest = !1, P.center.set(0.5, -1.2), P.renderOrder = 1e4, P;
31500
31500
  }
31501
31501
  a.getBoundingBox = u, a.createNewURL = f, a.createBufferGeometry = _, a.getCircularTexture = T, a.resolveURL = g, a.loadExternalFile = y, a.loadExternalFiles = v, a.PhongToToon = x, a.createNewSpriteText = M;
31502
31502
  },
@@ -32437,9 +32437,9 @@ const Wz = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
32437
32437
  }, this.setSpriteSize = (A) => {
32438
32438
  v.scale.set(0.015, 0.02, 1), v.scale.multiplyScalar(A);
32439
32439
  }, this.setUserSprite = () => {
32440
- M && _ && (this.morph.add(_), this.morph.remove(v), E && this.morph.remove(E), M = !1);
32440
+ _ && (this.morph.add(_), M && (this.morph.remove(v), E && this.morph.remove(E), M = !1));
32441
32441
  }, this.setImageForUserSprite = (A, C) => {
32442
- _ && (this.morph.remove(_), _.dispose()), m && m.dispose(), x && x.dispose(), m = new l.Texture(), m.image = A, m.needsUpdate = !0, x = new l.SpriteMaterial({ map: m, alphaTest: 0.5, transparent: !0, depthTest: !1, depthWrite: !1, sizeAttenuation: !1 }), C || (C = [0.05, 0.05, 1]), _ = new l.Sprite(x), _.center.set(0.5, 0), _.scale.set(C[0], C[1], C[2]), _.userData = this, this.setUserSprite();
32442
+ _ && (this.morph.remove(_), _ = void 0), m && m.dispose(), x && x.dispose(), m = new l.Texture(), m.image = A, m.needsUpdate = !0, x = new l.SpriteMaterial({ map: m, alphaTest: 0.5, transparent: !0, depthTest: !1, depthWrite: !1, sizeAttenuation: !1 }), C || (C = [0.05, 0.05, 1]), _ = new l.Sprite(x), _.center.set(0.5, 0), _.scale.set(C[0], C[1], C[2]), _.userData = this, this.setUserSprite();
32443
32443
  }, this.setDefaultSprite = () => {
32444
32444
  M || (M = !0, this.morph.add(v), _ && this.morph.remove(_), E && this.morph.add(E));
32445
32445
  }, this.loadUserSprite = (A, C) => {
@@ -32453,7 +32453,7 @@ const Wz = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
32453
32453
  }, this.dispose = () => {
32454
32454
  this.morph && this.morph.clear(), v && (v.clear(), v = void 0), E && (E.material.map.dispose(), E.material.dispose(), E = void 0);
32455
32455
  }, this.isEnabled = () => b, this.setNumber = (A) => {
32456
- (!A || S != A) && E && (this.morph.remove(E), E.material.map.dispose(), E.material.dispose(), E = void 0), !E && A && (E = f(A, 0.012, "black", "Asap", 50, 500), this.morph.add(E)), S = A;
32456
+ (!A || S != A) && E && (this.morph.remove(E), E.material.map.dispose(), E.material.dispose(), E = void 0), !E && A && (E = f(A, 0.012, "black", "Asap", 120, 700), this.morph.add(E)), S = A;
32457
32457
  }, this.getNumber = () => S || 1, this.setVisibility = function(A) {
32458
32458
  A !== this.visible && (this.visible = A, this.group.visible = A, this.parent.region && (this.parent.region.pickableUpdateRequired = !0));
32459
32459
  }, this.enable = () => {
@@ -32502,7 +32502,7 @@ const Wz = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
32502
32502
  var l = c(7).default;
32503
32503
  a.Label = function(d, h) {
32504
32504
  var p = d, g = void 0;
32505
- g = h ? new l(p, 0.015, h.getStyle()) : new l(p, 0.015), g.material.sizeAttenuation = !1, g.center.x = -0.05, g.center.y = 0, this.getPosition = () => g ? [g.position.x, g.position.y, g.position.z] : [0, 0, 0], this.setPosition = (f, u, y) => {
32505
+ g = h ? new l(p, 0.015, h.getStyle()) : new l(p, 0.015), g.fontFace = "Asap", g.fontWeight = 700, g.material.map.generateMipmaps = !1, g.material.sizeAttenuation = !1, g.center.x = -0.05, g.center.y = 0, this.getPosition = () => g ? [g.position.x, g.position.y, g.position.z] : [0, 0, 0], this.setPosition = (f, u, y) => {
32506
32506
  g && g.position.set(f, u, y);
32507
32507
  }, this.setColour = (f) => {
32508
32508
  g.color = f.getStyle();
@@ -33925,7 +33925,7 @@ void main() {
33925
33925
  var R = new f.Group(), N = new f.Sprite(m);
33926
33926
  return N.clusterIndex = w, N.center.set(0.5, 0), N.position.set(0, 0, 0), N.renderOrder = 1e4, N.scale.set(v[0], v[1], v[2]), N.userData = this, R.add(N), this.group.add(R), { group: R, marker: N, label: void 0, number: 0, min: [0, 0, 0], max: [1, 1, 1] };
33927
33927
  }, P = (w, R, N) => {
33928
- w.group.visible = !0, w.group.position.set(R.coords[0], R.coords[1], R.coords[2]), (w.label === void 0 || N !== w.number) && (w.label && (w.group.remove(w.label), w.label.material.map.dispose(), w.label.material.dispose()), w.label = x(N, 0.012, "black", "Asap", 50, 500), w.number = N, w.group.add(w.label)), w.min = R.min, w.max = R.max;
33928
+ w.group.visible = !0, w.group.position.set(R.coords[0], R.coords[1], R.coords[2]), (w.label === void 0 || N !== w.number) && (w.label && (w.group.remove(w.label), w.label.material.map.dispose(), w.label.material.dispose()), w.label = x(N, 0.012, "black", "Asap", 120, 700), w.number = N, w.group.add(w.label)), w.min = R.min, w.max = R.max;
33929
33929
  }, I = (w) => {
33930
33930
  var R = 0;
33931
33931
  for (w.forEach((N) => {
@@ -3179,9 +3179,9 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
3179
3179
  `),s=["float glossinessFactor = glossiness;","#ifdef USE_GLOSSINESSMAP"," vec4 texelGlossiness = texture2D( glossinessMap, vUv );"," // reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture"," glossinessFactor *= texelGlossiness.a;","#endif"].join(`
3180
3180
  `),o=["PhysicalMaterial material;","material.diffuseColor = diffuseColor.rgb * ( 1. - max( specularFactor.r, max( specularFactor.g, specularFactor.b ) ) );","vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );","material.specularRoughness = max( 1.0 - glossinessFactor, 0.0525 ); // 0.0525 corresponds to the base mip of a 256 cubemap.","material.specularRoughness += geometryRoughness;","material.specularRoughness = min( material.specularRoughness, 1.0 );","material.specularColor = specularFactor;"].join(`
3181
3181
  `),l={specular:{value:new Ce().setHex(16777215)},glossiness:{value:1},specularMap:{value:null},glossinessMap:{value:null}};this._extraUniforms=l,this.onBeforeCompile=function(u){for(const c in l)u.uniforms[c]=l[c];u.fragmentShader=u.fragmentShader.replace("uniform float roughness;","uniform vec3 specular;").replace("uniform float metalness;","uniform float glossiness;").replace("#include <roughnessmap_pars_fragment>",t).replace("#include <metalnessmap_pars_fragment>",i).replace("#include <roughnessmap_fragment>",r).replace("#include <metalnessmap_fragment>",s).replace("#include <lights_physical_fragment>",o)},Object.defineProperties(this,{specular:{get:function(){return l.specular.value},set:function(u){l.specular.value=u}},specularMap:{get:function(){return l.specularMap.value},set:function(u){l.specularMap.value=u,u?this.defines.USE_SPECULARMAP="":delete this.defines.USE_SPECULARMAP}},glossiness:{get:function(){return l.glossiness.value},set:function(u){l.glossiness.value=u}},glossinessMap:{get:function(){return l.glossinessMap.value},set:function(u){l.glossinessMap.value=u,u?(this.defines.USE_GLOSSINESSMAP="",this.defines.USE_UV=""):(delete this.defines.USE_GLOSSINESSMAP,delete this.defines.USE_UV)}}}),delete this.metalness,delete this.roughness,delete this.metalnessMap,delete this.roughnessMap,this.setValues(e)}copy(e){return super.copy(e),this.specularMap=e.specularMap,this.specular.copy(e.specular),this.glossinessMap=e.glossinessMap,this.glossiness=e.glossiness,delete this.metalness,delete this.roughness,delete this.metalnessMap,delete this.roughnessMap,this}}class QB{constructor(){this.name=it.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS,this.specularGlossinessParams=["color","map","lightMap","lightMapIntensity","aoMap","aoMapIntensity","emissive","emissiveIntensity","emissiveMap","bumpMap","bumpScale","normalMap","normalMapType","displacementMap","displacementScale","displacementBias","specularMap","specular","glossinessMap","glossiness","alphaMap","envMap","envMapIntensity","refractionRatio"]}getMaterialType(){return Cf}extendParams(e,t,i){const r=t.extensions[this.name];e.color=new Ce(1,1,1),e.opacity=1;const s=[];if(Array.isArray(r.diffuseFactor)){const o=r.diffuseFactor;e.color.fromArray(o),e.opacity=o[3]}if(r.diffuseTexture!==void 0&&s.push(i.assignTexture(e,"map",r.diffuseTexture)),e.emissive=new Ce(0,0,0),e.glossiness=r.glossinessFactor!==void 0?r.glossinessFactor:1,e.specular=new Ce(1,1,1),Array.isArray(r.specularFactor)&&e.specular.fromArray(r.specularFactor),r.specularGlossinessTexture!==void 0){const o=r.specularGlossinessTexture;s.push(i.assignTexture(e,"glossinessMap",o)),s.push(i.assignTexture(e,"specularMap",o))}return Promise.all(s)}createMaterial(e){const t=new Cf(e);return t.fog=!0,t.color=e.color,t.map=e.map===void 0?null:e.map,t.lightMap=null,t.lightMapIntensity=1,t.aoMap=e.aoMap===void 0?null:e.aoMap,t.aoMapIntensity=1,t.emissive=e.emissive,t.emissiveIntensity=1,t.emissiveMap=e.emissiveMap===void 0?null:e.emissiveMap,t.bumpMap=e.bumpMap===void 0?null:e.bumpMap,t.bumpScale=1,t.normalMap=e.normalMap===void 0?null:e.normalMap,t.normalMapType=rr,e.normalScale&&(t.normalScale=e.normalScale),t.displacementMap=null,t.displacementScale=1,t.displacementBias=0,t.specularMap=e.specularMap===void 0?null:e.specularMap,t.specular=e.specular,t.glossinessMap=e.glossinessMap===void 0?null:e.glossinessMap,t.glossiness=e.glossiness,t.alphaMap=null,t.envMap=e.envMap===void 0?null:e.envMap,t.envMapIntensity=1,t.refractionRatio=.98,t}}class eF{constructor(){this.name=it.KHR_MESH_QUANTIZATION}}class Eo extends si{constructor(e,t,i,r){super(e,t,i,r)}copySampleValue_(e){const t=this.resultBuffer,i=this.sampleValues,r=this.valueSize,s=e*r*3+r;for(let o=0;o!==r;o++)t[o]=i[s+o];return t}}Eo.prototype.beforeStart_=Eo.prototype.copySampleValue_,Eo.prototype.afterEnd_=Eo.prototype.copySampleValue_,Eo.prototype.interpolate_=function(n,e,t,i){const r=this.resultBuffer,s=this.sampleValues,o=this.valueSize,l=o*2,u=o*3,c=i-e,f=(t-e)/c,h=f*f,m=h*f,y=n*u,p=y-u,d=-2*m+3*h,b=m-h,v=1-d,g=b-h+f;for(let w=0;w!==o;w++){const _=s[p+w+o],E=s[p+w+l]*c,S=s[y+w+o],x=s[y+w]*c;r[w]=v*_+g*E+d*S+b*x}return r};const Vi={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},ka={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},yx={9728:Rt,9729:Mt,9984:Ko,9985:Ul,9986:Qo,9987:Ti},vx={33071:Gt,33648:Ps,10497:ir},bx={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Af={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv2",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},Mr={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},tF={CUBICSPLINE:void 0,LINEAR:Vr,STEP:Ns},Rf={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function xx(n,e){return typeof n!="string"||n===""?"":(/^https?:\/\//i.test(e)&&/^\//.test(n)&&(e=e.replace(/(^https?:\/\/[^\/]+).*/i,"$1")),/^(https?:)?\/\//i.test(n)||/^data:.*,.*$/i.test(n)||/^blob:.*$/i.test(n)?n:e+n)}function nF(n){return n.DefaultMaterial===void 0&&(n.DefaultMaterial=new Kr({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:er})),n.DefaultMaterial}function za(n,e,t){for(const i in t.extensions)n[i]===void 0&&(e.userData.gltfExtensions=e.userData.gltfExtensions||{},e.userData.gltfExtensions[i]=t.extensions[i])}function cs(n,e){e.extras!==void 0&&(typeof e.extras=="object"?Object.assign(n.userData,e.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+e.extras))}function iF(n,e,t){let i=!1,r=!1;for(let l=0,u=e.length;l<u;l++){const c=e[l];if(c.POSITION!==void 0&&(i=!0),c.NORMAL!==void 0&&(r=!0),i&&r)break}if(!i&&!r)return Promise.resolve(n);const s=[],o=[];for(let l=0,u=e.length;l<u;l++){const c=e[l];if(i){const f=c.POSITION!==void 0?t.getDependency("accessor",c.POSITION):n.attributes.position;s.push(f)}if(r){const f=c.NORMAL!==void 0?t.getDependency("accessor",c.NORMAL):n.attributes.normal;o.push(f)}}return Promise.all([Promise.all(s),Promise.all(o)]).then(function(l){const u=l[0],c=l[1];return i&&(n.morphAttributes.position=u),r&&(n.morphAttributes.normal=c),n.morphTargetsRelative=!0,n})}function rF(n,e){if(n.updateMorphTargets(),e.weights!==void 0)for(let t=0,i=e.weights.length;t<i;t++)n.morphTargetInfluences[t]=e.weights[t];if(e.extras&&Array.isArray(e.extras.targetNames)){const t=e.extras.targetNames;if(n.morphTargetInfluences.length===t.length){n.morphTargetDictionary={};for(let i=0,r=t.length;i<r;i++)n.morphTargetDictionary[t[i]]=i}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function sF(n){const e=n.extensions&&n.extensions[it.KHR_DRACO_MESH_COMPRESSION];let t;return e?t="draco:"+e.bufferView+":"+e.indices+":"+wx(e.attributes):t=n.indices+":"+wx(n.attributes)+":"+n.mode,t}function wx(n){let e="";const t=Object.keys(n).sort();for(let i=0,r=t.length;i<r;i++)e+=t[i]+":"+n[t[i]]+";";return e}function Lf(n){switch(n){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}class oF{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new GB,this.associations=new Map,this.primitiveCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.textureCache={},this.nodeNamesUsed={},typeof createImageBitmap<"u"&&/Firefox/.test(navigator.userAgent)===!1?this.textureLoader=new df(this.options.manager):this.textureLoader=new tf(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new Sn(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const i=this,r=this.json,s=this.extensions;this.cache.removeAll(),this._invokeAll(function(o){return o._markDefs&&o._markDefs()}),Promise.all(this._invokeAll(function(o){return o.beforeRoot&&o.beforeRoot()})).then(function(){return Promise.all([i.getDependencies("scene"),i.getDependencies("animation"),i.getDependencies("camera")])}).then(function(o){const l={scene:o[0][r.scene||0],scenes:o[0],animations:o[1],cameras:o[2],asset:r.asset,parser:i,userData:{}};za(s,l,r),cs(l,r),Promise.all(i._invokeAll(function(u){return u.afterRoot&&u.afterRoot(l)})).then(function(){e(l)})}).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],i=this.json.meshes||[];for(let r=0,s=t.length;r<s;r++){const o=t[r].joints;for(let l=0,u=o.length;l<u;l++)e[o[l]].isBone=!0}for(let r=0,s=e.length;r<s;r++){const o=e[r];o.mesh!==void 0&&(this._addNodeRef(this.meshCache,o.mesh),o.skin!==void 0&&(i[o.mesh].isSkinnedMesh=!0)),o.camera!==void 0&&this._addNodeRef(this.cameraCache,o.camera)}}_addNodeRef(e,t){t!==void 0&&(e.refs[t]===void 0&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,i){if(e.refs[t]<=1)return i;const r=i.clone();return r.name+="_instance_"+e.uses[t]++,r}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let i=0;i<t.length;i++){const r=e(t[i]);if(r)return r}return null}_invokeAll(e){const t=Object.values(this.plugins);t.unshift(this);const i=[];for(let r=0;r<t.length;r++){const s=e(t[r]);s&&i.push(s)}return i}getDependency(e,t){const i=e+":"+t;let r=this.cache.get(i);if(!r){switch(e){case"scene":r=this.loadScene(t);break;case"node":r=this.loadNode(t);break;case"mesh":r=this._invokeOne(function(s){return s.loadMesh&&s.loadMesh(t)});break;case"accessor":r=this.loadAccessor(t);break;case"bufferView":r=this._invokeOne(function(s){return s.loadBufferView&&s.loadBufferView(t)});break;case"buffer":r=this.loadBuffer(t);break;case"material":r=this._invokeOne(function(s){return s.loadMaterial&&s.loadMaterial(t)});break;case"texture":r=this._invokeOne(function(s){return s.loadTexture&&s.loadTexture(t)});break;case"skin":r=this.loadSkin(t);break;case"animation":r=this.loadAnimation(t);break;case"camera":r=this.loadCamera(t);break;default:throw new Error("Unknown type: "+e)}this.cache.add(i,r)}return r}getDependencies(e){let t=this.cache.get(e);if(!t){const i=this,r=this.json[e+(e==="mesh"?"es":"s")]||[];t=Promise.all(r.map(function(s,o){return i.getDependency(e,o)})),this.cache.add(e,t)}return t}loadBuffer(e){const t=this.json.buffers[e],i=this.fileLoader;if(t.type&&t.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");if(t.uri===void 0&&e===0)return Promise.resolve(this.extensions[it.KHR_BINARY_GLTF].body);const r=this.options;return new Promise(function(s,o){i.load(xx(t.uri,r.path),s,void 0,function(){o(new Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))})})}loadBufferView(e){const t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then(function(i){const r=t.byteLength||0,s=t.byteOffset||0;return i.slice(s,s+r)})}loadAccessor(e){const t=this,i=this.json,r=this.json.accessors[e];if(r.bufferView===void 0&&r.sparse===void 0)return Promise.resolve(null);const s=[];return r.bufferView!==void 0?s.push(this.getDependency("bufferView",r.bufferView)):s.push(null),r.sparse!==void 0&&(s.push(this.getDependency("bufferView",r.sparse.indices.bufferView)),s.push(this.getDependency("bufferView",r.sparse.values.bufferView))),Promise.all(s).then(function(o){const l=o[0],u=bx[r.type],c=ka[r.componentType],f=c.BYTES_PER_ELEMENT,h=f*u,m=r.byteOffset||0,y=r.bufferView!==void 0?i.bufferViews[r.bufferView].byteStride:void 0,p=r.normalized===!0;let d,b;if(y&&y!==h){const v=Math.floor(m/y),g="InterleavedBuffer:"+r.bufferView+":"+r.componentType+":"+v+":"+r.count;let w=t.cache.get(g);w||(d=new c(l,v*y,r.count*y/f),w=new mr(d,y/f),t.cache.add(g,w)),b=new Bi(w,u,m%y/f,p)}else l===null?d=new c(r.count*u):d=new c(l,m,r.count*u),b=new He(d,u,p);if(r.sparse!==void 0){const v=bx.SCALAR,g=ka[r.sparse.indices.componentType],w=r.sparse.indices.byteOffset||0,_=r.sparse.values.byteOffset||0,E=new g(o[1],w,r.sparse.count*v),S=new c(o[2],_,r.sparse.count*u);l!==null&&(b=new He(b.array.slice(),b.itemSize,b.normalized));for(let x=0,T=E.length;x<T;x++){const C=E[x];if(b.setX(C,S[x*u]),u>=2&&b.setY(C,S[x*u+1]),u>=3&&b.setZ(C,S[x*u+2]),u>=4&&b.setW(C,S[x*u+3]),u>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return b})}loadTexture(e){const t=this.json,i=this.options,r=t.textures[e],s=t.images[r.source];let o=this.textureLoader;if(s.uri){const l=i.manager.getHandler(s.uri);l!==null&&(o=l)}return this.loadTextureImage(e,s,o)}loadTextureImage(e,t,i){const r=this,s=this.json,o=this.options,l=s.textures[e],u=(t.uri||t.bufferView)+":"+l.sampler;if(this.textureCache[u])return this.textureCache[u];const c=self.URL||self.webkitURL;let f=t.uri||"",h=!1,m=!0;const y=f.search(/\.jpe?g($|\?)/i)>0||f.search(/^data\:image\/jpeg/)===0;if((t.mimeType==="image/jpeg"||y)&&(m=!1),t.bufferView!==void 0)f=r.getDependency("bufferView",t.bufferView).then(function(d){if(t.mimeType==="image/png"){const v=new DataView(d,25,1).getUint8(0,!1);m=v===6||v===4||v===3}h=!0;const b=new Blob([d],{type:t.mimeType});return f=c.createObjectURL(b),f});else if(t.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const p=Promise.resolve(f).then(function(d){return new Promise(function(b,v){let g=b;i.isImageBitmapLoader===!0&&(g=function(w){const _=new Lt(w);_.needsUpdate=!0,b(_)}),i.load(xx(d,o.path),g,void 0,v)})}).then(function(d){h===!0&&c.revokeObjectURL(f),d.flipY=!1,l.name&&(d.name=l.name),m||(d.format=Ci);const v=(s.samplers||{})[l.sampler]||{};return d.magFilter=yx[v.magFilter]||Mt,d.minFilter=yx[v.minFilter]||Ti,d.wrapS=vx[v.wrapS]||ir,d.wrapT=vx[v.wrapT]||ir,r.associations.set(d,{type:"textures",index:e}),d}).catch(function(){return console.error("THREE.GLTFLoader: Couldn't load texture",f),null});return this.textureCache[u]=p,p}assignTexture(e,t,i){const r=this;return this.getDependency("texture",i.index).then(function(s){if(i.texCoord!==void 0&&i.texCoord!=0&&!(t==="aoMap"&&i.texCoord==1)&&console.warn("THREE.GLTFLoader: Custom UV set "+i.texCoord+" for texture "+t+" not yet supported."),r.extensions[it.KHR_TEXTURE_TRANSFORM]){const o=i.extensions!==void 0?i.extensions[it.KHR_TEXTURE_TRANSFORM]:void 0;if(o){const l=r.associations.get(s);s=r.extensions[it.KHR_TEXTURE_TRANSFORM].extendTexture(s,o),r.associations.set(s,l)}}e[t]=s})}assignFinalMaterial(e){const t=e.geometry;let i=e.material;const r=t.attributes.tangent!==void 0,s=t.attributes.color!==void 0,o=t.attributes.normal===void 0,l=Object.keys(t.morphAttributes).length>0,u=l&&t.morphAttributes.normal!==void 0;if(e.isPoints){const c="PointsMaterial:"+i.uuid;let f=this.cache.get(c);f||(f=new gr,Ft.prototype.copy.call(f,i),f.color.copy(i.color),f.map=i.map,f.sizeAttenuation=!1,this.cache.add(c,f)),i=f}else if(e.isLine){const c="LineBasicMaterial:"+i.uuid;let f=this.cache.get(c);f||(f=new zt,Ft.prototype.copy.call(f,i),f.color.copy(i.color),this.cache.add(c,f)),i=f}if(r||s||o||l){let c="ClonedMaterial:"+i.uuid+":";i.isGLTFSpecularGlossinessMaterial&&(c+="specular-glossiness:"),r&&(c+="vertex-tangents:"),s&&(c+="vertex-colors:"),o&&(c+="flat-shading:"),l&&(c+="morph-targets:"),u&&(c+="morph-normals:");let f=this.cache.get(c);f||(f=i.clone(),s&&(f.vertexColors=!0),o&&(f.flatShading=!0),l&&(f.morphTargets=!0),u&&(f.morphNormals=!0),r&&(f.vertexTangents=!0,f.normalScale&&(f.normalScale.y*=-1),f.clearcoatNormalScale&&(f.clearcoatNormalScale.y*=-1)),this.cache.add(c,f),this.associations.set(f,this.associations.get(i))),i=f}i.aoMap&&t.attributes.uv2===void 0&&t.attributes.uv!==void 0&&t.setAttribute("uv2",t.attributes.uv),e.material=i}getMaterialType(){return Kr}loadMaterial(e){const t=this,i=this.json,r=this.extensions,s=i.materials[e];let o;const l={},u=s.extensions||{},c=[];if(u[it.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS]){const h=r[it.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS];o=h.getMaterialType(),c.push(h.extendParams(l,s,t))}else if(u[it.KHR_MATERIALS_UNLIT]){const h=r[it.KHR_MATERIALS_UNLIT];o=h.getMaterialType(),c.push(h.extendParams(l,s,t))}else{const h=s.pbrMetallicRoughness||{};if(l.color=new Ce(1,1,1),l.opacity=1,Array.isArray(h.baseColorFactor)){const m=h.baseColorFactor;l.color.fromArray(m),l.opacity=m[3]}h.baseColorTexture!==void 0&&c.push(t.assignTexture(l,"map",h.baseColorTexture)),l.metalness=h.metallicFactor!==void 0?h.metallicFactor:1,l.roughness=h.roughnessFactor!==void 0?h.roughnessFactor:1,h.metallicRoughnessTexture!==void 0&&(c.push(t.assignTexture(l,"metalnessMap",h.metallicRoughnessTexture)),c.push(t.assignTexture(l,"roughnessMap",h.metallicRoughnessTexture))),o=this._invokeOne(function(m){return m.getMaterialType&&m.getMaterialType(e)}),c.push(Promise.all(this._invokeAll(function(m){return m.extendMaterialParams&&m.extendMaterialParams(e,l)})))}s.doubleSided===!0&&(l.side=tr);const f=s.alphaMode||Rf.OPAQUE;return f===Rf.BLEND?(l.transparent=!0,l.depthWrite=!1):(l.transparent=!1,f===Rf.MASK&&(l.alphaTest=s.alphaCutoff!==void 0?s.alphaCutoff:.5)),s.normalTexture!==void 0&&o!==pn&&(c.push(t.assignTexture(l,"normalMap",s.normalTexture)),l.normalScale=new Se(1,-1),s.normalTexture.scale!==void 0&&l.normalScale.set(s.normalTexture.scale,-s.normalTexture.scale)),s.occlusionTexture!==void 0&&o!==pn&&(c.push(t.assignTexture(l,"aoMap",s.occlusionTexture)),s.occlusionTexture.strength!==void 0&&(l.aoMapIntensity=s.occlusionTexture.strength)),s.emissiveFactor!==void 0&&o!==pn&&(l.emissive=new Ce().fromArray(s.emissiveFactor)),s.emissiveTexture!==void 0&&o!==pn&&c.push(t.assignTexture(l,"emissiveMap",s.emissiveTexture)),Promise.all(c).then(function(){let h;return o===Cf?h=r[it.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].createMaterial(l):h=new o(l),s.name&&(h.name=s.name),h.map&&(h.map.encoding=Ur),h.emissiveMap&&(h.emissiveMap.encoding=Ur),cs(h,s),t.associations.set(h,{type:"materials",index:e}),s.extensions&&za(r,h,s),h})}createUniqueName(e){const t=Ke.sanitizeNodeName(e||"");let i=t;for(let r=1;this.nodeNamesUsed[i];++r)i=t+"_"+r;return this.nodeNamesUsed[i]=!0,i}loadGeometries(e){const t=this,i=this.extensions,r=this.primitiveCache;function s(l){return i[it.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(l,t).then(function(u){return Sx(u,l,t)})}const o=[];for(let l=0,u=e.length;l<u;l++){const c=e[l],f=sF(c),h=r[f];if(h)o.push(h.promise);else{let m;c.extensions&&c.extensions[it.KHR_DRACO_MESH_COMPRESSION]?m=s(c):m=Sx(new Ve,c,t),r[f]={primitive:c,promise:m},o.push(m)}}return Promise.all(o)}loadMesh(e){const t=this,i=this.json,r=this.extensions,s=i.meshes[e],o=s.primitives,l=[];for(let u=0,c=o.length;u<c;u++){const f=o[u].material===void 0?nF(this.cache):this.getDependency("material",o[u].material);l.push(f)}return l.push(t.loadGeometries(o)),Promise.all(l).then(function(u){const c=u.slice(0,u.length-1),f=u[u.length-1],h=[];for(let y=0,p=f.length;y<p;y++){const d=f[y],b=o[y];let v;const g=c[y];if(b.mode===Vi.TRIANGLES||b.mode===Vi.TRIANGLE_STRIP||b.mode===Vi.TRIANGLE_FAN||b.mode===void 0)v=s.isSkinnedMesh===!0?new xa(d,g):new It(d,g),v.isSkinnedMesh===!0&&!v.geometry.attributes.skinWeight.normalized&&v.normalizeSkinWeights(),b.mode===Vi.TRIANGLE_STRIP?v.geometry=_x(v.geometry,Cy):b.mode===Vi.TRIANGLE_FAN&&(v.geometry=_x(v.geometry,Ud));else if(b.mode===Vi.LINES)v=new un(d,g);else if(b.mode===Vi.LINE_STRIP)v=new ni(d,g);else if(b.mode===Vi.LINE_LOOP)v=new _c(d,g);else if(b.mode===Vi.POINTS)v=new ro(d,g);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+b.mode);Object.keys(v.geometry.morphAttributes).length>0&&rF(v,s),v.name=t.createUniqueName(s.name||"mesh_"+e),cs(v,s),b.extensions&&za(r,v,b),t.assignFinalMaterial(v),h.push(v)}if(h.length===1)return h[0];const m=new ti;for(let y=0,p=h.length;y<p;y++)m.add(h[y]);return m})}loadCamera(e){let t;const i=this.json.cameras[e],r=i[i.type];if(!r){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return i.type==="perspective"?t=new kt(Xd.radToDeg(r.yfov),r.aspectRatio||1,r.znear||1,r.zfar||2e6):i.type==="orthographic"&&(t=new wo(-r.xmag,r.xmag,r.ymag,-r.ymag,r.znear,r.zfar)),i.name&&(t.name=this.createUniqueName(i.name)),cs(t,i),Promise.resolve(t)}loadSkin(e){const t=this.json.skins[e],i={joints:t.joints};return t.inverseBindMatrices===void 0?Promise.resolve(i):this.getDependency("accessor",t.inverseBindMatrices).then(function(r){return i.inverseBindMatrices=r,i})}loadAnimation(e){const i=this.json.animations[e],r=[],s=[],o=[],l=[],u=[];for(let c=0,f=i.channels.length;c<f;c++){const h=i.channels[c],m=i.samplers[h.sampler],y=h.target,p=y.node!==void 0?y.node:y.id,d=i.parameters!==void 0?i.parameters[m.input]:m.input,b=i.parameters!==void 0?i.parameters[m.output]:m.output;r.push(this.getDependency("node",p)),s.push(this.getDependency("accessor",d)),o.push(this.getDependency("accessor",b)),l.push(m),u.push(y)}return Promise.all([Promise.all(r),Promise.all(s),Promise.all(o),Promise.all(l),Promise.all(u)]).then(function(c){const f=c[0],h=c[1],m=c[2],y=c[3],p=c[4],d=[];for(let v=0,g=f.length;v<g;v++){const w=f[v],_=h[v],E=m[v],S=y[v],x=p[v];if(w===void 0)continue;w.updateMatrix(),w.matrixAutoUpdate=!0;let T;switch(Mr[x.path]){case Mr.weights:T=vo;break;case Mr.rotation:T=es;break;case Mr.position:case Mr.scale:default:T=bo;break}const C=w.name?w.name:w.uuid,L=S.interpolation!==void 0?tF[S.interpolation]:Vr,A=[];Mr[x.path]===Mr.weights?w.traverse(function(I){I.isMesh===!0&&I.morphTargetInfluences&&A.push(I.name?I.name:I.uuid)}):A.push(C);let R=E.array;if(E.normalized){const I=Lf(R.constructor),O=new Float32Array(R.length);for(let N=0,M=R.length;N<M;N++)O[N]=R[N]*I;R=O}for(let I=0,O=A.length;I<O;I++){const N=new T(A[I]+"."+Mr[x.path],_.array,R,L);S.interpolation==="CUBICSPLINE"&&(N.createInterpolant=function(P){return new Eo(this.times,this.values,this.getValueSize()/3,P)},N.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0),d.push(N)}}const b=i.name?i.name:"animation_"+e;return new xo(b,void 0,d)})}createNodeMesh(e){const t=this.json,i=this,r=t.nodes[e];return r.mesh===void 0?null:i.getDependency("mesh",r.mesh).then(function(s){const o=i._getNodeRef(i.meshCache,r.mesh,s);return r.weights!==void 0&&o.traverse(function(l){if(l.isMesh)for(let u=0,c=r.weights.length;u<c;u++)l.morphTargetInfluences[u]=r.weights[u]}),o})}loadNode(e){const t=this.json,i=this.extensions,r=this,s=t.nodes[e],o=s.name?r.createUniqueName(s.name):"";return function(){const l=[],u=r._invokeOne(function(c){return c.createNodeMesh&&c.createNodeMesh(e)});return u&&l.push(u),s.camera!==void 0&&l.push(r.getDependency("camera",s.camera).then(function(c){return r._getNodeRef(r.cameraCache,s.camera,c)})),r._invokeAll(function(c){return c.createNodeAttachment&&c.createNodeAttachment(e)}).forEach(function(c){l.push(c)}),Promise.all(l)}().then(function(l){let u;if(s.isBone===!0?u=new wa:l.length>1?u=new ti:l.length===1?u=l[0]:u=new $e,u!==l[0])for(let c=0,f=l.length;c<f;c++)u.add(l[c]);if(s.name&&(u.userData.name=s.name,u.name=o),cs(u,s),s.extensions&&za(i,u,s),s.matrix!==void 0){const c=new De;c.fromArray(s.matrix),u.applyMatrix4(c)}else s.translation!==void 0&&u.position.fromArray(s.translation),s.rotation!==void 0&&u.quaternion.fromArray(s.rotation),s.scale!==void 0&&u.scale.fromArray(s.scale);return r.associations.set(u,{type:"nodes",index:e}),u})}loadScene(e){const t=this.json,i=this.extensions,r=this.json.scenes[e],s=this,o=new ti;r.name&&(o.name=s.createUniqueName(r.name)),cs(o,r),r.extensions&&za(i,o,r);const l=r.nodes||[],u=[];for(let c=0,f=l.length;c<f;c++)u.push(Mx(l[c],o,t,s));return Promise.all(u).then(function(){return o})}}function Mx(n,e,t,i){const r=t.nodes[n];return i.getDependency("node",n).then(function(s){if(r.skin===void 0)return s;let o;return i.getDependency("skin",r.skin).then(function(l){o=l;const u=[];for(let c=0,f=o.joints.length;c<f;c++)u.push(i.getDependency("node",o.joints[c]));return Promise.all(u)}).then(function(l){return s.traverse(function(u){if(!u.isMesh)return;const c=[],f=[];for(let h=0,m=l.length;h<m;h++){const y=l[h];if(y){c.push(y);const p=new De;o.inverseBindMatrices!==void 0&&p.fromArray(o.inverseBindMatrices.array,h*16),f.push(p)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',o.joints[h])}u.bind(new Ma(c,f),u.matrixWorld)}),s})}).then(function(s){e.add(s);const o=[];if(r.children){const l=r.children;for(let u=0,c=l.length;u<c;u++){const f=l[u];o.push(Mx(f,s,t,i))}}return Promise.all(o)})}function aF(n,e,t){const i=e.attributes,r=new fn;if(i.POSITION!==void 0){const l=t.json.accessors[i.POSITION],u=l.min,c=l.max;if(u!==void 0&&c!==void 0){if(r.set(new X(u[0],u[1],u[2]),new X(c[0],c[1],c[2])),l.normalized){const f=Lf(ka[l.componentType]);r.min.multiplyScalar(f),r.max.multiplyScalar(f)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const s=e.targets;if(s!==void 0){const l=new X,u=new X;for(let c=0,f=s.length;c<f;c++){const h=s[c];if(h.POSITION!==void 0){const m=t.json.accessors[h.POSITION],y=m.min,p=m.max;if(y!==void 0&&p!==void 0){if(u.setX(Math.max(Math.abs(y[0]),Math.abs(p[0]))),u.setY(Math.max(Math.abs(y[1]),Math.abs(p[1]))),u.setZ(Math.max(Math.abs(y[2]),Math.abs(p[2]))),m.normalized){const d=Lf(ka[m.componentType]);u.multiplyScalar(d)}l.max(u)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}r.expandByVector(l)}n.boundingBox=r;const o=new Ri;r.getCenter(o.center),o.radius=r.min.distanceTo(r.max)/2,n.boundingSphere=o}function Sx(n,e,t){const i=e.attributes,r=[];function s(o,l){return t.getDependency("accessor",o).then(function(u){n.setAttribute(l,u)})}for(const o in i){const l=Af[o]||o.toLowerCase();l in n.attributes||r.push(s(i[o],l))}if(e.indices!==void 0&&!n.index){const o=t.getDependency("accessor",e.indices).then(function(l){n.setIndex(l)});r.push(o)}return cs(n,e),aF(n,e,t),Promise.all(r).then(function(){return e.targets!==void 0?iF(n,e.targets,t):n})}function _x(n,e){let t=n.getIndex();if(t===null){const o=[],l=n.getAttribute("position");if(l!==void 0){for(let u=0;u<l.count;u++)o.push(u);n.setIndex(o),t=n.getIndex()}else return console.error("THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),n}const i=t.count-2,r=[];if(e===Ud)for(let o=1;o<=i;o++)r.push(t.getX(0)),r.push(t.getX(o)),r.push(t.getX(o+1));else for(let o=0;o<i;o++)o%2===0?(r.push(t.getX(o)),r.push(t.getX(o+1)),r.push(t.getX(o+2))):(r.push(t.getX(o+2)),r.push(t.getX(o+1)),r.push(t.getX(o)));r.length/3!==i&&console.error("THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const s=n.clone();return s.setIndex(r),s}const lF=Ll(Object.freeze(Object.defineProperty({__proto__:null,GLTFLoader:UB},Symbol.toStringTag,{value:"Module"})));var Pf={exports:{}},Tx;function cF(){return Tx||(Tx=1,function(n){function e(c){var f={};function h(y){if(f[y])return f[y].exports;var p=f[y]={i:y,l:!1,exports:{}};return c[y].call(p.exports,p,p.exports,h),p.l=!0,p.exports}h.m=c,h.c=f,h.i=function(y){return y},h.d=function(y,p,d){h.o(y,p)||Object.defineProperty(y,p,{configurable:!1,enumerable:!0,get:d})},h.r=function(y){Object.defineProperty(y,"__esModule",{value:!0})},h.n=function(y){var p=y&&y.__esModule?function(){return y.default}:function(){return y};return h.d(p,"a",p),p},h.o=function(y,p){return Object.prototype.hasOwnProperty.call(y,p)},h.p="/",h.oe=function(y){throw console.error(y),y};var m=h(h.s=ENTRY_MODULE);return m.default||m}var t="[\\.|\\-|\\+|\\w|/|@]+",i="\\(\\s*(/\\*.*?\\*/)?\\s*.*?("+t+").*?\\)";function r(c){return(c+"").replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}function s(c){return!isNaN(1*c)}function o(c,f,h){var m={};m[h]=[];var y=f.toString(),p=y.match(/^function\s?\w*\(\w+,\s*\w+,\s*(\w+)\)/);if(!p)return m;for(var d=p[1],b=new RegExp("(\\\\n|\\W)"+r(d)+i,"g"),v;v=b.exec(y);)v[3]!=="dll-reference"&&m[h].push(v[3]);for(b=new RegExp("\\("+r(d)+'\\("(dll-reference\\s('+t+'))"\\)\\)'+i,"g");v=b.exec(y);)c[v[2]]||(m[h].push(v[1]),c[v[2]]=__webpack_require__(v[1]).m),m[v[2]]=m[v[2]]||[],m[v[2]].push(v[4]);for(var g=Object.keys(m),w=0;w<g.length;w++)for(var _=0;_<m[g[w]].length;_++)s(m[g[w]][_])&&(m[g[w]][_]=1*m[g[w]][_]);return m}function l(c){var f=Object.keys(c);return f.reduce(function(h,m){return h||c[m].length>0},!1)}function u(c,f){for(var h={main:[f]},m={main:[]},y={main:{}};l(h);)for(var p=Object.keys(h),d=0;d<p.length;d++){var b=p[d],v=h[b],g=v.pop();if(y[b]=y[b]||{},!(y[b][g]||!c[b][g])){y[b][g]=!0,m[b]=m[b]||[],m[b].push(g);for(var w=o(c,c[b][g],b),_=Object.keys(w),E=0;E<_.length;E++)h[_[E]]=h[_[E]]||[],h[_[E]]=h[_[E]].concat(w[_[E]])}}return m}n.exports=function(c,f){f=f||{};var h={main:__webpack_modules__},m=f.all?{main:Object.keys(h.main)}:u(h,c),y="";Object.keys(m).filter(function(g){return g!=="main"}).forEach(function(g){for(var w=0;m[g][w];)w++;m[g].push(w),h[g][w]="(function(module, exports, __webpack_require__) { module.exports = __webpack_require__; })",y=y+"var "+g+" = ("+e.toString().replace("ENTRY_MODULE",JSON.stringify(w))+")({"+m[g].map(function(_){return""+JSON.stringify(_)+": "+h[g][_].toString()}).join(",")+`});
3182
- `}),y=y+"new (("+e.toString().replace("ENTRY_MODULE",JSON.stringify(c))+")({"+m.main.map(function(g){return""+JSON.stringify(g)+": "+h.main[g].toString()}).join(",")+"}))(self);";var p=new window.Blob([y],{type:"text/javascript"});if(f.bare)return p;var d=window.URL||window.webkitURL||window.mozURL||window.msURL,b=d.createObjectURL(p),v=new window.Worker(b);return v.objectURL=b,v}}(Pf)),Pf.exports}function uF(n){var e=this.constructor;return this.then(function(t){return e.resolve(n()).then(function(){return t})},function(t){return e.resolve(n()).then(function(){return e.reject(t)})})}function dF(n){var e=this;return new e(function(t,i){if(!(n&&typeof n.length<"u"))return i(new TypeError(typeof n+" "+n+" is not iterable(cannot read property Symbol(Symbol.iterator))"));var r=Array.prototype.slice.call(n);if(r.length===0)return t([]);var s=r.length;function o(u,c){if(c&&(typeof c=="object"||typeof c=="function")){var f=c.then;if(typeof f=="function"){f.call(c,function(h){o(u,h)},function(h){r[u]={status:"rejected",reason:h},--s===0&&t(r)});return}}r[u]={status:"fulfilled",value:c},--s===0&&t(r)}for(var l=0;l<r.length;l++)o(l,r[l])})}function Ex(n,e){this.name="AggregateError",this.errors=n,this.message=e||""}Ex.prototype=Error.prototype;function hF(n){var e=this;return new e(function(t,i){if(!(n&&typeof n.length<"u"))return i(new TypeError("Promise.any accepts an array"));var r=Array.prototype.slice.call(n);if(r.length===0)return i();for(var s=[],o=0;o<r.length;o++)try{e.resolve(r[o]).then(t).catch(function(l){s.push(l),s.length===r.length&&i(new Ex(s,"All promises were rejected"))})}catch(l){i(l)}})}var fF=setTimeout;function Cx(n){return!!(n&&typeof n.length<"u")}function pF(){}function mF(n,e){return function(){n.apply(e,arguments)}}function wt(n){if(!(this instanceof wt))throw new TypeError("Promises must be constructed via new");if(typeof n!="function")throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],Rx(n,this)}function Ax(n,e){for(;n._state===3;)n=n._value;if(n._state===0){n._deferreds.push(e);return}n._handled=!0,wt._immediateFn(function(){var t=n._state===1?e.onFulfilled:e.onRejected;if(t===null){(n._state===1?If:Ua)(e.promise,n._value);return}var i;try{i=t(n._value)}catch(r){Ua(e.promise,r);return}If(e.promise,i)})}function If(n,e){try{if(e===n)throw new TypeError("A promise cannot be resolved with itself.");if(e&&(typeof e=="object"||typeof e=="function")){var t=e.then;if(e instanceof wt){n._state=3,n._value=e,Of(n);return}else if(typeof t=="function"){Rx(mF(t,e),n);return}}n._state=1,n._value=e,Of(n)}catch(i){Ua(n,i)}}function Ua(n,e){n._state=2,n._value=e,Of(n)}function Of(n){n._state===2&&n._deferreds.length===0&&wt._immediateFn(function(){n._handled||wt._unhandledRejectionFn(n._value)});for(var e=0,t=n._deferreds.length;e<t;e++)Ax(n,n._deferreds[e]);n._deferreds=null}function gF(n,e,t){this.onFulfilled=typeof n=="function"?n:null,this.onRejected=typeof e=="function"?e:null,this.promise=t}function Rx(n,e){var t=!1;try{n(function(i){t||(t=!0,If(e,i))},function(i){t||(t=!0,Ua(e,i))})}catch(i){if(t)return;t=!0,Ua(e,i)}}wt.prototype.catch=function(n){return this.then(null,n)},wt.prototype.then=function(n,e){var t=new this.constructor(pF);return Ax(this,new gF(n,e,t)),t},wt.prototype.finally=uF,wt.all=function(n){return new wt(function(e,t){if(!Cx(n))return t(new TypeError("Promise.all accepts an array"));var i=Array.prototype.slice.call(n);if(i.length===0)return e([]);var r=i.length;function s(l,u){try{if(u&&(typeof u=="object"||typeof u=="function")){var c=u.then;if(typeof c=="function"){c.call(u,function(f){s(l,f)},t);return}}i[l]=u,--r===0&&e(i)}catch(f){t(f)}}for(var o=0;o<i.length;o++)s(o,i[o])})},wt.any=hF,wt.allSettled=dF,wt.resolve=function(n){return n&&typeof n=="object"&&n.constructor===wt?n:new wt(function(e){e(n)})},wt.reject=function(n){return new wt(function(e,t){t(n)})},wt.race=function(n){return new wt(function(e,t){if(!Cx(n))return t(new TypeError("Promise.race accepts an array"));for(var i=0,r=n.length;i<r;i++)wt.resolve(n[i]).then(e,t)})},wt._immediateFn=typeof setImmediate=="function"&&function(n){setImmediate(n)}||function(n){fF(n,0)},wt._unhandledRejectionFn=function(e){typeof console<"u"&&console&&console.warn("Possible Unhandled Promise Rejection:",e)};const yF=Ll(Object.freeze(Object.defineProperty({__proto__:null,default:wt},Symbol.toStringTag,{value:"Module"})));(function(n,e){(function(i,r){n.exports=r()})(Ki,()=>(()=>{var t=[(o,l,u)=>{u(1);var c=u(2),f=c.version,h=function(){this.Revision=f,this.defaultMaterialColor=16777215,this.defaultOpacity=1,this.modelPrefix=void 0,this.Geometry=u(3).Geometry,this.Glyph=u(16).Glyph,this.Glyphset=u(18).Glyphset,this.Pointset=u(22).Pointset,this.Label=u(17).Label,this.Lines=u(24).Lines,this.TextureArray=u(25).TextureArray,this.TextureSlides=u(27).TextureSlides,this.Renderer=u(30).Renderer,this.Scene=u(32).Scene,this.GeometryCSG=u(50).GeometryCSG,this.GlyphsetCSG=u(56).GlyphsetCSG,this.Viewport=u(43).Viewport,this.CameraControls=u(43).CameraControls,this.SmoothCameraTransition=u(43).SmoothCameraTransition,this.RayCaster=u(43).RayCaster,this.CameraAutoTumble=u(43).CameraAutoTumble,this.StereoEffect=u(43).StereoEffect,this.loadExternalFile=u(5).loadExternalFile,this.loadExternalFiles=u(5).loadExternalFiles,this.THREE=u(4)};o.exports=new h},o=>{o.exports=uL()},o=>{o.exports=JSON.parse('{"name":"zincjs","version":"1.11.1","description":"ZincJS (Web-based-Zinc-Visualisation)","main":"build/zinc.js","directories":{"doc":"docs"},"files":["package.json","LICENSE","README.md","src/*","build/zinc.js","build/zinc.frontend.js","build/zinc.js.map","webpack.config.js"],"scripts":{"build-bundle":"webpack --config webpack.frontend.js; webpack --config webpack.backend.js","build-backend":"webpack --config webpack.backend.js","test":"npm --prefix ./test install && npm --prefix ./test run test-ci","changelog":"auto-changelog -p --output CHANGELOG.md --template keepachangelog","jsdoc":"jsdoc -c jsdoc_conf.json","version":"npm run build-bundle;npm run jsdoc;npm run changelog; git add CHANGELOG.md docs","release:beta":"npm version prerelease --preid=beta; npm publish --tag beta","release:minor":"npm version minor; npm publish","release:patch":"npm version patch; npm publish"},"repository":{"type":"git","url":"git+https://github.com/alan-wu/ZincJS.git"},"keywords":["library","webgl","3d","zincjs"],"author":"Alan Wu <alan.wu@auckland.ac.nz>","license":"MIT","bugs":{"url":"https://github.com/alan-wu/ZincJS/issues"},"homepage":"http://alan-wu.github.io/ZincJS/","devDependencies":{"@babel/core":"^7.23.9","@babel/preset-env":"^7.23.9","auto-changelog":"^2.4.0","babel-loader":"^9.1.3","babel-preset-minify":"^0.5.1","file-loader":"^6.2.0","jsdoc":"^4.0.2","raw-loader":"^4.0.2","webpack":"^5.90.3","webpack-cli":"^5.1.4","webpack-node-externals":"^3.0.0"},"dependencies":{"css-element-queries":"^1.2.2","lodash":"^4.17.19","promise-polyfill":"^8.1.3","three":"^0.130.1","three-spritetext":"1.6.2","url-loader":"^4.1.1","url-polyfill":"^1.1.7","webworkify-webpack":"^2.1.5"}}')},function(o,l,u){var c=u(4),f=u(5).toBufferGeometry,h=(y,p,d)=>{var b=f(y,d),v=!1;1>d.opacity&&(v=!0);var g;if(b._video===void 0){var w=d.localTimeEnabled||d.localMorphColour;p?(g=p,g.morphTargets=w,g.morphNormals=d.localTimeEnabled):b instanceof c.BufferGeometry&&b.attributes.color===void 0?g=new c.MeshPhongMaterial({color:d.colour,morphTargets:w,morphNormals:d.localTimeEnabled,transparent:v,opacity:d.opacity,side:c.DoubleSide}):g=new c.MeshPhongMaterial({color:d.colour,morphTargets:w,morphNormals:d.localTimeEnabled,vertexColors:c.VertexColors,transparent:v,opacity:d.opacity,side:c.DoubleSide}),d.localMorphColour&&b.morphAttributes.color&&(g.onBeforeCompile=u(9).augmentMorphColor())}else{var _=b._video.createCanvasVideoTexture();g=new c.MeshBasicMaterial({morphTargets:d.localTimeEnabled,color:new c.Color(1,1,1),transparent:v,opacity:d.opacity,map:_,side:c.DoubleSide}),this.videoHandler=b._video}return new c.Mesh(b,g)},m=function(){u(10).ZincObject.call(this),this.videoHandler=void 0,this.isGeometry=!0,this.createMesh=(y,p,d)=>{if(!(this.morph&&this.morph.geometry&&y!=null)){var b=h(y,p,d);this.setMesh(b,d.localTimeEnabled,d.localMorphColour)}},this.calculateUVs=()=>{this.geometry.computeBoundingBox();var y=this.geometry.boundingBox.max,p=this.geometry.boundingBox.min,d=new c.Vector2(0-p.x,0-p.y),b=new c.Vector2(y.x-p.x,y.y-p.y);this.geometry.faceVertexUvs[0]=[];for(var v=0;v<this.geometry.faces.length;v++){var g=this.geometry.vertices[this.geometry.faces[v].a],w=this.geometry.vertices[this.geometry.faces[v].b],_=this.geometry.vertices[this.geometry.faces[v].c];geometry.faceVertexUvs[0].push([new c.Vector2((g.x+d.x)/b.x,(g.y+d.y)/b.y),new c.Vector2((w.x+d.x)/b.x,(w.y+d.y)/b.y),new c.Vector2((_.x+d.x)/b.x,(_.y+d.y)/b.y)])}geometry.uvsNeedUpdate=!0},this.checkTransparentMesh=function(){this._lod.checkTransparentMesh()},this.setWireframe=y=>{this.morph.material.wireframe=y},this.editVertices=function(y,p){if(y&&y.length){var d=this.getMorph(),b=d.geometry.getAttribute("position");if(!d||0>p)return;var v=3*p;y.forEach(g=>{b.array[v++]=g[0],b.array[v++]=g[1],b.array[v++]=g[2]}),b.needsUpdate=!0,d.geometry.computeBoundingBox(),d.geometry.computeBoundingSphere(),this.boundingBoxUpdateRequired=!0}}};m.prototype=Object.create(u(10).ZincObject.prototype),l.Geometry=m},o=>{o.exports=SB},(o,l,u)=>{function c(x){throw new TypeError('"'+x+'" is read-only')}var f=u(4),h=u(6).Geometry,m=u(7).default;function y(x){var T=x,C=u(0).modelPrefix;return C&&(C[C.length-1]!="/"&&c("prefix"),/^(?:[a-z]+:)?\/\//i.test(x)||(T=C+x)),T}function p(x,T){var C=(A,R)=>{try{var I=new URL(A,R).href;if(A&&2>A.split("?").length){var O=R.split("?");O.length===2&&(I=I+"?"+O[1])}return I}catch{console.error("There is an issue creting the url link with: ".concat(A,"."))}};if(!Array.isArray(x))return C(x,T);var L=[];return x.forEach(A=>{L.push(C(A,T))}),L}function d(x,T,C,L,A){var R=x.morphTargetInfluences,I=void 0;x.geometry&&(I=x.geometry.morphAttributes);var O=!1;if(R&&I&&I.position){L.set(0,0,0),A.set(0,0,0);for(var N=0;N<R.length;N++)0<R[N]&&(O=!0,C.setFromArray(I.position[N].array),L.add(C.min.multiplyScalar(R[N])),A.add(C.max.multiplyScalar(R[N])));O&&T.set(L,A)}O||T.setFromBufferAttribute(x.geometry.attributes.position),x.updateWorldMatrix(!0,!0),T.applyMatrix4(x.matrixWorld)}function b(x,T,C,L){var A=new XMLHttpRequest;A.open("GET",y(x),!0),A.onreadystatechange=()=>{A.readyState==4&&(A.status==200?C(A.responseText,T):L(x))},A.send(null)}function v(x,T,C){function L(N,M){I[M]=N,R++,R==A&&T(I)}for(var A=x.length,R=0,I=[],O=0;O<A;O++)b(x[O],O,L,C)}l.getColorsRGB=(x,T)=>{var C=Math.floor(T/3),L=T%3,A=0;L==0?A=x[C].r:L==1?A=x[C].g:L==2&&(A=x[C].b);var R=new f.Color(A);return[R.r,R.g,R.b]},l.updateMorphColorAttribute=function(x,T){if(T&&x&&x.morphAttributes&&x.morphAttributes.color){var C=x.morphAttributes.color,L=T.morphTargetInfluences,A=L.length;x.deleteAttribute("morphColor0"),x.deleteAttribute("morphColor1");for(var R=0,I=[],O=0;1>R||O<A;O++)0<L[O]&&(R++,I.push([O,L[O]]));I.length==2?(x.setAttribute("morphColor0",C[I[0][0]]),x.setAttribute("morphColor1",C[I[1][0]])):I.length==1&&(x.setAttribute("morphColor0",C[I[0][0]]),x.setAttribute("morphColor1",C[I[0][0]]))}},l.toBufferGeometry=(x,T)=>{var C;return x instanceof h?(T.localTimeEnabled&&!x.morphNormalsReady&&(x.morphNormals==null||x.morphNormals.length==0)&&x.computeMorphNormals(),C=x.toIndexedBufferGeometry(),T.localMorphColour&&g(x,C)):x instanceof f.BufferGeometry&&(C=x.clone()),C.colorsNeedUpdate=!0,C.computeBoundingBox(),C.computeBoundingSphere(),x._video&&(C._video=x._video),C},l.copyMorphColorsToBufferGeometry=(x,T)=>{if(x&&x.morphColors&&0<x.morphColors.length){for(var C=[],L=x.morphColors,A=u(5).getColorsRGB,R=0,I=L.length;R<I;R++){for(var O=L[R],N=[],M=0;M<x.faces.length;M++){var P=x.faces[M],B=A(O.colors,P.a);N.push(B[0],B[1],B[2]),B=A(O.colors,P.b),N.push(B[0],B[1],B[2]),B=A(O.colors,P.c),N.push(B[0],B[1],B[2])}var D=new f.Float32BufferAttribute(3*(3*x.faces.length),3);D.name=O.name,C.push(D.copyArray(N))}T.morphAttributes.color=C}};var g=(x,T)=>{if(x&&x.morphColors&&0<x.morphColors.length){for(var C=[],L=x.morphColors,A=u(5).getColorsRGB,R=0,I=L.length;R<I;R++){for(var O,N=L[R],M=[],P=0;P<3*N.colors.length;P++)O=A(N.colors,P),M.push(O[0],O[1],O[2]);var B=new f.Float32BufferAttribute(M,3);B.name=N.name,C.push(B)}T.morphAttributes.color=C}};l.mergeVertices=function(x){var T=1<arguments.length&&arguments[1]!==void 0?arguments[1]:1e-4;T=Math.max(T,Number.EPSILON);for(var C,L={},A=x.getIndex(),R=x.getAttribute("position"),I=A?A.count:R.count,O=0,N=Object.keys(x.attributes),M={},P={},ae=[],B=["getX","getY","getZ","getW"],D=0,V=N.length;D<V;D++){C=N[D],M[C]=[];var G=x.morphAttributes[C];G&&(P[C]=Array(G.length).fill().map(()=>[]))}for(var H=Math.log10(1/T),K=Math.pow(10,H),D=0;D<I;D++){for(var te=A?A.getX(D):D,W="",z=0,V=N.length;z<V;z++)for(var C=N[z],j=x.getAttribute(C),Z=j.itemSize,Q=0;Q<Z;Q++)W+="".concat(~~(j[B[Q]](te)*K),",");if(W in L)ae.push(L[W]);else{for(var z=0,V=N.length;z<V;z++)for(var ee,C=N[z],j=x.getAttribute(C),G=x.morphAttributes[C],Z=j.itemSize,ie=M[C],q=P[C],Q=0;Q<Z;Q++)if(ee=B[Q],ie.push(j[ee](te)),G)for(var ne=0,F=G.length;ne<F;ne++)q[ne].push(G[ne][ee](te));L[W]=O,ae.push(O),O++}}for(var $=x.clone(),D=0,V=N.length;D<V;D++){var j,C=N[D],J=x.getAttribute(C),k=new J.array.constructor(M[C]);if(J.isInterleavedBufferAttribute?j=new f.BufferAttribute(k,J.itemSize,J.itemSize):(j=x.getAttribute(C).clone(),j.setArray(k)),$.setAttribute(C,j),C in P)for(var U,z=0;z<P[C].length;z++)U=x.morphAttributes[C][z].clone(),U.setArray(new U.array.constructor(P[C][z])),$.morphAttributes[C][z]=U}var oe=Uint8Array;ae.length>=Math.pow(2,8)&&(oe=Uint16Array),ae.length>=Math.pow(2,16)&&(oe=Uint32Array);var le=new oe(ae),ae=null;return A===null?ae=new f.BufferAttribute(le,1):(ae=x.getIndex().clone(),ae.setArray(le)),$.setIndex(ae),$};function w(x){if(x.isMeshPhongMaterial){var T=new f.MeshToonMaterial({color:x.color.clone(),morphTargets:x.morphTargets,morphNormals:x.morphNormals,vertexColors:x.vertexColors,transparent:x.transparent,opacity:x.opacity,side:x.side});return x.map&&(T.map=x.map),T}return x}function _(x,T){if(T&&x>=T.length){var C=new f.BufferGeometry,L=new Float32Array(3*x),A=0;return T.forEach(R=>{L[A++]=R[0],L[A++]=R[1],L[A++]=R[2]}),C.setAttribute("position",new f.BufferAttribute(L,3)),C.setDrawRange(0,T.length),C}}function E(){var x=new Image;x.src=u(8);var T=new f.Texture;return T.image=x,T.needsUpdate=!0,T}function S(x,T,C,L,A,R){var I=new m(x,T,C,L,A,R);return I.material.sizeAttenuation=!1,I.material.alphaTest=.5,I.material.transparent=!0,I.material.depthWrite=!1,I.material.depthTest=!1,I.center.set(.5,-1.2),I.renderOrder=1e4,I}l.getBoundingBox=d,l.createNewURL=p,l.createBufferGeometry=_,l.getCircularTexture=E,l.resolveURL=y,l.loadExternalFile=b,l.loadExternalFiles=v,l.PhongToToon=w,l.createNewSpriteText=S},(o,l,u)=>{u.r(l),u.d(l,{Face3:()=>b,Geometry:()=>p});var c=u(4),f=new c.Matrix4,h=new c.Object3D,m=new c.Vector3,y=new c.Vector3;function p(){this.uuid=c.MathUtils.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.normals=[],this.uvs=[],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1,this.morphNormalsReady=!1}p.prototype=Object.assign(Object.create(c.EventDispatcher.prototype),{constructor:p,isGeometry:!0,applyMatrix4:function(g){for(var w,_=new c.Matrix3().getNormalMatrix(g),E=0,S=this.vertices.length;E<S;E++)w=this.vertices[E],w.applyMatrix4(g);for(var x,T=0,C=this.faces.length;T<C;T++){x=this.faces[T],x.normal.applyMatrix3(_).normalize();for(var L=0,A=x.vertexNormals.length;L<A;L++)x.vertexNormals[L].applyMatrix3(_).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this},rotateX:function(g){return f.makeRotationX(g),this.applyMatrix4(f),this},rotateY:function(g){return f.makeRotationY(g),this.applyMatrix4(f),this},rotateZ:function(g){return f.makeRotationZ(g),this.applyMatrix4(f),this},translate:function(g,w,_){return f.makeTranslation(g,w,_),this.applyMatrix4(f),this},scale:function(g,w,_){return f.makeScale(g,w,_),this.applyMatrix4(f),this},lookAt:function(g){return h.lookAt(g),h.updateMatrix(),this.applyMatrix4(h.matrix),this},fromBufferGeometry:function(g){function w(H,K,te,W){var z=C===void 0?[]:[_.colors[H].clone(),_.colors[K].clone(),_.colors[te].clone()],j=T===void 0?[]:[new c.Vector3().fromBufferAttribute(T,H),new c.Vector3().fromBufferAttribute(T,K),new c.Vector3().fromBufferAttribute(T,te)],Z=new b(H,K,te,j,z,W);_.faces.push(Z),L!==void 0&&_.faceVertexUvs[0].push([new c.Vector2().fromBufferAttribute(L,H),new c.Vector2().fromBufferAttribute(L,K),new c.Vector2().fromBufferAttribute(L,te)]),A!==void 0&&_.faceVertexUvs[1].push([new c.Vector2().fromBufferAttribute(A,H),new c.Vector2().fromBufferAttribute(A,K),new c.Vector2().fromBufferAttribute(A,te)])}var _=this,E=g.index===null?void 0:g.index,S=g.attributes;if(S.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;var x=S.position,T=S.normal,C=S.color,L=S.uv,A=S.uv2;A!==void 0&&(this.faceVertexUvs[1]=[]);for(var R=0;R<x.count;R++)_.vertices.push(new c.Vector3().fromBufferAttribute(x,R)),C!==void 0&&_.colors.push(new c.Color().fromBufferAttribute(C,R));var I=g.groups;if(0<I.length)for(var O=0;O<I.length;O++)for(var N=I[O],M=N.start,P=N.count,B=M,D=M+P;B<D;B+=3)E===void 0?w(B,B+1,B+2,N.materialIndex):w(E.getX(B),E.getX(B+1),E.getX(B+2),N.materialIndex);else if(E!==void 0)for(var V=0;V<E.count;V+=3)w(E.getX(V),E.getX(V+1),E.getX(V+2));else for(var G=0;G<x.count;G+=3)w(G,G+1,G+2);return this.computeFaceNormals(),g.boundingBox!==null&&(this.boundingBox=g.boundingBox.clone()),g.boundingSphere!==null&&(this.boundingSphere=g.boundingSphere.clone()),this},center:function(){return this.computeBoundingBox(),this.boundingBox.getCenter(m).negate(),this.translate(m.x,m.y,m.z),this},normalize:function(){this.computeBoundingSphere();var g=this.boundingSphere.center,w=this.boundingSphere.radius,_=w===0?1:1/w,E=new c.Matrix4;return E.set(_,0,0,-_*g.x,0,_,0,-_*g.y,0,0,_,-_*g.z,0,0,0,1),this.applyMatrix4(E),this},computeFaceNormals:function(){for(var g=new c.Vector3,w=new c.Vector3,_=0,E=this.faces.length;_<E;_++){var S=this.faces[_],x=this.vertices[S.a],T=this.vertices[S.b],C=this.vertices[S.c];g.subVectors(C,T),w.subVectors(x,T),g.cross(w),g.normalize(),S.normal.copy(g)}},computeVertexNormals:function(){for(var g=!(0<arguments.length&&arguments[0]!==void 0)||arguments[0],w=Array(this.vertices.length),_=0,E=this.vertices.length;_<E;_++)w[_]=new c.Vector3;if(g)for(var S=new c.Vector3,x=new c.Vector3,T=0,C=this.faces.length;T<C;T++){var L=this.faces[T],A=this.vertices[L.a],R=this.vertices[L.b],I=this.vertices[L.c];S.subVectors(I,R),x.subVectors(A,R),S.cross(x),w[L.a].add(S),w[L.b].add(S),w[L.c].add(S)}else{this.computeFaceNormals();for(var O,N=0,M=this.faces.length;N<M;N++)O=this.faces[N],w[O.a].add(O.normal),w[O.b].add(O.normal),w[O.c].add(O.normal)}for(var P=0,B=this.vertices.length;P<B;P++)w[P].normalize();for(var D=0,V=this.faces.length;D<V;D++){var G=this.faces[D],H=G.vertexNormals;H.length===3?(H[0].copy(w[G.a]),H[1].copy(w[G.b]),H[2].copy(w[G.c])):(H[0]=w[G.a].clone(),H[1]=w[G.b].clone(),H[2]=w[G.c].clone())}return 0<this.faces.length&&(this.normalsNeedUpdate=!0),w},computeFlatVertexNormals:function(){this.computeFaceNormals();for(var g=0,w=this.faces.length;g<w;g++){var _=this.faces[g],E=_.vertexNormals;E.length===3?(E[0].copy(_.normal),E[1].copy(_.normal),E[2].copy(_.normal)):(E[0]=_.normal.clone(),E[1]=_.normal.clone(),E[2]=_.normal.clone())}0<this.faces.length&&(this.normalsNeedUpdate=!0)},computeMorphNormals:function(){for(var g,w=0,_=this.faces.length;w<_;w++){g=this.faces[w],g.__originalFaceNormal?g.__originalFaceNormal.copy(g.normal):g.__originalFaceNormal=g.normal.clone(),g.__originalVertexNormals||(g.__originalVertexNormals=[]);for(var E=0,S=g.vertexNormals.length;E<S;E++)g.__originalVertexNormals[E]?g.__originalVertexNormals[E].copy(g.vertexNormals[E]):g.__originalVertexNormals[E]=g.vertexNormals[E].clone()}var x=new p;x.faces=this.faces;for(var T=0,C=this.morphTargets.length;T<C;T++){if(!this.morphNormals[T]){this.morphNormals[T]={},this.morphNormals[T].faceNormals=[],this.morphNormals[T].vertexNormals=[];for(var L=this.morphNormals[T].faceNormals,A=this.morphNormals[T].vertexNormals,R=0,I=this.faces.length;R<I;R++){var O=new c.Vector3,N={a:new c.Vector3,b:new c.Vector3,c:new c.Vector3};L.push(O),A.push(N)}}var M=this.morphNormals[T];x.vertices=this.morphTargets[T].vertices,x.computeFaceNormals();var P=x.computeVertexNormals();if(P&&0<P.length){this.morphTargets[T].normals=Array(this.vertices.length);for(var B=0;B<P.length;B++)this.morphTargets[T].normals[B]=P[B].clone()}for(var D=0,V=this.faces.length;D<V;D++){var G=this.faces[D],H=M.faceNormals[D],K=M.vertexNormals[D];H.copy(G.normal),K.a.copy(G.vertexNormals[0]),K.b.copy(G.vertexNormals[1]),K.c.copy(G.vertexNormals[2])}}for(var te,W=0,z=this.faces.length;W<z;W++)te=this.faces[W],te.normal=te.__originalFaceNormal,te.vertexNormals=te.__originalVertexNormals;this.morphNormalsReady=!0},computeBoundingBox:function(){this.boundingBox===null&&(this.boundingBox=new c.Box3),this.boundingBox.setFromPoints(this.vertices)},computeBoundingSphere:function(){this.boundingSphere===null&&(this.boundingSphere=new c.Sphere),this.boundingSphere.setFromPoints(this.vertices)},mergeMorph:function(g,w){var _=this.morphTargets.length,E=this.morphTargets,S=g.morphTargets,x=this.morphColors.length,T=this.morphColors,C=g.morphColors;if(0<_&&_==S.length)for(var L=0,A=E.length;L<A;L++){for(var R=E[L],I=S[L],O=0,N=I.vertices.length;O<N;O++){var M=I.vertices[O],P=M.clone();w!==void 0&&P.applyMatrix4(w),R.vertices.push(P)}if(R.normals&&I.normals)for(var B=0;B<I.normals.length;B+=3)y.set(I.normals2[B],I.normals2[B+1],I.normals2[B+2]),w!==void 0&&y.applyMatrix4(w),R.normals.push(y.x,y.y,y.z)}if(0<x&&x==C.length)for(var D=0,V=T.length;D<V;D++)for(var G=T[D],H=C[D],K=0,te=H.colors;K<te;K++)G.colors.push(H.colors[K].clone())},merge:function(g,w){var _=2<arguments.length&&arguments[2]!==void 0?arguments[2]:0;if(!(g&&g.isGeometry))return void console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",g);var E,S=this.vertices.length,x=this.vertices,T=g.vertices,C=g.normals,L=this.faces,A=g.faces,R=this.colors,I=g.colors;w!==void 0&&(E=new c.Matrix3().getNormalMatrix(w));for(var O=0,N=T.length;O<N;O++){var M=T[O],P=M.clone();w!==void 0&&P.applyMatrix4(w),x.push(P)}for(var B=0;B<C.length;B+=3)y.set(C[B],C[B+1],C[B+2]),w!==void 0&&y.applyMatrix4(w),this.normals.push(y.x,y.y,y.z);for(var D=0,V=I.length;D<V;D++)typeof I[D]=="number"?R.push(I[D]):R.push(I[D].clone());for(var G=0,H=A.length;G<H;G++){var K=A[G],te=void 0,W=void 0,z=K.vertexNormals,j=K.vertexColors,Z=new b(K.a+S,K.b+S,K.c+S);Z.normal.copy(K.normal),E!==void 0&&Z.normal.applyMatrix3(E).normalize();for(var Q=0,ee=z.length;Q<ee;Q++)te=z[Q].clone(),E!==void 0&&te.applyMatrix3(E).normalize(),Z.vertexNormals.push(te);Z.color.copy(K.color);for(var ie=0,q=j.length;ie<q;ie++)W=j[ie],Z.vertexColors.push(W.clone());Z.materialIndex=K.materialIndex+_,L.push(Z)}for(var ne,F=0,$=g.faceVertexUvs.length;F<$;F++){ne=g.faceVertexUvs[F],this.faceVertexUvs[F]===void 0&&(this.faceVertexUvs[F]=[]);for(var J=0,k=ne.length;J<k;J++){for(var U=ne[J],oe=[],le=0,ae=U.length;le<ae;le++)oe.push(U[le].clone());this.faceVertexUvs[F].push(oe)}}this.mergeMorph(g,w)},mergeMesh:function(g){return g&&g.isMesh?(g.matrixAutoUpdate&&g.updateMatrix(),void this.merge(g.geometry,g.matrix)):void console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",g)},mergeVertices:function(){for(var g=0<arguments.length&&arguments[0]!==void 0?arguments[0]:4,w={},_=[],E=[],S=Math.pow(10,g),x=0,T=this.vertices.length;x<T;x++){var C=this.vertices[x],L=Math.round(C.x*S)+"_"+Math.round(C.y*S)+"_"+Math.round(C.z*S);w[L]===void 0?(w[L]=x,_.push(this.vertices[x]),E[x]=_.length-1):E[x]=E[w[L]]}for(var A,R=[],I=0,O=this.faces.length;I<O;I++){A=this.faces[I],A.a=E[A.a],A.b=E[A.b],A.c=E[A.c];for(var N=[A.a,A.b,A.c],M=0;3>M;M++)if(N[M]===N[(M+1)%3]){R.push(I);break}}for(var P,B=R.length-1;0<=B;B--){P=R[B],this.faces.splice(P,1);for(var D=0,V=this.faceVertexUvs.length;D<V;D++)this.faceVertexUvs[D].splice(P,1)}var G=this.vertices.length-_.length;return this.vertices=_,G},setFromPoints:function(g){this.vertices=[];for(var w,_=0,E=g.length;_<E;_++)w=g[_],this.vertices.push(new c.Vector3(w.x,w.y,w.z||0));return this},sortFacesByMaterialIndex:function(){for(var g=this.faces,w=g.length,_=0;_<w;_++)g[_]._id=_;g.sort(function(A,R){return A.materialIndex-R.materialIndex});var E,S,x=this.faceVertexUvs[0],T=this.faceVertexUvs[1];x&&x.length===w&&(E=[]),T&&T.length===w&&(S=[]);for(var C,L=0;L<w;L++)C=g[L]._id,E&&E.push(x[C]),S&&S.push(T[C]);E&&(this.faceVertexUvs[0]=E),S&&(this.faceVertexUvs[1]=S)},toJSON:function(){function g(q,ne,F){return F?q|1<<ne:q&~(1<<ne)}function w(q){var ne=q.x.toString()+q.y.toString()+q.z.toString();return O[ne]===void 0&&(O[ne]=I.length/3,I.push(q.x,q.y,q.z)),O[ne]}function _(q){var ne=q.r.toString()+q.g.toString()+q.b.toString();return M[ne]===void 0&&(M[ne]=N.length,N.push(q.getHex())),M[ne]}function E(q){var ne=q.x.toString()+q.y.toString();return B[ne]===void 0&&(B[ne]=P.length/2,P.push(q.x,q.y)),B[ne]}var S={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(S.uuid=this.uuid,S.type=this.type,this.name!==""&&(S.name=this.name),this.parameters!==void 0){var x=this.parameters;for(var T in x)x[T]!==void 0&&(S[T]=x[T]);return S}for(var C,L=[],A=0;A<this.vertices.length;A++)C=this.vertices[A],L.push(C.x,C.y,C.z);for(var R=[],I=[],O={},N=[],M={},P=[],B={},D=0;D<this.faces.length;D++){var V=this.faces[D],G=!0,H=!1,K=this.faceVertexUvs[0][D]!==void 0,te=0<V.normal.length(),W=0<V.vertexNormals.length,z=V.color.r!==1||V.color.g!==1||V.color.b!==1,j=0<V.vertexColors.length,Z=0;if(Z=g(Z,0,0),Z=g(Z,1,G),Z=g(Z,2,H),Z=g(Z,3,K),Z=g(Z,4,te),Z=g(Z,5,W),Z=g(Z,6,z),Z=g(Z,7,j),R.push(Z),R.push(V.a,V.b,V.c),R.push(V.materialIndex),K){var Q=this.faceVertexUvs[0][D];R.push(E(Q[0]),E(Q[1]),E(Q[2]))}if(te&&R.push(w(V.normal)),W){var ee=V.vertexNormals;R.push(w(ee[0]),w(ee[1]),w(ee[2]))}if(z&&R.push(_(V.color)),j){var ie=V.vertexColors;R.push(_(ie[0]),_(ie[1]),_(ie[2]))}}return S.data={},S.data.vertices=L,S.data.normals=I,0<N.length&&(S.data.colors=N),0<P.length&&(S.data.uvs=[P]),S.data.faces=R,S},clone:function(){return new p().copy(this)},copy:function(g){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=g.name;for(var w=g.vertices,_=0,E=w.length;_<E;_++)this.vertices.push(w[_].clone());for(var S=g.colors,x=0,T=S.length;x<T;x++)this.colors.push(S[x].clone());for(var C=g.faces,L=0,A=C.length;L<A;L++)this.faces.push(C[L].clone());for(var R,I=0,O=g.faceVertexUvs.length;I<O;I++){R=g.faceVertexUvs[I],this.faceVertexUvs[I]===void 0&&(this.faceVertexUvs[I]=[]);for(var N=0,M=R.length;N<M;N++){for(var P,B=R[N],D=[],V=0,G=B.length;V<G;V++)P=B[V],D.push(P.clone());this.faceVertexUvs[I].push(D)}}for(var H,K=g.morphTargets,te=0,W=K.length;te<W;te++){if(H={},H.name=K[te].name,K[te].vertices!==void 0){H.vertices=[];for(var z=0,j=K[te].vertices.length;z<j;z++)H.vertices.push(K[te].vertices[z].clone())}if(K[te].normals!==void 0){H.normals=[];for(var Z=0,Q=K[te].normals.length;Z<Q;Z++)H.normals.push(K[te].normals[Z].clone())}this.morphTargets.push(H)}for(var ee,ie=g.morphNormals,q=0,ne=ie.length;q<ne;q++){if(ee={},ie[q].vertexNormals!==void 0){ee.vertexNormals=[];for(var F=0,$=ie[q].vertexNormals.length;F<$;F++){var J=ie[q].vertexNormals[F],k={};k.a=J.a.clone(),k.b=J.b.clone(),k.c=J.c.clone(),ee.vertexNormals.push(k)}}if(ie[q].faceNormals!==void 0){ee.faceNormals=[];for(var U=0,oe=ie[q].faceNormals.length;U<oe;U++)ee.faceNormals.push(ie[q].faceNormals[U].clone())}this.morphNormals.push(ee)}for(var le=g.skinWeights,ae=0,he=le.length;ae<he;ae++)this.skinWeights.push(le[ae].clone());for(var ve=g.skinIndices,we=0,ce=ve.length;we<ce;we++)this.skinIndices.push(ve[we].clone());for(var ge=g.lineDistances,re=0,xe=ge.length;re<xe;re++)this.lineDistances.push(ge[re]);var fe=g.boundingBox;fe!==null&&(this.boundingBox=fe.clone());var ye=g.boundingSphere;return ye!==null&&(this.boundingSphere=ye.clone()),this.elementsNeedUpdate=g.elementsNeedUpdate,this.verticesNeedUpdate=g.verticesNeedUpdate,this.uvsNeedUpdate=g.uvsNeedUpdate,this.normalsNeedUpdate=g.normalsNeedUpdate,this.colorsNeedUpdate=g.colorsNeedUpdate,this.lineDistancesNeedUpdate=g.lineDistancesNeedUpdate,this.groupsNeedUpdate=g.groupsNeedUpdate,this},computeGroups(){var v,g,w=[],_=void 0,E=this.faces;for(g=0;g<E.length;g++){var S=E[g];S.materialIndex!==_&&(_=S.materialIndex,v!==void 0&&(v.count=3*g-v.start,w.push(v)),v={start:3*g,materialIndex:_})}return v!==void 0&&(v.count=3*g-v.start,w.push(v)),w},toBufferGeometry:function(){var g=new d().fromGeometry(this),w=new c.BufferGeometry,_=new Float32Array(3*g.vertices.length);if(w.setAttribute("position",new c.BufferAttribute(_,3).copyVector3sArray(g.vertices)),0<g.normals.length){var E=new Float32Array(3*g.normals.length);w.setAttribute("normal",new c.BufferAttribute(E,3).copyVector3sArray(g.normals))}if(0<g.colors.length){var S=new Float32Array(3*g.colors.length);w.setAttribute("color",new c.BufferAttribute(S,3).copyColorsArray(g.colors))}if(0<g.uvs.length){var x=new Float32Array(2*g.uvs.length);w.setAttribute("uv",new c.BufferAttribute(x,2).copyVector2sArray(g.uvs))}if(0<g.uvs2.length){var T=new Float32Array(2*g.uvs2.length);w.setAttribute("uv2",new c.BufferAttribute(T,2).copyVector2sArray(g.uvs2))}for(var C in w.groups=g.groups,g.morphTargets){for(var L=[],A=g.morphTargets[C],R=0,I=A.length;R<I;R++){var O=A[R],N=new c.Float32BufferAttribute(3*O.data.length,3);N.name=O.name,L.push(N.copyVector3sArray(O.data))}w.morphAttributes[C]=L}if(0<g.skinIndices.length){var M=new c.Float32BufferAttribute(4*g.skinIndices.length,4);w.setAttribute("skinIndex",M.copyVector4sArray(g.skinIndices))}if(0<g.skinWeights.length){var P=new c.Float32BufferAttribute(4*g.skinWeights.length,4);w.setAttribute("skinWeight",P.copyVector4sArray(g.skinWeights))}return g.boundingSphere!==null&&(w.boundingSphere=g.boundingSphere.clone()),g.boundingBox!==null&&(w.boundingBox=g.boundingBox.clone()),w},toIndexedBufferGeometry:function(){var g=new c.BufferGeometry,w=new Float32Array(3*this.vertices.length);if(g.setAttribute("position",new c.BufferAttribute(w,3).copyVector3sArray(this.vertices)),0<this.normals.length){var _=new Float32Array(this.normals.length),E=new c.BufferAttribute(_,3).copyArray(this.normals);g.setAttribute("normal",E)}if(0<this.uvs.length&&0<this.uvs[0].length){var S=new Float32Array(2*this.uvs[0].length);g.setAttribute("uv",new c.BufferAttribute(S,2).copyArray(this.uvs[0]))}if(1<this.uvs.length&&0<this.uvs[1].length){var x=new Float32Array(2*this.uvs[1].length);g.setAttribute("uv2",new c.BufferAttribute(x,2).copyArray(this.uvs[1]))}if(0<this.colors.length){for(var T=[],C=0;C<this.colors.length;C++)T.push(new c.Color(this.colors[C]));var L=new Float32Array(3*T.length);g.setAttribute("color",new c.BufferAttribute(L,3).copyColorsArray(T))}else{for(var A=new Float32Array(3*this.vertices.length),R=0;R<3*this.vertices.length;R++)A[R]=1;g.setAttribute("color",new c.BufferAttribute(A,3))}if(0<this.faces.length){for(var I=[],O=[],N=0;N<this.faces.length;N++){O.push(this.faces[N].a,this.faces[N].b,this.faces[N].c);var M=this.faces[N].vertexColors;if(M.length===3)I.push(M[0],M[1],M[2]);else{var P=this.faces[N].color;I.push(P,P,P)}}g.setIndex(O),g.groups=this.computeGroups()}if(0<this.morphTargets.length){for(var B=[],D=[],V=0,G=this.morphTargets.length;V<G;V++){var H=this.morphTargets[V],K=new c.Float32BufferAttribute(3*H.vertices.length,3);if(K.name=H.name,B.push(K.copyVector3sArray(H.vertices)),H.normals){var te=new c.Float32BufferAttribute(3*H.normals.length,3);te.name=H.name,D.push(te.copyVector3sArray(H.normals))}}g.morphAttributes.position=B,g.morphAttributes.normal=D}if(0<this.skinIndices.length){var W=new c.Float32BufferAttribute(4*this.skinIndices.length,4);g.setAttribute("skinIndex",W.copyVector4sArray(this.skinIndices))}if(0<this.skinWeights.length){var z=new c.Float32BufferAttribute(4*this.skinWeights.length,4);g.setAttribute("skinWeight",z.copyVector4sArray(this.skinWeights))}return this.boundingSphere!==null&&(g.boundingSphere=this.boundingSphere.clone()),this.boundingBox!==null&&(g.boundingBox=this.boundingBox.clone()),g},computeTangents:function(){console.error("THREE.Geometry: .computeTangents() has been removed.")},computeLineDistances:function(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")},applyMatrix:function(g){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(g)},dispose:function(){this.dispatchEvent({type:"dispose"})}}),p.createBufferGeometryFromObject=function(v){var g=new c.BufferGeometry,w=v.geometry;if(v.isPoints||v.isLine){var _=new c.Float32BufferAttribute(3*w.vertices.length,3),E=new c.Float32BufferAttribute(3*w.colors.length,3);if(g.setAttribute("position",_.copyVector3sArray(w.vertices)),g.setAttribute("color",E.copyColorsArray(w.colors)),w.lineDistances&&w.lineDistances.length===w.vertices.length){var S=new c.Float32BufferAttribute(w.lineDistances.length,1);g.setAttribute("lineDistance",S.copyArray(w.lineDistances))}w.boundingSphere!==null&&(g.boundingSphere=w.boundingSphere.clone()),w.boundingBox!==null&&(g.boundingBox=w.boundingBox.clone())}else v.isMesh&&(g=w.toBufferGeometry());return g};class d{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(g){var w,_,E=[],S=void 0,x=g.faces;for(_=0;_<x.length;_++){var T=x[_];T.materialIndex!==S&&(S=T.materialIndex,w!==void 0&&(w.count=3*_-w.start,E.push(w)),w={start:3*_,materialIndex:S})}w!==void 0&&(w.count=3*_-w.start,E.push(w)),this.groups=E}fromGeometry(g){var w,_=g.faces,E=g.vertices,S=g.faceVertexUvs,x=S[0]&&0<S[0].length,T=S[1]&&0<S[1].length,C=g.morphTargets,L=C.length;if(0<L){w=[];for(var A=0;A<L;A++)w[A]={name:C[A].name,data:[]};this.morphTargets.position=w}var R,I=g.morphNormals,O=I.length;if(0<O){R=[];for(var N=0;N<O;N++)R[N]={name:I[N].name,data:[]};this.morphTargets.normal=R}var M=g.skinIndices,P=g.skinWeights,B=M.length===E.length,D=P.length===E.length;0<E.length&&_.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(var V,G=0;G<_.length;G++){V=_[G],this.vertices.push(E[V.a],E[V.b],E[V.c]);var H=V.vertexNormals;if(H.length===3)this.normals.push(H[0],H[1],H[2]);else{var K=V.normal;this.normals.push(K,K,K)}var te=V.vertexColors;if(te.length===3)this.colors.push(te[0],te[1],te[2]);else{var W=V.color;this.colors.push(W,W,W)}if(x===!0){var z=S[0][G];z===void 0?(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",G),this.uvs.push(new c.Vector2,new c.Vector2,new c.Vector2)):this.uvs.push(z[0],z[1],z[2])}if(T===!0){var j=S[1][G];j===void 0?(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",G),this.uvs2.push(new c.Vector2,new c.Vector2,new c.Vector2)):this.uvs2.push(j[0],j[1],j[2])}for(var Z,Q=0;Q<L;Q++)Z=C[Q].vertices,w[Q].data.push(Z[V.a],Z[V.b],Z[V.c]);for(var ee,ie=0;ie<O;ie++)ee=I[ie].vertexNormals[G],R[ie].data.push(ee.a,ee.b,ee.c);B&&this.skinIndices.push(M[V.a],M[V.b],M[V.c]),D&&this.skinWeights.push(P[V.a],P[V.b],P[V.c])}return this.computeGroups(g),this.verticesNeedUpdate=g.verticesNeedUpdate,this.normalsNeedUpdate=g.normalsNeedUpdate,this.colorsNeedUpdate=g.colorsNeedUpdate,this.uvsNeedUpdate=g.uvsNeedUpdate,this.groupsNeedUpdate=g.groupsNeedUpdate,g.boundingSphere!==null&&(this.boundingSphere=g.boundingSphere.clone()),g.boundingBox!==null&&(this.boundingBox=g.boundingBox.clone()),this}}class b{constructor(g,w,_,E,S){var x=5<arguments.length&&arguments[5]!==void 0?arguments[5]:0;this.a=g,this.b=w,this.c=_,this.normal=E&&E.isVector3?E:new c.Vector3,this.vertexNormals=Array.isArray(E)?E:[],this.color=S&&S.isColor?S:new c.Color,this.vertexColors=Array.isArray(S)?S:[],this.materialIndex=x}clone(){return new this.constructor().copy(this)}copy(g){this.a=g.a,this.b=g.b,this.c=g.c,this.normal.copy(g.normal),this.color.copy(g.color),this.materialIndex=g.materialIndex;for(var w=0,_=g.vertexNormals.length;w<_;w++)this.vertexNormals[w]=g.vertexNormals[w].clone();for(var E=0,S=g.vertexColors.length;E<S;E++)this.vertexColors[E]=g.vertexColors[E].clone();return this}}},o=>{o.exports=kB},o=>{o.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sHDgwCEMBJZu0AAAAdaVRYdENvbW1lbnQAAAAAAENyZWF0ZWQgd2l0aCBHSU1QZC5lBwAABM5JREFUWMO1V0tPG2cUPZ4Hxh6DazIOrjFNqJs0FIMqWFgWQkatsmvVbtggKlSVRVf5AWz4AWz4AUSKEChll19QJYSXkECuhFxsHjEhxCYm+DWGMZ5HF72DJq4bAzFXurI0M/I5997v3u9cC65vTJVn2lX/xHINQOYSBLTLEuIuCWw4Z3IGAEvf6ASmVHjNzHCXBG4A0AjACsAOwEbO0nsFQBnAGYASAIl+ZRMR7SolMEdsByD09fV5R0ZGgg8ePPjW5/N1iqLYpuu6RZblciKR2I9Go69evnwZnZ+fjwI4IS8AKBIRzeQfJWCANwKwh0KhtrGxsYehUOin1tbW+zzP23ietzY2NnIAoGmaLsuyUiqVyvl8XtrY2NiamZn589mzZxsAUgCOAeQAnFI2tI+VxIjaAeDzoaGh7xYWFuZOTk6OZVk+12uYqqq6JEnn0Wg0OT4+/geAXwGEAdwDIFJQXC1wO4DWR48e/RCPxxclSSroVzRFUbSDg4P848ePFwH8DuAhkWih83TRQWxFOXgAwvDwcOfo6OhvXV1d39tsNtuVBwTDWBwOh1UUxVsMw1hXVlbSdCgNV43uYSvrHg6H24aHh38eHBz85TrgF9FYLHA4HLzH43FvbW2d7u/vG+dANp8FpqIlbd3d3V8Fg8EfBUFw4BONZVmL3+9vHhkZCQL4AoAHgJPK8G+yzC0XDofdoVAo5PP5vkadTBAEtr+/39ff3x8gAp/RPOEqx2qjx+NpvXv3bk9DQ0NDvQgwDIOWlhZrMBj8kgi0UJdxRgYMArzL5XJ7vd57qLPZ7Xamp6fnNgBXtQxcjFuHw+Hyer3t9SYgCAITCAScAJoBNNEY/08GOFVVrfVMv7kMNDntFD1vjIAPrlRN0xjckOm6biFQ3jwNPwDMZrOnqVTqfb3Bi8Wivru7W/VCYkwPlKOjo0IikXh7EwQikYgE4Nw0CfXKDCipVCoTj8df3QABbW1tLUc6oUgkFPMkVACUNjc337148eKvw8PDbJ2jP1taWkoCyNDVXDSECmNSK4qiKNLq6urW8+fPI/UicHx8rD59+jSVy+WOAKSJhKENwFItLtoxk8mwsixzHR0dHe3t7c5PAU+n09rs7OzJkydPYqVSaQfANoDXALIk31S2smU1TWMPDg7K5XKZ7+3t9TudTut1U7+wsFCcmJiIpdPpbQBxADsAknQWymYCOukBHYCuKApisdhpMpnURFEU79y503TVyKenpzOTk5M7e3t7MQKPV0Zv1gNm+awB0MvlshqLxfLb29uyJElWURSbXC4XXyvqxcXFs6mpqeTc3Nzu3t7e3wQcA7BPZ8Cov1pNlJplmQtAG8MwHV6v95tAINA5MDBwPxAIuLu6upr8fr/VAN3c3JQjkcjZ+vp6fnl5+d2bN29SuVzuNYAEpf01CdRChUL+X1VskHACuA3Ay3Fcu9vt7nA6nZ7m5uYWQRCaNE3jVVW15PP580KhIGUymWw2m00DOAJwSP4WwPtq4LX2Ao6USxNlQyS/RcQcdLGwlNIz6vEMAaZpNzCk2Pll94LK/cDYimxERiBwG10sxjgvEZBE0UpE6vxj+0Ct5bTaXthgEhRmja8QWNkkPGsuIpfdjpkK+cZUWTC0KredVmtD/gdlSl6EG4AMvQAAAABJRU5ErkJggg=="},(o,l)=>{l.augmentMorphColor=function(){return function(u){u.vertexShader=u.vertexShader.replace("#include <color_pars_vertex>",["varying vec3 vColor;","attribute vec3 morphColor0;","attribute vec3 morphColor1;"].join(`
3182
+ `}),y=y+"new (("+e.toString().replace("ENTRY_MODULE",JSON.stringify(c))+")({"+m.main.map(function(g){return""+JSON.stringify(g)+": "+h.main[g].toString()}).join(",")+"}))(self);";var p=new window.Blob([y],{type:"text/javascript"});if(f.bare)return p;var d=window.URL||window.webkitURL||window.mozURL||window.msURL,b=d.createObjectURL(p),v=new window.Worker(b);return v.objectURL=b,v}}(Pf)),Pf.exports}function uF(n){var e=this.constructor;return this.then(function(t){return e.resolve(n()).then(function(){return t})},function(t){return e.resolve(n()).then(function(){return e.reject(t)})})}function dF(n){var e=this;return new e(function(t,i){if(!(n&&typeof n.length<"u"))return i(new TypeError(typeof n+" "+n+" is not iterable(cannot read property Symbol(Symbol.iterator))"));var r=Array.prototype.slice.call(n);if(r.length===0)return t([]);var s=r.length;function o(u,c){if(c&&(typeof c=="object"||typeof c=="function")){var f=c.then;if(typeof f=="function"){f.call(c,function(h){o(u,h)},function(h){r[u]={status:"rejected",reason:h},--s===0&&t(r)});return}}r[u]={status:"fulfilled",value:c},--s===0&&t(r)}for(var l=0;l<r.length;l++)o(l,r[l])})}function Ex(n,e){this.name="AggregateError",this.errors=n,this.message=e||""}Ex.prototype=Error.prototype;function hF(n){var e=this;return new e(function(t,i){if(!(n&&typeof n.length<"u"))return i(new TypeError("Promise.any accepts an array"));var r=Array.prototype.slice.call(n);if(r.length===0)return i();for(var s=[],o=0;o<r.length;o++)try{e.resolve(r[o]).then(t).catch(function(l){s.push(l),s.length===r.length&&i(new Ex(s,"All promises were rejected"))})}catch(l){i(l)}})}var fF=setTimeout;function Cx(n){return!!(n&&typeof n.length<"u")}function pF(){}function mF(n,e){return function(){n.apply(e,arguments)}}function wt(n){if(!(this instanceof wt))throw new TypeError("Promises must be constructed via new");if(typeof n!="function")throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],Rx(n,this)}function Ax(n,e){for(;n._state===3;)n=n._value;if(n._state===0){n._deferreds.push(e);return}n._handled=!0,wt._immediateFn(function(){var t=n._state===1?e.onFulfilled:e.onRejected;if(t===null){(n._state===1?If:Ua)(e.promise,n._value);return}var i;try{i=t(n._value)}catch(r){Ua(e.promise,r);return}If(e.promise,i)})}function If(n,e){try{if(e===n)throw new TypeError("A promise cannot be resolved with itself.");if(e&&(typeof e=="object"||typeof e=="function")){var t=e.then;if(e instanceof wt){n._state=3,n._value=e,Of(n);return}else if(typeof t=="function"){Rx(mF(t,e),n);return}}n._state=1,n._value=e,Of(n)}catch(i){Ua(n,i)}}function Ua(n,e){n._state=2,n._value=e,Of(n)}function Of(n){n._state===2&&n._deferreds.length===0&&wt._immediateFn(function(){n._handled||wt._unhandledRejectionFn(n._value)});for(var e=0,t=n._deferreds.length;e<t;e++)Ax(n,n._deferreds[e]);n._deferreds=null}function gF(n,e,t){this.onFulfilled=typeof n=="function"?n:null,this.onRejected=typeof e=="function"?e:null,this.promise=t}function Rx(n,e){var t=!1;try{n(function(i){t||(t=!0,If(e,i))},function(i){t||(t=!0,Ua(e,i))})}catch(i){if(t)return;t=!0,Ua(e,i)}}wt.prototype.catch=function(n){return this.then(null,n)},wt.prototype.then=function(n,e){var t=new this.constructor(pF);return Ax(this,new gF(n,e,t)),t},wt.prototype.finally=uF,wt.all=function(n){return new wt(function(e,t){if(!Cx(n))return t(new TypeError("Promise.all accepts an array"));var i=Array.prototype.slice.call(n);if(i.length===0)return e([]);var r=i.length;function s(l,u){try{if(u&&(typeof u=="object"||typeof u=="function")){var c=u.then;if(typeof c=="function"){c.call(u,function(f){s(l,f)},t);return}}i[l]=u,--r===0&&e(i)}catch(f){t(f)}}for(var o=0;o<i.length;o++)s(o,i[o])})},wt.any=hF,wt.allSettled=dF,wt.resolve=function(n){return n&&typeof n=="object"&&n.constructor===wt?n:new wt(function(e){e(n)})},wt.reject=function(n){return new wt(function(e,t){t(n)})},wt.race=function(n){return new wt(function(e,t){if(!Cx(n))return t(new TypeError("Promise.race accepts an array"));for(var i=0,r=n.length;i<r;i++)wt.resolve(n[i]).then(e,t)})},wt._immediateFn=typeof setImmediate=="function"&&function(n){setImmediate(n)}||function(n){fF(n,0)},wt._unhandledRejectionFn=function(e){typeof console<"u"&&console&&console.warn("Possible Unhandled Promise Rejection:",e)};const yF=Ll(Object.freeze(Object.defineProperty({__proto__:null,default:wt},Symbol.toStringTag,{value:"Module"})));(function(n,e){(function(i,r){n.exports=r()})(Ki,()=>(()=>{var t=[(o,l,u)=>{u(1);var c=u(2),f=c.version,h=function(){this.Revision=f,this.defaultMaterialColor=16777215,this.defaultOpacity=1,this.modelPrefix=void 0,this.Geometry=u(3).Geometry,this.Glyph=u(16).Glyph,this.Glyphset=u(18).Glyphset,this.Pointset=u(22).Pointset,this.Label=u(17).Label,this.Lines=u(24).Lines,this.TextureArray=u(25).TextureArray,this.TextureSlides=u(27).TextureSlides,this.Renderer=u(30).Renderer,this.Scene=u(32).Scene,this.GeometryCSG=u(50).GeometryCSG,this.GlyphsetCSG=u(56).GlyphsetCSG,this.Viewport=u(43).Viewport,this.CameraControls=u(43).CameraControls,this.SmoothCameraTransition=u(43).SmoothCameraTransition,this.RayCaster=u(43).RayCaster,this.CameraAutoTumble=u(43).CameraAutoTumble,this.StereoEffect=u(43).StereoEffect,this.loadExternalFile=u(5).loadExternalFile,this.loadExternalFiles=u(5).loadExternalFiles,this.THREE=u(4)};o.exports=new h},o=>{o.exports=uL()},o=>{o.exports=JSON.parse('{"name":"zincjs","version":"1.11.4","description":"ZincJS (Web-based-Zinc-Visualisation)","main":"build/zinc.js","directories":{"doc":"docs"},"files":["package.json","LICENSE","README.md","src/*","build/zinc.js","build/zinc.frontend.js","build/zinc.js.map","webpack.config.js"],"scripts":{"build-bundle":"webpack --config webpack.frontend.js; webpack --config webpack.backend.js","build-backend":"webpack --config webpack.backend.js","test":"npm --prefix ./test install && npm --prefix ./test run test-ci","changelog":"auto-changelog -p --output CHANGELOG.md --template keepachangelog","jsdoc":"jsdoc -c jsdoc_conf.json","version":"npm run build-bundle;npm run jsdoc;npm run changelog; git add CHANGELOG.md docs","release:beta":"npm version prerelease --preid=beta; npm publish --tag beta","release:minor":"npm version minor; npm publish","release:patch":"npm version patch; npm publish"},"repository":{"type":"git","url":"git+https://github.com/alan-wu/ZincJS.git"},"keywords":["library","webgl","3d","zincjs"],"author":"Alan Wu <alan.wu@auckland.ac.nz>","license":"MIT","bugs":{"url":"https://github.com/alan-wu/ZincJS/issues"},"homepage":"http://alan-wu.github.io/ZincJS/","devDependencies":{"@babel/core":"^7.23.9","@babel/preset-env":"^7.23.9","auto-changelog":"^2.4.0","babel-loader":"^9.1.3","babel-preset-minify":"^0.5.1","file-loader":"^6.2.0","jsdoc":"^4.0.2","raw-loader":"^4.0.2","webpack":"^5.90.3","webpack-cli":"^5.1.4","webpack-node-externals":"^3.0.0"},"dependencies":{"css-element-queries":"^1.2.2","lodash":"^4.17.19","promise-polyfill":"^8.1.3","three":"^0.130.1","three-spritetext":"1.6.2","url-loader":"^4.1.1","url-polyfill":"^1.1.7","webworkify-webpack":"^2.1.5"}}')},function(o,l,u){var c=u(4),f=u(5).toBufferGeometry,h=(y,p,d)=>{var b=f(y,d),v=!1;1>d.opacity&&(v=!0);var g;if(b._video===void 0){var w=d.localTimeEnabled||d.localMorphColour;p?(g=p,g.morphTargets=w,g.morphNormals=d.localTimeEnabled):b instanceof c.BufferGeometry&&b.attributes.color===void 0?g=new c.MeshPhongMaterial({color:d.colour,morphTargets:w,morphNormals:d.localTimeEnabled,transparent:v,opacity:d.opacity,side:c.DoubleSide}):g=new c.MeshPhongMaterial({color:d.colour,morphTargets:w,morphNormals:d.localTimeEnabled,vertexColors:c.VertexColors,transparent:v,opacity:d.opacity,side:c.DoubleSide}),d.localMorphColour&&b.morphAttributes.color&&(g.onBeforeCompile=u(9).augmentMorphColor())}else{var _=b._video.createCanvasVideoTexture();g=new c.MeshBasicMaterial({morphTargets:d.localTimeEnabled,color:new c.Color(1,1,1),transparent:v,opacity:d.opacity,map:_,side:c.DoubleSide}),this.videoHandler=b._video}return new c.Mesh(b,g)},m=function(){u(10).ZincObject.call(this),this.videoHandler=void 0,this.isGeometry=!0,this.createMesh=(y,p,d)=>{if(!(this.morph&&this.morph.geometry&&y!=null)){var b=h(y,p,d);this.setMesh(b,d.localTimeEnabled,d.localMorphColour)}},this.calculateUVs=()=>{this.geometry.computeBoundingBox();var y=this.geometry.boundingBox.max,p=this.geometry.boundingBox.min,d=new c.Vector2(0-p.x,0-p.y),b=new c.Vector2(y.x-p.x,y.y-p.y);this.geometry.faceVertexUvs[0]=[];for(var v=0;v<this.geometry.faces.length;v++){var g=this.geometry.vertices[this.geometry.faces[v].a],w=this.geometry.vertices[this.geometry.faces[v].b],_=this.geometry.vertices[this.geometry.faces[v].c];geometry.faceVertexUvs[0].push([new c.Vector2((g.x+d.x)/b.x,(g.y+d.y)/b.y),new c.Vector2((w.x+d.x)/b.x,(w.y+d.y)/b.y),new c.Vector2((_.x+d.x)/b.x,(_.y+d.y)/b.y)])}geometry.uvsNeedUpdate=!0},this.checkTransparentMesh=function(){this._lod.checkTransparentMesh()},this.setWireframe=y=>{this.morph.material.wireframe=y},this.editVertices=function(y,p){if(y&&y.length){var d=this.getMorph(),b=d.geometry.getAttribute("position");if(!d||0>p)return;var v=3*p;y.forEach(g=>{b.array[v++]=g[0],b.array[v++]=g[1],b.array[v++]=g[2]}),b.needsUpdate=!0,d.geometry.computeBoundingBox(),d.geometry.computeBoundingSphere(),this.boundingBoxUpdateRequired=!0}}};m.prototype=Object.create(u(10).ZincObject.prototype),l.Geometry=m},o=>{o.exports=SB},(o,l,u)=>{function c(x){throw new TypeError('"'+x+'" is read-only')}var f=u(4),h=u(6).Geometry,m=u(7).default;function y(x){var T=x,C=u(0).modelPrefix;return C&&(C[C.length-1]!="/"&&c("prefix"),/^(?:[a-z]+:)?\/\//i.test(x)||(T=C+x)),T}function p(x,T){var C=(A,R)=>{try{var I=new URL(A,R).href;if(A&&2>A.split("?").length){var O=R.split("?");O.length===2&&(I=I+"?"+O[1])}return I}catch{console.error("There is an issue creting the url link with: ".concat(A,"."))}};if(!Array.isArray(x))return C(x,T);var L=[];return x.forEach(A=>{L.push(C(A,T))}),L}function d(x,T,C,L,A){var R=x.morphTargetInfluences,I=void 0;x.geometry&&(I=x.geometry.morphAttributes);var O=!1;if(R&&I&&I.position){L.set(0,0,0),A.set(0,0,0);for(var N=0;N<R.length;N++)0<R[N]&&(O=!0,C.setFromArray(I.position[N].array),L.add(C.min.multiplyScalar(R[N])),A.add(C.max.multiplyScalar(R[N])));O&&T.set(L,A)}O||T.setFromBufferAttribute(x.geometry.attributes.position),x.updateWorldMatrix(!0,!0),T.applyMatrix4(x.matrixWorld)}function b(x,T,C,L){var A=new XMLHttpRequest;A.open("GET",y(x),!0),A.onreadystatechange=()=>{A.readyState==4&&(A.status==200?C(A.responseText,T):L(x))},A.send(null)}function v(x,T,C){function L(N,M){I[M]=N,R++,R==A&&T(I)}for(var A=x.length,R=0,I=[],O=0;O<A;O++)b(x[O],O,L,C)}l.getColorsRGB=(x,T)=>{var C=Math.floor(T/3),L=T%3,A=0;L==0?A=x[C].r:L==1?A=x[C].g:L==2&&(A=x[C].b);var R=new f.Color(A);return[R.r,R.g,R.b]},l.updateMorphColorAttribute=function(x,T){if(T&&x&&x.morphAttributes&&x.morphAttributes.color){var C=x.morphAttributes.color,L=T.morphTargetInfluences,A=L.length;x.deleteAttribute("morphColor0"),x.deleteAttribute("morphColor1");for(var R=0,I=[],O=0;1>R||O<A;O++)0<L[O]&&(R++,I.push([O,L[O]]));I.length==2?(x.setAttribute("morphColor0",C[I[0][0]]),x.setAttribute("morphColor1",C[I[1][0]])):I.length==1&&(x.setAttribute("morphColor0",C[I[0][0]]),x.setAttribute("morphColor1",C[I[0][0]]))}},l.toBufferGeometry=(x,T)=>{var C;return x instanceof h?(T.localTimeEnabled&&!x.morphNormalsReady&&(x.morphNormals==null||x.morphNormals.length==0)&&x.computeMorphNormals(),C=x.toIndexedBufferGeometry(),T.localMorphColour&&g(x,C)):x instanceof f.BufferGeometry&&(C=x.clone()),C.colorsNeedUpdate=!0,C.computeBoundingBox(),C.computeBoundingSphere(),x._video&&(C._video=x._video),C},l.copyMorphColorsToBufferGeometry=(x,T)=>{if(x&&x.morphColors&&0<x.morphColors.length){for(var C=[],L=x.morphColors,A=u(5).getColorsRGB,R=0,I=L.length;R<I;R++){for(var O=L[R],N=[],M=0;M<x.faces.length;M++){var P=x.faces[M],B=A(O.colors,P.a);N.push(B[0],B[1],B[2]),B=A(O.colors,P.b),N.push(B[0],B[1],B[2]),B=A(O.colors,P.c),N.push(B[0],B[1],B[2])}var D=new f.Float32BufferAttribute(3*(3*x.faces.length),3);D.name=O.name,C.push(D.copyArray(N))}T.morphAttributes.color=C}};var g=(x,T)=>{if(x&&x.morphColors&&0<x.morphColors.length){for(var C=[],L=x.morphColors,A=u(5).getColorsRGB,R=0,I=L.length;R<I;R++){for(var O,N=L[R],M=[],P=0;P<3*N.colors.length;P++)O=A(N.colors,P),M.push(O[0],O[1],O[2]);var B=new f.Float32BufferAttribute(M,3);B.name=N.name,C.push(B)}T.morphAttributes.color=C}};l.mergeVertices=function(x){var T=1<arguments.length&&arguments[1]!==void 0?arguments[1]:1e-4;T=Math.max(T,Number.EPSILON);for(var C,L={},A=x.getIndex(),R=x.getAttribute("position"),I=A?A.count:R.count,O=0,N=Object.keys(x.attributes),M={},P={},ae=[],B=["getX","getY","getZ","getW"],D=0,V=N.length;D<V;D++){C=N[D],M[C]=[];var G=x.morphAttributes[C];G&&(P[C]=Array(G.length).fill().map(()=>[]))}for(var H=Math.log10(1/T),K=Math.pow(10,H),D=0;D<I;D++){for(var te=A?A.getX(D):D,W="",z=0,V=N.length;z<V;z++)for(var C=N[z],j=x.getAttribute(C),Z=j.itemSize,Q=0;Q<Z;Q++)W+="".concat(~~(j[B[Q]](te)*K),",");if(W in L)ae.push(L[W]);else{for(var z=0,V=N.length;z<V;z++)for(var ee,C=N[z],j=x.getAttribute(C),G=x.morphAttributes[C],Z=j.itemSize,ie=M[C],q=P[C],Q=0;Q<Z;Q++)if(ee=B[Q],ie.push(j[ee](te)),G)for(var ne=0,F=G.length;ne<F;ne++)q[ne].push(G[ne][ee](te));L[W]=O,ae.push(O),O++}}for(var $=x.clone(),D=0,V=N.length;D<V;D++){var j,C=N[D],J=x.getAttribute(C),k=new J.array.constructor(M[C]);if(J.isInterleavedBufferAttribute?j=new f.BufferAttribute(k,J.itemSize,J.itemSize):(j=x.getAttribute(C).clone(),j.setArray(k)),$.setAttribute(C,j),C in P)for(var U,z=0;z<P[C].length;z++)U=x.morphAttributes[C][z].clone(),U.setArray(new U.array.constructor(P[C][z])),$.morphAttributes[C][z]=U}var oe=Uint8Array;ae.length>=Math.pow(2,8)&&(oe=Uint16Array),ae.length>=Math.pow(2,16)&&(oe=Uint32Array);var le=new oe(ae),ae=null;return A===null?ae=new f.BufferAttribute(le,1):(ae=x.getIndex().clone(),ae.setArray(le)),$.setIndex(ae),$};function w(x){if(x.isMeshPhongMaterial){var T=new f.MeshToonMaterial({color:x.color.clone(),morphTargets:x.morphTargets,morphNormals:x.morphNormals,vertexColors:x.vertexColors,transparent:x.transparent,opacity:x.opacity,side:x.side});return x.map&&(T.map=x.map),T}return x}function _(x,T){if(T&&x>=T.length){var C=new f.BufferGeometry,L=new Float32Array(3*x),A=0;return T.forEach(R=>{L[A++]=R[0],L[A++]=R[1],L[A++]=R[2]}),C.setAttribute("position",new f.BufferAttribute(L,3)),C.setDrawRange(0,T.length),C}}function E(){var x=new Image;x.src=u(8);var T=new f.Texture;return T.image=x,T.needsUpdate=!0,T}function S(x,T,C,L,A,R){var I=new m(x,T,C,L,A,R);return I.fontFace=L,I.fontSize=A,I.fontWeight=R,I.material.map.generateMipmaps=!1,I.material.map.anisotropy=4,I.material.sizeAttenuation=!1,I.material.alphaTest=.5,I.material.transparent=!0,I.material.depthWrite=!1,I.material.depthTest=!1,I.center.set(.5,-1.2),I.renderOrder=1e4,I}l.getBoundingBox=d,l.createNewURL=p,l.createBufferGeometry=_,l.getCircularTexture=E,l.resolveURL=y,l.loadExternalFile=b,l.loadExternalFiles=v,l.PhongToToon=w,l.createNewSpriteText=S},(o,l,u)=>{u.r(l),u.d(l,{Face3:()=>b,Geometry:()=>p});var c=u(4),f=new c.Matrix4,h=new c.Object3D,m=new c.Vector3,y=new c.Vector3;function p(){this.uuid=c.MathUtils.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.normals=[],this.uvs=[],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1,this.morphNormalsReady=!1}p.prototype=Object.assign(Object.create(c.EventDispatcher.prototype),{constructor:p,isGeometry:!0,applyMatrix4:function(g){for(var w,_=new c.Matrix3().getNormalMatrix(g),E=0,S=this.vertices.length;E<S;E++)w=this.vertices[E],w.applyMatrix4(g);for(var x,T=0,C=this.faces.length;T<C;T++){x=this.faces[T],x.normal.applyMatrix3(_).normalize();for(var L=0,A=x.vertexNormals.length;L<A;L++)x.vertexNormals[L].applyMatrix3(_).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this},rotateX:function(g){return f.makeRotationX(g),this.applyMatrix4(f),this},rotateY:function(g){return f.makeRotationY(g),this.applyMatrix4(f),this},rotateZ:function(g){return f.makeRotationZ(g),this.applyMatrix4(f),this},translate:function(g,w,_){return f.makeTranslation(g,w,_),this.applyMatrix4(f),this},scale:function(g,w,_){return f.makeScale(g,w,_),this.applyMatrix4(f),this},lookAt:function(g){return h.lookAt(g),h.updateMatrix(),this.applyMatrix4(h.matrix),this},fromBufferGeometry:function(g){function w(H,K,te,W){var z=C===void 0?[]:[_.colors[H].clone(),_.colors[K].clone(),_.colors[te].clone()],j=T===void 0?[]:[new c.Vector3().fromBufferAttribute(T,H),new c.Vector3().fromBufferAttribute(T,K),new c.Vector3().fromBufferAttribute(T,te)],Z=new b(H,K,te,j,z,W);_.faces.push(Z),L!==void 0&&_.faceVertexUvs[0].push([new c.Vector2().fromBufferAttribute(L,H),new c.Vector2().fromBufferAttribute(L,K),new c.Vector2().fromBufferAttribute(L,te)]),A!==void 0&&_.faceVertexUvs[1].push([new c.Vector2().fromBufferAttribute(A,H),new c.Vector2().fromBufferAttribute(A,K),new c.Vector2().fromBufferAttribute(A,te)])}var _=this,E=g.index===null?void 0:g.index,S=g.attributes;if(S.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;var x=S.position,T=S.normal,C=S.color,L=S.uv,A=S.uv2;A!==void 0&&(this.faceVertexUvs[1]=[]);for(var R=0;R<x.count;R++)_.vertices.push(new c.Vector3().fromBufferAttribute(x,R)),C!==void 0&&_.colors.push(new c.Color().fromBufferAttribute(C,R));var I=g.groups;if(0<I.length)for(var O=0;O<I.length;O++)for(var N=I[O],M=N.start,P=N.count,B=M,D=M+P;B<D;B+=3)E===void 0?w(B,B+1,B+2,N.materialIndex):w(E.getX(B),E.getX(B+1),E.getX(B+2),N.materialIndex);else if(E!==void 0)for(var V=0;V<E.count;V+=3)w(E.getX(V),E.getX(V+1),E.getX(V+2));else for(var G=0;G<x.count;G+=3)w(G,G+1,G+2);return this.computeFaceNormals(),g.boundingBox!==null&&(this.boundingBox=g.boundingBox.clone()),g.boundingSphere!==null&&(this.boundingSphere=g.boundingSphere.clone()),this},center:function(){return this.computeBoundingBox(),this.boundingBox.getCenter(m).negate(),this.translate(m.x,m.y,m.z),this},normalize:function(){this.computeBoundingSphere();var g=this.boundingSphere.center,w=this.boundingSphere.radius,_=w===0?1:1/w,E=new c.Matrix4;return E.set(_,0,0,-_*g.x,0,_,0,-_*g.y,0,0,_,-_*g.z,0,0,0,1),this.applyMatrix4(E),this},computeFaceNormals:function(){for(var g=new c.Vector3,w=new c.Vector3,_=0,E=this.faces.length;_<E;_++){var S=this.faces[_],x=this.vertices[S.a],T=this.vertices[S.b],C=this.vertices[S.c];g.subVectors(C,T),w.subVectors(x,T),g.cross(w),g.normalize(),S.normal.copy(g)}},computeVertexNormals:function(){for(var g=!(0<arguments.length&&arguments[0]!==void 0)||arguments[0],w=Array(this.vertices.length),_=0,E=this.vertices.length;_<E;_++)w[_]=new c.Vector3;if(g)for(var S=new c.Vector3,x=new c.Vector3,T=0,C=this.faces.length;T<C;T++){var L=this.faces[T],A=this.vertices[L.a],R=this.vertices[L.b],I=this.vertices[L.c];S.subVectors(I,R),x.subVectors(A,R),S.cross(x),w[L.a].add(S),w[L.b].add(S),w[L.c].add(S)}else{this.computeFaceNormals();for(var O,N=0,M=this.faces.length;N<M;N++)O=this.faces[N],w[O.a].add(O.normal),w[O.b].add(O.normal),w[O.c].add(O.normal)}for(var P=0,B=this.vertices.length;P<B;P++)w[P].normalize();for(var D=0,V=this.faces.length;D<V;D++){var G=this.faces[D],H=G.vertexNormals;H.length===3?(H[0].copy(w[G.a]),H[1].copy(w[G.b]),H[2].copy(w[G.c])):(H[0]=w[G.a].clone(),H[1]=w[G.b].clone(),H[2]=w[G.c].clone())}return 0<this.faces.length&&(this.normalsNeedUpdate=!0),w},computeFlatVertexNormals:function(){this.computeFaceNormals();for(var g=0,w=this.faces.length;g<w;g++){var _=this.faces[g],E=_.vertexNormals;E.length===3?(E[0].copy(_.normal),E[1].copy(_.normal),E[2].copy(_.normal)):(E[0]=_.normal.clone(),E[1]=_.normal.clone(),E[2]=_.normal.clone())}0<this.faces.length&&(this.normalsNeedUpdate=!0)},computeMorphNormals:function(){for(var g,w=0,_=this.faces.length;w<_;w++){g=this.faces[w],g.__originalFaceNormal?g.__originalFaceNormal.copy(g.normal):g.__originalFaceNormal=g.normal.clone(),g.__originalVertexNormals||(g.__originalVertexNormals=[]);for(var E=0,S=g.vertexNormals.length;E<S;E++)g.__originalVertexNormals[E]?g.__originalVertexNormals[E].copy(g.vertexNormals[E]):g.__originalVertexNormals[E]=g.vertexNormals[E].clone()}var x=new p;x.faces=this.faces;for(var T=0,C=this.morphTargets.length;T<C;T++){if(!this.morphNormals[T]){this.morphNormals[T]={},this.morphNormals[T].faceNormals=[],this.morphNormals[T].vertexNormals=[];for(var L=this.morphNormals[T].faceNormals,A=this.morphNormals[T].vertexNormals,R=0,I=this.faces.length;R<I;R++){var O=new c.Vector3,N={a:new c.Vector3,b:new c.Vector3,c:new c.Vector3};L.push(O),A.push(N)}}var M=this.morphNormals[T];x.vertices=this.morphTargets[T].vertices,x.computeFaceNormals();var P=x.computeVertexNormals();if(P&&0<P.length){this.morphTargets[T].normals=Array(this.vertices.length);for(var B=0;B<P.length;B++)this.morphTargets[T].normals[B]=P[B].clone()}for(var D=0,V=this.faces.length;D<V;D++){var G=this.faces[D],H=M.faceNormals[D],K=M.vertexNormals[D];H.copy(G.normal),K.a.copy(G.vertexNormals[0]),K.b.copy(G.vertexNormals[1]),K.c.copy(G.vertexNormals[2])}}for(var te,W=0,z=this.faces.length;W<z;W++)te=this.faces[W],te.normal=te.__originalFaceNormal,te.vertexNormals=te.__originalVertexNormals;this.morphNormalsReady=!0},computeBoundingBox:function(){this.boundingBox===null&&(this.boundingBox=new c.Box3),this.boundingBox.setFromPoints(this.vertices)},computeBoundingSphere:function(){this.boundingSphere===null&&(this.boundingSphere=new c.Sphere),this.boundingSphere.setFromPoints(this.vertices)},mergeMorph:function(g,w){var _=this.morphTargets.length,E=this.morphTargets,S=g.morphTargets,x=this.morphColors.length,T=this.morphColors,C=g.morphColors;if(0<_&&_==S.length)for(var L=0,A=E.length;L<A;L++){for(var R=E[L],I=S[L],O=0,N=I.vertices.length;O<N;O++){var M=I.vertices[O],P=M.clone();w!==void 0&&P.applyMatrix4(w),R.vertices.push(P)}if(R.normals&&I.normals)for(var B=0;B<I.normals.length;B+=3)y.set(I.normals2[B],I.normals2[B+1],I.normals2[B+2]),w!==void 0&&y.applyMatrix4(w),R.normals.push(y.x,y.y,y.z)}if(0<x&&x==C.length)for(var D=0,V=T.length;D<V;D++)for(var G=T[D],H=C[D],K=0,te=H.colors;K<te;K++)G.colors.push(H.colors[K].clone())},merge:function(g,w){var _=2<arguments.length&&arguments[2]!==void 0?arguments[2]:0;if(!(g&&g.isGeometry))return void console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",g);var E,S=this.vertices.length,x=this.vertices,T=g.vertices,C=g.normals,L=this.faces,A=g.faces,R=this.colors,I=g.colors;w!==void 0&&(E=new c.Matrix3().getNormalMatrix(w));for(var O=0,N=T.length;O<N;O++){var M=T[O],P=M.clone();w!==void 0&&P.applyMatrix4(w),x.push(P)}for(var B=0;B<C.length;B+=3)y.set(C[B],C[B+1],C[B+2]),w!==void 0&&y.applyMatrix4(w),this.normals.push(y.x,y.y,y.z);for(var D=0,V=I.length;D<V;D++)typeof I[D]=="number"?R.push(I[D]):R.push(I[D].clone());for(var G=0,H=A.length;G<H;G++){var K=A[G],te=void 0,W=void 0,z=K.vertexNormals,j=K.vertexColors,Z=new b(K.a+S,K.b+S,K.c+S);Z.normal.copy(K.normal),E!==void 0&&Z.normal.applyMatrix3(E).normalize();for(var Q=0,ee=z.length;Q<ee;Q++)te=z[Q].clone(),E!==void 0&&te.applyMatrix3(E).normalize(),Z.vertexNormals.push(te);Z.color.copy(K.color);for(var ie=0,q=j.length;ie<q;ie++)W=j[ie],Z.vertexColors.push(W.clone());Z.materialIndex=K.materialIndex+_,L.push(Z)}for(var ne,F=0,$=g.faceVertexUvs.length;F<$;F++){ne=g.faceVertexUvs[F],this.faceVertexUvs[F]===void 0&&(this.faceVertexUvs[F]=[]);for(var J=0,k=ne.length;J<k;J++){for(var U=ne[J],oe=[],le=0,ae=U.length;le<ae;le++)oe.push(U[le].clone());this.faceVertexUvs[F].push(oe)}}this.mergeMorph(g,w)},mergeMesh:function(g){return g&&g.isMesh?(g.matrixAutoUpdate&&g.updateMatrix(),void this.merge(g.geometry,g.matrix)):void console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",g)},mergeVertices:function(){for(var g=0<arguments.length&&arguments[0]!==void 0?arguments[0]:4,w={},_=[],E=[],S=Math.pow(10,g),x=0,T=this.vertices.length;x<T;x++){var C=this.vertices[x],L=Math.round(C.x*S)+"_"+Math.round(C.y*S)+"_"+Math.round(C.z*S);w[L]===void 0?(w[L]=x,_.push(this.vertices[x]),E[x]=_.length-1):E[x]=E[w[L]]}for(var A,R=[],I=0,O=this.faces.length;I<O;I++){A=this.faces[I],A.a=E[A.a],A.b=E[A.b],A.c=E[A.c];for(var N=[A.a,A.b,A.c],M=0;3>M;M++)if(N[M]===N[(M+1)%3]){R.push(I);break}}for(var P,B=R.length-1;0<=B;B--){P=R[B],this.faces.splice(P,1);for(var D=0,V=this.faceVertexUvs.length;D<V;D++)this.faceVertexUvs[D].splice(P,1)}var G=this.vertices.length-_.length;return this.vertices=_,G},setFromPoints:function(g){this.vertices=[];for(var w,_=0,E=g.length;_<E;_++)w=g[_],this.vertices.push(new c.Vector3(w.x,w.y,w.z||0));return this},sortFacesByMaterialIndex:function(){for(var g=this.faces,w=g.length,_=0;_<w;_++)g[_]._id=_;g.sort(function(A,R){return A.materialIndex-R.materialIndex});var E,S,x=this.faceVertexUvs[0],T=this.faceVertexUvs[1];x&&x.length===w&&(E=[]),T&&T.length===w&&(S=[]);for(var C,L=0;L<w;L++)C=g[L]._id,E&&E.push(x[C]),S&&S.push(T[C]);E&&(this.faceVertexUvs[0]=E),S&&(this.faceVertexUvs[1]=S)},toJSON:function(){function g(q,ne,F){return F?q|1<<ne:q&~(1<<ne)}function w(q){var ne=q.x.toString()+q.y.toString()+q.z.toString();return O[ne]===void 0&&(O[ne]=I.length/3,I.push(q.x,q.y,q.z)),O[ne]}function _(q){var ne=q.r.toString()+q.g.toString()+q.b.toString();return M[ne]===void 0&&(M[ne]=N.length,N.push(q.getHex())),M[ne]}function E(q){var ne=q.x.toString()+q.y.toString();return B[ne]===void 0&&(B[ne]=P.length/2,P.push(q.x,q.y)),B[ne]}var S={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(S.uuid=this.uuid,S.type=this.type,this.name!==""&&(S.name=this.name),this.parameters!==void 0){var x=this.parameters;for(var T in x)x[T]!==void 0&&(S[T]=x[T]);return S}for(var C,L=[],A=0;A<this.vertices.length;A++)C=this.vertices[A],L.push(C.x,C.y,C.z);for(var R=[],I=[],O={},N=[],M={},P=[],B={},D=0;D<this.faces.length;D++){var V=this.faces[D],G=!0,H=!1,K=this.faceVertexUvs[0][D]!==void 0,te=0<V.normal.length(),W=0<V.vertexNormals.length,z=V.color.r!==1||V.color.g!==1||V.color.b!==1,j=0<V.vertexColors.length,Z=0;if(Z=g(Z,0,0),Z=g(Z,1,G),Z=g(Z,2,H),Z=g(Z,3,K),Z=g(Z,4,te),Z=g(Z,5,W),Z=g(Z,6,z),Z=g(Z,7,j),R.push(Z),R.push(V.a,V.b,V.c),R.push(V.materialIndex),K){var Q=this.faceVertexUvs[0][D];R.push(E(Q[0]),E(Q[1]),E(Q[2]))}if(te&&R.push(w(V.normal)),W){var ee=V.vertexNormals;R.push(w(ee[0]),w(ee[1]),w(ee[2]))}if(z&&R.push(_(V.color)),j){var ie=V.vertexColors;R.push(_(ie[0]),_(ie[1]),_(ie[2]))}}return S.data={},S.data.vertices=L,S.data.normals=I,0<N.length&&(S.data.colors=N),0<P.length&&(S.data.uvs=[P]),S.data.faces=R,S},clone:function(){return new p().copy(this)},copy:function(g){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=g.name;for(var w=g.vertices,_=0,E=w.length;_<E;_++)this.vertices.push(w[_].clone());for(var S=g.colors,x=0,T=S.length;x<T;x++)this.colors.push(S[x].clone());for(var C=g.faces,L=0,A=C.length;L<A;L++)this.faces.push(C[L].clone());for(var R,I=0,O=g.faceVertexUvs.length;I<O;I++){R=g.faceVertexUvs[I],this.faceVertexUvs[I]===void 0&&(this.faceVertexUvs[I]=[]);for(var N=0,M=R.length;N<M;N++){for(var P,B=R[N],D=[],V=0,G=B.length;V<G;V++)P=B[V],D.push(P.clone());this.faceVertexUvs[I].push(D)}}for(var H,K=g.morphTargets,te=0,W=K.length;te<W;te++){if(H={},H.name=K[te].name,K[te].vertices!==void 0){H.vertices=[];for(var z=0,j=K[te].vertices.length;z<j;z++)H.vertices.push(K[te].vertices[z].clone())}if(K[te].normals!==void 0){H.normals=[];for(var Z=0,Q=K[te].normals.length;Z<Q;Z++)H.normals.push(K[te].normals[Z].clone())}this.morphTargets.push(H)}for(var ee,ie=g.morphNormals,q=0,ne=ie.length;q<ne;q++){if(ee={},ie[q].vertexNormals!==void 0){ee.vertexNormals=[];for(var F=0,$=ie[q].vertexNormals.length;F<$;F++){var J=ie[q].vertexNormals[F],k={};k.a=J.a.clone(),k.b=J.b.clone(),k.c=J.c.clone(),ee.vertexNormals.push(k)}}if(ie[q].faceNormals!==void 0){ee.faceNormals=[];for(var U=0,oe=ie[q].faceNormals.length;U<oe;U++)ee.faceNormals.push(ie[q].faceNormals[U].clone())}this.morphNormals.push(ee)}for(var le=g.skinWeights,ae=0,he=le.length;ae<he;ae++)this.skinWeights.push(le[ae].clone());for(var ve=g.skinIndices,we=0,ce=ve.length;we<ce;we++)this.skinIndices.push(ve[we].clone());for(var ge=g.lineDistances,re=0,xe=ge.length;re<xe;re++)this.lineDistances.push(ge[re]);var fe=g.boundingBox;fe!==null&&(this.boundingBox=fe.clone());var ye=g.boundingSphere;return ye!==null&&(this.boundingSphere=ye.clone()),this.elementsNeedUpdate=g.elementsNeedUpdate,this.verticesNeedUpdate=g.verticesNeedUpdate,this.uvsNeedUpdate=g.uvsNeedUpdate,this.normalsNeedUpdate=g.normalsNeedUpdate,this.colorsNeedUpdate=g.colorsNeedUpdate,this.lineDistancesNeedUpdate=g.lineDistancesNeedUpdate,this.groupsNeedUpdate=g.groupsNeedUpdate,this},computeGroups(){var v,g,w=[],_=void 0,E=this.faces;for(g=0;g<E.length;g++){var S=E[g];S.materialIndex!==_&&(_=S.materialIndex,v!==void 0&&(v.count=3*g-v.start,w.push(v)),v={start:3*g,materialIndex:_})}return v!==void 0&&(v.count=3*g-v.start,w.push(v)),w},toBufferGeometry:function(){var g=new d().fromGeometry(this),w=new c.BufferGeometry,_=new Float32Array(3*g.vertices.length);if(w.setAttribute("position",new c.BufferAttribute(_,3).copyVector3sArray(g.vertices)),0<g.normals.length){var E=new Float32Array(3*g.normals.length);w.setAttribute("normal",new c.BufferAttribute(E,3).copyVector3sArray(g.normals))}if(0<g.colors.length){var S=new Float32Array(3*g.colors.length);w.setAttribute("color",new c.BufferAttribute(S,3).copyColorsArray(g.colors))}if(0<g.uvs.length){var x=new Float32Array(2*g.uvs.length);w.setAttribute("uv",new c.BufferAttribute(x,2).copyVector2sArray(g.uvs))}if(0<g.uvs2.length){var T=new Float32Array(2*g.uvs2.length);w.setAttribute("uv2",new c.BufferAttribute(T,2).copyVector2sArray(g.uvs2))}for(var C in w.groups=g.groups,g.morphTargets){for(var L=[],A=g.morphTargets[C],R=0,I=A.length;R<I;R++){var O=A[R],N=new c.Float32BufferAttribute(3*O.data.length,3);N.name=O.name,L.push(N.copyVector3sArray(O.data))}w.morphAttributes[C]=L}if(0<g.skinIndices.length){var M=new c.Float32BufferAttribute(4*g.skinIndices.length,4);w.setAttribute("skinIndex",M.copyVector4sArray(g.skinIndices))}if(0<g.skinWeights.length){var P=new c.Float32BufferAttribute(4*g.skinWeights.length,4);w.setAttribute("skinWeight",P.copyVector4sArray(g.skinWeights))}return g.boundingSphere!==null&&(w.boundingSphere=g.boundingSphere.clone()),g.boundingBox!==null&&(w.boundingBox=g.boundingBox.clone()),w},toIndexedBufferGeometry:function(){var g=new c.BufferGeometry,w=new Float32Array(3*this.vertices.length);if(g.setAttribute("position",new c.BufferAttribute(w,3).copyVector3sArray(this.vertices)),0<this.normals.length){var _=new Float32Array(this.normals.length),E=new c.BufferAttribute(_,3).copyArray(this.normals);g.setAttribute("normal",E)}if(0<this.uvs.length&&0<this.uvs[0].length){var S=new Float32Array(2*this.uvs[0].length);g.setAttribute("uv",new c.BufferAttribute(S,2).copyArray(this.uvs[0]))}if(1<this.uvs.length&&0<this.uvs[1].length){var x=new Float32Array(2*this.uvs[1].length);g.setAttribute("uv2",new c.BufferAttribute(x,2).copyArray(this.uvs[1]))}if(0<this.colors.length){for(var T=[],C=0;C<this.colors.length;C++)T.push(new c.Color(this.colors[C]));var L=new Float32Array(3*T.length);g.setAttribute("color",new c.BufferAttribute(L,3).copyColorsArray(T))}else{for(var A=new Float32Array(3*this.vertices.length),R=0;R<3*this.vertices.length;R++)A[R]=1;g.setAttribute("color",new c.BufferAttribute(A,3))}if(0<this.faces.length){for(var I=[],O=[],N=0;N<this.faces.length;N++){O.push(this.faces[N].a,this.faces[N].b,this.faces[N].c);var M=this.faces[N].vertexColors;if(M.length===3)I.push(M[0],M[1],M[2]);else{var P=this.faces[N].color;I.push(P,P,P)}}g.setIndex(O),g.groups=this.computeGroups()}if(0<this.morphTargets.length){for(var B=[],D=[],V=0,G=this.morphTargets.length;V<G;V++){var H=this.morphTargets[V],K=new c.Float32BufferAttribute(3*H.vertices.length,3);if(K.name=H.name,B.push(K.copyVector3sArray(H.vertices)),H.normals){var te=new c.Float32BufferAttribute(3*H.normals.length,3);te.name=H.name,D.push(te.copyVector3sArray(H.normals))}}g.morphAttributes.position=B,g.morphAttributes.normal=D}if(0<this.skinIndices.length){var W=new c.Float32BufferAttribute(4*this.skinIndices.length,4);g.setAttribute("skinIndex",W.copyVector4sArray(this.skinIndices))}if(0<this.skinWeights.length){var z=new c.Float32BufferAttribute(4*this.skinWeights.length,4);g.setAttribute("skinWeight",z.copyVector4sArray(this.skinWeights))}return this.boundingSphere!==null&&(g.boundingSphere=this.boundingSphere.clone()),this.boundingBox!==null&&(g.boundingBox=this.boundingBox.clone()),g},computeTangents:function(){console.error("THREE.Geometry: .computeTangents() has been removed.")},computeLineDistances:function(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")},applyMatrix:function(g){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(g)},dispose:function(){this.dispatchEvent({type:"dispose"})}}),p.createBufferGeometryFromObject=function(v){var g=new c.BufferGeometry,w=v.geometry;if(v.isPoints||v.isLine){var _=new c.Float32BufferAttribute(3*w.vertices.length,3),E=new c.Float32BufferAttribute(3*w.colors.length,3);if(g.setAttribute("position",_.copyVector3sArray(w.vertices)),g.setAttribute("color",E.copyColorsArray(w.colors)),w.lineDistances&&w.lineDistances.length===w.vertices.length){var S=new c.Float32BufferAttribute(w.lineDistances.length,1);g.setAttribute("lineDistance",S.copyArray(w.lineDistances))}w.boundingSphere!==null&&(g.boundingSphere=w.boundingSphere.clone()),w.boundingBox!==null&&(g.boundingBox=w.boundingBox.clone())}else v.isMesh&&(g=w.toBufferGeometry());return g};class d{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(g){var w,_,E=[],S=void 0,x=g.faces;for(_=0;_<x.length;_++){var T=x[_];T.materialIndex!==S&&(S=T.materialIndex,w!==void 0&&(w.count=3*_-w.start,E.push(w)),w={start:3*_,materialIndex:S})}w!==void 0&&(w.count=3*_-w.start,E.push(w)),this.groups=E}fromGeometry(g){var w,_=g.faces,E=g.vertices,S=g.faceVertexUvs,x=S[0]&&0<S[0].length,T=S[1]&&0<S[1].length,C=g.morphTargets,L=C.length;if(0<L){w=[];for(var A=0;A<L;A++)w[A]={name:C[A].name,data:[]};this.morphTargets.position=w}var R,I=g.morphNormals,O=I.length;if(0<O){R=[];for(var N=0;N<O;N++)R[N]={name:I[N].name,data:[]};this.morphTargets.normal=R}var M=g.skinIndices,P=g.skinWeights,B=M.length===E.length,D=P.length===E.length;0<E.length&&_.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(var V,G=0;G<_.length;G++){V=_[G],this.vertices.push(E[V.a],E[V.b],E[V.c]);var H=V.vertexNormals;if(H.length===3)this.normals.push(H[0],H[1],H[2]);else{var K=V.normal;this.normals.push(K,K,K)}var te=V.vertexColors;if(te.length===3)this.colors.push(te[0],te[1],te[2]);else{var W=V.color;this.colors.push(W,W,W)}if(x===!0){var z=S[0][G];z===void 0?(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",G),this.uvs.push(new c.Vector2,new c.Vector2,new c.Vector2)):this.uvs.push(z[0],z[1],z[2])}if(T===!0){var j=S[1][G];j===void 0?(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",G),this.uvs2.push(new c.Vector2,new c.Vector2,new c.Vector2)):this.uvs2.push(j[0],j[1],j[2])}for(var Z,Q=0;Q<L;Q++)Z=C[Q].vertices,w[Q].data.push(Z[V.a],Z[V.b],Z[V.c]);for(var ee,ie=0;ie<O;ie++)ee=I[ie].vertexNormals[G],R[ie].data.push(ee.a,ee.b,ee.c);B&&this.skinIndices.push(M[V.a],M[V.b],M[V.c]),D&&this.skinWeights.push(P[V.a],P[V.b],P[V.c])}return this.computeGroups(g),this.verticesNeedUpdate=g.verticesNeedUpdate,this.normalsNeedUpdate=g.normalsNeedUpdate,this.colorsNeedUpdate=g.colorsNeedUpdate,this.uvsNeedUpdate=g.uvsNeedUpdate,this.groupsNeedUpdate=g.groupsNeedUpdate,g.boundingSphere!==null&&(this.boundingSphere=g.boundingSphere.clone()),g.boundingBox!==null&&(this.boundingBox=g.boundingBox.clone()),this}}class b{constructor(g,w,_,E,S){var x=5<arguments.length&&arguments[5]!==void 0?arguments[5]:0;this.a=g,this.b=w,this.c=_,this.normal=E&&E.isVector3?E:new c.Vector3,this.vertexNormals=Array.isArray(E)?E:[],this.color=S&&S.isColor?S:new c.Color,this.vertexColors=Array.isArray(S)?S:[],this.materialIndex=x}clone(){return new this.constructor().copy(this)}copy(g){this.a=g.a,this.b=g.b,this.c=g.c,this.normal.copy(g.normal),this.color.copy(g.color),this.materialIndex=g.materialIndex;for(var w=0,_=g.vertexNormals.length;w<_;w++)this.vertexNormals[w]=g.vertexNormals[w].clone();for(var E=0,S=g.vertexColors.length;E<S;E++)this.vertexColors[E]=g.vertexColors[E].clone();return this}}},o=>{o.exports=kB},o=>{o.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sHDgwCEMBJZu0AAAAdaVRYdENvbW1lbnQAAAAAAENyZWF0ZWQgd2l0aCBHSU1QZC5lBwAABM5JREFUWMO1V0tPG2cUPZ4Hxh6DazIOrjFNqJs0FIMqWFgWQkatsmvVbtggKlSVRVf5AWz4AWz4AUSKEChll19QJYSXkECuhFxsHjEhxCYm+DWGMZ5HF72DJq4bAzFXurI0M/I5997v3u9cC65vTJVn2lX/xHINQOYSBLTLEuIuCWw4Z3IGAEvf6ASmVHjNzHCXBG4A0AjACsAOwEbO0nsFQBnAGYASAIl+ZRMR7SolMEdsByD09fV5R0ZGgg8ePPjW5/N1iqLYpuu6RZblciKR2I9Go69evnwZnZ+fjwI4IS8AKBIRzeQfJWCANwKwh0KhtrGxsYehUOin1tbW+zzP23ietzY2NnIAoGmaLsuyUiqVyvl8XtrY2NiamZn589mzZxsAUgCOAeQAnFI2tI+VxIjaAeDzoaGh7xYWFuZOTk6OZVk+12uYqqq6JEnn0Wg0OT4+/geAXwGEAdwDIFJQXC1wO4DWR48e/RCPxxclSSroVzRFUbSDg4P848ePFwH8DuAhkWih83TRQWxFOXgAwvDwcOfo6OhvXV1d39tsNtuVBwTDWBwOh1UUxVsMw1hXVlbSdCgNV43uYSvrHg6H24aHh38eHBz85TrgF9FYLHA4HLzH43FvbW2d7u/vG+dANp8FpqIlbd3d3V8Fg8EfBUFw4BONZVmL3+9vHhkZCQL4AoAHgJPK8G+yzC0XDofdoVAo5PP5vkadTBAEtr+/39ff3x8gAp/RPOEqx2qjx+NpvXv3bk9DQ0NDvQgwDIOWlhZrMBj8kgi0UJdxRgYMArzL5XJ7vd57qLPZ7Xamp6fnNgBXtQxcjFuHw+Hyer3t9SYgCAITCAScAJoBNNEY/08GOFVVrfVMv7kMNDntFD1vjIAPrlRN0xjckOm6biFQ3jwNPwDMZrOnqVTqfb3Bi8Wivru7W/VCYkwPlKOjo0IikXh7EwQikYgE4Nw0CfXKDCipVCoTj8df3QABbW1tLUc6oUgkFPMkVACUNjc337148eKvw8PDbJ2jP1taWkoCyNDVXDSECmNSK4qiKNLq6urW8+fPI/UicHx8rD59+jSVy+WOAKSJhKENwFItLtoxk8mwsixzHR0dHe3t7c5PAU+n09rs7OzJkydPYqVSaQfANoDXALIk31S2smU1TWMPDg7K5XKZ7+3t9TudTut1U7+wsFCcmJiIpdPpbQBxADsAknQWymYCOukBHYCuKApisdhpMpnURFEU79y503TVyKenpzOTk5M7e3t7MQKPV0Zv1gNm+awB0MvlshqLxfLb29uyJElWURSbXC4XXyvqxcXFs6mpqeTc3Nzu3t7e3wQcA7BPZ8Cov1pNlJplmQtAG8MwHV6v95tAINA5MDBwPxAIuLu6upr8fr/VAN3c3JQjkcjZ+vp6fnl5+d2bN29SuVzuNYAEpf01CdRChUL+X1VskHACuA3Ay3Fcu9vt7nA6nZ7m5uYWQRCaNE3jVVW15PP580KhIGUymWw2m00DOAJwSP4WwPtq4LX2Ao6USxNlQyS/RcQcdLGwlNIz6vEMAaZpNzCk2Pll94LK/cDYimxERiBwG10sxjgvEZBE0UpE6vxj+0Ct5bTaXthgEhRmja8QWNkkPGsuIpfdjpkK+cZUWTC0KredVmtD/gdlSl6EG4AMvQAAAABJRU5ErkJggg=="},(o,l)=>{l.augmentMorphColor=function(){return function(u){u.vertexShader=u.vertexShader.replace("#include <color_pars_vertex>",["varying vec3 vColor;","attribute vec3 morphColor0;","attribute vec3 morphColor1;"].join(`
3183
3183
  `)),u.vertexShader=u.vertexShader.replace("#include <color_vertex>",["vColor.xyz = color.xyz;","#ifdef USE_MORPHTARGETS","vColor = morphColor0 * morphTargetInfluences[ 0 ];","vColor += morphColor1 * morphTargetInfluences[ 1 ];","#endif"].join(`
3184
- `))}}},(o,l,u)=>{var c=u(4),f=u(5).createBufferGeometry,h=u(5).resolveURL,m=0,y=function(){return"pr"+m++},p=function(){this.isZincObject=!0,this.geometry=void 0,this.morph=void 0,this.group=new c.Group,this._lod=new(u(11)).LOD(this),this.groupName=void 0,this.timeEnabled=!1,this.morphColour=!1,this.inbuildTime=0,this.mixer=void 0,this.animationGroup=void 0,this.duration=6e3,this.clipAction=void 0,this.userData={},this.videoHandler=void 0,this.marker=void 0,this.markerNumber=void 0,this.markerUpdateRequired=!0,this.closestVertexIndex=-1,this.boundingBoxUpdateRequired=!0,this.cachedBoundingBox=new c.Box3,this.anatomicalId=void 0,this.region=void 0,this.animationClip=void 0,this.markerMode="inherited",this.uuid=y(),this._v1=new c.Vector3,this._v2=new c.Vector3,this._b1=new c.Box3,this.center=new c.Vector3,this.radius=0,this.visible=!0,this.drawRange=-1};p.prototype.setDuration=function(d){this.duration=d,this.clipAction&&this.clipAction.setDuration(this.duration)},p.prototype.getDuration=function(){return this.duration},p.prototype.setRegion=function(d){this.region=d},p.prototype.getRegion=function(){return this.region},p.prototype.getMorph=function(){var d=this._lod.getCurrentMorph();return d||this.morph},p.prototype.getGroup=function(){return this.group},p.prototype.setMorph=function(d){this.morph=d,this.group.add(this.morph);var b=this._lod.calculateDistance("far");this._lod.addLevel(d,b),this._lod.setMaterial(d.material)},p.prototype.checkTransparentMesh=function(){},p.prototype.setMesh=function(d,b,v){this.animationGroup=new c.AnimationObjectGroup(d),this.mixer=new c.AnimationMixer(this.animationGroup);var g=d.geometry;if(this.geometry=d.geometry,this.clipAction=void 0,g&&g.morphAttributes){var w=g.morphAttributes.position;w||(w=g.morphAttributes.color?g.morphAttributes.color:g.morphAttributes.normal),w&&(this.animationClip=c.AnimationClip.CreateClipsFromMorphTargetSequences(w,10,!0),this.animationClip&&this.animationClip[0]!=null&&(this.clipAction=this.mixer.clipAction(this.animationClip[0]).setDuration(this.duration),this.clipAction.loop=c.loopOnce,this.clipAction.clampWhenFinished=!0,this.clipAction.play()))}this.timeEnabled=b,this.morphColour=v,d.userData=this,d.matrixAutoUpdate=!1,this.setMorph(d),this.checkTransparentMesh(),this.timeEnabled?this.setFrustumCulled(!1):this.morphColour&&(g.setAttribute("morphTarget0",g.getAttribute("position")),g.setAttribute("morphTarget1",g.getAttribute("position"))),this.boundingBoxUpdateRequired=!0},p.prototype.setName=function(d){this.groupName=d,this._lod.setName(d)},p.prototype.getCurrentTime=function(){if(this.clipAction){var d=this.clipAction.time/this.clipAction._clip.duration;return this.duration*d}return this.inbuildTime},p.prototype.setMorphTime=function(d){var b=!1;if(this.clipAction){var v=d/this.duration,g=this.clipAction._clip.duration,w=v*g;w!=this.clipAction.time&&(this.clipAction.time=w,b=!0),b&&this.isTimeVarying()&&this.mixer.update(0)}else{var _=d;_=d>this.duration?this.duration:0>d?0:d,_!=this.inbuildTime&&(this.inbuildTime=_,b=!0)}b&&(this.boundingBoxUpdateRequired=!0,this._lod.updateMorphColorAttribute(!0),this.timeEnabled&&(this.markerUpdateRequired=!0))},p.prototype.isTimeVarying=function(){return!!(this.timeEnabled||this.morphColour)},p.prototype.getVisibility=function(){return this.visible},p.prototype.setVisibility=function(d){d!==this.visible&&(this.visible=d,this.group.visible=d,this.region&&(this.region.pickableUpdateRequired=!0))},p.prototype.setAlpha=function(d){var b=this._lod._material,v=!1;1>d&&(v=!0),b.opacity=d,b.transparent=v,this.checkTransparentMesh()},p.prototype.setFrustumCulled=function(d){this._lod.setFrustumCulled(d)},p.prototype.setVertexColors=function(d){this._lod.setVertexColors(d)},p.prototype.getColour=function(){return this._lod._material?this._lod._material.color:void 0},p.prototype.setColour=function(d){this._lod.setColour(d)},p.prototype.getColourHex=function(){return!this.morphColour&&this._lod._material&&this._lod._material.color?this._lod._material.color.getHexString():void 0},p.prototype.setColourHex=function(d){this._lod._material.color.setHex(d),this._lod._secondaryMaterial&&this._lod._secondaryMaterial.color.setHex(d)},p.prototype.setEmissiveRGB=function(d){this._lod._material&&this._lod._material.emissive&&this._lod._material.emissive.setRGB(...d),this._lod._secondaryMaterial&&this._lod._secondaryMaterial.emissive.setRGB(...d)},p.prototype.setMaterial=function(d){this._lod.setMaterial(d)},p.prototype.getClosestVertexIndex=function(){var d=-1,b=this.getMorph();if(b&&b.geoemtry){var v=b.geometry.attributes.position;if(this._b1.setFromBufferAttribute(v),this._b1.getCenter(this._v1),v)for(var g=-1,w=0,_=0;_<v.count;_++)this._v2.fromArray(v.array,3*_),w=this._v2.distanceTo(this._v1),g==-1?g=w:g>w&&(g=w,d=_)}return d},p.prototype.getClosestVertex=function(d){var b=new c.Vector3;this.closestVertexIndex==-1&&(this.closestVertexIndex=this.getClosestVertexIndex());var v=this.getMorph();if(v&&v.geometry&&0<=this.closestVertexIndex){var g=v.morphTargetInfluences,w=v.geometry.morphAttributes;if(g&&w&&w.position){for(var _=!1,E=0;E<g.length;E++)0<g[E]&&(_=!0,this._v1.fromArray(w.position[E].array,3*this.closestVertexIndex),b.add(this._v1.multiplyScalar(g[E])));if(_)return d?b.applyMatrix4(v.matrixWorld):b}else return b.fromArray(v.geometry.attributes.position.array,3*this.closestVertexIndex),d?b.applyMatrix4(v.matrixWorld):b}return this.getBoundingBox(),b.copy(this.center),d?b.applyMatrix4(this.morph.matrixWorld):b},p.prototype.getBoundingBox=function(){if(this.visible){var d=this._lod.getCurrentMorph();if(d&&d.visible)return this.boundingBoxUpdateRequired&&(u(5).getBoundingBox(d,this.cachedBoundingBox,this._b1,this._v1,this._v2),this.cachedBoundingBox.getCenter(this.center),this.radius=this.center.distanceTo(this.cachedBoundingBox.max),this.boundingBoxUpdateRequired=!1),this.cachedBoundingBox}},p.prototype.dispose=function(){this._lod.dispose(),this.animationGroup=void 0,this.mixer=void 0,this.morph=void 0,this.group=void 0,this.clipAction=void 0,this.groupName=void 0},p.prototype.markerIsRequired=function(d){return!!(this.visible&&(this.markerMode==="on"||d&&d.displayMarkers&&this.markerMode==="inherited"))},p.prototype.updateMarker=function(d,b){if(d==!1&&this.markerIsRequired(b)){var v=b.ndcToBeUpdated;if(this.groupName){if(this.marker||(this.marker=new(u(14)).Marker(this),this.markerUpdateRequired=!0),this.markerUpdateRequired){var g=this.getClosestVertex(!1);g&&(this.marker.setPosition(g.x,g.y,g.z),this.markerUpdateRequired=!1)}this.marker.isEnabled()||(b.markersList&&!(this.marker.uuid in b.markersList)&&(v=!0,b.markersList[this.marker.uuid]=this.marker),this.marker.enable(),this.group.add(this.marker.morph)),this.marker.setNumber(this.markerNumber),this.markerImgURL?this.marker.loadUserSprite(this.markerImgURL):this.marker.setDefaultSprite(),b&&b.camera&&(v||b.markerCluster.markerUpdateRequired)&&(this.marker.updateNDC(b.camera.cameraObject),b.markerCluster.markerUpdateRequired=!0)}}else this.marker&&this.marker.isEnabled()&&(this.marker.disable(),this.group.remove(this.marker.morph),b.markersList&&this.marker.uuid in b.markersList&&(b.markerCluster.markerUpdateRequired=!0,delete b.markersList[this.marker.uuid])),this.markerUpdateRequired=!0},p.prototype.processMarkerVisual=function(d,b){this.marker&&this.marker.isEnabled()&&this.marker.updateVisual(d,b)},p.prototype.initiateMorphColor=function(){this.morphColour==1&&this._lod.updateMorphColorAttribute(!1)},p.prototype.setRenderOrder=function(d){this._lod.setRenderOrder(d)},p.prototype.getClosestVertexDOMElementCoords=function(d){if(d&&d.camera){var b=!0,v=this.getClosestVertex(!0);return v.project(d.camera),v.z=Math.min(Math.max(v.z,0),1),(1<v.x||-1>v.x||1<v.y||-1>v.y)&&(b=!1),d.getZincCameraControls().getRelativeCoordsFromNDC(v.x,v.y,v),{position:v,inView:b}}},p.prototype.setMarkerMode=function(d,b){d!==this.markerMode&&(this.markerMode=d==="on"||d==="off"?d:"inherited",this.region&&(this.region.pickableUpdateRequired=!0)),b&&(this.markerNumber=b.number,this.markerImgURL=b.imgURL)},p.prototype.render=function(d,b,v,g){if(this.visible&&!(this.timeEnabled&&b)&&this._lod.update(v,this.center),b==!0){if(this.clipAction&&this.isTimeVarying())this.mixer.update(d);else{var w=this.inbuildTime+d;w>this.duration&&(w-=this.duration),this.inbuildTime=w}this.visible&&d!=0&&(this.boundingBoxUpdateRequired=!0,this.morphColour==1&&this._lod.updateMorphColorAttribute(!0))}this.updateMarker(b,g)},p.prototype.addLOD=function(d,b,v,g,w){this._lod.addLevelFromURL(d,b,v,g,w)},p.prototype.addVertices=function(d){var b=this.getMorph(),v=void 0;if(!b)v=f(500,d),this.drawRange=d.length;else if(-1<this.drawRange){var g=b.geometry.getAttribute("position");d.forEach(w=>{g.setXYZ(this.drawRange,w[0],w[1],w[2]),++this.drawRange}),g.needsUpdate=!0,b.geometry.setDrawRange(0,this.drawRange),b.geometry.computeBoundingBox(),b.geometry.computeBoundingSphere(),v=b.geoemtry,this.boundingBoxUpdateRequired=!0}return v},p.prototype.setPosition=function(d,b,v){var g=this.getGroup();g&&(g.position.set(d,b,v),g.updateMatrix(),this.boundingBoxUpdateRequired=!0)},p.prototype.loadAdditionalSources=function(d){d.load(h(filename),meshloader(region,colour,opacity,localTimeEnabled,localMorphColour,void 0,void 0,void 0,void 0,finishCallback),this.onProgress(filename),this.onError(finishCallback))},p.prototype.setScaleAll=function(d){var b=this.getGroup();b&&(b.scale.set(d,d,d),b.updateMatrix(),this.boundingBoxUpdateRequired=!0)},l.ZincObject=p},(o,l,u)=>{var c=u(4),f=u(5).updateMorphColorAttribute,h=u(5).toBufferGeometry,m=function(y){this.levels=[],this._currentLevel=0,this._renderOrder=1,this._material=void 0,this._secondaryMaterial=void 0,this._loader=void 0,this._parent=y,this.addLevel=(d,b)=>{if(d){var v,g=Math.abs(b);for(v=0;v<this.levels.length&&!(g<this.levels[v].distance);v++);this.levels.splice(v,0,{distance:g,morph:d,loaded:!0,loading:!1,url:""}),d.renderOrder=this._renderOrder}},this.levelLoaded=(d,b)=>{if(d){for(var v=Math.abs(b),g=0;g<this.levels.length;g++)if(v===this.levels[g].distance){this._parent.group.add(d),this.levels[g].morph=d,this.levels[g].loaded=!0,this.levels[g].loading=!1;break}this.checkTransparentMesh()}},this.addLevelFromURL=(d,b,v,g,w)=>{this._loader=d;var _,E=this.calculateDistance(b);for(_=0;_<this.levels.length&&!(E<this.levels[_].distance);_++);this.levels.splice(_,0,{distance:E,morph:void 0,loaded:!1,loading:!1,url:v,index:g}),w&&this.loadLevel(_)},this.loadLevel=d=>{var b=this.levels[d];return b.morph||b.loaded||b.loading||(b.loading=!0,this._loader.load(b.url,this.lodLoader(b.distance),void 0,void 0,{index:b.index})),b.morph===void 0},this.calculateDistance=function(d){this._parent.getBoundingBox();var b=this._parent.radius,v=0;return d==="far"?v=4.5*b:d==="medium"?v=2.5*b:d=="close"&&(v=0),v},this.containsLevels=()=>!!(this.levels&&1<this.levels.length),this.checkTransparentMesh=()=>{var d=this.levels[this._currentLevel];this._material&&(this._material.transparent?(!this._secondaryMaterial&&(this._secondaryMaterial=this._material.clone(),this._secondaryMaterial.side=c.FrontSide),this._secondaryMaterial.opacity=this._material.opacity,this._secondaryMaterial.emissive&&this._secondaryMaterial.emissive.copy(this._material.emissive),this._secondaryMaterial.needsUpdate=!0,!d.secondaryMesh&&(d.secondaryMesh=new c.Mesh(d.morph.geometry,this._secondaryMaterial),d.secondaryMesh.renderOrder=d.morph.renderOrder+1,d.secondaryMesh.userData=d.morph.userData,d.secondaryMesh.name=d.morph.name),this._material.side=c.BackSide,this._material.needsUpdate=!0,!d.secondaryMesh.parent&&(d.morph.add(d.secondaryMesh),this._parent.animationGroup&&this._parent.animationGroup.add(d.secondaryMesh))):(d.secondaryMesh&&(d.morph.remove(d.secondaryMesh),this._parent.animationGroup&&(this._parent.animationGroup.uncache(d.secondaryMesh),this._parent.animationGroup.remove(d.secondaryMesh))),this._material.side=c.DoubleSide,this._material.needsUpdate=!0))},this.dispose=()=>{this.levels.forEach(d=>{d.morph&&d.morph.geometry&&d.morph.geometry.dispose()}),this._material&&this._material.dispose(),this._secondaryMaterial&&this._secondaryMaterial.dispose()},this.getCurrentLevel=()=>this._currentLevel,this.getCurrentMorph=()=>{var d=this.levels[this._currentLevel];return d&&d.morph?d.morph:this._parent.morph},this.lodLoader=function(d){return b=>{var v=this._material,g={localTimeEnabled:this._parent.timeEnabled,localMorphColour:this._parent.morphColour},w=h(b,g),_=void 0;this._parent.isGeometry?_=new c.Mesh(w,v):this._parent.isLines&&(_=new(u(12)).LineSegments(w,v)),_.userData=this._parent,_.renderOrder=this._renderOrder,b.dispose(),this.levelLoaded(_,d)}},this.updateMorphColorAttribute=d=>{if(this._material&&(this._material.vertexColors==c.VertexColors||this._material.vertexColors==!0))if(d){var b=this.getCurrentMorph();f(b.geometry,b)}else this.levels.forEach(v=>{v.morph&&v.morph.geometry&&f(v.morph.geometry,v.morph)})},this.setColour=d=>{this._material.color=d,this._secondaryMaterial&&(this._secondaryMaterial.color=d),p()},this.setFrustumCulled=d=>{this.levels.forEach(b=>{b.morph&&(b.morph.frustumCulled=d),b.secondaryMesh&&(b.secondaryMesh.frustumCulled=d)})},this.setMaterial=d=>{d&&(!this._material||this._material.id!==d.id)&&(this._material=d,this._secondaryMaterial&&this._secondaryMaterial.dispose(),this._secondaryMaterial=d.clone(),this._secondaryMaterial.side=c.FrontSide,this._secondaryMaterial.transparent=!0,this.levels.forEach(b=>{b.morph&&(b.morph.material=this._material,b.morph.geometry&&(b.morph.geometry.colorsNeedUpdate=!0)),b.secondaryMesh&&(b.secondaryMesh.material=this._secondaryMaterial)}))},this.setName=d=>{this.levels.forEach(b=>{b.morph&&(b.morph.name=d),b.secondaryMesh&&(b.secondaryMesh.name=d)})},this.setRenderOrder=d=>{this._renderOrder=d,this.levels.forEach(b=>{b.morph&&(b.morph.renderOrder=d),b.secondaryMesh&&(b.secondaryMesh.renderOrder=d)})},this.setVertexColors=d=>{this._material.vertexColors=d,p(),this._secondaryMaterial&&(this._secondaryMaterial.vertexColors=d)},this.update=(d,b)=>{var v=this.levels;if(1<v.length){var g,w,_=d.cameraObject.position.distanceTo(b),E=-1,S=-1;for(g=0,w=v.length;g<w&&_>=v[g].distance;g++)v[g].morph?(-1<E&&v[E].morph&&(v[E].morph.visible=!1),E=g,v[g].morph.visible=!0,S=-1):S=g;for(-1<S&&this.loadLevel(S);g<w;g++)v[g].morph&&(-1<E?v[g].morph.visible=!1:(v[g].morph.visible=!0,E=g));this._currentLevel!=E&&(this._currentLevel=E,this.checkTransparentMesh())}},this.toggleMarker=(d,b)=>{this.levels.forEach(v=>{v.morph&&(b?v.morph.add(d):v.morph.remove(d))})};var p=()=>{this.levels.forEach(d=>{d.morph&&d.morph.geometry&&(d.morph.geometry.colorsNeedUpdate=!0)})}};l.LOD=m},(o,l,u)=>{u.r(l),u.d(l,{LineSegments:()=>y});var c=u(13),f=u(4),h=new f.Vector3,m=new f.Vector3;class y extends c.Line{constructor(d,b){super(d,b),this.type="LineSegments"}computeLineDistances(){var d=this.geometry;if(!d.isBufferGeometry)d.isGeometry&&console.error("THREE.LineSegments.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.");else if(d.index===null){for(var b=d.attributes.position,v=[],g=0,w=b.count;g<w;g+=2)h.fromBufferAttribute(b,g),m.fromBufferAttribute(b,g+1),v[g]=g==0?0:v[g-1],v[g+1]=v[g]+h.distanceTo(m);d.setAttribute("lineDistance",new f.Float32BufferAttribute(v,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}}y.prototype.isLineSegments=!0},(o,l,u)=>{u.r(l),u.d(l,{Line:()=>w});var c=u(4),f=new c.Vector3,h=new c.Vector3,m=new c.Matrix4,y=new c.Ray,p=new c.Sphere,d=new c.Vector3,b=new c.Vector3,v=new c.Vector3,g=new c.Vector3;class w extends c.Object3D{constructor(){var S=0<arguments.length&&arguments[0]!==void 0?arguments[0]:new c.BufferGeometry,x=1<arguments.length&&arguments[1]!==void 0?arguments[1]:new c.LineBasicMaterial;super(),this.type="Line",this.geometry=S,this.material=x,this.updateMorphTargets()}copy(S){return super.copy(S),this.material=S.material,this.geometry=S.geometry,this}computeLineDistances(){var S=this.geometry;if(!S.isBufferGeometry)S.isGeometry&&console.error("THREE.Line.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.");else if(S.index===null){for(var x=S.attributes.position,T=[0],C=1,L=x.count;C<L;C++)f.fromBufferAttribute(x,C-1),h.fromBufferAttribute(x,C),T[C]=T[C-1],T[C]+=f.distanceTo(h);S.setAttribute("lineDistance",new c.Float32BufferAttribute(T,1))}else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}raycast(S,x){var T=this.geometry,C=this.matrixWorld,L=S.params.Line.threshold,A=T.drawRange,R=T.morphAttributes.position;if(T.boundingSphere===null&&T.computeBoundingSphere(),p.copy(T.boundingSphere),p.applyMatrix4(C),p.radius+=L,S.ray.intersectsSphere(p)!==!1){m.copy(C).invert(),y.copy(S.ray).applyMatrix4(m);var I=L/((this.scale.x+this.scale.y+this.scale.z)/3),O=I*I,N=new c.Vector3,M=new c.Vector3,P=new c.Vector3,B=new c.Vector3,D=this.isLineSegments?2:1;if(T.isBufferGeometry){var V=T.index,G=T.attributes,H=G.position;if(V!==null)for(var K=Math.max(0,A.start),te=Math.min(V.count,A.start+A.count),W=K;W<te-1;W+=D){var z=V.getX(W),j=V.getX(W+1);_(N,M,this,H,R,z,j);var Z=y.distanceSqToSegment(N,M,B,P);if(!(Z>O)){B.applyMatrix4(this.matrixWorld);var Q=S.ray.origin.distanceTo(B);Q<S.near||Q>S.far||x.push({distance:Q,point:P.clone().applyMatrix4(this.matrixWorld),index:W,face:null,faceIndex:null,object:this})}}else for(var ee=Math.max(0,A.start),ie=Math.min(H.count,A.start+A.count),q=ee;q<ie-1;q+=D){_(N,M,this,H,R,q,q+1);var ne=y.distanceSqToSegment(N,M,B,P);if(!(ne>O)){B.applyMatrix4(this.matrixWorld);var F=S.ray.origin.distanceTo(B);F<S.near||F>S.far||x.push({distance:F,point:P.clone().applyMatrix4(this.matrixWorld),index:q,face:null,faceIndex:null,object:this})}}}else T.isGeometry&&console.error("THREE.Line.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}}updateMorphTargets(){var S=this.geometry;if(S.isBufferGeometry){var x=S.morphAttributes,T=Object.keys(x);if(0<T.length){var C=x[T[0]];if(C!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(var L,A=0,R=C.length;A<R;A++)L=C[A].name||A+"",this.morphTargetInfluences.push(0),this.morphTargetDictionary[L]=A}}}else{var I=S.morphTargets;I!==void 0&&0<I.length&&console.error("THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}}function _(E,S,x,T,C,L,A){E.fromBufferAttribute(T,L),S.fromBufferAttribute(T,A);var R=x.morphTargetInfluences;if(x.material.morphTargets&&C&&R){d.set(0,0,0),b.set(0,0,0);for(var I=0,O=C.length;I<O;I++){var N=R[I],M=C[I];N!==0&&(v.fromBufferAttribute(M,L),g.fromBufferAttribute(M,A),d.addScaledVector(v.sub(E),N),b.addScaledVector(g.sub(S),N))}E.add(d),S.add(b)}}w.prototype.isLine=!0},(o,l,u)=>{var c=u(4),f=new Image(128,128);f.src=u(15);var h=new c.Texture;h.image=f,h.needsUpdate=!0;var m=[.02,.03,1],y=new c.SpriteMaterial({map:h,alphaTest:.5,transparent:!0,depthTest:!1,depthWrite:!1,sizeAttenuation:!1}),p=u(5).createNewSpriteText,d=function(b){u(10).ZincObject.call(this),this.texture=h;var v=void 0,g=void 0,w=void 0,_=void 0,E=void 0,S=!0;this.morph=new c.Group,this.group=this.morph,this.parent=b,this.isMarker=!0;var x=!1;this.ndc=new c.Vector3;var T=void 0,C=void 0,L=()=>{v=new c.Sprite(y),v.center.set(.5,0),this.morph.add(v),this.morph.position.set(0,0,0),this.morph.renderOrder=1e4,v.scale.set(m[0],m[1],m[2]),v.userData=this};this.updateVisual=(A,R)=>{var I=1,O=0;A!==R&&(O=1-(this.ndc.z-A)/(R-A),I=.6+.4*O),this.setSpriteSize(I)},this.updateNDC=A=>(this.ndc.copy(this.morph.position),this.ndc.project(A),this.ndc.z=Math.min(Math.max(this.ndc.z,0),1),this.ndc),this.setPosition=(A,R,I)=>{this.morph.position.set(A,R,I)},this.setSpriteSize=A=>{v.scale.set(.015,.02,1),v.scale.multiplyScalar(A)},this.setUserSprite=()=>{S&&_&&(this.morph.add(_),this.morph.remove(v),C&&this.morph.remove(C),S=!1)},this.setImageForUserSprite=(A,R)=>{_&&(this.morph.remove(_),_.dispose()),g&&g.dispose(),w&&w.dispose(),g=new c.Texture,g.image=A,g.needsUpdate=!0,w=new c.SpriteMaterial({map:g,alphaTest:.5,transparent:!0,depthTest:!1,depthWrite:!1,sizeAttenuation:!1}),R||(R=[.05,.05,1]),_=new c.Sprite(w),_.center.set(.5,0),_.scale.set(R[0],R[1],R[2]),_.userData=this,this.setUserSprite()},this.setDefaultSprite=()=>{S||(S=!0,this.morph.add(v),_&&this.morph.remove(_),C&&this.morph.add(C))},this.loadUserSprite=(A,R)=>{if(A)if(A!==E){E=A;var I=new Image(128,128);I.crossOrigin="anonymous",I.onload=()=>{this.setImageForUserSprite(I,R)},I.src=A}else this.setUserSprite()},this.dispose=()=>{this.morph&&this.morph.clear(),v&&(v.clear(),v=void 0),C&&(C.material.map.dispose(),C.material.dispose(),C=void 0)},this.isEnabled=()=>x,this.setNumber=A=>{(!A||T!=A)&&C&&(this.morph.remove(C),C.material.map.dispose(),C.material.dispose(),C=void 0),!C&&A&&(C=p(A,.012,"black","Asap",50,500),this.morph.add(C)),T=A},this.getNumber=()=>T||1,this.setVisibility=function(A){A!==this.visible&&(this.visible=A,this.group.visible=A,this.parent.region&&(this.parent.region.pickableUpdateRequired=!0))},this.enable=()=>{x=!0,this.morph.visible=!0,this.visible=!0},this.disable=()=>{x=!1,this.morph.visible=!1,this.visible=!1},L()};d.prototype=Object.create(u(10).ZincObject.prototype),l.Marker=d},o=>{o.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIiA/Pg0KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4NCjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMzY1IiBoZWlnaHQ9IjU2MCIgdmlld0JveD0iMCAwIDM2NSA1NjAiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGRlc2M+Q3JlYXRlZCB3aXRoIEZhYnJpYy5qcyA1LjIuNDwvZGVzYz4NCjxkZWZzPg0KPC9kZWZzPg0KPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idHJhbnNwYXJlbnQiPjwvcmVjdD4NCjxnIHRyYW5zZm9ybT0ibWF0cml4KDAgMCAwIDAgMCAwKSIgaWQ9IjgwOGVkMjgzLTI1MjQtNDQwZi04OGFlLTNiZGI0N2JiNTc0OSIgID4NCjwvZz4NCjxnIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIDEgMTgyLjUgMjgwKSIgaWQ9ImRiMzA0MTNkLTViZmYtNGI5OC1hYjU5LTQ2NDQ5N2VlMTk5ZSIgID4NCjxyZWN0IHN0eWxlPSJzdHJva2U6IG5vbmU7IHN0cm9rZS13aWR0aDogMTsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1kYXNob2Zmc2V0OiAwOyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogNDsgZmlsbDogcmdiKDI1NSwyNTUsMjU1KTsgZmlsbC1ydWxlOiBub256ZXJvOyBvcGFjaXR5OiAxOyB2aXNpYmlsaXR5OiBoaWRkZW47IiB2ZWN0b3ItZWZmZWN0PSJub24tc2NhbGluZy1zdHJva2UiICB4PSItMTgyLjUiIHk9Ii0yODAiIHJ4PSIwIiByeT0iMCIgd2lkdGg9IjM2NSIgaGVpZ2h0PSI1NjAiIC8+DQo8L2c+DQo8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwIDAgMCAwIDAgOTcuNSkiICA+DQo8ZyBzdHlsZT0iIiAgID4NCjwvZz4NCjwvZz4NCjxnIHRyYW5zZm9ybT0ibWF0cml4KDAgMCAwIDAgMCA5Ny41KSIgID4NCjxnIHN0eWxlPSIiICAgPg0KPC9nPg0KPC9nPg0KPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC45OSAwIDAgMC45OSAxODIuNSAyODApIiAgPg0KPGcgc3R5bGU9IiIgdmVjdG9yLWVmZmVjdD0ibm9uLXNjYWxpbmctc3Ryb2tlIiAgID4NCgkJPGcgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgMSAwIDApIiAgPg0KPHJlY3Qgc3R5bGU9InN0cm9rZTogbm9uZTsgc3Ryb2tlLXdpZHRoOiAxOyBzdHJva2UtZGFzaGFycmF5OiBub25lOyBzdHJva2UtbGluZWNhcDogYnV0dDsgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7IHN0cm9rZS1saW5lam9pbjogbWl0ZXI7IHN0cm9rZS1taXRlcmxpbWl0OiA0OyBmaWxsOiByZ2IoMjU1LDI1NSwyNTUpOyBmaWxsLXJ1bGU6IG5vbnplcm87IG9wYWNpdHk6IDE7IHZpc2liaWxpdHk6IGhpZGRlbjsiIHZlY3Rvci1lZmZlY3Q9Im5vbi1zY2FsaW5nLXN0cm9rZSIgIHg9Ii01NDAiIHk9Ii01NDAiIHJ4PSIwIiByeT0iMCIgd2lkdGg9IjEwODAiIGhlaWdodD0iMTA4MCIgLz4NCjwvZz4NCgkJPGcgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgMSAwIDApIiAgPg0KPHBhdGggc3R5bGU9InN0cm9rZTogcmdiKDAsMCwwKTsgc3Ryb2tlLXdpZHRoOiAwOyBzdHJva2UtZGFzaGFycmF5OiBub25lOyBzdHJva2UtbGluZWNhcDogYnV0dDsgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7IHN0cm9rZS1saW5lam9pbjogbWl0ZXI7IHN0cm9rZS1taXRlcmxpbWl0OiA0OyBmaWxsOiByZ2IoMCw4OSwxMTYpOyBmaWxsLXJ1bGU6IG5vbnplcm87IG9wYWNpdHk6IDE7IiB2ZWN0b3ItZWZmZWN0PSJub24tc2NhbGluZy1zdHJva2UiICB0cmFuc2Zvcm09IiB0cmFuc2xhdGUoLTE4Mi45LCAtMjc5Ljg1KSIgZD0iTSAxODIuOSA1NTEuNyBDIDE4Mi45IDU1MS44MDAwMDAwMDAwMDAxIDE4My4xIDU1MiAxODMuMSA1NTIgQyAxODMuMSA1NTIgMzU4LjMgMjgzIDM1OC4zIDE5NC42IEMgMzU4LjMgNjQuNSAyNjkuNSA3LjkwMDAwMDAwMDAwMDAwNiAxODIuOSA3LjY5OTk5OTk5OTk5OTk4OSBDIDk2LjMgNy45IDcuNSA2NC41IDcuNSAxOTQuNiBDIDcuNSAyODMgMTgyLjggNTUyIDE4Mi44IDU1MiBDIDE4Mi44IDU1MiAxODIuOSA1NTEuNyAxODIuOSA1NTEuNyB6IE0gMTIyLjIgMTg3LjIgQyAxMjIuMiAxNTMuNiAxNDkuNCAxMjYuMzk5OTk5OTk5OTk5OTkgMTgzIDEyNi4zOTk5OTk5OTk5OTk5OSBDIDIxNi42IDEyNi4zOTk5OTk5OTk5OTk5OSAyNDMuOCAxNTMuNiAyNDMuOCAxODcuMiBDIDI0My44IDIyMC43OTk5OTk5OTk5OTk5OCAyMTYuNSAyNDggMTgyLjkgMjQ4IEMgMTQ5LjQgMjQ4IDEyMi4yIDIyMC44IDEyMi4yIDE4Ny4yIHoiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgLz4NCjwvZz4NCgkJPGcgdHJhbnNmb3JtPSJtYXRyaXgoMy44MiAwIDAgMy44MiAwIC0xMDAuNzcpIiAgPg0KPGNpcmNsZSBzdHlsZT0ic3Ryb2tlOiByZ2IoMCwwLDApOyBzdHJva2Utd2lkdGg6IDA7IHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7IHN0cm9rZS1saW5lY2FwOiBidXR0OyBzdHJva2UtZGFzaG9mZnNldDogMDsgc3Ryb2tlLWxpbmVqb2luOiBtaXRlcjsgc3Ryb2tlLW1pdGVybGltaXQ6IDQ7IGZpbGw6IHJnYigyNTUsMjU1LDI1NSk7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHZlY3Rvci1lZmZlY3Q9Im5vbi1zY2FsaW5nLXN0cm9rZSIgIGN4PSIwIiBjeT0iMCIgcj0iMzUiIC8+DQo8L2c+DQo8L2c+DQo8L2c+DQo8L3N2Zz4="},(o,l,u)=>{var c=u(4),f=function(h,m,y,p){u(10).ZincObject.call(this);var d;m&&(d=m.clone(),d.vertexColors=c.FaceColors),this.id=y;var b=void 0,v=void 0;this.isGlyph=!0,this.fromMesh=g=>!!(g&&g.isMesh)&&(this.morph=g.clone(),this.morph.userData=this,this.group.add(this.morph),!0),h&&d&&this.fromMesh(new c.Mesh(h,d)),this.getGlyphset=function(){return p},this.setLabel=g=>{g&&(typeof g=="string"||g instanceof String)&&(v=g,this.morph&&(this.morph.name=g)),b&&this.showLabel()},this.showLabel=g=>{if(b&&(position=b.getPosition(),this.group.remove(b.getSprite()),b.dispose(),b=void 0),v&&(typeof v=="string"||v instanceof String)){var w=[0,0,0];b=new(u(17)).Label(v,g),b.setPosition(w[0],w[1],w[2]),this.group.add(b.getSprite())}},this.getLabel=()=>v,this.getMesh=()=>this.morph,this.setTransformation=(g,w,_,E)=>{this.morph&&(this.morph.matrix.elements[0]=w[0],this.morph.matrix.elements[1]=w[1],this.morph.matrix.elements[2]=w[2],this.morph.matrix.elements[3]=0,this.morph.matrix.elements[4]=_[0],this.morph.matrix.elements[5]=_[1],this.morph.matrix.elements[6]=_[2],this.morph.matrix.elements[7]=0,this.morph.matrix.elements[8]=E[0],this.morph.matrix.elements[9]=E[1],this.morph.matrix.elements[10]=E[2],this.morph.matrix.elements[11]=0,this.morph.matrix.elements[12]=g[0],this.morph.matrix.elements[13]=g[1],this.morph.matrix.elements[14]=g[2],this.morph.matrix.elements[15]=1,this.morph.matrixAutoUpdate=!1),b&&b.setPosition(g[0],g[1],g[2])},this.setColour=g=>{b&&b.setColour(g),this.secondaryMesh&&this.secondaryMesh.material&&(this.secondaryMesh.material.color=colour),this.geometry.colorsNeedUpdate=!0},this.dispose=()=>{this.material&&this.material.dispose(),this.morph=void 0}};f.prototype=Object.create(u(10).ZincObject.prototype),l.Glyph=f},(o,l,u)=>{var c=u(7).default;l.Label=function(f,h){var m=f,y=void 0;y=h?new c(m,.015,h.getStyle()):new c(m,.015),y.material.sizeAttenuation=!1,y.center.x=-.05,y.center.y=0,this.getPosition=()=>y?[y.position.x,y.position.y,y.position.z]:[0,0,0],this.setPosition=(p,d,b)=>{y&&y.position.set(p,d,b)},this.setColour=p=>{y.color=p.getStyle()},this.setScale=p=>{y&&0<p&&y.scale.set(p,p,1)},this.dispose=()=>{y.dispose()},this.getSprite=()=>y,this.getString=()=>m}},(o,l,u)=>{function c(y){throw new TypeError('"'+y+'" is read-only')}var f=u(4),h=u(19).JSONLoader,m=function(){u(10).ZincObject.call(this);var y=[],p=void 0,d=void 0,b=void 0,v=void 0,g=void 0,w=void 0,_=void 0,E=0,S=0,x=[0,0,0],T=[0,0,0],C=[0,0,0],L="NONE";this.ready=!1;var A=!1,R=!1;this.isGlyphset=!0;for(var I=new f.Matrix4,O=new f.Color,N=new f.Color,M=new f.Box3,P=new f.Box3,B=new f.Box3,D=[],V=[],G=[],H=[],K=[],te=[],W=[],z=[],j=0;8>j;j++)D[j]=new f.Vector3;this.load=(F,$,J,k,U)=>{p=F.axis1,d=F.axis2,b=F.axis3,v=F.positions,g=F.scale,w=F.colors,_=F.label,A=F.metadata.MorphColours,R=F.metadata.MorphVertices,E=F.metadata.number_of_time_steps,L=F.metadata.repeat_mode,S=F.metadata.number_of_vertices,L=="AXES_2D"||L=="MIRROR"?S*=2:L=="AXES_3D"&&(S*=3),x=F.metadata.base_size,T=F.metadata.offset,C=F.metadata.scale_factors;var oe=new h;this.geometry=new f.BufferGeometry;var le=new f.InstancedMesh(this.geometry,void 0,S);if(this.setMorph(le),k){var ae=oe.parse($);ne(J,U)(ae.geometry,ae.materials),ae.geometry.dispose()}else oe.crossOrigin="Anonymous",oe.load($,ne(J,U))};var Z=(F,$,J,k,U,oe)=>{if(L=="NONE"||L=="MIRROR"){for(var le,ae=[0,0,0],he=[0,0,0],ve=[0,0,0],we=[0,0,0],ce=[0,0,0],ge=[0,0,0],re=[0,0,0],xe=[0,0,0],fe=[0,0,0],ye=0;3>ye;ye++)le=0>U[ye]?-1:1,ae[ye]=le*x[ye]+U[ye]*C[ye];for(var ye=0;3>ye;ye++)he[ye]=$[ye]*ae[0],ve[ye]=J[ye]*ae[1],we[ye]=k[ye]*ae[2],ce[ye]=F[ye]+T[0]*he[ye]+T[1]*ve[ye]+T[2]*we[ye],L=="MIRROR"&&(ge[ye]=-he[ye],re[ye]=-ve[ye],xe[ye]=-we[ye],fe[ye]=ce[ye],0>U[0]&&(ce[ye]-=he[ye],fe[ye]-=ge[ye]));0>we[0]*(he[1]*ve[2]-he[2]*ve[1])+we[1]*(he[2]*ve[0]-he[0]*ve[2])+we[2]*(he[0]*ve[1]-he[1]*ve[0])&&(we[0]=-we[0],we[1]=-we[1],we[2]=-we[2]),oe[0]=[ce,he,ve,we],L=="MIRROR"&&(0>xe[0]*(ge[1]*re[2]-ge[2]*re[1])+xe[1]*(ge[2]*re[0]-ge[0]*re[2])+xe[2]*(ge[0]*re[1]-ge[1]*re[0])&&(xe[0]=-xe[0],xe[1]=-xe[1],xe[2]=-xe[2]),oe[1]=[fe,ge,re,xe])}else if(L=="AXES_2D"||L=="AXES_3D"){for(var le,_e=[0,0,0],Ue=[0,0,0],ye=0;3>ye;ye++)le=0>U[ye]?-1:1,_e[ye]=le*x[0]+U[ye]*C[0];for(var ye=0;3>ye;ye++)Ue[ye]=F[ye]+T[0]*_e[0]*$[ye]+T[1]*_e[1]*J[ye]+T[2]*_e[2]*k[ye];for(var tt=glyph_repeat_mode=="AXES_2D"?2:3,Le=0;Le<tt;Le++){var ct=void 0,Ie=void 0,Je=U[Le],We=[0,0,0],ot=[0,0,0],et=[0,0,0];Le==0?(ct=$,Ie=J):Le==1?(ct=J,Ie=glyph_repeat_mode=="AXES_2D"?$:k):(ct=k,Ie=$);var Ut=x[0]+Je*C[0];We[0]=ct[0]*Ut,We[1]=ct[1]*Ut,We[2]=ct[2]*Ut,et[0]=We[1]*Ie[2]-Ie[1]*We[2],et[1]=We[2]*Ie[0]-Ie[2]*We[0],et[2]=We[0]*Ie[1]-We[1]*Ie[0];var gt=Math.sqrt(et[0]*et[0]+et[1]*et[1]+et[2]*et[2]);if(0<gt){var se=(x[2]+Je*C[2])/gt;L=="AXES_2D"&&0<Le&&(se*=-1),et[0]*=se,et[1]*=se,et[2]*=se}if(ot[0]=et[1]*We[2]-We[1]*et[2],ot[1]=et[2]*We[0]-We[2]*et[0],ot[2]=et[0]*We[1]-et[1]*We[0],gt=Math.sqrt(ot[0]*ot[0]+ot[1]*ot[1]+ot[2]*ot[2]),0<gt){var Me=(x[1]+Je*C[1])/gt;ot[0]*=Me,ot[1]*=Me,ot[2]*=Me}oe[Le]=[Ue,We,ot,et]}}return oe},Q=(F,$,J,k,U)=>{var oe=1;L=="AXES_2D"||L=="MIRROR"?oe=2:L=="AXES_3D"&&(oe=3);var le=F.length/3,ae=0;z.length=oe;for(var he=0;he<le;he++){var ve=3*he,we=[F[ve],F[ve+1],F[ve+2]],ce=[$[ve],$[ve+1],$[ve+2]],ge=[J[ve],J[ve+1],J[ve+2]],re=[k[ve],k[ve+1],k[ve+2]],xe=[U[ve],U[ve+1],U[ve+2]],fe=Z(we,ce,ge,re,xe,z);if(fe.length==oe)for(var ye=0;ye<oe;ye++){I.elements[0]=fe[ye][1][0],I.elements[1]=fe[ye][1][1],I.elements[2]=fe[ye][1][2],I.elements[3]=0,I.elements[4]=fe[ye][2][0],I.elements[5]=fe[ye][2][1],I.elements[6]=fe[ye][2][2],I.elements[7]=0,I.elements[8]=fe[ye][3][0],I.elements[9]=fe[ye][3][1],I.elements[10]=fe[ye][3][2],I.elements[11]=0,I.elements[12]=fe[ye][0][0],I.elements[13]=fe[ye][0][1],I.elements[14]=fe[ye][0][2],I.elements[15]=1,this.morph.setMatrixAt(ae,I);var _e=y[ae];_e&&_e.setTransformation(fe[ye][0],fe[ye][1],fe[ye][2],fe[ye][3]),ae++}}this.morph.instanceMatrix.needsUpdate=!0},ee=F=>{var $=1;L=="AXES_2D"||L=="MIRROR"?$=2:L=="AXES_3D"&&($=3);for(var J,k=F.length,U=0,oe=0;oe<k;oe++){J=F[oe];for(var le=0;le<$;le++){O.setHex(J),this.morph.setColorAt(U,O);var ae=y[U];ae&&ae.setColour(O),U++}}this.morph.instanceColor.needsUpdate=!0},ie=()=>{var F=V,$=G,J=H,k=K,U=te,oe=W,le=this.inbuildTime/this.duration*(E-1),ae=Math.floor(le),he=1-(le-ae),ve=Math.ceil(le);if(R){var we=v[ae.toString()],ce=v[ve.toString()],ge=p[ae.toString()],re=p[ve.toString()],xe=d[ae.toString()],fe=d[ve.toString()],ye=b[ae.toString()],_e=b[ve.toString()],Ue=g[ae.toString()],tt=g[ve.toString()];V.length=we.length,G.length=we.length,H.length=we.length,K.length=we.length,te.length=we.length;for(var Le=0;Le<we.length;Le++)F[Le]=he*we[Le]+(1-he)*ce[Le],$[Le]=he*ge[Le]+(1-he)*re[Le],J[Le]=he*xe[Le]+(1-he)*fe[Le],k[Le]=he*ye[Le]+(1-he)*_e[Le],U[Le]=he*Ue[Le]+(1-he)*tt[Le]}else v[0],c("current_positions"),p[0],c("current_axis1s"),d[0],c("current_axis2s"),b[0],c("current_axis3s"),g[0],c("current_scales");if(Q(F,$,J,k,U),this.boundingBoxUpdateRequired=!0,w!=null){if(A){var ct=w[ae.toString()],Ie=w[ve.toString()];oe.length=ct.length;for(var Je=0;Je<ct.length;Je++)O.setHex(ct[Je]),N.setHex(Ie[Je]),O.setRGB(O.r*he+N.r*(1-he),O.g*he+N.g*(1-he),O.b*he+N.b*(1-he)),oe[Je]=O.getHex()}else w[0],c("current_colors");ee(oe)}};this.showLabel=()=>{for(var F=0;F<y.length;F++)y[F].showLabel(this.morph.material?this.morph.material.color:void 0)};var q=F=>{if(_!=null&&F)for(var $,J=0;J<S;J++)$=new(u(16)).Glyph(void 0,void 0,J,this),_!=null&&_[J]!=null&&$.setLabel(_[J]),0<E&&$.setFrustumCulled(!1),y[J]=$,this.morph.add($.getGroup());_!=null&&F&&this.showLabel(this.morph.material?this.morph.material.color:void 0),Q(v[0],p[0],d[0],b[0],g[0]),w!=null&&ee(w[0]),this.ready=!0,this.boundingBoxUpdateRequired=!0};this.addCustomGlyph=F=>{F.isGlyph&&y.push(F),this.ready=!0,this.boundingBoxUpdateRequired=!0},this.addMeshAsGlyph=(F,$)=>{if(F.isMesh){var J=new(u(16)).Glyph(void 0,void 0,$,this);return J.fromMesh(F),y.push(J),this.morph.add(J.getGroup()),this.ready=!0,this.boundingBoxUpdateRequired=!0,J}},this.forEachGlyph=F=>{for(var $=0;$<y.length;$++)F(y[$])};var ne=(F,$)=>(J,k)=>{var U=J.toBufferGeometry();this.geometry.copy(U),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox(),U.dispose(),k&&k[0]&&(this.morph.material=k[0]),q($),this.morph.name=this.groupName,this.morph.userData=this,this.setMorph(this.morph),J.dispose(),F!=null&&typeof F=="function"&&F(this)};this.getClosestVertexIndex=function(){var F=-1;if(this.morph&&this.ready){this.getBoundingBox().getCenter(this._v1);for(var $,J=v[0],k=J.length/3,U=-1,oe=0,le=0;le<k;le++)$=3*le,this._v2.set(J[$],J[$+1],J[$+2]),oe=this._v1.distanceTo(this._v2),(U==-1||U>oe)&&(U=oe,F=le)}return F},this.getClosestVertex=function(){if(this.closestVertexIndex==-1&&(this.closestVertexIndex=this.getClosestVertexIndex()),0<=this.closestVertexIndex&&this.morph){var F=new f.Vector3;return this.morph.getMatrixAt(this.closestVertexIndex,I),F.setFromMatrixPosition(I),F}},this.getBoundingBox=()=>{if(this.morph&&this.ready&&this.morph.visible){if(this.boundingBoxUpdateRequired){M.setFromBufferAttribute(this.morph.geometry.attributes.position);for(var F=0;F<S;F++)this.morph.getMatrixAt(F,I),P.copy(M).applyMatrix4(I),F==0?B.copy(P):B.union(P);if(B)this.cachedBoundingBox.copy(B),this.morph.updateWorldMatrix(!0,!0),this.cachedBoundingBox.applyMatrix4(this.morph.matrixWorld),this.boundingBoxUpdateRequired=!1;else return}return this.cachedBoundingBox}},this.setMorphTime=F=>{this.inbuildTime=F>this.duration?this.duration:0>F?0:F,(A||R)&&(ie(),R&&(this.markerUpdateRequired=!0))},this.isTimeVarying=()=>!!((this.ready===!1||0<E)&&(A||R)),this.getCurrentTime=()=>this.inbuildTime,this.dispose=()=>{for(var F=y.length-1;0<=F;F--)y[F].dispose();this.geometry&&this.geometry.dispose(),this.morph&&this.morph.material.dispose(),p=void 0,d=void 0,b=void 0,v=void 0,g=void 0,w=void 0,this.ready=!1,this.groupName=void 0},this.render=(F,$,J)=>{if($==!0){var k=this.inbuildTime+F;k>this.duration&&(k-=this.duration),this.inbuildTime=k,(A||R)&&ie()}this.updateMarker($,J)}};m.prototype=Object.create(u(10).ZincObject.prototype),l.Glyphset=m},(o,l,u)=>{u.r(l),u.d(l,{JSONLoader:()=>S});var c=u(4),f=u(20).Loader,h=c.LoaderUtils,m=c.AnimationClip,y=c.Vector3,p=c.Vector4,d=c.Color,b=c.Vector2,v=u(6).Face3,g=u(6).Geometry,w=c.FileLoader,_=c.DefaultLoadingManager,E=u(21).VideoHandler;function S(x){typeof x=="boolean"&&(console.warn("THREE.JSONLoader: showStatus parameter has been removed from constructor."),x=void 0),this.manager=x===void 0?_:x,this.withCredentials=!1,this.paramsString=""}Object.assign(S.prototype,{load:function(T,C,L,A){var R=this,I=this.texturePath&&typeof this.texturePath=="string"?this.texturePath:h.extractUrlBase(T),O=new w(this.manager);T.split("?"),this.paramsString=T.length===2?paramsStrings[1]:"",O.setWithCredentials(this.withCredentials),O.load(T,function(N){var M=JSON.parse(N),P=M.metadata;if(P!==void 0){var B=P.type;if(B!==void 0&&B.toLowerCase()==="object")return void console.error("THREE.JSONLoader: "+T+" should be loaded with THREE.ObjectLoader instead.")}if(R&&R.parse){var D=R.parse(M,I);C(D.geometry,D.materials)}},L,A)},setTexturePath:function(T){this.texturePath=T},parse:function(){function x(A,R){function I(xe,fe){return xe&1<<fe}var O,N,M,P,B,D,V,G,H,K,te,W,z,j,Z,Q,ee,ie,q,ne,F,$,J,k,U,oe,le,ae=A.faces,he=A.vertices,ve=A.normals,we=A.colors,ce=A.scale,ge=0;if(A.uvs!==void 0){for(O=0;O<A.uvs.length;O++)A.uvs[O].length&&ge++;for(O=0;O<ge;O++)R.faceVertexUvs[O]=[]}for(P=0,B=he.length;P<B;)ie=new y,ie.x=he[P++]*ce,ie.y=he[P++]*ce,ie.z=he[P++]*ce,R.vertices.push(ie);if(P=0,B=ae.length,A.uvs)for(O=0;O<A.uvs.length;O++){R.uvs[O]=[];for(var re=0;re<A.uvs[O].length;re++)R.uvs[O][re]=A.uvs[O][re]}if(ve)for(O=0;O<ve.length;O++)R.normals[O]=ve[O];if(we)for(O=0;O<we.length;O++)R.colors[O]=we[O];for(;P<B;)if(K=ae[P++],te=I(K,0),W=I(K,1),z=I(K,3),j=I(K,4),Z=I(K,5),Q=I(K,6),ee=I(K,7),te){if(ne=new v,ne.a=ae[P],ne.b=ae[P+1],ne.c=ae[P+3],F=new v,F.a=ae[P+1],F.b=ae[P+2],F.c=ae[P+3],P+=4,W&&(H=ae[P++],ne.materialIndex=H,F.materialIndex=H),M=R.faces.length,z)for(O=0;O<ge;O++)for(k=A.uvs[O],R.faceVertexUvs[O][M]=[],R.faceVertexUvs[O][M+1]=[],N=0;4>N;N++)G=ae[P++],oe=k[2*G],le=k[2*G+1],U=new b(oe,le),N!==2&&R.faceVertexUvs[O][M].push(U),N!==0&&R.faceVertexUvs[O][M+1].push(U);if(j&&(V=3*ae[P++],ne.normal.set(ve[V++],ve[V++],ve[V]),F.normal.copy(ne.normal)),Z)for(O=0;4>O;O++)V=3*ae[P++],J=new y(ve[V++],ve[V++],ve[V]),O!==2&&ne.vertexNormals.push(J),O!==0&&F.vertexNormals.push(J);if(Q&&(D=ae[P++],$=we[D],ne.color.setHex($),F.color.setHex($)),ee)for(O=0;4>O;O++)D=ae[P++],$=we[D],O!==2&&ne.vertexColors.push(new d($)),O!==0&&F.vertexColors.push(new d($));R.faces.push(ne),R.faces.push(F)}else{if(q=new v,q.a=ae[P++],q.b=ae[P++],q.c=ae[P++],W&&(H=ae[P++],q.materialIndex=H),M=R.faces.length,z)for(O=0;O<ge;O++)for(k=A.uvs[O],R.faceVertexUvs[O][M]=[],N=0;3>N;N++)G=ae[P++],oe=k[2*G],le=k[2*G+1],U=new b(oe,le),R.faceVertexUvs[O][M].push(U);if(j&&(V=3*ae[P++],q.normal.set(ve[V++],ve[V++],ve[V])),Z)for(O=0;3>O;O++)V=3*ae[P++],J=new y(ve[V++],ve[V++],ve[V]),q.vertexNormals.push(J);if(Q&&(D=ae[P++],q.color.setHex(we[D])),ee)for(O=0;3>O;O++)D=ae[P++],q.vertexColors.push(new d(we[D]));R.faces.push(q)}}function T(A,R){var I=A.influencesPerVertex===void 0?2:A.influencesPerVertex;if(A.skinWeights)for(var O=0,N=A.skinWeights.length;O<N;O+=I){var M=A.skinWeights[O],P=1<I?A.skinWeights[O+1]:0,B=2<I?A.skinWeights[O+2]:0,D=3<I?A.skinWeights[O+3]:0;R.skinWeights.push(new p(M,P,B,D))}if(A.skinIndices)for(var O=0,N=A.skinIndices.length;O<N;O+=I){var V=A.skinIndices[O],G=1<I?A.skinIndices[O+1]:0,H=2<I?A.skinIndices[O+2]:0,K=3<I?A.skinIndices[O+3]:0;R.skinIndices.push(new p(V,G,H,K))}R.bones=A.bones,R.bones&&0<R.bones.length&&(R.skinWeights.length!==R.skinIndices.length||R.skinIndices.length!==R.vertices.length)&&console.warn("When skinning, number of vertices ("+R.vertices.length+"), skinIndices ("+R.skinIndices.length+"), and skinWeights ("+R.skinWeights.length+") should match.")}function C(A,R){var I=A.scale;if(A.morphTargets!==void 0)for(var O=0,N=A.morphTargets.length;O<N;O++){R.morphTargets[O]={},R.morphTargets[O].name=A.morphTargets[O].name,R.morphTargets[O].vertices=[];for(var M,P=R.morphTargets[O].vertices,B=A.morphTargets[O].vertices,D=0,V=B.length;D<V;D+=3)M=new y,M.x=B[D]*I,M.y=B[D+1]*I,M.z=B[D+2]*I,P.push(M)}if(A.morphNormals!==void 0){for(var O=0,N=A.morphNormals.length;O<N;O++)if(R.morphTargets[O]){R.morphTargets[O].normals=[];for(var G,H=R.morphTargets[O].normals,K=A.morphNormals[O].normals,D=0,V=K.length;D<V;D+=3)G=new y,G.x=K[D],G.y=K[D+1],G.z=K[D+2],H.push(G);R.morphNormalsReady=!0}}if(A.morphColors!==void 0){var O,N,te,W,z,j,Z;for(O=0,N=A.morphColors.length;O<N;O++)for(R.morphColors[O]={},R.morphColors[O].name=A.morphColors[O].name,R.morphColors[O].colors=[],z=R.morphColors[O].colors,j=A.morphColors[O].colors,te=0,W=j.length;te<W;te+=3)Z=new c.Color(16755200),Z.setRGB(j[te],j[te+1],j[te+2]),z.push(Z)}}function L(A,R){var I=[],O=[];A.animation!==void 0&&O.push(A.animation),A.animations!==void 0&&(A.animations.length?O=O.concat(A.animations):O.push(A.animations));for(var N,M=0;M<O.length;M++)N=m.parseAnimation(O[M],R.bones),N&&I.push(N);if(R.morphTargets){var P=m.CreateClipsFromMorphTargetSequences(R.morphTargets,10);I=I.concat(P)}0<I.length&&(R.animations=I)}return function(A,R){A.data!==void 0&&(A=A.data),A.scale=A.scale===void 0?1:1/A.scale;var I=new g;if(I.morphColors=[],x(A,I),T(A,I),C(A,I),L(A,I),I.computeFaceNormals(),I.computeBoundingSphere(),A.materials===void 0||A.materials.length===0)return{geometry:I};var O=f.prototype.initMaterials(A.materials,R,"Anonymous");if(A.materials[0].video){var N=R+A.materials[0].video;this.paramsString&&(N+="?".concat(this.paramsString));var M=new E(N);I._video=M}return O&&0<O.length&&(O[0].side=A.materials[0].singleSided?c.FrontSide:A.materials[0].flipSided?c.BackSide:c.DoubleSide,A.materials[0].specularCoef&&(O[0].shininess=Math.floor(A.materials[0].specularCoef/3))),{geometry:I,materials:O}}}()})},(o,l,u)=>{u.r(l),u.d(l,{Loader:()=>f});var c=u(4);u(4);function f(){}f.Handlers={handlers:[],add:function(m,y){this.handlers.push(m,y)},get:function(m){for(var y=this.handlers,p=0,d=y.length;p<d;p+=2){var b=y[p],v=y[p+1];if(b.test(m))return v}return null}},Object.assign(f.prototype,{crossOrigin:"anonymous",onLoadStart:function(){},onLoadProgress:function(){},onLoadComplete:function(){},initMaterials:function(m,y,p){for(var d=[],b=0;b<m.length;++b)d[b]=this.createMaterial(m[b],y,p);return d},createMaterial:function(){var h={NoBlending:c.NoBlending,NormalBlending:c.NormalBlending,AdditiveBlending:c.AdditiveBlending,SubtractiveBlending:c.SubtractiveBlending,MultiplyBlending:c.MultiplyBlending,CustomBlending:c.CustomBlending},m=new c.Color,y=new c.TextureLoader,p=new c.MaterialLoader;return function(d,b,v){function g(x,T,C,L,A){var R,I=b+x,O=f.Handlers.get(I);O===null?(y.setCrossOrigin(v),R=y.load(I)):R=O.load(I),T!==void 0&&(R.repeat.fromArray(T),T[0]!==1&&(R.wrapS=c.RepeatWrapping),T[1]!==1&&(R.wrapT=c.RepeatWrapping)),C!==void 0&&R.offset.fromArray(C),L!==void 0&&(L[0]==="repeat"&&(R.wrapS=c.RepeatWrapping),L[0]==="mirror"&&(R.wrapS=c.MirroredRepeatWrapping),L[1]==="repeat"&&(R.wrapT=c.RepeatWrapping),L[1]==="mirror"&&(R.wrapT=c.MirroredRepeatWrapping)),A!==void 0&&(R.anisotropy=A);var N=c.MathUtils.generateUUID();return w[N]=R,N}var w={},_={uuid:c.MathUtils.generateUUID(),type:"MeshLambertMaterial"};for(var E in d){var S=d[E];switch(E){case"DbgColor":case"DbgIndex":case"opticalDensity":case"illumination":break;case"DbgName":_.name=S;break;case"blending":_.blending=h[S];break;case"colorAmbient":case"mapAmbient":console.warn("THREE.Loader.createMaterial:",E,"is no longer supported.");break;case"colorDiffuse":_.color=m.fromArray(S).getHex();break;case"colorSpecular":_.specular=m.fromArray(S).getHex();break;case"colorEmissive":_.emissive=m.fromArray(S).getHex();break;case"specularCoef":_.shininess=S;break;case"shading":S.toLowerCase()==="basic"&&(_.type="MeshBasicMaterial"),S.toLowerCase()==="phong"&&(_.type="MeshPhongMaterial"),S.toLowerCase()==="standard"&&(_.type="MeshStandardMaterial");break;case"mapDiffuse":_.map=g(S,d.mapDiffuseRepeat,d.mapDiffuseOffset,d.mapDiffuseWrap,d.mapDiffuseAnisotropy);break;case"mapDiffuseRepeat":case"mapDiffuseOffset":case"mapDiffuseWrap":case"mapDiffuseAnisotropy":break;case"mapEmissive":_.emissiveMap=g(S,d.mapEmissiveRepeat,d.mapEmissiveOffset,d.mapEmissiveWrap,d.mapEmissiveAnisotropy);break;case"mapEmissiveRepeat":case"mapEmissiveOffset":case"mapEmissiveWrap":case"mapEmissiveAnisotropy":break;case"mapLight":_.lightMap=g(S,d.mapLightRepeat,d.mapLightOffset,d.mapLightWrap,d.mapLightAnisotropy);break;case"mapLightRepeat":case"mapLightOffset":case"mapLightWrap":case"mapLightAnisotropy":break;case"mapAO":_.aoMap=g(S,d.mapAORepeat,d.mapAOOffset,d.mapAOWrap,d.mapAOAnisotropy);break;case"mapAORepeat":case"mapAOOffset":case"mapAOWrap":case"mapAOAnisotropy":break;case"mapBump":_.bumpMap=g(S,d.mapBumpRepeat,d.mapBumpOffset,d.mapBumpWrap,d.mapBumpAnisotropy);break;case"mapBumpScale":_.bumpScale=S;break;case"mapBumpRepeat":case"mapBumpOffset":case"mapBumpWrap":case"mapBumpAnisotropy":break;case"mapNormal":_.normalMap=g(S,d.mapNormalRepeat,d.mapNormalOffset,d.mapNormalWrap,d.mapNormalAnisotropy);break;case"mapNormalFactor":_.normalScale=S;break;case"mapNormalRepeat":case"mapNormalOffset":case"mapNormalWrap":case"mapNormalAnisotropy":break;case"mapSpecular":_.specularMap=g(S,d.mapSpecularRepeat,d.mapSpecularOffset,d.mapSpecularWrap,d.mapSpecularAnisotropy);break;case"mapSpecularRepeat":case"mapSpecularOffset":case"mapSpecularWrap":case"mapSpecularAnisotropy":break;case"mapMetalness":_.metalnessMap=g(S,d.mapMetalnessRepeat,d.mapMetalnessOffset,d.mapMetalnessWrap,d.mapMetalnessAnisotropy);break;case"mapMetalnessRepeat":case"mapMetalnessOffset":case"mapMetalnessWrap":case"mapMetalnessAnisotropy":break;case"mapRoughness":_.roughnessMap=g(S,d.mapRoughnessRepeat,d.mapRoughnessOffset,d.mapRoughnessWrap,d.mapRoughnessAnisotropy);break;case"mapRoughnessRepeat":case"mapRoughnessOffset":case"mapRoughnessWrap":case"mapRoughnessAnisotropy":break;case"mapAlpha":_.alphaMap=g(S,d.mapAlphaRepeat,d.mapAlphaOffset,d.mapAlphaWrap,d.mapAlphaAnisotropy);break;case"mapAlphaRepeat":case"mapAlphaOffset":case"mapAlphaWrap":case"mapAlphaAnisotropy":break;case"flipSided":_.side=c.BackSide;break;case"doubleSided":_.side=c.DoubleSide;break;case"transparency":console.warn("THREE.Loader.createMaterial: transparency has been renamed to opacity"),_.opacity=S;break;case"depthTest":case"depthWrite":case"colorWrite":case"opacity":case"reflectivity":case"transparent":case"visible":case"wireframe":_[E]=S;break;case"vertexColors":S===!0&&(_.vertexColors=c.VertexColors),S==="face"&&(_.vertexColors=c.FaceColors);break;default:console.error("THREE.Loader.createMaterial: Unsupported",E,S)}}return _.type==="MeshBasicMaterial"&&delete _.emissive,_.type!=="MeshPhongMaterial"&&delete _.specular,1>_.opacity&&(_.transparent=!0),p.setTextures(w),p.parse(_)}}()})},(o,l,u)=>{var c=u(4);l.VideoHandler=function(f){var h=this;this.video=void 0,this.videoTexture=void 0,this.setMorphTime=function(m,y){var p=m/y*h.video.duration;h.video.currentTime=p},this.getVideoDuration=function(){return h.video.duration},this.createCanvasVideoTexture=function(){return h.videoTexture=new c.VideoTexture(h.video),h.videoTexture.minFilter=c.LinearFilter,h.videoTexture.magFilter=c.LinearFilter,h.videoTexture.format=c.RGBFormat,h.video.currentTime=0,h.videoTexture},this.getCurrentTime=function(m){return h.video?m*(h.video.currentTime/h.video.duration):0},this.isReadyToPlay=function(){return!!(h.video&&3<=h.video.readyState)},function(){document&&(h.video=document.createElement("video"),h.video.crossOrigin="anonymous",h.video.src=f,h.video.load(),h.video.loop=!0)}()}},(o,l,u)=>{var c=u(4),f=u(23).Points,h=u(5).toBufferGeometry,m=u(5).getCircularTexture,y=u(17).Label,p=function(){u(10).ZincObject.call(this),this.isPointset=!0;var d=[];this.createMesh=(v,g,w)=>{if(v&&g){var _=h(v,w),E=m();g.map=E;var S=new f(_,g);this.setMesh(S,w.localTimeEnabled,w.localMorphColour)}};var b=(v,g,w,_)=>{if(w){var E=new c.Color(_),S=new y(w,E);S.setPosition(g[0],g[1],g[2]);var x=S.getSprite();x.material.sizeAttenuation=!1,x.material.alphaTest=.5,x.material.transparent=!0,x.material.depthWrite=!1,x.material.depthTest=!1,this.group.add(x),d[v]=S}};this.addPoints=(v,g,w)=>{if(v&&0<v.length){var _=this.drawRange-1,E=this.addVertices(v),S=this.getMorph();if(!S){var x=new c.PointsMaterial({alphaTest:.5,size:10,color:w,sizeAttenuation:!1});E.colorsNeedUpdate=!0,this.createMesh(E,x,{localTimeEnabled:!1,localMorphColour:!1})}var T=_+v.length,C=0;if(Array.isArray(g)&&g.length===v.length||typeof g=="string")for(_;_+C<T;){var L=typeof g=="string"?g:g[C];b(C,v[C],L,w),C++}this.region&&(this.region.pickableUpdateRequired=!0)}},this.setSize=v=>{this.morph&&this.morph.material&&(this.morph.material.size=v,this.morph.material.needsUpdate=!0)},this.setSizeAttenuation=v=>{this.morph&&this.morph.material&&(this.morph.material.sizeAttenuation=v,this.morph.material.needsUpdate=!0)},this.getVerticesByIndex=function(v){if(0<=v&&this.drawRange>v){var g=this.getMorph().geometry.getAttribute("position");return[g.getX(v),g.getY(v),g.getZ(v)]}},this.editVertices=function(v,g){if(v&&v.length){var w=this.getMorph(),_=g+v.length-1;if(!w||0>g||_>=this.drawRange)return;var E=w.geometry.getAttribute("position"),S=g;v.forEach(x=>{var T=d[S];T&&T.setPosition(x[0],x[1],x[2]),E.setXYZ(S++,x[0],x[1],x[2])}),E.needsUpdate=!0,this.boundingBoxUpdateRequired=!0}},this.render=(v,g,w,_)=>{this.morph&&w&&(this.morph.sizePerPixel=w.pixelHeight),p.prototype.render.call(this,v,g,w,_)}};p.prototype=Object.create(u(10).ZincObject.prototype),l.Pointset=p},(o,l,u)=>{u.r(l),u.d(l,{Points:()=>b});var c=u(4),f=new c.Matrix4,h=new c.Ray,m=new c.Sphere,y=new c.Vector3,p=new c.Vector3,d=new c.Vector3;class b extends c.Object3D{constructor(){var _=0<arguments.length&&arguments[0]!==void 0?arguments[0]:new c.BufferGeometry,E=1<arguments.length&&arguments[1]!==void 0?arguments[1]:new c.PointsMaterial;super(),this.type="Points",this.geometry=_,this.material=E,this.sizePerPixel=1,this.updateMorphTargets()}copy(_){return super.copy(_),this.material=_.material,this.geometry=_.geometry,this}raycast(_,E){var S=this.geometry,x=this.matrixWorld,T=_.params.Points.threshold,C=S.drawRange;if(S.boundingSphere===null&&S.computeBoundingSphere(),m.copy(S.boundingSphere),m.applyMatrix4(x),m.radius+=T,_.ray.intersectsSphere(m)!==!1){f.copy(x).invert(),h.copy(_.ray).applyMatrix4(f);var L=T/((this.scale.x+this.scale.y+this.scale.z)/3)*this.material.size*this.sizePerPixel,A=L*L;if(S.isBufferGeometry){var R=S.index,I=S.attributes,O=I.position,N=S.morphAttributes.position;if(R!==null)for(var M,P=Math.max(0,C.start),B=Math.min(R.count,C.start+C.count),D=P;D<B;D++)M=R.getX(D),g(this,O,N,M),v(y,M,A,x,_,E,this);else for(var V=Math.max(0,C.start),G=Math.min(O.count,C.start+C.count),H=V;H<G;H++)g(this,O,N,H),v(y,H,A,x,_,E,this)}else console.error("THREE.Points.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}}updateMorphTargets(){var _=this.geometry;if(_.isBufferGeometry){var E=_.morphAttributes,S=Object.keys(E);if(0<S.length){var x=E[S[0]];if(x!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(var T,C=0,L=x.length;C<L;C++)T=x[C].name||C+"",this.morphTargetInfluences.push(0),this.morphTargetDictionary[T]=C}}}else{var A=_.morphTargets;A!==void 0&&0<A.length&&console.error("THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}}b.prototype.isPoints=!0;function v(w,_,E,S,x,T,C){var L=h.distanceSqToPoint(w);if(L<E){var A=new c.Vector3;h.closestPointToPoint(w,A),A.applyMatrix4(S);var R=x.ray.origin.distanceTo(A);if(R<x.near||R>x.far)return;T.push({distance:R,distanceToRay:Math.sqrt(L),point:A,index:_,face:null,object:C})}}function g(w,_,E,S){y.fromBufferAttribute(_,S);var x=w.morphTargetInfluences;if(w.material.morphTargets&&E&&x){p.set(0,0,0);for(var T=0,C=E.length;T<C;T++){var L=x[T],A=E[T];L!==0&&(d.fromBufferAttribute(A,S),p.addScaledVector(d.sub(y),L))}y.add(p)}}},(o,l,u)=>{var c=u(4),f=u(5).toBufferGeometry,h=function(){u(10).ZincObject.call(this),this.isLines=!0,this.createLineSegment=(m,y,p)=>{if(m&&y){var d=f(m,p);p.localMorphColour&&d.morphAttributes.color&&(y.onBeforeCompile=u(9).augmentMorphColor());var b=new(u(12)).LineSegments(d,y);this.setMesh(b,p.localTimeEnabled,p.localMorphColour)}},this.setWidth=m=>{this.morph&&this.morph.material&&(this.morph.material.linewidth=m,this.morph.material.needsUpdate=!0)},this.addLines=(m,y)=>{if(m&&0<m.length){var p=this.addVertices(m),d=this.getMorph();if(!d){var b=new c.LineBasicMaterial({color:y});p.colorsNeedUpdate=!0,this.createLineSegment(p,b,{localTimeEnabled:!1,localMorphColour:!1})}this.region&&(this.region.pickableUpdateRequired=!0)}}};h.prototype=Object.create(u(10).ZincObject.prototype),l.Lines=h},(o,l,u)=>{function c(y,p,d,b,v,g,w){try{var _=y[g](w),E=_.value}catch(S){return void d(S)}_.done?p(E):Promise.resolve(E).then(b,v)}function f(y){return function(){var p=this,d=arguments;return new Promise(function(b,v){function g(E){c(_,b,v,g,w,"next",E)}function w(E){c(_,b,v,g,w,"throw",E)}var _=y.apply(p,d);g(void 0)})}}var h=u(4),m=function(){var y=this;u(26).Texture.call(this),this.isTextureArray=!0,this.loadFromImages=function(){var p=f(function*(d){var b=1,v=1,g=0;if(d&&d.length){y.isLoading=!0;var w=new Image;w.crossOrigin="Anonymous";for(var _,E=document.createElement("canvas"),S=0,x=Array(d.length),T=0;T<d.length;T++)_=yield y.imageToUint8Array(y,w,d[T],E),_&&_.array&&(b=_.width,v=_.height,x[g]=_.array,S+=x[g].length,g++);var C=new Uint8Array(S);S=0,x.forEach(L=>{C.set(L,S),S+=L.length}),y.impl=new h.DataTexture2DArray(C,b,v,g),y.size={width:b,height:v,depth:g},y.isLoading=!1,y.impl.needsUpdate=!0}});return function(){return p.apply(this,arguments)}}(),this.getMaterial=p=>{if(this.impl){var d;if(!p)d=new h.MeshBasicMaterial({color:new h.Color(1,1,1),transparent:!1,opacity:1,map:this.impl,side:h.DoubleSide});else if(p.vs&&p.fs){var b=!0;p.transparent&&(b=p.transparent);var v=h.FrontSide;p.side&&(v=p.side),d=new h.ShaderMaterial({transparent:b,uniforms:p.uniforms,vertexShader:p.vs,fragmentShader:p.fs,side:v}),p.glslVersion&&(d.glslVersion=p.glslVersion)}if(d)return d.needsUpdate=!0,d}}};m.prototype=Object.create(u(26).Texture.prototype),l.TextureArray=m},(o,l,u)=>{function c(y,p,d,b,v,g,w){try{var _=y[g](w),E=_.value}catch(S){return void d(S)}_.done?p(E):Promise.resolve(E).then(b,v)}function f(y){return function(){var p=this,d=arguments;return new Promise(function(b,v){function g(E){c(_,b,v,g,w,"next",E)}function w(E){c(_,b,v,g,w,"throw",E)}var _=y.apply(p,d);g(void 0)})}}var h=u(4),m=function(){this.isTexture=!0,this.impl=void 0,this.isLoading=!1,this.size={width:1,height:1,depth:0}};m.prototype.loadImage=function(y,p){return new Promise((d,b)=>{y.onload=()=>d(y),y.onerror=b,y.src=p})},m.prototype.imageToUint8Array=function(){var y=f(function*(p,d,b,v){yield p.loadImage(d,b),v.width=d.width,v.height=d.height;var g=v.getContext("2d");return g.drawImage(d,0,0),{array:new Uint8Array(g.getImageData(0,0,v.width,v.height).data.buffer),width:v.width,height:v.height}});return function(){return y.apply(this,arguments)}}(),m.prototype.loadFromImages=function(){var y=f(function*(){});return function(){return y.apply(this,arguments)}}(),m.prototype.isReady=function(){return!(!this.impl||this.isLoading)},m.prototype.getMaterial=function(){if(this.impl)return new h.MeshBasicMaterial({color:new h.Color(1,1,1),transparent:!1,opacity:1,map:this.impl,side:h.DoubleSide})},l.Texture=m},(o,l,u)=>{function c(v,g){var w=Object.keys(v);if(Object.getOwnPropertySymbols){var _=Object.getOwnPropertySymbols(v);g&&(_=_.filter(function(E){return Object.getOwnPropertyDescriptor(v,E).enumerable})),w.push.apply(w,_)}return w}function f(v){for(var g,w=1;w<arguments.length;w++)g=arguments[w]==null?{}:arguments[w],w%2?c(Object(g),!0).forEach(function(_){h(v,_,g[_])}):Object.getOwnPropertyDescriptors?Object.defineProperties(v,Object.getOwnPropertyDescriptors(g)):c(Object(g)).forEach(function(_){Object.defineProperty(v,_,Object.getOwnPropertyDescriptor(g,_))});return v}function h(v,g,w){return g=m(g),g in v?Object.defineProperty(v,g,{value:w,enumerable:!0,configurable:!0,writable:!0}):v[g]=w,v}function m(v){var g=y(v,"string");return typeof g=="symbol"?g:g+""}function y(v,g){if(typeof v!="object"||!v)return v;var w=v[Symbol.toPrimitive];if(w!==void 0){var _=w.call(v,g||"default");if(typeof _!="object")return _;throw new TypeError("@@toPrimitive must return a primitive value.")}return(g==="string"?String:Number)(v)}var p=u(4),d=u(28),b=function(v){u(29).TexturePrimitive.call(this,v),this.isTextureSlides=!0;var g=[],w={};this.morph=new p.Group,this.group=this.morph,this.morph.userData=this;var _=!0;this.createSlides=x=>{x.forEach(T=>this.createSlide(T))};var E=(x,T)=>{var C=x.material,L=C.uniforms;switch(x.rotation.x=0,x.rotation.y=0,x.rotation.z=0,x.position.x=0,x.position.y=0,x.position.z=0,T.direction){case"x":var A=_?-Math.PI/2:Math.PI/2;x.rotation.y=A,L.direction.value=1,L.slide.value.set(T.value,0,0),x.position.x=T.value;break;case"y":x.rotation.x=Math.PI/2,L.direction.value=2,L.slide.value.set(0,T.value,0),x.position.y=T.value;break;case"z":L.direction.value=3,L.slide.value.set(0,0,T.value),x.position.z=T.value;break}C.needsUpdate=!0,this.boundingBoxUpdateRequired=!0};this.modifySlideSettings=x=>{x&&x.id&&x.id in w&&w[x.id]&&E(w[x.id],x)},this.createSlide=x=>{if(this.texture&&this.texture.isTextureArray&&this.texture.isReady()&&x&&x.direction&&x.value!==void 0){var T=new p.PlaneGeometry(1,1);T.translate(.5,.5,0);var C=d.getUniforms();C.diffuse.value=this.texture.impl,C.depth.value=this.texture.size.depth,C.flipY.value=_;var L={fs:d.fs,vs:d.vs,uniforms:C,glslVersion:d.glslVersion,side:p.DoubleSide,transparent:!1},A=this.texture.getMaterial(L);A.needsUpdate=!0;var R=new p.Mesh(T,A);R.name=this.groupName,R.userData=this;var I={value:x.value,direction:x.direction,id:R.id};return g.push(I),E(R,I),w[R.id]=R,this.morph.add(R),this.boundingBoxUpdateRequired=!0,I}},this.getTextureSettings=()=>[...g],this.getTextureSettingsWithId=x=>{for(var T=0;T<g.length;T++)if(x===g[T].id)return f({},g[T])},this.getSlides=()=>this.morph?[...this.morph.children]:[],this.removeSlide=x=>{x&&this.removeSlideWithId(x.id)},this.removeSlideWithId=x=>{if(this.morph&&x in w&&w[x]){if(this.morph.getObjectById(x)){var T=w[x];this.morph.remove(T),T.clear(),T.geometry&&T.geometry.dispose(),T.material&&T.material.dispose(),this.boundingBoxUpdateRequired=!0}var C=g.findIndex(L=>L.id===x);-1<C&&g.splice(C,1)}},this.dispose=()=>{this.morph.children.forEach(x=>{x.geometry&&x.geometry.dispose(),x.material&&x.material.dispose()}),u(29).TexturePrimitive.prototype.dispose.call(this),this.boundingBoxUpdateRequired=!0};var S=(x,T,C)=>{switch(T.direction.value){case 1:C.copy(T.slide.value),x.expandByPoint(C),C.setY(1),C.setZ(1),x.expandByPoint(C);break;case 2:C.copy(T.slide.value),x.expandByPoint(C),C.setX(1),C.setZ(1),x.expandByPoint(C);break;case 3:C.copy(T.slide.value),x.expandByPoint(C),C.setX(1),C.setY(1),x.expandByPoint(C);break}};this.getBoundingBox=()=>{if(this.morph&&this.morph.children&&this.morph.visible&&this.boundingBoxUpdateRequired){this.cachedBoundingBox.makeEmpty();var x=new p.Vector3(0,0,0);this.morph.children.forEach(T=>{S(this.cachedBoundingBox,T.material.uniforms,x)}),this.morph.updateMatrixWorld(!0,!0),this.cachedBoundingBox.applyMatrix4(this.morph.matrixWorld),this.boundingBoxUpdateRequired=!1}return this.cachedBoundingBox},this.applyTransformation=(x,T,C)=>{var L=new p.Matrix4;L.set(x[0],x[1],x[2],0,x[3],x[4],x[5],0,x[6],x[7],x[8],0,0,0,0,0);var A=new p.Quaternion().setFromRotationMatrix(L);this.morph.position.set(...T),this.morph.quaternion.copy(A),this.morph.scale.set(...C),this.morph.updateMatrix(),this.boundingBoxUpdateRequired=!0},this.initialise=(x,T)=>{if(x){var C=x.locations;C&&0<C.length&&(this.applyTransformation(C[0].orientation,C[0].position,C[0].scale),"flipY"in C[0]&&(_=C[0].flipY)),this.createSlides(x.settings.slides),T!=null&&typeof T=="function"&&T(this)}}};b.prototype=Object.create(u(29).TexturePrimitive.prototype),b.prototype.constructor=b,l.TextureSlides=b},(o,l,u)=>{var c=u(4),f=c.GLSL3,h=`
3184
+ `))}}},(o,l,u)=>{var c=u(4),f=u(5).createBufferGeometry,h=u(5).resolveURL,m=0,y=function(){return"pr"+m++},p=function(){this.isZincObject=!0,this.geometry=void 0,this.morph=void 0,this.group=new c.Group,this._lod=new(u(11)).LOD(this),this.groupName=void 0,this.timeEnabled=!1,this.morphColour=!1,this.inbuildTime=0,this.mixer=void 0,this.animationGroup=void 0,this.duration=6e3,this.clipAction=void 0,this.userData={},this.videoHandler=void 0,this.marker=void 0,this.markerNumber=void 0,this.markerUpdateRequired=!0,this.closestVertexIndex=-1,this.boundingBoxUpdateRequired=!0,this.cachedBoundingBox=new c.Box3,this.anatomicalId=void 0,this.region=void 0,this.animationClip=void 0,this.markerMode="inherited",this.uuid=y(),this._v1=new c.Vector3,this._v2=new c.Vector3,this._b1=new c.Box3,this.center=new c.Vector3,this.radius=0,this.visible=!0,this.drawRange=-1};p.prototype.setDuration=function(d){this.duration=d,this.clipAction&&this.clipAction.setDuration(this.duration)},p.prototype.getDuration=function(){return this.duration},p.prototype.setRegion=function(d){this.region=d},p.prototype.getRegion=function(){return this.region},p.prototype.getMorph=function(){var d=this._lod.getCurrentMorph();return d||this.morph},p.prototype.getGroup=function(){return this.group},p.prototype.setMorph=function(d){this.morph=d,this.group.add(this.morph);var b=this._lod.calculateDistance("far");this._lod.addLevel(d,b),this._lod.setMaterial(d.material)},p.prototype.checkTransparentMesh=function(){},p.prototype.setMesh=function(d,b,v){this.animationGroup=new c.AnimationObjectGroup(d),this.mixer=new c.AnimationMixer(this.animationGroup);var g=d.geometry;if(this.geometry=d.geometry,this.clipAction=void 0,g&&g.morphAttributes){var w=g.morphAttributes.position;w||(w=g.morphAttributes.color?g.morphAttributes.color:g.morphAttributes.normal),w&&(this.animationClip=c.AnimationClip.CreateClipsFromMorphTargetSequences(w,10,!0),this.animationClip&&this.animationClip[0]!=null&&(this.clipAction=this.mixer.clipAction(this.animationClip[0]).setDuration(this.duration),this.clipAction.loop=c.loopOnce,this.clipAction.clampWhenFinished=!0,this.clipAction.play()))}this.timeEnabled=b,this.morphColour=v,d.userData=this,d.matrixAutoUpdate=!1,this.setMorph(d),this.checkTransparentMesh(),this.timeEnabled?this.setFrustumCulled(!1):this.morphColour&&(g.setAttribute("morphTarget0",g.getAttribute("position")),g.setAttribute("morphTarget1",g.getAttribute("position"))),this.boundingBoxUpdateRequired=!0},p.prototype.setName=function(d){this.groupName=d,this._lod.setName(d)},p.prototype.getCurrentTime=function(){if(this.clipAction){var d=this.clipAction.time/this.clipAction._clip.duration;return this.duration*d}return this.inbuildTime},p.prototype.setMorphTime=function(d){var b=!1;if(this.clipAction){var v=d/this.duration,g=this.clipAction._clip.duration,w=v*g;w!=this.clipAction.time&&(this.clipAction.time=w,b=!0),b&&this.isTimeVarying()&&this.mixer.update(0)}else{var _=d;_=d>this.duration?this.duration:0>d?0:d,_!=this.inbuildTime&&(this.inbuildTime=_,b=!0)}b&&(this.boundingBoxUpdateRequired=!0,this._lod.updateMorphColorAttribute(!0),this.timeEnabled&&(this.markerUpdateRequired=!0))},p.prototype.isTimeVarying=function(){return!!(this.timeEnabled||this.morphColour)},p.prototype.getVisibility=function(){return this.visible},p.prototype.setVisibility=function(d){d!==this.visible&&(this.visible=d,this.group.visible=d,this.region&&(this.region.pickableUpdateRequired=!0))},p.prototype.setAlpha=function(d){var b=this._lod._material,v=!1;1>d&&(v=!0),b.opacity=d,b.transparent=v,this.checkTransparentMesh()},p.prototype.setFrustumCulled=function(d){this._lod.setFrustumCulled(d)},p.prototype.setVertexColors=function(d){this._lod.setVertexColors(d)},p.prototype.getColour=function(){return this._lod._material?this._lod._material.color:void 0},p.prototype.setColour=function(d){this._lod.setColour(d)},p.prototype.getColourHex=function(){return!this.morphColour&&this._lod._material&&this._lod._material.color?this._lod._material.color.getHexString():void 0},p.prototype.setColourHex=function(d){this._lod._material.color.setHex(d),this._lod._secondaryMaterial&&this._lod._secondaryMaterial.color.setHex(d)},p.prototype.setEmissiveRGB=function(d){this._lod._material&&this._lod._material.emissive&&this._lod._material.emissive.setRGB(...d),this._lod._secondaryMaterial&&this._lod._secondaryMaterial.emissive.setRGB(...d)},p.prototype.setMaterial=function(d){this._lod.setMaterial(d)},p.prototype.getClosestVertexIndex=function(){var d=-1,b=this.getMorph();if(b&&b.geoemtry){var v=b.geometry.attributes.position;if(this._b1.setFromBufferAttribute(v),this._b1.getCenter(this._v1),v)for(var g=-1,w=0,_=0;_<v.count;_++)this._v2.fromArray(v.array,3*_),w=this._v2.distanceTo(this._v1),g==-1?g=w:g>w&&(g=w,d=_)}return d},p.prototype.getClosestVertex=function(d){var b=new c.Vector3;this.closestVertexIndex==-1&&(this.closestVertexIndex=this.getClosestVertexIndex());var v=this.getMorph();if(v&&v.geometry&&0<=this.closestVertexIndex){var g=v.morphTargetInfluences,w=v.geometry.morphAttributes;if(g&&w&&w.position){for(var _=!1,E=0;E<g.length;E++)0<g[E]&&(_=!0,this._v1.fromArray(w.position[E].array,3*this.closestVertexIndex),b.add(this._v1.multiplyScalar(g[E])));if(_)return d?b.applyMatrix4(v.matrixWorld):b}else return b.fromArray(v.geometry.attributes.position.array,3*this.closestVertexIndex),d?b.applyMatrix4(v.matrixWorld):b}return this.getBoundingBox(),b.copy(this.center),d?b.applyMatrix4(this.morph.matrixWorld):b},p.prototype.getBoundingBox=function(){if(this.visible){var d=this._lod.getCurrentMorph();if(d&&d.visible)return this.boundingBoxUpdateRequired&&(u(5).getBoundingBox(d,this.cachedBoundingBox,this._b1,this._v1,this._v2),this.cachedBoundingBox.getCenter(this.center),this.radius=this.center.distanceTo(this.cachedBoundingBox.max),this.boundingBoxUpdateRequired=!1),this.cachedBoundingBox}},p.prototype.dispose=function(){this._lod.dispose(),this.animationGroup=void 0,this.mixer=void 0,this.morph=void 0,this.group=void 0,this.clipAction=void 0,this.groupName=void 0},p.prototype.markerIsRequired=function(d){return!!(this.visible&&(this.markerMode==="on"||d&&d.displayMarkers&&this.markerMode==="inherited"))},p.prototype.updateMarker=function(d,b){if(d==!1&&this.markerIsRequired(b)){var v=b.ndcToBeUpdated;if(this.groupName){if(this.marker||(this.marker=new(u(14)).Marker(this),this.markerUpdateRequired=!0),this.markerUpdateRequired){var g=this.getClosestVertex(!1);g&&(this.marker.setPosition(g.x,g.y,g.z),this.markerUpdateRequired=!1)}this.marker.isEnabled()||(b.markersList&&!(this.marker.uuid in b.markersList)&&(v=!0,b.markersList[this.marker.uuid]=this.marker),this.marker.enable(),this.group.add(this.marker.morph)),this.marker.setNumber(this.markerNumber),this.markerImgURL?this.marker.loadUserSprite(this.markerImgURL):this.marker.setDefaultSprite(),b&&b.camera&&(v||b.markerCluster.markerUpdateRequired)&&(this.marker.updateNDC(b.camera.cameraObject),b.markerCluster.markerUpdateRequired=!0)}}else this.marker&&this.marker.isEnabled()&&(this.marker.disable(),this.group.remove(this.marker.morph),b.markersList&&this.marker.uuid in b.markersList&&(b.markerCluster.markerUpdateRequired=!0,delete b.markersList[this.marker.uuid])),this.markerUpdateRequired=!0},p.prototype.processMarkerVisual=function(d,b){this.marker&&this.marker.isEnabled()&&this.marker.updateVisual(d,b)},p.prototype.initiateMorphColor=function(){this.morphColour==1&&this._lod.updateMorphColorAttribute(!1)},p.prototype.setRenderOrder=function(d){this._lod.setRenderOrder(d)},p.prototype.getClosestVertexDOMElementCoords=function(d){if(d&&d.camera){var b=!0,v=this.getClosestVertex(!0);return v.project(d.camera),v.z=Math.min(Math.max(v.z,0),1),(1<v.x||-1>v.x||1<v.y||-1>v.y)&&(b=!1),d.getZincCameraControls().getRelativeCoordsFromNDC(v.x,v.y,v),{position:v,inView:b}}},p.prototype.setMarkerMode=function(d,b){d!==this.markerMode&&(this.markerMode=d==="on"||d==="off"?d:"inherited",this.region&&(this.region.pickableUpdateRequired=!0)),b&&(this.markerNumber=b.number,this.markerImgURL=b.imgURL)},p.prototype.render=function(d,b,v,g){if(this.visible&&!(this.timeEnabled&&b)&&this._lod.update(v,this.center),b==!0){if(this.clipAction&&this.isTimeVarying())this.mixer.update(d);else{var w=this.inbuildTime+d;w>this.duration&&(w-=this.duration),this.inbuildTime=w}this.visible&&d!=0&&(this.boundingBoxUpdateRequired=!0,this.morphColour==1&&this._lod.updateMorphColorAttribute(!0))}this.updateMarker(b,g)},p.prototype.addLOD=function(d,b,v,g,w){this._lod.addLevelFromURL(d,b,v,g,w)},p.prototype.addVertices=function(d){var b=this.getMorph(),v=void 0;if(!b)v=f(500,d),this.drawRange=d.length;else if(-1<this.drawRange){var g=b.geometry.getAttribute("position");d.forEach(w=>{g.setXYZ(this.drawRange,w[0],w[1],w[2]),++this.drawRange}),g.needsUpdate=!0,b.geometry.setDrawRange(0,this.drawRange),b.geometry.computeBoundingBox(),b.geometry.computeBoundingSphere(),v=b.geoemtry,this.boundingBoxUpdateRequired=!0}return v},p.prototype.setPosition=function(d,b,v){var g=this.getGroup();g&&(g.position.set(d,b,v),g.updateMatrix(),this.boundingBoxUpdateRequired=!0)},p.prototype.loadAdditionalSources=function(d){d.load(h(filename),meshloader(region,colour,opacity,localTimeEnabled,localMorphColour,void 0,void 0,void 0,void 0,finishCallback),this.onProgress(filename),this.onError(finishCallback))},p.prototype.setScaleAll=function(d){var b=this.getGroup();b&&(b.scale.set(d,d,d),b.updateMatrix(),this.boundingBoxUpdateRequired=!0)},l.ZincObject=p},(o,l,u)=>{var c=u(4),f=u(5).updateMorphColorAttribute,h=u(5).toBufferGeometry,m=function(y){this.levels=[],this._currentLevel=0,this._renderOrder=1,this._material=void 0,this._secondaryMaterial=void 0,this._loader=void 0,this._parent=y,this.addLevel=(d,b)=>{if(d){var v,g=Math.abs(b);for(v=0;v<this.levels.length&&!(g<this.levels[v].distance);v++);this.levels.splice(v,0,{distance:g,morph:d,loaded:!0,loading:!1,url:""}),d.renderOrder=this._renderOrder}},this.levelLoaded=(d,b)=>{if(d){for(var v=Math.abs(b),g=0;g<this.levels.length;g++)if(v===this.levels[g].distance){this._parent.group.add(d),this.levels[g].morph=d,this.levels[g].loaded=!0,this.levels[g].loading=!1;break}this.checkTransparentMesh()}},this.addLevelFromURL=(d,b,v,g,w)=>{this._loader=d;var _,E=this.calculateDistance(b);for(_=0;_<this.levels.length&&!(E<this.levels[_].distance);_++);this.levels.splice(_,0,{distance:E,morph:void 0,loaded:!1,loading:!1,url:v,index:g}),w&&this.loadLevel(_)},this.loadLevel=d=>{var b=this.levels[d];return b.morph||b.loaded||b.loading||(b.loading=!0,this._loader.load(b.url,this.lodLoader(b.distance),void 0,void 0,{index:b.index})),b.morph===void 0},this.calculateDistance=function(d){this._parent.getBoundingBox();var b=this._parent.radius,v=0;return d==="far"?v=4.5*b:d==="medium"?v=2.5*b:d=="close"&&(v=0),v},this.containsLevels=()=>!!(this.levels&&1<this.levels.length),this.checkTransparentMesh=()=>{var d=this.levels[this._currentLevel];this._material&&(this._material.transparent?(!this._secondaryMaterial&&(this._secondaryMaterial=this._material.clone(),this._secondaryMaterial.side=c.FrontSide),this._secondaryMaterial.opacity=this._material.opacity,this._secondaryMaterial.emissive&&this._secondaryMaterial.emissive.copy(this._material.emissive),this._secondaryMaterial.needsUpdate=!0,!d.secondaryMesh&&(d.secondaryMesh=new c.Mesh(d.morph.geometry,this._secondaryMaterial),d.secondaryMesh.renderOrder=d.morph.renderOrder+1,d.secondaryMesh.userData=d.morph.userData,d.secondaryMesh.name=d.morph.name),this._material.side=c.BackSide,this._material.needsUpdate=!0,!d.secondaryMesh.parent&&(d.morph.add(d.secondaryMesh),this._parent.animationGroup&&this._parent.animationGroup.add(d.secondaryMesh))):(d.secondaryMesh&&(d.morph.remove(d.secondaryMesh),this._parent.animationGroup&&(this._parent.animationGroup.uncache(d.secondaryMesh),this._parent.animationGroup.remove(d.secondaryMesh))),this._material.side=c.DoubleSide,this._material.needsUpdate=!0))},this.dispose=()=>{this.levels.forEach(d=>{d.morph&&d.morph.geometry&&d.morph.geometry.dispose()}),this._material&&this._material.dispose(),this._secondaryMaterial&&this._secondaryMaterial.dispose()},this.getCurrentLevel=()=>this._currentLevel,this.getCurrentMorph=()=>{var d=this.levels[this._currentLevel];return d&&d.morph?d.morph:this._parent.morph},this.lodLoader=function(d){return b=>{var v=this._material,g={localTimeEnabled:this._parent.timeEnabled,localMorphColour:this._parent.morphColour},w=h(b,g),_=void 0;this._parent.isGeometry?_=new c.Mesh(w,v):this._parent.isLines&&(_=new(u(12)).LineSegments(w,v)),_.userData=this._parent,_.renderOrder=this._renderOrder,b.dispose(),this.levelLoaded(_,d)}},this.updateMorphColorAttribute=d=>{if(this._material&&(this._material.vertexColors==c.VertexColors||this._material.vertexColors==!0))if(d){var b=this.getCurrentMorph();f(b.geometry,b)}else this.levels.forEach(v=>{v.morph&&v.morph.geometry&&f(v.morph.geometry,v.morph)})},this.setColour=d=>{this._material.color=d,this._secondaryMaterial&&(this._secondaryMaterial.color=d),p()},this.setFrustumCulled=d=>{this.levels.forEach(b=>{b.morph&&(b.morph.frustumCulled=d),b.secondaryMesh&&(b.secondaryMesh.frustumCulled=d)})},this.setMaterial=d=>{d&&(!this._material||this._material.id!==d.id)&&(this._material=d,this._secondaryMaterial&&this._secondaryMaterial.dispose(),this._secondaryMaterial=d.clone(),this._secondaryMaterial.side=c.FrontSide,this._secondaryMaterial.transparent=!0,this.levels.forEach(b=>{b.morph&&(b.morph.material=this._material,b.morph.geometry&&(b.morph.geometry.colorsNeedUpdate=!0)),b.secondaryMesh&&(b.secondaryMesh.material=this._secondaryMaterial)}))},this.setName=d=>{this.levels.forEach(b=>{b.morph&&(b.morph.name=d),b.secondaryMesh&&(b.secondaryMesh.name=d)})},this.setRenderOrder=d=>{this._renderOrder=d,this.levels.forEach(b=>{b.morph&&(b.morph.renderOrder=d),b.secondaryMesh&&(b.secondaryMesh.renderOrder=d)})},this.setVertexColors=d=>{this._material.vertexColors=d,p(),this._secondaryMaterial&&(this._secondaryMaterial.vertexColors=d)},this.update=(d,b)=>{var v=this.levels;if(1<v.length){var g,w,_=d.cameraObject.position.distanceTo(b),E=-1,S=-1;for(g=0,w=v.length;g<w&&_>=v[g].distance;g++)v[g].morph?(-1<E&&v[E].morph&&(v[E].morph.visible=!1),E=g,v[g].morph.visible=!0,S=-1):S=g;for(-1<S&&this.loadLevel(S);g<w;g++)v[g].morph&&(-1<E?v[g].morph.visible=!1:(v[g].morph.visible=!0,E=g));this._currentLevel!=E&&(this._currentLevel=E,this.checkTransparentMesh())}},this.toggleMarker=(d,b)=>{this.levels.forEach(v=>{v.morph&&(b?v.morph.add(d):v.morph.remove(d))})};var p=()=>{this.levels.forEach(d=>{d.morph&&d.morph.geometry&&(d.morph.geometry.colorsNeedUpdate=!0)})}};l.LOD=m},(o,l,u)=>{u.r(l),u.d(l,{LineSegments:()=>y});var c=u(13),f=u(4),h=new f.Vector3,m=new f.Vector3;class y extends c.Line{constructor(d,b){super(d,b),this.type="LineSegments"}computeLineDistances(){var d=this.geometry;if(!d.isBufferGeometry)d.isGeometry&&console.error("THREE.LineSegments.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.");else if(d.index===null){for(var b=d.attributes.position,v=[],g=0,w=b.count;g<w;g+=2)h.fromBufferAttribute(b,g),m.fromBufferAttribute(b,g+1),v[g]=g==0?0:v[g-1],v[g+1]=v[g]+h.distanceTo(m);d.setAttribute("lineDistance",new f.Float32BufferAttribute(v,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}}y.prototype.isLineSegments=!0},(o,l,u)=>{u.r(l),u.d(l,{Line:()=>w});var c=u(4),f=new c.Vector3,h=new c.Vector3,m=new c.Matrix4,y=new c.Ray,p=new c.Sphere,d=new c.Vector3,b=new c.Vector3,v=new c.Vector3,g=new c.Vector3;class w extends c.Object3D{constructor(){var S=0<arguments.length&&arguments[0]!==void 0?arguments[0]:new c.BufferGeometry,x=1<arguments.length&&arguments[1]!==void 0?arguments[1]:new c.LineBasicMaterial;super(),this.type="Line",this.geometry=S,this.material=x,this.updateMorphTargets()}copy(S){return super.copy(S),this.material=S.material,this.geometry=S.geometry,this}computeLineDistances(){var S=this.geometry;if(!S.isBufferGeometry)S.isGeometry&&console.error("THREE.Line.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.");else if(S.index===null){for(var x=S.attributes.position,T=[0],C=1,L=x.count;C<L;C++)f.fromBufferAttribute(x,C-1),h.fromBufferAttribute(x,C),T[C]=T[C-1],T[C]+=f.distanceTo(h);S.setAttribute("lineDistance",new c.Float32BufferAttribute(T,1))}else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}raycast(S,x){var T=this.geometry,C=this.matrixWorld,L=S.params.Line.threshold,A=T.drawRange,R=T.morphAttributes.position;if(T.boundingSphere===null&&T.computeBoundingSphere(),p.copy(T.boundingSphere),p.applyMatrix4(C),p.radius+=L,S.ray.intersectsSphere(p)!==!1){m.copy(C).invert(),y.copy(S.ray).applyMatrix4(m);var I=L/((this.scale.x+this.scale.y+this.scale.z)/3),O=I*I,N=new c.Vector3,M=new c.Vector3,P=new c.Vector3,B=new c.Vector3,D=this.isLineSegments?2:1;if(T.isBufferGeometry){var V=T.index,G=T.attributes,H=G.position;if(V!==null)for(var K=Math.max(0,A.start),te=Math.min(V.count,A.start+A.count),W=K;W<te-1;W+=D){var z=V.getX(W),j=V.getX(W+1);_(N,M,this,H,R,z,j);var Z=y.distanceSqToSegment(N,M,B,P);if(!(Z>O)){B.applyMatrix4(this.matrixWorld);var Q=S.ray.origin.distanceTo(B);Q<S.near||Q>S.far||x.push({distance:Q,point:P.clone().applyMatrix4(this.matrixWorld),index:W,face:null,faceIndex:null,object:this})}}else for(var ee=Math.max(0,A.start),ie=Math.min(H.count,A.start+A.count),q=ee;q<ie-1;q+=D){_(N,M,this,H,R,q,q+1);var ne=y.distanceSqToSegment(N,M,B,P);if(!(ne>O)){B.applyMatrix4(this.matrixWorld);var F=S.ray.origin.distanceTo(B);F<S.near||F>S.far||x.push({distance:F,point:P.clone().applyMatrix4(this.matrixWorld),index:q,face:null,faceIndex:null,object:this})}}}else T.isGeometry&&console.error("THREE.Line.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}}updateMorphTargets(){var S=this.geometry;if(S.isBufferGeometry){var x=S.morphAttributes,T=Object.keys(x);if(0<T.length){var C=x[T[0]];if(C!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(var L,A=0,R=C.length;A<R;A++)L=C[A].name||A+"",this.morphTargetInfluences.push(0),this.morphTargetDictionary[L]=A}}}else{var I=S.morphTargets;I!==void 0&&0<I.length&&console.error("THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}}function _(E,S,x,T,C,L,A){E.fromBufferAttribute(T,L),S.fromBufferAttribute(T,A);var R=x.morphTargetInfluences;if(x.material.morphTargets&&C&&R){d.set(0,0,0),b.set(0,0,0);for(var I=0,O=C.length;I<O;I++){var N=R[I],M=C[I];N!==0&&(v.fromBufferAttribute(M,L),g.fromBufferAttribute(M,A),d.addScaledVector(v.sub(E),N),b.addScaledVector(g.sub(S),N))}E.add(d),S.add(b)}}w.prototype.isLine=!0},(o,l,u)=>{var c=u(4),f=new Image(128,128);f.src=u(15);var h=new c.Texture;h.image=f,h.needsUpdate=!0;var m=[.02,.03,1],y=new c.SpriteMaterial({map:h,alphaTest:.5,transparent:!0,depthTest:!1,depthWrite:!1,sizeAttenuation:!1}),p=u(5).createNewSpriteText,d=function(b){u(10).ZincObject.call(this),this.texture=h;var v=void 0,g=void 0,w=void 0,_=void 0,E=void 0,S=!0;this.morph=new c.Group,this.group=this.morph,this.parent=b,this.isMarker=!0;var x=!1;this.ndc=new c.Vector3;var T=void 0,C=void 0,L=()=>{v=new c.Sprite(y),v.center.set(.5,0),this.morph.add(v),this.morph.position.set(0,0,0),this.morph.renderOrder=1e4,v.scale.set(m[0],m[1],m[2]),v.userData=this};this.updateVisual=(A,R)=>{var I=1,O=0;A!==R&&(O=1-(this.ndc.z-A)/(R-A),I=.6+.4*O),this.setSpriteSize(I)},this.updateNDC=A=>(this.ndc.copy(this.morph.position),this.ndc.project(A),this.ndc.z=Math.min(Math.max(this.ndc.z,0),1),this.ndc),this.setPosition=(A,R,I)=>{this.morph.position.set(A,R,I)},this.setSpriteSize=A=>{v.scale.set(.015,.02,1),v.scale.multiplyScalar(A)},this.setUserSprite=()=>{_&&(this.morph.add(_),S&&(this.morph.remove(v),C&&this.morph.remove(C),S=!1))},this.setImageForUserSprite=(A,R)=>{_&&(this.morph.remove(_),_=void 0),g&&g.dispose(),w&&w.dispose(),g=new c.Texture,g.image=A,g.needsUpdate=!0,w=new c.SpriteMaterial({map:g,alphaTest:.5,transparent:!0,depthTest:!1,depthWrite:!1,sizeAttenuation:!1}),R||(R=[.05,.05,1]),_=new c.Sprite(w),_.center.set(.5,0),_.scale.set(R[0],R[1],R[2]),_.userData=this,this.setUserSprite()},this.setDefaultSprite=()=>{S||(S=!0,this.morph.add(v),_&&this.morph.remove(_),C&&this.morph.add(C))},this.loadUserSprite=(A,R)=>{if(A)if(A!==E){E=A;var I=new Image(128,128);I.crossOrigin="anonymous",I.onload=()=>{this.setImageForUserSprite(I,R)},I.src=A}else this.setUserSprite()},this.dispose=()=>{this.morph&&this.morph.clear(),v&&(v.clear(),v=void 0),C&&(C.material.map.dispose(),C.material.dispose(),C=void 0)},this.isEnabled=()=>x,this.setNumber=A=>{(!A||T!=A)&&C&&(this.morph.remove(C),C.material.map.dispose(),C.material.dispose(),C=void 0),!C&&A&&(C=p(A,.012,"black","Asap",120,700),this.morph.add(C)),T=A},this.getNumber=()=>T||1,this.setVisibility=function(A){A!==this.visible&&(this.visible=A,this.group.visible=A,this.parent.region&&(this.parent.region.pickableUpdateRequired=!0))},this.enable=()=>{x=!0,this.morph.visible=!0,this.visible=!0},this.disable=()=>{x=!1,this.morph.visible=!1,this.visible=!1},L()};d.prototype=Object.create(u(10).ZincObject.prototype),l.Marker=d},o=>{o.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIiA/Pg0KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4NCjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMzY1IiBoZWlnaHQ9IjU2MCIgdmlld0JveD0iMCAwIDM2NSA1NjAiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGRlc2M+Q3JlYXRlZCB3aXRoIEZhYnJpYy5qcyA1LjIuNDwvZGVzYz4NCjxkZWZzPg0KPC9kZWZzPg0KPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idHJhbnNwYXJlbnQiPjwvcmVjdD4NCjxnIHRyYW5zZm9ybT0ibWF0cml4KDAgMCAwIDAgMCAwKSIgaWQ9IjgwOGVkMjgzLTI1MjQtNDQwZi04OGFlLTNiZGI0N2JiNTc0OSIgID4NCjwvZz4NCjxnIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIDEgMTgyLjUgMjgwKSIgaWQ9ImRiMzA0MTNkLTViZmYtNGI5OC1hYjU5LTQ2NDQ5N2VlMTk5ZSIgID4NCjxyZWN0IHN0eWxlPSJzdHJva2U6IG5vbmU7IHN0cm9rZS13aWR0aDogMTsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1kYXNob2Zmc2V0OiAwOyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogNDsgZmlsbDogcmdiKDI1NSwyNTUsMjU1KTsgZmlsbC1ydWxlOiBub256ZXJvOyBvcGFjaXR5OiAxOyB2aXNpYmlsaXR5OiBoaWRkZW47IiB2ZWN0b3ItZWZmZWN0PSJub24tc2NhbGluZy1zdHJva2UiICB4PSItMTgyLjUiIHk9Ii0yODAiIHJ4PSIwIiByeT0iMCIgd2lkdGg9IjM2NSIgaGVpZ2h0PSI1NjAiIC8+DQo8L2c+DQo8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwIDAgMCAwIDAgOTcuNSkiICA+DQo8ZyBzdHlsZT0iIiAgID4NCjwvZz4NCjwvZz4NCjxnIHRyYW5zZm9ybT0ibWF0cml4KDAgMCAwIDAgMCA5Ny41KSIgID4NCjxnIHN0eWxlPSIiICAgPg0KPC9nPg0KPC9nPg0KPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC45OSAwIDAgMC45OSAxODIuNSAyODApIiAgPg0KPGcgc3R5bGU9IiIgdmVjdG9yLWVmZmVjdD0ibm9uLXNjYWxpbmctc3Ryb2tlIiAgID4NCgkJPGcgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgMSAwIDApIiAgPg0KPHJlY3Qgc3R5bGU9InN0cm9rZTogbm9uZTsgc3Ryb2tlLXdpZHRoOiAxOyBzdHJva2UtZGFzaGFycmF5OiBub25lOyBzdHJva2UtbGluZWNhcDogYnV0dDsgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7IHN0cm9rZS1saW5lam9pbjogbWl0ZXI7IHN0cm9rZS1taXRlcmxpbWl0OiA0OyBmaWxsOiByZ2IoMjU1LDI1NSwyNTUpOyBmaWxsLXJ1bGU6IG5vbnplcm87IG9wYWNpdHk6IDE7IHZpc2liaWxpdHk6IGhpZGRlbjsiIHZlY3Rvci1lZmZlY3Q9Im5vbi1zY2FsaW5nLXN0cm9rZSIgIHg9Ii01NDAiIHk9Ii01NDAiIHJ4PSIwIiByeT0iMCIgd2lkdGg9IjEwODAiIGhlaWdodD0iMTA4MCIgLz4NCjwvZz4NCgkJPGcgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgMSAwIDApIiAgPg0KPHBhdGggc3R5bGU9InN0cm9rZTogcmdiKDAsMCwwKTsgc3Ryb2tlLXdpZHRoOiAwOyBzdHJva2UtZGFzaGFycmF5OiBub25lOyBzdHJva2UtbGluZWNhcDogYnV0dDsgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7IHN0cm9rZS1saW5lam9pbjogbWl0ZXI7IHN0cm9rZS1taXRlcmxpbWl0OiA0OyBmaWxsOiByZ2IoMCw4OSwxMTYpOyBmaWxsLXJ1bGU6IG5vbnplcm87IG9wYWNpdHk6IDE7IiB2ZWN0b3ItZWZmZWN0PSJub24tc2NhbGluZy1zdHJva2UiICB0cmFuc2Zvcm09IiB0cmFuc2xhdGUoLTE4Mi45LCAtMjc5Ljg1KSIgZD0iTSAxODIuOSA1NTEuNyBDIDE4Mi45IDU1MS44MDAwMDAwMDAwMDAxIDE4My4xIDU1MiAxODMuMSA1NTIgQyAxODMuMSA1NTIgMzU4LjMgMjgzIDM1OC4zIDE5NC42IEMgMzU4LjMgNjQuNSAyNjkuNSA3LjkwMDAwMDAwMDAwMDAwNiAxODIuOSA3LjY5OTk5OTk5OTk5OTk4OSBDIDk2LjMgNy45IDcuNSA2NC41IDcuNSAxOTQuNiBDIDcuNSAyODMgMTgyLjggNTUyIDE4Mi44IDU1MiBDIDE4Mi44IDU1MiAxODIuOSA1NTEuNyAxODIuOSA1NTEuNyB6IE0gMTIyLjIgMTg3LjIgQyAxMjIuMiAxNTMuNiAxNDkuNCAxMjYuMzk5OTk5OTk5OTk5OTkgMTgzIDEyNi4zOTk5OTk5OTk5OTk5OSBDIDIxNi42IDEyNi4zOTk5OTk5OTk5OTk5OSAyNDMuOCAxNTMuNiAyNDMuOCAxODcuMiBDIDI0My44IDIyMC43OTk5OTk5OTk5OTk5OCAyMTYuNSAyNDggMTgyLjkgMjQ4IEMgMTQ5LjQgMjQ4IDEyMi4yIDIyMC44IDEyMi4yIDE4Ny4yIHoiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgLz4NCjwvZz4NCgkJPGcgdHJhbnNmb3JtPSJtYXRyaXgoMy44MiAwIDAgMy44MiAwIC0xMDAuNzcpIiAgPg0KPGNpcmNsZSBzdHlsZT0ic3Ryb2tlOiByZ2IoMCwwLDApOyBzdHJva2Utd2lkdGg6IDA7IHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7IHN0cm9rZS1saW5lY2FwOiBidXR0OyBzdHJva2UtZGFzaG9mZnNldDogMDsgc3Ryb2tlLWxpbmVqb2luOiBtaXRlcjsgc3Ryb2tlLW1pdGVybGltaXQ6IDQ7IGZpbGw6IHJnYigyNTUsMjU1LDI1NSk7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHZlY3Rvci1lZmZlY3Q9Im5vbi1zY2FsaW5nLXN0cm9rZSIgIGN4PSIwIiBjeT0iMCIgcj0iMzUiIC8+DQo8L2c+DQo8L2c+DQo8L2c+DQo8L3N2Zz4="},(o,l,u)=>{var c=u(4),f=function(h,m,y,p){u(10).ZincObject.call(this);var d;m&&(d=m.clone(),d.vertexColors=c.FaceColors),this.id=y;var b=void 0,v=void 0;this.isGlyph=!0,this.fromMesh=g=>!!(g&&g.isMesh)&&(this.morph=g.clone(),this.morph.userData=this,this.group.add(this.morph),!0),h&&d&&this.fromMesh(new c.Mesh(h,d)),this.getGlyphset=function(){return p},this.setLabel=g=>{g&&(typeof g=="string"||g instanceof String)&&(v=g,this.morph&&(this.morph.name=g)),b&&this.showLabel()},this.showLabel=g=>{if(b&&(position=b.getPosition(),this.group.remove(b.getSprite()),b.dispose(),b=void 0),v&&(typeof v=="string"||v instanceof String)){var w=[0,0,0];b=new(u(17)).Label(v,g),b.setPosition(w[0],w[1],w[2]),this.group.add(b.getSprite())}},this.getLabel=()=>v,this.getMesh=()=>this.morph,this.setTransformation=(g,w,_,E)=>{this.morph&&(this.morph.matrix.elements[0]=w[0],this.morph.matrix.elements[1]=w[1],this.morph.matrix.elements[2]=w[2],this.morph.matrix.elements[3]=0,this.morph.matrix.elements[4]=_[0],this.morph.matrix.elements[5]=_[1],this.morph.matrix.elements[6]=_[2],this.morph.matrix.elements[7]=0,this.morph.matrix.elements[8]=E[0],this.morph.matrix.elements[9]=E[1],this.morph.matrix.elements[10]=E[2],this.morph.matrix.elements[11]=0,this.morph.matrix.elements[12]=g[0],this.morph.matrix.elements[13]=g[1],this.morph.matrix.elements[14]=g[2],this.morph.matrix.elements[15]=1,this.morph.matrixAutoUpdate=!1),b&&b.setPosition(g[0],g[1],g[2])},this.setColour=g=>{b&&b.setColour(g),this.secondaryMesh&&this.secondaryMesh.material&&(this.secondaryMesh.material.color=colour),this.geometry.colorsNeedUpdate=!0},this.dispose=()=>{this.material&&this.material.dispose(),this.morph=void 0}};f.prototype=Object.create(u(10).ZincObject.prototype),l.Glyph=f},(o,l,u)=>{var c=u(7).default;l.Label=function(f,h){var m=f,y=void 0;y=h?new c(m,.015,h.getStyle()):new c(m,.015),y.fontFace="Asap",y.fontWeight=700,y.material.map.generateMipmaps=!1,y.material.sizeAttenuation=!1,y.center.x=-.05,y.center.y=0,this.getPosition=()=>y?[y.position.x,y.position.y,y.position.z]:[0,0,0],this.setPosition=(p,d,b)=>{y&&y.position.set(p,d,b)},this.setColour=p=>{y.color=p.getStyle()},this.setScale=p=>{y&&0<p&&y.scale.set(p,p,1)},this.dispose=()=>{y.dispose()},this.getSprite=()=>y,this.getString=()=>m}},(o,l,u)=>{function c(y){throw new TypeError('"'+y+'" is read-only')}var f=u(4),h=u(19).JSONLoader,m=function(){u(10).ZincObject.call(this);var y=[],p=void 0,d=void 0,b=void 0,v=void 0,g=void 0,w=void 0,_=void 0,E=0,S=0,x=[0,0,0],T=[0,0,0],C=[0,0,0],L="NONE";this.ready=!1;var A=!1,R=!1;this.isGlyphset=!0;for(var I=new f.Matrix4,O=new f.Color,N=new f.Color,M=new f.Box3,P=new f.Box3,B=new f.Box3,D=[],V=[],G=[],H=[],K=[],te=[],W=[],z=[],j=0;8>j;j++)D[j]=new f.Vector3;this.load=(F,$,J,k,U)=>{p=F.axis1,d=F.axis2,b=F.axis3,v=F.positions,g=F.scale,w=F.colors,_=F.label,A=F.metadata.MorphColours,R=F.metadata.MorphVertices,E=F.metadata.number_of_time_steps,L=F.metadata.repeat_mode,S=F.metadata.number_of_vertices,L=="AXES_2D"||L=="MIRROR"?S*=2:L=="AXES_3D"&&(S*=3),x=F.metadata.base_size,T=F.metadata.offset,C=F.metadata.scale_factors;var oe=new h;this.geometry=new f.BufferGeometry;var le=new f.InstancedMesh(this.geometry,void 0,S);if(this.setMorph(le),k){var ae=oe.parse($);ne(J,U)(ae.geometry,ae.materials),ae.geometry.dispose()}else oe.crossOrigin="Anonymous",oe.load($,ne(J,U))};var Z=(F,$,J,k,U,oe)=>{if(L=="NONE"||L=="MIRROR"){for(var le,ae=[0,0,0],he=[0,0,0],ve=[0,0,0],we=[0,0,0],ce=[0,0,0],ge=[0,0,0],re=[0,0,0],xe=[0,0,0],fe=[0,0,0],ye=0;3>ye;ye++)le=0>U[ye]?-1:1,ae[ye]=le*x[ye]+U[ye]*C[ye];for(var ye=0;3>ye;ye++)he[ye]=$[ye]*ae[0],ve[ye]=J[ye]*ae[1],we[ye]=k[ye]*ae[2],ce[ye]=F[ye]+T[0]*he[ye]+T[1]*ve[ye]+T[2]*we[ye],L=="MIRROR"&&(ge[ye]=-he[ye],re[ye]=-ve[ye],xe[ye]=-we[ye],fe[ye]=ce[ye],0>U[0]&&(ce[ye]-=he[ye],fe[ye]-=ge[ye]));0>we[0]*(he[1]*ve[2]-he[2]*ve[1])+we[1]*(he[2]*ve[0]-he[0]*ve[2])+we[2]*(he[0]*ve[1]-he[1]*ve[0])&&(we[0]=-we[0],we[1]=-we[1],we[2]=-we[2]),oe[0]=[ce,he,ve,we],L=="MIRROR"&&(0>xe[0]*(ge[1]*re[2]-ge[2]*re[1])+xe[1]*(ge[2]*re[0]-ge[0]*re[2])+xe[2]*(ge[0]*re[1]-ge[1]*re[0])&&(xe[0]=-xe[0],xe[1]=-xe[1],xe[2]=-xe[2]),oe[1]=[fe,ge,re,xe])}else if(L=="AXES_2D"||L=="AXES_3D"){for(var le,_e=[0,0,0],Ue=[0,0,0],ye=0;3>ye;ye++)le=0>U[ye]?-1:1,_e[ye]=le*x[0]+U[ye]*C[0];for(var ye=0;3>ye;ye++)Ue[ye]=F[ye]+T[0]*_e[0]*$[ye]+T[1]*_e[1]*J[ye]+T[2]*_e[2]*k[ye];for(var tt=glyph_repeat_mode=="AXES_2D"?2:3,Le=0;Le<tt;Le++){var ct=void 0,Ie=void 0,Je=U[Le],We=[0,0,0],ot=[0,0,0],et=[0,0,0];Le==0?(ct=$,Ie=J):Le==1?(ct=J,Ie=glyph_repeat_mode=="AXES_2D"?$:k):(ct=k,Ie=$);var Ut=x[0]+Je*C[0];We[0]=ct[0]*Ut,We[1]=ct[1]*Ut,We[2]=ct[2]*Ut,et[0]=We[1]*Ie[2]-Ie[1]*We[2],et[1]=We[2]*Ie[0]-Ie[2]*We[0],et[2]=We[0]*Ie[1]-We[1]*Ie[0];var gt=Math.sqrt(et[0]*et[0]+et[1]*et[1]+et[2]*et[2]);if(0<gt){var se=(x[2]+Je*C[2])/gt;L=="AXES_2D"&&0<Le&&(se*=-1),et[0]*=se,et[1]*=se,et[2]*=se}if(ot[0]=et[1]*We[2]-We[1]*et[2],ot[1]=et[2]*We[0]-We[2]*et[0],ot[2]=et[0]*We[1]-et[1]*We[0],gt=Math.sqrt(ot[0]*ot[0]+ot[1]*ot[1]+ot[2]*ot[2]),0<gt){var Me=(x[1]+Je*C[1])/gt;ot[0]*=Me,ot[1]*=Me,ot[2]*=Me}oe[Le]=[Ue,We,ot,et]}}return oe},Q=(F,$,J,k,U)=>{var oe=1;L=="AXES_2D"||L=="MIRROR"?oe=2:L=="AXES_3D"&&(oe=3);var le=F.length/3,ae=0;z.length=oe;for(var he=0;he<le;he++){var ve=3*he,we=[F[ve],F[ve+1],F[ve+2]],ce=[$[ve],$[ve+1],$[ve+2]],ge=[J[ve],J[ve+1],J[ve+2]],re=[k[ve],k[ve+1],k[ve+2]],xe=[U[ve],U[ve+1],U[ve+2]],fe=Z(we,ce,ge,re,xe,z);if(fe.length==oe)for(var ye=0;ye<oe;ye++){I.elements[0]=fe[ye][1][0],I.elements[1]=fe[ye][1][1],I.elements[2]=fe[ye][1][2],I.elements[3]=0,I.elements[4]=fe[ye][2][0],I.elements[5]=fe[ye][2][1],I.elements[6]=fe[ye][2][2],I.elements[7]=0,I.elements[8]=fe[ye][3][0],I.elements[9]=fe[ye][3][1],I.elements[10]=fe[ye][3][2],I.elements[11]=0,I.elements[12]=fe[ye][0][0],I.elements[13]=fe[ye][0][1],I.elements[14]=fe[ye][0][2],I.elements[15]=1,this.morph.setMatrixAt(ae,I);var _e=y[ae];_e&&_e.setTransformation(fe[ye][0],fe[ye][1],fe[ye][2],fe[ye][3]),ae++}}this.morph.instanceMatrix.needsUpdate=!0},ee=F=>{var $=1;L=="AXES_2D"||L=="MIRROR"?$=2:L=="AXES_3D"&&($=3);for(var J,k=F.length,U=0,oe=0;oe<k;oe++){J=F[oe];for(var le=0;le<$;le++){O.setHex(J),this.morph.setColorAt(U,O);var ae=y[U];ae&&ae.setColour(O),U++}}this.morph.instanceColor.needsUpdate=!0},ie=()=>{var F=V,$=G,J=H,k=K,U=te,oe=W,le=this.inbuildTime/this.duration*(E-1),ae=Math.floor(le),he=1-(le-ae),ve=Math.ceil(le);if(R){var we=v[ae.toString()],ce=v[ve.toString()],ge=p[ae.toString()],re=p[ve.toString()],xe=d[ae.toString()],fe=d[ve.toString()],ye=b[ae.toString()],_e=b[ve.toString()],Ue=g[ae.toString()],tt=g[ve.toString()];V.length=we.length,G.length=we.length,H.length=we.length,K.length=we.length,te.length=we.length;for(var Le=0;Le<we.length;Le++)F[Le]=he*we[Le]+(1-he)*ce[Le],$[Le]=he*ge[Le]+(1-he)*re[Le],J[Le]=he*xe[Le]+(1-he)*fe[Le],k[Le]=he*ye[Le]+(1-he)*_e[Le],U[Le]=he*Ue[Le]+(1-he)*tt[Le]}else v[0],c("current_positions"),p[0],c("current_axis1s"),d[0],c("current_axis2s"),b[0],c("current_axis3s"),g[0],c("current_scales");if(Q(F,$,J,k,U),this.boundingBoxUpdateRequired=!0,w!=null){if(A){var ct=w[ae.toString()],Ie=w[ve.toString()];oe.length=ct.length;for(var Je=0;Je<ct.length;Je++)O.setHex(ct[Je]),N.setHex(Ie[Je]),O.setRGB(O.r*he+N.r*(1-he),O.g*he+N.g*(1-he),O.b*he+N.b*(1-he)),oe[Je]=O.getHex()}else w[0],c("current_colors");ee(oe)}};this.showLabel=()=>{for(var F=0;F<y.length;F++)y[F].showLabel(this.morph.material?this.morph.material.color:void 0)};var q=F=>{if(_!=null&&F)for(var $,J=0;J<S;J++)$=new(u(16)).Glyph(void 0,void 0,J,this),_!=null&&_[J]!=null&&$.setLabel(_[J]),0<E&&$.setFrustumCulled(!1),y[J]=$,this.morph.add($.getGroup());_!=null&&F&&this.showLabel(this.morph.material?this.morph.material.color:void 0),Q(v[0],p[0],d[0],b[0],g[0]),w!=null&&ee(w[0]),this.ready=!0,this.boundingBoxUpdateRequired=!0};this.addCustomGlyph=F=>{F.isGlyph&&y.push(F),this.ready=!0,this.boundingBoxUpdateRequired=!0},this.addMeshAsGlyph=(F,$)=>{if(F.isMesh){var J=new(u(16)).Glyph(void 0,void 0,$,this);return J.fromMesh(F),y.push(J),this.morph.add(J.getGroup()),this.ready=!0,this.boundingBoxUpdateRequired=!0,J}},this.forEachGlyph=F=>{for(var $=0;$<y.length;$++)F(y[$])};var ne=(F,$)=>(J,k)=>{var U=J.toBufferGeometry();this.geometry.copy(U),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox(),U.dispose(),k&&k[0]&&(this.morph.material=k[0]),q($),this.morph.name=this.groupName,this.morph.userData=this,this.setMorph(this.morph),J.dispose(),F!=null&&typeof F=="function"&&F(this)};this.getClosestVertexIndex=function(){var F=-1;if(this.morph&&this.ready){this.getBoundingBox().getCenter(this._v1);for(var $,J=v[0],k=J.length/3,U=-1,oe=0,le=0;le<k;le++)$=3*le,this._v2.set(J[$],J[$+1],J[$+2]),oe=this._v1.distanceTo(this._v2),(U==-1||U>oe)&&(U=oe,F=le)}return F},this.getClosestVertex=function(){if(this.closestVertexIndex==-1&&(this.closestVertexIndex=this.getClosestVertexIndex()),0<=this.closestVertexIndex&&this.morph){var F=new f.Vector3;return this.morph.getMatrixAt(this.closestVertexIndex,I),F.setFromMatrixPosition(I),F}},this.getBoundingBox=()=>{if(this.morph&&this.ready&&this.morph.visible){if(this.boundingBoxUpdateRequired){M.setFromBufferAttribute(this.morph.geometry.attributes.position);for(var F=0;F<S;F++)this.morph.getMatrixAt(F,I),P.copy(M).applyMatrix4(I),F==0?B.copy(P):B.union(P);if(B)this.cachedBoundingBox.copy(B),this.morph.updateWorldMatrix(!0,!0),this.cachedBoundingBox.applyMatrix4(this.morph.matrixWorld),this.boundingBoxUpdateRequired=!1;else return}return this.cachedBoundingBox}},this.setMorphTime=F=>{this.inbuildTime=F>this.duration?this.duration:0>F?0:F,(A||R)&&(ie(),R&&(this.markerUpdateRequired=!0))},this.isTimeVarying=()=>!!((this.ready===!1||0<E)&&(A||R)),this.getCurrentTime=()=>this.inbuildTime,this.dispose=()=>{for(var F=y.length-1;0<=F;F--)y[F].dispose();this.geometry&&this.geometry.dispose(),this.morph&&this.morph.material.dispose(),p=void 0,d=void 0,b=void 0,v=void 0,g=void 0,w=void 0,this.ready=!1,this.groupName=void 0},this.render=(F,$,J)=>{if($==!0){var k=this.inbuildTime+F;k>this.duration&&(k-=this.duration),this.inbuildTime=k,(A||R)&&ie()}this.updateMarker($,J)}};m.prototype=Object.create(u(10).ZincObject.prototype),l.Glyphset=m},(o,l,u)=>{u.r(l),u.d(l,{JSONLoader:()=>S});var c=u(4),f=u(20).Loader,h=c.LoaderUtils,m=c.AnimationClip,y=c.Vector3,p=c.Vector4,d=c.Color,b=c.Vector2,v=u(6).Face3,g=u(6).Geometry,w=c.FileLoader,_=c.DefaultLoadingManager,E=u(21).VideoHandler;function S(x){typeof x=="boolean"&&(console.warn("THREE.JSONLoader: showStatus parameter has been removed from constructor."),x=void 0),this.manager=x===void 0?_:x,this.withCredentials=!1,this.paramsString=""}Object.assign(S.prototype,{load:function(T,C,L,A){var R=this,I=this.texturePath&&typeof this.texturePath=="string"?this.texturePath:h.extractUrlBase(T),O=new w(this.manager);T.split("?"),this.paramsString=T.length===2?paramsStrings[1]:"",O.setWithCredentials(this.withCredentials),O.load(T,function(N){var M=JSON.parse(N),P=M.metadata;if(P!==void 0){var B=P.type;if(B!==void 0&&B.toLowerCase()==="object")return void console.error("THREE.JSONLoader: "+T+" should be loaded with THREE.ObjectLoader instead.")}if(R&&R.parse){var D=R.parse(M,I);C(D.geometry,D.materials)}},L,A)},setTexturePath:function(T){this.texturePath=T},parse:function(){function x(A,R){function I(xe,fe){return xe&1<<fe}var O,N,M,P,B,D,V,G,H,K,te,W,z,j,Z,Q,ee,ie,q,ne,F,$,J,k,U,oe,le,ae=A.faces,he=A.vertices,ve=A.normals,we=A.colors,ce=A.scale,ge=0;if(A.uvs!==void 0){for(O=0;O<A.uvs.length;O++)A.uvs[O].length&&ge++;for(O=0;O<ge;O++)R.faceVertexUvs[O]=[]}for(P=0,B=he.length;P<B;)ie=new y,ie.x=he[P++]*ce,ie.y=he[P++]*ce,ie.z=he[P++]*ce,R.vertices.push(ie);if(P=0,B=ae.length,A.uvs)for(O=0;O<A.uvs.length;O++){R.uvs[O]=[];for(var re=0;re<A.uvs[O].length;re++)R.uvs[O][re]=A.uvs[O][re]}if(ve)for(O=0;O<ve.length;O++)R.normals[O]=ve[O];if(we)for(O=0;O<we.length;O++)R.colors[O]=we[O];for(;P<B;)if(K=ae[P++],te=I(K,0),W=I(K,1),z=I(K,3),j=I(K,4),Z=I(K,5),Q=I(K,6),ee=I(K,7),te){if(ne=new v,ne.a=ae[P],ne.b=ae[P+1],ne.c=ae[P+3],F=new v,F.a=ae[P+1],F.b=ae[P+2],F.c=ae[P+3],P+=4,W&&(H=ae[P++],ne.materialIndex=H,F.materialIndex=H),M=R.faces.length,z)for(O=0;O<ge;O++)for(k=A.uvs[O],R.faceVertexUvs[O][M]=[],R.faceVertexUvs[O][M+1]=[],N=0;4>N;N++)G=ae[P++],oe=k[2*G],le=k[2*G+1],U=new b(oe,le),N!==2&&R.faceVertexUvs[O][M].push(U),N!==0&&R.faceVertexUvs[O][M+1].push(U);if(j&&(V=3*ae[P++],ne.normal.set(ve[V++],ve[V++],ve[V]),F.normal.copy(ne.normal)),Z)for(O=0;4>O;O++)V=3*ae[P++],J=new y(ve[V++],ve[V++],ve[V]),O!==2&&ne.vertexNormals.push(J),O!==0&&F.vertexNormals.push(J);if(Q&&(D=ae[P++],$=we[D],ne.color.setHex($),F.color.setHex($)),ee)for(O=0;4>O;O++)D=ae[P++],$=we[D],O!==2&&ne.vertexColors.push(new d($)),O!==0&&F.vertexColors.push(new d($));R.faces.push(ne),R.faces.push(F)}else{if(q=new v,q.a=ae[P++],q.b=ae[P++],q.c=ae[P++],W&&(H=ae[P++],q.materialIndex=H),M=R.faces.length,z)for(O=0;O<ge;O++)for(k=A.uvs[O],R.faceVertexUvs[O][M]=[],N=0;3>N;N++)G=ae[P++],oe=k[2*G],le=k[2*G+1],U=new b(oe,le),R.faceVertexUvs[O][M].push(U);if(j&&(V=3*ae[P++],q.normal.set(ve[V++],ve[V++],ve[V])),Z)for(O=0;3>O;O++)V=3*ae[P++],J=new y(ve[V++],ve[V++],ve[V]),q.vertexNormals.push(J);if(Q&&(D=ae[P++],q.color.setHex(we[D])),ee)for(O=0;3>O;O++)D=ae[P++],q.vertexColors.push(new d(we[D]));R.faces.push(q)}}function T(A,R){var I=A.influencesPerVertex===void 0?2:A.influencesPerVertex;if(A.skinWeights)for(var O=0,N=A.skinWeights.length;O<N;O+=I){var M=A.skinWeights[O],P=1<I?A.skinWeights[O+1]:0,B=2<I?A.skinWeights[O+2]:0,D=3<I?A.skinWeights[O+3]:0;R.skinWeights.push(new p(M,P,B,D))}if(A.skinIndices)for(var O=0,N=A.skinIndices.length;O<N;O+=I){var V=A.skinIndices[O],G=1<I?A.skinIndices[O+1]:0,H=2<I?A.skinIndices[O+2]:0,K=3<I?A.skinIndices[O+3]:0;R.skinIndices.push(new p(V,G,H,K))}R.bones=A.bones,R.bones&&0<R.bones.length&&(R.skinWeights.length!==R.skinIndices.length||R.skinIndices.length!==R.vertices.length)&&console.warn("When skinning, number of vertices ("+R.vertices.length+"), skinIndices ("+R.skinIndices.length+"), and skinWeights ("+R.skinWeights.length+") should match.")}function C(A,R){var I=A.scale;if(A.morphTargets!==void 0)for(var O=0,N=A.morphTargets.length;O<N;O++){R.morphTargets[O]={},R.morphTargets[O].name=A.morphTargets[O].name,R.morphTargets[O].vertices=[];for(var M,P=R.morphTargets[O].vertices,B=A.morphTargets[O].vertices,D=0,V=B.length;D<V;D+=3)M=new y,M.x=B[D]*I,M.y=B[D+1]*I,M.z=B[D+2]*I,P.push(M)}if(A.morphNormals!==void 0){for(var O=0,N=A.morphNormals.length;O<N;O++)if(R.morphTargets[O]){R.morphTargets[O].normals=[];for(var G,H=R.morphTargets[O].normals,K=A.morphNormals[O].normals,D=0,V=K.length;D<V;D+=3)G=new y,G.x=K[D],G.y=K[D+1],G.z=K[D+2],H.push(G);R.morphNormalsReady=!0}}if(A.morphColors!==void 0){var O,N,te,W,z,j,Z;for(O=0,N=A.morphColors.length;O<N;O++)for(R.morphColors[O]={},R.morphColors[O].name=A.morphColors[O].name,R.morphColors[O].colors=[],z=R.morphColors[O].colors,j=A.morphColors[O].colors,te=0,W=j.length;te<W;te+=3)Z=new c.Color(16755200),Z.setRGB(j[te],j[te+1],j[te+2]),z.push(Z)}}function L(A,R){var I=[],O=[];A.animation!==void 0&&O.push(A.animation),A.animations!==void 0&&(A.animations.length?O=O.concat(A.animations):O.push(A.animations));for(var N,M=0;M<O.length;M++)N=m.parseAnimation(O[M],R.bones),N&&I.push(N);if(R.morphTargets){var P=m.CreateClipsFromMorphTargetSequences(R.morphTargets,10);I=I.concat(P)}0<I.length&&(R.animations=I)}return function(A,R){A.data!==void 0&&(A=A.data),A.scale=A.scale===void 0?1:1/A.scale;var I=new g;if(I.morphColors=[],x(A,I),T(A,I),C(A,I),L(A,I),I.computeFaceNormals(),I.computeBoundingSphere(),A.materials===void 0||A.materials.length===0)return{geometry:I};var O=f.prototype.initMaterials(A.materials,R,"Anonymous");if(A.materials[0].video){var N=R+A.materials[0].video;this.paramsString&&(N+="?".concat(this.paramsString));var M=new E(N);I._video=M}return O&&0<O.length&&(O[0].side=A.materials[0].singleSided?c.FrontSide:A.materials[0].flipSided?c.BackSide:c.DoubleSide,A.materials[0].specularCoef&&(O[0].shininess=Math.floor(A.materials[0].specularCoef/3))),{geometry:I,materials:O}}}()})},(o,l,u)=>{u.r(l),u.d(l,{Loader:()=>f});var c=u(4);u(4);function f(){}f.Handlers={handlers:[],add:function(m,y){this.handlers.push(m,y)},get:function(m){for(var y=this.handlers,p=0,d=y.length;p<d;p+=2){var b=y[p],v=y[p+1];if(b.test(m))return v}return null}},Object.assign(f.prototype,{crossOrigin:"anonymous",onLoadStart:function(){},onLoadProgress:function(){},onLoadComplete:function(){},initMaterials:function(m,y,p){for(var d=[],b=0;b<m.length;++b)d[b]=this.createMaterial(m[b],y,p);return d},createMaterial:function(){var h={NoBlending:c.NoBlending,NormalBlending:c.NormalBlending,AdditiveBlending:c.AdditiveBlending,SubtractiveBlending:c.SubtractiveBlending,MultiplyBlending:c.MultiplyBlending,CustomBlending:c.CustomBlending},m=new c.Color,y=new c.TextureLoader,p=new c.MaterialLoader;return function(d,b,v){function g(x,T,C,L,A){var R,I=b+x,O=f.Handlers.get(I);O===null?(y.setCrossOrigin(v),R=y.load(I)):R=O.load(I),T!==void 0&&(R.repeat.fromArray(T),T[0]!==1&&(R.wrapS=c.RepeatWrapping),T[1]!==1&&(R.wrapT=c.RepeatWrapping)),C!==void 0&&R.offset.fromArray(C),L!==void 0&&(L[0]==="repeat"&&(R.wrapS=c.RepeatWrapping),L[0]==="mirror"&&(R.wrapS=c.MirroredRepeatWrapping),L[1]==="repeat"&&(R.wrapT=c.RepeatWrapping),L[1]==="mirror"&&(R.wrapT=c.MirroredRepeatWrapping)),A!==void 0&&(R.anisotropy=A);var N=c.MathUtils.generateUUID();return w[N]=R,N}var w={},_={uuid:c.MathUtils.generateUUID(),type:"MeshLambertMaterial"};for(var E in d){var S=d[E];switch(E){case"DbgColor":case"DbgIndex":case"opticalDensity":case"illumination":break;case"DbgName":_.name=S;break;case"blending":_.blending=h[S];break;case"colorAmbient":case"mapAmbient":console.warn("THREE.Loader.createMaterial:",E,"is no longer supported.");break;case"colorDiffuse":_.color=m.fromArray(S).getHex();break;case"colorSpecular":_.specular=m.fromArray(S).getHex();break;case"colorEmissive":_.emissive=m.fromArray(S).getHex();break;case"specularCoef":_.shininess=S;break;case"shading":S.toLowerCase()==="basic"&&(_.type="MeshBasicMaterial"),S.toLowerCase()==="phong"&&(_.type="MeshPhongMaterial"),S.toLowerCase()==="standard"&&(_.type="MeshStandardMaterial");break;case"mapDiffuse":_.map=g(S,d.mapDiffuseRepeat,d.mapDiffuseOffset,d.mapDiffuseWrap,d.mapDiffuseAnisotropy);break;case"mapDiffuseRepeat":case"mapDiffuseOffset":case"mapDiffuseWrap":case"mapDiffuseAnisotropy":break;case"mapEmissive":_.emissiveMap=g(S,d.mapEmissiveRepeat,d.mapEmissiveOffset,d.mapEmissiveWrap,d.mapEmissiveAnisotropy);break;case"mapEmissiveRepeat":case"mapEmissiveOffset":case"mapEmissiveWrap":case"mapEmissiveAnisotropy":break;case"mapLight":_.lightMap=g(S,d.mapLightRepeat,d.mapLightOffset,d.mapLightWrap,d.mapLightAnisotropy);break;case"mapLightRepeat":case"mapLightOffset":case"mapLightWrap":case"mapLightAnisotropy":break;case"mapAO":_.aoMap=g(S,d.mapAORepeat,d.mapAOOffset,d.mapAOWrap,d.mapAOAnisotropy);break;case"mapAORepeat":case"mapAOOffset":case"mapAOWrap":case"mapAOAnisotropy":break;case"mapBump":_.bumpMap=g(S,d.mapBumpRepeat,d.mapBumpOffset,d.mapBumpWrap,d.mapBumpAnisotropy);break;case"mapBumpScale":_.bumpScale=S;break;case"mapBumpRepeat":case"mapBumpOffset":case"mapBumpWrap":case"mapBumpAnisotropy":break;case"mapNormal":_.normalMap=g(S,d.mapNormalRepeat,d.mapNormalOffset,d.mapNormalWrap,d.mapNormalAnisotropy);break;case"mapNormalFactor":_.normalScale=S;break;case"mapNormalRepeat":case"mapNormalOffset":case"mapNormalWrap":case"mapNormalAnisotropy":break;case"mapSpecular":_.specularMap=g(S,d.mapSpecularRepeat,d.mapSpecularOffset,d.mapSpecularWrap,d.mapSpecularAnisotropy);break;case"mapSpecularRepeat":case"mapSpecularOffset":case"mapSpecularWrap":case"mapSpecularAnisotropy":break;case"mapMetalness":_.metalnessMap=g(S,d.mapMetalnessRepeat,d.mapMetalnessOffset,d.mapMetalnessWrap,d.mapMetalnessAnisotropy);break;case"mapMetalnessRepeat":case"mapMetalnessOffset":case"mapMetalnessWrap":case"mapMetalnessAnisotropy":break;case"mapRoughness":_.roughnessMap=g(S,d.mapRoughnessRepeat,d.mapRoughnessOffset,d.mapRoughnessWrap,d.mapRoughnessAnisotropy);break;case"mapRoughnessRepeat":case"mapRoughnessOffset":case"mapRoughnessWrap":case"mapRoughnessAnisotropy":break;case"mapAlpha":_.alphaMap=g(S,d.mapAlphaRepeat,d.mapAlphaOffset,d.mapAlphaWrap,d.mapAlphaAnisotropy);break;case"mapAlphaRepeat":case"mapAlphaOffset":case"mapAlphaWrap":case"mapAlphaAnisotropy":break;case"flipSided":_.side=c.BackSide;break;case"doubleSided":_.side=c.DoubleSide;break;case"transparency":console.warn("THREE.Loader.createMaterial: transparency has been renamed to opacity"),_.opacity=S;break;case"depthTest":case"depthWrite":case"colorWrite":case"opacity":case"reflectivity":case"transparent":case"visible":case"wireframe":_[E]=S;break;case"vertexColors":S===!0&&(_.vertexColors=c.VertexColors),S==="face"&&(_.vertexColors=c.FaceColors);break;default:console.error("THREE.Loader.createMaterial: Unsupported",E,S)}}return _.type==="MeshBasicMaterial"&&delete _.emissive,_.type!=="MeshPhongMaterial"&&delete _.specular,1>_.opacity&&(_.transparent=!0),p.setTextures(w),p.parse(_)}}()})},(o,l,u)=>{var c=u(4);l.VideoHandler=function(f){var h=this;this.video=void 0,this.videoTexture=void 0,this.setMorphTime=function(m,y){var p=m/y*h.video.duration;h.video.currentTime=p},this.getVideoDuration=function(){return h.video.duration},this.createCanvasVideoTexture=function(){return h.videoTexture=new c.VideoTexture(h.video),h.videoTexture.minFilter=c.LinearFilter,h.videoTexture.magFilter=c.LinearFilter,h.videoTexture.format=c.RGBFormat,h.video.currentTime=0,h.videoTexture},this.getCurrentTime=function(m){return h.video?m*(h.video.currentTime/h.video.duration):0},this.isReadyToPlay=function(){return!!(h.video&&3<=h.video.readyState)},function(){document&&(h.video=document.createElement("video"),h.video.crossOrigin="anonymous",h.video.src=f,h.video.load(),h.video.loop=!0)}()}},(o,l,u)=>{var c=u(4),f=u(23).Points,h=u(5).toBufferGeometry,m=u(5).getCircularTexture,y=u(17).Label,p=function(){u(10).ZincObject.call(this),this.isPointset=!0;var d=[];this.createMesh=(v,g,w)=>{if(v&&g){var _=h(v,w),E=m();g.map=E;var S=new f(_,g);this.setMesh(S,w.localTimeEnabled,w.localMorphColour)}};var b=(v,g,w,_)=>{if(w){var E=new c.Color(_),S=new y(w,E);S.setPosition(g[0],g[1],g[2]);var x=S.getSprite();x.material.sizeAttenuation=!1,x.material.alphaTest=.5,x.material.transparent=!0,x.material.depthWrite=!1,x.material.depthTest=!1,this.group.add(x),d[v]=S}};this.addPoints=(v,g,w)=>{if(v&&0<v.length){var _=this.drawRange-1,E=this.addVertices(v),S=this.getMorph();if(!S){var x=new c.PointsMaterial({alphaTest:.5,size:10,color:w,sizeAttenuation:!1});E.colorsNeedUpdate=!0,this.createMesh(E,x,{localTimeEnabled:!1,localMorphColour:!1})}var T=_+v.length,C=0;if(Array.isArray(g)&&g.length===v.length||typeof g=="string")for(_;_+C<T;){var L=typeof g=="string"?g:g[C];b(C,v[C],L,w),C++}this.region&&(this.region.pickableUpdateRequired=!0)}},this.setSize=v=>{this.morph&&this.morph.material&&(this.morph.material.size=v,this.morph.material.needsUpdate=!0)},this.setSizeAttenuation=v=>{this.morph&&this.morph.material&&(this.morph.material.sizeAttenuation=v,this.morph.material.needsUpdate=!0)},this.getVerticesByIndex=function(v){if(0<=v&&this.drawRange>v){var g=this.getMorph().geometry.getAttribute("position");return[g.getX(v),g.getY(v),g.getZ(v)]}},this.editVertices=function(v,g){if(v&&v.length){var w=this.getMorph(),_=g+v.length-1;if(!w||0>g||_>=this.drawRange)return;var E=w.geometry.getAttribute("position"),S=g;v.forEach(x=>{var T=d[S];T&&T.setPosition(x[0],x[1],x[2]),E.setXYZ(S++,x[0],x[1],x[2])}),E.needsUpdate=!0,this.boundingBoxUpdateRequired=!0}},this.render=(v,g,w,_)=>{this.morph&&w&&(this.morph.sizePerPixel=w.pixelHeight),p.prototype.render.call(this,v,g,w,_)}};p.prototype=Object.create(u(10).ZincObject.prototype),l.Pointset=p},(o,l,u)=>{u.r(l),u.d(l,{Points:()=>b});var c=u(4),f=new c.Matrix4,h=new c.Ray,m=new c.Sphere,y=new c.Vector3,p=new c.Vector3,d=new c.Vector3;class b extends c.Object3D{constructor(){var _=0<arguments.length&&arguments[0]!==void 0?arguments[0]:new c.BufferGeometry,E=1<arguments.length&&arguments[1]!==void 0?arguments[1]:new c.PointsMaterial;super(),this.type="Points",this.geometry=_,this.material=E,this.sizePerPixel=1,this.updateMorphTargets()}copy(_){return super.copy(_),this.material=_.material,this.geometry=_.geometry,this}raycast(_,E){var S=this.geometry,x=this.matrixWorld,T=_.params.Points.threshold,C=S.drawRange;if(S.boundingSphere===null&&S.computeBoundingSphere(),m.copy(S.boundingSphere),m.applyMatrix4(x),m.radius+=T,_.ray.intersectsSphere(m)!==!1){f.copy(x).invert(),h.copy(_.ray).applyMatrix4(f);var L=T/((this.scale.x+this.scale.y+this.scale.z)/3)*this.material.size*this.sizePerPixel,A=L*L;if(S.isBufferGeometry){var R=S.index,I=S.attributes,O=I.position,N=S.morphAttributes.position;if(R!==null)for(var M,P=Math.max(0,C.start),B=Math.min(R.count,C.start+C.count),D=P;D<B;D++)M=R.getX(D),g(this,O,N,M),v(y,M,A,x,_,E,this);else for(var V=Math.max(0,C.start),G=Math.min(O.count,C.start+C.count),H=V;H<G;H++)g(this,O,N,H),v(y,H,A,x,_,E,this)}else console.error("THREE.Points.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}}updateMorphTargets(){var _=this.geometry;if(_.isBufferGeometry){var E=_.morphAttributes,S=Object.keys(E);if(0<S.length){var x=E[S[0]];if(x!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(var T,C=0,L=x.length;C<L;C++)T=x[C].name||C+"",this.morphTargetInfluences.push(0),this.morphTargetDictionary[T]=C}}}else{var A=_.morphTargets;A!==void 0&&0<A.length&&console.error("THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}}b.prototype.isPoints=!0;function v(w,_,E,S,x,T,C){var L=h.distanceSqToPoint(w);if(L<E){var A=new c.Vector3;h.closestPointToPoint(w,A),A.applyMatrix4(S);var R=x.ray.origin.distanceTo(A);if(R<x.near||R>x.far)return;T.push({distance:R,distanceToRay:Math.sqrt(L),point:A,index:_,face:null,object:C})}}function g(w,_,E,S){y.fromBufferAttribute(_,S);var x=w.morphTargetInfluences;if(w.material.morphTargets&&E&&x){p.set(0,0,0);for(var T=0,C=E.length;T<C;T++){var L=x[T],A=E[T];L!==0&&(d.fromBufferAttribute(A,S),p.addScaledVector(d.sub(y),L))}y.add(p)}}},(o,l,u)=>{var c=u(4),f=u(5).toBufferGeometry,h=function(){u(10).ZincObject.call(this),this.isLines=!0,this.createLineSegment=(m,y,p)=>{if(m&&y){var d=f(m,p);p.localMorphColour&&d.morphAttributes.color&&(y.onBeforeCompile=u(9).augmentMorphColor());var b=new(u(12)).LineSegments(d,y);this.setMesh(b,p.localTimeEnabled,p.localMorphColour)}},this.setWidth=m=>{this.morph&&this.morph.material&&(this.morph.material.linewidth=m,this.morph.material.needsUpdate=!0)},this.addLines=(m,y)=>{if(m&&0<m.length){var p=this.addVertices(m),d=this.getMorph();if(!d){var b=new c.LineBasicMaterial({color:y});p.colorsNeedUpdate=!0,this.createLineSegment(p,b,{localTimeEnabled:!1,localMorphColour:!1})}this.region&&(this.region.pickableUpdateRequired=!0)}}};h.prototype=Object.create(u(10).ZincObject.prototype),l.Lines=h},(o,l,u)=>{function c(y,p,d,b,v,g,w){try{var _=y[g](w),E=_.value}catch(S){return void d(S)}_.done?p(E):Promise.resolve(E).then(b,v)}function f(y){return function(){var p=this,d=arguments;return new Promise(function(b,v){function g(E){c(_,b,v,g,w,"next",E)}function w(E){c(_,b,v,g,w,"throw",E)}var _=y.apply(p,d);g(void 0)})}}var h=u(4),m=function(){var y=this;u(26).Texture.call(this),this.isTextureArray=!0,this.loadFromImages=function(){var p=f(function*(d){var b=1,v=1,g=0;if(d&&d.length){y.isLoading=!0;var w=new Image;w.crossOrigin="Anonymous";for(var _,E=document.createElement("canvas"),S=0,x=Array(d.length),T=0;T<d.length;T++)_=yield y.imageToUint8Array(y,w,d[T],E),_&&_.array&&(b=_.width,v=_.height,x[g]=_.array,S+=x[g].length,g++);var C=new Uint8Array(S);S=0,x.forEach(L=>{C.set(L,S),S+=L.length}),y.impl=new h.DataTexture2DArray(C,b,v,g),y.size={width:b,height:v,depth:g},y.isLoading=!1,y.impl.needsUpdate=!0}});return function(){return p.apply(this,arguments)}}(),this.getMaterial=p=>{if(this.impl){var d;if(!p)d=new h.MeshBasicMaterial({color:new h.Color(1,1,1),transparent:!1,opacity:1,map:this.impl,side:h.DoubleSide});else if(p.vs&&p.fs){var b=!0;p.transparent&&(b=p.transparent);var v=h.FrontSide;p.side&&(v=p.side),d=new h.ShaderMaterial({transparent:b,uniforms:p.uniforms,vertexShader:p.vs,fragmentShader:p.fs,side:v}),p.glslVersion&&(d.glslVersion=p.glslVersion)}if(d)return d.needsUpdate=!0,d}}};m.prototype=Object.create(u(26).Texture.prototype),l.TextureArray=m},(o,l,u)=>{function c(y,p,d,b,v,g,w){try{var _=y[g](w),E=_.value}catch(S){return void d(S)}_.done?p(E):Promise.resolve(E).then(b,v)}function f(y){return function(){var p=this,d=arguments;return new Promise(function(b,v){function g(E){c(_,b,v,g,w,"next",E)}function w(E){c(_,b,v,g,w,"throw",E)}var _=y.apply(p,d);g(void 0)})}}var h=u(4),m=function(){this.isTexture=!0,this.impl=void 0,this.isLoading=!1,this.size={width:1,height:1,depth:0}};m.prototype.loadImage=function(y,p){return new Promise((d,b)=>{y.onload=()=>d(y),y.onerror=b,y.src=p})},m.prototype.imageToUint8Array=function(){var y=f(function*(p,d,b,v){yield p.loadImage(d,b),v.width=d.width,v.height=d.height;var g=v.getContext("2d");return g.drawImage(d,0,0),{array:new Uint8Array(g.getImageData(0,0,v.width,v.height).data.buffer),width:v.width,height:v.height}});return function(){return y.apply(this,arguments)}}(),m.prototype.loadFromImages=function(){var y=f(function*(){});return function(){return y.apply(this,arguments)}}(),m.prototype.isReady=function(){return!(!this.impl||this.isLoading)},m.prototype.getMaterial=function(){if(this.impl)return new h.MeshBasicMaterial({color:new h.Color(1,1,1),transparent:!1,opacity:1,map:this.impl,side:h.DoubleSide})},l.Texture=m},(o,l,u)=>{function c(v,g){var w=Object.keys(v);if(Object.getOwnPropertySymbols){var _=Object.getOwnPropertySymbols(v);g&&(_=_.filter(function(E){return Object.getOwnPropertyDescriptor(v,E).enumerable})),w.push.apply(w,_)}return w}function f(v){for(var g,w=1;w<arguments.length;w++)g=arguments[w]==null?{}:arguments[w],w%2?c(Object(g),!0).forEach(function(_){h(v,_,g[_])}):Object.getOwnPropertyDescriptors?Object.defineProperties(v,Object.getOwnPropertyDescriptors(g)):c(Object(g)).forEach(function(_){Object.defineProperty(v,_,Object.getOwnPropertyDescriptor(g,_))});return v}function h(v,g,w){return g=m(g),g in v?Object.defineProperty(v,g,{value:w,enumerable:!0,configurable:!0,writable:!0}):v[g]=w,v}function m(v){var g=y(v,"string");return typeof g=="symbol"?g:g+""}function y(v,g){if(typeof v!="object"||!v)return v;var w=v[Symbol.toPrimitive];if(w!==void 0){var _=w.call(v,g||"default");if(typeof _!="object")return _;throw new TypeError("@@toPrimitive must return a primitive value.")}return(g==="string"?String:Number)(v)}var p=u(4),d=u(28),b=function(v){u(29).TexturePrimitive.call(this,v),this.isTextureSlides=!0;var g=[],w={};this.morph=new p.Group,this.group=this.morph,this.morph.userData=this;var _=!0;this.createSlides=x=>{x.forEach(T=>this.createSlide(T))};var E=(x,T)=>{var C=x.material,L=C.uniforms;switch(x.rotation.x=0,x.rotation.y=0,x.rotation.z=0,x.position.x=0,x.position.y=0,x.position.z=0,T.direction){case"x":var A=_?-Math.PI/2:Math.PI/2;x.rotation.y=A,L.direction.value=1,L.slide.value.set(T.value,0,0),x.position.x=T.value;break;case"y":x.rotation.x=Math.PI/2,L.direction.value=2,L.slide.value.set(0,T.value,0),x.position.y=T.value;break;case"z":L.direction.value=3,L.slide.value.set(0,0,T.value),x.position.z=T.value;break}C.needsUpdate=!0,this.boundingBoxUpdateRequired=!0};this.modifySlideSettings=x=>{x&&x.id&&x.id in w&&w[x.id]&&E(w[x.id],x)},this.createSlide=x=>{if(this.texture&&this.texture.isTextureArray&&this.texture.isReady()&&x&&x.direction&&x.value!==void 0){var T=new p.PlaneGeometry(1,1);T.translate(.5,.5,0);var C=d.getUniforms();C.diffuse.value=this.texture.impl,C.depth.value=this.texture.size.depth,C.flipY.value=_;var L={fs:d.fs,vs:d.vs,uniforms:C,glslVersion:d.glslVersion,side:p.DoubleSide,transparent:!1},A=this.texture.getMaterial(L);A.needsUpdate=!0;var R=new p.Mesh(T,A);R.name=this.groupName,R.userData=this;var I={value:x.value,direction:x.direction,id:R.id};return g.push(I),E(R,I),w[R.id]=R,this.morph.add(R),this.boundingBoxUpdateRequired=!0,I}},this.getTextureSettings=()=>[...g],this.getTextureSettingsWithId=x=>{for(var T=0;T<g.length;T++)if(x===g[T].id)return f({},g[T])},this.getSlides=()=>this.morph?[...this.morph.children]:[],this.removeSlide=x=>{x&&this.removeSlideWithId(x.id)},this.removeSlideWithId=x=>{if(this.morph&&x in w&&w[x]){if(this.morph.getObjectById(x)){var T=w[x];this.morph.remove(T),T.clear(),T.geometry&&T.geometry.dispose(),T.material&&T.material.dispose(),this.boundingBoxUpdateRequired=!0}var C=g.findIndex(L=>L.id===x);-1<C&&g.splice(C,1)}},this.dispose=()=>{this.morph.children.forEach(x=>{x.geometry&&x.geometry.dispose(),x.material&&x.material.dispose()}),u(29).TexturePrimitive.prototype.dispose.call(this),this.boundingBoxUpdateRequired=!0};var S=(x,T,C)=>{switch(T.direction.value){case 1:C.copy(T.slide.value),x.expandByPoint(C),C.setY(1),C.setZ(1),x.expandByPoint(C);break;case 2:C.copy(T.slide.value),x.expandByPoint(C),C.setX(1),C.setZ(1),x.expandByPoint(C);break;case 3:C.copy(T.slide.value),x.expandByPoint(C),C.setX(1),C.setY(1),x.expandByPoint(C);break}};this.getBoundingBox=()=>{if(this.morph&&this.morph.children&&this.morph.visible&&this.boundingBoxUpdateRequired){this.cachedBoundingBox.makeEmpty();var x=new p.Vector3(0,0,0);this.morph.children.forEach(T=>{S(this.cachedBoundingBox,T.material.uniforms,x)}),this.morph.updateMatrixWorld(!0,!0),this.cachedBoundingBox.applyMatrix4(this.morph.matrixWorld),this.boundingBoxUpdateRequired=!1}return this.cachedBoundingBox},this.applyTransformation=(x,T,C)=>{var L=new p.Matrix4;L.set(x[0],x[1],x[2],0,x[3],x[4],x[5],0,x[6],x[7],x[8],0,0,0,0,0);var A=new p.Quaternion().setFromRotationMatrix(L);this.morph.position.set(...T),this.morph.quaternion.copy(A),this.morph.scale.set(...C),this.morph.updateMatrix(),this.boundingBoxUpdateRequired=!0},this.initialise=(x,T)=>{if(x){var C=x.locations;C&&0<C.length&&(this.applyTransformation(C[0].orientation,C[0].position,C[0].scale),"flipY"in C[0]&&(_=C[0].flipY)),this.createSlides(x.settings.slides),T!=null&&typeof T=="function"&&T(this)}}};b.prototype=Object.create(u(29).TexturePrimitive.prototype),b.prototype.constructor=b,l.TextureSlides=b},(o,l,u)=>{var c=u(4),f=c.GLSL3,h=`
3185
3185
  precision highp float;
3186
3186
  precision highp int;
3187
3187
  precision highp sampler2DArray;
@@ -3224,7 +3224,7 @@ void main() {
3224
3224
  vUw.xyz = vec3(slidePos.x, slidePos.y, slidePos.z * depth);
3225
3225
 
3226
3226
  }
3227
- `,y=function(){return{diffuse:{value:void 0},depth:{value:1},slide:{value:new c.Vector3(0,0,1)},direction:{value:1},flipY:{value:!0}}};l.fs=h,l.vs=m,l.glslVersion=f,l.getUniforms=y},(o,l,u)=>{u(4);var c=u(5).resolveURL,f=function(h){u(10).ZincObject.call(this),this.isTexturePrimitive=!0,this.texture=h,this.load=(m,y)=>{if(m&&m.images&&m.images.source){var p=new(u(25)).TextureArray,d=[];m.images.source.forEach(v=>{d.push(c(v))});var b=this;p.loadFromImages(d).then(()=>{b.texture=p,b.initialise(m,y)})}},this.initialise=(m,y)=>{y!=null&&typeof y=="function"&&y(this)}};f.prototype=Object.create(u(10).ZincObject.prototype),f.prototype.constructor=f,l.TexturePrimitive=f},(o,l,u)=>{var c=u(4),f=u(31);l.Renderer=function(h){var m=h,y=void 0,p=void 0,d=new c.Clock(!1);this.playAnimation=!0;var b=1e3,v=[],g=0,w=[],_=0,E=void 0,S=void 0,x=void 0,T=void 0,C=[],L=[],A=new c.Group,R=void 0,I=void 0,O=!1;this.getDrawingWidth=()=>m?m.clientWidth:R?typeof R.clientWidth>"u"?Math.round(R.width):Math.round(R.clientWidth):0,this.getDrawingHeight=()=>m?m.clientHeight:R?typeof R.clientHeight>"u"?Math.round(R.height):Math.round(R.clientHeight):0,this.onWindowResize=()=>{p.onWindowResize();var P=this.getDrawingWidth(),B=this.getDrawingHeight();if(y!=null){var D;m?(D=m.getBoundingClientRect(),y.setSize(P,B)):R&&(typeof R.getBoundingClientRect>"u"||(D=R.getBoundingClientRect(),R.width=P,R.height=B),y.setSize(P,B,!1)),D&&(D.left,D.top);var V=new c.Vector2;y.getSize(V),V.x,V.y}},this.initialiseVisualisation=P=>{if(P=P||{},P.antialias===void 0){var B=!1;try{/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)&&(B=!0)}catch{B=!1}P.antialias=!B}P.canvas&&(m=void 0,R=P.canvas),y=new c.WebGLRenderer(P),m!==void 0&&m.appendChild(y.domElement),y.setClearColor(16777215,1),R&&R.style&&(R.style.height="100%",R.style.width="100%"),y.autoClear=!1;var D=this.createScene("default");this.setCurrentScene(D)},this.getCurrentScene=()=>p,this.setCurrentScene=P=>{if(P){this.removeActiveScene(P);var B=p;p=P,B&&B.setInteractiveControlEnable(!1),p.setInteractiveControlEnable(!0),p.setAdditionalScenesGroup(A),this.onWindowResize()}},this.getSceneByName=P=>C[P],this.createScene=P=>{if(C[P]==null){var B;return B=R?new(u(32)).Scene(R,y):new(u(32)).Scene(m,y),C[P]=B,B.sceneName=P,B}},this.resetView=()=>{p.resetView()},this.viewAll=()=>{if(p){var P=p.getBoundingBox();if(P){for(var B,D=0;D<L.length;D++)B=L[D].getBoundingBox(),B&&P.union(B);p.viewAllWithBoundingBox(P)}}},this.loadModelsURL=(P,B,D,V,G,H)=>{p.loadModelsURL(P,B,D,V,G,H)},this.loadViewURL=P=>{p.loadViewURL(P)},this.loadFromViewURL=(P,B)=>{p.loadFromViewURL(P,B)},this.updateDirectionalLight=()=>{p.updateDirectionalLight()};var N=()=>{O?(E=requestAnimationFrame(N),this.render()):(cancelAnimationFrame(E),E=void 0)};this.stopAnimate=()=>{O&&(d.stop(),O=!1)},this.animate=()=>{O||(d.start(),O=!0,N())},this.addPreRenderCallbackFunction=P=>(++g,v[g]=P,g),this.removePreRenderCallbackFunction=P=>{P in v&&delete v[P]},this.addPostRenderCallbackFunction=P=>(++_,w[_]=P,_),this.removePostRenderCallbackFunction=P=>{P in w&&delete w[P]},this.getPlayRate=()=>b,this.setPlayRate=P=>{b=P},this.getCurrentTime=()=>p.getCurrentTime(),this.setMorphsTime=P=>{p.setMorphsTime(P)},this.getZincGeometryByID=P=>p.getZincGeometryByID(P),this.addToScene=P=>{p.addObject(P)},this.addToOrthoScene=P=>{if(x==null&&(x=new c.Scene),S==null){var B=this.getDrawingWidth(),D=this.getDrawingHeight();S=new c.OrthographicCamera(-B/2,B/2,D/2,-D/2,1,10),S.position.z=10}x.add(P)};var M=P=>B=>{B.needsUpdate=!0;var D=new c.SpriteMaterial({map:B}),V=D.map.image.width,G=D.map.image.height;P.material=D,P.scale.set(V,G,1);var H=this.getDrawingWidth(),K=this.getDrawingHeight();P.position.set((H-V)/2,(-K+G)/2,1),this.addToOrthoScene(P)};this.addLogo=()=>{T=new c.Sprite,c.ImageUtils.loadTexture("images/abi_big_logo_transparent_small.png",void 0,M(T))},this.render=()=>{I||(m?0<m.clientWidth&&0<m.clientHeight&&(I=new f(m,this.onWindowResize)):R&&0<R.width&&0<R.height&&(I=new f(R,this.onWindowResize)));var P=d.getDelta();p.renderGeometries(b,P,this.playAnimation);for(var B,D=0;D<L.length;D++)B=L[D],B.renderGeometries(b,P,this.playAnimation);for(var V in S!=null&&x!=null&&(y.clearDepth(),y.render(x,S)),v)v.hasOwnProperty(V)&&v[V].call();for(var G in p.render(y),w)w.hasOwnProperty(G)&&w[G].call()},this.getThreeJSRenderer=()=>y,this.isSceneActive=P=>{if(p===P)return!0;for(var B,D=0;D<L.length;D++)if(B=L[D],B===P)return!0;return!1},this.addActiveScene=P=>{this.isSceneActive(P)||(L.push(P),A.add(P.getThreeJSScene()))},this.removeActiveScene=P=>{for(var B,D=0;D<L.length;D++)if(B=L[D],B===P)return L.splice(D,1),void A.remove(P.getThreeJSScene())},this.clearAllActiveScene=()=>{for(var P=0;P<L.length;P++)A.remove(L[P].getThreeJSScene());L.splice(0,L.length)},this.dispose=()=>{for(var P in O&&cancelAnimationFrame(E),C)C.hasOwnProperty(P)&&C[P].clearAll();C=[],L=[],A=new c.Group,this.stopAnimate(),v=[],g=0,S=void 0,x=void 0,T=void 0;var B=this.createScene("default");this.setCurrentScene(B),I=void 0},this.transitionScene=(P,B)=>{if(p){var D=p.getZincCameraControls(),V=P.getBoundingBox();if(V){var G=V.min.distanceTo(V.max)/2,H=(V.min.x+V.max.x)/2,K=(V.min.y+V.max.y)/2,te=(V.min.z+V.max.z)/2,W=D.getViewportFromCentreAndRadius(H,K,te,G,40,G*4),z=D.getCurrentViewport();D.cameraTransition(z,W,B),D.enableCameraTransition()}}},this.isWebGL2=()=>!!y&&y.capabilities.isWebGL2}},o=>{o.exports=zB()},(o,l,u)=>{var c=u(4),f=u(33).MarkerCluster,h=u(35).SceneLoader,m=u(41).SceneExporter,y=u(43).Viewport,p=u(5).createBufferGeometry,d=u(5).getCircularTexture,b=0,v=function(){return"sc"+b++},g=function(){return{Duration:"6 secs",OriginalDuration:"-",TimeStamps:{}}},w=6e3;l.Scene=function(_,E){var S=this,x=_,T=void 0,C=new h(this),L=void 0,A={},R=0,I={},O=0,N=new c.Scene,M=new(u(44)).Region(void 0,this);N.add(M.getGroup());var P=new c.Group;N.add(P),this.directionalLight=void 0,this.ambient=void 0,this.camera=void 0;var B=6e3,D=void 0;this.sceneName=void 0;var V=!1,G=void 0;this.autoClearFlag=!0,this.displayMarkers=!1,this.displayMinimap=!1,this.minimapScissor={x_offset:16,y_offset:16,width:128,height:128,align:"top-left",updateRequired:!0};var H={x:0,y:0},K=g(),te=new c.Vector2,W=[];this.forcePickableObjectsUpdate=!1,this.uuid=v();var z=new f(this);z.disable(),N.add(z.group);var j=()=>x?typeof x.clientWidth>"u"?x.width:x.clientWidth:0,Z=()=>x?typeof x.clientHeight>"u"?x.height:x.clientHeight:0;this.getDownloadProgress=()=>C.getDownloadProgress(),this.onWindowResize=()=>{var F=Z();this.camera.aspect=j()/F,this.camera.updateProjectionMatrix(),this.minimapScissor.updateRequired=!0,D.onResize(),D.calculateHeightPerPixelAtZeroDepth(F)},this.resetView=()=>{this.onWindowResize(),D.resetView()},this.changeZoomByScrollRateUnit=F=>{D.changeZoomByScrollRateUnit(F)};var Q=()=>{this.camera=new c.PerspectiveCamera(40,j()/Z(),0,10),this.ambient=new c.AmbientLight(16777215,.2),N.add(this.ambient),this.directionalLight=new c.DirectionalLight(16777215,.8),N.add(this.directionalLight),D=new(u(43)).CameraControls(this.camera,E.domElement,E,this),D.setDirectionalLight(this.directionalLight),D.resetView(),L=new(u(49)).Minimap(this)};Q(),this.loadView=F=>{var $=new y;return $.setFromObject(F),D.setCurrentCameraSettings($),!0},this.setupMultipleViews=(F,$)=>{for(var[J,k]of Object.entries($)){var U=new y;U.setFromObject(k),D.addViewport(J,U)}D.setDefaultViewport(F)},this.getBoundingBox=()=>M.getBoundingBox(!0),this.viewAllWithBoundingBox=F=>{if(F){var $=D.getViewportFromBoundingBox(F,1);D.setCurrentCameraSettings($),D.calculateHeightPerPixelAtZeroDepth(Z()),z.markerUpdateRequired=!0}},this.viewAll=()=>{var F=this.getBoundingBox();this.viewAllWithBoundingBox(F),z.markerUpdateRequired=!0},this.forEachGeometry=F=>{M.forEachGeometry(F,!0)},this.forEachGlyphset=F=>{M.forEachGlyphset(F,!0)},this.forEachPointset=F=>{M.forEachPointset(F,!0)},this.forEachLine=F=>{M.forEachLine(F,!0)},this.findGeometriesWithGroupName=F=>M.findGeometriesWithGroupName(F,!0),this.findPointsetsWithGroupName=F=>M.findPointsetsWithGroupName(F,!0),this.findGlyphsetsWithGroupName=F=>M.findGlyphsetsWithGroupName(F,!0),this.findLinesWithGroupName=F=>M.findLinesWithGroupName(F,!0),this.findObjectsWithGroupName=F=>M.findObjectsWithGroupName(F,!0),this.findObjectsWithAnatomicalId=F=>M.findObjectsWithAnatomicalId(F,!0),this.getBoundingBoxOfZincObjects=F=>{for(var $,J=void 0,k=0;k<F.length;k++)$=F[k].getBoundingBox(),$&&(J?J.union($):J=$);return J},this.vectorToScreenXY=F=>{F.project(this.camera);var $=j(),J=Z(),k=$/2,U=J/2;return F.x=F.x*k+k,F.y=-(F.y*U)+U,F},this.getObjectsScreenXY=F=>{if(F&&0<F.length){var $=this.getBoundingBoxOfZincObjects(F),J=new c.Vector3;return $.getCenter(J),this.vectorToScreenXY(J)}},this.getNamedObjectsScreenXY=F=>{var $=this.findObjectsWithGroupName(F);return this.getObjectsScreenXY($)},this.addZincObject=F=>{F&&(M.addZincObject(F),D&&D.calculateMaxAllowedDistance(this))},this.loadGlyphsetURL=(F,$,J,k)=>{C.loadGlyphsetURL(M,F,$,J,k)},this.loadPointsetURL=(F,$,J,k,U)=>{C.loadPointsetURL(M,F,$,J,k,U)},this.loadLinesURL=(F,$,J,k,U)=>{C.loadLinesURL(M,F,$,J,k,U)},this.loadSTL=(F,$,J)=>{C.loadSTL(M,F,$,J)},this.loadOBJ=(F,$,J)=>{C.loadOBJ(M,F,$,J)},this.loadMetadataURL=(F,$,J)=>{C.loadMetadataURL(M,F,$,J)},this.loadModelsURL=(F,$,J,k,U,oe)=>{C.loadModelsURL(M.urls,$,J,k,U,oe)},this.loadViewURL=F=>{C.loadViewURL(F)},this.loadFromViewURL=(F,$)=>{C.loadFromViewURL(F,$)},this.loadGLTF=(F,$,J,k)=>{C.loadGLTF(M,F,$,J,k)},this.updateDirectionalLight=()=>{D.updateDirectionalLight()},this.addObject=F=>{N.add(F)},this.removeObject=F=>{N.remove(F)},this.getCurrentTime=()=>{if(T!=null)return T.getCurrentTime(B);var F=M.getCurrentTime();return F===-1?0:F},this.setMorphsTime=F=>{T!=null&&T.setMorphTime(F,B),M.setMorphTime(F,!0)},this.isTimeVarying=()=>!!(T&&T.video&&!T.video.error)||M.isTimeVarying(),this.renderGeometries=(F,$,J)=>{var k={};if(k.camera=D,k.displayMarkers=this.displayMarkers,k.markerCluster=z,k.markersList=z.markers,k.ndcToBeUpdated=!1,J&&(k.markerCluster.markerUpdateRequired=!0),!T)C.toBeDownloaded==0?(k.ndcToBeUpdated=D.update($),k.ndcToBeUpdated&&D.calculateHeightPerPixelAtZeroDepth(Z()),M.renderGeometries(F,$,J,D,k,!0)):D.update(0);else if(T.isReadyToPlay()){J?T.video.play():T.video.pause();var U=T.video.currentTime/T.getVideoDuration()*B;C.toBeDownloaded==0?(D.setTime(U),k.ndcToBeUpdated=D.update(0),k.ndcToBeUpdated&&D.calculateHeightPerPixelAtZeroDepth(Z()),M.setMorphTime(U,!0),M.renderGeometries(0,0,J,D,k,!0)):D.update(0)}else myPlayRate=0},this.getThreeJSScene=()=>N,this.setVideoHandler=F=>{T||(T=F)},this.setAdditionalScenesGroup=F=>{N.add(F)};var ee=(F,$,J,k,U,oe,le)=>{var ae=0,he=0;return he=F.includes("top")?le-U-J:F.includes("bottom")?J:Math.floor((le-U)/2),ae=F.includes("left")?$:F.includes("right")?oe-$-k:Math.floor((oe-k)/2),{x:ae,y:he}},ie=F=>{this.displayMinimap===!0&&(F.setScissorTest(!0),F.getSize(te),this.minimapScissor.updateRequired&&(H=ee(this.minimapScissor.align,this.minimapScissor.x_offset,this.minimapScissor.y_offset,this.minimapScissor.width,this.minimapScissor.height,te.x,te.y),this.minimapScissor.updateRequired=!1),F.setScissor(H.x,H.y,this.minimapScissor.width,this.minimapScissor.height),F.setViewport(H.x,H.y,this.minimapScissor.width,this.minimapScissor.height),L.updateCamera(),N.add(L.mask),F.render(N,L.camera),N.remove(L.mask),F.setScissorTest(!1),F.setViewport(0,0,te.x,te.y))};this.render=F=>{this.autoClearFlag&&F.clear(),V&&G?G.render(N,this.camera):(F.render(N,this.camera),ie(F))},this.setInteractiveControlEnable=F=>{F==!0?D.enable():D.disable()},this.getZincCameraControls=()=>D,this.getThreeJSScene=()=>N,this.setDuration=F=>{M.setDuration(F),B=F,D.setPathDuration(F),C.duration=F},this.getDuration=()=>B,this.setStereoEffectEnable=F=>{F!=!0||G||(G=new u(43).StereoEffect(E)),E.setSize(j(),Z()),this.camera.updateProjectionMatrix(),V=F},this.objectIsInScene=F=>M.objectIsInRegion(F,!0),this.alignBoundingBoxToCameraView=(F,$)=>{if(F){var J=new c.Vector3;F.getCenter(J);var k=this.getZincCameraControls().getCurrentViewport(),U=new c.Vector3(k.targetPosition[0],k.targetPosition[1],k.targetPosition[2]),oe=new c.Vector3(k.eyePosition[0],k.eyePosition[1],k.eyePosition[2]),le=new c.Vector3,ae=new c.Vector3;le.subVectors(U,oe).normalize(),ae.subVectors(U,J).normalize();var he=new c.Vector3;he.crossVectors(le,ae);var ve=le.angleTo(ae);0<$?(this.getZincCameraControls().rotateCameraTransition(he,ve,$),this.getZincCameraControls().enableCameraTransition()):this.getZincCameraControls().rotateAboutLookAtpoint(he,ve),z.markerUpdateRequired=!0}},this.translateBoundingBoxToCameraView=(F,$,J)=>{if(F){var k=this.getZincCameraControls().getCurrentViewport(),U=this.getZincCameraControls().getViewportFromBoundingBox(F,$);0<J&&(this.getZincCameraControls().cameraTransition(k,U,J),this.getZincCameraControls().enableCameraTransition()),z.markerUpdateRequired=!0}},this.alignObjectToCameraView=(F,$)=>{if(this.objectIsInScene(F)){var J=F.getBoundingBox();this.alignBoundingBoxToCameraView(J,$)}},this.setCameraTargetToObject=F=>{if(this.objectIsInScene(F)){var $=new c.Vector3,J=F.getBoundingBox(),k=this.getZincCameraControls().getCurrentViewport();J.getCenter($);var U=new c.Vector3(k.targetPosition[0],k.targetPosition[1],k.targetPosition[2]),oe=new c.Vector3(k.eyePosition[0],k.eyePosition[1],k.eyePosition[2]),le=new c.Vector3,ae=new c.Vector3;le.subVectors(oe,U),ae.addVectors($,le),k.eyePosition[0]=ae.x,k.eyePosition[1]=ae.y,k.eyePosition[2]=ae.z,k.targetPosition[0]=$.x,k.targetPosition[1]=$.y,k.targetPosition[2]=$.z,this.getZincCameraControls().setCurrentCameraSettings(k),z.markerUpdateRequired=!0}},this.isStereoEffectEnable=()=>V,this.removeZincObject=F=>{M.removeZincObject(F),D&&D.calculateMaxAllowedDistance(this),z.markerUpdateRequired=!0},this.updatePickableThreeJSObjects=()=>{W.length=0,z.isEnabled&&W.push(z.group),M.getPickableThreeJSObjects(W,!0),this.forcePickableObjectsUpdate=!1},this.getPickableThreeJSObjects=()=>((this.forcePickableObjectsUpdate||M.checkPickableUpdateRequred(!0))&&this.updatePickableThreeJSObjects(),W),this.getNormalisedMinimapCoordinates=(F,$)=>{if(this.displayMinimap){var J=new c.Vector2;F.getSize(J);var k=J.y-$.clientY;if(H.x+this.minimapScissor.width>$.clientX&&$.clientX>H.x&&H.y+this.minimapScissor.height>k&&k>H.y){var U=2*(($.clientX-H.x)/this.minimapScissor.width)-1,oe=2*((k-H.y)/this.minimapScissor.height)-1;return{x:U,y:oe}}}},this.getMinimapDiffFromNormalised=(F,$)=>L?L.getDiffFromNormalised(F,$):void 0,this.isWebGL2=()=>E.isWebGL2(),this.clearAll=()=>{z.clear(),M.clear(!0),this.clearZincObjectAddedCallbacks(),this.clearZincObjectRemovedCallbacks(),C.toBeDwonloaded=0,D&&D.calculateMaxAllowedDistance(this),z.markerUpdateRequired=!0},this.addMetadataTimeStamp=(F,$)=>{K.TimeStamps[F]=ne($)},this.getMetadataTag=F=>K[F],this.getMetadata=()=>K,this.setMetadataTag=(F,$)=>{K[F]=$},this.removeMetadataTag=F=>{delete K[F]},this.resetMetadata=()=>{K=g()},this.resetDuration=()=>{this.setDuration(w)};var q=F=>[...F.years?["".concat(F.years,"years")]:[],...F.months?["".concat(F.months,"months")]:[],...F.weeks?["".concat(F.weeks,"weeks")]:[],...F.days?["".concat(F.days,"days")]:[],...F.hours?["".concat(F.hours,"hours")]:[],...F.mins?["".concat(F.mins,"mins")]:[],...F.secs?["".concat(F.secs,"secs")]:[]].join(" "),ne=F=>F.years?31536e6*F.years:0+F.months?2592e6*F.months:0+F.weeks?6048e5*F.weeks:0+F.days?864e5*F.days:0+F.hours?36e5*F.hours:0+F.mins?6e4*F.mins:0+F.secs?1e3*F.secs:0;this.setDurationFromObject=F=>{var $=q(F),J=ne(F);this.setMetadataTag("Duration",$),this.setDuration(J)},this.setOriginalDurationFromObject=F=>{var $=q(F);this.setMetadataTag("OriginalDuration",$)},this.exportGLTF=F=>{var $=new m(this);return $.exportGLTF(F)},this.getRootRegion=()=>M,this.createLines=(F,$,J,k)=>{var U=M.findChildFromPath(F);return U===void 0&&(U=M.createChildFromPath(F)),U.createLines($,J,k)},this.createPoints=(F,$,J,k,U)=>{var oe=M.findChildFromPath(F);return oe===void 0&&(oe=M.createChildFromPath(F)),oe.createPoints($,J,k,U)},this.addZincObjectAddedCallbacks=F=>(++R,A[R]=F,R),this.addZincObjectRemovedCallbacks=F=>(++O,I[O]=F,O),this.removeZincObjectAddedCallbacks=F=>{F in R&&delete A[F]},this.removeZincObjectRemovedCallbacks=F=>{F in O&&delete I[F]},this.clearZincObjectAddedCallbacks=()=>{A={},R=0},this.clearZincObjectRemovedCallbacks=()=>{I={},O=0},this.triggerObjectAddedCallback=F=>{for(var $ in A)A.hasOwnProperty($)&&A[$](F)},this.triggerObjectRemovedCallback=F=>{for(var $ in I)I.hasOwnProperty($)&&I[$](F)},this.addTemporaryPoints=(F,$)=>{var J=p(F.length,F),k=new c.PointsMaterial({alphaTest:.5,size:15,color:$,sizeAttenuation:!1}),U=d();k.map=U;var oe=new(u(23)).Points(J,k);return P.add(oe),oe},this.addTemporaryLines=(F,$)=>{var J=p(F.length,F),k=new c.LineBasicMaterial({color:$}),U=new(u(12)).LineSegments(J,k);return P.add(U),U},this.removeTemporaryPrimitive=F=>{P.remove(F),F.geometry.dispose(),F.material.dispose()},this.clearTemporaryPrimitives=()=>{var F=0,$=P.children;return $.forEach(J=>{J.geometry.dispose(),J.material.dispose(),F++}),P.clear(),F},this.addBoundingBoxPrimitive=function(F,$,J,k,U){var oe=5<arguments.length&&arguments[5]!==void 0?arguments[5]:void 0,le=M.findChildFromPath(F);le===void 0&&(le=M.createChildFromPath(F));var ae=oe||S.getBoundingBox(),he=new c.Vector3().subVectors(ae.max,ae.min),ve=new c.BoxGeometry(he.x,he.y,he.z),we=le.createGeometryFromThreeJSGeometry($,ve,J,k,U,1e4);return he.addVectors(ae.min,ae.max).multiplyScalar(.5),we.setPosition(he.x,he.y,he.z),we},this.addSlicesPrimitive=function(F,$,J,k,U){var oe=5<arguments.length&&arguments[5]!==void 0?arguments[5]:void 0;if($&&3<=$.length&&J&&3<=J.length){var le=M.findChildFromPath(F);le===void 0&&(le=M.createChildFromPath(F));var ae=oe||S.getBoundingBox(),he=new c.Vector3().subVectors(ae.max,ae.min),ve=[],we=0;return["x","y","z"].forEach(ce=>{var ge;switch(ce){case"x":ge=new c.PlaneGeometry(he.z,he.y),ge.rotateY(Math.PI/2);break;case"y":ge=new c.PlaneGeometry(he.x,he.z),ge.rotateX(Math.PI/2);break;case"z":ge=new c.PlaneGeometry(he.x,he.y);break}var re=le.createGeometryFromThreeJSGeometry($[we],ge,J[we],k,U,10001);ve.push(re),we++}),he.addVectors(ae.min,ae.max).multiplyScalar(.5),ve.forEach(ce=>{ce.setPosition(he.x,he.y,he.z)}),ve}},this.enableMarkerCluster=F=>{F?(z.markerUpdateRequired=!0,z.enable()):(z.markerUpdateRequired=!1,z.disable()),this.forcePickableObjectsUpdate=!0}}},(o,l,u)=>{function c(E,S){var x=Object.keys(E);if(Object.getOwnPropertySymbols){var T=Object.getOwnPropertySymbols(E);S&&(T=T.filter(function(C){return Object.getOwnPropertyDescriptor(E,C).enumerable})),x.push.apply(x,T)}return x}function f(E){for(var S,x=1;x<arguments.length;x++)S=arguments[x]==null?{}:arguments[x],x%2?c(Object(S),!0).forEach(function(T){h(E,T,S[T])}):Object.getOwnPropertyDescriptors?Object.defineProperties(E,Object.getOwnPropertyDescriptors(S)):c(Object(S)).forEach(function(T){Object.defineProperty(E,T,Object.getOwnPropertyDescriptor(S,T))});return E}function h(E,S,x){return S=m(S),S in E?Object.defineProperty(E,S,{value:x,enumerable:!0,configurable:!0,writable:!0}):E[S]=x,E}function m(E){var S=y(E,"string");return typeof S=="symbol"?S:S+""}function y(E,S){if(typeof E!="object"||!E)return E;var x=E[Symbol.toPrimitive];if(x!==void 0){var T=x.call(E,S||"default");if(typeof T!="object")return T;throw new TypeError("@@toPrimitive must return a primitive value.")}return(S==="string"?String:Number)(E)}var p=u(4),d=new Image(128,128);d.src=u(34);var b=new p.Texture;b.image=d,b.needsUpdate=!0;var v=[.02,.03,1],g=new p.SpriteMaterial({map:b,alphaTest:.5,transparent:!0,depthTest:!1,depthWrite:!1,sizeAttenuation:!1}),w=u(5).createNewSpriteText,_=function(E){u(10).ZincObject.call(this),this.texture=b;var S=void 0;this.morph=new p.Group,this.group=this.morph,this.isMarkerCluster=!0;var x=!0,T=[];this.markers={};var C=new p.Vector2,L=new p.Vector2,A=Date.now();this.setSpriteSize=M=>{S.scale.set(.015,.02,1),S.scale.multiplyScalar(M)},this.clear=()=>{this.group.clear(),this.markers={}},this.dispose=()=>{this.clear(),this.morph&&this.morph.clear()};var R=M=>{var P=new p.Group,B=new p.Sprite(g);return B.clusterIndex=M,B.center.set(.5,0),B.position.set(0,0,0),B.renderOrder=1e4,B.scale.set(v[0],v[1],v[2]),B.userData=this,P.add(B),this.group.add(P),{group:P,marker:B,label:void 0,number:0,min:[0,0,0],max:[1,1,1]}},I=(M,P,B)=>{M.group.visible=!0,M.group.position.set(P.coords[0],P.coords[1],P.coords[2]),(M.label===void 0||B!==M.number)&&(M.label&&(M.group.remove(M.label),M.label.material.map.dispose(),M.label.material.dispose()),M.label=w(B,.012,"black","Asap",50,500),M.number=B,M.group.add(M.label)),M.min=P.min,M.max=P.max},O=M=>{var P=0;for(M.forEach(B=>{var D=B.members.length,V=0;D===1?B.members[0].setVisibility(!0):(B.members.forEach(G=>{V+=G.getNumber(),G.setVisibility(!1)}),!T[P]&&T.push(R(P)),I(T[P],B,V),P++)}),P;P<T.length;P++)T[P].group.visible=!1},N=(M,P)=>{var B=!0,D={members:[],coords:[0,0,0],min:[0,0,0],max:[1,1,1]},V=0;for(var G in M)B?(C.set(M[G].ndc.x,M[G].ndc.y),this._b1.setFromPoints([M[G].morph.position]),B=!1,D.members.push(M[G]),D.coords=[M[G].morph.position.x,M[G].morph.position.y,M[G].morph.position.z],P.push(D),delete M[G]):(L.set(M[G].ndc.x,M[G].ndc.y),V=C.distanceTo(L),.1>V&&(D.members.push(M[G]),this._b1.expandByPoint(M[G].morph.position),delete M[G]));D.min=[this._b1.min.x,this._b1.min.y,this._b1.min.z],D.max=[this._b1.max.x,this._b1.max.y,this._b1.max.z],B!=!0&&N(M,P)};this.calculate=()=>{if(x){var M=Date.now();if(500<M-A){var P=[];N(f({},this.markers),P),O(P),A=Date.now(),this.markerUpdateRequired=!1}}},this.isEnabled=()=>x,this.enable=()=>{x=!0,this.morph.visible=!0},this.disable=()=>{for(var M in x=!1,this.morph.visible=!1,this.markers){var P;(P=this.markers[M])!==null&&P!==void 0&&P.isMarker&&this.markers[M].isEnabled()&&this.markers[M].setVisibility(!0)}},this.zoomToCluster=M=>!!(M!==void 0&&-1<M&&(this._v1.set(...T[M].min),this._v2.set(...T[M].max),Math.abs(0<this._v1.distanceTo(this._v2))))&&(this._b1.set(this._v1,this._v2),E.translateBoundingBoxToCameraView(this._b1,3,300),this.markerUpdateRequired=!0,!0),this.clusterIsVisible=M=>{if(M!==void 0&&-1<M&&T[M]){var P;return(P=T[M].group)===null||P===void 0?void 0:P.visible}return!1}};_.prototype=Object.create(u(10).ZincObject.prototype),l.MarkerCluster=_},o=>{o.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIiA/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZlcnNpb249IjEuMSIgd2lkdGg9IjM2NSIgaGVpZ2h0PSI1NjAiIHZpZXdCb3g9IjAgMCAzNjUgNTYwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPGRlc2M+Q3JlYXRlZCB3aXRoIEZhYnJpYy5qcyA1LjIuNDwvZGVzYz4KPGRlZnM+CjwvZGVmcz4KPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idHJhbnNwYXJlbnQiPjwvcmVjdD4KPGcgdHJhbnNmb3JtPSJtYXRyaXgoMCAwIDAgMCAwIDApIiBpZD0iODA4ZWQyODMtMjUyNC00NDBmLTg4YWUtM2JkYjQ3YmI1NzQ5IiAgPgo8L2c+CjxnIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIDEgMTgyLjUgMjgwKSIgaWQ9ImRiMzA0MTNkLTViZmYtNGI5OC1hYjU5LTQ2NDQ5N2VlMTk5ZSIgID4KPHJlY3Qgc3R5bGU9InN0cm9rZTogbm9uZTsgc3Ryb2tlLXdpZHRoOiAxOyBzdHJva2UtZGFzaGFycmF5OiBub25lOyBzdHJva2UtbGluZWNhcDogYnV0dDsgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7IHN0cm9rZS1saW5lam9pbjogbWl0ZXI7IHN0cm9rZS1taXRlcmxpbWl0OiA0OyBmaWxsOiByZ2IoMjU1LDI1NSwyNTUpOyBmaWxsLXJ1bGU6IG5vbnplcm87IG9wYWNpdHk6IDE7IHZpc2liaWxpdHk6IGhpZGRlbjsiIHZlY3Rvci1lZmZlY3Q9Im5vbi1zY2FsaW5nLXN0cm9rZSIgIHg9Ii0xODIuNSIgeT0iLTI4MCIgcng9IjAiIHJ5PSIwIiB3aWR0aD0iMzY1IiBoZWlnaHQ9IjU2MCIgLz4KPC9nPgo8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwIDAgMCAwIDAgOTcuNSkiICA+CjxnIHN0eWxlPSIiICAgPgo8L2c+CjwvZz4KPGcgdHJhbnNmb3JtPSJtYXRyaXgoMCAwIDAgMCAwIDk3LjUpIiAgPgo8ZyBzdHlsZT0iIiAgID4KPC9nPgo8L2c+CjxnIHRyYW5zZm9ybT0ibWF0cml4KDAuOTkgMCAwIDAuOTkgMTgyLjUgMjgwKSIgID4KPGcgc3R5bGU9IiIgdmVjdG9yLWVmZmVjdD0ibm9uLXNjYWxpbmctc3Ryb2tlIiAgID4KCQk8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDAgMCkiICA+CjxyZWN0IHN0eWxlPSJzdHJva2U6IG5vbmU7IHN0cm9rZS13aWR0aDogMTsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1kYXNob2Zmc2V0OiAwOyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogNDsgZmlsbDogcmdiKDI1NSwyNTUsMjU1KTsgZmlsbC1ydWxlOiBub256ZXJvOyBvcGFjaXR5OiAxOyB2aXNpYmlsaXR5OiBoaWRkZW47IiB2ZWN0b3ItZWZmZWN0PSJub24tc2NhbGluZy1zdHJva2UiICB4PSItNTQwIiB5PSItNTQwIiByeD0iMCIgcnk9IjAiIHdpZHRoPSIxMDgwIiBoZWlnaHQ9IjEwODAiIC8+CjwvZz4KCQk8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDAgMCkiICA+CjxwYXRoIHN0eWxlPSJzdHJva2U6IHJnYigwLDAsMCk7IHN0cm9rZS13aWR0aDogMDsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1kYXNob2Zmc2V0OiAwOyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogNDsgZmlsbDogcmdiKDI1NSwxNjUsMCk7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHZlY3Rvci1lZmZlY3Q9Im5vbi1zY2FsaW5nLXN0cm9rZSIgIHRyYW5zZm9ybT0iIHRyYW5zbGF0ZSgtMTgyLjksIC0yNzkuODUpIiBkPSJNIDE4Mi45IDU1MS43IEMgMTgyLjkgNTUxLjgwMDAwMDAwMDAwMDEgMTgzLjEgNTUyIDE4My4xIDU1MiBDIDE4My4xIDU1MiAzNTguMyAyODMgMzU4LjMgMTk0LjYgQyAzNTguMyA2NC41IDI2OS41IDcuOTAwMDAwMDAwMDAwMDA2IDE4Mi45IDcuNjk5OTk5OTk5OTk5OTg5IEMgOTYuMyA3LjkgNy41IDY0LjUgNy41IDE5NC42IEMgNy41IDI4MyAxODIuOCA1NTIgMTgyLjggNTUyIEMgMTgyLjggNTUyIDE4Mi45IDU1MS43IDE4Mi45IDU1MS43IHogTSAxMjIuMiAxODcuMiBDIDEyMi4yIDE1My42IDE0OS40IDEyNi4zOTk5OTk5OTk5OTk5OSAxODMgMTI2LjM5OTk5OTk5OTk5OTk5IEMgMjE2LjYgMTI2LjM5OTk5OTk5OTk5OTk5IDI0My44IDE1My42IDI0My44IDE4Ny4yIEMgMjQzLjggMjIwLjc5OTk5OTk5OTk5OTk4IDIxNi41IDI0OCAxODIuOSAyNDggQyAxNDkuNCAyNDggMTIyLjIgMjIwLjggMTIyLjIgMTg3LjIgeiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAvPgo8L2c+CgkJPGcgdHJhbnNmb3JtPSJtYXRyaXgoMy44MiAwIDAgMy44MiAwIC0xMDAuNzcpIiAgPgo8Y2lyY2xlIHN0eWxlPSJzdHJva2U6IHJnYigwLDAsMCk7IHN0cm9rZS13aWR0aDogMDsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1kYXNob2Zmc2V0OiAwOyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogNDsgZmlsbDogcmdiKDI1NSwyNTUsMjU1KTsgZmlsbC1ydWxlOiBub256ZXJvOyBvcGFjaXR5OiAxOyIgdmVjdG9yLWVmZmVjdD0ibm9uLXNjYWxpbmctc3Ryb2tlIiAgY3g9IjAiIGN5PSIwIiByPSIzNSIgLz4KPC9nPgo8L2c+CjwvZz4KPC9zdmc+"},(o,l,u)=>{var c=u(4),f=u(5).resolveURL,h=u(5).createNewURL,m=u(36).STLLoader,y=u(37).OBJLoader,p=u(38).PrimitivesLoader;l.SceneLoader=function(d){var b=d;this.toBeDownloaded=0,this.progressMap={};var v=!1,g=!1,w=new p;this.getDownloadProgress=()=>{var W=0,z=0,j=!1;for(var Z in this.progressMap){var Q=this.progressMap[Z];W+=Q[1],z+=Q[0],Q[1]==0&&(j=!0)}return j&&(W=0),[W,z,g]},this.onProgress=W=>z=>{this.progressMap[W]=[z.loaded,z.total]},this.onError=W=>z=>{--this.toBeDownloaded,g=!0,console.error("There is an issue with one of the external resource: ".concat(z==null?void 0:z.responseURL,".")),W&&W()};var _=(W,z)=>{var j=z.Default;if(z.Inline)b.setupMultipleViews(j,z.Entries);else{var Z=[],Q=function(ne){W&&(newURL=h(ie,W),Z.push(new Promise((F,$)=>{fetch(newURL).then(J=>J.json()).then(J=>F({key:ne,data:J})).catch(J=>$(J))})))};for(var[ee,ie]of Object.entries(z.Entries))Q(ee);Promise.all(Z).then(q=>{var ne={};q.forEach($=>{ne[$.key]=$.data}),b.setupMultipleViews(j,ne);var F=b.getZincCameraControls();F&&F.setCurrentViewport(j),v=!0})}};this.loadViewURL=(W,z)=>{this.toBeDownloaded+=1;var j=new XMLHttpRequest;j.onreadystatechange=()=>{if(j.readyState==4)if(j.status==200){var Q=JSON.parse(j.responseText);b.setupMultipleViews("default",{default:Q}),b.resetView(),v=!0,--this.toBeDownloaded,z!=null&&typeof z=="function"&&z()}else this.onError()};var Z=f(W);j.open("GET",Z,!0),j.send()},this.loadModelsURL=(W,z,j,Z,Q,ee,ie)=>{var q=z.length;this.toBeDownloaded+=q;for(var ne=0;ne<q;ne++){var F=z[ne],$=u(0).defaultMaterialColor,J=u(0).defaultOpacity;j!=null&&j[ne]!=null&&($=!!j[ne]),Z!=null&&Z[ne]!=null&&(J=Z[ne]);var k=0;Q!=null&&Q[ne]!=null&&(k=!!Q[ne]);var U=0;ee!=null&&ee[ne]!=null&&(U=!!ee[ne]),w.load(f(F),O(W,$,J,k,U,void 0,void 0,void 0,void 0,ie),this.onProgress(F),this.onError(ie))}},this.loadFromViewURL=(W,z,j)=>{var Z=new XMLHttpRequest;Z.onreadystatechange=()=>{if(Z.readyState==4&&Z.status==200){var ee=JSON.parse(Z.responseText);b.loadView(ee);for(var ie,q=[],ne=z+"_",F=0;F<ee.numberOfResources;F++)ie=ne+(F+1)+".json",q.push(ie);this.loadModelsURL(W,q,ee.colour,ee.opacity,ee.timeEnabled,ee.morphColour,j)}};var Q=f(z+"_view.json");Z.open("GET",Q,!0),Z.send()};var E=(W,z,j,Z,Q,ee,ie,q)=>(ne,F)=>{var $=new(u(24)).Lines,J=void 0;F&&F[0]&&(J=new c.LineBasicMaterial({color:F[0].color.clone()}),1>F[0].opacity&&(J.transparent=!0),J.opacity=F[0].opacity,J.morphTargets=z,J.vertexColors=F[0].vertexColors);var k={localTimeEnabled:z,localMorphColour:j};if($&&($.createLineSegment(ne,J,k),$.setName(Z),$.anatomicalId=Q,$.setRenderOrder(ee),W.addZincObject($),$.setDuration(b.getDuration()),console.log(ie),ie&&ie.levels))for(var[U,oe]of Object.entries(ie.levels))$.addLOD(w,U,oe.URL,oe.Index,ie.preload);--this.toBeDownloaded,ne.dispose(),q!=null&&typeof q=="function"&&q($)};this.loadLinesURL=(W,z,j,Z,Q,ee,ie)=>{var q=0;this.toBeDownloaded+=1;var ne=!!(ie&&ie.isInline)&&ie.isInline,F=ie&&ie.anatomicalId?ie.anatomicalId:void 0,$=ie&&ie.renderOrder?ie.renderOrder:void 0;j!=null&&(q=!!j);var J=0;if(Z!=null&&(J=!!Z),ne){var k=w.parse(z);E(W,q,J,Q,F,$,ie.lod,ee)(k.geometry,k.materials)}else w.load(z,E(W,q,J,Q,F,$,ie.lod,ee),this.onProgress(z),this.onError(ee),ie.loaderOptions)};var S=(W,z,j,Z,Q,ee)=>{var ie=ee&&ee.isInline?ee.isInline:void 0,q=ee&&ee.anatomicalId?ee.anatomicalId:void 0,ne=ee&&ee.displayLabels?ee.displayLabels:void 0,F=ee&&ee.renderOrder?ee.renderOrder:void 0,$=new(u(18)).Glyphset;$.setDuration(b.getDuration()),$.groupName=Z;var J=()=>{--this.toBeDownloaded,Q!=null&&typeof Q=="function"&&Q($)};++this.toBeDownloaded,ie?$.load(z,j,J,ie,ne):$.load(z,f(j),J,ie,ne),$.anatomicalId=q,$.setRenderOrder(F),W.addZincObject($)},x=(W,z,j,Z,Q,ee)=>()=>{if(z.readyState==4&&z.status==200){var ie=JSON.parse(z.responseText);S(W,ie,j,Z,Q,ee)}},T=(W,z,j,Z,Q,ee,ie)=>(q,ne)=>{var F=new(u(22)).Pointset,$=new c.PointsMaterial({alphaTest:.5,size:10,sizeAttenuation:!1});ne&&ne[0]&&(1>ne[0].opacity&&($.transparent=!0),$.opacity=ne[0].opacity,$.color=ne[0].color,$.morphTargets=z,$.vertexColors=ne[0].vertexColors);var J={};J.localTimeEnabled=z,J.localMorphColour=j,F&&(F.createMesh(q,$,J),F.setName(Z),F.anatomicalId=Q,W.addZincObject(F),F.setDuration(b.getDuration()),F.setRenderOrder(ee)),q.dispose(),--this.toBeDownloaded,ie!=null&&typeof ie=="function"&&ie(F)};this.loadSTL=(W,z,j,Z)=>{this.toBeDownloaded+=1;var Q=u(0).defaultMaterialColor,ee=u(0).defaultOpacity,ie=new m;ie.crossOrigin="Anonymous",ie.load(f(z),O(W,Q,ee,!1,!1,j,void 0,void 0,void 0,Z))},this.loadOBJ=(W,z,j,Z)=>{this.toBeDownloaded+=1;var Q=u(0).defaultMaterialColor,ee=u(0).defaultOpacity,ie=new y;ie.crossOrigin="Anonymous",ie.load(f(z),O(W,Q,ee,!1,!1,j,void 0,void 0,void 0,Z))};var C=(W,z,j,Z,Q,ee,ie)=>{this.toBeDownloaded+=1;var q=u(0).defaultMaterialColor,ne=u(0).defaultOpacity,F=0,$=!!(ie&&ie.isInline)&&ie.isInline,J=ie&&ie.fileFormat?ie.fileFormat:void 0,k=ie&&ie.anatomicalId?ie.anatomicalId:void 0,U=ie&&ie.renderOrder?ie.renderOrder:void 0;j!=null&&(F=!!j);var oe=0;Z!=null&&(oe=!!Z);var le=w;if(J!==void 0){if(J=="STL")le=new m;else if(J=="OBJ")return le=new y,le.crossOrigin="Anonymous",void le.load(z,objloader(W,q,ne,F,oe,Q,k,ee),this.onProgress(z),this.onError,ie.loaderOptions)}if($){var ae=w.parse(z);O(W,q,ne,F,oe,Q,k,U,ie,ee)(ae.geometry,ae.materials)}else le.crossOrigin="Anonymous",w.load(z,O(W,q,ne,F,oe,Q,k,U,ie,ee),this.onProgress(z),this.onError(ee),ie.loaderOptions)},L=function(z,j,Z){var Q=0;return ee=>{if(++Q,ee&&j!=null&&typeof j=="function"){j(ee);var ie=b.getZincCameraControls();ie&&ie.calculateMaxAllowedDistance(b)}Q==z&&(v==!1&&b.viewAll(),Z!=null&&typeof Z=="function"&&Z())}};this.loadPointsetURL=(W,z,j,Z,Q,ee,ie)=>{var q=0;this.toBeDownloaded+=1,j!=null&&(q=!!j);var ne=0;Z!=null&&(ne=!!Z);var F=!!(ie&&ie.isInline)&&ie.isInline,$=ie&&ie.anatomicalId?ie.anatomicalId:void 0,J=ie&&ie.renderOrder?ie.renderOrder:void 0;if(F){var k=w.parse(z);T(W,q,ne,Q,$,J,ee)(k.geometry,k.materials)}else w.load(z,T(W,q,ne,Q,$,J,ee),this.onProgress(z),this.onError(ee),ie.loaderOptions)};var A=(W,z,j,Z,Q,ee)=>{var ie=ee&&ee.isInline?ee.isInline:void 0,q=ee&&ee.anatomicalId?ee.anatomicalId:void 0,ne=ee&&ee.renderOrder?ee.renderOrder:void 0,F=void 0;if(j){if(z&&j.images&&j.images.source)for(var $,J=j.images.source,k=0;k<J.length;k++)$=h(J[k],z),j.images.source[k]=$;if(j.type==="slides"&&(F=new(u(27)).TextureSlides),F){F.groupName=Z;var U=()=>{--this.toBeDownloaded,Q!=null&&typeof Q=="function"&&Q(F)};++this.toBeDownloaded,F.load(j,U,ie),F.anatomicalId=q,F.setRenderOrder(ne),W.addZincObject(F)}}},R=(W,z,j,Z,Q)=>()=>{if(z.readyState==4&&z.status==200){var ee=JSON.parse(z.responseText);A(W,z.responseURL,ee,j,Z,Q)}};this.loadTextureURL=(W,z,j,Z,Q)=>{var ee=!!(Q&&Q.isInline)&&Q.isInline;if(ee)A(W,void 0,z,j,Z,Q);else{var ie=new XMLHttpRequest;ie.onreadystatechange=R(W,ie,j,Z,Q),ie.open("GET",f(z),!0),ie.send()}},this.loadGlyphsetURL=(W,z,j,Z,Q,ee)=>{var ie=!!(ee&&ee.isInline)&&ee.isInline;if(ie)S(W,z,j,Z,Q,ee);else{var q=new XMLHttpRequest;q.onreadystatechange=x(W,q,j,Z,Q,ee),q.open("GET",f(z),!0),q.send()}};var I=(W,z,j,Z,Q,ee,ie,q,ne)=>{var F={colour:j,opacity:Z,localTimeEnabled:Q,localMorphColour:ee},$=new(u(3)).Geometry;return $.createMesh(z,q,F),$.getMorph()?($.setName(ne),W&&W.addZincObject($),$.setDuration(b.getDuration()),$.videoHandler&&b.setVideoHandler($.videoHandler),$):void 0},O=(W,z,j,Z,Q,ee,ie,q,ne,F)=>($,J)=>{var k;J&&J[0]&&(k=J[0]);var U=I(W,$,z,j,Z,Q,void 0,k,ee);if(U.anatomicalId=ie,U.setRenderOrder(q),ne.lod&&ne.lod.levels)for(var[oe,le]of Object.entries(ne.lod.levels))U.addLOD(w,oe,le.URL,le.Index,ne.lod.preload);--this.toBeDownloaded,$.dispose(),F!=null&&typeof F=="function"&&F(U)},N=W=>{var z=/P(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)W)?(?:(\d+)D)?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+)S)?)?$/,[,j,Z,Q,ee,ie,q,ne]=W.match(z);return{years:j,months:Z,weeks:Q,days:ee,hours:ie,mins:q,secs:ne}};this.loadSettings=W=>{if(W){if(W.Duration){var z=N(W.Duration);b.setDurationFromObject(z)}if(W.OriginalDuration){var j=N(W.OriginalDuration);b.setOriginalDurationFromObject(j)}if(W.TimeStamps)for(var Z in W.TimeStamps){var Q=N(W.TimeStamps[Z]);b.addMetadataTimeStamp(Z,Q)}}};var M=(W,z,j,Z,Q)=>{if(j){var ee=void 0,ie=!1;j.URL?(ee=j.URL,z&&(ee=h(ee,z))):j.Inline&&(ee=j.Inline.URL,ie=!0);var q={};if(j.LOD&&j.LOD.Levels){q.preload=!!j.LOD.Preload,q.levels={};for(var[ne,F]of Object.entries(j.LOD.Levels))q.levels[ne]={},q.levels[ne].URL=h(F.URL,z),q.levels[ne].Index=F.Index}var $=j.GroupName;($===void 0||$==="")&&($="_Unnamed");var J={loaderOptions:{index:j.Index},isInline:ie,fileFormat:j.FileFormat,anatomicalId:j.AnatomicalId,compression:j.compression,lod:q,renderOrder:Z};switch(j.Type){case"Surfaces":C(W,ee,j.MorphVertices,j.MorphColours,$,Q,J);break;case"Glyph":var k;ie?k=j.Inline.GlyphGeometriesURL:(k=j.GlyphGeometriesURL,k=h(j.GlyphGeometriesURL,z)),j.DisplayLabels&&(J.displayLabels=!0),this.loadGlyphsetURL(W,ee,k,$,Q,J);break;case"Points":this.loadPointsetURL(W,ee,j.MorphVertices,j.MorphColours,$,Q,J);break;case"Lines":this.loadLinesURL(W,ee,j.MorphVertices,j.MorphColours,$,Q,J);break;case"Texture":this.loadTextureURL(W,ee,$,Q,J);break}}},P=(W,z,j)=>{if(z){var Z=void 0,Q=!1;switch(z.URL?(Z=z.URL,W&&(Z=h(z.URL,W))):z.Inline&&(Z=z.Inline.URL,Q=!0),z.Type){case"View":Q?(b.setupMultipleViews("default",{default:Z}),v=!0,j!=null&&typeof j=="function"&&j()):this.loadViewURL(Z,j);break;case"Settings":this.loadSettings(z);break}}};this.loadGLTF=(W,z,j,Z,Q)=>{var ee=new(u(39)).GLTFToZincJSLoader;ee.load(b,W,z,j,Z,Q)};var B=(W,z,j,Z)=>{if(j.Primitives&&j.Primitives.forEach(q=>{var ne=1;q.Order&&(ne=q.Order),M(W,z,q,ne,Z)}),j.Transformation&&W.setTransformation(j.Transformation),j.Children)for(var[Q,ee]of Object.entries(j.Children)){var ie=W.findOrCreateChildFromPath(Q);ie&&B(ie,z,ee,Z)}},D=(W,z)=>{if(Array.isArray(W)){for(var j=0,Z=0;Z<W.length;Z++)W[Z].Type&&(z&&W[Z].Type==="View"||W[Z].Type==="Surfaces"||W[Z].Type==="Glyph"||W[Z].Type==="Points"||W[Z].Type==="Lines"||W[Z].Type==="Texture")&&j++;return j}return 0},V=W=>{var z=W.Primitives?D(W.Primitives,!1):0;return W.Children&&Object.values(W.Children).forEach(j=>{z+=V(j)}),z},G=W=>Array.isArray(W)?D(W,!0):typeof W=="object"&&W!==null&&W.Version==="2.0"?V(W.Regions):void 0,H=(W,z,j,Z,Q)=>{var ee=W;j.RegionPath&&j.RegionPath!==""&&(ee=W.findOrCreateChildFromPath(j.RegionPath)),M(ee,z,j,2*Z,Q)},K=(W,z,j,Z,Q)=>{for(var ee=G(z),ie=new L(ee,Z,Q),q=0;q<z.length;q++)P(j,z[q],ie);for(var ne=0;ne<z.length;ne++)H(W,j,z[ne],ne,ie)},te=(W,z,j,Z,Q)=>{var ee=G(z),ie=new L(ee,Z,Q);z.Settings&&this.loadSettings(z.Settings),z.Views&&_(j,z.Views),z.Regions&&B(W,j,z.Regions,ie)};this.loadMetadataURL=(W,z,j,Z)=>{var Q=new XMLHttpRequest,ee=f(z);Q.onreadystatechange=()=>{if(Q.readyState==4&&Q.status==200){b.resetMetadata(),b.resetDuration(),v=!1;var ie=Q.responseURL;ie===void 0&&(ie=new URL(ee).href);var q=JSON.parse(Q.responseText);Array.isArray(q)?K(W,q,ie,j,Z):typeof q=="object"&&q!==null&&q.Version=="2.0"&&te(W,q,ie,j,Z)}},Q.open("GET",ee,!0),Q.send()}}},(o,l,u)=>{u.r(l),u.d(l,{STLLoader:()=>f});var c=u(4);class f extends c.Loader{constructor(m){super(m)}load(m,y,p,d){var b=this,v=new c.FileLoader(this.manager);v.setPath(this.path),v.setResponseType("arraybuffer"),v.setRequestHeader(this.requestHeader),v.setWithCredentials(this.withCredentials),v.load(m,function(g){try{y(b.parse(g))}catch(w){d?d(w):console.error(w),b.manager.itemError(m)}},p,d)}parse(m){function y(d,b,v){for(var g=0,w=d.length;g<w;g++)if(d[g]!==b.getUint8(v+g,!1))return!1;return!0}var p=function(d){if(typeof d=="string"){for(var b=new Uint8Array(d.length),v=0;v<d.length;v++)b[v]=255&d.charCodeAt(v);return b.buffer||b}return d}(m);return function(d){var b=new DataView(d),v=b.getUint32(80,!0);if(84+v*50===b.byteLength)return!0;for(var g=[115,111,108,105,100],w=0;5>w;w++)if(y(g,b,w))return!1;return!0}(p)?function(d){for(var b,v,g,w,_,E,S,x,T=new DataView(d),C=T.getUint32(80,!0),L=!1,A=0;A<70;A++)T.getUint32(A,!1)==1129270351&&T.getUint8(A+4)==82&&T.getUint8(A+5)==61&&(L=!0,w=new Float32Array(3*(3*C)),_=T.getUint8(A+6)/255,E=T.getUint8(A+7)/255,S=T.getUint8(A+8)/255,x=T.getUint8(A+9)/255);for(var R=new c.BufferGeometry,I=new Float32Array(3*(3*C)),O=new Float32Array(3*(3*C)),N=0;N<C;N++){var M=84+N*50,P=T.getFloat32(M,!0),B=T.getFloat32(M+4,!0),D=T.getFloat32(M+8,!0);if(L){var V=T.getUint16(M+48,!0);32768&V?(b=_,v=E,g=S):(b=(31&V)/31,v=(31&V>>5)/31,g=(31&V>>10)/31)}for(var G=1;3>=G;G++){var H=M+12*G,K=3*(3*N)+3*(G-1);I[K]=T.getFloat32(H,!0),I[K+1]=T.getFloat32(H+4,!0),I[K+2]=T.getFloat32(H+8,!0),O[K]=P,O[K+1]=B,O[K+2]=D,L&&(w[K]=b,w[K+1]=v,w[K+2]=g)}}return R.setAttribute("position",new c.BufferAttribute(I,3)),R.setAttribute("normal",new c.BufferAttribute(O,3)),L&&(R.setAttribute("color",new c.BufferAttribute(w,3)),R.hasColors=!0,R.alpha=x),R}(p):function(d){for(var b,v=new c.BufferGeometry,g=/solid([\s\S]*?)endsolid/g,w=/facet([\s\S]*?)endfacet/g,_=0,E=/[\s]+([+-]?(?:\d*)(?:\.\d*)?(?:[eE][+-]?\d+)?)/.source,S=new RegExp("vertex"+E+E+E,"g"),x=new RegExp("normal"+E+E+E,"g"),T=[],C=[],L=new c.Vector3,A=0,R=0,I=0;(b=g.exec(d))!==null;){R=I;for(var O=b[0];(b=w.exec(O))!==null;){for(var N=0,M=0,P=b[0];(b=x.exec(P))!==null;)L.x=parseFloat(b[1]),L.y=parseFloat(b[2]),L.z=parseFloat(b[3]),M++;for(;(b=S.exec(P))!==null;)T.push(parseFloat(b[1]),parseFloat(b[2]),parseFloat(b[3])),C.push(L.x,L.y,L.z),N++,I++;M!==1&&console.error("THREE.STLLoader: Something isn't right with the normal of face number "+_),N!==3&&console.error("THREE.STLLoader: Something isn't right with the vertices of face number "+_),_++}var B=R,D=I-R;v.addGroup(B,D,A),A++}return v.setAttribute("position",new c.Float32BufferAttribute(T,3)),v.setAttribute("normal",new c.Float32BufferAttribute(C,3)),v}(function(d){return typeof d=="string"?d:c.LoaderUtils.decodeText(new Uint8Array(d))}(m))}}},(o,l,u)=>{u.r(l),u.d(l,{OBJLoader:()=>_});var c=u(4),f=/^[og]\s*(.+)?/,h=/^mtllib /,m=/^usemtl /,y=/^usemap /,p=new c.Vector3,d=new c.Vector3,b=new c.Vector3,v=new c.Vector3,g=new c.Vector3;function w(){var E={objects:[],object:{},vertices:[],normals:[],colors:[],uvs:[],materials:{},materialLibraries:[],startObject:function(x,T){if(this.object&&this.object.fromDeclaration===!1)return this.object.name=x,void(this.object.fromDeclaration=T!==!1);var C=this.object&&typeof this.object.currentMaterial=="function"?this.object.currentMaterial():void 0;if(this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0),this.object={name:x||"",fromDeclaration:T!==!1,geometry:{vertices:[],normals:[],colors:[],uvs:[],hasUVIndices:!1},materials:[],smooth:!0,startMaterial:function(R,I){var O=this._finalize(!1);O&&(O.inherited||0>=O.groupCount)&&this.materials.splice(O.index,1);var N={index:this.materials.length,name:R||"",mtllib:Array.isArray(I)&&0<I.length?I[I.length-1]:"",smooth:O===void 0?this.smooth:O.smooth,groupStart:O===void 0?0:O.groupEnd,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(P){var B={index:typeof P=="number"?P:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:!1};return B.clone=this.clone.bind(B),B}};return this.materials.push(N),N},currentMaterial:function(){return 0<this.materials.length?this.materials[this.materials.length-1]:void 0},_finalize:function(R){var I=this.currentMaterial();if(I&&I.groupEnd===-1&&(I.groupEnd=this.geometry.vertices.length/3,I.groupCount=I.groupEnd-I.groupStart,I.inherited=!1),R&&1<this.materials.length)for(var O=this.materials.length-1;0<=O;O--)0>=this.materials[O].groupCount&&this.materials.splice(O,1);return R&&this.materials.length===0&&this.materials.push({name:"",smooth:this.smooth}),I}},C&&C.name&&typeof C.clone=="function"){var L=C.clone(0);L.inherited=!0,this.object.materials.push(L)}this.objects.push(this.object)},finalize:function(){this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0)},parseVertexIndex:function(x,T){var C=parseInt(x,10);return 3*(0<=C?C-1:C+T/3)},parseNormalIndex:function(x,T){var C=parseInt(x,10);return 3*(0<=C?C-1:C+T/3)},parseUVIndex:function(x,T){var C=parseInt(x,10);return 2*(0<=C?C-1:C+T/2)},addVertex:function(x,T,C){var L=this.vertices,A=this.object.geometry.vertices;A.push(L[x+0],L[x+1],L[x+2]),A.push(L[T+0],L[T+1],L[T+2]),A.push(L[C+0],L[C+1],L[C+2])},addVertexPoint:function(x){var T=this.vertices,C=this.object.geometry.vertices;C.push(T[x+0],T[x+1],T[x+2])},addVertexLine:function(x){var T=this.vertices,C=this.object.geometry.vertices;C.push(T[x+0],T[x+1],T[x+2])},addNormal:function(x,T,C){var L=this.normals,A=this.object.geometry.normals;A.push(L[x+0],L[x+1],L[x+2]),A.push(L[T+0],L[T+1],L[T+2]),A.push(L[C+0],L[C+1],L[C+2])},addFaceNormal:function(x,T,C){var L=this.vertices,A=this.object.geometry.normals;p.fromArray(L,x),d.fromArray(L,T),b.fromArray(L,C),g.subVectors(b,d),v.subVectors(p,d),g.cross(v),g.normalize(),A.push(g.x,g.y,g.z),A.push(g.x,g.y,g.z),A.push(g.x,g.y,g.z)},addColor:function(x,T,C){var L=this.colors,A=this.object.geometry.colors;L[x]!==void 0&&A.push(L[x+0],L[x+1],L[x+2]),L[T]!==void 0&&A.push(L[T+0],L[T+1],L[T+2]),L[C]!==void 0&&A.push(L[C+0],L[C+1],L[C+2])},addUV:function(x,T,C){var L=this.uvs,A=this.object.geometry.uvs;A.push(L[x+0],L[x+1]),A.push(L[T+0],L[T+1]),A.push(L[C+0],L[C+1])},addDefaultUV:function(){var x=this.object.geometry.uvs;x.push(0,0),x.push(0,0),x.push(0,0)},addUVLine:function(x){var T=this.uvs,C=this.object.geometry.uvs;C.push(T[x+0],T[x+1])},addFace:function(x,T,C,L,A,R,I,O,N){var M=this.vertices.length,P=this.parseVertexIndex(x,M),B=this.parseVertexIndex(T,M),D=this.parseVertexIndex(C,M);if(this.addVertex(P,B,D),this.addColor(P,B,D),I!==void 0&&I!==""){var V=this.normals.length;P=this.parseNormalIndex(I,V),B=this.parseNormalIndex(O,V),D=this.parseNormalIndex(N,V),this.addNormal(P,B,D)}else this.addFaceNormal(P,B,D);if(L!==void 0&&L!==""){var G=this.uvs.length;P=this.parseUVIndex(L,G),B=this.parseUVIndex(A,G),D=this.parseUVIndex(R,G),this.addUV(P,B,D),this.object.geometry.hasUVIndices=!0}else this.addDefaultUV()},addPointGeometry:function(x){this.object.geometry.type="Points";for(var T,C=this.vertices.length,L=0,A=x.length;L<A;L++)T=this.parseVertexIndex(x[L],C),this.addVertexPoint(T),this.addColor(T)},addLineGeometry:function(x,T){this.object.geometry.type="Line";for(var C=this.vertices.length,L=this.uvs.length,A=0,R=x.length;A<R;A++)this.addVertexLine(this.parseVertexIndex(x[A],C));for(var I=0,O=T.length;I<O;I++)this.addUVLine(this.parseUVIndex(T[I],L))}};return E.startObject("",!1),E}class _ extends c.Loader{constructor(S){super(S),this.materials=null}load(S,x,T,C){var L=this,A=new c.FileLoader(this.manager);A.setPath(this.path),A.setRequestHeader(this.requestHeader),A.setWithCredentials(this.withCredentials),A.load(S,function(R){try{x(L.parse(R))}catch(I){C?C(I):console.error(I),L.manager.itemError(S)}},T,C)}setMaterials(S){return this.materials=S,this}parse(S){var x=new w;S.indexOf(`\r
3227
+ `,y=function(){return{diffuse:{value:void 0},depth:{value:1},slide:{value:new c.Vector3(0,0,1)},direction:{value:1},flipY:{value:!0}}};l.fs=h,l.vs=m,l.glslVersion=f,l.getUniforms=y},(o,l,u)=>{u(4);var c=u(5).resolveURL,f=function(h){u(10).ZincObject.call(this),this.isTexturePrimitive=!0,this.texture=h,this.load=(m,y)=>{if(m&&m.images&&m.images.source){var p=new(u(25)).TextureArray,d=[];m.images.source.forEach(v=>{d.push(c(v))});var b=this;p.loadFromImages(d).then(()=>{b.texture=p,b.initialise(m,y)})}},this.initialise=(m,y)=>{y!=null&&typeof y=="function"&&y(this)}};f.prototype=Object.create(u(10).ZincObject.prototype),f.prototype.constructor=f,l.TexturePrimitive=f},(o,l,u)=>{var c=u(4),f=u(31);l.Renderer=function(h){var m=h,y=void 0,p=void 0,d=new c.Clock(!1);this.playAnimation=!0;var b=1e3,v=[],g=0,w=[],_=0,E=void 0,S=void 0,x=void 0,T=void 0,C=[],L=[],A=new c.Group,R=void 0,I=void 0,O=!1;this.getDrawingWidth=()=>m?m.clientWidth:R?typeof R.clientWidth>"u"?Math.round(R.width):Math.round(R.clientWidth):0,this.getDrawingHeight=()=>m?m.clientHeight:R?typeof R.clientHeight>"u"?Math.round(R.height):Math.round(R.clientHeight):0,this.onWindowResize=()=>{p.onWindowResize();var P=this.getDrawingWidth(),B=this.getDrawingHeight();if(y!=null){var D;m?(D=m.getBoundingClientRect(),y.setSize(P,B)):R&&(typeof R.getBoundingClientRect>"u"||(D=R.getBoundingClientRect(),R.width=P,R.height=B),y.setSize(P,B,!1)),D&&(D.left,D.top);var V=new c.Vector2;y.getSize(V),V.x,V.y}},this.initialiseVisualisation=P=>{if(P=P||{},P.antialias===void 0){var B=!1;try{/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)&&(B=!0)}catch{B=!1}P.antialias=!B}P.canvas&&(m=void 0,R=P.canvas),y=new c.WebGLRenderer(P),m!==void 0&&m.appendChild(y.domElement),y.setClearColor(16777215,1),R&&R.style&&(R.style.height="100%",R.style.width="100%"),y.autoClear=!1;var D=this.createScene("default");this.setCurrentScene(D)},this.getCurrentScene=()=>p,this.setCurrentScene=P=>{if(P){this.removeActiveScene(P);var B=p;p=P,B&&B.setInteractiveControlEnable(!1),p.setInteractiveControlEnable(!0),p.setAdditionalScenesGroup(A),this.onWindowResize()}},this.getSceneByName=P=>C[P],this.createScene=P=>{if(C[P]==null){var B;return B=R?new(u(32)).Scene(R,y):new(u(32)).Scene(m,y),C[P]=B,B.sceneName=P,B}},this.resetView=()=>{p.resetView()},this.viewAll=()=>{if(p){var P=p.getBoundingBox();if(P){for(var B,D=0;D<L.length;D++)B=L[D].getBoundingBox(),B&&P.union(B);p.viewAllWithBoundingBox(P)}}},this.loadModelsURL=(P,B,D,V,G,H)=>{p.loadModelsURL(P,B,D,V,G,H)},this.loadViewURL=P=>{p.loadViewURL(P)},this.loadFromViewURL=(P,B)=>{p.loadFromViewURL(P,B)},this.updateDirectionalLight=()=>{p.updateDirectionalLight()};var N=()=>{O?(E=requestAnimationFrame(N),this.render()):(cancelAnimationFrame(E),E=void 0)};this.stopAnimate=()=>{O&&(d.stop(),O=!1)},this.animate=()=>{O||(d.start(),O=!0,N())},this.addPreRenderCallbackFunction=P=>(++g,v[g]=P,g),this.removePreRenderCallbackFunction=P=>{P in v&&delete v[P]},this.addPostRenderCallbackFunction=P=>(++_,w[_]=P,_),this.removePostRenderCallbackFunction=P=>{P in w&&delete w[P]},this.getPlayRate=()=>b,this.setPlayRate=P=>{b=P},this.getCurrentTime=()=>p.getCurrentTime(),this.setMorphsTime=P=>{p.setMorphsTime(P)},this.getZincGeometryByID=P=>p.getZincGeometryByID(P),this.addToScene=P=>{p.addObject(P)},this.addToOrthoScene=P=>{if(x==null&&(x=new c.Scene),S==null){var B=this.getDrawingWidth(),D=this.getDrawingHeight();S=new c.OrthographicCamera(-B/2,B/2,D/2,-D/2,1,10),S.position.z=10}x.add(P)};var M=P=>B=>{B.needsUpdate=!0;var D=new c.SpriteMaterial({map:B}),V=D.map.image.width,G=D.map.image.height;P.material=D,P.scale.set(V,G,1);var H=this.getDrawingWidth(),K=this.getDrawingHeight();P.position.set((H-V)/2,(-K+G)/2,1),this.addToOrthoScene(P)};this.addLogo=()=>{T=new c.Sprite,c.ImageUtils.loadTexture("images/abi_big_logo_transparent_small.png",void 0,M(T))},this.render=()=>{I||(m?0<m.clientWidth&&0<m.clientHeight&&(I=new f(m,this.onWindowResize)):R&&0<R.width&&0<R.height&&(I=new f(R,this.onWindowResize)));var P=d.getDelta();p.renderGeometries(b,P,this.playAnimation);for(var B,D=0;D<L.length;D++)B=L[D],B.renderGeometries(b,P,this.playAnimation);for(var V in S!=null&&x!=null&&(y.clearDepth(),y.render(x,S)),v)v.hasOwnProperty(V)&&v[V].call();for(var G in p.render(y),w)w.hasOwnProperty(G)&&w[G].call()},this.getThreeJSRenderer=()=>y,this.isSceneActive=P=>{if(p===P)return!0;for(var B,D=0;D<L.length;D++)if(B=L[D],B===P)return!0;return!1},this.addActiveScene=P=>{this.isSceneActive(P)||(L.push(P),A.add(P.getThreeJSScene()))},this.removeActiveScene=P=>{for(var B,D=0;D<L.length;D++)if(B=L[D],B===P)return L.splice(D,1),void A.remove(P.getThreeJSScene())},this.clearAllActiveScene=()=>{for(var P=0;P<L.length;P++)A.remove(L[P].getThreeJSScene());L.splice(0,L.length)},this.dispose=()=>{for(var P in O&&cancelAnimationFrame(E),C)C.hasOwnProperty(P)&&C[P].clearAll();C=[],L=[],A=new c.Group,this.stopAnimate(),v=[],g=0,S=void 0,x=void 0,T=void 0;var B=this.createScene("default");this.setCurrentScene(B),I=void 0},this.transitionScene=(P,B)=>{if(p){var D=p.getZincCameraControls(),V=P.getBoundingBox();if(V){var G=V.min.distanceTo(V.max)/2,H=(V.min.x+V.max.x)/2,K=(V.min.y+V.max.y)/2,te=(V.min.z+V.max.z)/2,W=D.getViewportFromCentreAndRadius(H,K,te,G,40,G*4),z=D.getCurrentViewport();D.cameraTransition(z,W,B),D.enableCameraTransition()}}},this.isWebGL2=()=>!!y&&y.capabilities.isWebGL2}},o=>{o.exports=zB()},(o,l,u)=>{var c=u(4),f=u(33).MarkerCluster,h=u(35).SceneLoader,m=u(41).SceneExporter,y=u(43).Viewport,p=u(5).createBufferGeometry,d=u(5).getCircularTexture,b=0,v=function(){return"sc"+b++},g=function(){return{Duration:"6 secs",OriginalDuration:"-",TimeStamps:{}}},w=6e3;l.Scene=function(_,E){var S=this,x=_,T=void 0,C=new h(this),L=void 0,A={},R=0,I={},O=0,N=new c.Scene,M=new(u(44)).Region(void 0,this);N.add(M.getGroup());var P=new c.Group;N.add(P),this.directionalLight=void 0,this.ambient=void 0,this.camera=void 0;var B=6e3,D=void 0;this.sceneName=void 0;var V=!1,G=void 0;this.autoClearFlag=!0,this.displayMarkers=!1,this.displayMinimap=!1,this.minimapScissor={x_offset:16,y_offset:16,width:128,height:128,align:"top-left",updateRequired:!0};var H={x:0,y:0},K=g(),te=new c.Vector2,W=[];this.forcePickableObjectsUpdate=!1,this.uuid=v();var z=new f(this);z.disable(),N.add(z.group);var j=()=>x?typeof x.clientWidth>"u"?x.width:x.clientWidth:0,Z=()=>x?typeof x.clientHeight>"u"?x.height:x.clientHeight:0;this.getDownloadProgress=()=>C.getDownloadProgress(),this.onWindowResize=()=>{var F=Z();this.camera.aspect=j()/F,this.camera.updateProjectionMatrix(),this.minimapScissor.updateRequired=!0,D.onResize(),D.calculateHeightPerPixelAtZeroDepth(F)},this.resetView=()=>{this.onWindowResize(),D.resetView()},this.changeZoomByScrollRateUnit=F=>{D.changeZoomByScrollRateUnit(F)};var Q=()=>{this.camera=new c.PerspectiveCamera(40,j()/Z(),0,10),this.ambient=new c.AmbientLight(16777215,.2),N.add(this.ambient),this.directionalLight=new c.DirectionalLight(16777215,.8),N.add(this.directionalLight),D=new(u(43)).CameraControls(this.camera,E.domElement,E,this),D.setDirectionalLight(this.directionalLight),D.resetView(),L=new(u(49)).Minimap(this)};Q(),this.loadView=F=>{var $=new y;return $.setFromObject(F),D.setCurrentCameraSettings($),!0},this.setupMultipleViews=(F,$)=>{for(var[J,k]of Object.entries($)){var U=new y;U.setFromObject(k),D.addViewport(J,U)}D.setDefaultViewport(F)},this.getBoundingBox=()=>M.getBoundingBox(!0),this.viewAllWithBoundingBox=F=>{if(F){var $=D.getViewportFromBoundingBox(F,1);D.setCurrentCameraSettings($),D.calculateHeightPerPixelAtZeroDepth(Z()),z.markerUpdateRequired=!0}},this.viewAll=()=>{var F=this.getBoundingBox();this.viewAllWithBoundingBox(F),z.markerUpdateRequired=!0},this.forEachGeometry=F=>{M.forEachGeometry(F,!0)},this.forEachGlyphset=F=>{M.forEachGlyphset(F,!0)},this.forEachPointset=F=>{M.forEachPointset(F,!0)},this.forEachLine=F=>{M.forEachLine(F,!0)},this.findGeometriesWithGroupName=F=>M.findGeometriesWithGroupName(F,!0),this.findPointsetsWithGroupName=F=>M.findPointsetsWithGroupName(F,!0),this.findGlyphsetsWithGroupName=F=>M.findGlyphsetsWithGroupName(F,!0),this.findLinesWithGroupName=F=>M.findLinesWithGroupName(F,!0),this.findObjectsWithGroupName=F=>M.findObjectsWithGroupName(F,!0),this.findObjectsWithAnatomicalId=F=>M.findObjectsWithAnatomicalId(F,!0),this.getBoundingBoxOfZincObjects=F=>{for(var $,J=void 0,k=0;k<F.length;k++)$=F[k].getBoundingBox(),$&&(J?J.union($):J=$);return J},this.vectorToScreenXY=F=>{F.project(this.camera);var $=j(),J=Z(),k=$/2,U=J/2;return F.x=F.x*k+k,F.y=-(F.y*U)+U,F},this.getObjectsScreenXY=F=>{if(F&&0<F.length){var $=this.getBoundingBoxOfZincObjects(F),J=new c.Vector3;return $.getCenter(J),this.vectorToScreenXY(J)}},this.getNamedObjectsScreenXY=F=>{var $=this.findObjectsWithGroupName(F);return this.getObjectsScreenXY($)},this.addZincObject=F=>{F&&(M.addZincObject(F),D&&D.calculateMaxAllowedDistance(this))},this.loadGlyphsetURL=(F,$,J,k)=>{C.loadGlyphsetURL(M,F,$,J,k)},this.loadPointsetURL=(F,$,J,k,U)=>{C.loadPointsetURL(M,F,$,J,k,U)},this.loadLinesURL=(F,$,J,k,U)=>{C.loadLinesURL(M,F,$,J,k,U)},this.loadSTL=(F,$,J)=>{C.loadSTL(M,F,$,J)},this.loadOBJ=(F,$,J)=>{C.loadOBJ(M,F,$,J)},this.loadMetadataURL=(F,$,J)=>{C.loadMetadataURL(M,F,$,J)},this.loadModelsURL=(F,$,J,k,U,oe)=>{C.loadModelsURL(M.urls,$,J,k,U,oe)},this.loadViewURL=F=>{C.loadViewURL(F)},this.loadFromViewURL=(F,$)=>{C.loadFromViewURL(F,$)},this.loadGLTF=(F,$,J,k)=>{C.loadGLTF(M,F,$,J,k)},this.updateDirectionalLight=()=>{D.updateDirectionalLight()},this.addObject=F=>{N.add(F)},this.removeObject=F=>{N.remove(F)},this.getCurrentTime=()=>{if(T!=null)return T.getCurrentTime(B);var F=M.getCurrentTime();return F===-1?0:F},this.setMorphsTime=F=>{T!=null&&T.setMorphTime(F,B),M.setMorphTime(F,!0)},this.isTimeVarying=()=>!!(T&&T.video&&!T.video.error)||M.isTimeVarying(),this.renderGeometries=(F,$,J)=>{var k={};if(k.camera=D,k.displayMarkers=this.displayMarkers,k.markerCluster=z,k.markersList=z.markers,k.ndcToBeUpdated=!1,J&&(k.markerCluster.markerUpdateRequired=!0),!T)C.toBeDownloaded==0?(k.ndcToBeUpdated=D.update($),k.ndcToBeUpdated&&D.calculateHeightPerPixelAtZeroDepth(Z()),M.renderGeometries(F,$,J,D,k,!0)):D.update(0);else if(T.isReadyToPlay()){J?T.video.play():T.video.pause();var U=T.video.currentTime/T.getVideoDuration()*B;C.toBeDownloaded==0?(D.setTime(U),k.ndcToBeUpdated=D.update(0),k.ndcToBeUpdated&&D.calculateHeightPerPixelAtZeroDepth(Z()),M.setMorphTime(U,!0),M.renderGeometries(0,0,J,D,k,!0)):D.update(0)}else myPlayRate=0},this.getThreeJSScene=()=>N,this.setVideoHandler=F=>{T||(T=F)},this.setAdditionalScenesGroup=F=>{N.add(F)};var ee=(F,$,J,k,U,oe,le)=>{var ae=0,he=0;return he=F.includes("top")?le-U-J:F.includes("bottom")?J:Math.floor((le-U)/2),ae=F.includes("left")?$:F.includes("right")?oe-$-k:Math.floor((oe-k)/2),{x:ae,y:he}},ie=F=>{this.displayMinimap===!0&&(F.setScissorTest(!0),F.getSize(te),this.minimapScissor.updateRequired&&(H=ee(this.minimapScissor.align,this.minimapScissor.x_offset,this.minimapScissor.y_offset,this.minimapScissor.width,this.minimapScissor.height,te.x,te.y),this.minimapScissor.updateRequired=!1),F.setScissor(H.x,H.y,this.minimapScissor.width,this.minimapScissor.height),F.setViewport(H.x,H.y,this.minimapScissor.width,this.minimapScissor.height),L.updateCamera(),N.add(L.mask),F.render(N,L.camera),N.remove(L.mask),F.setScissorTest(!1),F.setViewport(0,0,te.x,te.y))};this.render=F=>{this.autoClearFlag&&F.clear(),V&&G?G.render(N,this.camera):(F.render(N,this.camera),ie(F))},this.setInteractiveControlEnable=F=>{F==!0?D.enable():D.disable()},this.getZincCameraControls=()=>D,this.getThreeJSScene=()=>N,this.setDuration=F=>{M.setDuration(F),B=F,D.setPathDuration(F),C.duration=F},this.getDuration=()=>B,this.setStereoEffectEnable=F=>{F!=!0||G||(G=new u(43).StereoEffect(E)),E.setSize(j(),Z()),this.camera.updateProjectionMatrix(),V=F},this.objectIsInScene=F=>M.objectIsInRegion(F,!0),this.alignBoundingBoxToCameraView=(F,$)=>{if(F){var J=new c.Vector3;F.getCenter(J);var k=this.getZincCameraControls().getCurrentViewport(),U=new c.Vector3(k.targetPosition[0],k.targetPosition[1],k.targetPosition[2]),oe=new c.Vector3(k.eyePosition[0],k.eyePosition[1],k.eyePosition[2]),le=new c.Vector3,ae=new c.Vector3;le.subVectors(U,oe).normalize(),ae.subVectors(U,J).normalize();var he=new c.Vector3;he.crossVectors(le,ae);var ve=le.angleTo(ae);0<$?(this.getZincCameraControls().rotateCameraTransition(he,ve,$),this.getZincCameraControls().enableCameraTransition()):this.getZincCameraControls().rotateAboutLookAtpoint(he,ve),z.markerUpdateRequired=!0}},this.translateBoundingBoxToCameraView=(F,$,J)=>{if(F){var k=this.getZincCameraControls().getCurrentViewport(),U=this.getZincCameraControls().getViewportFromBoundingBox(F,$);0<J&&(this.getZincCameraControls().cameraTransition(k,U,J),this.getZincCameraControls().enableCameraTransition()),z.markerUpdateRequired=!0}},this.alignObjectToCameraView=(F,$)=>{if(this.objectIsInScene(F)){var J=F.getBoundingBox();this.alignBoundingBoxToCameraView(J,$)}},this.setCameraTargetToObject=F=>{if(this.objectIsInScene(F)){var $=new c.Vector3,J=F.getBoundingBox(),k=this.getZincCameraControls().getCurrentViewport();J.getCenter($);var U=new c.Vector3(k.targetPosition[0],k.targetPosition[1],k.targetPosition[2]),oe=new c.Vector3(k.eyePosition[0],k.eyePosition[1],k.eyePosition[2]),le=new c.Vector3,ae=new c.Vector3;le.subVectors(oe,U),ae.addVectors($,le),k.eyePosition[0]=ae.x,k.eyePosition[1]=ae.y,k.eyePosition[2]=ae.z,k.targetPosition[0]=$.x,k.targetPosition[1]=$.y,k.targetPosition[2]=$.z,this.getZincCameraControls().setCurrentCameraSettings(k),z.markerUpdateRequired=!0}},this.isStereoEffectEnable=()=>V,this.removeZincObject=F=>{M.removeZincObject(F),D&&D.calculateMaxAllowedDistance(this),z.markerUpdateRequired=!0},this.updatePickableThreeJSObjects=()=>{W.length=0,z.isEnabled&&W.push(z.group),M.getPickableThreeJSObjects(W,!0),this.forcePickableObjectsUpdate=!1},this.getPickableThreeJSObjects=()=>((this.forcePickableObjectsUpdate||M.checkPickableUpdateRequred(!0))&&this.updatePickableThreeJSObjects(),W),this.getNormalisedMinimapCoordinates=(F,$)=>{if(this.displayMinimap){var J=new c.Vector2;F.getSize(J);var k=J.y-$.clientY;if(H.x+this.minimapScissor.width>$.clientX&&$.clientX>H.x&&H.y+this.minimapScissor.height>k&&k>H.y){var U=2*(($.clientX-H.x)/this.minimapScissor.width)-1,oe=2*((k-H.y)/this.minimapScissor.height)-1;return{x:U,y:oe}}}},this.getMinimapDiffFromNormalised=(F,$)=>L?L.getDiffFromNormalised(F,$):void 0,this.isWebGL2=()=>E.isWebGL2(),this.clearAll=()=>{z.clear(),M.clear(!0),this.clearZincObjectAddedCallbacks(),this.clearZincObjectRemovedCallbacks(),C.toBeDwonloaded=0,D&&D.calculateMaxAllowedDistance(this),z.markerUpdateRequired=!0},this.addMetadataTimeStamp=(F,$)=>{K.TimeStamps[F]=ne($)},this.getMetadataTag=F=>K[F],this.getMetadata=()=>K,this.setMetadataTag=(F,$)=>{K[F]=$},this.removeMetadataTag=F=>{delete K[F]},this.resetMetadata=()=>{K=g()},this.resetDuration=()=>{this.setDuration(w)};var q=F=>[...F.years?["".concat(F.years,"years")]:[],...F.months?["".concat(F.months,"months")]:[],...F.weeks?["".concat(F.weeks,"weeks")]:[],...F.days?["".concat(F.days,"days")]:[],...F.hours?["".concat(F.hours,"hours")]:[],...F.mins?["".concat(F.mins,"mins")]:[],...F.secs?["".concat(F.secs,"secs")]:[]].join(" "),ne=F=>F.years?31536e6*F.years:0+F.months?2592e6*F.months:0+F.weeks?6048e5*F.weeks:0+F.days?864e5*F.days:0+F.hours?36e5*F.hours:0+F.mins?6e4*F.mins:0+F.secs?1e3*F.secs:0;this.setDurationFromObject=F=>{var $=q(F),J=ne(F);this.setMetadataTag("Duration",$),this.setDuration(J)},this.setOriginalDurationFromObject=F=>{var $=q(F);this.setMetadataTag("OriginalDuration",$)},this.exportGLTF=F=>{var $=new m(this);return $.exportGLTF(F)},this.getRootRegion=()=>M,this.createLines=(F,$,J,k)=>{var U=M.findChildFromPath(F);return U===void 0&&(U=M.createChildFromPath(F)),U.createLines($,J,k)},this.createPoints=(F,$,J,k,U)=>{var oe=M.findChildFromPath(F);return oe===void 0&&(oe=M.createChildFromPath(F)),oe.createPoints($,J,k,U)},this.addZincObjectAddedCallbacks=F=>(++R,A[R]=F,R),this.addZincObjectRemovedCallbacks=F=>(++O,I[O]=F,O),this.removeZincObjectAddedCallbacks=F=>{F in R&&delete A[F]},this.removeZincObjectRemovedCallbacks=F=>{F in O&&delete I[F]},this.clearZincObjectAddedCallbacks=()=>{A={},R=0},this.clearZincObjectRemovedCallbacks=()=>{I={},O=0},this.triggerObjectAddedCallback=F=>{for(var $ in A)A.hasOwnProperty($)&&A[$](F)},this.triggerObjectRemovedCallback=F=>{for(var $ in I)I.hasOwnProperty($)&&I[$](F)},this.addTemporaryPoints=(F,$)=>{var J=p(F.length,F),k=new c.PointsMaterial({alphaTest:.5,size:15,color:$,sizeAttenuation:!1}),U=d();k.map=U;var oe=new(u(23)).Points(J,k);return P.add(oe),oe},this.addTemporaryLines=(F,$)=>{var J=p(F.length,F),k=new c.LineBasicMaterial({color:$}),U=new(u(12)).LineSegments(J,k);return P.add(U),U},this.removeTemporaryPrimitive=F=>{P.remove(F),F.geometry.dispose(),F.material.dispose()},this.clearTemporaryPrimitives=()=>{var F=0,$=P.children;return $.forEach(J=>{J.geometry.dispose(),J.material.dispose(),F++}),P.clear(),F},this.addBoundingBoxPrimitive=function(F,$,J,k,U){var oe=5<arguments.length&&arguments[5]!==void 0?arguments[5]:void 0,le=M.findChildFromPath(F);le===void 0&&(le=M.createChildFromPath(F));var ae=oe||S.getBoundingBox(),he=new c.Vector3().subVectors(ae.max,ae.min),ve=new c.BoxGeometry(he.x,he.y,he.z),we=le.createGeometryFromThreeJSGeometry($,ve,J,k,U,1e4);return he.addVectors(ae.min,ae.max).multiplyScalar(.5),we.setPosition(he.x,he.y,he.z),we},this.addSlicesPrimitive=function(F,$,J,k,U){var oe=5<arguments.length&&arguments[5]!==void 0?arguments[5]:void 0;if($&&3<=$.length&&J&&3<=J.length){var le=M.findChildFromPath(F);le===void 0&&(le=M.createChildFromPath(F));var ae=oe||S.getBoundingBox(),he=new c.Vector3().subVectors(ae.max,ae.min),ve=[],we=0;return["x","y","z"].forEach(ce=>{var ge;switch(ce){case"x":ge=new c.PlaneGeometry(he.z,he.y),ge.rotateY(Math.PI/2);break;case"y":ge=new c.PlaneGeometry(he.x,he.z),ge.rotateX(Math.PI/2);break;case"z":ge=new c.PlaneGeometry(he.x,he.y);break}var re=le.createGeometryFromThreeJSGeometry($[we],ge,J[we],k,U,10001);ve.push(re),we++}),he.addVectors(ae.min,ae.max).multiplyScalar(.5),ve.forEach(ce=>{ce.setPosition(he.x,he.y,he.z)}),ve}},this.enableMarkerCluster=F=>{F?(z.markerUpdateRequired=!0,z.enable()):(z.markerUpdateRequired=!1,z.disable()),this.forcePickableObjectsUpdate=!0}}},(o,l,u)=>{function c(E,S){var x=Object.keys(E);if(Object.getOwnPropertySymbols){var T=Object.getOwnPropertySymbols(E);S&&(T=T.filter(function(C){return Object.getOwnPropertyDescriptor(E,C).enumerable})),x.push.apply(x,T)}return x}function f(E){for(var S,x=1;x<arguments.length;x++)S=arguments[x]==null?{}:arguments[x],x%2?c(Object(S),!0).forEach(function(T){h(E,T,S[T])}):Object.getOwnPropertyDescriptors?Object.defineProperties(E,Object.getOwnPropertyDescriptors(S)):c(Object(S)).forEach(function(T){Object.defineProperty(E,T,Object.getOwnPropertyDescriptor(S,T))});return E}function h(E,S,x){return S=m(S),S in E?Object.defineProperty(E,S,{value:x,enumerable:!0,configurable:!0,writable:!0}):E[S]=x,E}function m(E){var S=y(E,"string");return typeof S=="symbol"?S:S+""}function y(E,S){if(typeof E!="object"||!E)return E;var x=E[Symbol.toPrimitive];if(x!==void 0){var T=x.call(E,S||"default");if(typeof T!="object")return T;throw new TypeError("@@toPrimitive must return a primitive value.")}return(S==="string"?String:Number)(E)}var p=u(4),d=new Image(128,128);d.src=u(34);var b=new p.Texture;b.image=d,b.needsUpdate=!0;var v=[.02,.03,1],g=new p.SpriteMaterial({map:b,alphaTest:.5,transparent:!0,depthTest:!1,depthWrite:!1,sizeAttenuation:!1}),w=u(5).createNewSpriteText,_=function(E){u(10).ZincObject.call(this),this.texture=b;var S=void 0;this.morph=new p.Group,this.group=this.morph,this.isMarkerCluster=!0;var x=!0,T=[];this.markers={};var C=new p.Vector2,L=new p.Vector2,A=Date.now();this.setSpriteSize=M=>{S.scale.set(.015,.02,1),S.scale.multiplyScalar(M)},this.clear=()=>{this.group.clear(),this.markers={}},this.dispose=()=>{this.clear(),this.morph&&this.morph.clear()};var R=M=>{var P=new p.Group,B=new p.Sprite(g);return B.clusterIndex=M,B.center.set(.5,0),B.position.set(0,0,0),B.renderOrder=1e4,B.scale.set(v[0],v[1],v[2]),B.userData=this,P.add(B),this.group.add(P),{group:P,marker:B,label:void 0,number:0,min:[0,0,0],max:[1,1,1]}},I=(M,P,B)=>{M.group.visible=!0,M.group.position.set(P.coords[0],P.coords[1],P.coords[2]),(M.label===void 0||B!==M.number)&&(M.label&&(M.group.remove(M.label),M.label.material.map.dispose(),M.label.material.dispose()),M.label=w(B,.012,"black","Asap",120,700),M.number=B,M.group.add(M.label)),M.min=P.min,M.max=P.max},O=M=>{var P=0;for(M.forEach(B=>{var D=B.members.length,V=0;D===1?B.members[0].setVisibility(!0):(B.members.forEach(G=>{V+=G.getNumber(),G.setVisibility(!1)}),!T[P]&&T.push(R(P)),I(T[P],B,V),P++)}),P;P<T.length;P++)T[P].group.visible=!1},N=(M,P)=>{var B=!0,D={members:[],coords:[0,0,0],min:[0,0,0],max:[1,1,1]},V=0;for(var G in M)B?(C.set(M[G].ndc.x,M[G].ndc.y),this._b1.setFromPoints([M[G].morph.position]),B=!1,D.members.push(M[G]),D.coords=[M[G].morph.position.x,M[G].morph.position.y,M[G].morph.position.z],P.push(D),delete M[G]):(L.set(M[G].ndc.x,M[G].ndc.y),V=C.distanceTo(L),.1>V&&(D.members.push(M[G]),this._b1.expandByPoint(M[G].morph.position),delete M[G]));D.min=[this._b1.min.x,this._b1.min.y,this._b1.min.z],D.max=[this._b1.max.x,this._b1.max.y,this._b1.max.z],B!=!0&&N(M,P)};this.calculate=()=>{if(x){var M=Date.now();if(500<M-A){var P=[];N(f({},this.markers),P),O(P),A=Date.now(),this.markerUpdateRequired=!1}}},this.isEnabled=()=>x,this.enable=()=>{x=!0,this.morph.visible=!0},this.disable=()=>{for(var M in x=!1,this.morph.visible=!1,this.markers){var P;(P=this.markers[M])!==null&&P!==void 0&&P.isMarker&&this.markers[M].isEnabled()&&this.markers[M].setVisibility(!0)}},this.zoomToCluster=M=>!!(M!==void 0&&-1<M&&(this._v1.set(...T[M].min),this._v2.set(...T[M].max),Math.abs(0<this._v1.distanceTo(this._v2))))&&(this._b1.set(this._v1,this._v2),E.translateBoundingBoxToCameraView(this._b1,3,300),this.markerUpdateRequired=!0,!0),this.clusterIsVisible=M=>{if(M!==void 0&&-1<M&&T[M]){var P;return(P=T[M].group)===null||P===void 0?void 0:P.visible}return!1}};_.prototype=Object.create(u(10).ZincObject.prototype),l.MarkerCluster=_},o=>{o.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIiA/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZlcnNpb249IjEuMSIgd2lkdGg9IjM2NSIgaGVpZ2h0PSI1NjAiIHZpZXdCb3g9IjAgMCAzNjUgNTYwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPGRlc2M+Q3JlYXRlZCB3aXRoIEZhYnJpYy5qcyA1LjIuNDwvZGVzYz4KPGRlZnM+CjwvZGVmcz4KPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idHJhbnNwYXJlbnQiPjwvcmVjdD4KPGcgdHJhbnNmb3JtPSJtYXRyaXgoMCAwIDAgMCAwIDApIiBpZD0iODA4ZWQyODMtMjUyNC00NDBmLTg4YWUtM2JkYjQ3YmI1NzQ5IiAgPgo8L2c+CjxnIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIDEgMTgyLjUgMjgwKSIgaWQ9ImRiMzA0MTNkLTViZmYtNGI5OC1hYjU5LTQ2NDQ5N2VlMTk5ZSIgID4KPHJlY3Qgc3R5bGU9InN0cm9rZTogbm9uZTsgc3Ryb2tlLXdpZHRoOiAxOyBzdHJva2UtZGFzaGFycmF5OiBub25lOyBzdHJva2UtbGluZWNhcDogYnV0dDsgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7IHN0cm9rZS1saW5lam9pbjogbWl0ZXI7IHN0cm9rZS1taXRlcmxpbWl0OiA0OyBmaWxsOiByZ2IoMjU1LDI1NSwyNTUpOyBmaWxsLXJ1bGU6IG5vbnplcm87IG9wYWNpdHk6IDE7IHZpc2liaWxpdHk6IGhpZGRlbjsiIHZlY3Rvci1lZmZlY3Q9Im5vbi1zY2FsaW5nLXN0cm9rZSIgIHg9Ii0xODIuNSIgeT0iLTI4MCIgcng9IjAiIHJ5PSIwIiB3aWR0aD0iMzY1IiBoZWlnaHQ9IjU2MCIgLz4KPC9nPgo8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwIDAgMCAwIDAgOTcuNSkiICA+CjxnIHN0eWxlPSIiICAgPgo8L2c+CjwvZz4KPGcgdHJhbnNmb3JtPSJtYXRyaXgoMCAwIDAgMCAwIDk3LjUpIiAgPgo8ZyBzdHlsZT0iIiAgID4KPC9nPgo8L2c+CjxnIHRyYW5zZm9ybT0ibWF0cml4KDAuOTkgMCAwIDAuOTkgMTgyLjUgMjgwKSIgID4KPGcgc3R5bGU9IiIgdmVjdG9yLWVmZmVjdD0ibm9uLXNjYWxpbmctc3Ryb2tlIiAgID4KCQk8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDAgMCkiICA+CjxyZWN0IHN0eWxlPSJzdHJva2U6IG5vbmU7IHN0cm9rZS13aWR0aDogMTsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1kYXNob2Zmc2V0OiAwOyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogNDsgZmlsbDogcmdiKDI1NSwyNTUsMjU1KTsgZmlsbC1ydWxlOiBub256ZXJvOyBvcGFjaXR5OiAxOyB2aXNpYmlsaXR5OiBoaWRkZW47IiB2ZWN0b3ItZWZmZWN0PSJub24tc2NhbGluZy1zdHJva2UiICB4PSItNTQwIiB5PSItNTQwIiByeD0iMCIgcnk9IjAiIHdpZHRoPSIxMDgwIiBoZWlnaHQ9IjEwODAiIC8+CjwvZz4KCQk8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDAgMCkiICA+CjxwYXRoIHN0eWxlPSJzdHJva2U6IHJnYigwLDAsMCk7IHN0cm9rZS13aWR0aDogMDsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1kYXNob2Zmc2V0OiAwOyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogNDsgZmlsbDogcmdiKDI1NSwxNjUsMCk7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHZlY3Rvci1lZmZlY3Q9Im5vbi1zY2FsaW5nLXN0cm9rZSIgIHRyYW5zZm9ybT0iIHRyYW5zbGF0ZSgtMTgyLjksIC0yNzkuODUpIiBkPSJNIDE4Mi45IDU1MS43IEMgMTgyLjkgNTUxLjgwMDAwMDAwMDAwMDEgMTgzLjEgNTUyIDE4My4xIDU1MiBDIDE4My4xIDU1MiAzNTguMyAyODMgMzU4LjMgMTk0LjYgQyAzNTguMyA2NC41IDI2OS41IDcuOTAwMDAwMDAwMDAwMDA2IDE4Mi45IDcuNjk5OTk5OTk5OTk5OTg5IEMgOTYuMyA3LjkgNy41IDY0LjUgNy41IDE5NC42IEMgNy41IDI4MyAxODIuOCA1NTIgMTgyLjggNTUyIEMgMTgyLjggNTUyIDE4Mi45IDU1MS43IDE4Mi45IDU1MS43IHogTSAxMjIuMiAxODcuMiBDIDEyMi4yIDE1My42IDE0OS40IDEyNi4zOTk5OTk5OTk5OTk5OSAxODMgMTI2LjM5OTk5OTk5OTk5OTk5IEMgMjE2LjYgMTI2LjM5OTk5OTk5OTk5OTk5IDI0My44IDE1My42IDI0My44IDE4Ny4yIEMgMjQzLjggMjIwLjc5OTk5OTk5OTk5OTk4IDIxNi41IDI0OCAxODIuOSAyNDggQyAxNDkuNCAyNDggMTIyLjIgMjIwLjggMTIyLjIgMTg3LjIgeiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAvPgo8L2c+CgkJPGcgdHJhbnNmb3JtPSJtYXRyaXgoMy44MiAwIDAgMy44MiAwIC0xMDAuNzcpIiAgPgo8Y2lyY2xlIHN0eWxlPSJzdHJva2U6IHJnYigwLDAsMCk7IHN0cm9rZS13aWR0aDogMDsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1kYXNob2Zmc2V0OiAwOyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogNDsgZmlsbDogcmdiKDI1NSwyNTUsMjU1KTsgZmlsbC1ydWxlOiBub256ZXJvOyBvcGFjaXR5OiAxOyIgdmVjdG9yLWVmZmVjdD0ibm9uLXNjYWxpbmctc3Ryb2tlIiAgY3g9IjAiIGN5PSIwIiByPSIzNSIgLz4KPC9nPgo8L2c+CjwvZz4KPC9zdmc+"},(o,l,u)=>{var c=u(4),f=u(5).resolveURL,h=u(5).createNewURL,m=u(36).STLLoader,y=u(37).OBJLoader,p=u(38).PrimitivesLoader;l.SceneLoader=function(d){var b=d;this.toBeDownloaded=0,this.progressMap={};var v=!1,g=!1,w=new p;this.getDownloadProgress=()=>{var W=0,z=0,j=!1;for(var Z in this.progressMap){var Q=this.progressMap[Z];W+=Q[1],z+=Q[0],Q[1]==0&&(j=!0)}return j&&(W=0),[W,z,g]},this.onProgress=W=>z=>{this.progressMap[W]=[z.loaded,z.total]},this.onError=W=>z=>{--this.toBeDownloaded,g=!0,console.error("There is an issue with one of the external resource: ".concat(z==null?void 0:z.responseURL,".")),W&&W()};var _=(W,z)=>{var j=z.Default;if(z.Inline)b.setupMultipleViews(j,z.Entries);else{var Z=[],Q=function(ne){W&&(newURL=h(ie,W),Z.push(new Promise((F,$)=>{fetch(newURL).then(J=>J.json()).then(J=>F({key:ne,data:J})).catch(J=>$(J))})))};for(var[ee,ie]of Object.entries(z.Entries))Q(ee);Promise.all(Z).then(q=>{var ne={};q.forEach($=>{ne[$.key]=$.data}),b.setupMultipleViews(j,ne);var F=b.getZincCameraControls();F&&F.setCurrentViewport(j),v=!0})}};this.loadViewURL=(W,z)=>{this.toBeDownloaded+=1;var j=new XMLHttpRequest;j.onreadystatechange=()=>{if(j.readyState==4)if(j.status==200){var Q=JSON.parse(j.responseText);b.setupMultipleViews("default",{default:Q}),b.resetView(),v=!0,--this.toBeDownloaded,z!=null&&typeof z=="function"&&z()}else this.onError()};var Z=f(W);j.open("GET",Z,!0),j.send()},this.loadModelsURL=(W,z,j,Z,Q,ee,ie)=>{var q=z.length;this.toBeDownloaded+=q;for(var ne=0;ne<q;ne++){var F=z[ne],$=u(0).defaultMaterialColor,J=u(0).defaultOpacity;j!=null&&j[ne]!=null&&($=!!j[ne]),Z!=null&&Z[ne]!=null&&(J=Z[ne]);var k=0;Q!=null&&Q[ne]!=null&&(k=!!Q[ne]);var U=0;ee!=null&&ee[ne]!=null&&(U=!!ee[ne]),w.load(f(F),O(W,$,J,k,U,void 0,void 0,void 0,void 0,ie),this.onProgress(F),this.onError(ie))}},this.loadFromViewURL=(W,z,j)=>{var Z=new XMLHttpRequest;Z.onreadystatechange=()=>{if(Z.readyState==4&&Z.status==200){var ee=JSON.parse(Z.responseText);b.loadView(ee);for(var ie,q=[],ne=z+"_",F=0;F<ee.numberOfResources;F++)ie=ne+(F+1)+".json",q.push(ie);this.loadModelsURL(W,q,ee.colour,ee.opacity,ee.timeEnabled,ee.morphColour,j)}};var Q=f(z+"_view.json");Z.open("GET",Q,!0),Z.send()};var E=(W,z,j,Z,Q,ee,ie,q)=>(ne,F)=>{var $=new(u(24)).Lines,J=void 0;F&&F[0]&&(J=new c.LineBasicMaterial({color:F[0].color.clone()}),1>F[0].opacity&&(J.transparent=!0),J.opacity=F[0].opacity,J.morphTargets=z,J.vertexColors=F[0].vertexColors);var k={localTimeEnabled:z,localMorphColour:j};if($&&($.createLineSegment(ne,J,k),$.setName(Z),$.anatomicalId=Q,$.setRenderOrder(ee),W.addZincObject($),$.setDuration(b.getDuration()),console.log(ie),ie&&ie.levels))for(var[U,oe]of Object.entries(ie.levels))$.addLOD(w,U,oe.URL,oe.Index,ie.preload);--this.toBeDownloaded,ne.dispose(),q!=null&&typeof q=="function"&&q($)};this.loadLinesURL=(W,z,j,Z,Q,ee,ie)=>{var q=0;this.toBeDownloaded+=1;var ne=!!(ie&&ie.isInline)&&ie.isInline,F=ie&&ie.anatomicalId?ie.anatomicalId:void 0,$=ie&&ie.renderOrder?ie.renderOrder:void 0;j!=null&&(q=!!j);var J=0;if(Z!=null&&(J=!!Z),ne){var k=w.parse(z);E(W,q,J,Q,F,$,ie.lod,ee)(k.geometry,k.materials)}else w.load(z,E(W,q,J,Q,F,$,ie.lod,ee),this.onProgress(z),this.onError(ee),ie.loaderOptions)};var S=(W,z,j,Z,Q,ee)=>{var ie=ee&&ee.isInline?ee.isInline:void 0,q=ee&&ee.anatomicalId?ee.anatomicalId:void 0,ne=ee&&ee.displayLabels?ee.displayLabels:void 0,F=ee&&ee.renderOrder?ee.renderOrder:void 0,$=new(u(18)).Glyphset;$.setDuration(b.getDuration()),$.groupName=Z;var J=()=>{--this.toBeDownloaded,Q!=null&&typeof Q=="function"&&Q($)};++this.toBeDownloaded,ie?$.load(z,j,J,ie,ne):$.load(z,f(j),J,ie,ne),$.anatomicalId=q,$.setRenderOrder(F),W.addZincObject($)},x=(W,z,j,Z,Q,ee)=>()=>{if(z.readyState==4&&z.status==200){var ie=JSON.parse(z.responseText);S(W,ie,j,Z,Q,ee)}},T=(W,z,j,Z,Q,ee,ie)=>(q,ne)=>{var F=new(u(22)).Pointset,$=new c.PointsMaterial({alphaTest:.5,size:10,sizeAttenuation:!1});ne&&ne[0]&&(1>ne[0].opacity&&($.transparent=!0),$.opacity=ne[0].opacity,$.color=ne[0].color,$.morphTargets=z,$.vertexColors=ne[0].vertexColors);var J={};J.localTimeEnabled=z,J.localMorphColour=j,F&&(F.createMesh(q,$,J),F.setName(Z),F.anatomicalId=Q,W.addZincObject(F),F.setDuration(b.getDuration()),F.setRenderOrder(ee)),q.dispose(),--this.toBeDownloaded,ie!=null&&typeof ie=="function"&&ie(F)};this.loadSTL=(W,z,j,Z)=>{this.toBeDownloaded+=1;var Q=u(0).defaultMaterialColor,ee=u(0).defaultOpacity,ie=new m;ie.crossOrigin="Anonymous",ie.load(f(z),O(W,Q,ee,!1,!1,j,void 0,void 0,void 0,Z))},this.loadOBJ=(W,z,j,Z)=>{this.toBeDownloaded+=1;var Q=u(0).defaultMaterialColor,ee=u(0).defaultOpacity,ie=new y;ie.crossOrigin="Anonymous",ie.load(f(z),O(W,Q,ee,!1,!1,j,void 0,void 0,void 0,Z))};var C=(W,z,j,Z,Q,ee,ie)=>{this.toBeDownloaded+=1;var q=u(0).defaultMaterialColor,ne=u(0).defaultOpacity,F=0,$=!!(ie&&ie.isInline)&&ie.isInline,J=ie&&ie.fileFormat?ie.fileFormat:void 0,k=ie&&ie.anatomicalId?ie.anatomicalId:void 0,U=ie&&ie.renderOrder?ie.renderOrder:void 0;j!=null&&(F=!!j);var oe=0;Z!=null&&(oe=!!Z);var le=w;if(J!==void 0){if(J=="STL")le=new m;else if(J=="OBJ")return le=new y,le.crossOrigin="Anonymous",void le.load(z,objloader(W,q,ne,F,oe,Q,k,ee),this.onProgress(z),this.onError,ie.loaderOptions)}if($){var ae=w.parse(z);O(W,q,ne,F,oe,Q,k,U,ie,ee)(ae.geometry,ae.materials)}else le.crossOrigin="Anonymous",w.load(z,O(W,q,ne,F,oe,Q,k,U,ie,ee),this.onProgress(z),this.onError(ee),ie.loaderOptions)},L=function(z,j,Z){var Q=0;return ee=>{if(++Q,ee&&j!=null&&typeof j=="function"){j(ee);var ie=b.getZincCameraControls();ie&&ie.calculateMaxAllowedDistance(b)}Q==z&&(v==!1&&b.viewAll(),Z!=null&&typeof Z=="function"&&Z())}};this.loadPointsetURL=(W,z,j,Z,Q,ee,ie)=>{var q=0;this.toBeDownloaded+=1,j!=null&&(q=!!j);var ne=0;Z!=null&&(ne=!!Z);var F=!!(ie&&ie.isInline)&&ie.isInline,$=ie&&ie.anatomicalId?ie.anatomicalId:void 0,J=ie&&ie.renderOrder?ie.renderOrder:void 0;if(F){var k=w.parse(z);T(W,q,ne,Q,$,J,ee)(k.geometry,k.materials)}else w.load(z,T(W,q,ne,Q,$,J,ee),this.onProgress(z),this.onError(ee),ie.loaderOptions)};var A=(W,z,j,Z,Q,ee)=>{var ie=ee&&ee.isInline?ee.isInline:void 0,q=ee&&ee.anatomicalId?ee.anatomicalId:void 0,ne=ee&&ee.renderOrder?ee.renderOrder:void 0,F=void 0;if(j){if(z&&j.images&&j.images.source)for(var $,J=j.images.source,k=0;k<J.length;k++)$=h(J[k],z),j.images.source[k]=$;if(j.type==="slides"&&(F=new(u(27)).TextureSlides),F){F.groupName=Z;var U=()=>{--this.toBeDownloaded,Q!=null&&typeof Q=="function"&&Q(F)};++this.toBeDownloaded,F.load(j,U,ie),F.anatomicalId=q,F.setRenderOrder(ne),W.addZincObject(F)}}},R=(W,z,j,Z,Q)=>()=>{if(z.readyState==4&&z.status==200){var ee=JSON.parse(z.responseText);A(W,z.responseURL,ee,j,Z,Q)}};this.loadTextureURL=(W,z,j,Z,Q)=>{var ee=!!(Q&&Q.isInline)&&Q.isInline;if(ee)A(W,void 0,z,j,Z,Q);else{var ie=new XMLHttpRequest;ie.onreadystatechange=R(W,ie,j,Z,Q),ie.open("GET",f(z),!0),ie.send()}},this.loadGlyphsetURL=(W,z,j,Z,Q,ee)=>{var ie=!!(ee&&ee.isInline)&&ee.isInline;if(ie)S(W,z,j,Z,Q,ee);else{var q=new XMLHttpRequest;q.onreadystatechange=x(W,q,j,Z,Q,ee),q.open("GET",f(z),!0),q.send()}};var I=(W,z,j,Z,Q,ee,ie,q,ne)=>{var F={colour:j,opacity:Z,localTimeEnabled:Q,localMorphColour:ee},$=new(u(3)).Geometry;return $.createMesh(z,q,F),$.getMorph()?($.setName(ne),W&&W.addZincObject($),$.setDuration(b.getDuration()),$.videoHandler&&b.setVideoHandler($.videoHandler),$):void 0},O=(W,z,j,Z,Q,ee,ie,q,ne,F)=>($,J)=>{var k;J&&J[0]&&(k=J[0]);var U=I(W,$,z,j,Z,Q,void 0,k,ee);if(U.anatomicalId=ie,U.setRenderOrder(q),ne.lod&&ne.lod.levels)for(var[oe,le]of Object.entries(ne.lod.levels))U.addLOD(w,oe,le.URL,le.Index,ne.lod.preload);--this.toBeDownloaded,$.dispose(),F!=null&&typeof F=="function"&&F(U)},N=W=>{var z=/P(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)W)?(?:(\d+)D)?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+)S)?)?$/,[,j,Z,Q,ee,ie,q,ne]=W.match(z);return{years:j,months:Z,weeks:Q,days:ee,hours:ie,mins:q,secs:ne}};this.loadSettings=W=>{if(W){if(W.Duration){var z=N(W.Duration);b.setDurationFromObject(z)}if(W.OriginalDuration){var j=N(W.OriginalDuration);b.setOriginalDurationFromObject(j)}if(W.TimeStamps)for(var Z in W.TimeStamps){var Q=N(W.TimeStamps[Z]);b.addMetadataTimeStamp(Z,Q)}}};var M=(W,z,j,Z,Q)=>{if(j){var ee=void 0,ie=!1;j.URL?(ee=j.URL,z&&(ee=h(ee,z))):j.Inline&&(ee=j.Inline.URL,ie=!0);var q={};if(j.LOD&&j.LOD.Levels){q.preload=!!j.LOD.Preload,q.levels={};for(var[ne,F]of Object.entries(j.LOD.Levels))q.levels[ne]={},q.levels[ne].URL=h(F.URL,z),q.levels[ne].Index=F.Index}var $=j.GroupName;($===void 0||$==="")&&($="_Unnamed");var J={loaderOptions:{index:j.Index},isInline:ie,fileFormat:j.FileFormat,anatomicalId:j.AnatomicalId,compression:j.compression,lod:q,renderOrder:Z};switch(j.Type){case"Surfaces":C(W,ee,j.MorphVertices,j.MorphColours,$,Q,J);break;case"Glyph":var k;ie?k=j.Inline.GlyphGeometriesURL:(k=j.GlyphGeometriesURL,k=h(j.GlyphGeometriesURL,z)),j.DisplayLabels&&(J.displayLabels=!0),this.loadGlyphsetURL(W,ee,k,$,Q,J);break;case"Points":this.loadPointsetURL(W,ee,j.MorphVertices,j.MorphColours,$,Q,J);break;case"Lines":this.loadLinesURL(W,ee,j.MorphVertices,j.MorphColours,$,Q,J);break;case"Texture":this.loadTextureURL(W,ee,$,Q,J);break}}},P=(W,z,j)=>{if(z){var Z=void 0,Q=!1;switch(z.URL?(Z=z.URL,W&&(Z=h(z.URL,W))):z.Inline&&(Z=z.Inline.URL,Q=!0),z.Type){case"View":Q?(b.setupMultipleViews("default",{default:Z}),v=!0,j!=null&&typeof j=="function"&&j()):this.loadViewURL(Z,j);break;case"Settings":this.loadSettings(z);break}}};this.loadGLTF=(W,z,j,Z,Q)=>{var ee=new(u(39)).GLTFToZincJSLoader;ee.load(b,W,z,j,Z,Q)};var B=(W,z,j,Z)=>{if(j.Primitives&&j.Primitives.forEach(q=>{var ne=1;q.Order&&(ne=q.Order),M(W,z,q,ne,Z)}),j.Transformation&&W.setTransformation(j.Transformation),j.Children)for(var[Q,ee]of Object.entries(j.Children)){var ie=W.findOrCreateChildFromPath(Q);ie&&B(ie,z,ee,Z)}},D=(W,z)=>{if(Array.isArray(W)){for(var j=0,Z=0;Z<W.length;Z++)W[Z].Type&&(z&&W[Z].Type==="View"||W[Z].Type==="Surfaces"||W[Z].Type==="Glyph"||W[Z].Type==="Points"||W[Z].Type==="Lines"||W[Z].Type==="Texture")&&j++;return j}return 0},V=W=>{var z=W.Primitives?D(W.Primitives,!1):0;return W.Children&&Object.values(W.Children).forEach(j=>{z+=V(j)}),z},G=W=>Array.isArray(W)?D(W,!0):typeof W=="object"&&W!==null&&W.Version==="2.0"?V(W.Regions):void 0,H=(W,z,j,Z,Q)=>{var ee=W;j.RegionPath&&j.RegionPath!==""&&(ee=W.findOrCreateChildFromPath(j.RegionPath)),M(ee,z,j,2*Z,Q)},K=(W,z,j,Z,Q)=>{for(var ee=G(z),ie=new L(ee,Z,Q),q=0;q<z.length;q++)P(j,z[q],ie);for(var ne=0;ne<z.length;ne++)H(W,j,z[ne],ne,ie)},te=(W,z,j,Z,Q)=>{var ee=G(z),ie=new L(ee,Z,Q);z.Settings&&this.loadSettings(z.Settings),z.Views&&_(j,z.Views),z.Regions&&B(W,j,z.Regions,ie)};this.loadMetadataURL=(W,z,j,Z)=>{var Q=new XMLHttpRequest,ee=f(z);Q.onreadystatechange=()=>{if(Q.readyState==4&&Q.status==200){b.resetMetadata(),b.resetDuration(),v=!1;var ie=Q.responseURL;ie===void 0&&(ie=new URL(ee).href);var q=JSON.parse(Q.responseText);Array.isArray(q)?K(W,q,ie,j,Z):typeof q=="object"&&q!==null&&q.Version=="2.0"&&te(W,q,ie,j,Z)}},Q.open("GET",ee,!0),Q.send()}}},(o,l,u)=>{u.r(l),u.d(l,{STLLoader:()=>f});var c=u(4);class f extends c.Loader{constructor(m){super(m)}load(m,y,p,d){var b=this,v=new c.FileLoader(this.manager);v.setPath(this.path),v.setResponseType("arraybuffer"),v.setRequestHeader(this.requestHeader),v.setWithCredentials(this.withCredentials),v.load(m,function(g){try{y(b.parse(g))}catch(w){d?d(w):console.error(w),b.manager.itemError(m)}},p,d)}parse(m){function y(d,b,v){for(var g=0,w=d.length;g<w;g++)if(d[g]!==b.getUint8(v+g,!1))return!1;return!0}var p=function(d){if(typeof d=="string"){for(var b=new Uint8Array(d.length),v=0;v<d.length;v++)b[v]=255&d.charCodeAt(v);return b.buffer||b}return d}(m);return function(d){var b=new DataView(d),v=b.getUint32(80,!0);if(84+v*50===b.byteLength)return!0;for(var g=[115,111,108,105,100],w=0;5>w;w++)if(y(g,b,w))return!1;return!0}(p)?function(d){for(var b,v,g,w,_,E,S,x,T=new DataView(d),C=T.getUint32(80,!0),L=!1,A=0;A<70;A++)T.getUint32(A,!1)==1129270351&&T.getUint8(A+4)==82&&T.getUint8(A+5)==61&&(L=!0,w=new Float32Array(3*(3*C)),_=T.getUint8(A+6)/255,E=T.getUint8(A+7)/255,S=T.getUint8(A+8)/255,x=T.getUint8(A+9)/255);for(var R=new c.BufferGeometry,I=new Float32Array(3*(3*C)),O=new Float32Array(3*(3*C)),N=0;N<C;N++){var M=84+N*50,P=T.getFloat32(M,!0),B=T.getFloat32(M+4,!0),D=T.getFloat32(M+8,!0);if(L){var V=T.getUint16(M+48,!0);32768&V?(b=_,v=E,g=S):(b=(31&V)/31,v=(31&V>>5)/31,g=(31&V>>10)/31)}for(var G=1;3>=G;G++){var H=M+12*G,K=3*(3*N)+3*(G-1);I[K]=T.getFloat32(H,!0),I[K+1]=T.getFloat32(H+4,!0),I[K+2]=T.getFloat32(H+8,!0),O[K]=P,O[K+1]=B,O[K+2]=D,L&&(w[K]=b,w[K+1]=v,w[K+2]=g)}}return R.setAttribute("position",new c.BufferAttribute(I,3)),R.setAttribute("normal",new c.BufferAttribute(O,3)),L&&(R.setAttribute("color",new c.BufferAttribute(w,3)),R.hasColors=!0,R.alpha=x),R}(p):function(d){for(var b,v=new c.BufferGeometry,g=/solid([\s\S]*?)endsolid/g,w=/facet([\s\S]*?)endfacet/g,_=0,E=/[\s]+([+-]?(?:\d*)(?:\.\d*)?(?:[eE][+-]?\d+)?)/.source,S=new RegExp("vertex"+E+E+E,"g"),x=new RegExp("normal"+E+E+E,"g"),T=[],C=[],L=new c.Vector3,A=0,R=0,I=0;(b=g.exec(d))!==null;){R=I;for(var O=b[0];(b=w.exec(O))!==null;){for(var N=0,M=0,P=b[0];(b=x.exec(P))!==null;)L.x=parseFloat(b[1]),L.y=parseFloat(b[2]),L.z=parseFloat(b[3]),M++;for(;(b=S.exec(P))!==null;)T.push(parseFloat(b[1]),parseFloat(b[2]),parseFloat(b[3])),C.push(L.x,L.y,L.z),N++,I++;M!==1&&console.error("THREE.STLLoader: Something isn't right with the normal of face number "+_),N!==3&&console.error("THREE.STLLoader: Something isn't right with the vertices of face number "+_),_++}var B=R,D=I-R;v.addGroup(B,D,A),A++}return v.setAttribute("position",new c.Float32BufferAttribute(T,3)),v.setAttribute("normal",new c.Float32BufferAttribute(C,3)),v}(function(d){return typeof d=="string"?d:c.LoaderUtils.decodeText(new Uint8Array(d))}(m))}}},(o,l,u)=>{u.r(l),u.d(l,{OBJLoader:()=>_});var c=u(4),f=/^[og]\s*(.+)?/,h=/^mtllib /,m=/^usemtl /,y=/^usemap /,p=new c.Vector3,d=new c.Vector3,b=new c.Vector3,v=new c.Vector3,g=new c.Vector3;function w(){var E={objects:[],object:{},vertices:[],normals:[],colors:[],uvs:[],materials:{},materialLibraries:[],startObject:function(x,T){if(this.object&&this.object.fromDeclaration===!1)return this.object.name=x,void(this.object.fromDeclaration=T!==!1);var C=this.object&&typeof this.object.currentMaterial=="function"?this.object.currentMaterial():void 0;if(this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0),this.object={name:x||"",fromDeclaration:T!==!1,geometry:{vertices:[],normals:[],colors:[],uvs:[],hasUVIndices:!1},materials:[],smooth:!0,startMaterial:function(R,I){var O=this._finalize(!1);O&&(O.inherited||0>=O.groupCount)&&this.materials.splice(O.index,1);var N={index:this.materials.length,name:R||"",mtllib:Array.isArray(I)&&0<I.length?I[I.length-1]:"",smooth:O===void 0?this.smooth:O.smooth,groupStart:O===void 0?0:O.groupEnd,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(P){var B={index:typeof P=="number"?P:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:!1};return B.clone=this.clone.bind(B),B}};return this.materials.push(N),N},currentMaterial:function(){return 0<this.materials.length?this.materials[this.materials.length-1]:void 0},_finalize:function(R){var I=this.currentMaterial();if(I&&I.groupEnd===-1&&(I.groupEnd=this.geometry.vertices.length/3,I.groupCount=I.groupEnd-I.groupStart,I.inherited=!1),R&&1<this.materials.length)for(var O=this.materials.length-1;0<=O;O--)0>=this.materials[O].groupCount&&this.materials.splice(O,1);return R&&this.materials.length===0&&this.materials.push({name:"",smooth:this.smooth}),I}},C&&C.name&&typeof C.clone=="function"){var L=C.clone(0);L.inherited=!0,this.object.materials.push(L)}this.objects.push(this.object)},finalize:function(){this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0)},parseVertexIndex:function(x,T){var C=parseInt(x,10);return 3*(0<=C?C-1:C+T/3)},parseNormalIndex:function(x,T){var C=parseInt(x,10);return 3*(0<=C?C-1:C+T/3)},parseUVIndex:function(x,T){var C=parseInt(x,10);return 2*(0<=C?C-1:C+T/2)},addVertex:function(x,T,C){var L=this.vertices,A=this.object.geometry.vertices;A.push(L[x+0],L[x+1],L[x+2]),A.push(L[T+0],L[T+1],L[T+2]),A.push(L[C+0],L[C+1],L[C+2])},addVertexPoint:function(x){var T=this.vertices,C=this.object.geometry.vertices;C.push(T[x+0],T[x+1],T[x+2])},addVertexLine:function(x){var T=this.vertices,C=this.object.geometry.vertices;C.push(T[x+0],T[x+1],T[x+2])},addNormal:function(x,T,C){var L=this.normals,A=this.object.geometry.normals;A.push(L[x+0],L[x+1],L[x+2]),A.push(L[T+0],L[T+1],L[T+2]),A.push(L[C+0],L[C+1],L[C+2])},addFaceNormal:function(x,T,C){var L=this.vertices,A=this.object.geometry.normals;p.fromArray(L,x),d.fromArray(L,T),b.fromArray(L,C),g.subVectors(b,d),v.subVectors(p,d),g.cross(v),g.normalize(),A.push(g.x,g.y,g.z),A.push(g.x,g.y,g.z),A.push(g.x,g.y,g.z)},addColor:function(x,T,C){var L=this.colors,A=this.object.geometry.colors;L[x]!==void 0&&A.push(L[x+0],L[x+1],L[x+2]),L[T]!==void 0&&A.push(L[T+0],L[T+1],L[T+2]),L[C]!==void 0&&A.push(L[C+0],L[C+1],L[C+2])},addUV:function(x,T,C){var L=this.uvs,A=this.object.geometry.uvs;A.push(L[x+0],L[x+1]),A.push(L[T+0],L[T+1]),A.push(L[C+0],L[C+1])},addDefaultUV:function(){var x=this.object.geometry.uvs;x.push(0,0),x.push(0,0),x.push(0,0)},addUVLine:function(x){var T=this.uvs,C=this.object.geometry.uvs;C.push(T[x+0],T[x+1])},addFace:function(x,T,C,L,A,R,I,O,N){var M=this.vertices.length,P=this.parseVertexIndex(x,M),B=this.parseVertexIndex(T,M),D=this.parseVertexIndex(C,M);if(this.addVertex(P,B,D),this.addColor(P,B,D),I!==void 0&&I!==""){var V=this.normals.length;P=this.parseNormalIndex(I,V),B=this.parseNormalIndex(O,V),D=this.parseNormalIndex(N,V),this.addNormal(P,B,D)}else this.addFaceNormal(P,B,D);if(L!==void 0&&L!==""){var G=this.uvs.length;P=this.parseUVIndex(L,G),B=this.parseUVIndex(A,G),D=this.parseUVIndex(R,G),this.addUV(P,B,D),this.object.geometry.hasUVIndices=!0}else this.addDefaultUV()},addPointGeometry:function(x){this.object.geometry.type="Points";for(var T,C=this.vertices.length,L=0,A=x.length;L<A;L++)T=this.parseVertexIndex(x[L],C),this.addVertexPoint(T),this.addColor(T)},addLineGeometry:function(x,T){this.object.geometry.type="Line";for(var C=this.vertices.length,L=this.uvs.length,A=0,R=x.length;A<R;A++)this.addVertexLine(this.parseVertexIndex(x[A],C));for(var I=0,O=T.length;I<O;I++)this.addUVLine(this.parseUVIndex(T[I],L))}};return E.startObject("",!1),E}class _ extends c.Loader{constructor(S){super(S),this.materials=null}load(S,x,T,C){var L=this,A=new c.FileLoader(this.manager);A.setPath(this.path),A.setRequestHeader(this.requestHeader),A.setWithCredentials(this.withCredentials),A.load(S,function(R){try{x(L.parse(R))}catch(I){C?C(I):console.error(I),L.manager.itemError(S)}},T,C)}setMaterials(S){return this.materials=S,this}parse(S){var x=new w;S.indexOf(`\r
3228
3228
  `)!==-1&&(S=S.replace(/\r\n/g,`
3229
3229
  `)),S.indexOf(`\\
3230
3230
  `)!==-1&&(S=S.replace(/\\\n/g,""));for(var T=S.split(`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abi-software/scaffoldvuer",
3
- "version": "1.4.0",
3
+ "version": "1.4.1",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -55,7 +55,7 @@
55
55
  "vue": "^3.4.15",
56
56
  "vue-router": "^4.2.5",
57
57
  "vue3-component-svg-sprite": "^0.0.1",
58
- "zincjs": "^1.11.1"
58
+ "zincjs": "^1.11.4"
59
59
  },
60
60
  "devDependencies": {
61
61
  "@vitejs/plugin-vue": "^4.6.2",