@that-sky-project/that-sky-level 1.0.0

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/cli.js ADDED
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env node
2
+ (()=>{var a={950(a,e,t){const b=t(932),i=t(785);function r(a,e){var t;return console.log(t=c(a,e)),t}function c(a,e){var t="";if(null==a||!a.length)return"";for(var b=0;b<a.length;b++)"%"==a[b]?null!=a[b+1]&&/[0-9]+/.test(a[b+1])?(t+=e[a[b+1]].toString()||"",b++):t+="%":t+=a[b];return n(t)}function n(a){function e(a){return{0:"",1:"",2:"",3:"",4:"",5:"",6:"",7:"",8:"",9:"",a:"",b:"",c:"",d:"",e:"",f:"",g:"",l:"",r:""}[a]||""}var t="";if(!a.length)return"";for(var b=0;b<a.length;b++)"§"==a[b]?null==a[b+1]?t+="§":(t+=e(a[b+1]),b++):t+=a[b];return t}e.printF=r},195(a){const e=Symbol("arg flag");class t extends Error{constructor(a,e){super(a),this.name="ArgError",this.code=e,Object.setPrototypeOf(this,t.prototype)}}function b(a,{argv:b=process.argv.slice(2),permissive:i=!1,stopAtPositional:r=!1}={}){if(!a)throw new t("argument specification object is required","ARG_CONFIG_NO_SPEC");const c={_:[]},n={},s={};for(const b of Object.keys(a)){if(!b)throw new t("argument key cannot be an empty string","ARG_CONFIG_EMPTY_KEY");if("-"!==b[0])throw new t(`argument key must start with '-' but found: '${b}'`,"ARG_CONFIG_NONOPT_KEY");if(1===b.length)throw new t(`argument key must have a name; singular '-' keys are not allowed: ${b}`,"ARG_CONFIG_NONAME_KEY");if("string"==typeof a[b]){n[b]=a[b];continue}let i=a[b],r=!1;if(Array.isArray(i)&&1===i.length&&"function"==typeof i[0]){const[a]=i;i=(e,t,b=[])=>(b.push(a(e,t,b[b.length-1])),b),r=a===Boolean||!0===a[e]}else{if("function"!=typeof i)throw new t(`type missing or not a function or valid array type: ${b}`,"ARG_CONFIG_VAD_TYPE");r=i===Boolean||!0===i[e]}if("-"!==b[1]&&b.length>2)throw new t(`short argument keys (with a single hyphen) must have only one character: ${b}`,"ARG_CONFIG_SHORTOPT_TOOLONG");s[b]=[i,r]}for(let a=0,e=b.length;a<e;a++){const e=b[a];if(r&&c._.length>0){c._=c._.concat(b.slice(a));break}if("--"===e){c._=c._.concat(b.slice(a+1));break}if(e.length>1&&"-"===e[0]){const r="-"===e[1]||2===e.length?[e]:e.slice(1).split("").map(a=>`-${a}`);for(let e=0;e<r.length;e++){const h=r[e],[o,f]="-"===h[1]?h.split(/=(.*)/,2):[h,void 0];let d=o;for(;d in n;)d=n[d];if(!(d in s)){if(i){c._.push(h);continue}throw new t(`unknown or unexpected option: ${o}`,"ARG_UNKNOWN_OPTION")}const[l,g]=s[d];if(!g&&e+1<r.length)throw new t(`option requires argument (but was followed by another short argument): ${o}`,"ARG_MISSING_REQUIRED_SHORTARG");if(g)c[d]=l(!0,d,c[d]);else if(void 0===f){if(b.length<a+2||b[a+1].length>1&&"-"===b[a+1][0]&&(!b[a+1].match(/^-?\d*(\.(?=\d))?\d*$/)||l!==Number&&("undefined"==typeof BigInt||l!==BigInt))){throw new t(`option requires argument: ${o}${o===d?"":` (alias for ${d})`}`,"ARG_MISSING_REQUIRED_LONGARG")}c[d]=l(b[a+1],d,c[d]),++a}else c[d]=l(f,d,c[d])}}else c._.push(e)}return c}b.flag=a=>(a[e]=!0,a),b.COUNT=b.flag((a,e,t)=>(t||0)+1),b.ArgError=t,a.exports=b},187(a){if("undefined"==typeof ArrayBuffer)throw new Error("Missing ArrayBuffer");if("undefined"==typeof DataView)throw new Error("Missing DataView");if("undefined"==typeof Uint8Array)throw new Error("Missing Uint8Array");if("undefined"==typeof WeakSet)throw new Error("Missing WeakSet");if("undefined"==typeof TextEncoder)throw new Error("Missing TextEncoder");if("undefined"==typeof TextDecoder)throw new Error("Missing TextDecoder");const e={},t={0:"null",1:"i8",2:"i16",3:"i32",4:"i64",5:"f32",6:"f64",7:"a8",8:"str",9:"list",10:"comp",11:"a32",12:"a64"},b={null:0,i8:1,i16:2,i32:3,i64:4,f32:5,f64:6,a8:7,str:8,list:9,comp:10,a32:11,a64:12},i=Symbol("NBT_PROXIED");function r(a){var e=new Map;for(var t of(e.set(Int8Array,1),e.set(Uint8Array,1),e.set(Uint8ClampedArray,1),e.set(Int16Array,2),e.set(Uint16Array,2),e.set(Int32Array,3),e.set(Uint32Array,3),e.set(BigInt64Array,4),e.set(BigUint64Array,4),e.set(Float32Array,5),e.set(Float64Array,6),e))if(a instanceof t[0])return t[1];return!1}function c(a){return{1:Int8Array,2:Int16Array,3:Int32Array,4:BigInt64Array,5:Float32Array,6:Float64Array}[a]}function n(a,e){switch(e){case"i8":return"number"==typeof a?a<-128?-128:a>127?127:a:0;case"i16":return"number"==typeof a?a<-32768?-32768:a>32767?32767:a:0;case"i32":return"number"==typeof a?a<-2147483648?-2147483648:a>2147483647?2147483647:a:0;case"i64":return"object"==typeof a?("number"!=typeof a.high&&(a.high=0),"number"!=typeof a.low&&(a.low=0),a):"bigint"==typeof a?a<-0x8000000000000000n?-0x8000000000000000n:a>0x7FFFFFFFFFFFFFFFn?0x7FFFFFFFFFFFFFFFn:a:{high:0,low:"number"==typeof a?0|a:0};case"f32":case"f64":return"number"==typeof a?a:0;case"str":return null==a?"":a+"";case"comp":return"object"==typeof a?a:f.create(!0);case"list":case"a8":case"a32":case"a64":return"object"==typeof a?a:[]}}function s(a){var e=a.indexOf(">");return-1==e?[null,a]:[a.slice(0,e),a.slice(e+1)]}function h(a,e,b){function r(a,e){return s["get"+a](n,(n+=e,o))}e="object"==typeof e?e:{};var n=0,s=new DataView(a),h=new Uint8Array(a),o=!1,d={};e.littleEndian&&(a.length>8&&s.getUint32(4,!0)==h.byteLength-8&&(n=8),o=!0),d.Uint16=r.bind(d,"Uint16",2),d[1]=r.bind(d,"Int8",1),d[2]=r.bind(d,"Int16",2),d[3]=r.bind(d,"Int32",4),d[4]=e.asBigInt?r.bind(d,"BigInt64",8):function(){var a=this[3](),e=this[3]();return o?{high:e,low:a}:{high:a,low:e}}.bind(d),d[5]=r.bind(d,"Float32",4),d[6]=r.bind(d,"Float64",8),d[7]=function(){var a,t,b=this[3]();if(e.asTypedArray)(a=new(c(1))(b)).set(h.slice(n,n+=b));else for(a=new Array(b),t=0;t<b;t++)a[t]=this[1]();return a}.bind(d),d[8]=function(){var a=this.Uint16();return(new TextDecoder).decode(h.slice(n,n+=a))}.bind(d),d[9]=function(){var a,b,i,r;if(b=this[1](),i=this[3](),a=e.asTypedArray&&c(b)?new(c(b))(i):new Array(i),this[b]){for(r=0;r<i;r++)a[r]=this[b]();Array.isArray(a)&&a.unshift(t[b])}else if(0!=b)throw new Error(`Invalid tag ID at Byte${n-1} : ${h[n-1]}`);return a}.bind(d),d[10]=function(){for(var a,b,r=f.create(e.asProxy),c=r[i]||r;(a=h[n])>0;){if(!this[a])throw new Error("Invalid tag ID at Byte"+n+" : "+h[n]);n++,b=this[8](),c[t[a]+">"+b]=this[a]()}return n++,r}.bind(d),d[11]=function(){var a,t=this[3](),b=e.asTypedArray&&e.asBigInt?new Int32Array(t):new Array(t);for(a=0;a<t;a++)b[a]=this[3]();return b}.bind(d),d[12]=function(){var a,t=this[3](),b=e.asTypedArray&&e.asBigInt?new BigInt64Array(t):new Array(t);for(a=0;a<t;a++)b[a]=this[4]();return b}.bind(d),d.root=function(){var a,b=f.create(e.asProxy),r=h[n],c=b[i]||b;if(!this[r])throw new Error("Invalid tag ID at Byte"+n+" : "+h[n]);return n++,a=this[8](),c[t[r]+">"+a]=this[r](),b}.bind(d);var l=[];if(!b)return{value:d.root(),length:n};for(;;)if(d[h[n]])l.push(d.root());else{if(!(n<a.byteLength))return l;n++}}function o(a,e){function t(a,e,t){if(u+e>d.byteLength){for(var b=d.byteLength;b<u+e;)b*=2;var i=new ArrayBuffer(b),r=new DataView(i),c=new Uint8Array(i);c.set(g),d=i,l=r,g=c}l["set"+a](u,(u+=e,t),h)}function c(a){var e=r(a);if(e){if(u+a.byteLength>d.byteLength){for(var t=d.byteLength;t<u+a.byteLength;)t*=2;var b=new ArrayBuffer(t),i=new DataView(b),c=new Uint8Array(b);c.set(g),d=b,l=i,g=c}if(1==e)g.set(a,u),u+=a.byteLength;else for(var n=0,s=a.length;n<s;n++)o[e](a[n])}}var n=(e="object"==typeof e?e:{}).noCheck?a:function(a){var e=new WeakSet;return e.add(a),function a(t){for(var r of(t=t[i]||t,Object.getOwnPropertyNames(t))){var c=s(r);if(b[c[0]]){var n=t[r];if("object"==typeof n&&null!==n&&!ArrayBuffer.isView(n)){if(e.has(n))throw new Error("Cannot serialize circular reference to NBT.");if(e.add(n),Array.isArray(n))for(var h=n.length,o=0,f=n[0];o<h;f=n[++o])"object"==typeof f&&null!==f&&a(n);else a(n)}}}return t}(a)}(a),h=!!e.littleEndian,o={},d=new ArrayBuffer(128),l=new DataView(d),g=new Uint8Array(d),u=0;return o.Uint16=t.bind(o,"Uint16",2),o.BigInt64=t.bind(o,"BigInt64",8),o[1]=t.bind(o,"Int8",1),o[2]=t.bind(o,"Int16",2),o[3]=t.bind(o,"Int32",4),o[4]=function(a){"bigint"==typeof a?o.BigInt64(a):"object"!=typeof a?(o[3](0),o[3](0)):h?(o[3](0|a.low||0),o[3](0|a.high||0)):(o[3](0|a.high||0),o[3](0|a.low||0))}.bind(o),o[5]=t.bind(o,"Float32",4),o[6]=t.bind(o,"Float64",8),o[7]=function(a){if(this[3](a.length),1==r(a))c(a);else for(var e=a.length,t=0;t<e;t++)this[1](a[t])}.bind(o),o[8]=function(a){var e=(new TextEncoder).encode(a);this.Uint16(e.length),c(e)}.bind(o),o[9]=function(a){var e,t,i=a;if(a.type&&void 0!==b[a.type]?(e=b[a.type],t=a.type):ArrayBuffer.isView(a)?(e=r(a),t="Invalid TypedArray"):(e=b[a[0]],i=a.slice(1),t=a[0]),0!==e&&i.length){if(!e)throw new Error("Invalid type: "+t);this[1](e),this[3](i.length);for(var c=0,n=i.length;c<n;c++)this[e](i[c])}else this[1](0),this[3](0)}.bind(o),o[10]=function(a,e){for(var t of(a=a[i]||a,Object.getOwnPropertyNames(a))){var r=s(t),c=b[r[0]];c&&(this[1](c),this[8](r[1]),this[c](a[t]))}e||this[1](0)}.bind(o),o[11]=function(a){this[3](a.length);for(var e=a.length,t=0;t<e;t++)this[3](a[t])}.bind(o),o[12]=function(a){this[3](a.length);for(var e=a.length,t=0;t<e;t++)this[4](a[t])}.bind(o),o.root=function(a){a=a[i]||a;var e=f.keys(a);1==e.length&&"comp>"==e[0]||(a={"comp>":a}),this[10](a,!0)}.bind(o),o.root(n),d.slice(0,u)}Object.freeze(e);class f{static get PROXIED_NBT(){return i}static create(a){var t={__proto__:e};return a?new Proxy(t,{get:function(a,e){if(e===i)return t;if("symbol"!=typeof e){var r=s(e);if(r&&b[r[0]])return a[e];for(var c of f.keys(a))if(s(c)[1]==e)return a[c]}},set:function(a,e,t){if("symbol"!=typeof e){if((r=s(e))&&b[r[0]]){if(void 0!==a[e])return a[e]=n(t,r[0]),!0;for(var i of f.keys(a))s(i)[1]==r[1]&&delete a[i];return a[e]=n(t,r[0]),!0}for(var i of f.keys(a)){var r;if((r=s(i))[1]==e)return a[i]=n(t,r[0]),!0}return!1}},deleteProperty:function(a,e){if("symbol"==typeof e)return!0;var t=s(e);if(t&&b[t[0]]){if(void 0!==a[e])return delete a[e];for(var i of f.keys(a))if(s(i)[1]==t[1])return delete a[i]}for(var i of f.keys(a))if(s(i)[1]==e)return delete a[i]},setPrototypeOf:function(){return!1},defineProperty:function(){return!1},preventExtensions:function(){return!1},getOwnPropertyDescriptor:function(){},ownKeys:function(a){return f.keys(a)},has:(a,e)=>-1!==f.keys(a).indexOf(e)}):t}static isNBT(a){function t(){}return t.prototype=e,a instanceof t}static keys(a){var e=[];for(var t of(a[i]&&(a=a[i]),Object.getOwnPropertyNames(a))){var r=s(t);b[r[0]]&&e.push(t)}return e}static assign(a,...e){var t=a[i]||a,r={};if(!e.length||"object"!=typeof a||null===a)return a;for(var c of Object.getOwnPropertyNames(t)){var n=s(c);b[n[0]]&&(r[n[1]]=c)}for(var h of e)if("object"==typeof h&&null!==h)for(var c of(h=h[i]||h,Object.getOwnPropertyNames(h))){n=s(c);b[n[0]]&&(r[n[1]]&&delete t[r[n[1]]],t[c]=h[c])}return a}static equal(a,e){var t=new WeakSet;return function a(e,b){if(e[i]&&(e=e[i]),b[i]&&(b=b[i]),t.has(e)&&t.has(b)&&e===b)return!0;if(null===e&&null===b)return!0;if(void 0===e&&void 0===b)return!0;if(null===e||null===b||void 0===e||void 0===b)return!1;if(typeof e!=typeof b)return!1;if("object"!=typeof e)return e===b;if(t.add(e),t.add(b),Array.isArray(e)&&Array.isArray(b)){if(e.length!==b.length)return!1;for(var c=0;c<e.length;c++)if(!a(e[c],b[c]))return!1;return!0}if(ArrayBuffer.isView(e)&&ArrayBuffer.isView(b)){if(r(e)!==r(b))return!1;if(e.length!==b.length)return!1;for(c=0;c<e.length;c++)if(!a(e[c],b[c]))return!1;return!0}var n=f.keys(e),s=f.keys(b);if(n.length!==s.length)return!1;for(var h of n)if(!s.includes(h)||!a(e[h],b[h]))return!1;return!0}(a,e)}static Reader(a,e){return h(a,e,!1).value}static ReadSerial(a,e){return h(a,e,!0)}static Writer(a,e){return o(a,e)}constructor(a,e){this.buf=a,this.offset=0,this.option=e||{}}getBuffer(){return this.buf}getOffset(){return this.offset}canRead(){return this.offset<this.buf.byteLength}read(){if(!this.canRead())return null;var a=h(this.buf.slice(this.offset),this.option,!1);return this.offset+=a.length,a.value}[Symbol.iterator](){var a=new f(this.buf,this.option);return{next:function(){return{done:!a.canRead(),value:a.read()}}}}}a.exports=f},90(a,e,t){const{kMaterial:b}=t(260),{Vec3:i}=t(947);class r{static Null=new r;static Default=new r("kMaterial_Cliff");static isNull(a){return a==r.Null}constructor(a){this.name=a||""}getId(){return"kMaterial_"!==this.name.substring(0,10)?0:b[this.name.substring(10)]}}class c{constructor(){this.materials=new Map}initialize(){this.materials.clear(),this.materials.set("",r.Null)}tryAddMaterial(a){if(this.materials.has(a))return this.materials.get(a);var e=new r(a);return this.materials.set(a,e),e}}a.exports={TriangleMeshVertex:class{constructor(a,e){this.pos=a||new i,this.normal=e||new i,this.nearby=new Set}},TriangleMeshMaterial:r,TriangleMeshMaterialBarn:c,TriangleMeshFace:class{constructor(){this.materialRef=r.Null,this.indices=[]}},TriangleMesh:class{constructor(){this.cmdBuffer=[],this.vtxBuffer=[],this.materials=new c,this.clear()}clear(){this.cmdBuffer=[],this.vtxBuffer=[],this.materials.initialize()}}}},315(a,e,t){const{R8G8B8A8_SNORM:b}=t(54),{Vec3:i}=t(947),{TriangleMesh:r,TriangleMeshVertex:c,TriangleMeshMaterial:n,TriangleMeshMaterialBarn:s,TriangleMeshFace:h}=t(90);a.exports={WavefrontObj:class extends r{constructor(){super()}fromFileBuffer(a){this.clear();var e=function(a,e){for(var t=a.split("\n"),r=[],n=[],s=[],o="",f={},d=[],l=[],g=0;g<t.length;g++){var u=t[g].trim();if(""!==u&&"#"!==u.charAt(0)){var m=u.split(/\s+/),p=m[0];if("v"===p)s[r.length]=new Set,r.push(new i(parseFloat(m[1]),parseFloat(m[2]),parseFloat(m[3])));else if("vn"===p)n.push(new b(parseFloat(m[1]),parseFloat(m[2]),parseFloat(m[3])));else if("usemtl"===p)o=m[1]||"";else if("f"===p){for(var w=[],v=o,k=1;k<m.length;k++){var j=m[k].split("/"),x=parseInt(j[0],10),F=null;j.length>=3&&""!==j[2]&&(F=parseInt(j[2],10)),x<0&&(x=r.length+1+x),null!==F&&F<0&&(F=n.length+1+F);var y=x+","+(null!==F?F:"none");if(!f.hasOwnProperty(y)){if(x-1>r.length)throw new Error("encountered invalid vertex pos");if(F-1>n.length)throw new Error("encountered invalid vertex normal");var E=r[x-1],q=s[x-1],A=null!==F&&n[F-1]?n[F-1]:[0,1,0],G=new c(E,A);G.nearby=q,f[y]=d.length,q.add(G),d.push(G)}w.push(f[y])}var D=new h;D.indices=w,D.materialRef=e.tryAddMaterial(v),l.push(D)}}}return{vertices:d,faces:l}}(a.toString("uit-8"),this.materials);this.vtxBuffer=e.vertices,this.cmdBuffer=e.faces}}}},203(a,e,t){const{kMaterial:b}=t(260),{TriangleMeshVertex:i,TriangleMeshFace:r,TriangleMeshMaterial:c,TriangleMesh:n}=t(90),{LevelGeo:s,LevelGeoMeshVertex:h,LevelGeoMeshVertexMaterial:o,LevelGeoChunk:f,LevelGeoSubchunk:d}=t(640),{R8G8B8A8_SNORM:l,R8G8B8A8_UNORM:g}=t(54),{Vec3:u}=t(947);class m extends i{constructor(a){super(),this.normal=a.normal,this.pos=a.pos,this.materialRef=c.Null,this.faces=new Set,this.nearby=a.nearby}assign(a){return this.materialRef=a.materialRef,this.faces.add(a),this}}class p extends r{constructor(a){super(),this.materialRef=a.materialRef,this.indices=a.indices.slice(0,3),this.vertices=[]}from(a){var e=this;return this.vertices=this.indices.map(function(t){return a[t].assign(e)}),this}has(a){return this.vertices.some(e=>e.materialRef==a)}}class w extends f{constructor(){super(),this.vertices=new Map,this.activeSubchunks=new Map,this.idxBuffer=[],this.vtxBuffer=[],this.subBuffer=[]}beginSubchunk(a,e){a.materialId=e.getId()||b.Cliff,a.triangleStart=this.idxBuffer.length/3,a.triangleCount=1,a.vtxStart=0}endSubchunk(a){a.triangleEnd=a.triangleStart+a.triangleCount-1,a.vtxCount=this.vtxBuffer.length,a.vtxEnd=a.vtxStart+a.vtxCount-1}done(){for(var a of this.activeSubchunks.values())this.endSubchunk(a),this.subBuffer.push(a);this.activeSubchunks.clear(),this.idxCount=this.idxBuffer.length,this.vtxCount=this.vtxBuffer.length,this.subchunkCount=this.subBuffer.length;var e=new u(1/0,1/0,1/0),t=new u(-1/0,-1/0,-1/0);for(var b of this.vtxBuffer)e.x=Math.min(e.x,b.pos.x),e.y=Math.min(e.y,b.pos.y),e.z=Math.min(e.z,b.pos.z),t.x=Math.max(t.x,b.pos.x),t.y=Math.max(t.y,b.pos.y),t.z=Math.max(t.z,b.pos.z);this.min=e.sub(new u(.1,.1,.1)),this.max=t.add(new u(.1,.1,.1))}tryAssignActiveSubchunk(a){function e(a){if(!t.activeSubchunks.has(a)){var e=new v;t.beginSubchunk(e,a),t.activeSubchunks.set(a,e)}}var t=this;if(this.subBuffer.length+this.activeSubchunks.size>252)return!1;for(var b of this.activeSubchunks.keys())if(b!=a.vertices[0].materialRef&&b!=a.vertices[1].materialRef&&b!=a.vertices[2].materialRef){var i=this.activeSubchunks.get(b);this.endSubchunk(i),this.subBuffer.push(i),this.activeSubchunks.delete(b)}else this.activeSubchunks.get(b).triangleCount++;return e(a.vertices[0].materialRef),e(a.vertices[1].materialRef),e(a.vertices[2].materialRef),!0}tryAssignActiveSubchunk2(a){function e(a){if(!t.activeSubchunks.has(a)){var e=new v;t.beginSubchunk(e,a),t.activeSubchunks.set(a,e)}}var t=this;for(var b of this.activeSubchunks.keys())b!=a.vertices[0].materialRef&&b!=a.vertices[1].materialRef&&b!=a.vertices[2].materialRef||this.activeSubchunks.get(b).triangleCount++;return e(a.vertices[0].materialRef),e(a.vertices[1].materialRef),e(a.vertices[2].materialRef),!0}tryAddFace(a){if(this.idxBuffer.length+3>756)return!1;var e=[];for(var t of a.vertices)this.vertices.has(t)||e++;if(this.vtxBuffer.length+e>252)return!1;if(!this.tryAssignActiveSubchunk(a))return!1;for(var t of a.vertices){var b;this.vertices.has(t)?b=this.vertices.get(t):(b=this.vtxBuffer.length,this.vertices.set(t,b),this.vtxBuffer.push(t)),this.idxBuffer.push(b)}return!0}}class v extends d{constructor(){super()}}a.exports={LevelCvtAdjacencyVertex:m,LevelCvtAdjacencyFace:p,LevelCvtAdjacencyChunk:w,LevelCvtAdjacencySubchunk:v,LevelCvtAdjacency:class{constructor(a){this.meshVtx=new Set,this.meshFaces=new Set,this.vtxBuffer=[],this.idxBuffer=[],this.chunks=[],this.subchunks=[]}initialize(a){var e,t=new Map;(e=a.vtxBuffer.map(function(a){var e=new m(a);return t.set(a,e),e})).forEach(function(a){var e=new Set;a.nearby.forEach(function(a){e.add(t.get(a))}),a.nearby=e}),this.meshVtx=new Set(e),this.meshFaces=new Set(a.cmdBuffer.map(function(a){return new p(a).from(e)}))}convert(){var a=new Set,e=new Set(this.meshVtx),t=new Set,b=new s;for(a.add(e.values().next().value);e.size;){(n=this.assignChunk(a,e,t)).done(),this.chunks.push(n)}var i=[],r=[],c=[];for(var n of this.chunks)n.idxStart=i.length,n.vtxStart=r.length,n.subchunkStart=c.length,i.push(...n.idxBuffer),r.push(...n.vtxBuffer.map(function(a){var e=new h;return e.pos=a.pos,e.normal=a.normal,e.material.setMaterial(a.materialRef.getId(),1),e.input2=new g(.99,.99,.99,.99),e.input3=new g(.5,.5,.5,.5),e.input4=new g(.04,.004,.004,.004),e})),c.push(...n.subBuffer);return b.cloudChunkCount=0,b.indexCount=i.length,b.vertexCount=r.length,b.chunkCount=this.chunks.length,b.subchunkCount=c.length,b.localIndices=i,b.vertices=r,b.chunks=this.chunks,b.subchunks=c,b}assignChunk(a,e,t,b){function i(a,t){e.has(t.vertices[0])&&a.add(t.vertices[0]),e.has(t.vertices[1])&&a.add(t.vertices[1]),e.has(t.vertices[2])&&a.add(t.vertices[2])}function r(a){var e=new Set;for(var t of a.nearby)for(var b of t.faces)e.add(b);return e}for(var c=new Set(a),n=new w,s=!1;!s;){b=new Set;for(var h of c)if(e.has(h)){for(var o of(e.delete(h),r(h)))if(!t.has(o)){if(!n.tryAddFace(o)){s=!0;break}t.add(o),i(b,o)}if(s)break}s||b.size||(e.size?b.add(e.values().next().value):s=!0),c=b}if(b.size)for(var f of(a.clear(),b))a.add(f);return n}}}},260(a){a.exports={kMaterial:Object.freeze({None:0,Transparent:2,Void:3,Particle:4,WoodSlippery:5,VoidMinor:6,WoodPlank:7,Cliff:16,Soil:17,CliffLight:18,WallDamaged:19,Wall:20,Gold:21,Glacier:22,TileCeiling:23,TileFloor:24,TileWall:25,WallBrick:26,SoilWet:27,CliffWet:28,Bone:29,Wood:30,Ceramics:31,Sand:32,SandWet:33,SandLight:34,Snow:35,SandDeep:36,Mud:37,Grass:48,GrassWet:49,GrassLight:50,GrassMoss:51,Cloth:52,Cloud:80})}},640(a,e,t){const b=t(68),i=t(940),{WritableBinaryStream:r,ReadOnlyBinaryStream:c}=t(277),{IBinarying:n}=t(594),{R8G8B8A8_SNORM:s,R8G8B8A8_UNORM:h}=t(54),{Vec3:o}=t(947);class f extends n{constructor(){super(),this.materials=[],this.weights=[]}setMaterial(a,e){this.materials[0]=a||0,this.weights[0]=e||0}fromStream(a){this.materials=[],this.weights=[];for(var e=0;e<4;e++)this.materials[e]=a.readUint8();for(e=0;e<4;e++)this.weights[e]=a.readUint8()/255}toStream(a){for(var e=0;e<4;e++)a.writeUint8(this.materials[e]||0);for(e=0;e<4;e++)a.writeUint8(255*(this.weights[e]||0))}}class d extends n{constructor(){super(),this.pos=new o,this.normal=new s,this.material=new f,this.input2=new h,this.input3=new h,this.input4=new h}fromStream(a){this.pos=a.readType(o),this.normal=a.readType(s),this.material=a.readType(f),this.input2=a.readType(h),this.input3=a.readType(h),this.input4=a.readType(h)}toStream(a){a.writeType(this.pos),a.writeType(this.normal),a.writeType(this.material),a.writeType(this.input2),a.writeType(this.input3),a.writeType(this.input4)}}class l extends n{constructor(){super(),this.materialId=0,this.triangleCount=0,this.vtxCount=0,this.triangleStart=0,this.triangleEnd=0,this.vtxStart=0,this.vtxEnd=0}fromStream(a){this.materialId=a.readUint8(),this.triangleCount=a.readUint8(),this.vtxCount=a.readUint8(),this.triangleStart=a.readUint8(),this.triangleEnd=a.readUint8(),this.vtxStart=a.readUint8(),this.vtxEnd=a.readUint8(),a.readUint8()}toStream(a){a.writeUint8(this.materialId),a.writeUint8(this.triangleCount),a.writeUint8(this.vtxCount),a.writeUint8(this.triangleStart),a.writeUint8(this.triangleEnd),a.writeUint8(this.vtxStart),a.writeUint8(this.vtxEnd),a.writeUint8(0)}}class g extends n{constructor(){super(),this.vtxStart=0,this.idxStart=0,this.subchunkStart=0,this.idxCount=0,this.vtxCount=0,this.subchunkCount=0,this.min=new o,this.max=new o}fromStream(a){this.idxStart=a.readUint32(),this.vtxStart=a.readUint32(),this.subchunkStart=a.readUint32(),this.idxCount=a.readUint16(),this.vtxCount=a.readUint8(),this.subchunkCount=a.readUint8(),this.min=a.readType(o),this.max=a.readType(o),a.readUint32(),a.readUint32(),a.readUint32(),a.readUint32()}toStream(a){a.writeUint32(this.idxStart),a.writeUint32(this.vtxStart),a.writeUint32(this.subchunkStart),a.writeUint16(this.idxCount),a.writeUint8(this.vtxCount),a.writeUint8(this.subchunkCount),a.writeType(this.min),a.writeType(this.max),a.writeUint32(0),a.writeUint32(0),a.writeUint32(0),a.writeUint32(0)}}a.exports={LevelGeoMeshVertexMaterial:f,LevelGeoMeshVertex:d,LevelGeoSubchunk:l,LevelGeoChunk:g,LevelGeo:class extends n{constructor(){super(),this.indexCount=0,this.vertexCount=0,this.chunkCount=0,this.cloudChunkCount=0,this.subchunkCount=0,this.localIndices=[],this.vertices=[],this.chunks=[],this.subchunks=[]}fromStream(a){if(this.indexCount=a.readUint32(),this.vertexCount=a.readUint32(),this.chunkCount=a.readUint32(),this.cloudChunkCount=a.readUint32(),this.subchunkCount=a.readUint32(),this.vertices=[],this.vertexCount){var e=a.readUint32(),t=a.readBytes(e),i=Buffer.alloc(36*this.vertexCount);b.decodeVertexBuffer(i,this.vertexCount,36,t);for(var r=new c(i),n=0;n<this.vertexCount;n++)this.vertices.push(r.readType(d))}this.localIndices=[];for(n=0;n<this.indexCount;n++)this.localIndices.push(a.readUint8());this.chunks=[];for(n=0;n<this.chunkCount+this.cloudChunkCount;n++)this.chunks.push(a.readType(g));this.subchunks=[];for(n=0;n<this.subchunkCount;n++)this.subchunks.push(a.readType(l))}toStream(a){if(a.writeUint32(this.indexCount),a.writeUint32(this.vertexCount),a.writeUint32(this.chunkCount),a.writeUint32(this.cloudChunkCount),a.writeUint32(this.subchunkCount),this.vertices.length){var e=new r;for(var t of this.vertices)e.writeType(t);var b=i.encodeVertexBuffer(e.data(),this.vertices.length,36);a.writeUint32(b.byteLength),a.writeBytes(b)}for(var c of this.localIndices)a.writeUint8(c);for(var n of this.chunks)a.writeType(n);for(var s of this.subchunks)a.writeType(s)}}}},842(a,e,t){const{IBinarying:b}=t(594);a.exports={LevelLod:class extends b{constructor(){super()}toStream(a){a.writeBytes(Buffer.from("1B000100C0010000000000000000000000","hex"))}}}},904(a,e,t){const b=t(187),{ReadOnlyBinaryStream:i,WritableBinaryStream:r}=t(277),{IBinarying:c}=t(594),{LevelGeo:n}=t(640),{LevelLod:s}=t(842),{LevelToc:h,LevelTocSegment:o}=t(211),{Vec3:f}=t(947);class d extends c{constructor(){super(),this.timeStamp=0,this.fileName="",this.editor="that-sky-level",this.editorVersion=[1,0,0],this.engineVersion=[0,32,2]}fromStream(a){var e,t,i=a.readBytes(a.getRemain()),r=b.Reader((e=i,t=new ArrayBuffer(e.length),new Uint8Array(t).set(e),t),{littleEndian:!0});this.timeStamp=r["comp>"]?.["u32>timeStamp"]||0,this.fileName=r["comp>"]?.["str>fileName"]||"",this.editor=r["comp>"]?.["str>editor"]||"",this.editorVersion=r["comp>"]["list>editorVersion"]?.slice(1,4)||[0,0,0],this.engineVersion=r["comp>"]["list>engineVersion"]?.slice(1,4)||[0,0,0]}toStream(a){var e=b.create(!1);e["i32>timeStamp"]=this.timeStamp,e["str>fileName"]=this.fileName,e["str>editor"]=this.editor,e["list>editorVersion"]=["i32"].concat(this.editorVersion),e["list>engineVersion"]=["i32"].concat(this.engineVersion),a.writeBytes(Buffer.from(b.Writer(e,{littleEndian:!0})))}}class l{static kHeaderLength=136;constructor(){this.fileVersion=60,this.desc=new d,this.lod=new s,this.geo=new n}fromFileBuffer(a){var e=new i(a);if(810309196!=e.readUint32())throw new Error("magic number mismatch");if(this.fileVersion=e.readUint32(),this.fileVersion<60)throw new Error("file version mismatch");var t=e.readType(h);if(!t.LOD0)throw new Error("level did not baked lod.");this.lod=t.LOD0.fromFileBuffer(a).readType(s),t.GEO0?this.geo=t.GEO0.fromFileBuffer(a).readType(n):this.geo=void 0,t.DESC?this.desc=t.DESC.fromFileBuffer(a).readType(d):this.desc=void 0}toFileBuffer(){var a=new r;a.writeUint32(810309196),a.writeUint32(this.fileVersion);var e=new h,t=new r,b=t.getLength();return this.desc&&(t.writeType(this.desc),e.segments.set("DESC",new o(b+l.kHeaderLength,t.getLength()-b)),b=t.getLength()),t.writeType(this.lod),e.segments.set("LOD0",new o(b+l.kHeaderLength,t.getLength()-b)),b=t.getLength(),this.geo&&(t.writeType(this.geo),e.segments.set("GEO0",new o(b+l.kHeaderLength,t.getLength()-b)),b=t.getLength()),a.writeType(e),a.writeUint32(0),a.writeType(new f(3402823466e29,3402823466e29,3402823466e29)),a.writeType(new f(-3402823466e29,-3402823466e29,-3402823466e29)),a.writeBytes(t.data()),a.data()}}a.exports={LevelMeshes:l}},211(a,e,t){const{ReadOnlyBinaryStream:b}=t(277),{IBinarying:i}=t(594);class r{constructor(a,e){this.offset=a||0,this.byteLength=e||0}fromFileBuffer(a){return new b(a.subarray(this.offset,this.offset+this.byteLength))}}a.exports={LevelTocSegment:r,LevelToc:class extends i{constructor(){super(),this.segments=new Map}clear(){this.segments.clear()}get LOD0(){return this.segments.get("LOD0")}get GEO0(){return this.segments.get("GEO0")}get METR(){return this.segments.get("METR")}get DESC(){return this.segments.get("DESC")}fromStream(a){var e=a.readBytes(100),t=new b(e);this.clear();for(var i=t.readUint32(),c=0;c<i;c++){var n=t.readBytes(4).toString("ascii"),s=t.readUint32(),h=t.readUint32();this.segments.set(n,new r(s,h))}}toStream(a){if(this.segments.size>8)throw new Error("too many segments");var e=Buffer.alloc(96),t=0;for(var b of this.segments)e.write(b[0],t,4,"ascii"),e.writeUint32LE(b[1].offset,t+4),e.writeUint32LE(b[1].byteLength,t+8),t+=12;a.writeUint32(this.segments.size),a.writeBytes(e)}}}},650(a){"use strict";const e=Object.freeze({NORMAL:0,STRING:1,OBJECT_PTR:2,ARRAY:3});function t(a,e){let t=e;for(;t<a.length&&0!==a[t];)t++;return{value:a.slice(e,t).toString("utf8"),bytesRead:t-e+1}}function b(a){const e=Buffer.from(null==a?"":String(a),"utf8"),t=Buffer.allocUnsafe(e.length+1);return e.copy(t),t[e.length]=0,t}function i(a){return a.startsWith("is")||a.startsWith("has")||"enabled"===a||"autoStart"===a||a.includes("Enable")||a.includes("Visible")}function r(a){return"bstGuid"===a||a.endsWith("Id")||a.endsWith("Index")}class c{constructor(){this._reset()}fromFileBuffer(a){this._reset(),this._buf=a;try{this._parseHeader(),this._parseTypes(),this._parseMemVars(),this._parseObjects()}finally{this._buf=null}return this}toFileBuffer(){const{dataBuf:a,offsetOf:e}=this._buildDataSection(),t=12*this.types.length,b=16*this.memVars.length,i=44+t,r=i+b,c=r+a.length,n=Buffer.allocUnsafe(t);for(let a=0;a<this.types.length;a++){const t=this.types[a],b=12*a;n.writeUInt32LE(e(t.name),b),n.writeUInt32LE(t.firstMemVar,b+4),n.writeUInt32LE(t.numMemVars,b+8)}const s=Buffer.allocUnsafe(b);for(let a=0;a<this.memVars.length;a++){const t=this.memVars[a],b=16*a;s.writeUInt32LE(t.varType,b),s.writeUInt32LE(e(t.name),b+4),s.writeUInt32LE(t.size,b+8),s.writeUInt32LE(t.extra,b+12)}const h=this.objects.map(a=>this._serializeObject(a)),o=Buffer.concat(h),f=c+o.length,d=Buffer.allocUnsafe(44);return d.write("TGCL",0,"ascii"),d.writeUInt32LE(this.header?.version??1,4),d.writeUInt32LE(this.types.length,8),d.writeUInt32LE(this.memVars.length,12),d.writeUInt32LE(this.objects.length,16),d.writeUInt32LE(this.header?.numRefs??0,20),d.writeUInt32LE(44,24),d.writeUInt32LE(i,28),d.writeUInt32LE(r,32),d.writeUInt32LE(c,36),d.writeUInt32LE(f,40),Buffer.concat([d,n,s,a,o])}_reset(){this.header=null,this.types=[],this.memVars=[],this.objects=[],this._buf=null}_readDataString(a){const e=this.header.dataOffset+a,{value:b}=t(this._buf,e);return b}_parseHeader(){const a=this._buf,e=a.slice(0,4).toString("ascii");if("TGCL"!==e)throw new Error(`[Tgcl] Invalid magic: "${e}", expected "TGCL"`);this.header={magic:e,version:a.readUInt32LE(4),numTypes:a.readUInt32LE(8),numMemVars:a.readUInt32LE(12),numObjects:a.readUInt32LE(16),numRefs:a.readUInt32LE(20),typesOffset:a.readUInt32LE(24),memVarsOffset:a.readUInt32LE(28),dataOffset:a.readUInt32LE(32),stringsOffset:a.readUInt32LE(36),fileSize:a.readUInt32LE(40)},this.header.fileSize!==a.length&&console.warn(`[Tgcl] File size mismatch: header says ${this.header.fileSize}, buffer is ${a.length} bytes`)}_parseTypes(){const{typesOffset:a,numTypes:e}=this.header,t=this._buf;for(let b=0;b<e;b++){const e=a+12*b;this.types.push({index:b,name:this._readDataString(t.readUInt32LE(e)),firstMemVar:t.readUInt32LE(e+4),numMemVars:t.readUInt32LE(e+8)})}}_parseMemVars(){const{memVarsOffset:a,numMemVars:e}=this.header,t=this._buf;for(let b=0;b<e;b++){const e=a+16*b;this.memVars.push({index:b,varType:t.readUInt32LE(e),name:this._readDataString(t.readUInt32LE(e+4)),size:t.readUInt32LE(e+8),extra:t.readUInt32LE(e+12)})}}_getTypeMemVars(a){const e=this.types[a];if(!e)return[];const t=e.firstMemVar+e.numMemVars;return this.memVars.slice(e.firstMemVar,t)}_parseObjects(){let a=this.header.stringsOffset;const e=this.header.fileSize;for(let t=0;t<this.header.numObjects&&a<e;t++)try{const e=this._parseObject(a,t);this.objects.push(e),a=e._nextPos}catch(e){console.error(`[Tgcl] Error parsing object ${t} at offset ${a}:`,e.message);break}}_parseObject(a,e){const b=this._buf,i=a,r=b.readUInt32LE(a);a+=4;const{value:c,bytesRead:n}=t(b,a);a+=n;const s=this.types[r],h={_index:e,_type:s?s.name:`unknown_type_${r}`,_typeIndex:r,_name:c,_startPos:i};if(s)for(const e of this._getTypeMemVars(r))try{const{value:t,bytesRead:b}=this._readValue(a,e);h[e.name]=t,a+=b}catch(t){console.warn(`[Tgcl] Error reading field "${s.name}.${e.name}" at offset ${a}:`,t.message),a+=e.size||4}return h._nextPos=a,h}_readValue(a,t){const{varType:b}=t;switch(b){case e.STRING:return this._readStringValue(a);case e.OBJECT_PTR:return this._readObjectPtrValue(a);case e.ARRAY:return this._readArrayValue(a,t);case e.NORMAL:default:return this._readNormalValue(a,t.size,t.name)}}_readStringValue(a){const{value:e,bytesRead:b}=t(this._buf,a);return{value:e,bytesRead:b}}_readObjectPtrValue(a){const e=this._buf.readInt32LE(a);return{value:-1===e?null:`@object_${e}`,bytesRead:4}}_readArrayValue(a,e){const t=this._buf,b=t.readUInt32LE(a),i=e.extra;if(4294967295===i){const e=[];for(let i=0;i<b;i++){const b=t.readInt32LE(a+4+4*i);e.push(-1===b?null:`@object_${b}`)}return{value:e,bytesRead:4+4*b}}if(i<this.types.length){const e=this._getTypeMemVars(i),t=[];let r=a+4;for(let a=0;a<b;a++){const a={};for(const t of e){const{value:e,bytesRead:b}=this._readValue(r,t);a[t.name]=e,r+=b}t.push(a)}return{value:t,bytesRead:r-a}}const r=i||4;return console.warn(`[Tgcl] Unknown ARRAY element type index ${i}; skipping ${b} * ${r} bytes. Data is NOT preserved.`),{value:{_unknownArray:!0,count:b,elementTypeIdx:i},bytesRead:4+b*r}}_readNormalValue(a,e,t){const b=this._buf;let c;switch(e){case 1:c=b.readUInt8(a),i(t)&&(c=0!==c);break;case 4:if(r(t))c=b.readUInt32LE(a);else{const e=b.readInt32LE(a),t=b.readFloatLE(a);c=Math.abs(t)<1e10&&Math.abs(t)>1e-10||0===t?t:e}break;case 8:c=b.readDoubleLE(a);break;case 12:c={x:b.readFloatLE(a),y:b.readFloatLE(a+4),z:b.readFloatLE(a+8)};break;case 16:c={x:b.readFloatLE(a),y:b.readFloatLE(a+4),z:b.readFloatLE(a+8),w:b.readFloatLE(a+12)};break;case 64:c={matrix:[[b.readFloatLE(a),b.readFloatLE(a+4),b.readFloatLE(a+8),b.readFloatLE(a+12)],[b.readFloatLE(a+16),b.readFloatLE(a+20),b.readFloatLE(a+24),b.readFloatLE(a+28)],[b.readFloatLE(a+32),b.readFloatLE(a+36),b.readFloatLE(a+40),b.readFloatLE(a+44)],[b.readFloatLE(a+48),b.readFloatLE(a+52),b.readFloatLE(a+56),b.readFloatLE(a+60)]],pos:{x:b.readFloatLE(a+48),y:b.readFloatLE(a+52),z:b.readFloatLE(a+56)}};break;default:c=b.slice(a,a+e).toString("hex")}return{value:c,bytesRead:e}}_buildDataSection(){const a=new Map,e=[];let t=0;const i=i=>{if(a.has(i))return;const r=b(i);a.set(i,t),e.push(r),t+=r.length};for(const a of this.types)i(a.name);for(const a of this.memVars)i(a.name);return{dataBuf:Buffer.concat(e),offsetOf:e=>{const t=a.get(e);if(void 0===t)throw new Error(`[Tgcl] String "${e}" not found in data section`);return t}}}_serializeObject(a){const e=[],t=a._typeIndex,i=Buffer.allocUnsafe(4);i.writeUInt32LE(t>>>0),e.push(i),e.push(b(a._name??""));for(const b of this._getTypeMemVars(t))e.push(this._writeValue(a[b.name],b));return Buffer.concat(e)}_writeValue(a,t){switch(t.varType){case e.STRING:return b(a);case e.OBJECT_PTR:return this._writeObjectPtrValue(a);case e.ARRAY:return this._writeArrayValue(a,t);case e.NORMAL:default:return this._writeNormalValue(a,t.size,t.name)}}_writeObjectPtrValue(a){const e=Buffer.allocUnsafe(4);if(null==a)e.writeInt32LE(-1);else{const t=parseInt(String(a).replace("@object_",""),10);e.writeInt32LE(isNaN(t)?-1:t)}return e}_writeArrayValue(a,e){const t=e.extra;if(a&&a._unknownArray){const a=Buffer.allocUnsafe(4);return a.writeUInt32LE(0),a}const b=Array.isArray(a)?a:[];if(4294967295===t){const a=Buffer.allocUnsafe(4+4*b.length);a.writeUInt32LE(b.length,0);for(let e=0;e<b.length;e++){const t=b[e],i=null==t?-1:parseInt(String(t).replace("@object_",""),10);a.writeInt32LE(isNaN(i)?-1:i,4+4*e)}return a}if(t<this.types.length){const a=this._getTypeMemVars(t),e=Buffer.allocUnsafe(4);e.writeUInt32LE(b.length);const i=[e];for(const e of b)for(const t of a)i.push(this._writeValue(null!=e?e[t.name]:void 0,t));return Buffer.concat(i)}const i=Buffer.allocUnsafe(4);return i.writeUInt32LE(0),i}_writeNormalValue(a,e,t){const b=Buffer.allocUnsafe(e),c="number"==typeof a?a:0;switch(e){case 1:i(t)?b.writeUInt8(a?1:0):b.writeUInt8(255&c);break;case 4:r(t)?b.writeUInt32LE(c>>>0):function(a,e,t){const b="number"==typeof t?t:0;a.writeFloatLE(b,e),a.readFloatLE(e)!==b&&a.writeInt32LE(0|b,e)}(b,0,c);break;case 8:b.writeDoubleLE(c);break;case 12:b.writeFloatLE(a?.x??0,0),b.writeFloatLE(a?.y??0,4),b.writeFloatLE(a?.z??0,8);break;case 16:b.writeFloatLE(a?.x??0,0),b.writeFloatLE(a?.y??0,4),b.writeFloatLE(a?.z??0,8),b.writeFloatLE(a?.w??0,12);break;case 64:{const e=a?.matrix;if(Array.isArray(e))for(let a=0;a<4;a++)for(let t=0;t<4;t++)b.writeFloatLE(e[a]?.[t]??0,4*(4*a+t));else b.fill(0);break}default:if("string"==typeof a){const t=Buffer.from(a,"hex");t.copy(b,0,0,Math.min(t.length,e)),t.length<e&&b.fill(0,t.length)}else b.fill(0)}return b}}c.VAR_TYPE=e,a.exports={Tgcl:c,LevelObjects:c}},644(a,e,t){const{LevelObjects:b}=t(650);Object.freeze({1:"d08",2:"d16",4:"d32",8:"d64",12:"v3f",16:"v4f",64:"m44"});a.exports={LevelObjectsJson:class{static read(a){function e(a){if(null===a)return null;if(a.length<=8)throw new Error("invalid reference");var e=Number.parseInt(a.substring(8));if(Number.isNaN(e))throw new Error("invalid reference");var t=i[e];if(!t)throw new Error("invalid reference");return t._type+">"+t._name}var t,i,r=new b,c={},n={};for(var s of(r.fromFileBuffer(a),t=r.types,i=r.objects,t)){for(var h={},o=s.firstMemVar;o<s.firstMemVar+s.numMemVars;o++){0===(f=r.memVars[o]).varType?h[f.name]="raw>b"+f.size.toString().padStart(2,"0"):1===f.varType?h[f.name]="raw>str":2===f.varType?h[f.name]="raw>ref":3===f.varType&&(h[f.name]=0|f.extra)}c[s.name]=h}for(var s of t){h=c[s.name];for(var f of Object.getOwnPropertyNames(h)){var d=h[f];"number"==typeof d&&(h[f]=-1===d?"arr>ref":"arr>"+t[d].name)}}for(var l of i){var g={};h=c[l._type];for(var u of Object.getOwnPropertyNames(l))if(!u.startsWith("_")){var m=l[u];"raw>ref"===h[u]?g[u]=e(m):"arr>ref"===h[u]?g[u]=m.map(a=>e(a)):g[u]=m}n[l._type+">"+l._name]=g}return{classes:c,objects:n}}static write(a){function e(a){if(null===a)return null;var e=m[a];if(void 0===e)throw new Error("unrecognized object name: "+a);return"@object_"+e}if("object"==typeof a){var t=a.classes||{},i=a.objects||{},r=new b,c={},n=0;for(var s of Object.getOwnPropertyNames(t))"string"==typeof s&&(c[s]=n,n++);for(var s of Object.getOwnPropertyNames(t))if("string"==typeof s){var h=t[s],o=[];for(var f of Object.getOwnPropertyNames(h))if("string"==typeof f){var d=h[f];if("raw>str"===d)o.push({varType:1,name:f,size:0,extra:0});else if("raw>ref"===d)o.push({varType:2,name:f,size:0,extra:0});else if(d.startsWith("raw>b")){var l=Number.parseInt(d.substring(5));if(Number.isNaN(l))throw new Error("unrecognized memvar type: "+d);o.push({varType:0,name:f,size:l,extra:0})}else{if(!d.startsWith("arr>"))throw new Error("unrecognized memvar type: "+d);var g=d.substring(4),u=-1;if("ref"!==g&&void 0===(u=c[g]))throw new Error("unrecognized memvar type: "+d);o.push({varType:3,name:f,size:0,extra:u>>>0})}}r.types.push({name:s,firstMemVar:r.memVars.length,numMemVars:o.length}),r.memVars.push(...o)}var m={};new Set,n=0;for(var p of Object.getOwnPropertyNames(i))if("string"==typeof p){if(void 0!==m[p])throw new Error("repeated name: "+p);m[p]=n,n++}for(var p of Object.getOwnPropertyNames(i))if("string"==typeof p){var w=i[p],v=p.indexOf(">");if(-1==v)throw new Error('no separator ">" found: '+p);var k=c[s=p.substring(0,v)];h=t[s];if(void 0===k)throw new Error("unrecognized type: "+p.substring(0,v));var j={_typeIndex:k,_name:p.substring(v+1)};for(var x of Object.getOwnPropertyNames(w))"raw>ref"===h[x]?j[x]=e(w[x]):"arr>ref"===h[x]?j[x]=w[x].map(a=>e(a)):j[x]=w[x];r.objects.push(j)}return r.header={numRefs:1e3},r.toFileBuffer()}}}}},68(a){var e=function(){var a=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("object"!=typeof WebAssembly)return{supported:!1};var t,b=WebAssembly.validate(a)?r("b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuixkbbebeeddddilve9Weeeviebeoweuecj:Gdkr;Neqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949WbwY9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVJ9V29VVbDl79IV9Rbqq:W9Dklbzik94evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaeai86b:q:W:cjbaecitab8Piw83i:q:G:cjbaecefgecjd9hmbkk:JBl8Aud97dur978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaialfgxar9RhodnadTgmmbavaoad;8qbbkaicefhPcj;abad9Uc;WFbGcjdadca0EhsdndndnadTmbaoadfhzcbhHinaeaH9nmdaxaP9RaD6miabaHad2fhOaPaDfhAasaeaH9RaHasfae6EgCcsfgocl4cifcd4hXavcj;cbfaoc9WGgQcetfhLavcj;cbfaQci2fhKavcj;cbfaQfhYcbh8Aaoc;ab6hEincbh3dnawTmbaPa8Acd4fRbbh3kcbh5avcj;cbfh8Eindndndndna3a5cet4ciGgoc9:fPdebdkaxaA9RaQ6mwdnaQTmbavcj;cbfa5aQ2faAaQ;8qbbkaAaCfhAxdkaQTmeavcj;cbfa5aQ2fcbaQ;8kbxekaxaA9RaX6moaoclVcbawEhraAaXfhocbhidnaEmbaxao9Rc;Gb6mbcbhlina8EalfhidndndndndndnaAalco4fRbbgqciGarfPDbedibledibkaipxbbbbbbbbbbbbbbbbpklbxlkaiaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaoclffagRb:q:W:cjbfhoxikaiaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaocwffagRb:q:W:cjbfhoxdkaiaopbbbpklbaoczfhoxekaiaopbbdaoRbbghcitpbi:q:G:cjbahRb:q:W:cjbghpsaoRbeggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbahaocdffagRb:q:W:cjbfhokdndndndndndnaqcd4ciGarfPDbedibledibkaiczfpxbbbbbbbbbbbbbbbbpklbxlkaiczfaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaoclffagRb:q:W:cjbfhoxikaiczfaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaocwffagRb:q:W:cjbfhoxdkaiczfaopbbbpklbaoczfhoxekaiczfaopbbdaoRbbghcitpbi:q:G:cjbahRb:q:W:cjbghpsaoRbeggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbahaocdffagRb:q:W:cjbfhokdndndndndndnaqcl4ciGarfPDbedibledibkaicafpxbbbbbbbbbbbbbbbbpklbxlkaicafaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaoclffagRb:q:W:cjbfhoxikaicafaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaocwffagRb:q:W:cjbfhoxdkaicafaopbbbpklbaoczfhoxekaicafaopbbdaoRbbghcitpbi:q:G:cjbahRb:q:W:cjbghpsaoRbeggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbahaocdffagRb:q:W:cjbfhokdndndndndndnaqco4arfPDbedibledibkaic8Wfpxbbbbbbbbbbbbbbbbpklbxlkaic8Wfaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Ngicitpbi:q:G:cjbaiRb:q:W:cjbgipsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbaiaoclffaqRb:q:W:cjbfhoxikaic8Wfaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Ngicitpbi:q:G:cjbaiRb:q:W:cjbgipsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbaiaocwffaqRb:q:W:cjbfhoxdkaic8Wfaopbbbpklbaoczfhoxekaic8WfaopbbdaoRbbgicitpbi:q:G:cjbaiRb:q:W:cjbgipsaoRbegqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbaiaocdffaqRb:q:W:cjbfhokalc;abfhialcjefaQ0meaihlaxao9Rc;Fb0mbkkdnaiaQ9pmbaici4hlinaxao9RcK6mwa8EaifhqdndndndndndnaAaico4fRbbalcoG4ciGarfPDbedibledibkaqpxbbbbbbbbbbbbbbbbpkbbxlkaqaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spkbbahaoclffagRb:q:W:cjbfhoxikaqaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spkbbahaocwffagRb:q:W:cjbfhoxdkaqaopbbbpkbbaoczfhoxekaqaopbbdaoRbbghcitpbi:q:G:cjbahRb:q:W:cjbghpsaoRbeggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpkbbahaocdffagRb:q:W:cjbfhokalcdfhlaiczfgiaQ6mbkkaohAaoTmoka8EaQfh8Ea5cefg5cl9hmbkdndndndnawTmbaza8Acd4fRbbglciGPlbedwbkaQTmdavcjdfa8Afhlava8Afpbdbh8Jcbhoinalavcj;cbfaofpblbg8KaYaofpblbg8LpmbzeHdOiAlCvXoQrLg8MaLaofpblbg8NaKaofpblbgypmbzeHdOiAlCvXoQrLg8PpmbezHdiOAlvCXorQLg8Fcep9Ta8Fpxeeeeeeeeeeeeeeeegap9op9Hp9rg8Fa8Jp9Ug8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp9Ug8Jp9Abbbaladfgla8Ja8Ma8PpmwDKYqk8AExm35Ps8E8Fg8Fcep9Ta8Faap9op9Hp9rg8Fp9Ug8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp9Ug8Jp9Abbbaladfgla8Ja8Ka8LpmwKDYq8AkEx3m5P8Es8Fg8Ka8NaypmwKDYq8AkEx3m5P8Es8Fg8LpmbezHdiOAlvCXorQLg8Fcep9Ta8Faap9op9Hp9rg8Fp9Ug8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp9Ug8Jp9Abbbaladfgla8Ja8Ka8LpmwDKYqk8AExm35Ps8E8Fg8Fcep9Ta8Faap9op9Hp9rg8Fp9Ugap9Abbbaladfglaaa8Fa8Fpmlvorlvorlvorlvorp9Ugap9Abbbaladfglaaa8Fa8FpmwDqkwDqkwDqkwDqkp9Ugap9Abbbaladfglaaa8Fa8FpmxmPsxmPsxmPsxmPsp9Ug8Jp9AbbbaladfhlaoczfgoaQ6mbxikkaQTmeavcjdfa8Afhlava8Afpbdbh8Jcbhoinalavcj;cbfaofpblbg8KaYaofpblbg8LpmbzeHdOiAlCvXoQrLg8MaLaofpblbg8NaKaofpblbgypmbzeHdOiAlCvXoQrLg8PpmbezHdiOAlvCXorQLg8Fcep:nea8Fpxebebebebebebebebgap9op:bep9rg8Fa8Jp:oeg8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp:oeg8Jp9Abbbaladfgla8Ja8Ma8PpmwDKYqk8AExm35Ps8E8Fg8Fcep:nea8Faap9op:bep9rg8Fp:oeg8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp:oeg8Jp9Abbbaladfgla8Ja8Ka8LpmwKDYq8AkEx3m5P8Es8Fg8Ka8NaypmwKDYq8AkEx3m5P8Es8Fg8LpmbezHdiOAlvCXorQLg8Fcep:nea8Faap9op:bep9rg8Fp:oeg8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp:oeg8Jp9Abbbaladfgla8Ja8Ka8LpmwDKYqk8AExm35Ps8E8Fg8Fcep:nea8Faap9op:bep9rg8Fp:oegap9Abbbaladfglaaa8Fa8Fpmlvorlvorlvorlvorp:oegap9Abbbaladfglaaa8Fa8FpmwDqkwDqkwDqkwDqkp:oegap9Abbbaladfglaaa8Fa8FpmxmPsxmPsxmPsxmPsp:oeg8Jp9AbbbaladfhlaoczfgoaQ6mbxdkkaQTmbcbhocbalcl4gl9Rc8FGhiavcjdfa8Afhrava8Afpbdbhainaravcj;cbfaofpblbg8JaYaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaLaofpblbg8MaKaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Faip:Rea8Falp:Tep9qg8Faap9rgap9Abbbaradfgraaa8Fa8Fpmlvorlvorlvorlvorp9rgap9Abbbaradfgraaa8Fa8FpmwDqkwDqkwDqkwDqkp9rgap9Abbbaradfgraaa8Fa8FpmxmPsxmPsxmPsxmPsp9rgap9Abbbaradfgraaa8LaypmwDKYqk8AExm35Ps8E8Fg8Faip:Rea8Falp:Tep9qg8Fp9rgap9Abbbaradfgraaa8Fa8Fpmlvorlvorlvorlvorp9rgap9Abbbaradfgraaa8Fa8FpmwDqkwDqkwDqkwDqkp9rgap9Abbbaradfgraaa8Fa8FpmxmPsxmPsxmPsxmPsp9rgap9Abbbaradfgraaa8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Faip:Rea8Falp:Tep9qg8Fp9rgap9Abbbaradfgraaa8Fa8Fpmlvorlvorlvorlvorp9rgap9Abbbaradfgraaa8Fa8FpmwDqkwDqkwDqkwDqkp9rgap9Abbbaradfgraaa8Fa8FpmxmPsxmPsxmPsxmPsp9rgap9Abbbaradfgraaa8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Faip:Rea8Falp:Tep9qg8Fp9rgap9Abbbaradfgraaa8Fa8Fpmlvorlvorlvorlvorp9rgap9Abbbaradfgraaa8Fa8FpmwDqkwDqkwDqkwDqkp9rgap9Abbbaradfgraaa8Fa8FpmxmPsxmPsxmPsxmPsp9rgap9AbbbaradfhraoczfgoaQ6mbkka8Aclfg8Aad6mbkdnaCad2goTmbaOavcjdfao;8qbbkdnammbavavcjdfaCcufad2fad;8qbbkaCaHfhHc9:hoaAhPaAmbxlkkaeTmbaDalfhrcbhocuhlinaralaD9RglfaD6mdasaeao9Raoasfae6Eaofgoae6mbkaial9RhPkcbc99axaP9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaokwbz:bjjjbkNsezu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnalaeci9UgrcHf6mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbav9cu83iUav9cu83i8Wav9cu83iyav9cu83iaav9cu83iKav9cu83izav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbavaiaqaDcsGfRbbgscl4gP9RcsGcdtfydbaxcefgOaPEhDavaias9RcsGcdtfydbaOaPTgzfgOascsGgPEhsaPThPdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiazfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaPfhiaOaPfhxxekaxcbalRbbgsEgHaDc;:eSgDfhOascsGhAdndnascl4gCmbaOcefhzxekaOhzavaiaC9RcsGcdtfydbhOkdndnaAmbazcefhxxekazhxavaias9RcsGcdtfydbhzkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhHascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaHhDxekaDcefhDkasce4cbasceG9R7amfgmhHkdndnaCcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhOaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkaOhsxekascefhskaPce4cbaPceG9R7amfgmhOkdndnaAcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhzaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkazhlxekalcefhlkaPce4cbaPceG9R7amfgmhzkdndnadcd9hmbabarcetfgDaH87ebaDclfaz87ebaDcdfaO87ebxekabarcdtfgDaHBdbaDcwfazBdbaDclfaOBdbkavc;abfaocitfgDaOBdbaDaHBdlavaicdtfaHBdbavc;abfaocefcsGcitfgDazBdbaDaOBdlavaicefgicsGcdtfaOBdbavc;abfaocdfcsGcitfgDaHBdbaDazBdlavaiaCTaCcsSVfgicsGcdtfazBdbaiaATaAcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnalaecvf9pmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk;Toio97eue97aec98Ghedndnadcl9hmbaeTmecbhdinababpbbbgicKp:RecKp:Sep;6eglaicwp:RecKp:Sep;6ealp;Geaiczp:RecKp:Sep;6egvp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egralpxbbbjbbbjbbbjbbbjgwp9op9rp;Keglpxbb;:9cbb;:9cbb;:9cbb;:9calalp;Meaoaop;Meavaravawp9op9rp;Keglalp;Mep;Kep;Kep;Jep;Negvp;Mepxbbn0bbn0bbn0bbn0grp;KepxFbbbFbbbFbbbFbbbp9oaipxbbbFbbbFbbbFbbbFp9op9qalavp;Mearp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaoavp;Mearp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbabczfhbadclfgdae6mbxdkkaeTmbcbhdinabczfgDaDpbbbgipxbbbbbbFFbbbbbbFFgwp9oabpbbbgoaipmbediwDqkzHOAKY8AEgvczp:Reczp:Sep;6eglaoaipmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eavczp:Sep;6egvp;Gealp;Gep;Kep;Legipxbbbbbbbbbbbbbbbbp:2egralpxbbbjbbbjbbbjbbbjgqp9op9rp;Keglpxb;:FSb;:FSb;:FSb;:FSalalp;Meaiaip;Meavaravaqp9op9rp;Keglalp;Mep;Kep;Kep;Jep;Negvp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbp9oaiavp;Mearp;Keczp:Rep9qgialavp;Mearp;KepxFFbbFFbbFFbbFFbbp9oglpmwDKYqk8AExm35Ps8E8Fp9qpkbbabaoawp9oaialpmbezHdiOAlvCXorQLp9qpkbbabcafhbadclfgdae6mbkkk;2ileue97euo97dnaec98GgiTmbcbheinabcKfpx:ji:1S:ji:1S:ji:1S:ji:1SabpbbbglabczfgvpbbbgopmlvorxmPsCXQL358E8Fgrczp:Segwpxibbbibbbibbbibbbp9qp;6egDp;NegqaDaDp;MegDaDp;KealaopmbediwDqkzHOAKY8AEgDczp:Reczp:Sep;6eglalp;MeaDczp:Sep;6egoaop;Mearczp:Reczp:Sep;6egrarp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jep;Mepxbbn0bbn0bbn0bbn0gDp;KepxFFbbFFbbFFbbFFbbgkp9oaqaop;MeaDp;Keczp:Rep9qgoaqalp;MeaDp;Keakp9oaqarp;MeaDp;Keczp:Rep9qgDpmwDKYqk8AExm35Ps8E8Fglp5eawclp:RegqpEi:T:j83ibavalp5baqpEd:T:j83ibabcwfaoaDpmbezHdiOAlvCXorQLgDp5eaqpEe:T:j83ibabaDp5baqpEb:T:j83ibabcafhbaeclfgeai6mbkkkuee97dnadcd4ae2c98GgeTmbcbhdinababpbbbgicwp:Recwp:Sep;6eaicep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbabczfhbadclfgdae6mbkkk:Sodw97euaec98Ghedndnadcl9hmbaeTmecbhdinabpxbbuJbbuJbbuJbbuJabpbbbgicKp:TeglaicYp:Tep9qgvcdp:Teavp9qgvclp:Teavp9qgop;6ep;Negvaicwp:RecKp:SegraipxFbbbFbbbFbbbFbbbgwp9ogDp:Uep;6ep;Mepxbbn0bbn0bbn0bbn0gqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9oavaDarp:Xeaiczp:RecKp:Segip:Uep;6ep;Meaqp;Keawp9op9qavaDaraip:Uep:Xep;6ep;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qavaoalcep:Rep9oalpxebbbebbbebbbebbbp9op9qp;6ep;Meaqp;KecKp:Rep9qpkbbabczfhbadclfgdae6mbxdkkaeTmbcbhdinabczfgkpxbFu9hbFu9hbFu9hbFu9habpbbbglakpbbbgrpmlvorxmPsCXQL358E8Fgvczp:TegqavcHp:Tep9qgicdp:Teaip9qgiclp:Teaip9qgicwp:Teaip9qgop;6ep;NegialarpmbediwDqkzHOAKY8AEgDpxFFbbFFbbFFbbFFbbglp9ograDczp:Segwp:Ueavczp:Reczp:SegDp:Xep;6ep;Mepxbbn0bbn0bbn0bbn0gvp;Kealp9oaiarawaDp:Uep:Xep;6ep;Meavp;Keczp:Rep9qgwaiaoaqcep:Rep9oaqpxebbbebbbebbbebbbp9op9qp;6ep;Meavp;Keczp:ReaiaDarp:Uep;6ep;Meavp;Kealp9op9qgipmwDKYqk8AExm35Ps8E8FpkbbabawaipmbezHdiOAlvCXorQLpkbbabcafhbadclfgdae6mbkkk9teiucbcbydj:G:cjbgeabcifc98GfgbBdj:G:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkxebcj:Gdklz:zbb"):r("b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuixkbeeeddddillviebeoweuecj:Gdkr;Neqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949WboY9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVJ9V29VVbrl79IV9Rbwq:VZkdbk:XYi5ud9:du8Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxcj;abad9Uc;WFbGcjdadca0EhmaialfgPar9Rgoadfhsavaoadz:jjjjbgzceVhHcbhOdndninaeaO9nmeaPax9RaD6mdamaeaO9RaOamfgoae6EgAcsfglc9WGhCabaOad2fhXaAcethQaxaDfhiaOaeaoaeao6E9RhLalcl4cifcd4hKazcj;cbfaAfhYcbh8AazcjdfhEaHh3incbh5dnawTmbaxa8Acd4fRbbh5kcbh8Eazcj;cbfhqinaih8Fdndndndna5a8Ecet4ciGgoc9:fPdebdkaPa8F9RaA6mrazcj;cbfa8EaA2fa8FaAz:jjjjb8Aa8FaAfhixdkazcj;cbfa8EaA2fcbaAz:kjjjb8Aa8FhixekaPa8F9RaK6mva8FaKfhidnaCTmbaPai9RcK6mbaocdtc:q:G:cjbfcj:G:cjbawEhaczhrcbhlinargoc9Wfghaqfhrdndndndndndnaaa8Fahco4fRbbalcoG4ciGcdtfydbPDbedvivvvlvkar9cb83bwar9cb83bbxlkarcbaiRbdai8Xbb9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbaqaofgrcGfcbaicdfa8J9c8N1:NfghRbbag9cjjjjjw:dg8J9qE86bbarcVfcbaha8J9c8M1:NfghRbbag9cjjjjjl: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:dg8J9qE86bbarc95fcbaha8J9c8N1:NfgiRbbag9cjjjjjw:dg8J9qE86bbarc96fcbaia8J9c8M1:NfgiRbbag9cjjjjjl:dg8J9qE86bbarc97fcbaia8J9c8L1:NfgiRbbag9cjjjjjd:dg8J9qE86bbarc98fcbaia8J9c8K1:NfgiRbbag9cjjjjje:dg8J9qE86bbarc99fcbaia8J9c8J1:NfgiRbbag9cjjjj;ab:dg8J9qE86bbarc9:fcbaia8J9cg1:NfgiRbbag9cjjjja:dg8J9qE86bbarcufcbaia8J9ch1:NfgiRbbag9cjjjjz:dgg9qE86bbaiag9ca1:NfhixikaraiRblaiRbbghco4g8Ka8KciSg8KE86bbaqaofgrcGfaiclfa8Kfg8KRbbahcl4ciGg8La8LciSg8LE86bbarcVfa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc7fa8Ka8Lfg8KRbbahciGghahciSghE86bbarctfa8Kahfg8KRbbaiRbeghco4g8La8LciSg8LE86bbarc91fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc4fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc93fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc94fa8Kahfg8KRbbaiRbdghco4g8La8LciSg8LE86bbarc95fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc96fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc97fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc98fa8KahfghRbbaiRbigico4g8Ka8KciSg8KE86bbarc99faha8KfghRbbaicl4ciGg8Ka8KciSg8KE86bbarc9:faha8KfghRbbaicd4ciGg8Ka8KciSg8KE86bbarcufaha8KfgrRbbaiciGgiaiciSgiE86bbaraifhixdkaraiRbwaiRbbghcl4g8Ka8KcsSg8KE86bbaqaofgrcGfaicwfa8Kfg8KRbbahcsGghahcsSghE86bbarcVfa8KahfghRbbaiRbeg8Kcl4g8La8LcsSg8LE86bbarc7faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarctfaha8KfghRbbaiRbdg8Kcl4g8La8LcsSg8LE86bbarc91faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc4faha8KfghRbbaiRbig8Kcl4g8La8LcsSg8LE86bbarc93faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc94faha8KfghRbbaiRblg8Kcl4g8La8LcsSg8LE86bbarc95faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc96faha8KfghRbbaiRbvg8Kcl4g8La8LcsSg8LE86bbarc97faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc98faha8KfghRbbaiRbog8Kcl4g8La8LcsSg8LE86bbarc99faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc9:faha8KfghRbbaiRbrgicl4g8Ka8KcsSg8KE86bbarcufaha8KfgrRbbaicsGgiaicsSgiE86bbaraifhixekarai8Pbw83bwarai8Pbb83bbaiczfhikdnaoaC9pmbalcdfhlaoczfhraPai9RcL0mekkaoaC6moaimexokaCmva8FTmvkaqaAfhqa8Ecefg8Ecl9hmbkdndndndnawTmbasa8Acd4fRbbgociGPlbedrbkaATmdaza8Afh8Fazcj;cbfhhcbh8EaEhaina8FRbbhraahocbhlinaoahalfRbbgqce4cbaqceG9R7arfgr86bbaoadfhoaAalcefgl9hmbkaacefhaa8Fcefh8FahaAfhha8Ecefg8Ecl9hmbxikkaATmeaza8Afhaazcj;cbfhhcbhoceh8EaYh8FinaEaofhlaa8Vbbhrcbhoinala8FaofRbbcwtahaofRbbgqVc;:FiGce4cbaqceG9R7arfgr87bbaladfhlaLaocefgofmbka8FaQfh8FcdhoaacdfhaahaQfhha8EceGhlcbh8EalmbxdkkaATmbaocl4h8Eaza8AfRbbhqcwhoa3hlinalRbbaotaqVhqalcefhlaocwfgoca9hmbkcbhhaEh8FaYhainazcj;cbfahfRbbhrcwhoaahlinalRbbaotarVhralaAfhlaocwfgoca9hmbkara8E94aq7hqcbhoa8Fhlinalaqao486bbalcefhlaocwfgoca9hmbka8Fadfh8FaacefhaahcefghaA9hmbkkaEclfhEa3clfh3a8Aclfg8Aad6mbkaXazcjdfaAad2z:jjjjb8AazazcjdfaAcufad2fadz:jjjjb8AaAaOfhOaihxaimbkc9:hoxdkcbc99aPax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaok:ysezu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnalaeci9UgrcHf6mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:kjjjb8Aav9cu83iUav9cu83i8Wav9cu83iyav9cu83iaav9cu83iKav9cu83izav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbavaiaqaDcsGfRbbgscl4gP9RcsGcdtfydbaxcefgOaPEhDavaias9RcsGcdtfydbaOaPTgzfgOascsGgPEhsaPThPdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiazfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaPfhiaOaPfhxxekaxcbalRbbgsEgHaDc;:eSgDfhOascsGhAdndnascl4gCmbaOcefhzxekaOhzavaiaC9RcsGcdtfydbhOkdndnaAmbazcefhxxekazhxavaias9RcsGcdtfydbhzkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhHascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaHhDxekaDcefhDkasce4cbasceG9R7amfgmhHkdndnaCcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhOaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkaOhsxekascefhskaPce4cbaPceG9R7amfgmhOkdndnaAcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhzaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkazhlxekalcefhlkaPce4cbaPceG9R7amfgmhzkdndnadcd9hmbabarcetfgDaH87ebaDclfaz87ebaDcdfaO87ebxekabarcdtfgDaHBdbaDcwfazBdbaDclfaOBdbkavc;abfaocitfgDaOBdbaDaHBdlavaicdtfaHBdbavc;abfaocefcsGcitfgDazBdbaDaOBdlavaicefgicsGcdtfaOBdbavc;abfaocdfcsGcitfgDaHBdbaDazBdlavaiaCTaCcsSVfgicsGcdtfazBdbaiaATaAcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnalaecvf9pmbc9: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:4ioiue99dud99dud99dnaeTmbcbhiabhlindndnal8Uebgv:YgoJ:ji:1Salcof8UebgrciVgw:Y:vgDNJbbbZJbbb:;avcu9kEMgq:lJbbb9p9DTmbaq:Ohkxekcjjjj94hkkalclf8Uebhvalcdf8UebhxalarcefciGcetfak87ebdndnax:YgqaDNJbbbZJbbb:;axcu9kEMgm:lJbbb9p9DTmbam:Ohxxekcjjjj94hxkabaiarciGgkfcd7cetfax87ebdndnav:YgmaDNJbbbZJbbb:;avcu9kEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkalarcufciGcetfav87ebdndnawaw2:ZgPaPMaoaoN:taqaqN:tamamN:tgoJbbbbaoJbbbb9GE:raDNJbbbZMgD:lJbbb9p9DTmbaD:Ohrxekcjjjj94hrkalakcetfar87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk:Tvirud99eudndnadcl9hmbaeTmeindndnabRbbgiabcefgl8Sbbgvabcdfgo8Sbbgrf9R:YJbbuJabcifgwRbbgdce4adVgDcd4aDVgDcl4aDVgD:Z:vgqNJbbbZMgk:lJbbb9p9DTmbak:Ohxxekcjjjj94hxkaoax86bbdndnaraif:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohoxekcjjjj94hokalao86bbdndnavaifar9R:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabai86bbdndnaDadcetGadceGV:ZaqNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkawad86bbabclfhbaecufgembxdkkaeTmbindndnab8Vebgiabcdfgl8Uebgvabclfgo8Uebgrf9R:YJbFu9habcofgw8Vebgdce4adVgDcd4aDVgDcl4aDVgDcw4aDVgD:Z:vgqNJbbbZMgk:lJbbb9p9DTmbak:Ohxxekcjjjj94hxkaoax87ebdndnaraif:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohoxekcjjjj94hokalao87ebdndnavaifar9R:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabai87ebdndnaDadcetGadceGV:ZaqNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkawad87ebabcwfhbaecufgembkkk9teiucbcbyd:K:G:cjbgeabcifc98GfgbBd:K:G:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkk83dbcj:Gdk8Kbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbc:K:Gdkl8W:qbb"),i=WebAssembly.instantiate(b,{}).then(function(a){(t=a.instance).exports.__wasm_call_ctors()});function r(a){for(var t=new Uint8Array(a.length),b=0;b<a.length;++b){var i=a.charCodeAt(b);t[b]=i>96?i-97:i>64?i-39:i+4}var r=0;for(b=0;b<a.length;++b)t[r++]=t[b]<60?e[t[b]]:64*(t[b]-60)+t[++b];return t.buffer.slice(0,r)}function c(a,e,t,b,i,r,c){var n=a.exports.sbrk,s=b+3&-4,h=n(s*i),o=n(r.length),f=new Uint8Array(a.exports.memory.buffer);f.set(r,o);var d=e(h,b,i,o,r.length);if(0==d&&c&&c(h,s,i),t.set(f.subarray(h,h+b*i)),n(h-n(0)),0!=d)throw new Error("Malformed buffer data: "+d)}var n={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp",COLOR:"meshopt_decodeFilterColor"},s={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},h=[],o=0;function f(a){var e={object:new Worker(a),pending:0,requests:{}};return e.object.onmessage=function(a){var t=a.data;e.pending-=t.count,e.requests[t.id][t.action](t.value),delete e.requests[t.id]},e}function d(a){var e=a.data;self.ready.then(function(a){if(!e.id)return self.close();try{var t=new Uint8Array(e.count*e.size);c(a,a.exports[e.mode],t,e.count,e.size,e.source,a.exports[e.filter]),self.postMessage({id:e.id,count:e.count,action:"resolve",value:t},[t.buffer])}catch(a){self.postMessage({id:e.id,count:e.count,action:"reject",value:a})}})}return{ready:i,supported:!0,useWorkers:function(a){!function(a){for(var e="self.ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(b)+"]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = "+d.name+";"+c.toString()+d.toString(),t=new Blob([e],{type:"text/javascript"}),i=URL.createObjectURL(t),r=h.length;r<a;++r)h[r]=f(i);for(r=a;r<h.length;++r)h[r].object.postMessage({});h.length=a,URL.revokeObjectURL(i)}(a)},decodeVertexBuffer:function(a,e,b,i,r){c(t,t.exports.meshopt_decodeVertexBuffer,a,e,b,i,t.exports[n[r]])},decodeIndexBuffer:function(a,e,b,i){c(t,t.exports.meshopt_decodeIndexBuffer,a,e,b,i)},decodeIndexSequence:function(a,e,b,i){c(t,t.exports.meshopt_decodeIndexSequence,a,e,b,i)},decodeGltfBuffer:function(a,e,b,i,r,h){c(t,t.exports[s[r]],a,e,b,i,t.exports[n[h]])},decodeGltfBufferAsync:function(a,e,b,r,f){return h.length>0?function(a,e,t,b,i){for(var r=h[0],c=1;c<h.length;++c)h[c].pending<r.pending&&(r=h[c]);return new Promise(function(c,n){var s=new Uint8Array(t),h=++o;r.pending+=a,r.requests[h]={resolve:c,reject:n},r.object.postMessage({id:h,count:a,size:e,source:s,mode:b,filter:i},[s.buffer])})}(a,e,b,s[r],n[f]):i.then(function(){var i=new Uint8Array(a*e);return c(t,t.exports[s[r]],i,a,e,b,t.exports[n[f]]),i})}}}();a.exports=e},940(a){var e=function(){var a,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("object"!=typeof WebAssembly)return{supported:!1};function t(a){if(!a)throw new Error("Assertion failed")}function b(a){return new Uint8Array(a.buffer,a.byteOffset,a.byteLength)}function i(e,t,i,r,c,n,s){var h=a.exports.sbrk,o=h(t),f=h(r*c),d=new Uint8Array(a.exports.memory.buffer);d.set(b(i),f);var l=e(o,t,f,r,c,n,s),g=new Uint8Array(l);return g.set(d.subarray(o,o+l)),h(o-h(0)),g}function r(a){for(var e=0,t=0;t<a.length;++t){var b=a[t];e=e<b?b:e}return e}function c(a,e){if(t(2==e||4==e),4==e)return new Uint32Array(a.buffer,a.byteOffset,a.byteLength/4);var b=new Uint16Array(a.buffer,a.byteOffset,a.byteLength/2);return new Uint32Array(b)}function n(e,t,i,r,c,n,s){var h=a.exports.sbrk,o=h(i*r),f=h(i*n),d=new Uint8Array(a.exports.memory.buffer);d.set(b(t),f),e(o,i,r,c,f,s);var l=new Uint8Array(i*r);return l.set(d.subarray(o,o+i*r)),h(o-h(0)),l}return{ready:WebAssembly.instantiate(function(a){for(var t=new Uint8Array(a.length),b=0;b<a.length;++b){var i=a.charCodeAt(b);t[b]=i>96?i-97:i>64?i-39:i+4}var r=0;for(b=0;b<a.length;++b)t[r++]=t[b]<60?e[t[b]]:64*(t[b]-60)+t[++b];return t.buffer.slice(0,r)}("b9H79Tebbbe9ok9Geueu9Geub9Gbb9Gruuuuuuueu9Gvuuuuueu9Gduueu9Gluuuueu9Gvuuuuub9Gouuuuuub9Gluuuub9GiuuueuiE8AdilveoveovrrwrrrDDoDrbqqbelve9Weiiviebeoweuecj:Gdkr:PlCo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9mW4W2be8A9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWVbd8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9c9V919U9KbiE9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949wWV79P9V9UblY9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWVbv8E9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWV9c9V919U9Kbo8A9TW79O9V9Wt9FW9U9J9V9KW69U9KW949wWV79P9V9UbrE9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JWbwa9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JW9c9V919U9KbDL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9p9JtbqK9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9r919HtbkL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVT949WbxY9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVJ9V29VVbmE9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OWbza9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OW9ttV9P9WbHa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9WbOK9TW79O9V9Wt9F79W9Ht9P9H29t9VVt9sW9T9H9WbAl79IV9RbXDwebcekdKYq:8f8Adbk;wadhud9:8Jjjjjbc;qw9Rgr8KjjjjbcbhwdnaeTmbabcbyd;i:I:cjbaoaocb9iEgDc:GeV86bbarc;adfcbcjdz:xjjjb8AdnaiTmbarc;adfadalz:wjjjb8Akarc;abfalfcbcbcjdal9RalcFe0Ez:xjjjb8Aarc;abfarc;adfalz:wjjjb8Aar9cb83iUar9cb83i8War9cb83iyar9cb83iaar9cb83iKar9cb83izar9cb83iwar9cb83ibcj;abal9Uc;WFbGcjdalca0Ehqdnaicd6mbavcd9imbaDTmbadcefhkaqci2gxal2hmarc;alfclfhParc;qlfceVhsarc;qofclVhzcbhHincdhOcbhAdnavci6mbar9cb83i;Ooar9cb83i;Goar9cb83i;yoar9cb83i;qoadaHfgoybbhCcbhXincbhwcbhQdninaoalfhLaoybbgKaC7aQVhQawcP0meaLhoaKhCawcefgwaXfai6mbkkcbhCarc;qofhwincwhYcwh8AdnaQaC93gocFeGgEcs0mbclh8AaEci0mbcdcbaEEh8Akdnaocw4cFeGgEcs0mbclhYaEci0mbcdcbaEEhYkaYa8AfhEawydbh3cwhYcwh8Adnaocz4cFeGg5cs0mbclh8Aa5ci0mbcdcba5Eh8AkaEa3fhEdnaocFFFFb0mbclhYaocFFF8F0mbcbcdaocjjjw6EhYkawaEa8AfaYfBdbawclfhwaCcefgCcw9hmbkaLhoaKhCaXczfgXai6mbkcbhocehwazhQinawaoaQydbarc;qofaocdtfydb6EhoaQclfhQawcefgwcw9hmbkaoclthAcihOkcbhEarc;qlfcbcjdz:xjjjb8AarcbBd;ilar9cb83i;aladh8Eaqh8Fakh3inarc;qlfadaEaEcb9h9Ral2falz:wjjjb8Aaia8Faia8F6EhadnaqaiaE9RaEaqfai6EgKcsfc9WGgoaK9nmbarc;qofaKfcbaoaK9Rz:xjjjb8AkadaEal2fhhcbhginagaAVcl4hXarc;alfagcdtfh8JaHh8Kcbh8Lina8LaHfhwdndndndndndndnagPlbedibkaKTmvahawfhoarc;qlfawfRbbhQarc;qofhwaahCinawaoRbbgYaQ9RgQcetaQcKtc8F91786bbawcefhwaoalfhoaYhQaEaCcufgC9hmbxvkkaKTmla8Kc9:Ghoa8LcitcwGh8Aarc;qlfawceVfRbbcwtarc;qlfawc9:GfRbbVhQarc;qofhwaahCinawa3aofRbbcwta8EaofRbbVgYaQ9RgQcetaQcztc8F917cFFiGa8A486bbaoalfhoawcefhwaYhQaEaCcufgC9hmbxlkkasa8Kc98GgQfhoa3aQfhYarc;qlfawc98GgQfRbbhCcwhwinaoRbbawtaCVhCaocefhoawcwfgwca9hmbxdkkaKTmdxekaKTmea8Lcith5ahaQfh8AcbhLina8ARbbhQcwhoaYhwinawRbbaotaQVhQawcefhwaocwfgoca9hmbkarc;qofaLfaQaC7aX93a5486bbaYalfhYa8Aalfh8AaQhCaLcefgLaK9hmbkka8Jydbh8AcbhLarc;qofhoincdhQcbhwinaQaoawfRbbcb9hfhQawcefgwcz9hmbkclhCcbhwinaCaoawfRbbcd0fhCawcefgwcz9hmbkcwhYcbhwinaYaoawfRbbcP0fhYawcefgwcz9hmbkaQaCaQaC6EgwaYawaY6Egwczawcz6Ea8Afh8AaoczfhoaLczfgLaK6mbka8Ja8ABdbka8Kcefh8Ka8Lcefg8Lcl9hmbkagcefggaO9hmbka8Eamfh8Ea8Faxfh8Fa3amfh3aEaxfgEai6mbkcbhocehwaPhQinawaoaQydbarc;alfaocdtfydb6EhoaQclfhQaOawcefgw9hmbkaraHcd4faAcdVaoaocdSE86bbaHclfgHal6mbkkabaefhgabcefhoalcd4g8McbaDEhkadcefh8Narc;abfceVhecbhmdndninaiam9nmearc;qofcbcjdz:xjjjb8Aagao9Rak6mdadamal2gwfhxcbhHa8Nawfhzaocbakz:xjjjbg8Fakfh3aqaiam9Ramaqfai6Egscsfgocl4cifcd4hOaoc9WGg8JThPindndndndndndndndndndnaDTmbaraHcd4fRbbgQciGPlbedlbkasTmdaxaHfhoarc;abfaHfRbbhQarc;qofhwashCinawaoRbbgYaQ9RgQcetaQcKtc8F91786bbawcefhwaoalfhoaYhQaCcufgCmbxikkasTmiaHcitcwGh8Aarc;abfaHceVfRbbcwtarc;abfaHc9:GgofRbbVhQaxaofhoarc;qofhwashCinawao8VbbgYaQ9RgQcetaQcztc8F917cFFiGa8A486bbawcefhwaoalfhoaYhQaCcufgCmbxikkaeaHc98Gg8Afhoaza8AfhYarc;abfa8AfRbbhCcwhwinaoRbbawtaCVhCaocefhoawcwfgwca9hmbkasTmdaQcl4hKaHcitcKGhEaxa8Afh8AcbhLina8ARbbhQcwhoaYhwinawRbbaotaQVhQawcefhwaocwfgoca9hmbkarc;qofaLfaQaC7aK93aE486bbaYalfhYa8Aalfh8AaQhCaLcefgLas9hmbkkaDmbcbhoxlka8JTmbcbhodninarc;qofaofgwcwf8Pibaw8Pib:e9qTmeaoczfgoa8J9pmdxbkkdnavmbcehoxikcbh8AaOhLaOhKinarc;qofa8Afgocwf8Pibhyao8Pibh8PcdhQcbhwinaQaoawfRbbcb9hfhQawcefgwcz9hmbkclhCcbhwinaCaoawfRbbcd0fhCawcefgwcz9hmbkcwhYcbhwinaYaoawfRbbcP0fhYawcefgwcz9hmbkaQaCaQaC6EgoaYaoaY6Egoczaocz6EaKfhKaocucbaya8P:e9cb9sEgwaoaw6EaLfhLa8Aczfg8Aa8J9pmdxbkka8FaHcd4fgoaoRbbcdaHcetcoGtV86bbxikdnaLas6mbaKas6mba8FaHcd4fgoaoRbbciaHcetcoGtV86bbaga39Ras6mra3arc;qofasz:wjjjbasfh3xikaLaK9phoka8FaHcd4fgwawRbbaoaHcetcoGtV86bbkaga39RaO6mla3cbaOz:xjjjbgaaOfhKdndna8JmbaPhoxekdnagaK9RcK9pmbaPhoxekaocdtc:q:G:cjbfcj:G:cjbaDEg3ydxghcetc;:FFFeGhAcuhEcuahtcu7cFeGh8Ecbh8Karc;qofhQinarc;qofa8KfhXczh8AdndndnahPDbeeeeeeedekcucbaXcwf8PibaX8Pib:e9cb9sEh8AxekcbhoaAh8Aina8Aa8EaQaofRbb9nfh8Aaocefgocz9hmbkkcih5cbhYinczhwdndndna3aYcdtfydbgLPDbeeeeeeedekcucbaXcwf8PibaX8Pib:e9cb9sEhwxekaLcetc;:FFFeGhwcuaLtcu7cFeGhCcbhoinawaCaQaofRbb9nfhwaocefgocz9hmbkkdndnawa8A6mbaLaE9hmeawa8A9hmea3a5cdtfydbcwSmekaYh5awh8AkaYcefgYci9hmbkaaa8Kco4fgoaoRbba5a8Kci4coGtV86bbdndndna3a5cdtfydbgEPDdbbbbbbbebkdncwaE9Tg5TmbcuaEtcu7hwdndnaEceSmbcbh8LaQhXinaXhoa5hYcbhCinaoRbbg8AawcFeGgLa8AaL6EaCaEtVhCaocefhoaYcufgYmbkaKaC86bbaXa5fhXaKcefhKa8La5fg8Lcz6mbxdkkcbh8LaQhXinaXhoa5hYcbhCinaoRbbg8AawcFeGgLa8AaL6EaCcetVhCaocefhoaYcufgYmbkaKaC:T9cFe:d9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:9ca188bbaXa5fhXaKcefhKa8La5fg8Lcz6mbkkcbhoinaKaQaofRbbgC86bbaKaCawcFeG9pfhKaocefgocz9hmbxikkdnaEceSmbinaKcb86bbaKcefhKxbkkinaKcb86bbaKcefhKxbkkaKaX8Pbw83bwaKaX8Pbb83bbaKczfhKka8Kczfg8Ka8J9pgomeaQczfhQagaK9RcK9pmbkkaoTmlaKh3aKTmlkaHcefgHal9hmbkarc;abfaxascufal2falz:wjjjb8Aasamfhma3hoa3mbkcbhwxdkdnagao9RakalfgwcKcaaDEgQawaQ0EgC9pmbcbhwxdkdnawaQ9pmbaocbaCaw9Rgwz:xjjjbawfhokaoarc;adfalz:wjjjbalfhodnaDTmbaoara8Mz:wjjjba8Mfhokaoab9Rhwxekcbhwkarc;qwf8Kjjjjbawk5babaeadaialcdcbyd;i:I:cjbz:bjjjbk9reduaecd4gdaefgicaaica0Eabcj;abae9Uc;WFbGcjdaeca0Egifcufai9Uae2aiadfaicl4cifcd4f2fcefkmbcbabBd;i:I:cjbk;HPeLu8Jjjjjbc;ae9Rgl8Kjjjjbcbhvdnaeaici9UgocHf6mbabcbyd;m:I:cjbgrc;GeV86bbalc;abfcFecjez:xjjjb8Aal9cu83iUal9cu83i8Wal9cu83iyal9cu83iaal9cu83iKal9cu83izal9cu83iwal9cu83ibabaefc9WfhwabcefgDaofhednaiTmbcmcsarcb9kgqEhkcbhxcbhmcbhPcbhscbhzindnaeaw9nmbcbhvxikazcufhvadaPcdtfgHydbhOaHcwfydbhAaHclfydbhCcbhXdndndninalc;abfavcsGcitfgoydlhQdndndnaoydbgoaO9hmbaQaCSmekdnaoaC9hmbaQaA9hmbaXcefhXxekaoaA9hmeaQaO9hmeaXcdfhXkaXc870mdascufhvaHaXcdtgAcxGgoyd:4:G:cjbcdtfydbhQaHaoyd:0:G:cjbcdtfydbhCaHaoyd:W:G:cjbcdtfydbhOcbhodnindnalavcsGcdtfydbaQ9hmbaohXxdkcuhXavcufhvaocefgocz9hmbkkaxaQaxSgvaXce9iaXak9oVgoGfhxdndndncbcsavEaXaoEgvcs9hmbarce9imbaQaQamaQcefamSgvEgmcefSmecmcsavEhvkaDavaAc;WeGV86bbavcs9hmeaQam9Rgvcetavc8F917hvinaecbcjeavcje6EavcFbGV86bbaecefheavcr4gvmbkaQhmxvkcPhvaDaAcPV86bbaQhmkavTmiavak9omicdhocehXazhAxlkavcufhvaXclfgXc;ab9hmbkkdnaHcecdcbaAaxSEaCaxSEcdtgvyd:W:G:cjbcdtfydbgOTaHavyd:0:G:cjbcdtfydbgCceSGaHavyd:4:G:cjbcdtfydbgQcdSGaxcb9hGaqGgLce9hmbal9cu83iUal9cu83i8Wal9cu83iyal9cu83iaal9cu83iKal9cu83izal9cu83iwal9cu83ibcbhxkcbhXascufgvhodnindnalaocsGcdtfydbaC9hmbaXhAxdkcuhAaocufhoaXcefgXcz9hmbkkcbhodnindnalavcsGcdtfydbaQ9hmbaohXxdkcuhXavcufhvaocefgocz9hmbkkaxaOaxSgKfhHdndnaAcm0mbaAcefhAxekcbcsaCaHSgvEhAaHavfhHkdndnaXcm0mbaXcefhXxekcbcsaQaHSgvEhXaHavfhHkc9:cuaKEhYcbhvaXaAcltVg8AcFeGhodndndninavc;q:G:cjbfRbbaoSmeavcefgvcz9hmbxdkkaLaOax9havcm0VVmbaDavc;WeV86bbxekaDaY86bbaea8A86bbaecefhekdnaKmbaOam9Rgvcetavc8F917hvinaecbcjeavcje6EavcFbGV86bbaecefheavcr4gvmbkaOhmkdnaAcs9hmbaCam9Rgvcetavc8F917hvinaecbcjeavcje6EavcFbGV86bbaecefheavcr4gvmbkaChmkdnaXcs9hmbaQam9Rgvcetavc8F917hvinaecbcjeavcje6EavcFbGV86bbaecefheavcr4gvmbkaQhmkalascdtfaOBdbascefcsGhvdndnaAPzbeeeeeeeeeeeeeebekalavcdtfaCBdbascdfcsGhvkdndnaXPzbeeeeeeeeeeeeeebekalavcdtfaQBdbavcefcsGhvkcihoalc;abfazcitfgXaOBdlaXaCBdbazcefcsGhAcdhXavhsaHhxxekcdhoalascdtfaQBdbcehXascefcsGhsazhAkalc;abfaAcitfgvaCBdlavaQBdbalc;abfazaXfcsGcitfgvaQBdlavaOBdbaDcefhDazaofcsGhzaPcifgPai6mbkkdnaeaw9nmbcbhvxekcbhvinaeavfavc;q:G:cjbfRbb86bbavcefgvcz9hmbkaeab9Ravfhvkalc;aef8KjjjjbavkZeeucbhddninadcefgdc8F0meaeceadt0mbkkadcrfcFeGcr9Uci2cdfabci9U2cHfkmbcbabBd;m:I:cjbk:zderu8Jjjjjbcz9Rhlcbhvdnaeaicvf6mbabcbRb;m:I:cjbc;qeV86bbal9cb83iwabcefhvabaefc98fhodnaiTmbcbhecbhrcbhwindnavao6mbcbskadawcdtfydbgDalcwfaraDae9Rgeaec8F91ge7ae9Rc507grcdtfgqydb9Rgec8E91c9:Gaecdt7arVheinavcbcjeaecje6EaecFbGV86bbavcefhvaecr4gembkaqaDBdbaDheawcefgwai9hmbkkdnavao9nmbcbskavcbBbbavab9RclfhvkavkBeeucbhddninadcefgdc8F0meaeceadt0mbkkabadcwfcFeGcr9U2cvfk:dvli99dui99ludnaeTmbcuadcetcuftcu7:Zhvdndncuaicuftcu7:ZgoJbbbZMgr:lJbbb9p9DTmbar:Ohwxekcjjjj94hwkcbhicbhDinalclfIdbgrJbbbbJbbjZalIdbgq:lar:lMalcwfIdbgk:lMgr:varJbbbb9BEgrNhxaqarNhralcxfIdbhqdndnakJbbbb9GTmbaxhkxekJbbjZar:l:tgkak:maxJbbbb9GEhkJbbjZax:l:tgxax:marJbbbb9GEhrkdndnaqJbbj:;aqJbbj:;9GEgxJbbjZaxJbbjZ9FEavNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohmxekcjjjj94hmkdndnakJbbj:;akJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;akJbbbb9GEMgq:lJbbb9p9DTmbaq:OhPxekcjjjj94hPkdndnarJbbj:;arJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;arJbbbb9GEMgr:lJbbb9p9DTmbar:Ohsxekcjjjj94hskdndnadcl9hmbabaDfgzas86bbazcifam86bbazcdfaw86bbazcefaP86bbxekabaifgzas87ebazcofam87ebazclfaw87ebazcdfaP87ebkaicwfhiaDclfhDalczfhlaecufgembkkk;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;Pviwue99eu8Jjjjjbcjd9Rgo8Kjjjjbadcd4hrdndndnavcd9hmbarTmbaohdarhwinadc:CuBdbadclfhdawcufgwmbkaeTmdarcdthDalhqcbhkinaohdaqhwarhxinadadydbgmcbawIdbgP:8cL4cFeGc:cufaPJbbbb9BEgsamas9kEBdbawclfhwadclfhdaxcufgxmbkaqaDfhqakcefgkae9hmbxdkkaeTmekarcdthqavce9hhDcbhkindndndnaDmbarTmdc:CuhwalhdarhxinawcbadIdbgP:8cL4cFeGc:cufaPJbbbb9BEgmawam9kEhwadclfhdaxcufgxmbxdkkdndndndnavPleddbdkarTmlaohdalhwarhxinadcbcbawIdbgP:8cL4cFeGgmc:cufgsasam0EaPJbbbb9BEBdbadclfhdawclfhwaxcufgxmbxikkarTmicbhdarhwinaoadfcbaladfIdbgP:8cL4cFeGgxc8Aaxc8A0Ec:cufaPJbbbb9BEBdbadclfhdawcufgwmbxdkkarTmdkc:CuhwkcbhdarhminawhxdnavceSmbaoadfydbhxkdndnaladfIdbgPcjjj;8iaxai9RcefgxcLt9R::NJbbbZJbbb:;aPJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohsxekcjjjj94hskabadfascFFFrGaxcKtVBdbadclfhdamcufgmmbkkabaqfhbalaqfhlakcefgkae9hmbkkaocjdf8Kjjjjbk:Olveue99iue99iudnaeTmbceaicufthvcuaitcu7:Zhocbhradcl9hhwcbhDindndnalcwfIdbgqJbbbbaqJbbbb9GEgqJbbjZaqJbbjZ9FEaoNJbbbZMgq:lJbbb9p9DTmbaq:Ohixekcjjjj94hikdndnalIdbgqJbbbbaqJbbbb9GEgqJbbjZaqJbbjZ9FEaoNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkadai9Rcd9TgkaifhidndnalclfIdbgqJbbbbaqJbbbb9GEgqJbbjZaqJbbjZ9FEaoNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkadai9Rcd9ThddndnalcxfIdbgqJbbbbaqJbbbb9GEgqJbbjZaqJbbjZ9FEaoNJbbbZMgq:lJbbb9p9DTmbaq:Ohxxekcjjjj94hxkadaifhiaxce91avVhxdndnawmbabaDfgmai86bbamcifax86bbamcdfad86bbamcefak86bbxekabarfgmai87ebamcofax87ebamclfad87ebamcdfak87ebkarcwfhraDclfhDalczfhlaecufgembkkk;mqdQui998Jjjjjbc:qd9Rgv8Kjjjjbavc:Sefcbc;Kbz:xjjjb8AdnadTmbaiTmbdndnabaeSmbaehoxekavcuadcdtgradcFFFFi0Ecbyd;q:I:cjbHjjjjbbgoBd:SeavceBd:mdaoaearz:wjjjb8AkavcbBd:Oeav9cb83i:Geavc:Gefaoadaiavc:Sefz:pjjjbavyd:Gehwadci9UgDcbyd;q:I:cjbHjjjjbbheavc:Sefavyd:mdgqcdtfaeBdbavaqcefgrBd:mdaecbaDz:xjjjbhkavc:SefarcdtfcuaicdtaicFFFFi0Ecbyd;q:I:cjbHjjjjbbgxBdbavaqcdfgmBd:mdalc;ebfhPawheaxhrinaralIdbaPaeydbgscwascw6EcdtfIdbMUdbaeclfhearclfhraicufgimbkavc:SefamcdtfcuaDcdtadcFFFF970Ecbyd;q:I:cjbHjjjjbbgmBdbdnadci6mbaoheamhraDhiinaraxaeydbcdtfIdbaxaeclfydbcdtfIdbMaxaecwfydbcdtfIdbMUdbaecxfhearclfhraicufgimbkkaqcifhzalc;ebfhHavc;qbfhOavheavyd:KehAavyd:OehCcbhscbhrcbhXcehQinaehLaoarcx2fgKydbhPaKclfydbhdabaXcx2fgecwfaKcwfydbgYBdbaeclfadBdbaeaPBdbakarfce86bbaOaYBdwaOadBdlaOaPBdbamarcdtfcbBdbcih8AdnasTmbaLhiinaOa8AcdtfaiydbgeBdba8AaeaY9haeaP9haead9hGGfh8AaiclfhiascufgsmbkkaXcefhXcbhsinaCaAaKascdtfydbcdtgifydbcdtfgYheawaifgdydbgPhidnaPTmbdninaeydbarSmeaeclfheaicufgiTmdxbkkaeaYaPcdtfc98fydbBdbadadydbcufBdbkascefgsci9hmbkdndndna8ATmbcuhrJbbbbhEcbhdavyd:KehYavyd:OehKindnawaOadcdtfydbcdtgsfydbgeTmbaxasfgiIdbh3aialcuadadcs0EcdtfclfIdbaHaecwaecw6EcdtfIdbMg5Udba5a3:th5aecdthiaKaYasfydbcdtfheinamaeydbgscdtfgPa5aPIdbMg3Udba3aEaEa39DgPEhEasaraPEhraeclfheaic98fgimbkkadcefgda8A9hmbkarcu9hmekaQaD9pmeindnakaQfRbbmbaQhrxdkaDaQcefgQ9hmbxdkka8Acza8Acz6EhsaOheaLhOarcu9hmekkazTmbaqcdtavc:Seffcwfheinaeydbcbyd;u:I:cjbH:bjjjbbaec98fheazcufgzmbkkavc:qdf8Kjjjjbk:0leoucuaicdtgvaicFFFFi0Egocbyd;q:I:cjbHjjjjbbhralalyd9GgwcdtfarBdbalawcefBd9GabarBdbaocbyd;q:I:cjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdlcuadcdtadcFFFFi0Ecbyd;q:I:cjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdwabydbcbavz:xjjjb8AabydbhraehladhvinaralydbcdtfgoaoydbcefBdbalclfhlavcufgvmbkcbhvabydlglhoarhwaihDinaoavBdbaoclfhoawydbavfhvawclfhwaDcufgDmbkadci9Uhqdnadcd9nmbabydwhocbhvinaecwfydbhwaeclfydbhDalaeydbcdtfgbabydbgbcefBdbaoabcdtfavBdbalaDcdtfgDaDydbgDcefBdbaoaDcdtfavBdbalawcdtfgwawydbgwcefBdbaoawcdtfavBdbaecxfheaqavcefgv9hmbkkinalalydbarydb9RBdbarclfhralclfhlaicufgimbkkQbabaeadaic;G:G:cjbz:ojjjbkQbabaeadaic;i:H:cjbz:ojjjbk9DeeuabcFeaicdtz:xjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk:3vioud9:du8Jjjjjbc;Wa9Rgl8Kjjjjbcbhvalcxfcbc;Kbz:xjjjb8AalcuadcitgoadcFFFFe0Ecbyd;q:I:cjbHjjjjbbgrBdxalceBd2araeadaicezNjjjbalcuaoadcjjjjoGEcbyd;q:I:cjbHjjjjbbgwBdzadcdthednadTmbabhiinaiavBdbaiclfhiadavcefgv9hmbkkawaefhDalabBdwalawBdl9cbhqindnadTmbaq9cq9:hkarhvaDhiadheinaiav8Pibak1:NcFrG87ebavcwfhvaicdfhiaecufgembkkalclfaq:NceGcdtfydbhxalclfaq9ce98gq:NceGcdtfydbhmalc;Wbfcbcjaz:xjjjb8AaDhvadhidnadTmbinalc;Wbfav8VebcdtfgeaeydbcefBdbavcdfhvaicufgimbkkcbhvcbhiinalc;WbfavfgeydbhoaeaiBdbaoaifhiavclfgvcja9hmbkadhvdndnadTmbinalc;WbfaDamydbgicetf8VebcdtfgeaeydbgecefBdbaxaecdtfaiBdbamclfhmavcufgvmbkaq9cv9smdcbhvinabawydbcdtfavBdbawclfhwadavcefgv9hmbxdkkaq9cv9smekkcwhvcbhiinalcxfavfc98fydbcbyd;u:I:cjbH:bjjjbbaiceGheclhvcehiaeTmbkalc;Waf8Kjjjjbk:Awliuo99iud9:cbhv8Jjjjjbca9Rgocbyd:4:I:cjbBdKaocb8Pd:W:I:cjb83izaocbyd;e:I:cjbBdwaocb8Pd:8:I:cjb83ibaicd4hrdndnadmbJFFuFhwJFFuuhDJFFuuhqJFFuFhkJFFuuhxJFFuFhmxekarcdthPaehsincbhiinaoczfaifgzasaifIdbgwazIdbgDaDaw9EEUdbaoaifgzawazIdbgDaDaw9DEUdbaiclfgicx9hmbkasaPfhsavcefgvad9hmbkaoIdKhDaoIdwhwaoIdChqaoIdlhkaoIdzhxaoIdbhmkdnadTmbJbbbbJbFu9hJbbbbamax: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:I:cjbgeabcifc98GfgbBd;y:I:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;y:I:cjbgeabcrfc94GfgbBd;y:I:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikTeeucbabcbyd;y:I:cjbge9Rcifc98GaefgbBd;y:I:cjbdnabZbcztge9nmbabae9RcFFifcz4nb8Akkk;Sddbcj:Gdk;idbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbbbbbbbbbbbbbbbbebbbdbbbbbbbebbbbbbbbbbbbbbbb4:h9w9N94:P:gW:j9O:ye9Pbbbbbb: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;i:IdkCebbbebbbebbbdbbb9G:rbb"),{}).then(function(e){(a=e.instance).exports.__wasm_call_ctors(),a.exports.meshopt_encodeVertexVersion(0),a.exports.meshopt_encodeIndexVersion(0)}),supported:!0,reorderMesh:function(e,i,c){t(e instanceof Uint32Array||e instanceof Int32Array),t(!i||e.length%3==0);var n=i?c?a.exports.meshopt_optimizeVertexCacheStrip:a.exports.meshopt_optimizeVertexCache:void 0;return function(e,t,i,r){var c=a.exports.sbrk,n=c(4*t.length),s=c(4*i),h=new Uint8Array(a.exports.memory.buffer),o=b(t);h.set(o,n),r&&r(n,n,t.length,i);var f=e(s,n,t.length,i);h=new Uint8Array(a.exports.memory.buffer);var d=new Uint32Array(i);new Uint8Array(d.buffer).set(h.subarray(s,s+4*i)),o.set(h.subarray(n,n+4*t.length)),c(n-c(0));for(var l=0;l<t.length;++l)t[l]=d[t[l]];return[d,f]}(a.exports.meshopt_optimizeVertexFetchRemap,e,r(e)+1,n)},reorderPoints:function(e,i){return t(e instanceof Float32Array),t(e.length%i==0),t(i>=3),function(e,t,i,r){var c=a.exports.sbrk,n=c(4*i),s=c(i*r),h=new Uint8Array(a.exports.memory.buffer);h.set(b(t),s),e(n,s,i,r),h=new Uint8Array(a.exports.memory.buffer);var o=new Uint32Array(i);return new Uint8Array(o.buffer).set(h.subarray(n,n+4*i)),c(n-c(0)),o}(a.exports.meshopt_spatialSortRemap,e,e.length/i,4*i)},encodeVertexBuffer:function(e,b,r){t(r>0&&r<=256),t(r%4==0);var c=a.exports.meshopt_encodeVertexBufferBound(b,r);return i(a.exports.meshopt_encodeVertexBuffer,c,e,b,r)},encodeVertexBufferLevel:function(e,b,r,c,n){t(r>0&&r<=256),t(r%4==0),t(c>=0&&c<=3),t(void 0===n||0==n||1==n);var s=a.exports.meshopt_encodeVertexBufferBound(b,r);return i(a.exports.meshopt_encodeVertexBufferLevel,s,e,b,r,c,void 0===n?-1:n)},encodeIndexBuffer:function(e,b,n){t(2==n||4==n),t(b%3==0);var s=c(e,n),h=a.exports.meshopt_encodeIndexBufferBound(b,r(s)+1);return i(a.exports.meshopt_encodeIndexBuffer,h,s,b,4)},encodeIndexSequence:function(e,b,n){t(2==n||4==n);var s=c(e,n),h=a.exports.meshopt_encodeIndexSequenceBound(b,r(s)+1);return i(a.exports.meshopt_encodeIndexSequence,h,s,b,4)},encodeGltfBuffer:function(a,e,b,i,r){var c={ATTRIBUTES:this.encodeVertexBufferLevel,TRIANGLES:this.encodeIndexBuffer,INDICES:this.encodeIndexSequence};return t(c[i]),c[i](a,e,b,2,void 0===r?0:r)},encodeFilterOct:function(e,b,i,r){return t(4==i||8==i),t(r>=2&&r<=16),n(a.exports.meshopt_encodeFilterOct,e,b,i,r,16)},encodeFilterQuat:function(e,b,i,r){return t(8==i),t(r>=4&&r<=16),n(a.exports.meshopt_encodeFilterQuat,e,b,i,r,16)},encodeFilterExp:function(e,b,i,r,c){t(i>0&&i%4==0),t(r>=1&&r<=24);var s={Separate:0,SharedVector:1,SharedComponent:2,Clamped:3};return t(!c||c in s),n(a.exports.meshopt_encodeFilterExp,e,b,i,r,i,c?s[c]:1)},encodeFilterColor:function(e,b,i,r){return t(4==i||8==i),t(r>=2&&r<=16),n(a.exports.meshopt_encodeFilterColor,e,b,i,r,16)}}}();a.exports=e},277(a,e,t){const b=t(17),{IBinarying:i}=t(594),{Vec3:r,Vec4:c}=t(947);a.exports={ReadOnlyBinaryStream:class{constructor(a){this.buffer=a||Buffer.alloc(0),this.cursor=0,this.bitOffset=0,this.errorFlag=!1}done(){return this.cursor>=this.buffer.byteLength}error(){return this.errorFlag}getRemain(){return this.done()?0:this.buffer.byteLength-this.cursor}move(a=0){if(this.done()||this.errorFlag)return-1;var e=this.cursor;return this.bitOffset=0,this.cursor+=a,this.cursor>this.buffer.byteLength?(this.errorFlag=1,-1):e}skip(a=0){this.move(a)}readBits(a){if(a<1||a>32)return this.errorFlag=!0,0;if(this.done())return this.errorFlag=!0,0;for(var e,t,b,i,r=0,c=0;c<a;){if(this.done())return this.errorFlag=!0,0;e=this.buffer[this.cursor],i=(b=a-c)<(t=8-this.bitOffset)?b:t,r|=(e>>>this.bitOffset&(1<<i)-1)<<c>>>0,c+=i,this.bitOffset+=i,8==this.bitOffset&&(this.bitOffset=0,this.cursor++)}return r>>>0}readBytes(a){var e=Buffer.alloc(a),t=this.move(a);return t<0||e.set(this.buffer.subarray(t,t+a)),e}readBool(){return!!this.readBits(1)}readInt8(){var a=this.move(1);return a<0?0:this.buffer.readInt8(a)}readUint8(){var a=this.move(1);return a<0?0:this.buffer.readUint8(a)}readInt16(){var a=this.move(2);return a<0?0:this.buffer.readInt16LE(a)}readUint16(){var a=this.move(2);return a<0?0:this.buffer.readUint16LE(a)}readInt32(){var a=this.move(4);return a<0?0:this.buffer.readInt32LE(a)}readUint32(){var a=this.move(4);return a<0?0:this.buffer.readUint32LE(a)}readInt64(){var a,e,t=this.move(4),i=this.move(4);return i<0||t<0?b.fromNumber(0):(a=this.buffer.readUint32LE(t),e=this.buffer.readUint32LE(i),new b(e,a))}readUint64(){var a,e,t=this.move(4),i=this.move(4);return i<0||t<0?b.fromNumber(0):(a=this.buffer.readUint32LE(t),e=this.buffer.readUint32LE(i),new b(e,a,!0))}readFloat(){var a=this.move(4);return a<0?0:this.buffer.readFloatLE(a)}readDouble(){var a=this.move(8);return a<0?0:this.buffer.readDoubleLE(a)}readCompressedInt32(a,e){return a^=2147483648,e^=2147483648,this.readCompressedUint32(a,e)}readCompressedUint32(a,e){if((a>>>=0)>(e>>>=0))throw new RangeError("min must be less than max.");var t=32-Math.clz32(e-a);return this.readBits(t)+a}readCompressedFloat(a,e,t,b){return a=Math.fround(a),e=Math.fround(e),t=Math.fround(t),Math.fround(this.readCompressedDouble(a,e,t,b))}readCompressedDouble(a,e,t,b){if(a>=e)throw new RangeError("min must be less than max");if(t<a||t>e)throw new RangeError("pivot must be within [min, max]");if(b<1||b>=32)throw new RangeError("bits must be between 1 and 31");var i,r,c=(1<<b)-1>>>0,n=e-a,s=Math.trunc((t-a)/n*c);return i=this.readBits(b),this.errorFlag?0:i<=s?0===s?a:a*(1-(r=i/s))+t*r:c===s?e:t*(1-(r=(i-s)/(c-s)))+e*r}readCompressedVec3(a,e,t,b){var i=new r;return i.x=this.readCompressedFloat(a.x,e.x,t.x,b),i.y=this.readCompressedFloat(a.y,e.y,t.y,b),i.z=this.readCompressedFloat(a.z,e.z,t.z,b),i}readCompressedVec4(a,e,t,b){var i=new c;return i.x=this.readCompressedFloat(a.x,e.x,t.x,b),i.y=this.readCompressedFloat(a.y,e.y,t.y,b),i.z=this.readCompressedFloat(a.z,e.z,t.z,b),i.w=this.readCompressedFloat(a.w,e.w,t.w,b),i}readBool(){return!!this.readUint8()}readType(a){return a.deserialize(this)}},WritableBinaryStream:class{constructor(){this.buffer=Buffer.alloc(128),this.bitOffset=0,this.cursor=0}realloc(a){var e,t=this.buffer.byteLength;if(this.bitOffset&&this.cursor++,this.bitOffset=0,!(this.cursor+a<=this.buffer.byteLength)){for(;this.cursor+a>t;)t<<=1;(e=Buffer.alloc(t)).set(this.buffer),this.buffer=e}}getLength(){return this.cursor}data(){var a=Buffer.alloc(this.cursor);return a.set(this.buffer.subarray(0,this.cursor)),a}clear(){this.bitOffset=0,this.cursor=0,this.buffer=Buffer.alloc(128)}pad(a,e=0){this.realloc(a),this.buffer.fill(e,this.cursor,this.cursor+a),this.cursor+=a}writeBits(a,e){if(!(e<1||e>32)){a>>>=0;for(var t,b,i,r,c=0;c<e;)0==this.bitOffset&&(this.realloc(1),this.buffer[this.cursor]=0),t=this.buffer[this.cursor],t|=(a>>>c&(1<<(r=(i=e-c)<(b=8-this.bitOffset)?i:b))-1)<<this.bitOffset,this.buffer[this.cursor]=t,c+=r,this.bitOffset+=r,8==this.bitOffset&&(this.bitOffset=0,this.cursor++)}}writeBytes(a){var e=a.byteLength;this.realloc(e),this.buffer.set(a,this.cursor),this.cursor+=e}writeBool(a){this.writeBits(!!a,1)}writeInt8(a){this.realloc(1),this.buffer.writeInt8(a,this.cursor),this.cursor+=1}writeUint8(a){this.realloc(1),this.buffer.writeUint8(a,this.cursor),this.cursor+=1}writeInt16(a){this.realloc(2),this.buffer.writeInt16LE(a,this.cursor),this.cursor+=2}writeUint16(a){this.realloc(2),this.buffer.writeUint16LE(a,this.cursor),this.cursor+=2}writeInt32(a){this.realloc(4),this.buffer.writeInt32LE(a,this.cursor),this.cursor+=4}writeUint32(a){this.realloc(4),this.buffer.writeUint32LE(a,this.cursor),this.cursor+=4}writeInt64(a){this.realloc(8),this.buffer.writeInt32LE(a.high,this.cursor),this.cursor+=4,this.buffer.writeInt32LE(a.low,this.cursor),this.cursor+=4}writeUint64(a){this.realloc(8),this.buffer.writeInt32LE(a.high,this.cursor),this.cursor+=4,this.buffer.writeInt32LE(a.low,this.cursor),this.cursor+=4}writeFloat(a){this.realloc(4),this.buffer.writeFloatLE(a,this.cursor),this.cursor+=4}writeDouble(a){this.realloc(4),this.buffer.writeDoubleLE(a,this.cursor),this.cursor+=8}writeCompressedInt8(a,e,t){a=a<<24>>24,e=e<<24>>24,t=t<<24>>24}writeCompressedUint8(a,e,t){}writeCompressedInt32(a,e,t){a^=2147483648,e^=2147483648,t^=2147483648,this.writeCompressedUint32(a,e,t)}writeCompressedUint32(a,e,t){if(a>>>=0,(e>>>=0)>(t>>>=0))throw new RangeError("min must be less than max.");var b=32-Math.clz32(t-e);this.writeBits(a-e,b)}writeCompressedFloat(a,e,t,b,i){a=Math.fround(a),e=Math.fround(e),t=Math.fround(t),b=Math.fround(b),this.writeCompressedDouble(a,e,t,b,i)}writeCompressedDouble(a,e,t,b,i){if(e>=t)throw new RangeError("min must be less than max");if(b<e||b>t)throw new RangeError("pivot must be within [min, max]");if(i<1||i>=32)throw new RangeError("bits must be between 1 and 31");var r,c,n=(1<<i)-1>>>0,s=t-e,h=Math.trunc((b-e)/s*n);a<b?b-e==0?r=0:(c=Math.min(Math.max((a-e)/(b-e),0),1),r=Math.trunc(c*h+.5)):t-b==0?r=n:(c=Math.min(Math.max((a-b)/(t-b),0),1),r=Math.trunc(c*(n-h)+.5)+h),this.writeBits(r,i)}writeCompressedVec3(a,e,t,b,i){this.writeCompressedFloat(a.x,e.x,t.x,b.x,i),this.writeCompressedFloat(a.y,e.y,t.y,b.y,i),this.writeCompressedFloat(a.z,e.z,t.z,b.z,i)}writeCompressedVec4(a,e,t,b,i){this.writeCompressedFloat(a.x,e.x,t.x,b.x,i),this.writeCompressedFloat(a.y,e.y,t.y,b.y,i),this.writeCompressedFloat(a.z,e.z,t.z,b.z,i),this.writeCompressedFloat(a.w,e.w,t.w,b.w,i)}writeType(a){a.toStream(this)}}}},594(a,e,t){const b=t(187);class i{static deserialize(a){return new i}serialize(){return{}}toJSON(){return this.serialize()}}class r{static deserialize(a){return new r}static fromJSON(a){return new r}serialize(){return b.create(!1)}toJSON(){return{}}}a.exports={ISingleton:class{static instance=null;static singleton(){return this.instance||(this.instance=new this),this.instance}},IJsonable:i,INbtify:r,IBinarying:class{static deserialize(a){var e=new this;return e.fromStream(a),e}toStream(a){}fromStream(a){}}}},484(a,e,t){const{printF:b}=t(950);var i=!1;a.exports={printf:function(a,...e){i||b(a,e)},silence:function(a){i=!!a}}},54(a,e,t){const{Vec4:b}=t(947);function i(a,e,t){return a<e?e:a>t?t:a}a.exports={R8G8B8A8_SNORM:class extends b{constructor(a=0,e=0,t=0,b=0){super(a,e,t,b)}fromStream(a){var e=a.readUint32(),t=(255&e)<<24>>24,b=(e>>8&255)<<24>>24,i=(e>>16&255)<<24>>24,r=(e>>24&255)<<24>>24;this.x=Math.max(t/127,-1),this.y=Math.max(b/127,-1),this.z=Math.max(i/127,-1),this.w=Math.max(r/127,-1)}toStream(a){var e=Math.round(127*i(this.x,-1,1)),t=Math.round(127*i(this.y,-1,1)),b=Math.round(127*i(this.z,-1,1)),r=Math.round(127*i(this.w,-1,1));e=255&i(e,-128,127),t=255&i(t,-128,127),b=255&i(b,-128,127),r=255&i(r,-128,127),a.writeUint32((r<<24|b<<16|t<<8|e)>>>0)}},R8G8B8A8_UNORM:class extends b{constructor(a=0,e=0,t=0,b=0){super(a,e,t,b)}fromStream(a){var e=a.readUint32();this.x=(255&e)/255,this.y=(e>>8&255)/255,this.z=(e>>16&255)/255,this.w=(e>>24&255)/255}toStream(a){var e=255*i(this.x,0,1)|0,t=255*i(this.y,0,1)|0,b=255*i(this.z,0,1)|0,r=255*i(this.w,0,1)|0;a.writeUint32((r<<24|b<<16|t<<8|e)>>>0)}}}},947(a,e,t){const{IBinarying:b}=t(594);class i extends b{static get ZERO(){return new i}static equal(a,e){return a.x==e.x&&a.y==e.y&&a.z==e.z}static broadcast(a){return new i(a,a,a)}constructor(a=0,e=0,t=0){super(),this.x=a,this.y=e,this.z=t}add(a){return new i(this.x+a.x,this.y+a.y,this.z+a.z)}sub(a){return new i(this.x-a.x,this.y-a.y,this.z-a.z)}mul(a){return new i(this.x*a.x,this.y*a.y,this.z*a.z)}div(a){return new i(this.x/a.x,this.y/a.y,this.z/a.z)}scale(a){return new i(this.x*a,this.y*a,this.z*a)}dot(a){return this.x*a.x+this.y*a.y+this.z*a.z}length(){return Math.hypot(this.x,this.y,this.z)}dist(a){return this.sub(a).length()}fromStream(a){this.x=a.readFloat(),this.y=a.readFloat(),this.z=a.readFloat()}toStream(a){a.writeFloat(this.x),a.writeFloat(this.y),a.writeFloat(this.z)}toString(){return"("+this.x+","+this.y+","+this.z+")"}}class r extends b{static get ZERO(){return new r}static equal(a,e){return a.x==e.x&&a.y==e.y&&a.z==e.z&&a.w==e.w}constructor(a=0,e=0,t=0,b=0){super(),this.x=a,this.y=e,this.z=t,this.w=b}add(a){return new r(this.x+a.x,this.y+a.y,this.z+a.z,this.w+a.w)}sub(a){return new r(this.x-a.x,this.y-a.y,this.z-a.z,this.w-a.w)}mul(a){return new r(this.x*a.x,this.y*a.y,this.z*a.z,this.w*a.w)}div(a){return new r(this.x/a.x,this.y/a.y,this.z/a.z,this.w/a.w)}scale(a){return new r(this.x*a,this.y*a,this.z*a,this.w*a)}dot(a){return this.x*a.x+this.y*a.y+this.z*a.z+this.w*a.w}length(){return Math.hypot(this.x,this.y,this.z,this.w)}dist(a){return this.sub(a).length()}fromStream(a){this.x=a.readFloat(),this.y=a.readFloat(),this.z=a.readFloat(),this.w=a.readFloat()}toStream(a){a.writeFloat(this.x),a.writeFloat(this.y),a.writeFloat(this.z),a.writeFloat(this.w)}toString(){return"("+this.x+","+this.y+","+this.z+")"}}a.exports={Vec3:i,Vec4:r}},896(a){"use strict";a.exports=require("fs")},928(a){"use strict";a.exports=require("path")},932(a){"use strict";a.exports=require("process")},785(a){"use strict";a.exports=require("readline")},17(a,e){var t;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,t=function(){var a={};return function(a){"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.default=void 0;
3
+ /**
4
+ * @license
5
+ * Copyright 2009 The Closure Library Authors
6
+ * Copyright 2020 Daniel Wirtz / The long.js Authors.
7
+ *
8
+ * Licensed under the Apache License, Version 2.0 (the "License");
9
+ * you may not use this file except in compliance with the License.
10
+ * You may obtain a copy of the License at
11
+ *
12
+ * http://www.apache.org/licenses/LICENSE-2.0
13
+ *
14
+ * Unless required by applicable law or agreed to in writing, software
15
+ * distributed under the License is distributed on an "AS IS" BASIS,
16
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ * See the License for the specific language governing permissions and
18
+ * limitations under the License.
19
+ *
20
+ * SPDX-License-Identifier: Apache-2.0
21
+ */
22
+ var e=null;try{e=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch{}function t(a,e,t){this.low=0|a,this.high=0|e,this.unsigned=!!t}function b(a){return!0===(a&&a.__isLong__)}function i(a){var e=Math.clz32(a&-a);return a?31-e:e}t.prototype.__isLong__,Object.defineProperty(t.prototype,"__isLong__",{value:!0}),t.isLong=b;var r={},c={};function n(a,e){var t,b,i;return e?(i=0<=(a>>>=0)&&a<256)&&(b=c[a])?b:(t=h(a,0,!0),i&&(c[a]=t),t):(i=-128<=(a|=0)&&a<128)&&(b=r[a])?b:(t=h(a,a<0?-1:0,!1),i&&(r[a]=t),t)}function s(a,e){if(isNaN(a))return e?v:w;if(e){if(a<0)return v;if(a>=u)return y}else{if(a<=-m)return E;if(a+1>=m)return F}return a<0?s(-a,e).neg():h(a%g|0,a/g|0,e)}function h(a,e,b){return new t(a,e,b)}t.fromInt=n,t.fromNumber=s,t.fromBits=h;var o=Math.pow;function f(a,e,t){if(0===a.length)throw Error("empty string");if("number"==typeof e?(t=e,e=!1):e=!!e,"NaN"===a||"Infinity"===a||"+Infinity"===a||"-Infinity"===a)return e?v:w;if((t=t||10)<2||36<t)throw RangeError("radix");var b;if((b=a.indexOf("-"))>0)throw Error("interior hyphen");if(0===b)return f(a.substring(1),e,t).neg();for(var i=s(o(t,8)),r=w,c=0;c<a.length;c+=8){var n=Math.min(8,a.length-c),h=parseInt(a.substring(c,c+n),t);if(n<8){var d=s(o(t,n));r=r.mul(d).add(s(h))}else r=(r=r.mul(i)).add(s(h))}return r.unsigned=e,r}function d(a,e){return"number"==typeof a?s(a,e):"string"==typeof a?f(a,e):h(a.low,a.high,"boolean"==typeof e?e:a.unsigned)}t.fromString=f,t.fromValue=d;var l=65536,g=l*l,u=g*g,m=u/2,p=n(1<<24),w=n(0);t.ZERO=w;var v=n(0,!0);t.UZERO=v;var k=n(1);t.ONE=k;var j=n(1,!0);t.UONE=j;var x=n(-1);t.NEG_ONE=x;var F=h(-1,2147483647,!1);t.MAX_VALUE=F;var y=h(-1,-1,!0);t.MAX_UNSIGNED_VALUE=y;var E=h(0,-2147483648,!1);t.MIN_VALUE=E;var q=t.prototype;q.toInt=function(){return this.unsigned?this.low>>>0:this.low},q.toNumber=function(){return this.unsigned?(this.high>>>0)*g+(this.low>>>0):this.high*g+(this.low>>>0)},q.toString=function(a){if((a=a||10)<2||36<a)throw RangeError("radix");if(this.isZero())return"0";if(this.isNegative()){if(this.eq(E)){var e=s(a),t=this.div(e),b=t.mul(e).sub(this);return t.toString(a)+b.toInt().toString(a)}return"-"+this.neg().toString(a)}for(var i=s(o(a,6),this.unsigned),r=this,c="";;){var n=r.div(i),h=(r.sub(n.mul(i)).toInt()>>>0).toString(a);if((r=n).isZero())return h+c;for(;h.length<6;)h="0"+h;c=""+h+c}},q.getHighBits=function(){return this.high},q.getHighBitsUnsigned=function(){return this.high>>>0},q.getLowBits=function(){return this.low},q.getLowBitsUnsigned=function(){return this.low>>>0},q.getNumBitsAbs=function(){if(this.isNegative())return this.eq(E)?64:this.neg().getNumBitsAbs();for(var a=0!=this.high?this.high:this.low,e=31;e>0&&!(a&1<<e);e--);return 0!=this.high?e+33:e+1},q.isSafeInteger=function(){var a=this.high>>21;return!a||!this.unsigned&&-1===a&&!(0===this.low&&-2097152===this.high)},q.isZero=function(){return 0===this.high&&0===this.low},q.eqz=q.isZero,q.isNegative=function(){return!this.unsigned&&this.high<0},q.isPositive=function(){return this.unsigned||this.high>=0},q.isOdd=function(){return!(1&~this.low)},q.isEven=function(){return!(1&this.low)},q.equals=function(a){return b(a)||(a=d(a)),(this.unsigned===a.unsigned||this.high>>>31!=1||a.high>>>31!=1)&&this.high===a.high&&this.low===a.low},q.eq=q.equals,q.notEquals=function(a){return!this.eq(a)},q.neq=q.notEquals,q.ne=q.notEquals,q.lessThan=function(a){return this.comp(a)<0},q.lt=q.lessThan,q.lessThanOrEqual=function(a){return this.comp(a)<=0},q.lte=q.lessThanOrEqual,q.le=q.lessThanOrEqual,q.greaterThan=function(a){return this.comp(a)>0},q.gt=q.greaterThan,q.greaterThanOrEqual=function(a){return this.comp(a)>=0},q.gte=q.greaterThanOrEqual,q.ge=q.greaterThanOrEqual,q.compare=function(a){if(b(a)||(a=d(a)),this.eq(a))return 0;var e=this.isNegative(),t=a.isNegative();return e&&!t?-1:!e&&t?1:this.unsigned?a.high>>>0>this.high>>>0||a.high===this.high&&a.low>>>0>this.low>>>0?-1:1:this.sub(a).isNegative()?-1:1},q.comp=q.compare,q.negate=function(){return!this.unsigned&&this.eq(E)?E:this.not().add(k)},q.neg=q.negate,q.add=function(a){b(a)||(a=d(a));var e=this.high>>>16,t=65535&this.high,i=this.low>>>16,r=65535&this.low,c=a.high>>>16,n=65535&a.high,s=a.low>>>16,o=0,f=0,l=0,g=0;return l+=(g+=r+(65535&a.low))>>>16,f+=(l+=i+s)>>>16,o+=(f+=t+n)>>>16,o+=e+c,h((l&=65535)<<16|(g&=65535),(o&=65535)<<16|(f&=65535),this.unsigned)},q.subtract=function(a){return b(a)||(a=d(a)),this.add(a.neg())},q.sub=q.subtract,q.multiply=function(a){if(this.isZero())return this;if(b(a)||(a=d(a)),e)return h(e.mul(this.low,this.high,a.low,a.high),e.get_high(),this.unsigned);if(a.isZero())return this.unsigned?v:w;if(this.eq(E))return a.isOdd()?E:w;if(a.eq(E))return this.isOdd()?E:w;if(this.isNegative())return a.isNegative()?this.neg().mul(a.neg()):this.neg().mul(a).neg();if(a.isNegative())return this.mul(a.neg()).neg();if(this.lt(p)&&a.lt(p))return s(this.toNumber()*a.toNumber(),this.unsigned);var t=this.high>>>16,i=65535&this.high,r=this.low>>>16,c=65535&this.low,n=a.high>>>16,o=65535&a.high,f=a.low>>>16,l=65535&a.low,g=0,u=0,m=0,k=0;return m+=(k+=c*l)>>>16,u+=(m+=r*l)>>>16,m&=65535,u+=(m+=c*f)>>>16,g+=(u+=i*l)>>>16,u&=65535,g+=(u+=r*f)>>>16,u&=65535,g+=(u+=c*o)>>>16,g+=t*l+i*f+r*o+c*n,h((m&=65535)<<16|(k&=65535),(g&=65535)<<16|(u&=65535),this.unsigned)},q.mul=q.multiply,q.divide=function(a){if(b(a)||(a=d(a)),a.isZero())throw Error("division by zero");var t,i,r;if(e)return this.unsigned||-2147483648!==this.high||-1!==a.low||-1!==a.high?h((this.unsigned?e.div_u:e.div_s)(this.low,this.high,a.low,a.high),e.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?v:w;if(this.unsigned){if(a.unsigned||(a=a.toUnsigned()),a.gt(this))return v;if(a.gt(this.shru(1)))return j;r=v}else{if(this.eq(E))return a.eq(k)||a.eq(x)?E:a.eq(E)?k:(t=this.shr(1).div(a).shl(1)).eq(w)?a.isNegative()?k:x:(i=this.sub(a.mul(t)),r=t.add(i.div(a)));if(a.eq(E))return this.unsigned?v:w;if(this.isNegative())return a.isNegative()?this.neg().div(a.neg()):this.neg().div(a).neg();if(a.isNegative())return this.div(a.neg()).neg();r=w}for(i=this;i.gte(a);){t=Math.max(1,Math.floor(i.toNumber()/a.toNumber()));for(var c=Math.ceil(Math.log(t)/Math.LN2),n=c<=48?1:o(2,c-48),f=s(t),l=f.mul(a);l.isNegative()||l.gt(i);)l=(f=s(t-=n,this.unsigned)).mul(a);f.isZero()&&(f=k),r=r.add(f),i=i.sub(l)}return r},q.div=q.divide,q.modulo=function(a){return b(a)||(a=d(a)),e?h((this.unsigned?e.rem_u:e.rem_s)(this.low,this.high,a.low,a.high),e.get_high(),this.unsigned):this.sub(this.div(a).mul(a))},q.mod=q.modulo,q.rem=q.modulo,q.not=function(){return h(~this.low,~this.high,this.unsigned)},q.countLeadingZeros=function(){return this.high?Math.clz32(this.high):Math.clz32(this.low)+32},q.clz=q.countLeadingZeros,q.countTrailingZeros=function(){return this.low?i(this.low):i(this.high)+32},q.ctz=q.countTrailingZeros,q.and=function(a){return b(a)||(a=d(a)),h(this.low&a.low,this.high&a.high,this.unsigned)},q.or=function(a){return b(a)||(a=d(a)),h(this.low|a.low,this.high|a.high,this.unsigned)},q.xor=function(a){return b(a)||(a=d(a)),h(this.low^a.low,this.high^a.high,this.unsigned)},q.shiftLeft=function(a){return b(a)&&(a=a.toInt()),0==(a&=63)?this:a<32?h(this.low<<a,this.high<<a|this.low>>>32-a,this.unsigned):h(0,this.low<<a-32,this.unsigned)},q.shl=q.shiftLeft,q.shiftRight=function(a){return b(a)&&(a=a.toInt()),0==(a&=63)?this:a<32?h(this.low>>>a|this.high<<32-a,this.high>>a,this.unsigned):h(this.high>>a-32,this.high>=0?0:-1,this.unsigned)},q.shr=q.shiftRight,q.shiftRightUnsigned=function(a){return b(a)&&(a=a.toInt()),0==(a&=63)?this:a<32?h(this.low>>>a|this.high<<32-a,this.high>>>a,this.unsigned):h(32===a?this.high:this.high>>>a-32,0,this.unsigned)},q.shru=q.shiftRightUnsigned,q.shr_u=q.shiftRightUnsigned,q.rotateLeft=function(a){var e;return b(a)&&(a=a.toInt()),0==(a&=63)?this:32===a?h(this.high,this.low,this.unsigned):a<32?(e=32-a,h(this.low<<a|this.high>>>e,this.high<<a|this.low>>>e,this.unsigned)):(e=32-(a-=32),h(this.high<<a|this.low>>>e,this.low<<a|this.high>>>e,this.unsigned))},q.rotl=q.rotateLeft,q.rotateRight=function(a){var e;return b(a)&&(a=a.toInt()),0==(a&=63)?this:32===a?h(this.high,this.low,this.unsigned):a<32?(e=32-a,h(this.high<<e|this.low>>>a,this.low<<e|this.high>>>a,this.unsigned)):(e=32-(a-=32),h(this.low<<e|this.high>>>a,this.high<<e|this.low>>>a,this.unsigned))},q.rotr=q.rotateRight,q.toSigned=function(){return this.unsigned?h(this.low,this.high,!1):this},q.toUnsigned=function(){return this.unsigned?this:h(this.low,this.high,!0)},q.toBytes=function(a){return a?this.toBytesLE():this.toBytesBE()},q.toBytesLE=function(){var a=this.high,e=this.low;return[255&e,e>>>8&255,e>>>16&255,e>>>24,255&a,a>>>8&255,a>>>16&255,a>>>24]},q.toBytesBE=function(){var a=this.high,e=this.low;return[a>>>24,a>>>16&255,a>>>8&255,255&a,e>>>24,e>>>16&255,e>>>8&255,255&e]},t.fromBytes=function(a,e,b){return b?t.fromBytesLE(a,e):t.fromBytesBE(a,e)},t.fromBytesLE=function(a,e){return new t(a[0]|a[1]<<8|a[2]<<16|a[3]<<24,a[4]|a[5]<<8|a[6]<<16|a[7]<<24,e)},t.fromBytesBE=function(a,e){return new t(a[4]<<24|a[5]<<16|a[6]<<8|a[7],a[0]<<24|a[1]<<16|a[2]<<8|a[3],e)},"function"==typeof BigInt&&(t.fromBigInt=function(a,e){return h(Number(BigInt.asIntN(32,a)),Number(BigInt.asIntN(32,a>>BigInt(32))),e)},t.fromValue=function(a,e){return"bigint"==typeof a?t.fromBigInt(a,e):d(a,e)},q.toBigInt=function(){var a=BigInt(this.low>>>0);return BigInt(this.unsigned?this.high>>>0:this.high)<<BigInt(32)|a}),a.default=t}(a),function(a){return a.default||a}(a)}.apply(e,[]),void 0===t||(a.exports=t)}};const e={};function t(b){const i=e[b];if(void 0!==i)return i.exports;const r=e[b]={exports:{}};return a[b].call(r.exports,r,r.exports,t),r.exports}const b=t(932),i=t(896),r=t(928),c=t(195),n=t(68),s=t(940),{WavefrontObj:h}=t(315),{LevelMeshes:o}=t(904),{LevelCvtAdjacency:f}=t(203),{LevelObjectsJson:d}=t(644),{silence:l,printf:g}=t(484),u=[0,32,2],m=[1,0,0],p=c({"--help":Boolean,"--touch":Boolean,"--convert":Boolean,"--serialize":Boolean,"--deserialize":Boolean,"-m":Boolean,"-i":String,"-o":String,"-s":Boolean,"-h":"--help","-T":"--touch","-C":"--convert","-S":"--serialize","-D":"--deserialize"},{permissive:!0});(async function(){if(await n.ready,await s.ready,l(p["-s"]),p["--convert"]){var a=p["-i"],e=p["-o"]||"./BstBaked.meshes";if(!a)throw new Error("no input file");var t=function(a){if(".obj"===r.extname(a)){var e=i.readFileSync(a,"utf-8"),t=new h;return t.fromFileBuffer(e),t}throw new Error("unrecognized file extname")}(a),b=new f(t),c=new o;return b.initialize(t),c.geo=b.convert(),k=c.desc,j=a,k.fileName=j,k.timeStamp=Math.floor((new Date).getTime()/1e3),k.editor="that-sky-level",k.editorVersion=m,k.engineVersion=u,i.writeFileSync(e,c.toFileBuffer()),g("Converted:"),g(" Chunks: "+c.geo.chunkCount),g(" Subchunks: "+c.geo.subchunkCount),g(" Vertices: "+c.geo.vertexCount),void g(" Faces: "+c.geo.indexCount/3)}if(p["--touch"]){a=p["-i"],e=p["-o"];if(!a)throw new Error("no input file");c=function(a){if(".meshes"===r.extname(a)){var e=i.readFileSync(a),t=new o;return t.fromFileBuffer(e),t}throw new Error("unrecognized file extname")}(a);if(g("File information:"),g(" Version: 0x"+c.fileVersion.toString(16)),c.desc?(g(" Editor: "+c.desc.editor),g(" Editor version: "+c.desc.editorVersion),g(" Timestamp: "+c.desc.timeStamp),g(" Original file: "+c.desc.fileName)):(g(" Editor: -"),g(" Editor version: -"),g(" Timestamp: -"),g(" Original file: -")),!e)return;var w=function(a,e){var t=a.geo,b="",i=0;for(var r of t.vertices)b+=`v ${r.pos.x} ${r.pos.y} ${r.pos.z}\n`;for(var r of(b+="\n",t.vertices))b+=`vn ${r.normal.x} ${r.normal.y} ${r.normal.z}\n`;b+="\n",e&&(b+="o Chunks\n");for(var c=0;c<t.chunkCount;c++){e||(b+="o Chunk_"+c+"\n");for(var n=t.chunks[c],s=0;s<n.idxCount;s+=3){var h;b+="f ",b+=`${h=n.vtxStart+t.localIndices[n.idxStart+s]+1}//${h} `,b+=`${h=n.vtxStart+t.localIndices[n.idxStart+s+1]+1}//${h} `,b+=`${h=n.vtxStart+t.localIndices[n.idxStart+s+2]+1}//${h}\n`,i+=3}}return{result:b,totalVtx:t.vertices.length,totalIdx:i}}(c,p["-m"]);i.writeFileSync(e,w.result),g("\nConverted:"),g(" Vertices: "+w.totalVtx),g(" Indices: "+w.totalIdx)}else if(p["--serialize"]){a=p["-i"],e=p["-o"]||"./Objects.level.bin";if(!a)throw new Error("no input file");var v=i.readFileSync(a,"utf-8");i.writeFileSync(e,d.write(JSON.parse(v)))}else{if(!p["--deserialize"])return g("that-sky-level"),g("Copyright (c) 2026 That Sky Project"),g("<https://www.github.com/that-sky-project/that-sky-level>"),g(" - A Sky CotL level reader and writer."),g(""),g("Usage:"),g(" node main.js <-T|-C|-S|-D> -i <input> -o <output> [-m] [-s]"),g(" node main.js --help"),g(""),g("Options:"),g(" --touch, -T Convert from .meshes to .obj"),g(" --convert, -C Convert from .obj to .meshes"),g(" --serialize, -S Convert from .level.json to .level.bin"),g(" --deserialize, -D Convert from .level.bin to .level.json"),g(" --help, -h Show this help"),g(" -i <file> Input file"),g(" -o <file> Output file"),g(" -s Disable logger"),void g(" -m Merge chunks when exporting to .obj");a=p["-i"],e=p["-o"]||"./Objects.level.json";if(!a)throw new Error("no input file");v=i.readFileSync(a);i.writeFileSync(e,JSON.stringify(d.read(v),null,2))}var k,j})().catch(a=>{g("tslevel: §c§lerror: §r%0",a.message||""+a),b.exit(1)})})();
@@ -0,0 +1,37 @@
1
+ ```
2
+ kMaterial_None: 0,
3
+ kMaterial_Transparent: 2,
4
+ kMaterial_Void: 3,
5
+ kMaterial_Particle: 4,
6
+ kMaterial_WoodSlippery: 5,
7
+ kMaterial_VoidMinor: 6,
8
+ kMaterial_WoodPlank: 7,
9
+ kMaterial_Cliff: 16,
10
+ kMaterial_Soil: 17,
11
+ kMaterial_CliffLight: 18,
12
+ kMaterial_WallDamaged: 19,
13
+ kMaterial_Wall: 20,
14
+ kMaterial_Gold: 21,
15
+ kMaterial_Glacier: 22,
16
+ kMaterial_TileCeiling: 23,
17
+ kMaterial_TileFloor: 24,
18
+ kMaterial_TileWall: 25,
19
+ kMaterial_WallBrick: 26,
20
+ kMaterial_SoilWet: 27,
21
+ kMaterial_CliffWet: 28,
22
+ kMaterial_Bone: 29,
23
+ kMaterial_Wood: 30,
24
+ kMaterial_Ceramics: 31,
25
+ kMaterial_Sand: 32,
26
+ kMaterial_SandWet: 33,
27
+ kMaterial_SandLight: 34,
28
+ kMaterial_Snow: 35,
29
+ kMaterial_SandDeep: 36,
30
+ kMaterial_Mud: 37,
31
+ kMaterial_Grass: 48,
32
+ kMaterial_GrassWet: 49,
33
+ kMaterial_GrassLight: 50,
34
+ kMaterial_GrassMoss: 51,
35
+ kMaterial_Cloth: 52,
36
+ kMaterial_Cloud: 80,
37
+ ```
@@ -0,0 +1,258 @@
1
+ {
2
+ "classes": {
3
+ "Clump": {
4
+ "data": "arr>ref"
5
+ },
6
+ "Marker": {
7
+ "enabled": "raw>b01",
8
+ "scale": "raw>b16",
9
+ "quat": "raw>b16",
10
+ "pos": "raw>b16"
11
+ },
12
+ "AvatarSetPos": {
13
+ "autoStart": "raw>b01",
14
+ "randomGroundInMarker": "raw>b01",
15
+ "setLevelStartPosition": "raw>b01",
16
+ "onGround": "raw>b01",
17
+ "relMarker": "raw>ref",
18
+ "marker": "raw>ref",
19
+ "breakHandHold": "raw>b01",
20
+ "bstGuid": "raw>b04",
21
+ "killMomentum": "raw>b01"
22
+ },
23
+ "OnLevelStart": {
24
+ "autoStart": "raw>b01",
25
+ "onlyOnWorldLoad": "raw>b01",
26
+ "events": "raw>ref",
27
+ "skipOnWorldLoad": "raw>b01"
28
+ },
29
+ "MeditationArea": {
30
+ "transform": "raw>b64",
31
+ "spawnSeatDelay": "raw>b04",
32
+ "camCustomFadeIn": "raw>b04",
33
+ "enabled": "raw>b01",
34
+ "confirmHintText": "raw>str",
35
+ "dialogType": "raw>b01",
36
+ "spawnSeatTail": "raw>b01",
37
+ "needSit": "raw>b01",
38
+ "spawnSeatCameraDist": "raw>b04",
39
+ "goals": "raw>ref",
40
+ "meditationSound": "raw>str",
41
+ "holyAreas": "raw>ref",
42
+ "disableMergeWithAnyProgress": "raw>b01",
43
+ "onlyFireWhenLocalPresent": "raw>b01",
44
+ "fullBonus": "raw>b04",
45
+ "camCustomFadeOut": "raw>b04",
46
+ "localOnly": "raw>b01",
47
+ "confirmHintIcon": "raw>str",
48
+ "minimumLocalPresentTime": "raw>b04",
49
+ "altar": "raw>ref",
50
+ "minRequired": "raw>b04",
51
+ "type": "raw>b01",
52
+ "onSitPressed": "raw>ref",
53
+ "time": "raw>b04",
54
+ "spawnSeatFX": "raw>b01",
55
+ "progressObjs": "raw>ref",
56
+ "spawnSeatFXBrightnessMult": "raw>b04",
57
+ "sitIconOverride": "raw>str",
58
+ "keyFrame": "raw>ref",
59
+ "spawnSeatSFX": "raw>b01",
60
+ "onMenuConfirm": "raw>ref",
61
+ "onMenuCancel": "raw>ref",
62
+ "onComplete": "raw>ref",
63
+ "progressOut": "raw>ref"
64
+ },
65
+ "OnBubbleButton": {
66
+ "autoStart": "raw>b01",
67
+ "activeDistance": "raw>b04",
68
+ "buttonTarget": "raw>ref",
69
+ "useAvatar": "raw>b01",
70
+ "showInSharedSpaceEditMode": "raw>b01",
71
+ "fireOnce": "raw>b01",
72
+ "ignoreAllowUI": "raw>b01",
73
+ "displayDuration": "raw>b04",
74
+ "networkedOnHandhold": "raw>b01",
75
+ "iconName": "raw>str",
76
+ "priority": "raw>b04",
77
+ "events": "raw>ref",
78
+ "cooldownAfterPressed": "raw>b04"
79
+ },
80
+ "Enable": {
81
+ "autoStart": "raw>b01",
82
+ "objects": "raw>ref",
83
+ "killEvents": "raw>b01",
84
+ "enable": "raw>b01",
85
+ "bstGuid": "raw>b04",
86
+ "selectObjectRandomly": "raw>b01"
87
+ }
88
+ },
89
+ "objects": {
90
+ "OnLevelStart>OnLevelStart_Trigger": {
91
+ "autoStart": true,
92
+ "onlyOnWorldLoad": 0,
93
+ "events": "Clump>OnLevelStart_Listeners",
94
+ "skipOnWorldLoad": 0
95
+ },
96
+ "AvatarSetPos>EntryPoint": {
97
+ "autoStart": false,
98
+ "randomGroundInMarker": 0,
99
+ "setLevelStartPosition": 1,
100
+ "onGround": 1,
101
+ "relMarker": null,
102
+ "marker": "Marker>BstNode_3",
103
+ "breakHandHold": 0,
104
+ "bstGuid": 1,
105
+ "killMomentum": 0
106
+ },
107
+ "Marker>BstNode_3": {
108
+ "enabled": true,
109
+ "scale": {
110
+ "x": 1,
111
+ "y": 1,
112
+ "z": 1,
113
+ "w": 0
114
+ },
115
+ "quat": {
116
+ "x": 0,
117
+ "y": 0,
118
+ "z": 0,
119
+ "w": 1
120
+ },
121
+ "pos": {
122
+ "x": 0,
123
+ "y": 0.5,
124
+ "z": 0,
125
+ "w": 0
126
+ }
127
+ },
128
+ "Marker>Marker_2": {
129
+ "enabled": true,
130
+ "scale": {
131
+ "x": 1,
132
+ "y": 1,
133
+ "z": 1,
134
+ "w": 0
135
+ },
136
+ "quat": {
137
+ "x": 0,
138
+ "y": 0,
139
+ "z": 0,
140
+ "w": 1
141
+ },
142
+ "pos": {
143
+ "x": 0,
144
+ "y": 0.5,
145
+ "z": 0,
146
+ "w": 0
147
+ }
148
+ },
149
+ "Clump>OnLevelStart_Listeners": {
150
+ "data": [
151
+ "AvatarSetPos>EntryPoint"
152
+ ]
153
+ },
154
+ "Clump>MeditationEnd_1": {
155
+ "data": [
156
+ "AvatarSetPos>EntryPoint",
157
+ "Enable>EnableMeditation",
158
+ "OnBubbleButton>BstNode_1898217744"
159
+ ]
160
+ },
161
+ "Clump>MeditationAreaClump": {
162
+ "data": [
163
+ "MeditationArea>BstNode_100"
164
+ ]
165
+ },
166
+ "Enable>EnableMeditation": {
167
+ "autoStart": false,
168
+ "objects": "Clump>MeditationAreaClump",
169
+ "killEvents": 0,
170
+ "enable": 1,
171
+ "bstGuid": 1232312,
172
+ "selectObjectRandomly": 0
173
+ },
174
+ "MeditationArea>BstNode_100": {
175
+ "transform": {
176
+ "matrix": [
177
+ [
178
+ 1,
179
+ 0,
180
+ 0,
181
+ 0
182
+ ],
183
+ [
184
+ 0,
185
+ 1,
186
+ 0,
187
+ 0
188
+ ],
189
+ [
190
+ 0,
191
+ 0,
192
+ 1,
193
+ 0
194
+ ],
195
+ [
196
+ 2,
197
+ 0.05,
198
+ 2,
199
+ 1
200
+ ]
201
+ ],
202
+ "pos": {
203
+ "x": 2,
204
+ "y": 0.05,
205
+ "z": 2
206
+ }
207
+ },
208
+ "spawnSeatDelay": 0,
209
+ "camCustomFadeIn": -1,
210
+ "enabled": true,
211
+ "confirmHintText": "hint.meditation.test.1",
212
+ "dialogType": 0,
213
+ "spawnSeatTail": 1,
214
+ "needSit": 1,
215
+ "spawnSeatCameraDist": 0,
216
+ "goals": null,
217
+ "meditationSound": "Pray_Loop",
218
+ "holyAreas": null,
219
+ "disableMergeWithAnyProgress": 1,
220
+ "onlyFireWhenLocalPresent": 0,
221
+ "fullBonus": 2,
222
+ "camCustomFadeOut": -1,
223
+ "localOnly": 1,
224
+ "confirmHintIcon": "",
225
+ "minimumLocalPresentTime": 0,
226
+ "altar": null,
227
+ "minRequired": 0,
228
+ "type": 0,
229
+ "onSitPressed": null,
230
+ "time": 2,
231
+ "spawnSeatFX": 1,
232
+ "progressObjs": null,
233
+ "spawnSeatFXBrightnessMult": 1,
234
+ "sitIconOverride": "UiMenuPresent",
235
+ "keyFrame": null,
236
+ "spawnSeatSFX": 0,
237
+ "onMenuConfirm": null,
238
+ "onMenuCancel": null,
239
+ "onComplete": "Clump>MeditationEnd_1",
240
+ "progressOut": null
241
+ },
242
+ "OnBubbleButton>BstNode_1898217744": {
243
+ "autoStart": false,
244
+ "activeDistance": 3,
245
+ "buttonTarget": null,
246
+ "useAvatar": 1,
247
+ "showInSharedSpaceEditMode": 0,
248
+ "fireOnce": 0,
249
+ "ignoreAllowUI": 0,
250
+ "displayDuration": 0,
251
+ "networkedOnHandhold": 0,
252
+ "iconName": "UiMiscStarCluster",
253
+ "priority": 1,
254
+ "events": "Clump>OnLevelStart_Listeners",
255
+ "cooldownAfterPressed": 0
256
+ }
257
+ }
258
+ }
@@ -0,0 +1,46 @@
1
+ # Blender 4.3.2
2
+ # www.blender.org
3
+ mtllib 测试1.mtl
4
+ o Cube.001
5
+ v 10.000000 -0.000002 -10.000000
6
+ v 10.000000 -1.000002 -10.000000
7
+ v 10.000000 0.000002 10.000000
8
+ v 10.000000 -0.999998 10.000000
9
+ v -10.000000 -0.000002 -10.000000
10
+ v -10.000000 -1.000002 -10.000000
11
+ v -10.000000 0.000002 10.000000
12
+ v -10.000000 -0.999998 10.000000
13
+ vn -0.0000 1.0000 -0.0000
14
+ vn -0.0000 -0.0000 1.0000
15
+ vn -1.0000 -0.0000 -0.0000
16
+ vn -0.0000 -1.0000 -0.0000
17
+ vn 1.0000 -0.0000 -0.0000
18
+ vn -0.0000 -0.0000 -1.0000
19
+ vt 0.875000 0.500000
20
+ vt 0.625000 0.750000
21
+ vt 0.625000 0.500000
22
+ vt 0.375000 1.000000
23
+ vt 0.375000 0.750000
24
+ vt 0.375000 0.000000
25
+ vt 0.625000 0.250000
26
+ vt 0.375000 0.250000
27
+ vt 0.375000 0.500000
28
+ vt 0.125000 0.750000
29
+ vt 0.125000 0.500000
30
+ vt 0.875000 0.750000
31
+ vt 0.625000 1.000000
32
+ vt 0.625000 0.000000
33
+ s 1
34
+ usemtl kMaterial_Grass
35
+ f 5/1/1 3/2/1 1/3/1
36
+ f 3/2/2 8/4/2 4/5/2
37
+ f 8/6/3 5/7/3 6/8/3
38
+ f 2/9/4 8/10/4 6/11/4
39
+ f 1/3/5 4/5/5 2/9/5
40
+ f 5/7/6 2/9/6 6/8/6
41
+ f 5/1/1 7/12/1 3/2/1
42
+ f 3/2/2 7/13/2 8/4/2
43
+ f 8/6/3 7/14/3 5/7/3
44
+ f 2/9/4 4/5/4 8/10/4
45
+ f 1/3/5 3/2/5 4/5/5
46
+ f 5/7/6 1/3/6 2/9/6
@@ -0,0 +1,11 @@
1
+ MAKEFLAGS += -s
2
+
3
+ LEVEL_BULID = node ../../main.js
4
+
5
+ all: HTNH_Test.BstBaked.meshes HTNH_Test.Objects.level.bin
6
+
7
+ HTNH_Test.BstBaked.meshes: HTNH_Test.obj
8
+ $(LEVEL_BULID) --convert -i $< -o $@
9
+
10
+ HTNH_Test.Objects.level.bin: HTNH_Test.Objects.level.json
11
+ $(LEVEL_BULID) --serialize -i $< -o $@