@jdultra/threedtiles 13.3.5 → 13.3.6
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.
- package/dist/assets/PointsManager.worker-dH1fNyu8.js.map +1 -1
- package/dist/splats/SplatsMesh.d.ts +2 -2
- package/dist/splats/SplatsMeshCompatibility.d.ts +1 -1
- package/dist/splats/SplatsMeshQuality.d.ts +1 -1
- package/dist/splats/SplatsMeshScreenSpace.d.ts +1 -1
- package/dist/splats/SplatsMeshWorldSpeed.d.ts +1 -1
- package/dist/threedtiles.cjs.js +19 -20
- package/dist/threedtiles.cjs.js.map +1 -1
- package/dist/threedtiles.es.js +3960 -3949
- package/dist/threedtiles.es.js.map +1 -1
- package/dist/threedtiles.umd.js +17 -18
- package/dist/threedtiles.umd.js.map +1 -1
- package/dist/tileset/OGC3DTile.d.ts +1 -1
- package/package.json +11 -11
package/dist/threedtiles.umd.js
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_e,f){typeof exports=="object"&&typeof module<"u"?f(exports,require("three")):typeof define=="function"&&define.amd?define(["exports","three"],f):f((_e=typeof globalThis<"u"?globalThis:_e||self).threedtiles={},_e.THREE)})(this,function(_e,f){"use strict";function to(r){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const a in r)if(a!=="default"){const t=Object.getOwnPropertyDescriptor(r,a);Object.defineProperty(e,a,t.get?t:{enumerable:!0,get:()=>r[a]})}}return e.default=r,Object.freeze(e)}const G=to(f),Ze=new f.Matrix3,ge=new f.Vector3,Sr=new f.Vector3,Tr=new f.Box3,rt=new f.Matrix4,Nr=new f.Matrix4,Ur=new f.Ray;class Ke{constructor(e){this.isOBB=!0,this.center=new f.Vector3(e[0],e[1],e[2]),this.e1=new f.Vector3(e[3],e[4],e[5]),this.e2=new f.Vector3(e[6],e[7],e[8]),this.e3=new f.Vector3(e[9],e[10],e[11]),this.halfSize=new f.Vector3(this.e1.length(),this.e2.length(),this.e3.length()),this.e1.normalize(),this.e2.normalize(),this.e3.normalize(),this.rotationMatrix=new f.Matrix3,this.rotationMatrix.set(this.e1.x,this.e2.x,this.e3.x,this.e1.y,this.e2.y,this.e3.y,this.e1.z,this.e2.z,this.e3.z)}copy(e){this.center.copy(e.center),this.rotationMatrix.copy(e.rotationMatrix),this.halfSize.copy(e.halfSize),this.e1.copy(e.e1),this.e2.copy(e.e2),this.e3.copy(e.e3)}getSize(e){return e.copy(this.halfSize).multiplyScalar(2)}applyMatrix4(e){const a=e.elements;let t=ge.set(a[0],a[1],a[2]).length();const i=ge.set(a[4],a[5],a[6]).length(),n=ge.set(a[8],a[9],a[10]).length();e.determinant()<0&&(t=-t),Ze.setFromMatrix4(e);const o=1/t,s=1/i,c=1/n;return Ze.elements[0]*=o,Ze.elements[1]*=o,Ze.elements[2]*=o,Ze.elements[3]*=s,Ze.elements[4]*=s,Ze.elements[5]*=s,Ze.elements[6]*=c,Ze.elements[7]*=c,Ze.elements[8]*=c,this.rotationMatrix.premultiply(Ze),this.halfSize.x*=t,this.halfSize.y*=i,this.halfSize.z*=n,this.center.applyMatrix4(e),this.rotationMatrix.extractBasis(this.e1,this.e2,this.e3),this}intersectRay(e,a){return this.getSize(Sr),Tr.setFromCenterAndSize(ge.set(0,0,0),Sr),rt.setFromMatrix3(this.rotationMatrix),rt.setPosition(this.center),Nr.copy(rt).invert(),Ur.copy(e).applyMatrix4(Nr),Ur.intersectBox(Tr,a)?a.applyMatrix4(rt):null}clampPoint(e,a){ge.copy(e).sub(this.center);const t=ge.dot(this.e1),i=ge.dot(this.e2),n=ge.dot(this.e3),o=Math.max(-this.halfSize.x,Math.min(this.halfSize.x,t)),s=Math.max(-this.halfSize.y,Math.min(this.halfSize.y,i)),c=Math.max(-this.halfSize.z,Math.min(this.halfSize.z,n));return a.copy(this.center).addScaledVector(this.e1,o).addScaledVector(this.e2,s).addScaledVector(this.e3,c)}intersectsSphere(e){return this.clampPoint(e.center,ge),ge.distanceToSquared(e.center)<=e.radius*e.radius}intersectsOBB(e,a=Number.EPSILON){const t=[this.e1,this.e2,this.e3],i=[e.e1,e.e2,e.e3],n=[this.halfSize.x,this.halfSize.y,this.halfSize.z],o=[e.halfSize.x,e.halfSize.y,e.halfSize.z],s=[[0,0,0],[0,0,0],[0,0,0]],c=[[0,0,0],[0,0,0],[0,0,0]];for(let b=0;b<3;++b)for(let h=0;h<3;++h)s[b][h]=t[b].dot(i[h]),c[b][h]=Math.abs(s[b][h])+a;ge.subVectors(e.center,this.center);const u=[ge.dot(t[0]),ge.dot(t[1]),ge.dot(t[2])];let A,d;for(let b=0;b<3;++b)if(A=n[b],d=o[0]*c[b][0]+o[1]*c[b][1]+o[2]*c[b][2],Math.abs(u[b])>A+d)return!1;for(let b=0;b<3;++b)if(A=n[0]*c[0][b]+n[1]*c[1][b]+n[2]*c[2][b],d=o[b],Math.abs(u[0]*s[0][b]+u[1]*s[1][b]+u[2]*s[2][b])>A+d)return!1;return A=n[1]*c[2][0]+n[2]*c[1][0],d=o[1]*c[0][2]+o[2]*c[0][1],!(Math.abs(u[2]*s[1][0]-u[1]*s[2][0])>A+d)&&(A=n[1]*c[2][1]+n[2]*c[1][1],d=o[0]*c[0][2]+o[2]*c[0][0],!(Math.abs(u[2]*s[1][1]-u[1]*s[2][1])>A+d)&&(A=n[1]*c[2][2]+n[2]*c[1][2],d=o[0]*c[0][1]+o[1]*c[0][0],!(Math.abs(u[2]*s[1][2]-u[1]*s[2][2])>A+d)&&(A=n[0]*c[2][0]+n[2]*c[0][0],d=o[1]*c[1][2]+o[2]*c[1][1],!(Math.abs(u[0]*s[2][0]-u[2]*s[0][0])>A+d)&&(A=n[0]*c[2][1]+n[2]*c[0][1],d=o[0]*c[1][2]+o[2]*c[1][0],!(Math.abs(u[0]*s[2][1]-u[2]*s[0][1])>A+d)&&(A=n[0]*c[2][2]+n[2]*c[0][2],d=o[0]*c[1][1]+o[1]*c[1][0],!(Math.abs(u[0]*s[2][2]-u[2]*s[0][2])>A+d)&&(A=n[0]*c[1][0]+n[1]*c[0][0],d=o[1]*c[2][2]+o[2]*c[2][1],!(Math.abs(u[1]*s[0][0]-u[0]*s[1][0])>A+d)&&(A=n[0]*c[1][1]+n[1]*c[0][1],d=o[0]*c[2][2]+o[2]*c[2][0],!(Math.abs(u[1]*s[0][1]-u[0]*s[1][1])>A+d)&&(A=n[0]*c[1][2]+n[1]*c[0][2],d=o[0]*c[2][1]+o[1]*c[2][0],!(Math.abs(u[1]*s[0][2]-u[0]*s[1][2])>A+d)))))))))}intersectsRay(e){return this.intersectRay(e,ge)!==null}insidePlane(e){e.normal.normalize();const a=this.halfSize.x*Math.abs(e.normal.dot(this.e1))+this.halfSize.y*Math.abs(e.normal.dot(this.e2))+this.halfSize.z*Math.abs(e.normal.dot(this.e3));return e.distanceToPoint(this.center)>-a}inFrustum(e){for(let a=0;a<6;a++){const t=e.planes[a];if(!this.insidePlane(t))return!1}return!0}distanceToPoint(e){ge.copy(e),ge.sub(this.center),ge.applyMatrix3(this.rotationMatrix);let a=Math.max(0,Math.max(-this.halfSize.x-ge.x,ge.x-this.halfSize.x)),t=Math.max(0,Math.max(-this.halfSize.y-ge.y,ge.y-this.halfSize.y)),i=Math.max(0,Math.max(-this.halfSize.z-ge.z,ge.z-this.halfSize.z));return Math.sqrt(a*a+t*t+i*i)}helper(){const e=this.halfSize,a=this.center,t=this.e1,i=this.e2,n=this.e3,o=[new f.Vector3().copy(a).add(t.clone().multiplyScalar(e.x)).add(i.clone().multiplyScalar(e.y)).add(n.clone().multiplyScalar(e.z)),new f.Vector3().copy(a).add(t.clone().multiplyScalar(-e.x)).add(i.clone().multiplyScalar(e.y)).add(n.clone().multiplyScalar(e.z)),new f.Vector3().copy(a).add(t.clone().multiplyScalar(-e.x)).add(i.clone().multiplyScalar(-e.y)).add(n.clone().multiplyScalar(e.z)),new f.Vector3().copy(a).add(t.clone().multiplyScalar(e.x)).add(i.clone().multiplyScalar(-e.y)).add(n.clone().multiplyScalar(e.z)),new f.Vector3().copy(a).add(t.clone().multiplyScalar(e.x)).add(i.clone().multiplyScalar(e.y)).add(n.clone().multiplyScalar(-e.z)),new f.Vector3().copy(a).add(t.clone().multiplyScalar(-e.x)).add(i.clone().multiplyScalar(e.y)).add(n.clone().multiplyScalar(-e.z)),new f.Vector3().copy(a).add(t.clone().multiplyScalar(-e.x)).add(i.clone().multiplyScalar(-e.y)).add(n.clone().multiplyScalar(-e.z)),new f.Vector3().copy(a).add(t.clone().multiplyScalar(e.x)).add(i.clone().multiplyScalar(-e.y)).add(n.clone().multiplyScalar(-e.z))],s=new f.BufferGeometry().setFromPoints(o);s.setIndex([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]),s.computeBoundingSphere();const c=new f.LineBasicMaterial({color:16711680}),u=new f.LineSegments(s,c);return u.dispose=()=>{c.dispose(),s.dispose()},u}}/**
|
|
2
2
|
* @copyright 2021 Aaron Zhao <yujianzhao2013@gmail.com>
|
|
3
3
|
* @license MIT
|
|
4
4
|
* Linked hash map data structure
|
|
5
5
|
* @class LinkedHashMap
|
|
6
|
-
*/class _r{constructor(){this._data=new Map,this._link=new Map,this._head=void 0,this._tail=void 0}put(e,a,t=!1){this.has(e)?this._data.set(e,a):(this._data.set(e,a),this._link.set(e,{previous:void 0,next:void 0}),this._head==null?(this._head=e,this._tail=e):t?(this._link.get(this._head).previous=e,this._link.get(e).next=this._head,this._head=e):(this._link.get(this._tail).next=e,this._link.get(e).previous=this._tail,this._tail=e))}head(){return{key:this._head,value:this.get(this._head),next:()=>this.next(this._head),previous:()=>null}}tail(){return{key:this._tail,value:this.get(this._tail),next:()=>null,previous:()=>this.previous(this._tail)}}get(e){return this._data.get(e)}previousKey(e){const a=this._link.get(e);return a!=null?a.previous:void 0}previousValue(e){return this.get(this.previousKey(e))}previous(e){const a=this.previousKey(e);return{key:a,value:this.get(a),next:()=>this.next(a),previous:()=>this.previous(a)}}nextKey(e){const a=this._link.get(e);return a!=null?a.next:void 0}nextValue(e){return this.get(this.nextKey(e))}next(e){const a=this.nextKey(e);return{key:a,value:this.get(a),next:()=>this.next(a),previous:()=>this.previous(a)}}remove(e){const a=this._data.get(e);if(a!=null)if(this.size()===1)this.reset();else{if(e===this._head){const t=this._link.get(this._head);this._link.get(t.next).previous=null,this._head=t.next}else if(e===this._tail){const t=this._link.get(this._tail);this._link.get(t.previous).next=null,this._tail=t.previous}else{const t=this._link.get(e),i=this._link.get(t.previous),n=this._link.get(t.next);i.next=t.next,n.previous=t.previous}this._link.delete(e),this._data.delete(e)}return a}has(e){return this._data.has(e)}size(){return this._data.size}reset(){this._data.clear(),this._link.clear(),this._head=void 0,this._tail=void 0}keys(){return this._data.keys()}values(){return this._data.values()}entries(){return this._data.entries()}toArray(e="orderByInsert"){if(e!=="orderByInsert"){const a=[];let t=this._head;for(;t!=null;)a.push({key:t,value:this.get(t)}),t=this.nextKey(t);return a}return Array.from(this.keys()).map(a=>({key:a,value:this.get(a)}))}}const to=new TextDecoder;class Pr{constructor(e,a,t,i){this.buffer=e,this.binOffset=a+t,this.binLength=i;let n=null;if(t!==0)try{const o=new Uint8Array(e,a,t);n=JSON.parse(to.decode(o))}catch{n={}}else n={};this.header=n}getKeys(){return Object.keys(this.header)}getData(e,a,t=null,i=null){const n=this.header;if(!(e in n))return null;const o=n[e];if(o instanceof Object){if(Array.isArray(o))return o;{const{buffer:s,binOffset:A,binLength:u}=this,c=o.byteOffset||0,d=o.type||i,l=o.componentType||t;if("type"in o&&i&&o.type!==i)throw new Error("FeatureTable: Specified type does not match expected type.");let h,b;switch(d){case"SCALAR":h=1;break;case"VEC2":h=2;break;case"VEC3":h=3;break;case"VEC4":h=4;break;default:throw new Error(`FeatureTable : Feature type not provided for "${e}".`)}const g=A+c,p=a*h;switch(l){case"BYTE":b=new Int8Array(s,g,p);break;case"UNSIGNED_BYTE":b=new Uint8Array(s,g,p);break;case"SHORT":b=new Int16Array(s,g,p);break;case"UNSIGNED_SHORT":b=new Uint16Array(s,g,p);break;case"INT":b=new Int32Array(s,g,p);break;case"UNSIGNED_INT":b=new Uint32Array(s,g,p);break;case"FLOAT":b=new Float32Array(s,g,p);break;case"DOUBLE":b=new Float64Array(s,g,p);break;default:throw new Error(`FeatureTable : Feature component type not provided for "${e}".`)}if(g+p*b.BYTES_PER_ELEMENT>A+u)throw new Error("FeatureTable: Feature data read outside binary body length.");return b}}return o}}class ro extends Pr{constructor(e,a,t,i,n){super(e,t,i,n),this.batchSize=a}getData(e,a=null,t=null){return super.getData(e,this.batchSize,a,t)}}function zr(r){let e,a,t,i=-1,n=0;for(let u=0;u<r.length;++u){const c=r[u];if(e===void 0&&(e=c.array.constructor),e!==c.array.constructor)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes."),null;if(a===void 0&&(a=c.itemSize),a!==c.itemSize)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes."),null;if(t===void 0&&(t=c.normalized),t!==c.normalized)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes."),null;if(i===-1&&(i=c.gpuType),i!==c.gpuType)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.gpuType must be consistent across matching attributes."),null;n+=c.count*a}const o=new e(n),s=new f.BufferAttribute(o,a,t);let A=0;for(let u=0;u<r.length;++u){const c=r[u];if(c.isInterleavedBufferAttribute){const d=A/a;for(let l=0,h=c.count;l<h;l++)for(let b=0;b<a;b++){const g=c.getComponent(l,b);s.setComponent(l+d,b,g)}}else o.set(c.array,A);A+=c.count*a}return i!==void 0&&(s.gpuType=i),s}function Hr(r,e){if(e===f.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),r;if(e===f.TriangleFanDrawMode||e===f.TriangleStripDrawMode){let a=r.getIndex();if(a===null){const o=[],s=r.getAttribute("position");if(s===void 0)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),r;for(let A=0;A<s.count;A++)o.push(A);r.setIndex(o),a=r.getIndex()}const t=a.count-2,i=[];if(e===f.TriangleFanDrawMode)for(let o=1;o<=t;o++)i.push(a.getX(0)),i.push(a.getX(o)),i.push(a.getX(o+1));else for(let o=0;o<t;o++)o%2==0?(i.push(a.getX(o)),i.push(a.getX(o+1)),i.push(a.getX(o+2))):(i.push(a.getX(o+2)),i.push(a.getX(o+1)),i.push(a.getX(o)));i.length/3!==t&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const n=r.clone();return n.setIndex(i),n.clearGroups(),n}return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",e),r}class Or{constructor(e){Sa(this,"checkLoaderInitialized",async()=>new Promise(e=>{const a=setInterval(()=>{this.gltfLoader.hasDracoLoader&&!this.gltfLoader.dracoLoader||this.gltfLoader.hasKTX2Loader&&!this.gltfLoader.ktx2Loader||(clearInterval(a),e())},10)}));this.gltfLoader=e,this.tempMatrix=new L.Matrix4,this.zUpToYUpMatrix=new L.Matrix4,this.zUpToYUpMatrix.set(1,0,0,0,0,0,-1,0,0,1,0,0,0,0,0,1)}parseB3DM(e,a,t,i){const n=this,o=new DataView(e),s=String.fromCharCode(o.getUint8(0))+String.fromCharCode(o.getUint8(1))+String.fromCharCode(o.getUint8(2))+String.fromCharCode(o.getUint8(3));console.assert(s==="b3dm");const A=o.getUint32(8,!0);console.assert(A===e.byteLength);const u=o.getUint32(12,!0),c=o.getUint32(16,!0),d=o.getUint32(20,!0),l=o.getUint32(24,!0),h=new Pr(e,28,u,c),b=28+u+c;new ro(e,h.getData("BATCH_LENGTH"),b,d,l);const g=b+d+l,p=new Uint8Array(e,g,A-g).slice().buffer;return new Promise(async(E,m)=>{await this.checkLoaderInitialized(),this.gltfLoader.parse(p,null,C=>{const I=h.getData("RTC_CENTER");I?(this.tempMatrix.makeTranslation(I[0],I[1],I[2]),C.scene.applyMatrix4(this.tempMatrix)):C.userData.gltfExtensions&&C.userData.gltfExtensions.CESIUM_RTC&&(this.tempMatrix.makeTranslation(C.userData.gltfExtensions.CESIUM_RTC.center[0],C.userData.gltfExtensions.CESIUM_RTC.center[1],C.userData.gltfExtensions.CESIUM_RTC.center[2]),C.scene.applyMatrix4(this.tempMatrix)),t&&C.scene.applyMatrix4(n.zUpToYUpMatrix),C.scene.asset=C.asset,C.scene.traverse(w=>{w.isMesh&&(i&&w.applyMatrix4(n.zUpToYUpMatrix),a&&a(w))}),E(C.scene)},C=>{console.error(C)})})}parseB3DMInstanced(e,a,t,i,n){return this.parseB3DM(e,a,i,n).then(o=>{let s,A=[],u=[];o.updateWorldMatrix(!1,!0),o.traverse(d=>{d.isMesh&&(d.geometry.applyMatrix4(d.matrixWorld),A.push(d.geometry),u.push(d.material))});let c=function(d){let l=new Set;return d.forEach(b=>{for(let g in b.attributes)l.add(g)}),d.forEach(b=>{l.forEach(g=>{if(!b.attributes[g]){const p=function(m){switch(m){case"position":case"normal":case"color":return 3;case"uv":case"uv2":return 2;default:throw new Error(`Unknown attribute ${m}`)}}(g),E=new Float32Array(p*b.getAttribute("position").count).fill(0);b.setAttribute(g,new L.BufferAttribute(E,p))}})}),function(b,g=!1){const p=b[0].index!==null,E=new Set(Object.keys(b[0].attributes)),m=new Set(Object.keys(b[0].morphAttributes)),C={},I={},w=b[0].morphTargetsRelative,D=new f.BufferGeometry;let x=0;for(let y=0;y<b.length;++y){const F=b[y];let M=0;if(p!==(F.index!==null))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+y+". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."),null;for(const S in F.attributes){if(!E.has(S))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+y+'. All geometries must have compatible attributes; make sure "'+S+'" attribute exists among all geometries, or in none of them.'),null;C[S]===void 0&&(C[S]=[]),C[S].push(F.attributes[S]),M++}if(M!==E.size)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+y+". Make sure all geometries have the same number of attributes."),null;if(w!==F.morphTargetsRelative)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+y+". .morphTargetsRelative must be consistent throughout all geometries."),null;for(const S in F.morphAttributes){if(!m.has(S))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+y+". .morphAttributes must be consistent throughout all geometries."),null;I[S]===void 0&&(I[S]=[]),I[S].push(F.morphAttributes[S])}if(g){let S;if(p)S=F.index.count;else{if(F.attributes.position===void 0)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+y+". The geometry must have either an index or a position attribute"),null;S=F.attributes.position.count}D.addGroup(x,S,y),x+=S}}if(p){let y=0;const F=[];for(let M=0;M<b.length;++M){const S=b[M].index;for(let z=0;z<S.count;++z)F.push(S.getX(z)+y);y+=b[M].attributes.position.count}D.setIndex(F)}for(const y in C){const F=zr(C[y]);if(!F)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+y+" attribute."),null;D.setAttribute(y,F)}for(const y in I){const F=I[y][0].length;if(F===0)break;D.morphAttributes=D.morphAttributes||{},D.morphAttributes[y]=[];for(let M=0;M<F;++M){const S=[];for(let O=0;O<I[y].length;++O)S.push(I[y][O][M]);const z=zr(S);if(!z)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+y+" morphAttribute."),null;D.morphAttributes[y].push(z)}}return D}(d,!0)}(A);return s=new L.InstancedMesh(c,u,t),s.baseMatrix=new L.Matrix4().identity(),s})}}const Se=[];for(let r=0;r<256;++r)Se.push((r+256).toString(16).slice(1));let Ut;const io=new Uint8Array(16),qr={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Jr(r,e,a){var i;if(qr.randomUUID&&!r)return qr.randomUUID();const t=(r=r||{}).random??((i=r.rng)==null?void 0:i.call(r))??function(){if(!Ut){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");Ut=crypto.getRandomValues.bind(crypto)}return Ut(io)}();if(t.length<16)throw new Error("Random bytes length must be >= 16");return t[6]=15&t[6]|64,t[8]=63&t[8]|128,function(n,o=0){return(Se[n[o+0]]+Se[n[o+1]]+Se[n[o+2]]+Se[n[o+3]]+"-"+Se[n[o+4]]+Se[n[o+5]]+"-"+Se[n[o+6]]+Se[n[o+7]]+"-"+Se[n[o+8]]+Se[n[o+9]]+"-"+Se[n[o+10]]+Se[n[o+11]]+Se[n[o+12]]+Se[n[o+13]]+Se[n[o+14]]+Se[n[o+15]]).toLowerCase()}(t)}class no{constructor(e,a){Sa(this,"checkLoaderInitialized",async()=>{const e=this;return new Promise(a=>{const t=setInterval(()=>{e.gltfLoader.hasDracoLoader&&!e.gltfLoader.dracoLoader||e.gltfLoader.hasKTX2Loader&&!e.gltfLoader.ktx2Loader||(clearInterval(t),a())},10)})});this.renderer=a,this.gltfLoader=e}parseSplats(e,a,t,i){const n=this;return new Promise(async(o,s)=>{await n.checkLoaderInitialized(),n.gltfLoader.parse(e,null,A=>{A.scene;const u=A.scene.children[0],c=u.geometry.attributes.position,d=u.geometry.attributes.color,l=u.geometry.attributes.cov_0,h=u.geometry.attributes.cov_1,b=i.addSplatsTile(c,d,l,h);A.scene.traverse(g=>{g.dispose&&g.dispose()}),o(b)},A=>{console.error(A)})})}}class Kr extends f.Loader{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(a){return new uo(a)}),this.register(function(a){return new ho(a)}),this.register(function(a){return new Io(a)}),this.register(function(a){return new Bo(a)}),this.register(function(a){return new yo(a)}),this.register(function(a){return new bo(a)}),this.register(function(a){return new go(a)}),this.register(function(a){return new fo(a)}),this.register(function(a){return new po(a)}),this.register(function(a){return new co(a)}),this.register(function(a){return new mo(a)}),this.register(function(a){return new lo(a)}),this.register(function(a){return new Co(a)}),this.register(function(a){return new Eo(a)}),this.register(function(a){return new so(a)}),this.register(function(a){return new Do(a)}),this.register(function(a){return new wo(a)})}load(e,a,t,i){const n=this;let o;if(this.resourcePath!=="")o=this.resourcePath;else if(this.path!==""){const u=f.LoaderUtils.extractUrlBase(e);o=f.LoaderUtils.resolveURL(u,this.path)}else o=f.LoaderUtils.extractUrlBase(e);this.manager.itemStart(e);const s=function(u){i?i(u):console.error(u),n.manager.itemError(e),n.manager.itemEnd(e)},A=new f.FileLoader(this.manager);A.setPath(this.path),A.setResponseType("arraybuffer"),A.setRequestHeader(this.requestHeader),A.setWithCredentials(this.withCredentials),A.load(e,function(u){try{n.parse(u,o,function(c){a(c),n.manager.itemEnd(e)},s)}catch(c){s(c)}},t,s)}setDRACOLoader(e){return this.dracoLoader=e,this}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,a,t,i){let n;const o={},s={},A=new TextDecoder;if(typeof e=="string")n=JSON.parse(e);else if(e instanceof ArrayBuffer)if(A.decode(new Uint8Array(e,0,4))===Vr){try{o[ae.KHR_BINARY_GLTF]=new Fo(e)}catch(c){return void(i&&i(c))}n=JSON.parse(o[ae.KHR_BINARY_GLTF].content)}else n=JSON.parse(A.decode(e));else n=e;if(n.asset===void 0||n.asset.version[0]<2)return void(i&&i(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.")));const u=new Po(n,{path:a||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});u.fileLoader.setRequestHeader(this.requestHeader);for(let c=0;c<this.pluginCallbacks.length;c++){const d=this.pluginCallbacks[c](u);d.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),s[d.name]=d,o[d.name]=!0}if(n.extensionsUsed)for(let c=0;c<n.extensionsUsed.length;++c){const d=n.extensionsUsed[c],l=n.extensionsRequired||[];switch(d){case ae.KHR_MATERIALS_UNLIT:o[d]=new Ao;break;case ae.KHR_DRACO_MESH_COMPRESSION:o[d]=new Qo(n,this.dracoLoader);break;case ae.KHR_TEXTURE_TRANSFORM:o[d]=new ko;break;case ae.KHR_MESH_QUANTIZATION:o[d]=new jo;break;default:l.indexOf(d)>=0&&s[d]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+d+'".')}}u.setExtensions(o),u.setPlugins(s),u.parse(t,i)}parseAsync(e,a){const t=this;return new Promise(function(i,n){t.parse(e,a,i,n)})}}function oo(){let r={};return{get:function(e){return r[e]},add:function(e,a){r[e]=a},remove:function(e){delete r[e]},removeAll:function(){r={}}}}const ae={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class so{constructor(e){this.parser=e,this.name=ae.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,a=this.parser.json.nodes||[];for(let t=0,i=a.length;t<i;t++){const n=a[t];n.extensions&&n.extensions[this.name]&&n.extensions[this.name].light!==void 0&&e._addNodeRef(this.cache,n.extensions[this.name].light)}}_loadLight(e){const a=this.parser,t="light:"+e;let i=a.cache.get(t);if(i)return i;const n=a.json,o=((n.extensions&&n.extensions[this.name]||{}).lights||[])[e];let s;const A=new f.Color(16777215);o.color!==void 0&&A.setRGB(o.color[0],o.color[1],o.color[2],f.LinearSRGBColorSpace);const u=o.range!==void 0?o.range:0;switch(o.type){case"directional":s=new f.DirectionalLight(A),s.target.position.set(0,0,-1),s.add(s.target);break;case"point":s=new f.PointLight(A),s.distance=u;break;case"spot":s=new f.SpotLight(A),s.distance=u,o.spot=o.spot||{},o.spot.innerConeAngle=o.spot.innerConeAngle!==void 0?o.spot.innerConeAngle:0,o.spot.outerConeAngle=o.spot.outerConeAngle!==void 0?o.spot.outerConeAngle:Math.PI/4,s.angle=o.spot.outerConeAngle,s.penumbra=1-o.spot.innerConeAngle/o.spot.outerConeAngle,s.target.position.set(0,0,-1),s.add(s.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+o.type)}return s.position.set(0,0,0),ca(s,o),o.intensity!==void 0&&(s.intensity=o.intensity),s.name=a.createUniqueName(o.name||"light_"+e),i=Promise.resolve(s),a.cache.add(t,i),i}getDependency(e,a){if(e==="light")return this._loadLight(a)}createNodeAttachment(e){const a=this,t=this.parser,i=t.json.nodes[e],n=(i.extensions&&i.extensions[this.name]||{}).light;return n===void 0?null:this._loadLight(n).then(function(o){return t._getNodeRef(a.cache,n,o)})}}class Ao{constructor(){this.name=ae.KHR_MATERIALS_UNLIT}getMaterialType(){return f.MeshBasicMaterial}extendParams(e,a,t){const i=[];e.color=new f.Color(1,1,1),e.opacity=1;const n=a.pbrMetallicRoughness;if(n){if(Array.isArray(n.baseColorFactor)){const o=n.baseColorFactor;e.color.setRGB(o[0],o[1],o[2],f.LinearSRGBColorSpace),e.opacity=o[3]}n.baseColorTexture!==void 0&&i.push(t.assignTexture(e,"map",n.baseColorTexture,f.SRGBColorSpace))}return Promise.all(i)}}class co{constructor(e){this.parser=e,this.name=ae.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,a){const t=this.parser.json.materials[e];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=t.extensions[this.name].emissiveStrength;return i!==void 0&&(a.emissiveIntensity=i),Promise.resolve()}}class uo{constructor(e){this.parser=e,this.name=ae.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?f.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,i=t.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const n=[],o=i.extensions[this.name];if(o.clearcoatFactor!==void 0&&(a.clearcoat=o.clearcoatFactor),o.clearcoatTexture!==void 0&&n.push(t.assignTexture(a,"clearcoatMap",o.clearcoatTexture)),o.clearcoatRoughnessFactor!==void 0&&(a.clearcoatRoughness=o.clearcoatRoughnessFactor),o.clearcoatRoughnessTexture!==void 0&&n.push(t.assignTexture(a,"clearcoatRoughnessMap",o.clearcoatRoughnessTexture)),o.clearcoatNormalTexture!==void 0&&(n.push(t.assignTexture(a,"clearcoatNormalMap",o.clearcoatNormalTexture)),o.clearcoatNormalTexture.scale!==void 0)){const s=o.clearcoatNormalTexture.scale;a.clearcoatNormalScale=new f.Vector2(s,s)}return Promise.all(n)}}class ho{constructor(e){this.parser=e,this.name=ae.KHR_MATERIALS_DISPERSION}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?f.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser.json.materials[e];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=t.extensions[this.name];return a.dispersion=i.dispersion!==void 0?i.dispersion:0,Promise.resolve()}}class lo{constructor(e){this.parser=e,this.name=ae.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?f.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,i=t.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const n=[],o=i.extensions[this.name];return o.iridescenceFactor!==void 0&&(a.iridescence=o.iridescenceFactor),o.iridescenceTexture!==void 0&&n.push(t.assignTexture(a,"iridescenceMap",o.iridescenceTexture)),o.iridescenceIor!==void 0&&(a.iridescenceIOR=o.iridescenceIor),a.iridescenceThicknessRange===void 0&&(a.iridescenceThicknessRange=[100,400]),o.iridescenceThicknessMinimum!==void 0&&(a.iridescenceThicknessRange[0]=o.iridescenceThicknessMinimum),o.iridescenceThicknessMaximum!==void 0&&(a.iridescenceThicknessRange[1]=o.iridescenceThicknessMaximum),o.iridescenceThicknessTexture!==void 0&&n.push(t.assignTexture(a,"iridescenceThicknessMap",o.iridescenceThicknessTexture)),Promise.all(n)}}class bo{constructor(e){this.parser=e,this.name=ae.KHR_MATERIALS_SHEEN}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?f.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,i=t.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const n=[];a.sheenColor=new f.Color(0,0,0),a.sheenRoughness=0,a.sheen=1;const o=i.extensions[this.name];if(o.sheenColorFactor!==void 0){const s=o.sheenColorFactor;a.sheenColor.setRGB(s[0],s[1],s[2],f.LinearSRGBColorSpace)}return o.sheenRoughnessFactor!==void 0&&(a.sheenRoughness=o.sheenRoughnessFactor),o.sheenColorTexture!==void 0&&n.push(t.assignTexture(a,"sheenColorMap",o.sheenColorTexture,f.SRGBColorSpace)),o.sheenRoughnessTexture!==void 0&&n.push(t.assignTexture(a,"sheenRoughnessMap",o.sheenRoughnessTexture)),Promise.all(n)}}class go{constructor(e){this.parser=e,this.name=ae.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?f.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,i=t.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const n=[],o=i.extensions[this.name];return o.transmissionFactor!==void 0&&(a.transmission=o.transmissionFactor),o.transmissionTexture!==void 0&&n.push(t.assignTexture(a,"transmissionMap",o.transmissionTexture)),Promise.all(n)}}class fo{constructor(e){this.parser=e,this.name=ae.KHR_MATERIALS_VOLUME}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?f.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,i=t.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const n=[],o=i.extensions[this.name];a.thickness=o.thicknessFactor!==void 0?o.thicknessFactor:0,o.thicknessTexture!==void 0&&n.push(t.assignTexture(a,"thicknessMap",o.thicknessTexture)),a.attenuationDistance=o.attenuationDistance||1/0;const s=o.attenuationColor||[1,1,1];return a.attenuationColor=new f.Color().setRGB(s[0],s[1],s[2],f.LinearSRGBColorSpace),Promise.all(n)}}class po{constructor(e){this.parser=e,this.name=ae.KHR_MATERIALS_IOR}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?f.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser.json.materials[e];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=t.extensions[this.name];return a.ior=i.ior!==void 0?i.ior:1.5,Promise.resolve()}}class mo{constructor(e){this.parser=e,this.name=ae.KHR_MATERIALS_SPECULAR}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?f.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,i=t.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const n=[],o=i.extensions[this.name];a.specularIntensity=o.specularFactor!==void 0?o.specularFactor:1,o.specularTexture!==void 0&&n.push(t.assignTexture(a,"specularIntensityMap",o.specularTexture));const s=o.specularColorFactor||[1,1,1];return a.specularColor=new f.Color().setRGB(s[0],s[1],s[2],f.LinearSRGBColorSpace),o.specularColorTexture!==void 0&&n.push(t.assignTexture(a,"specularColorMap",o.specularColorTexture,f.SRGBColorSpace)),Promise.all(n)}}class Eo{constructor(e){this.parser=e,this.name=ae.EXT_MATERIALS_BUMP}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?f.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,i=t.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const n=[],o=i.extensions[this.name];return a.bumpScale=o.bumpFactor!==void 0?o.bumpFactor:1,o.bumpTexture!==void 0&&n.push(t.assignTexture(a,"bumpMap",o.bumpTexture)),Promise.all(n)}}class Co{constructor(e){this.parser=e,this.name=ae.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?f.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,i=t.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const n=[],o=i.extensions[this.name];return o.anisotropyStrength!==void 0&&(a.anisotropy=o.anisotropyStrength),o.anisotropyRotation!==void 0&&(a.anisotropyRotation=o.anisotropyRotation),o.anisotropyTexture!==void 0&&n.push(t.assignTexture(a,"anisotropyMap",o.anisotropyTexture)),Promise.all(n)}}class Io{constructor(e){this.parser=e,this.name=ae.KHR_TEXTURE_BASISU}loadTexture(e){const a=this.parser,t=a.json,i=t.textures[e];if(!i.extensions||!i.extensions[this.name])return null;const n=i.extensions[this.name],o=a.options.ktx2Loader;if(!o){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return a.loadTextureImage(e,n.source,o)}}class Bo{constructor(e){this.parser=e,this.name=ae.EXT_TEXTURE_WEBP}loadTexture(e){const a=this.name,t=this.parser,i=t.json,n=i.textures[e];if(!n.extensions||!n.extensions[a])return null;const o=n.extensions[a],s=i.images[o.source];let A=t.textureLoader;if(s.uri){const u=t.options.manager.getHandler(s.uri);u!==null&&(A=u)}return t.loadTextureImage(e,o.source,A)}}class yo{constructor(e){this.parser=e,this.name=ae.EXT_TEXTURE_AVIF}loadTexture(e){const a=this.name,t=this.parser,i=t.json,n=i.textures[e];if(!n.extensions||!n.extensions[a])return null;const o=n.extensions[a],s=i.images[o.source];let A=t.textureLoader;if(s.uri){const u=t.options.manager.getHandler(s.uri);u!==null&&(A=u)}return t.loadTextureImage(e,o.source,A)}}class Do{constructor(e){this.name=ae.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const a=this.parser.json,t=a.bufferViews[e];if(t.extensions&&t.extensions[this.name]){const i=t.extensions[this.name],n=this.parser.getDependency("buffer",i.buffer),o=this.parser.options.meshoptDecoder;if(!o||!o.supported){if(a.extensionsRequired&&a.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return n.then(function(s){const A=i.byteOffset||0,u=i.byteLength||0,c=i.count,d=i.byteStride,l=new Uint8Array(s,A,u);return o.decodeGltfBufferAsync?o.decodeGltfBufferAsync(c,d,l,i.mode,i.filter).then(function(h){return h.buffer}):o.ready.then(function(){const h=new ArrayBuffer(c*d);return o.decodeGltfBuffer(new Uint8Array(h),c,d,l,i.mode,i.filter),h})})}return null}}class wo{constructor(e){this.name=ae.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const a=this.parser.json,t=a.nodes[e];if(!t.extensions||!t.extensions[this.name]||t.mesh===void 0)return null;const i=a.meshes[t.mesh];for(const A of i.primitives)if(A.mode!==Ve.TRIANGLES&&A.mode!==Ve.TRIANGLE_STRIP&&A.mode!==Ve.TRIANGLE_FAN&&A.mode!==void 0)return null;const n=t.extensions[this.name].attributes,o=[],s={};for(const A in n)o.push(this.parser.getDependency("accessor",n[A]).then(u=>(s[A]=u,s[A])));return o.length<1?null:(o.push(this.parser.createNodeMesh(e)),Promise.all(o).then(A=>{const u=A.pop(),c=u.isGroup?u.children:[u],d=A[0].count,l=[];for(const h of c){const b=new f.Matrix4,g=new f.Vector3,p=new f.Quaternion,E=new f.Vector3(1,1,1),m=new f.InstancedMesh(h.geometry,h.material,d);for(let C=0;C<d;C++)s.TRANSLATION&&g.fromBufferAttribute(s.TRANSLATION,C),s.ROTATION&&p.fromBufferAttribute(s.ROTATION,C),s.SCALE&&E.fromBufferAttribute(s.SCALE,C),m.setMatrixAt(C,b.compose(g,p,E));for(const C in s)if(C==="_COLOR_0"){const I=s[C];m.instanceColor=new f.InstancedBufferAttribute(I.array,I.itemSize,I.normalized)}else C!=="TRANSLATION"&&C!=="ROTATION"&&C!=="SCALE"&&h.geometry.setAttribute(C,s[C]);f.Object3D.prototype.copy.call(m,h),this.parser.assignFinalMaterial(m),l.push(m)}return u.isGroup?(u.clear(),u.add(...l),u):l[0]}))}}const Vr="glTF",xo=1313821514,vo=5130562;class Fo{constructor(e){this.name=ae.KHR_BINARY_GLTF,this.content=null,this.body=null;const a=new DataView(e,0,12),t=new TextDecoder;if(this.header={magic:t.decode(new Uint8Array(e.slice(0,4))),version:a.getUint32(4,!0),length:a.getUint32(8,!0)},this.header.magic!==Vr)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const i=this.header.length-12,n=new DataView(e,12);let o=0;for(;o<i;){const s=n.getUint32(o,!0);o+=4;const A=n.getUint32(o,!0);if(o+=4,A===xo){const u=new Uint8Array(e,12+o,s);this.content=t.decode(u)}else if(A===vo){const u=12+o;this.body=e.slice(u,u+s)}o+=s}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class Qo{constructor(e,a){if(!a)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=ae.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=a,this.dracoLoader.preload()}decodePrimitive(e,a){const t=this.json,i=this.dracoLoader,n=e.extensions[this.name].bufferView,o=e.extensions[this.name].attributes,s={},A={},u={};for(const c in o){const d=Lt[c]||c.toLowerCase();s[d]=o[c]}for(const c in e.attributes){const d=Lt[c]||c.toLowerCase();if(o[c]!==void 0){const l=t.accessors[e.attributes[c]],h=Ra[l.componentType];u[d]=h.name,A[d]=l.normalized===!0}}return a.getDependency("bufferView",n).then(function(c){return new Promise(function(d,l){i.decodeDracoFile(c,function(h){for(const b in h.attributes){const g=h.attributes[b],p=A[b];p!==void 0&&(g.normalized=p)}d(h)},s,u,f.LinearSRGBColorSpace,l)})})}}class ko{constructor(){this.name=ae.KHR_TEXTURE_TRANSFORM}extendTexture(e,a){return(a.texCoord!==void 0&&a.texCoord!==e.channel||a.offset!==void 0||a.rotation!==void 0||a.scale!==void 0)&&(e=e.clone(),a.texCoord!==void 0&&(e.channel=a.texCoord),a.offset!==void 0&&e.offset.fromArray(a.offset),a.rotation!==void 0&&(e.rotation=a.rotation),a.scale!==void 0&&e.repeat.fromArray(a.scale),e.needsUpdate=!0),e}}class jo{constructor(){this.name=ae.KHR_MESH_QUANTIZATION}}class Wr extends f.Interpolant{constructor(e,a,t,i){super(e,a,t,i)}copySampleValue_(e){const a=this.resultBuffer,t=this.sampleValues,i=this.valueSize,n=e*i*3+i;for(let o=0;o!==i;o++)a[o]=t[n+o];return a}interpolate_(e,a,t,i){const n=this.resultBuffer,o=this.sampleValues,s=this.valueSize,A=2*s,u=3*s,c=i-a,d=(t-a)/c,l=d*d,h=l*d,b=e*u,g=b-u,p=-2*h+3*l,E=h-l,m=1-p,C=E-l+d;for(let I=0;I!==s;I++){const w=o[g+I+s],D=o[g+I+A]*c,x=o[b+I+s],y=o[b+I]*c;n[I]=m*w+C*D+p*x+E*y}return n}}const Mo=new f.Quaternion;class So extends Wr{interpolate_(e,a,t,i){const n=super.interpolate_(e,a,t,i);return Mo.fromArray(n).normalize().toArray(n),n}}const Ve={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},Ra={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Yr={9728:f.NearestFilter,9729:f.LinearFilter,9984:f.NearestMipmapNearestFilter,9985:f.LinearMipmapNearestFilter,9986:f.NearestMipmapLinearFilter,9987:f.LinearMipmapLinearFilter},Xr={33071:f.ClampToEdgeWrapping,33648:f.MirroredRepeatWrapping,10497:f.RepeatWrapping},Gt={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Lt={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},fa={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},To={CUBICSPLINE:void 0,LINEAR:f.InterpolateLinear,STEP:f.InterpolateDiscrete},Ro="OPAQUE",No="MASK",Uo="BLEND";function xa(r,e,a){for(const t in a.extensions)r[t]===void 0&&(e.userData.gltfExtensions=e.userData.gltfExtensions||{},e.userData.gltfExtensions[t]=a.extensions[t])}function ca(r,e){e.extras!==void 0&&(typeof e.extras=="object"?Object.assign(r.userData,e.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+e.extras))}function Go(r,e){if(r.updateMorphTargets(),e.weights!==void 0)for(let a=0,t=e.weights.length;a<t;a++)r.morphTargetInfluences[a]=e.weights[a];if(e.extras&&Array.isArray(e.extras.targetNames)){const a=e.extras.targetNames;if(r.morphTargetInfluences.length===a.length){r.morphTargetDictionary={};for(let t=0,i=a.length;t<i;t++)r.morphTargetDictionary[a[t]]=t}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function Lo(r){let e;const a=r.extensions&&r.extensions[ae.KHR_DRACO_MESH_COMPRESSION];if(e=a?"draco:"+a.bufferView+":"+a.indices+":"+_t(a.attributes):r.indices+":"+_t(r.attributes)+":"+r.mode,r.targets!==void 0)for(let t=0,i=r.targets.length;t<i;t++)e+=":"+_t(r.targets[t]);return e}function _t(r){let e="";const a=Object.keys(r).sort();for(let t=0,i=a.length;t<i;t++)e+=a[t]+":"+r[a[t]]+";";return e}function Pt(r){switch(r){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.")}}const _o=new f.Matrix4;class Po{constructor(e={},a={}){this.json=e,this.extensions={},this.plugins={},this.options=a,this.cache=new oo,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let t=!1,i=-1,n=!1,o=-1;if(typeof navigator<"u"){const s=navigator.userAgent;t=/^((?!chrome|android).)*safari/i.test(s)===!0;const A=s.match(/Version\/(\d+)/);i=t&&A?parseInt(A[1],10):-1,n=s.indexOf("Firefox")>-1,o=n?s.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>"u"||t&&i<17||n&&o<98?this.textureLoader=new f.TextureLoader(this.options.manager):this.textureLoader=new f.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new f.FileLoader(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,a){const t=this,i=this.json,n=this.extensions;this.cache.removeAll(),this.nodeCache={},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([t.getDependencies("scene"),t.getDependencies("animation"),t.getDependencies("camera")])}).then(function(o){const s={scene:o[0][i.scene||0],scenes:o[0],animations:o[1],cameras:o[2],asset:i.asset,parser:t,userData:{}};return xa(n,s,i),ca(s,i),Promise.all(t._invokeAll(function(A){return A.afterRoot&&A.afterRoot(s)})).then(function(){for(const A of s.scenes)A.updateMatrixWorld();e(s)})}).catch(a)}_markDefs(){const e=this.json.nodes||[],a=this.json.skins||[],t=this.json.meshes||[];for(let i=0,n=a.length;i<n;i++){const o=a[i].joints;for(let s=0,A=o.length;s<A;s++)e[o[s]].isBone=!0}for(let i=0,n=e.length;i<n;i++){const o=e[i];o.mesh!==void 0&&(this._addNodeRef(this.meshCache,o.mesh),o.skin!==void 0&&(t[o.mesh].isSkinnedMesh=!0)),o.camera!==void 0&&this._addNodeRef(this.cameraCache,o.camera)}}_addNodeRef(e,a){a!==void 0&&(e.refs[a]===void 0&&(e.refs[a]=e.uses[a]=0),e.refs[a]++)}_getNodeRef(e,a,t){if(e.refs[a]<=1)return t;const i=t.clone(),n=(o,s)=>{const A=this.associations.get(o);A!=null&&this.associations.set(s,A);for(const[u,c]of o.children.entries())n(c,s.children[u])};return n(t,i),i.name+="_instance_"+e.uses[a]++,i}_invokeOne(e){const a=Object.values(this.plugins);a.push(this);for(let t=0;t<a.length;t++){const i=e(a[t]);if(i)return i}return null}_invokeAll(e){const a=Object.values(this.plugins);a.unshift(this);const t=[];for(let i=0;i<a.length;i++){const n=e(a[i]);n&&t.push(n)}return t}getDependency(e,a){const t=e+":"+a;let i=this.cache.get(t);if(!i){switch(e){case"scene":i=this.loadScene(a);break;case"node":i=this._invokeOne(function(n){return n.loadNode&&n.loadNode(a)});break;case"mesh":i=this._invokeOne(function(n){return n.loadMesh&&n.loadMesh(a)});break;case"accessor":i=this.loadAccessor(a);break;case"bufferView":i=this._invokeOne(function(n){return n.loadBufferView&&n.loadBufferView(a)});break;case"buffer":i=this.loadBuffer(a);break;case"material":i=this._invokeOne(function(n){return n.loadMaterial&&n.loadMaterial(a)});break;case"texture":i=this._invokeOne(function(n){return n.loadTexture&&n.loadTexture(a)});break;case"skin":i=this.loadSkin(a);break;case"animation":i=this._invokeOne(function(n){return n.loadAnimation&&n.loadAnimation(a)});break;case"camera":i=this.loadCamera(a);break;default:if(i=this._invokeOne(function(n){return n!=this&&n.getDependency&&n.getDependency(e,a)}),!i)throw new Error("Unknown type: "+e)}this.cache.add(t,i)}return i}getDependencies(e){let a=this.cache.get(e);if(!a){const t=this,i=this.json[e+(e==="mesh"?"es":"s")]||[];a=Promise.all(i.map(function(n,o){return t.getDependency(e,o)})),this.cache.add(e,a)}return a}loadBuffer(e){const a=this.json.buffers[e],t=this.fileLoader;if(a.type&&a.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+a.type+" buffer type is not supported.");if(a.uri===void 0&&e===0)return Promise.resolve(this.extensions[ae.KHR_BINARY_GLTF].body);const i=this.options;return new Promise(function(n,o){t.load(f.LoaderUtils.resolveURL(a.uri,i.path),n,void 0,function(){o(new Error('THREE.GLTFLoader: Failed to load buffer "'+a.uri+'".'))})})}loadBufferView(e){const a=this.json.bufferViews[e];return this.getDependency("buffer",a.buffer).then(function(t){const i=a.byteLength||0,n=a.byteOffset||0;return t.slice(n,n+i)})}loadAccessor(e){const a=this,t=this.json,i=this.json.accessors[e];if(i.bufferView===void 0&&i.sparse===void 0){const o=Gt[i.type],s=Ra[i.componentType],A=i.normalized===!0,u=new s(i.count*o);return Promise.resolve(new f.BufferAttribute(u,o,A))}const n=[];return i.bufferView!==void 0?n.push(this.getDependency("bufferView",i.bufferView)):n.push(null),i.sparse!==void 0&&(n.push(this.getDependency("bufferView",i.sparse.indices.bufferView)),n.push(this.getDependency("bufferView",i.sparse.values.bufferView))),Promise.all(n).then(function(o){const s=o[0],A=Gt[i.type],u=Ra[i.componentType],c=u.BYTES_PER_ELEMENT,d=c*A,l=i.byteOffset||0,h=i.bufferView!==void 0?t.bufferViews[i.bufferView].byteStride:void 0,b=i.normalized===!0;let g,p;if(h&&h!==d){const E=Math.floor(l/h),m="InterleavedBuffer:"+i.bufferView+":"+i.componentType+":"+E+":"+i.count;let C=a.cache.get(m);C||(g=new u(s,E*h,i.count*h/c),C=new f.InterleavedBuffer(g,h/c),a.cache.add(m,C)),p=new f.InterleavedBufferAttribute(C,A,l%h/c,b)}else g=s===null?new u(i.count*A):new u(s,l,i.count*A),p=new f.BufferAttribute(g,A,b);if(i.sparse!==void 0){const E=Gt.SCALAR,m=Ra[i.sparse.indices.componentType],C=i.sparse.indices.byteOffset||0,I=i.sparse.values.byteOffset||0,w=new m(o[1],C,i.sparse.count*E),D=new u(o[2],I,i.sparse.count*A);s!==null&&(p=new f.BufferAttribute(p.array.slice(),p.itemSize,p.normalized)),p.normalized=!1;for(let x=0,y=w.length;x<y;x++){const F=w[x];if(p.setX(F,D[x*A]),A>=2&&p.setY(F,D[x*A+1]),A>=3&&p.setZ(F,D[x*A+2]),A>=4&&p.setW(F,D[x*A+3]),A>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}p.normalized=b}return p})}loadTexture(e){const a=this.json,t=this.options,i=a.textures[e].source,n=a.images[i];let o=this.textureLoader;if(n.uri){const s=t.manager.getHandler(n.uri);s!==null&&(o=s)}return this.loadTextureImage(e,i,o)}loadTextureImage(e,a,t){const i=this,n=this.json,o=n.textures[e],s=n.images[a],A=(s.uri||s.bufferView)+":"+o.sampler;if(this.textureCache[A])return this.textureCache[A];const u=this.loadImageSource(a,t).then(function(c){c.flipY=!1,c.name=o.name||s.name||"",c.name===""&&typeof s.uri=="string"&&s.uri.startsWith("data:image/")===!1&&(c.name=s.uri);const d=(n.samplers||{})[o.sampler]||{};return c.magFilter=Yr[d.magFilter]||f.LinearFilter,c.minFilter=Yr[d.minFilter]||f.LinearMipmapLinearFilter,c.wrapS=Xr[d.wrapS]||f.RepeatWrapping,c.wrapT=Xr[d.wrapT]||f.RepeatWrapping,c.generateMipmaps=!c.isCompressedTexture&&c.minFilter!==f.NearestFilter&&c.minFilter!==f.LinearFilter,i.associations.set(c,{textures:e}),c}).catch(function(){return null});return this.textureCache[A]=u,u}loadImageSource(e,a){const t=this,i=this.json,n=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(d=>d.clone());const o=i.images[e],s=self.URL||self.webkitURL;let A=o.uri||"",u=!1;if(o.bufferView!==void 0)A=t.getDependency("bufferView",o.bufferView).then(function(d){u=!0;const l=new Blob([d],{type:o.mimeType});return A=s.createObjectURL(l),A});else if(o.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const c=Promise.resolve(A).then(function(d){return new Promise(function(l,h){let b=l;a.isImageBitmapLoader===!0&&(b=function(g){const p=new f.Texture(g);p.needsUpdate=!0,l(p)}),a.load(f.LoaderUtils.resolveURL(d,n.path),b,void 0,h)})}).then(function(d){var l;return u===!0&&s.revokeObjectURL(A),ca(d,o),d.userData.mimeType=o.mimeType||((l=o.uri).search(/\.jpe?g($|\?)/i)>0||l.search(/^data\:image\/jpeg/)===0?"image/jpeg":l.search(/\.webp($|\?)/i)>0||l.search(/^data\:image\/webp/)===0?"image/webp":l.search(/\.ktx2($|\?)/i)>0||l.search(/^data\:image\/ktx2/)===0?"image/ktx2":"image/png"),d}).catch(function(d){throw console.error("THREE.GLTFLoader: Couldn't load texture",A),d});return this.sourceCache[e]=c,c}assignTexture(e,a,t,i){const n=this;return this.getDependency("texture",t.index).then(function(o){if(!o)return null;if(t.texCoord!==void 0&&t.texCoord>0&&((o=o.clone()).channel=t.texCoord),n.extensions[ae.KHR_TEXTURE_TRANSFORM]){const s=t.extensions!==void 0?t.extensions[ae.KHR_TEXTURE_TRANSFORM]:void 0;if(s){const A=n.associations.get(o);o=n.extensions[ae.KHR_TEXTURE_TRANSFORM].extendTexture(o,s),n.associations.set(o,A)}}return i!==void 0&&(o.colorSpace=i),e[a]=o,o})}assignFinalMaterial(e){const a=e.geometry;let t=e.material;const i=a.attributes.tangent===void 0,n=a.attributes.color!==void 0,o=a.attributes.normal===void 0;if(e.isPoints){const s="PointsMaterial:"+t.uuid;let A=this.cache.get(s);A||(A=new f.PointsMaterial,f.Material.prototype.copy.call(A,t),A.color.copy(t.color),A.map=t.map,A.sizeAttenuation=!1,this.cache.add(s,A)),t=A}else if(e.isLine){const s="LineBasicMaterial:"+t.uuid;let A=this.cache.get(s);A||(A=new f.LineBasicMaterial,f.Material.prototype.copy.call(A,t),A.color.copy(t.color),A.map=t.map,this.cache.add(s,A)),t=A}if(i||n||o){let s="ClonedMaterial:"+t.uuid+":";i&&(s+="derivative-tangents:"),n&&(s+="vertex-colors:"),o&&(s+="flat-shading:");let A=this.cache.get(s);A||(A=t.clone(),n&&(A.vertexColors=!0),o&&(A.flatShading=!0),i&&(A.normalScale&&(A.normalScale.y*=-1),A.clearcoatNormalScale&&(A.clearcoatNormalScale.y*=-1)),this.cache.add(s,A),this.associations.set(A,this.associations.get(t))),t=A}e.material=t}getMaterialType(){return f.MeshStandardMaterial}loadMaterial(e){const a=this,t=this.json,i=this.extensions,n=t.materials[e];let o;const s={},A=[];if((n.extensions||{})[ae.KHR_MATERIALS_UNLIT]){const c=i[ae.KHR_MATERIALS_UNLIT];o=c.getMaterialType(),A.push(c.extendParams(s,n,a))}else{const c=n.pbrMetallicRoughness||{};if(s.color=new f.Color(1,1,1),s.opacity=1,Array.isArray(c.baseColorFactor)){const d=c.baseColorFactor;s.color.setRGB(d[0],d[1],d[2],f.LinearSRGBColorSpace),s.opacity=d[3]}c.baseColorTexture!==void 0&&A.push(a.assignTexture(s,"map",c.baseColorTexture,f.SRGBColorSpace)),s.metalness=c.metallicFactor!==void 0?c.metallicFactor:1,s.roughness=c.roughnessFactor!==void 0?c.roughnessFactor:1,c.metallicRoughnessTexture!==void 0&&(A.push(a.assignTexture(s,"metalnessMap",c.metallicRoughnessTexture)),A.push(a.assignTexture(s,"roughnessMap",c.metallicRoughnessTexture))),o=this._invokeOne(function(d){return d.getMaterialType&&d.getMaterialType(e)}),A.push(Promise.all(this._invokeAll(function(d){return d.extendMaterialParams&&d.extendMaterialParams(e,s)})))}n.doubleSided===!0&&(s.side=f.DoubleSide);const u=n.alphaMode||Ro;if(u===Uo?(s.transparent=!0,s.depthWrite=!1):(s.transparent=!1,u===No&&(s.alphaTest=n.alphaCutoff!==void 0?n.alphaCutoff:.5)),n.normalTexture!==void 0&&o!==f.MeshBasicMaterial&&(A.push(a.assignTexture(s,"normalMap",n.normalTexture)),s.normalScale=new f.Vector2(1,1),n.normalTexture.scale!==void 0)){const c=n.normalTexture.scale;s.normalScale.set(c,c)}if(n.occlusionTexture!==void 0&&o!==f.MeshBasicMaterial&&(A.push(a.assignTexture(s,"aoMap",n.occlusionTexture)),n.occlusionTexture.strength!==void 0&&(s.aoMapIntensity=n.occlusionTexture.strength)),n.emissiveFactor!==void 0&&o!==f.MeshBasicMaterial){const c=n.emissiveFactor;s.emissive=new f.Color().setRGB(c[0],c[1],c[2],f.LinearSRGBColorSpace)}return n.emissiveTexture!==void 0&&o!==f.MeshBasicMaterial&&A.push(a.assignTexture(s,"emissiveMap",n.emissiveTexture,f.SRGBColorSpace)),Promise.all(A).then(function(){const c=new o(s);return n.name&&(c.name=n.name),ca(c,n),a.associations.set(c,{materials:e}),n.extensions&&xa(i,c,n),c})}createUniqueName(e){const a=f.PropertyBinding.sanitizeNodeName(e||"");return a in this.nodeNamesUsed?a+"_"+ ++this.nodeNamesUsed[a]:(this.nodeNamesUsed[a]=0,a)}loadGeometries(e){const a=this,t=this.extensions,i=this.primitiveCache;function n(s){return t[ae.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(s,a).then(function(A){return Zr(A,s,a)})}const o=[];for(let s=0,A=e.length;s<A;s++){const u=e[s],c=Lo(u),d=i[c];if(d)o.push(d.promise);else{let l;l=u.extensions&&u.extensions[ae.KHR_DRACO_MESH_COMPRESSION]?n(u):Zr(new f.BufferGeometry,u,a),i[c]={primitive:u,promise:l},o.push(l)}}return Promise.all(o)}loadMesh(e){const a=this,t=this.json,i=this.extensions,n=t.meshes[e],o=n.primitives,s=[];for(let u=0,c=o.length;u<c;u++){const d=o[u].material===void 0?((A=this.cache).DefaultMaterial===void 0&&(A.DefaultMaterial=new f.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:f.FrontSide})),A.DefaultMaterial):this.getDependency("material",o[u].material);s.push(d)}var A;return s.push(a.loadGeometries(o)),Promise.all(s).then(function(u){const c=u.slice(0,u.length-1),d=u[u.length-1],l=[];for(let b=0,g=d.length;b<g;b++){const p=d[b],E=o[b];let m;const C=c[b];if(E.mode===Ve.TRIANGLES||E.mode===Ve.TRIANGLE_STRIP||E.mode===Ve.TRIANGLE_FAN||E.mode===void 0)m=n.isSkinnedMesh===!0?new f.SkinnedMesh(p,C):new f.Mesh(p,C),m.isSkinnedMesh===!0&&m.normalizeSkinWeights(),E.mode===Ve.TRIANGLE_STRIP?m.geometry=Hr(m.geometry,f.TriangleStripDrawMode):E.mode===Ve.TRIANGLE_FAN&&(m.geometry=Hr(m.geometry,f.TriangleFanDrawMode));else if(E.mode===Ve.LINES)m=new f.LineSegments(p,C);else if(E.mode===Ve.LINE_STRIP)m=new f.Line(p,C);else if(E.mode===Ve.LINE_LOOP)m=new f.LineLoop(p,C);else{if(E.mode!==Ve.POINTS)throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+E.mode);m=new f.Points(p,C)}Object.keys(m.geometry.morphAttributes).length>0&&Go(m,n),m.name=a.createUniqueName(n.name||"mesh_"+e),ca(m,n),E.extensions&&xa(i,m,E),a.assignFinalMaterial(m),l.push(m)}for(let b=0,g=l.length;b<g;b++)a.associations.set(l[b],{meshes:e,primitives:b});if(l.length===1)return n.extensions&&xa(i,l[0],n),l[0];const h=new f.Group;n.extensions&&xa(i,h,n),a.associations.set(h,{meshes:e});for(let b=0,g=l.length;b<g;b++)h.add(l[b]);return h})}loadCamera(e){let a;const t=this.json.cameras[e],i=t[t.type];if(i)return t.type==="perspective"?a=new f.PerspectiveCamera(f.MathUtils.radToDeg(i.yfov),i.aspectRatio||1,i.znear||1,i.zfar||2e6):t.type==="orthographic"&&(a=new f.OrthographicCamera(-i.xmag,i.xmag,i.ymag,-i.ymag,i.znear,i.zfar)),t.name&&(a.name=this.createUniqueName(t.name)),ca(a,t),Promise.resolve(a);console.warn("THREE.GLTFLoader: Missing camera parameters.")}loadSkin(e){const a=this.json.skins[e],t=[];for(let i=0,n=a.joints.length;i<n;i++)t.push(this._loadNodeShallow(a.joints[i]));return a.inverseBindMatrices!==void 0?t.push(this.getDependency("accessor",a.inverseBindMatrices)):t.push(null),Promise.all(t).then(function(i){const n=i.pop(),o=i,s=[],A=[];for(let u=0,c=o.length;u<c;u++){const d=o[u];if(d){s.push(d);const l=new f.Matrix4;n!==null&&l.fromArray(n.array,16*u),A.push(l)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',a.joints[u])}return new f.Skeleton(s,A)})}loadAnimation(e){const a=this.json,t=this,i=a.animations[e],n=i.name?i.name:"animation_"+e,o=[],s=[],A=[],u=[],c=[];for(let d=0,l=i.channels.length;d<l;d++){const h=i.channels[d],b=i.samplers[h.sampler],g=h.target,p=g.node,E=i.parameters!==void 0?i.parameters[b.input]:b.input,m=i.parameters!==void 0?i.parameters[b.output]:b.output;g.node!==void 0&&(o.push(this.getDependency("node",p)),s.push(this.getDependency("accessor",E)),A.push(this.getDependency("accessor",m)),u.push(b),c.push(g))}return Promise.all([Promise.all(o),Promise.all(s),Promise.all(A),Promise.all(u),Promise.all(c)]).then(function(d){const l=d[0],h=d[1],b=d[2],g=d[3],p=d[4],E=[];for(let m=0,C=l.length;m<C;m++){const I=l[m],w=h[m],D=b[m],x=g[m],y=p[m];if(I===void 0)continue;I.updateMatrix&&I.updateMatrix();const F=t._createAnimationTracks(I,w,D,x,y);if(F)for(let M=0;M<F.length;M++)E.push(F[M])}return new f.AnimationClip(n,void 0,E)})}createNodeMesh(e){const a=this.json,t=this,i=a.nodes[e];return i.mesh===void 0?null:t.getDependency("mesh",i.mesh).then(function(n){const o=t._getNodeRef(t.meshCache,i.mesh,n);return i.weights!==void 0&&o.traverse(function(s){if(s.isMesh)for(let A=0,u=i.weights.length;A<u;A++)s.morphTargetInfluences[A]=i.weights[A]}),o})}loadNode(e){const a=this,t=this.json.nodes[e],i=a._loadNodeShallow(e),n=[],o=t.children||[];for(let A=0,u=o.length;A<u;A++)n.push(a.getDependency("node",o[A]));const s=t.skin===void 0?Promise.resolve(null):a.getDependency("skin",t.skin);return Promise.all([i,Promise.all(n),s]).then(function(A){const u=A[0],c=A[1],d=A[2];d!==null&&u.traverse(function(l){l.isSkinnedMesh&&l.bind(d,_o)});for(let l=0,h=c.length;l<h;l++)u.add(c[l]);return u})}_loadNodeShallow(e){const a=this.json,t=this.extensions,i=this;if(this.nodeCache[e]!==void 0)return this.nodeCache[e];const n=a.nodes[e],o=n.name?i.createUniqueName(n.name):"",s=[],A=i._invokeOne(function(u){return u.createNodeMesh&&u.createNodeMesh(e)});return A&&s.push(A),n.camera!==void 0&&s.push(i.getDependency("camera",n.camera).then(function(u){return i._getNodeRef(i.cameraCache,n.camera,u)})),i._invokeAll(function(u){return u.createNodeAttachment&&u.createNodeAttachment(e)}).forEach(function(u){s.push(u)}),this.nodeCache[e]=Promise.all(s).then(function(u){let c;if(c=n.isBone===!0?new f.Bone:u.length>1?new f.Group:u.length===1?u[0]:new f.Object3D,c!==u[0])for(let d=0,l=u.length;d<l;d++)c.add(u[d]);if(n.name&&(c.userData.name=n.name,c.name=o),ca(c,n),n.extensions&&xa(t,c,n),n.matrix!==void 0){const d=new f.Matrix4;d.fromArray(n.matrix),c.applyMatrix4(d)}else n.translation!==void 0&&c.position.fromArray(n.translation),n.rotation!==void 0&&c.quaternion.fromArray(n.rotation),n.scale!==void 0&&c.scale.fromArray(n.scale);return i.associations.has(c)||i.associations.set(c,{}),i.associations.get(c).nodes=e,c}),this.nodeCache[e]}loadScene(e){const a=this.extensions,t=this.json.scenes[e],i=this,n=new f.Group;t.name&&(n.name=i.createUniqueName(t.name)),ca(n,t),t.extensions&&xa(a,n,t);const o=t.nodes||[],s=[];for(let A=0,u=o.length;A<u;A++)s.push(i.getDependency("node",o[A]));return Promise.all(s).then(function(A){for(let u=0,c=A.length;u<c;u++)n.add(A[u]);return i.associations=(u=>{const c=new Map;for(const[d,l]of i.associations)(d instanceof f.Material||d instanceof f.Texture)&&c.set(d,l);return u.traverse(d=>{const l=i.associations.get(d);l!=null&&c.set(d,l)}),c})(n),n})}_createAnimationTracks(e,a,t,i,n){const o=[],s=e.name?e.name:e.uuid,A=[];let u;switch(fa[n.path]===fa.weights?e.traverse(function(l){l.morphTargetInfluences&&A.push(l.name?l.name:l.uuid)}):A.push(s),fa[n.path]){case fa.weights:u=f.NumberKeyframeTrack;break;case fa.rotation:u=f.QuaternionKeyframeTrack;break;case fa.translation:case fa.scale:u=f.VectorKeyframeTrack;break;default:t.itemSize===1?u=f.NumberKeyframeTrack:u=f.VectorKeyframeTrack}const c=i.interpolation!==void 0?To[i.interpolation]:f.InterpolateLinear,d=this._getArrayFromAccessor(t);for(let l=0,h=A.length;l<h;l++){const b=new u(A[l]+"."+fa[n.path],a.array,d,c);i.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(b),o.push(b)}return o}_getArrayFromAccessor(e){let a=e.array;if(e.normalized){const t=Pt(a.constructor),i=new Float32Array(a.length);for(let n=0,o=a.length;n<o;n++)i[n]=a[n]*t;a=i}return a}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(a){return new(this instanceof f.QuaternionKeyframeTrack?So:Wr)(this.times,this.values,this.getValueSize()/3,a)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function Zr(r,e,a){const t=e.attributes,i=[];function n(o,s){return a.getDependency("accessor",o).then(function(A){r.setAttribute(s,A)})}for(const o in t){const s=Lt[o]||o.toLowerCase();s in r.attributes||i.push(n(t[o],s))}if(e.indices!==void 0&&!r.index){const o=a.getDependency("accessor",e.indices).then(function(s){r.setIndex(s)});i.push(o)}return f.ColorManagement.workingColorSpace!==f.LinearSRGBColorSpace&&"COLOR_0"in t&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${f.ColorManagement.workingColorSpace}" not supported.`),ca(r,e),function(o,s,A){const u=s.attributes,c=new f.Box3;if(u.POSITION===void 0)return;{const h=A.json.accessors[u.POSITION],b=h.min,g=h.max;if(b===void 0||g===void 0)return void console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");if(c.set(new f.Vector3(b[0],b[1],b[2]),new f.Vector3(g[0],g[1],g[2])),h.normalized){const p=Pt(Ra[h.componentType]);c.min.multiplyScalar(p),c.max.multiplyScalar(p)}}const d=s.targets;if(d!==void 0){const h=new f.Vector3,b=new f.Vector3;for(let g=0,p=d.length;g<p;g++){const E=d[g];if(E.POSITION!==void 0){const m=A.json.accessors[E.POSITION],C=m.min,I=m.max;if(C!==void 0&&I!==void 0){if(b.setX(Math.max(Math.abs(C[0]),Math.abs(I[0]))),b.setY(Math.max(Math.abs(C[1]),Math.abs(I[1]))),b.setZ(Math.max(Math.abs(C[2]),Math.abs(I[2]))),m.normalized){const w=Pt(Ra[m.componentType]);b.multiplyScalar(w)}h.max(b)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}c.expandByVector(h)}o.boundingBox=c;const l=new f.Sphere;c.getCenter(l.center),l.radius=c.min.distanceTo(c.max)/2,o.boundingSphere=l}(r,e,a),Promise.all(i).then(function(){return e.targets!==void 0?function(o,s,A){let u=!1,c=!1,d=!1;for(let g=0,p=s.length;g<p;g++){const E=s[g];if(E.POSITION!==void 0&&(u=!0),E.NORMAL!==void 0&&(c=!0),E.COLOR_0!==void 0&&(d=!0),u&&c&&d)break}if(!u&&!c&&!d)return Promise.resolve(o);const l=[],h=[],b=[];for(let g=0,p=s.length;g<p;g++){const E=s[g];if(u){const m=E.POSITION!==void 0?A.getDependency("accessor",E.POSITION):o.attributes.position;l.push(m)}if(c){const m=E.NORMAL!==void 0?A.getDependency("accessor",E.NORMAL):o.attributes.normal;h.push(m)}if(d){const m=E.COLOR_0!==void 0?A.getDependency("accessor",E.COLOR_0):o.attributes.color;b.push(m)}}return Promise.all([Promise.all(l),Promise.all(h),Promise.all(b)]).then(function(g){const p=g[0],E=g[1],m=g[2];return u&&(o.morphAttributes.position=p),c&&(o.morphAttributes.normal=E),d&&(o.morphAttributes.color=m),o.morphTargetsRelative=!0,o})}(r,e.targets,a):r})}const zt=new WeakMap;class $r extends f.Loader{constructor(e){super(e),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,a,t,i){const n=new f.FileLoader(this.manager);n.setPath(this.path),n.setResponseType("arraybuffer"),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),n.load(e,o=>{this.parse(o,a,i)},t,i)}parse(e,a,t=()=>{}){this.decodeDracoFile(e,a,null,null,f.SRGBColorSpace,t).catch(t)}decodeDracoFile(e,a,t,i,n=f.LinearSRGBColorSpace,o=()=>{}){const s={attributeIDs:t||this.defaultAttributeIDs,attributeTypes:i||this.defaultAttributeTypes,useUniqueIDs:!!t,vertexColorSpace:n};return this.decodeGeometry(e,s).then(a).catch(o)}decodeGeometry(e,a){const t=JSON.stringify(a);if(zt.has(e)){const A=zt.get(e);if(A.key===t)return A.promise;if(e.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let i;const n=this.workerNextTaskID++,o=e.byteLength,s=this._getWorker(n,o).then(A=>(i=A,new Promise((u,c)=>{i._callbacks[n]={resolve:u,reject:c},i.postMessage({type:"decode",id:n,taskConfig:a,buffer:e},[e])}))).then(A=>this._createGeometry(A.geometry));return s.catch(()=>!0).then(()=>{i&&n&&this._releaseTask(i,n)}),zt.set(e,{key:t,promise:s}),s}_createGeometry(e){const a=new f.BufferGeometry;e.index&&a.setIndex(new f.BufferAttribute(e.index.array,1));for(let t=0;t<e.attributes.length;t++){const i=e.attributes[t],n=i.name,o=i.array,s=i.itemSize,A=new f.BufferAttribute(o,s);n==="color"&&(this._assignVertexColorSpace(A,i.vertexColorSpace),A.normalized=!(o instanceof Float32Array)),a.setAttribute(n,A)}return a}_assignVertexColorSpace(e,a){if(a!==f.SRGBColorSpace)return;const t=new f.Color;for(let i=0,n=e.count;i<n;i++)t.fromBufferAttribute(e,i),f.ColorManagement.toWorkingColorSpace(t,f.SRGBColorSpace),e.setXYZ(i,t.r,t.g,t.b)}_loadLibrary(e,a){const t=new f.FileLoader(this.manager);return t.setPath(this.decoderPath),t.setResponseType(a),t.setWithCredentials(this.withCredentials),new Promise((i,n)=>{t.load(e,i,void 0,n)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const e=typeof WebAssembly!="object"||this.decoderConfig.type==="js",a=[];return e?a.push(this._loadLibrary("draco_decoder.js","text")):(a.push(this._loadLibrary("draco_wasm_wrapper.js","text")),a.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(a).then(t=>{const i=t[0];e||(this.decoderConfig.wasmBinary=t[1]);const n=zo.toString(),o=["/* draco decoder */",i,"","/* worker */",n.substring(n.indexOf("{")+1,n.lastIndexOf("}"))].join(`
|
|
7
|
-
`);this.workerSourceURL=URL.createObjectURL(new Blob([o]))}),this.decoderPending}_getWorker(e,a){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const i=new Worker(this.workerSourceURL);i._callbacks={},i._taskCosts={},i._taskLoad=0,i.postMessage({type:"init",decoderConfig:this.decoderConfig}),i.onmessage=function(n){const o=n.data;switch(o.type){case"decode":i._callbacks[o.id].resolve(o);break;case"error":i._callbacks[o.id].reject(o);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+o.type+'"')}},this.workerPool.push(i)}else this.workerPool.sort(function(i,n){return i._taskLoad>n._taskLoad?-1:1});const t=this.workerPool[this.workerPool.length-1];return t._taskCosts[e]=a,t._taskLoad+=a,t})}_releaseTask(e,a){e._taskLoad-=e._taskCosts[a],delete e._callbacks[a],delete e._taskCosts[a]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this.workerSourceURL!==""&&URL.revokeObjectURL(this.workerSourceURL),this}}function zo(){let r,e;function a(t,i,n,o,s,A){const u=A.num_components(),c=n.num_points()*u,d=c*s.BYTES_PER_ELEMENT,l=function(g,p){switch(p){case Float32Array:return g.DT_FLOAT32;case Int8Array:return g.DT_INT8;case Int16Array:return g.DT_INT16;case Int32Array:return g.DT_INT32;case Uint8Array:return g.DT_UINT8;case Uint16Array:return g.DT_UINT16;case Uint32Array:return g.DT_UINT32}}(t,s),h=t._malloc(d);i.GetAttributeDataArrayForAllPoints(n,A,l,d,h);const b=new s(t.HEAPF32.buffer,h,c).slice();return t._free(h),{name:o,array:b,itemSize:u}}onmessage=function(t){const i=t.data;switch(i.type){case"init":r=i.decoderConfig,e=new Promise(function(s){r.onModuleLoaded=function(A){s({draco:A})},DracoDecoderModule(r)});break;case"decode":const n=i.buffer,o=i.taskConfig;e.then(s=>{const A=s.draco,u=new A.Decoder;try{const c=function(l,h,b,g){const p=g.attributeIDs,E=g.attributeTypes;let m,C;const I=h.GetEncodedGeometryType(b);if(I===l.TRIANGULAR_MESH)m=new l.Mesh,C=h.DecodeArrayToMesh(b,b.byteLength,m);else{if(I!==l.POINT_CLOUD)throw new Error("THREE.DRACOLoader: Unexpected geometry type.");m=new l.PointCloud,C=h.DecodeArrayToPointCloud(b,b.byteLength,m)}if(!C.ok()||m.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+C.error_msg());const w={index:null,attributes:[]};for(const D in p){const x=self[E[D]];let y,F;if(g.useUniqueIDs)F=p[D],y=h.GetAttributeByUniqueId(m,F);else{if(F=h.GetAttributeId(m,l[p[D]]),F===-1)continue;y=h.GetAttribute(m,F)}const M=a(l,h,m,D,x,y);D==="color"&&(M.vertexColorSpace=g.vertexColorSpace),w.attributes.push(M)}return I===l.TRIANGULAR_MESH&&(w.index=function(D,x,y){const F=y.num_faces(),M=3*F,S=4*M,z=D._malloc(S);x.GetTrianglesUInt32Array(y,S,z);const O=new Uint32Array(D.HEAPF32.buffer,z,M).slice();return D._free(z),{array:O,itemSize:1}}(l,h,m)),l.destroy(m),w}(A,u,new Int8Array(n),o),d=c.attributes.map(l=>l.array.buffer);c.index&&d.push(c.index.array.buffer),self.postMessage({type:"decode",id:i.id,geometry:c},d)}catch(c){console.error(c),self.postMessage({type:"error",id:i.id,error:c.message})}finally{A.destroy(u)}})}}}class Ho{constructor(e=4){this.pool=e,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0,this.workerCreator=null}_initWorker(e){if(!this.workers[e]){const a=this.workerCreator();a.addEventListener("message",this._onMessage.bind(this,e)),this.workers[e]=a}}_getIdleWorker(){for(let e=0;e<this.pool;e++)if(!(this.workerStatus&1<<e))return e;return-1}_onMessage(e,a){const t=this.workersResolve[e];if(t&&t(a),this.queue.length){const{resolve:i,msg:n,transfer:o}=this.queue.shift();this.workersResolve[e]=i,this.workers[e].postMessage(n,o)}else this.workerStatus^=1<<e}setWorkerCreator(e){this.workerCreator=e}setWorkerLimit(e){this.pool=e}postMessage(e,a){return new Promise(t=>{const i=this._getIdleWorker();i!==-1?(this._initWorker(i),this.workerStatus|=1<<i,this.workersResolve[i]=t,this.workers[i].postMessage(e,a)):this.queue.push({resolve:t,msg:e,transfer:a})})}dispose(){this.workers.forEach(e=>e.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}}const ei=9,ai=15,ti=16,ri=22,ii=37,ni=43,oi=76,si=83,Ai=97,ci=100,ui=103,di=109,hi=165,li=166,Ht=1000066e3;class Oo{constructor(){this.vkFormat=0,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=0,this.levels=[],this.dataFormatDescriptor=[{vendorId:0,descriptorType:0,descriptorBlockSize:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],this.keyValue={},this.globalData=null}}class Ya{constructor(e,a,t,i){this._dataView=void 0,this._littleEndian=void 0,this._offset=void 0,this._dataView=new DataView(e.buffer,e.byteOffset+a,t),this._littleEndian=i,this._offset=0}_nextUint8(){const e=this._dataView.getUint8(this._offset);return this._offset+=1,e}_nextUint16(){const e=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,e}_nextUint32(){const e=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint64(){const e=this._dataView.getUint32(this._offset,this._littleEndian)+4294967296*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,e}_nextInt32(){const e=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint8Array(e){const a=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._offset,e);return this._offset+=e,a}_skip(e){return this._offset+=e,this}_scan(e,a){a===void 0&&(a=0);const t=this._offset;let i=0;for(;this._dataView.getUint8(this._offset)!==a&&i<e;)i++,this._offset++;return i<e&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+t,i)}}const Ge=[171,75,84,88,32,50,48,187,13,10,26,10];function bi(r){return new TextDecoder().decode(r)}let Ot,ua,qt;const Jt={env:{emscripten_notify_memory_growth:function(r){qt=new Uint8Array(ua.exports.memory.buffer)}}};class qo{init(){return Ot||(Ot=typeof fetch<"u"?fetch("data:application/wasm;base64,"+gi).then(e=>e.arrayBuffer()).then(e=>WebAssembly.instantiate(e,Jt)).then(this._init):WebAssembly.instantiate(Buffer.from(gi,"base64"),Jt).then(this._init),Ot)}_init(e){ua=e.instance,Jt.env.emscripten_notify_memory_growth(0)}decode(e,a=0){if(!ua)throw new Error("ZSTDDecoder: Await .init() before decoding.");const t=e.byteLength,i=ua.exports.malloc(t);qt.set(e,i),a=a||Number(ua.exports.ZSTD_findDecompressedSize(i,t));const n=ua.exports.malloc(a),o=ua.exports.ZSTD_decompress(n,a,i,t),s=qt.slice(n,n+o);return ua.exports.free(i),ua.exports.free(n),s}}const gi="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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEEdCAAbiECCyAAQQh2IgEgAkEYbCIAQYwIaigCAGwgAEGICGooAgBqIgJBA3YgAmogAEGACGooAgAgAEGECGooAgAgAWxqSQs3ACAAIAMgBCAFQYAQEDMiBRADBEAgBQ8LIAUgBEkEfyABIAIgAyAFaiAEIAVrIAAQMgVBuH8LC78DAQN/IwBBIGsiBSQAIAVBCGogAiADEAYiAhADRQRAIAAgAWoiB0F9aiEGIAUgBBAOIARBBGohAiAFLQACIQMDQEEAIAAgBkkgBUEIahAEGwRAIAAgAiAFQQhqIAMQAkECdGoiBC8BADsAACAFQQhqIAQtAAIQASAAIAQtAANqIgQgAiAFQQhqIAMQAkECdGoiAC8BADsAACAFQQhqIAAtAAIQASAEIAAtAANqIQAMAQUgB0F+aiEEA0AgBUEIahAEIAAgBEtyRQRAIAAgAiAFQQhqIAMQAkECdGoiBi8BADsAACAFQQhqIAYtAAIQASAAIAYtAANqIQAMAQsLA0AgACAES0UEQCAAIAIgBUEIaiADEAJBAnRqIgYvAQA7AAAgBUEIaiAGLQACEAEgACAGLQADaiEADAELCwJAIAAgB08NACAAIAIgBUEIaiADEAIiA0ECdGoiAC0AADoAACAALQADQQFGBEAgBUEIaiAALQACEAEMAQsgBSgCDEEfSw0AIAVBCGogAiADQQJ0ai0AAhABIAUoAgxBIUkNACAFQSA2AgwLIAFBbCAFQQhqEAobIQILCwsgBUEgaiQAIAILkgIBBH8jAEFAaiIJJAAgCSADQTQQCyEDAkAgBEECSA0AIAMgBEECdGooAgAhCSADQTxqIAgQIyADQQE6AD8gAyACOgA+QQAhBCADKAI8IQoDQCAEIAlGDQEgACAEQQJ0aiAKNgEAIARBAWohBAwAAAsAC0EAIQkDQCAGIAlGRQRAIAMgBSAJQQF0aiIKLQABIgtBAnRqIgwoAgAhBCADQTxqIAotAABBCHQgCGpB//8DcRAjIANBAjoAPyADIAcgC2siCiACajoAPiAEQQEgASAKa3RqIQogAygCPCELA0AgACAEQQJ0aiALNgEAIARBAWoiBCAKSQ0ACyAMIAo2AgAgCUEBaiEJDAELCyADQUBrJAALowIBCX8jAEHQAGsiCSQAIAlBEGogBUE0EAsaIAcgBmshDyAHIAFrIRADQAJAIAMgCkcEQEEBIAEgByACIApBAXRqIgYtAAEiDGsiCGsiC3QhDSAGLQAAIQ4gCUEQaiAMQQJ0aiIMKAIAIQYgCyAPTwRAIAAgBkECdGogCyAIIAUgCEE0bGogCCAQaiIIQQEgCEEBShsiCCACIAQgCEECdGooAgAiCEEBdGogAyAIayAHIA4QYyAGIA1qIQgMAgsgCUEMaiAOECMgCUEBOgAPIAkgCDoADiAGIA1qIQggCSgCDCELA0AgBiAITw0CIAAgBkECdGogCzYBACAGQQFqIQYMAAALAAsgCUHQAGokAA8LIAwgCDYCACAKQQFqIQoMAAALAAs0ACAAIAMgBCAFEDYiBRADBEAgBQ8LIAUgBEkEfyABIAIgAyAFaiAEIAVrIAAQNAVBuH8LCyMAIAA/AEEQdGtB//8DakEQdkAAQX9GBEBBAA8LQQAQAEEBCzsBAX8gAgRAA0AgACABIAJBgCAgAkGAIEkbIgMQCyEAIAFBgCBqIQEgAEGAIGohACACIANrIgINAAsLCwYAIAAQAwsLqBUJAEGICAsNAQAAAAEAAAACAAAAAgBBoAgLswYBAAAAAQAAAAIAAAACAAAAJgAAAIIAAAAhBQAASgAAAGcIAAAmAAAAwAEAAIAAAABJBQAASgAAAL4IAAApAAAALAIAAIAAAABJBQAASgAAAL4IAAAvAAAAygIAAIAAAACKBQAASgAAAIQJAAA1AAAAcwMAAIAAAACdBQAASgAAAKAJAAA9AAAAgQMAAIAAAADrBQAASwAAAD4KAABEAAAAngMAAIAAAABNBgAASwAAAKoKAABLAAAAswMAAIAAAADBBgAATQAAAB8NAABNAAAAUwQAAIAAAAAjCAAAUQAAAKYPAABUAAAAmQQAAIAAAABLCQAAVwAAALESAABYAAAA2gQAAIAAAABvCQAAXQAAACMUAABUAAAARQUAAIAAAABUCgAAagAAAIwUAABqAAAArwUAAIAAAAB2CQAAfAAAAE4QAAB8AAAA0gIAAIAAAABjBwAAkQAAAJAHAACSAAAAAAAAAAEAAAABAAAABQAAAA0AAAAdAAAAPQAAAH0AAAD9AAAA/QEAAP0DAAD9BwAA/Q8AAP0fAAD9PwAA/X8AAP3/AAD9/wEA/f8DAP3/BwD9/w8A/f8fAP3/PwD9/38A/f//AP3//wH9//8D/f//B/3//w/9//8f/f//P/3//38AAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACUAAAAnAAAAKQAAACsAAAAvAAAAMwAAADsAAABDAAAAUwAAAGMAAACDAAAAAwEAAAMCAAADBAAAAwgAAAMQAAADIAAAA0AAAAOAAAADAAEAQeAPC1EBAAAAAQAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAQcQQC4sBAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABIAAAAUAAAAFgAAABgAAAAcAAAAIAAAACgAAAAwAAAAQAAAAIAAAAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAAAAQBBkBIL5gQBAAAAAQAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAAAEAAAAEAAAACAAAAAAAAAABAAEBBgAAAAAAAAQAAAAAEAAABAAAAAAgAAAFAQAAAAAAAAUDAAAAAAAABQQAAAAAAAAFBgAAAAAAAAUHAAAAAAAABQkAAAAAAAAFCgAAAAAAAAUMAAAAAAAABg4AAAAAAAEFEAAAAAAAAQUUAAAAAAABBRYAAAAAAAIFHAAAAAAAAwUgAAAAAAAEBTAAAAAgAAYFQAAAAAAABwWAAAAAAAAIBgABAAAAAAoGAAQAAAAADAYAEAAAIAAABAAAAAAAAAAEAQAAAAAAAAUCAAAAIAAABQQAAAAAAAAFBQAAACAAAAUHAAAAAAAABQgAAAAgAAAFCgAAAAAAAAULAAAAAAAABg0AAAAgAAEFEAAAAAAAAQUSAAAAIAABBRYAAAAAAAIFGAAAACAAAwUgAAAAAAADBSgAAAAAAAYEQAAAABAABgRAAAAAIAAHBYAAAAAAAAkGAAIAAAAACwYACAAAMAAABAAAAAAQAAAEAQAAACAAAAUCAAAAIAAABQMAAAAgAAAFBQAAACAAAAUGAAAAIAAABQgAAAAgAAAFCQAAACAAAAULAAAAIAAABQwAAAAAAAAGDwAAACAAAQUSAAAAIAABBRQAAAAgAAIFGAAAACAAAgUcAAAAIAADBSgAAAAgAAQFMAAAAAAAEAYAAAEAAAAPBgCAAAAAAA4GAEAAAAAADQYAIABBgBcLhwIBAAEBBQAAAAAAAAUAAAAAAAAGBD0AAAAAAAkF/QEAAAAADwX9fwAAAAAVBf3/HwAAAAMFBQAAAAAABwR9AAAAAAAMBf0PAAAAABIF/f8DAAAAFwX9/38AAAAFBR0AAAAAAAgE/QAAAAAADgX9PwAAAAAUBf3/DwAAAAIFAQAAABAABwR9AAAAAAALBf0HAAAAABEF/f8BAAAAFgX9/z8AAAAEBQ0AAAAQAAgE/QAAAAAADQX9HwAAAAATBf3/BwAAAAEFAQAAABAABgQ9AAAAAAAKBf0DAAAAABAF/f8AAAAAHAX9//8PAAAbBf3//wcAABoF/f//AwAAGQX9//8BAAAYBf3//wBBkBkLhgQBAAEBBgAAAAAAAAYDAAAAAAAABAQAAAAgAAAFBQAAAAAAAAUGAAAAAAAABQgAAAAAAAAFCQAAAAAAAAULAAAAAAAABg0AAAAAAAAGEAAAAAAAAAYTAAAAAAAABhYAAAAAAAAGGQAAAAAAAAYcAAAAAAAABh8AAAAAAAAGIgAAAAAAAQYlAAAAAAABBikAAAAAAAIGLwAAAAAAAwY7AAAAAAAEBlMAAAAAAAcGgwAAAAAACQYDAgAAEAAABAQAAAAAAAAEBQAAACAAAAUGAAAAAAAABQcAAAAgAAAFCQAAAAAAAAUKAAAAAAAABgwAAAAAAAAGDwAAAAAAAAYSAAAAAAAABhUAAAAAAAAGGAAAAAAAAAYbAAAAAAAABh4AAAAAAAAGIQAAAAAAAQYjAAAAAAABBicAAAAAAAIGKwAAAAAAAwYzAAAAAAAEBkMAAAAAAAUGYwAAAAAACAYDAQAAIAAABAQAAAAwAAAEBAAAABAAAAQFAAAAIAAABQcAAAAgAAAFCAAAACAAAAUKAAAAIAAABQsAAAAAAAAGDgAAAAAAAAYRAAAAAAAABhQAAAAAAAAGFwAAAAAAAAYaAAAAAAAABh0AAAAAAAAGIAAAAAAAEAYDAAEAAAAPBgOAAAAAAA4GA0AAAAAADQYDIAAAAAAMBgMQAAAAAAsGAwgAAAAACgYDBABBpB0L2QEBAAAAAwAAAAcAAAAPAAAAHwAAAD8AAAB/AAAA/wAAAP8BAAD/AwAA/wcAAP8PAAD/HwAA/z8AAP9/AAD//wAA//8BAP//AwD//wcA//8PAP//HwD//z8A//9/AP///wD///8B////A////wf///8P////H////z////9/AAAAAAEAAAACAAAABAAAAAAAAAACAAAABAAAAAgAAAAAAAAAAQAAAAIAAAABAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAcAAAAIAAAACQAAAAoAAAALAEGgIAsDwBBQ",Kt=new WeakMap;let Vt,Wt=0;class qe extends f.Loader{constructor(e){super(e),this.transcoderPath="",this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new Ho,this.workerSourceURL="",this.workerConfig=null,typeof MSC_TRANSCODER<"u"&&console.warn('THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.')}setTranscoderPath(e){return this.transcoderPath=e,this}setWorkerLimit(e){return this.workerPool.setWorkerLimit(e),this}async detectSupportAsync(e){return this.workerConfig={astcSupported:await e.hasFeatureAsync("texture-compression-astc"),astcHDRSupported:!1,etc1Supported:await e.hasFeatureAsync("texture-compression-etc1"),etc2Supported:await e.hasFeatureAsync("texture-compression-etc2"),dxtSupported:await e.hasFeatureAsync("texture-compression-bc"),bptcSupported:await e.hasFeatureAsync("texture-compression-bptc"),pvrtcSupported:await e.hasFeatureAsync("texture-compression-pvrtc")},this}detectSupport(e){return e.isWebGPURenderer===!0?this.workerConfig={astcSupported:e.hasFeature("texture-compression-astc"),astcHDRSupported:!1,etc1Supported:e.hasFeature("texture-compression-etc1"),etc2Supported:e.hasFeature("texture-compression-etc2"),dxtSupported:e.hasFeature("texture-compression-bc"),bptcSupported:e.hasFeature("texture-compression-bptc"),pvrtcSupported:e.hasFeature("texture-compression-pvrtc")}:this.workerConfig={astcSupported:e.extensions.has("WEBGL_compressed_texture_astc"),astcHDRSupported:e.extensions.has("WEBGL_compressed_texture_astc")&&e.extensions.get("WEBGL_compressed_texture_astc").getSupportedProfiles().includes("hdr"),etc1Supported:e.extensions.has("WEBGL_compressed_texture_etc1"),etc2Supported:e.extensions.has("WEBGL_compressed_texture_etc"),dxtSupported:e.extensions.has("WEBGL_compressed_texture_s3tc"),bptcSupported:e.extensions.has("EXT_texture_compression_bptc"),pvrtcSupported:e.extensions.has("WEBGL_compressed_texture_pvrtc")||e.extensions.has("WEBKIT_WEBGL_compressed_texture_pvrtc")},this}init(){if(!this.transcoderPending){const e=new f.FileLoader(this.manager);e.setPath(this.transcoderPath),e.setWithCredentials(this.withCredentials);const a=e.loadAsync("basis_transcoder.js"),t=new f.FileLoader(this.manager);t.setPath(this.transcoderPath),t.setResponseType("arraybuffer"),t.setWithCredentials(this.withCredentials);const i=t.loadAsync("basis_transcoder.wasm");this.transcoderPending=Promise.all([a,i]).then(([n,o])=>{const s=qe.BasisWorker.toString(),A=["/* constants */","let _EngineFormat = "+JSON.stringify(qe.EngineFormat),"let _EngineType = "+JSON.stringify(qe.EngineType),"let _TranscoderFormat = "+JSON.stringify(qe.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(qe.BasisFormat),"/* basis_transcoder.js */",n,"/* worker */",s.substring(s.indexOf("{")+1,s.lastIndexOf("}"))].join(`
|
|
8
|
-
`);this.workerSourceURL=URL.createObjectURL(new Blob([A])),this.transcoderBinary=o,this.workerPool.setWorkerCreator(()=>{const u=new Worker(this.workerSourceURL),c=this.transcoderBinary.slice(0);return u.postMessage({type:"init",config:this.workerConfig,transcoderBinary:c},[c]),u})}),Wt>0&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),Wt++}return this.transcoderPending}load(e,a,t,i){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");const n=new f.FileLoader(this.manager);n.setResponseType("arraybuffer"),n.setWithCredentials(this.withCredentials),n.load(e,o=>{this.parse(o,a,i)},t,i)}parse(e,a,t){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");if(Kt.has(e))return Kt.get(e).promise.then(a).catch(t);this._createTexture(e).then(i=>a?a(i):null).catch(t)}_createTextureFrom(e,a){const{type:t,error:i,data:{faces:n,width:o,height:s,format:A,type:u,dfdFlags:c}}=e;if(t==="error")return Promise.reject(i);let d;if(a.faceCount===6)d=new f.CompressedCubeTexture(n,A,u);else{const l=n[0].mipmaps;d=a.layerCount>1?new f.CompressedArrayTexture(l,o,s,a.layerCount,A,u):new f.CompressedTexture(l,o,s,A,u)}return d.minFilter=n[0].mipmaps.length===1?f.LinearFilter:f.LinearMipmapLinearFilter,d.magFilter=f.LinearFilter,d.generateMipmaps=!1,d.needsUpdate=!0,d.colorSpace=fi(a),d.premultiplyAlpha=!!(1&c),d}async _createTexture(e,a={}){const t=function(s){const A=new Uint8Array(s.buffer,s.byteOffset,Ge.length);if(A[0]!==Ge[0]||A[1]!==Ge[1]||A[2]!==Ge[2]||A[3]!==Ge[3]||A[4]!==Ge[4]||A[5]!==Ge[5]||A[6]!==Ge[6]||A[7]!==Ge[7]||A[8]!==Ge[8]||A[9]!==Ge[9]||A[10]!==Ge[10]||A[11]!==Ge[11])throw new Error("Missing KTX 2.0 identifier.");const u=new Oo,c=17*Uint32Array.BYTES_PER_ELEMENT,d=new Ya(s,Ge.length,c,!0);u.vkFormat=d._nextUint32(),u.typeSize=d._nextUint32(),u.pixelWidth=d._nextUint32(),u.pixelHeight=d._nextUint32(),u.pixelDepth=d._nextUint32(),u.layerCount=d._nextUint32(),u.faceCount=d._nextUint32();const l=d._nextUint32();u.supercompressionScheme=d._nextUint32();const h=d._nextUint32(),b=d._nextUint32(),g=d._nextUint32(),p=d._nextUint32(),E=d._nextUint64(),m=d._nextUint64(),C=new Ya(s,Ge.length+c,3*l*8,!0);for(let Y=0;Y<l;Y++)u.levels.push({levelData:new Uint8Array(s.buffer,s.byteOffset+C._nextUint64(),C._nextUint64()),uncompressedByteLength:C._nextUint64()});const I=new Ya(s,h,b,!0),w={vendorId:I._skip(4)._nextUint16(),descriptorType:I._nextUint16(),versionNumber:I._nextUint16(),descriptorBlockSize:I._nextUint16(),colorModel:I._nextUint8(),colorPrimaries:I._nextUint8(),transferFunction:I._nextUint8(),flags:I._nextUint8(),texelBlockDimension:[I._nextUint8(),I._nextUint8(),I._nextUint8(),I._nextUint8()],bytesPlane:[I._nextUint8(),I._nextUint8(),I._nextUint8(),I._nextUint8(),I._nextUint8(),I._nextUint8(),I._nextUint8(),I._nextUint8()],samples:[]},D=(w.descriptorBlockSize/4-6)/4;for(let Y=0;Y<D;Y++){const ee={bitOffset:I._nextUint16(),bitLength:I._nextUint8(),channelType:I._nextUint8(),samplePosition:[I._nextUint8(),I._nextUint8(),I._nextUint8(),I._nextUint8()],sampleLower:-1/0,sampleUpper:1/0};64&ee.channelType?(ee.sampleLower=I._nextInt32(),ee.sampleUpper=I._nextInt32()):(ee.sampleLower=I._nextUint32(),ee.sampleUpper=I._nextUint32()),w.samples[Y]=ee}u.dataFormatDescriptor.length=0,u.dataFormatDescriptor.push(w);const x=new Ya(s,g,p,!0);for(;x._offset<p;){const Y=x._nextUint32(),ee=x._scan(Y),Ae=bi(ee);if(u.keyValue[Ae]=x._nextUint8Array(Y-ee.byteLength-1),Ae.match(/^ktx/i)){const Ce=bi(u.keyValue[Ae]);u.keyValue[Ae]=Ce.substring(0,Ce.lastIndexOf("\0"))}x._skip(Y%4?4-Y%4:0)}if(m<=0)return u;const y=new Ya(s,E,m,!0),F=y._nextUint16(),M=y._nextUint16(),S=y._nextUint32(),z=y._nextUint32(),O=y._nextUint32(),K=y._nextUint32(),J=[];for(let Y=0;Y<l;Y++)J.push({imageFlags:y._nextUint32(),rgbSliceByteOffset:y._nextUint32(),rgbSliceByteLength:y._nextUint32(),alphaSliceByteOffset:y._nextUint32(),alphaSliceByteLength:y._nextUint32()});const q=E+y._offset,se=q+S,ue=se+z,re=ue+O,le=new Uint8Array(s.buffer,s.byteOffset+q,S),de=new Uint8Array(s.buffer,s.byteOffset+se,z),$=new Uint8Array(s.buffer,s.byteOffset+ue,O),me=new Uint8Array(s.buffer,s.byteOffset+re,K);return u.globalData={endpointCount:F,selectorCount:M,imageDescs:J,endpointsData:le,selectorsData:de,tablesData:$,extendedData:me},u}(new Uint8Array(e)),i=t.vkFormat===Ht&&t.dataFormatDescriptor[0].colorModel===167;if(!(t.vkFormat===0||i&&!this.workerConfig.astcHDRSupported))return async function(s){const{vkFormat:A}=s;if(Yt[A]===void 0)throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");let u;s.supercompressionScheme===2&&(Vt||(Vt=new Promise(async l=>{const h=new qo;await h.init(),l(h)})),u=await Vt);const c=[];for(let l=0;l<s.levels.length;l++){const h=Math.max(1,s.pixelWidth>>l),b=Math.max(1,s.pixelHeight>>l),g=s.pixelDepth?Math.max(1,s.pixelDepth>>l):0,p=s.levels[l];let E,m;if(s.supercompressionScheme===0)E=p.levelData;else{if(s.supercompressionScheme!==2)throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");E=u.decode(p.levelData,p.uncompressedByteLength)}m=Xt[A]===f.FloatType?new Float32Array(E.buffer,E.byteOffset,E.byteLength/Float32Array.BYTES_PER_ELEMENT):Xt[A]===f.HalfFloatType?new Uint16Array(E.buffer,E.byteOffset,E.byteLength/Uint16Array.BYTES_PER_ELEMENT):E,c.push({data:m,width:h,height:b,depth:g})}let d;if(Jo.has(Yt[A]))d=s.pixelDepth===0?new f.DataTexture(c[0].data,s.pixelWidth,s.pixelHeight):new f.Data3DTexture(c[0].data,s.pixelWidth,s.pixelHeight,s.pixelDepth);else{if(s.pixelDepth>0)throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");d=new f.CompressedTexture(c,s.pixelWidth,s.pixelHeight),d.minFilter=c.length===1?f.LinearFilter:f.LinearMipmapLinearFilter,d.magFilter=f.LinearFilter}return d.mipmaps=c,d.type=Xt[A],d.format=Yt[A],d.colorSpace=fi(s),d.needsUpdate=!0,Promise.resolve(d)}(t);const n=a,o=this.init().then(()=>this.workerPool.postMessage({type:"transcode",buffer:e,taskConfig:n},[e])).then(s=>this._createTextureFrom(s.data,t));return Kt.set(e,{promise:o}),o}dispose(){this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),Wt--}}qe.BasisFormat={ETC1S:0,UASTC:1,UASTC_HDR:2},qe.TranscoderFormat={ETC1:0,ETC2:1,BC1:2,BC3:3,BC4:4,BC5:5,BC7_M6_OPAQUE_ONLY:6,BC7_M5:7,PVRTC1_4_RGB:8,PVRTC1_4_RGBA:9,ASTC_4x4:10,ATC_RGB:11,ATC_RGBA_INTERPOLATED_ALPHA:12,RGBA32:13,RGB565:14,BGR565:15,RGBA4444:16,BC6H:22,RGB_HALF:24,RGBA_HALF:25},qe.EngineFormat={RGBAFormat:f.RGBAFormat,RGBA_ASTC_4x4_Format:f.RGBA_ASTC_4x4_Format,RGB_BPTC_UNSIGNED_Format:f.RGB_BPTC_UNSIGNED_Format,RGBA_BPTC_Format:f.RGBA_BPTC_Format,RGBA_ETC2_EAC_Format:f.RGBA_ETC2_EAC_Format,RGBA_PVRTC_4BPPV1_Format:f.RGBA_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT5_Format:f.RGBA_S3TC_DXT5_Format,RGB_ETC1_Format:f.RGB_ETC1_Format,RGB_ETC2_Format:f.RGB_ETC2_Format,RGB_PVRTC_4BPPV1_Format:f.RGB_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT1_Format:f.RGBA_S3TC_DXT1_Format},qe.EngineType={UnsignedByteType:f.UnsignedByteType,HalfFloatType:f.HalfFloatType,FloatType:f.FloatType},qe.BasisWorker=function(){let r,e,a;const t=_EngineFormat,i=_EngineType,n=_TranscoderFormat,o=_BasisFormat;self.addEventListener("message",function(d){const l=d.data;switch(l.type){case"init":r=l.config,h=l.transcoderBinary,e=new Promise(b=>{a={wasmBinary:h,onRuntimeInitialized:b},BASIS(a)}).then(()=>{a.initializeBasis(),a.KTX2File===void 0&&console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.")});break;case"transcode":e.then(()=>{try{const{faces:b,buffers:g,width:p,height:E,hasAlpha:m,format:C,type:I,dfdFlags:w}=function(D){const x=new a.KTX2File(new Uint8Array(D));function y(){x.close(),x.delete()}if(!x.isValid())throw y(),new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");let F;if(x.isUASTC())F=o.UASTC;else if(x.isETC1S())F=o.ETC1S;else{if(!x.isHDR())throw new Error("THREE.KTX2Loader: Unknown Basis encoding");F=o.UASTC_HDR}const M=x.getWidth(),S=x.getHeight(),z=x.getLayers()||1,O=x.getLevels(),K=x.getFaces(),J=x.getHasAlpha(),q=x.getDFDFlags(),{transcoderFormat:se,engineFormat:ue,engineType:re}=function($,me,Y,ee){const Ae=A[$];for(let Ce=0;Ce<Ae.length;Ce++){const we=Ae[Ce];if(!(we.if&&!r[we.if])&&we.basisFormat.includes($)&&!(ee&&we.transcoderFormat.length<2)&&!(we.needsPowerOfTwo&&(!u(me)||!u(Y))))return{transcoderFormat:we.transcoderFormat[ee?1:0],engineFormat:we.engineFormat[ee?1:0],engineType:we.engineType[0]}}throw new Error("THREE.KTX2Loader: Failed to identify transcoding target.")}(F,M,S,J);if(!M||!S||!O)throw y(),new Error("THREE.KTX2Loader: Invalid texture");if(!x.startTranscoding())throw y(),new Error("THREE.KTX2Loader: .startTranscoding failed");const le=[],de=[];for(let $=0;$<K;$++){const me=[];for(let Y=0;Y<O;Y++){const ee=[];let Ae,Ce;for(let Ue=0;Ue<z;Ue++){const Je=x.getImageLevelInfo(Y,Ue,$);$!==0||Y!==0||Ue!==0||Je.origWidth%4==0&&Je.origHeight%4==0||console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."),O>1?(Ae=Je.origWidth,Ce=Je.origHeight):(Ae=Je.width,Ce=Je.height);let Ke=new Uint8Array(x.getImageTranscodedSizeInBytes(Y,Ue,0,se));const at=x.transcodeImage(Ke,Y,Ue,$,se,0,-1,-1);if(re===i.HalfFloatType&&(Ke=new Uint16Array(Ke.buffer,Ke.byteOffset,Ke.byteLength/Uint16Array.BYTES_PER_ELEMENT)),!at)throw y(),new Error("THREE.KTX2Loader: .transcodeImage failed.");ee.push(Ke)}const we=c(ee);me.push({data:we,width:Ae,height:Ce}),de.push(we.buffer)}le.push({mipmaps:me,width:M,height:S,format:ue,type:re})}return y(),{faces:le,buffers:de,width:M,height:S,hasAlpha:J,dfdFlags:q,format:ue,type:re}}(l.buffer);self.postMessage({type:"transcode",id:l.id,data:{faces:b,width:p,height:E,hasAlpha:m,format:C,type:I,dfdFlags:w}},g)}catch(b){console.error(b),self.postMessage({type:"error",id:l.id,error:b.message})}})}var h});const s=[{if:"astcSupported",basisFormat:[o.UASTC],transcoderFormat:[n.ASTC_4x4,n.ASTC_4x4],engineFormat:[t.RGBA_ASTC_4x4_Format,t.RGBA_ASTC_4x4_Format],engineType:[i.UnsignedByteType],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:"bptcSupported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[n.BC7_M5,n.BC7_M5],engineFormat:[t.RGBA_BPTC_Format,t.RGBA_BPTC_Format],engineType:[i.UnsignedByteType],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:"dxtSupported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[n.BC1,n.BC3],engineFormat:[t.RGBA_S3TC_DXT1_Format,t.RGBA_S3TC_DXT5_Format],engineType:[i.UnsignedByteType],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:"etc2Supported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[n.ETC1,n.ETC2],engineFormat:[t.RGB_ETC2_Format,t.RGBA_ETC2_EAC_Format],engineType:[i.UnsignedByteType],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:"etc1Supported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[n.ETC1],engineFormat:[t.RGB_ETC1_Format],engineType:[i.UnsignedByteType],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:"pvrtcSupported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[n.PVRTC1_4_RGB,n.PVRTC1_4_RGBA],engineFormat:[t.RGB_PVRTC_4BPPV1_Format,t.RGBA_PVRTC_4BPPV1_Format],engineType:[i.UnsignedByteType],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0},{if:"bptcSupported",basisFormat:[o.UASTC_HDR],transcoderFormat:[n.BC6H],engineFormat:[t.RGB_BPTC_UNSIGNED_Format],engineType:[i.HalfFloatType],priorityHDR:1,needsPowerOfTwo:!1},{basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[n.RGBA32,n.RGBA32],engineFormat:[t.RGBAFormat,t.RGBAFormat],engineType:[i.UnsignedByteType,i.UnsignedByteType],priorityETC1S:100,priorityUASTC:100,needsPowerOfTwo:!1},{basisFormat:[o.UASTC_HDR],transcoderFormat:[n.RGBA_HALF],engineFormat:[t.RGBAFormat],engineType:[i.HalfFloatType],priorityHDR:100,needsPowerOfTwo:!1}],A={[o.ETC1S]:s.filter(d=>d.basisFormat.includes(o.ETC1S)).sort((d,l)=>d.priorityUASTC-l.priorityUASTC),[o.UASTC]:s.filter(d=>d.basisFormat.includes(o.UASTC)).sort((d,l)=>d.priorityUASTC-l.priorityUASTC),[o.UASTC_HDR]:s.filter(d=>d.basisFormat.includes(o.UASTC_HDR)).sort((d,l)=>d.priorityHDR-l.priorityHDR)};function u(d){return d<=2||!(d&d-1)&&d!==0}function c(d){if(d.length===1)return d[0];let l=0;for(let g=0;g<d.length;g++)l+=d[g].byteLength;const h=new Uint8Array(l);let b=0;for(let g=0;g<d.length;g++){const p=d[g];h.set(p,b),b+=p.byteLength}return h}};const Jo=new Set([f.RGBAFormat,f.RGFormat,f.RedFormat]),Yt={[di]:f.RGBAFormat,[Ai]:f.RGBAFormat,[ii]:f.RGBAFormat,[ni]:f.RGBAFormat,[ui]:f.RGFormat,[si]:f.RGFormat,[ti]:f.RGFormat,[ri]:f.RGFormat,[ci]:f.RedFormat,[oi]:f.RedFormat,[ai]:f.RedFormat,[ei]:f.RedFormat,[Ht]:f.RGBA_ASTC_4x4_Format,[li]:f.RGBA_ASTC_6x6_Format,[hi]:f.RGBA_ASTC_6x6_Format},Xt={[di]:f.FloatType,[Ai]:f.HalfFloatType,[ii]:f.UnsignedByteType,[ni]:f.UnsignedByteType,[ui]:f.FloatType,[si]:f.HalfFloatType,[ti]:f.UnsignedByteType,[ri]:f.UnsignedByteType,[ci]:f.FloatType,[oi]:f.HalfFloatType,[ai]:f.UnsignedByteType,[ei]:f.UnsignedByteType,[Ht]:f.HalfFloatType,[li]:f.UnsignedByteType,[hi]:f.UnsignedByteType};function fi(r){const e=r.dataFormatDescriptor[0];return e.colorPrimaries===1?e.transferFunction===2?f.SRGBColorSpace:f.LinearSRGBColorSpace:e.colorPrimaries===10?e.transferFunction===2?"display-p3":"display-p3-linear":(e.colorPrimaries===0||console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${e.colorPrimaries}"`),f.NoColorSpace)}async function pi(r){const e=r.split("?")[0].split(".").pop(),a=await fetch(r);if(!a.ok)throw new Error(`Failed to fetch ${r}: ${a.statusText}`);if(e==="json"){const t=await a.json();return handleJSONSubtree(t,mi(r))}if(e==="subtree")return async function(t,i){const n=new DataView(t),o=n.getBigUint64(8,!0),s=n.getBigUint64(16,!0),A=24,u=A+Number(o),c=u+(8-u%8)%8,d=c+Number(s),l=t.slice(A,u),h=new TextDecoder().decode(l).trim(),b=JSON.parse(h);if(!b.buffers)throw new Error("subtree has no buffers");const g=b.buffers.map(async E=>{if(E.uri){const m=new URL(E.uri,i).href,C=await fetch(m);if(!C.ok)throw new Error(`Failed to fetch binary file ${m}: ${C.statusText}`);return new Uint8Array(await C.arrayBuffer())}return new Uint8Array(t.slice(c,d))}),p=await Promise.all(g);return function(E,m){function C(y,F){if(!y)throw new Error("incomplete json subtree");if(y.constant){if(y.constant==0)return!1;if(y.constant==1)return!0}if(y.bitstream==null)throw new Error('json subtree "tileAvailability" does not specify a bitstream');if(!E.bufferViews||!E.bufferViews[y.bitstream])throw new Error('json subtree "bufferViews" does not specify a bitstream');const M=E.bufferViews[y.bitstream];return I(m[M.buffer],M.byteOffset,F)}function I(y,F,M){const S=M%8;return y[F+Math.floor(M/8)]>>S&!0}function w(y){let F=0;return F=y.z==null?Zt(y.x,y.y,y.level):er(y.x,y.y,y.z,y.level),C(E.tileAvailability,F)}function D(y){let F=0;F=y.z==null?Zt(y.x,y.y,y.level):er(y.x,y.y,y.z,y.level);const M=[];return E.contentAvailability.forEach(S=>{M.push(C(S,F))}),M}function x(y){let F=0;return F=y.z==null?Zt(y.x,y.y):er(y.x,y.y,y.z),C(E.childSubtreeAvailability,F)}return{isTileAvailable:w,isContentAvailable:D,isChildSubtreeAvailable:x}}(b,p)}(await a.arrayBuffer(),mi(r));throw new Error(`Unsupported file extension: ${e}`)}function mi(r){const e=r.split("?")[0];return e.substring(0,e.lastIndexOf("/")+1)}function Ei(r){return r=1431655765&((r=858993459&((r=252645135&((r=16711935&((r&=65535)^r<<8))^r<<4))^r<<2))^r<<1)}function Zt(r,e,a){let t=0;return a&&(t=(Math.pow(4,a)-1)/3),t+(Ei(r)|Ei(e)<<1)}function $t(r){return r=153391689&((r=51130563&((r=50393103&((r=4278190335&((r&=1023)^r<<16))^r<<8))^r<<4))^r<<2)}function er(r,e,a,t){let i=0;return t&&(i=(Math.pow(8,t)-1)/7),i+($t(r)|$t(e)<<1|$t(a)<<2)}const Xa=new Map;async function ar(r,e){if(!r.root||!r.root.implicitTiling)return r;if(!r.root.content&&!r.root.contents)throw new Error("implicit tiling requires a Template URI");let a=!0;r.root.implicitTiling.subdivisionScheme&&(a=r.root.implicitTiling.subdivisionScheme.toUpperCase()==="QUADTREE");let t="";r.root.implicitTiling.subtrees&&(r.root.implicitTiling.subtrees.uri?t=r.root.implicitTiling.subtrees.uri:r.root.implicitTiling.subtrees.url&&(t=r.root.implicitTiling.subtrees.url));let i=[];r.root.content?r.root.content.uri?i.push(r.root.content.uri):r.root.content.url&&i.push(r.root.content.url):r.root.contents&&r.root.contents.forEach(h=>{h.uri?i.push(h.uri):h.url&&i.push(h.url)});const n=function(h){const b=h.split("?")[0];return b.substring(0,b.lastIndexOf("/")+1)}(e);let o;a&&(o=t.replace("{level}",0).replace("{x}",0).replace("{y}",0)),a||(o=t.replace("{level}",0).replace("{x}",0).replace("{y}",0).replace("{z}",0));const s={level:0,x:0,y:0},A={level:0,x:0,y:0};a||(s.z=0,A.z=0),Xa.set(o,await pi(n+o));const u=Xa.get(o),c=[];u.isContentAvailable(A)&&i.forEach(h=>{let b;a&&(b=h.replace("{level}",s.level).replace("{x}",s.x).replace("{y}",s.y)),a||(b=h.replace("{level}",s.level).replace("{x}",s.x).replace("{y}",s.y).replace("{z}",s.z)),c.push({uri:b})});const d={geometricError:r.root.geometricError,boundingVolume:r.root.boundingVolume,refine:r.root.refine,globalAddress:s,localAddress:A,subtree:u,contents:c,getChildren:async()=>l(d)};return{root:d};async function l(h){const b=[];if(h.localAddress.level==r.root.implicitTiling.availableLevels-1)return b;if((h.localAddress.level+1)%r.root.implicitTiling.subtreeLevels==0){const g=nt(h.localAddress),p=nt(h.globalAddress),E=Ci(a,r.root.boundingVolume,p);for(let m=0;m<g.length;m++){const C=g[m],I=p[m];h.subtree.isChildSubtreeAvailable(C)&&(a&&t.replace("{level}",I.level).replace("{x}",I.x).replace("{y}",I.y),a||t.replace("{level}",I.level).replace("{x}",I.x).replace("{y}",I.y).replace("{z}",I.z)),Xa.has(o)||Xa.set(o,await pi(n+o));const w=Xa.get(o),D={level:0,x:0,y:0};a||(D.z=0);const x=[];w.isContentAvailable(D)&&i.forEach(F=>{let M;a&&(M=F.replace("{level}",I.level).replace("{x}",I.x).replace("{y}",I.y)),a||(M=F.replace("{level}",I.level).replace("{x}",I.x).replace("{y}",I.y).replace("{z}",I.z)),x.push({uri:M})});const y={geometricError:h.geometricError/2,boundingVolume:E[m],refine:r.root.refine,globalAddress:I,localAddress:D,subtree:w,contents:x,getChildren:async()=>l(y)};b.push(y)}}else{const g=nt(h.localAddress),p=nt(h.globalAddress),E=Ci(a,r.root.boundingVolume,p);for(let m=0;m<g.length;m++){const C=g[m],I=p[m];if(!h.subtree.isTileAvailable(C))continue;const w=[],D=h.subtree.isContentAvailable(C);for(let y=0;y<i.length;y++){if(!D[y])continue;const F=i[y];let M;a&&(M=F.replace("{level}",I.level).replace("{x}",I.x).replace("{y}",I.y)),a||(M=F.replace("{level}",I.level).replace("{x}",I.x).replace("{y}",I.y).replace("{z}",I.z)),w.push({uri:M})}const x={geometricError:h.geometricError/2,boundingVolume:E[m],refine:r.root.refine,globalAddress:I,localAddress:C,subtree:h.subtree,contents:w,getChildren:async()=>l(x)};b.push(x)}}return b.length>0?b:void 0}}function nt(r){const{level:e,x:a,y:t,z:i}=r,n=e+1;let o=[];return o=i===void 0?[{level:n,x:2*a,y:2*t},{level:n,x:2*a+1,y:2*t},{level:n,x:2*a,y:2*t+1},{level:n,x:2*a+1,y:2*t+1}]:[{level:n,x:2*a,y:2*t,z:2*i},{level:n,x:2*a+1,y:2*t,z:2*i},{level:n,x:2*a,y:2*t+1,z:2*i},{level:n,x:2*a+1,y:2*t+1,z:2*i},{level:n,x:2*a,y:2*t,z:2*i+1},{level:n,x:2*a+1,y:2*t,z:2*i+1},{level:n,x:2*a,y:2*t+1,z:2*i+1},{level:n,x:2*a+1,y:2*t+1,z:2*i+1}],o}function Ci(r,e,a){const t=[];for(let i=0;i<a.length;i++)t.push(Ko(r,e,a[i]));return t}function Ko(r,e,a){if(e.region)return function(t,i,n){const[o,s,A,u,c,d]=i,l=(A-o)/2**n.level,h=(u-s)/2**n.level,b=t?0:(d-c)/2**n.level,g=o+l*n.x,p=s+h*n.y,E=g+l,m=p+h,C=t?c:c+b*n.z,I=t?d:C+b;return{region:[g,p,E,m,C,I]}}(r,e.region,a);if(e.box)return function(t,i,n){const o=i.slice(0,3),s=[i.slice(3,6),i.slice(6,9),i.slice(9,12)],A=1/Math.pow(2,n.level),u=[A,A,t?1:A],c=s.map((h,b)=>h.map(g=>g*u[b])),d=[o[0]-s[0][0]-s[1][0]-s[2][0],o[1]-s[0][1]-s[1][1]-s[2][1],o[2]-s[0][2]-s[1][2]-s[2][2]];return{box:[d[0]+(2*n.x+1)*(c[0][0]+c[1][0]+c[2][0]),d[1]+(2*n.y+1)*(c[0][1]+c[1][1]+c[2][1]),t?o[2]:d[2]+(2*n.z+1)*(c[0][2]+c[1][2]+c[2][2])].concat(...c)}}(r,e.box,a);throw new Error("Unsupported bounding volume type")}(function(){var r,e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};function a(A){if(!A)throw new Error("Assertion failed")}function t(A){return new Uint8Array(A.buffer,A.byteOffset,A.byteLength)}function i(A,u,c,d,l){var h=r.exports.sbrk,b=h(u),g=h(d*l),p=new Uint8Array(r.exports.memory.buffer);p.set(t(c),g);var E=A(b,u,g,d,l),m=new Uint8Array(E);return m.set(p.subarray(b,b+E)),h(b-h(0)),m}function n(A){for(var u=0,c=0;c<A.length;++c)var d=A[c];return u}function o(A,u){if(a(u==2||u==4),u==4)return new Uint32Array(A.buffer,A.byteOffset,A.byteLength/4);var c=new Uint16Array(A.buffer,A.byteOffset,A.byteLength/2);return new Uint32Array(c)}function s(A,u,c,d,l,h,b){var g=r.exports.sbrk,p=g(c*d),E=g(c*h),m=new Uint8Array(r.exports.memory.buffer);m.set(t(u),E),A(p,c,d,l,E,b);var C=new Uint8Array(c*d);return C.set(m.subarray(p,p+c*d)),g(p-g(0)),C}WebAssembly.instantiate(function(A){for(var u=new Uint8Array(A.length),c=0;c<A.length;++c){var d=A.charCodeAt(c);u[c]=d>96?d-97:d>64?d-39:d+4}var l=0;for(c=0;c<A.length;++c)u[l++]=u[c]<60?e[u[c]]:64*(u[c]-60)+u[++c];return u.buffer.slice(0,l)}("b9H79Tebbbe9nk9Geueu9Geub9Gbb9Gouuuuuueu9Gvuuuuueu9Gduueu9Gluuuueu9Gvuuuuub9Gouuuuuub9Gluuuub9GiuuueuiYKdilveoveovrrwrrDDoDbqqbelve9Weiiviebeoweuec;G:Qdkr:nlAo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9mW4W2be8A9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWVbd8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9c9V919U9KbiE9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949wWV79P9V9UblY9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWVbv8E9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWV9c9V919U9Kbo8A9TW79O9V9Wt9FW9U9J9V9KW69U9KW949wWV79P9V9UbrE9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JWbwa9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JW9c9V919U9KbDL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9p9JtbqK9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9r919HtbkL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVT949WbxE9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OWbsa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OW9ttV9P9Wbza9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9WbHK9TW79O9V9Wt9F79W9Ht9P9H29t9VVt9sW9T9H9WbOl79IV9RbADwebcekdLQq:X9MKdbk:xhdgud9:8Jjjjjbc;qw9Rgo8Kjjjjbdndnaembcbhrxekabcbyd;C:kjjbgwc:GeV86bbaoc;adfcbcjdz:vjjjb8AdnaiTmbaoc;adfadalzNjjjb8Akaoc;abfalfcbcbcjdal9RalcFe0Ez:vjjjb8Aaoc;abfaoc;adfalzNjjjb8AaocUf9cb83ibaoc8Wf9cb83ibaocyf9cb83ibaocaf9cb83ibaocKf9cb83ibaoczf9cb83ibao9cb83iwao9cb83ibcj;abal9Uc;WFbGcjdalca0EhDdnaicd6mbavcd9imbawTmbadcefhqaDci2gkal2hxaoc;alfclfhmaoc;qlfceVhPaoc;qofclVhsaoc;qofcKfhzaoc;qofczfhHcbhOincdhAcbhrdnavci6mbaz9cb83ibaH9cb83ibao9cb83i;yoao9cb83i;qoadaOfgrybbhCcbhXincbhQcbhLdninaralfhKarybbgYaC7aLVhLaQcP0meaKhraYhCaQcefgQaXfai6mbkkcbhCaoc;qofhQincwh8AcwhEdnaLaC93grcFeGg3cs0mbclhEa3ci0mba3cb9hcethEkdnarcw4cFeGg3cs0mbclh8Aa3ci0mba3cb9hceth8Aka8AaEfh3aQydbh5cwh8AcwhEdnarcz4cFeGg8Ecs0mbclhEa8Eci0mba8Ecb9hcethEka3a5fh3dnarcFFFFb0mbclh8AarcFFF8F0mbarcFFFr0ceth8AkaQa3aEfa8AfBdbaQclfhQaCcefgCcw9hmbkaKhraYhCaXczfgXai6mbkcbhrcehQashLinaQaraLydbaoc;qofarcdtfydb6EhraLclfhLaQcefgQcw9hmbkcihAkcbh3aoc;qlfcbcjdz:vjjjb8Aaoc;alfcwfcbBdbao9cb83i;alarclth8FadhaaDhhaqh5inaoc;qlfadcba3cufgrara30Eal2falzNjjjb8Aaiahaiah6EhgdnaDaia39Ra3aDfai6EgYcsfc9WGgraY9nmbaoc;qofaYfcbaraY9Rz:vjjjb8Akada3al2fh8Jcbh8Kina8Ka8FVcl4hXaoc;alfa8Kcdtfh8LaOh8Mcbh8Nina8NaOfhQdndndndndndna8KPldebidkaPa8Mc98GgLfhra5aLfh8Aaoc;qlfaQc98GgLfRbbhCcwhQinarRbbaQtaCVhCarcefhraQcwfgQca9hmbkaYTmla8Ncith8Ea8JaLfhEcbhKinaERbbhLcwhra8AhQinaQRbbartaLVhLaQcefhQarcwfgrca9hmbkaoc;qofaKfaLaC7aX93a8E486bba8Aalfh8AaEalfhEaLhCaKcefgKaY9hmbxlkkaYTmia8Mc9:Ghra8NcitcwGhEaoc;qlfaQceVfRbbcwtaoc;qlfaQc9:GfRbbVhLaoc;qofhQaghCinaQa5arfRbbcwtaaarfRbbVg8AaL9RgLcetaLcztcz91cs47cFFiGaE486bbaralfhraQcefhQa8AhLa3aCcufgC9hmbxikkaYTmda8JaQfhraoc;qlfaQfRbbhLaoc;qofhQaghCinaQarRbbg8AaL9RgLcetaLcKtcK91cr4786bbaQcefhQaralfhra8AhLa3aCcufgC9hmbxdkkaYTmeka8LydbhEcbhKaoc;qofhrincdhLcbhQinaLaraQfRbbcb9hfhLaQcefgQcz9hmbkclhCcbhQinaCaraQfRbbcd0fhCaQcefgQcz9hmbkcwh8AcbhQina8AaraQfRbbcP0fh8AaQcefgQcz9hmbkaLaCaLaC6EgQa8AaQa8A6EgQczaQcz6EaEfhEarczfhraKczfgKaY6mbka8LaEBdbka8Mcefh8Ma8Ncefg8Ncl9hmbka8Kcefg8KaA9hmbkaaaxfhaahakfhha5axfh5a3akfg3ai6mbkcbhrcehQamhLinaQaraLydbaoc;alfarcdtfydb6EhraLclfhLaQcefgChQaAaC9hmbkaoaOcd4fa8FcdVararcdSE86bbaOclfgOal6mbkkabaefh8Kabcefhralcd4gecbawEhqadcefhHaoc;abfceVhzcbhxdndninaiax9nmeaoc;qofcbcjdz:vjjjb8Aa8Kar9Raq6mdadaxal2gQfhkcbh8JaHaQfhsarcbaqz:vjjjbghaqfh5aDaiax9RaxaDfai6EgPcsfgrcl4cifcd4hAarc9WGg8LThmindndndndndndndndndndnawTmbaoa8Jcd4fRbbgLciGPlbedlbkaPTmdaka8Jfhraoc;abfa8JfRbbhLaoc;qofhQaPhCinaQarRbbg8AaL9RgLcetaLcKtcK91cr4786bbaQcefhQaralfhra8AhLaCcufgCmbxikkaPTmia8JcitcwGhEaoc;abfa8JceVfRbbcwtaoc;abfa8Jc9:GgrfRbbVhLakarfhraoc;qofhQaPhCinaQar8Vbbg8AaL9RgLcetaLcztcz91cs47cFFiGaE486bbaQcefhQaralfhra8AhLaCcufgCmbxdkkaza8Jc98GgEfhrasaEfh8Aaoc;abfaEfRbbhCcwhQinarRbbaQtaCVhCarcefhraQcwfgQca9hmbkaPTmbaLcl4hYa8JcitcKGh3akaEfhEcbhKinaERbbhLcwhra8AhQinaQRbbartaLVhLaQcefhQarcwfgrca9hmbkaoc;qofaKfaLaC7aY93a3486bba8Aalfh8AaEalfhEaLhCaKcefgKaP9hmbkkawmbcbhrxlka8LTmbcbhrdninaoc;qofarfgQcwf8PibaQ8Pib:e9qTmearczfgra8L9pmdxbkkdnavmbcehrxikcbhEaAhKaAhYinaoc;qofaEfgrcwf8Pibhyar8Pibh8PcdhLcbhQinaLaraQfRbbcb9hfhLaQcefgQcz9hmbkclhCcbhQinaCaraQfRbbcd0fhCaQcefgQcz9hmbkcwh8AcbhQina8AaraQfRbbcP0fh8AaQcefgQcz9hmbkaLaCaLaC6Egra8Aara8A6Egrczarcz6EaYfhYarcucbaya8P:e9cb9sEgQaraQ6EaKfhKaEczfgEa8L9pmdxbkkaha8Jcd4fgrarRbbcda8JcetcoGtV86bbxikdnaKaP6mbaYaP6mbaha8Jcd4fgrarRbbcia8JcetcoGtV86bba8Ka59RaP6mra5aoc;qofaPzNjjjbaPfh5xikaKaY9phrkaha8Jcd4fgQaQRbbara8JcetcoGtV86bbka8Ka59RaA6mla5cbaAz:vjjjbgOaAfhYdndna8Lmbamhrxekdna8KaY9RcK9pmbamhrxekarcdtc:q1jjbfcj1jjbawEg5ydxggcetc;:FFFeGh8Fcuh3cuagtcu7cFeGhacbh8Maoc;qofhLinaoc;qofa8MfhXczhEdndndnagPDbeeeeeeedekcucbaXcwf8PibaX8Pib:e9cb9sEhExekcbhra8FhEinaEaaaLarfRbb9nfhEarcefgrcz9hmbkkcih8Ecbh8AinczhQdndndna5a8AcdtfydbgKPDbeeeeeeedekcucbaXcwf8PibaX8Pib:e9cb9sEhQxekaKcetc;:FFFeGhQcuaKtcu7cFeGhCcbhrinaQaCaLarfRbb9nfhQarcefgrcz9hmbkkdndnaQaE6mbaKa39hmeaQaE9hmea5a8EcdtfydbcwSmeka8Ah8EaQhEka8Acefg8Aci9hmbkaOa8Mco4fgrarRbba8Ea8Mci4coGtV86bbdndndna5a8Ecdtfydbg3PDdbbbbbbbebkdncwa39Tg8ETmbcua3tcu7hQdndna3ceSmbcbh8NaLhXinaXhra8Eh8AcbhCinarRbbgEaQcFeGgKaEaK6EaCa3tVhCarcefhra8Acufg8AmbkaYaC86bbaXa8EfhXaYcefhYa8Na8Efg8Ncz6mbxdkkcbh8NaLhXinaXhra8Eh8AcbhCinarRbbgEaQcFeGgKaEaK6EaCcetVhCarcefhra8Acufg8AmbkaYaC:T9cFe:d9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:9ca188bbaXa8EfhXaYcefhYa8Na8Efg8Ncz6mbkkcbhrinaYaLarfRbbgC86bbaYaCaQcFeG9pfhYarcefgrcz9hmbxikkdna3ceSmbinaYcb86bbaYcefhYxbkkinaYcb86bbaYcefhYxbkkaYaX8Pbb83bbaYcwfaXcwf8Pbb83bbaYczfhYka8Mczfg8Ma8L9pgrmeaLczfhLa8KaY9RcK9pmbkkarTmlaYh5aYTmlka8Jcefg8Jal9hmbkaoc;abfakaPcufal2falzNjjjb8AaPaxfhxa5hra5mbkcbhrxdkdna8Kar9RaqalfgQcKcaawEgLaQaL0EgC9pmbcbhrxdkdnaQaL9pmbarcbaCaQ9RgQz:vjjjbaQfhrkaraoc;adfalzNjjjbalfhrdnawTmbaraoaezNjjjbaefhrkarab9Rhrxekcbhrkaoc;qwf8KjjjjbarkCbabaeadaialcdz:bjjjbk9reduaecd4gdaefgicaaica0Eabcj;abae9Uc;WFbGcjdaeca0Egifcufai9Uae2aiadfaicl4cifcd4f2fcefkmbcbabBd;C:kjjbk:Ese5u8Jjjjjbc;ae9Rgl8Kjjjjbcbhvdnaici9UgocHfae0mbabcbyd;m:kjjbgrc;GeV86bbalc;abfcFecjez:vjjjb8AalcUfgw9cu83ibalc8WfgD9cu83ibalcyfgq9cu83ibalcafgk9cu83ibalcKfgx9cu83ibalczfgm9cu83ibal9cu83iwal9cu83ibabaefc9WfhPabcefgsaofhednaiTmbcmcsarcb9kgzEhHcbhOcbhAcbhCcbhXcbhQindnaeaP9nmbcbhvxikaQcufhvadaCcdtfgLydbhKaLcwfydbhYaLclfydbh8AcbhEdndndninalc;abfavcsGcitfgoydlh3dndndnaoydbgoaK9hmba3a8ASmekdnaoa8A9hmba3aY9hmbaEcefhExekaoaY9hmea3aK9hmeaEcdfhEkaEc870mdaXcufhvaLaEciGcx2goc;i1jjbfydbcdtfydbh3aLaoc;e1jjbfydbcdtfydbh8AaLaoc;a1jjbfydbcdtfydbhKcbhodnindnalavcsGcdtfydba39hmbaohYxdkcuhYavcufhvaocefgocz9hmbkkaOa3aOSgvaYce9iaYaH9oVgoGfhOdndndncbcsavEaYaoEgvcs9hmbarce9imba3a3aAa3cefaASgvEgAcefSmecmcsavEhvkasavaEcdtc;WeGV86bbavcs9hmea3aA9Rgvcetavc8F917hvinaeavcFb0crtavcFbGV86bbaecefheavcje6hoavcr4hvaoTmbka3hAxvkcPhvasaEcdtcPV86bba3hAkavTmiavaH9omicdhocehEaQhYxlkavcufhvaEclfgEc;ab9hmbkkdnaLceaYaOSceta8AaOSEcx2gvc;a1jjbfydbcdtfydbgKTaLavc;e1jjbfydbcdtfydbg8AceSGaLavc;i1jjbfydbcdtfydbg3cdSGaOcb9hGazGg5ce9hmbaw9cu83ibaD9cu83ibaq9cu83ibak9cu83ibax9cu83ibam9cu83ibal9cu83iwal9cu83ibcbhOkcbhEaXcufgvhodnindnalaocsGcdtfydba8A9hmbaEhYxdkcuhYaocufhoaEcefgEcz9hmbkkcbhodnindnalavcsGcdtfydba39hmbaohExdkcuhEavcufhvaocefgocz9hmbkkaOaKaOSg8EfhLdndnaYcm0mbaYcefhYxekcbcsa8AaLSgvEhYaLavfhLkdndnaEcm0mbaEcefhExekcbcsa3aLSgvEhEaLavfhLkc9:cua8EEh8FcbhvaEaYcltVgacFeGhodndndninavc:W1jjbfRbbaoSmeavcefgvcz9hmbxdkka5aKaO9havcm0VVmbasavc;WeV86bbxekasa8F86bbaeaa86bbaecefhekdna8EmbaKaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaKhAkdnaYcs9hmba8AaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka8AhAkdnaEcs9hmba3aA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka3hAkalaXcdtfaKBdbaXcefcsGhvdndnaYPzbeeeeeeeeeeeeeebekalavcdtfa8ABdbaXcdfcsGhvkdndnaEPzbeeeeeeeeeeeeeebekalavcdtfa3BdbavcefcsGhvkcihoalc;abfaQcitfgEaKBdlaEa8ABdbaQcefcsGhYcdhEavhXaLhOxekcdhoalaXcdtfa3BdbcehEaXcefcsGhXaQhYkalc;abfaYcitfgva8ABdlava3Bdbalc;abfaQaEfcsGcitfgva3BdlavaKBdbascefhsaQaofcsGhQaCcifgCai6mbkkdnaeaP9nmbcbhvxekcbhvinaeavfavc:W1jjbfRbb86bbavcefgvcz9hmbkaeab9Ravfhvkalc;aef8KjjjjbavkZeeucbhddninadcefgdc8F0meceadtae6mbkkadcrfcFeGcr9Uci2cdfabci9U2cHfkmbcbabBd;m:kjjbk:Adewu8Jjjjjbcz9Rhlcbhvdnaicvfae0mbcbhvabcbRb;m:kjjbc;qeV86bbal9cb83iwabcefhoabaefc98fhrdnaiTmbcbhwcbhDindnaoar6mbcbskadaDcdtfydbgqalcwfawaqav9Rgvavc8F91gv7av9Rc507gwcdtfgkydb9Rgvc8E91c9:Gavcdt7awVhvinaoavcFb0gecrtavcFbGV86bbavcr4hvaocefhoaembkakaqBdbaqhvaDcefgDai9hmbkkdnaoar9nmbcbskaocbBbbaoab9RclfhvkavkBeeucbhddninadcefgdc8F0meceadtae6mbkkadcwfcFeGcr9Uab2cvfk:bvli99dui99ludnaeTmbcuadcetcuftcu7:Zhvdndncuaicuftcu7:ZgoJbbbZMgr:lJbbb9p9DTmbar:Ohwxekcjjjj94hwkcbhicbhDinalclfIdbgrJbbbbJbbjZalIdbgq:lar:lMalcwfIdbgk:lMgr:varJbbbb9BEgrNhxaqarNhrdndnakJbbbb9GTmbaxhqxekJbbjZar:l:tgqaq:maxJbbbb9GEhqJbbjZax:l:tgxax:marJbbbb9GEhrkdndnalcxfIdbgxJbbj:;axJbbj:;9GEgkJbbjZakJbbjZ9FEavNJbbbZJbbb:;axJbbbb9GEMgx:lJbbb9p9DTmbax:Ohmxekcjjjj94hmkdndnaqJbbj:;aqJbbj:;9GEgxJbbjZaxJbbjZ9FEaoNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:OhPxekcjjjj94hPkdndnarJbbj:;arJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;arJbbbb9GEMgr:lJbbb9p9DTmbar:Ohsxekcjjjj94hskdndnadcl9hmbabaifgzas86bbazcifam86bbazcdfaw86bbazcefaP86bbxekabaDfgzas87ebazcofam87ebazclfaw87ebazcdfaP87ebkalczfhlaiclfhiaDcwfhDaecufgembkkk;hlld99eud99eudnaeTmbdndncuaicuftcu7:ZgvJbbbZMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikaic;8FiGhrinabcofcicdalclfIdb:lalIdb:l9EgialcwfIdb:lalaicdtfIdb:l9EEgialcxfIdb:lalaicdtfIdb:l9EEgiarV87ebdndnJbbj:;JbbjZalaicdtfIdbJbbbb9DEgoalaicd7cdtfIdbJ;Zl:1ZNNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabcdfaq87ebdndnalaicefciGcdtfIdbJ;Zl:1ZNaoNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabaq87ebdndnaoalaicufciGcdtfIdbJ;Zl:1ZNNgoJbbj:;aoJbbj:;9GEgwJbbjZawJbbjZ9FEavNJbbbZJbbb:;aoJbbbb9GEMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikabclfai87ebabcwfhbalczfhlaecufgembkkk;3viDue99eu8Jjjjjbcjd9Rgo8Kjjjjbadcd4hrdndndndnavcd9hmbadcl6meaohwarhDinawc:CuBdbawclfhwaDcufgDmbkaeTmiadcl6mdarcdthqalhkcbhxinaohwakhDarhminawawydbgPcbaDIdbgs:8cL4cFeGc:cufasJbbbb9BEgzaPaz9kEBdbaDclfhDawclfhwamcufgmmbkakaqfhkaxcefgxaeSmixbkkaeTmdxekaeTmekarcdthkavce9hhqadcl6hdcbhxindndndnaqmbadmdc:CuhDalhwarhminaDcbawIdbgs:8cL4cFeGc:cufasJbbbb9BEgPaDaP9kEhDawclfhwamcufgmmbxdkkc:CuhDdndnavPleddbdkadmdaohwalhmarhPinawcbamIdbgs:8cL4cFeGgzc;:bazc;:b0Ec:cufasJbbbb9BEBdbamclfhmawclfhwaPcufgPmbxdkkadmecbhwarhminaoawfcbalawfIdbgs:8cL4cFeGgPc8AaPc8A0Ec:cufasJbbbb9BEBdbawclfhwamcufgmmbkkadmbcbhwarhPinaDhmdnavceSmbaoawfydbhmkdndnalawfIdbgscjjj;8iamai9RcefgmcLt9R::NJbbbZJbbb:;asJbbbb9GEMgs:lJbbb9p9DTmbas:Ohzxekcjjjj94hzkabawfazcFFFrGamcKtVBdbawclfhwaPcufgPmbkkabakfhbalakfhlaxcefgxae9hmbkkaocjdf8Kjjjjbk;YqdXui998Jjjjjbc:qd9Rgv8Kjjjjbavc:Sefcbc;Kbz:vjjjb8AcbhodnadTmbcbhoaiTmbdndnabaeSmbaehrxekavcuadcdtgwadcFFFFi0Ecbyd;u:kjjbHjjjjbbgrBd:SeavceBd:mdaraeawzNjjjb8Akavc:GefcwfcbBdbav9cb83i:Geavc:Gefaradaiavc:Sefz:ojjjbavyd:GehDadci9Ugqcbyd;u:kjjbHjjjjbbheavc:Sefavyd:mdgkcdtfaeBdbavakcefgwBd:mdaecbaqz:vjjjbhxavc:SefawcdtfcuaicdtaicFFFFi0Ecbyd;u:kjjbHjjjjbbgmBdbavakcdfgPBd:mdalc;ebfhsaDheamhwinawalIdbasaeydbgzcwazcw6EcdtfIdbMUdbaeclfheawclfhwaicufgimbkavc:SefaPcdtfcuaqcdtadcFFFF970Ecbyd;u:kjjbHjjjjbbgPBdbdnadci6mbarheaPhwaqhiinawamaeydbcdtfIdbamaeclfydbcdtfIdbMamaecwfydbcdtfIdbMUdbaecxfheawclfhwaicufgimbkkakcifhoalc;ebfhHavc;qbfhOavheavyd:KehAavyd:OehCcbhzcbhwcbhXcehQinaehLcihkarawci2gKcdtfgeydbhsaeclfydbhdabaXcx2fgicwfaecwfydbgYBdbaiclfadBdbaiasBdbaxawfce86bbaOaYBdwaOadBdlaOasBdbaPawcdtfcbBdbdnazTmbcihkaLhiinaOakcdtfaiydbgeBdbakaeaY9haeas9haead9hGGfhkaiclfhiazcufgzmbkkaXcefhXcbhzinaCaAarazaKfcdtfydbcdtgifydbcdtfgYheaDaifgdydbgshidnasTmbdninaeydbawSmeaeclfheaicufgiTmdxbkkaeaYascdtfc98fydbBdbadadydbcufBdbkazcefgzci9hmbkdndnakTmbcuhwJbbbbh8Acbhdavyd:KehYavyd:OehKindndnaDaOadcdtfydbcdtgzfydbgembadcefhdxekadcs0hiamazfgsIdbhEasalcbadcefgdaiEcdtfIdbaHaecwaecw6EcdtfIdbMg3Udba3aE:th3aecdthiaKaYazfydbcdtfheinaPaeydbgzcdtfgsa3asIdbMgEUdbaEa8Aa8AaE9DgsEh8AazawasEhwaeclfheaic98fgimbkkadak9hmbkawcu9hmekaQaq9pmdindnaxaQfRbbmbaQhwxdkaqaQcefgQ9hmbxikkakczakcz6EhzaOheaLhOawcu9hmbkkaocdtavc:Seffc98fhedninaoTmeaeydbcbyd;q:kjjbH:bjjjbbaec98fheaocufhoxbkkavc:qdf8Kjjjjbk;IlevucuaicdtgvaicFFFFi0Egocbyd;u:kjjbHjjjjbbhralalyd9GgwcdtfarBdbalawcefBd9GabarBdbaocbyd;u:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdlcuadcdtadcFFFFi0Ecbyd;u:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdwabydbcbavz:vjjjb8Aadci9UhDdnadTmbabydbhoaehladhrinaoalydbcdtfgvavydbcefBdbalclfhlarcufgrmbkkdnaiTmbabydbhlabydlhrcbhvaihoinaravBdbarclfhralydbavfhvalclfhlaocufgombkkdnadci6mbabydlhrabydwhvcbhlinaecwfydbhoaeclfydbhdaraeydbcdtfgwawydbgwcefBdbavawcdtfalBdbaradcdtfgdadydbgdcefBdbavadcdtfalBdbaraocdtfgoaoydbgocefBdbavaocdtfalBdbaecxfheaDalcefgl9hmbkkdnaiTmbabydlheabydbhlinaeaeydbalydb9RBdbalclfhlaeclfheaicufgimbkkkQbabaeadaic;K1jjbz:njjjbkQbabaeadaic;m:jjjbz:njjjbk9DeeuabcFeaicdtz:vjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk;:kivuo99lu8Jjjjjbcj;Hb9Rgl8Kjjjjbcbhvalc:m;Gbfcbc;Kbz:vjjjb8AalcuadcdtadcFFFFi0Egocbyd;u:kjjbHjjjjbbgrBd:m9GalceBd;S9Galcwfcbyd:8:kjjbBdbalcb8Pd:0:kjjb83ibalc;W;Gbfcwfcbyd;i:kjjbBdbalcb8Pd;a:kjjb83i;W9Gaicd4hwdndnadmbJFFuFhDJFFuuhqJFFuuhkJFFuFhxJFFuuhmJFFuFhPxekawcdthsaehzincbhiinalaifgHazaifIdbgDaHIdbgxaxaD9EEUdbalc;W;GbfaifgHaDaHIdbgxaxaD9DEUdbaiclfgicx9hmbkazasfhzavcefgvad9hmbkalIdwhqalId;49GhDalIdlhkalId;09GhxalIdbhmalId;W9GhPkdndnadTmbJbbbbJbbjZJbbbbaPam:tgPaPJbbbb9DEgPaxak:tgxaxaP9DEgxaDaq:tgDaDax9DEgD:vaDJbbbb9BEhDawcdthsarhHadhzindndnaDaeIdbam:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcv2c;j:KM;jbGhvdndnaDaeclfIdbak:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcq2cM;j:KMeGavVhvdndnaDaecwfIdbaq:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaHavaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcC2c:KM;j:KdGVBdbaeasfheaHclfhHazcufgzmbkalcbcj;Gbz:vjjjbhiarhHadheinaiaHydbgzcFrGcx2fgvavydbcefBdbaiazcq4cFrGcx2fgvavydlcefBdlaiazcC4cFrGcx2fgzazydwcefBdwaHclfhHaecufgembxdkkalcbcj;Gbz:vjjjb8AkcbhHcbhzcbhecbhvinalaHfgiydbhsaiazBdbaicwfgwydbhOawavBdbaiclfgiydbhwaiaeBdbasazfhzaOavfhvawaefheaHcxfgHcj;Gb9hmbkcbhHalaocbyd;u:kjjbHjjjjbbgiBd:q9GdnadTmbabhzinazaHBdbazclfhzadaHcefgH9hmbkabhHadhzinalaraHydbgecdtfydbcFrGcx2fgvavydbgvcefBdbaiavcdtfaeBdbaHclfhHazcufgzmbkaihHadhzinalaraHydbgecdtfydbcq4cFrGcx2fgvavydlgvcefBdlabavcdtfaeBdbaHclfhHazcufgzmbkabhHadhzinalaraHydbgecdtfydbcC4cFrGcx2fgvavydwgvcefBdwaiavcdtfaeBdbaHclfhHazcufgzmbkcbhHinabaiydbcdtfaHBdbaiclfhiadaHcefgH9hmbkkclhidninaic98Smealc:m;Gbfaifydbcbyd;q:kjjbH:bjjjbbaic98fhixbkkalcj;Hbf8Kjjjjbk9teiucbcbyd;y:kjjbgeabcifc98GfgbBd;y:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;y:kjjbgeabcrfc94GfgbBd;y:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd;y:kjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd;y:kjjbfgdBd;y:kjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk;Qddbcjwk;mdbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbbbbbbbbbbbbb4:h9w9N94:P:gW:j9O:ye9Pbbbbbbebbbdbbbebbbdbbbbbbbdbbbbbbbebbbbbbb:l29hZ;69:9kZ;N;76Z;rg97Z;z;o9xZ8J;B85Z;:;u9yZ;b;k9HZ:2;Z9DZ9e:l9mZ59A8KZ:r;T3Z:A:zYZ79OHZ;j4::8::Y:D9V8:bbbb9s:49:Z8R:hBZ9M9M;M8:L;z;o8:;8:PG89q;x:J878R:hQ8::M:B;e87bbbbbbjZbbjZbbjZ:E;V;N8::Y:DsZ9i;H;68:xd;R8:;h0838:;W:NoZbbbb:WV9O8:uf888:9i;H;68:9c9G;L89;n;m9m89;D8Ko8:bbbbf:8tZ9m836ZS:2AZL;zPZZ818EZ9e:lxZ;U98F8:819E;68:FFuuFFuuFFuuFFuFFFuFFFuFbc;mqkzebbbebbbdbbb9G:vbb"),{}).then(function(A){(r=A.instance).exports.__wasm_call_ctors(),r.exports.meshopt_encodeVertexVersion(0),r.exports.meshopt_encodeIndexVersion(1)})})();var Ii=function(){var r=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var a,t=WebAssembly.validate(r)?n("b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q:6dkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;X9Mqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk:183lYud97dur978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxavaialfgmar9Rgoad;8qbbcj;abad9Uc;WFbGcjdadca0EhPdndndnadTmbaoadfhscbhzinaeaz9nmdamax9RaD6miabazad2fhHaxaDfhOaPaeaz9RazaPfae6EgAcsfgocl4cifcd4hCavcj;cbfaoc9WGgXcetfhQavcj;cbfaXci2fhLavcj;cbfaXfhKcbhYaoc;ab6h8AincbhodnawTmbaxaYcd4fRbbhokaocFeGhEcbh3avcj;cbfh5indndndndnaEa3cet4ciGgoc9:fPdebdkamaO9RaX6mwavcj;cbfa3aX2faOaX;8qbbaOaAfhOxdkavcj;cbfa3aX2fcbaX;8kbxekamaO9RaC6moaoclVcbawEhraOaCfhocbhidna8Ambamao9Rc;Gb6mbcbhlina5alfhidndndndndndnaOalco4fRbbgqciGarfPDbedibledibkaipxbbbbbbbbbbbbbbbbpklbxlkaiaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaiaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaiaopbbbpklbaoczfhoxekaiaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqcd4ciGarfPDbedibledibkaiczfpxbbbbbbbbbbbbbbbbpklbxlkaiczfaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaiczfaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaiczfaopbbbpklbaoczfhoxekaiczfaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqcl4ciGarfPDbedibledibkaicafpxbbbbbbbbbbbbbbbbpklbxlkaicafaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaicafaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaicafaopbbbpklbaoczfhoxekaicafaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqco4arfPDbedibledibkaic8Wfpxbbbbbbbbbbbbbbbbpklbxlkaic8Wfaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngicitc:q1jjbfpbibaic:q:yjjbfRbbgipsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaiaoclffaqc:q:yjjbfRbbfhoxikaic8Wfaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngicitc:q1jjbfpbibaic:q:yjjbfRbbgipsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaiaocwffaqc:q:yjjbfRbbfhoxdkaic8Wfaopbbbpklbaoczfhoxekaic8WfaopbbdaoRbbgicitc:q1jjbfpbibaic:q:yjjbfRbbgipsaoRbegqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaiaocdffaqc:q:yjjbfRbbfhokalc;abfhialcjefaX0meaihlamao9Rc;Fb0mbkkdnaiaX9pmbaici4hlinamao9RcK6mwa5aifhqdndndndndndnaOaico4fRbbalcoG4ciGarfPDbedibledibkaqpxbbbbbbbbbbbbbbbbpkbbxlkaqaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spkbbaaaoclffahc:q:yjjbfRbbfhoxikaqaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spkbbaaaocwffahc:q:yjjbfRbbfhoxdkaqaopbbbpkbbaoczfhoxekaqaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpkbbaaaocdffahc:q:yjjbfRbbfhokalcdfhlaiczfgiaX6mbkkaohOaoTmoka5aXfh5a3cefg3cl9hmbkdndndndnawTmbasaYcd4fRbbglciGPlbedwbkaXTmdavcjdfaYfhlavaYfpbdbhgcbhoinalavcj;cbfaofpblbg8JaKaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaQaofpblbg8MaLaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Ecep9Ta8Epxeeeeeeeeeeeeeeeeg8Fp9op9Hp9rg8Eagp9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8LaypmwDKYqk8AExm35Ps8E8Fg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Ug8Fp9Abbbaladfgla8Fa8Ea8Epmlvorlvorlvorlvorp9Ug8Fp9Abbbaladfgla8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9Ug8Fp9Abbbaladfgla8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9AbbbaladfhlaoczfgoaX6mbxikkaXTmeavcjdfaYfhlavaYfpbdbhgcbhoinalavcj;cbfaofpblbg8JaKaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaQaofpblbg8MaLaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Ecep:nea8Epxebebebebebebebebg8Fp9op:bep9rg8Eagp:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8LaypmwDKYqk8AExm35Ps8E8Fg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeg8Fp9Abbbaladfgla8Fa8Ea8Epmlvorlvorlvorlvorp:oeg8Fp9Abbbaladfgla8Fa8Ea8EpmwDqkwDqkwDqkwDqkp:oeg8Fp9Abbbaladfgla8Fa8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9AbbbaladfhlaoczfgoaX6mbxdkkaXTmbcbhocbalcl4gl9Rc8FGhiavcjdfaYfhravaYfpbdbh8Finaravcj;cbfaofpblbggaKaofpblbg8JpmbzeHdOiAlCvXoQrLg8KaQaofpblbg8LaLaofpblbg8MpmbzeHdOiAlCvXoQrLg8NpmbezHdiOAlvCXorQLg8Eaip:Rea8Ealp:Sep9qg8Ea8Fp9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Fa8Ka8NpmwDKYqk8AExm35Ps8E8Fg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Faga8JpmwKDYq8AkEx3m5P8Es8Fgga8La8MpmwKDYq8AkEx3m5P8Es8Fg8JpmbezHdiOAlvCXorQLg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Faga8JpmwDKYqk8AExm35Ps8E8Fg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9AbbbaradfhraoczfgoaX6mbkkaYclfgYad6mbkaHavcjdfaAad2;8qbbavavcjdfaAcufad2fad;8qbbaAazfhzc9:hoaOhxaOmbxlkkaeTmbaDalfhrcbhocuhlinaralaD9RglfaD6mdaPaeao9RaoaPfae6Eaofgoae6mbkaial9Rhxkcbc99amax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaokwbz:bjjjbk::seHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgwce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhDaicefgqarfhidnaeTmbcmcsawceSEhkcbhxcbhmcbhPcbhwcbhlindnaiaD9nmbc9:hoxikdndnaqRbbgoc;Ve0mbavc;abfalaocu7gscl4fcsGcitfgzydlhrazydbhzdnaocsGgHak9pmbavawasfcsGcdtfydbaxaHEhoaHThsdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkaxasfhxcdhHavawcdtfaoBdbawasfhwcehsalhOxdkdndnaHcsSmbaHc987aHamffcefhoxekaicefhoai8SbbgHcFeGhsdndnaHcu9mmbaohixekaicvfhiascFbGhscrhHdninao8SbbgOcFbGaHtasVhsaOcu9kmeaocefhoaHcrfgHc8J9hmbxdkkaocefhikasce4cbasceG9R7amfhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhHavawcdtfaoBdbcehsawcefhwalhOaohmxekdnaocpe0mbaxcefgHavawaDaocsGfRbbgocl49RcsGcdtfydbaocz6gzEhravawao9RcsGcdtfydbaHazfgAaocsGgHEhoaHThCdndnadcd9hmbabaPcetfgHax87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHaxBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfaxBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgOaxBdlaOarBdbavawazfgwcsGcdtfaoBdbalcefcsGhOawaCfhwaxhzaAaCfhxxekaxcbaiRbbgOEgzaoc;:eSgHfhraOcsGhCaOcl4hAdndnaOcs0mbarcefhoxekarhoavawaA9RcsGcdtfydbhrkdndnaCmbaocefhxxekaohxavawaO9RcsGcdtfydbhokdndnaHTmbaicefhHxekaicdfhHai8SbegscFeGhzdnascu9kmbaicofhXazcFbGhzcrhidninaH8SbbgscFbGaitazVhzascu9kmeaHcefhHaicrfgic8J9hmbkaXhHxekaHcefhHkazce4cbazceG9R7amfgmhzkdndnaAcsSmbaHhsxekaHcefhsaH8SbbgicFeGhrdnaicu9kmbaHcvfhXarcFbGhrcrhidninas8SbbgHcFbGaitarVhraHcu9kmeascefhsaicrfgic8J9hmbkaXhsxekascefhskarce4cbarceG9R7amfgmhrkdndnaCcsSmbashixekascefhias8SbbgocFeGhHdnaocu9kmbascvfhXaHcFbGhHcrhodninai8SbbgscFbGaotaHVhHascu9kmeaicefhiaocrfgoc8J9hmbkaXhixekaicefhikaHce4cbaHceG9R7amfgmhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfazBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgXazBdlaXarBdbavawaOcz6aAcsSVfgwcsGcdtfaoBdbawaCTaCcsSVfhwalcefcsGhOkaqcefhqavc;abfaOcitfgOarBdlaOaoBdbavc;abfalasfcsGcitfgraoBdlarazBdbawcsGhwalaHfcsGhlaPcifgPae6mbkkcbc99aiaDSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnaecvfal9nmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:SPliuo97eue978Jjjjjbca9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalaeSmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskdnalTmbcbhvabhdinadczfgxaxpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;7eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oaoarpmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalaeSmbaiczfpxbbbbbbbbbbbbbbbbgopklbaiaopklbaiabalcitfgdaeciGglcitgv;8qbbdnalTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;7eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oaoarpmbezHdiOAlvCXorQLp9qpklbkadaiav;8qbbkk:oDllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalaeSmbaiczfpxbbbbbbbbbbbbbbbbgkpklbaiakpklbaiabalcitfgoaeciGgvcitgw;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkaoaiaw;8qbbkk;uddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnavalSmbaic8WfpxbbbbbbbbbbbbbbbbgopklbaicafaopklbaiczfaopklbaiaopklbaiabavcdtfgdalciGgecdtgv;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkadaiav;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz:Dbb"):n("b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:W:Odkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:986qdbk;jYi5ud9:du8Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxcj;abad9Uc;WFbGcjdadca0EhmaialfgPar9Rgoadfhsavaoadz1jjjbgzceVhHcbhOdndninaeaO9nmeaPax9RaD6mdamaeaO9RaOamfgoae6EgAcsfglc9WGhCabaOad2fhXaAcethQaxaDfhiaOaeaoaeao6E9RhLalcl4cifcd4hKazcj;cbfaAfhYcbh8AazcjdfhEaHh3incbhodnawTmbaxa8Acd4fRbbhokaocFeGh5cbh8Eazcj;cbfhqinaih8Fdndndndna5a8Ecet4ciGgoc9:fPdebdkaPa8F9RaA6mrazcj;cbfa8EaA2fa8FaAz1jjjb8Aa8FaAfhixdkazcj;cbfa8EaA2fcbaAz:jjjjb8Aa8FhixekaPa8F9RaK6mva8FaKfhidnaCTmbaPai9RcK6mbaocdtc:q1jjbfcj1jjbawEhaczhrcbhlinargoc9Wfghaqfhrdndndndndndnaaa8Fahco4fRbbalcoG4ciGcdtfydbPDbedvivvvlvkar9cb83bbarcwf9cb83bbxlkarcbaiRbdai8Xbb9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbaqaofgrcGfag9c8F1:NghcKtc8F91aicdfa8J9c8N1:Nfg8KRbbG86bbarcVfcba8KahcjeGcr4fghRbbag9cjjjjjl:dg8J9qE86bbarc7fcbaha8J9c8L1:NfghRbbag9cjjjjjd:dg8J9qE86bbarctfcbaha8J9c8K1:NfghRbbag9cjjjjje:dg8J9qE86bbarc91fcbaha8J9c8J1:NfghRbbag9cjjjj;ab:dg8J9qE86bbarc4fcbaha8J9cg1:NfghRbbag9cjjjja:dg8J9qE86bbarc93fcbaha8J9ch1:NfghRbbag9cjjjjz:dgg9qE86bbarc94fcbahag9ca1:NfghRbbai8Xbe9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbarc95fag9c8F1:NgicKtc8F91aha8J9c8N1:NfghRbbG86bbarc96fcbahaicjeGcr4fgiRbbag9cjjjjjl:dg8J9qE86bbarc97fcbaia8J9c8L1:NfgiRbbag9cjjjjjd:dg8J9qE86bbarc98fcbaia8J9c8K1:NfgiRbbag9cjjjjje:dg8J9qE86bbarc99fcbaia8J9c8J1:NfgiRbbag9cjjjj;ab:dg8J9qE86bbarc9:fcbaia8J9cg1:NfgiRbbag9cjjjja:dg8J9qE86bbarcufcbaia8J9ch1:NfgiRbbag9cjjjjz:dgg9qE86bbaiag9ca1:NfhixikaraiRblaiRbbghco4g8Ka8KciSg8KE86bbaqaofgrcGfaiclfa8Kfg8KRbbahcl4ciGg8La8LciSg8LE86bbarcVfa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc7fa8Ka8Lfg8KRbbahciGghahciSghE86bbarctfa8Kahfg8KRbbaiRbeghco4g8La8LciSg8LE86bbarc91fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc4fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc93fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc94fa8Kahfg8KRbbaiRbdghco4g8La8LciSg8LE86bbarc95fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc96fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc97fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc98fa8KahfghRbbaiRbigico4g8Ka8KciSg8KE86bbarc99faha8KfghRbbaicl4ciGg8Ka8KciSg8KE86bbarc9:faha8KfghRbbaicd4ciGg8Ka8KciSg8KE86bbarcufaha8KfgrRbbaiciGgiaiciSgiE86bbaraifhixdkaraiRbwaiRbbghcl4g8Ka8KcsSg8KE86bbaqaofgrcGfaicwfa8Kfg8KRbbahcsGghahcsSghE86bbarcVfa8KahfghRbbaiRbeg8Kcl4g8La8LcsSg8LE86bbarc7faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarctfaha8KfghRbbaiRbdg8Kcl4g8La8LcsSg8LE86bbarc91faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc4faha8KfghRbbaiRbig8Kcl4g8La8LcsSg8LE86bbarc93faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc94faha8KfghRbbaiRblg8Kcl4g8La8LcsSg8LE86bbarc95faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc96faha8KfghRbbaiRbvg8Kcl4g8La8LcsSg8LE86bbarc97faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc98faha8KfghRbbaiRbog8Kcl4g8La8LcsSg8LE86bbarc99faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc9:faha8KfghRbbaiRbrgicl4g8Ka8KcsSg8KE86bbarcufaha8KfgrRbbaicsGgiaicsSgiE86bbaraifhixekarai8Pbb83bbarcwfaicwf8Pbb83bbaiczfhikdnaoaC9pmbalcdfhlaoczfhraPai9RcL0mekkaoaC6moaimexokaCmva8FTmvkaqaAfhqa8Ecefg8Ecl9hmbkdndndndnawTmbasa8Acd4fRbbgociGPlbedrbkaATmdaza8Afh8Fazcj;cbfhhcbh8EaEhaina8FRbbhraahocbhlinaoahalfRbbgqce4cbaqceG9R7arfgr86bbaoadfhoaAalcefgl9hmbkaacefhaa8Fcefh8FahaAfhha8Ecefg8Ecl9hmbxikkaATmeaza8Afhaazcj;cbfhhcbhoceh8EaYh8FinaEaofhlaa8Vbbhrcbhoinala8FaofRbbcwtahaofRbbgqVc;:FiGce4cbaqceG9R7arfgr87bbaladfhlaLaocefgofmbka8FaQfh8FcdhoaacdfhaahaQfhha8EceGhlcbh8EalmbxdkkaATmbcbaocl49Rh8Eaza8AfRbbhqcwhoa3hlinalRbbaotaqVhqalcefhlaocwfgoca9hmbkcbhhaEh8FaYhainazcj;cbfahfRbbhrcwhoaahlinalRbbaotarVhralaAfhlaocwfgoca9hmbkara8E93aq7hqcbhoa8Fhlinalaqao486bbalcefhlaocwfgoca9hmbka8Fadfh8FaacefhaahcefghaA9hmbkkaEclfhEa3clfh3a8Aclfg8Aad6mbkaXazcjdfaAad2z1jjjb8AazazcjdfaAcufad2fadz1jjjb8AaAaOfhOaihxaimbkc9:hoxdkcbc99aPax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaok;cseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgwce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhDaicefgqarfhidnaeTmbcmcsawceSEhkcbhxcbhmcbhPcbhwcbhlindnaiaD9nmbc9:hoxikdndnaqRbbgoc;Ve0mbavc;abfalaocu7gscl4fcsGcitfgzydlhrazydbhzdnaocsGgHak9pmbavawasfcsGcdtfydbaxaHEhoaHThsdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkaxasfhxcdhHavawcdtfaoBdbawasfhwcehsalhOxdkdndnaHcsSmbaHc987aHamffcefhoxekaicefhoai8SbbgHcFeGhsdndnaHcu9mmbaohixekaicvfhiascFbGhscrhHdninao8SbbgOcFbGaHtasVhsaOcu9kmeaocefhoaHcrfgHc8J9hmbxdkkaocefhikasce4cbasceG9R7amfhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhHavawcdtfaoBdbcehsawcefhwalhOaohmxekdnaocpe0mbaxcefgHavawaDaocsGfRbbgocl49RcsGcdtfydbaocz6gzEhravawao9RcsGcdtfydbaHazfgAaocsGgHEhoaHThCdndnadcd9hmbabaPcetfgHax87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHaxBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfaxBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgOaxBdlaOarBdbavawazfgwcsGcdtfaoBdbalcefcsGhOawaCfhwaxhzaAaCfhxxekaxcbaiRbbgOEgzaoc;:eSgHfhraOcsGhCaOcl4hAdndnaOcs0mbarcefhoxekarhoavawaA9RcsGcdtfydbhrkdndnaCmbaocefhxxekaohxavawaO9RcsGcdtfydbhokdndnaHTmbaicefhHxekaicdfhHai8SbegscFeGhzdnascu9kmbaicofhXazcFbGhzcrhidninaH8SbbgscFbGaitazVhzascu9kmeaHcefhHaicrfgic8J9hmbkaXhHxekaHcefhHkazce4cbazceG9R7amfgmhzkdndnaAcsSmbaHhsxekaHcefhsaH8SbbgicFeGhrdnaicu9kmbaHcvfhXarcFbGhrcrhidninas8SbbgHcFbGaitarVhraHcu9kmeascefhsaicrfgic8J9hmbkaXhsxekascefhskarce4cbarceG9R7amfgmhrkdndnaCcsSmbashixekascefhias8SbbgocFeGhHdnaocu9kmbascvfhXaHcFbGhHcrhodninai8SbbgscFbGaotaHVhHascu9kmeaicefhiaocrfgoc8J9hmbkaXhixekaicefhikaHce4cbaHceG9R7amfgmhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfazBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgXazBdlaXarBdbavawaOcz6aAcsSVfgwcsGcdtfaoBdbawaCTaCcsSVfhwalcefcsGhOkaqcefhqavc;abfaOcitfgOarBdlaOaoBdbavc;abfalasfcsGcitfgraoBdlarazBdbawcsGhwalaHfcsGhlaPcifgPae6mbkkcbc99aiaDSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnaecvfal9nmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;oiliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabaiavcefciGfcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavciGfgkcd7cetfaD87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavcufciGfcetfaD87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohvxekcjjjj94hvkabakcetfav87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk9teiucbcbyd:K1jjbgeabcifc98GfgbBd:K1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkk81dbcjwk8Kbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbc:Kwkl8WNbb"),i=WebAssembly.instantiate(t,{}).then(function(h){(a=h.instance).exports.__wasm_call_ctors()});function n(h){for(var b=new Uint8Array(h.length),g=0;g<h.length;++g){var p=h.charCodeAt(g);b[g]=p>96?p-97:p>64?p-39:p+4}var E=0;for(g=0;g<h.length;++g)b[E++]=b[g]<60?e[b[g]]:64*(b[g]-60)+b[++g];return b.buffer.slice(0,E)}function o(h,b,g,p,E,m,C){var I=h.exports.sbrk,w=p+3&-4,D=I(w*E),x=I(m.length),y=new Uint8Array(h.exports.memory.buffer);y.set(m,x);var F=b(D,p,E,x,m.length);if(F==0&&C&&C(D,w,E),g.set(y.subarray(D,D+p*E)),I(D-I(0)),F!=0)throw new Error("Malformed buffer data: "+F)}var s={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},A={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},u=[],c=0;function d(h){var b={object:new Worker(h),pending:0,requests:{}};return b.object.onmessage=function(g){var p=g.data;b.pending-=p.count,b.requests[p.id][p.action](p.value),delete b.requests[p.id]},b}function l(h){var b=h.data;if(!b.id)return self.close();self.ready.then(function(g){try{var p=new Uint8Array(b.count*b.size);o(g,g.exports[b.mode],p,b.count,b.size,b.source,g.exports[b.filter]),self.postMessage({id:b.id,count:b.count,action:"resolve",value:p},[p.buffer])}catch(E){self.postMessage({id:b.id,count:b.count,action:"reject",value:E})}})}return{ready:i,supported:!0,useWorkers:function(h){(function(b){for(var g="self.ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(t)+"]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = "+l.name+";"+o.toString()+l.toString(),p=new Blob([g],{type:"text/javascript"}),E=URL.createObjectURL(p),m=u.length;m<b;++m)u[m]=d(E);for(m=b;m<u.length;++m)u[m].object.postMessage({});u.length=b,URL.revokeObjectURL(E)})(h)},decodeVertexBuffer:function(h,b,g,p,E){o(a,a.exports.meshopt_decodeVertexBuffer,h,b,g,p,a.exports[s[E]])},decodeIndexBuffer:function(h,b,g,p){o(a,a.exports.meshopt_decodeIndexBuffer,h,b,g,p)},decodeIndexSequence:function(h,b,g,p){o(a,a.exports.meshopt_decodeIndexSequence,h,b,g,p)},decodeGltfBuffer:function(h,b,g,p,E,m){o(a,a.exports[A[E]],h,b,g,p,a.exports[s[m]])},decodeGltfBufferAsync:function(h,b,g,p,E){return u.length>0?function(m,C,I,w,D){for(var x=u[0],y=1;y<u.length;++y)u[y].pending<x.pending&&(x=u[y]);return new Promise(function(F,M){var S=new Uint8Array(I),z=++c;x.pending+=m,x.requests[z]={resolve:F,reject:M},x.object.postMessage({id:z,count:m,size:C,source:S,mode:w,filter:D},[S.buffer])})}(h,b,g,A[p],s[E]):i.then(function(){var m=new Uint8Array(h*b);return o(a,a.exports[A[p]],m,h,b,g,a.exports[s[E]]),m})}}}();(function(){var r,e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var a=WebAssembly.instantiate(function(s){for(var A=new Uint8Array(s.length),u=0;u<s.length;++u){var c=s.charCodeAt(u);A[u]=c>96?c-97:c>64?c-39:c+4}var d=0;for(u=0;u<s.length;++u)A[d++]=A[u]<60?e[A[u]]:64*(A[u]-60)+A[++u];return A.buffer.slice(0,d)}("b9H79Tebbbe9Hk9Geueu9Geub9Gbb9Gsuuuuuuuuuuuu99uueu9Gvuuuuub9Gvuuuuue999Gquuuuuuu99uueu9Gwuuuuuu99ueu9Giuuue999Gluuuueu9GiuuueuizsdilvoirwDbqqbeqlve9Weiiviebeoweuec:G:Pdkr:Tewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bbz9TW79O9V9Wt9F79P9T9W29P9M95bl8E9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9OcttV9P9I91tW7bvQ9TW79O9V9Wt9F79P9T9W29P9M959q9V9P9Ut7boX9TW79O9V9Wt9F79P9T9W29P9M959t9J9H2Wbra9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9Wbwl79IV9RbDDwebcekdmxq:x:yesdbk:Z9VvKue99euY99Ou8Jjjjjbc;W;qb9Rgs8Kjjjjbcbhzascxfcbc;Kbz:ljjjb8AdnabaeSmbabaeadcdtz:kjjjb8AkdnamcdGTmbalcrfci4gHcbyd:m:jjjbHjjjjbbheascxfasyd2gOcdtfaeBdbasaOcefBd2aecbaHz:ljjjbhAcbhlcbhednadTmbcbhlabheadhHinaAaeydbgOci4fgCaCRbbgCceaOcrGgOtV86bbaCcu7aO4ceGalfhlaeclfheaHcufgHmbkcualcdtalcFFFFi0Ehekaecbyd:m:jjjbHjjjjbbhzascxfasyd2gecdtfazBdbasaecefBd2alcd4alfhOcehHinaHgecethHaeaO6mbkcbhXcuaecdtgOaecFFFFi0Ecbyd:m:jjjbHjjjjbbhHascxfasyd2gCcdtfaHBdbasaCcefBd2aHcFeaOz:ljjjbhQdnadTmbaecufhLcbhKindndnaQabaXcdtfgYydbgCc:v;t;h;Ev2aLGgOcdtfgAydbgHcuSmbceheinazaHcdtfydbaCSmdaOaefhHaecefheaQaHaLGgOcdtfgAydbgHcu9hmbkkazaKcdtfaCBdbaAaKBdbaKhHaKcefhKkaYaHBdbaXcefgXad9hmbkkaQcbyd1:jjjbH:bjjjbbasasyd2cufBd2kcualcefgecdtaecFFFFi0Ecbyd:m:jjjbHjjjjbbh8Aascxfasyd2gecdtfa8ABdbasa8ABdlasaecefBd2cuadcitadcFFFFe0Ecbyd:m:jjjbHjjjjbbhEascxfasyd2gecdtfaEBdbasaEBdwasaecefBd2asclfabadalcbz:cjjjbcualcdtg3alcFFFFi0Eg5cbyd:m:jjjbHjjjjbbhLascxfasyd2gecdtfaLBdbasaecefBd2a5cbyd:m:jjjbHjjjjbbh8Eascxfasyd2gecdtfa8EBdbasaecefBd2alcd4alfhOcehHinaHgecethHaeaO6mbkcbhYcuaecdtgOaecFFFFi0Ecbyd:m:jjjbHjjjjbbhHascxfasyd2gCcdtfaHBdbasaCcefBd2aHcFeaOz:ljjjbhQdnalTmbavcd4hCaecufhKinaYhednazTmbazaYcdtfydbhekaiaeaC2cdtfgeydlgHcH4aH7c:F:b:DD2aeydbgHcH4aH7c;D;O:B8J27aeydwgecH4ae7c:3F;N8N27aKGhHaYcdth8FdndndnazTmbaQaHcdtfgAydbgecuSmeaiaza8FfydbaC2cdtfhXcehOinaiazaecdtfydbaC2cdtfaXcxz:ojjjbTmiaHaOfheaOcefhOaQaeaKGgHcdtfgAydbgecu9hmbxdkkaQaHcdtfgAydbgecuSmbaiaYaC2cdtfhXcehOinaiaeaC2cdtfaXcxz:ojjjbTmdaHaOfheaOcefhOaQaeaKGgHcdtfgAydbgecu9hmbkkaAaYBdbaYhekaLa8FfaeBdbaYcefgYal9hmbkcbhea8EhHinaHaeBdbaHclfhHalaecefge9hmbkcbheaLhHa8EhOindnaeaHydbgCSmbaOa8EaCcdtfgCydbBdbaCaeBdbkaHclfhHaOclfhOalaecefge9hmbkkcbhaaQcbyd1:jjjbH:bjjjbbasasyd2cufBd2alcbyd:m:jjjbHjjjjbbhKascxfasyd2gecdtfaKBdbasaecefBd2a5cbyd:m:jjjbHjjjjbbheascxfasyd2gHcdtfaeBdbasaHcefBd2a5cbyd:m:jjjbHjjjjbbhHascxfasyd2gOcdtfaHBdbasaOcefBd2aecFea3z:ljjjbhhaHcFea3z:ljjjbhgdnalTmbaEcwfh8Jindna8AaagOcefgacdtfydbgCa8AaOcdtgefydbgHSmbaCaH9Rh8FaEaHcitfh3agaefh8KahaefhYcbhAindndna3aAcitfydbgQaO9hmbaYaOBdba8KaOBdbxekdna8AaQcdtg8LfgeclfydbgHaeydbgeSmbaEaecitgCfydbaOSmeaHae9Rh8Maecu7aHfhXa8JaCfhHcbheinaXaeSmeaecefheaHydbhCaHcwfhHaCaO9hmbkaea8M6mekaga8LfgeaOaQaeydbcuSEBdbaYaQaOaYydbcuSEBdbkaAcefgAa8F9hmbkkaaal9hmbkaLhHa8EhOaghCahhAcbheindndnaeaHydbgQ9hmbdnaeaOydbgQ9hmbaAydbhQdnaCydbgXcu9hmbaQcu9hmbaKaefcb86bbxikaKaefhYdnaeaXSmbaeaQSmbaYce86bbxikaYcl86bbxdkdnaea8EaQcdtgXfydb9hmbdnaCydbgYcuSmbaeaYSmbaAydbg8FcuSmbaea8FSmbagaXfydbg3cuSmba3aQSmbahaXfydbgXcuSmbaXaQSmbdnaLaYcdtfydbgQaLaXcdtfydb9hmbaQaLa8FcdtfydbgXSmbaXaLa3cdtfydb9hmbaKaefcd86bbxlkaKaefcl86bbxikaKaefcl86bbxdkaKaefcl86bbxekaKaefaKaQfRbb86bbkaHclfhHaOclfhOaCclfhCaAclfhAalaecefge9hmbkdnaqTmbdndnazTmbazheaLhHalhOindnaqaeydbfRbbTmbaKaHydbfcl86bbkaeclfheaHclfhHaOcufgOmbxdkkaLhealhHindnaqRbbTmbaKaeydbfcl86bbkaqcefhqaeclfheaHcufgHmbkkaLhealhOaKhHindnaKaeydbfRbbcl9hmbaHcl86bbkaeclfheaHcefhHaOcufgOmbkkamceGTmbaKhealhHindnaeRbbce9hmbaecl86bbkaecefheaHcufgHmbkkcualcx2alc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbhaascxfasyd2gecdtfaaBdbasaecefBd2aaaialavazz:djjjbh8NdndnaDmbcbhycbh8Jxekcbh8JawhecbhHindnaeIdbJbbbb9ETmbasc;Wbfa8JcdtfaHBdba8Jcefh8JkaeclfheaDaHcefgH9hmbkcua8Jal2gecdtaecFFFFi0Ecbyd:m:jjjbHjjjjbbhyascxfasyd2gecdtfayBdbasaecefBd2alTmba8JTmbarcd4hYdnazTmba8Jcdth8FcbhQayhXinaoazaQcdtfydbaY2cdtfhAasc;WbfheaXhHa8JhOinaHaAaeydbcdtgCfIdbawaCfIdbNUdbaeclfheaHclfhHaOcufgOmbkaXa8FfhXaQcefgQal9hmbxdkka8Jcdth8FcbhQayhXinaoaQaY2cdtfhAasc;WbfheaXhHa8JhOinaHaAaeydbcdtgCfIdbawaCfIdbNUdbaeclfheaHclfhHaOcufgOmbkaXa8FfhXaQcefgQal9hmbkkcualc8S2gHalc;D;O;f8U0EgCcbyd:m:jjjbHjjjjbbheascxfasyd2gOcdtfaeBdbasaOcefBd2aecbaHz:ljjjbhqdndndndna8JTmbaCcbyd:m:jjjbHjjjjbbhvascxfasyd2gecdtfavBdbcehOasaecefBd2avcbaHz:ljjjb8Acua8Jal2gecltgHaecFFFFb0Ecbyd:m:jjjbHjjjjbbhrascxfasyd2gecdtfarBdbasaecefBd2arcbaHz:ljjjb8AadmexikcbhvadTmecbhrkcbhAabhHindnaaaHclfydbgQcx2fgeIdbaaaHydbgXcx2fgOIdbg8P:tgIaaaHcwfydbgYcx2fgCIdlaOIdlg8R:tg8SNaCIdba8P:tgRaeIdla8R:tg8UN:tg8Va8VNa8UaCIdwaOIdwg8W:tg8XNa8SaeIdwa8W:tg8UN:tg8Sa8SNa8UaRNa8XaIN:tgIaINMM:rgRJbbbb9ETmba8VaR:vh8VaIaR:vhIa8SaR:vh8SkaqaLaXcdtfydbc8S2fgea8SaR:rgRa8SNNg8UaeIdbMUdbaeaIaRaINg8YNg8XaeIdlMUdlaea8VaRa8VNg8ZNg80aeIdwMUdwaea8Ya8SNg8YaeIdxMUdxaea8Za8SNg81aeIdzMUdzaea8ZaINg8ZaeIdCMUdCaea8SaRa8Va8WNa8Sa8PNa8RaINMM:mg8RNg8PNg8SaeIdKMUdKaeaIa8PNgIaeId3MUd3aea8Va8PNg8VaeIdaMUdaaea8Pa8RNg8PaeId8KMUd8KaeaRaeIdyMUdyaqaLaQcdtfydbc8S2fgea8UaeIdbMUdbaea8XaeIdlMUdlaea80aeIdwMUdwaea8YaeIdxMUdxaea81aeIdzMUdzaea8ZaeIdCMUdCaea8SaeIdKMUdKaeaIaeId3MUd3aea8VaeIdaMUdaaea8PaeId8KMUd8KaeaRaeIdyMUdyaqaLaYcdtfydbc8S2fgea8UaeIdbMUdbaea8XaeIdlMUdlaea80aeIdwMUdwaea8YaeIdxMUdxaea81aeIdzMUdzaea8ZaeIdCMUdCaea8SaeIdKMUdKaeaIaeId3MUd3aea8VaeIdaMUdaaea8PaeId8KMUd8KaeaRaeIdyMUdyaHcxfhHaAcifgAad6mbkcbh8FabhXinaba8FcdtfhQcbhHinaKaQaHc;a1jjbfydbcdtfydbgOfRbbhedndnaKaXaHfydbgCfRbbgAc99fcFeGcpe0mbaec99fcFeGc;:e6mekdnaAcufcFeGce0mbahaCcdtfydbaO9hmekdnaecufcFeGce0mbagaOcdtfydbaC9hmekdnaAcv2aefc:G1jjbfRbbTmbaLaOcdtfydbaLaCcdtfydb0mekJbbacJbbacJbbjZaecFeGceSEaAceSEh8ZdnaaaQaHc;e1jjbfydbcdtfydbcx2fgeIdwaaaCcx2fgAIdwg8R:tg8VaaaOcx2fgYIdwa8R:tg8Sa8SNaYIdbaAIdbg8W:tgIaINaYIdlaAIdlg8U:tgRaRNMMg8PNa8Va8SNaeIdba8W:tg80aINaRaeIdla8U:tg8YNMMg8Xa8SN:tg8Va8VNa80a8PNa8XaIN:tg8Sa8SNa8Ya8PNa8XaRN:tgIaINMM:rgRJbbbb9ETmba8VaR:vh8VaIaR:vhIa8SaR:vh8SkaqaLaCcdtfydbc8S2fgea8Sa8Za8P:rNgRa8SNNg8XaeIdbMUdbaeaIaRaINg8ZNg80aeIdlMUdlaea8VaRa8VNg8PNg8YaeIdwMUdwaea8Za8SNg8ZaeIdxMUdxaea8Pa8SNg81aeIdzMUdzaea8PaINgBaeIdCMUdCaea8SaRa8Va8RNa8Sa8WNa8UaINMM:mg8RNg8PNg8SaeIdKMUdKaeaIa8PNgIaeId3MUd3aea8Va8PNg8VaeIdaMUdaaea8Pa8RNg8PaeId8KMUd8KaeaRaeIdyMUdyaqaLaOcdtfydbc8S2fgea8XaeIdbMUdbaea80aeIdlMUdlaea8YaeIdwMUdwaea8ZaeIdxMUdxaea81aeIdzMUdzaeaBaeIdCMUdCaea8SaeIdKMUdKaeaIaeId3MUd3aea8VaeIdaMUdaaea8PaeId8KMUd8KaeaRaeIdyMUdykaHclfgHcx9hmbkaXcxfhXa8Fcifg8Fad6mbkdna8JTmbcbhXinJbbbbh8WaaabaXcdtfgeclfydbgYcx2fgHIdwaaaeydbg8Fcx2fgOIdwg8Y:tgIaINaHIdbaOIdbg81:tg8Va8VNaHIdlaOIdlgB:tgRaRNMMg8Zaaaecwfydbg3cx2fgeIdwa8Y:tg8PNaIaIa8PNa8VaeIdba81:tg8RNaRaeIdlaB:tg8UNMMg8SN:tJbbbbJbbjZa8Za8Pa8PNa8Ra8RNa8Ua8UNMMg80Na8Sa8SN:tg8X:va8XJbbbb9BEg8XNh83a80aINa8Pa8SN:ta8XNhUa8Za8UNaRa8SN:ta8XNh85a80aRNa8Ua8SN:ta8XNh86a8Za8RNa8Va8SN:ta8XNh87a80a8VNa8Ra8SN:ta8XNh88a8Va8UNa8RaRN:tg8Sa8SNaRa8PNa8UaIN:tg8Sa8SNaIa8RNa8Pa8VN:tg8Sa8SNMM:rJbbbZNh8Saya8Fa8J2gwcdtfhHaya3a8J2g8LcdtfhOayaYa8J2gicdtfhCa8Y:mh89aB:mh8:a81:mhZcbhAa8JhQJbbbbh8UJbbbbh8XJbbbbh8ZJbbbbh80Jbbbbh8YJbbbbh81JbbbbhBJbbbbhnJbbbbhcinasc;WbfaAfgecwfa8SaUaCIdbaHIdbg8P:tgRNa83aOIdba8P:tg8RNMgINUdbaeclfa8Sa86aRNa85a8RNMg8VNUdbaea8Sa88aRNa87a8RNMgRNUdbaecxfa8Sa89aINa8:a8VNa8PaZaRNMMMg8PNUdba8SaIa8VNNa80Mh80a8SaIaRNNa8YMh8Ya8Sa8VaRNNa81Mh81a8Sa8Pa8PNNa8WMh8Wa8SaIa8PNNa8UMh8Ua8Sa8Va8PNNa8XMh8Xa8SaRa8PNNa8ZMh8Za8SaIaINNaBMhBa8Sa8Va8VNNanMhna8SaRaRNNacMhcaHclfhHaCclfhCaOclfhOaAczfhAaQcufgQmbkava8Fc8S2fgeacaeIdbMUdbaeanaeIdlMUdlaeaBaeIdwMUdwaea81aeIdxMUdxaea8YaeIdzMUdzaea80aeIdCMUdCaea8ZaeIdKMUdKaea8XaeId3MUd3aea8UaeIdaMUdaaea8WaeId8KMUd8Kaea8SaeIdyMUdyavaYc8S2fgeacaeIdbMUdbaeanaeIdlMUdlaeaBaeIdwMUdwaea81aeIdxMUdxaea8YaeIdzMUdzaea80aeIdCMUdCaea8ZaeIdKMUdKaea8XaeId3MUd3aea8UaeIdaMUdaaea8WaeId8KMUd8Kaea8SaeIdyMUdyava3c8S2fgeacaeIdbMUdbaeanaeIdlMUdlaeaBaeIdwMUdwaea81aeIdxMUdxaea8YaeIdzMUdzaea80aeIdCMUdCaea8ZaeIdKMUdKaea8XaeId3MUd3aea8UaeIdaMUdaaea8WaeId8KMUd8Kaea8SaeIdyMUdyarawcltfhQcbhHa8JhCinaQaHfgeasc;WbfaHfgOIdbaeIdbMUdbaeclfgAaOclfIdbaAIdbMUdbaecwfgAaOcwfIdbaAIdbMUdbaecxfgeaOcxfIdbaeIdbMUdbaHczfhHaCcufgCmbkaraicltfhQcbhHa8JhCinaQaHfgeasc;WbfaHfgOIdbaeIdbMUdbaeclfgAaOclfIdbaAIdbMUdbaecwfgAaOcwfIdbaAIdbMUdbaecxfgeaOcxfIdbaeIdbMUdbaHczfhHaCcufgCmbkara8LcltfhQcbhHa8JhCinaQaHfgeasc;WbfaHfgOIdbaeIdbMUdbaeclfgAaOclfIdbaAIdbMUdbaecwfgAaOcwfIdbaAIdbMUdbaecxfgeaOcxfIdbaeIdbMUdbaHczfhHaCcufgCmbkaXcifgXad6mbkkcbhOxekcehOcbhrkcbh3dndnamcwGg9cmbJbbbbh8UcbhJcbhocbhCxekcbhea5cbyd:m:jjjbHjjjjbbhCascxfasyd2gHcdtfaCBdbasaHcefBd2dnalTmbaChHinaHaeBdbaHclfhHalaecefge9hmbkkdnaOmbcbh8Finaba8FcdtfhYcbhXinaLaYaXcdtgec;a1jjbfydbcdtfydbcdtfydbhHdnaCaLaYaefydbcdtfydbgOcdtfgAydbgeaOSmbinaAaCaegOcdtfgQydbgeBdbaQhAaOae9hmbkkdnaCaHcdtfgAydbgeaHSmbinaAaCaegHcdtfgQydbgeBdbaQhAaHae9hmbkkdnaOaHSmbaCaOaHaOaH0EcdtfaOaHaOaH6EBdbkaXcefgXci9hmbka8Fcifg8Fad6mbkkcbhJdnalTmbcbhQindnaLaQcdtgefydbaQ9hmbaQhHdnaCaefgXydbgeaQSmbaXhOinaOaCaegHcdtfgAydbgeBdbaAhOaHae9hmbkkaXaHBdbkaQcefgQal9hmbkcbheaLhOaChHcbhJindndnaeaOydbgA9hmbdnaeaHydbgA9hmbaHaJBdbaJcefhJxdkaHaCaAcdtfydbBdbxekaHaCaAcdtfydbBdbkaOclfhOaHclfhHalaecefge9hmbkkcuaJcltgeaJcjjjjiGEcbyd:m:jjjbHjjjjbbhoascxfasyd2gHcdtfaoBdbasaHcefBd2aocbaez:ljjjbhAdnalTmbaChOaahealhQinaecwfIdbh8SaeclfIdbhIaAaOydbcltfgHaeIdbaHIdbMUdbaHclfgXaIaXIdbMUdbaHcwfgXa8SaXIdbMUdbaHcxfgHaHIdbJbbjZMUdbaOclfhOaecxfheaQcufgQmbkkdnaJTmbaAheaJhHinaecxfgOIdbh8SaOcbBdbaeaeIdbJbbbbJbbjZa8S:va8SJbbbb9BEg8SNUdbaeclfgOa8SaOIdbNUdbaecwfgOa8SaOIdbNUdbaeczfheaHcufgHmbkkdnalTmbaChOaahealhQinaAaOydbcltfgHcxfgXaecwfIdbaHcwfIdb:tg8Sa8SNaeIdbaHIdb:tg8Sa8SNaeclfIdbaHclfIdb:tg8Sa8SNMMg8SaXIdbgIaIa8S9DEUdbaOclfhOaecxfheaQcufgQmbkkdnaJmbcbhJJFFuuh8UxekaAcxfheaAhHaJhOinaHaeIdbUdbaeczfheaHclfhHaOcufgOmbkJFFuuh8UaAheaJhHinaeIdbg8Sa8Ua8Ua8S9EEh8UaeclfheaHcufgHmbkkasydlh9ednalTmba9eclfhea9eydbhAaKhHalhQcbhOincbaeydbgXaA9RaHRbbcpeGEaOfhOaHcefhHaeclfheaXhAaQcufgQmbkaOce4h3kcuada39RcifgTcx2aTc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbhDascxfasyd2gecdtfaDBdbasaecefBd2cuaTcdtaTcFFFFi0Ecbyd:m:jjjbHjjjjbbhSascxfasyd2gecdtfaSBdbasaecefBd2a5cbyd:m:jjjbHjjjjbbh8Mascxfasyd2gecdtfa8MBdbasaecefBd2alcbyd:m:jjjbHjjjjbbh9hascxfasyd2gecdtfa9hBdbasaecefBd2axaxNa8NJbbjZamclGEg83a83N:vhcJbbbbhndnadak9nmbdnaTci6mba8Jclth9iaDcwfh6JbbbbhBJbbbbhninasclfabadalaLz:cjjjbabh3cbhEcbh5inaba5cdtfhwcbheindnaLa3aefydbgOcdtg8FfydbgQaLawaec;q1jjbfydbcdtfydbgHcdtg8LfydbgXSmbaKaHfRbbgYcv2aKaOfRbbgAfc;G1jjbfRbbg8AaAcv2aYfgic;G1jjbfRbbg8KVcFeGTmbdnaXaQ9nmbaic:G1jjbfRbbcFeGmekaAcufhQdnaAaY9hmbaQcFeGce0mbaha8FfydbaH9hmekdndnaAclSmbaYcl9hmekdnaQcFeGce0mbaha8FfydbaH9hmdkaYcufcFeGce0mbaga8LfydbaO9hmekaDaEcx2fgAaHaOa8KcFeGgQEBdlaAaOaHaQEBdbaAaQa8AGcb9hBdwaEcefhEkaeclfgecx9hmbkdna5cifg5ad9pmba3cxfh3aEcifaT9nmekkaETmdcbhYinaqaLaDaYcx2fgAydbgQcdtg3fydbc8S2fgeIdwaaaAydlgXcx2fgHIdwg8VNaeIdzaHIdbgRNaeIdaMg8Sa8SMMa8VNaeIdlaHIdlg8PNaeIdCa8VNaeId3Mg8Sa8SMMa8PNaeIdbaRNaeIdxa8PNaeIdKMg8Sa8SMMaRNaeId8KMMM:lh8SJbbbbJbbjZaeIdygI:vaIJbbbb9BEhIdndnaAydwg8FmbJFFuuh8XxekJbbbbJbbjZaqaLaXcdtfydbc8S2fgeIdyg8R:va8RJbbbb9BEaeIdwaaaQcx2fgHIdwg8RNaeIdzaHIdbg8WNaeIdaMg8Xa8XMMa8RNaeIdlaHIdlg8XNaeIdCa8RNaeId3Mg8Ra8RMMa8XNaeIdba8WNaeIdxa8XNaeIdKMg8Ra8RMMa8WNaeId8KMMM:lNh8XkaIa8SNh8Zdna8JTmbavaQc8S2fgOIdwa8VNaOIdzaRNaOIdaMg8Sa8SMMa8VNaOIdla8PNaOIdCa8VNaOId3Mg8Sa8SMMa8PNaOIdbaRNaOIdxa8PNaOIdKMg8Sa8SMMaRNaOId8KMMMh8SayaXa8J2gwcdtfhHaraQa8J2g8LcltfheaOIdyh8Ra8JhOinaHIdbgIaIa8RNaecxfIdba8VaecwfIdbNaRaeIdbNa8PaeclfIdbNMMMgIaIM:tNa8SMh8SaHclfhHaeczfheaOcufgOmbkdndna8FmbJbbbbhIxekavaXc8S2fgOIdwaaaQcx2fgeIdwgRNaOIdzaeIdbg8PNaOIdaMgIaIMMaRNaOIdlaeIdlg8RNaOIdCaRNaOId3MgIaIMMa8RNaOIdba8PNaOIdxa8RNaOIdKMgIaIMMa8PNaOId8KMMMhIaya8LcdtfhHarawcltfheaOIdyh8Wa8JhOinaHIdbg8Va8Va8WNaecxfIdbaRaecwfIdbNa8PaeIdbNa8RaeclfIdbNMMMg8Va8VM:tNaIMhIaHclfhHaeczfheaOcufgOmbkaI:lhIka8Za8S:lMh8Za8XaIMh8XaKaQfRbbcd9hmbdnagahaha3fydbaXSEa8Ea3fydbgwcdtfydbg3cu9hmba8EaXcdtfydbh3kavawc8S2fgOIdwaaa3cx2fgeIdwg8VNaOIdzaeIdbgRNaOIdaMg8Sa8SMMa8VNaOIdlaeIdlg8PNaOIdCa8VNaOId3Mg8Sa8SMMa8PNaOIdbaRNaOIdxa8PNaOIdKMg8Sa8SMMaRNaOId8KMMMh8Saya3a8J2g8LcdtfhHarawa8J2gicltfheaOIdyh8Ra8JhOinaHIdbgIaIa8RNaecxfIdba8VaecwfIdbNaRaeIdbNa8PaeclfIdbNMMMgIaIM:tNa8SMh8SaHclfhHaeczfheaOcufgOmbkdndna8FmbJbbbbhIxekava3c8S2fgOIdwaaawcx2fgeIdwgRNaOIdzaeIdbg8PNaOIdaMgIaIMMaRNaOIdlaeIdlg8RNaOIdCaRNaOId3MgIaIMMa8RNaOIdba8PNaOIdxa8RNaOIdKMgIaIMMa8PNaOId8KMMMhIayaicdtfhHara8LcltfheaOIdyh8Wa8JhOinaHIdbg8Va8Va8WNaecxfIdbaRaecwfIdbNa8PaeIdbNa8RaeclfIdbNMMMg8Va8VM:tNaIMhIaHclfhHaeczfheaOcufgOmbkaI:lhIka8Za8S:lMh8Za8XaIMh8XkaAa8Za8Xa8Za8X9FgeEUdwaAaXaQaea8FTVgeEBdlaAaQaXaeEBdbaYcefgYaE9hmbkasc;Wbfcbcj;qbz:ljjjb8Aa6heaEhHinasc;WbfaeydbcA4cF8FGgOcFAaOcFA6EcdtfgOaOydbcefBdbaecxfheaHcufgHmbkcbhecbhHinasc;WbfaefgOydbhAaOaHBdbaAaHfhHaeclfgecj;qb9hmbkcbhea6hHinasc;WbfaHydbcA4cF8FGgOcFAaOcFA6EcdtfgOaOydbgOcefBdbaSaOcdtfaeBdbaHcxfhHaEaecefge9hmbkadak9RgOci9Uh9kdnalTmbcbhea8MhHinaHaeBdbaHclfhHalaecefge9hmbkkcbh0a9hcbalz:ljjjbh5aOcO9Uh9ma9kce4h9nasydwh9ocbh8Kcbh8AdninaDaSa8Acdtfydbcx2fgiIdwg8Sac9Emea8Ka9k9pmeJFFuuhIdna9naE9pmbaDaSa9ncdtfydbcx2fIdwJbb;aZNhIkdna8SaI9ETmba8San9ETmba8Ka9m0mdkdna5aLaiydlgwcdtg9pfydbgAfg9qRbba5aLaiydbg3cdtg9rfydbgefg9sRbbVmbaKa3fRbbh9tdna9eaecdtfgHclfydbgOaHydbgHSmbaOaH9RhQaaaAcx2fhYaaaecx2fh8Fa9oaHcitfhecbhHceh8Ldnindna8MaeydbcdtfydbgOaASmba8MaeclfydbcdtfydbgXaASmbaOaXSmbaaaXcx2fgXIdbaaaOcx2fgOIdbg8V:tg8Sa8FIdlaOIdlgR:tg8WNa8FIdba8V:tg8XaXIdlaR:tgIN:tg8Pa8SaYIdlaR:tg8ZNaYIdba8V:tg80aIN:tgRNaIa8FIdwaOIdwg8R:tg8YNa8WaXIdwa8R:tg8VN:tg8WaIaYIdwa8R:tg81Na8Za8VN:tgINa8Va8XNa8Ya8SN:tg8Ra8Va80Na81a8SN:tg8SNMMa8Pa8PNa8Wa8WNa8Ra8RNMMaRaRNaIaINa8Sa8SNMMN:rJbbj8:N9FmdkaecwfheaHcefgHaQ6h8LaQaH9hmbkka8LceGTmba9ncefh9nxekdndndndna9tc9:fPdebdka3heina8MaecdtgefawBdba8Eaefydbgea39hmbxikkdnagahaha9rfydbawSEa8Ea9rfydbg3cdtfydbgecu9hmba8Ea9pfydbheka8Ma9rfawBdbaehwka8Ma3cdtfawBdbka9sce86bba9qce86bbaiIdwg8Sanana8S9DEhna0cefh0cecda9tceSEa8Kfh8Kka8Acefg8AaE9hmbkka0TmddnalTmbcbhXcbh8Findna8Ma8FcdtgefydbgOa8FSmbaLaOcdtfydbh3dna8FaLaefydb9hgwmbaqa3c8S2fgeaqa8Fc8S2fgHIdbaeIdbMUdbaeaHIdlaeIdlMUdlaeaHIdwaeIdwMUdwaeaHIdxaeIdxMUdxaeaHIdzaeIdzMUdzaeaHIdCaeIdCMUdCaeaHIdKaeIdKMUdKaeaHId3aeId3MUd3aeaHIdaaeIdaMUdaaeaHId8KaeId8KMUd8KaeaHIdyaeIdyMUdyka8JTmbavaOc8S2fgeava8Fc8S2g8LfgHIdbaeIdbMUdbaeaHIdlaeIdlMUdlaeaHIdwaeIdwMUdwaeaHIdxaeIdxMUdxaeaHIdzaeIdzMUdzaeaHIdCaeIdCMUdCaeaHIdKaeIdKMUdKaeaHId3aeId3MUd3aeaHIdaaeIdaMUdaaeaHId8KaeId8KMUd8KaeaHIdyaeIdyMUdya9iaO2hYarhHa8JhAinaHaYfgeaHaXfgOIdbaeIdbMUdbaeclfgQaOclfIdbaQIdbMUdbaecwfgQaOcwfIdbaQIdbMUdbaecxfgeaOcxfIdbaeIdbMUdbaHczfhHaAcufgAmbkawmbJbbbbJbbjZaqa8LfgeIdyg8S:va8SJbbbb9BEaeIdwaaa3cx2fgHIdwg8SNaeIdzaHIdbgINaeIdaMg8Va8VMMa8SNaeIdlaHIdlg8VNaeIdCa8SNaeId3Mg8Sa8SMMa8VNaeIdbaINaeIdxa8VNaeIdKMg8Sa8SMMaINaeId8KMMM:lNg8SaBaBa8S9DEhBkaXa9ifhXa8Fcefg8Fal9hmbkcbhHahheindnaeydbgOcuSmbdnaHa8MaOcdtgAfydbgO9hmbcuhOahaAfydbgAcuSmba8MaAcdtfydbhOkaeaOBdbkaeclfhealaHcefgH9hmbkcbhHagheindnaeydbgOcuSmbdnaHa8MaOcdtgAfydbgO9hmbcuhOagaAfydbgAcuSmba8MaAcdtfydbhOkaeaOBdbkaeclfhealaHcefgH9hmbkkaBana8JEhBcbhAabhecbhQindna8MaeydbcdtfydbgHa8MaeclfydbcdtfydbgOSmbaHa8MaecwfydbcdtfydbgXSmbaOaXSmbabaAcdtfgYaHBdbaYcwfaXBdbaYclfaOBdbaAcifhAkaecxfheaQcifgQad6mbkdndna9cTmbaAak9nmba8UaB9FTmbcbhdabhecbhHindnaoaCaeydbgOcdtfydbcdtfIdbaB9ETmbabadcdtfgQaOBdbaQclfaeclfydbBdbaQcwfaecwfydbBdbadcifhdkaecxfheaHcifgHaA6mbkJFFuuh8UaJTmeaoheaJhHJFFuuh8SinaeIdbgIa8Sa8SaI9EEg8Va8SaIaB9EgOEh8Sa8Va8UaOEh8UaeclfheaHcufgHmbxdkkaAhdkadak0mbxdkkasclfabadalaLz:cjjjbkdndnadak0mbadhOxekdna9cmbadhOxekdna8Uac9FmbadhOxekina8UJbb;aZNg8Saca8Sac9DEh8VJbbbbh8SdnaJTmbaoheaJhHinaeIdbgIa8SaIa8V9FEa8SaIa8S9EEh8SaeclfheaHcufgHmbkkcbhOabhecbhHindnaoaCaeydbgAcdtfydbcdtfIdba8V9ETmbabaOcdtfgQaABdbaQclfaeclfydbBdbaQcwfaecwfydbBdbaOcifhOkaecxfheaHcifgHad6mbkJFFuuh8UdnaJTmbaoheaJhHJFFuuhIinaeIdbgRaIaIaR9EEg8PaIaRa8V9EgAEhIa8Pa8UaAEh8UaeclfheaHcufgHmbkkdnaOad9hmbadhOxdka8Sanana8S9DEhnaOak9nmeaOhda8Uac9FmbkkdnamcjjjjlGTmbazmbaOTmbcbhLabheinaKaeydbgAfRbbc3thXaecwfgYydbhHdndnahaAcdtg3fydbaeclfg8FydbgCSmbcbhQagaCcdtfydbaA9hmekcjjjj94hQkaeaXaQVaAVBdbaKaCfRbbc3thXdndnahaCcdtfydbaHSmbcbhQagaHcdtfydbaC9hmekcjjjj94hQka8FaXaQVaCVBdbaKaHfRbbc3thQdndnahaHcdtfydbaASmbcbhCaga3fydbaH9hmekcjjjj94hCkaYaQaCVaHVBdbaecxfheaLcifgLaO6mbkkdnazTmbaOTmbaOheinabazabydbcdtfydbBdbabclfhbaecufgembkkdnaPTmbaPa83an:rNUdbkasyd2gecdtascxffc98fhHdninaeTmeaHydbcbyd1:jjjbH:bjjjbbaHc98fhHaecufhexbkkasc;W;qbf8KjjjjbaOk;Yieouabydlhvabydbclfcbaicdtz:ljjjbhoadci9UhrdnadTmbdnalTmbaehwadhDinaoalawydbcdtfydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbxdkkaehwadhDinaoawydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbkkdnaiTmbcbhDaohwinawydbhqawaDBdbawclfhwaqaDfhDaicufgimbkkdnadci6mbinaecwfydbhwaeclfydbhDaeydbhidnalTmbalawcdtfydbhwalaDcdtfydbhDalaicdtfydbhikavaoaicdtfgqydbcitfaDBdbavaqydbcitfawBdlaqaqydbcefBdbavaoaDcdtfgqydbcitfawBdbavaqydbcitfaiBdlaqaqydbcefBdbavaoawcdtfgwydbcitfaiBdbavawydbcitfaDBdlawawydbcefBdbaecxfhearcufgrmbkkabydbcbBdbk;Qodvuv998Jjjjjbca9Rgvczfcwfcbyd11jjbBdbavcb8Pdj1jjb83izavcwfcbydN1jjbBdbavcb8Pd:m1jjb83ibdnadTmbaicd4hodnabmbdnalTmbcbhrinaealarcdtfydbao2cdtfhwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkarcefgrad9hmbxikkaocdthrcbhwincbhiinavczfaifgDaeaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkaearfheawcefgwad9hmbxdkkdnalTmbcbhrinabarcx2fgiaealarcdtfydbao2cdtfgwIdbUdbaiawIdlUdlaiawIdwUdwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkarcefgrad9hmbxdkkaocdthlcbhraehwinabarcx2fgiaearao2cdtfgDIdbUdbaiaDIdlUdlaiaDIdwUdwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkawalfhwarcefgrad9hmbkkJbbbbavIdbavIdzgk:tgqaqJbbbb9DEgqavIdlavIdCgx:tgmamaq9DEgqavIdwavIdKgm:tgPaPaq9DEhPdnabTmbadTmbJbbbbJbbjZaP:vaPJbbbb9BEhqinabaqabIdbak:tNUdbabclfgvaqavIdbax:tNUdbabcwfgvaqavIdbam:tNUdbabcxfhbadcufgdmbkkaPk8MbabaeadaialavcbcbcbcbcbaoarawaDz:bjjjbk8MbabaeadaialavaoarawaDaqakaxamaPz:bjjjbk:DCoDud99rue99iul998Jjjjjbc;Wb9Rgw8KjjjjbdndnarmbcbhDxekawcxfcbc;Kbz:ljjjb8Aawcuadcx2adc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbgqBdxawceBd2aqaeadaicbz:djjjb8AawcuadcdtadcFFFFi0Egkcbyd:m:jjjbHjjjjbbgxBdzawcdBd2adcd4adfhmceheinaegicetheaiam6mbkcbhPawcuaicdtgsaicFFFFi0Ecbyd:m:jjjbHjjjjbbgzBdCawciBd2dndnar:ZgH:rJbbbZMgO:lJbbb9p9DTmbaO:Ohexekcjjjj94hekaicufhAc:bwhmcbhCadhXcbhQinaChLaeamgKcufaeaK9iEaPgDcefaeaD9kEhYdndnadTmbaYcuf:YhOaqhiaxheadhmindndnaiIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:ljjjbh3cbh5cbhPindna3axaPcdtfydbgCcm4aC7c:v;t;h;Ev2gics4ai7aAGgmcdtfgEydbgecuSmbaeaCSmbcehiina3amaifaAGgmcdtfgEydbgecuSmeaicefhiaeaC9hmbkkaEaCBdba5aecuSfh5aPcefgPad9hmbxdkkazcFeasz:ljjjb8Acbh5kaDaYa5ar0giEhPaLa5aiEhCdna5arSmbaYaKaiEgmaP9Rcd9imbdndnaQcl0mbdnaX:ZgOaL:Zg8A:taY:Yg8EaD:Y:tg8Fa8EaK:Y:tgaa5:ZghaH:tNNNaOaH:taaNa8Aah:tNa8AaH:ta8FNahaO:tNM:va8EMJbbbZMgO:lJbbb9p9DTmbaO:Ohexdkcjjjj94hexekaPamfcd9Theka5aXaiEhXaQcefgQcs9hmekkdndnaCmbcihicbhDxekcbhiawakcbyd:m:jjjbHjjjjbbg5BdKawclBd2aPcuf:Yh8AdndnadTmbaqhiaxheadhmindndnaiIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:ljjjbh3cbhDcbhYindndndna3axaYcdtgKfydbgCcm4aC7c:v;t;h;Ev2gics4ai7aAGgmcdtfgEydbgecuSmbcehiinaxaecdtgefydbaCSmdamaifheaicefhia3aeaAGgmcdtfgEydbgecu9hmbkkaEaYBdbaDhiaDcefhDxeka5aefydbhika5aKfaiBdbaYcefgYad9hmbkcuaDc32giaDc;j:KM;jb0EhexekazcFeasz:ljjjb8AcbhDcbhekawaecbyd:m:jjjbHjjjjbbgeBd3awcvBd2aecbaiz:ljjjbhEavcd4hKdnadTmbdnalTmbaKcdth3a5hCaqhealhmadhAinaEaCydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiamIdbaiIdxMUdxaiamclfIdbaiIdzMUdzaiamcwfIdbaiIdCMUdCaiaiIdKJbbjZMUdKaCclfhCaecxfheama3fhmaAcufgAmbxdkka5hmaqheadhCinaEamydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiaiIdxJbbbbMUdxaiaiIdzJbbbbMUdzaiaiIdCJbbbbMUdCaiaiIdKJbbjZMUdKamclfhmaecxfheaCcufgCmbkkdnaDTmbaEhiaDheinaiaiIdbJbbbbJbbjZaicKfIdbgO:vaOJbbbb9BEgONUdbaiclfgmaOamIdbNUdbaicwfgmaOamIdbNUdbaicxfgmaOamIdbNUdbaiczfgmaOamIdbNUdbaicCfgmaOamIdbNUdbaic3fhiaecufgembkkcbhCawcuaDcdtgYaDcFFFFi0Egicbyd:m:jjjbHjjjjbbgeBdaawcoBd2awaicbyd:m:jjjbHjjjjbbg3Bd8KaecFeaYz:ljjjbhxdnadTmbJbbjZJbbjZa8A:vaPceSEaoNgOaONh8AaKcdthPalheina8Aaec;81jjbalEgmIdwaEa5ydbgAc32fgiIdC:tgOaONamIdbaiIdx:tgOaONamIdlaiIdz:tgOaONMMNaqcwfIdbaiIdw:tgOaONaqIdbaiIdb:tgOaONaqclfIdbaiIdl:tgOaONMMMhOdndnaxaAcdtgifgmydbcuSmba3aifIdbaO9ETmekamaCBdba3aifaOUdbka5clfh5aqcxfhqaeaPfheadaCcefgC9hmbkkabaxaYz:kjjjb8AcrhikaicdthiinaiTmeaic98fgiawcxffydbcbyd1:jjjbH:bjjjbbxbkkawc;Wbf8KjjjjbaDk:Ydidui99ducbhi8Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdndnaembJbbjFhvJbbjFhoJbbjFhrxekadcd4cdthwincbhdinalczfadfgDabadfIdbgvaDIdbgoaoav9EEUdbaladfgDavaDIdbgoaoav9DEUdbadclfgdcx9hmbkabawfhbaicefgiae9hmbkalIdwalIdK:thralIdlalIdC:thoalIdbalIdz:thvkJbbbbavavJbbbb9DEgvaoaoav9DEgvararav9DEk9DeeuabcFeaicdtz:ljjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcifc98GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcrfc94GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:q:jjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:q:jjjbfgdBd:q:jjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk6eiucbhidnadTmbdninabRbbglaeRbbgv9hmeaecefheabcefhbadcufgdmbxdkkalav9Rhikaikk:Iedbcjwk1eFFuuFFuuFFuuFFuFFFuFFFuFbbbbbbbbeeebeebebbeeebebbbbbebebbbbbbbbbebbbdbbbbbbbebbbebbbdbbbbbbbbbbbeeeeebebbebbebebbbeebbbbbbbbbbbbbbbbbbbbbc1Dkxebbbdbbb:GNbb"),{}).then(function(s){(r=s.instance).exports.__wasm_call_ctors()});function t(s){if(!s)throw new Error("Assertion failed")}function i(s){return new Uint8Array(s.buffer,s.byteOffset,s.byteLength)}function n(s,A,u,c,d,l,h,b){var g=r.exports.sbrk,p=g(4*b),E=g(u*c),m=g(u*l),C=new Uint8Array(r.exports.memory.buffer);C.set(i(A),E),d&&C.set(i(d),m);var I=s(p,E,u,c,m,l,h,b);new Uint8Array(r.exports.memory.buffer);var w=new Uint32Array(I);return i(w).set(C.subarray(p,p+4*I)),g(p-g(0)),w}var o={LockBorder:1,Sparse:2,ErrorAbsolute:4,Prune:8,_InternalDebug:1<<30}})(),function(){var r,e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var a=WebAssembly.instantiate(function(o){for(var s=new Uint8Array(o.length),A=0;A<o.length;++A){var u=o.charCodeAt(A);s[A]=u>96?u-97:u>64?u-39:u+4}var c=0;for(A=0;A<o.length;++A)s[c++]=s[A]<60?e[s[A]]:64*(s[A]-60)+s[++A];return s.buffer.slice(0,c)}("b9H79TebbbeVx9Geueu9Geub9Gbb9Giuuueu9Gmuuuuuuuuuuu9999eu9Gvuuuuueu9Gwuuuuuuuub9Gxuuuuuuuuuuuueu9Gkuuuuuuuuuu99eu9Gouuuuuub9Gruuuuuuub9GluuuubiOHdilvorwDDqkbiibeilve9Weiiviebeoweuec:q:Odkr:Yewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9I919P29K9nW79O2Wt79c9V919U9KbeX9TW79O9V9Wt9F9I919P29K9nW79O2Wt7bo39TW79O9V9Wt9F9J9V9T9W91tWJ2917tWV9c9V919U9K7br39TW79O9V9Wt9F9J9V9T9W91tW9nW79O2Wt9c9V919U9K7bDL9TW79O9V9Wt9F9V9Wt9P9T9P96W9nW79O2Wtbql79IV9RbkDwebcekdsPq;29zHdbkIbabaec9:fgefcufae9Ugeabci9Uadfcufad9Ugbaeab0Ek:w8KDPue99eux99dui99euo99iu8Jjjjjbc:WD9Rgm8KjjjjbdndnalmbcbhPxekamc:Cwfcbc;Kbz:njjjb8Adndnalcb9imbaoal9nmbamcuaocdtaocFFFFi0Egscbyd:e1jjbHjjjjbbgzBd:CwamceBd;8wamascbyd:e1jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd:e1jjbHjjjjbbgOBd:KwamciBd;8waihsalhAinazasydbcdtfcbBdbasclfhsaAcufgAmbkaihsalhAinazasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkaihsalhCcbhXindnazasydbcdtgQfgAydbcb9imbaHaQfaXBdbaAaAydbgQcjjjj94VBdbaQaXfhXkasclfhsaCcufgCmbkalci9UhLdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhXaHaAydbcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaXcdtfgXaXydbgXcefBdbaOaXcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaihsalhAindnazasydbcdtgCfgXydbgQcu9kmbaXaQcFFFFrGgQBdbaHaCfgCaCydbaQ9RBdbkasclfhsaAcufgAmbxdkkamcuaocdtgsaocFFFFi0EgAcbyd:e1jjbHjjjjbbgzBd:CwamceBd;8wamaAcbyd:e1jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd:e1jjbHjjjjbbgOBd:KwamciBd;8wazcbasz:njjjbhXalci9UhLaihsalhAinaXasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkdnaoTmbcbhsaHhAaXhCaohQinaAasBdbaAclfhAaCydbasfhsaCclfhCaQcufgQmbkkdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhQaHaAydbcdtfgKaKydbgKcefBdbaOaKcdtfasBdbaHaQcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaoTmbcbhsaohAinaHasfgCaCydbaXasfydb9RBdbasclfhsaAcufgAmbkkamaLcbyd:e1jjbHjjjjbbgsBd:OwamclBd;8wascbaLz:njjjbhYamcuaLcK2alcjjjjd0Ecbyd:e1jjbHjjjjbbg8ABd:SwamcvBd;8wJbbbbhEdnalci6g3mbarcd4hKaihAa8AhsaLhrJbbbbh5inavaAclfydbaK2cdtfgCIdlh8EavaAydbaK2cdtfgXIdlhEavaAcwfydbaK2cdtfgQIdlh8FaCIdwhaaXIdwhhaQIdwhgasaCIdbg8JaXIdbg8KMaQIdbg8LMJbbnn:vUdbasclfaXIdlaCIdlMaQIdlMJbbnn:vUdbaQIdwh8MaCIdwh8NaXIdwhyascxfa8EaE:tg8Eagah:tggNa8FaE:tg8Faaah:tgaN:tgEJbbbbJbbjZa8Ja8K:tg8Ja8FNa8La8K:tg8Ka8EN:tghahNaEaENaaa8KNaga8JN:tgEaENMM:rg8K:va8KJbbbb9BEg8ENUdbasczfaEa8ENUdbascCfaha8ENUdbascwfa8Maya8NMMJbbnn:vUdba5a8KMh5aAcxfhAascKfhsarcufgrmbka5aL:Z:vJbbbZNhEkamcuaLcdtalcFFFF970Ecbyd:e1jjbHjjjjbbgCBd:WwamcoBd;8waEaq:ZNhEdna3mbcbhsaChAinaAasBdbaAclfhAaLascefgs9hmbkkaE:rhhcuh8PamcuaLcltalcFFFFd0Ecbyd:e1jjbHjjjjbbgIBd:0wamcrBd;8wcbaIa8AaCaLz:djjjb8AJFFuuhyJFFuuh8RJFFuuh8Sdnalci6gXmbJFFuuh8Sa8AhsaLhAJFFuuh8RJFFuuhyinascwfIdbgEayayaE9EEhyasclfIdbgEa8Ra8RaE9EEh8RasIdbgEa8Sa8SaE9EEh8SascKfhsaAcufgAmbkkahJbbbZNhgamaocetgscuaocu9kEcbyd:e1jjbHjjjjbbgABd:4waAcFeasz:njjjbhCdnaXmbcbhAJFFuuhEa8Ahscuh8PinascwfIdbay:tghahNasIdba8S:tghahNasclfIdba8R:tghahNMM:rghaEa8PcuSahaE9DVgXEhEaAa8PaXEh8PascKfhsaLaAcefgA9hmbkkamczfcbcjwz:njjjb8Aamcwf9cb83ibam9cb83ibagaxNhRJbbjZak:th8Ncbh8UJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8YJbbbbh8ZJbbbbh80cbh81cbhPinJbbbbhEdna8UTmbJbbjZa8U:Z:vhEkJbbbbhhdna80a80Na8Ya8YNa8Za8ZNMMg8KJbbbb9BmbJbbjZa8K:r:vhhka8XaENh5a8WaENh8Fa8VaENhaa8PhQdndndndndna8UaPVTmbamydwgBTmea80ahNh8Ja8ZahNh8La8YahNh8Maeamydbcdtfh83cbh3JFFuuhEcvhXcuhQindnaza83a3cdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAindndnaCaiaAydbgKcx2fgsclfydbgrcetf8Vebcs4aCasydbgLcetf8Vebcs4faCascwfydbglcetf8Vebcs4fgombcbhsxekcehsazaLcdtfydbgLceSmbcehsazarcdtfydbgrceSmbcehsazalcdtfydbglceSmbdnarcdSaLcdSfalcdSfcd6mbaocefhsxekaocdfhskdnasaX9kmba8AaKcK2fgLIdwa5:thhaLIdla8F:th8KaLIdbaa:th8EdndnakJbbbb9DTmba8E:lg8Ea8K:lg8Ka8Ea8K9EEg8Kah:lgha8Kah9EEag:vJbbjZMhhxekahahNa8Ea8ENa8Ka8KNMM:rag:va8NNJbbjZMJ9VO:d86JbbjZaLIdCa8JNaLIdxa8MNa8LaLIdzNMMakN:tghahJ9VO:d869DENhhkaKaQasaX6ahaE9DVgLEhQasaXaLEhXahaEaLEhEkaAclfhAavcufgvmbkka3cefg3aB9hmbkkaQcu9hmekama5Ud:ODama8FUd:KDamaaUd:GDamcuBd:qDamcFFF;7rBdjDaIcba8AaYamc:GDfakJbbbb9Damc:qDfamcjDfz:ejjjbamyd:qDhQdndnaxJbbbb9ETmba8UaD6mbaQcuSmeceh3amIdjDaR9EmixdkaQcu9hmekdna8UTmbdnamydlgza8Uci2fgsciGTmbadasfcba8Uazcu7fciGcefz:njjjb8AkabaPcltfgzam8Pib83dbazcwfamcwf8Pib83dbaPcefhPkc3hzinazc98Smvamc:Cwfazfydbcbydj1jjbH:bjjjbbazc98fhzxbkkcbh3a8Uaq9pmbamydwaCaiaQcx2fgsydbcetf8Vebcs4aCascwfydbcetf8Vebcs4faCasclfydbcetf8Vebcs4ffaw9nmekcbhscbhAdna81TmbcbhAamczfhXinamczfaAcdtfaXydbgLBdbaXclfhXaAaYaLfRbbTfhAa81cufg81mbkkamydwhlamydbhXam9cu83i:GDam9cu83i:ODam9cu83i:qDam9cu83i:yDaAc;8eaAclfc:bd6Eh81inamcjDfasfcFFF;7rBdbasclfgscz9hmbka81cdthBdnalTmbaeaXcdtfhocbhrindnazaoarcdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAcuhLcuhsinazaiaAydbgKcx2fgXclfydbcdtfydbazaXydbcdtfydbfazaXcwfydbcdtfydbfgXasaXas6gXEhsaKaLaXEhLaAclfhAavcufgvmbkaLcuSmba8AaLcK2fgAIdway:tgEaENaAIdba8S:tgEaENaAIdla8R:tgEaENMM:rhEcbhAindndnasamc:qDfaAfgvydbgX6mbasaX9hmeaEamcjDfaAfIdb9FTmekavasBdbamc:GDfaAfaLBdbamcjDfaAfaEUdbxdkaAclfgAcz9hmbkkarcefgral9hmbkkamczfaBfhLcbhscbhAindnamc:GDfasfydbgXcuSmbaLaAcdtfaXBdbaAcefhAkasclfgscz9hmbkaAa81fg81TmbJFFuuhhcuhKamczfhsa81hvcuhLina8AasydbgXcK2fgAIdway:tgEaENaAIdba8S:tgEaENaAIdla8R:tgEaENMM:rhEdndnazaiaXcx2fgAclfydbcdtfydbazaAydbcdtfydbfazaAcwfydbcdtfydbfgAaL6mbaAaL9hmeaEah9DTmekaEhhaAhLaXhKkasclfhsavcufgvmbkaKcuSmbaKhQkdnamaiaQcx2fgrydbarclfydbarcwfydbaCabaeadaPawaqa3z:fjjjbTmbaPcefhPJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8YJbbbbh8ZJbbbbh80kcbhXinaOaHaraXcdtfydbcdtgAfydbcdtfgKhsazaAfgvydbgLhAdnaLTmbdninasydbaQSmeasclfhsaAcufgATmdxbkkasaKaLcdtfc98fydbBdbavavydbcufBdbkaXcefgXci9hmbka8AaQcK2fgsIdbhEasIdlhhasIdwh8KasIdxh8EasIdzh5asIdCh8FaYaQfce86bba80a8FMh80a8Za5Mh8Za8Ya8EMh8Ya8Xa8KMh8Xa8WahMh8Wa8VaEMh8Vamydxh8Uxbkkamc:WDf8KjjjjbaPk;Vvivuv99lu8Jjjjjbca9Rgv8Kjjjjbdndnalcw0mbaiydbhoaeabcitfgralcdtcufBdlaraoBdbdnalcd6mbaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkkalabfhrxekcbhDavczfcwfcbBdbav9cb83izavcwfcbBdbav9cb83ibJbbjZhqJbbjZhkinadaiaDcdtfydbcK2fhwcbhrinavczfarfgoawarfIdbgxaoIdbgm:tgPakNamMgmUdbavarfgoaPaxam:tNaoIdbMUdbarclfgrcx9hmbkJbbjZaqJbbjZMgq:vhkaDcefgDal9hmbkcbhoadcbcecdavIdlgxavIdwgm9GEgravIdbgPam9GEaraPax9GEgscdtgrfhzavczfarfIdbhxaihralhwinaiaocdtfgDydbhHaDarydbgOBdbaraHBdbarclfhraoazaOcK2fIdbax9Dfhoawcufgwmbkaeabcitfhrdndnaocv6mbaoalc98f6mekaraiydbBdbaralcdtcufBdlaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkalabfhrxekaraxUdbararydlc98GasVBdlabcefaeadaiaoz:djjjbhwararydlciGawabcu7fcdtVBdlawaeadaiaocdtfalao9Rz:djjjbhrkavcaf8Kjjjjbark:;idiud99dndnabaecitfgwydlgDciGgqciSmbinabcbaDcd4gDalaqcdtfIdbawIdb:tgkJbbbb9FEgwaecefgefadaialavaoarz:ejjjbak:larIdb9FTmdabawaD7aefgecitfgwydlgDciGgqci9hmbkkabaecitfgeclfhbdnavmbcuhwindnaiaeydbgDfRbbmbadaDcK2fgqIdwalIdw:tgkakNaqIdbalIdb:tgkakNaqIdlalIdl:tgkakNMM:rgkarIdb9DTmbarakUdbaoaDBdbkaecwfheawcefgwabydbcd46mbxdkkcuhwindnaiaeydbgDfRbbmbadaDcK2fgqIdbalIdb:t:lgkaqIdlalIdl:t:lgxakax9EEgkaqIdwalIdw:t:lgxakax9EEgkarIdb9DTmbarakUdbaoaDBdbkaecwfheawcefgwabydbcd46mbkkk;llevudnabydwgxaladcetfgm8Vebcs4alaecetfgP8Vebgscs4falaicetfgz8Vebcs4ffaD0abydxaq9pVakVgDce9hmbavawcltfgxab8Pdb83dbaxcwfabcwfgx8Pdb83dbdnaxydbgqTmbaoabydbcdtfhxaqhsinalaxydbcetfcFFi87ebaxclfhxascufgsmbkkdnabydxglci2gsabydlgxfgkciGTmbarakfcbalaxcu7fciGcefz:njjjb8Aabydxci2hsabydlhxabydwhqkab9cb83dwababydbaqfBdbabascifc98GaxfBdlaP8Vebhscbhxkdnascztcz91cu9kmbabaxcefBdwaPax87ebaoabydbcdtfaxcdtfaeBdbkdnam8Uebcu9kmbababydwgxcefBdwamax87ebaoabydbcdtfaxcdtfadBdbkdnaz8Uebcu9kmbababydwgxcefBdwazax87ebaoabydbcdtfaxcdtfaiBdbkarabydlfabydxci2faPRbb86bbarabydlfabydxci2fcefamRbb86bbarabydlfabydxci2fcdfazRbb86bbababydxcefBdxaDk8LbabaeadaialavaoarawaDaDaqJbbbbz:cjjjbk;Jkovud99euv99eul998Jjjjjbc:W;ae9Rgo8KjjjjbdndnadTmbavcd4hrcbhwcbhDindnaiaeclfydbar2cdtfgvIdbaiaeydbar2cdtfgqIdbgk:tgxaiaecwfydbar2cdtfgmIdlaqIdlgP:tgsNamIdbak:tgzavIdlaP:tgPN:tgkakNaPamIdwaqIdwgH:tgONasavIdwaH:tgHN:tgPaPNaHazNaOaxN:tgxaxNMM:rgsJbbbb9Bmbaoc:W:qefawcx2fgAakas:vUdwaAaxas:vUdlaAaPas:vUdbaoc8Wfawc8K2fgAaq8Pdb83dbaAav8Pdb83dxaAam8Pdb83dKaAcwfaqcwfydbBdbaAcCfavcwfydbBdbaAcafamcwfydbBdbawcefhwkaecxfheaDcifgDad6mbkab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbawTmeaocbBd8Sao9cb83iKao9cb83izaoczfaoc8Wfawci2cxaoc8Sfcbz1jjjbaoIdKhCaoIdChXaoIdzhQao9cb83iwao9cb83ibaoaoc:W:qefawcxaoc8Sfcbz1jjjbJbbjZhkaoIdwgPJbbbbJbbjZaPaPNaoIdbgPaPNaoIdlgsasNMM:rgx:vaxJbbbb9BEgzNhxasazNhsaPazNhzaoc:W:qefheawhvinaecwfIdbaxNaeIdbazNasaeclfIdbNMMgPakaPak9DEhkaecxfheavcufgvmbkabaCUdwabaXUdlabaQUdbabaoId3UdxdndnakJ;n;m;m899FmbJbbbbhPaoc:W:qefheaoc8WfhvinaCavcwfIdb:taecwfIdbgHNaQavIdb:taeIdbgONaXavclfIdb:taeclfIdbgLNMMaxaHNazaONasaLNMM:vgHaPaHaP9EEhPavc8KfhvaecxfheawcufgwmbkabaxUd8KabasUdaabazUd3abaCaxaPN:tUdKabaXasaPN:tUdCabaQazaPN:tUdzabJbbjZakakN:t:rgkUdydndnaxJbbj:;axJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;axJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohexekcjjjj94hekabae86b8UdndnasJbbj:;asJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;asJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkabav86bRdndnazJbbj:;azJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;azJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohqxekcjjjj94hqkabaq86b8SdndnaecKtcK91:YJbb;:9c:vax:t:lavcKtcK91:YJbb;:9c:vas:t:laqcKtcK91:YJbb;:9c:vaz:t:lakMMMJbb;:9cNJbbjZMgk:lJbbb9p9DTmbak:Ohexekcjjjj94hekaecFbaecFb9iEhexekabcjjj;8iBdycFbhekabae86b8Vxekab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbkaoc:W;aef8Kjjjjbk;Yodouk99cbho8Jjjjjbca9RgrczfcwfcbBdbar9cb83izarcwfcbBdbar9cb83ibavcd4hwaicd4hDdnadTmbaDcdthqaehkinalaoaw2cdtfIdbhxcbhvinarczfavfgiaoaiydbgiakavfIdbgmax:taeavaqai2ffIdbalaiaw2cdtfIdb:t9DEBdbaravfgiaoaiydbgiaxamMaeavaqai2ffIdbalaiaw2cdtfIdbM9EEBdbavclfgvcx9hmbkakaqfhkaocefgoad9hmbkkJbbbbhxcbhvcbhkcbhiinalaravfydbgoaw2cdtfIdbalarczfavfydbgqaw2cdtfIdbaeaoaD2cdtfgoIdwaeaqaD2cdtfgqIdw:tgmamNaoIdbaqIdb:tgmamNaoIdlaqIdl:tgmamNMM:rMMgmaxamax9EgoEhxaiakaoEhkavclfhvaicefgici9hmbkJbbbbhmdnaearakcdtgifydbgoaD2cdtfgvIdwaearczfaifydbgraD2cdtfgiIdwgP:tgsasNavIdbaiIdbgz:tgHaHNavIdlaiIdlgO:tgAaANMM:rgCJbbbb9ETmbaCalaoaw2cdtfIdbMalaraw2cdtfIdb:taCaCM:vhmkaxJbbbZNhCasamNaPMhPaAamNaOMhOaHamNazMhzdnadTmbaDcdthvawcdthiindnalIdbgXaecwfIdbaP:tgxaxNaeIdbaz:tgmamNaeclfIdbaO:tgsasNMM:rgHMgQaC9ETmbJbbbbhAdnaHJbbbb9ETmbaQaC:taHaHM:vhAkaAaxNaPMhPaAasNaOMhOaAamNazMhzaXaCaHMMJbbbZNhCkaeavfhealaifhladcufgdmbkkabaCUdxabaPUdwabaOUdlabazUdbkjeeiu8Jjjjjbcj8W9Rgr8Kjjjjbaici2hwdnaiTmbawceawce0EhDarhiinaiaeadRbbcdtfydbBdbadcefhdaiclfhiaDcufgDmbkkabarawaladaoz:hjjjbarcj8Wf8Kjjjjbk:3lequ8JjjjjbcjP9Rgl8Kjjjjbcbhvalcjxfcbaiz:njjjb8AdndnadTmbcjehoaehrincuhwarhDcuhqavhkdninawakaoalcjxfaDcefRbbfRbb9RcFeGci6aoalcjxfaDRbbfRbb9RcFeGci6faoalcjxfaDcdfRbbfRbb9RcFeGci6fgxaq9mgmEhwdnammbaxce0mdkaxaqaxaq9kEhqaDcifhDadakcefgk9hmbkkaeawci2fgDcdfRbbhqaDcefRbbhxaDRbbhkaeavci2fgDcifaDawav9Rci2z:qjjjb8Aakalcjxffaocefgo86bbaxalcjxffao86bbaDcdfaq86bbaDcefax86bbaDak86bbaqalcjxffao86bbarcifhravcefgvad9hmbkalcFeaicetz:njjjbhoadci2gDceaDce0EhqcbhxindnaoaeRbbgkcetfgw8UebgDcu9kmbawax87ebaocjlfaxcdtfabakcdtfydbBdbaxhDaxcefhxkaeaD86bbaecefheaqcufgqmbkaxcdthDxekcbhDkabalcjlfaDz:mjjjb8AalcjPf8Kjjjjbk9teiucbcbyd11jjbgeabcifc98GfgbBd11jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd11jjbgeabcrfc94GfgbBd11jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd11jjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd11jjbfgdBd11jjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk:;Deludndndnadch9pmbabaeSmdaeabadfgi9Rcbadcet9R0mekabaead;8qbbxekaeab7ciGhldndndnabae9pmbdnalTmbadhvabhixikdnabciGmbadhvabhixdkadTmiabaeRbb86bbadcufhvdnabcefgiciGmbaecefhexdkavTmiabaeRbe86beadc9:fhvdnabcdfgiciGmbaecdfhexdkavTmiabaeRbd86bdadc99fhvdnabcifgiciGmbaecifhexdkavTmiabaeRbi86biabclfhiaeclfheadc98fhvxekdnalmbdnaiciGTmbadTmlabadcufgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc9:fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc99fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc98fgdfaeadfRbb86bbkadcl6mbdnadc98fgocd4cefciGgiTmbaec98fhlabc98fhvinavadfaladfydbBdbadc98fhdaicufgimbkkaocx6mbaec9Wfhvabc9WfhoinaoadfgicxfavadfglcxfydbBdbaicwfalcwfydbBdbaiclfalclfydbBdbaialydbBdbadc9Wfgdci0mbkkadTmdadhidnadciGglTmbaecufhvabcufhoadhiinaoaifavaifRbb86bbaicufhialcufglmbkkadcl6mdaec98fhlabc98fhvinavaifgecifalaifgdcifRbb86bbaecdfadcdfRbb86bbaecefadcefRbb86bbaeadRbb86bbaic98fgimbxikkavcl6mbdnavc98fglcd4cefcrGgdTmbavadcdt9RhvinaiaeydbBdbaeclfheaiclfhiadcufgdmbkkalc36mbinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaiaeydzBdzaiaeydCBdCaiaeydKBdKaiaeyd3Bd3aecafheaicafhiavc9Gfgvci0mbkkavTmbdndnavcrGgdmbavhlxekavc94GhlinaiaeRbb86bbaicefhiaecefheadcufgdmbkkavcw6mbinaiaeRbb86bbaiaeRbe86beaiaeRbd86bdaiaeRbi86biaiaeRbl86blaiaeRbv86bvaiaeRbo86boaiaeRbr86braicwfhiaecwfhealc94fglmbkkabkkAebcjwkxebbbdbbbzNbb"),{}).then(function(o){(r=o.instance).exports.__wasm_call_ctors()});function t(o){if(!o)throw new Error("Assertion failed")}function i(o){return new Uint8Array(o.buffer,o.byteOffset,o.byteLength)}function n(o){var s=new Float32Array(r.exports.memory.buffer,o,12);return{centerX:s[0],centerY:s[1],centerZ:s[2],radius:s[3],coneApexX:s[4],coneApexY:s[5],coneApexZ:s[6],coneAxisX:s[7],coneAxisY:s[8],coneAxisZ:s[9],coneCutoff:s[10]}}}();let da=0;class Bi{constructor(e){if(this.downloadParallelism=e.downloadParallelism==null?8:e.downloadParallelism,this.timeout=e.timeout!=null?e.timeout:5e3,this.renderer=e.renderer,this.zUpToYUpMatrix=new L.Matrix4,this.zUpToYUpMatrix.set(1,0,0,0,0,0,-1,0,0,1,0,0,0,0,0,1),this.maxCachedItems=100,this.proxy=e.proxy,e&&(this.meshCallback=e.meshCallback,this.pointsCallback=e.pointsCallback,e.maxCachedItems!=null&&(this.maxCachedItems=e.maxCachedItems)),this.gltfLoader=new Kr,e&&e.dracoLoader)this.gltfLoader.setDRACOLoader(e.dracoLoader),this.hasDracoLoader=!0;else{const a=new $r;a.setDecoderPath("https://storage.googleapis.com/ogc-3d-tiles/draco/"),this.dracoLoader=a,this.gltfLoader.setDRACOLoader(a),this.gltfLoader.hasDracoLoader=!0}if(e&&e.ktx2Loader)this.gltfLoader.setKTX2Loader(e.ktx2Loader),this.hasKTX2Loader=!0;else if(e&&e.renderer){const a=new qe;a.setTranscoderPath("https://storage.googleapis.com/ogc-3d-tiles/basis/").detectSupport(e.renderer),this.ktx2loader=a,this.gltfLoader.setKTX2Loader(a),this.gltfLoader.hasKTX2Loader=!0}this.gltfLoader.setMeshoptDecoder(Ii),this.hasMeshOptDecoder=!0,this.b3dmDecoder=new Or(this.gltfLoader),this.splatsDecoder=new no(this.gltfLoader,this.renderer),this.cache=new _r,this.register={},this.ready=[],this.downloads=[],this.nextReady=[],this.nextDownloads=[]}update(){const e=this;da<e.downloadParallelism&&e._download(),e._loadBatch()}_scheduleDownload(e){this.downloads.unshift(e)}_download(){do{if(this.nextDownloads.length==0&&(this._getNextDownloads(),this.nextDownloads.length==0))return;for(;this.nextDownloads.length>0;){const e=this.nextDownloads.shift();e&&e.shouldDoDownload()&&e.doDownload()}}while(this.concurrentDownloads<this.downloadParallelism)}_meshReceived(e,a,t,i,n,o,s){this.ready.unshift([e,a,t,i,n,o,s])}_loadBatch(){for(this.nextReady.length==0&&this._getNextReady();this.nextReady.length>0;){const e=this.nextReady.shift();if(!e)return;const a=e[0],t=e[1],i=e[2],n=a.get(i);n&&t[i]&&Object.keys(t[i]).forEach(o=>{const s=t[i][o];s&&(s(n),t[i][o]=null)}),this.nextReady.length==0&&this._getNextReady()}}_getNextDownloads(){let e=Number.POSITIVE_INFINITY,a=-1;for(let s=this.downloads.length-1;s>=0;s--)this.downloads[s].shouldDoDownload()?this.downloads[s].distanceFunction||this.nextDownloads.push(this.downloads.splice(s,1)[0]):this.downloads.splice(s,1);if(this.nextDownloads.length>0)return;let t,i=0,n=Number.MAX_SAFE_INTEGER,o=-1;for(let s=this.downloads.length-1;s>=0;s--){const A=this.downloads[s].distanceFunction();A<=e&&(e=A,a=s),i=Math.max(this.downloads[s].level),this.downloads[s].loadingStrategy!="IMMEDIATE"&&this.downloads[s].level<n&&(n=this.downloads[s].level,o=s)}if(i>n+4?t=this.downloads.splice(o,1).pop():a>=0&&(t=this.downloads.splice(a,1).pop()),t){this.nextDownloads.push(t);const s=t.getSiblings();for(let A=this.downloads.length-1;A>=0;A--)s.map(u=>u.uuid).includes(this.downloads[A].uuid)&&this.nextDownloads.push(this.downloads.splice(A,1).pop())}}_getNextReady(){let e=Number.POSITIVE_INFINITY,a=-1;for(let t=this.ready.length-1;t>=0;t--)this.ready[t][3]||this.nextReady.push(this.ready.splice(t,1)[0]);if(!(this.nextReady.length>0)){for(let t=this.ready.length-1;t>=0;t--){const i=this.ready[t][3]()*this.ready[t][5];i<=e&&(e=i,a=t)}if(a>=0){const t=this.ready.splice(a,1).pop();this.nextReady.push(t);const i=t[4]();for(let n=this.ready.length-1;n>=0;n--)i.map(o=>o.uuid).includes(this.ready[n][6])&&this.nextReady.push(this.ready.splice(n,1).pop())}}}get(e,a,t,i,n,o,s,A,u,c,d,l){const h=this,b=yi(t),g=new AbortController;if(e.signal.addEventListener("abort",()=>{h.register[b]&&Object.keys(h.register[b]).length!=0||g.abort("user abort")}),!(t.includes(".b3dm")||t.includes(".json")||t.includes(".gltf")||t.includes(".glb")))return void console.error("the 3DTiles cache can only be used to load B3DM, gltf and json data");if(h.register[b]||(h.register[b]={}),h.register[b][a]&&console.error(" a tile should only be loaded once"),h.register[b][a]=i,h.cache.get(b))this._meshReceived(h.cache,h.register,b,n,o,s,a);else{let p;t.includes(".b3dm")?p=()=>{var E;E=h.proxy?()=>fetch(h.proxy,{method:"POST",body:t,signal:g.signal}):()=>fetch(t,{signal:g.signal}),da++,E().then(m=>{if(!m.ok)throw console.error("could not load tile with path : "+t),new Error(`couldn't load "${t}". Request failed with status ${m.status} : ${m.statusText}`);return m.arrayBuffer()}).then(m=>this.b3dmDecoder.parseB3DM(m,C=>{h.meshCallback(C,d)},u,c)).then(m=>{h.cache.put(b,m),this._meshReceived(h.cache,h.register,b,n,o,s,a),h._checkSize()}).catch(m=>{}).finally(()=>{da--})}:t.includes(".glb")||t.includes(".gltf")?p=l?()=>{var E;E=h.proxy?()=>fetch(h.proxy,{method:"POST",body:t,signal:g.signal}):()=>fetch(t,{signal:g.signal}),da++,E().then(m=>{if(!m.ok)throw console.error("could not load tile with path : "+t),new Error(`couldn't load "${t}". Request failed with status ${m.status} : ${m.statusText}`);return m.arrayBuffer()}).then(m=>this.splatsDecoder.parseSplats(m,u,c,l)).then(m=>{h.cache.put(b,m),h._meshReceived(h.cache,h.register,b,n,o,s,a),h._checkSize()}).catch(m=>{}).finally(()=>{da--})}:()=>{var E;E=h.proxy?()=>fetch(h.proxy,{method:"POST",body:t,signal:g.signal}):()=>fetch(t,{signal:g.signal}),da++,E().then(m=>{if(!m.ok)throw console.error("could not load tile with path : "+t),new Error(`couldn't load "${t}". Request failed with status ${m.status} : ${m.statusText}`);return m.arrayBuffer()}).then(async m=>{await async function(C){return new Promise(I=>{const w=setInterval(()=>{C.hasDracoLoader&&!C.dracoLoader||C.hasKTX2Loader&&!C.ktx2Loader||(clearInterval(w),I())},10)})}(this.gltfLoader),this.gltfLoader.parse(m,null,C=>{C.scene.asset=C.asset,u&&C.scene.applyMatrix4(this.zUpToYUpMatrix),C.scene.traverse(I=>{I.isMesh&&(c&&I.applyMatrix4(this.zUpToYUpMatrix),h.meshCallback&&h.meshCallback(I,d)),I.isPoints&&h.pointsCallback&&h.pointsCallback(I,d)}),h.cache.put(b,C.scene),h._meshReceived(h.cache,h.register,b,n,o,s,a),h._checkSize()})}).catch(m=>{m!=="user abort"&&m.code}).finally(()=>{da--})}:t.includes(".json")&&(p=()=>{var E;E=h.proxy?()=>fetch(h.proxy,{method:"POST",body:t,signal:g.signal}):()=>fetch(t,{signal:g.signal}),da++,E().then(m=>{if(!m.ok)throw console.error("could not load tile with path : "+t),new Error(`couldn't load "${t}". Request failed with status ${m.status} : ${m.statusText}`);return m.json()}).then(m=>ar(m,t)).then(m=>{h.cache.put(b,m),h._meshReceived(h.cache,h.register,b),h._checkSize()}).catch(m=>{console.error(m)}).finally(()=>{da--})}),this._scheduleDownload({shouldDoDownload:()=>!e.signal.aborted&&!!h.register[b]&&Object.keys(h.register[b]).length>0&&!h.cache.get(b),doDownload:p,distanceFunction:n,getSiblings:o,level:s,loadingStrategy:A,uuid:a})}}clear(){const e=this.maxCachedItems;this.maxCachedItems=0,this._checkSize(),this.maxCachedItems=e}invalidate(e,a){const t=yi(e),i=this;i.register[t]&&setTimeout(()=>{i.register&&i.register[t]&&(delete i.register[t][a],i._checkSize())},i.timeout)}dispose(){let e=this.cache.head();for(this._disposeEntryContent(e);(e=e.next()).key!=null;)this._disposeEntryContent(e);this.cache.reset(),this.cache=void 0,this.register=void 0,this.dracoLoader&&this.dracoLoader.dispose(),this.ktx2loader&&this.ktx2loader.dispose()}_checkSize(){const e=this;let a=0;for(;e.cache.size()>e.maxCachedItems&&a<e.cache.size();){a++;const t=e.cache.head(),i=e.register[t.key];i&&(Object.keys(i).length>0?(e.cache.remove(t.key),e.cache.put(t.key,t.value)):(e.cache.remove(t.key),delete e.register[t.key],e._disposeEntryContent(t)))}}_disposeEntryContent(e){e.value&&(e.value.isSplatsBatch?e.value.remove():e.value.traverse&&e.value.traverse(a=>{if(a.material)if(a.material.length)for(let t=0;t<a.material.length;++t)a.material[t].dispose();else a.material.dispose();a.geometry&&a.geometry.dispose()}))}}function yi(r){for(var e=r.split("/"),a=[],t=0,i=0;i<e.length;i++){var n=e[i];n!=="."&&n!==""&&n!==".."?a[t++]=n:n===".."&&t>0&&t--}if(t===0)return"/";var o="";for(i=0;i<t;i++)o+="/"+a[i];return o}var Di,wi,pa=function(){if(wi)return Di;function r(t){if(typeof t!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(t))}function e(t,i){for(var n,o="",s=0,A=-1,u=0,c=0;c<=t.length;++c){if(c<t.length)n=t.charCodeAt(c);else{if(n===47)break;n=47}if(n===47){if(!(A===c-1||u===1))if(A!==c-1&&u===2){if(o.length<2||s!==2||o.charCodeAt(o.length-1)!==46||o.charCodeAt(o.length-2)!==46){if(o.length>2){var d=o.lastIndexOf("/");if(d!==o.length-1){d===-1?(o="",s=0):s=(o=o.slice(0,d)).length-1-o.lastIndexOf("/"),A=c,u=0;continue}}else if(o.length===2||o.length===1){o="",s=0,A=c,u=0;continue}}i&&(o.length>0?o+="/..":o="..",s=2)}else o.length>0?o+="/"+t.slice(A+1,c):o=t.slice(A+1,c),s=c-A-1;A=c,u=0}else n===46&&u!==-1?++u:u=-1}return o}wi=1;var a={resolve:function(){for(var t,i="",n=!1,o=arguments.length-1;o>=-1&&!n;o--){var s;o>=0?s=arguments[o]:(t===void 0&&(t=process.cwd()),s=t),r(s),s.length!==0&&(i=s+"/"+i,n=s.charCodeAt(0)===47)}return i=e(i,!n),n?i.length>0?"/"+i:"/":i.length>0?i:"."},normalize:function(t){if(r(t),t.length===0)return".";var i=t.charCodeAt(0)===47,n=t.charCodeAt(t.length-1)===47;return(t=e(t,!i)).length!==0||i||(t="."),t.length>0&&n&&(t+="/"),i?"/"+t:t},isAbsolute:function(t){return r(t),t.length>0&&t.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var t,i=0;i<arguments.length;++i){var n=arguments[i];r(n),n.length>0&&(t===void 0?t=n:t+="/"+n)}return t===void 0?".":a.normalize(t)},relative:function(t,i){if(r(t),r(i),t===i||(t=a.resolve(t))===(i=a.resolve(i)))return"";for(var n=1;n<t.length&&t.charCodeAt(n)===47;++n);for(var o=t.length,s=o-n,A=1;A<i.length&&i.charCodeAt(A)===47;++A);for(var u=i.length-A,c=s<u?s:u,d=-1,l=0;l<=c;++l){if(l===c){if(u>c){if(i.charCodeAt(A+l)===47)return i.slice(A+l+1);if(l===0)return i.slice(A+l)}else s>c&&(t.charCodeAt(n+l)===47?d=l:l===0&&(d=0));break}var h=t.charCodeAt(n+l);if(h!==i.charCodeAt(A+l))break;h===47&&(d=l)}var b="";for(l=n+d+1;l<=o;++l)l!==o&&t.charCodeAt(l)!==47||(b.length===0?b+="..":b+="/..");return b.length>0?b+i.slice(A+d):(A+=d,i.charCodeAt(A)===47&&++A,i.slice(A))},_makeLong:function(t){return t},dirname:function(t){if(r(t),t.length===0)return".";for(var i=t.charCodeAt(0),n=i===47,o=-1,s=!0,A=t.length-1;A>=1;--A)if((i=t.charCodeAt(A))===47){if(!s){o=A;break}}else s=!1;return o===-1?n?"/":".":n&&o===1?"//":t.slice(0,o)},basename:function(t,i){if(i!==void 0&&typeof i!="string")throw new TypeError('"ext" argument must be a string');r(t);var n,o=0,s=-1,A=!0;if(i!==void 0&&i.length>0&&i.length<=t.length){if(i.length===t.length&&i===t)return"";var u=i.length-1,c=-1;for(n=t.length-1;n>=0;--n){var d=t.charCodeAt(n);if(d===47){if(!A){o=n+1;break}}else c===-1&&(A=!1,c=n+1),u>=0&&(d===i.charCodeAt(u)?--u==-1&&(s=n):(u=-1,s=c))}return o===s?s=c:s===-1&&(s=t.length),t.slice(o,s)}for(n=t.length-1;n>=0;--n)if(t.charCodeAt(n)===47){if(!A){o=n+1;break}}else s===-1&&(A=!1,s=n+1);return s===-1?"":t.slice(o,s)},extname:function(t){r(t);for(var i=-1,n=0,o=-1,s=!0,A=0,u=t.length-1;u>=0;--u){var c=t.charCodeAt(u);if(c!==47)o===-1&&(s=!1,o=u+1),c===46?i===-1?i=u:A!==1&&(A=1):i!==-1&&(A=-1);else if(!s){n=u+1;break}}return i===-1||o===-1||A===0||A===1&&i===o-1&&i===n+1?"":t.slice(i,o)},format:function(t){if(t===null||typeof t!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof t);return function(i,n){var o=n.dir||n.root,s=n.base||(n.name||"")+(n.ext||"");return o?o===n.root?o+s:o+i+s:s}("/",t)},parse:function(t){r(t);var i={root:"",dir:"",base:"",ext:"",name:""};if(t.length===0)return i;var n,o=t.charCodeAt(0),s=o===47;s?(i.root="/",n=1):n=0;for(var A=-1,u=0,c=-1,d=!0,l=t.length-1,h=0;l>=n;--l)if((o=t.charCodeAt(l))!==47)c===-1&&(d=!1,c=l+1),o===46?A===-1?A=l:h!==1&&(h=1):A!==-1&&(h=-1);else if(!d){u=l+1;break}return A===-1||c===-1||h===0||h===1&&A===c-1&&A===u+1?c!==-1&&(i.base=i.name=u===0&&s?t.slice(1,c):t.slice(u,c)):(u===0&&s?(i.name=t.slice(1,A),i.base=t.slice(1,c)):(i.name=t.slice(u,A),i.base=t.slice(u,c)),i.ext=t.slice(A,c)),u>0?i.dir=t.slice(0,u-1):s&&(i.dir="/"),i},sep:"/",delimiter:":",win32:null,posix:null};return a.posix=a,Di=a}();function ot(){return ot=Object.assign?Object.assign.bind():function(r){for(var e=1;e<arguments.length;e++){var a=arguments[e];for(var t in a)({}).hasOwnProperty.call(a,t)&&(r[t]=a[t])}return r},ot.apply(null,arguments)}var xi={relTol:1e-12,absTol:1e-15,matrix:"Matrix",number:"number",numberFallback:"number",precision:64,predictable:!1,randomSeed:null};function Vo(r,e){if(st(r,e))return r[e];throw typeof r[e]=="function"&&function(a,t){return a==null||typeof a[t]!="function"||ct(a,t)&&Object.getPrototypeOf&&t in Object.getPrototypeOf(a)?!1:ct(Yo,t)?!0:!(t in Object.prototype||t in Function.prototype)}(r,e)?new Error('Cannot access method "'+e+'" as a property'):new Error('No access to property "'+e+'"')}function st(r,e){return!(!function(a){return typeof a=="object"&&a&&a.constructor===Object}(r)&&!Array.isArray(r))&&(!!ct(Wo,e)||!(e in Object.prototype)&&!(e in Function.prototype))}var Wo={length:!0,name:!0},Yo={toString:!0,valueOf:!0,toLocaleString:!0};class Xo{constructor(e){this.wrappedObject=e,this[Symbol.iterator]=this.entries}keys(){return Object.keys(this.wrappedObject).filter(e=>this.has(e)).values()}get(e){return Vo(this.wrappedObject,e)}set(e,a){return function(t,i,n){if(st(t,i))return t[i]=n,n;throw new Error('No access to property "'+i+'"')}(this.wrappedObject,e,a),this}has(e){return st(this.wrappedObject,e)&&e in this.wrappedObject}entries(){return function(e,a){return{next:()=>{var t=e.next();return t.done?t:{value:a(t.value),done:!1}}}}(this.keys(),e=>[e,this.get(e)])}forEach(e){for(var a of this.keys())e(this.get(a),a,this)}delete(e){st(this.wrappedObject,e)&&delete this.wrappedObject[e]}clear(){for(var e of this.keys())this.delete(e)}get size(){return Object.keys(this.wrappedObject).length}}function be(r){return typeof r=="number"}function Fe(r){return!(!r||typeof r!="object"||typeof r.constructor!="function")&&(r.isBigNumber===!0&&typeof r.constructor.prototype=="object"&&r.constructor.prototype.isBigNumber===!0||typeof r.constructor.isDecimal=="function"&&r.constructor.isDecimal(r)===!0)}function Zo(r){return typeof r=="bigint"}function vi(r){return r&&typeof r=="object"&&Object.getPrototypeOf(r).isComplex===!0||!1}function Fi(r){return r&&typeof r=="object"&&Object.getPrototypeOf(r).isFraction===!0||!1}function Qi(r){return r&&r.constructor.prototype.isUnit===!0||!1}function ia(r){return typeof r=="string"}var ke=Array.isArray;function ye(r){return r&&r.constructor.prototype.isMatrix===!0||!1}function At(r){return Array.isArray(r)||ye(r)}function $o(r){return r&&r.isDenseMatrix&&r.constructor.prototype.isMatrix===!0||!1}function es(r){return r&&r.isSparseMatrix&&r.constructor.prototype.isMatrix===!0||!1}function as(r){return r&&r.constructor.prototype.isRange===!0||!1}function tr(r){return r&&r.constructor.prototype.isIndex===!0||!1}function ts(r){return typeof r=="boolean"}function rs(r){return r&&r.constructor.prototype.isResultSet===!0||!1}function is(r){return r&&r.constructor.prototype.isHelp===!0||!1}function ns(r){return typeof r=="function"}function os(r){return r instanceof Date}function ss(r){return r instanceof RegExp}function rr(r){return!(!r||typeof r!="object"||r.constructor!==Object||vi(r)||Fi(r))}function As(r){return!!r&&(r instanceof Map||r instanceof Xo||typeof r.set=="function"&&typeof r.get=="function"&&typeof r.keys=="function"&&typeof r.has=="function")}function cs(r){return r===null}function us(r){return r===void 0}function ds(r){return r&&r.isAccessorNode===!0&&r.constructor.prototype.isNode===!0||!1}function hs(r){return r&&r.isArrayNode===!0&&r.constructor.prototype.isNode===!0||!1}function ls(r){return r&&r.isAssignmentNode===!0&&r.constructor.prototype.isNode===!0||!1}function bs(r){return r&&r.isBlockNode===!0&&r.constructor.prototype.isNode===!0||!1}function gs(r){return r&&r.isConditionalNode===!0&&r.constructor.prototype.isNode===!0||!1}function fs(r){return r&&r.isConstantNode===!0&&r.constructor.prototype.isNode===!0||!1}function ps(r){return r&&r.isFunctionAssignmentNode===!0&&r.constructor.prototype.isNode===!0||!1}function ms(r){return r&&r.isFunctionNode===!0&&r.constructor.prototype.isNode===!0||!1}function Es(r){return r&&r.isIndexNode===!0&&r.constructor.prototype.isNode===!0||!1}function Cs(r){return r&&r.isNode===!0&&r.constructor.prototype.isNode===!0||!1}function Is(r){return r&&r.isObjectNode===!0&&r.constructor.prototype.isNode===!0||!1}function Bs(r){return r&&r.isOperatorNode===!0&&r.constructor.prototype.isNode===!0||!1}function ys(r){return r&&r.isParenthesisNode===!0&&r.constructor.prototype.isNode===!0||!1}function Ds(r){return r&&r.isRangeNode===!0&&r.constructor.prototype.isNode===!0||!1}function ws(r){return r&&r.isRelationalNode===!0&&r.constructor.prototype.isNode===!0||!1}function xs(r){return r&&r.isSymbolNode===!0&&r.constructor.prototype.isNode===!0||!1}function vs(r){return r&&r.constructor.prototype.isChain===!0||!1}function ma(r){var e=typeof r;return e==="object"?r===null?"null":Fe(r)?"BigNumber":r.constructor&&r.constructor.name?r.constructor.name:"Object":e}function De(r){var e=typeof r;if(e==="number"||e==="bigint"||e==="string"||e==="boolean"||r==null)return r;if(typeof r.clone=="function")return r.clone();if(Array.isArray(r))return r.map(function(a){return De(a)});if(r instanceof Date)return new Date(r.valueOf());if(Fe(r))return r;if(rr(r))return function(a,t){var i={};for(var n in a)ct(a,n)&&(i[n]=t(a[n]));return i}(r,De);if(e==="function")return r;throw new TypeError("Cannot clone: unknown type of value (value: ".concat(r,")"))}function Na(r,e){var a,t,i;if(Array.isArray(r)){if(!Array.isArray(e)||r.length!==e.length)return!1;for(t=0,i=r.length;t<i;t++)if(!Na(r[t],e[t]))return!1;return!0}if(typeof r=="function")return r===e;if(r instanceof Object){if(Array.isArray(e)||!(e instanceof Object))return!1;for(a in r)if(!(a in e)||!Na(r[a],e[a]))return!1;for(a in e)if(!(a in r))return!1;return!0}return r===e}function ct(r,e){return r&&Object.hasOwnProperty.call(r,e)}var va=function(r){if(r)throw new Error(`The global config is readonly.
|
|
6
|
+
*/class Lr{constructor(){this._data=new Map,this._link=new Map,this._head=void 0,this._tail=void 0}put(e,a,t=!1){this.has(e)?this._data.set(e,a):(this._data.set(e,a),this._link.set(e,{previous:void 0,next:void 0}),this._head==null?(this._head=e,this._tail=e):t?(this._link.get(this._head).previous=e,this._link.get(e).next=this._head,this._head=e):(this._link.get(this._tail).next=e,this._link.get(e).previous=this._tail,this._tail=e))}head(){return{key:this._head,value:this.get(this._head),next:()=>this.next(this._head),previous:()=>null}}tail(){return{key:this._tail,value:this.get(this._tail),next:()=>null,previous:()=>this.previous(this._tail)}}get(e){return this._data.get(e)}previousKey(e){const a=this._link.get(e);return a?.previous}previousValue(e){return this.get(this.previousKey(e))}previous(e){const a=this.previousKey(e);return{key:a,value:this.get(a),next:()=>this.next(a),previous:()=>this.previous(a)}}nextKey(e){const a=this._link.get(e);return a?.next}nextValue(e){return this.get(this.nextKey(e))}next(e){const a=this.nextKey(e);return{key:a,value:this.get(a),next:()=>this.next(a),previous:()=>this.previous(a)}}remove(e){const a=this._data.get(e);if(a!=null)if(this.size()===1)this.reset();else{if(e===this._head){const t=this._link.get(this._head);this._link.get(t.next).previous=null,this._head=t.next}else if(e===this._tail){const t=this._link.get(this._tail);this._link.get(t.previous).next=null,this._tail=t.previous}else{const t=this._link.get(e),i=this._link.get(t.previous),n=this._link.get(t.next);i.next=t.next,n.previous=t.previous}this._link.delete(e),this._data.delete(e)}return a}has(e){return this._data.has(e)}size(){return this._data.size}reset(){this._data.clear(),this._link.clear(),this._head=void 0,this._tail=void 0}keys(){return this._data.keys()}values(){return this._data.values()}entries(){return this._data.entries()}toArray(e="orderByInsert"){if(e!=="orderByInsert"){const a=[];let t=this._head;for(;t!=null;)a.push({key:t,value:this.get(t)}),t=this.nextKey(t);return a}return Array.from(this.keys()).map(a=>({key:a,value:this.get(a)}))}}const ro=new TextDecoder;class Gr{constructor(e,a,t,i){this.buffer=e,this.binOffset=a+t,this.binLength=i;let n=null;if(t!==0)try{const o=new Uint8Array(e,a,t);n=JSON.parse(ro.decode(o))}catch{n={}}else n={};this.header=n}getKeys(){return Object.keys(this.header)}getData(e,a,t=null,i=null){const n=this.header;if(!(e in n))return null;const o=n[e];if(o instanceof Object){if(Array.isArray(o))return o;{const{buffer:s,binOffset:c,binLength:u}=this,A=o.byteOffset||0,d=o.type||i,b=o.componentType||t;if("type"in o&&i&&o.type!==i)throw new Error("FeatureTable: Specified type does not match expected type.");let h,l;switch(d){case"SCALAR":h=1;break;case"VEC2":h=2;break;case"VEC3":h=3;break;case"VEC4":h=4;break;default:throw new Error(`FeatureTable : Feature type not provided for "${e}".`)}const g=c+A,m=a*h;switch(b){case"BYTE":l=new Int8Array(s,g,m);break;case"UNSIGNED_BYTE":l=new Uint8Array(s,g,m);break;case"SHORT":l=new Int16Array(s,g,m);break;case"UNSIGNED_SHORT":l=new Uint16Array(s,g,m);break;case"INT":l=new Int32Array(s,g,m);break;case"UNSIGNED_INT":l=new Uint32Array(s,g,m);break;case"FLOAT":l=new Float32Array(s,g,m);break;case"DOUBLE":l=new Float64Array(s,g,m);break;default:throw new Error(`FeatureTable : Feature component type not provided for "${e}".`)}if(g+m*l.BYTES_PER_ELEMENT>c+u)throw new Error("FeatureTable: Feature data read outside binary body length.");return l}}return o}}class io extends Gr{constructor(e,a,t,i,n){super(e,t,i,n),this.batchSize=a}getData(e,a=null,t=null){return super.getData(e,this.batchSize,a,t)}}function _r(r){let e,a,t,i=-1,n=0;for(let u=0;u<r.length;++u){const A=r[u];if(e===void 0&&(e=A.array.constructor),e!==A.array.constructor)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes."),null;if(a===void 0&&(a=A.itemSize),a!==A.itemSize)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes."),null;if(t===void 0&&(t=A.normalized),t!==A.normalized)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes."),null;if(i===-1&&(i=A.gpuType),i!==A.gpuType)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.gpuType must be consistent across matching attributes."),null;n+=A.count*a}const o=new e(n),s=new f.BufferAttribute(o,a,t);let c=0;for(let u=0;u<r.length;++u){const A=r[u];if(A.isInterleavedBufferAttribute){const d=c/a;for(let b=0,h=A.count;b<h;b++)for(let l=0;l<a;l++){const g=A.getComponent(b,l);s.setComponent(b+d,l,g)}}else o.set(A.array,c);c+=A.count*a}return i!==void 0&&(s.gpuType=i),s}function zr(r,e){if(e===f.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),r;if(e===f.TriangleFanDrawMode||e===f.TriangleStripDrawMode){let a=r.getIndex();if(a===null){const o=[],s=r.getAttribute("position");if(s===void 0)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),r;for(let c=0;c<s.count;c++)o.push(c);r.setIndex(o),a=r.getIndex()}const t=a.count-2,i=[];if(e===f.TriangleFanDrawMode)for(let o=1;o<=t;o++)i.push(a.getX(0)),i.push(a.getX(o)),i.push(a.getX(o+1));else for(let o=0;o<t;o++)o%2==0?(i.push(a.getX(o)),i.push(a.getX(o+1)),i.push(a.getX(o+2))):(i.push(a.getX(o+2)),i.push(a.getX(o+1)),i.push(a.getX(o)));i.length/3!==t&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const n=r.clone();return n.setIndex(i),n.clearGroups(),n}return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",e),r}class Pr{constructor(e){this.gltfLoader=e,this.tempMatrix=new G.Matrix4,this.zUpToYUpMatrix=new G.Matrix4,this.zUpToYUpMatrix.set(1,0,0,0,0,0,-1,0,0,1,0,0,0,0,0,1)}parseB3DM(e,a,t,i){const n=this,o=new DataView(e),s=String.fromCharCode(o.getUint8(0))+String.fromCharCode(o.getUint8(1))+String.fromCharCode(o.getUint8(2))+String.fromCharCode(o.getUint8(3));console.assert(s==="b3dm");const c=o.getUint32(8,!0);console.assert(c===e.byteLength);const u=o.getUint32(12,!0),A=o.getUint32(16,!0),d=o.getUint32(20,!0),b=o.getUint32(24,!0),h=new Gr(e,28,u,A),l=28+u+A;new io(e,h.getData("BATCH_LENGTH"),l,d,b);const g=l+d+b,m=new Uint8Array(e,g,c-g).slice().buffer;return new Promise(async(E,p)=>{await this.checkLoaderInitialized(),this.gltfLoader.parse(m,null,C=>{const I=h.getData("RTC_CENTER");I?(this.tempMatrix.makeTranslation(I[0],I[1],I[2]),C.scene.applyMatrix4(this.tempMatrix)):C.userData.gltfExtensions&&C.userData.gltfExtensions.CESIUM_RTC&&(this.tempMatrix.makeTranslation(C.userData.gltfExtensions.CESIUM_RTC.center[0],C.userData.gltfExtensions.CESIUM_RTC.center[1],C.userData.gltfExtensions.CESIUM_RTC.center[2]),C.scene.applyMatrix4(this.tempMatrix)),t&&C.scene.applyMatrix4(n.zUpToYUpMatrix),C.scene.asset=C.asset,C.scene.traverse(x=>{x.isMesh&&(i&&x.applyMatrix4(n.zUpToYUpMatrix),a&&a(x))}),E(C.scene)},C=>{console.error(C)})})}checkLoaderInitialized=async()=>new Promise(e=>{const a=setInterval(()=>{this.gltfLoader.hasDracoLoader&&!this.gltfLoader.dracoLoader||this.gltfLoader.hasKTX2Loader&&!this.gltfLoader.ktx2Loader||(clearInterval(a),e())},10)});parseB3DMInstanced(e,a,t,i,n){return this.parseB3DM(e,a,i,n).then(o=>{let s,c=[],u=[];o.updateWorldMatrix(!1,!0),o.traverse(d=>{d.isMesh&&(d.geometry.applyMatrix4(d.matrixWorld),c.push(d.geometry),u.push(d.material))});let A=function(d){let b=new Set;return d.forEach(l=>{for(let g in l.attributes)b.add(g)}),d.forEach(l=>{b.forEach(g=>{if(!l.attributes[g]){const m=function(p){switch(p){case"position":case"normal":case"color":return 3;case"uv":case"uv2":return 2;default:throw new Error(`Unknown attribute ${p}`)}}(g),E=new Float32Array(m*l.getAttribute("position").count).fill(0);l.setAttribute(g,new G.BufferAttribute(E,m))}})}),function(l,g=!1){const m=l[0].index!==null,E=new Set(Object.keys(l[0].attributes)),p=new Set(Object.keys(l[0].morphAttributes)),C={},I={},x=l[0].morphTargetsRelative,y=new f.BufferGeometry;let w=0;for(let D=0;D<l.length;++D){const F=l[D];let j=0;if(m!==(F.index!==null))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."),null;for(const M in F.attributes){if(!E.has(M))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+'. All geometries must have compatible attributes; make sure "'+M+'" attribute exists among all geometries, or in none of them.'),null;C[M]===void 0&&(C[M]=[]),C[M].push(F.attributes[M]),j++}if(j!==E.size)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+". Make sure all geometries have the same number of attributes."),null;if(x!==F.morphTargetsRelative)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+". .morphTargetsRelative must be consistent throughout all geometries."),null;for(const M in F.morphAttributes){if(!p.has(M))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+". .morphAttributes must be consistent throughout all geometries."),null;I[M]===void 0&&(I[M]=[]),I[M].push(F.morphAttributes[M])}if(g){let M;if(m)M=F.index.count;else{if(F.attributes.position===void 0)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+". The geometry must have either an index or a position attribute"),null;M=F.attributes.position.count}y.addGroup(w,M,D),w+=M}}if(m){let D=0;const F=[];for(let j=0;j<l.length;++j){const M=l[j].index;for(let _=0;_<M.count;++_)F.push(M.getX(_)+D);D+=l[j].attributes.position.count}y.setIndex(F)}for(const D in C){const F=_r(C[D]);if(!F)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+D+" attribute."),null;y.setAttribute(D,F)}for(const D in I){const F=I[D][0].length;if(F===0)break;y.morphAttributes=y.morphAttributes||{},y.morphAttributes[D]=[];for(let j=0;j<F;++j){const M=[];for(let q=0;q<I[D].length;++q)M.push(I[D][q][j]);const _=_r(M);if(!_)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+D+" morphAttribute."),null;y.morphAttributes[D].push(_)}}return y}(d,!0)}(c);return s=new G.InstancedMesh(A,u,t),s.baseMatrix=new G.Matrix4().identity(),s})}}const Me=[];for(let r=0;r<256;++r)Me.push((r+256).toString(16).slice(1));let Nt;const no=new Uint8Array(16),qr={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Kr(r,e,a){if(qr.randomUUID&&!r)return qr.randomUUID();const t=(r=r||{}).random??r.rng?.()??function(){if(!Nt){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");Nt=crypto.getRandomValues.bind(crypto)}return Nt(no)}();if(t.length<16)throw new Error("Random bytes length must be >= 16");return t[6]=15&t[6]|64,t[8]=63&t[8]|128,function(i,n=0){return(Me[i[n+0]]+Me[i[n+1]]+Me[i[n+2]]+Me[i[n+3]]+"-"+Me[i[n+4]]+Me[i[n+5]]+"-"+Me[i[n+6]]+Me[i[n+7]]+"-"+Me[i[n+8]]+Me[i[n+9]]+"-"+Me[i[n+10]]+Me[i[n+11]]+Me[i[n+12]]+Me[i[n+13]]+Me[i[n+14]]+Me[i[n+15]]).toLowerCase()}(t)}class oo{constructor(e,a){this.renderer=a,this.gltfLoader=e}parseSplats(e,a,t,i){const n=this;return new Promise(async(o,s)=>{await n.checkLoaderInitialized(),n.gltfLoader.parse(e,null,c=>{c.scene;const u=c.scene.children[0],A=u.geometry.attributes.position,d=u.geometry.attributes.color,b=u.geometry.attributes.cov_0,h=u.geometry.attributes.cov_1,l=i.addSplatsTile(A,d,b,h);c.scene.traverse(g=>{g.dispose&&g.dispose()}),o(l)},c=>{console.error(c)})})}checkLoaderInitialized=async()=>{const e=this;return new Promise(a=>{const t=setInterval(()=>{e.gltfLoader.hasDracoLoader&&!e.gltfLoader.dracoLoader||e.gltfLoader.hasKTX2Loader&&!e.gltfLoader.ktx2Loader||(clearInterval(t),a())},10)})}}class Or extends f.Loader{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(a){return new ho(a)}),this.register(function(a){return new lo(a)}),this.register(function(a){return new Bo(a)}),this.register(function(a){return new Do(a)}),this.register(function(a){return new yo(a)}),this.register(function(a){return new go(a)}),this.register(function(a){return new fo(a)}),this.register(function(a){return new po(a)}),this.register(function(a){return new mo(a)}),this.register(function(a){return new uo(a)}),this.register(function(a){return new Eo(a)}),this.register(function(a){return new bo(a)}),this.register(function(a){return new Io(a)}),this.register(function(a){return new Co(a)}),this.register(function(a){return new Ao(a)}),this.register(function(a){return new wo(a)}),this.register(function(a){return new xo(a)})}load(e,a,t,i){const n=this;let o;if(this.resourcePath!=="")o=this.resourcePath;else if(this.path!==""){const u=f.LoaderUtils.extractUrlBase(e);o=f.LoaderUtils.resolveURL(u,this.path)}else o=f.LoaderUtils.extractUrlBase(e);this.manager.itemStart(e);const s=function(u){i?i(u):console.error(u),n.manager.itemError(e),n.manager.itemEnd(e)},c=new f.FileLoader(this.manager);c.setPath(this.path),c.setResponseType("arraybuffer"),c.setRequestHeader(this.requestHeader),c.setWithCredentials(this.withCredentials),c.load(e,function(u){try{n.parse(u,o,function(A){a(A),n.manager.itemEnd(e)},s)}catch(A){s(A)}},t,s)}setDRACOLoader(e){return this.dracoLoader=e,this}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,a,t,i){let n;const o={},s={},c=new TextDecoder;if(typeof e=="string")n=JSON.parse(e);else if(e instanceof ArrayBuffer)if(c.decode(new Uint8Array(e,0,4))===Jr){try{o[ae.KHR_BINARY_GLTF]=new Qo(e)}catch(A){return void(i&&i(A))}n=JSON.parse(o[ae.KHR_BINARY_GLTF].content)}else n=JSON.parse(c.decode(e));else n=e;if(n.asset===void 0||n.asset.version[0]<2)return void(i&&i(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.")));const u=new Po(n,{path:a||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});u.fileLoader.setRequestHeader(this.requestHeader);for(let A=0;A<this.pluginCallbacks.length;A++){const d=this.pluginCallbacks[A](u);d.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),s[d.name]=d,o[d.name]=!0}if(n.extensionsUsed)for(let A=0;A<n.extensionsUsed.length;++A){const d=n.extensionsUsed[A],b=n.extensionsRequired||[];switch(d){case ae.KHR_MATERIALS_UNLIT:o[d]=new co;break;case ae.KHR_DRACO_MESH_COMPRESSION:o[d]=new ko(n,this.dracoLoader);break;case ae.KHR_TEXTURE_TRANSFORM:o[d]=new jo;break;case ae.KHR_MESH_QUANTIZATION:o[d]=new Mo;break;default:b.indexOf(d)>=0&&s[d]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+d+'".')}}u.setExtensions(o),u.setPlugins(s),u.parse(t,i)}parseAsync(e,a){const t=this;return new Promise(function(i,n){t.parse(e,a,i,n)})}}function so(){let r={};return{get:function(e){return r[e]},add:function(e,a){r[e]=a},remove:function(e){delete r[e]},removeAll:function(){r={}}}}const ae={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class Ao{constructor(e){this.parser=e,this.name=ae.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,a=this.parser.json.nodes||[];for(let t=0,i=a.length;t<i;t++){const n=a[t];n.extensions&&n.extensions[this.name]&&n.extensions[this.name].light!==void 0&&e._addNodeRef(this.cache,n.extensions[this.name].light)}}_loadLight(e){const a=this.parser,t="light:"+e;let i=a.cache.get(t);if(i)return i;const n=a.json,o=((n.extensions&&n.extensions[this.name]||{}).lights||[])[e];let s;const c=new f.Color(16777215);o.color!==void 0&&c.setRGB(o.color[0],o.color[1],o.color[2],f.LinearSRGBColorSpace);const u=o.range!==void 0?o.range:0;switch(o.type){case"directional":s=new f.DirectionalLight(c),s.target.position.set(0,0,-1),s.add(s.target);break;case"point":s=new f.PointLight(c),s.distance=u;break;case"spot":s=new f.SpotLight(c),s.distance=u,o.spot=o.spot||{},o.spot.innerConeAngle=o.spot.innerConeAngle!==void 0?o.spot.innerConeAngle:0,o.spot.outerConeAngle=o.spot.outerConeAngle!==void 0?o.spot.outerConeAngle:Math.PI/4,s.angle=o.spot.outerConeAngle,s.penumbra=1-o.spot.innerConeAngle/o.spot.outerConeAngle,s.target.position.set(0,0,-1),s.add(s.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+o.type)}return s.position.set(0,0,0),ca(s,o),o.intensity!==void 0&&(s.intensity=o.intensity),s.name=a.createUniqueName(o.name||"light_"+e),i=Promise.resolve(s),a.cache.add(t,i),i}getDependency(e,a){if(e==="light")return this._loadLight(a)}createNodeAttachment(e){const a=this,t=this.parser,i=t.json.nodes[e],n=(i.extensions&&i.extensions[this.name]||{}).light;return n===void 0?null:this._loadLight(n).then(function(o){return t._getNodeRef(a.cache,n,o)})}}class co{constructor(){this.name=ae.KHR_MATERIALS_UNLIT}getMaterialType(){return f.MeshBasicMaterial}extendParams(e,a,t){const i=[];e.color=new f.Color(1,1,1),e.opacity=1;const n=a.pbrMetallicRoughness;if(n){if(Array.isArray(n.baseColorFactor)){const o=n.baseColorFactor;e.color.setRGB(o[0],o[1],o[2],f.LinearSRGBColorSpace),e.opacity=o[3]}n.baseColorTexture!==void 0&&i.push(t.assignTexture(e,"map",n.baseColorTexture,f.SRGBColorSpace))}return Promise.all(i)}}class uo{constructor(e){this.parser=e,this.name=ae.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,a){const t=this.parser.json.materials[e];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=t.extensions[this.name].emissiveStrength;return i!==void 0&&(a.emissiveIntensity=i),Promise.resolve()}}class ho{constructor(e){this.parser=e,this.name=ae.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?f.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,i=t.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const n=[],o=i.extensions[this.name];if(o.clearcoatFactor!==void 0&&(a.clearcoat=o.clearcoatFactor),o.clearcoatTexture!==void 0&&n.push(t.assignTexture(a,"clearcoatMap",o.clearcoatTexture)),o.clearcoatRoughnessFactor!==void 0&&(a.clearcoatRoughness=o.clearcoatRoughnessFactor),o.clearcoatRoughnessTexture!==void 0&&n.push(t.assignTexture(a,"clearcoatRoughnessMap",o.clearcoatRoughnessTexture)),o.clearcoatNormalTexture!==void 0&&(n.push(t.assignTexture(a,"clearcoatNormalMap",o.clearcoatNormalTexture)),o.clearcoatNormalTexture.scale!==void 0)){const s=o.clearcoatNormalTexture.scale;a.clearcoatNormalScale=new f.Vector2(s,s)}return Promise.all(n)}}class lo{constructor(e){this.parser=e,this.name=ae.KHR_MATERIALS_DISPERSION}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?f.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser.json.materials[e];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=t.extensions[this.name];return a.dispersion=i.dispersion!==void 0?i.dispersion:0,Promise.resolve()}}class bo{constructor(e){this.parser=e,this.name=ae.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?f.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,i=t.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const n=[],o=i.extensions[this.name];return o.iridescenceFactor!==void 0&&(a.iridescence=o.iridescenceFactor),o.iridescenceTexture!==void 0&&n.push(t.assignTexture(a,"iridescenceMap",o.iridescenceTexture)),o.iridescenceIor!==void 0&&(a.iridescenceIOR=o.iridescenceIor),a.iridescenceThicknessRange===void 0&&(a.iridescenceThicknessRange=[100,400]),o.iridescenceThicknessMinimum!==void 0&&(a.iridescenceThicknessRange[0]=o.iridescenceThicknessMinimum),o.iridescenceThicknessMaximum!==void 0&&(a.iridescenceThicknessRange[1]=o.iridescenceThicknessMaximum),o.iridescenceThicknessTexture!==void 0&&n.push(t.assignTexture(a,"iridescenceThicknessMap",o.iridescenceThicknessTexture)),Promise.all(n)}}class go{constructor(e){this.parser=e,this.name=ae.KHR_MATERIALS_SHEEN}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?f.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,i=t.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const n=[];a.sheenColor=new f.Color(0,0,0),a.sheenRoughness=0,a.sheen=1;const o=i.extensions[this.name];if(o.sheenColorFactor!==void 0){const s=o.sheenColorFactor;a.sheenColor.setRGB(s[0],s[1],s[2],f.LinearSRGBColorSpace)}return o.sheenRoughnessFactor!==void 0&&(a.sheenRoughness=o.sheenRoughnessFactor),o.sheenColorTexture!==void 0&&n.push(t.assignTexture(a,"sheenColorMap",o.sheenColorTexture,f.SRGBColorSpace)),o.sheenRoughnessTexture!==void 0&&n.push(t.assignTexture(a,"sheenRoughnessMap",o.sheenRoughnessTexture)),Promise.all(n)}}class fo{constructor(e){this.parser=e,this.name=ae.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?f.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,i=t.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const n=[],o=i.extensions[this.name];return o.transmissionFactor!==void 0&&(a.transmission=o.transmissionFactor),o.transmissionTexture!==void 0&&n.push(t.assignTexture(a,"transmissionMap",o.transmissionTexture)),Promise.all(n)}}class po{constructor(e){this.parser=e,this.name=ae.KHR_MATERIALS_VOLUME}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?f.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,i=t.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const n=[],o=i.extensions[this.name];a.thickness=o.thicknessFactor!==void 0?o.thicknessFactor:0,o.thicknessTexture!==void 0&&n.push(t.assignTexture(a,"thicknessMap",o.thicknessTexture)),a.attenuationDistance=o.attenuationDistance||1/0;const s=o.attenuationColor||[1,1,1];return a.attenuationColor=new f.Color().setRGB(s[0],s[1],s[2],f.LinearSRGBColorSpace),Promise.all(n)}}class mo{constructor(e){this.parser=e,this.name=ae.KHR_MATERIALS_IOR}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?f.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser.json.materials[e];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=t.extensions[this.name];return a.ior=i.ior!==void 0?i.ior:1.5,Promise.resolve()}}class Eo{constructor(e){this.parser=e,this.name=ae.KHR_MATERIALS_SPECULAR}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?f.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,i=t.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const n=[],o=i.extensions[this.name];a.specularIntensity=o.specularFactor!==void 0?o.specularFactor:1,o.specularTexture!==void 0&&n.push(t.assignTexture(a,"specularIntensityMap",o.specularTexture));const s=o.specularColorFactor||[1,1,1];return a.specularColor=new f.Color().setRGB(s[0],s[1],s[2],f.LinearSRGBColorSpace),o.specularColorTexture!==void 0&&n.push(t.assignTexture(a,"specularColorMap",o.specularColorTexture,f.SRGBColorSpace)),Promise.all(n)}}class Co{constructor(e){this.parser=e,this.name=ae.EXT_MATERIALS_BUMP}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?f.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,i=t.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const n=[],o=i.extensions[this.name];return a.bumpScale=o.bumpFactor!==void 0?o.bumpFactor:1,o.bumpTexture!==void 0&&n.push(t.assignTexture(a,"bumpMap",o.bumpTexture)),Promise.all(n)}}class Io{constructor(e){this.parser=e,this.name=ae.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?f.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,i=t.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const n=[],o=i.extensions[this.name];return o.anisotropyStrength!==void 0&&(a.anisotropy=o.anisotropyStrength),o.anisotropyRotation!==void 0&&(a.anisotropyRotation=o.anisotropyRotation),o.anisotropyTexture!==void 0&&n.push(t.assignTexture(a,"anisotropyMap",o.anisotropyTexture)),Promise.all(n)}}class Bo{constructor(e){this.parser=e,this.name=ae.KHR_TEXTURE_BASISU}loadTexture(e){const a=this.parser,t=a.json,i=t.textures[e];if(!i.extensions||!i.extensions[this.name])return null;const n=i.extensions[this.name],o=a.options.ktx2Loader;if(!o){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return a.loadTextureImage(e,n.source,o)}}class Do{constructor(e){this.parser=e,this.name=ae.EXT_TEXTURE_WEBP}loadTexture(e){const a=this.name,t=this.parser,i=t.json,n=i.textures[e];if(!n.extensions||!n.extensions[a])return null;const o=n.extensions[a],s=i.images[o.source];let c=t.textureLoader;if(s.uri){const u=t.options.manager.getHandler(s.uri);u!==null&&(c=u)}return t.loadTextureImage(e,o.source,c)}}class yo{constructor(e){this.parser=e,this.name=ae.EXT_TEXTURE_AVIF}loadTexture(e){const a=this.name,t=this.parser,i=t.json,n=i.textures[e];if(!n.extensions||!n.extensions[a])return null;const o=n.extensions[a],s=i.images[o.source];let c=t.textureLoader;if(s.uri){const u=t.options.manager.getHandler(s.uri);u!==null&&(c=u)}return t.loadTextureImage(e,o.source,c)}}class wo{constructor(e){this.name=ae.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const a=this.parser.json,t=a.bufferViews[e];if(t.extensions&&t.extensions[this.name]){const i=t.extensions[this.name],n=this.parser.getDependency("buffer",i.buffer),o=this.parser.options.meshoptDecoder;if(!o||!o.supported){if(a.extensionsRequired&&a.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return n.then(function(s){const c=i.byteOffset||0,u=i.byteLength||0,A=i.count,d=i.byteStride,b=new Uint8Array(s,c,u);return o.decodeGltfBufferAsync?o.decodeGltfBufferAsync(A,d,b,i.mode,i.filter).then(function(h){return h.buffer}):o.ready.then(function(){const h=new ArrayBuffer(A*d);return o.decodeGltfBuffer(new Uint8Array(h),A,d,b,i.mode,i.filter),h})})}return null}}class xo{constructor(e){this.name=ae.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const a=this.parser.json,t=a.nodes[e];if(!t.extensions||!t.extensions[this.name]||t.mesh===void 0)return null;const i=a.meshes[t.mesh];for(const c of i.primitives)if(c.mode!==He.TRIANGLES&&c.mode!==He.TRIANGLE_STRIP&&c.mode!==He.TRIANGLE_FAN&&c.mode!==void 0)return null;const n=t.extensions[this.name].attributes,o=[],s={};for(const c in n)o.push(this.parser.getDependency("accessor",n[c]).then(u=>(s[c]=u,s[c])));return o.length<1?null:(o.push(this.parser.createNodeMesh(e)),Promise.all(o).then(c=>{const u=c.pop(),A=u.isGroup?u.children:[u],d=c[0].count,b=[];for(const h of A){const l=new f.Matrix4,g=new f.Vector3,m=new f.Quaternion,E=new f.Vector3(1,1,1),p=new f.InstancedMesh(h.geometry,h.material,d);for(let C=0;C<d;C++)s.TRANSLATION&&g.fromBufferAttribute(s.TRANSLATION,C),s.ROTATION&&m.fromBufferAttribute(s.ROTATION,C),s.SCALE&&E.fromBufferAttribute(s.SCALE,C),p.setMatrixAt(C,l.compose(g,m,E));for(const C in s)if(C==="_COLOR_0"){const I=s[C];p.instanceColor=new f.InstancedBufferAttribute(I.array,I.itemSize,I.normalized)}else C!=="TRANSLATION"&&C!=="ROTATION"&&C!=="SCALE"&&h.geometry.setAttribute(C,s[C]);f.Object3D.prototype.copy.call(p,h),this.parser.assignFinalMaterial(p),b.push(p)}return u.isGroup?(u.clear(),u.add(...b),u):b[0]}))}}const Jr="glTF",vo=1313821514,Fo=5130562;class Qo{constructor(e){this.name=ae.KHR_BINARY_GLTF,this.content=null,this.body=null;const a=new DataView(e,0,12),t=new TextDecoder;if(this.header={magic:t.decode(new Uint8Array(e.slice(0,4))),version:a.getUint32(4,!0),length:a.getUint32(8,!0)},this.header.magic!==Jr)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const i=this.header.length-12,n=new DataView(e,12);let o=0;for(;o<i;){const s=n.getUint32(o,!0);o+=4;const c=n.getUint32(o,!0);if(o+=4,c===vo){const u=new Uint8Array(e,12+o,s);this.content=t.decode(u)}else if(c===Fo){const u=12+o;this.body=e.slice(u,u+s)}o+=s}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class ko{constructor(e,a){if(!a)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=ae.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=a,this.dracoLoader.preload()}decodePrimitive(e,a){const t=this.json,i=this.dracoLoader,n=e.extensions[this.name].bufferView,o=e.extensions[this.name].attributes,s={},c={},u={};for(const A in o){const d=Lt[A]||A.toLowerCase();s[d]=o[A]}for(const A in e.attributes){const d=Lt[A]||A.toLowerCase();if(o[A]!==void 0){const b=t.accessors[e.attributes[A]],h=Ra[b.componentType];u[d]=h.name,c[d]=b.normalized===!0}}return a.getDependency("bufferView",n).then(function(A){return new Promise(function(d,b){i.decodeDracoFile(A,function(h){for(const l in h.attributes){const g=h.attributes[l],m=c[l];m!==void 0&&(g.normalized=m)}d(h)},s,u,f.LinearSRGBColorSpace,b)})})}}class jo{constructor(){this.name=ae.KHR_TEXTURE_TRANSFORM}extendTexture(e,a){return(a.texCoord!==void 0&&a.texCoord!==e.channel||a.offset!==void 0||a.rotation!==void 0||a.scale!==void 0)&&(e=e.clone(),a.texCoord!==void 0&&(e.channel=a.texCoord),a.offset!==void 0&&e.offset.fromArray(a.offset),a.rotation!==void 0&&(e.rotation=a.rotation),a.scale!==void 0&&e.repeat.fromArray(a.scale),e.needsUpdate=!0),e}}class Mo{constructor(){this.name=ae.KHR_MESH_QUANTIZATION}}class Vr extends f.Interpolant{constructor(e,a,t,i){super(e,a,t,i)}copySampleValue_(e){const a=this.resultBuffer,t=this.sampleValues,i=this.valueSize,n=e*i*3+i;for(let o=0;o!==i;o++)a[o]=t[n+o];return a}interpolate_(e,a,t,i){const n=this.resultBuffer,o=this.sampleValues,s=this.valueSize,c=2*s,u=3*s,A=i-a,d=(t-a)/A,b=d*d,h=b*d,l=e*u,g=l-u,m=-2*h+3*b,E=h-b,p=1-m,C=E-b+d;for(let I=0;I!==s;I++){const x=o[g+I+s],y=o[g+I+c]*A,w=o[l+I+s],D=o[l+I]*A;n[I]=p*x+C*y+m*w+E*D}return n}}const Ro=new f.Quaternion;class So extends Vr{interpolate_(e,a,t,i){const n=super.interpolate_(e,a,t,i);return Ro.fromArray(n).normalize().toArray(n),n}}const He={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},Ra={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Hr={9728:f.NearestFilter,9729:f.LinearFilter,9984:f.NearestMipmapNearestFilter,9985:f.LinearMipmapNearestFilter,9986:f.NearestMipmapLinearFilter,9987:f.LinearMipmapLinearFilter},Wr={33071:f.ClampToEdgeWrapping,33648:f.MirroredRepeatWrapping,10497:f.RepeatWrapping},Ut={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Lt={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},fa={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},To={CUBICSPLINE:void 0,LINEAR:f.InterpolateLinear,STEP:f.InterpolateDiscrete},No="OPAQUE",Uo="MASK",Lo="BLEND";function xa(r,e,a){for(const t in a.extensions)r[t]===void 0&&(e.userData.gltfExtensions=e.userData.gltfExtensions||{},e.userData.gltfExtensions[t]=a.extensions[t])}function ca(r,e){e.extras!==void 0&&(typeof e.extras=="object"?Object.assign(r.userData,e.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+e.extras))}function Go(r,e){if(r.updateMorphTargets(),e.weights!==void 0)for(let a=0,t=e.weights.length;a<t;a++)r.morphTargetInfluences[a]=e.weights[a];if(e.extras&&Array.isArray(e.extras.targetNames)){const a=e.extras.targetNames;if(r.morphTargetInfluences.length===a.length){r.morphTargetDictionary={};for(let t=0,i=a.length;t<i;t++)r.morphTargetDictionary[a[t]]=t}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function _o(r){let e;const a=r.extensions&&r.extensions[ae.KHR_DRACO_MESH_COMPRESSION];if(e=a?"draco:"+a.bufferView+":"+a.indices+":"+Gt(a.attributes):r.indices+":"+Gt(r.attributes)+":"+r.mode,r.targets!==void 0)for(let t=0,i=r.targets.length;t<i;t++)e+=":"+Gt(r.targets[t]);return e}function Gt(r){let e="";const a=Object.keys(r).sort();for(let t=0,i=a.length;t<i;t++)e+=a[t]+":"+r[a[t]]+";";return e}function _t(r){switch(r){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.")}}const zo=new f.Matrix4;class Po{constructor(e={},a={}){this.json=e,this.extensions={},this.plugins={},this.options=a,this.cache=new so,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let t=!1,i=-1,n=!1,o=-1;if(typeof navigator<"u"){const s=navigator.userAgent;t=/^((?!chrome|android).)*safari/i.test(s)===!0;const c=s.match(/Version\/(\d+)/);i=t&&c?parseInt(c[1],10):-1,n=s.indexOf("Firefox")>-1,o=n?s.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>"u"||t&&i<17||n&&o<98?this.textureLoader=new f.TextureLoader(this.options.manager):this.textureLoader=new f.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new f.FileLoader(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,a){const t=this,i=this.json,n=this.extensions;this.cache.removeAll(),this.nodeCache={},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([t.getDependencies("scene"),t.getDependencies("animation"),t.getDependencies("camera")])}).then(function(o){const s={scene:o[0][i.scene||0],scenes:o[0],animations:o[1],cameras:o[2],asset:i.asset,parser:t,userData:{}};return xa(n,s,i),ca(s,i),Promise.all(t._invokeAll(function(c){return c.afterRoot&&c.afterRoot(s)})).then(function(){for(const c of s.scenes)c.updateMatrixWorld();e(s)})}).catch(a)}_markDefs(){const e=this.json.nodes||[],a=this.json.skins||[],t=this.json.meshes||[];for(let i=0,n=a.length;i<n;i++){const o=a[i].joints;for(let s=0,c=o.length;s<c;s++)e[o[s]].isBone=!0}for(let i=0,n=e.length;i<n;i++){const o=e[i];o.mesh!==void 0&&(this._addNodeRef(this.meshCache,o.mesh),o.skin!==void 0&&(t[o.mesh].isSkinnedMesh=!0)),o.camera!==void 0&&this._addNodeRef(this.cameraCache,o.camera)}}_addNodeRef(e,a){a!==void 0&&(e.refs[a]===void 0&&(e.refs[a]=e.uses[a]=0),e.refs[a]++)}_getNodeRef(e,a,t){if(e.refs[a]<=1)return t;const i=t.clone(),n=(o,s)=>{const c=this.associations.get(o);c!=null&&this.associations.set(s,c);for(const[u,A]of o.children.entries())n(A,s.children[u])};return n(t,i),i.name+="_instance_"+e.uses[a]++,i}_invokeOne(e){const a=Object.values(this.plugins);a.push(this);for(let t=0;t<a.length;t++){const i=e(a[t]);if(i)return i}return null}_invokeAll(e){const a=Object.values(this.plugins);a.unshift(this);const t=[];for(let i=0;i<a.length;i++){const n=e(a[i]);n&&t.push(n)}return t}getDependency(e,a){const t=e+":"+a;let i=this.cache.get(t);if(!i){switch(e){case"scene":i=this.loadScene(a);break;case"node":i=this._invokeOne(function(n){return n.loadNode&&n.loadNode(a)});break;case"mesh":i=this._invokeOne(function(n){return n.loadMesh&&n.loadMesh(a)});break;case"accessor":i=this.loadAccessor(a);break;case"bufferView":i=this._invokeOne(function(n){return n.loadBufferView&&n.loadBufferView(a)});break;case"buffer":i=this.loadBuffer(a);break;case"material":i=this._invokeOne(function(n){return n.loadMaterial&&n.loadMaterial(a)});break;case"texture":i=this._invokeOne(function(n){return n.loadTexture&&n.loadTexture(a)});break;case"skin":i=this.loadSkin(a);break;case"animation":i=this._invokeOne(function(n){return n.loadAnimation&&n.loadAnimation(a)});break;case"camera":i=this.loadCamera(a);break;default:if(i=this._invokeOne(function(n){return n!=this&&n.getDependency&&n.getDependency(e,a)}),!i)throw new Error("Unknown type: "+e)}this.cache.add(t,i)}return i}getDependencies(e){let a=this.cache.get(e);if(!a){const t=this,i=this.json[e+(e==="mesh"?"es":"s")]||[];a=Promise.all(i.map(function(n,o){return t.getDependency(e,o)})),this.cache.add(e,a)}return a}loadBuffer(e){const a=this.json.buffers[e],t=this.fileLoader;if(a.type&&a.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+a.type+" buffer type is not supported.");if(a.uri===void 0&&e===0)return Promise.resolve(this.extensions[ae.KHR_BINARY_GLTF].body);const i=this.options;return new Promise(function(n,o){t.load(f.LoaderUtils.resolveURL(a.uri,i.path),n,void 0,function(){o(new Error('THREE.GLTFLoader: Failed to load buffer "'+a.uri+'".'))})})}loadBufferView(e){const a=this.json.bufferViews[e];return this.getDependency("buffer",a.buffer).then(function(t){const i=a.byteLength||0,n=a.byteOffset||0;return t.slice(n,n+i)})}loadAccessor(e){const a=this,t=this.json,i=this.json.accessors[e];if(i.bufferView===void 0&&i.sparse===void 0){const o=Ut[i.type],s=Ra[i.componentType],c=i.normalized===!0,u=new s(i.count*o);return Promise.resolve(new f.BufferAttribute(u,o,c))}const n=[];return i.bufferView!==void 0?n.push(this.getDependency("bufferView",i.bufferView)):n.push(null),i.sparse!==void 0&&(n.push(this.getDependency("bufferView",i.sparse.indices.bufferView)),n.push(this.getDependency("bufferView",i.sparse.values.bufferView))),Promise.all(n).then(function(o){const s=o[0],c=Ut[i.type],u=Ra[i.componentType],A=u.BYTES_PER_ELEMENT,d=A*c,b=i.byteOffset||0,h=i.bufferView!==void 0?t.bufferViews[i.bufferView].byteStride:void 0,l=i.normalized===!0;let g,m;if(h&&h!==d){const E=Math.floor(b/h),p="InterleavedBuffer:"+i.bufferView+":"+i.componentType+":"+E+":"+i.count;let C=a.cache.get(p);C||(g=new u(s,E*h,i.count*h/A),C=new f.InterleavedBuffer(g,h/A),a.cache.add(p,C)),m=new f.InterleavedBufferAttribute(C,c,b%h/A,l)}else g=s===null?new u(i.count*c):new u(s,b,i.count*c),m=new f.BufferAttribute(g,c,l);if(i.sparse!==void 0){const E=Ut.SCALAR,p=Ra[i.sparse.indices.componentType],C=i.sparse.indices.byteOffset||0,I=i.sparse.values.byteOffset||0,x=new p(o[1],C,i.sparse.count*E),y=new u(o[2],I,i.sparse.count*c);s!==null&&(m=new f.BufferAttribute(m.array.slice(),m.itemSize,m.normalized)),m.normalized=!1;for(let w=0,D=x.length;w<D;w++){const F=x[w];if(m.setX(F,y[w*c]),c>=2&&m.setY(F,y[w*c+1]),c>=3&&m.setZ(F,y[w*c+2]),c>=4&&m.setW(F,y[w*c+3]),c>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}m.normalized=l}return m})}loadTexture(e){const a=this.json,t=this.options,i=a.textures[e].source,n=a.images[i];let o=this.textureLoader;if(n.uri){const s=t.manager.getHandler(n.uri);s!==null&&(o=s)}return this.loadTextureImage(e,i,o)}loadTextureImage(e,a,t){const i=this,n=this.json,o=n.textures[e],s=n.images[a],c=(s.uri||s.bufferView)+":"+o.sampler;if(this.textureCache[c])return this.textureCache[c];const u=this.loadImageSource(a,t).then(function(A){A.flipY=!1,A.name=o.name||s.name||"",A.name===""&&typeof s.uri=="string"&&s.uri.startsWith("data:image/")===!1&&(A.name=s.uri);const d=(n.samplers||{})[o.sampler]||{};return A.magFilter=Hr[d.magFilter]||f.LinearFilter,A.minFilter=Hr[d.minFilter]||f.LinearMipmapLinearFilter,A.wrapS=Wr[d.wrapS]||f.RepeatWrapping,A.wrapT=Wr[d.wrapT]||f.RepeatWrapping,A.generateMipmaps=!A.isCompressedTexture&&A.minFilter!==f.NearestFilter&&A.minFilter!==f.LinearFilter,i.associations.set(A,{textures:e}),A}).catch(function(){return null});return this.textureCache[c]=u,u}loadImageSource(e,a){const t=this,i=this.json,n=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(d=>d.clone());const o=i.images[e],s=self.URL||self.webkitURL;let c=o.uri||"",u=!1;if(o.bufferView!==void 0)c=t.getDependency("bufferView",o.bufferView).then(function(d){u=!0;const b=new Blob([d],{type:o.mimeType});return c=s.createObjectURL(b),c});else if(o.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const A=Promise.resolve(c).then(function(d){return new Promise(function(b,h){let l=b;a.isImageBitmapLoader===!0&&(l=function(g){const m=new f.Texture(g);m.needsUpdate=!0,b(m)}),a.load(f.LoaderUtils.resolveURL(d,n.path),l,void 0,h)})}).then(function(d){var b;return u===!0&&s.revokeObjectURL(c),ca(d,o),d.userData.mimeType=o.mimeType||((b=o.uri).search(/\.jpe?g($|\?)/i)>0||b.search(/^data\:image\/jpeg/)===0?"image/jpeg":b.search(/\.webp($|\?)/i)>0||b.search(/^data\:image\/webp/)===0?"image/webp":b.search(/\.ktx2($|\?)/i)>0||b.search(/^data\:image\/ktx2/)===0?"image/ktx2":"image/png"),d}).catch(function(d){throw console.error("THREE.GLTFLoader: Couldn't load texture",c),d});return this.sourceCache[e]=A,A}assignTexture(e,a,t,i){const n=this;return this.getDependency("texture",t.index).then(function(o){if(!o)return null;if(t.texCoord!==void 0&&t.texCoord>0&&((o=o.clone()).channel=t.texCoord),n.extensions[ae.KHR_TEXTURE_TRANSFORM]){const s=t.extensions!==void 0?t.extensions[ae.KHR_TEXTURE_TRANSFORM]:void 0;if(s){const c=n.associations.get(o);o=n.extensions[ae.KHR_TEXTURE_TRANSFORM].extendTexture(o,s),n.associations.set(o,c)}}return i!==void 0&&(o.colorSpace=i),e[a]=o,o})}assignFinalMaterial(e){const a=e.geometry;let t=e.material;const i=a.attributes.tangent===void 0,n=a.attributes.color!==void 0,o=a.attributes.normal===void 0;if(e.isPoints){const s="PointsMaterial:"+t.uuid;let c=this.cache.get(s);c||(c=new f.PointsMaterial,f.Material.prototype.copy.call(c,t),c.color.copy(t.color),c.map=t.map,c.sizeAttenuation=!1,this.cache.add(s,c)),t=c}else if(e.isLine){const s="LineBasicMaterial:"+t.uuid;let c=this.cache.get(s);c||(c=new f.LineBasicMaterial,f.Material.prototype.copy.call(c,t),c.color.copy(t.color),c.map=t.map,this.cache.add(s,c)),t=c}if(i||n||o){let s="ClonedMaterial:"+t.uuid+":";i&&(s+="derivative-tangents:"),n&&(s+="vertex-colors:"),o&&(s+="flat-shading:");let c=this.cache.get(s);c||(c=t.clone(),n&&(c.vertexColors=!0),o&&(c.flatShading=!0),i&&(c.normalScale&&(c.normalScale.y*=-1),c.clearcoatNormalScale&&(c.clearcoatNormalScale.y*=-1)),this.cache.add(s,c),this.associations.set(c,this.associations.get(t))),t=c}e.material=t}getMaterialType(){return f.MeshStandardMaterial}loadMaterial(e){const a=this,t=this.json,i=this.extensions,n=t.materials[e];let o;const s={},c=[];if((n.extensions||{})[ae.KHR_MATERIALS_UNLIT]){const A=i[ae.KHR_MATERIALS_UNLIT];o=A.getMaterialType(),c.push(A.extendParams(s,n,a))}else{const A=n.pbrMetallicRoughness||{};if(s.color=new f.Color(1,1,1),s.opacity=1,Array.isArray(A.baseColorFactor)){const d=A.baseColorFactor;s.color.setRGB(d[0],d[1],d[2],f.LinearSRGBColorSpace),s.opacity=d[3]}A.baseColorTexture!==void 0&&c.push(a.assignTexture(s,"map",A.baseColorTexture,f.SRGBColorSpace)),s.metalness=A.metallicFactor!==void 0?A.metallicFactor:1,s.roughness=A.roughnessFactor!==void 0?A.roughnessFactor:1,A.metallicRoughnessTexture!==void 0&&(c.push(a.assignTexture(s,"metalnessMap",A.metallicRoughnessTexture)),c.push(a.assignTexture(s,"roughnessMap",A.metallicRoughnessTexture))),o=this._invokeOne(function(d){return d.getMaterialType&&d.getMaterialType(e)}),c.push(Promise.all(this._invokeAll(function(d){return d.extendMaterialParams&&d.extendMaterialParams(e,s)})))}n.doubleSided===!0&&(s.side=f.DoubleSide);const u=n.alphaMode||No;if(u===Lo?(s.transparent=!0,s.depthWrite=!1):(s.transparent=!1,u===Uo&&(s.alphaTest=n.alphaCutoff!==void 0?n.alphaCutoff:.5)),n.normalTexture!==void 0&&o!==f.MeshBasicMaterial&&(c.push(a.assignTexture(s,"normalMap",n.normalTexture)),s.normalScale=new f.Vector2(1,1),n.normalTexture.scale!==void 0)){const A=n.normalTexture.scale;s.normalScale.set(A,A)}if(n.occlusionTexture!==void 0&&o!==f.MeshBasicMaterial&&(c.push(a.assignTexture(s,"aoMap",n.occlusionTexture)),n.occlusionTexture.strength!==void 0&&(s.aoMapIntensity=n.occlusionTexture.strength)),n.emissiveFactor!==void 0&&o!==f.MeshBasicMaterial){const A=n.emissiveFactor;s.emissive=new f.Color().setRGB(A[0],A[1],A[2],f.LinearSRGBColorSpace)}return n.emissiveTexture!==void 0&&o!==f.MeshBasicMaterial&&c.push(a.assignTexture(s,"emissiveMap",n.emissiveTexture,f.SRGBColorSpace)),Promise.all(c).then(function(){const A=new o(s);return n.name&&(A.name=n.name),ca(A,n),a.associations.set(A,{materials:e}),n.extensions&&xa(i,A,n),A})}createUniqueName(e){const a=f.PropertyBinding.sanitizeNodeName(e||"");return a in this.nodeNamesUsed?a+"_"+ ++this.nodeNamesUsed[a]:(this.nodeNamesUsed[a]=0,a)}loadGeometries(e){const a=this,t=this.extensions,i=this.primitiveCache;function n(s){return t[ae.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(s,a).then(function(c){return Xr(c,s,a)})}const o=[];for(let s=0,c=e.length;s<c;s++){const u=e[s],A=_o(u),d=i[A];if(d)o.push(d.promise);else{let b;b=u.extensions&&u.extensions[ae.KHR_DRACO_MESH_COMPRESSION]?n(u):Xr(new f.BufferGeometry,u,a),i[A]={primitive:u,promise:b},o.push(b)}}return Promise.all(o)}loadMesh(e){const a=this,t=this.json,i=this.extensions,n=t.meshes[e],o=n.primitives,s=[];for(let u=0,A=o.length;u<A;u++){const d=o[u].material===void 0?((c=this.cache).DefaultMaterial===void 0&&(c.DefaultMaterial=new f.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:f.FrontSide})),c.DefaultMaterial):this.getDependency("material",o[u].material);s.push(d)}var c;return s.push(a.loadGeometries(o)),Promise.all(s).then(function(u){const A=u.slice(0,u.length-1),d=u[u.length-1],b=[];for(let l=0,g=d.length;l<g;l++){const m=d[l],E=o[l];let p;const C=A[l];if(E.mode===He.TRIANGLES||E.mode===He.TRIANGLE_STRIP||E.mode===He.TRIANGLE_FAN||E.mode===void 0)p=n.isSkinnedMesh===!0?new f.SkinnedMesh(m,C):new f.Mesh(m,C),p.isSkinnedMesh===!0&&p.normalizeSkinWeights(),E.mode===He.TRIANGLE_STRIP?p.geometry=zr(p.geometry,f.TriangleStripDrawMode):E.mode===He.TRIANGLE_FAN&&(p.geometry=zr(p.geometry,f.TriangleFanDrawMode));else if(E.mode===He.LINES)p=new f.LineSegments(m,C);else if(E.mode===He.LINE_STRIP)p=new f.Line(m,C);else if(E.mode===He.LINE_LOOP)p=new f.LineLoop(m,C);else{if(E.mode!==He.POINTS)throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+E.mode);p=new f.Points(m,C)}Object.keys(p.geometry.morphAttributes).length>0&&Go(p,n),p.name=a.createUniqueName(n.name||"mesh_"+e),ca(p,n),E.extensions&&xa(i,p,E),a.assignFinalMaterial(p),b.push(p)}for(let l=0,g=b.length;l<g;l++)a.associations.set(b[l],{meshes:e,primitives:l});if(b.length===1)return n.extensions&&xa(i,b[0],n),b[0];const h=new f.Group;n.extensions&&xa(i,h,n),a.associations.set(h,{meshes:e});for(let l=0,g=b.length;l<g;l++)h.add(b[l]);return h})}loadCamera(e){let a;const t=this.json.cameras[e],i=t[t.type];if(i)return t.type==="perspective"?a=new f.PerspectiveCamera(f.MathUtils.radToDeg(i.yfov),i.aspectRatio||1,i.znear||1,i.zfar||2e6):t.type==="orthographic"&&(a=new f.OrthographicCamera(-i.xmag,i.xmag,i.ymag,-i.ymag,i.znear,i.zfar)),t.name&&(a.name=this.createUniqueName(t.name)),ca(a,t),Promise.resolve(a);console.warn("THREE.GLTFLoader: Missing camera parameters.")}loadSkin(e){const a=this.json.skins[e],t=[];for(let i=0,n=a.joints.length;i<n;i++)t.push(this._loadNodeShallow(a.joints[i]));return a.inverseBindMatrices!==void 0?t.push(this.getDependency("accessor",a.inverseBindMatrices)):t.push(null),Promise.all(t).then(function(i){const n=i.pop(),o=i,s=[],c=[];for(let u=0,A=o.length;u<A;u++){const d=o[u];if(d){s.push(d);const b=new f.Matrix4;n!==null&&b.fromArray(n.array,16*u),c.push(b)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',a.joints[u])}return new f.Skeleton(s,c)})}loadAnimation(e){const a=this.json,t=this,i=a.animations[e],n=i.name?i.name:"animation_"+e,o=[],s=[],c=[],u=[],A=[];for(let d=0,b=i.channels.length;d<b;d++){const h=i.channels[d],l=i.samplers[h.sampler],g=h.target,m=g.node,E=i.parameters!==void 0?i.parameters[l.input]:l.input,p=i.parameters!==void 0?i.parameters[l.output]:l.output;g.node!==void 0&&(o.push(this.getDependency("node",m)),s.push(this.getDependency("accessor",E)),c.push(this.getDependency("accessor",p)),u.push(l),A.push(g))}return Promise.all([Promise.all(o),Promise.all(s),Promise.all(c),Promise.all(u),Promise.all(A)]).then(function(d){const b=d[0],h=d[1],l=d[2],g=d[3],m=d[4],E=[];for(let p=0,C=b.length;p<C;p++){const I=b[p],x=h[p],y=l[p],w=g[p],D=m[p];if(I===void 0)continue;I.updateMatrix&&I.updateMatrix();const F=t._createAnimationTracks(I,x,y,w,D);if(F)for(let j=0;j<F.length;j++)E.push(F[j])}return new f.AnimationClip(n,void 0,E)})}createNodeMesh(e){const a=this.json,t=this,i=a.nodes[e];return i.mesh===void 0?null:t.getDependency("mesh",i.mesh).then(function(n){const o=t._getNodeRef(t.meshCache,i.mesh,n);return i.weights!==void 0&&o.traverse(function(s){if(s.isMesh)for(let c=0,u=i.weights.length;c<u;c++)s.morphTargetInfluences[c]=i.weights[c]}),o})}loadNode(e){const a=this,t=this.json.nodes[e],i=a._loadNodeShallow(e),n=[],o=t.children||[];for(let c=0,u=o.length;c<u;c++)n.push(a.getDependency("node",o[c]));const s=t.skin===void 0?Promise.resolve(null):a.getDependency("skin",t.skin);return Promise.all([i,Promise.all(n),s]).then(function(c){const u=c[0],A=c[1],d=c[2];d!==null&&u.traverse(function(b){b.isSkinnedMesh&&b.bind(d,zo)});for(let b=0,h=A.length;b<h;b++)u.add(A[b]);return u})}_loadNodeShallow(e){const a=this.json,t=this.extensions,i=this;if(this.nodeCache[e]!==void 0)return this.nodeCache[e];const n=a.nodes[e],o=n.name?i.createUniqueName(n.name):"",s=[],c=i._invokeOne(function(u){return u.createNodeMesh&&u.createNodeMesh(e)});return c&&s.push(c),n.camera!==void 0&&s.push(i.getDependency("camera",n.camera).then(function(u){return i._getNodeRef(i.cameraCache,n.camera,u)})),i._invokeAll(function(u){return u.createNodeAttachment&&u.createNodeAttachment(e)}).forEach(function(u){s.push(u)}),this.nodeCache[e]=Promise.all(s).then(function(u){let A;if(A=n.isBone===!0?new f.Bone:u.length>1?new f.Group:u.length===1?u[0]:new f.Object3D,A!==u[0])for(let d=0,b=u.length;d<b;d++)A.add(u[d]);if(n.name&&(A.userData.name=n.name,A.name=o),ca(A,n),n.extensions&&xa(t,A,n),n.matrix!==void 0){const d=new f.Matrix4;d.fromArray(n.matrix),A.applyMatrix4(d)}else n.translation!==void 0&&A.position.fromArray(n.translation),n.rotation!==void 0&&A.quaternion.fromArray(n.rotation),n.scale!==void 0&&A.scale.fromArray(n.scale);if(i.associations.has(A)){if(n.mesh!==void 0&&i.meshCache.refs[n.mesh]>1){const d=i.associations.get(A);i.associations.set(A,{...d})}}else i.associations.set(A,{});return i.associations.get(A).nodes=e,A}),this.nodeCache[e]}loadScene(e){const a=this.extensions,t=this.json.scenes[e],i=this,n=new f.Group;t.name&&(n.name=i.createUniqueName(t.name)),ca(n,t),t.extensions&&xa(a,n,t);const o=t.nodes||[],s=[];for(let c=0,u=o.length;c<u;c++)s.push(i.getDependency("node",o[c]));return Promise.all(s).then(function(c){for(let u=0,A=c.length;u<A;u++)n.add(c[u]);return i.associations=(u=>{const A=new Map;for(const[d,b]of i.associations)(d instanceof f.Material||d instanceof f.Texture)&&A.set(d,b);return u.traverse(d=>{const b=i.associations.get(d);b!=null&&A.set(d,b)}),A})(n),n})}_createAnimationTracks(e,a,t,i,n){const o=[],s=e.name?e.name:e.uuid,c=[];let u;switch(fa[n.path]===fa.weights?e.traverse(function(b){b.morphTargetInfluences&&c.push(b.name?b.name:b.uuid)}):c.push(s),fa[n.path]){case fa.weights:u=f.NumberKeyframeTrack;break;case fa.rotation:u=f.QuaternionKeyframeTrack;break;case fa.translation:case fa.scale:u=f.VectorKeyframeTrack;break;default:t.itemSize===1?u=f.NumberKeyframeTrack:u=f.VectorKeyframeTrack}const A=i.interpolation!==void 0?To[i.interpolation]:f.InterpolateLinear,d=this._getArrayFromAccessor(t);for(let b=0,h=c.length;b<h;b++){const l=new u(c[b]+"."+fa[n.path],a.array,d,A);i.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(l),o.push(l)}return o}_getArrayFromAccessor(e){let a=e.array;if(e.normalized){const t=_t(a.constructor),i=new Float32Array(a.length);for(let n=0,o=a.length;n<o;n++)i[n]=a[n]*t;a=i}return a}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(a){return new(this instanceof f.QuaternionKeyframeTrack?So:Vr)(this.times,this.values,this.getValueSize()/3,a)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function Xr(r,e,a){const t=e.attributes,i=[];function n(o,s){return a.getDependency("accessor",o).then(function(c){r.setAttribute(s,c)})}for(const o in t){const s=Lt[o]||o.toLowerCase();s in r.attributes||i.push(n(t[o],s))}if(e.indices!==void 0&&!r.index){const o=a.getDependency("accessor",e.indices).then(function(s){r.setIndex(s)});i.push(o)}return f.ColorManagement.workingColorSpace!==f.LinearSRGBColorSpace&&"COLOR_0"in t&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${f.ColorManagement.workingColorSpace}" not supported.`),ca(r,e),function(o,s,c){const u=s.attributes,A=new f.Box3;if(u.POSITION===void 0)return;{const h=c.json.accessors[u.POSITION],l=h.min,g=h.max;if(l===void 0||g===void 0)return void console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");if(A.set(new f.Vector3(l[0],l[1],l[2]),new f.Vector3(g[0],g[1],g[2])),h.normalized){const m=_t(Ra[h.componentType]);A.min.multiplyScalar(m),A.max.multiplyScalar(m)}}const d=s.targets;if(d!==void 0){const h=new f.Vector3,l=new f.Vector3;for(let g=0,m=d.length;g<m;g++){const E=d[g];if(E.POSITION!==void 0){const p=c.json.accessors[E.POSITION],C=p.min,I=p.max;if(C!==void 0&&I!==void 0){if(l.setX(Math.max(Math.abs(C[0]),Math.abs(I[0]))),l.setY(Math.max(Math.abs(C[1]),Math.abs(I[1]))),l.setZ(Math.max(Math.abs(C[2]),Math.abs(I[2]))),p.normalized){const x=_t(Ra[p.componentType]);l.multiplyScalar(x)}h.max(l)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}A.expandByVector(h)}o.boundingBox=A;const b=new f.Sphere;A.getCenter(b.center),b.radius=A.min.distanceTo(A.max)/2,o.boundingSphere=b}(r,e,a),Promise.all(i).then(function(){return e.targets!==void 0?function(o,s,c){let u=!1,A=!1,d=!1;for(let g=0,m=s.length;g<m;g++){const E=s[g];if(E.POSITION!==void 0&&(u=!0),E.NORMAL!==void 0&&(A=!0),E.COLOR_0!==void 0&&(d=!0),u&&A&&d)break}if(!u&&!A&&!d)return Promise.resolve(o);const b=[],h=[],l=[];for(let g=0,m=s.length;g<m;g++){const E=s[g];if(u){const p=E.POSITION!==void 0?c.getDependency("accessor",E.POSITION):o.attributes.position;b.push(p)}if(A){const p=E.NORMAL!==void 0?c.getDependency("accessor",E.NORMAL):o.attributes.normal;h.push(p)}if(d){const p=E.COLOR_0!==void 0?c.getDependency("accessor",E.COLOR_0):o.attributes.color;l.push(p)}}return Promise.all([Promise.all(b),Promise.all(h),Promise.all(l)]).then(function(g){const m=g[0],E=g[1],p=g[2];return u&&(o.morphAttributes.position=m),A&&(o.morphAttributes.normal=E),d&&(o.morphAttributes.color=p),o.morphTargetsRelative=!0,o})}(r,e.targets,a):r})}const zt=new WeakMap;class Yr extends f.Loader{constructor(e){super(e),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,a,t,i){const n=new f.FileLoader(this.manager);n.setPath(this.path),n.setResponseType("arraybuffer"),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),n.load(e,o=>{this.parse(o,a,i)},t,i)}parse(e,a,t=()=>{}){this.decodeDracoFile(e,a,null,null,f.SRGBColorSpace,t).catch(t)}decodeDracoFile(e,a,t,i,n=f.LinearSRGBColorSpace,o=()=>{}){const s={attributeIDs:t||this.defaultAttributeIDs,attributeTypes:i||this.defaultAttributeTypes,useUniqueIDs:!!t,vertexColorSpace:n};return this.decodeGeometry(e,s).then(a).catch(o)}decodeGeometry(e,a){const t=JSON.stringify(a);if(zt.has(e)){const c=zt.get(e);if(c.key===t)return c.promise;if(e.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let i;const n=this.workerNextTaskID++,o=e.byteLength,s=this._getWorker(n,o).then(c=>(i=c,new Promise((u,A)=>{i._callbacks[n]={resolve:u,reject:A},i.postMessage({type:"decode",id:n,taskConfig:a,buffer:e},[e])}))).then(c=>this._createGeometry(c.geometry));return s.catch(()=>!0).then(()=>{i&&n&&this._releaseTask(i,n)}),zt.set(e,{key:t,promise:s}),s}_createGeometry(e){const a=new f.BufferGeometry;e.index&&a.setIndex(new f.BufferAttribute(e.index.array,1));for(let t=0;t<e.attributes.length;t++){const i=e.attributes[t],n=i.name,o=i.array,s=i.itemSize,c=new f.BufferAttribute(o,s);n==="color"&&(this._assignVertexColorSpace(c,i.vertexColorSpace),c.normalized=!(o instanceof Float32Array)),a.setAttribute(n,c)}return a}_assignVertexColorSpace(e,a){if(a!==f.SRGBColorSpace)return;const t=new f.Color;for(let i=0,n=e.count;i<n;i++)t.fromBufferAttribute(e,i),f.ColorManagement.colorSpaceToWorking(t,f.SRGBColorSpace),e.setXYZ(i,t.r,t.g,t.b)}_loadLibrary(e,a){const t=new f.FileLoader(this.manager);return t.setPath(this.decoderPath),t.setResponseType(a),t.setWithCredentials(this.withCredentials),new Promise((i,n)=>{t.load(e,i,void 0,n)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const e=typeof WebAssembly!="object"||this.decoderConfig.type==="js",a=[];return e?a.push(this._loadLibrary("draco_decoder.js","text")):(a.push(this._loadLibrary("draco_wasm_wrapper.js","text")),a.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(a).then(t=>{const i=t[0];e||(this.decoderConfig.wasmBinary=t[1]);const n=qo.toString(),o=["/* draco decoder */",i,"","/* worker */",n.substring(n.indexOf("{")+1,n.lastIndexOf("}"))].join(`
|
|
7
|
+
`);this.workerSourceURL=URL.createObjectURL(new Blob([o]))}),this.decoderPending}_getWorker(e,a){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const i=new Worker(this.workerSourceURL);i._callbacks={},i._taskCosts={},i._taskLoad=0,i.postMessage({type:"init",decoderConfig:this.decoderConfig}),i.onmessage=function(n){const o=n.data;switch(o.type){case"decode":i._callbacks[o.id].resolve(o);break;case"error":i._callbacks[o.id].reject(o);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+o.type+'"')}},this.workerPool.push(i)}else this.workerPool.sort(function(i,n){return i._taskLoad>n._taskLoad?-1:1});const t=this.workerPool[this.workerPool.length-1];return t._taskCosts[e]=a,t._taskLoad+=a,t})}_releaseTask(e,a){e._taskLoad-=e._taskCosts[a],delete e._callbacks[a],delete e._taskCosts[a]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this.workerSourceURL!==""&&URL.revokeObjectURL(this.workerSourceURL),this}}function qo(){let r,e;function a(t,i,n,o,s,c){const u=c.num_components(),A=n.num_points()*u,d=A*s.BYTES_PER_ELEMENT,b=function(g,m){switch(m){case Float32Array:return g.DT_FLOAT32;case Int8Array:return g.DT_INT8;case Int16Array:return g.DT_INT16;case Int32Array:return g.DT_INT32;case Uint8Array:return g.DT_UINT8;case Uint16Array:return g.DT_UINT16;case Uint32Array:return g.DT_UINT32}}(t,s),h=t._malloc(d);i.GetAttributeDataArrayForAllPoints(n,c,b,d,h);const l=new s(t.HEAPF32.buffer,h,A).slice();return t._free(h),{name:o,array:l,itemSize:u}}onmessage=function(t){const i=t.data;switch(i.type){case"init":r=i.decoderConfig,e=new Promise(function(s){r.onModuleLoaded=function(c){s({draco:c})},DracoDecoderModule(r)});break;case"decode":const n=i.buffer,o=i.taskConfig;e.then(s=>{const c=s.draco,u=new c.Decoder;try{const A=function(b,h,l,g){const m=g.attributeIDs,E=g.attributeTypes;let p,C;const I=h.GetEncodedGeometryType(l);if(I===b.TRIANGULAR_MESH)p=new b.Mesh,C=h.DecodeArrayToMesh(l,l.byteLength,p);else{if(I!==b.POINT_CLOUD)throw new Error("THREE.DRACOLoader: Unexpected geometry type.");p=new b.PointCloud,C=h.DecodeArrayToPointCloud(l,l.byteLength,p)}if(!C.ok()||p.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+C.error_msg());const x={index:null,attributes:[]};for(const y in m){const w=self[E[y]];let D,F;if(g.useUniqueIDs)F=m[y],D=h.GetAttributeByUniqueId(p,F);else{if(F=h.GetAttributeId(p,b[m[y]]),F===-1)continue;D=h.GetAttribute(p,F)}const j=a(b,h,p,y,w,D);y==="color"&&(j.vertexColorSpace=g.vertexColorSpace),x.attributes.push(j)}return I===b.TRIANGULAR_MESH&&(x.index=function(y,w,D){const F=D.num_faces(),j=3*F,M=4*j,_=y._malloc(M);w.GetTrianglesUInt32Array(D,M,_);const q=new Uint32Array(y.HEAPF32.buffer,_,j).slice();return y._free(_),{array:q,itemSize:1}}(b,h,p)),b.destroy(p),x}(c,u,new Int8Array(n),o),d=A.attributes.map(b=>b.array.buffer);A.index&&d.push(A.index.array.buffer),self.postMessage({type:"decode",id:i.id,geometry:A},d)}catch(A){console.error(A),self.postMessage({type:"error",id:i.id,error:A.message})}finally{c.destroy(u)}})}}}class Ko{constructor(e=4){this.pool=e,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0,this.workerCreator=null}_initWorker(e){if(!this.workers[e]){const a=this.workerCreator();a.addEventListener("message",this._onMessage.bind(this,e)),this.workers[e]=a}}_getIdleWorker(){for(let e=0;e<this.pool;e++)if(!(this.workerStatus&1<<e))return e;return-1}_onMessage(e,a){const t=this.workersResolve[e];if(t&&t(a),this.queue.length){const{resolve:i,msg:n,transfer:o}=this.queue.shift();this.workersResolve[e]=i,this.workers[e].postMessage(n,o)}else this.workerStatus^=1<<e}setWorkerCreator(e){this.workerCreator=e}setWorkerLimit(e){this.pool=e}postMessage(e,a){return new Promise(t=>{const i=this._getIdleWorker();i!==-1?(this._initWorker(i),this.workerStatus|=1<<i,this.workersResolve[i]=t,this.workers[i].postMessage(e,a)):this.queue.push({resolve:t,msg:e,transfer:a})})}dispose(){this.workers.forEach(e=>e.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}}const Zr=9,$r=15,ei=16,ai=22,ti=37,ri=43,ii=76,ni=83,oi=97,si=100,Ai=103,ci=109,Oo=131,Jo=132,Vo=133,Ho=134,Wo=137,Xo=138,Yo=141,Zo=142,$o=145,es=146,ui=148,di=152,as=157,ts=158,hi=165,li=166,Pt=1000066e3;class rs{constructor(){this.vkFormat=0,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=0,this.levels=[],this.dataFormatDescriptor=[{vendorId:0,descriptorType:0,descriptorBlockSize:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],this.keyValue={},this.globalData=null}}class Wa{constructor(e,a,t,i){this._dataView=void 0,this._littleEndian=void 0,this._offset=void 0,this._dataView=new DataView(e.buffer,e.byteOffset+a,t),this._littleEndian=i,this._offset=0}_nextUint8(){const e=this._dataView.getUint8(this._offset);return this._offset+=1,e}_nextUint16(){const e=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,e}_nextUint32(){const e=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint64(){const e=this._dataView.getUint32(this._offset,this._littleEndian)+4294967296*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,e}_nextInt32(){const e=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint8Array(e){const a=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._offset,e);return this._offset+=e,a}_skip(e){return this._offset+=e,this}_scan(e,a){a===void 0&&(a=0);const t=this._offset;let i=0;for(;this._dataView.getUint8(this._offset)!==a&&i<e;)i++,this._offset++;return i<e&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+t,i)}}const Ue=[171,75,84,88,32,50,48,187,13,10,26,10];function bi(r){return new TextDecoder().decode(r)}let qt,ua,Kt;const Ot={env:{emscripten_notify_memory_growth:function(r){Kt=new Uint8Array(ua.exports.memory.buffer)}}};class is{init(){return qt||(qt=typeof fetch<"u"?fetch("data:application/wasm;base64,"+gi).then(e=>e.arrayBuffer()).then(e=>WebAssembly.instantiate(e,Ot)).then(this._init):WebAssembly.instantiate(Buffer.from(gi,"base64"),Ot).then(this._init),qt)}_init(e){ua=e.instance,Ot.env.emscripten_notify_memory_growth(0)}decode(e,a=0){if(!ua)throw new Error("ZSTDDecoder: Await .init() before decoding.");const t=e.byteLength,i=ua.exports.malloc(t);Kt.set(e,i),a=a||Number(ua.exports.ZSTD_findDecompressedSize(i,t));const n=ua.exports.malloc(a),o=ua.exports.ZSTD_decompress(n,a,i,t),s=Kt.slice(n,n+o);return ua.exports.free(i),ua.exports.free(n),s}}const gi="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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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",Jt=new WeakMap;let Vt,Ht=0;class Oe extends f.Loader{constructor(e){super(e),this.transcoderPath="",this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new Ko,this.workerSourceURL="",this.workerConfig=null,typeof MSC_TRANSCODER<"u"&&console.warn('THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.')}setTranscoderPath(e){return this.transcoderPath=e,this}setWorkerLimit(e){return this.workerPool.setWorkerLimit(e),this}async detectSupportAsync(e){return this.workerConfig={astcSupported:await e.hasFeatureAsync("texture-compression-astc"),astcHDRSupported:!1,etc1Supported:await e.hasFeatureAsync("texture-compression-etc1"),etc2Supported:await e.hasFeatureAsync("texture-compression-etc2"),dxtSupported:await e.hasFeatureAsync("texture-compression-bc"),bptcSupported:await e.hasFeatureAsync("texture-compression-bptc"),pvrtcSupported:await e.hasFeatureAsync("texture-compression-pvrtc")},this}detectSupport(e){return e.isWebGPURenderer===!0?this.workerConfig={astcSupported:e.hasFeature("texture-compression-astc"),astcHDRSupported:!1,etc1Supported:e.hasFeature("texture-compression-etc1"),etc2Supported:e.hasFeature("texture-compression-etc2"),dxtSupported:e.hasFeature("texture-compression-bc"),bptcSupported:e.hasFeature("texture-compression-bptc"),pvrtcSupported:e.hasFeature("texture-compression-pvrtc")}:this.workerConfig={astcSupported:e.extensions.has("WEBGL_compressed_texture_astc"),astcHDRSupported:e.extensions.has("WEBGL_compressed_texture_astc")&&e.extensions.get("WEBGL_compressed_texture_astc").getSupportedProfiles().includes("hdr"),etc1Supported:e.extensions.has("WEBGL_compressed_texture_etc1"),etc2Supported:e.extensions.has("WEBGL_compressed_texture_etc"),dxtSupported:e.extensions.has("WEBGL_compressed_texture_s3tc"),bptcSupported:e.extensions.has("EXT_texture_compression_bptc"),pvrtcSupported:e.extensions.has("WEBGL_compressed_texture_pvrtc")||e.extensions.has("WEBKIT_WEBGL_compressed_texture_pvrtc")},this}init(){if(!this.transcoderPending){const e=new f.FileLoader(this.manager);e.setPath(this.transcoderPath),e.setWithCredentials(this.withCredentials);const a=e.loadAsync("basis_transcoder.js"),t=new f.FileLoader(this.manager);t.setPath(this.transcoderPath),t.setResponseType("arraybuffer"),t.setWithCredentials(this.withCredentials);const i=t.loadAsync("basis_transcoder.wasm");this.transcoderPending=Promise.all([a,i]).then(([n,o])=>{const s=Oe.BasisWorker.toString(),c=["/* constants */","let _EngineFormat = "+JSON.stringify(Oe.EngineFormat),"let _EngineType = "+JSON.stringify(Oe.EngineType),"let _TranscoderFormat = "+JSON.stringify(Oe.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(Oe.BasisFormat),"/* basis_transcoder.js */",n,"/* worker */",s.substring(s.indexOf("{")+1,s.lastIndexOf("}"))].join(`
|
|
8
|
+
`);this.workerSourceURL=URL.createObjectURL(new Blob([c])),this.transcoderBinary=o,this.workerPool.setWorkerCreator(()=>{const u=new Worker(this.workerSourceURL),A=this.transcoderBinary.slice(0);return u.postMessage({type:"init",config:this.workerConfig,transcoderBinary:A},[A]),u})}),Ht>0&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),Ht++}return this.transcoderPending}load(e,a,t,i){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");const n=new f.FileLoader(this.manager);n.setPath(this.path),n.setCrossOrigin(this.crossOrigin),n.setWithCredentials(this.withCredentials),n.setResponseType("arraybuffer"),n.load(e,o=>{this.parse(o,a,i)},t,i)}parse(e,a,t){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");if(Jt.has(e))return Jt.get(e).promise.then(a).catch(t);this._createTexture(e).then(i=>a?a(i):null).catch(t)}_createTextureFrom(e,a){const{type:t,error:i,data:{faces:n,width:o,height:s,format:c,type:u,dfdFlags:A}}=e;if(t==="error")return Promise.reject(i);let d;if(a.faceCount===6)d=new f.CompressedCubeTexture(n,c,u);else{const b=n[0].mipmaps;d=a.layerCount>1?new f.CompressedArrayTexture(b,o,s,a.layerCount,c,u):new f.CompressedTexture(b,o,s,c,u)}return d.minFilter=n[0].mipmaps.length===1?f.LinearFilter:f.LinearMipmapLinearFilter,d.magFilter=f.LinearFilter,d.generateMipmaps=!1,d.needsUpdate=!0,d.colorSpace=fi(a),d.premultiplyAlpha=!!(1&A),d}async _createTexture(e,a={}){const t=function(s){const c=new Uint8Array(s.buffer,s.byteOffset,Ue.length);if(c[0]!==Ue[0]||c[1]!==Ue[1]||c[2]!==Ue[2]||c[3]!==Ue[3]||c[4]!==Ue[4]||c[5]!==Ue[5]||c[6]!==Ue[6]||c[7]!==Ue[7]||c[8]!==Ue[8]||c[9]!==Ue[9]||c[10]!==Ue[10]||c[11]!==Ue[11])throw new Error("Missing KTX 2.0 identifier.");const u=new rs,A=17*Uint32Array.BYTES_PER_ELEMENT,d=new Wa(s,Ue.length,A,!0);u.vkFormat=d._nextUint32(),u.typeSize=d._nextUint32(),u.pixelWidth=d._nextUint32(),u.pixelHeight=d._nextUint32(),u.pixelDepth=d._nextUint32(),u.layerCount=d._nextUint32(),u.faceCount=d._nextUint32();const b=d._nextUint32();u.supercompressionScheme=d._nextUint32();const h=d._nextUint32(),l=d._nextUint32(),g=d._nextUint32(),m=d._nextUint32(),E=d._nextUint64(),p=d._nextUint64(),C=new Wa(s,Ue.length+A,3*b*8,!0);for(let X=0;X<b;X++)u.levels.push({levelData:new Uint8Array(s.buffer,s.byteOffset+C._nextUint64(),C._nextUint64()),uncompressedByteLength:C._nextUint64()});const I=new Wa(s,h,l,!0),x={vendorId:I._skip(4)._nextUint16(),descriptorType:I._nextUint16(),versionNumber:I._nextUint16(),descriptorBlockSize:I._nextUint16(),colorModel:I._nextUint8(),colorPrimaries:I._nextUint8(),transferFunction:I._nextUint8(),flags:I._nextUint8(),texelBlockDimension:[I._nextUint8(),I._nextUint8(),I._nextUint8(),I._nextUint8()],bytesPlane:[I._nextUint8(),I._nextUint8(),I._nextUint8(),I._nextUint8(),I._nextUint8(),I._nextUint8(),I._nextUint8(),I._nextUint8()],samples:[]},y=(x.descriptorBlockSize/4-6)/4;for(let X=0;X<y;X++){const ee={bitOffset:I._nextUint16(),bitLength:I._nextUint8(),channelType:I._nextUint8(),samplePosition:[I._nextUint8(),I._nextUint8(),I._nextUint8(),I._nextUint8()],sampleLower:-1/0,sampleUpper:1/0};64&ee.channelType?(ee.sampleLower=I._nextInt32(),ee.sampleUpper=I._nextInt32()):(ee.sampleLower=I._nextUint32(),ee.sampleUpper=I._nextUint32()),x.samples[X]=ee}u.dataFormatDescriptor.length=0,u.dataFormatDescriptor.push(x);const w=new Wa(s,g,m,!0);for(;w._offset<m;){const X=w._nextUint32(),ee=w._scan(X),Ae=bi(ee);if(u.keyValue[Ae]=w._nextUint8Array(X-ee.byteLength-1),Ae.match(/^ktx/i)){const Ce=bi(u.keyValue[Ae]);u.keyValue[Ae]=Ce.substring(0,Ce.lastIndexOf("\0"))}w._skip(X%4?4-X%4:0)}if(p<=0)return u;const D=new Wa(s,E,p,!0),F=D._nextUint16(),j=D._nextUint16(),M=D._nextUint32(),_=D._nextUint32(),q=D._nextUint32(),V=D._nextUint32(),J=[];for(let X=0;X<b;X++)J.push({imageFlags:D._nextUint32(),rgbSliceByteOffset:D._nextUint32(),rgbSliceByteLength:D._nextUint32(),alphaSliceByteOffset:D._nextUint32(),alphaSliceByteLength:D._nextUint32()});const O=E+D._offset,se=O+M,ue=se+_,re=ue+q,le=new Uint8Array(s.buffer,s.byteOffset+O,M),de=new Uint8Array(s.buffer,s.byteOffset+se,_),$=new Uint8Array(s.buffer,s.byteOffset+ue,q),me=new Uint8Array(s.buffer,s.byteOffset+re,V);return u.globalData={endpointCount:F,selectorCount:j,imageDescs:J,endpointsData:le,selectorsData:de,tablesData:$,extendedData:me},u}(new Uint8Array(e)),i=t.vkFormat===Pt&&t.dataFormatDescriptor[0].colorModel===167;if(!(t.vkFormat===0||i&&!this.workerConfig.astcHDRSupported))return async function(s){const{vkFormat:c}=s;if(Wt[c]===void 0)throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");let u;s.supercompressionScheme===2&&(Vt||(Vt=new Promise(async b=>{const h=new is;await h.init(),b(h)})),u=await Vt);const A=[];for(let b=0;b<s.levels.length;b++){const h=Math.max(1,s.pixelWidth>>b),l=Math.max(1,s.pixelHeight>>b),g=s.pixelDepth?Math.max(1,s.pixelDepth>>b):0,m=s.levels[b];let E,p;if(s.supercompressionScheme===0)E=m.levelData;else{if(s.supercompressionScheme!==2)throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");E=u.decode(m.levelData,m.uncompressedByteLength)}p=Xt[c]===f.FloatType?new Float32Array(E.buffer,E.byteOffset,E.byteLength/Float32Array.BYTES_PER_ELEMENT):Xt[c]===f.HalfFloatType?new Uint16Array(E.buffer,E.byteOffset,E.byteLength/Uint16Array.BYTES_PER_ELEMENT):E,A.push({data:p,width:h,height:l,depth:g})}let d;if(ns.has(Wt[c]))d=s.pixelDepth===0?new f.DataTexture(A[0].data,s.pixelWidth,s.pixelHeight):new f.Data3DTexture(A[0].data,s.pixelWidth,s.pixelHeight,s.pixelDepth);else{if(s.pixelDepth>0)throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");d=new f.CompressedTexture(A,s.pixelWidth,s.pixelHeight),d.minFilter=A.length===1?f.LinearFilter:f.LinearMipmapLinearFilter,d.magFilter=f.LinearFilter}return d.mipmaps=A,d.type=Xt[c],d.format=Wt[c],d.colorSpace=fi(s),d.needsUpdate=!0,Promise.resolve(d)}(t);const n=a,o=this.init().then(()=>this.workerPool.postMessage({type:"transcode",buffer:e,taskConfig:n},[e])).then(s=>this._createTextureFrom(s.data,t));return Jt.set(e,{promise:o}),o}dispose(){this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),Ht--}}Oe.BasisFormat={ETC1S:0,UASTC:1,UASTC_HDR:2},Oe.TranscoderFormat={ETC1:0,ETC2:1,BC1:2,BC3:3,BC4:4,BC5:5,BC7_M6_OPAQUE_ONLY:6,BC7_M5:7,PVRTC1_4_RGB:8,PVRTC1_4_RGBA:9,ASTC_4x4:10,ATC_RGB:11,ATC_RGBA_INTERPOLATED_ALPHA:12,RGBA32:13,RGB565:14,BGR565:15,RGBA4444:16,BC6H:22,RGB_HALF:24,RGBA_HALF:25},Oe.EngineFormat={RGBAFormat:f.RGBAFormat,RGBA_ASTC_4x4_Format:f.RGBA_ASTC_4x4_Format,RGB_BPTC_UNSIGNED_Format:f.RGB_BPTC_UNSIGNED_Format,RGBA_BPTC_Format:f.RGBA_BPTC_Format,RGBA_ETC2_EAC_Format:f.RGBA_ETC2_EAC_Format,RGBA_PVRTC_4BPPV1_Format:f.RGBA_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT5_Format:f.RGBA_S3TC_DXT5_Format,RGB_ETC1_Format:f.RGB_ETC1_Format,RGB_ETC2_Format:f.RGB_ETC2_Format,RGB_PVRTC_4BPPV1_Format:f.RGB_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT1_Format:f.RGBA_S3TC_DXT1_Format},Oe.EngineType={UnsignedByteType:f.UnsignedByteType,HalfFloatType:f.HalfFloatType,FloatType:f.FloatType},Oe.BasisWorker=function(){let r,e,a;const t=_EngineFormat,i=_EngineType,n=_TranscoderFormat,o=_BasisFormat;self.addEventListener("message",function(d){const b=d.data;switch(b.type){case"init":r=b.config,h=b.transcoderBinary,e=new Promise(l=>{a={wasmBinary:h,onRuntimeInitialized:l},BASIS(a)}).then(()=>{a.initializeBasis(),a.KTX2File===void 0&&console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.")});break;case"transcode":e.then(()=>{try{const{faces:l,buffers:g,width:m,height:E,hasAlpha:p,format:C,type:I,dfdFlags:x}=function(y){const w=new a.KTX2File(new Uint8Array(y));function D(){w.close(),w.delete()}if(!w.isValid())throw D(),new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");let F;if(w.isUASTC())F=o.UASTC;else if(w.isETC1S())F=o.ETC1S;else{if(!w.isHDR())throw new Error("THREE.KTX2Loader: Unknown Basis encoding");F=o.UASTC_HDR}const j=w.getWidth(),M=w.getHeight(),_=w.getLayers()||1,q=w.getLevels(),V=w.getFaces(),J=w.getHasAlpha(),O=w.getDFDFlags(),{transcoderFormat:se,engineFormat:ue,engineType:re}=function($,me,X,ee){const Ae=c[$];for(let Ce=0;Ce<Ae.length;Ce++){const we=Ae[Ce];if(!(we.if&&!r[we.if])&&we.basisFormat.includes($)&&!(ee&&we.transcoderFormat.length<2)&&!(we.needsPowerOfTwo&&(!u(me)||!u(X))))return{transcoderFormat:we.transcoderFormat[ee?1:0],engineFormat:we.engineFormat[ee?1:0],engineType:we.engineType[0]}}throw new Error("THREE.KTX2Loader: Failed to identify transcoding target.")}(F,j,M,J);if(!j||!M||!q)throw D(),new Error("THREE.KTX2Loader: Invalid texture");if(!w.startTranscoding())throw D(),new Error("THREE.KTX2Loader: .startTranscoding failed");const le=[],de=[];for(let $=0;$<V;$++){const me=[];for(let X=0;X<q;X++){const ee=[];let Ae,Ce;for(let Ne=0;Ne<_;Ne++){const Je=w.getImageLevelInfo(X,Ne,$);$!==0||X!==0||Ne!==0||Je.origWidth%4==0&&Je.origHeight%4==0||console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."),q>1?(Ae=Je.origWidth,Ce=Je.origHeight):(Ae=Je.width,Ce=Je.height);let Ve=new Uint8Array(w.getImageTranscodedSizeInBytes(X,Ne,0,se));const et=w.transcodeImage(Ve,X,Ne,$,se,0,-1,-1);if(re===i.HalfFloatType&&(Ve=new Uint16Array(Ve.buffer,Ve.byteOffset,Ve.byteLength/Uint16Array.BYTES_PER_ELEMENT)),!et)throw D(),new Error("THREE.KTX2Loader: .transcodeImage failed.");ee.push(Ve)}const we=A(ee);me.push({data:we,width:Ae,height:Ce}),de.push(we.buffer)}le.push({mipmaps:me,width:j,height:M,format:ue,type:re})}return D(),{faces:le,buffers:de,width:j,height:M,hasAlpha:J,dfdFlags:O,format:ue,type:re}}(b.buffer);self.postMessage({type:"transcode",id:b.id,data:{faces:l,width:m,height:E,hasAlpha:p,format:C,type:I,dfdFlags:x}},g)}catch(l){console.error(l),self.postMessage({type:"error",id:b.id,error:l.message})}})}var h});const s=[{if:"astcSupported",basisFormat:[o.UASTC],transcoderFormat:[n.ASTC_4x4,n.ASTC_4x4],engineFormat:[t.RGBA_ASTC_4x4_Format,t.RGBA_ASTC_4x4_Format],engineType:[i.UnsignedByteType],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:"bptcSupported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[n.BC7_M5,n.BC7_M5],engineFormat:[t.RGBA_BPTC_Format,t.RGBA_BPTC_Format],engineType:[i.UnsignedByteType],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:"dxtSupported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[n.BC1,n.BC3],engineFormat:[t.RGBA_S3TC_DXT1_Format,t.RGBA_S3TC_DXT5_Format],engineType:[i.UnsignedByteType],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:"etc2Supported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[n.ETC1,n.ETC2],engineFormat:[t.RGB_ETC2_Format,t.RGBA_ETC2_EAC_Format],engineType:[i.UnsignedByteType],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:"etc1Supported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[n.ETC1],engineFormat:[t.RGB_ETC1_Format],engineType:[i.UnsignedByteType],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:"pvrtcSupported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[n.PVRTC1_4_RGB,n.PVRTC1_4_RGBA],engineFormat:[t.RGB_PVRTC_4BPPV1_Format,t.RGBA_PVRTC_4BPPV1_Format],engineType:[i.UnsignedByteType],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0},{if:"bptcSupported",basisFormat:[o.UASTC_HDR],transcoderFormat:[n.BC6H],engineFormat:[t.RGB_BPTC_UNSIGNED_Format],engineType:[i.HalfFloatType],priorityHDR:1,needsPowerOfTwo:!1},{basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[n.RGBA32,n.RGBA32],engineFormat:[t.RGBAFormat,t.RGBAFormat],engineType:[i.UnsignedByteType,i.UnsignedByteType],priorityETC1S:100,priorityUASTC:100,needsPowerOfTwo:!1},{basisFormat:[o.UASTC_HDR],transcoderFormat:[n.RGBA_HALF],engineFormat:[t.RGBAFormat],engineType:[i.HalfFloatType],priorityHDR:100,needsPowerOfTwo:!1}],c={[o.ETC1S]:s.filter(d=>d.basisFormat.includes(o.ETC1S)).sort((d,b)=>d.priorityUASTC-b.priorityUASTC),[o.UASTC]:s.filter(d=>d.basisFormat.includes(o.UASTC)).sort((d,b)=>d.priorityUASTC-b.priorityUASTC),[o.UASTC_HDR]:s.filter(d=>d.basisFormat.includes(o.UASTC_HDR)).sort((d,b)=>d.priorityHDR-b.priorityHDR)};function u(d){return d<=2||!(d&d-1)&&d!==0}function A(d){if(d.length===1)return d[0];let b=0;for(let g=0;g<d.length;g++)b+=d[g].byteLength;const h=new Uint8Array(b);let l=0;for(let g=0;g<d.length;g++){const m=d[g];h.set(m,l),l+=m.byteLength}return h}};const ns=new Set([f.RGBAFormat,f.RGFormat,f.RedFormat]),Wt={[ci]:f.RGBAFormat,[oi]:f.RGBAFormat,[ti]:f.RGBAFormat,[ri]:f.RGBAFormat,[Ai]:f.RGFormat,[ni]:f.RGFormat,[ei]:f.RGFormat,[ai]:f.RGFormat,[si]:f.RedFormat,[ii]:f.RedFormat,[$r]:f.RedFormat,[Zr]:f.RedFormat,[ui]:f.RGB_ETC2_Format,[di]:f.RGBA_ETC2_EAC_Format,[Pt]:f.RGBA_ASTC_4x4_Format,[ts]:f.RGBA_ASTC_4x4_Format,[as]:f.RGBA_ASTC_4x4_Format,[li]:f.RGBA_ASTC_6x6_Format,[hi]:f.RGBA_ASTC_6x6_Format,[Vo]:f.RGBA_S3TC_DXT1_Format,[Ho]:f.RGBA_S3TC_DXT1_Format,[Oo]:f.RGB_S3TC_DXT1_Format,[Jo]:f.RGB_S3TC_DXT1_Format,[Xo]:f.RGBA_S3TC_DXT3_Format,[Wo]:f.RGBA_S3TC_DXT3_Format,[Zo]:f.RGBA_S3TC_DXT5_Format,[Yo]:f.RGBA_S3TC_DXT5_Format,[es]:f.RGBA_BPTC_Format,[$o]:f.RGBA_BPTC_Format},Xt={[ci]:f.FloatType,[oi]:f.HalfFloatType,[ti]:f.UnsignedByteType,[ri]:f.UnsignedByteType,[Ai]:f.FloatType,[ni]:f.HalfFloatType,[ei]:f.UnsignedByteType,[ai]:f.UnsignedByteType,[si]:f.FloatType,[ii]:f.HalfFloatType,[$r]:f.UnsignedByteType,[Zr]:f.UnsignedByteType,[ui]:f.UnsignedByteType,[di]:f.UnsignedByteType,[Pt]:f.HalfFloatType,[li]:f.UnsignedByteType,[hi]:f.UnsignedByteType};function fi(r){const e=r.dataFormatDescriptor[0];return e.colorPrimaries===1?e.transferFunction===2?f.SRGBColorSpace:f.LinearSRGBColorSpace:e.colorPrimaries===10?e.transferFunction===2?"display-p3":"display-p3-linear":(e.colorPrimaries===0||console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${e.colorPrimaries}"`),f.NoColorSpace)}async function pi(r){const e=r.split("?")[0].split(".").pop(),a=await fetch(r);if(!a.ok)throw new Error(`Failed to fetch ${r}: ${a.statusText}`);if(e==="json"){const t=await a.json();return handleJSONSubtree(t,mi(r))}if(e==="subtree")return async function(t,i){const n=new DataView(t),o=n.getBigUint64(8,!0),s=n.getBigUint64(16,!0),c=24,u=c+Number(o),A=u+(8-u%8)%8,d=A+Number(s),b=t.slice(c,u),h=new TextDecoder().decode(b).trim(),l=JSON.parse(h);if(!l.buffers)throw new Error("subtree has no buffers");const g=l.buffers.map(async E=>{if(E.uri){const p=new URL(E.uri,i).href,C=await fetch(p);if(!C.ok)throw new Error(`Failed to fetch binary file ${p}: ${C.statusText}`);return new Uint8Array(await C.arrayBuffer())}return new Uint8Array(t.slice(A,d))}),m=await Promise.all(g);return function(E,p){function C(D,F){if(!D)throw new Error("incomplete json subtree");if(D.constant){if(D.constant==0)return!1;if(D.constant==1)return!0}if(D.bitstream==null)throw new Error('json subtree "tileAvailability" does not specify a bitstream');if(!E.bufferViews||!E.bufferViews[D.bitstream])throw new Error('json subtree "bufferViews" does not specify a bitstream');const j=E.bufferViews[D.bitstream];return I(p[j.buffer],j.byteOffset,F)}function I(D,F,j){const M=j%8;return D[F+Math.floor(j/8)]>>M&!0}function x(D){let F=0;return F=D.z==null?Yt(D.x,D.y,D.level):$t(D.x,D.y,D.z,D.level),C(E.tileAvailability,F)}function y(D){let F=0;F=D.z==null?Yt(D.x,D.y,D.level):$t(D.x,D.y,D.z,D.level);const j=[];return E.contentAvailability.forEach(M=>{j.push(C(M,F))}),j}function w(D){let F=0;return F=D.z==null?Yt(D.x,D.y):$t(D.x,D.y,D.z),C(E.childSubtreeAvailability,F)}return{isTileAvailable:x,isContentAvailable:y,isChildSubtreeAvailable:w}}(l,m)}(await a.arrayBuffer(),mi(r));throw new Error(`Unsupported file extension: ${e}`)}function mi(r){const e=r.split("?")[0];return e.substring(0,e.lastIndexOf("/")+1)}function Ei(r){return r=1431655765&((r=858993459&((r=252645135&((r=16711935&((r&=65535)^r<<8))^r<<4))^r<<2))^r<<1)}function Yt(r,e,a){let t=0;return a&&(t=(Math.pow(4,a)-1)/3),t+(Ei(r)|Ei(e)<<1)}function Zt(r){return r=153391689&((r=51130563&((r=50393103&((r=4278190335&((r&=1023)^r<<16))^r<<8))^r<<4))^r<<2)}function $t(r,e,a,t){let i=0;return t&&(i=(Math.pow(8,t)-1)/7),i+(Zt(r)|Zt(e)<<1|Zt(a)<<2)}const Xa=new Map;async function er(r,e){if(!r.root||!r.root.implicitTiling)return r;if(!r.root.content&&!r.root.contents)throw new Error("implicit tiling requires a Template URI");let a=!0;r.root.implicitTiling.subdivisionScheme&&(a=r.root.implicitTiling.subdivisionScheme.toUpperCase()==="QUADTREE");let t="";r.root.implicitTiling.subtrees&&(r.root.implicitTiling.subtrees.uri?t=r.root.implicitTiling.subtrees.uri:r.root.implicitTiling.subtrees.url&&(t=r.root.implicitTiling.subtrees.url));let i=[];r.root.content?r.root.content.uri?i.push(r.root.content.uri):r.root.content.url&&i.push(r.root.content.url):r.root.contents&&r.root.contents.forEach(h=>{h.uri?i.push(h.uri):h.url&&i.push(h.url)});const n=function(h){const l=h.split("?")[0];return l.substring(0,l.lastIndexOf("/")+1)}(e);let o;a&&(o=t.replace("{level}",0).replace("{x}",0).replace("{y}",0)),a||(o=t.replace("{level}",0).replace("{x}",0).replace("{y}",0).replace("{z}",0));const s={level:0,x:0,y:0},c={level:0,x:0,y:0};a||(s.z=0,c.z=0),Xa.set(o,await pi(n+o));const u=Xa.get(o),A=[];u.isContentAvailable(c)&&i.forEach(h=>{let l;a&&(l=h.replace("{level}",s.level).replace("{x}",s.x).replace("{y}",s.y)),a||(l=h.replace("{level}",s.level).replace("{x}",s.x).replace("{y}",s.y).replace("{z}",s.z)),A.push({uri:l})});const d={geometricError:r.root.geometricError,boundingVolume:r.root.boundingVolume,refine:r.root.refine,globalAddress:s,localAddress:c,subtree:u,contents:A,getChildren:async()=>b(d)};return{root:d};async function b(h){const l=[];if(h.localAddress.level==r.root.implicitTiling.availableLevels-1)return l;if((h.localAddress.level+1)%r.root.implicitTiling.subtreeLevels==0){const g=it(h.localAddress),m=it(h.globalAddress),E=Ci(a,r.root.boundingVolume,m);for(let p=0;p<g.length;p++){const C=g[p],I=m[p];h.subtree.isChildSubtreeAvailable(C)&&(a&&t.replace("{level}",I.level).replace("{x}",I.x).replace("{y}",I.y),a||t.replace("{level}",I.level).replace("{x}",I.x).replace("{y}",I.y).replace("{z}",I.z)),Xa.has(o)||Xa.set(o,await pi(n+o));const x=Xa.get(o),y={level:0,x:0,y:0};a||(y.z=0);const w=[];x.isContentAvailable(y)&&i.forEach(F=>{let j;a&&(j=F.replace("{level}",I.level).replace("{x}",I.x).replace("{y}",I.y)),a||(j=F.replace("{level}",I.level).replace("{x}",I.x).replace("{y}",I.y).replace("{z}",I.z)),w.push({uri:j})});const D={geometricError:h.geometricError/2,boundingVolume:E[p],refine:r.root.refine,globalAddress:I,localAddress:y,subtree:x,contents:w,getChildren:async()=>b(D)};l.push(D)}}else{const g=it(h.localAddress),m=it(h.globalAddress),E=Ci(a,r.root.boundingVolume,m);for(let p=0;p<g.length;p++){const C=g[p],I=m[p];if(!h.subtree.isTileAvailable(C))continue;const x=[],y=h.subtree.isContentAvailable(C);for(let D=0;D<i.length;D++){if(!y[D])continue;const F=i[D];let j;a&&(j=F.replace("{level}",I.level).replace("{x}",I.x).replace("{y}",I.y)),a||(j=F.replace("{level}",I.level).replace("{x}",I.x).replace("{y}",I.y).replace("{z}",I.z)),x.push({uri:j})}const w={geometricError:h.geometricError/2,boundingVolume:E[p],refine:r.root.refine,globalAddress:I,localAddress:C,subtree:h.subtree,contents:x,getChildren:async()=>b(w)};l.push(w)}}return l.length>0?l:void 0}}function it(r){const{level:e,x:a,y:t,z:i}=r,n=e+1;let o=[];return o=i===void 0?[{level:n,x:2*a,y:2*t},{level:n,x:2*a+1,y:2*t},{level:n,x:2*a,y:2*t+1},{level:n,x:2*a+1,y:2*t+1}]:[{level:n,x:2*a,y:2*t,z:2*i},{level:n,x:2*a+1,y:2*t,z:2*i},{level:n,x:2*a,y:2*t+1,z:2*i},{level:n,x:2*a+1,y:2*t+1,z:2*i},{level:n,x:2*a,y:2*t,z:2*i+1},{level:n,x:2*a+1,y:2*t,z:2*i+1},{level:n,x:2*a,y:2*t+1,z:2*i+1},{level:n,x:2*a+1,y:2*t+1,z:2*i+1}],o}function Ci(r,e,a){const t=[];for(let i=0;i<a.length;i++)t.push(os(r,e,a[i]));return t}function os(r,e,a){if(e.region)return function(t,i,n){const[o,s,c,u,A,d]=i,b=(c-o)/2**n.level,h=(u-s)/2**n.level,l=t?0:(d-A)/2**n.level,g=o+b*n.x,m=s+h*n.y,E=g+b,p=m+h,C=t?A:A+l*n.z,I=t?d:C+l;return{region:[g,m,E,p,C,I]}}(r,e.region,a);if(e.box)return function(t,i,n){const o=i.slice(0,3),s=[i.slice(3,6),i.slice(6,9),i.slice(9,12)],c=1/Math.pow(2,n.level),u=[c,c,t?1:c],A=s.map((h,l)=>h.map(g=>g*u[l])),d=[o[0]-s[0][0]-s[1][0]-s[2][0],o[1]-s[0][1]-s[1][1]-s[2][1],o[2]-s[0][2]-s[1][2]-s[2][2]];return{box:[d[0]+(2*n.x+1)*(A[0][0]+A[1][0]+A[2][0]),d[1]+(2*n.y+1)*(A[0][1]+A[1][1]+A[2][1]),t?o[2]:d[2]+(2*n.z+1)*(A[0][2]+A[1][2]+A[2][2])].concat(...A)}}(r,e.box,a);throw new Error("Unsupported bounding volume type")}(function(){var r,e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};function a(c){if(!c)throw new Error("Assertion failed")}function t(c){return new Uint8Array(c.buffer,c.byteOffset,c.byteLength)}function i(c,u,A,d,b){var h=r.exports.sbrk,l=h(u),g=h(d*b),m=new Uint8Array(r.exports.memory.buffer);m.set(t(A),g);var E=c(l,u,g,d,b),p=new Uint8Array(E);return p.set(m.subarray(l,l+E)),h(l-h(0)),p}function n(c){for(var u=0,A=0;A<c.length;++A)var d=c[A];return u}function o(c,u){if(a(u==2||u==4),u==4)return new Uint32Array(c.buffer,c.byteOffset,c.byteLength/4);var A=new Uint16Array(c.buffer,c.byteOffset,c.byteLength/2);return new Uint32Array(A)}function s(c,u,A,d,b,h,l){var g=r.exports.sbrk,m=g(A*d),E=g(A*h),p=new Uint8Array(r.exports.memory.buffer);p.set(t(u),E),c(m,A,d,b,E,l);var C=new Uint8Array(A*d);return C.set(p.subarray(m,m+A*d)),g(m-g(0)),C}WebAssembly.instantiate(function(c){for(var u=new Uint8Array(c.length),A=0;A<c.length;++A){var d=c.charCodeAt(A);u[A]=d>96?d-97:d>64?d-39:d+4}var b=0;for(A=0;A<c.length;++A)u[b++]=u[A]<60?e[u[A]]:64*(u[A]-60)+u[++A];return u.buffer.slice(0,b)}("b9H79Tebbbe9ok9Geueu9Geub9Gbb9Gruuuuuuueu9Gvuuuuueu9Gduueu9Gluuuueu9Gvuuuuub9Gouuuuuub9Gluuuub9Giuuueui8AYdilveoveovrrwrrDDoDrbqqbelve9Weiiviebeoweuec;G:Qdkr:nlAo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9mW4W2be8A9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWVbd8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9c9V919U9KbiE9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949wWV79P9V9UblY9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWVbv8E9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWV9c9V919U9Kbo8A9TW79O9V9Wt9FW9U9J9V9KW69U9KW949wWV79P9V9UbrE9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JWbwa9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JW9c9V919U9KbDL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9p9JtbqK9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9r919HtbkL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVT949WbxE9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OWbsa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OW9ttV9P9Wbza9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9WbHK9TW79O9V9Wt9F79W9Ht9P9H29t9VVt9sW9T9H9WbOl79IV9RbCDwebcekdKLqN9OYdbk:Bhdhud9:8Jjjjjbc;qw9Rgr8KjjjjbcbhwdnaeTmbabcbyd;C:kjjbaoaocb9iEgDc:GeV86bbarc;adfcbcjdz:wjjjb8AdnaiTmbarc;adfadalz:vjjjb8Akarc;abfalfcbcbcjdal9RalcFe0Ez:wjjjb8Aarc;abfarc;adfalz:vjjjb8AarcUf9cb83ibarc8Wf9cb83ibarcyf9cb83ibarcaf9cb83ibarcKf9cb83ibarczf9cb83ibar9cb83iwar9cb83ibcj;abal9Uc;WFbGcjdalca0Ehqdnaicd6mbavcd9imbaDTmbadcefhkaqci2gxal2hmarc;alfclfhParc;qlfceVhsarc;qofclVhzarc;qofcKfhHarc;qofczfhOcbhAincdhCcbhodnavci6mbaH9cb83ibaO9cb83ibar9cb83i;yoar9cb83i;qoadaAfgoybbhXcbhQincbhwcbhLdninaoalfhKaoybbgYaX7aLVhLawcP0meaKhoaYhXawcefgwaQfai6mbkkcbhXarc;qofhwincwh8AcwhEdnaLaX93gocFeGg3cs0mbclhEa3ci0mba3cb9hcethEkdnaocw4cFeGg3cs0mbclh8Aa3ci0mba3cb9hceth8Aka8AaEfh3awydbh5cwh8AcwhEdnaocz4cFeGg8Ecs0mbclhEa8Eci0mba8Ecb9hcethEka3a5fh3dnaocFFFFb0mbclh8AaocFFF8F0mbaocFFFr0ceth8Akawa3aEfa8AfBdbawclfhwaXcefgXcw9hmbkaKhoaYhXaQczfgQai6mbkcbhocehwazhLinawaoaLydbarc;qofaocdtfydb6EhoaLclfhLawcefgwcw9hmbkcihCkcbh3arc;qlfcbcjdz:wjjjb8Aarc;alfcwfcbBdbar9cb83i;alaoclth8Fadhaaqhhakh5inarc;qlfadcba3cufgoaoa30Eal2falz:vjjjb8Aaiahaiah6Ehgdnaqaia39Ra3aqfai6EgYcsfc9WGgoaY9nmbarc;qofaYfcbaoaY9Rz:wjjjb8Akada3al2fh8Jcbh8Kina8Ka8FVcl4hQarc;alfa8Kcdtfh8LaAh8Mcbh8Nina8NaAfhwdndndndndndna8KPldebidkasa8Mc98GgLfhoa5aLfh8Aarc;qlfawc98GgLfRbbhXcwhwinaoRbbawtaXVhXaocefhoawcwfgwca9hmbkaYTmla8Ncith8Ea8JaLfhEcbhKinaERbbhLcwhoa8AhwinawRbbaotaLVhLawcefhwaocwfgoca9hmbkarc;qofaKfaLaX7aQ93a8E486bba8Aalfh8AaEalfhEaLhXaKcefgKaY9hmbxlkkaYTmia8Mc9:Ghoa8NcitcwGhEarc;qlfawceVfRbbcwtarc;qlfawc9:GfRbbVhLarc;qofhwaghXinawa5aofRbbcwtaaaofRbbVg8AaL9RgLcetaLcztcz91cs47cFFiGaE486bbaoalfhoawcefhwa8AhLa3aXcufgX9hmbxikkaYTmda8Jawfhoarc;qlfawfRbbhLarc;qofhwaghXinawaoRbbg8AaL9RgLcetaLcKtcK91cr4786bbawcefhwaoalfhoa8AhLa3aXcufgX9hmbxdkkaYTmeka8LydbhEcbhKarc;qofhoincdhLcbhwinaLaoawfRbbcb9hfhLawcefgwcz9hmbkclhXcbhwinaXaoawfRbbcd0fhXawcefgwcz9hmbkcwh8Acbhwina8AaoawfRbbcP0fh8Aawcefgwcz9hmbkaLaXaLaX6Egwa8Aawa8A6Egwczawcz6EaEfhEaoczfhoaKczfgKaY6mbka8LaEBdbka8Mcefh8Ma8Ncefg8Ncl9hmbka8Kcefg8KaC9hmbkaaamfhaahaxfhha5amfh5a3axfg3ai6mbkcbhocehwaPhLinawaoaLydbarc;alfaocdtfydb6EhoaLclfhLawcefgXhwaCaX9hmbkaraAcd4fa8FcdVaoaocdSE86bbaAclfgAal6mbkkabaefh8Kabcefhoalcd4gecbaDEhkadcefhOarc;abfceVhHcbhmdndninaiam9nmearc;qofcbcjdz:wjjjb8Aa8Kao9Rak6mdadamal2gwfhxcbh8JaOawfhzaocbakz:wjjjbghakfh5aqaiam9Ramaqfai6Egscsfgocl4cifcd4hCaoc9WGg8LThPindndndndndndndndndndnaDTmbara8Jcd4fRbbgLciGPlbedlbkasTmdaxa8Jfhoarc;abfa8JfRbbhLarc;qofhwashXinawaoRbbg8AaL9RgLcetaLcKtcK91cr4786bbawcefhwaoalfhoa8AhLaXcufgXmbxikkasTmia8JcitcwGhEarc;abfa8JceVfRbbcwtarc;abfa8Jc9:GgofRbbVhLaxaofhoarc;qofhwashXinawao8Vbbg8AaL9RgLcetaLcztcz91cs47cFFiGaE486bbawcefhwaoalfhoa8AhLaXcufgXmbxdkkaHa8Jc98GgEfhoazaEfh8Aarc;abfaEfRbbhXcwhwinaoRbbawtaXVhXaocefhoawcwfgwca9hmbkasTmbaLcl4hYa8JcitcKGh3axaEfhEcbhKinaERbbhLcwhoa8AhwinawRbbaotaLVhLawcefhwaocwfgoca9hmbkarc;qofaKfaLaX7aY93a3486bba8Aalfh8AaEalfhEaLhXaKcefgKas9hmbkkaDmbcbhoxlka8LTmbcbhodninarc;qofaofgwcwf8Pibaw8Pib:e9qTmeaoczfgoa8L9pmdxbkkdnavmbcehoxikcbhEaChKaChYinarc;qofaEfgocwf8Pibhyao8Pibh8PcdhLcbhwinaLaoawfRbbcb9hfhLawcefgwcz9hmbkclhXcbhwinaXaoawfRbbcd0fhXawcefgwcz9hmbkcwh8Acbhwina8AaoawfRbbcP0fh8Aawcefgwcz9hmbkaLaXaLaX6Egoa8Aaoa8A6Egoczaocz6EaYfhYaocucbaya8P:e9cb9sEgwaoaw6EaKfhKaEczfgEa8L9pmdxbkkaha8Jcd4fgoaoRbbcda8JcetcoGtV86bbxikdnaKas6mbaYas6mbaha8Jcd4fgoaoRbbcia8JcetcoGtV86bba8Ka59Ras6mra5arc;qofasz:vjjjbasfh5xikaKaY9phokaha8Jcd4fgwawRbbaoa8JcetcoGtV86bbka8Ka59RaC6mla5cbaCz:wjjjbgAaCfhYdndna8LmbaPhoxekdna8KaY9RcK9pmbaPhoxekaocdtc:q1jjbfcj1jjbaDEg5ydxggcetc;:FFFeGh8Fcuh3cuagtcu7cFeGhacbh8Marc;qofhLinarc;qofa8MfhQczhEdndndnagPDbeeeeeeedekcucbaQcwf8PibaQ8Pib:e9cb9sEhExekcbhoa8FhEinaEaaaLaofRbb9nfhEaocefgocz9hmbkkcih8Ecbh8Ainczhwdndndna5a8AcdtfydbgKPDbeeeeeeedekcucbaQcwf8PibaQ8Pib:e9cb9sEhwxekaKcetc;:FFFeGhwcuaKtcu7cFeGhXcbhoinawaXaLaofRbb9nfhwaocefgocz9hmbkkdndnawaE6mbaKa39hmeawaE9hmea5a8EcdtfydbcwSmeka8Ah8EawhEka8Acefg8Aci9hmbkaAa8Mco4fgoaoRbba8Ea8Mci4coGtV86bbdndndna5a8Ecdtfydbg3PDdbbbbbbbebkdncwa39Tg8ETmbcua3tcu7hwdndna3ceSmbcbh8NaLhQinaQhoa8Eh8AcbhXinaoRbbgEawcFeGgKaEaK6EaXa3tVhXaocefhoa8Acufg8AmbkaYaX86bbaQa8EfhQaYcefhYa8Na8Efg8Ncz6mbxdkkcbh8NaLhQinaQhoa8Eh8AcbhXinaoRbbgEawcFeGgKaEaK6EaXcetVhXaocefhoa8Acufg8AmbkaYaX:T9cFe:d9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:9ca188bbaQa8EfhQaYcefhYa8Na8Efg8Ncz6mbkkcbhoinaYaLaofRbbgX86bbaYaXawcFeG9pfhYaocefgocz9hmbxikkdna3ceSmbinaYcb86bbaYcefhYxbkkinaYcb86bbaYcefhYxbkkaYaQ8Pbb83bbaYcwfaQcwf8Pbb83bbaYczfhYka8Mczfg8Ma8L9pgomeaLczfhLa8KaY9RcK9pmbkkaoTmlaYh5aYTmlka8Jcefg8Jal9hmbkarc;abfaxascufal2falz:vjjjb8Aasamfhma5hoa5mbkcbhwxdkdna8Kao9RakalfgwcKcaaDEgLawaL0EgX9pmbcbhwxdkdnawaL9pmbaocbaXaw9Rgwz:wjjjbawfhokaoarc;adfalz:vjjjbalfhodnaDTmbaoaraez:vjjjbaefhokaoab9Rhwxekcbhwkarc;qwf8Kjjjjbawk5babaeadaialcdcbyd;C:kjjbz:bjjjbk9reduaecd4gdaefgicaaica0Eabcj;abae9Uc;WFbGcjdaeca0Egifcufai9Uae2aiadfaicl4cifcd4f2fcefkmbcbabBd;C:kjjbk:Ese5u8Jjjjjbc;ae9Rgl8Kjjjjbcbhvdnaici9UgocHfae0mbabcbyd;m:kjjbgrc;GeV86bbalc;abfcFecjez:wjjjb8AalcUfgw9cu83ibalc8WfgD9cu83ibalcyfgq9cu83ibalcafgk9cu83ibalcKfgx9cu83ibalczfgm9cu83ibal9cu83iwal9cu83ibabaefc9WfhPabcefgsaofhednaiTmbcmcsarcb9kgzEhHcbhOcbhAcbhCcbhXcbhQindnaeaP9nmbcbhvxikaQcufhvadaCcdtfgLydbhKaLcwfydbhYaLclfydbh8AcbhEdndndninalc;abfavcsGcitfgoydlh3dndndnaoydbgoaK9hmba3a8ASmekdnaoa8A9hmba3aY9hmbaEcefhExekaoaY9hmea3aK9hmeaEcdfhEkaEc870mdaXcufhvaLaEciGcx2goc;i1jjbfydbcdtfydbh3aLaoc;e1jjbfydbcdtfydbh8AaLaoc;a1jjbfydbcdtfydbhKcbhodnindnalavcsGcdtfydba39hmbaohYxdkcuhYavcufhvaocefgocz9hmbkkaOa3aOSgvaYce9iaYaH9oVgoGfhOdndndncbcsavEaYaoEgvcs9hmbarce9imba3a3aAa3cefaASgvEgAcefSmecmcsavEhvkasavaEcdtc;WeGV86bbavcs9hmea3aA9Rgvcetavc8F917hvinaeavcFb0crtavcFbGV86bbaecefheavcje6hoavcr4hvaoTmbka3hAxvkcPhvasaEcdtcPV86bba3hAkavTmiavaH9omicdhocehEaQhYxlkavcufhvaEclfgEc;ab9hmbkkdnaLceaYaOSceta8AaOSEcx2gvc;a1jjbfydbcdtfydbgKTaLavc;e1jjbfydbcdtfydbg8AceSGaLavc;i1jjbfydbcdtfydbg3cdSGaOcb9hGazGg5ce9hmbaw9cu83ibaD9cu83ibaq9cu83ibak9cu83ibax9cu83ibam9cu83ibal9cu83iwal9cu83ibcbhOkcbhEaXcufgvhodnindnalaocsGcdtfydba8A9hmbaEhYxdkcuhYaocufhoaEcefgEcz9hmbkkcbhodnindnalavcsGcdtfydba39hmbaohExdkcuhEavcufhvaocefgocz9hmbkkaOaKaOSg8EfhLdndnaYcm0mbaYcefhYxekcbcsa8AaLSgvEhYaLavfhLkdndnaEcm0mbaEcefhExekcbcsa3aLSgvEhEaLavfhLkc9:cua8EEh8FcbhvaEaYcltVgacFeGhodndndninavc:W1jjbfRbbaoSmeavcefgvcz9hmbxdkka5aKaO9havcm0VVmbasavc;WeV86bbxekasa8F86bbaeaa86bbaecefhekdna8EmbaKaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaKhAkdnaYcs9hmba8AaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka8AhAkdnaEcs9hmba3aA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka3hAkalaXcdtfaKBdbaXcefcsGhvdndnaYPzbeeeeeeeeeeeeeebekalavcdtfa8ABdbaXcdfcsGhvkdndnaEPzbeeeeeeeeeeeeeebekalavcdtfa3BdbavcefcsGhvkcihoalc;abfaQcitfgEaKBdlaEa8ABdbaQcefcsGhYcdhEavhXaLhOxekcdhoalaXcdtfa3BdbcehEaXcefcsGhXaQhYkalc;abfaYcitfgva8ABdlava3Bdbalc;abfaQaEfcsGcitfgva3BdlavaKBdbascefhsaQaofcsGhQaCcifgCai6mbkkdnaeaP9nmbcbhvxekcbhvinaeavfavc:W1jjbfRbb86bbavcefgvcz9hmbkaeab9Ravfhvkalc;aef8KjjjjbavkZeeucbhddninadcefgdc8F0meceadtae6mbkkadcrfcFeGcr9Uci2cdfabci9U2cHfkmbcbabBd;m:kjjbk:Adewu8Jjjjjbcz9Rhlcbhvdnaicvfae0mbcbhvabcbRb;m:kjjbc;qeV86bbal9cb83iwabcefhoabaefc98fhrdnaiTmbcbhwcbhDindnaoar6mbcbskadaDcdtfydbgqalcwfawaqav9Rgvavc8F91gv7av9Rc507gwcdtfgkydb9Rgvc8E91c9:Gavcdt7awVhvinaoavcFb0gecrtavcFbGV86bbavcr4hvaocefhoaembkakaqBdbaqhvaDcefgDai9hmbkkdnaoar9nmbcbskaocbBbbaoab9RclfhvkavkBeeucbhddninadcefgdc8F0meceadtae6mbkkadcwfcFeGcr9Uab2cvfk:bvli99dui99ludnaeTmbcuadcetcuftcu7:Zhvdndncuaicuftcu7:ZgoJbbbZMgr:lJbbb9p9DTmbar:Ohwxekcjjjj94hwkcbhicbhDinalclfIdbgrJbbbbJbbjZalIdbgq:lar:lMalcwfIdbgk:lMgr:varJbbbb9BEgrNhxaqarNhrdndnakJbbbb9GTmbaxhqxekJbbjZar:l:tgqaq:maxJbbbb9GEhqJbbjZax:l:tgxax:marJbbbb9GEhrkdndnalcxfIdbgxJbbj:;axJbbj:;9GEgkJbbjZakJbbjZ9FEavNJbbbZJbbb:;axJbbbb9GEMgx:lJbbb9p9DTmbax:Ohmxekcjjjj94hmkdndnaqJbbj:;aqJbbj:;9GEgxJbbjZaxJbbjZ9FEaoNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:OhPxekcjjjj94hPkdndnarJbbj:;arJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;arJbbbb9GEMgr:lJbbb9p9DTmbar:Ohsxekcjjjj94hskdndnadcl9hmbabaifgzas86bbazcifam86bbazcdfaw86bbazcefaP86bbxekabaDfgzas87ebazcofam87ebazclfaw87ebazcdfaP87ebkalczfhlaiclfhiaDcwfhDaecufgembkkk;hlld99eud99eudnaeTmbdndncuaicuftcu7:ZgvJbbbZMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikaic;8FiGhrinabcofcicdalclfIdb:lalIdb:l9EgialcwfIdb:lalaicdtfIdb:l9EEgialcxfIdb:lalaicdtfIdb:l9EEgiarV87ebdndnJbbj:;JbbjZalaicdtfIdbJbbbb9DEgoalaicd7cdtfIdbJ;Zl:1ZNNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabcdfaq87ebdndnalaicefciGcdtfIdbJ;Zl:1ZNaoNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabaq87ebdndnaoalaicufciGcdtfIdbJ;Zl:1ZNNgoJbbj:;aoJbbj:;9GEgwJbbjZawJbbjZ9FEavNJbbbZJbbb:;aoJbbbb9GEMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikabclfai87ebabcwfhbalczfhlaecufgembkkk;3viDue99eu8Jjjjjbcjd9Rgo8Kjjjjbadcd4hrdndndndnavcd9hmbadcl6meaohwarhDinawc:CuBdbawclfhwaDcufgDmbkaeTmiadcl6mdarcdthqalhkcbhxinaohwakhDarhminawawydbgPcbaDIdbgs:8cL4cFeGc:cufasJbbbb9BEgzaPaz9kEBdbaDclfhDawclfhwamcufgmmbkakaqfhkaxcefgxaeSmixbkkaeTmdxekaeTmekarcdthkavce9hhqadcl6hdcbhxindndndnaqmbadmdc:CuhDalhwarhminaDcbawIdbgs:8cL4cFeGc:cufasJbbbb9BEgPaDaP9kEhDawclfhwamcufgmmbxdkkc:CuhDdndnavPleddbdkadmdaohwalhmarhPinawcbamIdbgs:8cL4cFeGgzc;:bazc;:b0Ec:cufasJbbbb9BEBdbamclfhmawclfhwaPcufgPmbxdkkadmecbhwarhminaoawfcbalawfIdbgs:8cL4cFeGgPc8AaPc8A0Ec:cufasJbbbb9BEBdbawclfhwamcufgmmbkkadmbcbhwarhPinaDhmdnavceSmbaoawfydbhmkdndnalawfIdbgscjjj;8iamai9RcefgmcLt9R::NJbbbZJbbb:;asJbbbb9GEMgs:lJbbb9p9DTmbas:Ohzxekcjjjj94hzkabawfazcFFFrGamcKtVBdbawclfhwaPcufgPmbkkabakfhbalakfhlaxcefgxae9hmbkkaocjdf8Kjjjjbk;YqdXui998Jjjjjbc:qd9Rgv8Kjjjjbavc:Sefcbc;Kbz:wjjjb8AcbhodnadTmbcbhoaiTmbdndnabaeSmbaehrxekavcuadcdtgwadcFFFFi0Ecbyd;u:kjjbHjjjjbbgrBd:SeavceBd:mdaraeawz:vjjjb8Akavc:GefcwfcbBdbav9cb83i:Geavc:Gefaradaiavc:Sefz:ojjjbavyd:GehDadci9Ugqcbyd;u:kjjbHjjjjbbheavc:Sefavyd:mdgkcdtfaeBdbavakcefgwBd:mdaecbaqz:wjjjbhxavc:SefawcdtfcuaicdtaicFFFFi0Ecbyd;u:kjjbHjjjjbbgmBdbavakcdfgPBd:mdalc;ebfhsaDheamhwinawalIdbasaeydbgzcwazcw6EcdtfIdbMUdbaeclfheawclfhwaicufgimbkavc:SefaPcdtfcuaqcdtadcFFFF970Ecbyd;u:kjjbHjjjjbbgPBdbdnadci6mbarheaPhwaqhiinawamaeydbcdtfIdbamaeclfydbcdtfIdbMamaecwfydbcdtfIdbMUdbaecxfheawclfhwaicufgimbkkakcifhoalc;ebfhHavc;qbfhOavheavyd:KehAavyd:OehCcbhzcbhwcbhXcehQinaehLcihkarawci2gKcdtfgeydbhsaeclfydbhdabaXcx2fgicwfaecwfydbgYBdbaiclfadBdbaiasBdbaxawfce86bbaOaYBdwaOadBdlaOasBdbaPawcdtfcbBdbdnazTmbcihkaLhiinaOakcdtfaiydbgeBdbakaeaY9haeas9haead9hGGfhkaiclfhiazcufgzmbkkaXcefhXcbhzinaCaAarazaKfcdtfydbcdtgifydbcdtfgYheaDaifgdydbgshidnasTmbdninaeydbawSmeaeclfheaicufgiTmdxbkkaeaYascdtfc98fydbBdbadadydbcufBdbkazcefgzci9hmbkdndnakTmbcuhwJbbbbh8Acbhdavyd:KehYavyd:OehKindndnaDaOadcdtfydbcdtgzfydbgembadcefhdxekadcs0hiamazfgsIdbhEasalcbadcefgdaiEcdtfIdbaHaecwaecw6EcdtfIdbMg3Udba3aE:th3aecdthiaKaYazfydbcdtfheinaPaeydbgzcdtfgsa3asIdbMgEUdbaEa8Aa8AaE9DgsEh8AazawasEhwaeclfheaic98fgimbkkadak9hmbkawcu9hmekaQaq9pmdindnaxaQfRbbmbaQhwxdkaqaQcefgQ9hmbxikkakczakcz6EhzaOheaLhOawcu9hmbkkaocdtavc:Seffc98fhedninaoTmeaeydbcbyd;q:kjjbH:bjjjbbaec98fheaocufhoxbkkavc:qdf8Kjjjjbk;IlevucuaicdtgvaicFFFFi0Egocbyd;u:kjjbHjjjjbbhralalyd9GgwcdtfarBdbalawcefBd9GabarBdbaocbyd;u:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdlcuadcdtadcFFFFi0Ecbyd;u:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdwabydbcbavz:wjjjb8Aadci9UhDdnadTmbabydbhoaehladhrinaoalydbcdtfgvavydbcefBdbalclfhlarcufgrmbkkdnaiTmbabydbhlabydlhrcbhvaihoinaravBdbarclfhralydbavfhvalclfhlaocufgombkkdnadci6mbabydlhrabydwhvcbhlinaecwfydbhoaeclfydbhdaraeydbcdtfgwawydbgwcefBdbavawcdtfalBdbaradcdtfgdadydbgdcefBdbavadcdtfalBdbaraocdtfgoaoydbgocefBdbavaocdtfalBdbaecxfheaDalcefgl9hmbkkdnaiTmbabydlheabydbhlinaeaeydbalydb9RBdbalclfhlaeclfheaicufgimbkkkQbabaeadaic;K1jjbz:njjjbkQbabaeadaic;m:jjjbz:njjjbk9DeeuabcFeaicdtz:wjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk:Vvioud9:du8Jjjjjbc;Wa9Rgl8Kjjjjbcbhvalcxfcbc;Kbz:wjjjb8AalcuadcitgoadcFFFFe0Ecbyd;u:kjjbHjjjjbbgrBdxalceBd2araeadaicez:tjjjbalcuaoadcjjjjoGEcbyd;u:kjjbHjjjjbbgwBdzadcdthednadTmbabhiinaiavBdbaiclfhiadavcefgv9hmbkkawaefhDalabBdwalawBdl9cbhqindnadTmbaq9cq9:hkarhvaDhiadheinaiav8Pibak1:NcFrG87ebavcwfhvaicdfhiaecufgembkkalclfaq:NceGcdtfydbhxalclfaq9ce98gq:NceGcdtfydbhmalc;Wbfcbcjaz:wjjjb8AaDhvadhidnadTmbinalc;Wbfav8VebcdtfgeaeydbcefBdbavcdfhvaicufgimbkkcbhvcbhiinalc;WbfavfgeydbhoaeaiBdbaoaifhiavclfgvcja9hmbkadhvdndnadTmbinalc;WbfaDamydbgicetf8VebcdtfgeaeydbgecefBdbaxaecdtfaiBdbamclfhmavcufgvmbkaq9cv9smdcbhvinabawydbcdtfavBdbawclfhwadavcefgv9hmbxdkkaq9cv9smekkclhvdninavc98Smealcxfavfydbcbyd;q:kjjbH:bjjjbbavc98fhvxbkkalc;Waf8Kjjjjbk:Jwliuo99iud9:cbhv8Jjjjjbca9Rgoczfcwfcbyd:8:kjjbBdbaocb8Pd:0:kjjb83izaocwfcbyd;i:kjjbBdbaocb8Pd;a:kjjb83ibaicd4hrdndnadmbJFFuFhwJFFuuhDJFFuuhqJFFuFhkJFFuuhxJFFuFhmxekarcdthPaehsincbhiinaoczfaifgzasaifIdbgwazIdbgDaDaw9EEUdbaoaifgzawazIdbgDaDaw9DEUdbaiclfgicx9hmbkasaPfhsavcefgvad9hmbkaoIdKhDaoIdwhwaoIdChqaoIdlhkaoIdzhxaoIdbhmkdnadTmbJbbbbJbFu9hJbbbbamax:tgmamJbbbb9DEgmakaq:tgkakam9DEgkawaD:tgwawak9DEgw:vawJbbbb9BEhwdnalmbarcdthoindndnaeclfIdbaq:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:S9cC:ghHdndnaeIdbax:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikaHai:S:ehHdndnaecwfIdbaD:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabaHai:T9cy:g:e83ibaeaofheabcwfhbadcufgdmbxdkkarcdthoindndnaeIdbax:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cv9:9c;j:KM;j:KM;j:Kd:dhOdndnaeclfIdbaq:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cq9:9cM;j:KM;j:KM;jl:daO:ehOdndnaecwfIdbaD:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabaOai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cC9:9c:KM;j:KM;j:KMD:d:e83ibaeaofheabcwfhbadcufgdmbkkk9teiucbcbyd;y:kjjbgeabcifc98GfgbBd;y:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;y:kjjbgeabcrfc94GfgbBd;y:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd;y:kjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd;y:kjjbfgdBd;y:kjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk;Qddbcjwk;mdbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbbbbbbbbbbbbb4:h9w9N94:P:gW:j9O:ye9Pbbbbbbebbbdbbbebbbdbbbbbbbdbbbbbbbebbbbbbb:l29hZ;69:9kZ;N;76Z;rg97Z;z;o9xZ8J;B85Z;:;u9yZ;b;k9HZ:2;Z9DZ9e:l9mZ59A8KZ:r;T3Z:A:zYZ79OHZ;j4::8::Y:D9V8:bbbb9s:49:Z8R:hBZ9M9M;M8:L;z;o8:;8:PG89q;x:J878R:hQ8::M:B;e87bbbbbbjZbbjZbbjZ:E;V;N8::Y:DsZ9i;H;68:xd;R8:;h0838:;W:NoZbbbb:WV9O8:uf888:9i;H;68:9c9G;L89;n;m9m89;D8Ko8:bbbbf:8tZ9m836ZS:2AZL;zPZZ818EZ9e:lxZ;U98F8:819E;68:FFuuFFuuFFuuFFuFFFuFFFuFbc;mqkzebbbebbbdbbb9G:vbb"),{}).then(function(c){(r=c.instance).exports.__wasm_call_ctors(),r.exports.meshopt_encodeVertexVersion(0),r.exports.meshopt_encodeIndexVersion(1)})})();var Ii=function(){var r=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var a,t=WebAssembly.validate(r)?n("b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q:6dkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;G9Mqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk:183lYud97dur978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxavaialfgmar9Rgoad;8qbbcj;abad9Uc;WFbGcjdadca0EhPdndndnadTmbaoadfhscbhzinaeaz9nmdamax9RaD6miabazad2fhHaxaDfhOaPaeaz9RazaPfae6EgAcsfgocl4cifcd4hCavcj;cbfaoc9WGgXcetfhQavcj;cbfaXci2fhLavcj;cbfaXfhKcbhYaoc;ab6h8AincbhodnawTmbaxaYcd4fRbbhokaocFeGhEcbh3avcj;cbfh5indndndndnaEa3cet4ciGgoc9:fPdebdkamaO9RaX6mwavcj;cbfa3aX2faOaX;8qbbaOaAfhOxdkavcj;cbfa3aX2fcbaX;8kbxekamaO9RaC6moaoclVcbawEhraOaCfhocbhidna8Ambamao9Rc;Gb6mbcbhlina5alfhidndndndndndnaOalco4fRbbgqciGarfPDbedibledibkaipxbbbbbbbbbbbbbbbbpklbxlkaiaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaiaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaiaopbbbpklbaoczfhoxekaiaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqcd4ciGarfPDbedibledibkaiczfpxbbbbbbbbbbbbbbbbpklbxlkaiczfaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaiczfaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaiczfaopbbbpklbaoczfhoxekaiczfaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqcl4ciGarfPDbedibledibkaicafpxbbbbbbbbbbbbbbbbpklbxlkaicafaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaicafaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaicafaopbbbpklbaoczfhoxekaicafaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqco4arfPDbedibledibkaic8Wfpxbbbbbbbbbbbbbbbbpklbxlkaic8Wfaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngicitc:q1jjbfpbibaic:q:yjjbfRbbgipsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaiaoclffaqc:q:yjjbfRbbfhoxikaic8Wfaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngicitc:q1jjbfpbibaic:q:yjjbfRbbgipsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaiaocwffaqc:q:yjjbfRbbfhoxdkaic8Wfaopbbbpklbaoczfhoxekaic8WfaopbbdaoRbbgicitc:q1jjbfpbibaic:q:yjjbfRbbgipsaoRbegqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaiaocdffaqc:q:yjjbfRbbfhokalc;abfhialcjefaX0meaihlamao9Rc;Fb0mbkkdnaiaX9pmbaici4hlinamao9RcK6mwa5aifhqdndndndndndnaOaico4fRbbalcoG4ciGarfPDbedibledibkaqpxbbbbbbbbbbbbbbbbpkbbxlkaqaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spkbbaaaoclffahc:q:yjjbfRbbfhoxikaqaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spkbbaaaocwffahc:q:yjjbfRbbfhoxdkaqaopbbbpkbbaoczfhoxekaqaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpkbbaaaocdffahc:q:yjjbfRbbfhokalcdfhlaiczfgiaX6mbkkaohOaoTmoka5aXfh5a3cefg3cl9hmbkdndndndnawTmbasaYcd4fRbbglciGPlbedwbkaXTmdavcjdfaYfhlavaYfpbdbhgcbhoinalavcj;cbfaofpblbg8JaKaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaQaofpblbg8MaLaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Ecep9Ta8Epxeeeeeeeeeeeeeeeeg8Fp9op9Hp9rg8Eagp9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8LaypmwDKYqk8AExm35Ps8E8Fg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Ug8Fp9Abbbaladfgla8Fa8Ea8Epmlvorlvorlvorlvorp9Ug8Fp9Abbbaladfgla8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9Ug8Fp9Abbbaladfgla8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9AbbbaladfhlaoczfgoaX6mbxikkaXTmeavcjdfaYfhlavaYfpbdbhgcbhoinalavcj;cbfaofpblbg8JaKaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaQaofpblbg8MaLaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Ecep:nea8Epxebebebebebebebebg8Fp9op:bep9rg8Eagp:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8LaypmwDKYqk8AExm35Ps8E8Fg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeg8Fp9Abbbaladfgla8Fa8Ea8Epmlvorlvorlvorlvorp:oeg8Fp9Abbbaladfgla8Fa8Ea8EpmwDqkwDqkwDqkwDqkp:oeg8Fp9Abbbaladfgla8Fa8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9AbbbaladfhlaoczfgoaX6mbxdkkaXTmbcbhocbalcl4gl9Rc8FGhiavcjdfaYfhravaYfpbdbh8Finaravcj;cbfaofpblbggaKaofpblbg8JpmbzeHdOiAlCvXoQrLg8KaQaofpblbg8LaLaofpblbg8MpmbzeHdOiAlCvXoQrLg8NpmbezHdiOAlvCXorQLg8Eaip:Rea8Ealp:Sep9qg8Ea8Fp9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Fa8Ka8NpmwDKYqk8AExm35Ps8E8Fg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Faga8JpmwKDYq8AkEx3m5P8Es8Fgga8La8MpmwKDYq8AkEx3m5P8Es8Fg8JpmbezHdiOAlvCXorQLg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Faga8JpmwDKYqk8AExm35Ps8E8Fg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9AbbbaradfhraoczfgoaX6mbkkaYclfgYad6mbkaHavcjdfaAad2;8qbbavavcjdfaAcufad2fad;8qbbaAazfhzc9:hoaOhxaOmbxlkkaeTmbaDalfhrcbhocuhlinaralaD9RglfaD6mdaPaeao9RaoaPfae6Eaofgoae6mbkaial9Rhxkcbc99amax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaokwbz:bjjjbk:TseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiaPfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaOfhiazaOfhxxekaxcbalRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhAascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhzaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkaOhlxekalcefhlkaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDclfaO87ebaDcdfaz87ebxekabarcdtfgDaABdbaDcwfaOBdbaDclfazBdbkavc;abfaocitfgDazBdbaDaABdlavaicdtfaABdbavc;abfaocefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfaocdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnaecvfal9nmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:SPliuo97eue978Jjjjjbca9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalaeSmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskdnalTmbcbhvabhdinadczfgxaxpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;7eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oaoarpmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalaeSmbaiczfpxbbbbbbbbbbbbbbbbgopklbaiaopklbaiabalcitfgdaeciGglcitgv;8qbbdnalTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;7eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oaoarpmbezHdiOAlvCXorQLp9qpklbkadaiav;8qbbkk:oDllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalaeSmbaiczfpxbbbbbbbbbbbbbbbbgkpklbaiakpklbaiabalcitfgoaeciGgvcitgw;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkaoaiaw;8qbbkk;uddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnavalSmbaic8WfpxbbbbbbbbbbbbbbbbgopklbaicafaopklbaiczfaopklbaiaopklbaiabavcdtfgdalciGgecdtgv;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkadaiav;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz:Dbb"):n("b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:W:Odkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:S86qdbk;jYi5ud9:du8Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxcj;abad9Uc;WFbGcjdadca0EhmaialfgPar9Rgoadfhsavaoadz1jjjbgzceVhHcbhOdndninaeaO9nmeaPax9RaD6mdamaeaO9RaOamfgoae6EgAcsfglc9WGhCabaOad2fhXaAcethQaxaDfhiaOaeaoaeao6E9RhLalcl4cifcd4hKazcj;cbfaAfhYcbh8AazcjdfhEaHh3incbhodnawTmbaxa8Acd4fRbbhokaocFeGh5cbh8Eazcj;cbfhqinaih8Fdndndndna5a8Ecet4ciGgoc9:fPdebdkaPa8F9RaA6mrazcj;cbfa8EaA2fa8FaAz1jjjb8Aa8FaAfhixdkazcj;cbfa8EaA2fcbaAz:jjjjb8Aa8FhixekaPa8F9RaK6mva8FaKfhidnaCTmbaPai9RcK6mbaocdtc:q1jjbfcj1jjbawEhaczhrcbhlinargoc9Wfghaqfhrdndndndndndnaaa8Fahco4fRbbalcoG4ciGcdtfydbPDbedvivvvlvkar9cb83bbarcwf9cb83bbxlkarcbaiRbdai8Xbb9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbaqaofgrcGfag9c8F1:NghcKtc8F91aicdfa8J9c8N1:Nfg8KRbbG86bbarcVfcba8KahcjeGcr4fghRbbag9cjjjjjl:dg8J9qE86bbarc7fcbaha8J9c8L1:NfghRbbag9cjjjjjd:dg8J9qE86bbarctfcbaha8J9c8K1:NfghRbbag9cjjjjje:dg8J9qE86bbarc91fcbaha8J9c8J1:NfghRbbag9cjjjj;ab:dg8J9qE86bbarc4fcbaha8J9cg1:NfghRbbag9cjjjja:dg8J9qE86bbarc93fcbaha8J9ch1:NfghRbbag9cjjjjz:dgg9qE86bbarc94fcbahag9ca1:NfghRbbai8Xbe9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbarc95fag9c8F1:NgicKtc8F91aha8J9c8N1:NfghRbbG86bbarc96fcbahaicjeGcr4fgiRbbag9cjjjjjl:dg8J9qE86bbarc97fcbaia8J9c8L1:NfgiRbbag9cjjjjjd:dg8J9qE86bbarc98fcbaia8J9c8K1:NfgiRbbag9cjjjjje:dg8J9qE86bbarc99fcbaia8J9c8J1:NfgiRbbag9cjjjj;ab:dg8J9qE86bbarc9:fcbaia8J9cg1:NfgiRbbag9cjjjja:dg8J9qE86bbarcufcbaia8J9ch1:NfgiRbbag9cjjjjz:dgg9qE86bbaiag9ca1:NfhixikaraiRblaiRbbghco4g8Ka8KciSg8KE86bbaqaofgrcGfaiclfa8Kfg8KRbbahcl4ciGg8La8LciSg8LE86bbarcVfa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc7fa8Ka8Lfg8KRbbahciGghahciSghE86bbarctfa8Kahfg8KRbbaiRbeghco4g8La8LciSg8LE86bbarc91fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc4fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc93fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc94fa8Kahfg8KRbbaiRbdghco4g8La8LciSg8LE86bbarc95fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc96fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc97fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc98fa8KahfghRbbaiRbigico4g8Ka8KciSg8KE86bbarc99faha8KfghRbbaicl4ciGg8Ka8KciSg8KE86bbarc9:faha8KfghRbbaicd4ciGg8Ka8KciSg8KE86bbarcufaha8KfgrRbbaiciGgiaiciSgiE86bbaraifhixdkaraiRbwaiRbbghcl4g8Ka8KcsSg8KE86bbaqaofgrcGfaicwfa8Kfg8KRbbahcsGghahcsSghE86bbarcVfa8KahfghRbbaiRbeg8Kcl4g8La8LcsSg8LE86bbarc7faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarctfaha8KfghRbbaiRbdg8Kcl4g8La8LcsSg8LE86bbarc91faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc4faha8KfghRbbaiRbig8Kcl4g8La8LcsSg8LE86bbarc93faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc94faha8KfghRbbaiRblg8Kcl4g8La8LcsSg8LE86bbarc95faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc96faha8KfghRbbaiRbvg8Kcl4g8La8LcsSg8LE86bbarc97faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc98faha8KfghRbbaiRbog8Kcl4g8La8LcsSg8LE86bbarc99faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc9:faha8KfghRbbaiRbrgicl4g8Ka8KcsSg8KE86bbarcufaha8KfgrRbbaicsGgiaicsSgiE86bbaraifhixekarai8Pbb83bbarcwfaicwf8Pbb83bbaiczfhikdnaoaC9pmbalcdfhlaoczfhraPai9RcL0mekkaoaC6moaimexokaCmva8FTmvkaqaAfhqa8Ecefg8Ecl9hmbkdndndndnawTmbasa8Acd4fRbbgociGPlbedrbkaATmdaza8Afh8Fazcj;cbfhhcbh8EaEhaina8FRbbhraahocbhlinaoahalfRbbgqce4cbaqceG9R7arfgr86bbaoadfhoaAalcefgl9hmbkaacefhaa8Fcefh8FahaAfhha8Ecefg8Ecl9hmbxikkaATmeaza8Afhaazcj;cbfhhcbhoceh8EaYh8FinaEaofhlaa8Vbbhrcbhoinala8FaofRbbcwtahaofRbbgqVc;:FiGce4cbaqceG9R7arfgr87bbaladfhlaLaocefgofmbka8FaQfh8FcdhoaacdfhaahaQfhha8EceGhlcbh8EalmbxdkkaATmbcbaocl49Rh8Eaza8AfRbbhqcwhoa3hlinalRbbaotaqVhqalcefhlaocwfgoca9hmbkcbhhaEh8FaYhainazcj;cbfahfRbbhrcwhoaahlinalRbbaotarVhralaAfhlaocwfgoca9hmbkara8E93aq7hqcbhoa8Fhlinalaqao486bbalcefhlaocwfgoca9hmbka8Fadfh8FaacefhaahcefghaA9hmbkkaEclfhEa3clfh3a8Aclfg8Aad6mbkaXazcjdfaAad2z1jjjb8AazazcjdfaAcufad2fadz1jjjb8AaAaOfhOaihxaimbkc9:hoxdkcbc99aPax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaok:XseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiaPfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaOfhiazaOfhxxekaxcbalRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhAascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhzaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkaOhlxekalcefhlkaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDclfaO87ebaDcdfaz87ebxekabarcdtfgDaABdbaDcwfaOBdbaDclfazBdbkavc;abfaocitfgDazBdbaDaABdlavaicdtfaABdbavc;abfaocefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfaocdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnaecvfal9nmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;oiliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabaiavcefciGfcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavciGfgkcd7cetfaD87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavcufciGfcetfaD87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohvxekcjjjj94hvkabakcetfav87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk9teiucbcbyd:K1jjbgeabcifc98GfgbBd:K1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkk81dbcjwk8Kbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbc:Kwkl8WNbb"),i=WebAssembly.instantiate(t,{}).then(function(h){(a=h.instance).exports.__wasm_call_ctors()});function n(h){for(var l=new Uint8Array(h.length),g=0;g<h.length;++g){var m=h.charCodeAt(g);l[g]=m>96?m-97:m>64?m-39:m+4}var E=0;for(g=0;g<h.length;++g)l[E++]=l[g]<60?e[l[g]]:64*(l[g]-60)+l[++g];return l.buffer.slice(0,E)}function o(h,l,g,m,E,p,C){var I=h.exports.sbrk,x=m+3&-4,y=I(x*E),w=I(p.length),D=new Uint8Array(h.exports.memory.buffer);D.set(p,w);var F=l(y,m,E,w,p.length);if(F==0&&C&&C(y,x,E),g.set(D.subarray(y,y+m*E)),I(y-I(0)),F!=0)throw new Error("Malformed buffer data: "+F)}var s={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},c={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},u=[],A=0;function d(h){var l={object:new Worker(h),pending:0,requests:{}};return l.object.onmessage=function(g){var m=g.data;l.pending-=m.count,l.requests[m.id][m.action](m.value),delete l.requests[m.id]},l}function b(h){var l=h.data;if(!l.id)return self.close();self.ready.then(function(g){try{var m=new Uint8Array(l.count*l.size);o(g,g.exports[l.mode],m,l.count,l.size,l.source,g.exports[l.filter]),self.postMessage({id:l.id,count:l.count,action:"resolve",value:m},[m.buffer])}catch(E){self.postMessage({id:l.id,count:l.count,action:"reject",value:E})}})}return{ready:i,supported:!0,useWorkers:function(h){(function(l){for(var g="self.ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(t)+"]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = "+b.name+";"+o.toString()+b.toString(),m=new Blob([g],{type:"text/javascript"}),E=URL.createObjectURL(m),p=u.length;p<l;++p)u[p]=d(E);for(p=l;p<u.length;++p)u[p].object.postMessage({});u.length=l,URL.revokeObjectURL(E)})(h)},decodeVertexBuffer:function(h,l,g,m,E){o(a,a.exports.meshopt_decodeVertexBuffer,h,l,g,m,a.exports[s[E]])},decodeIndexBuffer:function(h,l,g,m){o(a,a.exports.meshopt_decodeIndexBuffer,h,l,g,m)},decodeIndexSequence:function(h,l,g,m){o(a,a.exports.meshopt_decodeIndexSequence,h,l,g,m)},decodeGltfBuffer:function(h,l,g,m,E,p){o(a,a.exports[c[E]],h,l,g,m,a.exports[s[p]])},decodeGltfBufferAsync:function(h,l,g,m,E){return u.length>0?function(p,C,I,x,y){for(var w=u[0],D=1;D<u.length;++D)u[D].pending<w.pending&&(w=u[D]);return new Promise(function(F,j){var M=new Uint8Array(I),_=++A;w.pending+=p,w.requests[_]={resolve:F,reject:j},w.object.postMessage({id:_,count:p,size:C,source:M,mode:x,filter:y},[M.buffer])})}(h,l,g,c[m],s[E]):i.then(function(){var p=new Uint8Array(h*l);return o(a,a.exports[c[m]],p,h,l,g,a.exports[s[E]]),p})}}}();(function(){var r,e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var a=WebAssembly.instantiate(function(s){for(var c=new Uint8Array(s.length),u=0;u<s.length;++u){var A=s.charCodeAt(u);c[u]=A>96?A-97:A>64?A-39:A+4}var d=0;for(u=0;u<s.length;++u)c[d++]=c[u]<60?e[c[u]]:64*(c[u]-60)+c[++u];return c.buffer.slice(0,d)}("b9H79Tebbbetm9Geueu9Geub9Gbb9Gsuuuuuuuuuuuu99uueu9Gvuuuuub9Gruuuuuuub9Gvuuuuue999Gvuuuuueu9Gquuuuuuu99uueu9Gwuuuuuu99ueu9Giuuue999Gluuuueu9GiuuueuiOHdilvorlwiDqkbxxbelve9Weiiviebeoweuec:G:Pdkr:Tewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bbz9TW79O9V9Wt9F79P9T9W29P9M95br8E9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9OcttV9P9I91tW7bwQ9TW79O9V9Wt9F79P9T9W29P9M959q9V9P9Ut7bDX9TW79O9V9Wt9F79P9T9W29P9M959t9J9H2Wbqa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9Wbkl79IV9RbxDwebcekdzsq;B:xeHdbkM9Hi8Au8A99Au8Jjjjjbc;W;qb9Rgs8Kjjjjbcbhzascxfcbc;Kbz:ojjjb8AdnabaeSmbabaeadcdtz:njjjb8AkdndnamcdGmbascxfhHcbhOxekasalcrfci4gecbyd:m:jjjbHjjjjbbgABdxasceBd2aAcbaez:ojjjbhCcbhlcbhednadTmbcbhlabheadhAinaCaeydbgXci4fgQaQRbbgQceaXcrGgXtV86bbaQcu7aX4ceGalfhlaeclfheaAcufgAmbkcualcdtalcFFFFi0EhekascCfhHasaecbyd:m:jjjbHjjjjbbgOBdzascdBd2alcd4alfhXcehAinaAgecethAaeaX6mbkcdhzcbhLascuaecdtgAaecFFFFi0Ecbyd:m:jjjbHjjjjbbgXBdCasciBd2aXcFeaAz:ojjjbhKdnadTmbaecufhYcbh8AindndnaKabaLcdtfgEydbgQc:v;t;h;Ev2aYGgXcdtfgCydbgAcuSmbceheinaOaAcdtfydbaQSmdaXaefhAaecefheaKaAaYGgXcdtfgCydbgAcu9hmbkkaOa8AcdtfaQBdbaCa8ABdba8AhAa8Acefh8AkaEaABdbaLcefgLad9hmbkkaKcbyd1:jjjbH:bjjjbbascdBd2kcbh3aHcualcefgecdtaecFFFFi0Ecbyd:m:jjjbHjjjjbbg5Bdbasa5BdlasazceVgeBd2ascxfaecdtfcuadcitadcFFFFe0Ecbyd:m:jjjbHjjjjbbg8EBdbasa8EBdwasazcdfgeBd2asclfabadalcbz:cjjjbascxfaecdtfcualcdtgealcFFFFi0Eg8Fcbyd:m:jjjbHjjjjbbgABdbasazcifgXBd2ascxfaXcdtfa8Fcbyd:m:jjjbHjjjjbbgaBdbasazclVBd2aAaaaialavaOascxfz:djjjbalcbyd:m:jjjbHjjjjbbhCascxfasyd2ghcdtfaCBdbasahcefgXBd2ascxfaXcdtfa8Fcbyd:m:jjjbHjjjjbbgXBdbasahcdfgQBd2ascxfaQcdtfa8Fcbyd:m:jjjbHjjjjbbgQBdbasahcifggBd2aXcFeaez:ojjjbh8JaQcFeaez:ojjjbh8KdnalTmba8Ecwfh8Lindna5a3gQcefg3cdtfydbgKa5aQcdtgefydbgXSmbaKaX9Rhza8EaXcitfhHa8Kaefh8Ma8JaefhEcbhYindndnaHaYcitfydbg8AaQ9hmbaEaQBdba8MaQBdbxekdna5a8Acdtg8NfgeclfydbgXaeydbgeSmba8EaecitgKfydbaQSmeaXae9Rhyaecu7aXfhLa8LaKfhXcbheinaLaeSmeaecefheaXydbhKaXcwfhXaKaQ9hmbkaeay6meka8Ka8NfgeaQa8AaeydbcuSEBdbaEa8AaQaEydbcuSEBdbkaYcefgYaz9hmbkka3al9hmbkaAhXaahQa8KhKa8JhYcbheindndnaeaXydbg8A9hmbdnaeaQydbg8A9hmbaYydbh8AdnaKydbgLcu9hmba8Acu9hmbaCaefcb86bbxikaCaefhEdnaeaLSmbaea8ASmbaEce86bbxikaEcl86bbxdkdnaeaaa8AcdtgLfydb9hmbdnaKydbgEcuSmbaeaESmbaYydbgzcuSmbaeazSmba8KaLfydbgHcuSmbaHa8ASmba8JaLfydbgLcuSmbaLa8ASmbdnaAaEcdtfydbg8AaAaLcdtfydb9hmba8AaAazcdtfydbgLSmbaLaAaHcdtfydb9hmbaCaefcd86bbxlkaCaefcl86bbxikaCaefcl86bbxdkaCaefcl86bbxekaCaefaCa8AfRbb86bbkaXclfhXaQclfhQaKclfhKaYclfhYalaecefge9hmbkdnaqTmbdndnaOTmbaOheaAhXalhQindnaqaeydbfRbbTmbaCaXydbfcl86bbkaeclfheaXclfhXaQcufgQmbxdkkaAhealhXindnaqRbbTmbaCaeydbfcl86bbkaqcefhqaeclfheaXcufgXmbkkaAhealhQaChXindnaCaeydbfRbbcl9hmbaXcl86bbkaeclfheaXcefhXaQcufgQmbkkamceGTmbaChealhXindnaeRbbce9hmbaecl86bbkaecefheaXcufgXmbkkascxfagcdtfcualcx2alc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbg3BdbasahclfgHBd2a3aialavaOz:ejjjbh8PdndnaDmbcbhgcbh8Lxekcbh8LawhecbhXindnaeIdbJbbbb9ETmbasc;Wbfa8LcdtfaXBdba8Lcefh8LkaeclfheaDaXcefgX9hmbkascxfaHcdtfcua8Lal2gecdtaecFFFFi0Ecbyd:m:jjjbHjjjjbbggBdbasahcvfgHBd2alTmba8LTmbarcd4hEdnaOTmba8Lcdthzcbh8AaghLinaoaOa8AcdtfydbaE2cdtfhYasc;WbfheaLhXa8LhQinaXaYaeydbcdtgKfIdbawaKfIdbNUdbaeclfheaXclfhXaQcufgQmbkaLazfhLa8Acefg8Aal9hmbxdkka8Lcdthzcbh8AaghLinaoa8AaE2cdtfhYasc;WbfheaLhXa8LhQinaXaYaeydbcdtgKfIdbawaKfIdbNUdbaeclfheaXclfhXaQcufgQmbkaLazfhLa8Acefg8Aal9hmbkkascxfaHcdtfcualc8S2gealc;D;O;f8U0EgQcbyd:m:jjjbHjjjjbbgXBdbasaHcefgKBd2aXcbaez:ojjjbhqdndndna8LTmbascxfaKcdtfaQcbyd:m:jjjbHjjjjbbgvBdbasaHcdfgXBd2avcbaez:ojjjb8AascxfaXcdtfcua8Lal2gecltgXaecFFFFb0Ecbyd:m:jjjbHjjjjbbgiBdbasaHcifBd2aicbaXz:ojjjb8AadmexdkcbhvcbhiadTmekcbhYabhXindna3aXclfydbg8Acx2fgeIdba3aXydbgLcx2fgQIdbgI:tg8Ra3aXcwfydbgEcx2fgKIdlaQIdlg8S:tgRNaKIdbaI:tg8UaeIdla8S:tg8VN:tg8Wa8WNa8VaKIdwaQIdwg8X:tg8YNaRaeIdwa8X:tg8VN:tgRaRNa8Va8UNa8Ya8RN:tg8Ra8RNMM:rg8UJbbbb9ETmba8Wa8U:vh8Wa8Ra8U:vh8RaRa8U:vhRkaqaAaLcdtfydbc8S2fgeaRa8U:rg8UaRNNg8VaeIdbMUdbaea8Ra8Ua8RNg8ZNg8YaeIdlMUdlaea8Wa8Ua8WNg80Ng81aeIdwMUdwaea8ZaRNg8ZaeIdxMUdxaea80aRNgBaeIdzMUdzaea80a8RNg80aeIdCMUdCaeaRa8Ua8Wa8XNaRaINa8Sa8RNMM:mg8SNgINgRaeIdKMUdKaea8RaINg8RaeId3MUd3aea8WaINg8WaeIdaMUdaaeaIa8SNgIaeId8KMUd8Kaea8UaeIdyMUdyaqaAa8Acdtfydbc8S2fgea8VaeIdbMUdbaea8YaeIdlMUdlaea81aeIdwMUdwaea8ZaeIdxMUdxaeaBaeIdzMUdzaea80aeIdCMUdCaeaRaeIdKMUdKaea8RaeId3MUd3aea8WaeIdaMUdaaeaIaeId8KMUd8Kaea8UaeIdyMUdyaqaAaEcdtfydbc8S2fgea8VaeIdbMUdbaea8YaeIdlMUdlaea81aeIdwMUdwaea8ZaeIdxMUdxaeaBaeIdzMUdzaea80aeIdCMUdCaeaRaeIdKMUdKaea8RaeId3MUd3aea8WaeIdaMUdaaeaIaeId8KMUd8Kaea8UaeIdyMUdyaXcxfhXaYcifgYad6mbkcbhzabhLinabazcdtfh8AcbhXinaCa8AaXc;a1jjbfydbcdtfydbgQfRbbhedndnaCaLaXfydbgKfRbbgYc99fcFeGcpe0mbaec99fcFeGc;:e6mekdnaYcufcFeGce0mba8JaKcdtfydbaQ9hmekdnaecufcFeGce0mba8KaQcdtfydbaK9hmekdnaYcv2aefc:G1jjbfRbbTmbaAaQcdtfydbaAaKcdtfydb0mekJbbacJbbacJbbjZaecFeGceSEaYceSEh80dna3a8AaXc;e1jjbfydbcdtfydbcx2fgeIdwa3aKcx2fgYIdwg8S:tg8Wa3aQcx2fgEIdwa8S:tgRaRNaEIdbaYIdbg8X:tg8Ra8RNaEIdlaYIdlg8V:tg8Ua8UNMMgINa8WaRNaeIdba8X:tg81a8RNa8UaeIdla8V:tg8ZNMMg8YaRN:tg8Wa8WNa81aINa8Ya8RN:tgRaRNa8ZaINa8Ya8UN:tg8Ra8RNMM:rg8UJbbbb9ETmba8Wa8U:vh8Wa8Ra8U:vh8RaRa8U:vhRkaqaAaKcdtfydbc8S2fgeaRa80aI:rNg8UaRNNg8YaeIdbMUdbaea8Ra8Ua8RNg80Ng81aeIdlMUdlaea8Wa8Ua8WNgINg8ZaeIdwMUdwaea80aRNg80aeIdxMUdxaeaIaRNgBaeIdzMUdzaeaIa8RNg83aeIdCMUdCaeaRa8Ua8Wa8SNaRa8XNa8Va8RNMM:mg8SNgINgRaeIdKMUdKaea8RaINg8RaeId3MUd3aea8WaINg8WaeIdaMUdaaeaIa8SNgIaeId8KMUd8Kaea8UaeIdyMUdyaqaAaQcdtfydbc8S2fgea8YaeIdbMUdbaea81aeIdlMUdlaea8ZaeIdwMUdwaea80aeIdxMUdxaeaBaeIdzMUdzaea83aeIdCMUdCaeaRaeIdKMUdKaea8RaeId3MUd3aea8WaeIdaMUdaaeaIaeId8KMUd8Kaea8UaeIdyMUdykaXclfgXcx9hmbkaLcxfhLazcifgzad6mbka8LTmbcbhLinJbbbbh8Xa3abaLcdtfgeclfydbgEcx2fgXIdwa3aeydbgzcx2fgQIdwg8Z:tg8Ra8RNaXIdbaQIdbgB:tg8Wa8WNaXIdlaQIdlg83:tg8Ua8UNMMg80a3aecwfydbgHcx2fgeIdwa8Z:tgINa8Ra8RaINa8WaeIdbaB:tg8SNa8UaeIdla83:tg8VNMMgRN:tJbbbbJbbjZa80aIaINa8Sa8SNa8Va8VNMMg81NaRaRN:tg8Y:va8YJbbbb9BEg8YNhUa81a8RNaIaRN:ta8YNh85a80a8VNa8UaRN:ta8YNh86a81a8UNa8VaRN:ta8YNh87a80a8SNa8WaRN:ta8YNh88a81a8WNa8SaRN:ta8YNh89a8Wa8VNa8Sa8UN:tgRaRNa8UaINa8Va8RN:tgRaRNa8Ra8SNaIa8WN:tgRaRNMM:rJbbbZNhRagaza8L2gwcdtfhXagaHa8L2g8NcdtfhQagaEa8L2g5cdtfhKa8Z:mh8:a83:mhZaB:mhncbhYa8Lh8AJbbbbh8VJbbbbh8YJbbbbh80Jbbbbh81Jbbbbh8ZJbbbbhBJbbbbh83JbbbbhcJbbbbh9cinasc;WbfaYfgecwfaRa85aKIdbaXIdbgI:tg8UNaUaQIdbaI:tg8SNMg8RNUdbaeclfaRa87a8UNa86a8SNMg8WNUdbaeaRa89a8UNa88a8SNMg8UNUdbaecxfaRa8:a8RNaZa8WNaIana8UNMMMgINUdbaRa8Ra8WNNa81Mh81aRa8Ra8UNNa8ZMh8ZaRa8Wa8UNNaBMhBaRaIaINNa8XMh8XaRa8RaINNa8VMh8VaRa8WaINNa8YMh8YaRa8UaINNa80Mh80aRa8Ra8RNNa83Mh83aRa8Wa8WNNacMhcaRa8Ua8UNNa9cMh9caXclfhXaKclfhKaQclfhQaYczfhYa8Acufg8Ambkavazc8S2fgea9caeIdbMUdbaeacaeIdlMUdlaea83aeIdwMUdwaeaBaeIdxMUdxaea8ZaeIdzMUdzaea81aeIdCMUdCaea80aeIdKMUdKaea8YaeId3MUd3aea8VaeIdaMUdaaea8XaeId8KMUd8KaeaRaeIdyMUdyavaEc8S2fgea9caeIdbMUdbaeacaeIdlMUdlaea83aeIdwMUdwaeaBaeIdxMUdxaea8ZaeIdzMUdzaea81aeIdCMUdCaea80aeIdKMUdKaea8YaeId3MUd3aea8VaeIdaMUdaaea8XaeId8KMUd8KaeaRaeIdyMUdyavaHc8S2fgea9caeIdbMUdbaeacaeIdlMUdlaea83aeIdwMUdwaeaBaeIdxMUdxaea8ZaeIdzMUdzaea81aeIdCMUdCaea80aeIdKMUdKaea8YaeId3MUd3aea8VaeIdaMUdaaea8XaeId8KMUd8KaeaRaeIdyMUdyaiawcltfh8AcbhXa8LhKina8AaXfgeasc;WbfaXfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaia5cltfh8AcbhXa8LhKina8AaXfgeasc;WbfaXfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaia8Ncltfh8AcbhXa8LhKina8AaXfgeasc;WbfaXfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaLcifgLad6mbkkcbhQdndnamcwGgJmbJbbbbh8Vcbh9ecbhocbhhxekcbh9ea8Fcbyd:m:jjjbHjjjjbbhhascxfasyd2gecdtfahBdbasaecefgXBd2ascxfaXcdtfcuahalabadaAz:fjjjbgKcltaKcjjjjiGEcbyd:m:jjjbHjjjjbbgoBdbasaecdfBd2aoaKaha3alz:gjjjbJFFuuh8VaKTmbaoheaKhXinaeIdbgRa8Va8VaR9EEh8VaeclfheaXcufgXmbkaKh9ekasydlhTdnalTmbaTclfheaTydbhKaChXalhYcbhQincbaeydbg8AaK9RaXRbbcpeGEaQfhQaXcefhXaeclfhea8AhKaYcufgYmbkaQce4hQkcuadaQ9RcifgScx2aSc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbhDascxfasyd2g9hcdtfaDBdbasa9hcefgeBd2ascxfaecdtfcuaScdtaScFFFFi0Ecbyd:m:jjjbHjjjjbbgrBdbasa9hcdfgeBd2ascxfaecdtfa8Fcbyd:m:jjjbHjjjjbbgyBdbasa9hcifgeBd2ascxfaecdtfalcbyd:m:jjjbHjjjjbbg9iBdbasa9hclfg6Bd2axaxNa8PJbbjZamclGEgUaUN:vh9cJbbbbhcdnadak9nmbdnaSci6mba8Lclth9kaDcwfh0Jbbbbh83JbbbbhcinasclfabadalaAz:cjjjbabhzcbh8Ecbh8Finaba8FcdtfhHcbheindnaAazaefydbgQcdtgEfydbgYaAaHaec;q1jjbfydbcdtfydbgXcdtgwfydbg8ASmbaCaXfRbbgLcv2aCaQfRbbgKfc;G1jjbfRbbg5aKcv2aLfg8Nc;G1jjbfRbbg8MVcFeGTmbdna8AaY9nmba8Nc:G1jjbfRbbcFeGmekaKcufhYdnaKaL9hmbaYcFeGce0mba8JaEfydbaX9hmekdndnaKclSmbaLcl9hmekdnaYcFeGce0mba8JaEfydbaX9hmdkaLcufcFeGce0mba8KawfydbaQ9hmekaDa8Ecx2fgKaXaQa8McFeGgYEBdlaKaQaXaYEBdbaKaYa5Gcb9hBdwa8Ecefh8Ekaeclfgecx9hmbkdna8Fcifg8Fad9pmbazcxfhza8EcifaS9nmekka8ETmdcbhLinaqaAaDaLcx2fgKydbgYcdtgzfydbc8S2fgeIdwa3aKydlg8Acx2fgXIdwg8WNaeIdzaXIdbg8UNaeIdaMgRaRMMa8WNaeIdlaXIdlgINaeIdCa8WNaeId3MgRaRMMaINaeIdba8UNaeIdxaINaeIdKMgRaRMMa8UNaeId8KMMM:lhRJbbbbJbbjZaeIdyg8R:va8RJbbbb9BEh8RdndnaKydwgEmbJFFuuh8YxekJbbbbJbbjZaqaAa8Acdtfydbc8S2fgeIdyg8S:va8SJbbbb9BEaeIdwa3aYcx2fgXIdwg8SNaeIdzaXIdbg8XNaeIdaMg8Ya8YMMa8SNaeIdlaXIdlg8YNaeIdCa8SNaeId3Mg8Sa8SMMa8YNaeIdba8XNaeIdxa8YNaeIdKMg8Sa8SMMa8XNaeId8KMMM:lNh8Yka8RaRNh80dna8LTmbavaYc8S2fgQIdwa8WNaQIdza8UNaQIdaMgRaRMMa8WNaQIdlaINaQIdCa8WNaQId3MgRaRMMaINaQIdba8UNaQIdxaINaQIdKMgRaRMMa8UNaQId8KMMMhRaga8Aa8L2gHcdtfhXaiaYa8L2gwcltfheaQIdyh8Sa8LhQinaXIdbg8Ra8Ra8SNaecxfIdba8WaecwfIdbNa8UaeIdbNaIaeclfIdbNMMMg8Ra8RM:tNaRMhRaXclfhXaeczfheaQcufgQmbkdndnaEmbJbbbbh8Rxekava8Ac8S2fgQIdwa3aYcx2fgeIdwg8UNaQIdzaeIdbgINaQIdaMg8Ra8RMMa8UNaQIdlaeIdlg8SNaQIdCa8UNaQId3Mg8Ra8RMMa8SNaQIdbaINaQIdxa8SNaQIdKMg8Ra8RMMaINaQId8KMMMh8RagawcdtfhXaiaHcltfheaQIdyh8Xa8LhQinaXIdbg8Wa8Wa8XNaecxfIdba8UaecwfIdbNaIaeIdbNa8SaeclfIdbNMMMg8Wa8WM:tNa8RMh8RaXclfhXaeczfheaQcufgQmbka8R:lh8Rka80aR:lMh80a8Ya8RMh8YaCaYfRbbcd9hmbdna8Ka8Ja8Jazfydba8ASEaaazfydbgHcdtfydbgzcu9hmbaaa8AcdtfydbhzkavaHc8S2fgQIdwa3azcx2fgeIdwg8WNaQIdzaeIdbg8UNaQIdaMgRaRMMa8WNaQIdlaeIdlgINaQIdCa8WNaQId3MgRaRMMaINaQIdba8UNaQIdxaINaQIdKMgRaRMMa8UNaQId8KMMMhRagaza8L2gwcdtfhXaiaHa8L2g8NcltfheaQIdyh8Sa8LhQinaXIdbg8Ra8Ra8SNaecxfIdba8WaecwfIdbNa8UaeIdbNaIaeclfIdbNMMMg8Ra8RM:tNaRMhRaXclfhXaeczfheaQcufgQmbkdndnaEmbJbbbbh8Rxekavazc8S2fgQIdwa3aHcx2fgeIdwg8UNaQIdzaeIdbgINaQIdaMg8Ra8RMMa8UNaQIdlaeIdlg8SNaQIdCa8UNaQId3Mg8Ra8RMMa8SNaQIdbaINaQIdxa8SNaQIdKMg8Ra8RMMaINaQId8KMMMh8Raga8NcdtfhXaiawcltfheaQIdyh8Xa8LhQinaXIdbg8Wa8Wa8XNaecxfIdba8UaecwfIdbNaIaeIdbNa8SaeclfIdbNMMMg8Wa8WM:tNa8RMh8RaXclfhXaeczfheaQcufgQmbka8R:lh8Rka80aR:lMh80a8Ya8RMh8YkaKa80a8Ya80a8Y9FgeEUdwaKa8AaYaeaETVgeEBdlaKaYa8AaeEBdbaLcefgLa8E9hmbkasc;Wbfcbcj;qbz:ojjjb8Aa0hea8EhXinasc;WbfaeydbcA4cF8FGgQcFAaQcFA6EcdtfgQaQydbcefBdbaecxfheaXcufgXmbkcbhecbhXinasc;WbfaefgQydbhKaQaXBdbaKaXfhXaeclfgecj;qb9hmbkcbhea0hXinasc;WbfaXydbcA4cF8FGgQcFAaQcFA6EcdtfgQaQydbgQcefBdbaraQcdtfaeBdbaXcxfhXa8Eaecefge9hmbkadak9RgQci9Uh9mdnalTmbcbheayhXinaXaeBdbaXclfhXalaecefge9hmbkkcbh9na9icbalz:ojjjbh8FaQcO9Uh9oa9mce4h9pasydwh9qcbh8Mcbh5dninaDara5cdtfydbcx2fg8NIdwgRa9c9Emea8Ma9m9pmeJFFuuh8Rdna9pa8E9pmbaDara9pcdtfydbcx2fIdwJbb;aZNh8RkdnaRa8R9ETmbaRac9ETmba8Ma9o0mdkdna8FaAa8NydlgHcdtg9rfydbgKfg9sRbba8FaAa8Nydbgzcdtg9tfydbgefg9uRbbVmbaCazfRbbh9vdnaTaecdtfgXclfydbgQaXydbgXSmbaQaX9RhYa3aKcx2fhLa3aecx2fhEa9qaXcitfhecbhXcehwdnindnayaeydbcdtfydbgQaKSmbayaeclfydbcdtfydbg8AaKSmbaQa8ASmba3a8Acx2fg8AIdba3aQcx2fgQIdbg8W:tgRaEIdlaQIdlg8U:tg8XNaEIdba8W:tg8Ya8AIdla8U:tg8RN:tgIaRaLIdla8U:tg80NaLIdba8W:tg81a8RN:tg8UNa8RaEIdwaQIdwg8S:tg8ZNa8Xa8AIdwa8S:tg8WN:tg8Xa8RaLIdwa8S:tgBNa80a8WN:tg8RNa8Wa8YNa8ZaRN:tg8Sa8Wa81NaBaRN:tgRNMMaIaINa8Xa8XNa8Sa8SNMMa8Ua8UNa8Ra8RNaRaRNMMN:rJbbj8:N9FmdkaecwfheaXcefgXaY6hwaYaX9hmbkkawceGTmba9pcefh9pxekdndndndna9vc9:fPdebdkazheinayaecdtgefaHBdbaaaefydbgeaz9hmbxikkdna8Ka8Ja8Ja9tfydbaHSEaaa9tfydbgzcdtfydbgecu9hmbaaa9rfydbhekaya9tfaHBdbaehHkayazcdtfaHBdbka9uce86bba9sce86bba8NIdwgRacacaR9DEhca9ncefh9ncecda9vceSEa8Mfh8Mka5cefg5a8E9hmbkka9nTmddnalTmbcbh8AcbhEindnayaEcdtgefydbgQaESmbaAaQcdtfydbhzdnaEaAaefydb9hgHmbaqazc8S2fgeaqaEc8S2fgXIdbaeIdbMUdbaeaXIdlaeIdlMUdlaeaXIdwaeIdwMUdwaeaXIdxaeIdxMUdxaeaXIdzaeIdzMUdzaeaXIdCaeIdCMUdCaeaXIdKaeIdKMUdKaeaXId3aeId3MUd3aeaXIdaaeIdaMUdaaeaXId8KaeId8KMUd8KaeaXIdyaeIdyMUdyka8LTmbavaQc8S2fgeavaEc8S2gwfgXIdbaeIdbMUdbaeaXIdlaeIdlMUdlaeaXIdwaeIdwMUdwaeaXIdxaeIdxMUdxaeaXIdzaeIdzMUdzaeaXIdCaeIdCMUdCaeaXIdKaeIdKMUdKaeaXId3aeId3MUd3aeaXIdaaeIdaMUdaaeaXId8KaeId8KMUd8KaeaXIdyaeIdyMUdya9kaQ2hLaihXa8LhKinaXaLfgeaXa8AfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaHmbJbbbbJbbjZaqawfgeIdygR:vaRJbbbb9BEaeIdwa3azcx2fgXIdwgRNaeIdzaXIdbg8RNaeIdaMg8Wa8WMMaRNaeIdlaXIdlg8WNaeIdCaRNaeId3MgRaRMMa8WNaeIdba8RNaeIdxa8WNaeIdKMgRaRMMa8RNaeId8KMMM:lNgRa83a83aR9DEh83ka8Aa9kfh8AaEcefgEal9hmbkcbhXa8JheindnaeydbgQcuSmbdnaXayaQcdtgKfydbgQ9hmbcuhQa8JaKfydbgKcuSmbayaKcdtfydbhQkaeaQBdbkaeclfhealaXcefgX9hmbkcbhXa8KheindnaeydbgQcuSmbdnaXayaQcdtgKfydbgQ9hmbcuhQa8KaKfydbgKcuSmbayaKcdtfydbhQkaeaQBdbkaeclfhealaXcefgX9hmbkka83aca8LEh83cbhKabhecbhYindnayaeydbcdtfydbgXayaeclfydbcdtfydbgQSmbaXayaecwfydbcdtfydbg8ASmbaQa8ASmbabaKcdtfgLaXBdbaLcwfa8ABdbaLclfaQBdbaKcifhKkaecxfheaYcifgYad6mbkdndnaJTmbaKak9nmba8Va839FTmbcbhdabhecbhXindnaoahaeydbgQcdtfydbcdtfIdba839ETmbabadcdtfgYaQBdbaYclfaeclfydbBdbaYcwfaecwfydbBdbadcifhdkaecxfheaXcifgXaK6mbkJFFuuh8Va9eTmeaohea9ehXJFFuuhRinaeIdbg8RaRaRa8R9EEg8WaRa8Ra839EgQEhRa8Wa8VaQEh8VaeclfheaXcufgXmbxdkkaKhdkadak0mbxdkkasclfabadalaAz:cjjjbkdndnadak0mbadhXxekdnaJmbadhXxekdna8Va9c9FmbadhXxekina8VJbb;aZNgRa9caRa9c9DEh8WJbbbbhRdna9eTmbaohea9ehAinaeIdbg8RaRa8Ra8W9FEaRa8RaR9EEhRaeclfheaAcufgAmbkkcbhXabhecbhAindnaoahaeydbgQcdtfydbcdtfIdba8W9ETmbabaXcdtfgKaQBdbaKclfaeclfydbBdbaKcwfaecwfydbBdbaXcifhXkaecxfheaAcifgAad6mbkJFFuuh8Vdna9eTmbaohea9ehAJFFuuh8RinaeIdbg8Ua8Ra8Ra8U9EEgIa8Ra8Ua8W9EgQEh8RaIa8VaQEh8VaeclfheaAcufgAmbkkdnaXad9hmbadhXxdkaRacacaR9DEhcaXak9nmeaXhda8Va9c9FmbkkdnamcjjjjlGTmbaOmbaXTmbcbh8AabheinaCaeydbgKfRbbc3thLaecwfgEydbhAdndna8JaKcdtgHfydbaeclfgzydbgQSmbcbhYa8KaQcdtfydbaK9hmekcjjjj94hYkaeaLaYVaKVBdbaCaQfRbbc3thLdndna8JaQcdtfydbaASmbcbhYa8KaAcdtfydbaQ9hmekcjjjj94hYkazaLaYVaQVBdbaCaAfRbbc3thYdndna8JaAcdtfydbaKSmbcbhQa8KaHfydbaA9hmekcjjjj94hQkaEaYaQVaAVBdbaecxfhea8Acifg8AaX6mbkkdnaOTmbaXTmbaXheinabaOabydbcdtfydbBdbabclfhbaecufgembkkdnaPTmbaPaUac:rNUdbka9hcdtascxffcxfhednina6Tmeaeydbcbyd1:jjjbH:bjjjbbaec98fhea6cufh6xbkkasc;W;qbf8KjjjjbaXk;Yieouabydlhvabydbclfcbaicdtz:ojjjbhoadci9UhrdnadTmbdnalTmbaehwadhDinaoalawydbcdtfydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbxdkkaehwadhDinaoawydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbkkdnaiTmbcbhDaohwinawydbhqawaDBdbawclfhwaqaDfhDaicufgimbkkdnadci6mbinaecwfydbhwaeclfydbhDaeydbhidnalTmbalawcdtfydbhwalaDcdtfydbhDalaicdtfydbhikavaoaicdtfgqydbcitfaDBdbavaqydbcitfawBdlaqaqydbcefBdbavaoaDcdtfgqydbcitfawBdbavaqydbcitfaiBdlaqaqydbcefBdbavaoawcdtfgwydbcitfaiBdbavawydbcitfaDBdlawawydbcefBdbaecxfhearcufgrmbkkabydbcbBdbk:todDue99aicd4aifhrcehwinawgDcethwaDar6mbkcuaDcdtgraDcFFFFi0Ecbyd:m:jjjbHjjjjbbhwaoaoyd9GgqcefBd9GaoaqcdtfawBdbawcFearz:ojjjbhkdnaiTmbalcd4hlaDcufhxcbhminamhDdnavTmbavamcdtfydbhDkcbadaDal2cdtfgDydlgwawcjjjj94SEgwcH4aw7c:F:b:DD2cbaDydbgwawcjjjj94SEgwcH4aw7c;D;O:B8J27cbaDydwgDaDcjjjj94SEgDcH4aD7c:3F;N8N27axGhwamcdthPdndndnavTmbakawcdtfgrydbgDcuSmeadavaPfydbal2cdtfgsIdbhzcehqinaqhrdnadavaDcdtfydbal2cdtfgqIdbaz9CmbaqIdlasIdl9CmbaqIdwasIdw9BmlkarcefhqakawarfaxGgwcdtfgrydbgDcu9hmbxdkkakawcdtfgrydbgDcuSmbadamal2cdtfgsIdbhzcehqinaqhrdnadaDal2cdtfgqIdbaz9CmbaqIdlasIdl9CmbaqIdwasIdw9BmikarcefhqakawarfaxGgwcdtfgrydbgDcu9hmbkkaramBdbamhDkabaPfaDBdbamcefgmai9hmbkkakcbyd1:jjjbH:bjjjbbaoaoyd9GcufBd9GdnaeTmbaiTmbcbhDaehwinawaDBdbawclfhwaiaDcefgD9hmbkcbhDaehwindnaDabydbgrSmbawaearcdtfgrydbBdbaraDBdbkawclfhwabclfhbaiaDcefgD9hmbkkk;Qodvuv998Jjjjjbca9Rgvczfcwfcbyd11jjbBdbavcb8Pdj1jjb83izavcwfcbydN1jjbBdbavcb8Pd:m1jjb83ibdnadTmbaicd4hodnabmbdnalTmbcbhrinaealarcdtfydbao2cdtfhwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkarcefgrad9hmbxikkaocdthrcbhwincbhiinavczfaifgDaeaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkaearfheawcefgwad9hmbxdkkdnalTmbcbhrinabarcx2fgiaealarcdtfydbao2cdtfgwIdbUdbaiawIdlUdlaiawIdwUdwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkarcefgrad9hmbxdkkaocdthlcbhraehwinabarcx2fgiaearao2cdtfgDIdbUdbaiaDIdlUdlaiaDIdwUdwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkawalfhwarcefgrad9hmbkkJbbbbavIdbavIdzgk:tgqaqJbbbb9DEgqavIdlavIdCgx:tgmamaq9DEgqavIdwavIdKgm:tgPaPaq9DEhPdnabTmbadTmbJbbbbJbbjZaP:vaPJbbbb9BEhqinabaqabIdbak:tNUdbabclfgvaqavIdbax:tNUdbabcwfgvaqavIdbam:tNUdbabcxfhbadcufgdmbkkaPk:ZlewudnaeTmbcbhvabhoinaoavBdbaoclfhoaeavcefgv9hmbkkdnaiTmbcbhrinadarcdtfhwcbhDinalawaDcdtgvc;a1jjbfydbcdtfydbcdtfydbhodnabalawavfydbcdtfydbgqcdtfgkydbgvaqSmbinakabavgqcdtfgxydbgvBdbaxhkaqav9hmbkkdnabaocdtfgkydbgvaoSmbinakabavgocdtfgxydbgvBdbaxhkaoav9hmbkkdnaqaoSmbabaqaoaqao0Ecdtfaqaoaqao6EBdbkaDcefgDci9hmbkarcifgrai6mbkkdnaembcbskcbhxindnalaxcdtgvfydbax9hmbaxhodnabavfgDydbgvaxSmbaDhqinaqabavgocdtfgkydbgvBdbakhqaoav9hmbkkaDaoBdbkaxcefgxae9hmbkcbhvabhocbhkindndnavalydbgq9hmbdnavaoydbgq9hmbaoakBdbakcefhkxdkaoabaqcdtfydbBdbxekaoabaqcdtfydbBdbkaoclfhoalclfhlaeavcefgv9hmbkakk;Jiilud99duabcbaecltz:ojjjbhvdnalTmbadhoaihralhwinarcwfIdbhDarclfIdbhqavaoydbcltfgkarIdbakIdbMUdbakclfgxaqaxIdbMUdbakcwfgxaDaxIdbMUdbakcxfgkakIdbJbbjZMUdbaoclfhoarcxfhrawcufgwmbkkdnaeTmbavhraehkinarcxfgoIdbhDaocbBdbararIdbJbbbbJbbjZaD:vaDJbbbb9BEgDNUdbarclfgoaDaoIdbNUdbarcwfgoaDaoIdbNUdbarczfhrakcufgkmbkkdnalTmbinavadydbcltfgrcxfgkaicwfIdbarcwfIdb:tgDaDNaiIdbarIdb:tgDaDNaiclfIdbarclfIdb:tgDaDNMMgDakIdbgqaqaD9DEUdbadclfhdaicxfhialcufglmbkkdnaeTmbavcxfhrinabarIdbUdbarczfhrabclfhbaecufgembkkk8MbabaeadaialavcbcbcbcbcbaoarawaDz:bjjjbk8MbabaeadaialavaoarawaDaqakaxamaPz:bjjjbk:DCoDud99rue99iul998Jjjjjbc;Wb9Rgw8KjjjjbdndnarmbcbhDxekawcxfcbc;Kbz:ojjjb8Aawcuadcx2adc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbgqBdxawceBd2aqaeadaicbz:ejjjb8AawcuadcdtadcFFFFi0Egkcbyd:m:jjjbHjjjjbbgxBdzawcdBd2adcd4adfhmceheinaegicetheaiam6mbkcbhPawcuaicdtgsaicFFFFi0Ecbyd:m:jjjbHjjjjbbgzBdCawciBd2dndnar:ZgH:rJbbbZMgO:lJbbb9p9DTmbaO:Ohexekcjjjj94hekaicufhAc:bwhmcbhCadhXcbhQinaChLaeamgKcufaeaK9iEaPgDcefaeaD9kEhYdndnadTmbaYcuf:YhOaqhiaxheadhmindndnaiIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:ojjjbh3cbh5cbhPindna3axaPcdtfydbgCcm4aC7c:v;t;h;Ev2gics4ai7aAGgmcdtfgEydbgecuSmbaeaCSmbcehiina3amaifaAGgmcdtfgEydbgecuSmeaicefhiaeaC9hmbkkaEaCBdba5aecuSfh5aPcefgPad9hmbxdkkazcFeasz:ojjjb8Acbh5kaDaYa5ar0giEhPaLa5aiEhCdna5arSmbaYaKaiEgmaP9Rcd9imbdndnaQcl0mbdnaX:ZgOaL:Zg8A:taY:Yg8EaD:Y:tg8Fa8EaK:Y:tgaa5:ZghaH:tNNNaOaH:taaNa8Aah:tNa8AaH:ta8FNahaO:tNM:va8EMJbbbZMgO:lJbbb9p9DTmbaO:Ohexdkcjjjj94hexekaPamfcd9Theka5aXaiEhXaQcefgQcs9hmekkdndnaCmbcihicbhDxekcbhiawakcbyd:m:jjjbHjjjjbbg5BdKawclBd2aPcuf:Yh8AdndnadTmbaqhiaxheadhmindndnaiIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:ojjjbh3cbhDcbhYindndndna3axaYcdtgKfydbgCcm4aC7c:v;t;h;Ev2gics4ai7aAGgmcdtfgEydbgecuSmbcehiinaxaecdtgefydbaCSmdamaifheaicefhia3aeaAGgmcdtfgEydbgecu9hmbkkaEaYBdbaDhiaDcefhDxeka5aefydbhika5aKfaiBdbaYcefgYad9hmbkcuaDc32giaDc;j:KM;jb0EhexekazcFeasz:ojjjb8AcbhDcbhekawaecbyd:m:jjjbHjjjjbbgeBd3awcvBd2aecbaiz:ojjjbhEavcd4hKdnadTmbdnalTmbaKcdth3a5hCaqhealhmadhAinaEaCydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiamIdbaiIdxMUdxaiamclfIdbaiIdzMUdzaiamcwfIdbaiIdCMUdCaiaiIdKJbbjZMUdKaCclfhCaecxfheama3fhmaAcufgAmbxdkka5hmaqheadhCinaEamydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiaiIdxJbbbbMUdxaiaiIdzJbbbbMUdzaiaiIdCJbbbbMUdCaiaiIdKJbbjZMUdKamclfhmaecxfheaCcufgCmbkkdnaDTmbaEhiaDheinaiaiIdbJbbbbJbbjZaicKfIdbgO:vaOJbbbb9BEgONUdbaiclfgmaOamIdbNUdbaicwfgmaOamIdbNUdbaicxfgmaOamIdbNUdbaiczfgmaOamIdbNUdbaicCfgmaOamIdbNUdbaic3fhiaecufgembkkcbhCawcuaDcdtgYaDcFFFFi0Egicbyd:m:jjjbHjjjjbbgeBdaawcoBd2awaicbyd:m:jjjbHjjjjbbg3Bd8KaecFeaYz:ojjjbhxdnadTmbJbbjZJbbjZa8A:vaPceSEaoNgOaONh8AaKcdthPalheina8Aaec;81jjbalEgmIdwaEa5ydbgAc32fgiIdC:tgOaONamIdbaiIdx:tgOaONamIdlaiIdz:tgOaONMMNaqcwfIdbaiIdw:tgOaONaqIdbaiIdb:tgOaONaqclfIdbaiIdl:tgOaONMMMhOdndnaxaAcdtgifgmydbcuSmba3aifIdbaO9ETmekamaCBdba3aifaOUdbka5clfh5aqcxfhqaeaPfheadaCcefgC9hmbkkabaxaYz:njjjb8AcrhikaicdthiinaiTmeaic98fgiawcxffydbcbyd1:jjjbH:bjjjbbxbkkawc;Wbf8KjjjjbaDk:Ydidui99ducbhi8Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdndnaembJbbjFhvJbbjFhoJbbjFhrxekadcd4cdthwincbhdinalczfadfgDabadfIdbgvaDIdbgoaoav9EEUdbaladfgDavaDIdbgoaoav9DEUdbadclfgdcx9hmbkabawfhbaicefgiae9hmbkalIdwalIdK:thralIdlalIdC:thoalIdbalIdz:thvkJbbbbavavJbbbb9DEgvaoaoav9DEgvararav9DEk9DeeuabcFeaicdtz:ojjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcifc98GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcrfc94GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:q:jjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:q:jjjbfgdBd:q:jjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk:Iedbcjwk1eFFuuFFuuFFuuFFuFFFuFFFuFbbbbbbbbeeebeebebbeeebebbbbbebebbbbbbbbbebbbdbbbbbbbebbbebbbdbbbbbbbbbbbeeeeebebbebbebebbbeebbbbbbbbbbbbbbbbbbbbbc1Dkxebbbdbbb:GNbb"),{}).then(function(s){(r=s.instance).exports.__wasm_call_ctors()});function t(s){if(!s)throw new Error("Assertion failed")}function i(s){return new Uint8Array(s.buffer,s.byteOffset,s.byteLength)}function n(s,c,u,A,d,b,h,l){var g=r.exports.sbrk,m=g(4*l),E=g(u*A),p=g(u*b),C=new Uint8Array(r.exports.memory.buffer);C.set(i(c),E),d&&C.set(i(d),p);var I=s(m,E,u,A,p,b,h,l);new Uint8Array(r.exports.memory.buffer);var x=new Uint32Array(I);return i(x).set(C.subarray(m,m+4*I)),g(m-g(0)),x}var o={LockBorder:1,Sparse:2,ErrorAbsolute:4,Prune:8,_InternalDebug:1<<30}})(),function(){var r,e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var a=WebAssembly.instantiate(function(o){for(var s=new Uint8Array(o.length),c=0;c<o.length;++c){var u=o.charCodeAt(c);s[c]=u>96?u-97:u>64?u-39:u+4}var A=0;for(c=0;c<o.length;++c)s[A++]=s[c]<60?e[s[c]]:64*(s[c]-60)+s[++c];return s.buffer.slice(0,A)}("b9H79TebbbeVx9Geueu9Geub9Gbb9Giuuueu9Gmuuuuuuuuuuu9999eu9Gvuuuuueu9Gwuuuuuuuub9Gxuuuuuuuuuuuueu9Gkuuuuuuuuuu99eu9Gouuuuuub9Gruuuuuuub9GluuuubiOHdilvorwDqqkbiibeilve9Weiiviebeoweuec;G:Odkr:Yewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9I919P29K9nW79O2Wt79c9V919U9KbeX9TW79O9V9Wt9F9I919P29K9nW79O2Wt7bo39TW79O9V9Wt9F9J9V9T9W91tWJ2917tWV9c9V919U9K7br39TW79O9V9Wt9F9J9V9T9W91tW9nW79O2Wt9c9V919U9K7bDL9TW79O9V9Wt9F9V9Wt9P9T9P96W9nW79O2Wtbql79IV9RbkDwebcekdsPq;Q9BHdbkIbabaec9:fgefcufae9Ugeabci9Uadfcufad9Ugbaeab0Ek:w8KDPue99eux99dui99euo99iu8Jjjjjbc:WD9Rgm8KjjjjbdndnalmbcbhPxekamc:Cwfcbc;Kbz:njjjb8Adndnalcb9imbaoal9nmbamcuaocdtaocFFFFi0Egscbyd;y1jjbHjjjjbbgzBd:CwamceBd;8wamascbyd;y1jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd;y1jjbHjjjjbbgOBd:KwamciBd;8waihsalhAinazasydbcdtfcbBdbasclfhsaAcufgAmbkaihsalhAinazasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkaihsalhCcbhXindnazasydbcdtgQfgAydbcb9imbaHaQfaXBdbaAaAydbgQcjjjj94VBdbaQaXfhXkasclfhsaCcufgCmbkalci9UhLdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhXaHaAydbcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaXcdtfgXaXydbgXcefBdbaOaXcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaihsalhAindnazasydbcdtgCfgXydbgQcu9kmbaXaQcFFFFrGgQBdbaHaCfgCaCydbaQ9RBdbkasclfhsaAcufgAmbxdkkamcuaocdtgsaocFFFFi0EgAcbyd;y1jjbHjjjjbbgzBd:CwamceBd;8wamaAcbyd;y1jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd;y1jjbHjjjjbbgOBd:KwamciBd;8wazcbasz:njjjbhXalci9UhLaihsalhAinaXasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkdnaoTmbcbhsaHhAaXhCaohQinaAasBdbaAclfhAaCydbasfhsaCclfhCaQcufgQmbkkdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhQaHaAydbcdtfgKaKydbgKcefBdbaOaKcdtfasBdbaHaQcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaoTmbcbhsaohAinaHasfgCaCydbaXasfydb9RBdbasclfhsaAcufgAmbkkamaLcbyd;y1jjbHjjjjbbgsBd:OwamclBd;8wascbaLz:njjjbhYamcuaLcK2alcjjjjd0Ecbyd;y1jjbHjjjjbbg8ABd:SwamcvBd;8wJbbbbhEdnalci6g3mbarcd4hKaihAa8AhsaLhrJbbbbh5inavaAclfydbaK2cdtfgCIdlh8EavaAydbaK2cdtfgXIdlhEavaAcwfydbaK2cdtfgQIdlh8FaCIdwhaaXIdwhhaQIdwhgasaCIdbg8JaXIdbg8KMaQIdbg8LMJbbnn:vUdbasclfaXIdlaCIdlMaQIdlMJbbnn:vUdbaQIdwh8MaCIdwh8NaXIdwhyascxfa8EaE:tg8Eagah:tggNa8FaE:tg8Faaah:tgaN:tgEJbbbbJbbjZa8Ja8K:tg8Ja8FNa8La8K:tg8Ka8EN:tghahNaEaENaaa8KNaga8JN:tgEaENMM:rg8K:va8KJbbbb9BEg8ENUdbasczfaEa8ENUdbascCfaha8ENUdbascwfa8Maya8NMMJbbnn:vUdba5a8KMh5aAcxfhAascKfhsarcufgrmbka5aL:Z:vJbbbZNhEkamcuaLcdtalcFFFF970Ecbyd;y1jjbHjjjjbbgCBd:WwamcoBd;8waEaq:ZNhEdna3mbcbhsaChAinaAasBdbaAclfhAaLascefgs9hmbkkaE:rhhcuh8PamcuaLcltalcFFFFd0Ecbyd;y1jjbHjjjjbbgIBd:0wamcrBd;8wcbaIa8AaCaLz:djjjb8AJFFuuhyJFFuuh8RJFFuuh8Sdnalci6gXmbJFFuuh8Sa8AhsaLhAJFFuuh8RJFFuuhyinascwfIdbgEayayaE9EEhyasclfIdbgEa8Ra8RaE9EEh8RasIdbgEa8Sa8SaE9EEh8SascKfhsaAcufgAmbkkahJbbbZNhgamaocetgscuaocu9kEcbyd;y1jjbHjjjjbbgABd:4waAcFeasz:njjjbhCdnaXmbcbhAJFFuuhEa8Ahscuh8PinascwfIdbay:tghahNasIdba8S:tghahNasclfIdba8R:tghahNMM:rghaEa8PcuSahaE9DVgXEhEaAa8PaXEh8PascKfhsaLaAcefgA9hmbkkamczfcbcjwz:njjjb8Aamcwf9cb83ibam9cb83ibagaxNhRJbbjZak:th8Ncbh8UJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8YJbbbbh8ZJbbbbh80cbh81cbhPinJbbbbhEdna8UTmbJbbjZa8U:Z:vhEkJbbbbhhdna80a80Na8Ya8YNa8Za8ZNMMg8KJbbbb9BmbJbbjZa8K:r:vhhka8XaENh5a8WaENh8Fa8VaENhaa8PhQdndndndndna8UaPVTmbamydwgBTmea80ahNh8Ja8ZahNh8La8YahNh8Maeamydbcdtfh83cbh3JFFuuhEcvhXcuhQindnaza83a3cdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAindndnaCaiaAydbgKcx2fgsclfydbgrcetf8Vebcs4aCasydbgLcetf8Vebcs4faCascwfydbglcetf8Vebcs4fgombcbhsxekcehsazaLcdtfydbgLceSmbcehsazarcdtfydbgrceSmbcehsazalcdtfydbglceSmbdnarcdSaLcdSfalcdSfcd6mbaocefhsxekaocdfhskdnasaX9kmba8AaKcK2fgLIdwa5:thhaLIdla8F:th8KaLIdbaa:th8EdndnakJbbbb9DTmba8E:lg8Ea8K:lg8Ka8Ea8K9EEg8Kah:lgha8Kah9EEag:vJbbjZMhhxekahahNa8Ea8ENa8Ka8KNMM:rag:va8NNJbbjZMJ9VO:d86JbbjZaLIdCa8JNaLIdxa8MNa8LaLIdzNMMakN:tghahJ9VO:d869DENhhkaKaQasaX6ahaE9DVgLEhQasaXaLEhXahaEaLEhEkaAclfhAavcufgvmbkka3cefg3aB9hmbkkaQcu9hmekama5Ud:ODama8FUd:KDamaaUd:GDamcuBd:qDamcFFF;7rBdjDaIcba8AaYamc:GDfakJbbbb9Damc:qDfamcjDfz:ejjjbamyd:qDhQdndnaxJbbbb9ETmba8UaD6mbaQcuSmeceh3amIdjDaR9EmixdkaQcu9hmekdna8UTmbdnamydlgza8Uci2fgsciGTmbadasfcba8Uazcu7fciGcefz:njjjb8AkabaPcltfgzam8Pib83dbazcwfamcwf8Pib83dbaPcefhPkc3hzinazc98Smvamc:Cwfazfydbcbyd;u1jjbH:bjjjbbazc98fhzxbkkcbh3a8Uaq9pmbamydwaCaiaQcx2fgsydbcetf8Vebcs4aCascwfydbcetf8Vebcs4faCasclfydbcetf8Vebcs4ffaw9nmekcbhscbhAdna81TmbcbhAamczfhXinamczfaAcdtfaXydbgLBdbaXclfhXaAaYaLfRbbTfhAa81cufg81mbkkamydwhlamydbhXam9cu83i:GDam9cu83i:ODam9cu83i:qDam9cu83i:yDaAc;8eaAclfc:bd6Eh81inamcjDfasfcFFF;7rBdbasclfgscz9hmbka81cdthBdnalTmbaeaXcdtfhocbhrindnazaoarcdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAcuhLcuhsinazaiaAydbgKcx2fgXclfydbcdtfydbazaXydbcdtfydbfazaXcwfydbcdtfydbfgXasaXas6gXEhsaKaLaXEhLaAclfhAavcufgvmbkaLcuSmba8AaLcK2fgAIdway:tgEaENaAIdba8S:tgEaENaAIdla8R:tgEaENMM:rhEcbhAindndnasamc:qDfaAfgvydbgX6mbasaX9hmeaEamcjDfaAfIdb9FTmekavasBdbamc:GDfaAfaLBdbamcjDfaAfaEUdbxdkaAclfgAcz9hmbkkarcefgral9hmbkkamczfaBfhLcbhscbhAindnamc:GDfasfydbgXcuSmbaLaAcdtfaXBdbaAcefhAkasclfgscz9hmbkaAa81fg81TmbJFFuuhhcuhKamczfhsa81hvcuhLina8AasydbgXcK2fgAIdway:tgEaENaAIdba8S:tgEaENaAIdla8R:tgEaENMM:rhEdndnazaiaXcx2fgAclfydbcdtfydbazaAydbcdtfydbfazaAcwfydbcdtfydbfgAaL6mbaAaL9hmeaEah9DTmekaEhhaAhLaXhKkasclfhsavcufgvmbkaKcuSmbaKhQkdnamaiaQcx2fgrydbarclfydbarcwfydbaCabaeadaPawaqa3z:fjjjbTmbaPcefhPJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8YJbbbbh8ZJbbbbh80kcbhXinaOaHaraXcdtfydbcdtgAfydbcdtfgKhsazaAfgvydbgLhAdnaLTmbdninasydbaQSmeasclfhsaAcufgATmdxbkkasaKaLcdtfc98fydbBdbavavydbcufBdbkaXcefgXci9hmbka8AaQcK2fgsIdbhEasIdlhhasIdwh8KasIdxh8EasIdzh5asIdCh8FaYaQfce86bba80a8FMh80a8Za5Mh8Za8Ya8EMh8Ya8Xa8KMh8Xa8WahMh8Wa8VaEMh8Vamydxh8Uxbkkamc:WDf8KjjjjbaPk;Vvivuv99lu8Jjjjjbca9Rgv8Kjjjjbdndnalcw0mbaiydbhoaeabcitfgralcdtcufBdlaraoBdbdnalcd6mbaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkkalabfhrxekcbhDavczfcwfcbBdbav9cb83izavcwfcbBdbav9cb83ibJbbjZhqJbbjZhkinadaiaDcdtfydbcK2fhwcbhrinavczfarfgoawarfIdbgxaoIdbgm:tgPakNamMgmUdbavarfgoaPaxam:tNaoIdbMUdbarclfgrcx9hmbkJbbjZaqJbbjZMgq:vhkaDcefgDal9hmbkcbhoadcbcecdavIdlgxavIdwgm9GEgravIdbgPam9GEaraPax9GEgscdtgrfhzavczfarfIdbhxaihralhwinaiaocdtfgDydbhHaDarydbgOBdbaraHBdbarclfhraoazaOcK2fIdbax9Dfhoawcufgwmbkaeabcitfhrdndnaocv6mbaoalc98f6mekaraiydbBdbaralcdtcufBdlaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkalabfhrxekaraxUdbararydlc98GasVBdlabcefaeadaiaoz:djjjbhwararydlciGawabcu7fcdtVBdlawaeadaiaocdtfalao9Rz:djjjbhrkavcaf8Kjjjjbark:;idiud99dndnabaecitfgwydlgDciGgqciSmbinabcbaDcd4gDalaqcdtfIdbawIdb:tgkJbbbb9FEgwaecefgefadaialavaoarz:ejjjbak:larIdb9FTmdabawaD7aefgecitfgwydlgDciGgqci9hmbkkabaecitfgeclfhbdnavmbcuhwindnaiaeydbgDfRbbmbadaDcK2fgqIdwalIdw:tgkakNaqIdbalIdb:tgkakNaqIdlalIdl:tgkakNMM:rgkarIdb9DTmbarakUdbaoaDBdbkaecwfheawcefgwabydbcd46mbxdkkcuhwindnaiaeydbgDfRbbmbadaDcK2fgqIdbalIdb:t:lgkaqIdlalIdl:t:lgxakax9EEgkaqIdwalIdw:t:lgxakax9EEgkarIdb9DTmbarakUdbaoaDBdbkaecwfheawcefgwabydbcd46mbkkk;llevudnabydwgxaladcetfgm8Vebcs4alaecetfgP8Vebgscs4falaicetfgz8Vebcs4ffaD0abydxaq9pVakVgDce9hmbavawcltfgxab8Pdb83dbaxcwfabcwfgx8Pdb83dbdnaxydbgqTmbaoabydbcdtfhxaqhsinalaxydbcetfcFFi87ebaxclfhxascufgsmbkkdnabydxglci2gsabydlgxfgkciGTmbarakfcbalaxcu7fciGcefz:njjjb8Aabydxci2hsabydlhxabydwhqkab9cb83dwababydbaqfBdbabascifc98GaxfBdlaP8Vebhscbhxkdnascztcz91cu9kmbabaxcefBdwaPax87ebaoabydbcdtfaxcdtfaeBdbkdnam8Uebcu9kmbababydwgxcefBdwamax87ebaoabydbcdtfaxcdtfadBdbkdnaz8Uebcu9kmbababydwgxcefBdwazax87ebaoabydbcdtfaxcdtfaiBdbkarabydlfabydxci2faPRbb86bbarabydlfabydxci2fcefamRbb86bbarabydlfabydxci2fcdfazRbb86bbababydxcefBdxaDk8LbabaeadaialavaoarawaDaDaqJbbbbz:cjjjbk;Nkovud99euv99eul998Jjjjjbc:W;ae9Rgo8KjjjjbdndnadTmbavcd4hrcbhwcbhDindnaiaeclfydbar2cdtfgvIdbaiaeydbar2cdtfgqIdbgk:tgxaiaecwfydbar2cdtfgmIdlaqIdlgP:tgsNamIdbak:tgzavIdlaP:tgPN:tgkakNaPamIdwaqIdwgH:tgONasavIdwaH:tgHN:tgPaPNaHazNaOaxN:tgxaxNMM:rgsJbbbb9Bmbaoc:W:qefawcx2fgAakas:vUdwaAaxas:vUdlaAaPas:vUdbaoc8Wfawc8K2fgAaq8Pdb83dbaAav8Pdb83dxaAam8Pdb83dKaAcwfaqcwfydbBdbaAcCfavcwfydbBdbaAcafamcwfydbBdbawcefhwkaecxfheaDcifgDad6mbkab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbawTmeaocbBd8Sao9cb83iKao9cb83izaoczfaoc8Wfawci2cxaoc8Sfcbcrz1jjjbaoIdKhCaoIdChXaoIdzhQao9cb83iwao9cb83ibaoaoc:W:qefawcxaoc8Sfcbciz1jjjbJbbjZhkaoIdwgPJbbbbJbbjZaPaPNaoIdbgPaPNaoIdlgsasNMM:rgx:vaxJbbbb9BEgzNhxasazNhsaPazNhzaoc:W:qefheawhvinaecwfIdbaxNaeIdbazNasaeclfIdbNMMgPakaPak9DEhkaecxfheavcufgvmbkabaCUdwabaXUdlabaQUdbabaoId3UdxdndnakJ;n;m;m899FmbJbbbbhPaoc:W:qefheaoc8WfhvinaCavcwfIdb:taecwfIdbgHNaQavIdb:taeIdbgONaXavclfIdb:taeclfIdbgLNMMaxaHNazaONasaLNMM:vgHaPaHaP9EEhPavc8KfhvaecxfheawcufgwmbkabaxUd8KabasUdaabazUd3abaCaxaPN:tUdKabaXasaPN:tUdCabaQazaPN:tUdzabJbbjZakakN:t:rgkUdydndnaxJbbj:;axJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;axJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohexekcjjjj94hekabae86b8UdndnasJbbj:;asJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;asJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkabav86bRdndnazJbbj:;azJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;azJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohqxekcjjjj94hqkabaq86b8SdndnaecKtcK91:YJbb;:9c:vax:t:lavcKtcK91:YJbb;:9c:vas:t:laqcKtcK91:YJbb;:9c:vaz:t:lakMMMJbb;:9cNJbbjZMgk:lJbbb9p9DTmbak:Ohexekcjjjj94hekaecFbaecFb9iEhexekabcjjj;8iBdycFbhekabae86b8Vxekab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbkaoc:W;aef8Kjjjjbk;Iwwvul99iud99eue99eul998Jjjjjbcje9Rgr8Kjjjjbavcd4hwaicd4hDdndnaoTmbarc;abfcbaocdtgvz:njjjb8Aarc;Gbfcbavz:njjjb8AarhvarcafhiaohqinavcFFF97BdbaicFFF;7rBdbaiclfhiavclfhvaqcufgqmbkdnadTmbcbhkinaeakaD2cdtfgvIdwhxavIdlhmavIdbhPalakaw2cdtfIdbhsarc;abfhzarhiarc;GbfhHarcafhqcj1jjbhvaohOinasavcwfIdbaxNavIdbaPNavclfIdbamNMMgAMhCakhXdnaAas:tgAaqIdbgQ9DgLmbaHydbhXkaHaXBdbakhXdnaCaiIdbgK9EmbazydbhXaKhCkazaXBdbaiaCUdbaqaAaQaLEUdbavcxfhvaqclfhqaHclfhHaiclfhiazclfhzaOcufgOmbkakcefgkad9hmbkkadThkJbbbbhCcbhXarc;abfhvarc;Gbfhicbhqinalavydbgzaw2cdtfIdbalaiydbgHaw2cdtfIdbaeazaD2cdtfgzIdwaeaHaD2cdtfgHIdw:tgsasNazIdbaHIdb:tgsasNazIdlaHIdl:tgsasNMM:rMMgsaCasaC9EgzEhCaqaXazEhXaiclfhiavclfhvaoaqcefgq9hmbkaCJbbbZNhKxekadThkcbhXJbbbbhKkJbbbbhCdnaearc;abfaXcdtgifydbgqaD2cdtfgvIdwaearc;GbfaifydbgzaD2cdtfgiIdwgm:tgsasNavIdbaiIdbgY:tgAaANavIdlaiIdlgP:tgQaQNMM:rgxJbbbb9ETmbaxalaqaw2cdtfIdbMalazaw2cdtfIdb:taxaxM:vhCkasaCNamMhmaQaCNaPMhPaAaCNaYMhYdnakmbaDcdthvawcdthiindnalIdbg8AaecwfIdbam:tgCaCNaeIdbaY:tgsasNaeclfIdbaP:tgAaANMM:rgQMgEaK9ETmbJbbbbhxdnaQJbbbb9ETmbaEaK:taQaQM:vhxkaxaCNamMhmaxaANaPMhPaxasNaYMhYa8AaKaQMMJbbbZNhKkaeavfhealaifhladcufgdmbkkabaKUdxabamUdwabaPUdlabaYUdbarcjef8Kjjjjbkjeeiu8Jjjjjbcj8W9Rgr8Kjjjjbaici2hwdnaiTmbawceawce0EhDarhiinaiaeadRbbcdtfydbBdbadcefhdaiclfhiaDcufgDmbkkabarawaladaoz:hjjjbarcj8Wf8Kjjjjbk:3lequ8JjjjjbcjP9Rgl8Kjjjjbcbhvalcjxfcbaiz:njjjb8AdndnadTmbcjehoaehrincuhwarhDcuhqavhkdninawakaoalcjxfaDcefRbbfRbb9RcFeGci6aoalcjxfaDRbbfRbb9RcFeGci6faoalcjxfaDcdfRbbfRbb9RcFeGci6fgxaq9mgmEhwdnammbaxce0mdkaxaqaxaq9kEhqaDcifhDadakcefgk9hmbkkaeawci2fgDcdfRbbhqaDcefRbbhxaDRbbhkaeavci2fgDcifaDawav9Rci2z:qjjjb8Aakalcjxffaocefgo86bbaxalcjxffao86bbaDcdfaq86bbaDcefax86bbaDak86bbaqalcjxffao86bbarcifhravcefgvad9hmbkalcFeaicetz:njjjbhoadci2gDceaDce0EhqcbhxindnaoaeRbbgkcetfgw8UebgDcu9kmbawax87ebaocjlfaxcdtfabakcdtfydbBdbaxhDaxcefhxkaeaD86bbaecefheaqcufgqmbkaxcdthDxekcbhDkabalcjlfaDz:mjjjb8AalcjPf8Kjjjjbk9teiucbcbyd;C1jjbgeabcifc98GfgbBd;C1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;C1jjbgeabcrfc94GfgbBd;C1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd;C1jjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd;C1jjbfgdBd;C1jjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk:;Deludndndnadch9pmbabaeSmdaeabadfgi9Rcbadcet9R0mekabaead;8qbbxekaeab7ciGhldndndnabae9pmbdnalTmbadhvabhixikdnabciGmbadhvabhixdkadTmiabaeRbb86bbadcufhvdnabcefgiciGmbaecefhexdkavTmiabaeRbe86beadc9:fhvdnabcdfgiciGmbaecdfhexdkavTmiabaeRbd86bdadc99fhvdnabcifgiciGmbaecifhexdkavTmiabaeRbi86biabclfhiaeclfheadc98fhvxekdnalmbdnaiciGTmbadTmlabadcufgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc9:fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc99fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc98fgdfaeadfRbb86bbkadcl6mbdnadc98fgocd4cefciGgiTmbaec98fhlabc98fhvinavadfaladfydbBdbadc98fhdaicufgimbkkaocx6mbaec9Wfhvabc9WfhoinaoadfgicxfavadfglcxfydbBdbaicwfalcwfydbBdbaiclfalclfydbBdbaialydbBdbadc9Wfgdci0mbkkadTmdadhidnadciGglTmbaecufhvabcufhoadhiinaoaifavaifRbb86bbaicufhialcufglmbkkadcl6mdaec98fhlabc98fhvinavaifgecifalaifgdcifRbb86bbaecdfadcdfRbb86bbaecefadcefRbb86bbaeadRbb86bbaic98fgimbxikkavcl6mbdnavc98fglcd4cefcrGgdTmbavadcdt9RhvinaiaeydbBdbaeclfheaiclfhiadcufgdmbkkalc36mbinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaiaeydzBdzaiaeydCBdCaiaeydKBdKaiaeyd3Bd3aecafheaicafhiavc9Gfgvci0mbkkavTmbdndnavcrGgdmbavhlxekavc94GhlinaiaeRbb86bbaicefhiaecefheadcufgdmbkkavcw6mbinaiaeRbb86bbaiaeRbe86beaiaeRbd86bdaiaeRbi86biaiaeRbl86blaiaeRbv86bvaiaeRbo86boaiaeRbr86braicwfhiaecwfhealc94fglmbkkabkk9Tdbcjwk9ubbjZbbbbbbbbbbbbbbjZbbbbbbbbbbbbbbjZ86;nAZ86;nAZ86;nAZ86;nA:;86;nAZ86;nAZ86;nAZ86;nA:;86;nAZ86;nAZ86;nAZ86;nA:;bc;uwkxebbbdbbb9GNbb"),{}).then(function(o){(r=o.instance).exports.__wasm_call_ctors()});function t(o){if(!o)throw new Error("Assertion failed")}function i(o){return new Uint8Array(o.buffer,o.byteOffset,o.byteLength)}function n(o){var s=new Float32Array(r.exports.memory.buffer,o,12);return{centerX:s[0],centerY:s[1],centerZ:s[2],radius:s[3],coneApexX:s[4],coneApexY:s[5],coneApexZ:s[6],coneAxisX:s[7],coneAxisY:s[8],coneAxisZ:s[9],coneCutoff:s[10]}}}();let da=0;class Bi{constructor(e){if(this.downloadParallelism=e.downloadParallelism==null?8:e.downloadParallelism,this.timeout=e.timeout!=null?e.timeout:5e3,this.renderer=e.renderer,this.zUpToYUpMatrix=new G.Matrix4,this.zUpToYUpMatrix.set(1,0,0,0,0,0,-1,0,0,1,0,0,0,0,0,1),this.maxCachedItems=100,this.proxy=e.proxy,e&&(this.meshCallback=e.meshCallback,this.pointsCallback=e.pointsCallback,e.maxCachedItems!=null&&(this.maxCachedItems=e.maxCachedItems)),this.gltfLoader=new Or,e&&e.dracoLoader)this.gltfLoader.setDRACOLoader(e.dracoLoader),this.hasDracoLoader=!0;else{const a=new Yr;a.setDecoderPath("https://storage.googleapis.com/ogc-3d-tiles/draco/"),this.dracoLoader=a,this.gltfLoader.setDRACOLoader(a),this.gltfLoader.hasDracoLoader=!0}if(e&&e.ktx2Loader)this.gltfLoader.setKTX2Loader(e.ktx2Loader),this.hasKTX2Loader=!0;else if(e&&e.renderer){const a=new Oe;a.setTranscoderPath("https://storage.googleapis.com/ogc-3d-tiles/basis/").detectSupport(e.renderer),this.ktx2loader=a,this.gltfLoader.setKTX2Loader(a),this.gltfLoader.hasKTX2Loader=!0}this.gltfLoader.setMeshoptDecoder(Ii),this.hasMeshOptDecoder=!0,this.b3dmDecoder=new Pr(this.gltfLoader),this.splatsDecoder=new oo(this.gltfLoader,this.renderer),this.cache=new Lr,this.register={},this.ready=[],this.downloads=[],this.nextReady=[],this.nextDownloads=[]}update(){const e=this;da<e.downloadParallelism&&e._download(),e._loadBatch()}_scheduleDownload(e){this.downloads.unshift(e)}_download(){do{if(this.nextDownloads.length==0&&(this._getNextDownloads(),this.nextDownloads.length==0))return;for(;this.nextDownloads.length>0;){const e=this.nextDownloads.shift();e&&e.shouldDoDownload()&&e.doDownload()}}while(this.concurrentDownloads<this.downloadParallelism)}_meshReceived(e,a,t,i,n,o,s){this.ready.unshift([e,a,t,i,n,o,s])}_loadBatch(){for(this.nextReady.length==0&&this._getNextReady();this.nextReady.length>0;){const e=this.nextReady.shift();if(!e)return;const a=e[0],t=e[1],i=e[2],n=a.get(i);n&&t[i]&&Object.keys(t[i]).forEach(o=>{const s=t[i][o];s&&(s(n),t[i][o]=null)}),this.nextReady.length==0&&this._getNextReady()}}_getNextDownloads(){let e=Number.POSITIVE_INFINITY,a=-1;for(let s=this.downloads.length-1;s>=0;s--)this.downloads[s].shouldDoDownload()?this.downloads[s].distanceFunction||this.nextDownloads.push(this.downloads.splice(s,1)[0]):this.downloads.splice(s,1);if(this.nextDownloads.length>0)return;let t,i=0,n=Number.MAX_SAFE_INTEGER,o=-1;for(let s=this.downloads.length-1;s>=0;s--){const c=this.downloads[s].distanceFunction();c<=e&&(e=c,a=s),i=Math.max(this.downloads[s].level),this.downloads[s].loadingStrategy!="IMMEDIATE"&&this.downloads[s].level<n&&(n=this.downloads[s].level,o=s)}if(i>n+4?t=this.downloads.splice(o,1).pop():a>=0&&(t=this.downloads.splice(a,1).pop()),t){this.nextDownloads.push(t);const s=t.getSiblings();for(let c=this.downloads.length-1;c>=0;c--)s.map(u=>u.uuid).includes(this.downloads[c].uuid)&&this.nextDownloads.push(this.downloads.splice(c,1).pop())}}_getNextReady(){let e=Number.POSITIVE_INFINITY,a=-1;for(let t=this.ready.length-1;t>=0;t--)this.ready[t][3]||this.nextReady.push(this.ready.splice(t,1)[0]);if(!(this.nextReady.length>0)){for(let t=this.ready.length-1;t>=0;t--){const i=this.ready[t][3]()*this.ready[t][5];i<=e&&(e=i,a=t)}if(a>=0){const t=this.ready.splice(a,1).pop();this.nextReady.push(t);const i=t[4]();for(let n=this.ready.length-1;n>=0;n--)i.map(o=>o.uuid).includes(this.ready[n][6])&&this.nextReady.push(this.ready.splice(n,1).pop())}}}get(e,a,t,i,n,o,s,c,u,A,d,b){const h=this,l=Di(t),g=new AbortController;if(e.signal.addEventListener("abort",()=>{h.register[l]&&Object.keys(h.register[l]).length!=0||g.abort("user abort")}),!(t.includes(".b3dm")||t.includes(".json")||t.includes(".gltf")||t.includes(".glb")))return void console.error("the 3DTiles cache can only be used to load B3DM, gltf and json data");if(h.register[l]||(h.register[l]={}),h.register[l][a]&&console.error(" a tile should only be loaded once"),h.register[l][a]=i,h.cache.get(l))this._meshReceived(h.cache,h.register,l,n,o,s,a);else{let m;t.includes(".b3dm")?m=()=>{var E;E=h.proxy?()=>fetch(h.proxy,{method:"POST",body:t,signal:g.signal}):()=>fetch(t,{signal:g.signal}),da++,E().then(p=>{if(!p.ok)throw console.error("could not load tile with path : "+t),new Error(`couldn't load "${t}". Request failed with status ${p.status} : ${p.statusText}`);return p.arrayBuffer()}).then(p=>this.b3dmDecoder.parseB3DM(p,C=>{h.meshCallback(C,d)},u,A)).then(p=>{h.cache.put(l,p),this._meshReceived(h.cache,h.register,l,n,o,s,a),h._checkSize()}).catch(p=>{}).finally(()=>{da--})}:t.includes(".glb")||t.includes(".gltf")?m=b?()=>{var E;E=h.proxy?()=>fetch(h.proxy,{method:"POST",body:t,signal:g.signal}):()=>fetch(t,{signal:g.signal}),da++,E().then(p=>{if(!p.ok)throw console.error("could not load tile with path : "+t),new Error(`couldn't load "${t}". Request failed with status ${p.status} : ${p.statusText}`);return p.arrayBuffer()}).then(p=>this.splatsDecoder.parseSplats(p,u,A,b)).then(p=>{h.cache.put(l,p),h._meshReceived(h.cache,h.register,l,n,o,s,a),h._checkSize()}).catch(p=>{}).finally(()=>{da--})}:()=>{var E;E=h.proxy?()=>fetch(h.proxy,{method:"POST",body:t,signal:g.signal}):()=>fetch(t,{signal:g.signal}),da++,E().then(p=>{if(!p.ok)throw console.error("could not load tile with path : "+t),new Error(`couldn't load "${t}". Request failed with status ${p.status} : ${p.statusText}`);return p.arrayBuffer()}).then(async p=>{await async function(C){return new Promise(I=>{const x=setInterval(()=>{C.hasDracoLoader&&!C.dracoLoader||C.hasKTX2Loader&&!C.ktx2Loader||(clearInterval(x),I())},10)})}(this.gltfLoader),this.gltfLoader.parse(p,null,C=>{C.scene||(C.scene=new G.Object3D),C.scene.asset=C.asset,u&&C.scene.applyMatrix4(this.zUpToYUpMatrix),C.scene.traverse(I=>{I.isMesh&&(A&&I.applyMatrix4(this.zUpToYUpMatrix),h.meshCallback&&h.meshCallback(I,d)),I.isPoints&&h.pointsCallback&&h.pointsCallback(I,d)}),h.cache.put(l,C.scene),h._meshReceived(h.cache,h.register,l,n,o,s,a),h._checkSize()})}).catch(p=>{p!=="user abort"&&p.code}).finally(()=>{da--})}:t.includes(".json")&&(m=()=>{var E;E=h.proxy?()=>fetch(h.proxy,{method:"POST",body:t,signal:g.signal}):()=>fetch(t,{signal:g.signal}),da++,E().then(p=>{if(!p.ok)throw console.error("could not load tile with path : "+t),new Error(`couldn't load "${t}". Request failed with status ${p.status} : ${p.statusText}`);return p.json()}).then(p=>er(p,t)).then(p=>{h.cache.put(l,p),h._meshReceived(h.cache,h.register,l),h._checkSize()}).catch(p=>{console.error(p)}).finally(()=>{da--})}),this._scheduleDownload({shouldDoDownload:()=>!e.signal.aborted&&!!h.register[l]&&Object.keys(h.register[l]).length>0&&!h.cache.get(l),doDownload:m,distanceFunction:n,getSiblings:o,level:s,loadingStrategy:c,uuid:a})}}clear(){const e=this.maxCachedItems;this.maxCachedItems=0,this._checkSize(),this.maxCachedItems=e}invalidate(e,a){const t=Di(e),i=this;i.register[t]&&setTimeout(()=>{i.register&&i.register[t]&&(delete i.register[t][a],i._checkSize())},i.timeout)}dispose(){let e=this.cache.head();for(this._disposeEntryContent(e);(e=e.next()).key!=null;)this._disposeEntryContent(e);this.cache.reset(),this.cache=void 0,this.register=void 0,this.dracoLoader&&this.dracoLoader.dispose(),this.ktx2loader&&this.ktx2loader.dispose()}_checkSize(){const e=this;let a=0;for(;e.cache.size()>e.maxCachedItems&&a<e.cache.size();){a++;const t=e.cache.head(),i=e.register[t.key];i&&(Object.keys(i).length>0?(e.cache.remove(t.key),e.cache.put(t.key,t.value)):(e.cache.remove(t.key),delete e.register[t.key],e._disposeEntryContent(t)))}}_disposeEntryContent(e){e.value&&(e.value.isSplatsBatch?e.value.remove():e.value.traverse&&e.value.traverse(a=>{if(a.material)if(a.material.length)for(let t=0;t<a.material.length;++t)a.material[t].dispose();else a.material.dispose();a.geometry&&a.geometry.dispose()}))}}function Di(r){for(var e=r.split("/"),a=[],t=0,i=0;i<e.length;i++){var n=e[i];n!=="."&&n!==""&&n!==".."?a[t++]=n:n===".."&&t>0&&t--}if(t===0)return"/";var o="";for(i=0;i<t;i++)o+="/"+a[i];return o}var yi,wi,pa=function(){if(wi)return yi;function r(t){if(typeof t!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(t))}function e(t,i){for(var n,o="",s=0,c=-1,u=0,A=0;A<=t.length;++A){if(A<t.length)n=t.charCodeAt(A);else{if(n===47)break;n=47}if(n===47){if(!(c===A-1||u===1))if(c!==A-1&&u===2){if(o.length<2||s!==2||o.charCodeAt(o.length-1)!==46||o.charCodeAt(o.length-2)!==46){if(o.length>2){var d=o.lastIndexOf("/");if(d!==o.length-1){d===-1?(o="",s=0):s=(o=o.slice(0,d)).length-1-o.lastIndexOf("/"),c=A,u=0;continue}}else if(o.length===2||o.length===1){o="",s=0,c=A,u=0;continue}}i&&(o.length>0?o+="/..":o="..",s=2)}else o.length>0?o+="/"+t.slice(c+1,A):o=t.slice(c+1,A),s=A-c-1;c=A,u=0}else n===46&&u!==-1?++u:u=-1}return o}wi=1;var a={resolve:function(){for(var t,i="",n=!1,o=arguments.length-1;o>=-1&&!n;o--){var s;o>=0?s=arguments[o]:(t===void 0&&(t=process.cwd()),s=t),r(s),s.length!==0&&(i=s+"/"+i,n=s.charCodeAt(0)===47)}return i=e(i,!n),n?i.length>0?"/"+i:"/":i.length>0?i:"."},normalize:function(t){if(r(t),t.length===0)return".";var i=t.charCodeAt(0)===47,n=t.charCodeAt(t.length-1)===47;return(t=e(t,!i)).length!==0||i||(t="."),t.length>0&&n&&(t+="/"),i?"/"+t:t},isAbsolute:function(t){return r(t),t.length>0&&t.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var t,i=0;i<arguments.length;++i){var n=arguments[i];r(n),n.length>0&&(t===void 0?t=n:t+="/"+n)}return t===void 0?".":a.normalize(t)},relative:function(t,i){if(r(t),r(i),t===i||(t=a.resolve(t))===(i=a.resolve(i)))return"";for(var n=1;n<t.length&&t.charCodeAt(n)===47;++n);for(var o=t.length,s=o-n,c=1;c<i.length&&i.charCodeAt(c)===47;++c);for(var u=i.length-c,A=s<u?s:u,d=-1,b=0;b<=A;++b){if(b===A){if(u>A){if(i.charCodeAt(c+b)===47)return i.slice(c+b+1);if(b===0)return i.slice(c+b)}else s>A&&(t.charCodeAt(n+b)===47?d=b:b===0&&(d=0));break}var h=t.charCodeAt(n+b);if(h!==i.charCodeAt(c+b))break;h===47&&(d=b)}var l="";for(b=n+d+1;b<=o;++b)b!==o&&t.charCodeAt(b)!==47||(l.length===0?l+="..":l+="/..");return l.length>0?l+i.slice(c+d):(c+=d,i.charCodeAt(c)===47&&++c,i.slice(c))},_makeLong:function(t){return t},dirname:function(t){if(r(t),t.length===0)return".";for(var i=t.charCodeAt(0),n=i===47,o=-1,s=!0,c=t.length-1;c>=1;--c)if((i=t.charCodeAt(c))===47){if(!s){o=c;break}}else s=!1;return o===-1?n?"/":".":n&&o===1?"//":t.slice(0,o)},basename:function(t,i){if(i!==void 0&&typeof i!="string")throw new TypeError('"ext" argument must be a string');r(t);var n,o=0,s=-1,c=!0;if(i!==void 0&&i.length>0&&i.length<=t.length){if(i.length===t.length&&i===t)return"";var u=i.length-1,A=-1;for(n=t.length-1;n>=0;--n){var d=t.charCodeAt(n);if(d===47){if(!c){o=n+1;break}}else A===-1&&(c=!1,A=n+1),u>=0&&(d===i.charCodeAt(u)?--u==-1&&(s=n):(u=-1,s=A))}return o===s?s=A:s===-1&&(s=t.length),t.slice(o,s)}for(n=t.length-1;n>=0;--n)if(t.charCodeAt(n)===47){if(!c){o=n+1;break}}else s===-1&&(c=!1,s=n+1);return s===-1?"":t.slice(o,s)},extname:function(t){r(t);for(var i=-1,n=0,o=-1,s=!0,c=0,u=t.length-1;u>=0;--u){var A=t.charCodeAt(u);if(A!==47)o===-1&&(s=!1,o=u+1),A===46?i===-1?i=u:c!==1&&(c=1):i!==-1&&(c=-1);else if(!s){n=u+1;break}}return i===-1||o===-1||c===0||c===1&&i===o-1&&i===n+1?"":t.slice(i,o)},format:function(t){if(t===null||typeof t!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof t);return function(i,n){var o=n.dir||n.root,s=n.base||(n.name||"")+(n.ext||"");return o?o===n.root?o+s:o+i+s:s}("/",t)},parse:function(t){r(t);var i={root:"",dir:"",base:"",ext:"",name:""};if(t.length===0)return i;var n,o=t.charCodeAt(0),s=o===47;s?(i.root="/",n=1):n=0;for(var c=-1,u=0,A=-1,d=!0,b=t.length-1,h=0;b>=n;--b)if((o=t.charCodeAt(b))!==47)A===-1&&(d=!1,A=b+1),o===46?c===-1?c=b:h!==1&&(h=1):c!==-1&&(h=-1);else if(!d){u=b+1;break}return c===-1||A===-1||h===0||h===1&&c===A-1&&c===u+1?A!==-1&&(i.base=i.name=u===0&&s?t.slice(1,A):t.slice(u,A)):(u===0&&s?(i.name=t.slice(1,c),i.base=t.slice(1,A)):(i.name=t.slice(u,c),i.base=t.slice(u,A)),i.ext=t.slice(c,A)),u>0?i.dir=t.slice(0,u-1):s&&(i.dir="/"),i},sep:"/",delimiter:":",win32:null,posix:null};return a.posix=a,yi=a}();function nt(){return nt=Object.assign?Object.assign.bind():function(r){for(var e=1;e<arguments.length;e++){var a=arguments[e];for(var t in a)({}).hasOwnProperty.call(a,t)&&(r[t]=a[t])}return r},nt.apply(null,arguments)}var xi={relTol:1e-12,absTol:1e-15,matrix:"Matrix",number:"number",numberFallback:"number",precision:64,predictable:!1,randomSeed:null};function ss(r,e){if(ot(r,e))return r[e];throw typeof r[e]=="function"&&function(a,t){return a==null||typeof a[t]!="function"||At(a,t)&&Object.getPrototypeOf&&t in Object.getPrototypeOf(a)?!1:At(cs,t)?!0:!(t in Object.prototype||t in Function.prototype)}(r,e)?new Error('Cannot access method "'+e+'" as a property'):new Error('No access to property "'+e+'"')}function ot(r,e){return!(!function(a){return typeof a=="object"&&a&&a.constructor===Object}(r)&&!Array.isArray(r))&&(!!At(As,e)||!(e in Object.prototype)&&!(e in Function.prototype))}var As={length:!0,name:!0},cs={toString:!0,valueOf:!0,toLocaleString:!0};class us{constructor(e){this.wrappedObject=e,this[Symbol.iterator]=this.entries}keys(){return Object.keys(this.wrappedObject).filter(e=>this.has(e)).values()}get(e){return ss(this.wrappedObject,e)}set(e,a){return function(t,i,n){if(ot(t,i))return t[i]=n,n;throw new Error('No access to property "'+i+'"')}(this.wrappedObject,e,a),this}has(e){return ot(this.wrappedObject,e)&&e in this.wrappedObject}entries(){return function(e,a){return{next:()=>{var t=e.next();return t.done?t:{value:a(t.value),done:!1}}}}(this.keys(),e=>[e,this.get(e)])}forEach(e){for(var a of this.keys())e(this.get(a),a,this)}delete(e){ot(this.wrappedObject,e)&&delete this.wrappedObject[e]}clear(){for(var e of this.keys())this.delete(e)}get size(){return Object.keys(this.wrappedObject).length}}function be(r){return typeof r=="number"}function ve(r){return!(!r||typeof r!="object"||typeof r.constructor!="function")&&(r.isBigNumber===!0&&typeof r.constructor.prototype=="object"&&r.constructor.prototype.isBigNumber===!0||typeof r.constructor.isDecimal=="function"&&r.constructor.isDecimal(r)===!0)}function ds(r){return typeof r=="bigint"}function vi(r){return r&&typeof r=="object"&&Object.getPrototypeOf(r).isComplex===!0||!1}function Fi(r){return r&&typeof r=="object"&&Object.getPrototypeOf(r).isFraction===!0||!1}function Qi(r){return r&&r.constructor.prototype.isUnit===!0||!1}function ia(r){return typeof r=="string"}var Qe=Array.isArray;function De(r){return r&&r.constructor.prototype.isMatrix===!0||!1}function st(r){return Array.isArray(r)||De(r)}function hs(r){return r&&r.isDenseMatrix&&r.constructor.prototype.isMatrix===!0||!1}function ls(r){return r&&r.isSparseMatrix&&r.constructor.prototype.isMatrix===!0||!1}function bs(r){return r&&r.constructor.prototype.isRange===!0||!1}function ar(r){return r&&r.constructor.prototype.isIndex===!0||!1}function gs(r){return typeof r=="boolean"}function fs(r){return r&&r.constructor.prototype.isResultSet===!0||!1}function ps(r){return r&&r.constructor.prototype.isHelp===!0||!1}function ms(r){return typeof r=="function"}function Es(r){return r instanceof Date}function Cs(r){return r instanceof RegExp}function tr(r){return!(!r||typeof r!="object"||r.constructor!==Object||vi(r)||Fi(r))}function Is(r){return!!r&&(r instanceof Map||r instanceof us||typeof r.set=="function"&&typeof r.get=="function"&&typeof r.keys=="function"&&typeof r.has=="function")}function Bs(r){return r===null}function Ds(r){return r===void 0}function ys(r){return r&&r.isAccessorNode===!0&&r.constructor.prototype.isNode===!0||!1}function ws(r){return r&&r.isArrayNode===!0&&r.constructor.prototype.isNode===!0||!1}function xs(r){return r&&r.isAssignmentNode===!0&&r.constructor.prototype.isNode===!0||!1}function vs(r){return r&&r.isBlockNode===!0&&r.constructor.prototype.isNode===!0||!1}function Fs(r){return r&&r.isConditionalNode===!0&&r.constructor.prototype.isNode===!0||!1}function Qs(r){return r&&r.isConstantNode===!0&&r.constructor.prototype.isNode===!0||!1}function ks(r){return r&&r.isFunctionAssignmentNode===!0&&r.constructor.prototype.isNode===!0||!1}function js(r){return r&&r.isFunctionNode===!0&&r.constructor.prototype.isNode===!0||!1}function Ms(r){return r&&r.isIndexNode===!0&&r.constructor.prototype.isNode===!0||!1}function Rs(r){return r&&r.isNode===!0&&r.constructor.prototype.isNode===!0||!1}function Ss(r){return r&&r.isObjectNode===!0&&r.constructor.prototype.isNode===!0||!1}function Ts(r){return r&&r.isOperatorNode===!0&&r.constructor.prototype.isNode===!0||!1}function Ns(r){return r&&r.isParenthesisNode===!0&&r.constructor.prototype.isNode===!0||!1}function Us(r){return r&&r.isRangeNode===!0&&r.constructor.prototype.isNode===!0||!1}function Ls(r){return r&&r.isRelationalNode===!0&&r.constructor.prototype.isNode===!0||!1}function Gs(r){return r&&r.isSymbolNode===!0&&r.constructor.prototype.isNode===!0||!1}function _s(r){return r&&r.constructor.prototype.isChain===!0||!1}function ma(r){var e=typeof r;return e==="object"?r===null?"null":ve(r)?"BigNumber":r.constructor&&r.constructor.name?r.constructor.name:"Object":e}function ye(r){var e=typeof r;if(e==="number"||e==="bigint"||e==="string"||e==="boolean"||r==null)return r;if(typeof r.clone=="function")return r.clone();if(Array.isArray(r))return r.map(function(a){return ye(a)});if(r instanceof Date)return new Date(r.valueOf());if(ve(r))return r;if(tr(r))return function(a,t){var i={};for(var n in a)At(a,n)&&(i[n]=t(a[n]));return i}(r,ye);if(e==="function")return r;throw new TypeError("Cannot clone: unknown type of value (value: ".concat(r,")"))}function Sa(r,e){var a,t,i;if(Array.isArray(r)){if(!Array.isArray(e)||r.length!==e.length)return!1;for(t=0,i=r.length;t<i;t++)if(!Sa(r[t],e[t]))return!1;return!0}if(typeof r=="function")return r===e;if(r instanceof Object){if(Array.isArray(e)||!(e instanceof Object))return!1;for(a in r)if(!(a in e)||!Sa(r[a],e[a]))return!1;for(a in e)if(!(a in r))return!1;return!0}return r===e}function At(r,e){return r&&Object.hasOwnProperty.call(r,e)}var va=function(r){if(r)throw new Error(`The global config is readonly.
|
|
9
9
|
Please create a mathjs instance if you want to change the default configuration.
|
|
10
10
|
Example:
|
|
11
11
|
|
|
12
12
|
import { create, all } from 'mathjs';
|
|
13
13
|
const mathjs = create(all);
|
|
14
14
|
mathjs.config({ number: 'BigNumber' });
|
|
15
|
-
`);return Object.freeze(xi)};function ki(){return!0}function We(){return!1}function Ua(){}ot(va,xi,{MATRIX_OPTIONS:["Matrix","Array"],NUMBER_OPTIONS:["number","BigNumber","Fraction"]});const ji="Argument is not a typed-function.",ut=function r(){function e(B){return typeof B=="object"&&B!==null&&B.constructor===Object}const a=[{name:"number",test:function(B){return typeof B=="number"}},{name:"string",test:function(B){return typeof B=="string"}},{name:"boolean",test:function(B){return typeof B=="boolean"}},{name:"Function",test:function(B){return typeof B=="function"}},{name:"Array",test:Array.isArray},{name:"Date",test:function(B){return B instanceof Date}},{name:"RegExp",test:function(B){return B instanceof RegExp}},{name:"Object",test:e},{name:"null",test:function(B){return B===null}},{name:"undefined",test:function(B){return B===void 0}}],t={name:"any",test:ki,isAny:!0};let i,n,o=0,s={createCount:0};function A(B){const v=i.get(B);if(v)return v;let Q='Unknown type "'+B+'"';const j=B.toLowerCase();let R;for(R of n)if(R.toLowerCase()===j){Q+='. Did you mean "'+R+'" ?';break}throw new TypeError(Q)}function u(B){let v=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"any";const Q=v?A(v).index:n.length,j=[];for(let U=0;U<B.length;++U){if(!B[U]||typeof B[U].name!="string"||typeof B[U].test!="function")throw new TypeError("Object with properties {name: string, test: function} expected");const _=B[U].name;if(i.has(_))throw new TypeError('Duplicate type name "'+_+'"');j.push(_),i.set(_,{name:_,test:B[U].test,isAny:B[U].isAny,index:Q+U,conversionsTo:[]})}const R=n.slice(Q);n=n.slice(0,Q).concat(j).concat(R);for(let U=Q+j.length;U<n.length;++U)i.get(n[U]).index=U}function c(){i=new Map,n=[],o=0,u([t],!1)}function d(B){const v=n.filter(Q=>{const j=i.get(Q);return!j.isAny&&j.test(B)});return v.length?v:["any"]}function l(B){return B&&typeof B=="function"&&"_typedFunctionData"in B}function h(B,v,Q){if(!l(B))throw new TypeError(ji);const j=Q&&Q.exact,R=m(Array.isArray(v)?v.join(","):v),U=b(R);if(!j||U in B.signatures){const G=B._typedFunctionData.signatureMap.get(U);if(G)return G}const _=R.length;let N,H;if(j){let G;for(G in N=[],B.signatures)N.push(B._typedFunctionData.signatureMap.get(G))}else N=B._typedFunctionData.signatures;for(let G=0;G<_;++G){const he=R[G],ne=[];let xe;for(xe of N){const _e=D(xe.params,G);if(_e&&(!he.restParam||_e.restParam)){if(!_e.hasAny){const Aa=E(_e);if(he.types.some(ta=>!Aa.has(ta.name)))continue}ne.push(xe)}}if(N=ne,N.length===0)break}for(H of N)if(H.params.length<=_)return H;throw new TypeError("Signature not found (signature: "+(B.name||"unnamed")+"("+b(R,", ")+"))")}function b(B){let v=arguments.length>1&&arguments[1]!==void 0?arguments[1]:",";return B.map(Q=>Q.name).join(v)}function g(B){const v=B.indexOf("...")===0,Q=(v?B.length>3?B.slice(3):"any":B).split("|").map(U=>A(U.trim()));let j=!1,R=v?"...":"";return{types:Q.map(function(U){return j=U.isAny||j,R+=U.name+"|",{name:U.name,typeIndex:U.index,test:U.test,isAny:U.isAny,conversion:null,conversionIndex:-1}}),name:R.slice(0,-1),hasAny:j,hasConversion:!1,restParam:v}}function p(B){const v=B.types.map(_=>_.name),Q=function(_){if(_.length===0)return[];const N=_.map(A);_.length>1&&N.sort((he,ne)=>he.index-ne.index);let H=N[0].conversionsTo;if(_.length===1)return H;H=H.concat([]);const G=new Set(_);for(let he=1;he<N.length;++he){let ne;for(ne of N[he].conversionsTo)G.has(ne.from)||(H.push(ne),G.add(ne.from))}return H}(v);let j=B.hasAny,R=B.name;const U=Q.map(function(_){const N=A(_.from);return j=N.isAny||j,R+="|"+_.from,{name:_.from,typeIndex:N.index,test:N.test,isAny:N.isAny,conversion:_,conversionIndex:_.index}});return{types:B.types.concat(U),name:R,hasAny:j,hasConversion:U.length>0,restParam:B.restParam}}function E(B){return B.typeSet||(B.typeSet=new Set,B.types.forEach(v=>B.typeSet.add(v.name))),B.typeSet}function m(B){const v=[];if(typeof B!="string")throw new TypeError("Signatures must be strings");const Q=B.trim();if(Q==="")return v;const j=Q.split(",");for(let R=0;R<j.length;++R){const U=g(j[R].trim());if(U.restParam&&R!==j.length-1)throw new SyntaxError('Unexpected rest parameter "'+j[R]+'": only allowed for the last parameter');if(U.types.length===0)return null;v.push(U)}return v}function C(B){const v=Y(B);return!!v&&v.restParam}function I(B){if(B&&B.types.length!==0){if(B.types.length===1)return A(B.types[0].name).test;if(B.types.length===2){const v=A(B.types[0].name).test,Q=A(B.types[1].name).test;return function(j){return v(j)||Q(j)}}{const v=B.types.map(function(Q){return A(Q.name).test});return function(Q){for(let j=0;j<v.length;j++)if(v[j](Q))return!0;return!1}}}return ki}function w(B){let v,Q,j;if(C(B)){v=me(B).map(I);const R=v.length,U=I(Y(B)),_=function(N){for(let H=R;H<N.length;H++)if(!U(N[H]))return!1;return!0};return function(N){for(let H=0;H<v.length;H++)if(!v[H](N[H]))return!1;return _(N)&&N.length>=R+1}}return B.length===0?function(R){return R.length===0}:B.length===1?(Q=I(B[0]),function(R){return Q(R[0])&&R.length===1}):B.length===2?(Q=I(B[0]),j=I(B[1]),function(R){return Q(R[0])&&j(R[1])&&R.length===2}):(v=B.map(I),function(R){for(let U=0;U<v.length;U++)if(!v[U](R[U]))return!1;return R.length===v.length})}function D(B,v){return v<B.length?B[v]:C(B)?Y(B):null}function x(B,v){const Q=D(B,v);return Q?E(Q):new Set}function y(B){return B.conversion===null||B.conversion===void 0}function F(B,v){const Q=new Set;return B.forEach(j=>{const R=x(j.params,v);let U;for(U of R)Q.add(U)}),Q.has("any")?["any"]:Array.from(Q)}function M(B,v,Q){let j,R;const U=B||"unnamed";let _,N=Q;for(_=0;_<v.length;_++){const ne=[];if(N.forEach(xe=>{const _e=I(D(xe.params,_));(_<xe.params.length||C(xe.params))&&_e(v[_])&&ne.push(xe)}),ne.length===0){if(R=F(N,_),R.length>0){const xe=d(v[_]);return j=new TypeError("Unexpected type of argument in function "+U+" (expected: "+R.join(" or ")+", actual: "+xe.join(" | ")+", index: "+_+")"),j.data={category:"wrongType",fn:U,index:_,actual:xe,expected:R},j}}else N=ne}const H=N.map(function(ne){return C(ne.params)?1/0:ne.params.length});if(v.length<Math.min.apply(null,H))return R=F(N,_),j=new TypeError("Too few arguments in function "+U+" (expected: "+R.join(" or ")+", index: "+v.length+")"),j.data={category:"tooFewArgs",fn:U,index:v.length,expected:R},j;const G=Math.max.apply(null,H);if(v.length>G)return j=new TypeError("Too many arguments in function "+U+" (expected: "+G+", actual: "+v.length+")"),j.data={category:"tooManyArgs",fn:U,index:v.length,expectedLength:G},j;const he=[];for(let ne=0;ne<v.length;++ne)he.push(d(v[ne]).join("|"));return j=new TypeError('Arguments of type "'+he.join(", ")+'" do not match any of the defined signatures of function '+U+"."),j.data={category:"mismatch",actual:he},j}function S(B){let v=n.length+1;for(let Q=0;Q<B.types.length;Q++)y(B.types[Q])&&(v=Math.min(v,B.types[Q].typeIndex));return v}function z(B){let v=o+1;for(let Q=0;Q<B.types.length;Q++)y(B.types[Q])||(v=Math.min(v,B.types[Q].conversionIndex));return v}function O(B,v){if(B.hasAny){if(!v.hasAny)return 1}else if(v.hasAny)return-1;if(B.restParam){if(!v.restParam)return 1}else if(v.restParam)return-1;if(B.hasConversion){if(!v.hasConversion)return 1}else if(v.hasConversion)return-1;const Q=S(B)-S(v);if(Q<0)return-1;if(Q>0)return 1;const j=z(B)-z(v);return j<0?-1:j>0?1:0}function K(B,v){const Q=B.params,j=v.params,R=Y(Q),U=Y(j),_=C(Q),N=C(j);if(_&&R.hasAny){if(!N||!U.hasAny)return 1}else if(N&&U.hasAny)return-1;let H,G=0,he=0;for(H of Q)H.hasAny&&++G,H.hasConversion&&++he;let ne=0,xe=0;for(H of j)H.hasAny&&++ne,H.hasConversion&&++xe;if(G!==ne)return G-ne;if(_&&R.hasConversion){if(!N||!U.hasConversion)return 1}else if(N&&U.hasConversion)return-1;if(he!==xe)return he-xe;if(_){if(!N)return 1}else if(N)return-1;const _e=(Q.length-j.length)*(_?-1:1);if(_e!==0)return _e;const Aa=[];let ta,ga=0;for(let Va=0;Va<Q.length;++Va){const Nt=O(Q[Va],j[Va]);Aa.push(Nt),ga+=Nt}if(ga!==0)return ga;for(ta of Aa)if(ta!==0)return ta;return 0}function J(B,v){let Q=v;if(B.some(R=>R.hasConversion)){const R=C(B),U=B.map(q);Q=function(){const _=[],N=R?arguments.length-1:arguments.length;for(let H=0;H<N;H++)_[H]=U[H](arguments[H]);return R&&(_[N]=arguments[N].map(U[N])),v.apply(this,_)}}let j=Q;if(C(B)){const R=B.length-1;j=function(){return Q.apply(this,ee(arguments,0,R).concat([ee(arguments,R)]))}}return j}function q(B){let v,Q,j,R;const U=[],_=[];switch(B.types.forEach(function(N){N.conversion&&(U.push(A(N.conversion.from).test),_.push(N.conversion.convert))}),_.length){case 0:return function(N){return N};case 1:return v=U[0],j=_[0],function(N){return v(N)?j(N):N};case 2:return v=U[0],Q=U[1],j=_[0],R=_[1],function(N){return v(N)?j(N):Q(N)?R(N):N};default:return function(N){for(let H=0;H<_.length;H++)if(U[H](N))return _[H](N);return N}}}function se(B){return function v(Q,j,R){if(j<Q.length){const N=Q[j];let H=[];if(N.restParam){const G=N.types.filter(y);G.length<N.types.length&&H.push({types:G,name:"..."+G.map(he=>he.name).join("|"),hasAny:G.some(he=>he.isAny),hasConversion:!1,restParam:!0}),H.push(N)}else H=N.types.map(function(G){return{types:[G],name:G.name,hasAny:G.isAny,hasConversion:G.conversion,restParam:!1}});return U=H,_=function(G){return v(Q,j+1,R.concat([G]))},Array.prototype.concat.apply([],U.map(_))}return[R];var U,_}(B,0,[])}function ue(B,v){const Q=Math.max(B.length,v.length);for(let N=0;N<Q;N++){const H=x(B,N),G=x(v,N);let he,ne=!1;for(he of G)if(H.has(he)){ne=!0;break}if(!ne)return!1}const j=B.length,R=v.length,U=C(B),_=C(v);return U?_?j===R:R>=j:_?j>=R:j===R}function re(B,v,Q){const j=[];let R;for(R of B){let U=Q[R];if(typeof U!="number")throw new TypeError('No definition for referenced signature "'+R+'"');if(U=v[U],typeof U!="function")return!1;j.push(U)}return j}function le(B,v,Q){const j=function(_){return _.map(N=>Ue(N)?Ce(N.referToSelf.callback):we(N)?Ae(N.referTo.references,N.referTo.callback):N)}(B),R=new Array(j.length).fill(!1);let U=!0;for(;U;){U=!1;let _=!0;for(let N=0;N<j.length;++N){if(R[N])continue;const H=j[N];if(Ue(H))j[N]=H.referToSelf.callback(Q),j[N].referToSelf=H.referToSelf,R[N]=!0,_=!1;else if(we(H)){const G=re(H.referTo.references,j,v);G?(j[N]=H.referTo.callback.apply(this,G),j[N].referTo=H.referTo,R[N]=!0,_=!1):U=!0}}if(_&&U)throw new SyntaxError("Circular reference detected in resolving typed.referTo")}return j}function de(B,v){if(s.createCount++,Object.keys(v).length===0)throw new SyntaxError("No signatures provided");s.warnAgainstDeprecatedThis&&function(te){const ra=/\bthis(\(|\.signatures\b)/;Object.keys(te).forEach(Rr=>{const Wa=te[Rr];if(ra.test(Wa.toString()))throw new SyntaxError("Using `this` to self-reference a function is deprecated since typed-function@3. Use typed.referTo and typed.referToSelf instead.")})}(v);const Q=[],j=[],R={},U=[];let _;for(_ in v){if(!Object.prototype.hasOwnProperty.call(v,_))continue;const te=m(_);if(!te)continue;Q.forEach(function(rt){if(ue(rt,te))throw new TypeError('Conflicting signatures "'+b(rt)+'" and "'+b(te)+'".')}),Q.push(te);const ra=j.length;j.push(v[_]);const Rr=te.map(p);let Wa;for(Wa of se(Rr)){const rt=b(Wa);U.push({params:Wa,name:rt,fn:ra}),Wa.every($c=>!$c.hasConversion)&&(R[rt]=ra)}}U.sort(K);const N=le(j,R,tt);let H;for(H in R)Object.prototype.hasOwnProperty.call(R,H)&&(R[H]=N[R[H]]);const G=[],he=new Map;for(H of U)he.has(H.name)||(H.fn=N[H.fn],G.push(H),he.set(H.name,H));const ne=G[0]&&G[0].params.length<=2&&!C(G[0].params),xe=G[1]&&G[1].params.length<=2&&!C(G[1].params),_e=G[2]&&G[2].params.length<=2&&!C(G[2].params),Aa=G[3]&&G[3].params.length<=2&&!C(G[3].params),ta=G[4]&&G[4].params.length<=2&&!C(G[4].params),ga=G[5]&&G[5].params.length<=2&&!C(G[5].params),Va=ne&&xe&&_e&&Aa&&ta&&ga;for(let te=0;te<G.length;++te)G[te].test=w(G[te].params);const Nt=ne?I(G[0].params[0]):We,wc=xe?I(G[1].params[0]):We,xc=_e?I(G[2].params[0]):We,vc=Aa?I(G[3].params[0]):We,Fc=ta?I(G[4].params[0]):We,Qc=ga?I(G[5].params[0]):We,kc=ne?I(G[0].params[1]):We,jc=xe?I(G[1].params[1]):We,Mc=_e?I(G[2].params[1]):We,Sc=Aa?I(G[3].params[1]):We,Tc=ta?I(G[4].params[1]):We,Rc=ga?I(G[5].params[1]):We;for(let te=0;te<G.length;++te)G[te].implementation=J(G[te].params,G[te].fn);const Nc=ne?G[0].implementation:Ua,Uc=xe?G[1].implementation:Ua,Gc=_e?G[2].implementation:Ua,Lc=Aa?G[3].implementation:Ua,_c=ta?G[4].implementation:Ua,Pc=ga?G[5].implementation:Ua,zc=ne?G[0].params.length:-1,Hc=xe?G[1].params.length:-1,Oc=_e?G[2].params.length:-1,qc=Aa?G[3].params.length:-1,Jc=ta?G[4].params.length:-1,Kc=ga?G[5].params.length:-1,Vc=Va?6:0,Wc=G.length,Yc=G.map(te=>te.test),Xc=G.map(te=>te.implementation),Zc=function(){for(let te=Vc;te<Wc;te++)if(Yc[te](arguments))return Xc[te].apply(this,arguments);return s.onMismatch(B,arguments,G)};function tt(te,ra){return arguments.length===zc&&Nt(te)&&kc(ra)?Nc.apply(this,arguments):arguments.length===Hc&&wc(te)&&jc(ra)?Uc.apply(this,arguments):arguments.length===Oc&&xc(te)&&Mc(ra)?Gc.apply(this,arguments):arguments.length===qc&&vc(te)&&Sc(ra)?Lc.apply(this,arguments):arguments.length===Jc&&Fc(te)&&Tc(ra)?_c.apply(this,arguments):arguments.length===Kc&&Qc(te)&&Rc(ra)?Pc.apply(this,arguments):Zc.apply(this,arguments)}try{Object.defineProperty(tt,"name",{value:B})}catch{}return tt.signatures=R,tt._typedFunctionData={signatures:G,signatureMap:he},tt}function $(B,v,Q){throw M(B,v,Q)}function me(B){return ee(B,0,B.length-1)}function Y(B){return B[B.length-1]}function ee(B,v,Q){return Array.prototype.slice.call(B,v,Q)}function Ae(B,v){return{referTo:{references:B,callback:v}}}function Ce(B){if(typeof B!="function")throw new TypeError("Callback function expected as first argument");return{referToSelf:{callback:B}}}function we(B){return B&&typeof B.referTo=="object"&&Array.isArray(B.referTo.references)&&typeof B.referTo.callback=="function"}function Ue(B){return B&&typeof B.referToSelf=="object"&&typeof B.referToSelf.callback=="function"}function Je(B,v){if(!B)return v;if(v&&v!==B){const Q=new Error("Function names do not match (expected: "+B+", actual: "+v+")");throw Q.data={actual:v,expected:B},Q}return B}function Ke(B){let v;for(const Q in B)Object.prototype.hasOwnProperty.call(B,Q)&&(l(B[Q])||typeof B[Q].signature=="string")&&(v=Je(v,B[Q].name));return v}function at(B,v){let Q;for(Q in v)if(Object.prototype.hasOwnProperty.call(v,Q)){if(Q in B&&v[Q]!==B[Q]){const j=new Error('Signature "'+Q+'" is defined twice');throw j.data={signature:Q,sourceFunction:v[Q],destFunction:B[Q]},j}B[Q]=v[Q]}}c(),u(a);const Dc=s;function ao(B){if(!B||typeof B.from!="string"||typeof B.to!="string"||typeof B.convert!="function")throw new TypeError("Object with properties {from: string, to: string, convert: function} expected");if(B.to===B.from)throw new SyntaxError('Illegal to define conversion from "'+B.from+'" to itself.')}return s=function(B){const v=typeof B=="string";let Q=v?B:"";const j={};for(let R=v?1:0;R<arguments.length;++R){const U=arguments[R];let _,N={};if(typeof U=="function"?(_=U.name,typeof U.signature=="string"?N[U.signature]=U:l(U)&&(N=U.signatures)):e(U)&&(N=U,v||(_=Ke(U))),Object.keys(N).length===0){const H=new TypeError("Argument to 'typed' at index "+R+" is not a (typed) function, nor an object with signatures as keys and functions as values.");throw H.data={index:R,argument:U},H}v||(Q=Je(Q,_)),at(j,N)}return de(Q||"",j)},s.create=r,s.createCount=Dc.createCount,s.onMismatch=$,s.throwMismatchError=$,s.createError=M,s.clear=c,s.clearConversions=function(){let B;for(B of n)i.get(B).conversionsTo=[];o=0},s.addTypes=u,s._findType=A,s.referTo=function(){const B=me(arguments).map(Q=>b(m(Q))),v=Y(arguments);if(typeof v!="function")throw new TypeError("Callback function expected as last argument");return Ae(B,v)},s.referToSelf=Ce,s.convert=function(B,v){const Q=A(v);if(Q.test(B))return B;const j=Q.conversionsTo;if(j.length===0)throw new Error("There are no conversions to "+v+" defined.");for(let R=0;R<j.length;R++)if(A(j[R].from).test(B))return j[R].convert(B);throw new Error("Cannot convert "+B+" to "+v)},s.findSignature=h,s.find=function(B,v,Q){return h(B,v,Q).implementation},s.isTypedFunction=l,s.warnAgainstDeprecatedThis=!0,s.addType=function(B,v){let Q="any";v!==!1&&i.has("Object")&&(Q="Object"),s.addTypes([B],Q)},s.addConversion=function(B){let v=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{override:!1};ao(B);const Q=A(B.to),j=Q.conversionsTo.find(R=>R.from===B.from);if(j){if(!v||!v.override)throw new Error('There is already a conversion from "'+B.from+'" to "'+Q.name+'"');s.removeConversion({from:j.from,to:B.to,convert:j.convert})}Q.conversionsTo.push({from:B.from,convert:B.convert,index:o++})},s.addConversions=function(B,v){B.forEach(Q=>s.addConversion(Q,v))},s.removeConversion=function(B){ao(B);const v=A(B.to),Q=function(R,U){for(let _=0;_<R.length;_++)if(U(R[_]))return R[_]}(v.conversionsTo,R=>R.from===B.from);if(!Q)throw new Error("Attempt to remove nonexistent conversion from "+B.from+" to "+B.to);if(Q.convert!==B.convert)throw new Error("Conversion to remove does not match existing conversion");const j=v.conversionsTo.indexOf(Q);v.conversionsTo.splice(j,1)},s.resolve=function(B,v){if(!l(B))throw new TypeError(ji);const Q=B._typedFunctionData.signatures;for(let j=0;j<Q.length;++j)if(Q[j].test(v))return Q[j];return null},s}();function ie(r,e,a,t){function i(n){var o=function(s,A){for(var u={},c=0;c<A.length;c++){var d=A[c],l=s[d];l!==void 0&&(u[d]=l)}return u}(n,e.map(Fs));return function(s,A,u){var c=A.filter(l=>!function(h){return h&&h[0]==="?"}(l)).every(l=>u[l]!==void 0);if(!c){var d=A.filter(l=>u[l]===void 0);throw new Error('Cannot create function "'.concat(s,'", ')+"some dependencies are missing: ".concat(d.map(l=>'"'.concat(l,'"')).join(", "),"."))}}(r,e,n),a(o)}return i.isFactory=!0,i.fn=r,i.dependencies=e.slice().sort(),t&&(i.meta=t),i}function Fs(r){return r&&r[0]==="?"?r.slice(1):r}function Ee(r){return typeof r=="boolean"||!!isFinite(r)&&r===Math.round(r)}function ir(r,e,a){var t={2:"0b",8:"0o",16:"0x"}[e],i="";if(a){if(a<1)throw new Error("size must be in greater than 0");if(!Ee(a))throw new Error("size must be an integer");if(r>2**(a-1)-1||r<-(2**(a-1)))throw new Error("Value must be in range [-2^".concat(a-1,", 2^").concat(a-1,"-1]"));if(!Ee(r))throw new Error("Value must be an integer");r<0&&(r+=2**a),i="i".concat(a)}var n="";return r<0&&(r=-r,n="-"),"".concat(n).concat(t).concat(r.toString(e)).concat(i)}function nr(r,e){if(typeof e=="function")return e(r);if(r===1/0)return"Infinity";if(r===-1/0)return"-Infinity";if(isNaN(r))return"NaN";var{notation:a,precision:t,wordSize:i}=Mi(e);switch(a){case"fixed":return function(n,o){if(isNaN(n)||!isFinite(n))return String(n);var s=dt(n),A=typeof o=="number"?ht(s,s.exponent+1+o):s,u=A.coefficients,c=A.exponent+1,d=c+(o||0);return u.length<d&&(u=u.concat(Ga(d-u.length))),c<0&&(u=Ga(1-c).concat(u),c=1),c<u.length&&u.splice(c,0,c===0?"0.":"."),A.sign+u.join("")}(r,t);case"exponential":return Si(r,t);case"engineering":return function(n,o){if(isNaN(n)||!isFinite(n))return String(n);var s=dt(n),A=ht(s,o),u=A.exponent,c=A.coefficients,d=u%3==0?u:u<0?u-3-u%3:u-u%3;if(be(o))for(;o>c.length||u-d+1>c.length;)c.push(0);else for(var l=Math.abs(u-d)-(c.length-1),h=0;h<l;h++)c.push(0);for(var b=Math.abs(u-d),g=1;b>0;)g++,b--;var p=c.slice(g).join(""),E=be(o)&&p.length||p.match(/[1-9]/)?"."+p:"",m=c.slice(0,g).join("")+E+"e"+(u>=0?"+":"")+d.toString();return A.sign+m}(r,t);case"bin":return ir(r,2,i);case"oct":return ir(r,8,i);case"hex":return ir(r,16,i);case"auto":return function(n,o,s){if(isNaN(n)||!isFinite(n))return String(n);var A=Ri(s==null?void 0:s.lowerExp,-3),u=Ri(s==null?void 0:s.upperExp,5),c=dt(n),d=o?ht(c,o):c;if(d.exponent<A||d.exponent>=u)return Si(n,o);var l=d.coefficients,h=d.exponent;l.length<o&&(l=l.concat(Ga(o-l.length))),l=l.concat(Ga(h-l.length+1+(l.length<o?o-l.length:0)));var b=h>0?h:0;return b<(l=Ga(-h).concat(l)).length-1&&l.splice(b+1,0,"."),d.sign+l.join("")}(r,t,e).replace(/((\.\d*?)(0+))($|e)/,function(){var n=arguments[2],o=arguments[4];return n!=="."?n+o:o});default:throw new Error('Unknown notation "'+a+'". Choose "auto", "exponential", "fixed", "bin", "oct", or "hex.')}}function Mi(r){var e,a,t="auto";if(r!==void 0)if(be(r))e=r;else if(Fe(r))e=r.toNumber();else{if(!rr(r))throw new Error("Unsupported type of options, number, BigNumber, or object expected");r.precision!==void 0&&(e=Ti(r.precision,()=>{throw new Error('Option "precision" must be a number or BigNumber')})),r.wordSize!==void 0&&(a=Ti(r.wordSize,()=>{throw new Error('Option "wordSize" must be a number or BigNumber')})),r.notation&&(t=r.notation)}return{notation:t,precision:e,wordSize:a}}function dt(r){var e=String(r).toLowerCase().match(/^(-?)(\d+\.?\d*)(e([+-]?\d+))?$/);if(!e)throw new SyntaxError("Invalid number "+r);var a=e[1],t=e[2],i=parseFloat(e[4]||"0"),n=t.indexOf(".");i+=n!==-1?n-1:t.length-1;var o=t.replace(".","").replace(/^0*/,function(s){return i-=s.length,""}).replace(/0*$/,"").split("").map(function(s){return parseInt(s)});return o.length===0&&(o.push(0),i++),{sign:a,coefficients:o,exponent:i}}function Si(r,e){if(isNaN(r)||!isFinite(r))return String(r);var a=dt(r),t=e?ht(a,e):a,i=t.coefficients,n=t.exponent;i.length<e&&(i=i.concat(Ga(e-i.length)));var o=i.shift();return t.sign+o+(i.length>0?"."+i.join(""):"")+"e"+(n>=0?"+":"")+n}function ht(r,e){for(var a={sign:r.sign,coefficients:r.coefficients,exponent:r.exponent},t=a.coefficients;e<=0;)t.unshift(0),a.exponent++,e++;if(t.length>e&&t.splice(e,t.length-e)[0]>=5){var i=e-1;for(t[i]++;t[i]===10;)t.pop(),i===0&&(t.unshift(0),a.exponent++,i++),t[--i]++}return a}function Ga(r){for(var e=[],a=0;a<r;a++)e.push(0);return e}function lt(r,e){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1e-8,t=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;if(a<=0)throw new Error("Relative tolerance must be greater than 0");if(t<0)throw new Error("Absolute tolerance must be at least 0");return!isNaN(r)&&!isNaN(e)&&(isFinite(r)&&isFinite(e)?r===e||Math.abs(r-e)<=Math.max(a*Math.max(Math.abs(r),Math.abs(e)),t):r===e)}function Ti(r,e){return be(r)?r:Fe(r)?r.toNumber():void e()}function Ri(r,e){return be(r)?r:Fe(r)?r.toNumber():e}var Ni=function(){return Ni=ut.create,ut},Qs=ie("typed",["?BigNumber","?Complex","?DenseMatrix","?Fraction"],function(r){var{BigNumber:e,Complex:a,DenseMatrix:t,Fraction:i}=r,n=Ni();return n.clear(),n.addTypes([{name:"number",test:be},{name:"Complex",test:vi},{name:"BigNumber",test:Fe},{name:"bigint",test:Zo},{name:"Fraction",test:Fi},{name:"Unit",test:Qi},{name:"identifier",test:o=>ia&&/^(?:[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CD\uA7D0\uA7D1\uA7D3\uA7D5-\uA7DC\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDDC0-\uDDF3\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDD4A-\uDD65\uDD6F-\uDD85\uDE80-\uDEA9\uDEB0\uDEB1\uDEC2-\uDEC4\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61\uDF80-\uDF89\uDF8B\uDF8E\uDF90-\uDFB5\uDFB7\uDFD1\uDFD3]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8\uDFC0-\uDFE0]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD80E\uD80F\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46\uDC60-\uDFFF]|\uD810[\uDC00-\uDFFA]|\uD811[\uDC00-\uDE46]|\uD818[\uDD00-\uDD1D]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDD40-\uDD6C\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDDD0-\uDDED\uDDF0\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])(?:[0-9A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CD\uA7D0\uA7D1\uA7D3\uA7D5-\uA7DC\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDDC0-\uDDF3\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDD4A-\uDD65\uDD6F-\uDD85\uDE80-\uDEA9\uDEB0\uDEB1\uDEC2-\uDEC4\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61\uDF80-\uDF89\uDF8B\uDF8E\uDF90-\uDFB5\uDFB7\uDFD1\uDFD3]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8\uDFC0-\uDFE0]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD80E\uD80F\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46\uDC60-\uDFFF]|\uD810[\uDC00-\uDFFA]|\uD811[\uDC00-\uDE46]|\uD818[\uDD00-\uDD1D]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDD40-\uDD6C\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDDD0-\uDDED\uDDF0\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])*$/.test(o)},{name:"string",test:ia},{name:"Chain",test:vs},{name:"Array",test:ke},{name:"Matrix",test:ye},{name:"DenseMatrix",test:$o},{name:"SparseMatrix",test:es},{name:"Range",test:as},{name:"Index",test:tr},{name:"boolean",test:ts},{name:"ResultSet",test:rs},{name:"Help",test:is},{name:"function",test:ns},{name:"Date",test:os},{name:"RegExp",test:ss},{name:"null",test:cs},{name:"undefined",test:us},{name:"AccessorNode",test:ds},{name:"ArrayNode",test:hs},{name:"AssignmentNode",test:ls},{name:"BlockNode",test:bs},{name:"ConditionalNode",test:gs},{name:"ConstantNode",test:fs},{name:"FunctionNode",test:ms},{name:"FunctionAssignmentNode",test:ps},{name:"IndexNode",test:Es},{name:"Node",test:Cs},{name:"ObjectNode",test:Is},{name:"OperatorNode",test:Bs},{name:"ParenthesisNode",test:ys},{name:"RangeNode",test:Ds},{name:"RelationalNode",test:ws},{name:"SymbolNode",test:xs},{name:"Map",test:As},{name:"Object",test:rr}]),n.addConversions([{from:"number",to:"BigNumber",convert:function(o){if(e||bt(o),o.toExponential().replace(/e.*$/,"").replace(/^0\.?0*|\./,"").length>15)throw new TypeError("Cannot implicitly convert a number with >15 significant digits to BigNumber (value: "+o+"). Use function bignumber(x) to convert to BigNumber.");return new e(o)}},{from:"number",to:"Complex",convert:function(o){return a||gt(o),new a(o,0)}},{from:"BigNumber",to:"Complex",convert:function(o){return a||gt(o),new a(o.toNumber(),0)}},{from:"bigint",to:"number",convert:function(o){if(o>Number.MAX_SAFE_INTEGER)throw new TypeError("Cannot implicitly convert bigint to number: value exceeds the max safe integer value (value: "+o+")");return Number(o)}},{from:"bigint",to:"BigNumber",convert:function(o){return e||bt(o),new e(o.toString())}},{from:"bigint",to:"Fraction",convert:function(o){return i||ft(o),new i(o)}},{from:"Fraction",to:"BigNumber",convert:function(o){throw new TypeError("Cannot implicitly convert a Fraction to BigNumber or vice versa. Use function bignumber(x) to convert to BigNumber or fraction(x) to convert to Fraction.")}},{from:"Fraction",to:"Complex",convert:function(o){return a||gt(o),new a(o.valueOf(),0)}},{from:"number",to:"Fraction",convert:function(o){i||ft(o);var s=new i(o);if(s.valueOf()!==o)throw new TypeError("Cannot implicitly convert a number to a Fraction when there will be a loss of precision (value: "+o+"). Use function fraction(x) to convert to Fraction.");return s}},{from:"string",to:"number",convert:function(o){var s=Number(o);if(isNaN(s))throw new Error('Cannot convert "'+o+'" to a number');return s}},{from:"string",to:"BigNumber",convert:function(o){e||bt(o);try{return new e(o)}catch{throw new Error('Cannot convert "'+o+'" to BigNumber')}}},{from:"string",to:"bigint",convert:function(o){try{return BigInt(o)}catch{throw new Error('Cannot convert "'+o+'" to BigInt')}}},{from:"string",to:"Fraction",convert:function(o){i||ft(o);try{return new i(o)}catch{throw new Error('Cannot convert "'+o+'" to Fraction')}}},{from:"string",to:"Complex",convert:function(o){a||gt(o);try{return new a(o)}catch{throw new Error('Cannot convert "'+o+'" to Complex')}}},{from:"boolean",to:"number",convert:function(o){return+o}},{from:"boolean",to:"BigNumber",convert:function(o){return e||bt(o),new e(+o)}},{from:"boolean",to:"bigint",convert:function(o){return BigInt(+o)}},{from:"boolean",to:"Fraction",convert:function(o){return i||ft(o),new i(+o)}},{from:"boolean",to:"string",convert:function(o){return String(o)}},{from:"Array",to:"Matrix",convert:function(o){return t||function(){throw new Error("Cannot convert array into a Matrix: no class 'DenseMatrix' provided")}(),new t(o)}},{from:"Matrix",to:"Array",convert:function(o){return o.valueOf()}}]),n.onMismatch=(o,s,A)=>{var u=n.createError(o,s,A);if(["wrongType","mismatch"].includes(u.data.category)&&s.length===1&&At(s[0])&&A.some(d=>!d.params.includes(","))){var c=new TypeError("Function '".concat(o,"' doesn't apply to matrices. To call it ")+"elementwise on a matrix 'M', try 'map(M, ".concat(o,")'."));throw c.data=u.data,c}throw u},n.onMismatch=(o,s,A)=>{var u=n.createError(o,s,A);if(["wrongType","mismatch"].includes(u.data.category)&&s.length===1&&At(s[0])&&A.some(d=>!d.params.includes(","))){var c=new TypeError("Function '".concat(o,"' doesn't apply to matrices. To call it ")+"elementwise on a matrix 'M', try 'map(M, ".concat(o,")'."));throw c.data=u.data,c}throw u},n});function bt(r){throw new Error("Cannot convert value ".concat(r," into a BigNumber: no class 'BigNumber' provided"))}function gt(r){throw new Error("Cannot convert value ".concat(r," into a Complex number: no class 'Complex' provided"))}function ft(r){throw new Error("Cannot convert value ".concat(r," into a Fraction, no class 'Fraction' provided."))}/*!
|
|
15
|
+
`);return Object.freeze(xi)};function ki(){return!0}function We(){return!1}function Ta(){}nt(va,xi,{MATRIX_OPTIONS:["Matrix","Array"],NUMBER_OPTIONS:["number","BigNumber","Fraction"]});const ji="Argument is not a typed-function.",ct=function r(){function e(B){return typeof B=="object"&&B!==null&&B.constructor===Object}const a=[{name:"number",test:function(B){return typeof B=="number"}},{name:"string",test:function(B){return typeof B=="string"}},{name:"boolean",test:function(B){return typeof B=="boolean"}},{name:"Function",test:function(B){return typeof B=="function"}},{name:"Array",test:Array.isArray},{name:"Date",test:function(B){return B instanceof Date}},{name:"RegExp",test:function(B){return B instanceof RegExp}},{name:"Object",test:e},{name:"null",test:function(B){return B===null}},{name:"undefined",test:function(B){return B===void 0}}],t={name:"any",test:ki,isAny:!0};let i,n,o=0,s={createCount:0};function c(B){const v=i.get(B);if(v)return v;let Q='Unknown type "'+B+'"';const R=B.toLowerCase();let T;for(T of n)if(T.toLowerCase()===R){Q+='. Did you mean "'+T+'" ?';break}throw new TypeError(Q)}function u(B){let v=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"any";const Q=v?c(v).index:n.length,R=[];for(let U=0;U<B.length;++U){if(!B[U]||typeof B[U].name!="string"||typeof B[U].test!="function")throw new TypeError("Object with properties {name: string, test: function} expected");const z=B[U].name;if(i.has(z))throw new TypeError('Duplicate type name "'+z+'"');R.push(z),i.set(z,{name:z,test:B[U].test,isAny:B[U].isAny,index:Q+U,conversionsTo:[]})}const T=n.slice(Q);n=n.slice(0,Q).concat(R).concat(T);for(let U=Q+R.length;U<n.length;++U)i.get(n[U]).index=U}function A(){i=new Map,n=[],o=0,u([t],!1)}function d(B){const v=n.filter(Q=>{const R=i.get(Q);return!R.isAny&&R.test(B)});return v.length?v:["any"]}function b(B){return B&&typeof B=="function"&&"_typedFunctionData"in B}function h(B,v,Q){if(!b(B))throw new TypeError(ji);const R=Q&&Q.exact,T=p(Array.isArray(v)?v.join(","):v),U=l(T);if(!R||U in B.signatures){const L=B._typedFunctionData.signatureMap.get(U);if(L)return L}const z=T.length;let N,K;if(R){let L;for(L in N=[],B.signatures)N.push(B._typedFunctionData.signatureMap.get(L))}else N=B._typedFunctionData.signatures;for(let L=0;L<z;++L){const he=T[L],ne=[];let xe;for(xe of N){const Ge=y(xe.params,L);if(Ge&&(!he.restParam||Ge.restParam)){if(!Ge.hasAny){const Aa=E(Ge);if(he.types.some(ta=>!Aa.has(ta.name)))continue}ne.push(xe)}}if(N=ne,N.length===0)break}for(K of N)if(K.params.length<=z)return K;throw new TypeError("Signature not found (signature: "+(B.name||"unnamed")+"("+l(T,", ")+"))")}function l(B){let v=arguments.length>1&&arguments[1]!==void 0?arguments[1]:",";return B.map(Q=>Q.name).join(v)}function g(B){const v=B.indexOf("...")===0,Q=(v?B.length>3?B.slice(3):"any":B).split("|").map(U=>c(U.trim()));let R=!1,T=v?"...":"";return{types:Q.map(function(U){return R=U.isAny||R,T+=U.name+"|",{name:U.name,typeIndex:U.index,test:U.test,isAny:U.isAny,conversion:null,conversionIndex:-1}}),name:T.slice(0,-1),hasAny:R,hasConversion:!1,restParam:v}}function m(B){const v=B.types.map(z=>z.name),Q=function(z){if(z.length===0)return[];const N=z.map(c);z.length>1&&N.sort((he,ne)=>he.index-ne.index);let K=N[0].conversionsTo;if(z.length===1)return K;K=K.concat([]);const L=new Set(z);for(let he=1;he<N.length;++he){let ne;for(ne of N[he].conversionsTo)L.has(ne.from)||(K.push(ne),L.add(ne.from))}return K}(v);let R=B.hasAny,T=B.name;const U=Q.map(function(z){const N=c(z.from);return R=N.isAny||R,T+="|"+z.from,{name:z.from,typeIndex:N.index,test:N.test,isAny:N.isAny,conversion:z,conversionIndex:z.index}});return{types:B.types.concat(U),name:T,hasAny:R,hasConversion:U.length>0,restParam:B.restParam}}function E(B){return B.typeSet||(B.typeSet=new Set,B.types.forEach(v=>B.typeSet.add(v.name))),B.typeSet}function p(B){const v=[];if(typeof B!="string")throw new TypeError("Signatures must be strings");const Q=B.trim();if(Q==="")return v;const R=Q.split(",");for(let T=0;T<R.length;++T){const U=g(R[T].trim());if(U.restParam&&T!==R.length-1)throw new SyntaxError('Unexpected rest parameter "'+R[T]+'": only allowed for the last parameter');if(U.types.length===0)return null;v.push(U)}return v}function C(B){const v=X(B);return!!v&&v.restParam}function I(B){if(B&&B.types.length!==0){if(B.types.length===1)return c(B.types[0].name).test;if(B.types.length===2){const v=c(B.types[0].name).test,Q=c(B.types[1].name).test;return function(R){return v(R)||Q(R)}}{const v=B.types.map(function(Q){return c(Q.name).test});return function(Q){for(let R=0;R<v.length;R++)if(v[R](Q))return!0;return!1}}}return ki}function x(B){let v,Q,R;if(C(B)){v=me(B).map(I);const T=v.length,U=I(X(B)),z=function(N){for(let K=T;K<N.length;K++)if(!U(N[K]))return!1;return!0};return function(N){for(let K=0;K<v.length;K++)if(!v[K](N[K]))return!1;return z(N)&&N.length>=T+1}}return B.length===0?function(T){return T.length===0}:B.length===1?(Q=I(B[0]),function(T){return Q(T[0])&&T.length===1}):B.length===2?(Q=I(B[0]),R=I(B[1]),function(T){return Q(T[0])&&R(T[1])&&T.length===2}):(v=B.map(I),function(T){for(let U=0;U<v.length;U++)if(!v[U](T[U]))return!1;return T.length===v.length})}function y(B,v){return v<B.length?B[v]:C(B)?X(B):null}function w(B,v){const Q=y(B,v);return Q?E(Q):new Set}function D(B){return B.conversion===null||B.conversion===void 0}function F(B,v){const Q=new Set;return B.forEach(R=>{const T=w(R.params,v);let U;for(U of T)Q.add(U)}),Q.has("any")?["any"]:Array.from(Q)}function j(B,v,Q){let R,T;const U=B||"unnamed";let z,N=Q;for(z=0;z<v.length;z++){const ne=[];if(N.forEach(xe=>{const Ge=I(y(xe.params,z));(z<xe.params.length||C(xe.params))&&Ge(v[z])&&ne.push(xe)}),ne.length===0){if(T=F(N,z),T.length>0){const xe=d(v[z]);return R=new TypeError("Unexpected type of argument in function "+U+" (expected: "+T.join(" or ")+", actual: "+xe.join(" | ")+", index: "+z+")"),R.data={category:"wrongType",fn:U,index:z,actual:xe,expected:T},R}}else N=ne}const K=N.map(function(ne){return C(ne.params)?1/0:ne.params.length});if(v.length<Math.min.apply(null,K))return T=F(N,z),R=new TypeError("Too few arguments in function "+U+" (expected: "+T.join(" or ")+", index: "+v.length+")"),R.data={category:"tooFewArgs",fn:U,index:v.length,expected:T},R;const L=Math.max.apply(null,K);if(v.length>L)return R=new TypeError("Too many arguments in function "+U+" (expected: "+L+", actual: "+v.length+")"),R.data={category:"tooManyArgs",fn:U,index:v.length,expectedLength:L},R;const he=[];for(let ne=0;ne<v.length;++ne)he.push(d(v[ne]).join("|"));return R=new TypeError('Arguments of type "'+he.join(", ")+'" do not match any of the defined signatures of function '+U+"."),R.data={category:"mismatch",actual:he},R}function M(B){let v=n.length+1;for(let Q=0;Q<B.types.length;Q++)D(B.types[Q])&&(v=Math.min(v,B.types[Q].typeIndex));return v}function _(B){let v=o+1;for(let Q=0;Q<B.types.length;Q++)D(B.types[Q])||(v=Math.min(v,B.types[Q].conversionIndex));return v}function q(B,v){if(B.hasAny){if(!v.hasAny)return 1}else if(v.hasAny)return-1;if(B.restParam){if(!v.restParam)return 1}else if(v.restParam)return-1;if(B.hasConversion){if(!v.hasConversion)return 1}else if(v.hasConversion)return-1;const Q=M(B)-M(v);if(Q<0)return-1;if(Q>0)return 1;const R=_(B)-_(v);return R<0?-1:R>0?1:0}function V(B,v){const Q=B.params,R=v.params,T=X(Q),U=X(R),z=C(Q),N=C(R);if(z&&T.hasAny){if(!N||!U.hasAny)return 1}else if(N&&U.hasAny)return-1;let K,L=0,he=0;for(K of Q)K.hasAny&&++L,K.hasConversion&&++he;let ne=0,xe=0;for(K of R)K.hasAny&&++ne,K.hasConversion&&++xe;if(L!==ne)return L-ne;if(z&&T.hasConversion){if(!N||!U.hasConversion)return 1}else if(N&&U.hasConversion)return-1;if(he!==xe)return he-xe;if(z){if(!N)return 1}else if(N)return-1;const Ge=(Q.length-R.length)*(z?-1:1);if(Ge!==0)return Ge;const Aa=[];let ta,ga=0;for(let Va=0;Va<Q.length;++Va){const Tt=q(Q[Va],R[Va]);Aa.push(Tt),ga+=Tt}if(ga!==0)return ga;for(ta of Aa)if(ta!==0)return ta;return 0}function J(B,v){let Q=v;if(B.some(T=>T.hasConversion)){const T=C(B),U=B.map(O);Q=function(){const z=[],N=T?arguments.length-1:arguments.length;for(let K=0;K<N;K++)z[K]=U[K](arguments[K]);return T&&(z[N]=arguments[N].map(U[N])),v.apply(this,z)}}let R=Q;if(C(B)){const T=B.length-1;R=function(){return Q.apply(this,ee(arguments,0,T).concat([ee(arguments,T)]))}}return R}function O(B){let v,Q,R,T;const U=[],z=[];switch(B.types.forEach(function(N){N.conversion&&(U.push(c(N.conversion.from).test),z.push(N.conversion.convert))}),z.length){case 0:return function(N){return N};case 1:return v=U[0],R=z[0],function(N){return v(N)?R(N):N};case 2:return v=U[0],Q=U[1],R=z[0],T=z[1],function(N){return v(N)?R(N):Q(N)?T(N):N};default:return function(N){for(let K=0;K<z.length;K++)if(U[K](N))return z[K](N);return N}}}function se(B){return function v(Q,R,T){if(R<Q.length){const N=Q[R];let K=[];if(N.restParam){const L=N.types.filter(D);L.length<N.types.length&&K.push({types:L,name:"..."+L.map(he=>he.name).join("|"),hasAny:L.some(he=>he.isAny),hasConversion:!1,restParam:!0}),K.push(N)}else K=N.types.map(function(L){return{types:[L],name:L.name,hasAny:L.isAny,hasConversion:L.conversion,restParam:!1}});return U=K,z=function(L){return v(Q,R+1,T.concat([L]))},Array.prototype.concat.apply([],U.map(z))}return[T];var U,z}(B,0,[])}function ue(B,v){const Q=Math.max(B.length,v.length);for(let N=0;N<Q;N++){const K=w(B,N),L=w(v,N);let he,ne=!1;for(he of L)if(K.has(he)){ne=!0;break}if(!ne)return!1}const R=B.length,T=v.length,U=C(B),z=C(v);return U?z?R===T:T>=R:z?R>=T:R===T}function re(B,v,Q){const R=[];let T;for(T of B){let U=Q[T];if(typeof U!="number")throw new TypeError('No definition for referenced signature "'+T+'"');if(U=v[U],typeof U!="function")return!1;R.push(U)}return R}function le(B,v,Q){const R=function(z){return z.map(N=>Ne(N)?Ce(N.referToSelf.callback):we(N)?Ae(N.referTo.references,N.referTo.callback):N)}(B),T=new Array(R.length).fill(!1);let U=!0;for(;U;){U=!1;let z=!0;for(let N=0;N<R.length;++N){if(T[N])continue;const K=R[N];if(Ne(K))R[N]=K.referToSelf.callback(Q),R[N].referToSelf=K.referToSelf,T[N]=!0,z=!1;else if(we(K)){const L=re(K.referTo.references,R,v);L?(R[N]=K.referTo.callback.apply(this,L),R[N].referTo=K.referTo,T[N]=!0,z=!1):U=!0}}if(z&&U)throw new SyntaxError("Circular reference detected in resolving typed.referTo")}return R}function de(B,v){if(s.createCount++,Object.keys(v).length===0)throw new SyntaxError("No signatures provided");s.warnAgainstDeprecatedThis&&function(te){const ra=/\bthis(\(|\.signatures\b)/;Object.keys(te).forEach(Rr=>{const Ha=te[Rr];if(ra.test(Ha.toString()))throw new SyntaxError("Using `this` to self-reference a function is deprecated since typed-function@3. Use typed.referTo and typed.referToSelf instead.")})}(v);const Q=[],R=[],T={},U=[];let z;for(z in v){if(!Object.prototype.hasOwnProperty.call(v,z))continue;const te=p(z);if(!te)continue;Q.forEach(function(tt){if(ue(tt,te))throw new TypeError('Conflicting signatures "'+l(tt)+'" and "'+l(te)+'".')}),Q.push(te);const ra=R.length;R.push(v[z]);const Rr=te.map(m);let Ha;for(Ha of se(Rr)){const tt=l(Ha);U.push({params:Ha,name:tt,fn:ra}),Ha.every(hu=>!hu.hasConversion)&&(T[tt]=ra)}}U.sort(V);const N=le(R,T,at);let K;for(K in T)Object.prototype.hasOwnProperty.call(T,K)&&(T[K]=N[T[K]]);const L=[],he=new Map;for(K of U)he.has(K.name)||(K.fn=N[K.fn],L.push(K),he.set(K.name,K));const ne=L[0]&&L[0].params.length<=2&&!C(L[0].params),xe=L[1]&&L[1].params.length<=2&&!C(L[1].params),Ge=L[2]&&L[2].params.length<=2&&!C(L[2].params),Aa=L[3]&&L[3].params.length<=2&&!C(L[3].params),ta=L[4]&&L[4].params.length<=2&&!C(L[4].params),ga=L[5]&&L[5].params.length<=2&&!C(L[5].params),Va=ne&&xe&&Ge&&Aa&&ta&&ga;for(let te=0;te<L.length;++te)L[te].test=x(L[te].params);const Tt=ne?I(L[0].params[0]):We,Lc=xe?I(L[1].params[0]):We,Gc=Ge?I(L[2].params[0]):We,_c=Aa?I(L[3].params[0]):We,zc=ta?I(L[4].params[0]):We,Pc=ga?I(L[5].params[0]):We,qc=ne?I(L[0].params[1]):We,Kc=xe?I(L[1].params[1]):We,Oc=Ge?I(L[2].params[1]):We,Jc=Aa?I(L[3].params[1]):We,Vc=ta?I(L[4].params[1]):We,Hc=ga?I(L[5].params[1]):We;for(let te=0;te<L.length;++te)L[te].implementation=J(L[te].params,L[te].fn);const Wc=ne?L[0].implementation:Ta,Xc=xe?L[1].implementation:Ta,Yc=Ge?L[2].implementation:Ta,Zc=Aa?L[3].implementation:Ta,$c=ta?L[4].implementation:Ta,eu=ga?L[5].implementation:Ta,au=ne?L[0].params.length:-1,tu=xe?L[1].params.length:-1,ru=Ge?L[2].params.length:-1,iu=Aa?L[3].params.length:-1,nu=ta?L[4].params.length:-1,ou=ga?L[5].params.length:-1,su=Va?6:0,Au=L.length,cu=L.map(te=>te.test),uu=L.map(te=>te.implementation),du=function(){for(let te=su;te<Au;te++)if(cu[te](arguments))return uu[te].apply(this,arguments);return s.onMismatch(B,arguments,L)};function at(te,ra){return arguments.length===au&&Tt(te)&&qc(ra)?Wc.apply(this,arguments):arguments.length===tu&&Lc(te)&&Kc(ra)?Xc.apply(this,arguments):arguments.length===ru&&Gc(te)&&Oc(ra)?Yc.apply(this,arguments):arguments.length===iu&&_c(te)&&Jc(ra)?Zc.apply(this,arguments):arguments.length===nu&&zc(te)&&Vc(ra)?$c.apply(this,arguments):arguments.length===ou&&Pc(te)&&Hc(ra)?eu.apply(this,arguments):du.apply(this,arguments)}try{Object.defineProperty(at,"name",{value:B})}catch{}return at.signatures=T,at._typedFunctionData={signatures:L,signatureMap:he},at}function $(B,v,Q){throw j(B,v,Q)}function me(B){return ee(B,0,B.length-1)}function X(B){return B[B.length-1]}function ee(B,v,Q){return Array.prototype.slice.call(B,v,Q)}function Ae(B,v){return{referTo:{references:B,callback:v}}}function Ce(B){if(typeof B!="function")throw new TypeError("Callback function expected as first argument");return{referToSelf:{callback:B}}}function we(B){return B&&typeof B.referTo=="object"&&Array.isArray(B.referTo.references)&&typeof B.referTo.callback=="function"}function Ne(B){return B&&typeof B.referToSelf=="object"&&typeof B.referToSelf.callback=="function"}function Je(B,v){if(!B)return v;if(v&&v!==B){const Q=new Error("Function names do not match (expected: "+B+", actual: "+v+")");throw Q.data={actual:v,expected:B},Q}return B}function Ve(B){let v;for(const Q in B)Object.prototype.hasOwnProperty.call(B,Q)&&(b(B[Q])||typeof B[Q].signature=="string")&&(v=Je(v,B[Q].name));return v}function et(B,v){let Q;for(Q in v)if(Object.prototype.hasOwnProperty.call(v,Q)){if(Q in B&&v[Q]!==B[Q]){const R=new Error('Signature "'+Q+'" is defined twice');throw R.data={signature:Q,sourceFunction:v[Q],destFunction:B[Q]},R}B[Q]=v[Q]}}A(),u(a);const Uc=s;function ao(B){if(!B||typeof B.from!="string"||typeof B.to!="string"||typeof B.convert!="function")throw new TypeError("Object with properties {from: string, to: string, convert: function} expected");if(B.to===B.from)throw new SyntaxError('Illegal to define conversion from "'+B.from+'" to itself.')}return s=function(B){const v=typeof B=="string";let Q=v?B:"";const R={};for(let T=v?1:0;T<arguments.length;++T){const U=arguments[T];let z,N={};if(typeof U=="function"?(z=U.name,typeof U.signature=="string"?N[U.signature]=U:b(U)&&(N=U.signatures)):e(U)&&(N=U,v||(z=Ve(U))),Object.keys(N).length===0){const K=new TypeError("Argument to 'typed' at index "+T+" is not a (typed) function, nor an object with signatures as keys and functions as values.");throw K.data={index:T,argument:U},K}v||(Q=Je(Q,z)),et(R,N)}return de(Q||"",R)},s.create=r,s.createCount=Uc.createCount,s.onMismatch=$,s.throwMismatchError=$,s.createError=j,s.clear=A,s.clearConversions=function(){let B;for(B of n)i.get(B).conversionsTo=[];o=0},s.addTypes=u,s._findType=c,s.referTo=function(){const B=me(arguments).map(Q=>l(p(Q))),v=X(arguments);if(typeof v!="function")throw new TypeError("Callback function expected as last argument");return Ae(B,v)},s.referToSelf=Ce,s.convert=function(B,v){const Q=c(v);if(Q.test(B))return B;const R=Q.conversionsTo;if(R.length===0)throw new Error("There are no conversions to "+v+" defined.");for(let T=0;T<R.length;T++)if(c(R[T].from).test(B))return R[T].convert(B);throw new Error("Cannot convert "+B+" to "+v)},s.findSignature=h,s.find=function(B,v,Q){return h(B,v,Q).implementation},s.isTypedFunction=b,s.warnAgainstDeprecatedThis=!0,s.addType=function(B,v){let Q="any";v!==!1&&i.has("Object")&&(Q="Object"),s.addTypes([B],Q)},s.addConversion=function(B){let v=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{override:!1};ao(B);const Q=c(B.to),R=Q.conversionsTo.find(T=>T.from===B.from);if(R){if(!v||!v.override)throw new Error('There is already a conversion from "'+B.from+'" to "'+Q.name+'"');s.removeConversion({from:R.from,to:B.to,convert:R.convert})}Q.conversionsTo.push({from:B.from,convert:B.convert,index:o++})},s.addConversions=function(B,v){B.forEach(Q=>s.addConversion(Q,v))},s.removeConversion=function(B){ao(B);const v=c(B.to),Q=function(T,U){for(let z=0;z<T.length;z++)if(U(T[z]))return T[z]}(v.conversionsTo,T=>T.from===B.from);if(!Q)throw new Error("Attempt to remove nonexistent conversion from "+B.from+" to "+B.to);if(Q.convert!==B.convert)throw new Error("Conversion to remove does not match existing conversion");const R=v.conversionsTo.indexOf(Q);v.conversionsTo.splice(R,1)},s.resolve=function(B,v){if(!b(B))throw new TypeError(ji);const Q=B._typedFunctionData.signatures;for(let R=0;R<Q.length;++R)if(Q[R].test(v))return Q[R];return null},s}();function ie(r,e,a,t){function i(n){var o=function(s,c){for(var u={},A=0;A<c.length;A++){var d=c[A],b=s[d];b!==void 0&&(u[d]=b)}return u}(n,e.map(zs));return function(s,c,u){var A=c.filter(b=>!function(h){return h&&h[0]==="?"}(b)).every(b=>u[b]!==void 0);if(!A){var d=c.filter(b=>u[b]===void 0);throw new Error('Cannot create function "'.concat(s,'", ')+"some dependencies are missing: ".concat(d.map(b=>'"'.concat(b,'"')).join(", "),"."))}}(r,e,n),a(o)}return i.isFactory=!0,i.fn=r,i.dependencies=e.slice().sort(),t&&(i.meta=t),i}function zs(r){return r&&r[0]==="?"?r.slice(1):r}function Ee(r){return typeof r=="boolean"||!!isFinite(r)&&r===Math.round(r)}function rr(r,e,a){var t={2:"0b",8:"0o",16:"0x"}[e],i="";if(a){if(a<1)throw new Error("size must be in greater than 0");if(!Ee(a))throw new Error("size must be an integer");if(r>2**(a-1)-1||r<-(2**(a-1)))throw new Error("Value must be in range [-2^".concat(a-1,", 2^").concat(a-1,"-1]"));if(!Ee(r))throw new Error("Value must be an integer");r<0&&(r+=2**a),i="i".concat(a)}var n="";return r<0&&(r=-r,n="-"),"".concat(n).concat(t).concat(r.toString(e)).concat(i)}function ir(r,e){if(typeof e=="function")return e(r);if(r===1/0)return"Infinity";if(r===-1/0)return"-Infinity";if(isNaN(r))return"NaN";var{notation:a,precision:t,wordSize:i}=Mi(e);switch(a){case"fixed":return function(n,o){if(isNaN(n)||!isFinite(n))return String(n);var s=ut(n),c=typeof o=="number"?dt(s,s.exponent+1+o):s,u=c.coefficients,A=c.exponent+1,d=A+(o||0);return u.length<d&&(u=u.concat(Na(d-u.length))),A<0&&(u=Na(1-A).concat(u),A=1),A<u.length&&u.splice(A,0,A===0?"0.":"."),c.sign+u.join("")}(r,t);case"exponential":return Ri(r,t);case"engineering":return function(n,o){if(isNaN(n)||!isFinite(n))return String(n);var s=ut(n),c=dt(s,o),u=c.exponent,A=c.coefficients,d=u%3==0?u:u<0?u-3-u%3:u-u%3;if(be(o))for(;o>A.length||u-d+1>A.length;)A.push(0);else for(var b=Math.abs(u-d)-(A.length-1),h=0;h<b;h++)A.push(0);for(var l=Math.abs(u-d),g=1;l>0;)g++,l--;var m=A.slice(g).join(""),E=be(o)&&m.length||m.match(/[1-9]/)?"."+m:"",p=A.slice(0,g).join("")+E+"e"+(u>=0?"+":"")+d.toString();return c.sign+p}(r,t);case"bin":return rr(r,2,i);case"oct":return rr(r,8,i);case"hex":return rr(r,16,i);case"auto":return function(n,o,s){if(isNaN(n)||!isFinite(n))return String(n);var c=Ti(s?.lowerExp,-3),u=Ti(s?.upperExp,5),A=ut(n),d=o?dt(A,o):A;if(d.exponent<c||d.exponent>=u)return Ri(n,o);var b=d.coefficients,h=d.exponent;b.length<o&&(b=b.concat(Na(o-b.length))),b=b.concat(Na(h-b.length+1+(b.length<o?o-b.length:0)));var l=h>0?h:0;return l<(b=Na(-h).concat(b)).length-1&&b.splice(l+1,0,"."),d.sign+b.join("")}(r,t,e).replace(/((\.\d*?)(0+))($|e)/,function(){var n=arguments[2],o=arguments[4];return n!=="."?n+o:o});default:throw new Error('Unknown notation "'+a+'". Choose "auto", "exponential", "fixed", "bin", "oct", or "hex.')}}function Mi(r){var e,a,t="auto";if(r!==void 0)if(be(r))e=r;else if(ve(r))e=r.toNumber();else{if(!tr(r))throw new Error("Unsupported type of options, number, BigNumber, or object expected");r.precision!==void 0&&(e=Si(r.precision,()=>{throw new Error('Option "precision" must be a number or BigNumber')})),r.wordSize!==void 0&&(a=Si(r.wordSize,()=>{throw new Error('Option "wordSize" must be a number or BigNumber')})),r.notation&&(t=r.notation)}return{notation:t,precision:e,wordSize:a}}function ut(r){var e=String(r).toLowerCase().match(/^(-?)(\d+\.?\d*)(e([+-]?\d+))?$/);if(!e)throw new SyntaxError("Invalid number "+r);var a=e[1],t=e[2],i=parseFloat(e[4]||"0"),n=t.indexOf(".");i+=n!==-1?n-1:t.length-1;var o=t.replace(".","").replace(/^0*/,function(s){return i-=s.length,""}).replace(/0*$/,"").split("").map(function(s){return parseInt(s)});return o.length===0&&(o.push(0),i++),{sign:a,coefficients:o,exponent:i}}function Ri(r,e){if(isNaN(r)||!isFinite(r))return String(r);var a=ut(r),t=e?dt(a,e):a,i=t.coefficients,n=t.exponent;i.length<e&&(i=i.concat(Na(e-i.length)));var o=i.shift();return t.sign+o+(i.length>0?"."+i.join(""):"")+"e"+(n>=0?"+":"")+n}function dt(r,e){for(var a={sign:r.sign,coefficients:r.coefficients,exponent:r.exponent},t=a.coefficients;e<=0;)t.unshift(0),a.exponent++,e++;if(t.length>e&&t.splice(e,t.length-e)[0]>=5){var i=e-1;for(t[i]++;t[i]===10;)t.pop(),i===0&&(t.unshift(0),a.exponent++,i++),t[--i]++}return a}function Na(r){for(var e=[],a=0;a<r;a++)e.push(0);return e}function ht(r,e){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1e-8,t=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;if(a<=0)throw new Error("Relative tolerance must be greater than 0");if(t<0)throw new Error("Absolute tolerance must be at least 0");return!isNaN(r)&&!isNaN(e)&&(isFinite(r)&&isFinite(e)?r===e||Math.abs(r-e)<=Math.max(a*Math.max(Math.abs(r),Math.abs(e)),t):r===e)}function Si(r,e){return be(r)?r:ve(r)?r.toNumber():void e()}function Ti(r,e){return be(r)?r:ve(r)?r.toNumber():e}var Ni=function(){return Ni=ct.create,ct},Ps=ie("typed",["?BigNumber","?Complex","?DenseMatrix","?Fraction"],function(r){var{BigNumber:e,Complex:a,DenseMatrix:t,Fraction:i}=r,n=Ni();return n.clear(),n.addTypes([{name:"number",test:be},{name:"Complex",test:vi},{name:"BigNumber",test:ve},{name:"bigint",test:ds},{name:"Fraction",test:Fi},{name:"Unit",test:Qi},{name:"identifier",test:o=>ia&&/^(?:[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CD\uA7D0\uA7D1\uA7D3\uA7D5-\uA7DC\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDDC0-\uDDF3\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDD4A-\uDD65\uDD6F-\uDD85\uDE80-\uDEA9\uDEB0\uDEB1\uDEC2-\uDEC4\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61\uDF80-\uDF89\uDF8B\uDF8E\uDF90-\uDFB5\uDFB7\uDFD1\uDFD3]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8\uDFC0-\uDFE0]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD80E\uD80F\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46\uDC60-\uDFFF]|\uD810[\uDC00-\uDFFA]|\uD811[\uDC00-\uDE46]|\uD818[\uDD00-\uDD1D]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDD40-\uDD6C\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDDD0-\uDDED\uDDF0\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])(?:[0-9A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CD\uA7D0\uA7D1\uA7D3\uA7D5-\uA7DC\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDDC0-\uDDF3\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDD4A-\uDD65\uDD6F-\uDD85\uDE80-\uDEA9\uDEB0\uDEB1\uDEC2-\uDEC4\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61\uDF80-\uDF89\uDF8B\uDF8E\uDF90-\uDFB5\uDFB7\uDFD1\uDFD3]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8\uDFC0-\uDFE0]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD80E\uD80F\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46\uDC60-\uDFFF]|\uD810[\uDC00-\uDFFA]|\uD811[\uDC00-\uDE46]|\uD818[\uDD00-\uDD1D]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDD40-\uDD6C\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDDD0-\uDDED\uDDF0\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])*$/.test(o)},{name:"string",test:ia},{name:"Chain",test:_s},{name:"Array",test:Qe},{name:"Matrix",test:De},{name:"DenseMatrix",test:hs},{name:"SparseMatrix",test:ls},{name:"Range",test:bs},{name:"Index",test:ar},{name:"boolean",test:gs},{name:"ResultSet",test:fs},{name:"Help",test:ps},{name:"function",test:ms},{name:"Date",test:Es},{name:"RegExp",test:Cs},{name:"null",test:Bs},{name:"undefined",test:Ds},{name:"AccessorNode",test:ys},{name:"ArrayNode",test:ws},{name:"AssignmentNode",test:xs},{name:"BlockNode",test:vs},{name:"ConditionalNode",test:Fs},{name:"ConstantNode",test:Qs},{name:"FunctionNode",test:js},{name:"FunctionAssignmentNode",test:ks},{name:"IndexNode",test:Ms},{name:"Node",test:Rs},{name:"ObjectNode",test:Ss},{name:"OperatorNode",test:Ts},{name:"ParenthesisNode",test:Ns},{name:"RangeNode",test:Us},{name:"RelationalNode",test:Ls},{name:"SymbolNode",test:Gs},{name:"Map",test:Is},{name:"Object",test:tr}]),n.addConversions([{from:"number",to:"BigNumber",convert:function(o){if(e||lt(o),o.toExponential().replace(/e.*$/,"").replace(/^0\.?0*|\./,"").length>15)throw new TypeError("Cannot implicitly convert a number with >15 significant digits to BigNumber (value: "+o+"). Use function bignumber(x) to convert to BigNumber.");return new e(o)}},{from:"number",to:"Complex",convert:function(o){return a||bt(o),new a(o,0)}},{from:"BigNumber",to:"Complex",convert:function(o){return a||bt(o),new a(o.toNumber(),0)}},{from:"bigint",to:"number",convert:function(o){if(o>Number.MAX_SAFE_INTEGER)throw new TypeError("Cannot implicitly convert bigint to number: value exceeds the max safe integer value (value: "+o+")");return Number(o)}},{from:"bigint",to:"BigNumber",convert:function(o){return e||lt(o),new e(o.toString())}},{from:"bigint",to:"Fraction",convert:function(o){return i||gt(o),new i(o)}},{from:"Fraction",to:"BigNumber",convert:function(o){throw new TypeError("Cannot implicitly convert a Fraction to BigNumber or vice versa. Use function bignumber(x) to convert to BigNumber or fraction(x) to convert to Fraction.")}},{from:"Fraction",to:"Complex",convert:function(o){return a||bt(o),new a(o.valueOf(),0)}},{from:"number",to:"Fraction",convert:function(o){i||gt(o);var s=new i(o);if(s.valueOf()!==o)throw new TypeError("Cannot implicitly convert a number to a Fraction when there will be a loss of precision (value: "+o+"). Use function fraction(x) to convert to Fraction.");return s}},{from:"string",to:"number",convert:function(o){var s=Number(o);if(isNaN(s))throw new Error('Cannot convert "'+o+'" to a number');return s}},{from:"string",to:"BigNumber",convert:function(o){e||lt(o);try{return new e(o)}catch{throw new Error('Cannot convert "'+o+'" to BigNumber')}}},{from:"string",to:"bigint",convert:function(o){try{return BigInt(o)}catch{throw new Error('Cannot convert "'+o+'" to BigInt')}}},{from:"string",to:"Fraction",convert:function(o){i||gt(o);try{return new i(o)}catch{throw new Error('Cannot convert "'+o+'" to Fraction')}}},{from:"string",to:"Complex",convert:function(o){a||bt(o);try{return new a(o)}catch{throw new Error('Cannot convert "'+o+'" to Complex')}}},{from:"boolean",to:"number",convert:function(o){return+o}},{from:"boolean",to:"BigNumber",convert:function(o){return e||lt(o),new e(+o)}},{from:"boolean",to:"bigint",convert:function(o){return BigInt(+o)}},{from:"boolean",to:"Fraction",convert:function(o){return i||gt(o),new i(+o)}},{from:"boolean",to:"string",convert:function(o){return String(o)}},{from:"Array",to:"Matrix",convert:function(o){return t||function(){throw new Error("Cannot convert array into a Matrix: no class 'DenseMatrix' provided")}(),new t(o)}},{from:"Matrix",to:"Array",convert:function(o){return o.valueOf()}}]),n.onMismatch=(o,s,c)=>{var u=n.createError(o,s,c);if(["wrongType","mismatch"].includes(u.data.category)&&s.length===1&&st(s[0])&&c.some(d=>!d.params.includes(","))){var A=new TypeError("Function '".concat(o,"' doesn't apply to matrices. To call it ")+"elementwise on a matrix 'M', try 'map(M, ".concat(o,")'."));throw A.data=u.data,A}throw u},n.onMismatch=(o,s,c)=>{var u=n.createError(o,s,c);if(["wrongType","mismatch"].includes(u.data.category)&&s.length===1&&st(s[0])&&c.some(d=>!d.params.includes(","))){var A=new TypeError("Function '".concat(o,"' doesn't apply to matrices. To call it ")+"elementwise on a matrix 'M', try 'map(M, ".concat(o,")'."));throw A.data=u.data,A}throw u},n});function lt(r){throw new Error("Cannot convert value ".concat(r," into a BigNumber: no class 'BigNumber' provided"))}function bt(r){throw new Error("Cannot convert value ".concat(r," into a Complex number: no class 'Complex' provided"))}function gt(r){throw new Error("Cannot convert value ".concat(r," into a Fraction, no class 'Fraction' provided."))}/*!
|
|
16
16
|
* decimal.js v10.5.0
|
|
17
17
|
* An arbitrary-precision Decimal type for JavaScript.
|
|
18
18
|
* https://github.com/MikeMcl/decimal.js
|
|
19
19
|
* Copyright (c) 2025 Michael Mclaughlin <M8ch88l@gmail.com>
|
|
20
20
|
* MIT Licence
|
|
21
|
-
*/var Ui,ha,or=9e15,Ea=1e9,sr="0123456789abcdef",pt="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",mt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Ar={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-9e15,maxE:or,crypto:!1},X=!0,Et="[DecimalError] ",Ca=Et+"Invalid argument: ",Gi=Et+"Precision limit exceeded",Li=Et+"crypto unavailable",_i="[object Decimal]",Re=Math.floor,je=Math.pow,ks=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,js=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Ms=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Pi=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,$e=1e7,Ss=pt.length-1,cr=mt.length-1,T={toStringTag:_i};function Te(r){var e,a,t,i=r.length-1,n="",o=r[0];if(i>0){for(n+=o,e=1;e<i;e++)(a=7-(t=r[e]+"").length)&&(n+=Ia(a)),n+=t;(a=7-(t=(o=r[e])+"").length)&&(n+=Ia(a))}else if(o===0)return"0";for(;o%10==0;)o/=10;return n+o}function Pe(r,e,a){if(r!==~~r||r<e||r>a)throw Error(Ca+r)}function Za(r,e,a,t){var i,n,o,s;for(n=r[0];n>=10;n/=10)--e;return--e<0?(e+=7,i=0):(i=Math.ceil((e+1)/7),e%=7),n=je(10,7-e),s=r[i]%n|0,t==null?e<3?(e==0?s=s/100|0:e==1&&(s=s/10|0),o=a<4&&s==99999||a>3&&s==49999||s==5e4||s==0):o=(a<4&&s+1==n||a>3&&s+1==n/2)&&(r[i+1]/n/100|0)==je(10,e-2)-1||(s==n/2||s==0)&&!(r[i+1]/n/100|0):e<4?(e==0?s=s/1e3|0:e==1?s=s/100|0:e==2&&(s=s/10|0),o=(t||a<4)&&s==9999||!t&&a>3&&s==4999):o=((t||a<4)&&s+1==n||!t&&a>3&&s+1==n/2)&&(r[i+1]/n/1e3|0)==je(10,e-3)-1,o}function Ct(r,e,a){for(var t,i,n=[0],o=0,s=r.length;o<s;){for(i=n.length;i--;)n[i]*=e;for(n[0]+=sr.indexOf(r.charAt(o++)),t=0;t<n.length;t++)n[t]>a-1&&(n[t+1]===void 0&&(n[t+1]=0),n[t+1]+=n[t]/a|0,n[t]%=a)}return n.reverse()}T.absoluteValue=T.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),V(r)},T.ceil=function(){return V(new this.constructor(this),this.e+1,2)},T.clampedTo=T.clamp=function(r,e){var a=this,t=a.constructor;if(r=new t(r),e=new t(e),!r.s||!e.s)return new t(NaN);if(r.gt(e))throw Error(Ca+e);return a.cmp(r)<0?r:a.cmp(e)>0?e:new t(a)},T.comparedTo=T.cmp=function(r){var e,a,t,i,n=this,o=n.d,s=(r=new n.constructor(r)).d,A=n.s,u=r.s;if(!o||!s)return A&&u?A!==u?A:o===s?0:!o^A<0?1:-1:NaN;if(!o[0]||!s[0])return o[0]?A:s[0]?-u:0;if(A!==u)return A;if(n.e!==r.e)return n.e>r.e^A<0?1:-1;for(e=0,a=(t=o.length)<(i=s.length)?t:i;e<a;++e)if(o[e]!==s[e])return o[e]>s[e]^A<0?1:-1;return t===i?0:t>i^A<0?1:-1},T.cosine=T.cos=function(){var r,e,a=this,t=a.constructor;return a.d?a.d[0]?(r=t.precision,e=t.rounding,t.precision=r+Math.max(a.e,a.sd())+7,t.rounding=1,a=function(i,n){var o,s,A;if(n.isZero())return n;s=n.d.length,s<32?A=(1/Dt(4,o=Math.ceil(s/3))).toString():(o=16,A="2.3283064365386962890625e-10"),i.precision+=o,n=La(i,1,n.times(A),new i(1));for(var u=o;u--;){var c=n.times(n);n=c.times(c).minus(c).times(8).plus(1)}return i.precision-=o,n}(t,Ki(t,a)),t.precision=r,t.rounding=e,V(ha==2||ha==3?a.neg():a,r,e,!0)):new t(1):new t(NaN)},T.cubeRoot=T.cbrt=function(){var r,e,a,t,i,n,o,s,A,u,c=this,d=c.constructor;if(!c.isFinite()||c.isZero())return new d(c);for(X=!1,(n=c.s*je(c.s*c,1/3))&&Math.abs(n)!=1/0?t=new d(n.toString()):(a=Te(c.d),(n=((r=c.e)-a.length+1)%3)&&(a+=n==1||n==-2?"0":"00"),n=je(a,1/3),r=Re((r+1)/3)-(r%3==(r<0?-1:2)),(t=new d(a=n==1/0?"5e"+r:(a=n.toExponential()).slice(0,a.indexOf("e")+1)+r)).s=c.s),o=(r=d.precision)+3;;)if(u=(A=(s=t).times(s).times(s)).plus(c),t=ce(u.plus(c).times(s),u.plus(A),o+2,1),Te(s.d).slice(0,o)===(a=Te(t.d)).slice(0,o)){if((a=a.slice(o-3,o+1))!="9999"&&(i||a!="4999")){+a&&(+a.slice(1)||a.charAt(0)!="5")||(V(t,r+1,1),e=!t.times(t).times(t).eq(c));break}if(!i&&(V(s,r+1,0),s.times(s).times(s).eq(c))){t=s;break}o+=4,i=1}return X=!0,V(t,r,d.rounding,e)},T.decimalPlaces=T.dp=function(){var r,e=this.d,a=NaN;if(e){if(a=7*((r=e.length-1)-Re(this.e/7)),r=e[r])for(;r%10==0;r/=10)a--;a<0&&(a=0)}return a},T.dividedBy=T.div=function(r){return ce(this,new this.constructor(r))},T.dividedToIntegerBy=T.divToInt=function(r){var e=this.constructor;return V(ce(this,new e(r),0,1,1),e.precision,e.rounding)},T.equals=T.eq=function(r){return this.cmp(r)===0},T.floor=function(){return V(new this.constructor(this),this.e+1,3)},T.greaterThan=T.gt=function(r){return this.cmp(r)>0},T.greaterThanOrEqualTo=T.gte=function(r){var e=this.cmp(r);return e==1||e===0},T.hyperbolicCosine=T.cosh=function(){var r,e,a,t,i,n=this,o=n.constructor,s=new o(1);if(!n.isFinite())return new o(n.s?1/0:NaN);if(n.isZero())return s;a=o.precision,t=o.rounding,o.precision=a+Math.max(n.e,n.sd())+4,o.rounding=1,(i=n.d.length)<32?e=(1/Dt(4,r=Math.ceil(i/3))).toString():(r=16,e="2.3283064365386962890625e-10"),n=La(o,1,n.times(e),new o(1),!0);for(var A,u=r,c=new o(8);u--;)A=n.times(n),n=s.minus(A.times(c.minus(A.times(c))));return V(n,o.precision=a,o.rounding=t,!0)},T.hyperbolicSine=T.sinh=function(){var r,e,a,t,i=this,n=i.constructor;if(!i.isFinite()||i.isZero())return new n(i);if(e=n.precision,a=n.rounding,n.precision=e+Math.max(i.e,i.sd())+4,n.rounding=1,(t=i.d.length)<3)i=La(n,2,i,i,!0);else{r=(r=1.4*Math.sqrt(t))>16?16:0|r,i=La(n,2,i=i.times(1/Dt(5,r)),i,!0);for(var o,s=new n(5),A=new n(16),u=new n(20);r--;)o=i.times(i),i=i.times(s.plus(o.times(A.times(o).plus(u))))}return n.precision=e,n.rounding=a,V(i,e,a,!0)},T.hyperbolicTangent=T.tanh=function(){var r,e,a=this,t=a.constructor;return a.isFinite()?a.isZero()?new t(a):(r=t.precision,e=t.rounding,t.precision=r+7,t.rounding=1,ce(a.sinh(),a.cosh(),t.precision=r,t.rounding=e)):new t(a.s)},T.inverseCosine=T.acos=function(){var r=this,e=r.constructor,a=r.abs().cmp(1),t=e.precision,i=e.rounding;return a!==-1?a===0?r.isNeg()?oa(e,t,i):new e(0):new e(NaN):r.isZero()?oa(e,t+4,i).times(.5):(e.precision=t+6,e.rounding=1,r=new e(1).minus(r).div(r.plus(1)).sqrt().atan(),e.precision=t,e.rounding=i,r.times(2))},T.inverseHyperbolicCosine=T.acosh=function(){var r,e,a=this,t=a.constructor;return a.lte(1)?new t(a.eq(1)?0:NaN):a.isFinite()?(r=t.precision,e=t.rounding,t.precision=r+Math.max(Math.abs(a.e),a.sd())+4,t.rounding=1,X=!1,a=a.times(a).minus(1).sqrt().plus(a),X=!0,t.precision=r,t.rounding=e,a.ln()):new t(a)},T.inverseHyperbolicSine=T.asinh=function(){var r,e,a=this,t=a.constructor;return!a.isFinite()||a.isZero()?new t(a):(r=t.precision,e=t.rounding,t.precision=r+2*Math.max(Math.abs(a.e),a.sd())+6,t.rounding=1,X=!1,a=a.times(a).plus(1).sqrt().plus(a),X=!0,t.precision=r,t.rounding=e,a.ln())},T.inverseHyperbolicTangent=T.atanh=function(){var r,e,a,t,i=this,n=i.constructor;return i.isFinite()?i.e>=0?new n(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=n.precision,e=n.rounding,t=i.sd(),Math.max(t,r)<2*-i.e-1?V(new n(i),r,e,!0):(n.precision=a=t-i.e,i=ce(i.plus(1),new n(1).minus(i),a+r,1),n.precision=r+4,n.rounding=1,i=i.ln(),n.precision=r,n.rounding=e,i.times(.5))):new n(NaN)},T.inverseSine=T.asin=function(){var r,e,a,t,i=this,n=i.constructor;return i.isZero()?new n(i):(e=i.abs().cmp(1),a=n.precision,t=n.rounding,e!==-1?e===0?((r=oa(n,a+4,t).times(.5)).s=i.s,r):new n(NaN):(n.precision=a+6,n.rounding=1,i=i.div(new n(1).minus(i.times(i)).sqrt().plus(1)).atan(),n.precision=a,n.rounding=t,i.times(2)))},T.inverseTangent=T.atan=function(){var r,e,a,t,i,n,o,s,A,u=this,c=u.constructor,d=c.precision,l=c.rounding;if(u.isFinite()){if(u.isZero())return new c(u);if(u.abs().eq(1)&&d+4<=cr)return(o=oa(c,d+4,l).times(.25)).s=u.s,o}else{if(!u.s)return new c(NaN);if(d+4<=cr)return(o=oa(c,d+4,l).times(.5)).s=u.s,o}for(c.precision=s=d+10,c.rounding=1,r=a=Math.min(28,s/7+2|0);r;--r)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(X=!1,e=Math.ceil(s/7),t=1,A=u.times(u),o=new c(u),i=u;r!==-1;)if(i=i.times(A),n=o.minus(i.div(t+=2)),i=i.times(A),(o=n.plus(i.div(t+=2))).d[e]!==void 0)for(r=e;o.d[r]===n.d[r]&&r--;);return a&&(o=o.times(2<<a-1)),X=!0,V(o,c.precision=d,c.rounding=l,!0)},T.isFinite=function(){return!!this.d},T.isInteger=T.isInt=function(){return!!this.d&&Re(this.e/7)>this.d.length-2},T.isNaN=function(){return!this.s},T.isNegative=T.isNeg=function(){return this.s<0},T.isPositive=T.isPos=function(){return this.s>0},T.isZero=function(){return!!this.d&&this.d[0]===0},T.lessThan=T.lt=function(r){return this.cmp(r)<0},T.lessThanOrEqualTo=T.lte=function(r){return this.cmp(r)<1},T.logarithm=T.log=function(r){var e,a,t,i,n,o,s,A,u=this,c=u.constructor,d=c.precision,l=c.rounding;if(r==null)r=new c(10),e=!0;else{if(a=(r=new c(r)).d,r.s<0||!a||!a[0]||r.eq(1))return new c(NaN);e=r.eq(10)}if(a=u.d,u.s<0||!a||!a[0]||u.eq(1))return new c(a&&!a[0]?-1/0:u.s!=1?NaN:a?0:1/0);if(e)if(a.length>1)n=!0;else{for(i=a[0];i%10==0;)i/=10;n=i!==1}if(X=!1,o=Ba(u,s=d+5),t=e?Bt(c,s+10):Ba(r,s),Za((A=ce(o,t,s,1)).d,i=d,l))do if(o=Ba(u,s+=10),t=e?Bt(c,s+10):Ba(r,s),A=ce(o,t,s,1),!n){+Te(A.d).slice(i+1,i+15)+1==1e14&&(A=V(A,d+1,0));break}while(Za(A.d,i+=10,l));return X=!0,V(A,d,l)},T.minus=T.sub=function(r){var e,a,t,i,n,o,s,A,u,c,d,l,h=this,b=h.constructor;if(r=new b(r),!h.d||!r.d)return h.s&&r.s?h.d?r.s=-r.s:r=new b(r.d||h.s!==r.s?h:NaN):r=new b(NaN),r;if(h.s!=r.s)return r.s=-r.s,h.plus(r);if(u=h.d,l=r.d,s=b.precision,A=b.rounding,!u[0]||!l[0]){if(l[0])r.s=-r.s;else{if(!u[0])return new b(A===3?-0:0);r=new b(h)}return X?V(r,s,A):r}if(a=Re(r.e/7),c=Re(h.e/7),u=u.slice(),n=c-a){for((d=n<0)?(e=u,n=-n,o=l.length):(e=l,a=c,o=u.length),n>(t=Math.max(Math.ceil(s/7),o)+2)&&(n=t,e.length=1),e.reverse(),t=n;t--;)e.push(0);e.reverse()}else{for((d=(t=u.length)<(o=l.length))&&(o=t),t=0;t<o;t++)if(u[t]!=l[t]){d=u[t]<l[t];break}n=0}for(d&&(e=u,u=l,l=e,r.s=-r.s),o=u.length,t=l.length-o;t>0;--t)u[o++]=0;for(t=l.length;t>n;){if(u[--t]<l[t]){for(i=t;i&&u[--i]===0;)u[i]=$e-1;--u[i],u[t]+=$e}u[t]-=l[t]}for(;u[--o]===0;)u.pop();for(;u[0]===0;u.shift())--a;return u[0]?(r.d=u,r.e=It(u,a),X?V(r,s,A):r):new b(A===3?-0:0)},T.modulo=T.mod=function(r){var e,a=this,t=a.constructor;return r=new t(r),!a.d||!r.s||r.d&&!r.d[0]?new t(NaN):!r.d||a.d&&!a.d[0]?V(new t(a),t.precision,t.rounding):(X=!1,t.modulo==9?(e=ce(a,r.abs(),0,3,1)).s*=r.s:e=ce(a,r,0,t.modulo,1),e=e.times(r),X=!0,a.minus(e))},T.naturalExponential=T.exp=function(){return ur(this)},T.naturalLogarithm=T.ln=function(){return Ba(this)},T.negated=T.neg=function(){var r=new this.constructor(this);return r.s=-r.s,V(r)},T.plus=T.add=function(r){var e,a,t,i,n,o,s,A,u,c,d=this,l=d.constructor;if(r=new l(r),!d.d||!r.d)return d.s&&r.s?d.d||(r=new l(r.d||d.s===r.s?d:NaN)):r=new l(NaN),r;if(d.s!=r.s)return r.s=-r.s,d.minus(r);if(u=d.d,c=r.d,s=l.precision,A=l.rounding,!u[0]||!c[0])return c[0]||(r=new l(d)),X?V(r,s,A):r;if(n=Re(d.e/7),t=Re(r.e/7),u=u.slice(),i=n-t){for(i<0?(a=u,i=-i,o=c.length):(a=c,t=n,o=u.length),i>(o=(n=Math.ceil(s/7))>o?n+1:o+1)&&(i=o,a.length=1),a.reverse();i--;)a.push(0);a.reverse()}for((o=u.length)-(i=c.length)<0&&(i=o,a=c,c=u,u=a),e=0;i;)e=(u[--i]=u[i]+c[i]+e)/$e|0,u[i]%=$e;for(e&&(u.unshift(e),++t),o=u.length;u[--o]==0;)u.pop();return r.d=u,r.e=It(u,t),X?V(r,s,A):r},T.precision=T.sd=function(r){var e,a=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(Ca+r);return a.d?(e=zi(a.d),r&&a.e+1>e&&(e=a.e+1)):e=NaN,e},T.round=function(){var r=this,e=r.constructor;return V(new e(r),r.e+1,e.rounding)},T.sine=T.sin=function(){var r,e,a=this,t=a.constructor;return a.isFinite()?a.isZero()?new t(a):(r=t.precision,e=t.rounding,t.precision=r+Math.max(a.e,a.sd())+7,t.rounding=1,a=function(i,n){var o,s=n.d.length;if(s<3)return n.isZero()?n:La(i,2,n,n);o=(o=1.4*Math.sqrt(s))>16?16:0|o,n=n.times(1/Dt(5,o)),n=La(i,2,n,n);for(var A,u=new i(5),c=new i(16),d=new i(20);o--;)A=n.times(n),n=n.times(u.plus(A.times(c.times(A).minus(d))));return n}(t,Ki(t,a)),t.precision=r,t.rounding=e,V(ha>2?a.neg():a,r,e,!0)):new t(NaN)},T.squareRoot=T.sqrt=function(){var r,e,a,t,i,n,o=this,s=o.d,A=o.e,u=o.s,c=o.constructor;if(u!==1||!s||!s[0])return new c(!u||u<0&&(!s||s[0])?NaN:s?o:1/0);for(X=!1,(u=Math.sqrt(+o))==0||u==1/0?(((e=Te(s)).length+A)%2==0&&(e+="0"),u=Math.sqrt(e),A=Re((A+1)/2)-(A<0||A%2),t=new c(e=u==1/0?"5e"+A:(e=u.toExponential()).slice(0,e.indexOf("e")+1)+A)):t=new c(u.toString()),a=(A=c.precision)+3;;)if(t=(n=t).plus(ce(o,n,a+2,1)).times(.5),Te(n.d).slice(0,a)===(e=Te(t.d)).slice(0,a)){if((e=e.slice(a-3,a+1))!="9999"&&(i||e!="4999")){+e&&(+e.slice(1)||e.charAt(0)!="5")||(V(t,A+1,1),r=!t.times(t).eq(o));break}if(!i&&(V(n,A+1,0),n.times(n).eq(o))){t=n;break}a+=4,i=1}return X=!0,V(t,A,c.rounding,r)},T.tangent=T.tan=function(){var r,e,a=this,t=a.constructor;return a.isFinite()?a.isZero()?new t(a):(r=t.precision,e=t.rounding,t.precision=r+10,t.rounding=1,(a=a.sin()).s=1,a=ce(a,new t(1).minus(a.times(a)).sqrt(),r+10,0),t.precision=r,t.rounding=e,V(ha==2||ha==4?a.neg():a,r,e,!0)):new t(NaN)},T.times=T.mul=function(r){var e,a,t,i,n,o,s,A,u,c=this,d=c.constructor,l=c.d,h=(r=new d(r)).d;if(r.s*=c.s,!(l&&l[0]&&h&&h[0]))return new d(!r.s||l&&!l[0]&&!h||h&&!h[0]&&!l?NaN:l&&h?0*r.s:r.s/0);for(a=Re(c.e/7)+Re(r.e/7),(A=l.length)<(u=h.length)&&(n=l,l=h,h=n,o=A,A=u,u=o),n=[],t=o=A+u;t--;)n.push(0);for(t=u;--t>=0;){for(e=0,i=A+t;i>t;)s=n[i]+h[t]*l[i-t-1]+e,n[i--]=s%$e|0,e=s/$e|0;n[i]=(n[i]+e)%$e|0}for(;!n[--o];)n.pop();return e?++a:n.shift(),r.d=n,r.e=It(n,a),X?V(r,d.precision,d.rounding):r},T.toBinary=function(r,e){return dr(this,2,r,e)},T.toDecimalPlaces=T.toDP=function(r,e){var a=this,t=a.constructor;return a=new t(a),r===void 0?a:(Pe(r,0,Ea),e===void 0?e=t.rounding:Pe(e,0,8),V(a,r+a.e+1,e))},T.toExponential=function(r,e){var a,t=this,i=t.constructor;return r===void 0?a=na(t,!0):(Pe(r,0,Ea),e===void 0?e=i.rounding:Pe(e,0,8),a=na(t=V(new i(t),r+1,e),!0,r+1)),t.isNeg()&&!t.isZero()?"-"+a:a},T.toFixed=function(r,e){var a,t,i=this,n=i.constructor;return r===void 0?a=na(i):(Pe(r,0,Ea),e===void 0?e=n.rounding:Pe(e,0,8),a=na(t=V(new n(i),r+i.e+1,e),!1,r+t.e+1)),i.isNeg()&&!i.isZero()?"-"+a:a},T.toFraction=function(r){var e,a,t,i,n,o,s,A,u,c,d,l,h=this,b=h.d,g=h.constructor;if(!b)return new g(h);if(u=a=new g(1),t=A=new g(0),o=(n=(e=new g(t)).e=zi(b)-h.e-1)%7,e.d[0]=je(10,o<0?7+o:o),r==null)r=n>0?e:u;else{if(!(s=new g(r)).isInt()||s.lt(u))throw Error(Ca+s);r=s.gt(e)?n>0?e:u:s}for(X=!1,s=new g(Te(b)),c=g.precision,g.precision=n=7*b.length*2;d=ce(s,e,0,1,1),(i=a.plus(d.times(t))).cmp(r)!=1;)a=t,t=i,i=u,u=A.plus(d.times(i)),A=i,i=e,e=s.minus(d.times(i)),s=i;return i=ce(r.minus(a),t,0,1,1),A=A.plus(i.times(u)),a=a.plus(i.times(t)),A.s=u.s=h.s,l=ce(u,t,n,1).minus(h).abs().cmp(ce(A,a,n,1).minus(h).abs())<1?[u,t]:[A,a],g.precision=c,X=!0,l},T.toHexadecimal=T.toHex=function(r,e){return dr(this,16,r,e)},T.toNearest=function(r,e){var a=this,t=a.constructor;if(a=new t(a),r==null){if(!a.d)return a;r=new t(1),e=t.rounding}else{if(r=new t(r),e===void 0?e=t.rounding:Pe(e,0,8),!a.d)return r.s?a:r;if(!r.d)return r.s&&(r.s=a.s),r}return r.d[0]?(X=!1,a=ce(a,r,0,e,1).times(r),X=!0,V(a)):(r.s=a.s,a=r),a},T.toNumber=function(){return+this},T.toOctal=function(r,e){return dr(this,8,r,e)},T.toPower=T.pow=function(r){var e,a,t,i,n,o,s=this,A=s.constructor,u=+(r=new A(r));if(!(s.d&&r.d&&s.d[0]&&r.d[0]))return new A(je(+s,u));if((s=new A(s)).eq(1))return s;if(t=A.precision,n=A.rounding,r.eq(1))return V(s,t,n);if((e=Re(r.e/7))>=r.d.length-1&&(a=u<0?-u:u)<=9007199254740991)return i=Hi(A,s,a,t),r.s<0?new A(1).div(i):V(i,t,n);if((o=s.s)<0){if(e<r.d.length-1)return new A(NaN);if(1&r.d[e]||(o=1),s.e==0&&s.d[0]==1&&s.d.length==1)return s.s=o,s}return(e=(a=je(+s,u))!=0&&isFinite(a)?new A(a+"").e:Re(u*(Math.log("0."+Te(s.d))/Math.LN10+s.e+1)))>A.maxE+1||e<A.minE-1?new A(e>0?o/0:0):(X=!1,A.rounding=s.s=1,a=Math.min(12,(e+"").length),(i=ur(r.times(Ba(s,t+a)),t)).d&&Za((i=V(i,t+5,1)).d,t,n)&&(e=t+10,+Te((i=V(ur(r.times(Ba(s,e+a)),e),e+5,1)).d).slice(t+1,t+15)+1==1e14&&(i=V(i,t+1,0))),i.s=o,X=!0,A.rounding=n,V(i,t,n))},T.toPrecision=function(r,e){var a,t=this,i=t.constructor;return r===void 0?a=na(t,t.e<=i.toExpNeg||t.e>=i.toExpPos):(Pe(r,1,Ea),e===void 0?e=i.rounding:Pe(e,0,8),a=na(t=V(new i(t),r,e),r<=t.e||t.e<=i.toExpNeg,r)),t.isNeg()&&!t.isZero()?"-"+a:a},T.toSignificantDigits=T.toSD=function(r,e){var a=this.constructor;return r===void 0?(r=a.precision,e=a.rounding):(Pe(r,1,Ea),e===void 0?e=a.rounding:Pe(e,0,8)),V(new a(this),r,e)},T.toString=function(){var r=this,e=r.constructor,a=na(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+a:a},T.truncated=T.trunc=function(){return V(new this.constructor(this),this.e+1,1)},T.valueOf=T.toJSON=function(){var r=this,e=r.constructor,a=na(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+a:a};var ce=function(){function r(t,i,n){var o,s=0,A=t.length;for(t=t.slice();A--;)o=t[A]*i+s,t[A]=o%n|0,s=o/n|0;return s&&t.unshift(s),t}function e(t,i,n,o){var s,A;if(n!=o)A=n>o?1:-1;else for(s=A=0;s<n;s++)if(t[s]!=i[s]){A=t[s]>i[s]?1:-1;break}return A}function a(t,i,n,o){for(var s=0;n--;)t[n]-=s,s=t[n]<i[n]?1:0,t[n]=s*o+t[n]-i[n];for(;!t[0]&&t.length>1;)t.shift()}return function(t,i,n,o,s,A){var u,c,d,l,h,b,g,p,E,m,C,I,w,D,x,y,F,M,S,z,O=t.constructor,K=t.s==i.s?1:-1,J=t.d,q=i.d;if(!(J&&J[0]&&q&&q[0]))return new O(t.s&&i.s&&(J?!q||J[0]!=q[0]:q)?J&&J[0]==0||!q?0*K:K/0:NaN);for(A?(h=1,c=t.e-i.e):(A=$e,h=7,c=Re(t.e/h)-Re(i.e/h)),S=q.length,F=J.length,m=(E=new O(K)).d=[],d=0;q[d]==(J[d]||0);d++);if(q[d]>(J[d]||0)&&c--,n==null?(D=n=O.precision,o=O.rounding):D=s?n+(t.e-i.e)+1:n,D<0)m.push(1),b=!0;else{if(D=D/h+2|0,d=0,S==1){for(l=0,q=q[0],D++;(d<F||l)&&D--;d++)x=l*A+(J[d]||0),m[d]=x/q|0,l=x%q|0;b=l||d<F}else{for((l=A/(q[0]+1)|0)>1&&(q=r(q,l,A),J=r(J,l,A),S=q.length,F=J.length),y=S,I=(C=J.slice(0,S)).length;I<S;)C[I++]=0;(z=q.slice()).unshift(0),M=q[0],q[1]>=A/2&&++M;do l=0,(u=e(q,C,S,I))<0?(w=C[0],S!=I&&(w=w*A+(C[1]||0)),(l=w/M|0)>1?(l>=A&&(l=A-1),(u=e(g=r(q,l,A),C,p=g.length,I=C.length))==1&&(l--,a(g,S<p?z:q,p,A))):(l==0&&(u=l=1),g=q.slice()),(p=g.length)<I&&g.unshift(0),a(C,g,I,A),u==-1&&(u=e(q,C,S,I=C.length))<1&&(l++,a(C,S<I?z:q,I,A)),I=C.length):u===0&&(l++,C=[0]),m[d++]=l,u&&C[0]?C[I++]=J[y]||0:(C=[J[y]],I=1);while((y++<F||C[0]!==void 0)&&D--);b=C[0]!==void 0}m[0]||m.shift()}if(h==1)E.e=c,Ui=b;else{for(d=1,l=m[0];l>=10;l/=10)d++;E.e=d+c*h-1,V(E,s?n+E.e+1:n,o,b)}return E}}();function V(r,e,a,t){var i,n,o,s,A,u,c,d,l,h=r.constructor;e:if(e!=null){if(!(d=r.d))return r;for(i=1,s=d[0];s>=10;s/=10)i++;if((n=e-i)<0)n+=7,o=e,A=(c=d[l=0])/je(10,i-o-1)%10|0;else if((l=Math.ceil((n+1)/7))>=(s=d.length)){if(!t)break e;for(;s++<=l;)d.push(0);c=A=0,i=1,o=(n%=7)-7+1}else{for(c=s=d[l],i=1;s>=10;s/=10)i++;A=(o=(n%=7)-7+i)<0?0:c/je(10,i-o-1)%10|0}if(t=t||e<0||d[l+1]!==void 0||(o<0?c:c%je(10,i-o-1)),u=a<4?(A||t)&&(a==0||a==(r.s<0?3:2)):A>5||A==5&&(a==4||t||a==6&&(n>0?o>0?c/je(10,i-o):0:d[l-1])%10&1||a==(r.s<0?8:7)),e<1||!d[0])return d.length=0,u?(e-=r.e+1,d[0]=je(10,(7-e%7)%7),r.e=-e||0):d[0]=r.e=0,r;if(n==0?(d.length=l,s=1,l--):(d.length=l+1,s=je(10,7-n),d[l]=o>0?(c/je(10,i-o)%je(10,o)|0)*s:0),u)for(;;){if(l==0){for(n=1,o=d[0];o>=10;o/=10)n++;for(o=d[0]+=s,s=1;o>=10;o/=10)s++;n!=s&&(r.e++,d[0]==$e&&(d[0]=1));break}if(d[l]+=s,d[l]!=$e)break;d[l--]=0,s=1}for(n=d.length;d[--n]===0;)d.pop()}return X&&(r.e>h.maxE?(r.d=null,r.e=NaN):r.e<h.minE&&(r.e=0,r.d=[0])),r}function na(r,e,a){if(!r.isFinite())return Ji(r);var t,i=r.e,n=Te(r.d),o=n.length;return e?(a&&(t=a-o)>0?n=n.charAt(0)+"."+n.slice(1)+Ia(t):o>1&&(n=n.charAt(0)+"."+n.slice(1)),n=n+(r.e<0?"e":"e+")+r.e):i<0?(n="0."+Ia(-i-1)+n,a&&(t=a-o)>0&&(n+=Ia(t))):i>=o?(n+=Ia(i+1-o),a&&(t=a-i-1)>0&&(n=n+"."+Ia(t))):((t=i+1)<o&&(n=n.slice(0,t)+"."+n.slice(t)),a&&(t=a-o)>0&&(i+1===o&&(n+="."),n+=Ia(t))),n}function It(r,e){var a=r[0];for(e*=7;a>=10;a/=10)e++;return e}function Bt(r,e,a){if(e>Ss)throw X=!0,a&&(r.precision=a),Error(Gi);return V(new r(pt),e,1,!0)}function oa(r,e,a){if(e>cr)throw Error(Gi);return V(new r(mt),e,a,!0)}function zi(r){var e=r.length-1,a=7*e+1;if(e=r[e]){for(;e%10==0;e/=10)a--;for(e=r[0];e>=10;e/=10)a++}return a}function Ia(r){for(var e="";r--;)e+="0";return e}function Hi(r,e,a,t){var i,n=new r(1),o=Math.ceil(t/7+4);for(X=!1;;){if(a%2&&Vi((n=n.times(e)).d,o)&&(i=!0),(a=Re(a/2))===0){a=n.d.length-1,i&&n.d[a]===0&&++n.d[a];break}Vi((e=e.times(e)).d,o)}return X=!0,n}function Oi(r){return 1&r.d[r.d.length-1]}function qi(r,e,a){for(var t,i,n=new r(e[0]),o=0;++o<e.length;){if(!(i=new r(e[o])).s){n=i;break}((t=n.cmp(i))===a||t===0&&n.s===a)&&(n=i)}return n}function ur(r,e){var a,t,i,n,o,s,A,u=0,c=0,d=0,l=r.constructor,h=l.rounding,b=l.precision;if(!r.d||!r.d[0]||r.e>17)return new l(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:NaN);for(e==null?(X=!1,A=b):A=e,s=new l(.03125);r.e>-2;)r=r.times(s),d+=5;for(A+=t=Math.log(je(2,d))/Math.LN10*2+5|0,a=n=o=new l(1),l.precision=A;;){if(n=V(n.times(r),A,1),a=a.times(++c),Te((s=o.plus(ce(n,a,A,1))).d).slice(0,A)===Te(o.d).slice(0,A)){for(i=d;i--;)o=V(o.times(o),A,1);if(e!=null)return l.precision=b,o;if(!(u<3&&Za(o.d,A-t,h,u)))return V(o,l.precision=b,h,X=!0);l.precision=A+=10,a=n=s=new l(1),c=0,u++}o=s}}function Ba(r,e){var a,t,i,n,o,s,A,u,c,d,l,h=1,b=r,g=b.d,p=b.constructor,E=p.rounding,m=p.precision;if(b.s<0||!g||!g[0]||!b.e&&g[0]==1&&g.length==1)return new p(g&&!g[0]?-1/0:b.s!=1?NaN:g?0:b);if(e==null?(X=!1,c=m):c=e,p.precision=c+=10,t=(a=Te(g)).charAt(0),!(Math.abs(n=b.e)<15e14))return u=Bt(p,c+2,m).times(n+""),b=Ba(new p(t+"."+a.slice(1)),c-10).plus(u),p.precision=m,e==null?V(b,m,E,X=!0):b;for(;t<7&&t!=1||t==1&&a.charAt(1)>3;)t=(a=Te((b=b.times(r)).d)).charAt(0),h++;for(n=b.e,t>1?(b=new p("0."+a),n++):b=new p(t+"."+a.slice(1)),d=b,A=o=b=ce(b.minus(1),b.plus(1),c,1),l=V(b.times(b),c,1),i=3;;){if(o=V(o.times(l),c,1),Te((u=A.plus(ce(o,new p(i),c,1))).d).slice(0,c)===Te(A.d).slice(0,c)){if(A=A.times(2),n!==0&&(A=A.plus(Bt(p,c+2,m).times(n+""))),A=ce(A,new p(h),c,1),e!=null)return p.precision=m,A;if(!Za(A.d,c-10,E,s))return V(A,p.precision=m,E,X=!0);p.precision=c+=10,u=o=b=ce(d.minus(1),d.plus(1),c,1),l=V(b.times(b),c,1),i=s=1}A=u,i+=2}}function Ji(r){return String(r.s*r.s/0)}function yt(r,e){var a,t,i;for((a=e.indexOf("."))>-1&&(e=e.replace(".","")),(t=e.search(/e/i))>0?(a<0&&(a=t),a+=+e.slice(t+1),e=e.substring(0,t)):a<0&&(a=e.length),t=0;e.charCodeAt(t)===48;t++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(t,i)){if(i-=t,r.e=a=a-t-1,r.d=[],t=(a+1)%7,a<0&&(t+=7),t<i){for(t&&r.d.push(+e.slice(0,t)),i-=7;t<i;)r.d.push(+e.slice(t,t+=7));t=7-(e=e.slice(t)).length}else t-=i;for(;t--;)e+="0";r.d.push(+e),X&&(r.e>r.constructor.maxE?(r.d=null,r.e=NaN):r.e<r.constructor.minE&&(r.e=0,r.d=[0]))}else r.e=0,r.d=[0];return r}function Ts(r,e){var a,t,i,n,o,s,A,u,c;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Pi.test(e))return yt(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(js.test(e))a=16,e=e.toLowerCase();else if(ks.test(e))a=2;else{if(!Ms.test(e))throw Error(Ca+e);a=8}for((n=e.search(/p/i))>0?(A=+e.slice(n+1),e=e.substring(2,n)):e=e.slice(2),o=(n=e.indexOf("."))>=0,t=r.constructor,o&&(n=(s=(e=e.replace(".","")).length)-n,i=Hi(t,new t(a),n,2*n)),n=c=(u=Ct(e,a,$e)).length-1;u[n]===0;--n)u.pop();return n<0?new t(0*r.s):(r.e=It(u,c),r.d=u,X=!1,o&&(r=ce(r,i,4*s)),A&&(r=r.times(Math.abs(A)<54?je(2,A):_a.pow(2,A))),X=!0,r)}function La(r,e,a,t,i){var n,o,s,A,u=r.precision,c=Math.ceil(u/7);for(X=!1,A=a.times(a),s=new r(t);;){if(o=ce(s.times(A),new r(e++*e++),u,1),s=i?t.plus(o):t.minus(o),t=ce(o.times(A),new r(e++*e++),u,1),(o=s.plus(t)).d[c]!==void 0){for(n=c;o.d[n]===s.d[n]&&n--;);if(n==-1)break}n=s,s=t,t=o,o=n}return X=!0,o.d.length=c+1,o}function Dt(r,e){for(var a=r;--e;)a*=r;return a}function Ki(r,e){var a,t=e.s<0,i=oa(r,r.precision,1),n=i.times(.5);if((e=e.abs()).lte(n))return ha=t?4:1,e;if((a=e.divToInt(i)).isZero())ha=t?3:2;else{if((e=e.minus(a.times(i))).lte(n))return ha=Oi(a)?t?2:3:t?4:1,e;ha=Oi(a)?t?1:4:t?3:2}return e.minus(i).abs()}function dr(r,e,a,t){var i,n,o,s,A,u,c,d,l,h=r.constructor,b=a!==void 0;if(b?(Pe(a,1,Ea),t===void 0?t=h.rounding:Pe(t,0,8)):(a=h.precision,t=h.rounding),r.isFinite()){for(b?(i=2,e==16?a=4*a-3:e==8&&(a=3*a-2)):i=e,(o=(c=na(r)).indexOf("."))>=0&&(c=c.replace(".",""),(l=new h(1)).e=c.length-o,l.d=Ct(na(l),10,i),l.e=l.d.length),n=A=(d=Ct(c,10,i)).length;d[--A]==0;)d.pop();if(d[0]){if(o<0?n--:((r=new h(r)).d=d,r.e=n,d=(r=ce(r,l,a,t,0,i)).d,n=r.e,u=Ui),o=d[a],s=i/2,u=u||d[a+1]!==void 0,u=t<4?(o!==void 0||u)&&(t===0||t===(r.s<0?3:2)):o>s||o===s&&(t===4||u||t===6&&1&d[a-1]||t===(r.s<0?8:7)),d.length=a,u)for(;++d[--a]>i-1;)d[a]=0,a||(++n,d.unshift(1));for(A=d.length;!d[A-1];--A);for(o=0,c="";o<A;o++)c+=sr.charAt(d[o]);if(b){if(A>1)if(e==16||e==8){for(o=e==16?4:3,--A;A%o;A++)c+="0";for(A=(d=Ct(c,i,e)).length;!d[A-1];--A);for(o=1,c="1.";o<A;o++)c+=sr.charAt(d[o])}else c=c.charAt(0)+"."+c.slice(1);c=c+(n<0?"p":"p+")+n}else if(n<0){for(;++n;)c="0"+c;c="0."+c}else if(++n>A)for(n-=A;n--;)c+="0";else n<A&&(c=c.slice(0,n)+"."+c.slice(n))}else c=b?"0p+0":"0";c=(e==16?"0x":e==2?"0b":e==8?"0o":"")+c}else c=Ji(r);return r.s<0?"-"+c:c}function Vi(r,e){if(r.length>e)return r.length=e,!0}function Rs(r){return new this(r).abs()}function Ns(r){return new this(r).acos()}function Us(r){return new this(r).acosh()}function Gs(r,e){return new this(r).plus(e)}function Ls(r){return new this(r).asin()}function _s(r){return new this(r).asinh()}function Ps(r){return new this(r).atan()}function zs(r){return new this(r).atanh()}function Hs(r,e){r=new this(r),e=new this(e);var a,t=this.precision,i=this.rounding,n=t+4;return r.s&&e.s?r.d||e.d?!e.d||r.isZero()?(a=e.s<0?oa(this,t,i):new this(0)).s=r.s:!r.d||e.isZero()?(a=oa(this,n,1).times(.5)).s=r.s:e.s<0?(this.precision=n,this.rounding=1,a=this.atan(ce(r,e,n,1)),e=oa(this,n,1),this.precision=t,this.rounding=i,a=r.s<0?a.minus(e):a.plus(e)):a=this.atan(ce(r,e,n,1)):(a=oa(this,n,1).times(e.s>0?.25:.75)).s=r.s:a=new this(NaN),a}function Os(r){return new this(r).cbrt()}function qs(r){return V(r=new this(r),r.e+1,2)}function Js(r,e,a){return new this(r).clamp(e,a)}function Ks(r){if(!r||typeof r!="object")throw Error(Et+"Object expected");var e,a,t,i=r.defaults===!0,n=["precision",1,Ea,"rounding",0,8,"toExpNeg",-9e15,0,"toExpPos",0,or,"maxE",0,or,"minE",-9e15,0,"modulo",0,9];for(e=0;e<n.length;e+=3)if(a=n[e],i&&(this[a]=Ar[a]),(t=r[a])!==void 0){if(!(Re(t)===t&&t>=n[e+1]&&t<=n[e+2]))throw Error(Ca+a+": "+t);this[a]=t}if(a="crypto",i&&(this[a]=Ar[a]),(t=r[a])!==void 0){if(t!==!0&&t!==!1&&t!==0&&t!==1)throw Error(Ca+a+": "+t);if(t){if(typeof crypto>"u"||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw Error(Li);this[a]=!0}else this[a]=!1}return this}function Vs(r){return new this(r).cos()}function Ws(r){return new this(r).cosh()}function Ys(r,e){return new this(r).div(e)}function Xs(r){return new this(r).exp()}function Zs(r){return V(r=new this(r),r.e+1,3)}function $s(){var r,e,a=new this(0);for(X=!1,r=0;r<arguments.length;)if((e=new this(arguments[r++])).d)a.d&&(a=a.plus(e.times(e)));else{if(e.s)return X=!0,new this(1/0);a=e}return X=!0,a.sqrt()}function Wi(r){return r instanceof _a||r&&r.toStringTag===_i||!1}function eA(r){return new this(r).ln()}function aA(r,e){return new this(r).log(e)}function tA(r){return new this(r).log(2)}function rA(r){return new this(r).log(10)}function iA(){return qi(this,arguments,-1)}function nA(){return qi(this,arguments,1)}function oA(r,e){return new this(r).mod(e)}function sA(r,e){return new this(r).mul(e)}function AA(r,e){return new this(r).pow(e)}function cA(r){var e,a,t,i,n=0,o=new this(1),s=[];if(r===void 0?r=this.precision:Pe(r,1,Ea),t=Math.ceil(r/7),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(t));n<t;)(i=e[n])>=429e7?e[n]=crypto.getRandomValues(new Uint32Array(1))[0]:s[n++]=i%1e7;else{if(!crypto.randomBytes)throw Error(Li);for(e=crypto.randomBytes(t*=4);n<t;)(i=e[n]+(e[n+1]<<8)+(e[n+2]<<16)+((127&e[n+3])<<24))>=214e7?crypto.randomBytes(4).copy(e,n):(s.push(i%1e7),n+=4);n=t/4}else for(;n<t;)s[n++]=1e7*Math.random()|0;for(r%=7,(t=s[--n])&&r&&(i=je(10,7-r),s[n]=(t/i|0)*i);s[n]===0;n--)s.pop();if(n<0)a=0,s=[0];else{for(a=-1;s[0]===0;a-=7)s.shift();for(t=1,i=s[0];i>=10;i/=10)t++;t<7&&(a-=7-t)}return o.e=a,o.d=s,o}function uA(r){return V(r=new this(r),r.e+1,this.rounding)}function dA(r){return(r=new this(r)).d?r.d[0]?r.s:0*r.s:r.s||NaN}function hA(r){return new this(r).sin()}function lA(r){return new this(r).sinh()}function bA(r){return new this(r).sqrt()}function gA(r,e){return new this(r).sub(e)}function fA(){var r=0,e=arguments,a=new this(e[r]);for(X=!1;a.s&&++r<e.length;)a=a.plus(e[r]);return X=!0,V(a,this.precision,this.rounding)}function pA(r){return new this(r).tan()}function mA(r){return new this(r).tanh()}function EA(r){return V(r=new this(r),r.e+1,1)}T[Symbol.for("nodejs.util.inspect.custom")]=T.toString,T[Symbol.toStringTag]="Decimal";var _a=T.constructor=function r(e){var a,t,i;function n(o){var s,A,u,c=this;if(!(c instanceof n))return new n(o);if(c.constructor=n,Wi(o))return c.s=o.s,void(X?!o.d||o.e>n.maxE?(c.e=NaN,c.d=null):o.e<n.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d));if((u=typeof o)=="number"){if(o===0)return c.s=1/o<0?-1:1,c.e=0,void(c.d=[0]);if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,A=o;A>=10;A/=10)s++;return void(X?s>n.maxE?(c.e=NaN,c.d=null):s<n.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]))}return 0*o!=0?(o||(c.s=NaN),c.e=NaN,void(c.d=null)):yt(c,o.toString())}if(u==="string")return(A=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(A===43&&(o=o.slice(1)),c.s=1),Pi.test(o)?yt(c,o):Ts(c,o);if(u==="bigint")return o<0?(o=-o,c.s=-1):c.s=1,yt(c,o.toString());throw Error(Ca+o)}if(n.prototype=T,n.ROUND_UP=0,n.ROUND_DOWN=1,n.ROUND_CEIL=2,n.ROUND_FLOOR=3,n.ROUND_HALF_UP=4,n.ROUND_HALF_DOWN=5,n.ROUND_HALF_EVEN=6,n.ROUND_HALF_CEIL=7,n.ROUND_HALF_FLOOR=8,n.EUCLID=9,n.config=n.set=Ks,n.clone=r,n.isDecimal=Wi,n.abs=Rs,n.acos=Ns,n.acosh=Us,n.add=Gs,n.asin=Ls,n.asinh=_s,n.atan=Ps,n.atanh=zs,n.atan2=Hs,n.cbrt=Os,n.ceil=qs,n.clamp=Js,n.cos=Vs,n.cosh=Ws,n.div=Ys,n.exp=Xs,n.floor=Zs,n.hypot=$s,n.ln=eA,n.log=aA,n.log10=rA,n.log2=tA,n.max=iA,n.min=nA,n.mod=oA,n.mul=sA,n.pow=AA,n.random=cA,n.round=uA,n.sign=dA,n.sin=hA,n.sinh=lA,n.sqrt=bA,n.sub=gA,n.sum=fA,n.tan=pA,n.tanh=mA,n.trunc=EA,e===void 0&&(e={}),e&&e.defaults!==!0)for(i=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],a=0;a<i.length;)e.hasOwnProperty(t=i[a++])||(e[t]=this[t]);return n.config(e),n}(Ar);pt=new _a(pt),mt=new _a(mt);var CA=ie("BigNumber",["?on","config"],r=>{var{on:e,config:a}=r,t=_a.clone({precision:a.precision,modulo:_a.EUCLID});return t.prototype=Object.create(t.prototype),t.prototype.type="BigNumber",t.prototype.isBigNumber=!0,t.prototype.toJSON=function(){return{mathjs:"BigNumber",value:this.toString()}},t.fromJSON=function(i){return new t(i.value)},e&&e("config",function(i,n){i.precision!==n.precision&&t.config({precision:i.precision})}),t},{isClass:!0});const Ne=Math.cosh||function(r){return Math.abs(r)<1e-9?1-r:.5*(Math.exp(r)+Math.exp(-r))},Ye=Math.sinh||function(r){return Math.abs(r)<1e-9?r:.5*(Math.exp(r)-Math.exp(-r))},hr=function(r,e){return(r=Math.abs(r))<(e=Math.abs(e))&&([r,e]=[e,r]),r<1e8?Math.sqrt(r*r+e*e):(e/=r,r*Math.sqrt(1+e*e))},Pa=function(){throw SyntaxError("Invalid Param")};function lr(r,e){const a=Math.abs(r),t=Math.abs(e);return r===0?Math.log(t):e===0?Math.log(a):a<3e3&&t<3e3?.5*Math.log(r*r+e*e):(r*=.5,e*=.5,.5*Math.log(r*r+e*e)+Math.LN2)}const IA={re:0,im:0},Fa=function(r,e){const a=IA;if(r==null)a.re=a.im=0;else if(e!==void 0)a.re=r,a.im=e;else switch(typeof r){case"object":if("im"in r&&"re"in r)a.re=r.re,a.im=r.im;else if("abs"in r&&"arg"in r){if(!isFinite(r.abs)&&isFinite(r.arg))return k.INFINITY;a.re=r.abs*Math.cos(r.arg),a.im=r.abs*Math.sin(r.arg)}else if("r"in r&&"phi"in r){if(!isFinite(r.r)&&isFinite(r.phi))return k.INFINITY;a.re=r.r*Math.cos(r.phi),a.im=r.r*Math.sin(r.phi)}else r.length===2?(a.re=r[0],a.im=r[1]):Pa();break;case"string":a.im=a.re=0;const t=r.replace(/_/g,"").match(/\d+\.?\d*e[+-]?\d+|\d+\.?\d*|\.\d+|./g);let i=1,n=0;t===null&&Pa();for(let o=0;o<t.length;o++){const s=t[o];s===" "||s===" "||s===`
|
|
22
|
-
`||(s==="+"?i++:s==="-"?n++:s==="i"||s==="I"?(i+n===0&&Pa(),t[o+1]===" "||isNaN(t[o+1])?a.im+=parseFloat((n%2?"-":"")+"1"):(a.im+=parseFloat((n%2?"-":"")+t[o+1]),o++),i=n=0):((i+n===0||isNaN(s))&&Pa(),t[o+1]==="i"||t[o+1]==="I"?(a.im+=parseFloat((n%2?"-":"")+s),o++):a.re+=parseFloat((n%2?"-":"")+s),i=n=0))}i+n>0&&Pa();break;case"number":a.im=0,a.re=r;break;default:Pa()}return isNaN(a.re)||isNaN(a.im),a};function k(r,e){if(!(this instanceof k))return new k(r,e);const a=Fa(r,e);this.re=a.re,this.im=a.im}k.prototype={re:0,im:0,sign:function(){const r=hr(this.re,this.im);return new k(this.re/r,this.im/r)},add:function(r,e){const a=Fa(r,e),t=this.isInfinite(),i=!(isFinite(a.re)&&isFinite(a.im));return t||i?t&&i?k.NAN:k.INFINITY:new k(this.re+a.re,this.im+a.im)},sub:function(r,e){const a=Fa(r,e),t=this.isInfinite(),i=!(isFinite(a.re)&&isFinite(a.im));return t||i?t&&i?k.NAN:k.INFINITY:new k(this.re-a.re,this.im-a.im)},mul:function(r,e){const a=Fa(r,e),t=this.isInfinite(),i=!(isFinite(a.re)&&isFinite(a.im)),n=this.re===0&&this.im===0,o=a.re===0&&a.im===0;return t&&o||i&&n?k.NAN:t||i?k.INFINITY:a.im===0&&this.im===0?new k(this.re*a.re,0):new k(this.re*a.re-this.im*a.im,this.re*a.im+this.im*a.re)},div:function(r,e){const a=Fa(r,e),t=this.isInfinite(),i=!(isFinite(a.re)&&isFinite(a.im)),n=this.re===0&&this.im===0,o=a.re===0&&a.im===0;if(n&&o||t&&i)return k.NAN;if(o||t)return k.INFINITY;if(n||i)return k.ZERO;if(a.im===0)return new k(this.re/a.re,this.im/a.re);if(Math.abs(a.re)<Math.abs(a.im)){const s=a.re/a.im,A=a.re*s+a.im;return new k((this.re*s+this.im)/A,(this.im*s-this.re)/A)}{const s=a.im/a.re,A=a.im*s+a.re;return new k((this.re+this.im*s)/A,(this.im-this.re*s)/A)}},pow:function(r,e){const a=Fa(r,e),t=this.re===0&&this.im===0;if(a.re===0&&a.im===0)return k.ONE;if(a.im===0){if(this.im===0&&this.re>0)return new k(Math.pow(this.re,a.re),0);if(this.re===0)switch((a.re%4+4)%4){case 0:return new k(Math.pow(this.im,a.re),0);case 1:return new k(0,Math.pow(this.im,a.re));case 2:return new k(-Math.pow(this.im,a.re),0);case 3:return new k(0,-Math.pow(this.im,a.re))}}if(t&&a.re>0)return k.ZERO;const i=Math.atan2(this.im,this.re),n=lr(this.re,this.im);let o=Math.exp(a.re*n-a.im*i),s=a.im*n+a.re*i;return new k(o*Math.cos(s),o*Math.sin(s))},sqrt:function(){const r=this.re,e=this.im;if(e===0)return r>=0?new k(Math.sqrt(r),0):new k(0,Math.sqrt(-r));const a=hr(r,e);let t=Math.sqrt(.5*(a+Math.abs(r))),i=Math.abs(e)/(2*t);return r>=0?new k(t,e<0?-i:i):new k(i,e<0?-t:t)},exp:function(){const r=Math.exp(this.re);return this.im===0?new k(r,0):new k(r*Math.cos(this.im),r*Math.sin(this.im))},expm1:function(){const r=this.re,e=this.im;return new k(Math.expm1(r)*Math.cos(e)+function(a){const t=Math.PI/4;if(-t>a||a>t)return Math.cos(a)-1;const i=a*a;return i*(i*(i*(i*(i*(i*(i*(i/20922789888e3-1/87178291200)+1/479001600)-1/3628800)+1/40320)-1/720)+1/24)-.5)}(e),Math.exp(r)*Math.sin(e))},log:function(){const r=this.re,e=this.im;return e===0&&r>0?new k(Math.log(r),0):new k(lr(r,e),Math.atan2(e,r))},abs:function(){return hr(this.re,this.im)},arg:function(){return Math.atan2(this.im,this.re)},sin:function(){const r=this.re,e=this.im;return new k(Math.sin(r)*Ne(e),Math.cos(r)*Ye(e))},cos:function(){const r=this.re,e=this.im;return new k(Math.cos(r)*Ne(e),-Math.sin(r)*Ye(e))},tan:function(){const r=2*this.re,e=2*this.im,a=Math.cos(r)+Ne(e);return new k(Math.sin(r)/a,Ye(e)/a)},cot:function(){const r=2*this.re,e=2*this.im,a=Math.cos(r)-Ne(e);return new k(-Math.sin(r)/a,Ye(e)/a)},sec:function(){const r=this.re,e=this.im,a=.5*Ne(2*e)+.5*Math.cos(2*r);return new k(Math.cos(r)*Ne(e)/a,Math.sin(r)*Ye(e)/a)},csc:function(){const r=this.re,e=this.im,a=.5*Ne(2*e)-.5*Math.cos(2*r);return new k(Math.sin(r)*Ne(e)/a,-Math.cos(r)*Ye(e)/a)},asin:function(){const r=this.re,e=this.im,a=new k(e*e-r*r+1,-2*r*e).sqrt(),t=new k(a.re-e,a.im+r).log();return new k(t.im,-t.re)},acos:function(){const r=this.re,e=this.im,a=new k(e*e-r*r+1,-2*r*e).sqrt(),t=new k(a.re-e,a.im+r).log();return new k(Math.PI/2-t.im,t.re)},atan:function(){const r=this.re,e=this.im;if(r===0){if(e===1)return new k(0,1/0);if(e===-1)return new k(0,-1/0)}const a=r*r+(1-e)*(1-e),t=new k((1-e*e-r*r)/a,-2*r/a).log();return new k(-.5*t.im,.5*t.re)},acot:function(){const r=this.re,e=this.im;if(e===0)return new k(Math.atan2(1,r),0);const a=r*r+e*e;return a!==0?new k(r/a,-e/a).atan():new k(r!==0?r/0:0,e!==0?-e/0:0).atan()},asec:function(){const r=this.re,e=this.im;if(r===0&&e===0)return new k(0,1/0);const a=r*r+e*e;return a!==0?new k(r/a,-e/a).acos():new k(r!==0?r/0:0,e!==0?-e/0:0).acos()},acsc:function(){const r=this.re,e=this.im;if(r===0&&e===0)return new k(Math.PI/2,1/0);const a=r*r+e*e;return a!==0?new k(r/a,-e/a).asin():new k(r!==0?r/0:0,e!==0?-e/0:0).asin()},sinh:function(){const r=this.re,e=this.im;return new k(Ye(r)*Math.cos(e),Ne(r)*Math.sin(e))},cosh:function(){const r=this.re,e=this.im;return new k(Ne(r)*Math.cos(e),Ye(r)*Math.sin(e))},tanh:function(){const r=2*this.re,e=2*this.im,a=Ne(r)+Math.cos(e);return new k(Ye(r)/a,Math.sin(e)/a)},coth:function(){const r=2*this.re,e=2*this.im,a=Ne(r)-Math.cos(e);return new k(Ye(r)/a,-Math.sin(e)/a)},csch:function(){const r=this.re,e=this.im,a=Math.cos(2*e)-Ne(2*r);return new k(-2*Ye(r)*Math.cos(e)/a,2*Ne(r)*Math.sin(e)/a)},sech:function(){const r=this.re,e=this.im,a=Math.cos(2*e)+Ne(2*r);return new k(2*Ne(r)*Math.cos(e)/a,-2*Ye(r)*Math.sin(e)/a)},asinh:function(){let r=this.im;this.im=-this.re,this.re=r;const e=this.asin();return this.re=-this.im,this.im=r,r=e.re,e.re=-e.im,e.im=r,e},acosh:function(){const r=this.acos();if(r.im<=0){const e=r.re;r.re=-r.im,r.im=e}else{const e=r.im;r.im=-r.re,r.re=e}return r},atanh:function(){const r=this.re,e=this.im,a=r>1&&e===0,t=1-r,i=1+r,n=t*t+e*e,o=n!==0?new k((i*t-e*e)/n,(e*t+i*e)/n):new k(r!==-1?r/0:0,e!==0?e/0:0),s=o.re;return o.re=lr(o.re,o.im)/2,o.im=Math.atan2(o.im,s)/2,a&&(o.im=-o.im),o},acoth:function(){const r=this.re,e=this.im;if(r===0&&e===0)return new k(0,Math.PI/2);const a=r*r+e*e;return a!==0?new k(r/a,-e/a).atanh():new k(r!==0?r/0:0,e!==0?-e/0:0).atanh()},acsch:function(){const r=this.re,e=this.im;if(e===0)return new k(r!==0?Math.log(r+Math.sqrt(r*r+1)):1/0,0);const a=r*r+e*e;return a!==0?new k(r/a,-e/a).asinh():new k(r!==0?r/0:0,e!==0?-e/0:0).asinh()},asech:function(){const r=this.re,e=this.im;if(this.isZero())return k.INFINITY;const a=r*r+e*e;return a!==0?new k(r/a,-e/a).acosh():new k(r!==0?r/0:0,e!==0?-e/0:0).acosh()},inverse:function(){if(this.isZero())return k.INFINITY;if(this.isInfinite())return k.ZERO;const r=this.re,e=this.im,a=r*r+e*e;return new k(r/a,-e/a)},conjugate:function(){return new k(this.re,-this.im)},neg:function(){return new k(-this.re,-this.im)},ceil:function(r){return r=Math.pow(10,r||0),new k(Math.ceil(this.re*r)/r,Math.ceil(this.im*r)/r)},floor:function(r){return r=Math.pow(10,r||0),new k(Math.floor(this.re*r)/r,Math.floor(this.im*r)/r)},round:function(r){return r=Math.pow(10,r||0),new k(Math.round(this.re*r)/r,Math.round(this.im*r)/r)},equals:function(r,e){const a=Fa(r,e);return Math.abs(a.re-this.re)<=k.EPSILON&&Math.abs(a.im-this.im)<=k.EPSILON},clone:function(){return new k(this.re,this.im)},toString:function(){let r=this.re,e=this.im,a="";return this.isNaN()?"NaN":this.isInfinite()?"Infinity":(Math.abs(r)<k.EPSILON&&(r=0),Math.abs(e)<k.EPSILON&&(e=0),e===0?a+r:(r!==0?(a+=r,a+=" ",e<0?(e=-e,a+="-"):a+="+",a+=" "):e<0&&(e=-e,a+="-"),e!==1&&(a+=e),a+"i"))},toVector:function(){return[this.re,this.im]},valueOf:function(){return this.im===0?this.re:null},isNaN:function(){return isNaN(this.re)||isNaN(this.im)},isZero:function(){return this.im===0&&this.re===0},isFinite:function(){return isFinite(this.re)&&isFinite(this.im)},isInfinite:function(){return!this.isFinite()}},k.ZERO=new k(0,0),k.ONE=new k(1,0),k.I=new k(0,1),k.PI=new k(Math.PI,0),k.E=new k(Math.E,0),k.INFINITY=new k(1/0,1/0),k.NAN=new k(NaN,NaN),k.EPSILON=1e-15;var BA=ie("Complex",[],()=>(Object.defineProperty(k,"name",{value:"Complex"}),k.prototype.constructor=k,k.prototype.type="Complex",k.prototype.isComplex=!0,k.prototype.toJSON=function(){return{mathjs:"Complex",re:this.re,im:this.im}},k.prototype.toPolar=function(){return{r:this.abs(),phi:this.arg()}},k.prototype.format=function(r){var e=this.im,a=this.re,t=nr(this.re,r),i=nr(this.im,r),n=be(r)?r:r?r.precision:null;if(n!==null){var o=Math.pow(10,-n);Math.abs(a/e)<o&&(a=0),Math.abs(e/a)<o&&(e=0)}return e===0?t:a===0?e===1?"i":e===-1?"-i":i+"i":e<0?e===-1?t+" - i":t+" - "+i.substring(1)+"i":e===1?t+" + i":t+" + "+i+"i"},k.fromPolar=function(r){switch(arguments.length){case 1:var e=arguments[0];if(typeof e=="object")return k(e);throw new TypeError("Input has to be an object with r and phi keys.");case 2:var a=arguments[0],t=arguments[1];if(be(a)){if(Qi(t)&&t.hasBase("ANGLE")&&(t=t.toNumber("rad")),be(t))return new k({r:a,phi:t});throw new TypeError("Phi is not a number nor an angle unit.")}throw new TypeError("Radius r is not a number.");default:throw new SyntaxError("Wrong number of arguments in function fromPolar")}},k.prototype.valueOf=k.prototype.toString,k.fromJSON=function(r){return new k(r)},k.compare=function(r,e){return r.re>e.re?1:r.re<e.re?-1:r.im>e.im?1:r.im<e.im?-1:0},k),{isClass:!0});typeof BigInt>"u"&&(BigInt=function(r){if(isNaN(r))throw new Error("");return r});const W=BigInt(0),Z=BigInt(1),$a=BigInt(2),br=BigInt(5),ze=BigInt(10),P={s:Z,n:W,d:Z};function la(r,e){try{r=BigInt(r)}catch{throw ya()}return r*e}function ea(r){return typeof r=="bigint"?r:Math.floor(r)}function fe(r,e){if(e===W)throw gr();const a=Object.create(Xe.prototype);a.s=r<W?-Z:Z;const t=Qa(r=r<W?-r:r,e);return a.n=r/t,a.d=e/t,a}function za(r){const e={};let a=r,t=$a,i=br-Z;for(;i<=a;){for(;a%t===W;)a/=t,e[t]=(e[t]||W)+Z;i+=Z+$a*t++}return a!==r?a>1&&(e[a]=(e[a]||W)+Z):e[r]=(e[r]||W)+Z,e}const Me=function(r,e){let a=W,t=Z,i=Z;if(r!=null)if(e!==void 0){if(typeof r=="bigint")a=r;else{if(isNaN(r))throw ya();if(r%1!=0)throw Yi();a=BigInt(r)}if(typeof e=="bigint")t=e;else{if(isNaN(e))throw ya();if(e%1!=0)throw Yi();t=BigInt(e)}i=a*t}else if(typeof r=="object"){if("d"in r&&"n"in r)a=BigInt(r.n),t=BigInt(r.d),"s"in r&&(a*=BigInt(r.s));else if(0 in r)a=BigInt(r[0]),1 in r&&(t=BigInt(r[1]));else{if(typeof r!="bigint")throw ya();a=r}i=a*t}else if(typeof r=="number"){if(isNaN(r))throw ya();if(r<0&&(i=-Z,r=-r),r%1==0)a=BigInt(r);else{let n=1,o=0,s=1,A=1,u=1,c=1e7;for(r>=1&&(n=10**Math.floor(1+Math.log10(r)),r/=n);s<=c&&u<=c;){let d=(o+A)/(s+u);if(r===d){s+u<=c?(a=o+A,t=s+u):u>s?(a=A,t=u):(a=o,t=s);break}r>d?(o+=A,s+=u):(A+=o,u+=s),s>c?(a=A,t=u):(a=o,t=s)}a=BigInt(a)*BigInt(n),t=BigInt(t)}}else if(typeof r=="string"){let n=0,o=W,s=W,A=W,u=Z,c=Z,d=r.replace(/_/g,"").match(/\d+|./g);if(d===null||(d[n]==="-"?(i=-Z,n++):d[n]==="+"&&n++,d.length===n+1?s=la(d[n++],i):d[n+1]==="."||d[n]==="."?(d[n]!=="."&&(o=la(d[n++],i)),n++,(n+1===d.length||d[n+1]==="("&&d[n+3]===")"||d[n+1]==="'"&&d[n+3]==="'")&&(s=la(d[n],i),u=ze**BigInt(d[n].length),n++),(d[n]==="("&&d[n+2]===")"||d[n]==="'"&&d[n+2]==="'")&&(A=la(d[n+1],i),c=ze**BigInt(d[n+1].length)-Z,n+=3)):d[n+1]==="/"||d[n+1]===":"?(s=la(d[n],i),u=la(d[n+2],Z),n+=3):d[n+3]==="/"&&d[n+1]===" "&&(o=la(d[n],i),s=la(d[n+2],i),u=la(d[n+4],Z),n+=5),!(d.length<=n)))throw ya();t=u*c,i=a=A+t*o+c*s}else{if(typeof r!="bigint")throw ya();a=r,i=r,t=Z}if(t===W)throw gr();P.s=i<W?-Z:Z,P.n=a<W?-a:a,P.d=t<W?-t:t};function yA(r,e,a){let t=Z,i=function(n,o,s){let A=Z;for(;o>W;n=n*n%s,o>>=Z)o&Z&&(A=A*n%s);return A}(ze,a,e);for(let n=0;n<300;n++){if(t===i)return BigInt(n);t=t*ze%e,i=i*ze%e}return 0}function Qa(r,e){if(!r)return e;if(!e)return r;for(;;){if(!(r%=e))return e;if(!(e%=r))return r}}function Xe(r,e){if(Me(r,e),!(this instanceof Xe))return fe(P.s*P.n,P.d);r=Qa(P.d,P.n),this.s=P.s,this.n=P.n/r,this.d=P.d/r}var gr=function(){return new Error("Division by Zero")},ya=function(){return new Error("Invalid argument")},Yi=function(){return new Error("Parameters must be integer")};Xe.prototype={s:Z,n:W,d:Z,abs:function(){return fe(this.n,this.d)},neg:function(){return fe(-this.s*this.n,this.d)},add:function(r,e){return Me(r,e),fe(this.s*this.n*P.d+P.s*this.d*P.n,this.d*P.d)},sub:function(r,e){return Me(r,e),fe(this.s*this.n*P.d-P.s*this.d*P.n,this.d*P.d)},mul:function(r,e){return Me(r,e),fe(this.s*P.s*this.n*P.n,this.d*P.d)},div:function(r,e){return Me(r,e),fe(this.s*P.s*this.n*P.d,this.d*P.n)},clone:function(){return fe(this.s*this.n,this.d)},mod:function(r,e){if(r===void 0)return fe(this.s*this.n%this.d,Z);if(Me(r,e),W===P.n*this.d)throw gr();return fe(this.s*(P.d*this.n)%(P.n*this.d),P.d*this.d)},gcd:function(r,e){return Me(r,e),fe(Qa(P.n,this.n)*Qa(P.d,this.d),P.d*this.d)},lcm:function(r,e){return Me(r,e),P.n===W&&this.n===W?fe(W,Z):fe(P.n*this.n,Qa(P.n,this.n)*Qa(P.d,this.d))},inverse:function(){return fe(this.s*this.d,this.n)},pow:function(r,e){if(Me(r,e),P.d===Z)return P.s<W?fe((this.s*this.d)**P.n,this.n**P.n):fe((this.s*this.n)**P.n,this.d**P.n);if(this.s<W)return null;let a=za(this.n),t=za(this.d),i=Z,n=Z;for(let o in a)if(o!=="1"){if(o==="0"){i=W;break}if(a[o]*=P.n,a[o]%P.d!==W)return null;a[o]/=P.d,i*=BigInt(o)**a[o]}for(let o in t)if(o!=="1"){if(t[o]*=P.n,t[o]%P.d!==W)return null;t[o]/=P.d,n*=BigInt(o)**t[o]}return P.s<W?fe(n,i):fe(i,n)},log:function(r,e){if(Me(r,e),this.s<=W||P.s<=W)return null;const a={},t=za(P.n),i=za(P.d),n=za(this.n),o=za(this.d);for(const u in i)t[u]=(t[u]||W)-i[u];for(const u in o)n[u]=(n[u]||W)-o[u];for(const u in t)u!=="1"&&(a[u]=!0);for(const u in n)u!=="1"&&(a[u]=!0);let s=null,A=null;for(const u in a){const c=t[u]||W,d=n[u]||W;if(c===W){if(d!==W)return null;continue}let l=d,h=c;const b=Qa(l,h);if(l/=b,h/=b,s===null&&A===null)s=l,A=h;else if(l*A!=s*h)return null}return s!==null&&A!==null?fe(s,A):null},equals:function(r,e){return Me(r,e),this.s*this.n*P.d==P.s*P.n*this.d},lt:function(r,e){return Me(r,e),this.s*this.n*P.d<P.s*P.n*this.d},lte:function(r,e){return Me(r,e),this.s*this.n*P.d<=P.s*P.n*this.d},gt:function(r,e){return Me(r,e),this.s*this.n*P.d>P.s*P.n*this.d},gte:function(r,e){return Me(r,e),this.s*this.n*P.d>=P.s*P.n*this.d},compare:function(r,e){Me(r,e);let a=this.s*this.n*P.d-P.s*P.n*this.d;return(W<a)-(a<W)},ceil:function(r){return r=ze**BigInt(r||0),fe(ea(this.s*r*this.n/this.d)+(r*this.n%this.d>W&&this.s>=W?Z:W),r)},floor:function(r){return r=ze**BigInt(r||0),fe(ea(this.s*r*this.n/this.d)-(r*this.n%this.d>W&&this.s<W?Z:W),r)},round:function(r){return r=ze**BigInt(r||0),fe(ea(this.s*r*this.n/this.d)+this.s*((this.s>=W?Z:W)+$a*(r*this.n%this.d)>this.d?Z:W),r)},roundTo:function(r,e){Me(r,e);const a=this.n*P.d,t=this.d*P.n,i=a%t;let n=ea(a/t);return i+i>=t&&n++,fe(this.s*n*P.n,P.d)},divisible:function(r,e){return Me(r,e),!(!(P.n*this.d)||this.n*P.d%(P.n*this.d))},valueOf:function(){return Number(this.s*this.n)/Number(this.d)},toString:function(r){let e=this.n,a=this.d;r=r||15;let t=function(o,s){for(;s%$a===W;s/=$a);for(;s%br===W;s/=br);if(s===Z)return W;let A=ze%s,u=1;for(;A!==Z;u++)if(A=A*ze%s,u>2e3)return W;return BigInt(u)}(0,a),i=yA(0,a,t),n=this.s<W?"-":"";if(n+=ea(e/a),e%=a,e*=ze,e&&(n+="."),t){for(let o=i;o--;)n+=ea(e/a),e%=a,e*=ze;n+="(";for(let o=t;o--;)n+=ea(e/a),e%=a,e*=ze;n+=")"}else for(let o=r;e&&o--;)n+=ea(e/a),e%=a,e*=ze;return n},toFraction:function(r){let e=this.n,a=this.d,t=this.s<W?"-":"";if(a===Z)t+=e;else{let i=ea(e/a);r&&i>W&&(t+=i,t+=" ",e%=a),t+=e,t+="/",t+=a}return t},toLatex:function(r){let e=this.n,a=this.d,t=this.s<W?"-":"";if(a===Z)t+=e;else{let i=ea(e/a);r&&i>W&&(t+=i,e%=a),t+="\\frac{",t+=e,t+="}{",t+=a,t+="}"}return t},toContinued:function(){let r=this.n,e=this.d,a=[];do{a.push(ea(r/e));let t=r%e;r=e,e=t}while(r!==Z);return a},simplify:function(r){const e=BigInt(1/(r||.001)|0),a=this.abs(),t=a.toContinued();for(let i=1;i<t.length;i++){let n=fe(t[i-1],Z);for(let s=i-2;s>=0;s--)n=n.inverse().add(t[s]);let o=n.sub(a);if(o.n*e<o.d)return n.mul(this.s)}return this}};var DA=ie("Fraction",[],()=>(Object.defineProperty(Xe,"name",{value:"Fraction"}),Xe.prototype.constructor=Xe,Xe.prototype.type="Fraction",Xe.prototype.isFraction=!0,Xe.prototype.toJSON=function(){return{mathjs:"Fraction",n:String(this.s*this.n),d:String(this.d)}},Xe.fromJSON=function(r){return new Xe(r)},Xe),{isClass:!0}),wA=ie("Matrix",[],()=>{function r(){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator")}return r.prototype.type="Matrix",r.prototype.isMatrix=!0,r.prototype.storage=function(){throw new Error("Cannot invoke storage on a Matrix interface")},r.prototype.datatype=function(){throw new Error("Cannot invoke datatype on a Matrix interface")},r.prototype.create=function(e,a){throw new Error("Cannot invoke create on a Matrix interface")},r.prototype.subset=function(e,a,t){throw new Error("Cannot invoke subset on a Matrix interface")},r.prototype.get=function(e){throw new Error("Cannot invoke get on a Matrix interface")},r.prototype.set=function(e,a,t){throw new Error("Cannot invoke set on a Matrix interface")},r.prototype.resize=function(e,a){throw new Error("Cannot invoke resize on a Matrix interface")},r.prototype.reshape=function(e,a){throw new Error("Cannot invoke reshape on a Matrix interface")},r.prototype.clone=function(){throw new Error("Cannot invoke clone on a Matrix interface")},r.prototype.size=function(){throw new Error("Cannot invoke size on a Matrix interface")},r.prototype.map=function(e,a){throw new Error("Cannot invoke map on a Matrix interface")},r.prototype.forEach=function(e){throw new Error("Cannot invoke forEach on a Matrix interface")},r.prototype[Symbol.iterator]=function(){throw new Error("Cannot iterate a Matrix interface")},r.prototype.toArray=function(){throw new Error("Cannot invoke toArray on a Matrix interface")},r.prototype.valueOf=function(){throw new Error("Cannot invoke valueOf on a Matrix interface")},r.prototype.format=function(e){throw new Error("Cannot invoke format on a Matrix interface")},r.prototype.toString=function(){throw new Error("Cannot invoke toString on a Matrix interface")},r},{isClass:!0});function fr(r,e,a){var t=new r.constructor(2),i="";if(a){if(a<1)throw new Error("size must be in greater than 0");if(!Ee(a))throw new Error("size must be an integer");if(r.greaterThan(t.pow(a-1).sub(1))||r.lessThan(t.pow(a-1).mul(-1)))throw new Error("Value must be in range [-2^".concat(a-1,", 2^").concat(a-1,"-1]"));if(!r.isInteger())throw new Error("Value must be an integer");r.lessThan(0)&&(r=r.add(t.pow(a))),i="i".concat(a)}switch(e){case 2:return"".concat(r.toBinary()).concat(i);case 8:return"".concat(r.toOctal()).concat(i);case 16:return"".concat(r.toHexadecimal()).concat(i);default:throw new Error("Base ".concat(e," not supported "))}}function xA(r,e){if(typeof e=="function")return e(r);if(!r.isFinite())return r.isNaN()?"NaN":r.gt(0)?"Infinity":"-Infinity";var{notation:a,precision:t,wordSize:i}=Mi(e);switch(a){case"fixed":return function(u,c){return u.toFixed(c)}(r,t);case"exponential":return Xi(r,t);case"engineering":return function(u,c){var d=u.e,l=d%3==0?d:d<0?d-3-d%3:d-d%3,h=u.mul(Math.pow(10,-l)),b=h.toPrecision(c);return b.includes("e")&&(b=new u.constructor(b).toFixed()),b+"e"+(d>=0?"+":"")+l.toString()}(r,t);case"bin":return fr(r,2,i);case"oct":return fr(r,8,i);case"hex":return fr(r,16,i);case"auto":var n=Zi(e==null?void 0:e.lowerExp,-3),o=Zi(e==null?void 0:e.upperExp,5);if(r.isZero())return"0";var s=r.toSignificantDigits(t),A=s.e;return(A>=n&&A<o?s.toFixed():Xi(r,t)).replace(/((\.\d*?)(0+))($|e)/,function(){var u=arguments[2],c=arguments[4];return u!=="."?u+c:c});default:throw new Error('Unknown notation "'+a+'". Choose "auto", "exponential", "fixed", "bin", "oct", or "hex.')}}function Xi(r,e){return e!==void 0?r.toExponential(e-1):r.toExponential()}function Zi(r,e){return be(r)?r:Fe(r)?r.toNumber():e}function Qe(r,e){var a=function(t,i){return typeof t=="number"?nr(t,i):Fe(t)?xA(t,i):function(n){return n&&typeof n=="object"&&typeof n.s=="bigint"&&typeof n.n=="bigint"&&typeof n.d=="bigint"||!1}(t)?i&&i.fraction==="decimal"?t.toString():"".concat(t.s*t.n,"/").concat(t.d):Array.isArray(t)?an(t,i):ia(t)?$i(t):typeof t=="function"?t.syntax?String(t.syntax):"function":t&&typeof t=="object"?typeof t.format=="function"?t.format(i):t&&t.toString(i)!=={}.toString()?t.toString(i):"{"+Object.keys(t).map(n=>$i(n)+": "+Qe(t[n],i)).join(", ")+"}":String(t)}(r,e);return e&&typeof e=="object"&&"truncate"in e&&a.length>e.truncate?a.substring(0,e.truncate-3)+"...":a}function $i(r){for(var e=String(r),a="",t=0;t<e.length;){var i=e.charAt(t);a+=i in en?en[i]:i,t++}return'"'+a+'"'}var en={'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r"," ":"\\t"};function an(r,e){if(Array.isArray(r)){for(var a="[",t=r.length,i=0;i<t;i++)i!==0&&(a+=", "),a+=an(r[i],e);return a+="]"}return Qe(r,e)}function pe(r,e,a){if(!(this instanceof pe))throw new SyntaxError("Constructor must be called with the new operator");this.actual=r,this.expected=e,this.relation=a,this.message="Dimension mismatch ("+(Array.isArray(r)?"["+r.join(", ")+"]":r)+" "+(this.relation||"!=")+" "+(Array.isArray(e)?"["+e.join(", ")+"]":e)+")",this.stack=new Error().stack}function Ha(r,e,a){if(!(this instanceof Ha))throw new SyntaxError("Constructor must be called with the new operator");this.index=r,arguments.length<3?(this.min=0,this.max=e):(this.min=e,this.max=a),this.min!==void 0&&this.index<this.min?this.message="Index out of range ("+this.index+" < "+this.min+")":this.max!==void 0&&this.index>=this.max?this.message="Index out of range ("+this.index+" > "+(this.max-1)+")":this.message="Index out of range ("+this.index+")",this.stack=new Error().stack}function Le(r){for(var e=[];Array.isArray(r);)e.push(r.length),r=r[0];return e}function tn(r,e,a){var t,i=r.length;if(i!==e[a])throw new pe(i,e[a]);if(a<e.length-1){var n=a+1;for(t=0;t<i;t++){var o=r[t];if(!Array.isArray(o))throw new pe(e.length-1,e.length,"<");tn(r[t],e,n)}}else for(t=0;t<i;t++)if(Array.isArray(r[t]))throw new pe(e.length+1,e.length,">")}function rn(r,e){if(e.length===0){if(Array.isArray(r))throw new pe(r.length,0)}else tn(r,e,0)}function Ie(r,e){if(r!==void 0){if(!be(r)||!Ee(r))throw new TypeError("Index must be an integer (value: "+r+")");if(r<0||typeof e=="number"&&r>=e)throw new Ha(r,e)}}function pr(r,e,a){if(!Array.isArray(e))throw new TypeError("Array expected");if(e.length===0)throw new Error("Resizing to scalar is not supported");return e.forEach(function(t){if(!be(t)||!Ee(t)||t<0)throw new TypeError("Invalid size, must contain positive integers (size: "+Qe(e)+")")}),(be(r)||Fe(r))&&(r=[r]),mr(r,e,0,a!==void 0?a:0),r}function mr(r,e,a,t){var i,n,o=r.length,s=e[a],A=Math.min(o,s);if(r.length=s,a<e.length-1){var u=a+1;for(i=0;i<A;i++)n=r[i],Array.isArray(n)||(n=[n],r[i]=n),mr(n,e,u,t);for(i=A;i<s;i++)n=[],r[i]=n,mr(n,e,u,t)}else{for(i=0;i<A;i++)for(;Array.isArray(r[i]);)r[i]=r[i][0];for(i=A;i<s;i++)r[i]=t}}function nn(r,e){var a=function(n){var o=arguments.length>1&&arguments[1]!==void 0&&arguments[1];if(!Array.isArray(n))return n;if(typeof o!="boolean")throw new TypeError("Boolean expected for second argument of flatten");var s=[];return o?u(n):A(n),s;function A(c){for(var d=0;d<c.length;d++){var l=c[d];Array.isArray(l)?A(l):s.push(l)}}function u(c){if(Array.isArray(c[0]))for(var d=0;d<c.length;d++)u(c[d]);else for(var l=0;l<c.length;l++)s.push(c[l])}}(r,!0),t=a.length;if(!Array.isArray(r)||!Array.isArray(e))throw new TypeError("Array expected");if(e.length===0)throw new pe(0,t,"!=");var i=on(e=Er(e,t));if(t!==i)throw new pe(i,t,"!=");try{return function(n,o){for(var s,A=n,u=o.length-1;u>0;u--){var c=o[u];s=[];for(var d=A.length/c,l=0;l<d;l++)s.push(A.slice(l*c,(l+1)*c));A=s}return A}(a,e)}catch(n){throw n instanceof pe?new pe(i,t,"!="):n}}function Er(r,e){var a=on(r),t=r.slice(),i=r.indexOf(-1);if(r.indexOf(-1,i+1)>=0)throw new Error("More than one wildcard in sizes");if(i>=0){if(e%a!=0)throw new Error("Could not replace wildcard, since "+e+" is no multiple of "+-a);t[i]=-e/a}return t}function on(r){return r.reduce((e,a)=>e*a,1)}function sn(r,e,a,t){var i=t||Le(r);if(a)for(var n=0;n<a;n++)r=[r],i.unshift(1);for(r=An(r,e,0);i.length<e;)i.push(1);return r}function An(r,e,a){var t,i;if(Array.isArray(r)){var n=a+1;for(t=0,i=r.length;t<i;t++)r[t]=An(r[t],e,n)}else for(var o=a;o<e;o++)r=[r];return r}function Cr(r,e){for(var a,t=0,i=0;i<r.length;i++){var n=r[i],o=Array.isArray(n);if(i===0&&o&&(t=n.length),o&&n.length!==t)return;var s=o?Cr(n,e):e(n);if(a===void 0)a=s;else if(a!==s)return"mixed"}return a}function cn(r,e,a,t){if(t<a){if(r.length!==e.length)throw new pe(r.length,e.length);for(var i=[],n=0;n<r.length;n++)i[n]=cn(r[n],e[n],a,t+1);return i}return r.concat(e)}function vA(){var r=Array.prototype.slice.call(arguments,0,-1),e=Array.prototype.slice.call(arguments,-1);if(r.length===1)return r[0];if(r.length>1)return r.slice(1).reduce(function(a,t){return cn(a,t,e,0)},r[0]);throw new Error("Wrong number of arguments in function concat")}function un(r,e){for(var a=e.length,t=r.length,i=0;i<t;i++){var n=a-t+i;if(r[i]<e[n]&&r[i]>1||r[i]>e[n])throw new Error("shape mismatch: mismatch is found in arg with shape (".concat(r,") not possible to broadcast dimension ").concat(t," with size ").concat(r[i]," to size ").concat(e[n]))}}function dn(r,e){var a=Le(r);if(Na(a,e))return r;un(a,e);var t,i,n,o=function(){for(var d=arguments.length,l=new Array(d),h=0;h<d;h++)l[h]=arguments[h];for(var b=l.map(x=>x.length),g=Math.max(...b),p=new Array(g).fill(null),E=0;E<l.length;E++)for(var m=l[E],C=b[E],I=0;I<C;I++){var w=g-C+I;m[I]>p[w]&&(p[w]=m[I])}for(var D=0;D<l.length;D++)un(l[D],p);return p}(a,e),s=o.length,A=[...Array(s-a.length).fill(1),...a],u=function(d){return ot([],d)}(r);a.length<s&&(a=Le(u=nn(u,A)));for(var c=0;c<s;c++)a[c]<o[c]&&(t=u,i=o[c],n=c,a=Le(u=vA(...Array(i).fill(t),n)));return u}function hn(r,e){if(!Array.isArray(r))throw new Error("Array expected");var a=Le(r);if(e.length!==a.length)throw new pe(e.length,a.length);for(var t=0;t<e.length;t++)Ie(e[t],a[t]);return e.reduce((i,n)=>i[n],r)}function ln(r,e){var a=arguments.length>2&&arguments[2]!==void 0&&arguments[2];if(r.length===0)return[];if(a)return function i(n){if(Array.isArray(n)){for(var o=n.length,s=Array(o),A=0;A<o;A++)s[A]=i(n[A]);return s}return e(n)}(r);var t=[];return function i(n,o){if(Array.isArray(n)){for(var s=n.length,A=Array(s),u=0;u<s;u++)t[o]=u,A[u]=i(n[u],o+1);return A}return e(n,t.slice(0,o),r)}(r,0)}function wt(r,e,a){var t=arguments.length>3&&arguments[3]!==void 0&&arguments[3];if(ut.isTypedFunction(r)){var i,n;if(t)i=1;else{var o=(e.isMatrix?e.size():Le(e)).map(()=>0),s=e.isMatrix?e.get(o):hn(e,o);i=function(u,c,d,l){for(var h=[c,d,l],b=3;b>0;b--){var g=h.slice(0,b);if(ut.resolve(u,g)!==null)return b}}(r,s,o,e)}if(e.isMatrix&&e.dataType!=="mixed"&&e.dataType!==void 0){var A=function(u,c){var d=[];if(Object.entries(u.signatures).forEach(l=>{var[h,b]=l;h.split(",").length===c&&d.push(b)}),d.length===1)return d[0]}(r,i);n=A!==void 0?A:r}else n=r;return i>=1&&i<=3?{isUnary:i===1,fn:function(){for(var u=arguments.length,c=new Array(u),d=0;d<u;d++)c[d]=arguments[d];return bn(n,c.slice(0,i),a,r.name)}}:{isUnary:!1,fn:function(){for(var u=arguments.length,c=new Array(u),d=0;d<u;d++)c[d]=arguments[d];return bn(n,c,a,r.name)}}}return t===void 0?{isUnary:FA(r),fn:r}:{isUnary:t,fn:r}}function FA(r){if(r.length!==1)return!1;var e=r.toString();if(/arguments/.test(e))return!1;var a=e.match(/\(.*?\)/);return!/\.\.\./.test(a)}function bn(r,e,a,t){try{return r(...e)}catch(i){(function(n,o,s,A){var u;if(n instanceof TypeError&&((u=n.data)===null||u===void 0?void 0:u.category)==="wrongType"){var c=[];throw c.push("value: ".concat(ma(o[0]))),o.length>=2&&c.push("index: ".concat(ma(o[1]))),o.length>=3&&c.push("array: ".concat(ma(o[2]))),new TypeError("Function ".concat(s," cannot apply callback arguments ")+"".concat(A,"(").concat(c.join(", "),") at index ").concat(JSON.stringify(o[1])))}throw new TypeError("Function ".concat(s," cannot apply callback arguments ")+"to function ".concat(A,": ").concat(n.message))})(i,e,a,t)}}pe.prototype=new RangeError,pe.prototype.constructor=RangeError,pe.prototype.name="DimensionError",pe.prototype.isDimensionError=!0,Ha.prototype=new RangeError,Ha.prototype.constructor=RangeError,Ha.prototype.name="IndexError",Ha.prototype.isIndexError=!0;var QA=ie("DenseMatrix",["Matrix"],r=>{var{Matrix:e}=r;function a(A,u){if(!(this instanceof a))throw new SyntaxError("Constructor must be called with the new operator");if(u&&!ia(u))throw new Error("Invalid datatype: "+u);if(ye(A))A.type==="DenseMatrix"?(this._data=De(A._data),this._size=De(A._size),this._datatype=u||A._datatype):(this._data=A.toArray(),this._size=A.size(),this._datatype=u||A._datatype);else if(A&&ke(A.data)&&ke(A.size))this._data=A.data,this._size=A.size,rn(this._data,this._size),this._datatype=u||A.datatype;else if(ke(A))this._data=s(A),this._size=Le(this._data),rn(this._data,this._size),this._datatype=u;else{if(A)throw new TypeError("Unsupported type of data ("+ma(A)+")");this._data=[],this._size=[0],this._datatype=u}}function t(A,u,c,d){var l=d===c-1,h=u.dimension(d);return l?h.map(function(b){return Ie(b,A.length),A[b]}).valueOf():h.map(function(b){return Ie(b,A.length),t(A[b],u,c,d+1)}).valueOf()}function i(A,u,c,d,l){var h=l===d-1,b=u.dimension(l);h?b.forEach(function(g,p){Ie(g),A[g]=c[p[0]]}):b.forEach(function(g,p){Ie(g),i(A[g],u,c[p[0]],d,l+1)})}function n(A,u,c){if(u.length===0){for(var d=A._data;ke(d);)d=d[0];return d}return A._size=u.slice(0),A._data=pr(A._data,A._size,c),A}function o(A,u,c){for(var d=A._size.slice(0),l=!1;d.length<u.length;)d.push(0),l=!0;for(var h=0,b=u.length;h<b;h++)u[h]>d[h]&&(d[h]=u[h],l=!0);l&&n(A,d,c)}function s(A){return ye(A)?s(A.valueOf()):ke(A)?A.map(s):A}return a.prototype=new e,a.prototype.createDenseMatrix=function(A,u){return new a(A,u)},Object.defineProperty(a,"name",{value:"DenseMatrix"}),a.prototype.constructor=a,a.prototype.type="DenseMatrix",a.prototype.isDenseMatrix=!0,a.prototype.getDataType=function(){return Cr(this._data,ma)},a.prototype.storage=function(){return"dense"},a.prototype.datatype=function(){return this._datatype},a.prototype.create=function(A,u){return new a(A,u)},a.prototype.subset=function(A,u,c){switch(arguments.length){case 1:return function(d,l){if(!tr(l))throw new TypeError("Invalid index");var h=l.isScalar();if(h)return d.get(l.min());var b=l.size();if(b.length!==d._size.length)throw new pe(b.length,d._size.length);for(var g=l.min(),p=l.max(),E=0,m=d._size.length;E<m;E++)Ie(g[E],d._size[E]),Ie(p[E],d._size[E]);return new a(t(d._data,l,b.length,0),d._datatype)}(this,A);case 2:case 3:return function(d,l,h,b){if(!l||l.isIndex!==!0)throw new TypeError("Invalid index");var g,p=l.size(),E=l.isScalar();if(ye(h)?(g=h.size(),h=h.valueOf()):g=Le(h),E){if(g.length!==0)throw new TypeError("Scalar expected");d.set(l.min(),h,b)}else{if(!Na(g,p))try{g=Le(h=g.length===0?dn([h],p):dn(h,p))}catch{}if(p.length<d._size.length)throw new pe(p.length,d._size.length,"<");if(g.length<p.length){for(var m=0,C=0;p[m]===1&&g[m]===1;)m++;for(;p[m]===1;)C++,m++;h=sn(h,p.length,C,g)}if(!Na(p,g))throw new pe(p,g,">");var I=l.max().map(function(x){return x+1});o(d,I,b);var w=p.length,D=0;i(d._data,l,h,w,D)}return d}(this,A,u,c);default:throw new SyntaxError("Wrong number of arguments")}},a.prototype.get=function(A){return hn(this._data,A)},a.prototype.set=function(A,u,c){if(!ke(A))throw new TypeError("Array expected");if(A.length<this._size.length)throw new pe(A.length,this._size.length,"<");var d,l,h,b=A.map(function(p){return p+1});o(this,b,c);var g=this._data;for(d=0,l=A.length-1;d<l;d++)Ie(h=A[d],g.length),g=g[h];return Ie(h=A[A.length-1],g.length),g[h]=u,this},a.prototype.resize=function(A,u,c){if(!At(A))throw new TypeError("Array or Matrix expected");var d=A.valueOf().map(l=>Array.isArray(l)&&l.length===1?l[0]:l);return n(c?this.clone():this,d,u)},a.prototype.reshape=function(A,u){var c=u?this.clone():this;c._data=nn(c._data,A);var d=c._size.reduce((l,h)=>l*h);return c._size=Er(A,d),c},a.prototype.clone=function(){return new a({data:De(this._data),size:De(this._size),datatype:this._datatype})},a.prototype.size=function(){return this._size.slice(0)},a.prototype._forEach=function(A){var u=A.length===2,c=this._size.length-1;if(!(c<0))if(u)(function h(b){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(g<c)for(var p=0;p<b.length;p++)h(b[p],g+1);else for(var E=0;E<b.length;E++)A(b,E)})(this._data);else if(c!==0){var d=new Array(c+1);(function h(b){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(g<c)for(var p=0;p<b.length;p++)d[g]=p,h(b[p],g+1);else for(var E=0;E<b.length;E++)d[g]=E,A(b,E,d.slice())})(this._data)}else for(var l=0;l<this._data.length;l++)A(this._data,l,[l])},a.prototype.map=function(A){var u=arguments.length>2&&arguments[2]!==void 0&&arguments[2],c=this,d=new a(c),l=wt(A,c._data,"map",u),h=u||l.isUnary?(b,g)=>{b[g]=l.fn(b[g])}:(b,g,p)=>{b[g]=l.fn(b[g],p,c)};return d._forEach(h),d},a.prototype.forEach=function(A){var u=arguments.length>2&&arguments[2]!==void 0&&arguments[2],c=this,d=wt(A,c._data,"map",u),l=u||d.isUnary?(h,b)=>{d.fn(h[b])}:(h,b,g)=>{d.fn(h[b],g,c)};c._forEach(l)},a.prototype[Symbol.iterator]=function*(){var A=this._size.length-1;if(!(A<0))if(A!==0){var u=[],c=function*(l,h){if(h<A)for(var b=0;b<l.length;b++)u[h]=b,yield*c(l[b],h+1);else for(var g=0;g<l.length;g++)u[h]=g,yield{value:l[g],index:u.slice()}};yield*c(this._data,0)}else for(var d=0;d<this._data.length;d++)yield{value:this._data[d],index:[d]}},a.prototype.rows=function(){var A=[];if(this.size().length!==2)throw new TypeError("Rows can only be returned for a 2D matrix.");var u=this._data;for(var c of u)A.push(new a([c],this._datatype));return A},a.prototype.columns=function(){var A=this,u=[],c=this.size();if(c.length!==2)throw new TypeError("Rows can only be returned for a 2D matrix.");for(var d=this._data,l=function(b){var g=d.map(p=>[p[b]]);u.push(new a(g,A._datatype))},h=0;h<c[1];h++)l(h);return u},a.prototype.toArray=function(){return De(this._data)},a.prototype.valueOf=function(){return this._data},a.prototype.format=function(A){return Qe(this._data,A)},a.prototype.toString=function(){return Qe(this._data)},a.prototype.toJSON=function(){return{mathjs:"DenseMatrix",data:this._data,size:this._size,datatype:this._datatype}},a.prototype.diagonal=function(A){if(A){if(Fe(A)&&(A=A.toNumber()),!be(A)||!Ee(A))throw new TypeError("The parameter k must be an integer number")}else A=0;for(var u=A>0?A:0,c=A<0?-A:0,d=this._size[0],l=this._size[1],h=Math.min(d-c,l-u),b=[],g=0;g<h;g++)b[g]=this._data[g+c][g+u];return new a({data:b,size:[h],datatype:this._datatype})},a.diagonal=function(A,u,c,d){if(!ke(A))throw new TypeError("Array expected, size parameter");if(A.length!==2)throw new Error("Only two dimensions matrix are supported");if(A=A.map(function(w){if(Fe(w)&&(w=w.toNumber()),!be(w)||!Ee(w)||w<1)throw new Error("Size values must be positive integers");return w}),c){if(Fe(c)&&(c=c.toNumber()),!be(c)||!Ee(c))throw new TypeError("The parameter k must be an integer number")}else c=0;var l,h=c>0?c:0,b=c<0?-c:0,g=A[0],p=A[1],E=Math.min(g-b,p-h);if(ke(u)){if(u.length!==E)throw new Error("Invalid value array length");l=function(w){return u[w]}}else if(ye(u)){var m=u.size();if(m.length!==1||m[0]!==E)throw new Error("Invalid matrix length");l=function(w){return u.get([w])}}else l=function(){return u};d||(d=Fe(l(0))?l(0).mul(0):0);var C=[];if(A.length>0){C=pr(C,A,d);for(var I=0;I<E;I++)C[I+b][I+h]=l(I)}return new a({data:C,size:[g,p]})},a.fromJSON=function(A){return new a(A)},a.prototype.swapRows=function(A,u){if(!(be(A)&&Ee(A)&&be(u)&&Ee(u)))throw new Error("Row index must be positive integers");if(this._size.length!==2)throw new Error("Only two dimensional matrix is supported");return Ie(A,this._size[0]),Ie(u,this._size[0]),a._swapRows(A,u,this._data),this},a._swapRows=function(A,u,c){var d=c[A];c[A]=c[u],c[u]=d},a},{isClass:!0});function ka(r,e,a){if(!a)return ye(r)?r.map(i=>e(i),!1,!0):ln(r,e,!0);var t=i=>i===0?i:e(i);return ye(r)?r.map(i=>t(i),!1,!0):ln(r,t,!0)}var gn="number",xt="number, number";function fn(r){return Math.abs(r)}function pn(r,e){return r+e}function mn(r,e){return r-e}function En(r,e){return r*e}function Cn(r){return-r}function In(r,e){return r*r<1&&e===1/0||r*r>1&&e===-1/0?0:Math.pow(r,e)}function Ir(r,e){if(e<r)return 1;if(e===r)return e;var a=e+r>>1;return Ir(r,a)*Ir(a+1,e)}function vt(r){var e;if(Ee(r))return r<=0?isFinite(r)?1/0:NaN:r>171?1/0:Ir(1,r-1);if(r<.5)return Math.PI/(Math.sin(Math.PI*r)*vt(1-r));if(r>=171.35)return 1/0;if(r>85){var a=r*r,t=a*r,i=t*r,n=i*r;return Math.sqrt(2*Math.PI/r)*Math.pow(r/Math.E,r)*(1+1/(12*r)+1/(288*a)-139/(51840*t)-571/(2488320*i)+163879/(209018880*n)+5246819/(75246796800*n*r))}--r,e=Oa[0];for(var o=1;o<Oa.length;++o)e+=Oa[o]/(r+o);var s=r+Bn+.5;return Math.sqrt(2*Math.PI)*Math.pow(s,r+.5)*Math.exp(-s)*e}fn.signature=gn,pn.signature=xt,mn.signature=xt,En.signature=xt,Cn.signature=gn,In.signature=xt,vt.signature="number";var Bn=4.7421875,Oa=[.9999999999999971,57.15623566586292,-59.59796035547549,14.136097974741746,-.4919138160976202,3399464998481189e-20,4652362892704858e-20,-9837447530487956e-20,.0001580887032249125,-.00021026444172410488,.00021743961811521265,-.0001643181065367639,8441822398385275e-20,-26190838401581408e-21,36899182659531625e-22],yn="isZero",kA=ie(yn,["typed","equalScalar"],r=>{var{typed:e,equalScalar:a}=r;return e(yn,{"number | BigNumber | Complex | Fraction":t=>a(t,0),bigint:t=>t===0n,Unit:e.referToSelf(t=>i=>e.find(t,i.valueType())(i.value)),"Array | Matrix":e.referToSelf(t=>i=>ka(i,t))})}),jA=ie("compareUnits",["typed"],r=>{var{typed:e}=r;return{"Unit, Unit":e.referToSelf(a=>(t,i)=>{if(!t.equalBase(i))throw new Error("Cannot compare units with different base");return e.find(a,[t.valueType(),i.valueType()])(t.value,i.value)})}}),Ft="equalScalar",MA=ie(Ft,["typed","config"],r=>{var{typed:e,config:a}=r,t=jA({typed:e});return e(Ft,{"boolean, boolean":function(i,n){return i===n},"number, number":function(i,n){return lt(i,n,a.relTol,a.absTol)},"BigNumber, BigNumber":function(i,n){return i.eq(n)||function(o,s){var A=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1e-9,u=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;if(A<=0)throw new Error("Relative tolerance must be greater than 0");if(u<0)throw new Error("Absolute tolerance must be at least 0");return!o.isNaN()&&!s.isNaN()&&(o.isFinite()&&s.isFinite()?!!o.eq(s)||o.minus(s).abs().lte(o.constructor.max(o.constructor.max(o.abs(),s.abs()).mul(A),u)):o.eq(s))}(i,n,a.relTol,a.absTol)},"bigint, bigint":function(i,n){return i===n},"Fraction, Fraction":function(i,n){return i.equals(n)},"Complex, Complex":function(i,n){return function(o,s,A,u){return lt(o.re,s.re,A,u)&<(o.im,s.im,A,u)}(i,n,a.relTol,a.absTol)}},t)});ie(Ft,["typed","config"],r=>{var{typed:e,config:a}=r;return e(Ft,{"number, number":function(t,i){return lt(t,i,a.relTol,a.absTol)}})});var SA=ie("SparseMatrix",["typed","equalScalar","Matrix"],r=>{var{typed:e,equalScalar:a,Matrix:t}=r;function i(c,d){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator");if(d&&!ia(d))throw new Error("Invalid datatype: "+d);if(ye(c))(function(l,h,b){h.type==="SparseMatrix"?(l._values=h._values?De(h._values):void 0,l._index=De(h._index),l._ptr=De(h._ptr),l._size=De(h._size),l._datatype=b||h._datatype):n(l,h.valueOf(),b||h._datatype)})(this,c,d);else if(c&&ke(c.index)&&ke(c.ptr)&&ke(c.size))this._values=c.values,this._index=c.index,this._ptr=c.ptr,this._size=c.size,this._datatype=d||c.datatype;else if(ke(c))n(this,c,d);else{if(c)throw new TypeError("Unsupported type of data ("+ma(c)+")");this._values=[],this._index=[],this._ptr=[0],this._size=[0,0],this._datatype=d}}function n(c,d,l){c._values=[],c._index=[],c._ptr=[],c._datatype=l;var h=d.length,b=0,g=a,p=0;if(ia(l)&&(g=e.find(a,[l,l])||a,p=e.convert(0,l)),h>0){var E=0;do{c._ptr.push(c._index.length);for(var m=0;m<h;m++){var C=d[m];if(ke(C)){if(E===0&&b<C.length&&(b=C.length),E<C.length){var I=C[E];g(I,p)||(c._values.push(I),c._index.push(m))}}else E===0&&b<1&&(b=1),g(C,p)||(c._values.push(C),c._index.push(m))}E++}while(E<b)}c._ptr.push(c._index.length),c._size=[h,b]}function o(c,d,l,h){if(l-d==0)return l;for(var b=d;b<l;b++)if(h[b]===c)return b;return d}function s(c,d,l,h,b,g,p){b.splice(c,0,h),g.splice(c,0,d);for(var E=l+1;E<p.length;E++)p[E]++}function A(c,d,l,h){var b=h||0,g=a,p=0;ia(c._datatype)&&(g=e.find(a,[c._datatype,c._datatype])||a,p=e.convert(0,c._datatype),b=e.convert(b,c._datatype));var E,m,C,I=!g(b,p),w=c._size[0],D=c._size[1];if(l>D){for(m=D;m<l;m++)if(c._ptr[m]=c._values.length,I)for(E=0;E<w;E++)c._values.push(b),c._index.push(E);c._ptr[l]=c._values.length}else l<D&&(c._ptr.splice(l+1,D-l),c._values.splice(c._ptr[l],c._values.length),c._index.splice(c._ptr[l],c._index.length));if(D=l,d>w){if(I){var x=0;for(m=0;m<D;m++){c._ptr[m]=c._ptr[m]+x,C=c._ptr[m+1]+x;var y=0;for(E=w;E<d;E++,y++)c._values.splice(C+y,0,b),c._index.splice(C+y,0,E),x++}c._ptr[D]=c._values.length}}else if(d<w){var F=0;for(m=0;m<D;m++){c._ptr[m]=c._ptr[m]-F;var M=c._ptr[m],S=c._ptr[m+1]-F;for(C=M;C<S;C++)(E=c._index[C])>d-1&&(c._values.splice(C,1),c._index.splice(C,1),F++)}c._ptr[m]=c._values.length}return c._size[0]=d,c._size[1]=l,c}function u(c,d,l,h,b){var g,p,E=h[0],m=h[1],C=[];for(g=0;g<E;g++)for(C[g]=[],p=0;p<m;p++)C[g][p]=0;for(p=0;p<m;p++)for(var I=l[p],w=l[p+1],D=I;D<w;D++)C[g=d[D]][p]=c?b?De(c[D]):c[D]:1;return C}return i.prototype=new t,i.prototype.createSparseMatrix=function(c,d){return new i(c,d)},Object.defineProperty(i,"name",{value:"SparseMatrix"}),i.prototype.constructor=i,i.prototype.type="SparseMatrix",i.prototype.isSparseMatrix=!0,i.prototype.getDataType=function(){return Cr(this._values,ma)},i.prototype.storage=function(){return"sparse"},i.prototype.datatype=function(){return this._datatype},i.prototype.create=function(c,d){return new i(c,d)},i.prototype.density=function(){var c=this._size[0],d=this._size[1];return c!==0&&d!==0?this._index.length/(c*d):0},i.prototype.subset=function(c,d,l){if(!this._values)throw new Error("Cannot invoke subset on a Pattern only matrix");switch(arguments.length){case 1:return function(h,b){if(!tr(b))throw new TypeError("Invalid index");if(b.isScalar())return h.get(b.min());var g,p,E,m,C=b.size();if(C.length!==h._size.length)throw new pe(C.length,h._size.length);var I=b.min(),w=b.max();for(g=0,p=h._size.length;g<p;g++)Ie(I[g],h._size[g]),Ie(w[g],h._size[g]);var D=h._values,x=h._index,y=h._ptr,F=b.dimension(0),M=b.dimension(1),S=[],z=[];F.forEach(function(q,se){z[q]=se[0],S[q]=!0});var O=D?[]:void 0,K=[],J=[];return M.forEach(function(q){for(J.push(K.length),E=y[q],m=y[q+1];E<m;E++)g=x[E],S[g]===!0&&(K.push(z[g]),O&&O.push(D[E]))}),J.push(K.length),new i({values:O,index:K,ptr:J,size:C,datatype:h._datatype})}(this,c);case 2:case 3:return function(h,b,g,p){if(!b||b.isIndex!==!0)throw new TypeError("Invalid index");var E,m=b.size(),C=b.isScalar();if(ye(g)?(E=g.size(),g=g.toArray()):E=Le(g),C){if(E.length!==0)throw new TypeError("Scalar expected");h.set(b.min(),g,p)}else{if(m.length!==1&&m.length!==2)throw new pe(m.length,h._size.length,"<");if(E.length<m.length){for(var I=0,w=0;m[I]===1&&E[I]===1;)I++;for(;m[I]===1;)w++,I++;g=sn(g,m.length,w,E)}if(!Na(m,E))throw new pe(m,E,">");if(m.length===1)b.dimension(0).forEach(function(y,F){Ie(y),h.set([y,0],g[F[0]],p)});else{var D=b.dimension(0),x=b.dimension(1);D.forEach(function(y,F){Ie(y),x.forEach(function(M,S){Ie(M),h.set([y,M],g[F[0]][S[0]],p)})})}}return h}(this,c,d,l);default:throw new SyntaxError("Wrong number of arguments")}},i.prototype.get=function(c){if(!ke(c))throw new TypeError("Array expected");if(c.length!==this._size.length)throw new pe(c.length,this._size.length);if(!this._values)throw new Error("Cannot invoke get on a Pattern only matrix");var d=c[0],l=c[1];Ie(d,this._size[0]),Ie(l,this._size[1]);var h=o(d,this._ptr[l],this._ptr[l+1],this._index);return h<this._ptr[l+1]&&this._index[h]===d?this._values[h]:0},i.prototype.set=function(c,d,l){if(!ke(c))throw new TypeError("Array expected");if(c.length!==this._size.length)throw new pe(c.length,this._size.length);if(!this._values)throw new Error("Cannot invoke set on a Pattern only matrix");var h=c[0],b=c[1],g=this._size[0],p=this._size[1],E=a,m=0;ia(this._datatype)&&(E=e.find(a,[this._datatype,this._datatype])||a,m=e.convert(0,this._datatype)),(h>g-1||b>p-1)&&(A(this,Math.max(h+1,g),Math.max(b+1,p),l),g=this._size[0],p=this._size[1]),Ie(h,g),Ie(b,p);var C=o(h,this._ptr[b],this._ptr[b+1],this._index);return C<this._ptr[b+1]&&this._index[C]===h?E(d,m)?function(I,w,D,x,y){D.splice(I,1),x.splice(I,1);for(var F=w+1;F<y.length;F++)y[F]--}(C,b,this._values,this._index,this._ptr):this._values[C]=d:E(d,m)||s(C,h,b,d,this._values,this._index,this._ptr),this},i.prototype.resize=function(c,d,l){if(!At(c))throw new TypeError("Array or Matrix expected");var h=c.valueOf().map(b=>Array.isArray(b)&&b.length===1?b[0]:b);if(h.length!==2)throw new Error("Only two dimensions matrix are supported");return h.forEach(function(b){if(!be(b)||!Ee(b)||b<0)throw new TypeError("Invalid size, must contain positive integers (size: "+Qe(h)+")")}),A(l?this.clone():this,h[0],h[1],d)},i.prototype.reshape=function(c,d){if(!ke(c))throw new TypeError("Array expected");if(c.length!==2)throw new Error("Sparse matrices can only be reshaped in two dimensions");c.forEach(function(z){if(!be(z)||!Ee(z)||z<=-2||z===0)throw new TypeError("Invalid size, must contain positive integers or -1 (size: "+Qe(c)+")")});var l=this._size[0]*this._size[1];if(l!==(c=Er(c,l))[0]*c[1])throw new Error("Reshaping sparse matrix will result in the wrong number of elements");var h=d?this.clone():this;if(this._size[0]===c[0]&&this._size[1]===c[1])return h;for(var b=[],g=0;g<h._ptr.length;g++)for(var p=0;p<h._ptr[g+1]-h._ptr[g];p++)b.push(g);for(var E=h._values.slice(),m=h._index.slice(),C=0;C<h._index.length;C++){var I=m[C],w=b[C],D=I*h._size[1]+w;b[C]=D%c[1],m[C]=Math.floor(D/c[1])}h._values.length=0,h._index.length=0,h._ptr.length=c[1]+1,h._size=c.slice();for(var x=0;x<h._ptr.length;x++)h._ptr[x]=0;for(var y=0;y<E.length;y++){var F=m[y],M=b[y],S=E[y];s(o(F,h._ptr[M],h._ptr[M+1],h._index),F,M,S,h._values,h._index,h._ptr)}return h},i.prototype.clone=function(){return new i({values:this._values?De(this._values):void 0,index:De(this._index),ptr:De(this._ptr),size:De(this._size),datatype:this._datatype})},i.prototype.size=function(){return this._size.slice(0)},i.prototype.map=function(c,d){if(!this._values)throw new Error("Cannot invoke map on a Pattern only matrix");var l=this,h=this._size[0],b=this._size[1],g=wt(c,l,"map");return function(p,E,m,C,I,w,D){var x=[],y=[],F=[],M=a,S=0;ia(p._datatype)&&(M=e.find(a,[p._datatype,p._datatype])||a,S=e.convert(0,p._datatype));for(var z=function(de,$,me){var Y=w(de,$,me);M(Y,S)||(x.push(Y),y.push($))},O=C;O<=I;O++){F.push(x.length);var K=p._ptr[O],J=p._ptr[O+1];if(D)for(var q=K;q<J;q++){var se=p._index[q];se>=E&&se<=m&&z(p._values[q],se-E,O-C)}else{for(var ue={},re=K;re<J;re++)ue[p._index[re]]=p._values[re];for(var le=E;le<=m;le++)z(le in ue?ue[le]:0,le-E,O-C)}}return F.push(x.length),new i({values:x,index:y,ptr:F,size:[m-E+1,I-C+1]})}(this,0,h-1,0,b-1,function(p,E,m){return g.fn(p,[E,m],l)},d)},i.prototype.forEach=function(c,d){if(!this._values)throw new Error("Cannot invoke forEach on a Pattern only matrix");for(var l=this,h=this._size[0],b=this._size[1],g=wt(c,l,"forEach"),p=0;p<b;p++){var E=this._ptr[p],m=this._ptr[p+1];if(d)for(var C=E;C<m;C++){var I=this._index[C];g.fn(this._values[C],[I,p],l)}else{for(var w={},D=E;D<m;D++)w[this._index[D]]=this._values[D];for(var x=0;x<h;x++){var y=x in w?w[x]:0;g.fn(y,[x,p],l)}}}},i.prototype[Symbol.iterator]=function*(){if(!this._values)throw new Error("Cannot iterate a Pattern only matrix");for(var c=this._size[1],d=0;d<c;d++)for(var l=this._ptr[d],h=this._ptr[d+1],b=l;b<h;b++){var g=this._index[b];yield{value:this._values[b],index:[g,d]}}},i.prototype.toArray=function(){return u(this._values,this._index,this._ptr,this._size,!0)},i.prototype.valueOf=function(){return u(this._values,this._index,this._ptr,this._size,!1)},i.prototype.format=function(c){for(var d=this._size[0],l=this._size[1],h=this.density(),b="Sparse Matrix ["+Qe(d,c)+" x "+Qe(l,c)+"] density: "+Qe(h,c)+`
|
|
23
|
-
`,g=0;g<
|
|
24
|
-
(`+Qe(this._index[m],c)+", "+Qe(g,c)+") ==> "+(this._values?Qe(this._values[m],c):"X");return b},i.prototype.toString=function(){return Qe(this.toArray())},i.prototype.toJSON=function(){return{mathjs:"SparseMatrix",values:this._values,index:this._index,ptr:this._ptr,size:this._size,datatype:this._datatype}},i.prototype.diagonal=function(c){if(c){if(Fe(c)&&(c=c.toNumber()),!be(c)||!Ee(c))throw new TypeError("The parameter k must be an integer number")}else c=0;var d=c>0?c:0,l=c<0?-c:0,h=this._size[0],b=this._size[1],g=Math.min(h-l,b-d),p=[],E=[],m=[];m[0]=0;for(var C=d;C<b&&p.length<g;C++)for(var I=this._ptr[C],w=this._ptr[C+1],D=I;D<w;D++){var x=this._index[D];if(x===C-d+l){p.push(this._values[D]),E[p.length-1]=x-l;break}}return m.push(p.length),new i({values:p,index:E,ptr:m,size:[g,1]})},i.fromJSON=function(c){return new i(c)},i.diagonal=function(c,d,l,h,b){if(!ke(c))throw new TypeError("Array expected, size parameter");if(c.length!==2)throw new Error("Only two dimensions matrix are supported");if(c=c.map(function(K){if(Fe(K)&&(K=K.toNumber()),!be(K)||!Ee(K)||K<1)throw new Error("Size values must be positive integers");return K}),l){if(Fe(l)&&(l=l.toNumber()),!be(l)||!Ee(l))throw new TypeError("The parameter k must be an integer number")}else l=0;var g=a,p=0;ia(b)&&(g=e.find(a,[b,b])||a,p=e.convert(0,b));var E,m=l>0?l:0,C=l<0?-l:0,I=c[0],w=c[1],D=Math.min(I-C,w-m);if(ke(d)){if(d.length!==D)throw new Error("Invalid value array length");E=function(K){return d[K]}}else if(ye(d)){var x=d.size();if(x.length!==1||x[0]!==D)throw new Error("Invalid matrix length");E=function(K){return d.get([K])}}else E=function(){return d};for(var y=[],F=[],M=[],S=0;S<w;S++){M.push(y.length);var z=S-m;if(z>=0&&z<D){var O=E(z);g(O,p)||(F.push(z+C),y.push(O))}}return M.push(y.length),new i({values:y,index:F,ptr:M,size:[I,w]})},i.prototype.swapRows=function(c,d){if(!(be(c)&&Ee(c)&&be(d)&&Ee(d)))throw new Error("Row index must be positive integers");if(this._size.length!==2)throw new Error("Only two dimensional matrix is supported");return Ie(c,this._size[0]),Ie(d,this._size[0]),i._swapRows(c,d,this._size[1],this._values,this._index,this._ptr),this},i._forEachRow=function(c,d,l,h,b){for(var g=h[c],p=h[c+1],E=g;E<p;E++)b(l[E],d[E])},i._swapRows=function(c,d,l,h,b,g){for(var p=0;p<l;p++){var E=g[p],m=g[p+1],C=o(c,E,m,b),I=o(d,E,m,b);if(C<m&&I<m&&b[C]===c&&b[I]===d){if(h){var w=h[C];h[C]=h[I],h[I]=w}}else if(C<m&&b[C]===c&&(I>=m||b[I]!==d)){var D=h?h[C]:void 0;b.splice(I,0,d),h&&h.splice(I,0,D),b.splice(I<=C?C+1:C,1),h&&h.splice(I<=C?C+1:C,1)}else if(I<m&&b[I]===d&&(C>=m||b[C]!==c)){var x=h?h[I]:void 0;b.splice(C,0,c),h&&h.splice(C,0,x),b.splice(C<=I?I+1:I,1),h&&h.splice(C<=I?I+1:I,1)}}},i},{isClass:!0}),TA=ie("number",["typed"],r=>{var{typed:e}=r,a=e("number",{"":function(){return 0},number:function(t){return t},string:function(t){if(t==="NaN")return NaN;var i,n,o=(n=(i=t).match(/(0[box])([0-9a-fA-F]*)\.([0-9a-fA-F]*)/))?{input:i,radix:{"0b":2,"0o":8,"0x":16}[n[1]],integerPart:n[2],fractionalPart:n[3]}:null;if(o)return function(c){for(var d=parseInt(c.integerPart,c.radix),l=0,h=0;h<c.fractionalPart.length;h++)l+=parseInt(c.fractionalPart[h],c.radix)/Math.pow(c.radix,h+1);var b=d+l;if(isNaN(b))throw new SyntaxError('String "'+c.input+'" is not a valid number');return b}(o);var s=0,A=t.match(/(0[box][0-9a-fA-F]*)i([0-9]*)/);A&&(s=Number(A[2]),t=A[1]);var u=Number(t);if(isNaN(u))throw new SyntaxError('String "'+t+'" is not a valid number');if(A){if(u>2**s-1)throw new SyntaxError('String "'.concat(t,'" is out of range'));u>=2**(s-1)&&(u-=2**s)}return u},BigNumber:function(t){return t.toNumber()},bigint:function(t){return Number(t)},Fraction:function(t){return t.valueOf()},Unit:e.referToSelf(t=>i=>{var n=i.clone();return n.value=t(i.value),n}),null:function(t){return 0},"Unit, string | Unit":function(t,i){return t.toNumber(i)},"Array | Matrix":e.referToSelf(t=>i=>ka(i,t))});return a.fromJSON=function(t){return parseFloat(t.value)},a}),RA=ie("bignumber",["typed","BigNumber"],r=>{var{typed:e,BigNumber:a}=r;return e("bignumber",{"":function(){return new a(0)},number:function(t){return new a(t+"")},string:function(t){var i=t.match(/(0[box][0-9a-fA-F]*)i([0-9]*)/);if(i){var n=i[2],o=a(i[1]),s=new a(2).pow(Number(n));if(o.gt(s.sub(1)))throw new SyntaxError('String "'.concat(t,'" is out of range'));var A=new a(2).pow(Number(n)-1);return o.gte(A)?o.sub(s):o}return new a(t)},BigNumber:function(t){return t},bigint:function(t){return new a(t.toString())},Unit:e.referToSelf(t=>i=>{var n=i.clone();return n.value=t(i.value),n}),Fraction:function(t){return new a(String(t.n)).div(String(t.d)).times(String(t.s))},null:function(t){return new a(0)},"Array | Matrix":e.referToSelf(t=>i=>ka(i,t))})}),NA=ie("fraction",["typed","Fraction"],r=>{var{typed:e,Fraction:a}=r;return e("fraction",{number:function(t){if(!isFinite(t)||isNaN(t))throw new Error(t+" cannot be represented as a fraction");return new a(t)},string:function(t){return new a(t)},"number, number":function(t,i){return new a(t,i)},"bigint, bigint":function(t,i){return new a(t,i)},null:function(t){return new a(0)},BigNumber:function(t){return new a(t.toString())},bigint:function(t){return new a(t.toString())},Fraction:function(t){return t},Unit:e.referToSelf(t=>i=>{var n=i.clone();return n.value=t(i.value),n}),Object:function(t){return new a(t)},"Array | Matrix":e.referToSelf(t=>i=>ka(i,t))})}),Dn="matrix",UA=ie(Dn,["typed","Matrix","DenseMatrix","SparseMatrix"],r=>{var{typed:e,Matrix:a,DenseMatrix:t,SparseMatrix:i}=r;return e(Dn,{"":function(){return n([])},string:function(o){return n([],o)},"string, string":function(o,s){return n([],o,s)},Array:function(o){return n(o)},Matrix:function(o){return n(o,o.storage())},"Array | Matrix, string":n,"Array | Matrix, string, string":n});function n(o,s,A){if(s==="dense"||s==="default"||s===void 0)return new t(o,A);if(s==="sparse")return new i(o,A);throw new TypeError("Unknown matrix type "+JSON.stringify(s)+".")}}),wn="unaryMinus",GA=ie(wn,["typed"],r=>{var{typed:e}=r;return e(wn,{number:Cn,"Complex | BigNumber | Fraction":a=>a.neg(),bigint:a=>-a,Unit:e.referToSelf(a=>t=>{var i=t.clone();return i.value=e.find(a,i.valueType())(t.value),i}),"Array | Matrix":e.referToSelf(a=>t=>ka(t,a,!0))})}),LA=ie("abs",["typed"],r=>{var{typed:e}=r;return e("abs",{number:fn,"Complex | BigNumber | Fraction | Unit":a=>a.abs(),bigint:a=>a<0n?-a:a,"Array | Matrix":e.referToSelf(a=>t=>ka(t,a,!0))})}),xn="addScalar",_A=ie(xn,["typed"],r=>{var{typed:e}=r;return e(xn,{"number, number":pn,"Complex, Complex":function(a,t){return a.add(t)},"BigNumber, BigNumber":function(a,t){return a.plus(t)},"bigint, bigint":function(a,t){return a+t},"Fraction, Fraction":function(a,t){return a.add(t)},"Unit, Unit":e.referToSelf(a=>(t,i)=>{if(t.value===null||t.value===void 0)throw new Error("Parameter x contains a unit with undefined value");if(i.value===null||i.value===void 0)throw new Error("Parameter y contains a unit with undefined value");if(!t.equalBase(i))throw new Error("Units do not match");var n=t.clone();return n.value=e.find(a,[n.valueType(),i.valueType()])(n.value,i.value),n.fixPrefix=!1,n})})}),vn="subtractScalar",PA=ie(vn,["typed"],r=>{var{typed:e}=r;return e(vn,{"number, number":mn,"Complex, Complex":function(a,t){return a.sub(t)},"BigNumber, BigNumber":function(a,t){return a.minus(t)},"bigint, bigint":function(a,t){return a-t},"Fraction, Fraction":function(a,t){return a.sub(t)},"Unit, Unit":e.referToSelf(a=>(t,i)=>{if(t.value===null||t.value===void 0)throw new Error("Parameter x contains a unit with undefined value");if(i.value===null||i.value===void 0)throw new Error("Parameter y contains a unit with undefined value");if(!t.equalBase(i))throw new Error("Units do not match");var n=t.clone();return n.value=e.find(a,[n.valueType(),i.valueType()])(n.value,i.value),n.fixPrefix=!1,n})})}),zA=ie("matAlgo11xS0s",["typed","equalScalar"],r=>{var{typed:e,equalScalar:a}=r;return function(t,i,n,o){var s=t._values,A=t._index,u=t._ptr,c=t._size,d=t._datatype;if(!s)throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");var l,h=c[0],b=c[1],g=a,p=0,E=n;typeof d=="string"&&(l=d,g=e.find(a,[l,l]),p=e.convert(0,l),i=e.convert(i,l),E=e.find(n,[l,l]));for(var m=[],C=[],I=[],w=0;w<b;w++){I[w]=C.length;for(var D=u[w],x=u[w+1],y=D;y<x;y++){var F=A[y],M=o?E(i,s[y]):E(s[y],i);g(M,p)||(C.push(F),m.push(M))}}return I[b]=C.length,t.createSparseMatrix({values:m,index:C,ptr:I,size:[h,b],datatype:l})}}),HA=ie("matAlgo14xDs",["typed"],r=>{var{typed:e}=r;return function(t,i,n,o){var s,A=t._data,u=t._size,c=t._datatype,d=n;typeof c=="string"&&(s=c,i=e.convert(i,s),d=e.find(n,[s,s]));var l=u.length>0?a(d,0,u,u[0],A,i,o):[];return t.createDenseMatrix({data:l,size:De(u),datatype:s})};function a(t,i,n,o,s,A,u){var c=[];if(i===n.length-1)for(var d=0;d<o;d++)c[d]=u?t(A,s[d]):t(s[d],A);else for(var l=0;l<o;l++)c[l]=a(t,i+1,n,n[i+1],s[l],A,u);return c}}),OA=ie("multiplyScalar",["typed"],r=>{var{typed:e}=r;return e("multiplyScalar",{"number, number":En,"Complex, Complex":function(a,t){return a.mul(t)},"BigNumber, BigNumber":function(a,t){return a.times(t)},"bigint, bigint":function(a,t){return a*t},"Fraction, Fraction":function(a,t){return a.mul(t)},"number | Fraction | BigNumber | Complex, Unit":(a,t)=>t.multiply(a),"Unit, number | Fraction | BigNumber | Complex | Unit":(a,t)=>a.multiply(t)})}),Fn="multiply",qA=ie(Fn,["typed","matrix","addScalar","multiplyScalar","equalScalar","dot"],r=>{var{typed:e,matrix:a,addScalar:t,multiplyScalar:i,equalScalar:n,dot:o}=r,s=zA({typed:e,equalScalar:n}),A=HA({typed:e});function u(h,b){switch(h.length){case 1:switch(b.length){case 1:if(h[0]!==b[0])throw new RangeError("Dimension mismatch in multiplication. Vectors must have the same length");break;case 2:if(h[0]!==b[0])throw new RangeError("Dimension mismatch in multiplication. Vector length ("+h[0]+") must match Matrix rows ("+b[0]+")");break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix B has "+b.length+" dimensions)")}break;case 2:switch(b.length){case 1:if(h[1]!==b[0])throw new RangeError("Dimension mismatch in multiplication. Matrix columns ("+h[1]+") must match Vector length ("+b[0]+")");break;case 2:if(h[1]!==b[0])throw new RangeError("Dimension mismatch in multiplication. Matrix A columns ("+h[1]+") must match Matrix B rows ("+b[0]+")");break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix B has "+b.length+" dimensions)")}break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix A has "+h.length+" dimensions)")}}function c(h,b){if(b.storage()!=="dense")throw new Error("Support for SparseMatrix not implemented");return function(g,p){var E,m=g._data,C=g._size,I=g._datatype||g.getDataType(),w=p._data,D=p._size,x=p._datatype||p.getDataType(),y=C[0],F=D[1],M=t,S=i;I&&x&&I===x&&typeof I=="string"&&I!=="mixed"&&(E=I,M=e.find(t,[E,E]),S=e.find(i,[E,E]));for(var z=[],O=0;O<F;O++){for(var K=S(m[0],w[0][O]),J=1;J<y;J++)K=M(K,S(m[J],w[J][O]));z[O]=K}return g.createDenseMatrix({data:z,size:[F],datatype:I===g._datatype&&x===p._datatype?E:void 0})}(h,b)}var d=e("_multiplyMatrixVector",{"DenseMatrix, any":function(h,b){var g,p=h._data,E=h._size,m=h._datatype||h.getDataType(),C=b._data,I=b._datatype||b.getDataType(),w=E[0],D=E[1],x=t,y=i;m&&I&&m===I&&typeof m=="string"&&m!=="mixed"&&(g=m,x=e.find(t,[g,g]),y=e.find(i,[g,g]));for(var F=[],M=0;M<w;M++){for(var S=p[M],z=y(S[0],C[0]),O=1;O<D;O++)z=x(z,y(S[O],C[O]));F[M]=z}return h.createDenseMatrix({data:F,size:[w],datatype:m===h._datatype&&I===b._datatype?g:void 0})},"SparseMatrix, any":function(h,b){var g=h._values,p=h._index,E=h._ptr,m=h._datatype||h._data===void 0?h._datatype:h.getDataType();if(!g)throw new Error("Cannot multiply Pattern only Matrix times Dense Matrix");var C,I=b._data,w=b._datatype||b.getDataType(),D=h._size[0],x=b._size[0],y=[],F=[],M=[],S=t,z=i,O=n,K=0;m&&w&&m===w&&typeof m=="string"&&m!=="mixed"&&(C=m,S=e.find(t,[C,C]),z=e.find(i,[C,C]),O=e.find(n,[C,C]),K=e.convert(0,C));var J=[],q=[];M[0]=0;for(var se=0;se<x;se++){var ue=I[se];if(!O(ue,K))for(var re=E[se],le=E[se+1],de=re;de<le;de++){var $=p[de];q[$]?J[$]=S(J[$],z(ue,g[de])):(q[$]=!0,F.push($),J[$]=z(ue,g[de]))}}for(var me=F.length,Y=0;Y<me;Y++){var ee=F[Y];y[Y]=J[ee]}return M[1]=F.length,h.createSparseMatrix({values:y,index:F,ptr:M,size:[D,1],datatype:m===h._datatype&&w===b._datatype?C:void 0})}}),l=e("_multiplyMatrixMatrix",{"DenseMatrix, DenseMatrix":function(h,b){var g,p=h._data,E=h._size,m=h._datatype||h.getDataType(),C=b._data,I=b._size,w=b._datatype||b.getDataType(),D=E[0],x=E[1],y=I[1],F=t,M=i;m&&w&&m===w&&typeof m=="string"&&m!=="mixed"&&m!=="mixed"&&(g=m,F=e.find(t,[g,g]),M=e.find(i,[g,g]));for(var S=[],z=0;z<D;z++){var O=p[z];S[z]=[];for(var K=0;K<y;K++){for(var J=M(O[0],C[0][K]),q=1;q<x;q++)J=F(J,M(O[q],C[q][K]));S[z][K]=J}}return h.createDenseMatrix({data:S,size:[D,y],datatype:m===h._datatype&&w===b._datatype?g:void 0})},"DenseMatrix, SparseMatrix":function(h,b){var g=h._data,p=h._size,E=h._datatype||h.getDataType(),m=b._values,C=b._index,I=b._ptr,w=b._size,D=b._datatype||b._data===void 0?b._datatype:b.getDataType();if(!m)throw new Error("Cannot multiply Dense Matrix times Pattern only Matrix");var x,y=p[0],F=w[1],M=t,S=i,z=n,O=0;E&&D&&E===D&&typeof E=="string"&&E!=="mixed"&&(x=E,M=e.find(t,[x,x]),S=e.find(i,[x,x]),z=e.find(n,[x,x]),O=e.convert(0,x));for(var K=[],J=[],q=[],se=b.createSparseMatrix({values:K,index:J,ptr:q,size:[y,F],datatype:E===h._datatype&&D===b._datatype?x:void 0}),ue=0;ue<F;ue++){q[ue]=J.length;var re=I[ue],le=I[ue+1];if(le>re)for(var de=0,$=0;$<y;$++){for(var me=$+1,Y=void 0,ee=re;ee<le;ee++){var Ae=C[ee];de!==me?(Y=S(g[$][Ae],m[ee]),de=me):Y=M(Y,S(g[$][Ae],m[ee]))}de!==me||z(Y,O)||(J.push($),K.push(Y))}}return q[F]=J.length,se},"SparseMatrix, DenseMatrix":function(h,b){var g=h._values,p=h._index,E=h._ptr,m=h._datatype||h._data===void 0?h._datatype:h.getDataType();if(!g)throw new Error("Cannot multiply Pattern only Matrix times Dense Matrix");var C,I=b._data,w=b._datatype||b.getDataType(),D=h._size[0],x=b._size[0],y=b._size[1],F=t,M=i,S=n,z=0;m&&w&&m===w&&typeof m=="string"&&m!=="mixed"&&(C=m,F=e.find(t,[C,C]),M=e.find(i,[C,C]),S=e.find(n,[C,C]),z=e.convert(0,C));for(var O=[],K=[],J=[],q=h.createSparseMatrix({values:O,index:K,ptr:J,size:[D,y],datatype:m===h._datatype&&w===b._datatype?C:void 0}),se=[],ue=[],re=0;re<y;re++){J[re]=K.length;for(var le=re+1,de=0;de<x;de++){var $=I[de][re];if(!S($,z))for(var me=E[de],Y=E[de+1],ee=me;ee<Y;ee++){var Ae=p[ee];ue[Ae]!==le?(ue[Ae]=le,K.push(Ae),se[Ae]=M($,g[ee])):se[Ae]=F(se[Ae],M($,g[ee]))}}for(var Ce=J[re],we=K.length,Ue=Ce;Ue<we;Ue++){var Je=K[Ue];O[Ue]=se[Je]}}return J[y]=K.length,q},"SparseMatrix, SparseMatrix":function(h,b){var g,p=h._values,E=h._index,m=h._ptr,C=h._datatype||h._data===void 0?h._datatype:h.getDataType(),I=b._values,w=b._index,D=b._ptr,x=b._datatype||b._data===void 0?b._datatype:b.getDataType(),y=h._size[0],F=b._size[1],M=p&&I,S=t,z=i;C&&x&&C===x&&typeof C=="string"&&C!=="mixed"&&(g=C,S=e.find(t,[g,g]),z=e.find(i,[g,g]));for(var O,K,J,q,se,ue,re,le,de=M?[]:void 0,$=[],me=[],Y=h.createSparseMatrix({values:de,index:$,ptr:me,size:[y,F],datatype:C===h._datatype&&x===b._datatype?g:void 0}),ee=M?[]:void 0,Ae=[],Ce=0;Ce<F;Ce++){me[Ce]=$.length;var we=Ce+1;for(se=D[Ce],ue=D[Ce+1],q=se;q<ue;q++)if(le=w[q],M)for(K=m[le],J=m[le+1],O=K;O<J;O++)Ae[re=E[O]]!==we?(Ae[re]=we,$.push(re),ee[re]=z(I[q],p[O])):ee[re]=S(ee[re],z(I[q],p[O]));else for(K=m[le],J=m[le+1],O=K;O<J;O++)Ae[re=E[O]]!==we&&(Ae[re]=we,$.push(re));if(M)for(var Ue=me[Ce],Je=$.length,Ke=Ue;Ke<Je;Ke++){var at=$[Ke];de[Ke]=ee[at]}}return me[F]=$.length,Y}});return e(Fn,i,{"Array, Array":e.referTo("Matrix, Matrix",h=>(b,g)=>{u(Le(b),Le(g));var p=h(a(b),a(g));return ye(p)?p.valueOf():p}),"Matrix, Matrix":function(h,b){var g=h.size(),p=b.size();return u(g,p),g.length===1?p.length===1?function(E,m,C){if(C===0)throw new Error("Cannot multiply two empty vectors");return o(E,m)}(h,b,g[0]):c(h,b):p.length===1?d(h,b):l(h,b)},"Matrix, Array":e.referTo("Matrix,Matrix",h=>(b,g)=>h(b,a(g))),"Array, Matrix":e.referToSelf(h=>(b,g)=>h(a(b,g.storage()),g)),"SparseMatrix, any":function(h,b){return s(h,b,i,!1)},"DenseMatrix, any":function(h,b){return A(h,b,i,!1)},"any, SparseMatrix":function(h,b){return s(b,h,i,!0)},"any, DenseMatrix":function(h,b){return A(b,h,i,!0)},"Array, any":function(h,b){return A(a(h),b,i,!1).valueOf()},"any, Array":function(h,b){return A(a(b),h,i,!0).valueOf()},"any, any":i,"any, any, ...any":e.referToSelf(h=>(b,g,p)=>{for(var E=h(b,g),m=0;m<p.length;m++)E=h(E,p[m]);return E})})}),Qn="conj",JA=ie(Qn,["typed"],r=>{var{typed:e}=r;return e(Qn,{"number | BigNumber | Fraction":a=>a,Complex:a=>a.conjugate(),"Array | Matrix":e.referToSelf(a=>t=>ka(t,a))})}),kn="identity",KA=ie(kn,["typed","config","matrix","BigNumber","DenseMatrix","SparseMatrix"],r=>{var{typed:e,config:a,matrix:t,BigNumber:i,DenseMatrix:n,SparseMatrix:o}=r;return e(kn,{"":function(){return a.matrix==="Matrix"?t([]):[]},string:function(u){return t(u)},"number | BigNumber":function(u){return A(u,u,a.matrix==="Matrix"?"dense":void 0)},"number | BigNumber, string":function(u,c){return A(u,u,c)},"number | BigNumber, number | BigNumber":function(u,c){return A(u,c,a.matrix==="Matrix"?"dense":void 0)},"number | BigNumber, number | BigNumber, string":function(u,c,d){return A(u,c,d)},Array:function(u){return s(u)},"Array, string":function(u,c){return s(u,c)},Matrix:function(u){return s(u.valueOf(),u.storage())},"Matrix, string":function(u,c){return s(u.valueOf(),c)}});function s(u,c){switch(u.length){case 0:return c?t(c):[];case 1:return A(u[0],u[0],c);case 2:return A(u[0],u[1],c);default:throw new Error("Vector containing two values expected")}}function A(u,c,d){var l=Fe(u)||Fe(c)?i:null;if(Fe(u)&&(u=u.toNumber()),Fe(c)&&(c=c.toNumber()),!Ee(u)||u<1)throw new Error("Parameters in function identity must be positive integers");if(!Ee(c)||c<1)throw new Error("Parameters in function identity must be positive integers");var h=l?new i(1):1,b=l?new l(0):0,g=[u,c];if(d){if(d==="sparse")return o.diagonal(g,h,0,b);if(d==="dense")return n.diagonal(g,h,0,b);throw new TypeError('Unknown matrix type "'.concat(d,'"'))}for(var p=pr([],g,b),E=u<c?u:c,m=0;m<E;m++)p[m][m]=h;return p}});function VA(){throw new Error('No "bignumber" implementation available')}function WA(){throw new Error('No "fraction" implementation available')}var jn,Mn="size",YA=ie(Mn,["typed","config","?matrix"],r=>{var{typed:e,config:a,matrix:t}=r;return e(Mn,{Matrix:function(i){return i.create(i.size(),"number")},Array:Le,string:function(i){return a.matrix==="Array"?[i.length]:t([i.length],"dense","number")},"number | Complex | BigNumber | Unit | boolean | null":function(i){return a.matrix==="Array"?[]:t?t([],"dense","number"):function(){throw new Error('No "matrix" implementation available')}()}})}),XA=ie("numeric",["number","?bignumber","?fraction"],r=>{var{number:e,bignumber:a,fraction:t}=r,i={string:!0,number:!0,BigNumber:!0,Fraction:!0},n={number:o=>e(o),BigNumber:a?o=>a(o):VA,bigint:o=>BigInt(o),Fraction:t?o=>t(o):WA};return function(o){var s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"number";if((arguments.length>2?arguments[2]:void 0)!==void 0)throw new SyntaxError("numeric() takes one or two arguments");var A=ma(o);if(!(A in i))throw new TypeError("Cannot convert "+o+' of type "'+A+'"; valid input types are '+Object.keys(i).join(", "));if(!(s in n))throw new TypeError("Cannot convert "+o+' to type "'+s+'"; valid output types are '+Object.keys(n).join(", "));return s===A?o:n[s](o)}}),Sn="divideScalar",ZA=ie(Sn,["typed","numeric"],r=>{var{typed:e,numeric:a}=r;return e(Sn,{"number, number":function(t,i){return t/i},"Complex, Complex":function(t,i){return t.div(i)},"BigNumber, BigNumber":function(t,i){return t.div(i)},"bigint, bigint":function(t,i){return t/i},"Fraction, Fraction":function(t,i){return t.div(i)},"Unit, number | Complex | Fraction | BigNumber | Unit":(t,i)=>t.divide(i),"number | Fraction | Complex | BigNumber, Unit":(t,i)=>i.divideInto(t)})}),$A=ie("pow",["typed","config","identity","multiply","matrix","inv","fraction","number","Complex"],r=>{var{typed:e,config:a,identity:t,multiply:i,matrix:n,inv:o,number:s,fraction:A,Complex:u}=r;return e("pow",{"number, number":c,"Complex, Complex":function(h,b){return h.pow(b)},"BigNumber, BigNumber":function(h,b){return b.isInteger()||h>=0||a.predictable?h.pow(b):new u(h.toNumber(),0).pow(b.toNumber(),0)},"bigint, bigint":(h,b)=>h**b,"Fraction, Fraction":function(h,b){var g=h.pow(b);if(g!=null)return g;if(a.predictable)throw new Error("Result of pow is non-rational and cannot be expressed as a fraction");return c(h.valueOf(),b.valueOf())},"Array, number":d,"Array, BigNumber":function(h,b){return d(h,b.toNumber())},"Matrix, number":l,"Matrix, BigNumber":function(h,b){return l(h,b.toNumber())},"Unit, number | BigNumber":function(h,b){return h.pow(b)}});function c(h,b){if(a.predictable&&!Ee(b)&&h<0)try{var g=A(b),p=s(g);if((b===p||Math.abs((b-p)/b)<1e-14)&&g.d%2n===1n)return(g.n%2n===0n?1:-1)*Math.pow(-h,b)}catch{}return a.predictable&&(h<-1&&b===1/0||h>-1&&h<0&&b===-1/0)?NaN:Ee(b)||h>=0||a.predictable?In(h,b):h*h<1&&b===1/0||h*h>1&&b===-1/0?0:new u(h,0).pow(b,0)}function d(h,b){if(!Ee(b))throw new TypeError("For A^b, b must be an integer (value is "+b+")");var g=Le(h);if(g.length!==2)throw new Error("For A^b, A must be 2 dimensional (A has "+g.length+" dimensions)");if(g[0]!==g[1])throw new Error("For A^b, A must be square (size is "+g[0]+"x"+g[1]+")");if(b<0)try{return d(o(h),-b)}catch(m){throw m.message==="Cannot calculate inverse, determinant is zero"?new TypeError("For A^b, when A is not invertible, b must be a positive integer (value is "+b+")"):m}for(var p=t(g[0]).valueOf(),E=h;b>=1;)1&~b||(p=i(E,p)),b>>=1,E=i(E,E);return p}function l(h,b){return n(d(h.valueOf(),b))}}),ec=ie("dot",["typed","addScalar","multiplyScalar","conj","size"],r=>{var{typed:e,addScalar:a,multiplyScalar:t,conj:i,size:n}=r;return e("dot",{"Array | DenseMatrix, Array | DenseMatrix":function(A,u){var c=o(A,u),d=ye(A)?A._data:A,l=ye(A)?A._datatype||A.getDataType():void 0,h=ye(u)?u._data:u,b=ye(u)?u._datatype||u.getDataType():void 0,g=s(A).length===2,p=s(u).length===2,E=a,m=t;if(l&&b&&l===b&&typeof l=="string"&&l!=="mixed"){var C=l;E=e.find(a,[C,C]),m=e.find(t,[C,C])}if(!g&&!p){for(var I=m(i(d[0]),h[0]),w=1;w<c;w++)I=E(I,m(i(d[w]),h[w]));return I}if(!g&&p){for(var D=m(i(d[0]),h[0][0]),x=1;x<c;x++)D=E(D,m(i(d[x]),h[x][0]));return D}if(g&&!p){for(var y=m(i(d[0][0]),h[0]),F=1;F<c;F++)y=E(y,m(i(d[F][0]),h[F]));return y}if(g&&p){for(var M=m(i(d[0][0]),h[0][0]),S=1;S<c;S++)M=E(M,m(i(d[S][0]),h[S][0]));return M}},"SparseMatrix, SparseMatrix":function(A,u){o(A,u);for(var c=A._index,d=A._values,l=u._index,h=u._values,b=0,g=a,p=t,E=0,m=0;E<c.length&&m<l.length;){var C=c[E],I=l[m];C<I?E++:C>I?m++:C===I&&(b=g(b,p(d[E],h[m])),E++,m++)}return b}});function o(A,u){var c,d,l=s(A),h=s(u);if(l.length===1)c=l[0];else{if(l.length!==2||l[1]!==1)throw new RangeError("Expected a column vector, instead got a matrix of size ("+l.join(", ")+")");c=l[0]}if(h.length===1)d=h[0];else{if(h.length!==2||h[1]!==1)throw new RangeError("Expected a column vector, instead got a matrix of size ("+h.join(", ")+")");d=h[0]}if(c!==d)throw new RangeError("Vectors must have equal length ("+c+" != "+d+")");if(c===0)throw new RangeError("Cannot calculate the dot product of empty vectors");return c}function s(A){return ye(A)?A.size():n(A)}}),ac=ie("det",["typed","matrix","subtractScalar","multiply","divideScalar","isZero","unaryMinus"],r=>{var{typed:e,matrix:a,subtractScalar:t,multiply:i,divideScalar:n,isZero:o,unaryMinus:s}=r;return e("det",{any:function(A){return De(A)},"Array | Matrix":function(A){var u;switch((u=ye(A)?A.size():Array.isArray(A)?(A=a(A)).size():[]).length){case 0:return De(A);case 1:if(u[0]===1)return De(A.valueOf()[0]);if(u[0]===0)return 1;throw new RangeError("Matrix must be square (size: "+Qe(u)+")");case 2:var c=u[0],d=u[1];if(c===d)return function(l,h){if(h===1)return De(l[0][0]);if(h===2)return t(i(l[0][0],l[1][1]),i(l[1][0],l[0][1]));for(var b=!1,g=new Array(h).fill(0).map((F,M)=>M),p=0;p<h;p++){var E=g[p];if(o(l[E][p])){var m=void 0;for(m=p+1;m<h;m++)if(!o(l[g[m]][p])){E=g[m],g[m]=g[p],g[p]=E,b=!b;break}if(m===h)return l[E][p]}for(var C=l[E][p],I=p===0?1:l[g[p-1]][p-1],w=p+1;w<h;w++)for(var D=g[w],x=p+1;x<h;x++)l[D][x]=n(t(i(l[D][x],C),i(l[D][p],l[E][x])),I)}var y=l[g[h-1]][h-1];return b?s(y):y}(A.clone().valueOf(),c);if(d===0)return 1;throw new RangeError("Matrix must be square (size: "+Qe(u)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+Qe(u)+")")}}})}),tc=ie("inv",["typed","matrix","divideScalar","addScalar","multiply","unaryMinus","det","identity","abs"],r=>{var{typed:e,matrix:a,divideScalar:t,addScalar:i,multiply:n,unaryMinus:o,det:s,identity:A,abs:u}=r;return e("inv",{"Array | Matrix":function(d){var l=ye(d)?d.size():Le(d);switch(l.length){case 1:if(l[0]===1)return ye(d)?a([t(1,d.valueOf()[0])]):[t(1,d[0])];throw new RangeError("Matrix must be square (size: "+Qe(l)+")");case 2:var h=l[0],b=l[1];if(h===b)return ye(d)?a(c(d.valueOf(),h,b),d.storage()):c(d,h,b);throw new RangeError("Matrix must be square (size: "+Qe(l)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+Qe(l)+")")}},any:function(d){return t(1,d)}});function c(d,l,h){var b,g,p,E,m;if(l===1){if((E=d[0][0])===0)throw Error("Cannot calculate inverse, determinant is zero");return[[t(1,E)]]}if(l===2){var C=s(d);if(C===0)throw Error("Cannot calculate inverse, determinant is zero");return[[t(d[1][1],C),t(o(d[0][1]),C)],[t(o(d[1][0]),C),t(d[0][0],C)]]}var I=d.concat();for(b=0;b<l;b++)I[b]=I[b].concat();for(var w=A(l).valueOf(),D=0;D<h;D++){var x=u(I[D][D]),y=D;for(b=D+1;b<l;)u(I[b][D])>x&&(x=u(I[b][D]),y=b),b++;if(x===0)throw Error("Cannot calculate inverse, determinant is zero");(b=y)!==D&&(m=I[D],I[D]=I[b],I[b]=m,m=w[D],w[D]=w[b],w[b]=m);var F=I[D],M=w[D];for(b=0;b<l;b++){var S=I[b],z=w[b];if(b!==D){if(S[D]!==0){for(p=t(o(S[D]),F[D]),g=D;g<h;g++)S[g]=i(S[g],n(p,F[g]));for(g=0;g<h;g++)z[g]=i(z[g],n(p,M[g]))}}else{for(p=F[D],g=D;g<h;g++)S[g]=t(S[g],p);for(g=0;g<h;g++)z[g]=t(z[g],p)}}}return w}}),Tn="gamma",rc=ie(Tn,["typed","config","multiplyScalar","pow","BigNumber","Complex"],r=>{var{typed:e,config:a,multiplyScalar:t,pow:i,BigNumber:n,Complex:o}=r;return e(Tn,{number:vt,Complex:function A(u){if(u.im===0)return vt(u.re);if(u.re<.5){var c=new o(1-u.re,-u.im),d=new o(Math.PI*u.re,Math.PI*u.im);return new o(Math.PI).div(d.sin()).div(A(c))}u=new o(u.re-1,u.im);for(var l=new o(Oa[0],0),h=1;h<Oa.length;++h){var b=new o(Oa[h],0);l=l.add(b.div(u.add(h)))}var g=new o(u.re+Bn+.5,u.im),p=Math.sqrt(2*Math.PI),E=g.pow(u.add(.5)),m=g.neg().exp();return l.mul(p).mul(E).mul(m)},BigNumber:function(A){if(A.isInteger())return A.isNegative()||A.isZero()?new n(1/0):s(A.minus(1));if(!A.isFinite())return new n(A.isNegative()?NaN:1/0);throw new Error("Integer BigNumber expected")}});function s(A){if(A<8)return new n([1,1,2,6,24,120,720,5040][A]);var u=a.precision+(0|Math.log(A.toNumber())),c=n.clone({precision:u});if(A%2==1)return A.times(s(new n(A-1)));for(var d=A,l=new c(A),h=A.toNumber();d>2;)h+=d-=2,l=l.times(h);return new n(l.toPrecision(n.precision))}}),Qt=CA({config:va}),Br=BA({}),Rn=DA({}),yr=wA({}),Dr=QA({Matrix:yr}),Be=Qs({BigNumber:Qt,Complex:Br,DenseMatrix:Dr,Fraction:Rn}),ic=LA({typed:Be}),wr=_A({typed:Be}),nc=JA({typed:Be}),xr=MA({config:va,typed:Be}),oc=kA({equalScalar:xr,typed:Be}),vr=OA({typed:Be}),Nn=TA({typed:Be}),Un=SA({Matrix:yr,equalScalar:xr,typed:Be}),sc=PA({typed:Be}),Ac=RA({BigNumber:Qt,typed:Be}),qa=UA({DenseMatrix:Dr,Matrix:yr,SparseMatrix:Un,typed:Be}),Gn=NA({Fraction:Rn,typed:Be}),Ln=KA({BigNumber:Qt,DenseMatrix:Dr,SparseMatrix:Un,config:va,matrix:qa,typed:Be}),cc=XA({bignumber:Ac,fraction:Gn,number:Nn}),uc=YA({matrix:qa,config:va,typed:Be}),_n=GA({typed:Be}),Pn=ZA({numeric:cc,typed:Be}),Fr=qA({addScalar:wr,dot:ec({addScalar:wr,conj:nc,multiplyScalar:vr,size:uc,typed:Be}),equalScalar:xr,matrix:qa,multiplyScalar:vr,typed:Be}),zn=rc({BigNumber:Qt,Complex:Br,config:va,multiplyScalar:vr,pow:$A({Complex:Br,config:va,fraction:Gn,identity:Ln,inv:tc({abs:ic,addScalar:wr,det:ac({divideScalar:Pn,isZero:oc,matrix:qa,multiply:Fr,subtractScalar:sc,typed:Be,unaryMinus:_n}),divideScalar:Pn,identity:Ln,matrix:qa,multiply:Fr,typed:Be,unaryMinus:_n}),matrix:qa,multiply:Fr,number:Nn,typed:Be}),typed:Be});class dc{constructor(e){Sa(this,"_toElementFn");if(e){const{toElementFn:a}=e;if(typeof a=="function")this._toElementFn=a;else if(a)throw new TypeError("toElementFn must be a function type")}}get toElementFn(){return this._toElementFn}*[Symbol.iterator](...e){yield*this._getIterator(...e)}*values(){for(const e of this)yield e}every(e,a){let t=0;for(const i of this)if(!e.call(a,i,t++,this))return!1;return!0}some(e,a){let t=0;for(const i of this)if(e.call(a,i,t++,this))return!0;return!1}forEach(e,a){let t=0;for(const i of this)e.call(a,i,t++,this)}find(e,a){let t=0;for(const i of this)if(e.call(a,i,t++,this))return i}has(e){for(const a of this)if(a===e)return!0;return!1}reduce(e,a){let t=a??0,i=0;for(const n of this)t=e(t,n,i++,this);return t}toArray(){return[...this]}toVisual(){return[...this]}print(){console.log(this.toVisual())}}/**
|
|
21
|
+
*/var Ui,ha,Ua=9e15,Ea=1e9,nr="0123456789abcdef",ft="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",pt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",or={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Ua,maxE:Ua,crypto:!1},Y=!0,mt="[DecimalError] ",Ca=mt+"Invalid argument: ",Li=mt+"Precision limit exceeded",Gi=mt+"crypto unavailable",_i="[object Decimal]",Se=Math.floor,ke=Math.pow,qs=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Ks=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Os=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,zi=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,$e=1e7,Js=ft.length-1,sr=pt.length-1,S={toStringTag:_i};function Re(r){var e,a,t,i=r.length-1,n="",o=r[0];if(i>0){for(n+=o,e=1;e<i;e++)(a=7-(t=r[e]+"").length)&&(n+=Ia(a)),n+=t;(a=7-(t=(o=r[e])+"").length)&&(n+=Ia(a))}else if(o===0)return"0";for(;o%10==0;)o/=10;return n+o}function ze(r,e,a){if(r!==~~r||r<e||r>a)throw Error(Ca+r)}function Ya(r,e,a,t){var i,n,o,s;for(n=r[0];n>=10;n/=10)--e;return--e<0?(e+=7,i=0):(i=Math.ceil((e+1)/7),e%=7),n=ke(10,7-e),s=r[i]%n|0,t==null?e<3?(e==0?s=s/100|0:e==1&&(s=s/10|0),o=a<4&&s==99999||a>3&&s==49999||s==5e4||s==0):o=(a<4&&s+1==n||a>3&&s+1==n/2)&&(r[i+1]/n/100|0)==ke(10,e-2)-1||(s==n/2||s==0)&&!(r[i+1]/n/100|0):e<4?(e==0?s=s/1e3|0:e==1?s=s/100|0:e==2&&(s=s/10|0),o=(t||a<4)&&s==9999||!t&&a>3&&s==4999):o=((t||a<4)&&s+1==n||!t&&a>3&&s+1==n/2)&&(r[i+1]/n/1e3|0)==ke(10,e-3)-1,o}function Et(r,e,a){for(var t,i,n=[0],o=0,s=r.length;o<s;){for(i=n.length;i--;)n[i]*=e;for(n[0]+=nr.indexOf(r.charAt(o++)),t=0;t<n.length;t++)n[t]>a-1&&(n[t+1]===void 0&&(n[t+1]=0),n[t+1]+=n[t]/a|0,n[t]%=a)}return n.reverse()}S.absoluteValue=S.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),H(r)},S.ceil=function(){return H(new this.constructor(this),this.e+1,2)},S.clampedTo=S.clamp=function(r,e){var a=this,t=a.constructor;if(r=new t(r),e=new t(e),!r.s||!e.s)return new t(NaN);if(r.gt(e))throw Error(Ca+e);return a.cmp(r)<0?r:a.cmp(e)>0?e:new t(a)},S.comparedTo=S.cmp=function(r){var e,a,t,i,n=this,o=n.d,s=(r=new n.constructor(r)).d,c=n.s,u=r.s;if(!o||!s)return c&&u?c!==u?c:o===s?0:!o^c<0?1:-1:NaN;if(!o[0]||!s[0])return o[0]?c:s[0]?-u:0;if(c!==u)return c;if(n.e!==r.e)return n.e>r.e^c<0?1:-1;for(e=0,a=(t=o.length)<(i=s.length)?t:i;e<a;++e)if(o[e]!==s[e])return o[e]>s[e]^c<0?1:-1;return t===i?0:t>i^c<0?1:-1},S.cosine=S.cos=function(){var r,e,a=this,t=a.constructor;return a.d?a.d[0]?(r=t.precision,e=t.rounding,t.precision=r+Math.max(a.e,a.sd())+7,t.rounding=1,a=function(i,n){var o,s,c;if(n.isZero())return n;s=n.d.length,s<32?c=(1/Dt(4,o=Math.ceil(s/3))).toString():(o=16,c="2.3283064365386962890625e-10"),i.precision+=o,n=La(i,1,n.times(c),new i(1));for(var u=o;u--;){var A=n.times(n);n=A.times(A).minus(A).times(8).plus(1)}return i.precision-=o,n}(t,Vi(t,a)),t.precision=r,t.rounding=e,H(ha==2||ha==3?a.neg():a,r,e,!0)):new t(1):new t(NaN)},S.cubeRoot=S.cbrt=function(){var r,e,a,t,i,n,o,s,c,u,A=this,d=A.constructor;if(!A.isFinite()||A.isZero())return new d(A);for(Y=!1,(n=A.s*ke(A.s*A,1/3))&&Math.abs(n)!=1/0?t=new d(n.toString()):(a=Re(A.d),(n=((r=A.e)-a.length+1)%3)&&(a+=n==1||n==-2?"0":"00"),n=ke(a,1/3),r=Se((r+1)/3)-(r%3==(r<0?-1:2)),(t=new d(a=n==1/0?"5e"+r:(a=n.toExponential()).slice(0,a.indexOf("e")+1)+r)).s=A.s),o=(r=d.precision)+3;;)if(u=(c=(s=t).times(s).times(s)).plus(A),t=ce(u.plus(A).times(s),u.plus(c),o+2,1),Re(s.d).slice(0,o)===(a=Re(t.d)).slice(0,o)){if((a=a.slice(o-3,o+1))!="9999"&&(i||a!="4999")){+a&&(+a.slice(1)||a.charAt(0)!="5")||(H(t,r+1,1),e=!t.times(t).times(t).eq(A));break}if(!i&&(H(s,r+1,0),s.times(s).times(s).eq(A))){t=s;break}o+=4,i=1}return Y=!0,H(t,r,d.rounding,e)},S.decimalPlaces=S.dp=function(){var r,e=this.d,a=NaN;if(e){if(a=7*((r=e.length-1)-Se(this.e/7)),r=e[r])for(;r%10==0;r/=10)a--;a<0&&(a=0)}return a},S.dividedBy=S.div=function(r){return ce(this,new this.constructor(r))},S.dividedToIntegerBy=S.divToInt=function(r){var e=this.constructor;return H(ce(this,new e(r),0,1,1),e.precision,e.rounding)},S.equals=S.eq=function(r){return this.cmp(r)===0},S.floor=function(){return H(new this.constructor(this),this.e+1,3)},S.greaterThan=S.gt=function(r){return this.cmp(r)>0},S.greaterThanOrEqualTo=S.gte=function(r){var e=this.cmp(r);return e==1||e===0},S.hyperbolicCosine=S.cosh=function(){var r,e,a,t,i,n=this,o=n.constructor,s=new o(1);if(!n.isFinite())return new o(n.s?1/0:NaN);if(n.isZero())return s;a=o.precision,t=o.rounding,o.precision=a+Math.max(n.e,n.sd())+4,o.rounding=1,(i=n.d.length)<32?e=(1/Dt(4,r=Math.ceil(i/3))).toString():(r=16,e="2.3283064365386962890625e-10"),n=La(o,1,n.times(e),new o(1),!0);for(var c,u=r,A=new o(8);u--;)c=n.times(n),n=s.minus(c.times(A.minus(c.times(A))));return H(n,o.precision=a,o.rounding=t,!0)},S.hyperbolicSine=S.sinh=function(){var r,e,a,t,i=this,n=i.constructor;if(!i.isFinite()||i.isZero())return new n(i);if(e=n.precision,a=n.rounding,n.precision=e+Math.max(i.e,i.sd())+4,n.rounding=1,(t=i.d.length)<3)i=La(n,2,i,i,!0);else{r=(r=1.4*Math.sqrt(t))>16?16:0|r,i=La(n,2,i=i.times(1/Dt(5,r)),i,!0);for(var o,s=new n(5),c=new n(16),u=new n(20);r--;)o=i.times(i),i=i.times(s.plus(o.times(c.times(o).plus(u))))}return n.precision=e,n.rounding=a,H(i,e,a,!0)},S.hyperbolicTangent=S.tanh=function(){var r,e,a=this,t=a.constructor;return a.isFinite()?a.isZero()?new t(a):(r=t.precision,e=t.rounding,t.precision=r+7,t.rounding=1,ce(a.sinh(),a.cosh(),t.precision=r,t.rounding=e)):new t(a.s)},S.inverseCosine=S.acos=function(){var r=this,e=r.constructor,a=r.abs().cmp(1),t=e.precision,i=e.rounding;return a!==-1?a===0?r.isNeg()?oa(e,t,i):new e(0):new e(NaN):r.isZero()?oa(e,t+4,i).times(.5):(e.precision=t+6,e.rounding=1,r=new e(1).minus(r).div(r.plus(1)).sqrt().atan(),e.precision=t,e.rounding=i,r.times(2))},S.inverseHyperbolicCosine=S.acosh=function(){var r,e,a=this,t=a.constructor;return a.lte(1)?new t(a.eq(1)?0:NaN):a.isFinite()?(r=t.precision,e=t.rounding,t.precision=r+Math.max(Math.abs(a.e),a.sd())+4,t.rounding=1,Y=!1,a=a.times(a).minus(1).sqrt().plus(a),Y=!0,t.precision=r,t.rounding=e,a.ln()):new t(a)},S.inverseHyperbolicSine=S.asinh=function(){var r,e,a=this,t=a.constructor;return!a.isFinite()||a.isZero()?new t(a):(r=t.precision,e=t.rounding,t.precision=r+2*Math.max(Math.abs(a.e),a.sd())+6,t.rounding=1,Y=!1,a=a.times(a).plus(1).sqrt().plus(a),Y=!0,t.precision=r,t.rounding=e,a.ln())},S.inverseHyperbolicTangent=S.atanh=function(){var r,e,a,t,i=this,n=i.constructor;return i.isFinite()?i.e>=0?new n(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=n.precision,e=n.rounding,t=i.sd(),Math.max(t,r)<2*-i.e-1?H(new n(i),r,e,!0):(n.precision=a=t-i.e,i=ce(i.plus(1),new n(1).minus(i),a+r,1),n.precision=r+4,n.rounding=1,i=i.ln(),n.precision=r,n.rounding=e,i.times(.5))):new n(NaN)},S.inverseSine=S.asin=function(){var r,e,a,t,i=this,n=i.constructor;return i.isZero()?new n(i):(e=i.abs().cmp(1),a=n.precision,t=n.rounding,e!==-1?e===0?((r=oa(n,a+4,t).times(.5)).s=i.s,r):new n(NaN):(n.precision=a+6,n.rounding=1,i=i.div(new n(1).minus(i.times(i)).sqrt().plus(1)).atan(),n.precision=a,n.rounding=t,i.times(2)))},S.inverseTangent=S.atan=function(){var r,e,a,t,i,n,o,s,c,u=this,A=u.constructor,d=A.precision,b=A.rounding;if(u.isFinite()){if(u.isZero())return new A(u);if(u.abs().eq(1)&&d+4<=sr)return(o=oa(A,d+4,b).times(.25)).s=u.s,o}else{if(!u.s)return new A(NaN);if(d+4<=sr)return(o=oa(A,d+4,b).times(.5)).s=u.s,o}for(A.precision=s=d+10,A.rounding=1,r=a=Math.min(28,s/7+2|0);r;--r)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(Y=!1,e=Math.ceil(s/7),t=1,c=u.times(u),o=new A(u),i=u;r!==-1;)if(i=i.times(c),n=o.minus(i.div(t+=2)),i=i.times(c),(o=n.plus(i.div(t+=2))).d[e]!==void 0)for(r=e;o.d[r]===n.d[r]&&r--;);return a&&(o=o.times(2<<a-1)),Y=!0,H(o,A.precision=d,A.rounding=b,!0)},S.isFinite=function(){return!!this.d},S.isInteger=S.isInt=function(){return!!this.d&&Se(this.e/7)>this.d.length-2},S.isNaN=function(){return!this.s},S.isNegative=S.isNeg=function(){return this.s<0},S.isPositive=S.isPos=function(){return this.s>0},S.isZero=function(){return!!this.d&&this.d[0]===0},S.lessThan=S.lt=function(r){return this.cmp(r)<0},S.lessThanOrEqualTo=S.lte=function(r){return this.cmp(r)<1},S.logarithm=S.log=function(r){var e,a,t,i,n,o,s,c,u=this,A=u.constructor,d=A.precision,b=A.rounding;if(r==null)r=new A(10),e=!0;else{if(a=(r=new A(r)).d,r.s<0||!a||!a[0]||r.eq(1))return new A(NaN);e=r.eq(10)}if(a=u.d,u.s<0||!a||!a[0]||u.eq(1))return new A(a&&!a[0]?-1/0:u.s!=1?NaN:a?0:1/0);if(e)if(a.length>1)n=!0;else{for(i=a[0];i%10==0;)i/=10;n=i!==1}if(Y=!1,o=Ba(u,s=d+5),t=e?It(A,s+10):Ba(r,s),Ya((c=ce(o,t,s,1)).d,i=d,b))do if(o=Ba(u,s+=10),t=e?It(A,s+10):Ba(r,s),c=ce(o,t,s,1),!n){+Re(c.d).slice(i+1,i+15)+1==1e14&&(c=H(c,d+1,0));break}while(Ya(c.d,i+=10,b));return Y=!0,H(c,d,b)},S.minus=S.sub=function(r){var e,a,t,i,n,o,s,c,u,A,d,b,h=this,l=h.constructor;if(r=new l(r),!h.d||!r.d)return h.s&&r.s?h.d?r.s=-r.s:r=new l(r.d||h.s!==r.s?h:NaN):r=new l(NaN),r;if(h.s!=r.s)return r.s=-r.s,h.plus(r);if(u=h.d,b=r.d,s=l.precision,c=l.rounding,!u[0]||!b[0]){if(b[0])r.s=-r.s;else{if(!u[0])return new l(c===3?-0:0);r=new l(h)}return Y?H(r,s,c):r}if(a=Se(r.e/7),A=Se(h.e/7),u=u.slice(),n=A-a){for((d=n<0)?(e=u,n=-n,o=b.length):(e=b,a=A,o=u.length),n>(t=Math.max(Math.ceil(s/7),o)+2)&&(n=t,e.length=1),e.reverse(),t=n;t--;)e.push(0);e.reverse()}else{for((d=(t=u.length)<(o=b.length))&&(o=t),t=0;t<o;t++)if(u[t]!=b[t]){d=u[t]<b[t];break}n=0}for(d&&(e=u,u=b,b=e,r.s=-r.s),o=u.length,t=b.length-o;t>0;--t)u[o++]=0;for(t=b.length;t>n;){if(u[--t]<b[t]){for(i=t;i&&u[--i]===0;)u[i]=$e-1;--u[i],u[t]+=$e}u[t]-=b[t]}for(;u[--o]===0;)u.pop();for(;u[0]===0;u.shift())--a;return u[0]?(r.d=u,r.e=Ct(u,a),Y?H(r,s,c):r):new l(c===3?-0:0)},S.modulo=S.mod=function(r){var e,a=this,t=a.constructor;return r=new t(r),!a.d||!r.s||r.d&&!r.d[0]?new t(NaN):!r.d||a.d&&!a.d[0]?H(new t(a),t.precision,t.rounding):(Y=!1,t.modulo==9?(e=ce(a,r.abs(),0,3,1)).s*=r.s:e=ce(a,r,0,t.modulo,1),e=e.times(r),Y=!0,a.minus(e))},S.naturalExponential=S.exp=function(){return Ar(this)},S.naturalLogarithm=S.ln=function(){return Ba(this)},S.negated=S.neg=function(){var r=new this.constructor(this);return r.s=-r.s,H(r)},S.plus=S.add=function(r){var e,a,t,i,n,o,s,c,u,A,d=this,b=d.constructor;if(r=new b(r),!d.d||!r.d)return d.s&&r.s?d.d||(r=new b(r.d||d.s===r.s?d:NaN)):r=new b(NaN),r;if(d.s!=r.s)return r.s=-r.s,d.minus(r);if(u=d.d,A=r.d,s=b.precision,c=b.rounding,!u[0]||!A[0])return A[0]||(r=new b(d)),Y?H(r,s,c):r;if(n=Se(d.e/7),t=Se(r.e/7),u=u.slice(),i=n-t){for(i<0?(a=u,i=-i,o=A.length):(a=A,t=n,o=u.length),i>(o=(n=Math.ceil(s/7))>o?n+1:o+1)&&(i=o,a.length=1),a.reverse();i--;)a.push(0);a.reverse()}for((o=u.length)-(i=A.length)<0&&(i=o,a=A,A=u,u=a),e=0;i;)e=(u[--i]=u[i]+A[i]+e)/$e|0,u[i]%=$e;for(e&&(u.unshift(e),++t),o=u.length;u[--o]==0;)u.pop();return r.d=u,r.e=Ct(u,t),Y?H(r,s,c):r},S.precision=S.sd=function(r){var e,a=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(Ca+r);return a.d?(e=Pi(a.d),r&&a.e+1>e&&(e=a.e+1)):e=NaN,e},S.round=function(){var r=this,e=r.constructor;return H(new e(r),r.e+1,e.rounding)},S.sine=S.sin=function(){var r,e,a=this,t=a.constructor;return a.isFinite()?a.isZero()?new t(a):(r=t.precision,e=t.rounding,t.precision=r+Math.max(a.e,a.sd())+7,t.rounding=1,a=function(i,n){var o,s=n.d.length;if(s<3)return n.isZero()?n:La(i,2,n,n);o=(o=1.4*Math.sqrt(s))>16?16:0|o,n=n.times(1/Dt(5,o)),n=La(i,2,n,n);for(var c,u=new i(5),A=new i(16),d=new i(20);o--;)c=n.times(n),n=n.times(u.plus(c.times(A.times(c).minus(d))));return n}(t,Vi(t,a)),t.precision=r,t.rounding=e,H(ha>2?a.neg():a,r,e,!0)):new t(NaN)},S.squareRoot=S.sqrt=function(){var r,e,a,t,i,n,o=this,s=o.d,c=o.e,u=o.s,A=o.constructor;if(u!==1||!s||!s[0])return new A(!u||u<0&&(!s||s[0])?NaN:s?o:1/0);for(Y=!1,(u=Math.sqrt(+o))==0||u==1/0?(((e=Re(s)).length+c)%2==0&&(e+="0"),u=Math.sqrt(e),c=Se((c+1)/2)-(c<0||c%2),t=new A(e=u==1/0?"5e"+c:(e=u.toExponential()).slice(0,e.indexOf("e")+1)+c)):t=new A(u.toString()),a=(c=A.precision)+3;;)if(t=(n=t).plus(ce(o,n,a+2,1)).times(.5),Re(n.d).slice(0,a)===(e=Re(t.d)).slice(0,a)){if((e=e.slice(a-3,a+1))!="9999"&&(i||e!="4999")){+e&&(+e.slice(1)||e.charAt(0)!="5")||(H(t,c+1,1),r=!t.times(t).eq(o));break}if(!i&&(H(n,c+1,0),n.times(n).eq(o))){t=n;break}a+=4,i=1}return Y=!0,H(t,c,A.rounding,r)},S.tangent=S.tan=function(){var r,e,a=this,t=a.constructor;return a.isFinite()?a.isZero()?new t(a):(r=t.precision,e=t.rounding,t.precision=r+10,t.rounding=1,(a=a.sin()).s=1,a=ce(a,new t(1).minus(a.times(a)).sqrt(),r+10,0),t.precision=r,t.rounding=e,H(ha==2||ha==4?a.neg():a,r,e,!0)):new t(NaN)},S.times=S.mul=function(r){var e,a,t,i,n,o,s,c,u,A=this,d=A.constructor,b=A.d,h=(r=new d(r)).d;if(r.s*=A.s,!(b&&b[0]&&h&&h[0]))return new d(!r.s||b&&!b[0]&&!h||h&&!h[0]&&!b?NaN:b&&h?0*r.s:r.s/0);for(a=Se(A.e/7)+Se(r.e/7),(c=b.length)<(u=h.length)&&(n=b,b=h,h=n,o=c,c=u,u=o),n=[],t=o=c+u;t--;)n.push(0);for(t=u;--t>=0;){for(e=0,i=c+t;i>t;)s=n[i]+h[t]*b[i-t-1]+e,n[i--]=s%$e|0,e=s/$e|0;n[i]=(n[i]+e)%$e|0}for(;!n[--o];)n.pop();return e?++a:n.shift(),r.d=n,r.e=Ct(n,a),Y?H(r,d.precision,d.rounding):r},S.toBinary=function(r,e){return cr(this,2,r,e)},S.toDecimalPlaces=S.toDP=function(r,e){var a=this,t=a.constructor;return a=new t(a),r===void 0?a:(ze(r,0,Ea),e===void 0?e=t.rounding:ze(e,0,8),H(a,r+a.e+1,e))},S.toExponential=function(r,e){var a,t=this,i=t.constructor;return r===void 0?a=na(t,!0):(ze(r,0,Ea),e===void 0?e=i.rounding:ze(e,0,8),a=na(t=H(new i(t),r+1,e),!0,r+1)),t.isNeg()&&!t.isZero()?"-"+a:a},S.toFixed=function(r,e){var a,t,i=this,n=i.constructor;return r===void 0?a=na(i):(ze(r,0,Ea),e===void 0?e=n.rounding:ze(e,0,8),a=na(t=H(new n(i),r+i.e+1,e),!1,r+t.e+1)),i.isNeg()&&!i.isZero()?"-"+a:a},S.toFraction=function(r){var e,a,t,i,n,o,s,c,u,A,d,b,h=this,l=h.d,g=h.constructor;if(!l)return new g(h);if(u=a=new g(1),t=c=new g(0),o=(n=(e=new g(t)).e=Pi(l)-h.e-1)%7,e.d[0]=ke(10,o<0?7+o:o),r==null)r=n>0?e:u;else{if(!(s=new g(r)).isInt()||s.lt(u))throw Error(Ca+s);r=s.gt(e)?n>0?e:u:s}for(Y=!1,s=new g(Re(l)),A=g.precision,g.precision=n=7*l.length*2;d=ce(s,e,0,1,1),(i=a.plus(d.times(t))).cmp(r)!=1;)a=t,t=i,i=u,u=c.plus(d.times(i)),c=i,i=e,e=s.minus(d.times(i)),s=i;return i=ce(r.minus(a),t,0,1,1),c=c.plus(i.times(u)),a=a.plus(i.times(t)),c.s=u.s=h.s,b=ce(u,t,n,1).minus(h).abs().cmp(ce(c,a,n,1).minus(h).abs())<1?[u,t]:[c,a],g.precision=A,Y=!0,b},S.toHexadecimal=S.toHex=function(r,e){return cr(this,16,r,e)},S.toNearest=function(r,e){var a=this,t=a.constructor;if(a=new t(a),r==null){if(!a.d)return a;r=new t(1),e=t.rounding}else{if(r=new t(r),e===void 0?e=t.rounding:ze(e,0,8),!a.d)return r.s?a:r;if(!r.d)return r.s&&(r.s=a.s),r}return r.d[0]?(Y=!1,a=ce(a,r,0,e,1).times(r),Y=!0,H(a)):(r.s=a.s,a=r),a},S.toNumber=function(){return+this},S.toOctal=function(r,e){return cr(this,8,r,e)},S.toPower=S.pow=function(r){var e,a,t,i,n,o,s=this,c=s.constructor,u=+(r=new c(r));if(!(s.d&&r.d&&s.d[0]&&r.d[0]))return new c(ke(+s,u));if((s=new c(s)).eq(1))return s;if(t=c.precision,n=c.rounding,r.eq(1))return H(s,t,n);if((e=Se(r.e/7))>=r.d.length-1&&(a=u<0?-u:u)<=9007199254740991)return i=qi(c,s,a,t),r.s<0?new c(1).div(i):H(i,t,n);if((o=s.s)<0){if(e<r.d.length-1)return new c(NaN);if(1&r.d[e]||(o=1),s.e==0&&s.d[0]==1&&s.d.length==1)return s.s=o,s}return(e=(a=ke(+s,u))!=0&&isFinite(a)?new c(a+"").e:Se(u*(Math.log("0."+Re(s.d))/Math.LN10+s.e+1)))>c.maxE+1||e<c.minE-1?new c(e>0?o/0:0):(Y=!1,c.rounding=s.s=1,a=Math.min(12,(e+"").length),(i=Ar(r.times(Ba(s,t+a)),t)).d&&Ya((i=H(i,t+5,1)).d,t,n)&&(e=t+10,+Re((i=H(Ar(r.times(Ba(s,e+a)),e),e+5,1)).d).slice(t+1,t+15)+1==1e14&&(i=H(i,t+1,0))),i.s=o,Y=!0,c.rounding=n,H(i,t,n))},S.toPrecision=function(r,e){var a,t=this,i=t.constructor;return r===void 0?a=na(t,t.e<=i.toExpNeg||t.e>=i.toExpPos):(ze(r,1,Ea),e===void 0?e=i.rounding:ze(e,0,8),a=na(t=H(new i(t),r,e),r<=t.e||t.e<=i.toExpNeg,r)),t.isNeg()&&!t.isZero()?"-"+a:a},S.toSignificantDigits=S.toSD=function(r,e){var a=this.constructor;return r===void 0?(r=a.precision,e=a.rounding):(ze(r,1,Ea),e===void 0?e=a.rounding:ze(e,0,8)),H(new a(this),r,e)},S.toString=function(){var r=this,e=r.constructor,a=na(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+a:a},S.truncated=S.trunc=function(){return H(new this.constructor(this),this.e+1,1)},S.valueOf=S.toJSON=function(){var r=this,e=r.constructor,a=na(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+a:a};var ce=function(){function r(t,i,n){var o,s=0,c=t.length;for(t=t.slice();c--;)o=t[c]*i+s,t[c]=o%n|0,s=o/n|0;return s&&t.unshift(s),t}function e(t,i,n,o){var s,c;if(n!=o)c=n>o?1:-1;else for(s=c=0;s<n;s++)if(t[s]!=i[s]){c=t[s]>i[s]?1:-1;break}return c}function a(t,i,n,o){for(var s=0;n--;)t[n]-=s,s=t[n]<i[n]?1:0,t[n]=s*o+t[n]-i[n];for(;!t[0]&&t.length>1;)t.shift()}return function(t,i,n,o,s,c){var u,A,d,b,h,l,g,m,E,p,C,I,x,y,w,D,F,j,M,_,q=t.constructor,V=t.s==i.s?1:-1,J=t.d,O=i.d;if(!(J&&J[0]&&O&&O[0]))return new q(t.s&&i.s&&(J?!O||J[0]!=O[0]:O)?J&&J[0]==0||!O?0*V:V/0:NaN);for(c?(h=1,A=t.e-i.e):(c=$e,h=7,A=Se(t.e/h)-Se(i.e/h)),M=O.length,F=J.length,p=(E=new q(V)).d=[],d=0;O[d]==(J[d]||0);d++);if(O[d]>(J[d]||0)&&A--,n==null?(y=n=q.precision,o=q.rounding):y=s?n+(t.e-i.e)+1:n,y<0)p.push(1),l=!0;else{if(y=y/h+2|0,d=0,M==1){for(b=0,O=O[0],y++;(d<F||b)&&y--;d++)w=b*c+(J[d]||0),p[d]=w/O|0,b=w%O|0;l=b||d<F}else{for((b=c/(O[0]+1)|0)>1&&(O=r(O,b,c),J=r(J,b,c),M=O.length,F=J.length),D=M,I=(C=J.slice(0,M)).length;I<M;)C[I++]=0;(_=O.slice()).unshift(0),j=O[0],O[1]>=c/2&&++j;do b=0,(u=e(O,C,M,I))<0?(x=C[0],M!=I&&(x=x*c+(C[1]||0)),(b=x/j|0)>1?(b>=c&&(b=c-1),(u=e(g=r(O,b,c),C,m=g.length,I=C.length))==1&&(b--,a(g,M<m?_:O,m,c))):(b==0&&(u=b=1),g=O.slice()),(m=g.length)<I&&g.unshift(0),a(C,g,I,c),u==-1&&(u=e(O,C,M,I=C.length))<1&&(b++,a(C,M<I?_:O,I,c)),I=C.length):u===0&&(b++,C=[0]),p[d++]=b,u&&C[0]?C[I++]=J[D]||0:(C=[J[D]],I=1);while((D++<F||C[0]!==void 0)&&y--);l=C[0]!==void 0}p[0]||p.shift()}if(h==1)E.e=A,Ui=l;else{for(d=1,b=p[0];b>=10;b/=10)d++;E.e=d+A*h-1,H(E,s?n+E.e+1:n,o,l)}return E}}();function H(r,e,a,t){var i,n,o,s,c,u,A,d,b,h=r.constructor;e:if(e!=null){if(!(d=r.d))return r;for(i=1,s=d[0];s>=10;s/=10)i++;if((n=e-i)<0)n+=7,o=e,c=(A=d[b=0])/ke(10,i-o-1)%10|0;else if((b=Math.ceil((n+1)/7))>=(s=d.length)){if(!t)break e;for(;s++<=b;)d.push(0);A=c=0,i=1,o=(n%=7)-7+1}else{for(A=s=d[b],i=1;s>=10;s/=10)i++;c=(o=(n%=7)-7+i)<0?0:A/ke(10,i-o-1)%10|0}if(t=t||e<0||d[b+1]!==void 0||(o<0?A:A%ke(10,i-o-1)),u=a<4?(c||t)&&(a==0||a==(r.s<0?3:2)):c>5||c==5&&(a==4||t||a==6&&(n>0?o>0?A/ke(10,i-o):0:d[b-1])%10&1||a==(r.s<0?8:7)),e<1||!d[0])return d.length=0,u?(e-=r.e+1,d[0]=ke(10,(7-e%7)%7),r.e=-e||0):d[0]=r.e=0,r;if(n==0?(d.length=b,s=1,b--):(d.length=b+1,s=ke(10,7-n),d[b]=o>0?(A/ke(10,i-o)%ke(10,o)|0)*s:0),u)for(;;){if(b==0){for(n=1,o=d[0];o>=10;o/=10)n++;for(o=d[0]+=s,s=1;o>=10;o/=10)s++;n!=s&&(r.e++,d[0]==$e&&(d[0]=1));break}if(d[b]+=s,d[b]!=$e)break;d[b--]=0,s=1}for(n=d.length;d[--n]===0;)d.pop()}return Y&&(r.e>h.maxE?(r.d=null,r.e=NaN):r.e<h.minE&&(r.e=0,r.d=[0])),r}function na(r,e,a){if(!r.isFinite())return Ji(r);var t,i=r.e,n=Re(r.d),o=n.length;return e?(a&&(t=a-o)>0?n=n.charAt(0)+"."+n.slice(1)+Ia(t):o>1&&(n=n.charAt(0)+"."+n.slice(1)),n=n+(r.e<0?"e":"e+")+r.e):i<0?(n="0."+Ia(-i-1)+n,a&&(t=a-o)>0&&(n+=Ia(t))):i>=o?(n+=Ia(i+1-o),a&&(t=a-i-1)>0&&(n=n+"."+Ia(t))):((t=i+1)<o&&(n=n.slice(0,t)+"."+n.slice(t)),a&&(t=a-o)>0&&(i+1===o&&(n+="."),n+=Ia(t))),n}function Ct(r,e){var a=r[0];for(e*=7;a>=10;a/=10)e++;return e}function It(r,e,a){if(e>Js)throw Y=!0,a&&(r.precision=a),Error(Li);return H(new r(ft),e,1,!0)}function oa(r,e,a){if(e>sr)throw Error(Li);return H(new r(pt),e,a,!0)}function Pi(r){var e=r.length-1,a=7*e+1;if(e=r[e]){for(;e%10==0;e/=10)a--;for(e=r[0];e>=10;e/=10)a++}return a}function Ia(r){for(var e="";r--;)e+="0";return e}function qi(r,e,a,t){var i,n=new r(1),o=Math.ceil(t/7+4);for(Y=!1;;){if(a%2&&Hi((n=n.times(e)).d,o)&&(i=!0),(a=Se(a/2))===0){a=n.d.length-1,i&&n.d[a]===0&&++n.d[a];break}Hi((e=e.times(e)).d,o)}return Y=!0,n}function Ki(r){return 1&r.d[r.d.length-1]}function Oi(r,e,a){for(var t,i,n=new r(e[0]),o=0;++o<e.length;){if(!(i=new r(e[o])).s){n=i;break}((t=n.cmp(i))===a||t===0&&n.s===a)&&(n=i)}return n}function Ar(r,e){var a,t,i,n,o,s,c,u=0,A=0,d=0,b=r.constructor,h=b.rounding,l=b.precision;if(!r.d||!r.d[0]||r.e>17)return new b(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:NaN);for(e==null?(Y=!1,c=l):c=e,s=new b(.03125);r.e>-2;)r=r.times(s),d+=5;for(c+=t=Math.log(ke(2,d))/Math.LN10*2+5|0,a=n=o=new b(1),b.precision=c;;){if(n=H(n.times(r),c,1),a=a.times(++A),Re((s=o.plus(ce(n,a,c,1))).d).slice(0,c)===Re(o.d).slice(0,c)){for(i=d;i--;)o=H(o.times(o),c,1);if(e!=null)return b.precision=l,o;if(!(u<3&&Ya(o.d,c-t,h,u)))return H(o,b.precision=l,h,Y=!0);b.precision=c+=10,a=n=s=new b(1),A=0,u++}o=s}}function Ba(r,e){var a,t,i,n,o,s,c,u,A,d,b,h=1,l=r,g=l.d,m=l.constructor,E=m.rounding,p=m.precision;if(l.s<0||!g||!g[0]||!l.e&&g[0]==1&&g.length==1)return new m(g&&!g[0]?-1/0:l.s!=1?NaN:g?0:l);if(e==null?(Y=!1,A=p):A=e,m.precision=A+=10,t=(a=Re(g)).charAt(0),!(Math.abs(n=l.e)<15e14))return u=It(m,A+2,p).times(n+""),l=Ba(new m(t+"."+a.slice(1)),A-10).plus(u),m.precision=p,e==null?H(l,p,E,Y=!0):l;for(;t<7&&t!=1||t==1&&a.charAt(1)>3;)t=(a=Re((l=l.times(r)).d)).charAt(0),h++;for(n=l.e,t>1?(l=new m("0."+a),n++):l=new m(t+"."+a.slice(1)),d=l,c=o=l=ce(l.minus(1),l.plus(1),A,1),b=H(l.times(l),A,1),i=3;;){if(o=H(o.times(b),A,1),Re((u=c.plus(ce(o,new m(i),A,1))).d).slice(0,A)===Re(c.d).slice(0,A)){if(c=c.times(2),n!==0&&(c=c.plus(It(m,A+2,p).times(n+""))),c=ce(c,new m(h),A,1),e!=null)return m.precision=p,c;if(!Ya(c.d,A-10,E,s))return H(c,m.precision=p,E,Y=!0);m.precision=A+=10,u=o=l=ce(d.minus(1),d.plus(1),A,1),b=H(l.times(l),A,1),i=s=1}c=u,i+=2}}function Ji(r){return String(r.s*r.s/0)}function Bt(r,e){var a,t,i;for((a=e.indexOf("."))>-1&&(e=e.replace(".","")),(t=e.search(/e/i))>0?(a<0&&(a=t),a+=+e.slice(t+1),e=e.substring(0,t)):a<0&&(a=e.length),t=0;e.charCodeAt(t)===48;t++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(t,i)){if(i-=t,r.e=a=a-t-1,r.d=[],t=(a+1)%7,a<0&&(t+=7),t<i){for(t&&r.d.push(+e.slice(0,t)),i-=7;t<i;)r.d.push(+e.slice(t,t+=7));t=7-(e=e.slice(t)).length}else t-=i;for(;t--;)e+="0";r.d.push(+e),Y&&(r.e>r.constructor.maxE?(r.d=null,r.e=NaN):r.e<r.constructor.minE&&(r.e=0,r.d=[0]))}else r.e=0,r.d=[0];return r}function Vs(r,e){var a,t,i,n,o,s,c,u,A;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),zi.test(e))return Bt(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(Ks.test(e))a=16,e=e.toLowerCase();else if(qs.test(e))a=2;else{if(!Os.test(e))throw Error(Ca+e);a=8}for((n=e.search(/p/i))>0?(c=+e.slice(n+1),e=e.substring(2,n)):e=e.slice(2),o=(n=e.indexOf("."))>=0,t=r.constructor,o&&(n=(s=(e=e.replace(".","")).length)-n,i=qi(t,new t(a),n,2*n)),n=A=(u=Et(e,a,$e)).length-1;u[n]===0;--n)u.pop();return n<0?new t(0*r.s):(r.e=Ct(u,A),r.d=u,Y=!1,o&&(r=ce(r,i,4*s)),c&&(r=r.times(Math.abs(c)<54?ke(2,c):Ga.pow(2,c))),Y=!0,r)}function La(r,e,a,t,i){var n,o,s,c,u=r.precision,A=Math.ceil(u/7);for(Y=!1,c=a.times(a),s=new r(t);;){if(o=ce(s.times(c),new r(e++*e++),u,1),s=i?t.plus(o):t.minus(o),t=ce(o.times(c),new r(e++*e++),u,1),(o=s.plus(t)).d[A]!==void 0){for(n=A;o.d[n]===s.d[n]&&n--;);if(n==-1)break}n=s,s=t,t=o,o=n}return Y=!0,o.d.length=A+1,o}function Dt(r,e){for(var a=r;--e;)a*=r;return a}function Vi(r,e){var a,t=e.s<0,i=oa(r,r.precision,1),n=i.times(.5);if((e=e.abs()).lte(n))return ha=t?4:1,e;if((a=e.divToInt(i)).isZero())ha=t?3:2;else{if((e=e.minus(a.times(i))).lte(n))return ha=Ki(a)?t?2:3:t?4:1,e;ha=Ki(a)?t?1:4:t?3:2}return e.minus(i).abs()}function cr(r,e,a,t){var i,n,o,s,c,u,A,d,b,h=r.constructor,l=a!==void 0;if(l?(ze(a,1,Ea),t===void 0?t=h.rounding:ze(t,0,8)):(a=h.precision,t=h.rounding),r.isFinite()){for(l?(i=2,e==16?a=4*a-3:e==8&&(a=3*a-2)):i=e,(o=(A=na(r)).indexOf("."))>=0&&(A=A.replace(".",""),(b=new h(1)).e=A.length-o,b.d=Et(na(b),10,i),b.e=b.d.length),n=c=(d=Et(A,10,i)).length;d[--c]==0;)d.pop();if(d[0]){if(o<0?n--:((r=new h(r)).d=d,r.e=n,d=(r=ce(r,b,a,t,0,i)).d,n=r.e,u=Ui),o=d[a],s=i/2,u=u||d[a+1]!==void 0,u=t<4?(o!==void 0||u)&&(t===0||t===(r.s<0?3:2)):o>s||o===s&&(t===4||u||t===6&&1&d[a-1]||t===(r.s<0?8:7)),d.length=a,u)for(;++d[--a]>i-1;)d[a]=0,a||(++n,d.unshift(1));for(c=d.length;!d[c-1];--c);for(o=0,A="";o<c;o++)A+=nr.charAt(d[o]);if(l){if(c>1)if(e==16||e==8){for(o=e==16?4:3,--c;c%o;c++)A+="0";for(c=(d=Et(A,i,e)).length;!d[c-1];--c);for(o=1,A="1.";o<c;o++)A+=nr.charAt(d[o])}else A=A.charAt(0)+"."+A.slice(1);A=A+(n<0?"p":"p+")+n}else if(n<0){for(;++n;)A="0"+A;A="0."+A}else if(++n>c)for(n-=c;n--;)A+="0";else n<c&&(A=A.slice(0,n)+"."+A.slice(n))}else A=l?"0p+0":"0";A=(e==16?"0x":e==2?"0b":e==8?"0o":"")+A}else A=Ji(r);return r.s<0?"-"+A:A}function Hi(r,e){if(r.length>e)return r.length=e,!0}function Hs(r){return new this(r).abs()}function Ws(r){return new this(r).acos()}function Xs(r){return new this(r).acosh()}function Ys(r,e){return new this(r).plus(e)}function Zs(r){return new this(r).asin()}function $s(r){return new this(r).asinh()}function eA(r){return new this(r).atan()}function aA(r){return new this(r).atanh()}function tA(r,e){r=new this(r),e=new this(e);var a,t=this.precision,i=this.rounding,n=t+4;return r.s&&e.s?r.d||e.d?!e.d||r.isZero()?(a=e.s<0?oa(this,t,i):new this(0)).s=r.s:!r.d||e.isZero()?(a=oa(this,n,1).times(.5)).s=r.s:e.s<0?(this.precision=n,this.rounding=1,a=this.atan(ce(r,e,n,1)),e=oa(this,n,1),this.precision=t,this.rounding=i,a=r.s<0?a.minus(e):a.plus(e)):a=this.atan(ce(r,e,n,1)):(a=oa(this,n,1).times(e.s>0?.25:.75)).s=r.s:a=new this(NaN),a}function rA(r){return new this(r).cbrt()}function iA(r){return H(r=new this(r),r.e+1,2)}function nA(r,e,a){return new this(r).clamp(e,a)}function oA(r){if(!r||typeof r!="object")throw Error(mt+"Object expected");var e,a,t,i=r.defaults===!0,n=["precision",1,Ea,"rounding",0,8,"toExpNeg",-Ua,0,"toExpPos",0,Ua,"maxE",0,Ua,"minE",-Ua,0,"modulo",0,9];for(e=0;e<n.length;e+=3)if(a=n[e],i&&(this[a]=or[a]),(t=r[a])!==void 0){if(!(Se(t)===t&&t>=n[e+1]&&t<=n[e+2]))throw Error(Ca+a+": "+t);this[a]=t}if(a="crypto",i&&(this[a]=or[a]),(t=r[a])!==void 0){if(t!==!0&&t!==!1&&t!==0&&t!==1)throw Error(Ca+a+": "+t);if(t){if(typeof crypto>"u"||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw Error(Gi);this[a]=!0}else this[a]=!1}return this}function sA(r){return new this(r).cos()}function AA(r){return new this(r).cosh()}function cA(r,e){return new this(r).div(e)}function uA(r){return new this(r).exp()}function dA(r){return H(r=new this(r),r.e+1,3)}function hA(){var r,e,a=new this(0);for(Y=!1,r=0;r<arguments.length;)if((e=new this(arguments[r++])).d)a.d&&(a=a.plus(e.times(e)));else{if(e.s)return Y=!0,new this(1/0);a=e}return Y=!0,a.sqrt()}function Wi(r){return r instanceof Ga||r&&r.toStringTag===_i||!1}function lA(r){return new this(r).ln()}function bA(r,e){return new this(r).log(e)}function gA(r){return new this(r).log(2)}function fA(r){return new this(r).log(10)}function pA(){return Oi(this,arguments,-1)}function mA(){return Oi(this,arguments,1)}function EA(r,e){return new this(r).mod(e)}function CA(r,e){return new this(r).mul(e)}function IA(r,e){return new this(r).pow(e)}function BA(r){var e,a,t,i,n=0,o=new this(1),s=[];if(r===void 0?r=this.precision:ze(r,1,Ea),t=Math.ceil(r/7),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(t));n<t;)(i=e[n])>=429e7?e[n]=crypto.getRandomValues(new Uint32Array(1))[0]:s[n++]=i%1e7;else{if(!crypto.randomBytes)throw Error(Gi);for(e=crypto.randomBytes(t*=4);n<t;)(i=e[n]+(e[n+1]<<8)+(e[n+2]<<16)+((127&e[n+3])<<24))>=214e7?crypto.randomBytes(4).copy(e,n):(s.push(i%1e7),n+=4);n=t/4}else for(;n<t;)s[n++]=1e7*Math.random()|0;for(r%=7,(t=s[--n])&&r&&(i=ke(10,7-r),s[n]=(t/i|0)*i);s[n]===0;n--)s.pop();if(n<0)a=0,s=[0];else{for(a=-1;s[0]===0;a-=7)s.shift();for(t=1,i=s[0];i>=10;i/=10)t++;t<7&&(a-=7-t)}return o.e=a,o.d=s,o}function DA(r){return H(r=new this(r),r.e+1,this.rounding)}function yA(r){return(r=new this(r)).d?r.d[0]?r.s:0*r.s:r.s||NaN}function wA(r){return new this(r).sin()}function xA(r){return new this(r).sinh()}function vA(r){return new this(r).sqrt()}function FA(r,e){return new this(r).sub(e)}function QA(){var r=0,e=arguments,a=new this(e[r]);for(Y=!1;a.s&&++r<e.length;)a=a.plus(e[r]);return Y=!0,H(a,this.precision,this.rounding)}function kA(r){return new this(r).tan()}function jA(r){return new this(r).tanh()}function MA(r){return H(r=new this(r),r.e+1,1)}S[Symbol.for("nodejs.util.inspect.custom")]=S.toString,S[Symbol.toStringTag]="Decimal";var Ga=S.constructor=function r(e){var a,t,i;function n(o){var s,c,u,A=this;if(!(A instanceof n))return new n(o);if(A.constructor=n,Wi(o))return A.s=o.s,void(Y?!o.d||o.e>n.maxE?(A.e=NaN,A.d=null):o.e<n.minE?(A.e=0,A.d=[0]):(A.e=o.e,A.d=o.d.slice()):(A.e=o.e,A.d=o.d?o.d.slice():o.d));if((u=typeof o)=="number"){if(o===0)return A.s=1/o<0?-1:1,A.e=0,void(A.d=[0]);if(o<0?(o=-o,A.s=-1):A.s=1,o===~~o&&o<1e7){for(s=0,c=o;c>=10;c/=10)s++;return void(Y?s>n.maxE?(A.e=NaN,A.d=null):s<n.minE?(A.e=0,A.d=[0]):(A.e=s,A.d=[o]):(A.e=s,A.d=[o]))}return 0*o!=0?(o||(A.s=NaN),A.e=NaN,void(A.d=null)):Bt(A,o.toString())}if(u==="string")return(c=o.charCodeAt(0))===45?(o=o.slice(1),A.s=-1):(c===43&&(o=o.slice(1)),A.s=1),zi.test(o)?Bt(A,o):Vs(A,o);if(u==="bigint")return o<0?(o=-o,A.s=-1):A.s=1,Bt(A,o.toString());throw Error(Ca+o)}if(n.prototype=S,n.ROUND_UP=0,n.ROUND_DOWN=1,n.ROUND_CEIL=2,n.ROUND_FLOOR=3,n.ROUND_HALF_UP=4,n.ROUND_HALF_DOWN=5,n.ROUND_HALF_EVEN=6,n.ROUND_HALF_CEIL=7,n.ROUND_HALF_FLOOR=8,n.EUCLID=9,n.config=n.set=oA,n.clone=r,n.isDecimal=Wi,n.abs=Hs,n.acos=Ws,n.acosh=Xs,n.add=Ys,n.asin=Zs,n.asinh=$s,n.atan=eA,n.atanh=aA,n.atan2=tA,n.cbrt=rA,n.ceil=iA,n.clamp=nA,n.cos=sA,n.cosh=AA,n.div=cA,n.exp=uA,n.floor=dA,n.hypot=hA,n.ln=lA,n.log=bA,n.log10=fA,n.log2=gA,n.max=pA,n.min=mA,n.mod=EA,n.mul=CA,n.pow=IA,n.random=BA,n.round=DA,n.sign=yA,n.sin=wA,n.sinh=xA,n.sqrt=vA,n.sub=FA,n.sum=QA,n.tan=kA,n.tanh=jA,n.trunc=MA,e===void 0&&(e={}),e&&e.defaults!==!0)for(i=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],a=0;a<i.length;)e.hasOwnProperty(t=i[a++])||(e[t]=this[t]);return n.config(e),n}(or);ft=new Ga(ft),pt=new Ga(pt);var RA=ie("BigNumber",["?on","config"],r=>{var{on:e,config:a}=r,t=Ga.clone({precision:a.precision,modulo:Ga.EUCLID});return t.prototype=Object.create(t.prototype),t.prototype.type="BigNumber",t.prototype.isBigNumber=!0,t.prototype.toJSON=function(){return{mathjs:"BigNumber",value:this.toString()}},t.fromJSON=function(i){return new t(i.value)},e&&e("config",function(i,n){i.precision!==n.precision&&t.config({precision:i.precision})}),t},{isClass:!0});const Te=Math.cosh||function(r){return Math.abs(r)<1e-9?1-r:.5*(Math.exp(r)+Math.exp(-r))},Xe=Math.sinh||function(r){return Math.abs(r)<1e-9?r:.5*(Math.exp(r)-Math.exp(-r))},ur=function(r,e){return(r=Math.abs(r))<(e=Math.abs(e))&&([r,e]=[e,r]),r<1e8?Math.sqrt(r*r+e*e):(e/=r,r*Math.sqrt(1+e*e))},_a=function(){throw SyntaxError("Invalid Param")};function dr(r,e){const a=Math.abs(r),t=Math.abs(e);return r===0?Math.log(t):e===0?Math.log(a):a<3e3&&t<3e3?.5*Math.log(r*r+e*e):(r*=.5,e*=.5,.5*Math.log(r*r+e*e)+Math.LN2)}const SA={re:0,im:0},Fa=function(r,e){const a=SA;if(r==null)a.re=a.im=0;else if(e!==void 0)a.re=r,a.im=e;else switch(typeof r){case"object":if("im"in r&&"re"in r)a.re=r.re,a.im=r.im;else if("abs"in r&&"arg"in r){if(!isFinite(r.abs)&&isFinite(r.arg))return k.INFINITY;a.re=r.abs*Math.cos(r.arg),a.im=r.abs*Math.sin(r.arg)}else if("r"in r&&"phi"in r){if(!isFinite(r.r)&&isFinite(r.phi))return k.INFINITY;a.re=r.r*Math.cos(r.phi),a.im=r.r*Math.sin(r.phi)}else r.length===2?(a.re=r[0],a.im=r[1]):_a();break;case"string":a.im=a.re=0;const t=r.replace(/_/g,"").match(/\d+\.?\d*e[+-]?\d+|\d+\.?\d*|\.\d+|./g);let i=1,n=0;t===null&&_a();for(let o=0;o<t.length;o++){const s=t[o];s===" "||s===" "||s===`
|
|
22
|
+
`||(s==="+"?i++:s==="-"?n++:s==="i"||s==="I"?(i+n===0&&_a(),t[o+1]===" "||isNaN(t[o+1])?a.im+=parseFloat((n%2?"-":"")+"1"):(a.im+=parseFloat((n%2?"-":"")+t[o+1]),o++),i=n=0):((i+n===0||isNaN(s))&&_a(),t[o+1]==="i"||t[o+1]==="I"?(a.im+=parseFloat((n%2?"-":"")+s),o++):a.re+=parseFloat((n%2?"-":"")+s),i=n=0))}i+n>0&&_a();break;case"number":a.im=0,a.re=r;break;default:_a()}return isNaN(a.re)||isNaN(a.im),a};function k(r,e){if(!(this instanceof k))return new k(r,e);const a=Fa(r,e);this.re=a.re,this.im=a.im}k.prototype={re:0,im:0,sign:function(){const r=ur(this.re,this.im);return new k(this.re/r,this.im/r)},add:function(r,e){const a=Fa(r,e),t=this.isInfinite(),i=!(isFinite(a.re)&&isFinite(a.im));return t||i?t&&i?k.NAN:k.INFINITY:new k(this.re+a.re,this.im+a.im)},sub:function(r,e){const a=Fa(r,e),t=this.isInfinite(),i=!(isFinite(a.re)&&isFinite(a.im));return t||i?t&&i?k.NAN:k.INFINITY:new k(this.re-a.re,this.im-a.im)},mul:function(r,e){const a=Fa(r,e),t=this.isInfinite(),i=!(isFinite(a.re)&&isFinite(a.im)),n=this.re===0&&this.im===0,o=a.re===0&&a.im===0;return t&&o||i&&n?k.NAN:t||i?k.INFINITY:a.im===0&&this.im===0?new k(this.re*a.re,0):new k(this.re*a.re-this.im*a.im,this.re*a.im+this.im*a.re)},div:function(r,e){const a=Fa(r,e),t=this.isInfinite(),i=!(isFinite(a.re)&&isFinite(a.im)),n=this.re===0&&this.im===0,o=a.re===0&&a.im===0;if(n&&o||t&&i)return k.NAN;if(o||t)return k.INFINITY;if(n||i)return k.ZERO;if(a.im===0)return new k(this.re/a.re,this.im/a.re);if(Math.abs(a.re)<Math.abs(a.im)){const s=a.re/a.im,c=a.re*s+a.im;return new k((this.re*s+this.im)/c,(this.im*s-this.re)/c)}{const s=a.im/a.re,c=a.im*s+a.re;return new k((this.re+this.im*s)/c,(this.im-this.re*s)/c)}},pow:function(r,e){const a=Fa(r,e),t=this.re===0&&this.im===0;if(a.re===0&&a.im===0)return k.ONE;if(a.im===0){if(this.im===0&&this.re>0)return new k(Math.pow(this.re,a.re),0);if(this.re===0)switch((a.re%4+4)%4){case 0:return new k(Math.pow(this.im,a.re),0);case 1:return new k(0,Math.pow(this.im,a.re));case 2:return new k(-Math.pow(this.im,a.re),0);case 3:return new k(0,-Math.pow(this.im,a.re))}}if(t&&a.re>0)return k.ZERO;const i=Math.atan2(this.im,this.re),n=dr(this.re,this.im);let o=Math.exp(a.re*n-a.im*i),s=a.im*n+a.re*i;return new k(o*Math.cos(s),o*Math.sin(s))},sqrt:function(){const r=this.re,e=this.im;if(e===0)return r>=0?new k(Math.sqrt(r),0):new k(0,Math.sqrt(-r));const a=ur(r,e);let t=Math.sqrt(.5*(a+Math.abs(r))),i=Math.abs(e)/(2*t);return r>=0?new k(t,e<0?-i:i):new k(i,e<0?-t:t)},exp:function(){const r=Math.exp(this.re);return this.im===0?new k(r,0):new k(r*Math.cos(this.im),r*Math.sin(this.im))},expm1:function(){const r=this.re,e=this.im;return new k(Math.expm1(r)*Math.cos(e)+function(a){const t=Math.PI/4;if(-t>a||a>t)return Math.cos(a)-1;const i=a*a;return i*(i*(i*(i*(i*(i*(i*(i/20922789888e3-1/87178291200)+1/479001600)-1/3628800)+1/40320)-1/720)+1/24)-.5)}(e),Math.exp(r)*Math.sin(e))},log:function(){const r=this.re,e=this.im;return e===0&&r>0?new k(Math.log(r),0):new k(dr(r,e),Math.atan2(e,r))},abs:function(){return ur(this.re,this.im)},arg:function(){return Math.atan2(this.im,this.re)},sin:function(){const r=this.re,e=this.im;return new k(Math.sin(r)*Te(e),Math.cos(r)*Xe(e))},cos:function(){const r=this.re,e=this.im;return new k(Math.cos(r)*Te(e),-Math.sin(r)*Xe(e))},tan:function(){const r=2*this.re,e=2*this.im,a=Math.cos(r)+Te(e);return new k(Math.sin(r)/a,Xe(e)/a)},cot:function(){const r=2*this.re,e=2*this.im,a=Math.cos(r)-Te(e);return new k(-Math.sin(r)/a,Xe(e)/a)},sec:function(){const r=this.re,e=this.im,a=.5*Te(2*e)+.5*Math.cos(2*r);return new k(Math.cos(r)*Te(e)/a,Math.sin(r)*Xe(e)/a)},csc:function(){const r=this.re,e=this.im,a=.5*Te(2*e)-.5*Math.cos(2*r);return new k(Math.sin(r)*Te(e)/a,-Math.cos(r)*Xe(e)/a)},asin:function(){const r=this.re,e=this.im,a=new k(e*e-r*r+1,-2*r*e).sqrt(),t=new k(a.re-e,a.im+r).log();return new k(t.im,-t.re)},acos:function(){const r=this.re,e=this.im,a=new k(e*e-r*r+1,-2*r*e).sqrt(),t=new k(a.re-e,a.im+r).log();return new k(Math.PI/2-t.im,t.re)},atan:function(){const r=this.re,e=this.im;if(r===0){if(e===1)return new k(0,1/0);if(e===-1)return new k(0,-1/0)}const a=r*r+(1-e)*(1-e),t=new k((1-e*e-r*r)/a,-2*r/a).log();return new k(-.5*t.im,.5*t.re)},acot:function(){const r=this.re,e=this.im;if(e===0)return new k(Math.atan2(1,r),0);const a=r*r+e*e;return a!==0?new k(r/a,-e/a).atan():new k(r!==0?r/0:0,e!==0?-e/0:0).atan()},asec:function(){const r=this.re,e=this.im;if(r===0&&e===0)return new k(0,1/0);const a=r*r+e*e;return a!==0?new k(r/a,-e/a).acos():new k(r!==0?r/0:0,e!==0?-e/0:0).acos()},acsc:function(){const r=this.re,e=this.im;if(r===0&&e===0)return new k(Math.PI/2,1/0);const a=r*r+e*e;return a!==0?new k(r/a,-e/a).asin():new k(r!==0?r/0:0,e!==0?-e/0:0).asin()},sinh:function(){const r=this.re,e=this.im;return new k(Xe(r)*Math.cos(e),Te(r)*Math.sin(e))},cosh:function(){const r=this.re,e=this.im;return new k(Te(r)*Math.cos(e),Xe(r)*Math.sin(e))},tanh:function(){const r=2*this.re,e=2*this.im,a=Te(r)+Math.cos(e);return new k(Xe(r)/a,Math.sin(e)/a)},coth:function(){const r=2*this.re,e=2*this.im,a=Te(r)-Math.cos(e);return new k(Xe(r)/a,-Math.sin(e)/a)},csch:function(){const r=this.re,e=this.im,a=Math.cos(2*e)-Te(2*r);return new k(-2*Xe(r)*Math.cos(e)/a,2*Te(r)*Math.sin(e)/a)},sech:function(){const r=this.re,e=this.im,a=Math.cos(2*e)+Te(2*r);return new k(2*Te(r)*Math.cos(e)/a,-2*Xe(r)*Math.sin(e)/a)},asinh:function(){let r=this.im;this.im=-this.re,this.re=r;const e=this.asin();return this.re=-this.im,this.im=r,r=e.re,e.re=-e.im,e.im=r,e},acosh:function(){const r=this.acos();if(r.im<=0){const e=r.re;r.re=-r.im,r.im=e}else{const e=r.im;r.im=-r.re,r.re=e}return r},atanh:function(){const r=this.re,e=this.im,a=r>1&&e===0,t=1-r,i=1+r,n=t*t+e*e,o=n!==0?new k((i*t-e*e)/n,(e*t+i*e)/n):new k(r!==-1?r/0:0,e!==0?e/0:0),s=o.re;return o.re=dr(o.re,o.im)/2,o.im=Math.atan2(o.im,s)/2,a&&(o.im=-o.im),o},acoth:function(){const r=this.re,e=this.im;if(r===0&&e===0)return new k(0,Math.PI/2);const a=r*r+e*e;return a!==0?new k(r/a,-e/a).atanh():new k(r!==0?r/0:0,e!==0?-e/0:0).atanh()},acsch:function(){const r=this.re,e=this.im;if(e===0)return new k(r!==0?Math.log(r+Math.sqrt(r*r+1)):1/0,0);const a=r*r+e*e;return a!==0?new k(r/a,-e/a).asinh():new k(r!==0?r/0:0,e!==0?-e/0:0).asinh()},asech:function(){const r=this.re,e=this.im;if(this.isZero())return k.INFINITY;const a=r*r+e*e;return a!==0?new k(r/a,-e/a).acosh():new k(r!==0?r/0:0,e!==0?-e/0:0).acosh()},inverse:function(){if(this.isZero())return k.INFINITY;if(this.isInfinite())return k.ZERO;const r=this.re,e=this.im,a=r*r+e*e;return new k(r/a,-e/a)},conjugate:function(){return new k(this.re,-this.im)},neg:function(){return new k(-this.re,-this.im)},ceil:function(r){return r=Math.pow(10,r||0),new k(Math.ceil(this.re*r)/r,Math.ceil(this.im*r)/r)},floor:function(r){return r=Math.pow(10,r||0),new k(Math.floor(this.re*r)/r,Math.floor(this.im*r)/r)},round:function(r){return r=Math.pow(10,r||0),new k(Math.round(this.re*r)/r,Math.round(this.im*r)/r)},equals:function(r,e){const a=Fa(r,e);return Math.abs(a.re-this.re)<=k.EPSILON&&Math.abs(a.im-this.im)<=k.EPSILON},clone:function(){return new k(this.re,this.im)},toString:function(){let r=this.re,e=this.im,a="";return this.isNaN()?"NaN":this.isInfinite()?"Infinity":(Math.abs(r)<k.EPSILON&&(r=0),Math.abs(e)<k.EPSILON&&(e=0),e===0?a+r:(r!==0?(a+=r,a+=" ",e<0?(e=-e,a+="-"):a+="+",a+=" "):e<0&&(e=-e,a+="-"),e!==1&&(a+=e),a+"i"))},toVector:function(){return[this.re,this.im]},valueOf:function(){return this.im===0?this.re:null},isNaN:function(){return isNaN(this.re)||isNaN(this.im)},isZero:function(){return this.im===0&&this.re===0},isFinite:function(){return isFinite(this.re)&&isFinite(this.im)},isInfinite:function(){return!this.isFinite()}},k.ZERO=new k(0,0),k.ONE=new k(1,0),k.I=new k(0,1),k.PI=new k(Math.PI,0),k.E=new k(Math.E,0),k.INFINITY=new k(1/0,1/0),k.NAN=new k(NaN,NaN),k.EPSILON=1e-15;var TA=ie("Complex",[],()=>(Object.defineProperty(k,"name",{value:"Complex"}),k.prototype.constructor=k,k.prototype.type="Complex",k.prototype.isComplex=!0,k.prototype.toJSON=function(){return{mathjs:"Complex",re:this.re,im:this.im}},k.prototype.toPolar=function(){return{r:this.abs(),phi:this.arg()}},k.prototype.format=function(r){var e=this.im,a=this.re,t=ir(this.re,r),i=ir(this.im,r),n=be(r)?r:r?r.precision:null;if(n!==null){var o=Math.pow(10,-n);Math.abs(a/e)<o&&(a=0),Math.abs(e/a)<o&&(e=0)}return e===0?t:a===0?e===1?"i":e===-1?"-i":i+"i":e<0?e===-1?t+" - i":t+" - "+i.substring(1)+"i":e===1?t+" + i":t+" + "+i+"i"},k.fromPolar=function(r){switch(arguments.length){case 1:var e=arguments[0];if(typeof e=="object")return k(e);throw new TypeError("Input has to be an object with r and phi keys.");case 2:var a=arguments[0],t=arguments[1];if(be(a)){if(Qi(t)&&t.hasBase("ANGLE")&&(t=t.toNumber("rad")),be(t))return new k({r:a,phi:t});throw new TypeError("Phi is not a number nor an angle unit.")}throw new TypeError("Radius r is not a number.");default:throw new SyntaxError("Wrong number of arguments in function fromPolar")}},k.prototype.valueOf=k.prototype.toString,k.fromJSON=function(r){return new k(r)},k.compare=function(r,e){return r.re>e.re?1:r.re<e.re?-1:r.im>e.im?1:r.im<e.im?-1:0},k),{isClass:!0});typeof BigInt>"u"&&(BigInt=function(r){if(isNaN(r))throw new Error("");return r});const W=BigInt(0),Z=BigInt(1),Za=BigInt(2),hr=BigInt(5),Pe=BigInt(10),P={s:Z,n:W,d:Z};function la(r,e){try{r=BigInt(r)}catch{throw Da()}return r*e}function ea(r){return typeof r=="bigint"?r:Math.floor(r)}function fe(r,e){if(e===W)throw lr();const a=Object.create(Ye.prototype);a.s=r<W?-Z:Z;const t=Qa(r=r<W?-r:r,e);return a.n=r/t,a.d=e/t,a}function za(r){const e={};let a=r,t=Za,i=hr-Z;for(;i<=a;){for(;a%t===W;)a/=t,e[t]=(e[t]||W)+Z;i+=Z+Za*t++}return a!==r?a>1&&(e[a]=(e[a]||W)+Z):e[r]=(e[r]||W)+Z,e}const je=function(r,e){let a=W,t=Z,i=Z;if(r!=null)if(e!==void 0){if(typeof r=="bigint")a=r;else{if(isNaN(r))throw Da();if(r%1!=0)throw Xi();a=BigInt(r)}if(typeof e=="bigint")t=e;else{if(isNaN(e))throw Da();if(e%1!=0)throw Xi();t=BigInt(e)}i=a*t}else if(typeof r=="object"){if("d"in r&&"n"in r)a=BigInt(r.n),t=BigInt(r.d),"s"in r&&(a*=BigInt(r.s));else if(0 in r)a=BigInt(r[0]),1 in r&&(t=BigInt(r[1]));else{if(typeof r!="bigint")throw Da();a=r}i=a*t}else if(typeof r=="number"){if(isNaN(r))throw Da();if(r<0&&(i=-Z,r=-r),r%1==0)a=BigInt(r);else{let n=1,o=0,s=1,c=1,u=1,A=1e7;for(r>=1&&(n=10**Math.floor(1+Math.log10(r)),r/=n);s<=A&&u<=A;){let d=(o+c)/(s+u);if(r===d){s+u<=A?(a=o+c,t=s+u):u>s?(a=c,t=u):(a=o,t=s);break}r>d?(o+=c,s+=u):(c+=o,u+=s),s>A?(a=c,t=u):(a=o,t=s)}a=BigInt(a)*BigInt(n),t=BigInt(t)}}else if(typeof r=="string"){let n=0,o=W,s=W,c=W,u=Z,A=Z,d=r.replace(/_/g,"").match(/\d+|./g);if(d===null||(d[n]==="-"?(i=-Z,n++):d[n]==="+"&&n++,d.length===n+1?s=la(d[n++],i):d[n+1]==="."||d[n]==="."?(d[n]!=="."&&(o=la(d[n++],i)),n++,(n+1===d.length||d[n+1]==="("&&d[n+3]===")"||d[n+1]==="'"&&d[n+3]==="'")&&(s=la(d[n],i),u=Pe**BigInt(d[n].length),n++),(d[n]==="("&&d[n+2]===")"||d[n]==="'"&&d[n+2]==="'")&&(c=la(d[n+1],i),A=Pe**BigInt(d[n+1].length)-Z,n+=3)):d[n+1]==="/"||d[n+1]===":"?(s=la(d[n],i),u=la(d[n+2],Z),n+=3):d[n+3]==="/"&&d[n+1]===" "&&(o=la(d[n],i),s=la(d[n+2],i),u=la(d[n+4],Z),n+=5),!(d.length<=n)))throw Da();t=u*A,i=a=c+t*o+A*s}else{if(typeof r!="bigint")throw Da();a=r,i=r,t=Z}if(t===W)throw lr();P.s=i<W?-Z:Z,P.n=a<W?-a:a,P.d=t<W?-t:t};function NA(r,e,a){let t=Z,i=function(n,o,s){let c=Z;for(;o>W;n=n*n%s,o>>=Z)o&Z&&(c=c*n%s);return c}(Pe,a,e);for(let n=0;n<300;n++){if(t===i)return BigInt(n);t=t*Pe%e,i=i*Pe%e}return 0}function Qa(r,e){if(!r)return e;if(!e)return r;for(;;){if(!(r%=e))return e;if(!(e%=r))return r}}function Ye(r,e){if(je(r,e),!(this instanceof Ye))return fe(P.s*P.n,P.d);r=Qa(P.d,P.n),this.s=P.s,this.n=P.n/r,this.d=P.d/r}var lr=function(){return new Error("Division by Zero")},Da=function(){return new Error("Invalid argument")},Xi=function(){return new Error("Parameters must be integer")};Ye.prototype={s:Z,n:W,d:Z,abs:function(){return fe(this.n,this.d)},neg:function(){return fe(-this.s*this.n,this.d)},add:function(r,e){return je(r,e),fe(this.s*this.n*P.d+P.s*this.d*P.n,this.d*P.d)},sub:function(r,e){return je(r,e),fe(this.s*this.n*P.d-P.s*this.d*P.n,this.d*P.d)},mul:function(r,e){return je(r,e),fe(this.s*P.s*this.n*P.n,this.d*P.d)},div:function(r,e){return je(r,e),fe(this.s*P.s*this.n*P.d,this.d*P.n)},clone:function(){return fe(this.s*this.n,this.d)},mod:function(r,e){if(r===void 0)return fe(this.s*this.n%this.d,Z);if(je(r,e),W===P.n*this.d)throw lr();return fe(this.s*(P.d*this.n)%(P.n*this.d),P.d*this.d)},gcd:function(r,e){return je(r,e),fe(Qa(P.n,this.n)*Qa(P.d,this.d),P.d*this.d)},lcm:function(r,e){return je(r,e),P.n===W&&this.n===W?fe(W,Z):fe(P.n*this.n,Qa(P.n,this.n)*Qa(P.d,this.d))},inverse:function(){return fe(this.s*this.d,this.n)},pow:function(r,e){if(je(r,e),P.d===Z)return P.s<W?fe((this.s*this.d)**P.n,this.n**P.n):fe((this.s*this.n)**P.n,this.d**P.n);if(this.s<W)return null;let a=za(this.n),t=za(this.d),i=Z,n=Z;for(let o in a)if(o!=="1"){if(o==="0"){i=W;break}if(a[o]*=P.n,a[o]%P.d!==W)return null;a[o]/=P.d,i*=BigInt(o)**a[o]}for(let o in t)if(o!=="1"){if(t[o]*=P.n,t[o]%P.d!==W)return null;t[o]/=P.d,n*=BigInt(o)**t[o]}return P.s<W?fe(n,i):fe(i,n)},log:function(r,e){if(je(r,e),this.s<=W||P.s<=W)return null;const a={},t=za(P.n),i=za(P.d),n=za(this.n),o=za(this.d);for(const u in i)t[u]=(t[u]||W)-i[u];for(const u in o)n[u]=(n[u]||W)-o[u];for(const u in t)u!=="1"&&(a[u]=!0);for(const u in n)u!=="1"&&(a[u]=!0);let s=null,c=null;for(const u in a){const A=t[u]||W,d=n[u]||W;if(A===W){if(d!==W)return null;continue}let b=d,h=A;const l=Qa(b,h);if(b/=l,h/=l,s===null&&c===null)s=b,c=h;else if(b*c!=s*h)return null}return s!==null&&c!==null?fe(s,c):null},equals:function(r,e){return je(r,e),this.s*this.n*P.d==P.s*P.n*this.d},lt:function(r,e){return je(r,e),this.s*this.n*P.d<P.s*P.n*this.d},lte:function(r,e){return je(r,e),this.s*this.n*P.d<=P.s*P.n*this.d},gt:function(r,e){return je(r,e),this.s*this.n*P.d>P.s*P.n*this.d},gte:function(r,e){return je(r,e),this.s*this.n*P.d>=P.s*P.n*this.d},compare:function(r,e){je(r,e);let a=this.s*this.n*P.d-P.s*P.n*this.d;return(W<a)-(a<W)},ceil:function(r){return r=Pe**BigInt(r||0),fe(ea(this.s*r*this.n/this.d)+(r*this.n%this.d>W&&this.s>=W?Z:W),r)},floor:function(r){return r=Pe**BigInt(r||0),fe(ea(this.s*r*this.n/this.d)-(r*this.n%this.d>W&&this.s<W?Z:W),r)},round:function(r){return r=Pe**BigInt(r||0),fe(ea(this.s*r*this.n/this.d)+this.s*((this.s>=W?Z:W)+Za*(r*this.n%this.d)>this.d?Z:W),r)},roundTo:function(r,e){je(r,e);const a=this.n*P.d,t=this.d*P.n,i=a%t;let n=ea(a/t);return i+i>=t&&n++,fe(this.s*n*P.n,P.d)},divisible:function(r,e){return je(r,e),!(!(P.n*this.d)||this.n*P.d%(P.n*this.d))},valueOf:function(){return Number(this.s*this.n)/Number(this.d)},toString:function(r){let e=this.n,a=this.d;r=r||15;let t=function(o,s){for(;s%Za===W;s/=Za);for(;s%hr===W;s/=hr);if(s===Z)return W;let c=Pe%s,u=1;for(;c!==Z;u++)if(c=c*Pe%s,u>2e3)return W;return BigInt(u)}(0,a),i=NA(0,a,t),n=this.s<W?"-":"";if(n+=ea(e/a),e%=a,e*=Pe,e&&(n+="."),t){for(let o=i;o--;)n+=ea(e/a),e%=a,e*=Pe;n+="(";for(let o=t;o--;)n+=ea(e/a),e%=a,e*=Pe;n+=")"}else for(let o=r;e&&o--;)n+=ea(e/a),e%=a,e*=Pe;return n},toFraction:function(r){let e=this.n,a=this.d,t=this.s<W?"-":"";if(a===Z)t+=e;else{let i=ea(e/a);r&&i>W&&(t+=i,t+=" ",e%=a),t+=e,t+="/",t+=a}return t},toLatex:function(r){let e=this.n,a=this.d,t=this.s<W?"-":"";if(a===Z)t+=e;else{let i=ea(e/a);r&&i>W&&(t+=i,e%=a),t+="\\frac{",t+=e,t+="}{",t+=a,t+="}"}return t},toContinued:function(){let r=this.n,e=this.d,a=[];do{a.push(ea(r/e));let t=r%e;r=e,e=t}while(r!==Z);return a},simplify:function(r){const e=BigInt(1/(r||.001)|0),a=this.abs(),t=a.toContinued();for(let i=1;i<t.length;i++){let n=fe(t[i-1],Z);for(let s=i-2;s>=0;s--)n=n.inverse().add(t[s]);let o=n.sub(a);if(o.n*e<o.d)return n.mul(this.s)}return this}};var UA=ie("Fraction",[],()=>(Object.defineProperty(Ye,"name",{value:"Fraction"}),Ye.prototype.constructor=Ye,Ye.prototype.type="Fraction",Ye.prototype.isFraction=!0,Ye.prototype.toJSON=function(){return{mathjs:"Fraction",n:String(this.s*this.n),d:String(this.d)}},Ye.fromJSON=function(r){return new Ye(r)},Ye),{isClass:!0}),LA=ie("Matrix",[],()=>{function r(){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator")}return r.prototype.type="Matrix",r.prototype.isMatrix=!0,r.prototype.storage=function(){throw new Error("Cannot invoke storage on a Matrix interface")},r.prototype.datatype=function(){throw new Error("Cannot invoke datatype on a Matrix interface")},r.prototype.create=function(e,a){throw new Error("Cannot invoke create on a Matrix interface")},r.prototype.subset=function(e,a,t){throw new Error("Cannot invoke subset on a Matrix interface")},r.prototype.get=function(e){throw new Error("Cannot invoke get on a Matrix interface")},r.prototype.set=function(e,a,t){throw new Error("Cannot invoke set on a Matrix interface")},r.prototype.resize=function(e,a){throw new Error("Cannot invoke resize on a Matrix interface")},r.prototype.reshape=function(e,a){throw new Error("Cannot invoke reshape on a Matrix interface")},r.prototype.clone=function(){throw new Error("Cannot invoke clone on a Matrix interface")},r.prototype.size=function(){throw new Error("Cannot invoke size on a Matrix interface")},r.prototype.map=function(e,a){throw new Error("Cannot invoke map on a Matrix interface")},r.prototype.forEach=function(e){throw new Error("Cannot invoke forEach on a Matrix interface")},r.prototype[Symbol.iterator]=function(){throw new Error("Cannot iterate a Matrix interface")},r.prototype.toArray=function(){throw new Error("Cannot invoke toArray on a Matrix interface")},r.prototype.valueOf=function(){throw new Error("Cannot invoke valueOf on a Matrix interface")},r.prototype.format=function(e){throw new Error("Cannot invoke format on a Matrix interface")},r.prototype.toString=function(){throw new Error("Cannot invoke toString on a Matrix interface")},r},{isClass:!0});function br(r,e,a){var t=new r.constructor(2),i="";if(a){if(a<1)throw new Error("size must be in greater than 0");if(!Ee(a))throw new Error("size must be an integer");if(r.greaterThan(t.pow(a-1).sub(1))||r.lessThan(t.pow(a-1).mul(-1)))throw new Error("Value must be in range [-2^".concat(a-1,", 2^").concat(a-1,"-1]"));if(!r.isInteger())throw new Error("Value must be an integer");r.lessThan(0)&&(r=r.add(t.pow(a))),i="i".concat(a)}switch(e){case 2:return"".concat(r.toBinary()).concat(i);case 8:return"".concat(r.toOctal()).concat(i);case 16:return"".concat(r.toHexadecimal()).concat(i);default:throw new Error("Base ".concat(e," not supported "))}}function GA(r,e){if(typeof e=="function")return e(r);if(!r.isFinite())return r.isNaN()?"NaN":r.gt(0)?"Infinity":"-Infinity";var{notation:a,precision:t,wordSize:i}=Mi(e);switch(a){case"fixed":return function(u,A){return u.toFixed(A)}(r,t);case"exponential":return Yi(r,t);case"engineering":return function(u,A){var d=u.e,b=d%3==0?d:d<0?d-3-d%3:d-d%3,h=u.mul(Math.pow(10,-b)),l=h.toPrecision(A);return l.includes("e")&&(l=new u.constructor(l).toFixed()),l+"e"+(d>=0?"+":"")+b.toString()}(r,t);case"bin":return br(r,2,i);case"oct":return br(r,8,i);case"hex":return br(r,16,i);case"auto":var n=Zi(e?.lowerExp,-3),o=Zi(e?.upperExp,5);if(r.isZero())return"0";var s=r.toSignificantDigits(t),c=s.e;return(c>=n&&c<o?s.toFixed():Yi(r,t)).replace(/((\.\d*?)(0+))($|e)/,function(){var u=arguments[2],A=arguments[4];return u!=="."?u+A:A});default:throw new Error('Unknown notation "'+a+'". Choose "auto", "exponential", "fixed", "bin", "oct", or "hex.')}}function Yi(r,e){return e!==void 0?r.toExponential(e-1):r.toExponential()}function Zi(r,e){return be(r)?r:ve(r)?r.toNumber():e}function Fe(r,e){var a=function(t,i){return typeof t=="number"?ir(t,i):ve(t)?GA(t,i):function(n){return n&&typeof n=="object"&&typeof n.s=="bigint"&&typeof n.n=="bigint"&&typeof n.d=="bigint"||!1}(t)?i&&i.fraction==="decimal"?t.toString():"".concat(t.s*t.n,"/").concat(t.d):Array.isArray(t)?an(t,i):ia(t)?$i(t):typeof t=="function"?t.syntax?String(t.syntax):"function":t&&typeof t=="object"?typeof t.format=="function"?t.format(i):t&&t.toString(i)!=={}.toString()?t.toString(i):"{"+Object.keys(t).map(n=>$i(n)+": "+Fe(t[n],i)).join(", ")+"}":String(t)}(r,e);return e&&typeof e=="object"&&"truncate"in e&&a.length>e.truncate?a.substring(0,e.truncate-3)+"...":a}function $i(r){for(var e=String(r),a="",t=0;t<e.length;){var i=e.charAt(t);a+=i in en?en[i]:i,t++}return'"'+a+'"'}var en={'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r"," ":"\\t"};function an(r,e){if(Array.isArray(r)){for(var a="[",t=r.length,i=0;i<t;i++)i!==0&&(a+=", "),a+=an(r[i],e);return a+="]"}return Fe(r,e)}function pe(r,e,a){if(!(this instanceof pe))throw new SyntaxError("Constructor must be called with the new operator");this.actual=r,this.expected=e,this.relation=a,this.message="Dimension mismatch ("+(Array.isArray(r)?"["+r.join(", ")+"]":r)+" "+(this.relation||"!=")+" "+(Array.isArray(e)?"["+e.join(", ")+"]":e)+")",this.stack=new Error().stack}function Pa(r,e,a){if(!(this instanceof Pa))throw new SyntaxError("Constructor must be called with the new operator");this.index=r,arguments.length<3?(this.min=0,this.max=e):(this.min=e,this.max=a),this.min!==void 0&&this.index<this.min?this.message="Index out of range ("+this.index+" < "+this.min+")":this.max!==void 0&&this.index>=this.max?this.message="Index out of range ("+this.index+" > "+(this.max-1)+")":this.message="Index out of range ("+this.index+")",this.stack=new Error().stack}function Le(r){for(var e=[];Array.isArray(r);)e.push(r.length),r=r[0];return e}function tn(r,e,a){var t,i=r.length;if(i!==e[a])throw new pe(i,e[a]);if(a<e.length-1){var n=a+1;for(t=0;t<i;t++){var o=r[t];if(!Array.isArray(o))throw new pe(e.length-1,e.length,"<");tn(r[t],e,n)}}else for(t=0;t<i;t++)if(Array.isArray(r[t]))throw new pe(e.length+1,e.length,">")}function rn(r,e){if(e.length===0){if(Array.isArray(r))throw new pe(r.length,0)}else tn(r,e,0)}function Ie(r,e){if(r!==void 0){if(!be(r)||!Ee(r))throw new TypeError("Index must be an integer (value: "+r+")");if(r<0||typeof e=="number"&&r>=e)throw new Pa(r,e)}}function gr(r,e,a){if(!Array.isArray(e))throw new TypeError("Array expected");if(e.length===0)throw new Error("Resizing to scalar is not supported");return e.forEach(function(t){if(!be(t)||!Ee(t)||t<0)throw new TypeError("Invalid size, must contain positive integers (size: "+Fe(e)+")")}),(be(r)||ve(r))&&(r=[r]),fr(r,e,0,a!==void 0?a:0),r}function fr(r,e,a,t){var i,n,o=r.length,s=e[a],c=Math.min(o,s);if(r.length=s,a<e.length-1){var u=a+1;for(i=0;i<c;i++)n=r[i],Array.isArray(n)||(n=[n],r[i]=n),fr(n,e,u,t);for(i=c;i<s;i++)n=[],r[i]=n,fr(n,e,u,t)}else{for(i=0;i<c;i++)for(;Array.isArray(r[i]);)r[i]=r[i][0];for(i=c;i<s;i++)r[i]=t}}function nn(r,e){var a=function(n){var o=arguments.length>1&&arguments[1]!==void 0&&arguments[1];if(!Array.isArray(n))return n;if(typeof o!="boolean")throw new TypeError("Boolean expected for second argument of flatten");var s=[];return o?u(n):c(n),s;function c(A){for(var d=0;d<A.length;d++){var b=A[d];Array.isArray(b)?c(b):s.push(b)}}function u(A){if(Array.isArray(A[0]))for(var d=0;d<A.length;d++)u(A[d]);else for(var b=0;b<A.length;b++)s.push(A[b])}}(r,!0),t=a.length;if(!Array.isArray(r)||!Array.isArray(e))throw new TypeError("Array expected");if(e.length===0)throw new pe(0,t,"!=");var i=on(e=pr(e,t));if(t!==i)throw new pe(i,t,"!=");try{return function(n,o){for(var s,c=n,u=o.length-1;u>0;u--){var A=o[u];s=[];for(var d=c.length/A,b=0;b<d;b++)s.push(c.slice(b*A,(b+1)*A));c=s}return c}(a,e)}catch(n){throw n instanceof pe?new pe(i,t,"!="):n}}function pr(r,e){var a=on(r),t=r.slice(),i=r.indexOf(-1);if(r.indexOf(-1,i+1)>=0)throw new Error("More than one wildcard in sizes");if(i>=0){if(e%a!=0)throw new Error("Could not replace wildcard, since "+e+" is no multiple of "+-a);t[i]=-e/a}return t}function on(r){return r.reduce((e,a)=>e*a,1)}function sn(r,e,a,t){var i=t||Le(r);if(a)for(var n=0;n<a;n++)r=[r],i.unshift(1);for(r=An(r,e,0);i.length<e;)i.push(1);return r}function An(r,e,a){var t,i;if(Array.isArray(r)){var n=a+1;for(t=0,i=r.length;t<i;t++)r[t]=An(r[t],e,n)}else for(var o=a;o<e;o++)r=[r];return r}function mr(r,e){for(var a,t=0,i=0;i<r.length;i++){var n=r[i],o=Array.isArray(n);if(i===0&&o&&(t=n.length),o&&n.length!==t)return;var s=o?mr(n,e):e(n);if(a===void 0)a=s;else if(a!==s)return"mixed"}return a}function cn(r,e,a,t){if(t<a){if(r.length!==e.length)throw new pe(r.length,e.length);for(var i=[],n=0;n<r.length;n++)i[n]=cn(r[n],e[n],a,t+1);return i}return r.concat(e)}function _A(){var r=Array.prototype.slice.call(arguments,0,-1),e=Array.prototype.slice.call(arguments,-1);if(r.length===1)return r[0];if(r.length>1)return r.slice(1).reduce(function(a,t){return cn(a,t,e,0)},r[0]);throw new Error("Wrong number of arguments in function concat")}function un(r,e){for(var a=e.length,t=r.length,i=0;i<t;i++){var n=a-t+i;if(r[i]<e[n]&&r[i]>1||r[i]>e[n])throw new Error("shape mismatch: mismatch is found in arg with shape (".concat(r,") not possible to broadcast dimension ").concat(t," with size ").concat(r[i]," to size ").concat(e[n]))}}function dn(r,e){var a=Le(r);if(Sa(a,e))return r;un(a,e);var t,i,n,o=function(){for(var d=arguments.length,b=new Array(d),h=0;h<d;h++)b[h]=arguments[h];for(var l=b.map(w=>w.length),g=Math.max(...l),m=new Array(g).fill(null),E=0;E<b.length;E++)for(var p=b[E],C=l[E],I=0;I<C;I++){var x=g-C+I;p[I]>m[x]&&(m[x]=p[I])}for(var y=0;y<b.length;y++)un(b[y],m);return m}(a,e),s=o.length,c=[...Array(s-a.length).fill(1),...a],u=function(d){return nt([],d)}(r);a.length<s&&(a=Le(u=nn(u,c)));for(var A=0;A<s;A++)a[A]<o[A]&&(t=u,i=o[A],n=A,a=Le(u=_A(...Array(i).fill(t),n)));return u}function hn(r,e){if(!Array.isArray(r))throw new Error("Array expected");var a=Le(r);if(e.length!==a.length)throw new pe(e.length,a.length);for(var t=0;t<e.length;t++)Ie(e[t],a[t]);return e.reduce((i,n)=>i[n],r)}function ln(r,e){var a=arguments.length>2&&arguments[2]!==void 0&&arguments[2];if(r.length===0)return[];if(a)return function i(n){if(Array.isArray(n)){for(var o=n.length,s=Array(o),c=0;c<o;c++)s[c]=i(n[c]);return s}return e(n)}(r);var t=[];return function i(n,o){if(Array.isArray(n)){for(var s=n.length,c=Array(s),u=0;u<s;u++)t[o]=u,c[u]=i(n[u],o+1);return c}return e(n,t.slice(0,o),r)}(r,0)}function yt(r,e,a){var t=arguments.length>3&&arguments[3]!==void 0&&arguments[3];if(ct.isTypedFunction(r)){var i,n;if(t)i=1;else{var o=(e.isMatrix?e.size():Le(e)).map(()=>0),s=e.isMatrix?e.get(o):hn(e,o);i=function(u,A,d,b){for(var h=[A,d,b],l=3;l>0;l--){var g=h.slice(0,l);if(ct.resolve(u,g)!==null)return l}}(r,s,o,e)}if(e.isMatrix&&e.dataType!=="mixed"&&e.dataType!==void 0){var c=function(u,A){var d=[];if(Object.entries(u.signatures).forEach(b=>{var[h,l]=b;h.split(",").length===A&&d.push(l)}),d.length===1)return d[0]}(r,i);n=c!==void 0?c:r}else n=r;return i>=1&&i<=3?{isUnary:i===1,fn:function(){for(var u=arguments.length,A=new Array(u),d=0;d<u;d++)A[d]=arguments[d];return bn(n,A.slice(0,i),a,r.name)}}:{isUnary:!1,fn:function(){for(var u=arguments.length,A=new Array(u),d=0;d<u;d++)A[d]=arguments[d];return bn(n,A,a,r.name)}}}return t===void 0?{isUnary:zA(r),fn:r}:{isUnary:t,fn:r}}function zA(r){if(r.length!==1)return!1;var e=r.toString();if(/arguments/.test(e))return!1;var a=e.match(/\(.*?\)/);return!/\.\.\./.test(a)}function bn(r,e,a,t){try{return r(...e)}catch(i){(function(n,o,s,c){var u;if(n instanceof TypeError&&((u=n.data)===null||u===void 0?void 0:u.category)==="wrongType"){var A=[];throw A.push("value: ".concat(ma(o[0]))),o.length>=2&&A.push("index: ".concat(ma(o[1]))),o.length>=3&&A.push("array: ".concat(ma(o[2]))),new TypeError("Function ".concat(s," cannot apply callback arguments ")+"".concat(c,"(").concat(A.join(", "),") at index ").concat(JSON.stringify(o[1])))}throw new TypeError("Function ".concat(s," cannot apply callback arguments ")+"to function ".concat(c,": ").concat(n.message))})(i,e,a,t)}}pe.prototype=new RangeError,pe.prototype.constructor=RangeError,pe.prototype.name="DimensionError",pe.prototype.isDimensionError=!0,Pa.prototype=new RangeError,Pa.prototype.constructor=RangeError,Pa.prototype.name="IndexError",Pa.prototype.isIndexError=!0;var PA=ie("DenseMatrix",["Matrix"],r=>{var{Matrix:e}=r;function a(o,s){if(!(this instanceof a))throw new SyntaxError("Constructor must be called with the new operator");if(s&&!ia(s))throw new Error("Invalid datatype: "+s);if(De(o))o.type==="DenseMatrix"?(this._data=ye(o._data),this._size=ye(o._size),this._datatype=s||o._datatype):(this._data=o.toArray(),this._size=o.size(),this._datatype=s||o._datatype);else if(o&&Qe(o.data)&&Qe(o.size))this._data=o.data,this._size=o.size,rn(this._data,this._size),this._datatype=s||o.datatype;else if(Qe(o))this._data=n(o),this._size=Le(this._data),rn(this._data,this._size),this._datatype=s;else{if(o)throw new TypeError("Unsupported type of data ("+ma(o)+")");this._data=[],this._size=[0],this._datatype=s}}function t(o,s,c){if(s.length===0){for(var u=o._data;Qe(u);)u=u[0];return u}return o._size=s.slice(0),o._data=gr(o._data,o._size,c),o}function i(o,s,c){for(var u=o._size.slice(0),A=!1;u.length<s.length;)u.push(0),A=!0;for(var d=0,b=s.length;d<b;d++)s[d]>u[d]&&(u[d]=s[d],A=!0);A&&t(o,u,c)}function n(o){return De(o)?n(o.valueOf()):Qe(o)?o.map(n):o}return a.prototype=new e,a.prototype.createDenseMatrix=function(o,s){return new a(o,s)},Object.defineProperty(a,"name",{value:"DenseMatrix"}),a.prototype.constructor=a,a.prototype.type="DenseMatrix",a.prototype.isDenseMatrix=!0,a.prototype.getDataType=function(){return mr(this._data,ma)},a.prototype.storage=function(){return"dense"},a.prototype.datatype=function(){return this._datatype},a.prototype.create=function(o,s){return new a(o,s)},a.prototype.subset=function(o,s,c){switch(arguments.length){case 1:return function(u,A){if(!ar(A))throw new TypeError("Invalid index");var d=A.isScalar();if(d)return u.get(A.min());var b=A.size();if(b.length!==u._size.length)throw new pe(b.length,u._size.length);for(var h=A.min(),l=A.max(),g=0,m=u._size.length;g<m;g++)Ie(h[g],u._size[g]),Ie(l[g],u._size[g]);var E=new a([]),p=function(C,I){var x=I.size().length-1,y=Array(x);return{data:w(C),size:y};function w(D){var F=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,j=I.dimension(F);return y[F]=j.size()[0],F<x?j.map(M=>(Ie(M,D.length),w(D[M],F+1))).valueOf():j.map(M=>(Ie(M,D.length),D[M])).valueOf()}}(u._data,A);return E._size=p.size,E._datatype=u._datatype,E._data=p.data,E}(this,o);case 2:case 3:return function(u,A,d,b){if(!A||A.isIndex!==!0)throw new TypeError("Invalid index");var h,l=A.size(),g=A.isScalar();if(De(d)?(h=d.size(),d=d.valueOf()):h=Le(d),g){if(h.length!==0)throw new TypeError("Scalar expected");u.set(A.min(),d,b)}else{if(!Sa(h,l))try{h=Le(d=h.length===0?dn([d],l):dn(d,l))}catch{}if(l.length<u._size.length)throw new pe(l.length,u._size.length,"<");if(h.length<l.length){for(var m=0,E=0;l[m]===1&&h[m]===1;)m++;for(;l[m]===1;)E++,m++;d=sn(d,l.length,E,h)}if(!Sa(l,h))throw new pe(l,h,">");var p=A.max().map(function(C){return C+1});i(u,p,b),function(C,I,x){var y=I.size().length-1;function w(D,F){var j=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,M=I.dimension(j);j<y?M.forEach((_,q)=>{Ie(_,D.length),w(D[_],F[q[0]],j+1)}):M.forEach((_,q)=>{Ie(_,D.length),D[_]=F[q[0]]})}w(C,x)}(u._data,A,d)}return u}(this,o,s,c);default:throw new SyntaxError("Wrong number of arguments")}},a.prototype.get=function(o){return hn(this._data,o)},a.prototype.set=function(o,s,c){if(!Qe(o))throw new TypeError("Array expected");if(o.length<this._size.length)throw new pe(o.length,this._size.length,"<");var u,A,d,b=o.map(function(l){return l+1});i(this,b,c);var h=this._data;for(u=0,A=o.length-1;u<A;u++)Ie(d=o[u],h.length),h=h[d];return Ie(d=o[o.length-1],h.length),h[d]=s,this},a.prototype.resize=function(o,s,c){if(!st(o))throw new TypeError("Array or Matrix expected");var u=o.valueOf().map(A=>Array.isArray(A)&&A.length===1?A[0]:A);return t(c?this.clone():this,u,s)},a.prototype.reshape=function(o,s){var c=s?this.clone():this;c._data=nn(c._data,o);var u=c._size.reduce((A,d)=>A*d);return c._size=pr(o,u),c},a.prototype.clone=function(){return new a({data:ye(this._data),size:ye(this._size),datatype:this._datatype})},a.prototype.size=function(){return this._size.slice(0)},a.prototype.map=function(o){var s=arguments.length>2&&arguments[2]!==void 0&&arguments[2],c=this,u=c._size.length-1;if(u<0)return c.clone();var A=yt(o,c,"map",s),d=A.fn,b=c.create(void 0,c._datatype);if(b._size=c._size,s||A.isUnary)return b._data=function E(p){var C=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,I=Array(p.length);if(C<u)for(var x=0;x<p.length;x++)I[x]=E(p[x],C+1);else for(var y=0;y<p.length;y++)I[y]=d(p[y]);return I}(c._data),b;if(u===0){for(var h=c.valueOf(),l=Array(h.length),g=0;g<h.length;g++)l[g]=d(h[g],[g],c);return b._data=l,b}var m=[];return b._data=function E(p){var C=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,I=Array(p.length);if(C<u)for(var x=0;x<p.length;x++)m[C]=x,I[x]=E(p[x],C+1);else for(var y=0;y<p.length;y++)m[C]=y,I[y]=d(p[y],m.slice(),c);return I}(c._data),b},a.prototype.forEach=function(o){var s=arguments.length>2&&arguments[2]!==void 0&&arguments[2],c=this,u=c._size.length-1;if(!(u<0)){var A=yt(o,c,"map",s),d=A.fn;if(s||A.isUnary)(function l(g){var m=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(m<u)for(var E=0;E<g.length;E++)l(g[E],m+1);else for(var p=0;p<g.length;p++)d(g[p])})(c._data);else if(u!==0){var b=[];(function l(g){var m=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(m<u)for(var E=0;E<g.length;E++)b[m]=E,l(g[E],m+1);else for(var p=0;p<g.length;p++)b[m]=p,d(g[p],b.slice(),c)})(c._data)}else for(var h=0;h<c._data.length;h++)d(c._data[h],[h],c)}},a.prototype[Symbol.iterator]=function*(){var o=this._size.length-1;if(!(o<0))if(o!==0){var s=[],c=function*(A,d){if(d<o)for(var b=0;b<A.length;b++)s[d]=b,yield*c(A[b],d+1);else for(var h=0;h<A.length;h++)s[d]=h,yield{value:A[h],index:s.slice()}};yield*c(this._data,0)}else for(var u=0;u<this._data.length;u++)yield{value:this._data[u],index:[u]}},a.prototype.rows=function(){var o=[];if(this.size().length!==2)throw new TypeError("Rows can only be returned for a 2D matrix.");var s=this._data;for(var c of s)o.push(new a([c],this._datatype));return o},a.prototype.columns=function(){var o=this,s=[],c=this.size();if(c.length!==2)throw new TypeError("Rows can only be returned for a 2D matrix.");for(var u=this._data,A=function(b){var h=u.map(l=>[l[b]]);s.push(new a(h,o._datatype))},d=0;d<c[1];d++)A(d);return s},a.prototype.toArray=function(){return ye(this._data)},a.prototype.valueOf=function(){return this._data},a.prototype.format=function(o){return Fe(this._data,o)},a.prototype.toString=function(){return Fe(this._data)},a.prototype.toJSON=function(){return{mathjs:"DenseMatrix",data:this._data,size:this._size,datatype:this._datatype}},a.prototype.diagonal=function(o){if(o){if(ve(o)&&(o=o.toNumber()),!be(o)||!Ee(o))throw new TypeError("The parameter k must be an integer number")}else o=0;for(var s=o>0?o:0,c=o<0?-o:0,u=this._size[0],A=this._size[1],d=Math.min(u-c,A-s),b=[],h=0;h<d;h++)b[h]=this._data[h+c][h+s];return new a({data:b,size:[d],datatype:this._datatype})},a.diagonal=function(o,s,c,u){if(!Qe(o))throw new TypeError("Array expected, size parameter");if(o.length!==2)throw new Error("Only two dimensions matrix are supported");if(o=o.map(function(C){if(ve(C)&&(C=C.toNumber()),!be(C)||!Ee(C)||C<1)throw new Error("Size values must be positive integers");return C}),c){if(ve(c)&&(c=c.toNumber()),!be(c)||!Ee(c))throw new TypeError("The parameter k must be an integer number")}else c=0;var A,d=c>0?c:0,b=c<0?-c:0,h=o[0],l=o[1],g=Math.min(h-b,l-d);if(Qe(s)){if(s.length!==g)throw new Error("Invalid value array length");A=function(C){return s[C]}}else if(De(s)){var m=s.size();if(m.length!==1||m[0]!==g)throw new Error("Invalid matrix length");A=function(C){return s.get([C])}}else A=function(){return s};u||(u=ve(A(0))?A(0).mul(0):0);var E=[];if(o.length>0){E=gr(E,o,u);for(var p=0;p<g;p++)E[p+b][p+d]=A(p)}return new a({data:E,size:[h,l]})},a.fromJSON=function(o){return new a(o)},a.prototype.swapRows=function(o,s){if(!(be(o)&&Ee(o)&&be(s)&&Ee(s)))throw new Error("Row index must be positive integers");if(this._size.length!==2)throw new Error("Only two dimensional matrix is supported");return Ie(o,this._size[0]),Ie(s,this._size[0]),a._swapRows(o,s,this._data),this},a._swapRows=function(o,s,c){var u=c[o];c[o]=c[s],c[s]=u},a},{isClass:!0});function ka(r,e,a){if(!a)return De(r)?r.map(i=>e(i),!1,!0):ln(r,e,!0);var t=i=>i===0?i:e(i);return De(r)?r.map(i=>t(i),!1,!0):ln(r,t,!0)}var gn="number",wt="number, number";function fn(r){return Math.abs(r)}function pn(r,e){return r+e}function mn(r,e){return r-e}function En(r,e){return r*e}function Cn(r){return-r}function In(r,e){return r*r<1&&e===1/0||r*r>1&&e===-1/0?0:Math.pow(r,e)}function Er(r,e){if(e<r)return 1;if(e===r)return e;var a=e+r>>1;return Er(r,a)*Er(a+1,e)}function xt(r){var e;if(Ee(r))return r<=0?isFinite(r)?1/0:NaN:r>171?1/0:Er(1,r-1);if(r<.5)return Math.PI/(Math.sin(Math.PI*r)*xt(1-r));if(r>=171.35)return 1/0;if(r>85){var a=r*r,t=a*r,i=t*r,n=i*r;return Math.sqrt(2*Math.PI/r)*Math.pow(r/Math.E,r)*(1+1/(12*r)+1/(288*a)-139/(51840*t)-571/(2488320*i)+163879/(209018880*n)+5246819/(75246796800*n*r))}--r,e=qa[0];for(var o=1;o<qa.length;++o)e+=qa[o]/(r+o);var s=r+Bn+.5;return Math.sqrt(2*Math.PI)*Math.pow(s,r+.5)*Math.exp(-s)*e}fn.signature=gn,pn.signature=wt,mn.signature=wt,En.signature=wt,Cn.signature=gn,In.signature=wt,xt.signature="number";var Bn=4.7421875,qa=[.9999999999999971,57.15623566586292,-59.59796035547549,14.136097974741746,-.4919138160976202,3399464998481189e-20,4652362892704858e-20,-9837447530487956e-20,.0001580887032249125,-.00021026444172410488,.00021743961811521265,-.0001643181065367639,8441822398385275e-20,-26190838401581408e-21,36899182659531625e-22],Dn="isZero",qA=ie(Dn,["typed","equalScalar"],r=>{var{typed:e,equalScalar:a}=r;return e(Dn,{"number | BigNumber | Complex | Fraction":t=>a(t,0),bigint:t=>t===0n,Unit:e.referToSelf(t=>i=>e.find(t,i.valueType())(i.value)),"Array | Matrix":e.referToSelf(t=>i=>ka(i,t))})}),KA=ie("compareUnits",["typed"],r=>{var{typed:e}=r;return{"Unit, Unit":e.referToSelf(a=>(t,i)=>{if(!t.equalBase(i))throw new Error("Cannot compare units with different base");return e.find(a,[t.valueType(),i.valueType()])(t.value,i.value)})}}),vt="equalScalar",OA=ie(vt,["typed","config"],r=>{var{typed:e,config:a}=r,t=KA({typed:e});return e(vt,{"boolean, boolean":function(i,n){return i===n},"number, number":function(i,n){return ht(i,n,a.relTol,a.absTol)},"BigNumber, BigNumber":function(i,n){return i.eq(n)||function(o,s){var c=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1e-9,u=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;if(c<=0)throw new Error("Relative tolerance must be greater than 0");if(u<0)throw new Error("Absolute tolerance must be at least 0");return!o.isNaN()&&!s.isNaN()&&(o.isFinite()&&s.isFinite()?!!o.eq(s)||o.minus(s).abs().lte(o.constructor.max(o.constructor.max(o.abs(),s.abs()).mul(c),u)):o.eq(s))}(i,n,a.relTol,a.absTol)},"bigint, bigint":function(i,n){return i===n},"Fraction, Fraction":function(i,n){return i.equals(n)},"Complex, Complex":function(i,n){return function(o,s,c,u){return ht(o.re,s.re,c,u)&&ht(o.im,s.im,c,u)}(i,n,a.relTol,a.absTol)}},t)});ie(vt,["typed","config"],r=>{var{typed:e,config:a}=r;return e(vt,{"number, number":function(t,i){return ht(t,i,a.relTol,a.absTol)}})});var JA=ie("SparseMatrix",["typed","equalScalar","Matrix"],r=>{var{typed:e,equalScalar:a,Matrix:t}=r;function i(A,d){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator");if(d&&!ia(d))throw new Error("Invalid datatype: "+d);if(De(A))(function(b,h,l){h.type==="SparseMatrix"?(b._values=h._values?ye(h._values):void 0,b._index=ye(h._index),b._ptr=ye(h._ptr),b._size=ye(h._size),b._datatype=l||h._datatype):n(b,h.valueOf(),l||h._datatype)})(this,A,d);else if(A&&Qe(A.index)&&Qe(A.ptr)&&Qe(A.size))this._values=A.values,this._index=A.index,this._ptr=A.ptr,this._size=A.size,this._datatype=d||A.datatype;else if(Qe(A))n(this,A,d);else{if(A)throw new TypeError("Unsupported type of data ("+ma(A)+")");this._values=[],this._index=[],this._ptr=[0],this._size=[0,0],this._datatype=d}}function n(A,d,b){A._values=[],A._index=[],A._ptr=[],A._datatype=b;var h=d.length,l=0,g=a,m=0;if(ia(b)&&(g=e.find(a,[b,b])||a,m=e.convert(0,b)),h>0){var E=0;do{A._ptr.push(A._index.length);for(var p=0;p<h;p++){var C=d[p];if(Qe(C)){if(E===0&&l<C.length&&(l=C.length),E<C.length){var I=C[E];g(I,m)||(A._values.push(I),A._index.push(p))}}else E===0&&l<1&&(l=1),g(C,m)||(A._values.push(C),A._index.push(p))}E++}while(E<l)}A._ptr.push(A._index.length),A._size=[h,l]}function o(A,d,b,h){if(b-d==0)return b;for(var l=d;l<b;l++)if(h[l]===A)return l;return d}function s(A,d,b,h,l,g,m){l.splice(A,0,h),g.splice(A,0,d);for(var E=b+1;E<m.length;E++)m[E]++}function c(A,d,b,h){var l=h||0,g=a,m=0;ia(A._datatype)&&(g=e.find(a,[A._datatype,A._datatype])||a,m=e.convert(0,A._datatype),l=e.convert(l,A._datatype));var E,p,C,I=!g(l,m),x=A._size[0],y=A._size[1];if(b>y){for(p=y;p<b;p++)if(A._ptr[p]=A._values.length,I)for(E=0;E<x;E++)A._values.push(l),A._index.push(E);A._ptr[b]=A._values.length}else b<y&&(A._ptr.splice(b+1,y-b),A._values.splice(A._ptr[b],A._values.length),A._index.splice(A._ptr[b],A._index.length));if(y=b,d>x){if(I){var w=0;for(p=0;p<y;p++){A._ptr[p]=A._ptr[p]+w,C=A._ptr[p+1]+w;var D=0;for(E=x;E<d;E++,D++)A._values.splice(C+D,0,l),A._index.splice(C+D,0,E),w++}A._ptr[y]=A._values.length}}else if(d<x){var F=0;for(p=0;p<y;p++){A._ptr[p]=A._ptr[p]-F;var j=A._ptr[p],M=A._ptr[p+1]-F;for(C=j;C<M;C++)(E=A._index[C])>d-1&&(A._values.splice(C,1),A._index.splice(C,1),F++)}A._ptr[p]=A._values.length}return A._size[0]=d,A._size[1]=b,A}function u(A,d,b,h,l){var g,m,E=h[0],p=h[1],C=[];for(g=0;g<E;g++)for(C[g]=[],m=0;m<p;m++)C[g][m]=0;for(m=0;m<p;m++)for(var I=b[m],x=b[m+1],y=I;y<x;y++)C[g=d[y]][m]=A?l?ye(A[y]):A[y]:1;return C}return i.prototype=new t,i.prototype.createSparseMatrix=function(A,d){return new i(A,d)},Object.defineProperty(i,"name",{value:"SparseMatrix"}),i.prototype.constructor=i,i.prototype.type="SparseMatrix",i.prototype.isSparseMatrix=!0,i.prototype.getDataType=function(){return mr(this._values,ma)},i.prototype.storage=function(){return"sparse"},i.prototype.datatype=function(){return this._datatype},i.prototype.create=function(A,d){return new i(A,d)},i.prototype.density=function(){var A=this._size[0],d=this._size[1];return A!==0&&d!==0?this._index.length/(A*d):0},i.prototype.subset=function(A,d,b){if(!this._values)throw new Error("Cannot invoke subset on a Pattern only matrix");switch(arguments.length){case 1:return function(h,l){if(!ar(l))throw new TypeError("Invalid index");if(l.isScalar())return h.get(l.min());var g,m,E,p,C=l.size();if(C.length!==h._size.length)throw new pe(C.length,h._size.length);var I=l.min(),x=l.max();for(g=0,m=h._size.length;g<m;g++)Ie(I[g],h._size[g]),Ie(x[g],h._size[g]);var y=h._values,w=h._index,D=h._ptr,F=l.dimension(0),j=l.dimension(1),M=[],_=[];F.forEach(function(O,se){_[O]=se[0],M[O]=!0});var q=y?[]:void 0,V=[],J=[];return j.forEach(function(O){for(J.push(V.length),E=D[O],p=D[O+1];E<p;E++)g=w[E],M[g]===!0&&(V.push(_[g]),q&&q.push(y[E]))}),J.push(V.length),new i({values:q,index:V,ptr:J,size:C,datatype:h._datatype})}(this,A);case 2:case 3:return function(h,l,g,m){if(!l||l.isIndex!==!0)throw new TypeError("Invalid index");var E,p=l.size(),C=l.isScalar();if(De(g)?(E=g.size(),g=g.toArray()):E=Le(g),C){if(E.length!==0)throw new TypeError("Scalar expected");h.set(l.min(),g,m)}else{if(p.length!==1&&p.length!==2)throw new pe(p.length,h._size.length,"<");if(E.length<p.length){for(var I=0,x=0;p[I]===1&&E[I]===1;)I++;for(;p[I]===1;)x++,I++;g=sn(g,p.length,x,E)}if(!Sa(p,E))throw new pe(p,E,">");if(p.length===1)l.dimension(0).forEach(function(D,F){Ie(D),h.set([D,0],g[F[0]],m)});else{var y=l.dimension(0),w=l.dimension(1);y.forEach(function(D,F){Ie(D),w.forEach(function(j,M){Ie(j),h.set([D,j],g[F[0]][M[0]],m)})})}}return h}(this,A,d,b);default:throw new SyntaxError("Wrong number of arguments")}},i.prototype.get=function(A){if(!Qe(A))throw new TypeError("Array expected");if(A.length!==this._size.length)throw new pe(A.length,this._size.length);if(!this._values)throw new Error("Cannot invoke get on a Pattern only matrix");var d=A[0],b=A[1];Ie(d,this._size[0]),Ie(b,this._size[1]);var h=o(d,this._ptr[b],this._ptr[b+1],this._index);return h<this._ptr[b+1]&&this._index[h]===d?this._values[h]:0},i.prototype.set=function(A,d,b){if(!Qe(A))throw new TypeError("Array expected");if(A.length!==this._size.length)throw new pe(A.length,this._size.length);if(!this._values)throw new Error("Cannot invoke set on a Pattern only matrix");var h=A[0],l=A[1],g=this._size[0],m=this._size[1],E=a,p=0;ia(this._datatype)&&(E=e.find(a,[this._datatype,this._datatype])||a,p=e.convert(0,this._datatype)),(h>g-1||l>m-1)&&(c(this,Math.max(h+1,g),Math.max(l+1,m),b),g=this._size[0],m=this._size[1]),Ie(h,g),Ie(l,m);var C=o(h,this._ptr[l],this._ptr[l+1],this._index);return C<this._ptr[l+1]&&this._index[C]===h?E(d,p)?function(I,x,y,w,D){y.splice(I,1),w.splice(I,1);for(var F=x+1;F<D.length;F++)D[F]--}(C,l,this._values,this._index,this._ptr):this._values[C]=d:E(d,p)||s(C,h,l,d,this._values,this._index,this._ptr),this},i.prototype.resize=function(A,d,b){if(!st(A))throw new TypeError("Array or Matrix expected");var h=A.valueOf().map(l=>Array.isArray(l)&&l.length===1?l[0]:l);if(h.length!==2)throw new Error("Only two dimensions matrix are supported");return h.forEach(function(l){if(!be(l)||!Ee(l)||l<0)throw new TypeError("Invalid size, must contain positive integers (size: "+Fe(h)+")")}),c(b?this.clone():this,h[0],h[1],d)},i.prototype.reshape=function(A,d){if(!Qe(A))throw new TypeError("Array expected");if(A.length!==2)throw new Error("Sparse matrices can only be reshaped in two dimensions");A.forEach(function(_){if(!be(_)||!Ee(_)||_<=-2||_===0)throw new TypeError("Invalid size, must contain positive integers or -1 (size: "+Fe(A)+")")});var b=this._size[0]*this._size[1];if(b!==(A=pr(A,b))[0]*A[1])throw new Error("Reshaping sparse matrix will result in the wrong number of elements");var h=d?this.clone():this;if(this._size[0]===A[0]&&this._size[1]===A[1])return h;for(var l=[],g=0;g<h._ptr.length;g++)for(var m=0;m<h._ptr[g+1]-h._ptr[g];m++)l.push(g);for(var E=h._values.slice(),p=h._index.slice(),C=0;C<h._index.length;C++){var I=p[C],x=l[C],y=I*h._size[1]+x;l[C]=y%A[1],p[C]=Math.floor(y/A[1])}h._values.length=0,h._index.length=0,h._ptr.length=A[1]+1,h._size=A.slice();for(var w=0;w<h._ptr.length;w++)h._ptr[w]=0;for(var D=0;D<E.length;D++){var F=p[D],j=l[D],M=E[D];s(o(F,h._ptr[j],h._ptr[j+1],h._index),F,j,M,h._values,h._index,h._ptr)}return h},i.prototype.clone=function(){return new i({values:this._values?ye(this._values):void 0,index:ye(this._index),ptr:ye(this._ptr),size:ye(this._size),datatype:this._datatype})},i.prototype.size=function(){return this._size.slice(0)},i.prototype.map=function(A,d){if(!this._values)throw new Error("Cannot invoke map on a Pattern only matrix");var b=this,h=this._size[0],l=this._size[1],g=yt(A,b,"map");return function(m,E,p,C,I,x,y){var w=[],D=[],F=[],j=a,M=0;ia(m._datatype)&&(j=e.find(a,[m._datatype,m._datatype])||a,M=e.convert(0,m._datatype));for(var _=function(de,$,me){var X=x(de,$,me);j(X,M)||(w.push(X),D.push($))},q=C;q<=I;q++){F.push(w.length);var V=m._ptr[q],J=m._ptr[q+1];if(y)for(var O=V;O<J;O++){var se=m._index[O];se>=E&&se<=p&&_(m._values[O],se-E,q-C)}else{for(var ue={},re=V;re<J;re++)ue[m._index[re]]=m._values[re];for(var le=E;le<=p;le++)_(le in ue?ue[le]:0,le-E,q-C)}}return F.push(w.length),new i({values:w,index:D,ptr:F,size:[p-E+1,I-C+1]})}(this,0,h-1,0,l-1,function(m,E,p){return g.fn(m,[E,p],b)},d)},i.prototype.forEach=function(A,d){if(!this._values)throw new Error("Cannot invoke forEach on a Pattern only matrix");for(var b=this,h=this._size[0],l=this._size[1],g=yt(A,b,"forEach"),m=0;m<l;m++){var E=this._ptr[m],p=this._ptr[m+1];if(d)for(var C=E;C<p;C++){var I=this._index[C];g.fn(this._values[C],[I,m],b)}else{for(var x={},y=E;y<p;y++)x[this._index[y]]=this._values[y];for(var w=0;w<h;w++){var D=w in x?x[w]:0;g.fn(D,[w,m],b)}}}},i.prototype[Symbol.iterator]=function*(){if(!this._values)throw new Error("Cannot iterate a Pattern only matrix");for(var A=this._size[1],d=0;d<A;d++)for(var b=this._ptr[d],h=this._ptr[d+1],l=b;l<h;l++){var g=this._index[l];yield{value:this._values[l],index:[g,d]}}},i.prototype.toArray=function(){return u(this._values,this._index,this._ptr,this._size,!0)},i.prototype.valueOf=function(){return u(this._values,this._index,this._ptr,this._size,!1)},i.prototype.format=function(A){for(var d=this._size[0],b=this._size[1],h=this.density(),l="Sparse Matrix ["+Fe(d,A)+" x "+Fe(b,A)+"] density: "+Fe(h,A)+`
|
|
23
|
+
`,g=0;g<b;g++)for(var m=this._ptr[g],E=this._ptr[g+1],p=m;p<E;p++)l+=`
|
|
24
|
+
(`+Fe(this._index[p],A)+", "+Fe(g,A)+") ==> "+(this._values?Fe(this._values[p],A):"X");return l},i.prototype.toString=function(){return Fe(this.toArray())},i.prototype.toJSON=function(){return{mathjs:"SparseMatrix",values:this._values,index:this._index,ptr:this._ptr,size:this._size,datatype:this._datatype}},i.prototype.diagonal=function(A){if(A){if(ve(A)&&(A=A.toNumber()),!be(A)||!Ee(A))throw new TypeError("The parameter k must be an integer number")}else A=0;var d=A>0?A:0,b=A<0?-A:0,h=this._size[0],l=this._size[1],g=Math.min(h-b,l-d),m=[],E=[],p=[];p[0]=0;for(var C=d;C<l&&m.length<g;C++)for(var I=this._ptr[C],x=this._ptr[C+1],y=I;y<x;y++){var w=this._index[y];if(w===C-d+b){m.push(this._values[y]),E[m.length-1]=w-b;break}}return p.push(m.length),new i({values:m,index:E,ptr:p,size:[g,1]})},i.fromJSON=function(A){return new i(A)},i.diagonal=function(A,d,b,h,l){if(!Qe(A))throw new TypeError("Array expected, size parameter");if(A.length!==2)throw new Error("Only two dimensions matrix are supported");if(A=A.map(function(V){if(ve(V)&&(V=V.toNumber()),!be(V)||!Ee(V)||V<1)throw new Error("Size values must be positive integers");return V}),b){if(ve(b)&&(b=b.toNumber()),!be(b)||!Ee(b))throw new TypeError("The parameter k must be an integer number")}else b=0;var g=a,m=0;ia(l)&&(g=e.find(a,[l,l])||a,m=e.convert(0,l));var E,p=b>0?b:0,C=b<0?-b:0,I=A[0],x=A[1],y=Math.min(I-C,x-p);if(Qe(d)){if(d.length!==y)throw new Error("Invalid value array length");E=function(V){return d[V]}}else if(De(d)){var w=d.size();if(w.length!==1||w[0]!==y)throw new Error("Invalid matrix length");E=function(V){return d.get([V])}}else E=function(){return d};for(var D=[],F=[],j=[],M=0;M<x;M++){j.push(D.length);var _=M-p;if(_>=0&&_<y){var q=E(_);g(q,m)||(F.push(_+C),D.push(q))}}return j.push(D.length),new i({values:D,index:F,ptr:j,size:[I,x]})},i.prototype.swapRows=function(A,d){if(!(be(A)&&Ee(A)&&be(d)&&Ee(d)))throw new Error("Row index must be positive integers");if(this._size.length!==2)throw new Error("Only two dimensional matrix is supported");return Ie(A,this._size[0]),Ie(d,this._size[0]),i._swapRows(A,d,this._size[1],this._values,this._index,this._ptr),this},i._forEachRow=function(A,d,b,h,l){for(var g=h[A],m=h[A+1],E=g;E<m;E++)l(b[E],d[E])},i._swapRows=function(A,d,b,h,l,g){for(var m=0;m<b;m++){var E=g[m],p=g[m+1],C=o(A,E,p,l),I=o(d,E,p,l);if(C<p&&I<p&&l[C]===A&&l[I]===d){if(h){var x=h[C];h[C]=h[I],h[I]=x}}else if(C<p&&l[C]===A&&(I>=p||l[I]!==d)){var y=h?h[C]:void 0;l.splice(I,0,d),h&&h.splice(I,0,y),l.splice(I<=C?C+1:C,1),h&&h.splice(I<=C?C+1:C,1)}else if(I<p&&l[I]===d&&(C>=p||l[C]!==A)){var w=h?h[I]:void 0;l.splice(C,0,A),h&&h.splice(C,0,w),l.splice(C<=I?I+1:I,1),h&&h.splice(C<=I?I+1:I,1)}}},i},{isClass:!0}),VA=ie("number",["typed"],r=>{var{typed:e}=r,a=e("number",{"":function(){return 0},number:function(t){return t},string:function(t){if(t==="NaN")return NaN;var i,n,o=(n=(i=t).match(/(0[box])([0-9a-fA-F]*)\.([0-9a-fA-F]*)/))?{input:i,radix:{"0b":2,"0o":8,"0x":16}[n[1]],integerPart:n[2],fractionalPart:n[3]}:null;if(o)return function(A){for(var d=parseInt(A.integerPart,A.radix),b=0,h=0;h<A.fractionalPart.length;h++)b+=parseInt(A.fractionalPart[h],A.radix)/Math.pow(A.radix,h+1);var l=d+b;if(isNaN(l))throw new SyntaxError('String "'+A.input+'" is not a valid number');return l}(o);var s=0,c=t.match(/(0[box][0-9a-fA-F]*)i([0-9]*)/);c&&(s=Number(c[2]),t=c[1]);var u=Number(t);if(isNaN(u))throw new SyntaxError('String "'+t+'" is not a valid number');if(c){if(u>2**s-1)throw new SyntaxError('String "'.concat(t,'" is out of range'));u>=2**(s-1)&&(u-=2**s)}return u},BigNumber:function(t){return t.toNumber()},bigint:function(t){return Number(t)},Fraction:function(t){return t.valueOf()},Unit:e.referToSelf(t=>i=>{var n=i.clone();return n.value=t(i.value),n}),null:function(t){return 0},"Unit, string | Unit":function(t,i){return t.toNumber(i)},"Array | Matrix":e.referToSelf(t=>i=>ka(i,t))});return a.fromJSON=function(t){return parseFloat(t.value)},a}),HA=ie("bignumber",["typed","BigNumber"],r=>{var{typed:e,BigNumber:a}=r;return e("bignumber",{"":function(){return new a(0)},number:function(t){return new a(t+"")},string:function(t){var i=t.match(/(0[box][0-9a-fA-F]*)i([0-9]*)/);if(i){var n=i[2],o=a(i[1]),s=new a(2).pow(Number(n));if(o.gt(s.sub(1)))throw new SyntaxError('String "'.concat(t,'" is out of range'));var c=new a(2).pow(Number(n)-1);return o.gte(c)?o.sub(s):o}return new a(t)},BigNumber:function(t){return t},bigint:function(t){return new a(t.toString())},Unit:e.referToSelf(t=>i=>{var n=i.clone();return n.value=t(i.value),n}),Fraction:function(t){return new a(String(t.n)).div(String(t.d)).times(String(t.s))},null:function(t){return new a(0)},"Array | Matrix":e.referToSelf(t=>i=>ka(i,t))})}),WA=ie("fraction",["typed","Fraction"],r=>{var{typed:e,Fraction:a}=r;return e("fraction",{number:function(t){if(!isFinite(t)||isNaN(t))throw new Error(t+" cannot be represented as a fraction");return new a(t)},string:function(t){return new a(t)},"number, number":function(t,i){return new a(t,i)},"bigint, bigint":function(t,i){return new a(t,i)},null:function(t){return new a(0)},BigNumber:function(t){return new a(t.toString())},bigint:function(t){return new a(t.toString())},Fraction:function(t){return t},Unit:e.referToSelf(t=>i=>{var n=i.clone();return n.value=t(i.value),n}),Object:function(t){return new a(t)},"Array | Matrix":e.referToSelf(t=>i=>ka(i,t))})}),yn="matrix",XA=ie(yn,["typed","Matrix","DenseMatrix","SparseMatrix"],r=>{var{typed:e,Matrix:a,DenseMatrix:t,SparseMatrix:i}=r;return e(yn,{"":function(){return n([])},string:function(o){return n([],o)},"string, string":function(o,s){return n([],o,s)},Array:function(o){return n(o)},Matrix:function(o){return n(o,o.storage())},"Array | Matrix, string":n,"Array | Matrix, string, string":n});function n(o,s,c){if(s==="dense"||s==="default"||s===void 0)return new t(o,c);if(s==="sparse")return new i(o,c);throw new TypeError("Unknown matrix type "+JSON.stringify(s)+".")}}),wn="unaryMinus",YA=ie(wn,["typed"],r=>{var{typed:e}=r;return e(wn,{number:Cn,"Complex | BigNumber | Fraction":a=>a.neg(),bigint:a=>-a,Unit:e.referToSelf(a=>t=>{var i=t.clone();return i.value=e.find(a,i.valueType())(t.value),i}),"Array | Matrix":e.referToSelf(a=>t=>ka(t,a,!0))})}),ZA=ie("abs",["typed"],r=>{var{typed:e}=r;return e("abs",{number:fn,"Complex | BigNumber | Fraction | Unit":a=>a.abs(),bigint:a=>a<0n?-a:a,"Array | Matrix":e.referToSelf(a=>t=>ka(t,a,!0))})}),xn="addScalar",$A=ie(xn,["typed"],r=>{var{typed:e}=r;return e(xn,{"number, number":pn,"Complex, Complex":function(a,t){return a.add(t)},"BigNumber, BigNumber":function(a,t){return a.plus(t)},"bigint, bigint":function(a,t){return a+t},"Fraction, Fraction":function(a,t){return a.add(t)},"Unit, Unit":e.referToSelf(a=>(t,i)=>{if(t.value===null||t.value===void 0)throw new Error("Parameter x contains a unit with undefined value");if(i.value===null||i.value===void 0)throw new Error("Parameter y contains a unit with undefined value");if(!t.equalBase(i))throw new Error("Units do not match");var n=t.clone();return n.value=e.find(a,[n.valueType(),i.valueType()])(n.value,i.value),n.fixPrefix=!1,n})})}),vn="subtractScalar",ec=ie(vn,["typed"],r=>{var{typed:e}=r;return e(vn,{"number, number":mn,"Complex, Complex":function(a,t){return a.sub(t)},"BigNumber, BigNumber":function(a,t){return a.minus(t)},"bigint, bigint":function(a,t){return a-t},"Fraction, Fraction":function(a,t){return a.sub(t)},"Unit, Unit":e.referToSelf(a=>(t,i)=>{if(t.value===null||t.value===void 0)throw new Error("Parameter x contains a unit with undefined value");if(i.value===null||i.value===void 0)throw new Error("Parameter y contains a unit with undefined value");if(!t.equalBase(i))throw new Error("Units do not match");var n=t.clone();return n.value=e.find(a,[n.valueType(),i.valueType()])(n.value,i.value),n.fixPrefix=!1,n})})}),ac=ie("matAlgo11xS0s",["typed","equalScalar"],r=>{var{typed:e,equalScalar:a}=r;return function(t,i,n,o){var s=t._values,c=t._index,u=t._ptr,A=t._size,d=t._datatype;if(!s)throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");var b,h=A[0],l=A[1],g=a,m=0,E=n;typeof d=="string"&&(b=d,g=e.find(a,[b,b]),m=e.convert(0,b),i=e.convert(i,b),E=e.find(n,[b,b]));for(var p=[],C=[],I=[],x=0;x<l;x++){I[x]=C.length;for(var y=u[x],w=u[x+1],D=y;D<w;D++){var F=c[D],j=o?E(i,s[D]):E(s[D],i);g(j,m)||(C.push(F),p.push(j))}}return I[l]=C.length,t.createSparseMatrix({values:p,index:C,ptr:I,size:[h,l],datatype:b})}}),tc=ie("matAlgo14xDs",["typed"],r=>{var{typed:e}=r;return function(t,i,n,o){var s,c=t._data,u=t._size,A=t._datatype,d=n;typeof A=="string"&&(s=A,i=e.convert(i,s),d=e.find(n,[s,s]));var b=u.length>0?a(d,0,u,u[0],c,i,o):[];return t.createDenseMatrix({data:b,size:ye(u),datatype:s})};function a(t,i,n,o,s,c,u){var A=[];if(i===n.length-1)for(var d=0;d<o;d++)A[d]=u?t(c,s[d]):t(s[d],c);else for(var b=0;b<o;b++)A[b]=a(t,i+1,n,n[i+1],s[b],c,u);return A}}),rc=ie("multiplyScalar",["typed"],r=>{var{typed:e}=r;return e("multiplyScalar",{"number, number":En,"Complex, Complex":function(a,t){return a.mul(t)},"BigNumber, BigNumber":function(a,t){return a.times(t)},"bigint, bigint":function(a,t){return a*t},"Fraction, Fraction":function(a,t){return a.mul(t)},"number | Fraction | BigNumber | Complex, Unit":(a,t)=>t.multiply(a),"Unit, number | Fraction | BigNumber | Complex | Unit":(a,t)=>a.multiply(t)})}),Fn="multiply",ic=ie(Fn,["typed","matrix","addScalar","multiplyScalar","equalScalar","dot"],r=>{var{typed:e,matrix:a,addScalar:t,multiplyScalar:i,equalScalar:n,dot:o}=r,s=ac({typed:e,equalScalar:n}),c=tc({typed:e});function u(h,l){switch(h.length){case 1:switch(l.length){case 1:if(h[0]!==l[0])throw new RangeError("Dimension mismatch in multiplication. Vectors must have the same length");break;case 2:if(h[0]!==l[0])throw new RangeError("Dimension mismatch in multiplication. Vector length ("+h[0]+") must match Matrix rows ("+l[0]+")");break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix B has "+l.length+" dimensions)")}break;case 2:switch(l.length){case 1:if(h[1]!==l[0])throw new RangeError("Dimension mismatch in multiplication. Matrix columns ("+h[1]+") must match Vector length ("+l[0]+")");break;case 2:if(h[1]!==l[0])throw new RangeError("Dimension mismatch in multiplication. Matrix A columns ("+h[1]+") must match Matrix B rows ("+l[0]+")");break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix B has "+l.length+" dimensions)")}break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix A has "+h.length+" dimensions)")}}function A(h,l){if(l.storage()!=="dense")throw new Error("Support for SparseMatrix not implemented");return function(g,m){var E,p=g._data,C=g._size,I=g._datatype||g.getDataType(),x=m._data,y=m._size,w=m._datatype||m.getDataType(),D=C[0],F=y[1],j=t,M=i;I&&w&&I===w&&typeof I=="string"&&I!=="mixed"&&(E=I,j=e.find(t,[E,E]),M=e.find(i,[E,E]));for(var _=[],q=0;q<F;q++){for(var V=M(p[0],x[0][q]),J=1;J<D;J++)V=j(V,M(p[J],x[J][q]));_[q]=V}return g.createDenseMatrix({data:_,size:[F],datatype:I===g._datatype&&w===m._datatype?E:void 0})}(h,l)}var d=e("_multiplyMatrixVector",{"DenseMatrix, any":function(h,l){var g,m=h._data,E=h._size,p=h._datatype||h.getDataType(),C=l._data,I=l._datatype||l.getDataType(),x=E[0],y=E[1],w=t,D=i;p&&I&&p===I&&typeof p=="string"&&p!=="mixed"&&(g=p,w=e.find(t,[g,g]),D=e.find(i,[g,g]));for(var F=[],j=0;j<x;j++){for(var M=m[j],_=D(M[0],C[0]),q=1;q<y;q++)_=w(_,D(M[q],C[q]));F[j]=_}return h.createDenseMatrix({data:F,size:[x],datatype:p===h._datatype&&I===l._datatype?g:void 0})},"SparseMatrix, any":function(h,l){var g=h._values,m=h._index,E=h._ptr,p=h._datatype||h._data===void 0?h._datatype:h.getDataType();if(!g)throw new Error("Cannot multiply Pattern only Matrix times Dense Matrix");var C,I=l._data,x=l._datatype||l.getDataType(),y=h._size[0],w=l._size[0],D=[],F=[],j=[],M=t,_=i,q=n,V=0;p&&x&&p===x&&typeof p=="string"&&p!=="mixed"&&(C=p,M=e.find(t,[C,C]),_=e.find(i,[C,C]),q=e.find(n,[C,C]),V=e.convert(0,C));var J=[],O=[];j[0]=0;for(var se=0;se<w;se++){var ue=I[se];if(!q(ue,V))for(var re=E[se],le=E[se+1],de=re;de<le;de++){var $=m[de];O[$]?J[$]=M(J[$],_(ue,g[de])):(O[$]=!0,F.push($),J[$]=_(ue,g[de]))}}for(var me=F.length,X=0;X<me;X++){var ee=F[X];D[X]=J[ee]}return j[1]=F.length,h.createSparseMatrix({values:D,index:F,ptr:j,size:[y,1],datatype:p===h._datatype&&x===l._datatype?C:void 0})}}),b=e("_multiplyMatrixMatrix",{"DenseMatrix, DenseMatrix":function(h,l){var g,m=h._data,E=h._size,p=h._datatype||h.getDataType(),C=l._data,I=l._size,x=l._datatype||l.getDataType(),y=E[0],w=E[1],D=I[1],F=t,j=i;p&&x&&p===x&&typeof p=="string"&&p!=="mixed"&&p!=="mixed"&&(g=p,F=e.find(t,[g,g]),j=e.find(i,[g,g]));for(var M=[],_=0;_<y;_++){var q=m[_];M[_]=[];for(var V=0;V<D;V++){for(var J=j(q[0],C[0][V]),O=1;O<w;O++)J=F(J,j(q[O],C[O][V]));M[_][V]=J}}return h.createDenseMatrix({data:M,size:[y,D],datatype:p===h._datatype&&x===l._datatype?g:void 0})},"DenseMatrix, SparseMatrix":function(h,l){var g=h._data,m=h._size,E=h._datatype||h.getDataType(),p=l._values,C=l._index,I=l._ptr,x=l._size,y=l._datatype||l._data===void 0?l._datatype:l.getDataType();if(!p)throw new Error("Cannot multiply Dense Matrix times Pattern only Matrix");var w,D=m[0],F=x[1],j=t,M=i,_=n,q=0;E&&y&&E===y&&typeof E=="string"&&E!=="mixed"&&(w=E,j=e.find(t,[w,w]),M=e.find(i,[w,w]),_=e.find(n,[w,w]),q=e.convert(0,w));for(var V=[],J=[],O=[],se=l.createSparseMatrix({values:V,index:J,ptr:O,size:[D,F],datatype:E===h._datatype&&y===l._datatype?w:void 0}),ue=0;ue<F;ue++){O[ue]=J.length;var re=I[ue],le=I[ue+1];if(le>re)for(var de=0,$=0;$<D;$++){for(var me=$+1,X=void 0,ee=re;ee<le;ee++){var Ae=C[ee];de!==me?(X=M(g[$][Ae],p[ee]),de=me):X=j(X,M(g[$][Ae],p[ee]))}de!==me||_(X,q)||(J.push($),V.push(X))}}return O[F]=J.length,se},"SparseMatrix, DenseMatrix":function(h,l){var g=h._values,m=h._index,E=h._ptr,p=h._datatype||h._data===void 0?h._datatype:h.getDataType();if(!g)throw new Error("Cannot multiply Pattern only Matrix times Dense Matrix");var C,I=l._data,x=l._datatype||l.getDataType(),y=h._size[0],w=l._size[0],D=l._size[1],F=t,j=i,M=n,_=0;p&&x&&p===x&&typeof p=="string"&&p!=="mixed"&&(C=p,F=e.find(t,[C,C]),j=e.find(i,[C,C]),M=e.find(n,[C,C]),_=e.convert(0,C));for(var q=[],V=[],J=[],O=h.createSparseMatrix({values:q,index:V,ptr:J,size:[y,D],datatype:p===h._datatype&&x===l._datatype?C:void 0}),se=[],ue=[],re=0;re<D;re++){J[re]=V.length;for(var le=re+1,de=0;de<w;de++){var $=I[de][re];if(!M($,_))for(var me=E[de],X=E[de+1],ee=me;ee<X;ee++){var Ae=m[ee];ue[Ae]!==le?(ue[Ae]=le,V.push(Ae),se[Ae]=j($,g[ee])):se[Ae]=F(se[Ae],j($,g[ee]))}}for(var Ce=J[re],we=V.length,Ne=Ce;Ne<we;Ne++){var Je=V[Ne];q[Ne]=se[Je]}}return J[D]=V.length,O},"SparseMatrix, SparseMatrix":function(h,l){var g,m=h._values,E=h._index,p=h._ptr,C=h._datatype||h._data===void 0?h._datatype:h.getDataType(),I=l._values,x=l._index,y=l._ptr,w=l._datatype||l._data===void 0?l._datatype:l.getDataType(),D=h._size[0],F=l._size[1],j=m&&I,M=t,_=i;C&&w&&C===w&&typeof C=="string"&&C!=="mixed"&&(g=C,M=e.find(t,[g,g]),_=e.find(i,[g,g]));for(var q,V,J,O,se,ue,re,le,de=j?[]:void 0,$=[],me=[],X=h.createSparseMatrix({values:de,index:$,ptr:me,size:[D,F],datatype:C===h._datatype&&w===l._datatype?g:void 0}),ee=j?[]:void 0,Ae=[],Ce=0;Ce<F;Ce++){me[Ce]=$.length;var we=Ce+1;for(se=y[Ce],ue=y[Ce+1],O=se;O<ue;O++)if(le=x[O],j)for(V=p[le],J=p[le+1],q=V;q<J;q++)Ae[re=E[q]]!==we?(Ae[re]=we,$.push(re),ee[re]=_(I[O],m[q])):ee[re]=M(ee[re],_(I[O],m[q]));else for(V=p[le],J=p[le+1],q=V;q<J;q++)Ae[re=E[q]]!==we&&(Ae[re]=we,$.push(re));if(j)for(var Ne=me[Ce],Je=$.length,Ve=Ne;Ve<Je;Ve++){var et=$[Ve];de[Ve]=ee[et]}}return me[F]=$.length,X}});return e(Fn,i,{"Array, Array":e.referTo("Matrix, Matrix",h=>(l,g)=>{u(Le(l),Le(g));var m=h(a(l),a(g));return De(m)?m.valueOf():m}),"Matrix, Matrix":function(h,l){var g=h.size(),m=l.size();return u(g,m),g.length===1?m.length===1?function(E,p,C){if(C===0)throw new Error("Cannot multiply two empty vectors");return o(E,p)}(h,l,g[0]):A(h,l):m.length===1?d(h,l):b(h,l)},"Matrix, Array":e.referTo("Matrix,Matrix",h=>(l,g)=>h(l,a(g))),"Array, Matrix":e.referToSelf(h=>(l,g)=>h(a(l,g.storage()),g)),"SparseMatrix, any":function(h,l){return s(h,l,i,!1)},"DenseMatrix, any":function(h,l){return c(h,l,i,!1)},"any, SparseMatrix":function(h,l){return s(l,h,i,!0)},"any, DenseMatrix":function(h,l){return c(l,h,i,!0)},"Array, any":function(h,l){return c(a(h),l,i,!1).valueOf()},"any, Array":function(h,l){return c(a(l),h,i,!0).valueOf()},"any, any":i,"any, any, ...any":e.referToSelf(h=>(l,g,m)=>{for(var E=h(l,g),p=0;p<m.length;p++)E=h(E,m[p]);return E})})}),Qn="conj",nc=ie(Qn,["typed"],r=>{var{typed:e}=r;return e(Qn,{"number | BigNumber | Fraction":a=>a,Complex:a=>a.conjugate(),Unit:e.referToSelf(a=>t=>new t.constructor(a(t.toNumeric()),t.formatUnits())),"Array | Matrix":e.referToSelf(a=>t=>ka(t,a))})}),kn="identity",oc=ie(kn,["typed","config","matrix","BigNumber","DenseMatrix","SparseMatrix"],r=>{var{typed:e,config:a,matrix:t,BigNumber:i,DenseMatrix:n,SparseMatrix:o}=r;return e(kn,{"":function(){return a.matrix==="Matrix"?t([]):[]},string:function(u){return t(u)},"number | BigNumber":function(u){return c(u,u,a.matrix==="Matrix"?"dense":void 0)},"number | BigNumber, string":function(u,A){return c(u,u,A)},"number | BigNumber, number | BigNumber":function(u,A){return c(u,A,a.matrix==="Matrix"?"dense":void 0)},"number | BigNumber, number | BigNumber, string":function(u,A,d){return c(u,A,d)},Array:function(u){return s(u)},"Array, string":function(u,A){return s(u,A)},Matrix:function(u){return s(u.valueOf(),u.storage())},"Matrix, string":function(u,A){return s(u.valueOf(),A)}});function s(u,A){switch(u.length){case 0:return A?t(A):[];case 1:return c(u[0],u[0],A);case 2:return c(u[0],u[1],A);default:throw new Error("Vector containing two values expected")}}function c(u,A,d){var b=ve(u)||ve(A)?i:null;if(ve(u)&&(u=u.toNumber()),ve(A)&&(A=A.toNumber()),!Ee(u)||u<1)throw new Error("Parameters in function identity must be positive integers");if(!Ee(A)||A<1)throw new Error("Parameters in function identity must be positive integers");var h=b?new i(1):1,l=b?new b(0):0,g=[u,A];if(d){if(d==="sparse")return o.diagonal(g,h,0,l);if(d==="dense")return n.diagonal(g,h,0,l);throw new TypeError('Unknown matrix type "'.concat(d,'"'))}for(var m=gr([],g,l),E=u<A?u:A,p=0;p<E;p++)m[p][p]=h;return m}});function sc(){throw new Error('No "bignumber" implementation available')}function Ac(){throw new Error('No "fraction" implementation available')}var jn,Mn="size",cc=ie(Mn,["typed","config","?matrix"],r=>{var{typed:e,config:a,matrix:t}=r;return e(Mn,{Matrix:function(i){return i.create(i.size(),"number")},Array:Le,string:function(i){return a.matrix==="Array"?[i.length]:t([i.length],"dense","number")},"number | Complex | BigNumber | Unit | boolean | null":function(i){return a.matrix==="Array"?[]:t?t([],"dense","number"):function(){throw new Error('No "matrix" implementation available')}()}})}),uc=ie("numeric",["number","?bignumber","?fraction"],r=>{var{number:e,bignumber:a,fraction:t}=r,i={string:!0,number:!0,BigNumber:!0,Fraction:!0},n={number:o=>e(o),BigNumber:a?o=>a(o):sc,bigint:o=>BigInt(o),Fraction:t?o=>t(o):Ac};return function(o){var s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"number";if((arguments.length>2?arguments[2]:void 0)!==void 0)throw new SyntaxError("numeric() takes one or two arguments");var c=ma(o);if(!(c in i))throw new TypeError("Cannot convert "+o+' of type "'+c+'"; valid input types are '+Object.keys(i).join(", "));if(!(s in n))throw new TypeError("Cannot convert "+o+' to type "'+s+'"; valid output types are '+Object.keys(n).join(", "));return s===c?o:n[s](o)}}),Rn="divideScalar",dc=ie(Rn,["typed","numeric"],r=>{var{typed:e,numeric:a}=r;return e(Rn,{"number, number":function(t,i){return t/i},"Complex, Complex":function(t,i){return t.div(i)},"BigNumber, BigNumber":function(t,i){return t.div(i)},"bigint, bigint":function(t,i){return t/i},"Fraction, Fraction":function(t,i){return t.div(i)},"Unit, number | Complex | Fraction | BigNumber | Unit":(t,i)=>t.divide(i),"number | Fraction | Complex | BigNumber, Unit":(t,i)=>i.divideInto(t)})}),hc=ie("pow",["typed","config","identity","multiply","matrix","inv","fraction","number","Complex"],r=>{var{typed:e,config:a,identity:t,multiply:i,matrix:n,inv:o,number:s,fraction:c,Complex:u}=r;return e("pow",{"number, number":A,"Complex, Complex":function(h,l){return h.pow(l)},"BigNumber, BigNumber":function(h,l){return l.isInteger()||h>=0||a.predictable?h.pow(l):new u(h.toNumber(),0).pow(l.toNumber(),0)},"bigint, bigint":(h,l)=>h**l,"Fraction, Fraction":function(h,l){var g=h.pow(l);if(g!=null)return g;if(a.predictable)throw new Error("Result of pow is non-rational and cannot be expressed as a fraction");return A(h.valueOf(),l.valueOf())},"Array, number":d,"Array, BigNumber":function(h,l){return d(h,l.toNumber())},"Matrix, number":b,"Matrix, BigNumber":function(h,l){return b(h,l.toNumber())},"Unit, number | BigNumber":function(h,l){return h.pow(l)}});function A(h,l){if(a.predictable&&!Ee(l)&&h<0)try{var g=c(l),m=s(g);if((l===m||Math.abs((l-m)/l)<1e-14)&&g.d%2n===1n)return(g.n%2n===0n?1:-1)*Math.pow(-h,l)}catch{}return a.predictable&&(h<-1&&l===1/0||h>-1&&h<0&&l===-1/0)?NaN:Ee(l)||h>=0||a.predictable?In(h,l):h*h<1&&l===1/0||h*h>1&&l===-1/0?0:new u(h,0).pow(l,0)}function d(h,l){if(!Ee(l))throw new TypeError("For A^b, b must be an integer (value is "+l+")");var g=Le(h);if(g.length!==2)throw new Error("For A^b, A must be 2 dimensional (A has "+g.length+" dimensions)");if(g[0]!==g[1])throw new Error("For A^b, A must be square (size is "+g[0]+"x"+g[1]+")");if(l<0)try{return d(o(h),-l)}catch(p){throw p.message==="Cannot calculate inverse, determinant is zero"?new TypeError("For A^b, when A is not invertible, b must be a positive integer (value is "+l+")"):p}for(var m=t(g[0]).valueOf(),E=h;l>=1;)1&~l||(m=i(E,m)),l>>=1,E=i(E,E);return m}function b(h,l){return n(d(h.valueOf(),l))}}),lc=ie("dot",["typed","addScalar","multiplyScalar","conj","size"],r=>{var{typed:e,addScalar:a,multiplyScalar:t,conj:i,size:n}=r;return e("dot",{"Array | DenseMatrix, Array | DenseMatrix":function(c,u){var A=o(c,u),d=De(c)?c._data:c,b=De(c)?c._datatype||c.getDataType():void 0,h=De(u)?u._data:u,l=De(u)?u._datatype||u.getDataType():void 0,g=s(c).length===2,m=s(u).length===2,E=a,p=t;if(b&&l&&b===l&&typeof b=="string"&&b!=="mixed"){var C=b;E=e.find(a,[C,C]),p=e.find(t,[C,C])}if(!g&&!m){for(var I=p(i(d[0]),h[0]),x=1;x<A;x++)I=E(I,p(i(d[x]),h[x]));return I}if(!g&&m){for(var y=p(i(d[0]),h[0][0]),w=1;w<A;w++)y=E(y,p(i(d[w]),h[w][0]));return y}if(g&&!m){for(var D=p(i(d[0][0]),h[0]),F=1;F<A;F++)D=E(D,p(i(d[F][0]),h[F]));return D}if(g&&m){for(var j=p(i(d[0][0]),h[0][0]),M=1;M<A;M++)j=E(j,p(i(d[M][0]),h[M][0]));return j}},"SparseMatrix, SparseMatrix":function(c,u){o(c,u);for(var A=c._index,d=c._values,b=u._index,h=u._values,l=0,g=a,m=t,E=0,p=0;E<A.length&&p<b.length;){var C=A[E],I=b[p];C<I?E++:C>I?p++:C===I&&(l=g(l,m(d[E],h[p])),E++,p++)}return l}});function o(c,u){var A,d,b=s(c),h=s(u);if(b.length===1)A=b[0];else{if(b.length!==2||b[1]!==1)throw new RangeError("Expected a column vector, instead got a matrix of size ("+b.join(", ")+")");A=b[0]}if(h.length===1)d=h[0];else{if(h.length!==2||h[1]!==1)throw new RangeError("Expected a column vector, instead got a matrix of size ("+h.join(", ")+")");d=h[0]}if(A!==d)throw new RangeError("Vectors must have equal length ("+A+" != "+d+")");if(A===0)throw new RangeError("Cannot calculate the dot product of empty vectors");return A}function s(c){return De(c)?c.size():n(c)}}),bc=ie("det",["typed","matrix","subtractScalar","multiply","divideScalar","isZero","unaryMinus"],r=>{var{typed:e,matrix:a,subtractScalar:t,multiply:i,divideScalar:n,isZero:o,unaryMinus:s}=r;return e("det",{any:function(c){return ye(c)},"Array | Matrix":function(c){var u;switch((u=De(c)?c.size():Array.isArray(c)?(c=a(c)).size():[]).length){case 0:return ye(c);case 1:if(u[0]===1)return ye(c.valueOf()[0]);if(u[0]===0)return 1;throw new RangeError("Matrix must be square (size: "+Fe(u)+")");case 2:var A=u[0],d=u[1];if(A===d)return function(b,h){if(h===1)return ye(b[0][0]);if(h===2)return t(i(b[0][0],b[1][1]),i(b[1][0],b[0][1]));for(var l=!1,g=new Array(h).fill(0).map((F,j)=>j),m=0;m<h;m++){var E=g[m];if(o(b[E][m])){var p=void 0;for(p=m+1;p<h;p++)if(!o(b[g[p]][m])){E=g[p],g[p]=g[m],g[m]=E,l=!l;break}if(p===h)return b[E][m]}for(var C=b[E][m],I=m===0?1:b[g[m-1]][m-1],x=m+1;x<h;x++)for(var y=g[x],w=m+1;w<h;w++)b[y][w]=n(t(i(b[y][w],C),i(b[y][m],b[E][w])),I)}var D=b[g[h-1]][h-1];return l?s(D):D}(c.clone().valueOf(),A);if(d===0)return 1;throw new RangeError("Matrix must be square (size: "+Fe(u)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+Fe(u)+")")}}})}),gc=ie("inv",["typed","matrix","divideScalar","addScalar","multiply","unaryMinus","det","identity","abs"],r=>{var{typed:e,matrix:a,divideScalar:t,addScalar:i,multiply:n,unaryMinus:o,det:s,identity:c,abs:u}=r;return e("inv",{"Array | Matrix":function(d){var b=De(d)?d.size():Le(d);switch(b.length){case 1:if(b[0]===1)return De(d)?a([t(1,d.valueOf()[0])]):[t(1,d[0])];throw new RangeError("Matrix must be square (size: "+Fe(b)+")");case 2:var h=b[0],l=b[1];if(h===l)return De(d)?a(A(d.valueOf(),h,l),d.storage()):A(d,h,l);throw new RangeError("Matrix must be square (size: "+Fe(b)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+Fe(b)+")")}},any:function(d){return t(1,d)}});function A(d,b,h){var l,g,m,E,p;if(b===1){if((E=d[0][0])===0)throw Error("Cannot calculate inverse, determinant is zero");return[[t(1,E)]]}if(b===2){var C=s(d);if(C===0)throw Error("Cannot calculate inverse, determinant is zero");return[[t(d[1][1],C),t(o(d[0][1]),C)],[t(o(d[1][0]),C),t(d[0][0],C)]]}var I=d.concat();for(l=0;l<b;l++)I[l]=I[l].concat();for(var x=c(b).valueOf(),y=0;y<h;y++){var w=u(I[y][y]),D=y;for(l=y+1;l<b;)u(I[l][y])>w&&(w=u(I[l][y]),D=l),l++;if(w===0)throw Error("Cannot calculate inverse, determinant is zero");(l=D)!==y&&(p=I[y],I[y]=I[l],I[l]=p,p=x[y],x[y]=x[l],x[l]=p);var F=I[y],j=x[y];for(l=0;l<b;l++){var M=I[l],_=x[l];if(l!==y){if(M[y]!==0){for(m=t(o(M[y]),F[y]),g=y;g<h;g++)M[g]=i(M[g],n(m,F[g]));for(g=0;g<h;g++)_[g]=i(_[g],n(m,j[g]))}}else{for(m=F[y],g=y;g<h;g++)M[g]=t(M[g],m);for(g=0;g<h;g++)_[g]=t(_[g],m)}}}return x}}),Sn="gamma",fc=ie(Sn,["typed","config","multiplyScalar","pow","BigNumber","Complex"],r=>{var{typed:e,config:a,multiplyScalar:t,pow:i,BigNumber:n,Complex:o}=r;return e(Sn,{number:xt,Complex:function c(u){if(u.im===0)return xt(u.re);if(u.re<.5){var A=new o(1-u.re,-u.im),d=new o(Math.PI*u.re,Math.PI*u.im);return new o(Math.PI).div(d.sin()).div(c(A))}u=new o(u.re-1,u.im);for(var b=new o(qa[0],0),h=1;h<qa.length;++h){var l=new o(qa[h],0);b=b.add(l.div(u.add(h)))}var g=new o(u.re+Bn+.5,u.im),m=Math.sqrt(2*Math.PI),E=g.pow(u.add(.5)),p=g.neg().exp();return b.mul(m).mul(E).mul(p)},BigNumber:function(c){if(c.isInteger())return c.isNegative()||c.isZero()?new n(1/0):s(c.minus(1));if(!c.isFinite())return new n(c.isNegative()?NaN:1/0);throw new Error("Integer BigNumber expected")}});function s(c){if(c<8)return new n([1,1,2,6,24,120,720,5040][c]);var u=a.precision+(0|Math.log(c.toNumber())),A=n.clone({precision:u});if(c%2==1)return c.times(s(new n(c-1)));for(var d=c,b=new A(c),h=c.toNumber();d>2;)h+=d-=2,b=b.times(h);return new n(b.toPrecision(n.precision))}}),Ft=RA({config:va}),Cr=TA({}),Tn=UA({}),Ir=LA({}),Br=PA({Matrix:Ir}),Be=Ps({BigNumber:Ft,Complex:Cr,DenseMatrix:Br,Fraction:Tn}),pc=ZA({typed:Be}),Dr=$A({typed:Be}),mc=nc({typed:Be}),yr=OA({config:va,typed:Be}),Ec=qA({equalScalar:yr,typed:Be}),wr=rc({typed:Be}),Nn=VA({typed:Be}),Un=JA({Matrix:Ir,equalScalar:yr,typed:Be}),Cc=ec({typed:Be}),Ic=HA({BigNumber:Ft,typed:Be}),Ka=XA({DenseMatrix:Br,Matrix:Ir,SparseMatrix:Un,typed:Be}),Ln=WA({Fraction:Tn,typed:Be}),Gn=oc({BigNumber:Ft,DenseMatrix:Br,SparseMatrix:Un,config:va,matrix:Ka,typed:Be}),Bc=uc({bignumber:Ic,fraction:Ln,number:Nn}),Dc=cc({matrix:Ka,config:va,typed:Be}),_n=YA({typed:Be}),zn=dc({numeric:Bc,typed:Be}),xr=ic({addScalar:Dr,dot:lc({addScalar:Dr,conj:mc,multiplyScalar:wr,size:Dc,typed:Be}),equalScalar:yr,matrix:Ka,multiplyScalar:wr,typed:Be}),Pn=fc({BigNumber:Ft,Complex:Cr,config:va,multiplyScalar:wr,pow:hc({Complex:Cr,config:va,fraction:Ln,identity:Gn,inv:gc({abs:pc,addScalar:Dr,det:bc({divideScalar:zn,isZero:Ec,matrix:Ka,multiply:xr,subtractScalar:Cc,typed:Be,unaryMinus:_n}),divideScalar:zn,identity:Gn,matrix:Ka,multiply:xr,typed:Be,unaryMinus:_n}),matrix:Ka,multiply:xr,number:Nn,typed:Be}),typed:Be});class yc{constructor(e){if(e){const{toElementFn:a}=e;if(typeof a=="function")this._toElementFn=a;else if(a)throw new TypeError("toElementFn must be a function type")}}_toElementFn;get toElementFn(){return this._toElementFn}*[Symbol.iterator](...e){yield*this._getIterator(...e)}*values(){for(const e of this)yield e}every(e,a){let t=0;for(const i of this)if(!e.call(a,i,t++,this))return!1;return!0}some(e,a){let t=0;for(const i of this)if(e.call(a,i,t++,this))return!0;return!1}forEach(e,a){let t=0;for(const i of this)e.call(a,i,t++,this)}find(e,a){let t=0;for(const i of this)if(e.call(a,i,t++,this))return i}has(e){for(const a of this)if(a===e)return!0;return!1}reduce(e,a){let t=a??0,i=0;for(const n of this)t=e(t,n,i++,this);return t}toArray(){return[...this]}toVisual(){return[...this]}print(){console.log(this.toVisual())}}/**
|
|
25
25
|
* data-structure-typed
|
|
26
26
|
* @author Kirk Qi
|
|
27
27
|
* @copyright Copyright (c) 2022 Kirk Qi <qilinaus@gmail.com>
|
|
28
28
|
* @license MIT License
|
|
29
|
-
*/class ja extends
|
|
29
|
+
*/class ja extends yc{constructor(e=[],a){if(super(a),a){const{comparator:t}=a;t&&(this._comparator=t)}this.addMany(e)}_elements=[];get elements(){return this._elements}get size(){return this.elements.length}get leaf(){return this.elements[this.size-1]??void 0}static heapify(e,a){return new ja(e,a)}add(e){return this._elements.push(e),this._bubbleUp(this.elements.length-1)}addMany(e){const a=[];for(const t of e)this._toElementFn?a.push(this.add(this._toElementFn(t))):a.push(this.add(t));return a}poll(){if(this.elements.length===0)return;const e=this.elements[0],a=this.elements.pop();return this.elements.length&&(this.elements[0]=a,this._sinkDown(0,this.elements.length>>1)),e}peek(){return this.elements[0]}isEmpty(){return this.size===0}clear(){this._elements=[]}refill(e){return this._elements=e,this.fix()}has(e){return this.elements.includes(e)}delete(e){const a=this.elements.indexOf(e);return!(a<0)&&(a===0?this.poll():a===this.elements.length-1?this.elements.pop():(this.elements.splice(a,1,this.elements.pop()),this._bubbleUp(a),this._sinkDown(a,this.elements.length>>1)),!0)}dfs(e="PRE"){const a=[],t=i=>{const n=2*i+1,o=n+1;i<this.size&&(e==="IN"?(t(n),a.push(this.elements[i]),t(o)):e==="PRE"?(a.push(this.elements[i]),t(n),t(o)):e==="POST"&&(t(n),t(o),a.push(this.elements[i])))};return t(0),a}clone(){return new ja(this,{comparator:this.comparator,toElementFn:this.toElementFn})}sort(){const e=[],a=new ja(this,{comparator:this.comparator});for(;a.size!==0;){const t=a.poll();t!==void 0&&e.push(t)}return e}fix(){const e=[];for(let a=Math.floor(this.size/2);a>=0;a--)e.push(this._sinkDown(a,this.elements.length>>1));return e}filter(e,a){const t=new ja([],{toElementFn:this.toElementFn,comparator:this.comparator});let i=0;for(const n of this)e.call(a,n,i,this)&&t.add(n),i++;return t}map(e,a,t,i){const n=new ja([],{comparator:a,toElementFn:t});let o=0;for(const s of this)n.add(e.call(i,s,o,this)),o++;return n}_DEFAULT_COMPARATOR=(e,a)=>{if(typeof e=="object"||typeof a=="object")throw TypeError("When comparing object types, a custom comparator must be defined in the constructor's options parameter.");return e>a?1:e<a?-1:0};_comparator=this._DEFAULT_COMPARATOR;get comparator(){return this._comparator}*_getIterator(){for(const e of this.elements)yield e}_bubbleUp(e){const a=this.elements[e];for(;e>0;){const t=e-1>>1,i=this.elements[t];if(this.comparator(i,a)<=0)break;this.elements[e]=i,e=t}return this.elements[e]=a,!0}_sinkDown(e,a){const t=this.elements[e];for(;e<a;){let i=e<<1|1;const n=i+1;let o=this.elements[i];if(n<this.elements.length&&this.comparator(o,this.elements[n])>0&&(i=n,o=this.elements[n]),this.comparator(o,t)>=0)break;this.elements[e]=o,e=i}return this.elements[e]=t,!0}}(function(r){r[r.VISIT=0]="VISIT",r[r.PROCESS=1]="PROCESS"})(jn||(jn={}));class $a extends ja{constructor(e=[],a){super(e,a)}clone(){return new $a(this,{comparator:this.comparator,toElementFn:this.toElementFn})}filter(e,a){const t=new $a([],{toElementFn:this.toElementFn,comparator:this.comparator});let i=0;for(const n of this)e.call(a,n,i,this)&&t.add(n),i++;return t}map(e,a,t,i){const n=new $a([],{comparator:a,toElementFn:t});let o=0;for(const s of this)n.add(e.call(i,s,o,this)),o++;return n}}class Oa extends $a{constructor(e=[],a){super(e,a)}clone(){return new Oa(this,{comparator:this.comparator,toElementFn:this.toElementFn})}filter(e,a){const t=new Oa([],{toElementFn:this.toElementFn,comparator:this.comparator});let i=0;for(const n of this)e.call(a,n,i,this)&&t.add(n),i++;return t}map(e,a,t,i){const n=new Oa([],{comparator:a,toElementFn:t});let o=0;for(const s of this)n.add(e.call(i,s,o,this)),o++;return n}}function qn(r){return new Worker(""+(typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__dirname+"/assets/PointsManager.worker-dH1fNyu8.js").href:new URL("assets/PointsManager.worker-dH1fNyu8.js",typeof document>"u"?location.href:document.currentScript&&document.currentScript.tagName.toUpperCase()==="SCRIPT"&&document.currentScript.src||document.baseURI).href),{type:"module",name:r?.name})}new f.Box3,new f.Vector3,new f.Vector3,new f.Vector3,new f.Vector3;const Qt=new f.Vector3,wc=new f.Vector3,Kn=new f.Matrix3;Kn.set(1,0,0,0,0,1,0,-1,0);const xc=new f.Matrix4().set(1,0,0,0,0,0,-1,0,0,1,0,0,0,0,0,1);function vr(r,e){return(f.DataUtils.toHalfFloat(r)|f.DataUtils.toHalfFloat(e)<<16)>>>0}class vc extends f.Mesh{constructor(e,a,t){const n=Math.min(Math.ceil(4)*1024,Math.pow(1024,2));let o=1*Math.pow(1024,2);o=Math.floor(o/n)*n;const s=new f.WebGL3DRenderTarget(1024,1024,1,{magFilter:f.NearestFilter,minFilter:f.NearestFilter,type:f.UnsignedIntType,format:f.RGBAIntegerFormat,anisotropy:0,depthBuffer:!1,resolveDepthBuffer:!1});s.texture.type=f.UnsignedIntType,s.texture.format=f.RGBAIntegerFormat,s.texture.internalFormat="RGBA32UI",e.initRenderTarget(s);const c=new f.WebGL3DRenderTarget(1024,1024,1,{magFilter:f.NearestFilter,minFilter:f.NearestFilter,anisotropy:0,type:f.UnsignedIntType,format:f.RGBAIntegerFormat,depthBuffer:!1,resolveDepthBuffer:!1});c.texture.type=f.UnsignedIntType,c.texture.format=f.RGBAIntegerFormat,c.texture.internalFormat="RGBA32UI",e.initRenderTarget(c);const u=new f.ShaderMaterial({glslVersion:f.GLSL3,uniforms:{textureSize:{value:1024},numSlices:{value:1},covarianceTexture:{value:c.texture},positionColorTexture:{value:s.texture},zUpToYUpMatrix3x3:{value:Kn},sizeMultiplier:{value:1},cropRadius:{value:Number.MAX_VALUE},viewportPixelSize:{value:new f.Vector2},k:{value:2},beta_k:{value:2},minSplatPixelSize:{value:0},minOpacity:{value:.01},culling:{value:!1},antialiasingFactor:{value:2}},vertexShader:On(),fragmentShader:t||Jn(),transparent:!0,side:f.FrontSide,depthTest:!1,depthWrite:!1}),A=new f.InstancedBufferGeometry,d=new Float32Array([-.5,.5,0,.5,.5,0,-.5,-.5,0,.5,-.5,0]);A.setIndex([0,2,1,2,3,1]),A.setAttribute("position",new f.BufferAttribute(d,3));const b=new Uint32Array(o),h=new f.InstancedBufferAttribute(b,1,!1);h.needsUpdate=!0,h.setUsage(f.DynamicDrawUsage),A.setAttribute("order",h),A.instanceCount=0,super(A,u),this.matrixAutoUpdate=!1,this.numBatches=0,this.numVisibleBatches=0,this.orderAttribute=h,this.textureSize=1024,this.numTextures=1,this.batchSize=n,this.maxSplats=o,this.numSplatsRendered=0,this.positionColorRenderTarget=s,this.covarianceRenderTarget=c,this.renderer=e,this.sortID=0,this.freeAddresses=new Oa;for(let g=0;g<this.maxSplats;g+=n)this.freeAddresses.add(g);this.worker=new qn({}),this.sortListeners=[],this.worker.onmessage=g=>{const m=new Uint32Array(g.data.order);if(this.numSplatsRendered=m.length,m.length>this.orderAttribute.count){const E=new f.InstancedBufferGeometry,p=new Float32Array([-.5,.5,0,.5,.5,0,-.5,-.5,0,.5,-.5,0]),C=[0,2,1,2,3,1];E.setIndex(C),E.setAttribute("position",new f.BufferAttribute(p,3));const I=new Uint32Array(this.maxSplats),x=new f.InstancedBufferAttribute(I,1,!1);x.needsUpdate=!0,x.setUsage(f.DynamicDrawUsage),E.setAttribute("order",x),E.instanceCount=0,this.geometry.dispose(),this.geometry=E,this.orderAttribute=x}this.orderAttribute.clearUpdateRanges(),this.orderAttribute.set(m),this.orderAttribute.addUpdateRange(0,m.length),this.orderAttribute.needsUpdate=!0,this.geometry.instanceCount=g.data.count,this.geometry.needsUpdate=!0;for(let E=this.sortListeners.length-1;E>=0;E--)this.sortListeners[E](g.data.id)&&this.sortListeners.splice(E,1)},this.cameraPosition=new f.Vector3(0,0,0),this.viewProjModel,this.rotateOnAxis(new f.Vector3(1,0,0),.5*Math.PI),this.frustumCulled=!1,this.copyMaterial2D=new f.ShaderMaterial({glslVersion:f.GLSL3,uniforms:{sourceTexture:{}},vertexShader:Vn(),fragmentShader:`
|
|
30
30
|
precision highp float;
|
|
31
31
|
precision highp int;
|
|
32
32
|
precision highp usampler2D;
|
|
@@ -38,7 +38,7 @@ in vec2 vUv;
|
|
|
38
38
|
|
|
39
39
|
void main() {
|
|
40
40
|
fragColor = texture( sourceTexture, vUv );
|
|
41
|
-
}`,transparent:!1,side:f.FrontSide,depthTest:!1,depthWrite:!1}),this.copyMaterial3D=new f.ShaderMaterial({glslVersion:f.GLSL3,uniforms:{sourceTexture:{},w:{value:0}},vertexShader:
|
|
41
|
+
}`,transparent:!1,side:f.FrontSide,depthTest:!1,depthWrite:!1}),this.copyMaterial3D=new f.ShaderMaterial({glslVersion:f.GLSL3,uniforms:{sourceTexture:{},w:{value:0}},vertexShader:Vn(),fragmentShader:`
|
|
42
42
|
precision highp float;
|
|
43
43
|
precision highp int;
|
|
44
44
|
precision highp usampler3D;
|
|
@@ -51,7 +51,7 @@ in vec2 vUv;
|
|
|
51
51
|
|
|
52
52
|
void main() {
|
|
53
53
|
fragColor = texture( sourceTexture, vec3(vUv, w) );
|
|
54
|
-
}`,transparent:!1,side:f.FrontSide,depthTest:!1,depthWrite:!1}),this.copyCamera=new f.OrthographicCamera(-.5,.5,.5,-.5,.1,10),this.copyCamera.position.z=1,this.copyScene=new f.Scene;const
|
|
54
|
+
}`,transparent:!1,side:f.FrontSide,depthTest:!1,depthWrite:!1}),this.copyCamera=new f.OrthographicCamera(-.5,.5,.5,-.5,.1,10),this.copyCamera.position.z=1,this.copyScene=new f.Scene;const l=new f.PlaneGeometry(1,1);this.copyQuad=new f.Mesh(l,this.copyMaterial2D),this.copyScene.add(this.copyQuad),this.copyScene.matrixAutoUpdate=!1,this.copyQuad.matrixAutoUpdate=!1,this.splatsCPUCuling=!1}setQuality(e){const a=2+2*(e=Math.max(0,Math.min(1,1-e)));this.material.uniforms.k.value=a,this.material.uniforms.beta_k.value=Math.pow(4*Pn(2/a)/a,a/2),this.material.uniforms.minSplatPixelSize.value=5*e,this.material.uniforms.minOpacity.value=.01}setSplatsCPUCulling(e){this.splatsCPUCuling=e,this.material.uniforms.culling.value=e}updateShaderParams(e){e.projectionMatrix.elements,this.renderer.getSize(this.material.uniforms.viewportPixelSize.value);const a=this.renderer.getPixelRatio();this.material.uniforms.viewportPixelSize.value.multiplyScalar(a),this.material.uniforms.antialiasingFactor.value=2}dispose(){this.material.dispose(),this.copyMaterial2D.dispose(),this.copyMaterial3D.dispose(),this.covarianceRenderTarget.dispose(),this.positionColorRenderTarget.dispose(),this.worker.terminate(),this.worker=null,this.orderAttribute.array=void 0,this.geometry.dispose()}copyTex2D(e,a,t,i){this.copyMaterial2D.uniforms.sourceTexture.value=e;const n=this.renderer.autoClear,o=this.renderer.getRenderTarget();this.renderer.autoClear=!1;const s=t[2]-t[0],c=t[3]-t[1];a.viewport.set(t[0],t[1],s,c),this.renderer.setRenderTarget(a,i),this.renderer.render(this.copyScene,this.copyCamera),this.renderer.setRenderTarget(o),this.renderer.autoClear=n}copyTex3D(e,a,t){this.copyMaterial3D.uniforms.sourceTexture.value=e;const i=this.renderer.autoClear,n=this.renderer.getRenderTarget();this.renderer.autoClear=!1,this.copyQuad.material=this.copyMaterial3D;for(let o=0;o<t;o++)this.renderer.setRenderTarget(a,o),this.copyMaterial3D.uniforms.w.value=(o+.5)/t,this.renderer.render(this.copyScene,this.copyCamera);this.copyQuad.material=this.copyMaterial2D,this.renderer.setRenderTarget(n),this.renderer.autoClear=i}setSplatsSizeMultiplier(e){this.material.uniforms.sizeMultiplier.value=e}setSplatsCropRadius(e){this.material.uniforms.cropRadius.value=e}sort(e,a){this.worker&&(e?this.cameraPosition&&e.equals(this.cameraPosition)||(this.cameraPosition.copy(e),a?(this.viewProjModel||(this.viewProjModel=new f.Matrix4),this.viewProjModel.copy(a),this.viewProjModel.multiply(xc)):this.viewProjModel=void 0,this.worker.postMessage({method:"sort",xyz:[this.cameraPosition.x,this.cameraPosition.z,-this.cameraPosition.y],vpm:this.viewProjModel&&this.splatsCPUCuling?this.viewProjModel.toArray():void 0,id:this.sortID++})):this.worker.postMessage({method:"sort",xyz:[this.cameraPosition.x,this.cameraPosition.z,-this.cameraPosition.y],vpm:this.viewProjModel&&this.splatsCPUCuling?this.viewProjModel.toArray():void 0,id:this.sortID++}))}raycast(e,a){}addSplatsTile(e,a,t,i){if(!this.worker)return;const n=this,o=e.data?e.data.array:e.array,s=e.data&&e.data.isInterleavedBuffer?e.data.stride:3,c=e.data&&e.data.isInterleavedBuffer?e.offset:0,u=Math.ceil(o.length/(this.batchSize*s)),A=[],d=[];let b=()=>{};const h=new Float32Array(o.length/s*3),l=new Uint32Array(h.buffer,h.byteOffset,h.length);for(let m=0;m<o.length/3;m++)h[3*m]=o[m*s+c],h[3*m+1]=o[m*s+c+1],h[3*m+2]=o[m*s+c+2];b=(m,E,p)=>{const C=p*p;for(let I=0;I<h.length;I+=3){Qt.set(h[I],-h[I+2],h[I+1]);const x=wc.copy(Qt).sub(m.origin).dot(m.direction);x>0&&m.distanceSqToPoint(Qt)<C&&E.push({distance:x,point:Qt.clone(),type:"splat"})}},u>this.freeAddresses.size&&this.growTextures();for(let m=0;m<u;m++){const E=this.freeAddresses.poll();isNaN(E)&&console.log("insuficient texture size to store splats info"),A.push(E),d.push(3*E);const p=m*this.batchSize;this.addSplatsBatch(p,E,l,a,t,i)}n.worker.postMessage({method:"addBatches",insertionIndexes:d,positions:o.buffer,offset:c,stride:s,batchSize:n.batchSize},[o.buffer]);let g=!1;return{hide:()=>{g==1&&n.worker&&(n.numVisibleBatches--,g=!1,n.worker.postMessage({method:"hideBatches",insertionIndexes:d,xyz:[n.cameraPosition.x,n.cameraPosition.z,-n.cameraPosition.y],vpm:this.viewProjModel&&this.splatsCPUCuling?this.viewProjModel.toArray():void 0,id:n.sortID++}))},show:m=>{if(g==0&&n.worker){n.numVisibleBatches--,g=!0;const E=n.sortID,p=C=>C>=E&&(m(),!0);n.sortListeners.push(p),n.worker.postMessage({method:"showBatches",insertionIndexes:d,xyz:[n.cameraPosition.x,n.cameraPosition.z,-n.cameraPosition.y],vpm:this.viewProjModel&&this.splatsCPUCuling?this.viewProjModel.toArray():void 0,id:n.sortID++})}},remove:()=>{n.worker&&(b=void 0,n.worker.postMessage({method:"removeBatches",insertionIndexes:d,xyz:[n.cameraPosition.x,n.cameraPosition.z,-n.cameraPosition.y],vpm:this.viewProjModel&&this.splatsCPUCuling?this.viewProjModel.toArray():void 0,id:n.sortID++}),A.forEach(m=>n.freeAddresses.add(m)))},sort:this.sort,raycast:b,isSplatsBatch:!0}}addSplatsBatch(e,a,t,i,n,o){const s=new Uint32Array(4*this.batchSize),c=new Uint32Array(4*this.batchSize);for(let l=a;l<a+this.batchSize;l++){const g=l-a,m=4*g,E=e+g,p=3*(e+g);if(E>=t.count)break;s[m]=t[p],s[m+1]=t[p+1],s[m+2]=t[p+2];const C=0|Math.floor(255*i.getX(E)+.5),I=0|Math.floor(255*i.getY(E)+.5),x=0|Math.floor(255*i.getZ(E)+.5),y=0|Math.floor(255*i.getW(E)+.5);s[m+3]=C|I<<8|x<<16|y<<24,c[m]=vr(n.getX(E),n.getY(E)),c[m+1]=vr(n.getZ(E),o.getX(E)),c[m+2]=vr(o.getY(E),o.getZ(E))}const u=Math.floor(a/Math.pow(this.textureSize,2)),A=Math.ceil(this.batchSize/this.textureSize),d=[0,a/this.textureSize-u*this.textureSize,this.textureSize];d.push(d[1]+A);const b=new f.DataTexture(s,this.textureSize,A,f.RGBAIntegerFormat,f.UnsignedIntType);b.internalFormat="RGBA32UI",b.generateMipmaps=!1,b.magFilter=f.NearestFilter,b.minFilter=f.NearestFilter,b.anisotropy=0,b.needsUpdate=!0,this.renderer.initTexture(b),this.copyTex2D(b,this.positionColorRenderTarget,d,u),b.dispose();const h=new f.DataTexture(c,this.textureSize,A,f.RGBAIntegerFormat,f.UnsignedIntType);h.internalFormat="RGBA32UI",h.generateMipmaps=!1,h.magFilter=f.NearestFilter,h.minFilter=f.NearestFilter,h.anisotropy=0,h.needsUpdate=!0,this.renderer.initTexture(h),this.copyTex2D(h,this.covarianceRenderTarget,d,u),h.dispose()}growTextures(){for(let i=this.maxSplats;i<this.maxSplats+this.textureSize*this.textureSize;i+=this.batchSize)this.freeAddresses.add(i);this.maxSplats+=this.textureSize*this.textureSize;const e=this.numTextures+1,a=new f.WebGL3DRenderTarget(this.textureSize,this.textureSize,e,{magFilter:f.NearestFilter,minFilter:f.NearestFilter,type:f.UnsignedIntType,format:f.RGBAIntegerFormat,anisotropy:0,depthBuffer:!1,resolveDepthBuffer:!1});a.texture.type=f.UnsignedIntType,a.texture.internalFormat="RGBA32UI",a.texture.format=f.RGBAIntegerFormat,this.renderer.initRenderTarget(a),this.copyTex3D(this.positionColorRenderTarget.texture,a,this.numTextures),this.positionColorRenderTarget.dispose(),this.positionColorRenderTarget=a,this.material.uniforms.positionColorTexture.value=this.positionColorRenderTarget.texture;const t=new f.WebGL3DRenderTarget(this.textureSize,this.textureSize,e,{magFilter:f.NearestFilter,minFilter:f.NearestFilter,anisotropy:0,type:f.UnsignedIntType,format:f.RGBAIntegerFormat,depthBuffer:!1,resolveDepthBuffer:!1});t.texture.type=f.UnsignedIntType,t.texture.internalFormat="RGBA32UI",t.texture.format=f.RGBAIntegerFormat,this.renderer.initRenderTarget(t),this.copyTex3D(this.covarianceRenderTarget.texture,t,this.numTextures),this.covarianceRenderTarget.dispose(),this.covarianceRenderTarget=t,this.material.uniforms.covarianceTexture.value=this.covarianceRenderTarget.texture,this.numTextures=e,this.material.uniforms.numSlices.value=this.numTextures}}function On(){return`
|
|
55
55
|
precision highp float;
|
|
56
56
|
precision highp int;
|
|
57
57
|
precision highp usampler3D;
|
|
@@ -264,7 +264,6 @@ void main() {
|
|
|
264
264
|
`}function Jn(){return`
|
|
265
265
|
precision highp float;
|
|
266
266
|
precision highp int;
|
|
267
|
-
precision highp usampler3D;
|
|
268
267
|
|
|
269
268
|
in float stds;
|
|
270
269
|
in vec4 color;
|
|
@@ -292,7 +291,7 @@ void main() {
|
|
|
292
291
|
|
|
293
292
|
//gl_FragDepth = splatDepth;
|
|
294
293
|
|
|
295
|
-
}`}function
|
|
294
|
+
}`}function Vn(){return`
|
|
296
295
|
|
|
297
296
|
precision highp float;
|
|
298
297
|
precision highp int;
|
|
@@ -302,7 +301,7 @@ out vec2 vUv;
|
|
|
302
301
|
void main() {
|
|
303
302
|
vUv = uv;
|
|
304
303
|
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
305
|
-
}`}const
|
|
304
|
+
}`}const kt=new f.Vector3,Fc=new f.Vector3,Hn=new f.Matrix3;Hn.set(1,0,0,0,0,1,0,-1,0);const Qc=new f.Matrix4().set(1,0,0,0,0,0,-1,0,0,1,0,0,0,0,0,1);class kc extends f.Mesh{constructor(e,a,t){const n=Math.min(Math.ceil(4)*1024,Math.pow(1024,2));let o=1*Math.pow(1024,2);o=Math.floor(o/n)*n;const s=new f.WebGL3DRenderTarget(1024,1024,1,{magFilter:f.NearestFilter,minFilter:f.NearestFilter,type:f.HalfFloatType,format:f.RGBAFormat,anisotropy:0,depthBuffer:!1,resolveDepthBuffer:!1});s.texture.type=f.HalfFloatType,s.texture.format=f.RGBAFormat,s.texture.internalFormat="RGBA16F",e.initRenderTarget(s);const c=new f.WebGL3DRenderTarget(1024,1024,1,{magFilter:f.NearestFilter,minFilter:f.NearestFilter,type:f.UnsignedByteType,format:f.RGBAFormat,anisotropy:0,depthBuffer:!1,resolveDepthBuffer:!1});c.texture.type=f.UnsignedByteType,c.texture.format=f.RGBAFormat,c.texture.internalFormat="RGBA8",e.initRenderTarget(c);const u=new f.WebGL3DRenderTarget(1024,1024,1,{magFilter:f.NearestFilter,minFilter:f.NearestFilter,anisotropy:0,type:f.HalfFloatType,format:f.RGBAFormat,depthBuffer:!1,resolveDepthBuffer:!1});u.texture.type=f.HalfFloatType,u.texture.format=f.RGBAFormat,u.texture.internalFormat="RGBA16F",e.initRenderTarget(u);const A=new f.WebGL3DRenderTarget(1024,1024,1,{magFilter:f.NearestFilter,minFilter:f.NearestFilter,anisotropy:0,type:f.HalfFloatType,format:f.RGBAFormat,depthBuffer:!1,resolveDepthBuffer:!1});A.texture.type=f.HalfFloatType,A.texture.format=f.RGBAFormat,A.texture.internalFormat="RGBA16F",e.initRenderTarget(A);const d=new f.ShaderMaterial({glslVersion:f.GLSL3,uniforms:{textureSize:{value:1024},numSlices:{value:1},covarianceTexture1:{value:u.texture},covarianceTexture2:{value:A.texture},positionTexture:{value:s.texture},colorTexture:{value:c.texture},zUpToYUpMatrix3x3:{value:Hn},sizeMultiplier:{value:1},cropRadius:{value:Number.MAX_VALUE},cameraNear:{value:.01},cameraFar:{value:10},computeLinearDepth:{value:!0},viewportPixelSize:{value:new f.Vector2},k:{value:2},beta_k:{value:2},minSplatPixelSize:{value:0},minOpacity:{value:.01},culling:{value:!0},antialiasingFactor:{value:2}},vertexShader:`
|
|
306
305
|
precision highp float;
|
|
307
306
|
precision highp int;
|
|
308
307
|
precision highp sampler3D;
|
|
@@ -524,7 +523,7 @@ void main() {
|
|
|
524
523
|
|
|
525
524
|
//gl_FragDepth = splatDepth;
|
|
526
525
|
|
|
527
|
-
}`,transparent:!0,side:f.FrontSide,depthTest:!1,depthWrite:!1}),
|
|
526
|
+
}`,transparent:!0,side:f.FrontSide,depthTest:!1,depthWrite:!1}),b=new f.InstancedBufferGeometry,h=new Float32Array([-.5,.5,0,.5,.5,0,-.5,-.5,0,.5,-.5,0]);b.setIndex([0,2,1,2,3,1]),b.setAttribute("position",new f.BufferAttribute(h,3));const l=new Uint32Array(o),g=new f.InstancedBufferAttribute(l,1,!1);g.needsUpdate=!0,g.setUsage(f.DynamicDrawUsage),b.setAttribute("order",g),b.instanceCount=0,super(b,d),this.matrixAutoUpdate=!1,this.numBatches=0,this.numVisibleBatches=0,this.orderAttribute=g,this.textureSize=1024,this.numTextures=1,this.batchSize=n,this.maxSplats=o,this.numSplatsRendered=0,this.positionRenderTarget=s,this.colorRenderTarget=c,this.covarianceRenderTarget1=u,this.covarianceRenderTarget2=A,this.renderer=e,this.sortID=0,this.freeAddresses=new Oa;for(let E=0;E<this.maxSplats;E+=n)this.freeAddresses.add(E);this.worker=new qn({}),this.sortListeners=[],this.worker.onmessage=E=>{const p=new Uint32Array(E.data.order);if(this.numSplatsRendered=p.length,p.length>this.orderAttribute.count){const C=new f.InstancedBufferGeometry,I=new Float32Array([-.5,.5,0,.5,.5,0,-.5,-.5,0,.5,-.5,0]),x=[0,2,1,2,3,1];C.setIndex(x),C.setAttribute("position",new f.BufferAttribute(I,3));const y=new Uint32Array(this.maxSplats),w=new f.InstancedBufferAttribute(y,1,!1);w.needsUpdate=!0,w.setUsage(f.DynamicDrawUsage),C.setAttribute("order",w),C.instanceCount=0,this.geometry.dispose(),this.geometry=C,this.orderAttribute=w}this.orderAttribute.clearUpdateRanges(),this.orderAttribute.set(p),this.orderAttribute.addUpdateRange(0,p.length),this.orderAttribute.needsUpdate=!0,this.geometry.instanceCount=E.data.count,this.geometry.needsUpdate=!0;for(let C=this.sortListeners.length-1;C>=0;C--)this.sortListeners[C](E.data.id)&&this.sortListeners.splice(C,1)},this.cameraPosition=new f.Vector3(0,0,0),this.viewProjModel,this.rotateOnAxis(new f.Vector3(1,0,0),.5*Math.PI),this.frustumCulled=!1,this.copyMaterial2D=new f.ShaderMaterial({glslVersion:f.GLSL3,uniforms:{sourceTexture:{}},vertexShader:Wn(),fragmentShader:`
|
|
528
527
|
precision highp float;
|
|
529
528
|
precision highp int;
|
|
530
529
|
|
|
@@ -547,7 +546,7 @@ in vec2 vUv;
|
|
|
547
546
|
|
|
548
547
|
void main() {
|
|
549
548
|
fragColor = texture( sourceTexture, vec3(vUv, w) );
|
|
550
|
-
}`,transparent:!1,side:f.FrontSide,depthTest:!1,depthWrite:!1}),this.copyCamera=new f.OrthographicCamera(-.5,.5,.5,-.5,.1,10),this.copyCamera.position.z=1,this.copyScene=new f.Scene;const
|
|
549
|
+
}`,transparent:!1,side:f.FrontSide,depthTest:!1,depthWrite:!1}),this.copyCamera=new f.OrthographicCamera(-.5,.5,.5,-.5,.1,10),this.copyCamera.position.z=1,this.copyScene=new f.Scene;const m=new f.PlaneGeometry(1,1);this.copyQuad=new f.Mesh(m,this.copyMaterial2D),this.copyScene.add(this.copyQuad),this.copyScene.matrixAutoUpdate=!1,this.copyQuad.matrixAutoUpdate=!1}setQuality(e){const a=2+2*(e=Math.max(0,Math.min(1,1-e)));this.material.uniforms.k.value=a,this.material.uniforms.beta_k.value=Math.pow(4*Pn(2/a)/a,a/2),this.material.uniforms.minSplatPixelSize.value=5*e,this.material.uniforms.minOpacity.value=.01}setSplatsCPUCulling(e){this.splatsCPUCuling=e,this.material.uniforms.culling.value=!e}updateShaderParams(e){e.projectionMatrix.elements,this.renderer.getSize(this.material.uniforms.viewportPixelSize.value);const a=this.renderer.getPixelRatio();this.material.uniforms.viewportPixelSize.value.multiplyScalar(a),this.material.uniforms.antialiasingFactor.value=2}dispose(){this.material.dispose(),this.copyMaterial2D.dispose(),this.copyMaterial3D.dispose(),this.positionRenderTarget.dispose(),this.colorRenderTarget.dispose(),this.covarianceRenderTarget1.dispose(),this.covarianceRenderTarget2.dispose(),this.worker.terminate(),this.worker=null,this.orderAttribute.array=void 0,this.geometry.dispose()}copyTex2D(e,a,t,i){this.copyMaterial2D.uniforms.sourceTexture.value=e;const n=this.renderer.autoClear,o=this.renderer.getRenderTarget();this.renderer.autoClear=!1;const s=t[2]-t[0],c=t[3]-t[1];a.viewport.set(t[0],t[1],s,c),this.renderer.setRenderTarget(a,i),this.renderer.render(this.copyScene,this.copyCamera),this.renderer.setRenderTarget(o),this.renderer.autoClear=n}copyTex3D(e,a,t){this.copyMaterial3D.uniforms.sourceTexture.value=e;const i=this.renderer.autoClear,n=this.renderer.getRenderTarget();this.renderer.autoClear=!1,this.copyQuad.material=this.copyMaterial3D;for(let o=0;o<t;o++)this.renderer.setRenderTarget(a,o),this.copyMaterial3D.uniforms.w.value=(o+.5)/t,this.renderer.render(this.copyScene,this.copyCamera);this.copyQuad.material=this.copyMaterial2D,this.renderer.setRenderTarget(n),this.renderer.autoClear=i}setSplatsSizeMultiplier(e){this.material.uniforms.sizeMultiplier.value=e}setSplatsCropRadius(e){this.material.uniforms.cropRadius.value=e}sort(e,a){this.worker&&(e?this.cameraPosition&&e.equals(this.cameraPosition)||(this.cameraPosition.copy(e),a?(this.viewProjModel||(this.viewProjModel=new f.Matrix4),this.viewProjModel.copy(a),this.viewProjModel.multiply(Qc)):this.viewProjModel=void 0,this.worker.postMessage({method:"sort",xyz:[this.cameraPosition.x,this.cameraPosition.z,-this.cameraPosition.y],vpm:this.viewProjModel&&this.splatsCPUCuling?this.viewProjModel.toArray():void 0,id:this.sortID++})):this.worker.postMessage({method:"sort",xyz:[this.cameraPosition.x,this.cameraPosition.z,-this.cameraPosition.y],vpm:this.viewProjModel&&this.splatsCPUCuling?this.viewProjModel.toArray():void 0,id:this.sortID++}))}raycast(e,a){}addSplatsTile(e,a,t,i){if(!this.worker)return;const n=this,o=e.data?e.data.array:e.array,s=e.data&&e.data.isInterleavedBuffer?e.data.stride:3,c=e.data&&e.data.isInterleavedBuffer?e.offset:0,u=Math.ceil(o.length/(this.batchSize*s)),A=[],d=[];let b=()=>{};const h=new Float32Array(o.length/s*3);for(let g=0;g<o.length/3;g++)h[3*g]=o[g*s+c],h[3*g+1]=o[g*s+c+1],h[3*g+2]=o[g*s+c+2];b=(g,m,E)=>{const p=E*E;for(let C=0;C<h.length;C+=3){kt.set(h[C],-h[C+2],h[C+1]);const I=Fc.copy(kt).sub(g.origin).dot(g.direction);I>0&&g.distanceSqToPoint(kt)<p&&m.push({distance:I,point:kt.clone(),type:"splat"})}},u>this.freeAddresses.size&&this.growTextures();for(let g=0;g<u;g++){const m=this.freeAddresses.poll();isNaN(m)&&console.log("insuficient texture size to store splats info"),A.push(m),d.push(3*m);const E=g*this.batchSize;this.addSplatsBatch(E,m,h,a,t,i)}n.worker.postMessage({method:"addBatches",insertionIndexes:d,positions:o.buffer,offset:c,stride:s,batchSize:n.batchSize},[o.buffer]);let l=!1;return{hide:()=>{l==1&&n.worker&&(n.numVisibleBatches--,l=!1,n.worker.postMessage({method:"hideBatches",insertionIndexes:d,xyz:[n.cameraPosition.x,n.cameraPosition.z,-n.cameraPosition.y],vpm:this.viewProjModel&&this.splatsCPUCuling?this.viewProjModel.toArray():void 0,id:n.sortID++}))},show:g=>{if(l==0&&n.worker){n.numVisibleBatches--,l=!0;const m=n.sortID,E=p=>p>=m&&(g(),!0);n.sortListeners.push(E),n.worker.postMessage({method:"showBatches",insertionIndexes:d,xyz:[n.cameraPosition.x,n.cameraPosition.z,-n.cameraPosition.y],vpm:this.viewProjModel&&this.splatsCPUCuling?this.viewProjModel.toArray():void 0,id:n.sortID++})}},remove:()=>{n.worker&&(b=void 0,n.worker.postMessage({method:"removeBatches",insertionIndexes:d,xyz:[n.cameraPosition.x,n.cameraPosition.z,-n.cameraPosition.y],vpm:this.viewProjModel&&this.splatsCPUCuling?this.viewProjModel.toArray():void 0,id:n.sortID++}),A.forEach(g=>n.freeAddresses.add(g)))},sort:this.sort,raycast:b,isSplatsBatch:!0}}addSplatsBatch(e,a,t,i,n,o){const s=new Uint16Array(3*this.batchSize),c=new Uint8Array(4*this.batchSize),u=new Uint16Array(3*this.batchSize),A=new Uint16Array(3*this.batchSize);for(let p=a;p<a+this.batchSize;p++){const C=p-a,I=3*C,x=4*C,y=e+C,w=3*(e+C);if(y>=t.length/3)break;s[I]=f.DataUtils.toHalfFloat(t[w]),s[I+1]=f.DataUtils.toHalfFloat(t[w+1]),s[I+2]=f.DataUtils.toHalfFloat(t[w+2]);const D=0|Math.floor(255*i.getX(y)+.5),F=0|Math.floor(255*i.getY(y)+.5),j=0|Math.floor(255*i.getZ(y)+.5),M=0|Math.floor(255*i.getW(y)+.5);c[x]=D,c[x+1]=F,c[x+2]=j,c[x+3]=M,u[I]=f.DataUtils.toHalfFloat(n.getX(y)),u[I+1]=f.DataUtils.toHalfFloat(n.getY(y)),u[I+2]=f.DataUtils.toHalfFloat(n.getZ(y)),A[I]=f.DataUtils.toHalfFloat(o.getX(y)),A[I+1]=f.DataUtils.toHalfFloat(o.getY(y)),A[I+2]=f.DataUtils.toHalfFloat(o.getZ(y))}const d=Math.floor(a/Math.pow(this.textureSize,2)),b=Math.ceil(this.batchSize/this.textureSize),h=[0,a/this.textureSize-d*this.textureSize,this.textureSize];h.push(h[1]+b);const l=new f.DataTexture(s,this.textureSize,b,f.RGBFormat,f.HalfFloatType);l.internalFormat="RGB16F",l.generateMipmaps=!1,l.magFilter=f.NearestFilter,l.minFilter=f.NearestFilter,l.anisotropy=0,l.needsUpdate=!0,this.renderer.initTexture(l),this.copyTex2D(l,this.positionRenderTarget,h,d),l.dispose();const g=new f.DataTexture(c,this.textureSize,b,f.RGBAFormat,f.UnsignedByteType);g.internalFormat="RGBA8",g.generateMipmaps=!1,g.magFilter=f.NearestFilter,g.minFilter=f.NearestFilter,g.anisotropy=0,g.needsUpdate=!0,this.renderer.initTexture(g),this.copyTex2D(g,this.colorRenderTarget,h,d),g.dispose();const m=new f.DataTexture(u,this.textureSize,b,f.RGBFormat,f.HalfFloatType);m.internalFormat="RGB16F",m.generateMipmaps=!1,m.magFilter=f.NearestFilter,m.minFilter=f.NearestFilter,m.anisotropy=0,m.needsUpdate=!0,this.renderer.initTexture(m),this.copyTex2D(m,this.covarianceRenderTarget1,h,d),m.dispose();const E=new f.DataTexture(A,this.textureSize,b,f.RGBFormat,f.HalfFloatType);E.internalFormat="RGB16F",E.generateMipmaps=!1,E.magFilter=f.NearestFilter,E.minFilter=f.NearestFilter,E.anisotropy=0,E.needsUpdate=!0,this.renderer.initTexture(E),this.copyTex2D(E,this.covarianceRenderTarget2,h,d),E.dispose()}growTextures(){for(let o=this.maxSplats;o<this.maxSplats+this.textureSize*this.textureSize;o+=this.batchSize)this.freeAddresses.add(o);this.maxSplats+=this.textureSize*this.textureSize;const e=this.numTextures+1,a=new f.WebGL3DRenderTarget(this.textureSize,this.textureSize,e,{magFilter:f.NearestFilter,minFilter:f.NearestFilter,type:f.HalfFloatType,format:f.RGBAFormat,anisotropy:0,depthBuffer:!1,resolveDepthBuffer:!1});a.texture.type=f.HalfFloatType,a.texture.format=f.RGBAFormat,a.texture.internalFormat="RGBA16F",this.renderer.initRenderTarget(a),this.copyTex3D(this.positionRenderTarget.texture,a,this.numTextures),this.positionRenderTarget.dispose(),this.positionRenderTarget=a,this.material.uniforms.positionTexture.value=this.positionRenderTarget.texture;const t=new f.WebGL3DRenderTarget(this.textureSize,this.textureSize,e,{magFilter:f.NearestFilter,minFilter:f.NearestFilter,type:f.UnsignedByteType,format:f.RGBAFormat,anisotropy:0,depthBuffer:!1,resolveDepthBuffer:!1});t.texture.type=f.UnsignedByteType,t.texture.format=f.RGBAFormat,t.texture.internalFormat="RGBA8",this.renderer.initRenderTarget(t),this.copyTex3D(this.colorRenderTarget.texture,t,this.numTextures),this.colorRenderTarget.dispose(),this.colorRenderTarget=t,this.material.uniforms.colorTexture.value=this.colorRenderTarget.texture;const i=new f.WebGL3DRenderTarget(this.textureSize,this.textureSize,e,{magFilter:f.NearestFilter,minFilter:f.NearestFilter,anisotropy:0,type:f.HalfFloatType,format:f.RGBAFormat,depthBuffer:!1,resolveDepthBuffer:!1});i.texture.type=f.HalfFloatType,i.texture.format=f.RGBAFormat,i.texture.internalFormat="RGBA16F",this.renderer.initRenderTarget(i),this.copyTex3D(this.covarianceRenderTarget1.texture,i,this.numTextures),this.covarianceRenderTarget1.dispose(),this.covarianceRenderTarget1=i,this.material.uniforms.covarianceTexture1.value=this.covarianceRenderTarget1.texture;const n=new f.WebGL3DRenderTarget(this.textureSize,this.textureSize,e,{magFilter:f.NearestFilter,minFilter:f.NearestFilter,anisotropy:0,type:f.HalfFloatType,format:f.RGBAFormat,depthBuffer:!1,resolveDepthBuffer:!1});n.texture.type=f.HalfFloatType,n.texture.format=f.RGBAFormat,n.texture.internalFormat="RGBA16F",this.renderer.initRenderTarget(n),this.copyTex3D(this.covarianceRenderTarget2.texture,n,this.numTextures),this.covarianceRenderTarget2.dispose(),this.covarianceRenderTarget2=n,this.material.uniforms.covarianceTexture2.value=this.covarianceRenderTarget2.texture,this.numTextures=e,this.material.uniforms.numSlices.value=this.numTextures}}function Wn(){return`
|
|
551
550
|
|
|
552
551
|
precision highp float;
|
|
553
552
|
precision highp int;
|
|
@@ -557,5 +556,5 @@ out vec2 vUv;
|
|
|
557
556
|
void main() {
|
|
558
557
|
vUv = uv;
|
|
559
558
|
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
560
|
-
}`}var oe;const aa=new L.Sphere(new L.Vector3(0,0,0),1),ba=new Oe([0,0,0,1,0,0,0,1,0,0,0,1]);new L.Box3;const Da=new L.Vector3(0,0,0),Ka=new L.Vector3(0,0,0),mc=new L.Vector3(0,1,0),Mt=new L.Ray,St=new L.Matrix4;new L.Matrix4,new L.Frustum;const Tt=new L.Vector3,Rt=[],Yn=new L.Quaternion,sa={};function Xn(){var r=[];for(let e in sa)sa.hasOwnProperty(e)&&sa[e]>0&&r.push(e);return r}class kr extends L.Object3D{constructor(e){super();const a=this;if(a.splatsMesh=e.splatsMesh,a.iosCompatibility=e.iosCompatibility,a.splatsQuality=e.splatsQuality!=null?e.splatsQuality:.75,a.splatsCPUCulling=e.splatsCPUCulling!=null&&e.splatsQuality,this.contentURL=[],e.domWidth&&e.domHeight?this.rendererSize=new L.Vector2(e.domWidth,e.domHeight):this.rendererSize=new L.Vector2(1e3,1e3),this.setClipShape(e.clipShape),this.loadingStrategy=e.loadingStrategy?e.loadingStrategy.toUpperCase():"INCREMENTAL",this.distanceBias=Math.max(1e-4,e.distanceBias?e.distanceBias:1),this.proxy=e.proxy,this.drawBoundingVolume=!!e.drawBoundingVolume&&e.drawBoundingVolume,this.displayErrors=e.displayErrors,this.displayCopyright=e.displayCopyright,e.queryParams&&(this.queryParams={...e.queryParams}),this.uuid=Jr(),e.tileLoader)this.tileLoader=e.tileLoader;else{const n={};n.meshCallback=e.meshCallback?e.meshCallback:(s,A)=>{s.material.wireframe=!1,s.material.side=L.DoubleSide},n.pointsCallback=e.pointsCallback?e.pointsCallback:(s,A)=>{s.material.size=Math.pow(A,.33),s.material.sizeAttenuation=!0},n.proxy=this.proxy,n.renderer=e.renderer,n.dracoLoader=e.dracoLoader,n.ktx2Loader=e.ktx2Loader,a.tileLoader=new Bi(n);const o=this.update;this.update=s=>{o.call(a,s),a.tileLoader.update()}}if(this.displayCopyright=!!e.displayCopyright,this.geometricErrorMultiplier=e.geometricErrorMultiplier?e.geometricErrorMultiplier:1,this.splatsCropRadius=Number.MAX_VALUE,this.splatsSizeMultiplier=1,this.renderer=e.renderer,this.meshCallback=e.meshCallback,this.loadOutsideView=e.loadOutsideView,this.cameraOnLoad=e.cameraOnLoad,this.parentTile=e.parentTile,this.occlusionCullingService=e.occlusionCullingService,this.static=e.static,this.occlusionCullingService&&(this.color=new L.Color,this.color.setHex(16777215*Math.random()),this.colorID=L.MathUtils.clamp(255*a.color.r,0,255)<<16^L.MathUtils.clamp(255*a.color.g,0,255)<<8^L.MathUtils.clamp(255*a.color.b,0,255)),this.static&&(this.matrixAutoUpdate=!1,this.matrixWorldAutoUpdate=!1),this.childrenTiles=[],this.meshContent=[],this.tileContent,this.refine,this.rootPath,this.geometricError,this.boundingVolume,this.json,this.materialVisibility=!1,this.level=e.level?e.level:0,this.hasMeshContent=0,this.hasUnloadedJSONContent=0,this.centerModel=e.centerModel,this.abortController=new AbortController,this.onLoadCallback=e.onLoadCallback,e.json)a._setup(e);else if(e.url){var t=e.url;if(a.queryParams){var i="";for(let n in a.queryParams)a.queryParams.hasOwnProperty(n)&&(i+="&"+n+"="+a.queryParams[n]);t.includes("?")?t+=i:t+="?"+i.substring(1)}(a.proxy?()=>fetch(a.proxy,{method:"POST",body:t,signal:a.abortController.signal}):()=>fetch(t,{signal:a.abortController.signal}))().then(n=>{if(!n.ok)throw new Error(`couldn't load "${e.url}". Request failed with status ${n.status} : ${n.statusText}`);n.json().then(o=>ar(o,t)).then(o=>{a._setup({rootPath:pa.dirname(e.url),json:o})})}).catch(n=>{a.displayErrors&&Zn(n)})}}setClipShape(e){if(e instanceof Oe||e instanceof L.Sphere)this.clipShape=e;else if(e instanceof L.Box3){const a=new L.Vector3,t=new L.Vector3;e.getCenter(a),e.getSize(t).multiplyScalar(.5),this.clipShape=new Oe([a.x,a.y,a.z,t.x,0,0,0,t.y,0,0,0,t.z])}else e=void 0;this.childrenTiles&&this.childrenTiles.forEach(a=>{a._setClipShape(this.clipShape)})}_setClipShape(e){this.clipShape=e,this.childrenTiles&&this.childrenTiles.forEach(a=>{a._setClipShape(this.clipShape)})}setSplatsSizeMultiplier(e){this.splatsSizeMultiplier=e,this.splatsMesh&&this.splatsMesh.setSplatsSizeMultiplier(this.splatsSizeMultiplier)}setSplatsCropRadius(e){this.splatsCropRadius=e,this.splatsMesh&&this.splatsMesh.setSplatsCropRadius(this.splatsCropRadius)}setSplatsCPUCulling(e){this.splatsCPUCulling=e,this.splatsMesh&&this.splatsMesh.setSplatsCPUCulling(e)}setSplatsQuality(e){this.splatsQuality=e,this.splatsMesh&&this.splatsMesh.setQuality(e)}updateMatrices(){this.updateMatrix(),this.splatsMesh&&this.splatsMesh.updateMatrix(),this.static&&(this.traverse(e=>{e.isObject3D&&(e.matrixWorldAutoUpdate=!0)}),this.splatsMesh&&(this.splatsMesh.matrixWorldAutoUpdate=!0)),this.updateMatrixWorld(!0),this.static&&(this.traverse(e=>{e.isObject3D&&(e.matrixWorldAutoUpdate=!1)}),this.splatsMesh&&(this.splatsMesh.matrixWorldAutoUpdate=!1))}setCanvasSize(e,a){this.rendererSize.set(e,a)}async _setup(e){const a=this;if(e.json.extensionsRequired&&(e.json.extensionsRequired.includes("JDULTRA_gaussian_splats")||e.json.extensionsRequired.includes("JDULTRA_gaussian_splats_V2"))&&(a.splatsMesh=a.iosCompatibility?new pc(a.tileLoader.renderer):new bc(a.tileLoader.renderer),a.splatsMesh.setQuality(a.splatsQuality),a.splatsMesh.setSplatsCPUCulling(a.splatsCPUCulling),a.splatsMesh.setSplatsCropRadius(a.splatsCropRadius),a.splatsMesh.setSplatsSizeMultiplier(a.splatsSizeMultiplier),a.static&&(a.splatsMesh.matrixWorldAutoUpdate=!1),a.add(a.splatsMesh),a.updateMatrices()),e.json.root?(a.json=e.json.root,a.json.refine||(a.json.refine=e.json.refine),a.json.geometricError||(a.json.geometricError=e.json.geometricError),a.json.transform||(a.json.transform=e.json.transform),a.json.boundingVolume||(a.json.boundingVolume=e.json.boundingVolume)):a.json=e.json,a.json.children||(a.json.getChildren?a.json.children=await a.json.getChildren():a.json.children=[]),a.rootPath=e.json.rootPath?e.json.rootPath:e.rootPath,a.json.refine?a.refine=a.json.refine:a.refine=e.parentRefine,a.json.geometricError?a.geometricError=a.json.geometricError:a.geometricError=e.parentGeometricError,a.json.transform){let i=new L.Matrix4;i.elements=a.json.transform,a.applyMatrix4(i)}if(a.json.boundingVolume)if(a.json.boundingVolume.box)a.boundingVolume=new Oe(a.json.boundingVolume.box);else if(a.json.boundingVolume.region){const i=a.json.boundingVolume.region;a._transformWGS84ToCartesian(i[0],i[1],i[4],Da),a._transformWGS84ToCartesian(i[2],i[3],i[5],Ka),Da.lerp(Ka,.5),a.boundingVolume=new L.Sphere(new L.Vector3(Da.x,Da.y,Da.z),Da.distanceTo(Ka))}else if(a.json.boundingVolume.sphere){const i=a.json.boundingVolume.sphere;a.boundingVolume=new L.Sphere(new L.Vector3(i[0],i[1],i[2]),i[3])}else a.boundingVolume=e.parentBoundingVolume;else a.boundingVolume=e.parentBoundingVolume;function t(i){i.uri&&i.uri.includes("json")||i.url&&i.url.includes("json")?a.hasUnloadedJSONContent++:a.hasMeshContent++}if(a.json.content?(t(a.json.content),a.hasMeshContent==0&&(a.level=Math.max(0,a.parentTile?a.parentTile.level+.01:0)),a._load()):a.json.contents&&(a.json.contents.forEach(i=>t(i)),a.hasMeshContent==0&&(a.level=Math.max(0,a.parentTile?a.parentTile.level+.01:0))),a.centerModel&&(Ka.copy(a.boundingVolume.center),this.json.boundingVolume.region&&(this._transformWGS84ToCartesian(.5*(this.json.boundingVolume.region[0]+this.json.boundingVolume.region[2]),.5*(this.json.boundingVolume.region[1]+this.json.boundingVolume.region[3]),.5*(this.json.boundingVolume.region[4]+this.json.boundingVolume.region[5]),Da),Yn.setFromUnitVectors(Da.normalize(),mc.normalize()),a.applyQuaternion(Yn)),Ka.applyMatrix4(a.matrix),a.position.sub(Ka),a.updateMatrices()),a.onLoadCallback&&a.onLoadCallback(a),a.isSetup=!0,a.level>0&&a.drawBoundingVolume)if(a.bbox&&console.log("double setup"),this.boundingVolume.aabb){let i=this.boundingVolume.aabb.clone();i.applyMatrix4(this.matrixWorld),a.bbox=new L.Box3Helper(i,new L.Color(Math.random(),Math.random(),Math.random())),a.add(a.bbox),a.bbox.material.visible=!1}else a.boundingVolume instanceof Oe&&(a.bbox=a.boundingVolume.helper(),a.add(a.bbox),a.bbox.material.visible=!1)}_assembleURL(e,a){e.endsWith("/")||(e+="/");const t=new URL(e);let i=t.pathname.split("/").filter(o=>o!==""),n=a.split("/").filter(o=>o!=="");for(let o=1;o<=i.length&&!(o>=n.length);o++)if(i.slice(i.length-o,i.length).join("/")===n.slice(0,o).join("/")){for(let s=0;s<o;s++)i.pop();break}for(;n.length>0&&n[0]==="..";)i.pop(),n.shift();return`${t.protocol}//${t.host}/${[...i,...n].join("/")}`}_extractQueryParams(e,a){const t=new URL(e);for(let[i,n]of t.searchParams)a[i]=n;return t.search="",t.toString()}async _load(e=!0,a=!0){var t=this;if(!t.deleted){if(t.json.content)await i(t.json.content,null,e,a);else if(t.json.contents){let n=t.json.contents.map((o,s)=>i(o,s,e,a));Promise.all(n)}}async function i(n,o,s,A){let u;n.uri?u=n.uri:n.url&&(u=n.url);const c=/^(?:http|https|ftp|tcp|udp):\/\/\S+/;if(c.test(t.rootPath)?c.test(u)||(u=t._assembleURL(t.rootPath,u)):pa.isAbsolute(t.rootPath)&&(u=t.rootPath+pa.sep+u),u=t._extractQueryParams(u,t.queryParams),t.queryParams){var d="";for(let l in t.queryParams)t.queryParams.hasOwnProperty(l)&&(d+="&"+l+"="+t.queryParams[l]);u.includes("?")?u+=d:u+="?"+d.substring(1)}if(u)if(t.contentURL.push(u),A&&(u.includes(".b3dm")||u.includes(".glb")||u.includes(".gltf")))try{t.tileLoader.get(t.abortController,t.uuid,u,l=>{t.deleted||(l.asset&&l.asset.copyright&&(l.asset.copyright.split(";").forEach(h=>{sa[h]?sa[h]++:sa[h]=1}),t.displayCopyright&&jr()),t.meshContent.push(l),t.splatsMesh||(l.traverse(h=>{if((h.isMesh||h.isPoints)&&h.layers.disable(0),h.isMesh&&t.occlusionCullingService){const b=h.geometry.attributes.position,g=[];for(let p=0;p<b.count;p++)g.push(t.color.r,t.color.g,t.color.b);h.geometry.setAttribute("color",new L.Float32BufferAttribute(g,3))}}),t.add(l),t.updateMatrices()))},t.cameraOnLoad?()=>t.loadingStrategy=="IMMEDIATE"?t._calculateDistanceToCamera(t.cameraOnLoad):t.loadingStrategy=="INCREMENTAL"?t.parentTile?t.parentTile._calculateDistanceToCamera(t.cameraOnLoad)/Math.max(1,t.parentTile.level):t._calculateDistanceToCamera(t.cameraOnLoad)/Math.max(1,t.level):t.loadingStrategy=="PERLEVEL"?t.parentTile?t.level+t.parentTile._calculateDistanceToCamera(t.cameraOnLoad):t.level+t._calculateDistanceToCamera(t.cameraOnLoad):0:()=>0,()=>t._getSiblings(),t.level,t.loadingStrategy,!t.json.boundingVolume.region,!!t.json.boundingVolume.region,t.geometricError,t.splatsMesh)}catch(l){t.displayErrors&&Zn(l)}else s&&u.includes(".json")&&(t.jsonRequested=u,t.tileLoader.get(t.abortController,t.uuid,u,async l=>{t.jsonReceived=!0,t.deleted||(l.rootPath=pa.dirname(u),t.json.children.push(l),o==null?delete t.json.content:t.json.contents.splice(o,1),t.hasUnloadedJSONContent--)}))}}dispose(){const e=this;e.meshContent.forEach(a=>{a&&a.asset&&a.asset.copyright&&(a.asset.copyright.split(";").forEach(t=>{sa[t]&&sa[t]--}),e.displayCopyright&&jr())}),e.childrenTiles.forEach(a=>a.dispose()),e.deleted=!0,e.splatsMesh&&(e.meshContent.forEach(a=>a.hide()),e.parentTile||(e.splatsMesh.dispose(),e.splatsMesh=void 0)),e.contentURL&&(e.contentURL.forEach(a=>{e.tileLoader.invalidate(a,e.uuid)}),e.contentURL=[]),e.abortController&&!e.jsonRequested&&e.abortController.abort("tile not needed"),this.parent=null,e.meshContent=[],e.bbox&&e.bbox.dispose(),this.dispatchEvent({type:"removed"})}_disposeMeshContent(){const e=this;if(!e.deleted){e.deleted=!0,e.abortController&&(e.abortController.abort("tile not needed"),e.abortController=new AbortController);for(let a=e.meshContent.length-1;a>=0;a--){const t=e.meshContent[a];t&&t.asset&&t.asset.copyright&&(t.asset.copyright.split(";").forEach(i=>{sa[i]&&sa[i]--}),e.displayCopyright&&jr()),e.remove(t)}e.splatsMesh&&e.meshContent.forEach(a=>a.hide()),e.meshContent=[],e.contentURL.forEach(a=>{e.tileLoader.invalidate(a,e.uuid)}),e.contentURL=[]}}_disposeChildren(){var e=this;e.childrenTiles.forEach(a=>{a.dispose(),e.remove(a)}),e.childrenTiles=[]}raycast(e,a){if(this.splatsMesh){Mt.copy(e.ray),St.copy(this.matrixWorld).invert(),Mt.applyMatrix4(St);let t=!1;if(this.boundingVolume instanceof Oe)t=this.boundingVolume.intersectsRay(Mt);else{if(!(this.boundingVolume instanceof L.Sphere))return!1;t=ray.intersectsSphere(this.boundingVolume)}return t&&this.materialVisibility&&this.splatsReady&&(Rt.length=0,this.meshContent.forEach(i=>{i.isSplatsBatch&&(i.raycast(Mt,Rt,e.params.Points.threshold),Rt.forEach(n=>{n.point.applyMatrix4(this.matrixWorld)}),a.push(...Rt))})),t}return super.raycast(e,a)}update(e){this.splatsMesh&&this.splatsMesh.updateShaderParams(e,this.renderer);const a=new L.Frustum;a.setFromProjectionMatrix(new L.Matrix4().multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse));let t=[0],i=[0],n=[0],o=[0];if(this.refine=="REPLACE"?this.loadingStrategy==="IMMEDIATE"?(this._updateImmediate(e,a),this._statsImmediate(n,t,o,i)):(this._update(e,a),this._stats(n,t,o,i)):(this._update(e,a),this._stats(n,t,o,i)),t>0&&(o[0]/=t[0]),this.splatsMesh)if(Tt.copy(e.position),St.copy(this.matrixWorld).invert(),Tt.applyMatrix4(St),this.splatsCPUCulling){const s=new L.Matrix4().multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse).multiply(this.matrixWorld);this.splatsMesh.sort(Tt,s)}else this.splatsMesh.sort(Tt);return{numTilesLoaded:t[0],numTilesRendered:i[0],maxLOD:n[0],percentageLoaded:o[0]}}_updateImmediate(e,a){this._computeMetricRecursive(e,a),this._updateNodeVisibilityImmediate(),this._expandTreeImmediate(e),this.shouldBeVisible=this.metric>0||!!this.loadOutsideView,this._shouldBeVisibleUpdateImmediate(),this._trimTreeImmediate(),this._loadMeshImmediate()}_statsImmediate(e,a,t,i){e[0]=Math.max(e[0],this.level),(this.shouldBeVisible||this.materialVisibility)&&(a[0]++,this.materialVisibility&&t[0]++),this.materialVisibility&&i[0]++,this.childrenTiles.forEach(n=>{n._statsImmediate(e,a,t,i)})}_stats(e,a,t,i){e[0]=Math.max(e[0],this.level),this.hasMeshContent&&(a[0]++,this.meshContent.length==this.hasMeshContent&&t[0]++,this.materialVisibility&&i[0]++),this.childrenTiles.forEach(n=>{n._stats(e,a,t,i)})}_trimTreeImmediate(){if(this.metric!=null)if(this.hasMeshContent&&this.shouldBeVisible&&this.materialVisibility){if(self.splatsMesh&&!self.splatsReady)return;this._disposeChildren()}else this.childrenTiles.forEach(e=>{e._trimTreeImmediate()})}_updateNodeVisibilityImmediate(e=!1){const a=this;if(a.hasMeshContent)if(a.shouldBeVisible)a.meshContent.length==a.hasMeshContent?a.materialVisibility?a.childrenTiles.forEach(t=>{t._updateNodeVisibilityImmediate(!0)}):(a._changeContentVisibility(!0),a.childrenTiles.forEach(t=>{t._updateNodeVisibilityImmediate(e)})):a.childrenTiles.forEach(t=>{t._updateNodeVisibilityImmediate(e)});else{if(!a.loadOutsideView&&a.metric<0)return a._changeContentVisibility(!1),a.meshContent.length>0&&a._disposeMeshContent(),void a.childrenTiles.forEach(t=>{t._updateNodeVisibilityImmediate(!0)});if(!a.materialVisibility||a.splatsMesh&&!a.splatsReady)a.childrenTiles.forEach(t=>{t._updateNodeVisibilityImmediate(e)});else if(e)a._changeContentVisibility(!1),a.meshContent.length>0&&a._disposeMeshContent(),a.childrenTiles.forEach(t=>{t._updateNodeVisibilityImmediate(e)});else{let t=!0;a.childrenTiles.every(i=>!!i._isReadyImmediate()||(t=!1,!1)),t&&a.childrenTiles.length>0?(a._changeContentVisibility(!1),a.meshContent.length>0&&a._disposeMeshContent(),a.childrenTiles.forEach(i=>{i._updateNodeVisibilityImmediate(e)})):a.childrenTiles.forEach(i=>{i._updateNodeVisibilityImmediate(!a.splatsMesh||!!a.splatsReady)})}}else a.childrenTiles.forEach(t=>{t._updateNodeVisibilityImmediate(e)})}_shouldBeVisibleUpdateImmediate(){const e=this;e.hasMeshContent?e.metric==null?e.shouldBeVisible=!1:e.metric<0?(e.shouldBeVisible=!!e.loadOutsideView,e.childrenTiles.forEach(a=>{a._setShouldNotBeVisibleRecursive()})):e.metric<e.geometricErrorMultiplier*e.geometricError?e.hasUnloadedJSONContent||(e.json&&e.json.children&&e.json.children.length>0?(e.shouldBeVisible=!1,e.childrenTiles.forEach(a=>{a.shouldBeVisible=!0,a._shouldBeVisibleUpdateImmediate()})):e.shouldBeVisible=!0):e.childrenTiles.forEach(a=>{a._setShouldNotBeVisibleRecursive()}):(e.childrenTiles.forEach(a=>{a.shouldBeVisible=!0,a._shouldBeVisibleUpdateImmediate()}),e.shouldBeVisible=!1)}_setShouldNotBeVisibleRecursive(){this.shouldBeVisible=!1,this.childrenTiles.forEach(e=>{e._setShouldNotBeVisibleRecursive()})}_loadMeshImmediate(){const e=this;e.hasMeshContent&&e.shouldBeVisible?e.meshContent.length<e.hasMeshContent&&e.contentURL.length==0&&(e.deleted=!1,e._load(!1,!0)):e.childrenTiles.forEach(a=>{a._loadMeshImmediate()})}_computeMetricRecursive(e,a){const t=this;t.metric=-1,t.isSetup&&(t.boundingVolume&&t.geometricError&&(t.metric=t._calculateUpdateMetric(e,a)),t.childrenTiles.forEach(i=>i._computeMetricRecursive(e,a)))}_expandTreeImmediate(e){const a=this;a.hasUnloadedJSONContent||(a.hasMeshContent?a.occlusionCullingService&&a.hasMeshContent&&!a.occlusionCullingService.hasID(a.colorID)||a.metric>=0&&a.metric<a.geometricErrorMultiplier*a.geometricError&&a.json&&a.json.children&&a.childrenTiles.length<a.json.children.length&&a._loadJsonChildren(e):a.json&&a.json.children&&a.childrenTiles.length<a.json.children.length&&a._loadJsonChildren(e)),a.childrenTiles.forEach(t=>t._expandTreeImmediate(e))}_update(e,a){const t=this;if(!t.isSetup)return;const i=t.materialVisibility;t.boundingVolume&&t.geometricError&&(t.metric=t._calculateUpdateMetric(e,a)),t.childrenTiles.forEach(n=>n._update(e,a)),function(n){if(n<0)return t.inFrustum=!1,void t._changeContentVisibility(!!t.loadOutsideView);if(t.inFrustum=!0,!!t.hasMeshContent&&!(t.meshContent.length<t.hasMeshContent)){if(t.childrenTiles.length==0)return void t._changeContentVisibility(!0);if(n>=t.geometricErrorMultiplier*t.geometricError)t._changeContentVisibility(!0);else if(n<t.geometricErrorMultiplier*t.geometricError&&t.refine=="REPLACE"){let o=!0;t.childrenTiles.every(s=>!!s._isReady()||(o=!1,!1)),o?t._changeContentVisibility(!1):t._changeContentVisibility(!0)}}}(t.metric),function(n){n<0&&t.hasMeshContent||t.occlusionCullingService&&t.hasMeshContent&&!t.occlusionCullingService.hasID(t.colorID)||(!t.hasMeshContent||n<=t.geometricErrorMultiplier*t.geometricError&&(t.meshContent.length>0||t.splatsMesh))&&t.json&&t.json.children&&t.childrenTiles.length!=t.json.children.length&&t._loadJsonChildren(e)}(t.metric),function(n,o){if(t.hasMeshContent){if(!t.inFrustum)return void t._disposeChildren();if(t.occlusionCullingService&&!o&&t.hasMeshContent&&t.meshContent.length>0&&t.materialVisibility&&t._areAllChildrenLoadedAndHidden())return t.splatsMesh&&this.materialVisibility&&!t.splatsReady?void 0:void t._disposeChildren();if(n>=t.geometricErrorMultiplier*t.geometricError){if(t.splatsMesh&&t.materialVisibility&&!t.splatsReady)return;t._disposeChildren()}}}(t.metric,i)}_loadJsonChildren(e){const a=this;for(let t=a.json.children.length-1;t>=0;t--)a.json.children[t].root||a.json.children[t].children||a.json.children[t].getChildren||a.json.children[t].content||a.json.children[t].contents||a.json.children.splice(t,1);a.json.children.forEach(t=>{let i=new kr({parentTile:a,queryParams:a.queryParams,parentGeometricError:a.geometricError,parentBoundingVolume:a.boundingVolume,parentRefine:a.refine,json:t,rootPath:a.rootPath,geometricErrorMultiplier:a.geometricErrorMultiplier,loadOutsideView:a.loadOutsideView,level:Math.floor(a.level)+1,tileLoader:a.tileLoader,cameraOnLoad:e,occlusionCullingService:a.occlusionCullingService,renderer:a.renderer,static:a.static,centerModel:!1,displayErrors:a.displayErrors,displayCopyright:a.displayCopyright,distanceBias:a.distanceBias,loadingStrategy:a.loadingStrategy,drawBoundingVolume:a.drawBoundingVolume,splatsMesh:a.splatsMesh,clipShape:a.clipShape});a.childrenTiles.push(i),a.add(i)}),a.updateMatrices(!0)}_areAllChildrenLoadedAndHidden(){let e=!0;const a=this;return this.childrenTiles.every(t=>{if(t.hasMeshContent){if(t.childrenTiles.length>0)return e=!1,!1;if(!t.metric<0)return!0;if(t.materialVisibility&&(!a.splatsMesh||a.splatsReady)||a.occlusionCullingService.hasID(t.colorID))return e=!1,!1}else if(!t._areAllChildrenLoadedAndHidden())return e=!1,!1;return!0}),e}_isReady(){if(this.metric==null)return!1;if(this.metric<0)return!0;if(this.hasUnloadedJSONContent)return!1;if(!this.hasMeshContent&&this.json.children.length==0&&!this.hasUnloadedJSONContent)return!0;if(!this.hasMeshContent||this.meshContent.length==0||!this.materialVisibility){if(this.children.length>0){var e=!0;return this.childrenTiles.every(a=>!!a._isReady()||(e=!1,!1)),e}return!1}return!this.hasMeshContent||!(this.meshContent.length<this.hasMeshContent)&&!!this.materialVisibility}_isReadyImmediate(){if(this.materialVisibility||!this.loadOutsideView&&this.metric<0)return!0;if(this.childrenTiles.length>0){var e=!0;return this.childrenTiles.every(a=>!!a._isReadyImmediate()||(e=!1,!1)),e}return!1}_changeContentVisibility(e){const a=this;if(a.bbox&&(a.bbox.material.visible=e),a.splatsMesh)e!=a.materialVisibility&&(a.meshContent.forEach(t=>{e&&t.isSplatsBatch?t.show(()=>{a.materialVisibility&&(a.splatsReady=!0)}):(t.hide(),a.splatsReady=!1)}),a.materialVisibility=e);else{if(a.hasMeshContent&&a.meshContent.length>0&&(e?a.meshContent.forEach(t=>{t.traverse(i=>{(i.isMesh||i.isPoints)&&i.layers.enable(0)})}):a.meshContent.forEach(t=>{t.traverse(i=>{(i.isMesh||i.isPoints)&&i.layers.disable(0)})})),a.materialVisibility==e)return;a.materialVisibility=e}}_calculateUpdateMetric(e,a){let t=0;if(this.boundingVolume instanceof Oe){if(ba.copy(this.boundingVolume),ba.applyMatrix4(this.matrixWorld),!ba.inFrustum(a))return-1;if(this.clipShape!=null&&(this.clipShape.isSphere&&!ba.intersectsSphere(this.clipShape)||this.clipShape.isOBB&&!ba.intersectsOBB(this.clipShape)))return Number.MAX_VALUE;t=Math.max(0,ba.distanceToPoint(e.position)-e.near)}else{if(!(this.boundingVolume instanceof L.Sphere))return console.error("unsupported shape"),-1;if(aa.copy(this.boundingVolume),aa.applyMatrix4(this.matrixWorld),this.clipShape!=null&&(this.clipShape.isOBB&&!this.clipShape.intersectsSphere(aa)||this.clipShape.isSphere&&!this.clipShape.intersectsSphere(aa)))return Number.MAX_VALUE;if(!a.intersectsSphere(aa))return-1;t=Math.max(0,e.position.distanceTo(aa.center)-aa.radius-e.near)}if(t=Math.pow(t,this.distanceBias),t==0)return 0;const i=this.matrixWorld.getMaxScaleOnAxis();this.renderer&&this.renderer.getDrawingBufferSize(this.rendererSize);let n=this.rendererSize.y,o=e.fov;return e.aspect<1&&(o*=e.aspect,n=this.rendererSize.x),16*(2*Math.tan(.5*o*.017453292519943295)*t)/(n*i)}_getSiblings(){const e=this,a=[];if(!e.parentTile)return a;let t=e.parentTile;for(;!t.hasMeshContent&&t.parentTile;)t=t.parentTile;return t.childrenTiles.forEach(i=>{if(i&&i!=e){for(;!i.hasMeshContent&&i.childrenTiles[0];)i=i.childrenTiles[0];a.push(i)}}),a}_calculateDistanceToCamera(e){return this.boundingVolume instanceof Oe?(ba.copy(this.boundingVolume),ba.applyMatrix4(this.matrixWorld),Math.max(0,ba.distanceToPoint(e.position))):this.boundingVolume instanceof L.Sphere?(aa.copy(this.boundingVolume),aa.applyMatrix4(this.matrixWorld),Math.max(0,e.position.distanceTo(aa.center)-aa.radius)):(console.error("unsupported shape"),-1)}setGeometricErrorMultiplier(e){this.geometricErrorMultiplier=e,this.childrenTiles.forEach(a=>a.setGeometricErrorMultiplier(e))}setDistanceBias(e){this.distanceBias=e,this.childrenTiles.forEach(a=>a.setDistanceBias(e))}_transformWGS84ToCartesian(e,a,t,i){const n=6378137/Math.sqrt(1-.006694384442042*Math.pow(Math.sin(a),2)),o=Math.cos(a),s=Math.cos(e),A=Math.sin(a),u=n+t,c=u*o*s,d=u*o*Math.sin(e),l=(.993305615557957*n+t)*A;i.set(c,d,l)}hideCopyright(){(function(){oe||((oe=document.createElement("div")).style.position="fixed",oe.style.bottom="20px",oe.style.left="20px",oe.style.color="white",oe.style.textShadow="2px 2px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000",oe.style.padding="10px",oe.style.backgroundColor="rgba(0, 0, 0, 0.1)",document.body.appendChild(oe)),oe.style.opacity=0})()}showCopyright(){(function(){oe||((oe=document.createElement("div")).style.position="fixed",oe.style.bottom="20px",oe.style.left="20px",oe.style.color="white",oe.style.textShadow="2px 2px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000",oe.style.padding="10px",oe.style.backgroundColor="rgba(0, 0, 0, 0.1)",document.body.appendChild(oe)),oe.style.opacity=1})()}}function Zn(r){var e=document.createElement("div");e.textContent=r,e.style.position="fixed",e.style.top="10px",e.style.left="50%",e.style.transform="translateX(-50%)",e.style.padding="10px",e.style.backgroundColor="#ff8800",e.style.color="#ffffff",e.style.zIndex="9999",document.body.appendChild(e),setTimeout(function(){e.remove()},8e3)}function jr(){oe||((oe=document.createElement("div")).style.position="fixed",oe.style.bottom="20px",oe.style.left="20px",oe.style.color="white",oe.style.textShadow="2px 2px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000",oe.style.padding="10px",oe.style.backgroundColor="rgba(0, 0, 0, 0.1)",document.body.appendChild(oe));const r=Xn();let e="";r.forEach(a=>{e+=a+", "}),e=e.slice(0,-2),oe.textContent=e}const He=new L.Sphere(new L.Vector3(0,0,0),1),wa=new L.Vector3(0,0,0),Mr=new L.Vector3(0,0,0),Ec=new L.Vector3(0,1,0),Sr=new L.Vector2,$n=new L.Quaternion,eo=new L.Matrix4;class Tr extends L.Object3D{constructor(e){super();const a=this;if(e.queryParams&&(this.queryParams={...e.queryParams}),this.uuid=Jr(),e.tileLoader?this.tileLoader=e.tileLoader:console.error("an instanced tileset must be provided an InstancedTilesetLoader"),this.master=e.master,this.loadOutsideView=e.loadOutsideView,this.cameraOnLoad=e.cameraOnLoad,this.parentTile=e.parentTile,this.distanceBias=Math.max(1e-4,e.distanceBias?e.distanceBias:1),this.childrenTiles=[],this.jsonChildren=[],this.meshContent=new Set,this.static=e.static,this.static&&(this.matrixAutoUpdate=!1,this.matrixWorldAutoUpdate=!1),this.tileContent,this.refinement,this.rootPath,this.geometricError,this.boundingVolume,this.json,this.materialVisibility=!1,this.inFrustum=!0,this.level=e.level?e.level:0,this.hasMeshContent=0,this.hasUnloadedJSONContent=0,this.centerModel=e.centerModel,this.deleted=!1,this.abortController=new AbortController,e.json)this.rootPath=e.json.rootPath?e.json.rootPath:e.rootPath,e.json.children&&(this.jsonChildren=e.json.children),a.setup(e);else if(e.url){this.loadJson=(n,o)=>{const s=pa.dirname(o);a.setup({rootPath:s,json:n,onLoadCallback:e.onLoadCallback})};var t=e.url;if(a.queryParams){var i="";for(let n in a.queryParams)a.queryParams.hasOwnProperty(n)&&(i+="&"+n+"="+a.queryParams[n]);t.includes("?")?t+=i:t+="?"+i.substring(1)}a.tileLoader.get(a.abortController,t,a.uuid,a)}}async setup(e){const a=this;e.json.root?(a.json=e.json.root,!a.json.children&&a.json.getChildren&&(a.json.children=await a.json.getChildren()),a.jsonChildren=a.json.children,a.json.refinement||(a.json.refinement=e.json.refinement),a.json.geometricError||(a.json.geometricError=e.json.geometricError),a.json.transform||(a.json.transform=e.json.transform),a.json.boundingVolume||(a.json.boundingVolume=e.json.boundingVolume)):(a.json=e.json,!a.json.children&&a.json.getChildren&&(a.json.children=await a.json.getChildren(),a.jsonChildren=a.json.children)),a.rootPath=e.json.rootPath?e.json.rootPath:e.rootPath,a.json.refinement?a.refinement=a.json.refinement:a.refinement=e.parentRefinement,a.json.geometricError?a.geometricError=a.json.geometricError:a.geometricError=e.parentGeometricError;let t=new L.Matrix4;if(a.json.transform&&!a.centerModel&&(t.elements=a.json.transform),a.applyMatrix4(t),a.parentTile&&a.parentTile.matrix&&(a.matrix.premultiply(a.parentTile.matrix),a.matrix.decompose(a.position,a.quaternion,a.scale)),a.matrixWorldNeedsUpdate=!0,a.updateWorldMatrix(!0,!0),a.json.boundingVolume)if(a.json.boundingVolume.box)a.boundingVolume=new Oe(a.json.boundingVolume.box);else if(a.json.boundingVolume.region){const n=a.json.boundingVolume.region;a.transformWGS84ToCartesian(n[0],n[1],n[4],wa),a.transformWGS84ToCartesian(n[2],n[3],n[5],Mr),wa.lerp(Mr,.5),a.boundingVolume=new L.Sphere(new L.Vector3(wa.x,wa.y,wa.z),wa.distanceTo(Mr))}else if(a.json.boundingVolume.sphere){const n=a.json.boundingVolume.sphere;a.boundingVolume=new L.Sphere(new L.Vector3(n[0],n[1],n[2]),n[3])}else a.boundingVolume=e.parentBoundingVolume;else a.boundingVolume=e.parentBoundingVolume;function i(n){n.uri&&n.uri.includes("json")||n.url&&n.url.includes("json")?a.hasUnloadedJSONContent++:a.hasMeshContent++}if(a.json.content?(i(a.json.content),a.load()):a.json.contents&&(a.json.contents.forEach(n=>i(n)),a.load()),a.centerModel){const n=new L.Sphere;a.boundingVolume instanceof Oe?n.copy(a.boundingVolume.sphere):a.boundingVolume instanceof L.Sphere&&n.copy(a.boundingVolume),this.json.boundingVolume.region&&(a.transformWGS84ToCartesian(.5*(a.json.boundingVolume.region[0]+a.json.boundingVolume.region[2]),.5*(a.json.boundingVolume.region[1]+a.json.boundingVolume.region[3]),.5*(a.json.boundingVolume.region[4]+a.json.boundingVolume.region[5]),wa),$n.setFromUnitVectors(wa.normalize(),Ec.normalize()),a.master.applyQuaternion($n),a.master.updateWorldMatrix(!1,!1)),eo.makeTranslation(-n.center.x*a.scale.x,-n.center.y*a.scale.y,-n.center.z*a.scale.z),a.master.matrix.multiply(eo),a.master.matrix.decompose(a.master.position,a.master.quaternion,a.master.scale)}a.isSetup=!0,e.onLoadCallback&&e.onLoadCallback(a)}isAbsolutePathOrURL(e){const a=/^(?:http|https|ftp|tcp|udp):\/\/\S+/.test(e),t=e.startsWith("/")&&!e.startsWith("//");return a||t}assembleURL(e,a){e.endsWith("/")||(e+="/");const t=new URL(e);let i=t.pathname.split("/").filter(o=>o!==""),n=a.split("/").filter(o=>o!=="");for(let o=1;o<=i.length&&!(o>=n.length);o++)if(i.slice(i.length-o,i.length).join("/")===n.slice(0,o).join("/")){for(let s=0;s<o;s++)i.pop();break}for(;n.length>0&&n[0]==="..";)i.pop(),n.shift();return`${t.protocol}//${t.host}/${[...i,...n].join("/")}`}extractQueryParams(e,a){const t=new URL(e);for(let[i,n]of t.searchParams)a[i]=n;return t.search="",t.toString()}load(){var e=this;function a(t){let i;t.uri?i=t.uri:t.url&&(i=t.url);const n=/^(?:http|https|ftp|tcp|udp):\/\/\S+/;if(n.test(e.rootPath)?n.test(i)||(i=e.assembleURL(e.rootPath,i)):pa.isAbsolute(e.rootPath)&&(i=e.rootPath+pa.sep+i),i=e.extractQueryParams(i,e.queryParams),e.queryParams){var o="";for(let s in e.queryParams)e.queryParams.hasOwnProperty(s)&&(o+="&"+s+"="+e.queryParams[s]);i.includes("?")?i+=o:i+="?"+o.substring(1)}i&&(i.includes(".b3dm")||i.includes(".glb")||i.includes(".gltf")?(e.contentURL=i,e.tileLoader.get(e.abortController,i,e.uuid,e,e.cameraOnLoad?()=>e.calculateDistanceToCamera(e.cameraOnLoad):()=>0,()=>e.getSiblings(),e.level,!e.json.boundingVolume.region,!!e.json.boundingVolume.region,e.geometricError)):i.includes(".json")&&e.tileLoader.get(e.abortController,i,e.uuid,e))}e.deleted||(e.json.content?a(e.json.content):e.json.contents&&e.json.contents.forEach(t=>a(t)))}loadMesh(e){this.deleted||this.meshContent.add(e)}loadJson(e,a){this.deleted||(this.json.children&&(this.jsonChildren=this.json.children),e.rootPath=pa.dirname(a),this.jsonChildren.push(e),this.hasUnloadedJSONContent--)}dispose(){const e=this;e.childrenTiles.forEach(a=>a.dispose()),e.deleted=!0,e.abortController&&e.abortController.abort(),this.parent=null,this.parentTile=null,this.dispatchEvent({type:"removed"})}disposeChildren(){this.childrenTiles.forEach(e=>e.dispose()),this.childrenTiles=[]}_update(e,a){const t=this;function i(n){if(t.hasMeshContent&&!(t.meshContent.size<t.hasMeshContent)){if(n<0)return t.inFrustum=!1,void t.changeContentVisibility(!!t.loadOutsideView);if(t.inFrustum=!0,t.childrenTiles.length!=0){if(n>=t.master.geometricErrorMultiplier*t.geometricError)t.changeContentVisibility(!0);else if(n<t.master.geometricErrorMultiplier*t.geometricError){let o=!0;t.childrenTiles.every(s=>!!s.isReady()||(o=!1,!1)),o&&t.changeContentVisibility(!1)}}else t.changeContentVisibility(!0)}}t.isSetup&&(t.materialVisibility,t.boundingVolume&&t.geometricError&&(t.metric=t.calculateUpdateMetric(e,a)),t.childrenTiles.forEach(n=>n._update(e,a)),i(t.metric),function(n){n<0&&t.hasMeshContent||(!t.hasMeshContent&&t.rootPath||n<t.master.geometricErrorMultiplier*t.geometricError&&t.meshContent.size>0)&&t.json&&t.jsonChildren&&t.childrenTiles.length!=t.jsonChildren.length&&t.jsonChildren.forEach(o=>{if(!(o.root||o.children||o.getChildren||o.content||o.contents))return;let s=new Tr({parentTile:t,queryParams:t.queryParams,parentGeometricError:t.geometricError,parentBoundingVolume:t.boundingVolume,parentRefinement:t.refinement,json:o,rootPath:t.rootPath,loadOutsideView:t.loadOutsideView,level:t.level+1,tileLoader:t.tileLoader,cameraOnLoad:e,master:t.master,centerModel:!1});t.childrenTiles.push(s)})}(t.metric),function(n){if(t.hasMeshContent){if(!t.inFrustum)return t.disposeChildren(),void i(n);n>=t.master.geometricErrorMultiplier*t.geometricError&&(t.disposeChildren(),i(n))}}(t.metric))}areAllChildrenLoadedAndHidden(){let e=!0;return this.childrenTiles.every(a=>{if(a.hasMeshContent){if(a.childrenTiles.length>0)return e=!1,!1;if(!a.inFrustum)return!0;if(!a.materialVisibility||a.meshesToDisplay!=a.meshesDisplayed)return e=!1,!1}else if(!a.areAllChildrenLoadedAndHidden())return e=!1,!1;return!0}),e}isReady(){if(!this.inFrustum)return!0;if(this.hasUnloadedJSONContent)return!1;if(!this.hasMeshContent||this.meshContent.size==0||!this.materialVisibility){if(this.childrenTiles.length>0){var e=!0;return this.childrenTiles.every(a=>!!a.isReady()||(e=!1,!1)),e}return!1}return!this.hasMeshContent||!(this.meshContent.size<this.hasMeshContent)&&!!this.materialVisibility}changeContentVisibility(e){this.materialVisibility=e}calculateUpdateMetric(e,a){if(this.boundingVolume instanceof Oe){if(He.copy(this.boundingVolume.sphere),He.applyMatrix4(this.matrixWorld),!a.intersectsSphere(He))return-1}else{if(!(this.boundingVolume instanceof L.Sphere))return console.error("unsupported shape"),-1;if(He.copy(this.boundingVolume),He.applyMatrix4(this.matrixWorld),!a.intersectsSphere(He))return-1}let t=Math.max(0,e.position.distanceTo(He.center)-He.radius);if(t=Math.pow(t,this.distanceBias),t==0)return 0;const i=this.matrixWorld.getMaxScaleOnAxis();this.master._renderSize(Sr);let n=Sr.y,o=e.fov;e.aspect<1&&(o*=e.aspect,n=Sr.x);let s=2*Math.tan(.5*o*.017453292519943295)*t;return 16*window.devicePixelRatio*s/(n*i)}getSiblings(){const e=this,a=[];if(!e.parentTile)return a;let t=e.parentTile;for(;!t.hasMeshContent&&t.parentTile;)t=t.parentTile;return t.childrenTiles.forEach(i=>{if(i&&i!=e){for(;!i.hasMeshContent&&i.childrenTiles[0];)i=i.childrenTiles[0];a.push(i)}}),a}calculateDistanceToCamera(e){return this.boundingVolume instanceof Oe?(He.copy(this.boundingVolume.sphere),He.applyMatrix4(this.matrixWorld)):this.boundingVolume instanceof L.Sphere?(He.copy(this.boundingVolume),He.applyMatrix4(this.matrixWorld)):console.error("unsupported shape"),Math.max(0,e.position.distanceTo(He.center)-He.radius)}getWorldMatrix(){return this.matrixWorld}transformWGS84ToCartesian(e,a,t,i){const n=6378137/Math.sqrt(1-.006694384442042*Math.pow(Math.sin(a),2)),o=Math.cos(a),s=Math.cos(e),A=Math.sin(a),u=n+t,c=u*o*s,d=u*o*Math.sin(e),l=(.993305615557957*n+t)*A;i.set(c,d,l)}}class Cc extends L.Object3D{constructor(e){super(),e.master=this,e.domWidth&&e.domHeight?this.rendererSize=new L.Vector2(e.domWidth,e.domHeight):this.rendererSize=new L.Vector2(1e3,1e3),this.renderer=e.renderer,this.distanceBias=Math.max(1e-4,e.distanceBias?e.distanceBias:1),this.geometricErrorMultiplier=e.geometricErrorMultiplier?e.geometricErrorMultiplier:1,this.tileset=new Tr(e),e.static&&(this.matrixAutoUpdate=!1),this.tileLoader=e.tileLoader}_renderSize(e){this.renderer?this.renderer.getDrawingBufferSize(e):e.copy(this.rendererSize)}setCanvasSize(e,a){this.rendererSize.set(e,a)}update(e,a){if(a)this.tileset._update(e,a);else{const t=new L.Frustum;t.setFromProjectionMatrix(new L.Matrix4().multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse)),this.tileset._update(e,t)}}setGeometricErrorMultiplier(e){this.geometricErrorMultiplier=e||1}}class Ic{constructor(e){const a=this;a.scene=e,a.instancedTiles=[],a.instancedMesh,a.reuseableMatrix=new L.Matrix4}addInstance(e){const a=this;e.added=!0,e.listOMesh=a.instancedTiles,a.instancedTiles.push(e),a.instancedMesh&&e.loadMesh(a.instancedMesh)}addToScene(){const e=this;e.instancedMesh.setMatrixAt(0,new L.Matrix4),e.instancedMesh.instanceMatrix.needsUpdate=!0,e.instancedMesh.count=1,e.scene.add(e.instancedMesh),e.instancedMesh.onAfterRender=()=>{delete e.instancedMesh.onAfterRender,e.instancedMesh.displayedOnce=!0}}setObject(e){const a=this;a.instancedMesh=e,a.instancedMesh.matrixAutoUpdate=!1,a.instancedMesh.matrixWorldAutoUpdate=!1,a.scene.children.includes(e)||this.addToScene();for(let t=0;t<a.instancedTiles.length;t++)a.instancedTiles[t].loadMesh(a.instancedMesh)}update(){const e=this;for(let a=e.instancedTiles.length-1;a>=0;a--)e.instancedTiles[a].deleted&&e.instancedTiles.splice(a,1);if(e.instancedMesh){e.instancedMesh.count=0,e.instancedMesh.instancedTiles=[];for(let a=0;a<e.instancedTiles.length;a++)e.instancedTiles[a].meshContent.add(e.instancedMesh),e.instancedTiles[a].materialVisibility&&(e.instancedMesh.count++,e.reuseableMatrix.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),e.reuseableMatrix.multiply(e.instancedTiles[a].matrixWorld),e.reuseableMatrix.multiply(e.instancedMesh.baseMatrix),e.instancedMesh.setMatrixAt(e.instancedMesh.count-1,e.reuseableMatrix),e.instancedMesh.instancedTiles.push(e.instancedTiles[a]));e.instancedMesh.instanceMatrix.needsUpdate=!0,e.instancedMesh.needsUpdate=!0,e.instancedMesh.computeBoundingSphere()}}getCount(){return this.instancedTiles.length}dispose(){const e=this;return!(e.instancedTiles.length>0)&&!!e.instancedMesh&&(e.scene.remove(e.instancedMesh),e.instancedMesh.traverse(a=>{if(a.dispose&&a.dispose(),a.material)if(a.material.length)for(let t=0;t<a.material.length;++t)a.material[t].dispose();else a.material.dispose();a.geometry&&a.geometry.dispose()}),e.instancedMesh.dispose(),!0)}}class Bc{constructor(){const e=this;e.count=0,e.json,e.instancedTiles=[]}addInstance(e){this.instancedTiles.push(e),this.json&&e.loadJson(this.json,this.url)}setObject(e,a){const t=this;t.json=e,t.url=a;for(let i=0;i<t.instancedTiles.length;i++)t.instancedTiles[i].loadJson(t.json,t.url)}getCount(){return this.instancedTiles.length}update(){const e=this;for(let a=e.instancedTiles.length-1;a>=0;a--)e.instancedTiles[a].deleted&&e.instancedTiles.splice(a,1)}dispose(){return!(!this.json||this.instancedTiles.length!=0)}}let Ma=0;async function yc(r){return new Promise(e=>{const a=setInterval(()=>{r.hasDracoLoader&&!r.dracoLoader||r.hasKTX2Loader&&!r.ktx2Loader||(clearInterval(a),e())},10)})}ve.InstancedOGC3DTile=Cc,ve.InstancedTileLoader=class{constructor(r,e){if(this.zUpToYUpMatrix=new L.Matrix4,this.zUpToYUpMatrix.set(1,0,0,0,0,0,-1,0,0,1,0,0,0,0,0,1),this.maxCachedItems=100,this.maxInstances=1,this.proxy=e.proxy,e&&(this.meshCallback=e.meshCallback,this.pointsCallback=e.pointsCallback,e.maxCachedItems&&(this.maxCachedItems=e.maxCachedItems),e.maxInstances&&(this.maxInstances=e.maxInstances)),this.gltfLoader=new Kr,e&&e.dracoLoader)this.gltfLoader.setDRACOLoader(e.dracoLoader),this.hasDracoLoader=!0;else{const a=new $r;a.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.4.3/"),this.gltfLoader.setDRACOLoader(a),this.gltfLoader.hasDracoLoader=!0}if(e&&e.ktx2Loader)this.gltfLoader.setKTX2Loader(e.ktx2Loader),this.hasKTX2Loader=!0;else if(e&&e.renderer){const a=new qe;a.setTranscoderPath("https://storage.googleapis.com/ogc-3d-tiles/basis/").detectSupport(e.renderer),this.gltfLoader.setKTX2Loader(a),this.gltfLoader.hasKTX2Loader=!0}this.gltfLoader.setMeshoptDecoder(Ii),this.hasMeshOptDecoder=!0,this.b3dmDecoder=new Or(this.gltfLoader),this.cache=new _r,this.scene=r,this.ready=[],this.downloads=[],this.nextReady=[],this.nextDownloads=[]}update(){const r=this;r._checkSize(),r.cache._data.forEach(e=>{e.update()}),Ma<8&&r._download(),r._loadBatch()}_download(){const r=this;if(r.nextDownloads.length!=0||(r._getNextDownloads(),r.nextDownloads.length!=0))for(;r.nextDownloads.length>0;){const a=r.nextDownloads.shift();if(a){if(a.path.includes(".b3dm")&&(e=r.proxy?()=>fetch(r.proxy,{method:"POST",body:a.path}):()=>fetch(a.path),Ma++,e().then(t=>{if(!t.ok)throw console.error("could not load tile with path : "+a.path),new Error(`couldn't load "${a.path}". Request failed with status ${t.status} : ${t.statusText}`);return t.arrayBuffer()}).then(t=>this.b3dmDecoder.parseB3DMInstanced(t,i=>{r.meshCallback(i,a.geometricError)},r.maxInstances,a.sceneZupToYup,a.meshZupToYup)).then(t=>{t.frustumCulled=!1,a.tile.setObject(t),r.ready.unshift(a)}).catch(t=>console.error(t)).finally(()=>{Ma--})),a.path.includes(".glb")||a.path.includes(".gltf"))e=r.proxy?()=>fetch(r.proxy,{method:"POST",body:a.path}):()=>fetch(a.path),Ma++,e().then(t=>{if(!t.ok)throw new Error("missing content");return t.arrayBuffer()}).then(async t=>{await yc(this.gltfLoader),this.gltfLoader.parse(t,null,i=>{let n;i.scene.asset=i.asset,a.sceneZupToYup&&i.scene.applyMatrix4(this.zUpToYUpMatrix),i.scene.traverse(o=>{o.geometricError=a.geometricError,o.isMesh&&(a.meshZupToYup&&o.applyMatrix4(this.zUpToYUpMatrix),r.meshCallback&&r.meshCallback(o,o.geometricError)),o.isPoints&&console.error("instanced point cloud is not supported")}),i.scene.updateWorldMatrix(!1,!0),i.scene.traverse(o=>{o.isMesh&&(n=new L.InstancedMesh(o.geometry,o.material,r.maxInstances),n.baseMatrix=o.matrixWorld)}),r.ready.unshift(a),n?(n.frustumCulled=!1,a.tile.setObject(n)):i.scene.traverse(o=>{o.dispose&&o.dispose(),o.material&&o.material.dispose()})})},t=>{console.error("could not load tile : "+a.path)}).finally(()=>{Ma--});else if(a.path.includes(".json")){var e;e=r.proxy?()=>fetch(r.proxy,{method:"POST",body:a.path}):()=>fetch(a.path),Ma++,e().then(t=>{if(!t.ok)throw console.error("could not load tile with path : "+a.path),new Error(`couldn't load "${a.path}". Request failed with status ${t.status} : ${t.statusText}`);return t.json()}).then(t=>ar(t,a.path)).then(t=>{a.tile.setObject(t,a.path),r.ready.unshift(a)}).catch(t=>console.error(t)).finally(()=>{Ma--})}}}}_loadBatch(){return this.nextReady.length==0&&(this._getNextReady(),this.nextReady.length==0)?0:this.nextReady.shift()?1:0}_getNextReady(){let r=Number.MAX_VALUE,e=-1;for(let a=this.ready.length-1;a>=0;a--)this.ready[a].distanceFunction||this.nextReady.push(this.ready.splice(a,1)[0]);if(!(this.nextReady.length>0)){for(let a=this.ready.length-1;a>=0;a--){const t=this.ready[a].distanceFunction()*this.ready[a].level;t<r&&(r=t,e=a)}if(e>=0){const a=this.ready.splice(e,1).pop();this.nextReady.push(a);const t=a.getSiblings();for(let i=this.ready.length-1;i>=0;i--)t.includes(this.ready[i].uuid)&&this.nextready.push(this.ready.splice(i,1).pop())}}}get(r,e,a,t,i,n,o,s,A,u){const c=this,d=function(h){for(var b=h.split("/"),g=[],p=0,E=0;E<b.length;E++){var m=b[E];m!=="."&&m!==""&&m!==".."?g[p++]=m:m===".."&&p>0&&p--}if(p===0)return"/";var C="";for(E=0;E<p;E++)C+="/"+g[E];return C}(e);if(!(e.includes(".b3dm")||e.includes(".json")||e.includes(".glb")||e.includes(".gltf")))return void console.error("the 3DTiles cache can only be used to load B3DM, gltf and json data");const l=c.cache.get(d);if(l)l.addInstance(t);else if(e.includes(".b3dm")||e.includes(".glb")||e.includes(".gltf")){const h=new Ic(c.scene);h.addInstance(t),c.cache.put(d,h);const b=new AbortController;r.signal.addEventListener("abort",()=>{h.getCount()==0&&b.abort()}),this.downloads.push({abortController:b,tile:h,key:d,path:e,distanceFunction:i,getSiblings:n,level:o,uuid:a,sceneZupToYup:s,meshZupToYup:A,geometricError:u,shouldDoDownload:()=>!0})}else if(e.includes(".json")){const h=new Bc;h.addInstance(t),c.cache.put(d,h);const b=new AbortController;r.signal.addEventListener("abort",()=>{h.getCount()==0&&b.abort()}),this.downloads.push({abortController:b,tile:h,key:d,path:e,distanceFunction:i,getSiblings:n,level:o,shouldDoDownload:()=>!0})}}_getNextDownloads(){let r=Number.MAX_VALUE,e=-1;for(let a=this.downloads.length-1;a>=0;a--){const t=this.downloads[a];t.shouldDoDownload()?t.distanceFunction||this.nextDownloads.push(this.downloads.splice(a,1)[0]):this.downloads.splice(a,1)}if(!(this.nextDownloads.length>0)){for(let a=this.downloads.length-1;a>=0;a--){const t=this.downloads[a],i=t.distanceFunction()*t.level;i<r&&(r=i,e=a)}if(e>=0){const a=this.downloads.splice(e,1).pop();this.nextDownloads.push(a);const t=a.getSiblings();for(let i=this.downloads.length-1;i>=0;i--)t.includes(this.downloads[i].uuid)&&this.nextDownloads.push(this.downloads.splice(i,1).pop())}}}_checkSize(){const r=this;let e=0;for(;r.cache.size()>r.maxCachedItems&&e<r.cache.size();){e++;const a=r.cache.head();r.cache.remove(a.key),a.value.dispose()||r.cache.put(a.key,a.value)}}},ve.OBB=Oe,ve.OGC3DTile=kr,ve.OcclusionCullingService=class{constructor(){this.cullMap=[],this.cullMaterial=new L.MeshBasicMaterial({vertexColors:!0}),this.cullMaterial.side=L.FrontSide,this.cullTarget=this._createCullTarget(),this.cullPixels=new Uint8Array(4*this.cullTarget.width*this.cullTarget.height)}setSide(r){this.cullMaterial.side=r}_createCullTarget(){const r=new L.WebGLRenderTarget(Math.floor(.05*window.innerWidth),Math.floor(.05*window.innerHeight));return r.texture.format=L.RGBAFormat,r.texture.colorSpace=L.LinearSRGBColorSpace,r.texture.minFilter=L.NearestFilter,r.texture.magFilter=L.NearestFilter,r.texture.generateMipmaps=!1,r.stencilBuffer=!1,r.depthBuffer=!0,r.depthTexture=new L.DepthTexture,r.depthTexture.format=L.DepthFormat,r.depthTexture.type=L.UnsignedShortType,r}update(r,e,a){let t=e.getRenderTarget(),i=r.overrideMaterial;r.overrideMaterial=this.cullMaterial,e.setRenderTarget(this.cullTarget),e.render(r,a),r.overrideMaterial=i,e.setRenderTarget(t),e.readRenderTargetPixels(this.cullTarget,0,0,this.cullTarget.width,this.cullTarget.height,this.cullPixels),this.cullMap=[];for(let n=0;n<this.cullPixels.length;n+=4){const o=L.MathUtils.clamp(this.cullPixels[n],0,255)<<16^L.MathUtils.clamp(this.cullPixels[n+1],0,255)<<8^L.MathUtils.clamp(this.cullPixels[n+2],0,255);this.cullMap[o]=!0}}hasID(r){return this.cullMap[r]}},ve.TileLoader=Bi,ve.getOGC3DTilesCopyrightInfo=Xn,ve.splatsFragmentShader=Jn,ve.splatsVertexShader=qn,Object.defineProperty(ve,Symbol.toStringTag,{value:"Module"})});
|
|
559
|
+
}`}var oe;const aa=new G.Sphere(new G.Vector3(0,0,0),1),ba=new Ke([0,0,0,1,0,0,0,1,0,0,0,1]);new G.Box3;const ya=new G.Vector3(0,0,0),Ja=new G.Vector3(0,0,0),jc=new G.Vector3(0,1,0),jt=new G.Ray,Mt=new G.Matrix4;new G.Matrix4,new G.Frustum;const Rt=new G.Vector3,St=[],Xn=new G.Quaternion,sa={};function Yn(){var r=[];for(let e in sa)sa.hasOwnProperty(e)&&sa[e]>0&&r.push(e);return r}class Fr extends G.Object3D{constructor(e){super();const a=this;if(a.splatsMesh=e.splatsMesh,a.iosCompatibility=e.iosCompatibility,a.splatsQuality=e.splatsQuality!=null?e.splatsQuality:.75,a.splatsCPUCulling=e.splatsCPUCulling!=null&&e.splatsCPUCulling,this.contentURL=[],e.domWidth&&e.domHeight?this.rendererSize=new G.Vector2(e.domWidth,e.domHeight):this.rendererSize=new G.Vector2(1e3,1e3),this.setClipShape(e.clipShape),this.loadingStrategy=e.loadingStrategy?e.loadingStrategy.toUpperCase():"INCREMENTAL",this.distanceBias=Math.max(1e-4,e.distanceBias?e.distanceBias:1),this.proxy=e.proxy,this.drawBoundingVolume=!!e.drawBoundingVolume&&e.drawBoundingVolume,this.displayErrors=e.displayErrors,this.displayCopyright=e.displayCopyright,e.queryParams&&(this.queryParams={...e.queryParams}),this.uuid=Kr(),e.tileLoader)this.tileLoader=e.tileLoader;else{const n={};n.meshCallback=e.meshCallback?e.meshCallback:(s,c)=>{s.material.wireframe=!1,s.material.side=G.DoubleSide},n.pointsCallback=e.pointsCallback?e.pointsCallback:(s,c)=>{s.material.size=Math.pow(c,.33),s.material.sizeAttenuation=!0},n.proxy=this.proxy,n.renderer=e.renderer,n.dracoLoader=e.dracoLoader,n.ktx2Loader=e.ktx2Loader,a.tileLoader=new Bi(n);const o=this.update;this.update=s=>{o.call(a,s),a.tileLoader.update()}}if(this.displayCopyright=!!e.displayCopyright,this.geometricErrorMultiplier=e.geometricErrorMultiplier?e.geometricErrorMultiplier:1,this.splatsCropRadius=Number.MAX_VALUE,this.splatsSizeMultiplier=1,this.renderer=e.renderer,this.meshCallback=e.meshCallback,this.loadOutsideView=e.loadOutsideView,this.cameraOnLoad=e.cameraOnLoad,this.parentTile=e.parentTile,this.occlusionCullingService=e.occlusionCullingService,this.static=e.static,this.occlusionCullingService&&(this.color=new G.Color,this.color.setHex(16777215*Math.random()),this.colorID=G.MathUtils.clamp(255*a.color.r,0,255)<<16^G.MathUtils.clamp(255*a.color.g,0,255)<<8^G.MathUtils.clamp(255*a.color.b,0,255)),this.static&&(this.matrixAutoUpdate=!1,this.matrixWorldAutoUpdate=!1),this.childrenTiles=[],this.meshContent=[],this.tileContent,this.refine,this.rootPath,this.geometricError,this.boundingVolume,this.json,this.materialVisibility=!1,this.level=e.level?e.level:0,this.hasMeshContent=0,this.hasUnloadedJSONContent=0,this.centerModel=e.centerModel,this.abortController=new AbortController,this.onLoadCallback=e.onLoadCallback,e.json)a._setup(e);else if(e.url){var t=e.url;if(a.queryParams){var i="";for(let n in a.queryParams)a.queryParams.hasOwnProperty(n)&&(i+="&"+n+"="+a.queryParams[n]);t.includes("?")?t+=i:t+="?"+i.substring(1)}(a.proxy?()=>fetch(a.proxy,{method:"POST",body:t,signal:a.abortController.signal}):()=>fetch(t,{signal:a.abortController.signal}))().then(n=>{if(!n.ok)throw new Error(`couldn't load "${e.url}". Request failed with status ${n.status} : ${n.statusText}`);n.json().then(o=>er(o,t)).then(o=>{a._setup({rootPath:pa.dirname(e.url),json:o})})}).catch(n=>{a.displayErrors&&Zn(n)})}}setClipShape(e){if(e instanceof Ke||e instanceof G.Sphere)this.clipShape=e;else if(e instanceof G.Box3){const a=new G.Vector3,t=new G.Vector3;e.getCenter(a),e.getSize(t).multiplyScalar(.5),this.clipShape=new Ke([a.x,a.y,a.z,t.x,0,0,0,t.y,0,0,0,t.z])}else e=void 0;this.childrenTiles&&this.childrenTiles.forEach(a=>{a._setClipShape(this.clipShape)})}_setClipShape(e){this.clipShape=e,this.childrenTiles&&this.childrenTiles.forEach(a=>{a._setClipShape(this.clipShape)})}setSplatsSizeMultiplier(e){this.splatsSizeMultiplier=e,this.splatsMesh&&this.splatsMesh.setSplatsSizeMultiplier(this.splatsSizeMultiplier)}setSplatsCropRadius(e){this.splatsCropRadius=e,this.splatsMesh&&this.splatsMesh.setSplatsCropRadius(this.splatsCropRadius)}setSplatsCPUCulling(e){this.splatsCPUCulling=e,this.splatsMesh&&this.splatsMesh.setSplatsCPUCulling(e)}setSplatsQuality(e){this.splatsQuality=e,this.splatsMesh&&this.splatsMesh.setQuality(e)}updateMatrices(){this.updateMatrix(),this.splatsMesh&&this.splatsMesh.updateMatrix(),this.static&&(this.traverse(e=>{e.isObject3D&&(e.matrixWorldAutoUpdate=!0)}),this.splatsMesh&&(this.splatsMesh.matrixWorldAutoUpdate=!0)),this.updateMatrixWorld(!0),this.static&&(this.traverse(e=>{e.isObject3D&&(e.matrixWorldAutoUpdate=!1)}),this.splatsMesh&&(this.splatsMesh.matrixWorldAutoUpdate=!1))}setCanvasSize(e,a){this.rendererSize.set(e,a)}async _setup(e){const a=this;if(e.json.extensionsRequired&&(e.json.extensionsRequired.includes("JDULTRA_gaussian_splats")||e.json.extensionsRequired.includes("JDULTRA_gaussian_splats_V2"))&&(a.splatsMesh=a.iosCompatibility?new kc(a.tileLoader.renderer):new vc(a.tileLoader.renderer),a.splatsMesh.setQuality(a.splatsQuality),a.splatsMesh.setSplatsCPUCulling(a.splatsCPUCulling),a.splatsMesh.setSplatsCropRadius(a.splatsCropRadius),a.splatsMesh.setSplatsSizeMultiplier(a.splatsSizeMultiplier),a.static&&(a.splatsMesh.matrixWorldAutoUpdate=!1),a.add(a.splatsMesh),a.updateMatrices()),e.json.root?(a.json=e.json.root,a.json.refine||(a.json.refine=e.json.refine),a.json.geometricError||(a.json.geometricError=e.json.geometricError),a.json.transform||(a.json.transform=e.json.transform),a.json.boundingVolume||(a.json.boundingVolume=e.json.boundingVolume)):a.json=e.json,a.json.children||(a.json.getChildren?a.json.children=await a.json.getChildren():a.json.children=[]),a.rootPath=e.json.rootPath?e.json.rootPath:e.rootPath,a.json.refine?a.refine=a.json.refine:a.refine=e.parentRefine,a.json.geometricError?a.geometricError=a.json.geometricError:a.geometricError=e.parentGeometricError,a.json.transform){let i=new G.Matrix4;i.elements=a.json.transform,a.applyMatrix4(i)}if(a.json.boundingVolume)if(a.json.boundingVolume.box)a.boundingVolume=new Ke(a.json.boundingVolume.box);else if(a.json.boundingVolume.region){const i=a.json.boundingVolume.region;a._transformWGS84ToCartesian(i[0],i[1],i[4],ya),a._transformWGS84ToCartesian(i[2],i[3],i[5],Ja),ya.lerp(Ja,.5),a.boundingVolume=new G.Sphere(new G.Vector3(ya.x,ya.y,ya.z),ya.distanceTo(Ja))}else if(a.json.boundingVolume.sphere){const i=a.json.boundingVolume.sphere;a.boundingVolume=new G.Sphere(new G.Vector3(i[0],i[1],i[2]),i[3])}else a.boundingVolume=e.parentBoundingVolume;else a.boundingVolume=e.parentBoundingVolume;function t(i){i.uri&&i.uri.includes("json")||i.url&&i.url.includes("json")?a.hasUnloadedJSONContent++:a.hasMeshContent++}if(a.json.content?(t(a.json.content),a.hasMeshContent==0&&(a.level=Math.max(0,a.parentTile?a.parentTile.level+.01:0)),a._load()):a.json.contents&&(a.json.contents.forEach(i=>t(i)),a.hasMeshContent==0&&(a.level=Math.max(0,a.parentTile?a.parentTile.level+.01:0))),a.centerModel&&(Ja.copy(a.boundingVolume.center),this.json.boundingVolume.region&&(this._transformWGS84ToCartesian(.5*(this.json.boundingVolume.region[0]+this.json.boundingVolume.region[2]),.5*(this.json.boundingVolume.region[1]+this.json.boundingVolume.region[3]),.5*(this.json.boundingVolume.region[4]+this.json.boundingVolume.region[5]),ya),Xn.setFromUnitVectors(ya.normalize(),jc.normalize()),a.applyQuaternion(Xn)),Ja.applyMatrix4(a.matrix),a.position.sub(Ja),a.updateMatrices()),a.onLoadCallback&&a.onLoadCallback(a),a.isSetup=!0,a.level>0&&a.drawBoundingVolume)if(a.bbox&&console.log("double setup"),this.boundingVolume.aabb){let i=this.boundingVolume.aabb.clone();i.applyMatrix4(this.matrixWorld),a.bbox=new G.Box3Helper(i,new G.Color(Math.random(),Math.random(),Math.random())),a.add(a.bbox),a.bbox.material.visible=!1}else a.boundingVolume instanceof Ke&&(a.bbox=a.boundingVolume.helper(),a.add(a.bbox),a.bbox.material.visible=!1)}_assembleURL(e,a){e.endsWith("/")||(e+="/");const t=new URL(e);let i=t.pathname.split("/").filter(o=>o!==""),n=a.split("/").filter(o=>o!=="");for(let o=1;o<=i.length&&!(o>=n.length);o++)if(i.slice(i.length-o,i.length).join("/")===n.slice(0,o).join("/")){for(let s=0;s<o;s++)i.pop();break}for(;n.length>0&&n[0]==="..";)i.pop(),n.shift();return`${t.protocol}//${t.host}/${[...i,...n].join("/")}`}_extractQueryParams(e,a){const t=new URL(e);for(let[i,n]of t.searchParams)a[i]=n;return t.search="",t.toString()}async _load(e=!0,a=!0){var t=this;if(!t.deleted){if(t.json.content)await i(t.json.content,null,e,a);else if(t.json.contents){let n=t.json.contents.map((o,s)=>i(o,s,e,a));Promise.all(n)}}async function i(n,o,s,c){let u;n.uri?u=n.uri:n.url&&(u=n.url);const A=/^(?:http|https|ftp|tcp|udp):\/\/\S+/;if(A.test(t.rootPath)?A.test(u)||(u=t._assembleURL(t.rootPath,u)):pa.isAbsolute(t.rootPath)&&(u=t.rootPath+pa.sep+u),u=t._extractQueryParams(u,t.queryParams),t.queryParams){var d="";for(let b in t.queryParams)t.queryParams.hasOwnProperty(b)&&(d+="&"+b+"="+t.queryParams[b]);u.includes("?")?u+=d:u+="?"+d.substring(1)}if(u)if(t.contentURL.push(u),c&&(u.includes(".b3dm")||u.includes(".glb")||u.includes(".gltf")))try{t.tileLoader.get(t.abortController,t.uuid,u,b=>{t.deleted||(b.asset&&b.asset.copyright&&(b.asset.copyright.split(";").forEach(h=>{sa[h]?sa[h]++:sa[h]=1}),t.displayCopyright&&Qr()),t.meshContent.push(b),t.splatsMesh||(b.traverse(h=>{if((h.isMesh||h.isPoints)&&h.layers.disable(0),h.isMesh&&t.occlusionCullingService){const l=h.geometry.attributes.position,g=[];for(let m=0;m<l.count;m++)g.push(t.color.r,t.color.g,t.color.b);h.geometry.setAttribute("color",new G.Float32BufferAttribute(g,3))}}),t.add(b),t.updateMatrices()))},t.cameraOnLoad?()=>t.loadingStrategy=="IMMEDIATE"?t._calculateDistanceToCamera(t.cameraOnLoad):t.loadingStrategy=="INCREMENTAL"?t.parentTile?t.parentTile._calculateDistanceToCamera(t.cameraOnLoad)/Math.max(1,t.parentTile.level):t._calculateDistanceToCamera(t.cameraOnLoad)/Math.max(1,t.level):t.loadingStrategy=="PERLEVEL"?t.parentTile?t.level+t.parentTile._calculateDistanceToCamera(t.cameraOnLoad):t.level+t._calculateDistanceToCamera(t.cameraOnLoad):0:()=>0,()=>t._getSiblings(),t.level,t.loadingStrategy,!t.json.boundingVolume.region,!!t.json.boundingVolume.region,t.geometricError,t.splatsMesh)}catch(b){t.displayErrors&&Zn(b)}else s&&u.includes(".json")&&(t.jsonRequested=u,t.tileLoader.get(t.abortController,t.uuid,u,async b=>{t.jsonReceived=!0,t.deleted||(b.rootPath=pa.dirname(u),t.json.children.push(b),o==null?delete t.json.content:t.json.contents.splice(o,1),t.hasUnloadedJSONContent--)}))}}dispose(){const e=this;e.meshContent.forEach(a=>{a&&a.asset&&a.asset.copyright&&(a.asset.copyright.split(";").forEach(t=>{sa[t]&&sa[t]--}),e.displayCopyright&&Qr())}),e.childrenTiles.forEach(a=>a.dispose()),e.deleted=!0,e.splatsMesh&&(e.meshContent.forEach(a=>a.hide()),e.parentTile||(e.splatsMesh.dispose(),e.splatsMesh=void 0)),e.contentURL&&(e.contentURL.forEach(a=>{e.tileLoader.invalidate(a,e.uuid)}),e.contentURL=[]),e.abortController&&!e.jsonRequested&&e.abortController.abort("tile not needed"),this.parent=null,e.meshContent=[],e.bbox&&e.bbox.dispose(),this.dispatchEvent({type:"removed"})}_disposeMeshContent(){const e=this;if(!e.deleted){e.deleted=!0,e.abortController&&(e.abortController.abort("tile not needed"),e.abortController=new AbortController);for(let a=e.meshContent.length-1;a>=0;a--){const t=e.meshContent[a];t&&t.asset&&t.asset.copyright&&(t.asset.copyright.split(";").forEach(i=>{sa[i]&&sa[i]--}),e.displayCopyright&&Qr()),e.remove(t)}e.splatsMesh&&e.meshContent.forEach(a=>a.hide()),e.meshContent=[],e.contentURL.forEach(a=>{e.tileLoader.invalidate(a,e.uuid)}),e.contentURL=[]}}_disposeChildren(){var e=this;e.childrenTiles.forEach(a=>{a.dispose(),e.remove(a)}),e.childrenTiles=[]}raycast(e,a){if(this.splatsMesh){jt.copy(e.ray),Mt.copy(this.matrixWorld).invert(),jt.applyMatrix4(Mt);let t=!1;if(this.boundingVolume instanceof Ke)t=this.boundingVolume.intersectsRay(jt);else{if(!(this.boundingVolume instanceof G.Sphere))return!1;t=ray.intersectsSphere(this.boundingVolume)}return t&&this.materialVisibility&&this.splatsReady&&(St.length=0,this.meshContent.forEach(i=>{i.isSplatsBatch&&(i.raycast(jt,St,e.params.Points.threshold),St.forEach(n=>{n.point.applyMatrix4(this.matrixWorld)}),a.push(...St))})),t}return super.raycast(e,a)}update(e){this.splatsMesh&&this.splatsMesh.updateShaderParams(e,this.renderer);const a=new G.Frustum;a.setFromProjectionMatrix(new G.Matrix4().multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse));let t=[0],i=[0],n=[0],o=[0];if(this.refine=="REPLACE"?this.loadingStrategy==="IMMEDIATE"?(this._updateImmediate(e,a),this._statsImmediate(n,t,o,i)):(this._update(e,a),this._stats(n,t,o,i)):(this._update(e,a),this._stats(n,t,o,i)),t>0&&(o[0]/=t[0]),this.splatsMesh)if(Rt.copy(e.position),Mt.copy(this.matrixWorld).invert(),Rt.applyMatrix4(Mt),this.splatsCPUCulling){const s=new G.Matrix4().multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse).multiply(this.matrixWorld);this.splatsMesh.sort(Rt,s)}else this.splatsMesh.sort(Rt);return{numTilesLoaded:t[0],numTilesRendered:i[0],maxLOD:n[0],percentageLoaded:o[0]}}_updateImmediate(e,a){this._computeMetricRecursive(e,a),this._updateNodeVisibilityImmediate(),this._expandTreeImmediate(e),this.shouldBeVisible=this.metric>0||!!this.loadOutsideView,this._shouldBeVisibleUpdateImmediate(),this._trimTreeImmediate(),this._loadMeshImmediate()}_statsImmediate(e,a,t,i){e[0]=Math.max(e[0],this.level),(this.shouldBeVisible||this.materialVisibility)&&(a[0]++,this.materialVisibility&&t[0]++),this.materialVisibility&&i[0]++,this.childrenTiles.forEach(n=>{n._statsImmediate(e,a,t,i)})}_stats(e,a,t,i){e[0]=Math.max(e[0],this.level),this.hasMeshContent&&(a[0]++,this.meshContent.length==this.hasMeshContent&&t[0]++,this.materialVisibility&&i[0]++),this.childrenTiles.forEach(n=>{n._stats(e,a,t,i)})}_trimTreeImmediate(){if(this.metric!=null)if(this.hasMeshContent&&this.shouldBeVisible&&this.materialVisibility){if(self.splatsMesh&&!self.splatsReady)return;this._disposeChildren()}else this.childrenTiles.forEach(e=>{e._trimTreeImmediate()})}_updateNodeVisibilityImmediate(e=!1){const a=this;if(a.hasMeshContent)if(a.shouldBeVisible)a.meshContent.length==a.hasMeshContent?a.materialVisibility?a.childrenTiles.forEach(t=>{t._updateNodeVisibilityImmediate(!0)}):(a._changeContentVisibility(!0),a.childrenTiles.forEach(t=>{t._updateNodeVisibilityImmediate(e)})):a.childrenTiles.forEach(t=>{t._updateNodeVisibilityImmediate(e)});else{if(!a.loadOutsideView&&a.metric<0)return a._changeContentVisibility(!1),a.meshContent.length>0&&a._disposeMeshContent(),void a.childrenTiles.forEach(t=>{t._updateNodeVisibilityImmediate(!0)});if(!a.materialVisibility||a.splatsMesh&&!a.splatsReady)a.childrenTiles.forEach(t=>{t._updateNodeVisibilityImmediate(e)});else if(e)a._changeContentVisibility(!1),a.meshContent.length>0&&a._disposeMeshContent(),a.childrenTiles.forEach(t=>{t._updateNodeVisibilityImmediate(e)});else{let t=!0;a.childrenTiles.every(i=>!!i._isReadyImmediate()||(t=!1,!1)),t&&a.childrenTiles.length>0?(a._changeContentVisibility(!1),a.meshContent.length>0&&a._disposeMeshContent(),a.childrenTiles.forEach(i=>{i._updateNodeVisibilityImmediate(e)})):a.childrenTiles.forEach(i=>{i._updateNodeVisibilityImmediate(!a.splatsMesh||!!a.splatsReady)})}}else a.childrenTiles.forEach(t=>{t._updateNodeVisibilityImmediate(e)})}_shouldBeVisibleUpdateImmediate(){const e=this;e.hasMeshContent?e.metric==null?e.shouldBeVisible=!1:e.metric<0?(e.shouldBeVisible=!!e.loadOutsideView,e.childrenTiles.forEach(a=>{a._setShouldNotBeVisibleRecursive()})):e.metric<e.geometricErrorMultiplier*e.geometricError?e.hasUnloadedJSONContent||(e.json&&e.json.children&&e.json.children.length>0?(e.shouldBeVisible=!1,e.childrenTiles.forEach(a=>{a.shouldBeVisible=!0,a._shouldBeVisibleUpdateImmediate()})):e.shouldBeVisible=!0):e.childrenTiles.forEach(a=>{a._setShouldNotBeVisibleRecursive()}):(e.childrenTiles.forEach(a=>{a.shouldBeVisible=!0,a._shouldBeVisibleUpdateImmediate()}),e.shouldBeVisible=!1)}_setShouldNotBeVisibleRecursive(){this.shouldBeVisible=!1,this.childrenTiles.forEach(e=>{e._setShouldNotBeVisibleRecursive()})}_loadMeshImmediate(){const e=this;e.hasMeshContent&&e.shouldBeVisible?e.meshContent.length<e.hasMeshContent&&e.contentURL.length==0&&(e.deleted=!1,e._load(!1,!0)):e.childrenTiles.forEach(a=>{a._loadMeshImmediate()})}_computeMetricRecursive(e,a){const t=this;t.metric=-1,t.isSetup&&(t.boundingVolume&&t.geometricError&&(t.metric=t._calculateUpdateMetric(e,a)),t.childrenTiles.forEach(i=>i._computeMetricRecursive(e,a)))}_expandTreeImmediate(e){const a=this;a.hasUnloadedJSONContent||(a.hasMeshContent?a.occlusionCullingService&&a.hasMeshContent&&!a.occlusionCullingService.hasID(a.colorID)||a.metric>=0&&a.metric<a.geometricErrorMultiplier*a.geometricError&&a.json&&a.json.children&&a.childrenTiles.length<a.json.children.length&&a._loadJsonChildren(e):a.json&&a.json.children&&a.childrenTiles.length<a.json.children.length&&a._loadJsonChildren(e)),a.childrenTiles.forEach(t=>t._expandTreeImmediate(e))}_update(e,a){const t=this;if(!t.isSetup)return;const i=t.materialVisibility;t.boundingVolume&&t.geometricError&&(t.metric=t._calculateUpdateMetric(e,a)),t.childrenTiles.forEach(n=>n._update(e,a)),function(n){if(n<0)return t.inFrustum=!1,void t._changeContentVisibility(!!t.loadOutsideView);if(t.inFrustum=!0,!!t.hasMeshContent&&!(t.meshContent.length<t.hasMeshContent)){if(t.childrenTiles.length==0)return void t._changeContentVisibility(!0);if(n>=t.geometricErrorMultiplier*t.geometricError)t._changeContentVisibility(!0);else if(n<t.geometricErrorMultiplier*t.geometricError&&t.refine=="REPLACE"){let o=!0;t.childrenTiles.every(s=>!!s._isReady()||(o=!1,!1)),o?t._changeContentVisibility(!1):t._changeContentVisibility(!0)}}}(t.metric),function(n){n<0&&t.hasMeshContent||t.occlusionCullingService&&t.hasMeshContent&&!t.occlusionCullingService.hasID(t.colorID)||(!t.hasMeshContent||n<=t.geometricErrorMultiplier*t.geometricError&&(t.meshContent.length>0||t.splatsMesh))&&t.json&&t.json.children&&t.childrenTiles.length!=t.json.children.length&&t._loadJsonChildren(e)}(t.metric),function(n,o){if(t.hasMeshContent){if(!t.inFrustum)return void t._disposeChildren();if(t.occlusionCullingService&&!o&&t.hasMeshContent&&t.meshContent.length>0&&t.materialVisibility&&t._areAllChildrenLoadedAndHidden())return t.splatsMesh&&this.materialVisibility&&!t.splatsReady?void 0:void t._disposeChildren();if(n>=t.geometricErrorMultiplier*t.geometricError){if(t.splatsMesh&&t.materialVisibility&&!t.splatsReady)return;t._disposeChildren()}}}(t.metric,i)}_loadJsonChildren(e){const a=this;for(let t=a.json.children.length-1;t>=0;t--)a.json.children[t].root||a.json.children[t].children||a.json.children[t].getChildren||a.json.children[t].content||a.json.children[t].contents||a.json.children.splice(t,1);a.json.children.forEach(t=>{let i=new Fr({parentTile:a,queryParams:a.queryParams,parentGeometricError:a.geometricError,parentBoundingVolume:a.boundingVolume,parentRefine:a.refine,json:t,rootPath:a.rootPath,geometricErrorMultiplier:a.geometricErrorMultiplier,loadOutsideView:a.loadOutsideView,level:Math.floor(a.level)+1,tileLoader:a.tileLoader,cameraOnLoad:e,occlusionCullingService:a.occlusionCullingService,renderer:a.renderer,static:a.static,centerModel:!1,displayErrors:a.displayErrors,displayCopyright:a.displayCopyright,distanceBias:a.distanceBias,loadingStrategy:a.loadingStrategy,drawBoundingVolume:a.drawBoundingVolume,splatsMesh:a.splatsMesh,clipShape:a.clipShape});a.childrenTiles.push(i),a.add(i)}),a.updateMatrices(!0)}_areAllChildrenLoadedAndHidden(){let e=!0;const a=this;return this.childrenTiles.every(t=>{if(t.hasMeshContent){if(t.childrenTiles.length>0)return e=!1,!1;if(!t.metric<0)return!0;if(t.materialVisibility&&(!a.splatsMesh||a.splatsReady)||a.occlusionCullingService.hasID(t.colorID))return e=!1,!1}else if(!t._areAllChildrenLoadedAndHidden())return e=!1,!1;return!0}),e}_isReady(){if(this.metric==null)return!1;if(this.metric<0)return!0;if(this.hasUnloadedJSONContent)return!1;if(!this.hasMeshContent&&this.json.children.length==0&&!this.hasUnloadedJSONContent)return!0;if(!this.hasMeshContent||this.meshContent.length==0||!this.materialVisibility){if(this.children.length>0){var e=!0;return this.childrenTiles.every(a=>!!a._isReady()||(e=!1,!1)),e}return!1}return!this.hasMeshContent||!(this.meshContent.length<this.hasMeshContent)&&!!this.materialVisibility}_isReadyImmediate(){if(this.materialVisibility||!this.loadOutsideView&&this.metric<0)return!0;if(this.childrenTiles.length>0){var e=!0;return this.childrenTiles.every(a=>!!a._isReadyImmediate()||(e=!1,!1)),e}return!1}_changeContentVisibility(e){const a=this;if(a.bbox&&(a.bbox.material.visible=e),a.splatsMesh)e!=a.materialVisibility&&(a.meshContent.forEach(t=>{e&&t.isSplatsBatch?t.show(()=>{a.materialVisibility&&(a.splatsReady=!0)}):(t.hide(),a.splatsReady=!1)}),a.materialVisibility=e);else{if(a.hasMeshContent&&a.meshContent.length>0&&(e?a.meshContent.forEach(t=>{t.traverse(i=>{(i.isMesh||i.isPoints)&&i.layers.enable(0)})}):a.meshContent.forEach(t=>{t.traverse(i=>{(i.isMesh||i.isPoints)&&i.layers.disable(0)})})),a.materialVisibility==e)return;a.materialVisibility=e}}_calculateUpdateMetric(e,a){let t=0;if(this.boundingVolume instanceof Ke){if(ba.copy(this.boundingVolume),ba.applyMatrix4(this.matrixWorld),!ba.inFrustum(a))return-1;if(this.clipShape!=null&&(this.clipShape.isSphere&&!ba.intersectsSphere(this.clipShape)||this.clipShape.isOBB&&!ba.intersectsOBB(this.clipShape)))return Number.MAX_VALUE;t=Math.max(0,ba.distanceToPoint(e.position)-e.near)}else{if(!(this.boundingVolume instanceof G.Sphere))return console.error("unsupported shape"),-1;if(aa.copy(this.boundingVolume),aa.applyMatrix4(this.matrixWorld),this.clipShape!=null&&(this.clipShape.isOBB&&!this.clipShape.intersectsSphere(aa)||this.clipShape.isSphere&&!this.clipShape.intersectsSphere(aa)))return Number.MAX_VALUE;if(!a.intersectsSphere(aa))return-1;t=Math.max(0,e.position.distanceTo(aa.center)-aa.radius-e.near)}if(t=Math.pow(t,this.distanceBias),t==0)return 0;const i=this.matrixWorld.getMaxScaleOnAxis();this.renderer&&this.renderer.getDrawingBufferSize(this.rendererSize);let n=this.rendererSize.y,o=e.fov;return e.aspect<1&&(o*=e.aspect,n=this.rendererSize.x),16*(2*Math.tan(.5*o*.017453292519943295)*t)/(n*i)}_getSiblings(){const e=this,a=[];if(!e.parentTile)return a;let t=e.parentTile;for(;!t.hasMeshContent&&t.parentTile;)t=t.parentTile;return t.childrenTiles.forEach(i=>{if(i&&i!=e){for(;!i.hasMeshContent&&i.childrenTiles[0];)i=i.childrenTiles[0];a.push(i)}}),a}_calculateDistanceToCamera(e){return this.boundingVolume instanceof Ke?(ba.copy(this.boundingVolume),ba.applyMatrix4(this.matrixWorld),Math.max(0,ba.distanceToPoint(e.position))):this.boundingVolume instanceof G.Sphere?(aa.copy(this.boundingVolume),aa.applyMatrix4(this.matrixWorld),Math.max(0,e.position.distanceTo(aa.center)-aa.radius)):(console.error("unsupported shape"),-1)}setGeometricErrorMultiplier(e){this.geometricErrorMultiplier=e,this.childrenTiles.forEach(a=>a.setGeometricErrorMultiplier(e))}setDistanceBias(e){this.distanceBias=e,this.childrenTiles.forEach(a=>a.setDistanceBias(e))}_transformWGS84ToCartesian(e,a,t,i){const n=6378137/Math.sqrt(1-.006694384442042*Math.pow(Math.sin(a),2)),o=Math.cos(a),s=Math.cos(e),c=Math.sin(a),u=n+t,A=u*o*s,d=u*o*Math.sin(e),b=(.993305615557957*n+t)*c;i.set(A,d,b)}hideCopyright(){(function(){oe||((oe=document.createElement("div")).style.position="fixed",oe.style.bottom="20px",oe.style.left="20px",oe.style.color="white",oe.style.textShadow="2px 2px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000",oe.style.padding="10px",oe.style.backgroundColor="rgba(0, 0, 0, 0.1)",document.body.appendChild(oe)),oe.style.opacity=0})()}showCopyright(){(function(){oe||((oe=document.createElement("div")).style.position="fixed",oe.style.bottom="20px",oe.style.left="20px",oe.style.color="white",oe.style.textShadow="2px 2px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000",oe.style.padding="10px",oe.style.backgroundColor="rgba(0, 0, 0, 0.1)",document.body.appendChild(oe)),oe.style.opacity=1})()}}function Zn(r){var e=document.createElement("div");e.textContent=r,e.style.position="fixed",e.style.top="10px",e.style.left="50%",e.style.transform="translateX(-50%)",e.style.padding="10px",e.style.backgroundColor="#ff8800",e.style.color="#ffffff",e.style.zIndex="9999",document.body.appendChild(e),setTimeout(function(){e.remove()},8e3)}function Qr(){oe||((oe=document.createElement("div")).style.position="fixed",oe.style.bottom="20px",oe.style.left="20px",oe.style.color="white",oe.style.textShadow="2px 2px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000",oe.style.padding="10px",oe.style.backgroundColor="rgba(0, 0, 0, 0.1)",document.body.appendChild(oe));const r=Yn();let e="";r.forEach(a=>{e+=a+", "}),e=e.slice(0,-2),oe.textContent=e}const qe=new G.Sphere(new G.Vector3(0,0,0),1),wa=new G.Vector3(0,0,0),kr=new G.Vector3(0,0,0),Mc=new G.Vector3(0,1,0),jr=new G.Vector2,$n=new G.Quaternion,eo=new G.Matrix4;class Mr extends G.Object3D{constructor(e){super();const a=this;if(e.queryParams&&(this.queryParams={...e.queryParams}),this.uuid=Kr(),e.tileLoader?this.tileLoader=e.tileLoader:console.error("an instanced tileset must be provided an InstancedTilesetLoader"),this.master=e.master,this.loadOutsideView=e.loadOutsideView,this.cameraOnLoad=e.cameraOnLoad,this.parentTile=e.parentTile,this.distanceBias=Math.max(1e-4,e.distanceBias?e.distanceBias:1),this.childrenTiles=[],this.jsonChildren=[],this.meshContent=new Set,this.static=e.static,this.static&&(this.matrixAutoUpdate=!1,this.matrixWorldAutoUpdate=!1),this.tileContent,this.refinement,this.rootPath,this.geometricError,this.boundingVolume,this.json,this.materialVisibility=!1,this.inFrustum=!0,this.level=e.level?e.level:0,this.hasMeshContent=0,this.hasUnloadedJSONContent=0,this.centerModel=e.centerModel,this.deleted=!1,this.abortController=new AbortController,e.json)this.rootPath=e.json.rootPath?e.json.rootPath:e.rootPath,e.json.children&&(this.jsonChildren=e.json.children),a.setup(e);else if(e.url){this.loadJson=(n,o)=>{const s=pa.dirname(o);a.setup({rootPath:s,json:n,onLoadCallback:e.onLoadCallback})};var t=e.url;if(a.queryParams){var i="";for(let n in a.queryParams)a.queryParams.hasOwnProperty(n)&&(i+="&"+n+"="+a.queryParams[n]);t.includes("?")?t+=i:t+="?"+i.substring(1)}a.tileLoader.get(a.abortController,t,a.uuid,a)}}async setup(e){const a=this;e.json.root?(a.json=e.json.root,!a.json.children&&a.json.getChildren&&(a.json.children=await a.json.getChildren()),a.jsonChildren=a.json.children,a.json.refinement||(a.json.refinement=e.json.refinement),a.json.geometricError||(a.json.geometricError=e.json.geometricError),a.json.transform||(a.json.transform=e.json.transform),a.json.boundingVolume||(a.json.boundingVolume=e.json.boundingVolume)):(a.json=e.json,!a.json.children&&a.json.getChildren&&(a.json.children=await a.json.getChildren(),a.jsonChildren=a.json.children)),a.rootPath=e.json.rootPath?e.json.rootPath:e.rootPath,a.json.refinement?a.refinement=a.json.refinement:a.refinement=e.parentRefinement,a.json.geometricError?a.geometricError=a.json.geometricError:a.geometricError=e.parentGeometricError;let t=new G.Matrix4;if(a.json.transform&&!a.centerModel&&(t.elements=a.json.transform),a.applyMatrix4(t),a.parentTile&&a.parentTile.matrix&&(a.matrix.premultiply(a.parentTile.matrix),a.matrix.decompose(a.position,a.quaternion,a.scale)),a.matrixWorldNeedsUpdate=!0,a.updateWorldMatrix(!0,!0),a.json.boundingVolume)if(a.json.boundingVolume.box)a.boundingVolume=new Ke(a.json.boundingVolume.box);else if(a.json.boundingVolume.region){const n=a.json.boundingVolume.region;a.transformWGS84ToCartesian(n[0],n[1],n[4],wa),a.transformWGS84ToCartesian(n[2],n[3],n[5],kr),wa.lerp(kr,.5),a.boundingVolume=new G.Sphere(new G.Vector3(wa.x,wa.y,wa.z),wa.distanceTo(kr))}else if(a.json.boundingVolume.sphere){const n=a.json.boundingVolume.sphere;a.boundingVolume=new G.Sphere(new G.Vector3(n[0],n[1],n[2]),n[3])}else a.boundingVolume=e.parentBoundingVolume;else a.boundingVolume=e.parentBoundingVolume;function i(n){n.uri&&n.uri.includes("json")||n.url&&n.url.includes("json")?a.hasUnloadedJSONContent++:a.hasMeshContent++}if(a.json.content?(i(a.json.content),a.load()):a.json.contents&&(a.json.contents.forEach(n=>i(n)),a.load()),a.centerModel){const n=new G.Sphere;a.boundingVolume instanceof Ke?n.copy(a.boundingVolume.sphere):a.boundingVolume instanceof G.Sphere&&n.copy(a.boundingVolume),this.json.boundingVolume.region&&(a.transformWGS84ToCartesian(.5*(a.json.boundingVolume.region[0]+a.json.boundingVolume.region[2]),.5*(a.json.boundingVolume.region[1]+a.json.boundingVolume.region[3]),.5*(a.json.boundingVolume.region[4]+a.json.boundingVolume.region[5]),wa),$n.setFromUnitVectors(wa.normalize(),Mc.normalize()),a.master.applyQuaternion($n),a.master.updateWorldMatrix(!1,!1)),eo.makeTranslation(-n.center.x*a.scale.x,-n.center.y*a.scale.y,-n.center.z*a.scale.z),a.master.matrix.multiply(eo),a.master.matrix.decompose(a.master.position,a.master.quaternion,a.master.scale)}a.isSetup=!0,e.onLoadCallback&&e.onLoadCallback(a)}isAbsolutePathOrURL(e){const a=/^(?:http|https|ftp|tcp|udp):\/\/\S+/.test(e),t=e.startsWith("/")&&!e.startsWith("//");return a||t}assembleURL(e,a){e.endsWith("/")||(e+="/");const t=new URL(e);let i=t.pathname.split("/").filter(o=>o!==""),n=a.split("/").filter(o=>o!=="");for(let o=1;o<=i.length&&!(o>=n.length);o++)if(i.slice(i.length-o,i.length).join("/")===n.slice(0,o).join("/")){for(let s=0;s<o;s++)i.pop();break}for(;n.length>0&&n[0]==="..";)i.pop(),n.shift();return`${t.protocol}//${t.host}/${[...i,...n].join("/")}`}extractQueryParams(e,a){const t=new URL(e);for(let[i,n]of t.searchParams)a[i]=n;return t.search="",t.toString()}load(){var e=this;function a(t){let i;t.uri?i=t.uri:t.url&&(i=t.url);const n=/^(?:http|https|ftp|tcp|udp):\/\/\S+/;if(n.test(e.rootPath)?n.test(i)||(i=e.assembleURL(e.rootPath,i)):pa.isAbsolute(e.rootPath)&&(i=e.rootPath+pa.sep+i),i=e.extractQueryParams(i,e.queryParams),e.queryParams){var o="";for(let s in e.queryParams)e.queryParams.hasOwnProperty(s)&&(o+="&"+s+"="+e.queryParams[s]);i.includes("?")?i+=o:i+="?"+o.substring(1)}i&&(i.includes(".b3dm")||i.includes(".glb")||i.includes(".gltf")?(e.contentURL=i,e.tileLoader.get(e.abortController,i,e.uuid,e,e.cameraOnLoad?()=>e.calculateDistanceToCamera(e.cameraOnLoad):()=>0,()=>e.getSiblings(),e.level,!e.json.boundingVolume.region,!!e.json.boundingVolume.region,e.geometricError)):i.includes(".json")&&e.tileLoader.get(e.abortController,i,e.uuid,e))}e.deleted||(e.json.content?a(e.json.content):e.json.contents&&e.json.contents.forEach(t=>a(t)))}loadMesh(e){this.deleted||this.meshContent.add(e)}loadJson(e,a){this.deleted||(this.json.children&&(this.jsonChildren=this.json.children),e.rootPath=pa.dirname(a),this.jsonChildren.push(e),this.hasUnloadedJSONContent--)}dispose(){const e=this;e.childrenTiles.forEach(a=>a.dispose()),e.deleted=!0,e.abortController&&e.abortController.abort(),this.parent=null,this.parentTile=null,this.dispatchEvent({type:"removed"})}disposeChildren(){this.childrenTiles.forEach(e=>e.dispose()),this.childrenTiles=[]}_update(e,a){const t=this;function i(n){if(t.hasMeshContent&&!(t.meshContent.size<t.hasMeshContent)){if(n<0)return t.inFrustum=!1,void t.changeContentVisibility(!!t.loadOutsideView);if(t.inFrustum=!0,t.childrenTiles.length!=0){if(n>=t.master.geometricErrorMultiplier*t.geometricError)t.changeContentVisibility(!0);else if(n<t.master.geometricErrorMultiplier*t.geometricError){let o=!0;t.childrenTiles.every(s=>!!s.isReady()||(o=!1,!1)),o&&t.changeContentVisibility(!1)}}else t.changeContentVisibility(!0)}}t.isSetup&&(t.materialVisibility,t.boundingVolume&&t.geometricError&&(t.metric=t.calculateUpdateMetric(e,a)),t.childrenTiles.forEach(n=>n._update(e,a)),i(t.metric),function(n){n<0&&t.hasMeshContent||(!t.hasMeshContent&&t.rootPath||n<t.master.geometricErrorMultiplier*t.geometricError&&t.meshContent.size>0)&&t.json&&t.jsonChildren&&t.childrenTiles.length!=t.jsonChildren.length&&t.jsonChildren.forEach(o=>{if(!(o.root||o.children||o.getChildren||o.content||o.contents))return;let s=new Mr({parentTile:t,queryParams:t.queryParams,parentGeometricError:t.geometricError,parentBoundingVolume:t.boundingVolume,parentRefinement:t.refinement,json:o,rootPath:t.rootPath,loadOutsideView:t.loadOutsideView,level:t.level+1,tileLoader:t.tileLoader,cameraOnLoad:e,master:t.master,centerModel:!1});t.childrenTiles.push(s)})}(t.metric),function(n){if(t.hasMeshContent){if(!t.inFrustum)return t.disposeChildren(),void i(n);n>=t.master.geometricErrorMultiplier*t.geometricError&&(t.disposeChildren(),i(n))}}(t.metric))}areAllChildrenLoadedAndHidden(){let e=!0;return this.childrenTiles.every(a=>{if(a.hasMeshContent){if(a.childrenTiles.length>0)return e=!1,!1;if(!a.inFrustum)return!0;if(!a.materialVisibility||a.meshesToDisplay!=a.meshesDisplayed)return e=!1,!1}else if(!a.areAllChildrenLoadedAndHidden())return e=!1,!1;return!0}),e}isReady(){if(!this.inFrustum)return!0;if(this.hasUnloadedJSONContent)return!1;if(!this.hasMeshContent||this.meshContent.size==0||!this.materialVisibility){if(this.childrenTiles.length>0){var e=!0;return this.childrenTiles.every(a=>!!a.isReady()||(e=!1,!1)),e}return!1}return!this.hasMeshContent||!(this.meshContent.size<this.hasMeshContent)&&!!this.materialVisibility}changeContentVisibility(e){this.materialVisibility=e}calculateUpdateMetric(e,a){if(this.boundingVolume instanceof Ke){if(qe.copy(this.boundingVolume.sphere),qe.applyMatrix4(this.matrixWorld),!a.intersectsSphere(qe))return-1}else{if(!(this.boundingVolume instanceof G.Sphere))return console.error("unsupported shape"),-1;if(qe.copy(this.boundingVolume),qe.applyMatrix4(this.matrixWorld),!a.intersectsSphere(qe))return-1}let t=Math.max(0,e.position.distanceTo(qe.center)-qe.radius);if(t=Math.pow(t,this.distanceBias),t==0)return 0;const i=this.matrixWorld.getMaxScaleOnAxis();this.master._renderSize(jr);let n=jr.y,o=e.fov;e.aspect<1&&(o*=e.aspect,n=jr.x);let s=2*Math.tan(.5*o*.017453292519943295)*t;return 16*window.devicePixelRatio*s/(n*i)}getSiblings(){const e=this,a=[];if(!e.parentTile)return a;let t=e.parentTile;for(;!t.hasMeshContent&&t.parentTile;)t=t.parentTile;return t.childrenTiles.forEach(i=>{if(i&&i!=e){for(;!i.hasMeshContent&&i.childrenTiles[0];)i=i.childrenTiles[0];a.push(i)}}),a}calculateDistanceToCamera(e){return this.boundingVolume instanceof Ke?(qe.copy(this.boundingVolume.sphere),qe.applyMatrix4(this.matrixWorld)):this.boundingVolume instanceof G.Sphere?(qe.copy(this.boundingVolume),qe.applyMatrix4(this.matrixWorld)):console.error("unsupported shape"),Math.max(0,e.position.distanceTo(qe.center)-qe.radius)}getWorldMatrix(){return this.matrixWorld}transformWGS84ToCartesian(e,a,t,i){const n=6378137/Math.sqrt(1-.006694384442042*Math.pow(Math.sin(a),2)),o=Math.cos(a),s=Math.cos(e),c=Math.sin(a),u=n+t,A=u*o*s,d=u*o*Math.sin(e),b=(.993305615557957*n+t)*c;i.set(A,d,b)}}class Rc extends G.Object3D{constructor(e){super(),e.master=this,e.domWidth&&e.domHeight?this.rendererSize=new G.Vector2(e.domWidth,e.domHeight):this.rendererSize=new G.Vector2(1e3,1e3),this.renderer=e.renderer,this.distanceBias=Math.max(1e-4,e.distanceBias?e.distanceBias:1),this.geometricErrorMultiplier=e.geometricErrorMultiplier?e.geometricErrorMultiplier:1,this.tileset=new Mr(e),e.static&&(this.matrixAutoUpdate=!1),this.tileLoader=e.tileLoader}_renderSize(e){this.renderer?this.renderer.getDrawingBufferSize(e):e.copy(this.rendererSize)}setCanvasSize(e,a){this.rendererSize.set(e,a)}update(e,a){if(a)this.tileset._update(e,a);else{const t=new G.Frustum;t.setFromProjectionMatrix(new G.Matrix4().multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse)),this.tileset._update(e,t)}}setGeometricErrorMultiplier(e){this.geometricErrorMultiplier=e||1}}class Sc{constructor(e){const a=this;a.scene=e,a.instancedTiles=[],a.instancedMesh,a.reuseableMatrix=new G.Matrix4}addInstance(e){const a=this;e.added=!0,e.listOMesh=a.instancedTiles,a.instancedTiles.push(e),a.instancedMesh&&e.loadMesh(a.instancedMesh)}addToScene(){const e=this;e.instancedMesh.setMatrixAt(0,new G.Matrix4),e.instancedMesh.instanceMatrix.needsUpdate=!0,e.instancedMesh.count=1,e.scene.add(e.instancedMesh),e.instancedMesh.onAfterRender=()=>{delete e.instancedMesh.onAfterRender,e.instancedMesh.displayedOnce=!0}}setObject(e){const a=this;a.instancedMesh=e,a.instancedMesh.matrixAutoUpdate=!1,a.instancedMesh.matrixWorldAutoUpdate=!1,a.scene.children.includes(e)||this.addToScene();for(let t=0;t<a.instancedTiles.length;t++)a.instancedTiles[t].loadMesh(a.instancedMesh)}update(){const e=this;for(let a=e.instancedTiles.length-1;a>=0;a--)e.instancedTiles[a].deleted&&e.instancedTiles.splice(a,1);if(e.instancedMesh){e.instancedMesh.count=0,e.instancedMesh.instancedTiles=[];for(let a=0;a<e.instancedTiles.length;a++)e.instancedTiles[a].meshContent.add(e.instancedMesh),e.instancedTiles[a].materialVisibility&&(e.instancedMesh.count++,e.reuseableMatrix.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),e.reuseableMatrix.multiply(e.instancedTiles[a].matrixWorld),e.reuseableMatrix.multiply(e.instancedMesh.baseMatrix),e.instancedMesh.setMatrixAt(e.instancedMesh.count-1,e.reuseableMatrix),e.instancedMesh.instancedTiles.push(e.instancedTiles[a]));e.instancedMesh.instanceMatrix.needsUpdate=!0,e.instancedMesh.needsUpdate=!0,e.instancedMesh.computeBoundingSphere()}}getCount(){return this.instancedTiles.length}dispose(){const e=this;return!(e.instancedTiles.length>0)&&!!e.instancedMesh&&(e.scene.remove(e.instancedMesh),e.instancedMesh.traverse(a=>{if(a.dispose&&a.dispose(),a.material)if(a.material.length)for(let t=0;t<a.material.length;++t)a.material[t].dispose();else a.material.dispose();a.geometry&&a.geometry.dispose()}),e.instancedMesh.dispose(),!0)}}class Tc{constructor(){const e=this;e.count=0,e.json,e.instancedTiles=[]}addInstance(e){this.instancedTiles.push(e),this.json&&e.loadJson(this.json,this.url)}setObject(e,a){const t=this;t.json=e,t.url=a;for(let i=0;i<t.instancedTiles.length;i++)t.instancedTiles[i].loadJson(t.json,t.url)}getCount(){return this.instancedTiles.length}update(){const e=this;for(let a=e.instancedTiles.length-1;a>=0;a--)e.instancedTiles[a].deleted&&e.instancedTiles.splice(a,1)}dispose(){return!(!this.json||this.instancedTiles.length!=0)}}let Ma=0;async function Nc(r){return new Promise(e=>{const a=setInterval(()=>{r.hasDracoLoader&&!r.dracoLoader||r.hasKTX2Loader&&!r.ktx2Loader||(clearInterval(a),e())},10)})}_e.InstancedOGC3DTile=Rc,_e.InstancedTileLoader=class{constructor(r,e){if(this.zUpToYUpMatrix=new G.Matrix4,this.zUpToYUpMatrix.set(1,0,0,0,0,0,-1,0,0,1,0,0,0,0,0,1),this.maxCachedItems=100,this.maxInstances=1,this.proxy=e.proxy,e&&(this.meshCallback=e.meshCallback,this.pointsCallback=e.pointsCallback,e.maxCachedItems&&(this.maxCachedItems=e.maxCachedItems),e.maxInstances&&(this.maxInstances=e.maxInstances)),this.gltfLoader=new Or,e&&e.dracoLoader)this.gltfLoader.setDRACOLoader(e.dracoLoader),this.hasDracoLoader=!0;else{const a=new Yr;a.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.4.3/"),this.gltfLoader.setDRACOLoader(a),this.gltfLoader.hasDracoLoader=!0}if(e&&e.ktx2Loader)this.gltfLoader.setKTX2Loader(e.ktx2Loader),this.hasKTX2Loader=!0;else if(e&&e.renderer){const a=new Oe;a.setTranscoderPath("https://storage.googleapis.com/ogc-3d-tiles/basis/").detectSupport(e.renderer),this.gltfLoader.setKTX2Loader(a),this.gltfLoader.hasKTX2Loader=!0}this.gltfLoader.setMeshoptDecoder(Ii),this.hasMeshOptDecoder=!0,this.b3dmDecoder=new Pr(this.gltfLoader),this.cache=new Lr,this.scene=r,this.ready=[],this.downloads=[],this.nextReady=[],this.nextDownloads=[]}update(){const r=this;r._checkSize(),r.cache._data.forEach(e=>{e.update()}),Ma<8&&r._download(),r._loadBatch()}_download(){const r=this;if(r.nextDownloads.length!=0||(r._getNextDownloads(),r.nextDownloads.length!=0))for(;r.nextDownloads.length>0;){const a=r.nextDownloads.shift();if(a){if(a.path.includes(".b3dm")&&(e=r.proxy?()=>fetch(r.proxy,{method:"POST",body:a.path}):()=>fetch(a.path),Ma++,e().then(t=>{if(!t.ok)throw console.error("could not load tile with path : "+a.path),new Error(`couldn't load "${a.path}". Request failed with status ${t.status} : ${t.statusText}`);return t.arrayBuffer()}).then(t=>this.b3dmDecoder.parseB3DMInstanced(t,i=>{r.meshCallback(i,a.geometricError)},r.maxInstances,a.sceneZupToYup,a.meshZupToYup)).then(t=>{t.frustumCulled=!1,a.tile.setObject(t),r.ready.unshift(a)}).catch(t=>console.error(t)).finally(()=>{Ma--})),a.path.includes(".glb")||a.path.includes(".gltf"))e=r.proxy?()=>fetch(r.proxy,{method:"POST",body:a.path}):()=>fetch(a.path),Ma++,e().then(t=>{if(!t.ok)throw new Error("missing content");return t.arrayBuffer()}).then(async t=>{await Nc(this.gltfLoader),this.gltfLoader.parse(t,null,i=>{let n;i.scene.asset=i.asset,a.sceneZupToYup&&i.scene.applyMatrix4(this.zUpToYUpMatrix),i.scene.traverse(o=>{o.geometricError=a.geometricError,o.isMesh&&(a.meshZupToYup&&o.applyMatrix4(this.zUpToYUpMatrix),r.meshCallback&&r.meshCallback(o,o.geometricError)),o.isPoints&&console.error("instanced point cloud is not supported")}),i.scene.updateWorldMatrix(!1,!0),i.scene.traverse(o=>{o.isMesh&&(n=new G.InstancedMesh(o.geometry,o.material,r.maxInstances),n.baseMatrix=o.matrixWorld)}),r.ready.unshift(a),n?(n.frustumCulled=!1,a.tile.setObject(n)):i.scene.traverse(o=>{o.dispose&&o.dispose(),o.material&&o.material.dispose()})})},t=>{console.error("could not load tile : "+a.path)}).finally(()=>{Ma--});else if(a.path.includes(".json")){var e;e=r.proxy?()=>fetch(r.proxy,{method:"POST",body:a.path}):()=>fetch(a.path),Ma++,e().then(t=>{if(!t.ok)throw console.error("could not load tile with path : "+a.path),new Error(`couldn't load "${a.path}". Request failed with status ${t.status} : ${t.statusText}`);return t.json()}).then(t=>er(t,a.path)).then(t=>{a.tile.setObject(t,a.path),r.ready.unshift(a)}).catch(t=>console.error(t)).finally(()=>{Ma--})}}}}_loadBatch(){return this.nextReady.length==0&&(this._getNextReady(),this.nextReady.length==0)?0:this.nextReady.shift()?1:0}_getNextReady(){let r=Number.MAX_VALUE,e=-1;for(let a=this.ready.length-1;a>=0;a--)this.ready[a].distanceFunction||this.nextReady.push(this.ready.splice(a,1)[0]);if(!(this.nextReady.length>0)){for(let a=this.ready.length-1;a>=0;a--){const t=this.ready[a].distanceFunction()*this.ready[a].level;t<r&&(r=t,e=a)}if(e>=0){const a=this.ready.splice(e,1).pop();this.nextReady.push(a);const t=a.getSiblings();for(let i=this.ready.length-1;i>=0;i--)t.includes(this.ready[i].uuid)&&this.nextready.push(this.ready.splice(i,1).pop())}}}get(r,e,a,t,i,n,o,s,c,u){const A=this,d=function(h){for(var l=h.split("/"),g=[],m=0,E=0;E<l.length;E++){var p=l[E];p!=="."&&p!==""&&p!==".."?g[m++]=p:p===".."&&m>0&&m--}if(m===0)return"/";var C="";for(E=0;E<m;E++)C+="/"+g[E];return C}(e);if(!(e.includes(".b3dm")||e.includes(".json")||e.includes(".glb")||e.includes(".gltf")))return void console.error("the 3DTiles cache can only be used to load B3DM, gltf and json data");const b=A.cache.get(d);if(b)b.addInstance(t);else if(e.includes(".b3dm")||e.includes(".glb")||e.includes(".gltf")){const h=new Sc(A.scene);h.addInstance(t),A.cache.put(d,h);const l=new AbortController;r.signal.addEventListener("abort",()=>{h.getCount()==0&&l.abort()}),this.downloads.push({abortController:l,tile:h,key:d,path:e,distanceFunction:i,getSiblings:n,level:o,uuid:a,sceneZupToYup:s,meshZupToYup:c,geometricError:u,shouldDoDownload:()=>!0})}else if(e.includes(".json")){const h=new Tc;h.addInstance(t),A.cache.put(d,h);const l=new AbortController;r.signal.addEventListener("abort",()=>{h.getCount()==0&&l.abort()}),this.downloads.push({abortController:l,tile:h,key:d,path:e,distanceFunction:i,getSiblings:n,level:o,shouldDoDownload:()=>!0})}}_getNextDownloads(){let r=Number.MAX_VALUE,e=-1;for(let a=this.downloads.length-1;a>=0;a--){const t=this.downloads[a];t.shouldDoDownload()?t.distanceFunction||this.nextDownloads.push(this.downloads.splice(a,1)[0]):this.downloads.splice(a,1)}if(!(this.nextDownloads.length>0)){for(let a=this.downloads.length-1;a>=0;a--){const t=this.downloads[a],i=t.distanceFunction()*t.level;i<r&&(r=i,e=a)}if(e>=0){const a=this.downloads.splice(e,1).pop();this.nextDownloads.push(a);const t=a.getSiblings();for(let i=this.downloads.length-1;i>=0;i--)t.includes(this.downloads[i].uuid)&&this.nextDownloads.push(this.downloads.splice(i,1).pop())}}}_checkSize(){const r=this;let e=0;for(;r.cache.size()>r.maxCachedItems&&e<r.cache.size();){e++;const a=r.cache.head();r.cache.remove(a.key),a.value.dispose()||r.cache.put(a.key,a.value)}}},_e.OBB=Ke,_e.OGC3DTile=Fr,_e.OcclusionCullingService=class{constructor(){this.cullMap=[],this.cullMaterial=new G.MeshBasicMaterial({vertexColors:!0}),this.cullMaterial.side=G.FrontSide,this.cullTarget=this._createCullTarget(),this.cullPixels=new Uint8Array(4*this.cullTarget.width*this.cullTarget.height)}setSide(r){this.cullMaterial.side=r}_createCullTarget(){const r=new G.WebGLRenderTarget(Math.floor(.05*window.innerWidth),Math.floor(.05*window.innerHeight));return r.texture.format=G.RGBAFormat,r.texture.colorSpace=G.LinearSRGBColorSpace,r.texture.minFilter=G.NearestFilter,r.texture.magFilter=G.NearestFilter,r.texture.generateMipmaps=!1,r.stencilBuffer=!1,r.depthBuffer=!0,r.depthTexture=new G.DepthTexture,r.depthTexture.format=G.DepthFormat,r.depthTexture.type=G.UnsignedShortType,r}update(r,e,a){let t=e.getRenderTarget(),i=r.overrideMaterial;r.overrideMaterial=this.cullMaterial,e.setRenderTarget(this.cullTarget),e.render(r,a),r.overrideMaterial=i,e.setRenderTarget(t),e.readRenderTargetPixels(this.cullTarget,0,0,this.cullTarget.width,this.cullTarget.height,this.cullPixels),this.cullMap=[];for(let n=0;n<this.cullPixels.length;n+=4){const o=G.MathUtils.clamp(this.cullPixels[n],0,255)<<16^G.MathUtils.clamp(this.cullPixels[n+1],0,255)<<8^G.MathUtils.clamp(this.cullPixels[n+2],0,255);this.cullMap[o]=!0}}hasID(r){return this.cullMap[r]}},_e.TileLoader=Bi,_e.getOGC3DTilesCopyrightInfo=Yn,_e.splatsFragmentShader=Jn,_e.splatsVertexShader=On,Object.defineProperty(_e,Symbol.toStringTag,{value:"Module"})});
|
|
561
560
|
//# sourceMappingURL=threedtiles.umd.js.map
|