@grida/canvas-wasm 0.0.52 → 0.0.53

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/index.mjs CHANGED
@@ -30,9 +30,9 @@ var require_grida_canvas_wasm = __commonJS({
30
30
  var createGridaCanvas2 = (() => {
31
31
  var _a;
32
32
  var _scriptName = typeof document != "undefined" ? (_a = document.currentScript) == null ? void 0 : _a.src : void 0;
33
- return function(moduleArg = {}) {
33
+ return async function(moduleArg = {}) {
34
34
  var moduleRtn;
35
- var Module = Object.assign({}, moduleArg);
35
+ var Module = moduleArg;
36
36
  var readyPromiseResolve, readyPromiseReject;
37
37
  var readyPromise = new Promise((resolve, reject) => {
38
38
  readyPromiseResolve = resolve;
@@ -40,7 +40,6 @@ var require_grida_canvas_wasm = __commonJS({
40
40
  });
41
41
  var ENVIRONMENT_IS_WEB = true;
42
42
  var ENVIRONMENT_IS_WORKER = false;
43
- var moduleOverrides = Object.assign({}, Module);
44
43
  var arguments_ = [];
45
44
  var thisProgram = "./this.program";
46
45
  var quit_ = (status, toThrow) => {
@@ -53,7 +52,7 @@ var require_grida_canvas_wasm = __commonJS({
53
52
  }
54
53
  return scriptDirectory + path;
55
54
  }
56
- var read_, readAsync, readBinary;
55
+ var readAsync, readBinary;
57
56
  if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
58
57
  if (ENVIRONMENT_IS_WORKER) {
59
58
  scriptDirectory = self.location.href;
@@ -66,70 +65,40 @@ var require_grida_canvas_wasm = __commonJS({
66
65
  if (scriptDirectory.startsWith("blob:")) {
67
66
  scriptDirectory = "";
68
67
  } else {
69
- scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1);
68
+ scriptDirectory = scriptDirectory.slice(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1);
70
69
  }
71
70
  {
72
- read_ = (url) => {
73
- var xhr = new XMLHttpRequest();
74
- xhr.open("GET", url, false);
75
- xhr.send(null);
76
- return xhr.responseText;
77
- };
78
- if (ENVIRONMENT_IS_WORKER) {
79
- readBinary = (url) => {
80
- var xhr = new XMLHttpRequest();
81
- xhr.open("GET", url, false);
82
- xhr.responseType = "arraybuffer";
83
- xhr.send(null);
84
- return new Uint8Array(xhr.response);
85
- };
86
- }
87
- readAsync = (url, onload, onerror) => {
88
- var xhr = new XMLHttpRequest();
89
- xhr.open("GET", url, true);
90
- xhr.responseType = "arraybuffer";
91
- xhr.onload = () => {
92
- if (xhr.status == 200 || xhr.status == 0 && xhr.response) {
93
- onload(xhr.response);
94
- return;
95
- }
96
- onerror();
97
- };
98
- xhr.onerror = onerror;
99
- xhr.send(null);
71
+ readAsync = async (url) => {
72
+ var response = await fetch(url, { credentials: "same-origin" });
73
+ if (response.ok) {
74
+ return response.arrayBuffer();
75
+ }
76
+ throw new Error(response.status + " : " + response.url);
100
77
  };
101
78
  }
102
79
  } else {
103
80
  }
104
- var out = Module["print"] || console.log.bind(console);
105
- var err = Module["printErr"] || console.error.bind(console);
106
- Object.assign(Module, moduleOverrides);
107
- moduleOverrides = null;
108
- if (Module["arguments"]) arguments_ = Module["arguments"];
109
- if (Module["thisProgram"]) thisProgram = Module["thisProgram"];
110
- if (Module["quit"]) quit_ = Module["quit"];
81
+ var out = console.log.bind(console);
82
+ var err = console.error.bind(console);
111
83
  var wasmBinary;
112
- if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"];
113
84
  var wasmMemory;
114
85
  var ABORT = false;
115
86
  var EXITSTATUS;
116
- var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
87
+ var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAP64, HEAPU64, HEAPF64;
88
+ var runtimeInitialized = false;
117
89
  function updateMemoryViews() {
118
90
  var b = wasmMemory.buffer;
119
- Module["HEAP8"] = HEAP8 = new Int8Array(b);
120
- Module["HEAP16"] = HEAP16 = new Int16Array(b);
91
+ HEAP8 = new Int8Array(b);
92
+ HEAP16 = new Int16Array(b);
121
93
  Module["HEAPU8"] = HEAPU8 = new Uint8Array(b);
122
94
  Module["HEAPU16"] = HEAPU16 = new Uint16Array(b);
123
95
  Module["HEAP32"] = HEAP32 = new Int32Array(b);
124
96
  Module["HEAPU32"] = HEAPU32 = new Uint32Array(b);
125
97
  Module["HEAPF32"] = HEAPF32 = new Float32Array(b);
126
- Module["HEAPF64"] = HEAPF64 = new Float64Array(b);
98
+ HEAPF64 = new Float64Array(b);
99
+ HEAP64 = new BigInt64Array(b);
100
+ HEAPU64 = new BigUint64Array(b);
127
101
  }
128
- var __ATPRERUN__ = [];
129
- var __ATINIT__ = [];
130
- var __ATMAIN__ = [];
131
- var __ATPOSTRUN__ = [];
132
- var runtimeInitialized = false;
133
102
  function preRun() {
134
103
  if (Module["preRun"]) {
135
104
  if (typeof Module["preRun"] == "function") Module["preRun"] = [Module["preRun"]];
@@ -137,17 +106,16 @@ var require_grida_canvas_wasm = __commonJS({
137
106
  addOnPreRun(Module["preRun"].shift());
138
107
  }
139
108
  }
140
- callRuntimeCallbacks(__ATPRERUN__);
109
+ callRuntimeCallbacks(onPreRuns);
141
110
  }
142
111
  function initRuntime() {
143
112
  runtimeInitialized = true;
144
- if (!Module["noFSInit"] && !FS.init.initialized) FS.init();
145
- FS.ignorePermissions = false;
113
+ if (!Module["noFSInit"] && !FS.initialized) FS.init();
146
114
  TTY.init();
147
- callRuntimeCallbacks(__ATINIT__);
115
+ wasmExports["hg"]();
116
+ FS.ignorePermissions = false;
148
117
  }
149
118
  function preMain() {
150
- callRuntimeCallbacks(__ATMAIN__);
151
119
  }
152
120
  function postRun() {
153
121
  if (Module["postRun"]) {
@@ -156,19 +124,9 @@ var require_grida_canvas_wasm = __commonJS({
156
124
  addOnPostRun(Module["postRun"].shift());
157
125
  }
158
126
  }
159
- callRuntimeCallbacks(__ATPOSTRUN__);
160
- }
161
- function addOnPreRun(cb) {
162
- __ATPRERUN__.unshift(cb);
163
- }
164
- function addOnInit(cb) {
165
- __ATINIT__.unshift(cb);
166
- }
167
- function addOnPostRun(cb) {
168
- __ATPOSTRUN__.unshift(cb);
127
+ callRuntimeCallbacks(onPostRuns);
169
128
  }
170
129
  var runDependencies = 0;
171
- var runDependencyWatcher = null;
172
130
  var dependenciesFulfilled = null;
173
131
  function getUniqueRunDependency(id) {
174
132
  return id;
@@ -183,10 +141,6 @@ var require_grida_canvas_wasm = __commonJS({
183
141
  runDependencies--;
184
142
  (_a2 = Module["monitorRunDependencies"]) == null ? void 0 : _a2.call(Module, runDependencies);
185
143
  if (runDependencies == 0) {
186
- if (runDependencyWatcher !== null) {
187
- clearInterval(runDependencyWatcher);
188
- runDependencyWatcher = null;
189
- }
190
144
  if (dependenciesFulfilled) {
191
145
  var callback = dependenciesFulfilled;
192
146
  dependenciesFulfilled = null;
@@ -200,22 +154,15 @@ var require_grida_canvas_wasm = __commonJS({
200
154
  what = "Aborted(" + what + ")";
201
155
  err(what);
202
156
  ABORT = true;
203
- EXITSTATUS = 1;
204
157
  what += ". Build with -sASSERTIONS for more info.";
205
158
  var e = new WebAssembly.RuntimeError(what);
206
159
  readyPromiseReject(e);
207
160
  throw e;
208
161
  }
209
- var dataURIPrefix = "data:application/octet-stream;base64,";
210
- var isDataURI = (filename) => filename.startsWith(dataURIPrefix);
162
+ var wasmBinaryFile;
211
163
  function findWasmBinary() {
212
- var f = "grida_canvas_wasm.wasm";
213
- if (!isDataURI(f)) {
214
- return locateFile(f);
215
- }
216
- return f;
164
+ return locateFile("grida_canvas_wasm.wasm");
217
165
  }
218
- var wasmBinaryFile;
219
166
  function getBinarySync(file) {
220
167
  if (file == wasmBinaryFile && wasmBinary) {
221
168
  return new Uint8Array(wasmBinary);
@@ -225,81 +172,90 @@ var require_grida_canvas_wasm = __commonJS({
225
172
  }
226
173
  throw "both async and sync fetching of the wasm failed";
227
174
  }
228
- function getBinaryPromise(binaryFile) {
229
- if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {
230
- if (typeof fetch == "function") {
231
- return fetch(binaryFile, { credentials: "same-origin" }).then((response) => {
232
- if (!response["ok"]) {
233
- throw `failed to load wasm binary file at '${binaryFile}'`;
234
- }
235
- return response["arrayBuffer"]();
236
- }).catch(() => getBinarySync(binaryFile));
175
+ async function getWasmBinary(binaryFile) {
176
+ if (!wasmBinary) {
177
+ try {
178
+ var response = await readAsync(binaryFile);
179
+ return new Uint8Array(response);
180
+ } catch {
237
181
  }
238
182
  }
239
- return Promise.resolve().then(() => getBinarySync(binaryFile));
183
+ return getBinarySync(binaryFile);
240
184
  }
241
- function instantiateArrayBuffer(binaryFile, imports, receiver) {
242
- return getBinaryPromise(binaryFile).then((binary) => WebAssembly.instantiate(binary, imports)).then(receiver, (reason) => {
185
+ async function instantiateArrayBuffer(binaryFile, imports) {
186
+ try {
187
+ var binary = await getWasmBinary(binaryFile);
188
+ var instance = await WebAssembly.instantiate(binary, imports);
189
+ return instance;
190
+ } catch (reason) {
243
191
  err(`failed to asynchronously prepare wasm: ${reason}`);
244
192
  abort(reason);
245
- });
193
+ }
246
194
  }
247
- function instantiateAsync(binary, binaryFile, imports, callback) {
248
- if (!binary && typeof WebAssembly.instantiateStreaming == "function" && !isDataURI(binaryFile) && typeof fetch == "function") {
249
- return fetch(binaryFile, { credentials: "same-origin" }).then((response) => {
250
- var result = WebAssembly.instantiateStreaming(response, imports);
251
- return result.then(callback, function(reason) {
252
- err(`wasm streaming compile failed: ${reason}`);
253
- err("falling back to ArrayBuffer instantiation");
254
- return instantiateArrayBuffer(binaryFile, imports, callback);
255
- });
256
- });
195
+ async function instantiateAsync(binary, binaryFile, imports) {
196
+ if (!binary && typeof WebAssembly.instantiateStreaming == "function") {
197
+ try {
198
+ var response = fetch(binaryFile, { credentials: "same-origin" });
199
+ var instantiationResult = await WebAssembly.instantiateStreaming(response, imports);
200
+ return instantiationResult;
201
+ } catch (reason) {
202
+ err(`wasm streaming compile failed: ${reason}`);
203
+ err("falling back to ArrayBuffer instantiation");
204
+ }
257
205
  }
258
- return instantiateArrayBuffer(binaryFile, imports, callback);
206
+ return instantiateArrayBuffer(binaryFile, imports);
259
207
  }
260
208
  function getWasmImports() {
261
- return { "a": wasmImports };
209
+ return { a: wasmImports };
262
210
  }
263
- function createWasm() {
264
- var info = getWasmImports();
211
+ async function createWasm() {
265
212
  function receiveInstance(instance, module2) {
266
213
  wasmExports = instance.exports;
267
- wasmMemory = wasmExports["ag"];
214
+ wasmMemory = wasmExports["gg"];
268
215
  updateMemoryViews();
269
- wasmTable = wasmExports["cg"];
270
- addOnInit(wasmExports["bg"]);
216
+ wasmTable = wasmExports["ig"];
271
217
  removeRunDependency("wasm-instantiate");
272
218
  return wasmExports;
273
219
  }
274
220
  addRunDependency("wasm-instantiate");
275
- function receiveInstantiationResult(result) {
276
- receiveInstance(result["instance"]);
221
+ function receiveInstantiationResult(result2) {
222
+ return receiveInstance(result2["instance"]);
277
223
  }
224
+ var info = getWasmImports();
278
225
  if (Module["instantiateWasm"]) {
279
- try {
280
- return Module["instantiateWasm"](info, receiveInstance);
281
- } catch (e) {
282
- err(`Module.instantiateWasm callback failed with error: ${e}`);
283
- readyPromiseReject(e);
284
- }
226
+ return new Promise((resolve, reject) => {
227
+ Module["instantiateWasm"](info, (mod, inst) => {
228
+ resolve(receiveInstance(mod, inst));
229
+ });
230
+ });
231
+ }
232
+ wasmBinaryFile ??= findWasmBinary();
233
+ try {
234
+ var result = await instantiateAsync(wasmBinary, wasmBinaryFile, info);
235
+ var exports2 = receiveInstantiationResult(result);
236
+ return exports2;
237
+ } catch (e) {
238
+ readyPromiseReject(e);
239
+ return Promise.reject(e);
285
240
  }
286
- if (!wasmBinaryFile) wasmBinaryFile = findWasmBinary();
287
- instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);
288
- return {};
289
241
  }
290
- var tempDouble;
291
- var tempI64;
292
- function ExitStatus(status) {
293
- this.name = "ExitStatus";
294
- this.message = `Program terminated with exit(${status})`;
295
- this.status = status;
242
+ class ExitStatus {
243
+ name = "ExitStatus";
244
+ constructor(status) {
245
+ this.message = `Program terminated with exit(${status})`;
246
+ this.status = status;
247
+ }
296
248
  }
297
249
  var callRuntimeCallbacks = (callbacks) => {
298
250
  while (callbacks.length > 0) {
299
251
  callbacks.shift()(Module);
300
252
  }
301
253
  };
302
- var noExitRuntime = Module["noExitRuntime"] || true;
254
+ var onPostRuns = [];
255
+ var addOnPostRun = (cb) => onPostRuns.push(cb);
256
+ var onPreRuns = [];
257
+ var addOnPreRun = (cb) => onPreRuns.push(cb);
258
+ var noExitRuntime = true;
303
259
  var stackRestore = (val) => __emscripten_stack_restore(val);
304
260
  var stackSave = () => _emscripten_stack_get_current();
305
261
  var exceptionCaught = [];
@@ -312,8 +268,8 @@ var require_grida_canvas_wasm = __commonJS({
312
268
  }
313
269
  info.set_rethrown(false);
314
270
  exceptionCaught.push(info);
315
- ___cxa_increment_exception_refcount(info.excPtr);
316
- return info.get_exception_ptr();
271
+ ___cxa_increment_exception_refcount(ptr);
272
+ return ___cxa_get_exception_ptr(ptr);
317
273
  };
318
274
  var exceptionLast = 0;
319
275
  var ___cxa_end_catch = () => {
@@ -364,22 +320,7 @@ var require_grida_canvas_wasm = __commonJS({
364
320
  get_adjusted_ptr() {
365
321
  return HEAPU32[this.ptr + 16 >> 2];
366
322
  }
367
- get_exception_ptr() {
368
- var isPointer = ___cxa_is_pointer_type(this.get_type());
369
- if (isPointer) {
370
- return HEAPU32[this.excPtr >> 2];
371
- }
372
- var adjusted = this.get_adjusted_ptr();
373
- if (adjusted !== 0) return adjusted;
374
- return this.excPtr;
375
- }
376
323
  }
377
- var ___resumeException = (ptr) => {
378
- if (!exceptionLast) {
379
- exceptionLast = ptr;
380
- }
381
- throw exceptionLast;
382
- };
383
324
  var setTempRet0 = (val) => __emscripten_tempret_set(val);
384
325
  var findMatchingCatch = (args) => {
385
326
  var thrown = exceptionLast;
@@ -394,8 +335,7 @@ var require_grida_canvas_wasm = __commonJS({
394
335
  setTempRet0(0);
395
336
  return thrown;
396
337
  }
397
- for (var arg in args) {
398
- var caughtType = args[arg];
338
+ for (var caughtType of args) {
399
339
  if (caughtType === 0 || caughtType === thrownType) {
400
340
  break;
401
341
  }
@@ -434,11 +374,17 @@ var require_grida_canvas_wasm = __commonJS({
434
374
  throw exceptionLast;
435
375
  };
436
376
  var ___cxa_uncaught_exceptions = () => uncaughtExceptionCount;
437
- function syscallGetVarargI() {
377
+ var ___resumeException = (ptr) => {
378
+ if (!exceptionLast) {
379
+ exceptionLast = ptr;
380
+ }
381
+ throw exceptionLast;
382
+ };
383
+ var syscallGetVarargI = () => {
438
384
  var ret = HEAP32[+SYSCALLS.varargs >> 2];
439
385
  SYSCALLS.varargs += 4;
440
386
  return ret;
441
- }
387
+ };
442
388
  var syscallGetVarargP = syscallGetVarargI;
443
389
  var PATH = { isAbs: (path) => path.charAt(0) === "/", splitPath: (filename) => {
444
390
  var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
@@ -464,7 +410,7 @@ var require_grida_canvas_wasm = __commonJS({
464
410
  }
465
411
  return parts;
466
412
  }, normalize: (path) => {
467
- var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === "/";
413
+ var isAbsolute = PATH.isAbs(path), trailingSlash = path.slice(-1) === "/";
468
414
  path = PATH.normalizeArray(path.split("/").filter((p) => !!p), !isAbsolute).join("/");
469
415
  if (!path && !isAbsolute) {
470
416
  path = ".";
@@ -479,23 +425,14 @@ var require_grida_canvas_wasm = __commonJS({
479
425
  return ".";
480
426
  }
481
427
  if (dir) {
482
- dir = dir.substr(0, dir.length - 1);
428
+ dir = dir.slice(0, -1);
483
429
  }
484
430
  return root + dir;
485
- }, basename: (path) => {
486
- if (path === "/") return "/";
487
- path = PATH.normalize(path);
488
- path = path.replace(/\/$/, "");
489
- var lastSlash = path.lastIndexOf("/");
490
- if (lastSlash === -1) return path;
491
- return path.substr(lastSlash + 1);
492
- }, join: (...paths) => PATH.normalize(paths.join("/")), join2: (l, r) => PATH.normalize(l + "/" + r) };
493
- var initRandomFill = () => {
494
- if (typeof crypto == "object" && typeof crypto["getRandomValues"] == "function") {
495
- return (view) => crypto.getRandomValues(view);
496
- } else abort("initRandomDevice");
497
- };
498
- var randomFill = (view) => (randomFill = initRandomFill())(view);
431
+ }, basename: (path) => path && path.match(/([^\/]+|\/)\/*$/)[1], join: (...paths) => PATH.normalize(paths.join("/")), join2: (l, r) => PATH.normalize(l + "/" + r) };
432
+ var initRandomFill = () => (view) => crypto.getRandomValues(view);
433
+ var randomFill = (view) => {
434
+ (randomFill = initRandomFill())(view);
435
+ };
499
436
  var PATH_FS = { resolve: (...args) => {
500
437
  var resolvedPath = "", resolvedAbsolute = false;
501
438
  for (var i2 = args.length - 1; i2 >= -1 && !resolvedAbsolute; i2--) {
@@ -511,8 +448,8 @@ var require_grida_canvas_wasm = __commonJS({
511
448
  resolvedPath = PATH.normalizeArray(resolvedPath.split("/").filter((p) => !!p), !resolvedAbsolute).join("/");
512
449
  return (resolvedAbsolute ? "/" : "") + resolvedPath || ".";
513
450
  }, relative: (from, to) => {
514
- from = PATH_FS.resolve(from).substr(1);
515
- to = PATH_FS.resolve(to).substr(1);
451
+ from = PATH_FS.resolve(from).slice(1);
452
+ to = PATH_FS.resolve(to).slice(1);
516
453
  function trim(arr) {
517
454
  var start = 0;
518
455
  for (; start < arr.length; start++) {
@@ -542,8 +479,8 @@ var require_grida_canvas_wasm = __commonJS({
542
479
  outputParts = outputParts.concat(toParts.slice(samePartsLength));
543
480
  return outputParts.join("/");
544
481
  } };
545
- var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder("utf8") : void 0;
546
- var UTF8ArrayToString = (heapOrArray, idx, maxBytesToRead) => {
482
+ var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder() : void 0;
483
+ var UTF8ArrayToString = (heapOrArray, idx = 0, maxBytesToRead = NaN) => {
547
484
  var endIdx = idx + maxBytesToRead;
548
485
  var endPtr = idx;
549
486
  while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;
@@ -628,13 +565,13 @@ var require_grida_canvas_wasm = __commonJS({
628
565
  heap[outIdx] = 0;
629
566
  return outIdx - startIdx;
630
567
  };
631
- function intArrayFromString(stringy, dontAddNull, length) {
568
+ var intArrayFromString = (stringy, dontAddNull, length) => {
632
569
  var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;
633
570
  var u8array = new Array(len);
634
571
  var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);
635
572
  if (dontAddNull) u8array.length = numBytesWritten;
636
573
  return u8array;
637
- }
574
+ };
638
575
  var FS_stdin_getChar = () => {
639
576
  if (!FS_stdin_getChar_buffer.length) {
640
577
  var result = null;
@@ -643,11 +580,7 @@ var require_grida_canvas_wasm = __commonJS({
643
580
  if (result !== null) {
644
581
  result += "\n";
645
582
  }
646
- } else if (typeof readline == "function") {
647
- result = readline();
648
- if (result !== null) {
649
- result += "\n";
650
- }
583
+ } else {
651
584
  }
652
585
  if (!result) {
653
586
  return null;
@@ -692,7 +625,7 @@ var require_grida_canvas_wasm = __commonJS({
692
625
  buffer[offset + i2] = result;
693
626
  }
694
627
  if (bytesRead) {
695
- stream.node.timestamp = Date.now();
628
+ stream.node.atime = Date.now();
696
629
  }
697
630
  return bytesRead;
698
631
  }, write(stream, buffer, offset, length, pos) {
@@ -707,21 +640,22 @@ var require_grida_canvas_wasm = __commonJS({
707
640
  throw new FS.ErrnoError(29);
708
641
  }
709
642
  if (length) {
710
- stream.node.timestamp = Date.now();
643
+ stream.node.mtime = stream.node.ctime = Date.now();
711
644
  }
712
645
  return i2;
713
646
  } }, default_tty_ops: { get_char(tty) {
714
647
  return FS_stdin_getChar();
715
648
  }, put_char(tty, val) {
716
649
  if (val === null || val === 10) {
717
- out(UTF8ArrayToString(tty.output, 0));
650
+ out(UTF8ArrayToString(tty.output));
718
651
  tty.output = [];
719
652
  } else {
720
653
  if (val != 0) tty.output.push(val);
721
654
  }
722
655
  }, fsync(tty) {
723
- if (tty.output && tty.output.length > 0) {
724
- out(UTF8ArrayToString(tty.output, 0));
656
+ var _a2;
657
+ if (((_a2 = tty.output) == null ? void 0 : _a2.length) > 0) {
658
+ out(UTF8ArrayToString(tty.output));
725
659
  tty.output = [];
726
660
  }
727
661
  }, ioctl_tcgets(tty) {
@@ -732,35 +666,33 @@ var require_grida_canvas_wasm = __commonJS({
732
666
  return [24, 80];
733
667
  } }, default_tty1_ops: { put_char(tty, val) {
734
668
  if (val === null || val === 10) {
735
- err(UTF8ArrayToString(tty.output, 0));
669
+ err(UTF8ArrayToString(tty.output));
736
670
  tty.output = [];
737
671
  } else {
738
672
  if (val != 0) tty.output.push(val);
739
673
  }
740
674
  }, fsync(tty) {
741
- if (tty.output && tty.output.length > 0) {
742
- err(UTF8ArrayToString(tty.output, 0));
675
+ var _a2;
676
+ if (((_a2 = tty.output) == null ? void 0 : _a2.length) > 0) {
677
+ err(UTF8ArrayToString(tty.output));
743
678
  tty.output = [];
744
679
  }
745
680
  } } };
746
- var zeroMemory = (address, size) => {
747
- HEAPU8.fill(0, address, address + size);
748
- return address;
749
- };
681
+ var zeroMemory = (ptr, size) => HEAPU8.fill(0, ptr, ptr + size);
750
682
  var alignMemory = (size, alignment) => Math.ceil(size / alignment) * alignment;
751
683
  var mmapAlloc = (size) => {
752
684
  size = alignMemory(size, 65536);
753
685
  var ptr = _emscripten_builtin_memalign(65536, size);
754
- if (!ptr) return 0;
755
- return zeroMemory(ptr, size);
686
+ if (ptr) zeroMemory(ptr, size);
687
+ return ptr;
756
688
  };
757
689
  var MEMFS = { ops_table: null, mount(mount) {
758
- return MEMFS.createNode(null, "/", 16384 | 511, 0);
690
+ return MEMFS.createNode(null, "/", 16895, 0);
759
691
  }, createNode(parent, name, mode, dev) {
760
692
  if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {
761
693
  throw new FS.ErrnoError(63);
762
694
  }
763
- MEMFS.ops_table ||= { dir: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr, lookup: MEMFS.node_ops.lookup, mknod: MEMFS.node_ops.mknod, rename: MEMFS.node_ops.rename, unlink: MEMFS.node_ops.unlink, rmdir: MEMFS.node_ops.rmdir, readdir: MEMFS.node_ops.readdir, symlink: MEMFS.node_ops.symlink }, stream: { llseek: MEMFS.stream_ops.llseek } }, file: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr }, stream: { llseek: MEMFS.stream_ops.llseek, read: MEMFS.stream_ops.read, write: MEMFS.stream_ops.write, allocate: MEMFS.stream_ops.allocate, mmap: MEMFS.stream_ops.mmap, msync: MEMFS.stream_ops.msync } }, link: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr, readlink: MEMFS.node_ops.readlink }, stream: {} }, chrdev: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr }, stream: FS.chrdev_stream_ops } };
695
+ MEMFS.ops_table ||= { dir: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr, lookup: MEMFS.node_ops.lookup, mknod: MEMFS.node_ops.mknod, rename: MEMFS.node_ops.rename, unlink: MEMFS.node_ops.unlink, rmdir: MEMFS.node_ops.rmdir, readdir: MEMFS.node_ops.readdir, symlink: MEMFS.node_ops.symlink }, stream: { llseek: MEMFS.stream_ops.llseek } }, file: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr }, stream: { llseek: MEMFS.stream_ops.llseek, read: MEMFS.stream_ops.read, write: MEMFS.stream_ops.write, mmap: MEMFS.stream_ops.mmap, msync: MEMFS.stream_ops.msync } }, link: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr, readlink: MEMFS.node_ops.readlink }, stream: {} }, chrdev: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr }, stream: FS.chrdev_stream_ops } };
764
696
  var node = FS.createNode(parent, name, mode, dev);
765
697
  if (FS.isDir(node.mode)) {
766
698
  node.node_ops = MEMFS.ops_table.dir.node;
@@ -778,10 +710,10 @@ var require_grida_canvas_wasm = __commonJS({
778
710
  node.node_ops = MEMFS.ops_table.chrdev.node;
779
711
  node.stream_ops = MEMFS.ops_table.chrdev.stream;
780
712
  }
781
- node.timestamp = Date.now();
713
+ node.atime = node.mtime = node.ctime = Date.now();
782
714
  if (parent) {
783
715
  parent.contents[name] = node;
784
- parent.timestamp = node.timestamp;
716
+ parent.atime = parent.mtime = parent.ctime = node.atime;
785
717
  }
786
718
  return node;
787
719
  }, getFileDataAsTypedArray(node) {
@@ -828,61 +760,55 @@ var require_grida_canvas_wasm = __commonJS({
828
760
  } else {
829
761
  attr.size = 0;
830
762
  }
831
- attr.atime = new Date(node.timestamp);
832
- attr.mtime = new Date(node.timestamp);
833
- attr.ctime = new Date(node.timestamp);
763
+ attr.atime = new Date(node.atime);
764
+ attr.mtime = new Date(node.mtime);
765
+ attr.ctime = new Date(node.ctime);
834
766
  attr.blksize = 4096;
835
767
  attr.blocks = Math.ceil(attr.size / attr.blksize);
836
768
  return attr;
837
769
  }, setattr(node, attr) {
838
- if (attr.mode !== void 0) {
839
- node.mode = attr.mode;
840
- }
841
- if (attr.timestamp !== void 0) {
842
- node.timestamp = attr.timestamp;
770
+ for (const key of ["mode", "atime", "mtime", "ctime"]) {
771
+ if (attr[key] != null) {
772
+ node[key] = attr[key];
773
+ }
843
774
  }
844
775
  if (attr.size !== void 0) {
845
776
  MEMFS.resizeFileStorage(node, attr.size);
846
777
  }
847
778
  }, lookup(parent, name) {
848
- throw FS.genericErrors[44];
779
+ throw MEMFS.doesNotExistError;
849
780
  }, mknod(parent, name, mode, dev) {
850
781
  return MEMFS.createNode(parent, name, mode, dev);
851
782
  }, rename(old_node, new_dir, new_name) {
852
- if (FS.isDir(old_node.mode)) {
853
- var new_node;
854
- try {
855
- new_node = FS.lookupNode(new_dir, new_name);
856
- } catch (e) {
857
- }
858
- if (new_node) {
783
+ var new_node;
784
+ try {
785
+ new_node = FS.lookupNode(new_dir, new_name);
786
+ } catch (e) {
787
+ }
788
+ if (new_node) {
789
+ if (FS.isDir(old_node.mode)) {
859
790
  for (var i2 in new_node.contents) {
860
791
  throw new FS.ErrnoError(55);
861
792
  }
862
793
  }
794
+ FS.hashRemoveNode(new_node);
863
795
  }
864
796
  delete old_node.parent.contents[old_node.name];
865
- old_node.parent.timestamp = Date.now();
866
- old_node.name = new_name;
867
797
  new_dir.contents[new_name] = old_node;
868
- new_dir.timestamp = old_node.parent.timestamp;
869
- old_node.parent = new_dir;
798
+ old_node.name = new_name;
799
+ new_dir.ctime = new_dir.mtime = old_node.parent.ctime = old_node.parent.mtime = Date.now();
870
800
  }, unlink(parent, name) {
871
801
  delete parent.contents[name];
872
- parent.timestamp = Date.now();
802
+ parent.ctime = parent.mtime = Date.now();
873
803
  }, rmdir(parent, name) {
874
804
  var node = FS.lookupNode(parent, name);
875
805
  for (var i2 in node.contents) {
876
806
  throw new FS.ErrnoError(55);
877
807
  }
878
808
  delete parent.contents[name];
879
- parent.timestamp = Date.now();
809
+ parent.ctime = parent.mtime = Date.now();
880
810
  }, readdir(node) {
881
- var entries = [".", ".."];
882
- for (var key of Object.keys(node.contents)) {
883
- entries.push(key);
884
- }
885
- return entries;
811
+ return [".", "..", ...Object.keys(node.contents)];
886
812
  }, symlink(parent, newname, oldpath) {
887
813
  var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);
888
814
  node.link = oldpath;
@@ -908,7 +834,7 @@ var require_grida_canvas_wasm = __commonJS({
908
834
  }
909
835
  if (!length) return 0;
910
836
  var node = stream.node;
911
- node.timestamp = Date.now();
837
+ node.mtime = node.ctime = Date.now();
912
838
  if (buffer.subarray && (!node.contents || node.contents.subarray)) {
913
839
  if (canOwn) {
914
840
  node.contents = buffer.subarray(offset, offset + length);
@@ -946,9 +872,6 @@ var require_grida_canvas_wasm = __commonJS({
946
872
  throw new FS.ErrnoError(28);
947
873
  }
948
874
  return position;
949
- }, allocate(stream, offset, length) {
950
- MEMFS.expandFileStorage(stream.node, offset + length);
951
- stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);
952
875
  }, mmap(stream, length, position, prot, flags) {
953
876
  if (!FS.isFile(stream.node.mode)) {
954
877
  throw new FS.ErrnoError(43);
@@ -956,47 +879,39 @@ var require_grida_canvas_wasm = __commonJS({
956
879
  var ptr;
957
880
  var allocated;
958
881
  var contents = stream.node.contents;
959
- if (!(flags & 2) && contents.buffer === HEAP8.buffer) {
882
+ if (!(flags & 2) && contents && contents.buffer === HEAP8.buffer) {
960
883
  allocated = false;
961
884
  ptr = contents.byteOffset;
962
885
  } else {
963
- if (position > 0 || position + length < contents.length) {
964
- if (contents.subarray) {
965
- contents = contents.subarray(position, position + length);
966
- } else {
967
- contents = Array.prototype.slice.call(contents, position, position + length);
968
- }
969
- }
970
886
  allocated = true;
971
887
  ptr = mmapAlloc(length);
972
888
  if (!ptr) {
973
889
  throw new FS.ErrnoError(48);
974
890
  }
975
- HEAP8.set(contents, ptr);
891
+ if (contents) {
892
+ if (position > 0 || position + length < contents.length) {
893
+ if (contents.subarray) {
894
+ contents = contents.subarray(position, position + length);
895
+ } else {
896
+ contents = Array.prototype.slice.call(contents, position, position + length);
897
+ }
898
+ }
899
+ HEAP8.set(contents, ptr);
900
+ }
976
901
  }
977
902
  return { ptr, allocated };
978
903
  }, msync(stream, buffer, offset, length, mmapFlags) {
979
904
  MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);
980
905
  return 0;
981
906
  } } };
982
- var asyncLoad = (url, onload, onerror, noRunDep) => {
983
- var dep = !noRunDep ? getUniqueRunDependency(`al ${url}`) : "";
984
- readAsync(url, (arrayBuffer) => {
985
- onload(new Uint8Array(arrayBuffer));
986
- if (dep) removeRunDependency(dep);
987
- }, (event) => {
988
- if (onerror) {
989
- onerror();
990
- } else {
991
- throw `Loading data file "${url}" failed.`;
992
- }
993
- });
994
- if (dep) addRunDependency(dep);
907
+ var asyncLoad = async (url) => {
908
+ var arrayBuffer = await readAsync(url);
909
+ return new Uint8Array(arrayBuffer);
995
910
  };
996
911
  var FS_createDataFile = (parent, name, fileData, canRead, canWrite, canOwn) => {
997
912
  FS.createDataFile(parent, name, fileData, canRead, canWrite, canOwn);
998
913
  };
999
- var preloadPlugins = Module["preloadPlugins"] || [];
914
+ var preloadPlugins = [];
1000
915
  var FS_handledByPreloadPlugin = (byteArray, fullname, finish, onerror) => {
1001
916
  if (typeof Browser != "undefined") Browser.init();
1002
917
  var handled = false;
@@ -1031,13 +946,13 @@ var require_grida_canvas_wasm = __commonJS({
1031
946
  }
1032
947
  addRunDependency(dep);
1033
948
  if (typeof url == "string") {
1034
- asyncLoad(url, processData, onerror);
949
+ asyncLoad(url).then(processData, onerror);
1035
950
  } else {
1036
951
  processData(url);
1037
952
  }
1038
953
  };
1039
954
  var FS_modeStringToFlags = (str) => {
1040
- var flagModes = { "r": 0, "r+": 2, "w": 512 | 64 | 1, "w+": 512 | 64 | 2, "a": 1024 | 64 | 1, "a+": 1024 | 64 | 2 };
955
+ var flagModes = { r: 0, "r+": 2, w: 512 | 64 | 1, "w+": 512 | 64 | 2, a: 1024 | 64 | 1, "a+": 1024 | 64 | 2 };
1041
956
  var flags = flagModes[str];
1042
957
  if (typeof flags == "undefined") {
1043
958
  throw new Error(`Unknown file open mode: ${str}`);
@@ -1050,15 +965,13 @@ var require_grida_canvas_wasm = __commonJS({
1050
965
  if (canWrite) mode |= 146;
1051
966
  return mode;
1052
967
  };
1053
- var FS = { root: null, mounts: [], devices: {}, streams: [], nextInode: 1, nameTable: null, currentPath: "/", initialized: false, ignorePermissions: true, ErrnoError: class {
968
+ var FS = { root: null, mounts: [], devices: {}, streams: [], nextInode: 1, nameTable: null, currentPath: "/", initialized: false, ignorePermissions: true, filesystems: null, syncFSRequests: 0, readFiles: {}, ErrnoError: class {
969
+ name = "ErrnoError";
1054
970
  constructor(errno) {
1055
- this.name = "ErrnoError";
1056
971
  this.errno = errno;
1057
972
  }
1058
- }, genericErrors: {}, filesystems: null, syncFSRequests: 0, FSStream: class {
1059
- constructor() {
1060
- this.shared = {};
1061
- }
973
+ }, FSStream: class {
974
+ shared = {};
1062
975
  get object() {
1063
976
  return this.node;
1064
977
  }
@@ -1087,21 +1000,22 @@ var require_grida_canvas_wasm = __commonJS({
1087
1000
  this.shared.position = val;
1088
1001
  }
1089
1002
  }, FSNode: class {
1003
+ node_ops = {};
1004
+ stream_ops = {};
1005
+ readMode = 292 | 73;
1006
+ writeMode = 146;
1007
+ mounted = null;
1090
1008
  constructor(parent, name, mode, rdev) {
1091
1009
  if (!parent) {
1092
1010
  parent = this;
1093
1011
  }
1094
1012
  this.parent = parent;
1095
1013
  this.mount = parent.mount;
1096
- this.mounted = null;
1097
1014
  this.id = FS.nextInode++;
1098
1015
  this.name = name;
1099
1016
  this.mode = mode;
1100
- this.node_ops = {};
1101
- this.stream_ops = {};
1102
1017
  this.rdev = rdev;
1103
- this.readMode = 292 | 73;
1104
- this.writeMode = 146;
1018
+ this.atime = this.mtime = this.ctime = Date.now();
1105
1019
  }
1106
1020
  get read() {
1107
1021
  return (this.mode & this.readMode) === this.readMode;
@@ -1122,42 +1036,62 @@ var require_grida_canvas_wasm = __commonJS({
1122
1036
  return FS.isChrdev(this.mode);
1123
1037
  }
1124
1038
  }, lookupPath(path, opts = {}) {
1125
- path = PATH_FS.resolve(path);
1126
- if (!path) return { path: "", node: null };
1127
- var defaults = { follow_mount: true, recurse_count: 0 };
1128
- opts = Object.assign(defaults, opts);
1129
- if (opts.recurse_count > 8) {
1130
- throw new FS.ErrnoError(32);
1131
- }
1132
- var parts = path.split("/").filter((p) => !!p);
1133
- var current = FS.root;
1134
- var current_path = "/";
1135
- for (var i2 = 0; i2 < parts.length; i2++) {
1136
- var islast = i2 === parts.length - 1;
1137
- if (islast && opts.parent) {
1138
- break;
1139
- }
1140
- current = FS.lookupNode(current, parts[i2]);
1141
- current_path = PATH.join2(current_path, parts[i2]);
1142
- if (FS.isMountpoint(current)) {
1143
- if (!islast || islast && opts.follow_mount) {
1039
+ if (!path) {
1040
+ throw new FS.ErrnoError(44);
1041
+ }
1042
+ opts.follow_mount ??= true;
1043
+ if (!PATH.isAbs(path)) {
1044
+ path = FS.cwd() + "/" + path;
1045
+ }
1046
+ linkloop: for (var nlinks = 0; nlinks < 40; nlinks++) {
1047
+ var parts = path.split("/").filter((p) => !!p);
1048
+ var current = FS.root;
1049
+ var current_path = "/";
1050
+ for (var i2 = 0; i2 < parts.length; i2++) {
1051
+ var islast = i2 === parts.length - 1;
1052
+ if (islast && opts.parent) {
1053
+ break;
1054
+ }
1055
+ if (parts[i2] === ".") {
1056
+ continue;
1057
+ }
1058
+ if (parts[i2] === "..") {
1059
+ current_path = PATH.dirname(current_path);
1060
+ if (FS.isRoot(current)) {
1061
+ path = current_path + "/" + parts.slice(i2 + 1).join("/");
1062
+ continue linkloop;
1063
+ } else {
1064
+ current = current.parent;
1065
+ }
1066
+ continue;
1067
+ }
1068
+ current_path = PATH.join2(current_path, parts[i2]);
1069
+ try {
1070
+ current = FS.lookupNode(current, parts[i2]);
1071
+ } catch (e) {
1072
+ if ((e == null ? void 0 : e.errno) === 44 && islast && opts.noent_okay) {
1073
+ return { path: current_path };
1074
+ }
1075
+ throw e;
1076
+ }
1077
+ if (FS.isMountpoint(current) && (!islast || opts.follow_mount)) {
1144
1078
  current = current.mounted.root;
1145
1079
  }
1146
- }
1147
- if (!islast || opts.follow) {
1148
- var count = 0;
1149
- while (FS.isLink(current.mode)) {
1150
- var link = FS.readlink(current_path);
1151
- current_path = PATH_FS.resolve(PATH.dirname(current_path), link);
1152
- var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count + 1 });
1153
- current = lookup.node;
1154
- if (count++ > 40) {
1155
- throw new FS.ErrnoError(32);
1080
+ if (FS.isLink(current.mode) && (!islast || opts.follow)) {
1081
+ if (!current.node_ops.readlink) {
1082
+ throw new FS.ErrnoError(52);
1156
1083
  }
1084
+ var link = current.node_ops.readlink(current);
1085
+ if (!PATH.isAbs(link)) {
1086
+ link = PATH.dirname(current_path) + "/" + link;
1087
+ }
1088
+ path = link + "/" + parts.slice(i2 + 1).join("/");
1089
+ continue linkloop;
1157
1090
  }
1158
1091
  }
1092
+ return { path: current_path, node: current };
1159
1093
  }
1160
- return { path: current_path, node: current };
1094
+ throw new FS.ErrnoError(32);
1161
1095
  }, getPath(node) {
1162
1096
  var path;
1163
1097
  while (true) {
@@ -1255,6 +1189,9 @@ var require_grida_canvas_wasm = __commonJS({
1255
1189
  if (!dir.node_ops.lookup) return 2;
1256
1190
  return 0;
1257
1191
  }, mayCreate(dir, name) {
1192
+ if (!FS.isDir(dir.mode)) {
1193
+ return 54;
1194
+ }
1258
1195
  try {
1259
1196
  var node = FS.lookupNode(dir, name);
1260
1197
  return 20;
@@ -1292,11 +1229,16 @@ var require_grida_canvas_wasm = __commonJS({
1292
1229
  if (FS.isLink(node.mode)) {
1293
1230
  return 32;
1294
1231
  } else if (FS.isDir(node.mode)) {
1295
- if (FS.flagsToPermissionString(flags) !== "r" || flags & 512) {
1232
+ if (FS.flagsToPermissionString(flags) !== "r" || flags & (512 | 64)) {
1296
1233
  return 31;
1297
1234
  }
1298
1235
  }
1299
1236
  return FS.nodePermissions(node, FS.flagsToPermissionString(flags));
1237
+ }, checkOpExists(op, err2) {
1238
+ if (!op) {
1239
+ throw new FS.ErrnoError(err2);
1240
+ }
1241
+ return op;
1300
1242
  }, MAX_OPEN_FDS: 4096, nextfd() {
1301
1243
  for (var fd = 0; fd <= FS.MAX_OPEN_FDS; fd++) {
1302
1244
  if (!FS.streams[fd]) {
@@ -1325,6 +1267,12 @@ var require_grida_canvas_wasm = __commonJS({
1325
1267
  var stream = FS.createStream(origStream, fd);
1326
1268
  (_b = (_a2 = stream.stream_ops) == null ? void 0 : _a2.dup) == null ? void 0 : _b.call(_a2, stream);
1327
1269
  return stream;
1270
+ }, doSetAttr(stream, node, attr) {
1271
+ var setattr = stream == null ? void 0 : stream.stream_ops.setattr;
1272
+ var arg = setattr ? stream : node;
1273
+ setattr ??= node.node_ops.setattr;
1274
+ FS.checkOpExists(setattr, 63);
1275
+ setattr(arg, attr);
1328
1276
  }, chrdev_stream_ops: { open(stream) {
1329
1277
  var _a2, _b;
1330
1278
  var device = FS.getDevice(stream.node.rdev);
@@ -1433,9 +1381,12 @@ var require_grida_canvas_wasm = __commonJS({
1433
1381
  var lookup = FS.lookupPath(path, { parent: true });
1434
1382
  var parent = lookup.node;
1435
1383
  var name = PATH.basename(path);
1436
- if (!name || name === "." || name === "..") {
1384
+ if (!name) {
1437
1385
  throw new FS.ErrnoError(28);
1438
1386
  }
1387
+ if (name === "." || name === "..") {
1388
+ throw new FS.ErrnoError(20);
1389
+ }
1439
1390
  var errCode = FS.mayCreate(parent, name);
1440
1391
  if (errCode) {
1441
1392
  throw new FS.ErrnoError(errCode);
@@ -1444,22 +1395,31 @@ var require_grida_canvas_wasm = __commonJS({
1444
1395
  throw new FS.ErrnoError(63);
1445
1396
  }
1446
1397
  return parent.node_ops.mknod(parent, name, mode, dev);
1447
- }, create(path, mode) {
1448
- mode = mode !== void 0 ? mode : 438;
1398
+ }, statfs(path) {
1399
+ return FS.statfsNode(FS.lookupPath(path, { follow: true }).node);
1400
+ }, statfsStream(stream) {
1401
+ return FS.statfsNode(stream.node);
1402
+ }, statfsNode(node) {
1403
+ var rtn = { bsize: 4096, frsize: 4096, blocks: 1e6, bfree: 5e5, bavail: 5e5, files: FS.nextInode, ffree: FS.nextInode - 1, fsid: 42, flags: 2, namelen: 255 };
1404
+ if (node.node_ops.statfs) {
1405
+ Object.assign(rtn, node.node_ops.statfs(node.mount.opts.root));
1406
+ }
1407
+ return rtn;
1408
+ }, create(path, mode = 438) {
1449
1409
  mode &= 4095;
1450
1410
  mode |= 32768;
1451
1411
  return FS.mknod(path, mode, 0);
1452
- }, mkdir(path, mode) {
1453
- mode = mode !== void 0 ? mode : 511;
1412
+ }, mkdir(path, mode = 511) {
1454
1413
  mode &= 511 | 512;
1455
1414
  mode |= 16384;
1456
1415
  return FS.mknod(path, mode, 0);
1457
1416
  }, mkdirTree(path, mode) {
1458
1417
  var dirs = path.split("/");
1459
1418
  var d = "";
1460
- for (var i2 = 0; i2 < dirs.length; ++i2) {
1461
- if (!dirs[i2]) continue;
1462
- d += "/" + dirs[i2];
1419
+ for (var dir of dirs) {
1420
+ if (!dir) continue;
1421
+ if (d || PATH.isAbs(path)) d += "/";
1422
+ d += dir;
1463
1423
  try {
1464
1424
  FS.mkdir(d, mode);
1465
1425
  } catch (e) {
@@ -1546,6 +1506,7 @@ var require_grida_canvas_wasm = __commonJS({
1546
1506
  FS.hashRemoveNode(old_node);
1547
1507
  try {
1548
1508
  old_dir.node_ops.rename(old_node, new_dir, new_name);
1509
+ old_node.parent = new_dir;
1549
1510
  } catch (e) {
1550
1511
  throw e;
1551
1512
  } finally {
@@ -1571,10 +1532,8 @@ var require_grida_canvas_wasm = __commonJS({
1571
1532
  }, readdir(path) {
1572
1533
  var lookup = FS.lookupPath(path, { follow: true });
1573
1534
  var node = lookup.node;
1574
- if (!node.node_ops.readdir) {
1575
- throw new FS.ErrnoError(54);
1576
- }
1577
- return node.node_ops.readdir(node);
1535
+ var readdir = FS.checkOpExists(node.node_ops.readdir, 54);
1536
+ return readdir(node);
1578
1537
  }, unlink(path) {
1579
1538
  var lookup = FS.lookupPath(path, { parent: true });
1580
1539
  var parent = lookup.node;
@@ -1604,19 +1563,24 @@ var require_grida_canvas_wasm = __commonJS({
1604
1563
  if (!link.node_ops.readlink) {
1605
1564
  throw new FS.ErrnoError(28);
1606
1565
  }
1607
- return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));
1566
+ return link.node_ops.readlink(link);
1608
1567
  }, stat(path, dontFollow) {
1609
1568
  var lookup = FS.lookupPath(path, { follow: !dontFollow });
1610
1569
  var node = lookup.node;
1611
- if (!node) {
1612
- throw new FS.ErrnoError(44);
1613
- }
1614
- if (!node.node_ops.getattr) {
1615
- throw new FS.ErrnoError(63);
1616
- }
1617
- return node.node_ops.getattr(node);
1570
+ var getattr = FS.checkOpExists(node.node_ops.getattr, 63);
1571
+ return getattr(node);
1572
+ }, fstat(fd) {
1573
+ var stream = FS.getStreamChecked(fd);
1574
+ var node = stream.node;
1575
+ var getattr = stream.stream_ops.getattr;
1576
+ var arg = getattr ? stream : node;
1577
+ getattr ??= node.node_ops.getattr;
1578
+ FS.checkOpExists(getattr, 63);
1579
+ return getattr(arg);
1618
1580
  }, lstat(path) {
1619
1581
  return FS.stat(path, true);
1582
+ }, doChmod(stream, node, mode, dontFollow) {
1583
+ FS.doSetAttr(stream, node, { mode: mode & 4095 | node.mode & ~4095, ctime: Date.now(), dontFollow });
1620
1584
  }, chmod(path, mode, dontFollow) {
1621
1585
  var node;
1622
1586
  if (typeof path == "string") {
@@ -1625,15 +1589,14 @@ var require_grida_canvas_wasm = __commonJS({
1625
1589
  } else {
1626
1590
  node = path;
1627
1591
  }
1628
- if (!node.node_ops.setattr) {
1629
- throw new FS.ErrnoError(63);
1630
- }
1631
- node.node_ops.setattr(node, { mode: mode & 4095 | node.mode & ~4095, timestamp: Date.now() });
1592
+ FS.doChmod(null, node, mode, dontFollow);
1632
1593
  }, lchmod(path, mode) {
1633
1594
  FS.chmod(path, mode, true);
1634
1595
  }, fchmod(fd, mode) {
1635
1596
  var stream = FS.getStreamChecked(fd);
1636
- FS.chmod(stream.node, mode);
1597
+ FS.doChmod(stream, stream.node, mode, false);
1598
+ }, doChown(stream, node, dontFollow) {
1599
+ FS.doSetAttr(stream, node, { timestamp: Date.now(), dontFollow });
1637
1600
  }, chown(path, uid, gid, dontFollow) {
1638
1601
  var node;
1639
1602
  if (typeof path == "string") {
@@ -1642,15 +1605,24 @@ var require_grida_canvas_wasm = __commonJS({
1642
1605
  } else {
1643
1606
  node = path;
1644
1607
  }
1645
- if (!node.node_ops.setattr) {
1646
- throw new FS.ErrnoError(63);
1647
- }
1648
- node.node_ops.setattr(node, { timestamp: Date.now() });
1608
+ FS.doChown(null, node, dontFollow);
1649
1609
  }, lchown(path, uid, gid) {
1650
1610
  FS.chown(path, uid, gid, true);
1651
1611
  }, fchown(fd, uid, gid) {
1652
1612
  var stream = FS.getStreamChecked(fd);
1653
- FS.chown(stream.node, uid, gid);
1613
+ FS.doChown(stream, stream.node, false);
1614
+ }, doTruncate(stream, node, len) {
1615
+ if (FS.isDir(node.mode)) {
1616
+ throw new FS.ErrnoError(31);
1617
+ }
1618
+ if (!FS.isFile(node.mode)) {
1619
+ throw new FS.ErrnoError(28);
1620
+ }
1621
+ var errCode = FS.nodePermissions(node, "w");
1622
+ if (errCode) {
1623
+ throw new FS.ErrnoError(errCode);
1624
+ }
1625
+ FS.doSetAttr(stream, node, { size: len, timestamp: Date.now() });
1654
1626
  }, truncate(path, len) {
1655
1627
  if (len < 0) {
1656
1628
  throw new FS.ErrnoError(28);
@@ -1662,51 +1634,37 @@ var require_grida_canvas_wasm = __commonJS({
1662
1634
  } else {
1663
1635
  node = path;
1664
1636
  }
1665
- if (!node.node_ops.setattr) {
1666
- throw new FS.ErrnoError(63);
1667
- }
1668
- if (FS.isDir(node.mode)) {
1669
- throw new FS.ErrnoError(31);
1670
- }
1671
- if (!FS.isFile(node.mode)) {
1672
- throw new FS.ErrnoError(28);
1673
- }
1674
- var errCode = FS.nodePermissions(node, "w");
1675
- if (errCode) {
1676
- throw new FS.ErrnoError(errCode);
1677
- }
1678
- node.node_ops.setattr(node, { size: len, timestamp: Date.now() });
1637
+ FS.doTruncate(null, node, len);
1679
1638
  }, ftruncate(fd, len) {
1680
1639
  var stream = FS.getStreamChecked(fd);
1681
- if ((stream.flags & 2097155) === 0) {
1640
+ if (len < 0 || (stream.flags & 2097155) === 0) {
1682
1641
  throw new FS.ErrnoError(28);
1683
1642
  }
1684
- FS.truncate(stream.node, len);
1643
+ FS.doTruncate(stream, stream.node, len);
1685
1644
  }, utime(path, atime, mtime) {
1686
1645
  var lookup = FS.lookupPath(path, { follow: true });
1687
1646
  var node = lookup.node;
1688
- node.node_ops.setattr(node, { timestamp: Math.max(atime, mtime) });
1689
- }, open(path, flags, mode) {
1647
+ var setattr = FS.checkOpExists(node.node_ops.setattr, 63);
1648
+ setattr(node, { atime, mtime });
1649
+ }, open(path, flags, mode = 438) {
1690
1650
  if (path === "") {
1691
1651
  throw new FS.ErrnoError(44);
1692
1652
  }
1693
1653
  flags = typeof flags == "string" ? FS_modeStringToFlags(flags) : flags;
1694
- mode = typeof mode == "undefined" ? 438 : mode;
1695
1654
  if (flags & 64) {
1696
1655
  mode = mode & 4095 | 32768;
1697
1656
  } else {
1698
1657
  mode = 0;
1699
1658
  }
1700
1659
  var node;
1660
+ var isDirPath;
1701
1661
  if (typeof path == "object") {
1702
1662
  node = path;
1703
1663
  } else {
1704
- path = PATH.normalize(path);
1705
- try {
1706
- var lookup = FS.lookupPath(path, { follow: !(flags & 131072) });
1707
- node = lookup.node;
1708
- } catch (e) {
1709
- }
1664
+ isDirPath = path.endsWith("/");
1665
+ var lookup = FS.lookupPath(path, { follow: !(flags & 131072), noent_okay: true });
1666
+ node = lookup.node;
1667
+ path = lookup.path;
1710
1668
  }
1711
1669
  var created = false;
1712
1670
  if (flags & 64) {
@@ -1714,8 +1672,10 @@ var require_grida_canvas_wasm = __commonJS({
1714
1672
  if (flags & 128) {
1715
1673
  throw new FS.ErrnoError(20);
1716
1674
  }
1675
+ } else if (isDirPath) {
1676
+ throw new FS.ErrnoError(31);
1717
1677
  } else {
1718
- node = FS.mknod(path, mode, 0);
1678
+ node = FS.mknod(path, mode | 511, 0);
1719
1679
  created = true;
1720
1680
  }
1721
1681
  }
@@ -1742,8 +1702,10 @@ var require_grida_canvas_wasm = __commonJS({
1742
1702
  if (stream.stream_ops.open) {
1743
1703
  stream.stream_ops.open(stream);
1744
1704
  }
1705
+ if (created) {
1706
+ FS.chmod(node, mode & 511);
1707
+ }
1745
1708
  if (Module["logReadFiles"] && !(flags & 1)) {
1746
- if (!FS.readFiles) FS.readFiles = {};
1747
1709
  if (!(path in FS.readFiles)) {
1748
1710
  FS.readFiles[path] = 1;
1749
1711
  }
@@ -1832,23 +1794,6 @@ var require_grida_canvas_wasm = __commonJS({
1832
1794
  var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);
1833
1795
  if (!seeking) stream.position += bytesWritten;
1834
1796
  return bytesWritten;
1835
- }, allocate(stream, offset, length) {
1836
- if (FS.isClosed(stream)) {
1837
- throw new FS.ErrnoError(8);
1838
- }
1839
- if (offset < 0 || length <= 0) {
1840
- throw new FS.ErrnoError(28);
1841
- }
1842
- if ((stream.flags & 2097155) === 0) {
1843
- throw new FS.ErrnoError(8);
1844
- }
1845
- if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) {
1846
- throw new FS.ErrnoError(43);
1847
- }
1848
- if (!stream.stream_ops.allocate) {
1849
- throw new FS.ErrnoError(138);
1850
- }
1851
- stream.stream_ops.allocate(stream, offset, length);
1852
1797
  }, mmap(stream, length, position, prot, flags) {
1853
1798
  if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) {
1854
1799
  throw new FS.ErrnoError(2);
@@ -1859,6 +1804,9 @@ var require_grida_canvas_wasm = __commonJS({
1859
1804
  if (!stream.stream_ops.mmap) {
1860
1805
  throw new FS.ErrnoError(43);
1861
1806
  }
1807
+ if (!length) {
1808
+ throw new FS.ErrnoError(28);
1809
+ }
1862
1810
  return stream.stream_ops.mmap(stream, length, position, prot, flags);
1863
1811
  }, msync(stream, buffer, offset, length, mmapFlags) {
1864
1812
  if (!stream.stream_ops.msync) {
@@ -1883,7 +1831,7 @@ var require_grida_canvas_wasm = __commonJS({
1883
1831
  var buf = new Uint8Array(length);
1884
1832
  FS.read(stream, buf, 0, length, 0);
1885
1833
  if (opts.encoding === "utf8") {
1886
- ret = UTF8ArrayToString(buf, 0);
1834
+ ret = UTF8ArrayToString(buf);
1887
1835
  } else if (opts.encoding === "binary") {
1888
1836
  ret = buf;
1889
1837
  }
@@ -1921,7 +1869,7 @@ var require_grida_canvas_wasm = __commonJS({
1921
1869
  FS.mkdir("/home/web_user");
1922
1870
  }, createDefaultDevices() {
1923
1871
  FS.mkdir("/dev");
1924
- FS.registerDevice(FS.makedev(1, 3), { read: () => 0, write: (stream, buffer, offset, length, pos) => length });
1872
+ FS.registerDevice(FS.makedev(1, 3), { read: () => 0, write: (stream, buffer, offset, length, pos) => length, llseek: () => 0 });
1925
1873
  FS.mkdev("/dev/null", FS.makedev(1, 3));
1926
1874
  TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);
1927
1875
  TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);
@@ -1930,7 +1878,8 @@ var require_grida_canvas_wasm = __commonJS({
1930
1878
  var randomBuffer = new Uint8Array(1024), randomLeft = 0;
1931
1879
  var randomByte = () => {
1932
1880
  if (randomLeft === 0) {
1933
- randomLeft = randomFill(randomBuffer).byteLength;
1881
+ randomFill(randomBuffer);
1882
+ randomLeft = randomBuffer.byteLength;
1934
1883
  }
1935
1884
  return randomBuffer[--randomLeft];
1936
1885
  };
@@ -1943,29 +1892,32 @@ var require_grida_canvas_wasm = __commonJS({
1943
1892
  var proc_self = FS.mkdir("/proc/self");
1944
1893
  FS.mkdir("/proc/self/fd");
1945
1894
  FS.mount({ mount() {
1946
- var node = FS.createNode(proc_self, "fd", 16384 | 511, 73);
1895
+ var node = FS.createNode(proc_self, "fd", 16895, 73);
1896
+ node.stream_ops = { llseek: MEMFS.stream_ops.llseek };
1947
1897
  node.node_ops = { lookup(parent, name) {
1948
1898
  var fd = +name;
1949
1899
  var stream = FS.getStreamChecked(fd);
1950
- var ret = { parent: null, mount: { mountpoint: "fake" }, node_ops: { readlink: () => stream.path } };
1900
+ var ret = { parent: null, mount: { mountpoint: "fake" }, node_ops: { readlink: () => stream.path }, id: fd + 1 };
1951
1901
  ret.parent = ret;
1952
1902
  return ret;
1903
+ }, readdir() {
1904
+ return Array.from(FS.streams.entries()).filter(([k, v]) => v).map(([k, v]) => k.toString());
1953
1905
  } };
1954
1906
  return node;
1955
1907
  } }, {}, "/proc/self/fd");
1956
- }, createStandardStreams() {
1957
- if (Module["stdin"]) {
1958
- FS.createDevice("/dev", "stdin", Module["stdin"]);
1908
+ }, createStandardStreams(input, output, error) {
1909
+ if (input) {
1910
+ FS.createDevice("/dev", "stdin", input);
1959
1911
  } else {
1960
1912
  FS.symlink("/dev/tty", "/dev/stdin");
1961
1913
  }
1962
- if (Module["stdout"]) {
1963
- FS.createDevice("/dev", "stdout", null, Module["stdout"]);
1914
+ if (output) {
1915
+ FS.createDevice("/dev", "stdout", null, output);
1964
1916
  } else {
1965
1917
  FS.symlink("/dev/tty", "/dev/stdout");
1966
1918
  }
1967
- if (Module["stderr"]) {
1968
- FS.createDevice("/dev", "stderr", null, Module["stderr"]);
1919
+ if (error) {
1920
+ FS.createDevice("/dev", "stderr", null, error);
1969
1921
  } else {
1970
1922
  FS.symlink("/dev/tty1", "/dev/stderr");
1971
1923
  }
@@ -1973,30 +1925,24 @@ var require_grida_canvas_wasm = __commonJS({
1973
1925
  var stdout = FS.open("/dev/stdout", 1);
1974
1926
  var stderr = FS.open("/dev/stderr", 1);
1975
1927
  }, staticInit() {
1976
- [44].forEach((code) => {
1977
- FS.genericErrors[code] = new FS.ErrnoError(code);
1978
- FS.genericErrors[code].stack = "<generic error, no stack>";
1979
- });
1980
1928
  FS.nameTable = new Array(4096);
1981
1929
  FS.mount(MEMFS, {}, "/");
1982
1930
  FS.createDefaultDirectories();
1983
1931
  FS.createDefaultDevices();
1984
1932
  FS.createSpecialDirectories();
1985
- FS.filesystems = { "MEMFS": MEMFS };
1933
+ FS.filesystems = { MEMFS };
1986
1934
  }, init(input, output, error) {
1987
- FS.init.initialized = true;
1988
- Module["stdin"] = input || Module["stdin"];
1989
- Module["stdout"] = output || Module["stdout"];
1990
- Module["stderr"] = error || Module["stderr"];
1991
- FS.createStandardStreams();
1935
+ FS.initialized = true;
1936
+ input ??= Module["stdin"];
1937
+ output ??= Module["stdout"];
1938
+ error ??= Module["stderr"];
1939
+ FS.createStandardStreams(input, output, error);
1992
1940
  }, quit() {
1993
- FS.init.initialized = false;
1994
- for (var i2 = 0; i2 < FS.streams.length; i2++) {
1995
- var stream = FS.streams[i2];
1996
- if (!stream) {
1997
- continue;
1941
+ FS.initialized = false;
1942
+ for (var stream of FS.streams) {
1943
+ if (stream) {
1944
+ FS.close(stream);
1998
1945
  }
1999
- FS.close(stream);
2000
1946
  }
2001
1947
  }, findObject(path, dontResolveLastLink) {
2002
1948
  var ret = FS.analyzePath(path, dontResolveLastLink);
@@ -2037,6 +1983,7 @@ var require_grida_canvas_wasm = __commonJS({
2037
1983
  try {
2038
1984
  FS.mkdir(current);
2039
1985
  } catch (e) {
1986
+ if (e.errno != 20) throw e;
2040
1987
  }
2041
1988
  parent = current;
2042
1989
  }
@@ -2068,7 +2015,7 @@ var require_grida_canvas_wasm = __commonJS({
2068
2015
  }, createDevice(parent, name, input, output) {
2069
2016
  var path = PATH.join2(typeof parent == "string" ? parent : FS.getPath(parent), name);
2070
2017
  var mode = FS_getMode(!!input, !!output);
2071
- if (!FS.createDevice.major) FS.createDevice.major = 64;
2018
+ FS.createDevice.major ??= 64;
2072
2019
  var dev = FS.makedev(FS.createDevice.major++, 0);
2073
2020
  FS.registerDevice(dev, { open(stream) {
2074
2021
  stream.seekable = false;
@@ -2094,7 +2041,7 @@ var require_grida_canvas_wasm = __commonJS({
2094
2041
  buffer[offset + i2] = result;
2095
2042
  }
2096
2043
  if (bytesRead) {
2097
- stream.node.timestamp = Date.now();
2044
+ stream.node.atime = Date.now();
2098
2045
  }
2099
2046
  return bytesRead;
2100
2047
  }, write(stream, buffer, offset, length, pos) {
@@ -2106,7 +2053,7 @@ var require_grida_canvas_wasm = __commonJS({
2106
2053
  }
2107
2054
  }
2108
2055
  if (length) {
2109
- stream.node.timestamp = Date.now();
2056
+ stream.node.mtime = stream.node.ctime = Date.now();
2110
2057
  }
2111
2058
  return i2;
2112
2059
  } });
@@ -2115,22 +2062,18 @@ var require_grida_canvas_wasm = __commonJS({
2115
2062
  if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;
2116
2063
  if (typeof XMLHttpRequest != "undefined") {
2117
2064
  throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");
2118
- } else if (read_) {
2065
+ } else {
2119
2066
  try {
2120
- obj.contents = intArrayFromString(read_(obj.url), true);
2067
+ obj.contents = readBinary(obj.url);
2121
2068
  obj.usedBytes = obj.contents.length;
2122
2069
  } catch (e) {
2123
2070
  throw new FS.ErrnoError(29);
2124
2071
  }
2125
- } else {
2126
- throw new Error("Cannot load without read() or XMLHttpRequest.");
2127
2072
  }
2128
2073
  }, createLazyFile(parent, name, url, canRead, canWrite) {
2129
2074
  class LazyUint8Array {
2130
- constructor() {
2131
- this.lengthKnown = false;
2132
- this.chunks = [];
2133
- }
2075
+ lengthKnown = false;
2076
+ chunks = [];
2134
2077
  get(idx) {
2135
2078
  if (idx > this.length - 1 || idx < 0) {
2136
2079
  return void 0;
@@ -2279,29 +2222,39 @@ var require_grida_canvas_wasm = __commonJS({
2279
2222
  }
2280
2223
  return dir;
2281
2224
  }
2282
- return PATH.join2(dir, path);
2283
- }, doStat(func, path, buf) {
2284
- var stat = func(path);
2225
+ return dir + "/" + path;
2226
+ }, writeStat(buf, stat) {
2285
2227
  HEAP32[buf >> 2] = stat.dev;
2286
2228
  HEAP32[buf + 4 >> 2] = stat.mode;
2287
2229
  HEAPU32[buf + 8 >> 2] = stat.nlink;
2288
2230
  HEAP32[buf + 12 >> 2] = stat.uid;
2289
2231
  HEAP32[buf + 16 >> 2] = stat.gid;
2290
2232
  HEAP32[buf + 20 >> 2] = stat.rdev;
2291
- tempI64 = [stat.size >>> 0, (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 24 >> 2] = tempI64[0], HEAP32[buf + 28 >> 2] = tempI64[1];
2233
+ HEAP64[buf + 24 >> 3] = BigInt(stat.size);
2292
2234
  HEAP32[buf + 32 >> 2] = 4096;
2293
2235
  HEAP32[buf + 36 >> 2] = stat.blocks;
2294
2236
  var atime = stat.atime.getTime();
2295
2237
  var mtime = stat.mtime.getTime();
2296
2238
  var ctime = stat.ctime.getTime();
2297
- tempI64 = [Math.floor(atime / 1e3) >>> 0, (tempDouble = Math.floor(atime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];
2298
- HEAPU32[buf + 48 >> 2] = atime % 1e3 * 1e3;
2299
- tempI64 = [Math.floor(mtime / 1e3) >>> 0, (tempDouble = Math.floor(mtime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1];
2300
- HEAPU32[buf + 64 >> 2] = mtime % 1e3 * 1e3;
2301
- tempI64 = [Math.floor(ctime / 1e3) >>> 0, (tempDouble = Math.floor(ctime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1];
2302
- HEAPU32[buf + 80 >> 2] = ctime % 1e3 * 1e3;
2303
- tempI64 = [stat.ino >>> 0, (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1];
2239
+ HEAP64[buf + 40 >> 3] = BigInt(Math.floor(atime / 1e3));
2240
+ HEAPU32[buf + 48 >> 2] = atime % 1e3 * 1e3 * 1e3;
2241
+ HEAP64[buf + 56 >> 3] = BigInt(Math.floor(mtime / 1e3));
2242
+ HEAPU32[buf + 64 >> 2] = mtime % 1e3 * 1e3 * 1e3;
2243
+ HEAP64[buf + 72 >> 3] = BigInt(Math.floor(ctime / 1e3));
2244
+ HEAPU32[buf + 80 >> 2] = ctime % 1e3 * 1e3 * 1e3;
2245
+ HEAP64[buf + 88 >> 3] = BigInt(stat.ino);
2304
2246
  return 0;
2247
+ }, writeStatFs(buf, stats) {
2248
+ HEAP32[buf + 4 >> 2] = stats.bsize;
2249
+ HEAP32[buf + 40 >> 2] = stats.bsize;
2250
+ HEAP32[buf + 8 >> 2] = stats.blocks;
2251
+ HEAP32[buf + 12 >> 2] = stats.bfree;
2252
+ HEAP32[buf + 16 >> 2] = stats.bavail;
2253
+ HEAP32[buf + 20 >> 2] = stats.files;
2254
+ HEAP32[buf + 24 >> 2] = stats.ffree;
2255
+ HEAP32[buf + 28 >> 2] = stats.fsid;
2256
+ HEAP32[buf + 44 >> 2] = stats.flags;
2257
+ HEAP32[buf + 36 >> 2] = stats.namelen;
2305
2258
  }, doMsync(addr, stream, len, flags, offset) {
2306
2259
  if (!FS.isFile(stream.node.mode)) {
2307
2260
  throw new FS.ErrnoError(43);
@@ -2363,8 +2316,7 @@ var require_grida_canvas_wasm = __commonJS({
2363
2316
  }
2364
2317
  function ___syscall_fstat64(fd, buf) {
2365
2318
  try {
2366
- var stream = SYSCALLS.getStreamFromFD(fd);
2367
- return SYSCALLS.doStat(FS.stat, stream.path, buf);
2319
+ return SYSCALLS.writeStat(buf, FS.fstat(fd));
2368
2320
  } catch (e) {
2369
2321
  if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
2370
2322
  return -e.errno;
@@ -2476,7 +2428,7 @@ var require_grida_canvas_wasm = __commonJS({
2476
2428
  function ___syscall_lstat64(path, buf) {
2477
2429
  try {
2478
2430
  path = SYSCALLS.getStr(path);
2479
- return SYSCALLS.doStat(FS.lstat, path, buf);
2431
+ return SYSCALLS.writeStat(buf, FS.lstat(path));
2480
2432
  } catch (e) {
2481
2433
  if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
2482
2434
  return -e.errno;
@@ -2489,7 +2441,7 @@ var require_grida_canvas_wasm = __commonJS({
2489
2441
  var allowEmpty = flags & 4096;
2490
2442
  flags = flags & ~6400;
2491
2443
  path = SYSCALLS.calculateAt(dirfd, path, allowEmpty);
2492
- return SYSCALLS.doStat(nofollow ? FS.lstat : FS.stat, path, buf);
2444
+ return SYSCALLS.writeStat(buf, nofollow ? FS.lstat(path) : FS.stat(path));
2493
2445
  } catch (e) {
2494
2446
  if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
2495
2447
  return -e.errno;
@@ -2510,24 +2462,21 @@ var require_grida_canvas_wasm = __commonJS({
2510
2462
  function ___syscall_stat64(path, buf) {
2511
2463
  try {
2512
2464
  path = SYSCALLS.getStr(path);
2513
- return SYSCALLS.doStat(FS.stat, path, buf);
2465
+ return SYSCALLS.writeStat(buf, FS.stat(path));
2514
2466
  } catch (e) {
2515
2467
  if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
2516
2468
  return -e.errno;
2517
2469
  }
2518
2470
  }
2519
- var __abort_js = () => {
2520
- abort("");
2521
- };
2522
- var nowIsMonotonic = 1;
2523
- var __emscripten_get_now_is_monotonic = () => nowIsMonotonic;
2524
- var __emscripten_memcpy_js = (dest, src, num) => HEAPU8.copyWithin(dest, src, src + num);
2471
+ var __abort_js = () => abort("");
2525
2472
  var __emscripten_throw_longjmp = () => {
2526
2473
  throw Infinity;
2527
2474
  };
2528
- var convertI32PairToI53Checked = (lo, hi) => hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;
2529
- function __gmtime_js(time_low, time_high, tmPtr) {
2530
- var time = convertI32PairToI53Checked(time_low, time_high);
2475
+ var INT53_MAX = 9007199254740992;
2476
+ var INT53_MIN = -9007199254740992;
2477
+ var bigintToI53Checked = (num) => num < INT53_MIN || num > INT53_MAX ? NaN : Number(num);
2478
+ function __gmtime_js(time, tmPtr) {
2479
+ time = bigintToI53Checked(time);
2531
2480
  var date = new Date(time * 1e3);
2532
2481
  HEAP32[tmPtr >> 2] = date.getUTCSeconds();
2533
2482
  HEAP32[tmPtr + 4 >> 2] = date.getUTCMinutes();
@@ -2540,8 +2489,8 @@ var require_grida_canvas_wasm = __commonJS({
2540
2489
  var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0;
2541
2490
  HEAP32[tmPtr + 28 >> 2] = yday;
2542
2491
  }
2543
- function __mmap_js(len, prot, flags, fd, offset_low, offset_high, allocated, addr) {
2544
- var offset = convertI32PairToI53Checked(offset_low, offset_high);
2492
+ function __mmap_js(len, prot, flags, fd, offset, allocated, addr) {
2493
+ offset = bigintToI53Checked(offset);
2545
2494
  try {
2546
2495
  if (isNaN(offset)) return 61;
2547
2496
  var stream = SYSCALLS.getStreamFromFD(fd);
@@ -2555,8 +2504,8 @@ var require_grida_canvas_wasm = __commonJS({
2555
2504
  return -e.errno;
2556
2505
  }
2557
2506
  }
2558
- function __munmap_js(addr, len, prot, flags, fd, offset_low, offset_high) {
2559
- var offset = convertI32PairToI53Checked(offset_low, offset_high);
2507
+ function __munmap_js(addr, len, prot, flags, fd, offset) {
2508
+ offset = bigintToI53Checked(offset);
2560
2509
  try {
2561
2510
  var stream = SYSCALLS.getStreamFromFD(fd);
2562
2511
  if (prot & 2) {
@@ -2576,9 +2525,15 @@ var require_grida_canvas_wasm = __commonJS({
2576
2525
  var stdTimezoneOffset = Math.max(winterOffset, summerOffset);
2577
2526
  HEAPU32[timezone >> 2] = stdTimezoneOffset * 60;
2578
2527
  HEAP32[daylight >> 2] = Number(winterOffset != summerOffset);
2579
- var extractZone = (date) => date.toLocaleTimeString(void 0, { hour12: false, timeZoneName: "short" }).split(" ")[1];
2580
- var winterName = extractZone(winter);
2581
- var summerName = extractZone(summer);
2528
+ var extractZone = (timezoneOffset) => {
2529
+ var sign = timezoneOffset >= 0 ? "-" : "+";
2530
+ var absOffset = Math.abs(timezoneOffset);
2531
+ var hours = String(Math.floor(absOffset / 60)).padStart(2, "0");
2532
+ var minutes = String(absOffset % 60).padStart(2, "0");
2533
+ return `UTC${sign}${hours}${minutes}`;
2534
+ };
2535
+ var winterName = extractZone(winterOffset);
2536
+ var summerName = extractZone(summerOffset);
2582
2537
  if (summerOffset < winterOffset) {
2583
2538
  stringToUTF8(winterName, std_name, 17);
2584
2539
  stringToUTF8(summerName, dst_name, 17);
@@ -2587,9 +2542,28 @@ var require_grida_canvas_wasm = __commonJS({
2587
2542
  stringToUTF8(summerName, std_name, 17);
2588
2543
  }
2589
2544
  };
2545
+ var _emscripten_get_now = () => performance.now();
2590
2546
  var _emscripten_date_now = () => Date.now();
2591
- var _emscripten_get_now;
2592
- _emscripten_get_now = () => performance.now();
2547
+ var nowIsMonotonic = 1;
2548
+ var checkWasiClock = (clock_id) => clock_id >= 0 && clock_id <= 3;
2549
+ function _clock_time_get(clk_id, ignored_precision, ptime) {
2550
+ ignored_precision = bigintToI53Checked(ignored_precision);
2551
+ if (!checkWasiClock(clk_id)) {
2552
+ return 28;
2553
+ }
2554
+ var now;
2555
+ if (clk_id === 0) {
2556
+ now = _emscripten_date_now();
2557
+ } else if (nowIsMonotonic) {
2558
+ now = _emscripten_get_now();
2559
+ } else {
2560
+ return 52;
2561
+ }
2562
+ var nsec = Math.round(now * 1e3 * 1e3);
2563
+ HEAP64[ptime >> 3] = BigInt(nsec);
2564
+ return 0;
2565
+ }
2566
+ var GLctx;
2593
2567
  var webgl_enable_ANGLE_instanced_arrays = (ctx) => {
2594
2568
  var ext = ctx.getExtension("ANGLE_instanced_arrays");
2595
2569
  if (ext) {
@@ -2618,12 +2592,15 @@ var require_grida_canvas_wasm = __commonJS({
2618
2592
  };
2619
2593
  var webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance = (ctx) => !!(ctx.dibvbi = ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"));
2620
2594
  var webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance = (ctx) => !!(ctx.mdibvbi = ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"));
2595
+ var webgl_enable_EXT_polygon_offset_clamp = (ctx) => !!(ctx.extPolygonOffsetClamp = ctx.getExtension("EXT_polygon_offset_clamp"));
2596
+ var webgl_enable_EXT_clip_control = (ctx) => !!(ctx.extClipControl = ctx.getExtension("EXT_clip_control"));
2597
+ var webgl_enable_WEBGL_polygon_mode = (ctx) => !!(ctx.webglPolygonMode = ctx.getExtension("WEBGL_polygon_mode"));
2621
2598
  var webgl_enable_WEBGL_multi_draw = (ctx) => !!(ctx.multiDrawWebgl = ctx.getExtension("WEBGL_multi_draw"));
2622
2599
  var getEmscriptenSupportedExtensions = (ctx) => {
2623
- var supportedExtensions = ["ANGLE_instanced_arrays", "EXT_blend_minmax", "EXT_disjoint_timer_query", "EXT_frag_depth", "EXT_shader_texture_lod", "EXT_sRGB", "OES_element_index_uint", "OES_fbo_render_mipmap", "OES_standard_derivatives", "OES_texture_float", "OES_texture_half_float", "OES_texture_half_float_linear", "OES_vertex_array_object", "WEBGL_color_buffer_float", "WEBGL_depth_texture", "WEBGL_draw_buffers", "EXT_color_buffer_float", "EXT_conservative_depth", "EXT_disjoint_timer_query_webgl2", "EXT_texture_norm16", "NV_shader_noperspective_interpolation", "WEBGL_clip_cull_distance", "EXT_color_buffer_half_float", "EXT_depth_clamp", "EXT_float_blend", "EXT_texture_compression_bptc", "EXT_texture_compression_rgtc", "EXT_texture_filter_anisotropic", "KHR_parallel_shader_compile", "OES_texture_float_linear", "WEBGL_blend_func_extended", "WEBGL_compressed_texture_astc", "WEBGL_compressed_texture_etc", "WEBGL_compressed_texture_etc1", "WEBGL_compressed_texture_s3tc", "WEBGL_compressed_texture_s3tc_srgb", "WEBGL_debug_renderer_info", "WEBGL_debug_shaders", "WEBGL_lose_context", "WEBGL_multi_draw"];
2600
+ var supportedExtensions = ["ANGLE_instanced_arrays", "EXT_blend_minmax", "EXT_disjoint_timer_query", "EXT_frag_depth", "EXT_shader_texture_lod", "EXT_sRGB", "OES_element_index_uint", "OES_fbo_render_mipmap", "OES_standard_derivatives", "OES_texture_float", "OES_texture_half_float", "OES_texture_half_float_linear", "OES_vertex_array_object", "WEBGL_color_buffer_float", "WEBGL_depth_texture", "WEBGL_draw_buffers", "EXT_color_buffer_float", "EXT_conservative_depth", "EXT_disjoint_timer_query_webgl2", "EXT_texture_norm16", "NV_shader_noperspective_interpolation", "WEBGL_clip_cull_distance", "EXT_clip_control", "EXT_color_buffer_half_float", "EXT_depth_clamp", "EXT_float_blend", "EXT_polygon_offset_clamp", "EXT_texture_compression_bptc", "EXT_texture_compression_rgtc", "EXT_texture_filter_anisotropic", "KHR_parallel_shader_compile", "OES_texture_float_linear", "WEBGL_blend_func_extended", "WEBGL_compressed_texture_astc", "WEBGL_compressed_texture_etc", "WEBGL_compressed_texture_etc1", "WEBGL_compressed_texture_s3tc", "WEBGL_compressed_texture_s3tc_srgb", "WEBGL_debug_renderer_info", "WEBGL_debug_shaders", "WEBGL_lose_context", "WEBGL_multi_draw", "WEBGL_polygon_mode"];
2624
2601
  return (ctx.getSupportedExtensions() || []).filter((ext) => supportedExtensions.includes(ext));
2625
2602
  };
2626
- var GL = { counter: 1, buffers: [], programs: [], framebuffers: [], renderbuffers: [], textures: [], shaders: [], vaos: [], contexts: [], offscreenCanvases: {}, queries: [], samplers: [], transformFeedbacks: [], syncs: [], stringCache: {}, stringiCache: {}, unpackAlignment: 4, recordError: (errorCode) => {
2603
+ var GL = { counter: 1, buffers: [], programs: [], framebuffers: [], renderbuffers: [], textures: [], shaders: [], vaos: [], contexts: [], offscreenCanvases: {}, queries: [], samplers: [], transformFeedbacks: [], syncs: [], stringCache: {}, stringiCache: {}, unpackAlignment: 4, unpackRowLength: 0, recordError: (errorCode) => {
2627
2604
  if (!GL.lastError) {
2628
2605
  GL.lastError = errorCode;
2629
2606
  }
@@ -2678,16 +2655,17 @@ var require_grida_canvas_wasm = __commonJS({
2678
2655
  }, makeContextCurrent: (contextHandle) => {
2679
2656
  var _a2;
2680
2657
  GL.currentContext = GL.contexts[contextHandle];
2681
- Module.ctx = GLctx = (_a2 = GL.currentContext) == null ? void 0 : _a2.GLctx;
2658
+ Module["ctx"] = GLctx = (_a2 = GL.currentContext) == null ? void 0 : _a2.GLctx;
2682
2659
  return !(contextHandle && !GLctx);
2683
2660
  }, getContext: (contextHandle) => GL.contexts[contextHandle], deleteContext: (contextHandle) => {
2661
+ var _a2;
2684
2662
  if (GL.currentContext === GL.contexts[contextHandle]) {
2685
2663
  GL.currentContext = null;
2686
2664
  }
2687
2665
  if (typeof JSEvents == "object") {
2688
2666
  JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);
2689
2667
  }
2690
- if (GL.contexts[contextHandle] && GL.contexts[contextHandle].GLctx.canvas) {
2668
+ if ((_a2 = GL.contexts[contextHandle]) == null ? void 0 : _a2.GLctx.canvas) {
2691
2669
  GL.contexts[contextHandle].GLctx.canvas.GLctxObject = void 0;
2692
2670
  }
2693
2671
  GL.contexts[contextHandle] = null;
@@ -2696,6 +2674,10 @@ var require_grida_canvas_wasm = __commonJS({
2696
2674
  if (context.initExtensionsDone) return;
2697
2675
  context.initExtensionsDone = true;
2698
2676
  var GLctx2 = context.GLctx;
2677
+ webgl_enable_WEBGL_multi_draw(GLctx2);
2678
+ webgl_enable_EXT_polygon_offset_clamp(GLctx2);
2679
+ webgl_enable_EXT_clip_control(GLctx2);
2680
+ webgl_enable_WEBGL_polygon_mode(GLctx2);
2699
2681
  webgl_enable_ANGLE_instanced_arrays(GLctx2);
2700
2682
  webgl_enable_OES_vertex_array_object(GLctx2);
2701
2683
  webgl_enable_WEBGL_draw_buffers(GLctx2);
@@ -2707,7 +2689,6 @@ var require_grida_canvas_wasm = __commonJS({
2707
2689
  if (context.version < 2 || !GLctx2.disjointTimerQueryExt) {
2708
2690
  GLctx2.disjointTimerQueryExt = GLctx2.getExtension("EXT_disjoint_timer_query");
2709
2691
  }
2710
- webgl_enable_WEBGL_multi_draw(GLctx2);
2711
2692
  getEmscriptenSupportedExtensions(GLctx2).forEach((ext) => {
2712
2693
  if (!ext.includes("lose_context") && !ext.includes("debug")) {
2713
2694
  GLctx2.getExtension(ext);
@@ -2833,12 +2814,15 @@ var require_grida_canvas_wasm = __commonJS({
2833
2814
  var _emscripten_glClearDepthf = _glClearDepthf;
2834
2815
  var _glClearStencil = (x0) => GLctx.clearStencil(x0);
2835
2816
  var _emscripten_glClearStencil = _glClearStencil;
2836
- var convertI32PairToI53 = (lo, hi) => (lo >>> 0) + hi * 4294967296;
2837
- var _glClientWaitSync = (sync, flags, timeout_low, timeout_high) => {
2838
- var timeout = convertI32PairToI53(timeout_low, timeout_high);
2817
+ var _glClientWaitSync = (sync, flags, timeout) => {
2818
+ timeout = Number(timeout);
2839
2819
  return GLctx.clientWaitSync(GL.syncs[sync], flags, timeout);
2840
2820
  };
2841
2821
  var _emscripten_glClientWaitSync = _glClientWaitSync;
2822
+ var _glClipControlEXT = (origin, depth) => {
2823
+ GLctx.extClipControl["clipControlEXT"](origin, depth);
2824
+ };
2825
+ var _emscripten_glClipControlEXT = _glClipControlEXT;
2842
2826
  var _glColorMask = (red, green, blue, alpha) => {
2843
2827
  GLctx.colorMask(!!red, !!green, !!blue, !!alpha);
2844
2828
  };
@@ -2856,7 +2840,7 @@ var require_grida_canvas_wasm = __commonJS({
2856
2840
  GLctx.compressedTexImage2D(target, level, internalFormat, width, height, border, HEAPU8, data, imageSize);
2857
2841
  return;
2858
2842
  }
2859
- GLctx.compressedTexImage2D(target, level, internalFormat, width, height, border, data ? HEAPU8.subarray(data, data + imageSize) : null);
2843
+ GLctx.compressedTexImage2D(target, level, internalFormat, width, height, border, HEAPU8.subarray(data, data + imageSize));
2860
2844
  };
2861
2845
  var _emscripten_glCompressedTexImage2D = _glCompressedTexImage2D;
2862
2846
  var _glCompressedTexImage3D = (target, level, internalFormat, width, height, depth, border, imageSize, data) => {
@@ -2876,7 +2860,7 @@ var require_grida_canvas_wasm = __commonJS({
2876
2860
  GLctx.compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, HEAPU8, data, imageSize);
2877
2861
  return;
2878
2862
  }
2879
- GLctx.compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, data ? HEAPU8.subarray(data, data + imageSize) : null);
2863
+ GLctx.compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, HEAPU8.subarray(data, data + imageSize));
2880
2864
  };
2881
2865
  var _emscripten_glCompressedTexSubImage2D = _glCompressedTexSubImage2D;
2882
2866
  var _glCompressedTexSubImage3D = (target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data) => {
@@ -3225,13 +3209,9 @@ var require_grida_canvas_wasm = __commonJS({
3225
3209
  if (type) HEAP32[type >> 2] = info.type;
3226
3210
  }
3227
3211
  };
3228
- var _glGetActiveAttrib = (program, index, bufSize, length, size, type, name) => {
3229
- __glGetActiveAttribOrUniform("getActiveAttrib", program, index, bufSize, length, size, type, name);
3230
- };
3212
+ var _glGetActiveAttrib = (program, index, bufSize, length, size, type, name) => __glGetActiveAttribOrUniform("getActiveAttrib", program, index, bufSize, length, size, type, name);
3231
3213
  var _emscripten_glGetActiveAttrib = _glGetActiveAttrib;
3232
- var _glGetActiveUniform = (program, index, bufSize, length, size, type, name) => {
3233
- __glGetActiveAttribOrUniform("getActiveUniform", program, index, bufSize, length, size, type, name);
3234
- };
3214
+ var _glGetActiveUniform = (program, index, bufSize, length, size, type, name) => __glGetActiveAttribOrUniform("getActiveUniform", program, index, bufSize, length, size, type, name);
3235
3215
  var _emscripten_glGetActiveUniform = _glGetActiveUniform;
3236
3216
  var _glGetActiveUniformBlockName = (program, uniformBlockIndex, bufSize, length, uniformBlockName) => {
3237
3217
  program = GL.programs[program];
@@ -3309,7 +3289,7 @@ var require_grida_canvas_wasm = __commonJS({
3309
3289
  var lower = HEAPU32[ptr >> 2];
3310
3290
  HEAPU32[ptr + 4 >> 2] = (num - lower) / 4294967296;
3311
3291
  };
3312
- var webglGetExtensions = function $webglGetExtensions() {
3292
+ var webglGetExtensions = () => {
3313
3293
  var exts = getEmscriptenSupportedExtensions(GLctx);
3314
3294
  exts = exts.concat(exts.map((e) => "GL_" + e));
3315
3295
  return exts;
@@ -3584,21 +3564,24 @@ var require_grida_canvas_wasm = __commonJS({
3584
3564
  HEAP32[p >> 2] = log.length + 1;
3585
3565
  } else if (pname == 35719) {
3586
3566
  if (!program.maxUniformLength) {
3587
- for (var i2 = 0; i2 < GLctx.getProgramParameter(program, 35718); ++i2) {
3567
+ var numActiveUniforms = GLctx.getProgramParameter(program, 35718);
3568
+ for (var i2 = 0; i2 < numActiveUniforms; ++i2) {
3588
3569
  program.maxUniformLength = Math.max(program.maxUniformLength, GLctx.getActiveUniform(program, i2).name.length + 1);
3589
3570
  }
3590
3571
  }
3591
3572
  HEAP32[p >> 2] = program.maxUniformLength;
3592
3573
  } else if (pname == 35722) {
3593
3574
  if (!program.maxAttributeLength) {
3594
- for (var i2 = 0; i2 < GLctx.getProgramParameter(program, 35721); ++i2) {
3575
+ var numActiveAttributes = GLctx.getProgramParameter(program, 35721);
3576
+ for (var i2 = 0; i2 < numActiveAttributes; ++i2) {
3595
3577
  program.maxAttributeLength = Math.max(program.maxAttributeLength, GLctx.getActiveAttrib(program, i2).name.length + 1);
3596
3578
  }
3597
3579
  }
3598
3580
  HEAP32[p >> 2] = program.maxAttributeLength;
3599
3581
  } else if (pname == 35381) {
3600
3582
  if (!program.maxUniformBlockNameLength) {
3601
- for (var i2 = 0; i2 < GLctx.getProgramParameter(program, 35382); ++i2) {
3583
+ var numActiveUniformBlocks = GLctx.getProgramParameter(program, 35382);
3584
+ for (var i2 = 0; i2 < numActiveUniformBlocks; ++i2) {
3602
3585
  program.maxUniformBlockNameLength = Math.max(program.maxUniformBlockNameLength, GLctx.getActiveUniformBlockName(program, i2).length + 1);
3603
3586
  }
3604
3587
  }
@@ -3769,11 +3752,9 @@ var require_grida_canvas_wasm = __commonJS({
3769
3752
  ret = s ? stringToNewUTF8(s) : 0;
3770
3753
  break;
3771
3754
  case 7938:
3772
- var glVersion = GLctx.getParameter(7938);
3773
- if (GL.currentContext.version >= 2) glVersion = `OpenGL ES 3.0 (${glVersion})`;
3774
- else {
3775
- glVersion = `OpenGL ES 2.0 (${glVersion})`;
3776
- }
3755
+ var webGLVersion = GLctx.getParameter(7938);
3756
+ var glVersion = `OpenGL ES 2.0 (${webGLVersion})`;
3757
+ if (GL.currentContext.version >= 2) glVersion = `OpenGL ES 3.0 (${webGLVersion})`;
3777
3758
  ret = stringToNewUTF8(glVersion);
3778
3759
  break;
3779
3760
  case 35724:
@@ -3897,7 +3878,8 @@ var require_grida_canvas_wasm = __commonJS({
3897
3878
  if (!uniformLocsById) {
3898
3879
  program.uniformLocsById = uniformLocsById = {};
3899
3880
  program.uniformArrayNamesById = {};
3900
- for (i2 = 0; i2 < GLctx.getProgramParameter(program, 35718); ++i2) {
3881
+ var numActiveUniforms = GLctx.getProgramParameter(program, 35718);
3882
+ for (i2 = 0; i2 < numActiveUniforms; ++i2) {
3901
3883
  var u = GLctx.getActiveUniform(program, i2);
3902
3884
  var nm = u.name;
3903
3885
  var sz = u.size;
@@ -4156,12 +4138,22 @@ var require_grida_canvas_wasm = __commonJS({
4156
4138
  var _glPixelStorei = (pname, param) => {
4157
4139
  if (pname == 3317) {
4158
4140
  GL.unpackAlignment = param;
4141
+ } else if (pname == 3314) {
4142
+ GL.unpackRowLength = param;
4159
4143
  }
4160
4144
  GLctx.pixelStorei(pname, param);
4161
4145
  };
4162
4146
  var _emscripten_glPixelStorei = _glPixelStorei;
4147
+ var _glPolygonModeWEBGL = (face, mode) => {
4148
+ GLctx.webglPolygonMode["polygonModeWEBGL"](face, mode);
4149
+ };
4150
+ var _emscripten_glPolygonModeWEBGL = _glPolygonModeWEBGL;
4163
4151
  var _glPolygonOffset = (x0, x1) => GLctx.polygonOffset(x0, x1);
4164
4152
  var _emscripten_glPolygonOffset = _glPolygonOffset;
4153
+ var _glPolygonOffsetClampEXT = (factor, units, clamp) => {
4154
+ GLctx.extPolygonOffsetClamp["polygonOffsetClampEXT"](factor, units, clamp);
4155
+ };
4156
+ var _emscripten_glPolygonOffsetClampEXT = _glPolygonOffsetClampEXT;
4165
4157
  var _glProgramBinary = (program, binaryFormat, binary, length) => {
4166
4158
  GL.recordError(1280);
4167
4159
  };
@@ -4176,12 +4168,12 @@ var require_grida_canvas_wasm = __commonJS({
4176
4168
  var _emscripten_glQueryCounterEXT = _glQueryCounterEXT;
4177
4169
  var _glReadBuffer = (x0) => GLctx.readBuffer(x0);
4178
4170
  var _emscripten_glReadBuffer = _glReadBuffer;
4179
- var computeUnpackAlignedImageSize = (width, height, sizePerPixel, alignment) => {
4171
+ var computeUnpackAlignedImageSize = (width, height, sizePerPixel) => {
4180
4172
  function roundedToNextMultipleOf(x, y) {
4181
4173
  return x + y - 1 & -y;
4182
4174
  }
4183
- var plainRowSize = width * sizePerPixel;
4184
- var alignedRowSize = roundedToNextMultipleOf(plainRowSize, alignment);
4175
+ var plainRowSize = (GL.unpackRowLength || width) * sizePerPixel;
4176
+ var alignedRowSize = roundedToNextMultipleOf(plainRowSize, GL.unpackAlignment);
4185
4177
  return height * alignedRowSize;
4186
4178
  };
4187
4179
  var colorChannelsInGlTextureFormat = (format) => {
@@ -4202,7 +4194,7 @@ var require_grida_canvas_wasm = __commonJS({
4202
4194
  var emscriptenWebGLGetTexPixelData = (type, format, width, height, pixels, internalFormat) => {
4203
4195
  var heap = heapObjectForWebGLType(type);
4204
4196
  var sizePerPixel = colorChannelsInGlTextureFormat(format) * heap.BYTES_PER_ELEMENT;
4205
- var bytes = computeUnpackAlignedImageSize(width, height, sizePerPixel, GL.unpackAlignment);
4197
+ var bytes = computeUnpackAlignedImageSize(width, height, sizePerPixel);
4206
4198
  return heap.subarray(toTypedArrayIndex(pixels, heap), toTypedArrayIndex(pixels + bytes, heap));
4207
4199
  };
4208
4200
  var _glReadPixels = (x, y, width, height, format, type, pixels) => {
@@ -4418,8 +4410,9 @@ var require_grida_canvas_wasm = __commonJS({
4418
4410
  return;
4419
4411
  }
4420
4412
  if (count <= 144) {
4421
- var view = miniTempWebGLFloatBuffers[2 * count];
4422
- for (var i2 = 0; i2 < 2 * count; i2 += 2) {
4413
+ count *= 2;
4414
+ var view = miniTempWebGLFloatBuffers[count];
4415
+ for (var i2 = 0; i2 < count; i2 += 2) {
4423
4416
  view[i2] = HEAPF32[value + 4 * i2 >> 2];
4424
4417
  view[i2 + 1] = HEAPF32[value + (4 * i2 + 4) >> 2];
4425
4418
  }
@@ -4439,8 +4432,9 @@ var require_grida_canvas_wasm = __commonJS({
4439
4432
  return;
4440
4433
  }
4441
4434
  if (count <= 144) {
4442
- var view = miniTempWebGLIntBuffers[2 * count];
4443
- for (var i2 = 0; i2 < 2 * count; i2 += 2) {
4435
+ count *= 2;
4436
+ var view = miniTempWebGLIntBuffers[count];
4437
+ for (var i2 = 0; i2 < count; i2 += 2) {
4444
4438
  view[i2] = HEAP32[value + 4 * i2 >> 2];
4445
4439
  view[i2 + 1] = HEAP32[value + (4 * i2 + 4) >> 2];
4446
4440
  }
@@ -4468,8 +4462,9 @@ var require_grida_canvas_wasm = __commonJS({
4468
4462
  return;
4469
4463
  }
4470
4464
  if (count <= 96) {
4471
- var view = miniTempWebGLFloatBuffers[3 * count];
4472
- for (var i2 = 0; i2 < 3 * count; i2 += 3) {
4465
+ count *= 3;
4466
+ var view = miniTempWebGLFloatBuffers[count];
4467
+ for (var i2 = 0; i2 < count; i2 += 3) {
4473
4468
  view[i2] = HEAPF32[value + 4 * i2 >> 2];
4474
4469
  view[i2 + 1] = HEAPF32[value + (4 * i2 + 4) >> 2];
4475
4470
  view[i2 + 2] = HEAPF32[value + (4 * i2 + 8) >> 2];
@@ -4490,8 +4485,9 @@ var require_grida_canvas_wasm = __commonJS({
4490
4485
  return;
4491
4486
  }
4492
4487
  if (count <= 96) {
4493
- var view = miniTempWebGLIntBuffers[3 * count];
4494
- for (var i2 = 0; i2 < 3 * count; i2 += 3) {
4488
+ count *= 3;
4489
+ var view = miniTempWebGLIntBuffers[count];
4490
+ for (var i2 = 0; i2 < count; i2 += 3) {
4495
4491
  view[i2] = HEAP32[value + 4 * i2 >> 2];
4496
4492
  view[i2 + 1] = HEAP32[value + (4 * i2 + 4) >> 2];
4497
4493
  view[i2 + 2] = HEAP32[value + (4 * i2 + 8) >> 2];
@@ -4523,7 +4519,8 @@ var require_grida_canvas_wasm = __commonJS({
4523
4519
  var view = miniTempWebGLFloatBuffers[4 * count];
4524
4520
  var heap = HEAPF32;
4525
4521
  value = value >> 2;
4526
- for (var i2 = 0; i2 < 4 * count; i2 += 4) {
4522
+ count *= 4;
4523
+ for (var i2 = 0; i2 < count; i2 += 4) {
4527
4524
  var dst = value + i2;
4528
4525
  view[i2] = heap[dst];
4529
4526
  view[i2 + 1] = heap[dst + 1];
@@ -4546,8 +4543,9 @@ var require_grida_canvas_wasm = __commonJS({
4546
4543
  return;
4547
4544
  }
4548
4545
  if (count <= 72) {
4549
- var view = miniTempWebGLIntBuffers[4 * count];
4550
- for (var i2 = 0; i2 < 4 * count; i2 += 4) {
4546
+ count *= 4;
4547
+ var view = miniTempWebGLIntBuffers[count];
4548
+ for (var i2 = 0; i2 < count; i2 += 4) {
4551
4549
  view[i2] = HEAP32[value + 4 * i2 >> 2];
4552
4550
  view[i2 + 1] = HEAP32[value + (4 * i2 + 4) >> 2];
4553
4551
  view[i2 + 2] = HEAP32[value + (4 * i2 + 8) >> 2];
@@ -4578,8 +4576,9 @@ var require_grida_canvas_wasm = __commonJS({
4578
4576
  return;
4579
4577
  }
4580
4578
  if (count <= 72) {
4581
- var view = miniTempWebGLFloatBuffers[4 * count];
4582
- for (var i2 = 0; i2 < 4 * count; i2 += 4) {
4579
+ count *= 4;
4580
+ var view = miniTempWebGLFloatBuffers[count];
4581
+ for (var i2 = 0; i2 < count; i2 += 4) {
4583
4582
  view[i2] = HEAPF32[value + 4 * i2 >> 2];
4584
4583
  view[i2 + 1] = HEAPF32[value + (4 * i2 + 4) >> 2];
4585
4584
  view[i2 + 2] = HEAPF32[value + (4 * i2 + 8) >> 2];
@@ -4605,8 +4604,9 @@ var require_grida_canvas_wasm = __commonJS({
4605
4604
  return;
4606
4605
  }
4607
4606
  if (count <= 32) {
4608
- var view = miniTempWebGLFloatBuffers[9 * count];
4609
- for (var i2 = 0; i2 < 9 * count; i2 += 9) {
4607
+ count *= 9;
4608
+ var view = miniTempWebGLFloatBuffers[count];
4609
+ for (var i2 = 0; i2 < count; i2 += 9) {
4610
4610
  view[i2] = HEAPF32[value + 4 * i2 >> 2];
4611
4611
  view[i2 + 1] = HEAPF32[value + (4 * i2 + 4) >> 2];
4612
4612
  view[i2 + 2] = HEAPF32[value + (4 * i2 + 8) >> 2];
@@ -4640,7 +4640,8 @@ var require_grida_canvas_wasm = __commonJS({
4640
4640
  var view = miniTempWebGLFloatBuffers[16 * count];
4641
4641
  var heap = HEAPF32;
4642
4642
  value = value >> 2;
4643
- for (var i2 = 0; i2 < 16 * count; i2 += 16) {
4643
+ count *= 16;
4644
+ for (var i2 = 0; i2 < count; i2 += 16) {
4644
4645
  var dst = value + i2;
4645
4646
  view[i2] = heap[dst];
4646
4647
  view[i2 + 1] = heap[dst + 1];
@@ -4741,8 +4742,8 @@ var require_grida_canvas_wasm = __commonJS({
4741
4742
  var _emscripten_glVertexAttribPointer = _glVertexAttribPointer;
4742
4743
  var _glViewport = (x0, x1, x2, x3) => GLctx.viewport(x0, x1, x2, x3);
4743
4744
  var _emscripten_glViewport = _glViewport;
4744
- var _glWaitSync = (sync, flags, timeout_low, timeout_high) => {
4745
- var timeout = convertI32PairToI53(timeout_low, timeout_high);
4745
+ var _glWaitSync = (sync, flags, timeout) => {
4746
+ timeout = Number(timeout);
4746
4747
  GLctx.waitSync(GL.syncs[sync], flags, timeout);
4747
4748
  };
4748
4749
  var _emscripten_glWaitSync = _glWaitSync;
@@ -4751,7 +4752,6 @@ var require_grida_canvas_wasm = __commonJS({
4751
4752
  var getWasmTableEntry = (funcPtr) => {
4752
4753
  var func = wasmTableMirror[funcPtr];
4753
4754
  if (!func) {
4754
- if (funcPtr >= wasmTableMirror.length) wasmTableMirror.length = funcPtr + 1;
4755
4755
  wasmTableMirror[funcPtr] = func = wasmTable.get(funcPtr);
4756
4756
  }
4757
4757
  return func;
@@ -4767,7 +4767,7 @@ var require_grida_canvas_wasm = __commonJS({
4767
4767
  var getHeapMax = () => 2147483648;
4768
4768
  var growMemory = (size) => {
4769
4769
  var b = wasmMemory.buffer;
4770
- var pages = (size - b.byteLength + 65535) / 65536;
4770
+ var pages = (size - b.byteLength + 65535) / 65536 | 0;
4771
4771
  try {
4772
4772
  wasmMemory.grow(pages);
4773
4773
  updateMemoryViews();
@@ -4782,11 +4782,10 @@ var require_grida_canvas_wasm = __commonJS({
4782
4782
  if (requestedSize > maxHeapSize) {
4783
4783
  return false;
4784
4784
  }
4785
- var alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple;
4786
4785
  for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {
4787
4786
  var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown);
4788
4787
  overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);
4789
- var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));
4788
+ var newSize = Math.min(maxHeapSize, alignMemory(Math.max(requestedSize, overGrownHeapSize), 65536));
4790
4789
  var replacement = growMemory(newSize);
4791
4790
  if (replacement) {
4792
4791
  return true;
@@ -4799,7 +4798,7 @@ var require_grida_canvas_wasm = __commonJS({
4799
4798
  var getEnvStrings = () => {
4800
4799
  if (!getEnvStrings.strings) {
4801
4800
  var lang = (typeof navigator == "object" && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8";
4802
- var env = { "USER": "web_user", "LOGNAME": "web_user", "PATH": "/", "PWD": "/", "HOME": "/home/web_user", "LANG": lang, "_": getExecutableName() };
4801
+ var env = { USER: "web_user", LOGNAME: "web_user", PATH: "/", PWD: "/", HOME: "/home/web_user", LANG: lang, _: getExecutableName() };
4803
4802
  for (var x in ENV) {
4804
4803
  if (ENV[x] === void 0) delete env[x];
4805
4804
  else env[x] = ENV[x];
@@ -4812,27 +4811,24 @@ var require_grida_canvas_wasm = __commonJS({
4812
4811
  }
4813
4812
  return getEnvStrings.strings;
4814
4813
  };
4815
- var stringToAscii = (str, buffer) => {
4816
- for (var i2 = 0; i2 < str.length; ++i2) {
4817
- HEAP8[buffer++] = str.charCodeAt(i2);
4818
- }
4819
- HEAP8[buffer] = 0;
4820
- };
4821
4814
  var _environ_get = (__environ, environ_buf) => {
4822
4815
  var bufSize = 0;
4823
- getEnvStrings().forEach((string, i2) => {
4816
+ var envp = 0;
4817
+ for (var string of getEnvStrings()) {
4824
4818
  var ptr = environ_buf + bufSize;
4825
- HEAPU32[__environ + i2 * 4 >> 2] = ptr;
4826
- stringToAscii(string, ptr);
4827
- bufSize += string.length + 1;
4828
- });
4819
+ HEAPU32[__environ + envp >> 2] = ptr;
4820
+ bufSize += stringToUTF8(string, ptr, Infinity) + 1;
4821
+ envp += 4;
4822
+ }
4829
4823
  return 0;
4830
4824
  };
4831
4825
  var _environ_sizes_get = (penviron_count, penviron_buf_size) => {
4832
4826
  var strings = getEnvStrings();
4833
4827
  HEAPU32[penviron_count >> 2] = strings.length;
4834
4828
  var bufSize = 0;
4835
- strings.forEach((string) => bufSize += string.length + 1);
4829
+ for (var string of strings) {
4830
+ bufSize += lengthBytesUTF8(string) + 1;
4831
+ }
4836
4832
  HEAPU32[penviron_buf_size >> 2] = bufSize;
4837
4833
  return 0;
4838
4834
  };
@@ -4878,8 +4874,8 @@ var require_grida_canvas_wasm = __commonJS({
4878
4874
  }
4879
4875
  return ret;
4880
4876
  };
4881
- function _fd_pread(fd, iov, iovcnt, offset_low, offset_high, pnum) {
4882
- var offset = convertI32PairToI53Checked(offset_low, offset_high);
4877
+ function _fd_pread(fd, iov, iovcnt, offset, pnum) {
4878
+ offset = bigintToI53Checked(offset);
4883
4879
  try {
4884
4880
  if (isNaN(offset)) return 61;
4885
4881
  var stream = SYSCALLS.getStreamFromFD(fd);
@@ -4902,13 +4898,13 @@ var require_grida_canvas_wasm = __commonJS({
4902
4898
  return e.errno;
4903
4899
  }
4904
4900
  }
4905
- function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {
4906
- var offset = convertI32PairToI53Checked(offset_low, offset_high);
4901
+ function _fd_seek(fd, offset, whence, newOffset) {
4902
+ offset = bigintToI53Checked(offset);
4907
4903
  try {
4908
4904
  if (isNaN(offset)) return 61;
4909
4905
  var stream = SYSCALLS.getStreamFromFD(fd);
4910
4906
  FS.llseek(stream, offset, whence);
4911
- tempI64 = [stream.position >>> 0, (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];
4907
+ HEAP64[newOffset >> 3] = BigInt(stream.position);
4912
4908
  if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;
4913
4909
  return 0;
4914
4910
  } catch (e) {
@@ -4925,6 +4921,9 @@ var require_grida_canvas_wasm = __commonJS({
4925
4921
  var curr = FS.write(stream, HEAP8, ptr, len, offset);
4926
4922
  if (curr < 0) return -1;
4927
4923
  ret += curr;
4924
+ if (curr < len) {
4925
+ break;
4926
+ }
4928
4927
  if (typeof offset != "undefined") {
4929
4928
  offset += curr;
4930
4929
  }
@@ -4942,166 +4941,16 @@ var require_grida_canvas_wasm = __commonJS({
4942
4941
  return e.errno;
4943
4942
  }
4944
4943
  }
4945
- var _getentropy = (buffer, size) => {
4946
- randomFill(HEAPU8.subarray(buffer, buffer + size));
4947
- return 0;
4948
- };
4949
4944
  var _llvm_eh_typeid_for = (type) => type;
4950
- var isLeapYear = (year) => year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
4951
- var arraySum = (array, index) => {
4952
- var sum = 0;
4953
- for (var i2 = 0; i2 <= index; sum += array[i2++]) {
4954
- }
4955
- return sum;
4956
- };
4957
- var MONTH_DAYS_LEAP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
4958
- var MONTH_DAYS_REGULAR = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
4959
- var addDays = (date, days) => {
4960
- var newDate = new Date(date.getTime());
4961
- while (days > 0) {
4962
- var leap = isLeapYear(newDate.getFullYear());
4963
- var currentMonth = newDate.getMonth();
4964
- var daysInCurrentMonth = (leap ? MONTH_DAYS_LEAP : MONTH_DAYS_REGULAR)[currentMonth];
4965
- if (days > daysInCurrentMonth - newDate.getDate()) {
4966
- days -= daysInCurrentMonth - newDate.getDate() + 1;
4967
- newDate.setDate(1);
4968
- if (currentMonth < 11) {
4969
- newDate.setMonth(currentMonth + 1);
4970
- } else {
4971
- newDate.setMonth(0);
4972
- newDate.setFullYear(newDate.getFullYear() + 1);
4973
- }
4974
- } else {
4975
- newDate.setDate(newDate.getDate() + days);
4976
- return newDate;
4977
- }
4978
- }
4979
- return newDate;
4980
- };
4981
- var writeArrayToMemory = (array, buffer) => {
4982
- HEAP8.set(array, buffer);
4983
- };
4984
- var _strftime = (s, maxsize, format, tm) => {
4985
- var tm_zone = HEAPU32[tm + 40 >> 2];
4986
- var date = { tm_sec: HEAP32[tm >> 2], tm_min: HEAP32[tm + 4 >> 2], tm_hour: HEAP32[tm + 8 >> 2], tm_mday: HEAP32[tm + 12 >> 2], tm_mon: HEAP32[tm + 16 >> 2], tm_year: HEAP32[tm + 20 >> 2], tm_wday: HEAP32[tm + 24 >> 2], tm_yday: HEAP32[tm + 28 >> 2], tm_isdst: HEAP32[tm + 32 >> 2], tm_gmtoff: HEAP32[tm + 36 >> 2], tm_zone: tm_zone ? UTF8ToString(tm_zone) : "" };
4987
- var pattern = UTF8ToString(format);
4988
- var EXPANSION_RULES_1 = { "%c": "%a %b %d %H:%M:%S %Y", "%D": "%m/%d/%y", "%F": "%Y-%m-%d", "%h": "%b", "%r": "%I:%M:%S %p", "%R": "%H:%M", "%T": "%H:%M:%S", "%x": "%m/%d/%y", "%X": "%H:%M:%S", "%Ec": "%c", "%EC": "%C", "%Ex": "%m/%d/%y", "%EX": "%H:%M:%S", "%Ey": "%y", "%EY": "%Y", "%Od": "%d", "%Oe": "%e", "%OH": "%H", "%OI": "%I", "%Om": "%m", "%OM": "%M", "%OS": "%S", "%Ou": "%u", "%OU": "%U", "%OV": "%V", "%Ow": "%w", "%OW": "%W", "%Oy": "%y" };
4989
- for (var rule in EXPANSION_RULES_1) {
4990
- pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_1[rule]);
4991
- }
4992
- var WEEKDAYS = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
4993
- var MONTHS = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
4994
- function leadingSomething(value, digits, character) {
4995
- var str = typeof value == "number" ? value.toString() : value || "";
4996
- while (str.length < digits) {
4997
- str = character[0] + str;
4998
- }
4999
- return str;
5000
- }
5001
- function leadingNulls(value, digits) {
5002
- return leadingSomething(value, digits, "0");
5003
- }
5004
- function compareByDay(date1, date2) {
5005
- function sgn(value) {
5006
- return value < 0 ? -1 : value > 0 ? 1 : 0;
5007
- }
5008
- var compare;
5009
- if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) {
5010
- if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) {
5011
- compare = sgn(date1.getDate() - date2.getDate());
5012
- }
5013
- }
5014
- return compare;
5015
- }
5016
- function getFirstWeekStartDate(janFourth) {
5017
- switch (janFourth.getDay()) {
5018
- case 0:
5019
- return new Date(janFourth.getFullYear() - 1, 11, 29);
5020
- case 1:
5021
- return janFourth;
5022
- case 2:
5023
- return new Date(janFourth.getFullYear(), 0, 3);
5024
- case 3:
5025
- return new Date(janFourth.getFullYear(), 0, 2);
5026
- case 4:
5027
- return new Date(janFourth.getFullYear(), 0, 1);
5028
- case 5:
5029
- return new Date(janFourth.getFullYear() - 1, 11, 31);
5030
- case 6:
5031
- return new Date(janFourth.getFullYear() - 1, 11, 30);
5032
- }
5033
- }
5034
- function getWeekBasedYear(date2) {
5035
- var thisDate = addDays(new Date(date2.tm_year + 1900, 0, 1), date2.tm_yday);
5036
- var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4);
5037
- var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4);
5038
- var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);
5039
- var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);
5040
- if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) {
5041
- if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) {
5042
- return thisDate.getFullYear() + 1;
5043
- }
5044
- return thisDate.getFullYear();
5045
- }
5046
- return thisDate.getFullYear() - 1;
5047
- }
5048
- var EXPANSION_RULES_2 = { "%a": (date2) => WEEKDAYS[date2.tm_wday].substring(0, 3), "%A": (date2) => WEEKDAYS[date2.tm_wday], "%b": (date2) => MONTHS[date2.tm_mon].substring(0, 3), "%B": (date2) => MONTHS[date2.tm_mon], "%C": (date2) => {
5049
- var year = date2.tm_year + 1900;
5050
- return leadingNulls(year / 100 | 0, 2);
5051
- }, "%d": (date2) => leadingNulls(date2.tm_mday, 2), "%e": (date2) => leadingSomething(date2.tm_mday, 2, " "), "%g": (date2) => getWeekBasedYear(date2).toString().substring(2), "%G": getWeekBasedYear, "%H": (date2) => leadingNulls(date2.tm_hour, 2), "%I": (date2) => {
5052
- var twelveHour = date2.tm_hour;
5053
- if (twelveHour == 0) twelveHour = 12;
5054
- else if (twelveHour > 12) twelveHour -= 12;
5055
- return leadingNulls(twelveHour, 2);
5056
- }, "%j": (date2) => leadingNulls(date2.tm_mday + arraySum(isLeapYear(date2.tm_year + 1900) ? MONTH_DAYS_LEAP : MONTH_DAYS_REGULAR, date2.tm_mon - 1), 3), "%m": (date2) => leadingNulls(date2.tm_mon + 1, 2), "%M": (date2) => leadingNulls(date2.tm_min, 2), "%n": () => "\n", "%p": (date2) => {
5057
- if (date2.tm_hour >= 0 && date2.tm_hour < 12) {
5058
- return "AM";
5059
- }
5060
- return "PM";
5061
- }, "%S": (date2) => leadingNulls(date2.tm_sec, 2), "%t": () => " ", "%u": (date2) => date2.tm_wday || 7, "%U": (date2) => {
5062
- var days = date2.tm_yday + 7 - date2.tm_wday;
5063
- return leadingNulls(Math.floor(days / 7), 2);
5064
- }, "%V": (date2) => {
5065
- var val = Math.floor((date2.tm_yday + 7 - (date2.tm_wday + 6) % 7) / 7);
5066
- if ((date2.tm_wday + 371 - date2.tm_yday - 2) % 7 <= 2) {
5067
- val++;
5068
- }
5069
- if (!val) {
5070
- val = 52;
5071
- var dec31 = (date2.tm_wday + 7 - date2.tm_yday - 1) % 7;
5072
- if (dec31 == 4 || dec31 == 5 && isLeapYear(date2.tm_year % 400 - 1)) {
5073
- val++;
5074
- }
5075
- } else if (val == 53) {
5076
- var jan1 = (date2.tm_wday + 371 - date2.tm_yday) % 7;
5077
- if (jan1 != 4 && (jan1 != 3 || !isLeapYear(date2.tm_year))) val = 1;
5078
- }
5079
- return leadingNulls(val, 2);
5080
- }, "%w": (date2) => date2.tm_wday, "%W": (date2) => {
5081
- var days = date2.tm_yday + 7 - (date2.tm_wday + 6) % 7;
5082
- return leadingNulls(Math.floor(days / 7), 2);
5083
- }, "%y": (date2) => (date2.tm_year + 1900).toString().substring(2), "%Y": (date2) => date2.tm_year + 1900, "%z": (date2) => {
5084
- var off = date2.tm_gmtoff;
5085
- var ahead = off >= 0;
5086
- off = Math.abs(off) / 60;
5087
- off = off / 60 * 100 + off % 60;
5088
- return (ahead ? "+" : "-") + String("0000" + off).slice(-4);
5089
- }, "%Z": (date2) => date2.tm_zone, "%%": () => "%" };
5090
- pattern = pattern.replace(/%%/g, "\0\0");
5091
- for (var rule in EXPANSION_RULES_2) {
5092
- if (pattern.includes(rule)) {
5093
- pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_2[rule](date));
5094
- }
5095
- }
5096
- pattern = pattern.replace(/\0\0/g, "%");
5097
- var bytes = intArrayFromString(pattern, false);
5098
- if (bytes.length > maxsize) {
4945
+ function _random_get(buffer, size) {
4946
+ try {
4947
+ randomFill(HEAPU8.subarray(buffer, buffer + size));
5099
4948
  return 0;
4949
+ } catch (e) {
4950
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
4951
+ return e.errno;
5100
4952
  }
5101
- writeArrayToMemory(bytes, s);
5102
- return bytes.length - 1;
5103
- };
5104
- var _strftime_l = (s, maxsize, format, tm, loc) => _strftime(s, maxsize, format, tm);
4953
+ }
5105
4954
  var handleException = (e) => {
5106
4955
  if (e instanceof ExitStatus || e == "unwind") {
5107
4956
  return EXITSTATUS;
@@ -5117,76 +4966,80 @@ var require_grida_canvas_wasm = __commonJS({
5117
4966
  };
5118
4967
  FS.createPreloadedFile = FS_createPreloadedFile;
5119
4968
  FS.staticInit();
5120
- var GLctx;
5121
- for (var i = 0; i < 32; ++i) tempFixedLengthArray.push(new Array(i));
4969
+ MEMFS.doesNotExistError = new FS.ErrnoError(44);
4970
+ MEMFS.doesNotExistError.stack = "<generic error, no stack>";
4971
+ for (let i2 = 0; i2 < 32; ++i2) tempFixedLengthArray.push(new Array(i2));
5122
4972
  var miniTempWebGLFloatBuffersStorage = new Float32Array(288);
5123
- for (var i = 0; i < 288; ++i) {
4973
+ for (var i = 0; i <= 288; ++i) {
5124
4974
  miniTempWebGLFloatBuffers[i] = miniTempWebGLFloatBuffersStorage.subarray(0, i);
5125
4975
  }
5126
4976
  var miniTempWebGLIntBuffersStorage = new Int32Array(288);
5127
- for (var i = 0; i < 288; ++i) {
4977
+ for (var i = 0; i <= 288; ++i) {
5128
4978
  miniTempWebGLIntBuffers[i] = miniTempWebGLIntBuffersStorage.subarray(0, i);
5129
4979
  }
5130
- var wasmImports = { x: ___cxa_begin_catch, y: ___cxa_end_catch, a: ___cxa_find_matching_catch_2, m: ___cxa_find_matching_catch_3, B: ___cxa_find_matching_catch_4, W: ___cxa_rethrow, u: ___cxa_throw, sb: ___cxa_uncaught_exceptions, d: ___resumeException, Z: ___syscall_fcntl64, Ab: ___syscall_fstat64, wb: ___syscall_getcwd, Cb: ___syscall_ioctl, xb: ___syscall_lstat64, yb: ___syscall_newfstatat, Y: ___syscall_openat, zb: ___syscall_stat64, Gb: __abort_js, Db: __emscripten_get_now_is_monotonic, Fb: __emscripten_memcpy_js, tb: __emscripten_throw_longjmp, jb: __gmtime_js, hb: __mmap_js, ib: __munmap_js, vb: __tzset_js, Eb: _emscripten_date_now, M: _emscripten_get_now, Df: _emscripten_glActiveTexture, Ef: _emscripten_glAttachShader, fe: _emscripten_glBeginQuery, $d: _emscripten_glBeginQueryEXT, Mc: _emscripten_glBeginTransformFeedback, Ff: _emscripten_glBindAttribLocation, Gf: _emscripten_glBindBuffer, Jc: _emscripten_glBindBufferBase, Kc: _emscripten_glBindBufferRange, Ee: _emscripten_glBindFramebuffer, Fe: _emscripten_glBindRenderbuffer, le: _emscripten_glBindSampler, Hf: _emscripten_glBindTexture, Zb: _emscripten_glBindTransformFeedback, _e: _emscripten_glBindVertexArray, bf: _emscripten_glBindVertexArrayOES, If: _emscripten_glBlendColor, Jf: _emscripten_glBlendEquation, Nd: _emscripten_glBlendEquationSeparate, Kf: _emscripten_glBlendFunc, Md: _emscripten_glBlendFuncSeparate, xe: _emscripten_glBlitFramebuffer, Lf: _emscripten_glBufferData, Mf: _emscripten_glBufferSubData, Ge: _emscripten_glCheckFramebufferStatus, Nf: _emscripten_glClear, mc: _emscripten_glClearBufferfi, nc: _emscripten_glClearBufferfv, pc: _emscripten_glClearBufferiv, oc: _emscripten_glClearBufferuiv, Of: _emscripten_glClearColor, Ld: _emscripten_glClearDepthf, Pf: _emscripten_glClearStencil, ue: _emscripten_glClientWaitSync, Qf: _emscripten_glColorMask, Rf: _emscripten_glCompileShader, Sf: _emscripten_glCompressedTexImage2D, Yc: _emscripten_glCompressedTexImage3D, Tf: _emscripten_glCompressedTexSubImage2D, Xc: _emscripten_glCompressedTexSubImage3D, we: _emscripten_glCopyBufferSubData, Kd: _emscripten_glCopyTexImage2D, Uf: _emscripten_glCopyTexSubImage2D, Zc: _emscripten_glCopyTexSubImage3D, Vf: _emscripten_glCreateProgram, Wf: _emscripten_glCreateShader, Xf: _emscripten_glCullFace, Yf: _emscripten_glDeleteBuffers, He: _emscripten_glDeleteFramebuffers, Zf: _emscripten_glDeleteProgram, ge: _emscripten_glDeleteQueries, ae: _emscripten_glDeleteQueriesEXT, Ie: _emscripten_glDeleteRenderbuffers, me: _emscripten_glDeleteSamplers, _f: _emscripten_glDeleteShader, ve: _emscripten_glDeleteSync, $f: _emscripten_glDeleteTextures, Yb: _emscripten_glDeleteTransformFeedbacks, $e: _emscripten_glDeleteVertexArrays, cf: _emscripten_glDeleteVertexArraysOES, Jd: _emscripten_glDepthFunc, ca: _emscripten_glDepthMask, Id: _emscripten_glDepthRangef, Hd: _emscripten_glDetachShader, da: _emscripten_glDisable, ea: _emscripten_glDisableVertexAttribArray, fa: _emscripten_glDrawArrays, Ye: _emscripten_glDrawArraysInstanced, Qd: _emscripten_glDrawArraysInstancedANGLE, Lb: _emscripten_glDrawArraysInstancedARB, Ve: _emscripten_glDrawArraysInstancedBaseInstanceWEBGL, cd: _emscripten_glDrawArraysInstancedEXT, Mb: _emscripten_glDrawArraysInstancedNV, Te: _emscripten_glDrawBuffers, ad: _emscripten_glDrawBuffersEXT, Rd: _emscripten_glDrawBuffersWEBGL, ga: _emscripten_glDrawElements, Ze: _emscripten_glDrawElementsInstanced, Pd: _emscripten_glDrawElementsInstancedANGLE, Jb: _emscripten_glDrawElementsInstancedARB, We: _emscripten_glDrawElementsInstancedBaseVertexBaseInstanceWEBGL, Kb: _emscripten_glDrawElementsInstancedEXT, bd: _emscripten_glDrawElementsInstancedNV, Ne: _emscripten_glDrawRangeElements, ha: _emscripten_glEnable, ia: _emscripten_glEnableVertexAttribArray, he: _emscripten_glEndQuery, be: _emscripten_glEndQueryEXT, Lc: _emscripten_glEndTransformFeedback, re: _emscripten_glFenceSync, ja: _emscripten_glFinish, ka: _emscripten_glFlush, Je: _emscripten_glFramebufferRenderbuffer, Ke: _emscripten_glFramebufferTexture2D, Pc: _emscripten_glFramebufferTextureLayer, la: _emscripten_glFrontFace, ma: _emscripten_glGenBuffers, Le: _emscripten_glGenFramebuffers, ie: _emscripten_glGenQueries, ce: _emscripten_glGenQueriesEXT, Me: _emscripten_glGenRenderbuffers, ne: _emscripten_glGenSamplers, na: _emscripten_glGenTextures, Xb: _emscripten_glGenTransformFeedbacks, Xe: _emscripten_glGenVertexArrays, df: _emscripten_glGenVertexArraysOES, ze: _emscripten_glGenerateMipmap, Gd: _emscripten_glGetActiveAttrib, Fd: _emscripten_glGetActiveUniform, hc: _emscripten_glGetActiveUniformBlockName, ic: _emscripten_glGetActiveUniformBlockiv, kc: _emscripten_glGetActiveUniformsiv, Ed: _emscripten_glGetAttachedShaders, Dd: _emscripten_glGetAttribLocation, Cd: _emscripten_glGetBooleanv, cc: _emscripten_glGetBufferParameteri64v, oa: _emscripten_glGetBufferParameteriv, pa: _emscripten_glGetError, qa: _emscripten_glGetFloatv, yc: _emscripten_glGetFragDataLocation, Be: _emscripten_glGetFramebufferAttachmentParameteriv, dc: _emscripten_glGetInteger64i_v, fc: _emscripten_glGetInteger64v, Nc: _emscripten_glGetIntegeri_v, ra: _emscripten_glGetIntegerv, Pb: _emscripten_glGetInternalformativ, Tb: _emscripten_glGetProgramBinary, sa: _emscripten_glGetProgramInfoLog, ta: _emscripten_glGetProgramiv, Yd: _emscripten_glGetQueryObjecti64vEXT, Td: _emscripten_glGetQueryObjectivEXT, Zd: _emscripten_glGetQueryObjectui64vEXT, je: _emscripten_glGetQueryObjectuiv, de: _emscripten_glGetQueryObjectuivEXT, ke: _emscripten_glGetQueryiv, ee: _emscripten_glGetQueryivEXT, Ce: _emscripten_glGetRenderbufferParameteriv, _b: _emscripten_glGetSamplerParameterfv, $b: _emscripten_glGetSamplerParameteriv, ua: _emscripten_glGetShaderInfoLog, Vd: _emscripten_glGetShaderPrecisionFormat, Bd: _emscripten_glGetShaderSource, va: _emscripten_glGetShaderiv, wa: _emscripten_glGetString, af: _emscripten_glGetStringi, ec: _emscripten_glGetSynciv, Ad: _emscripten_glGetTexParameterfv, zd: _emscripten_glGetTexParameteriv, Hc: _emscripten_glGetTransformFeedbackVarying, jc: _emscripten_glGetUniformBlockIndex, lc: _emscripten_glGetUniformIndices, xa: _emscripten_glGetUniformLocation, yd: _emscripten_glGetUniformfv, xd: _emscripten_glGetUniformiv, zc: _emscripten_glGetUniformuiv, Gc: _emscripten_glGetVertexAttribIiv, Fc: _emscripten_glGetVertexAttribIuiv, ud: _emscripten_glGetVertexAttribPointerv, wd: _emscripten_glGetVertexAttribfv, vd: _emscripten_glGetVertexAttribiv, td: _emscripten_glHint, Wd: _emscripten_glInvalidateFramebuffer, Xd: _emscripten_glInvalidateSubFramebuffer, sd: _emscripten_glIsBuffer, rd: _emscripten_glIsEnabled, qd: _emscripten_glIsFramebuffer, pd: _emscripten_glIsProgram, Wc: _emscripten_glIsQuery, Ud: _emscripten_glIsQueryEXT, od: _emscripten_glIsRenderbuffer, bc: _emscripten_glIsSampler, nd: _emscripten_glIsShader, se: _emscripten_glIsSync, ya: _emscripten_glIsTexture, Wb: _emscripten_glIsTransformFeedback, Oc: _emscripten_glIsVertexArray, Sd: _emscripten_glIsVertexArrayOES, za: _emscripten_glLineWidth, Aa: _emscripten_glLinkProgram, Re: _emscripten_glMultiDrawArraysInstancedBaseInstanceWEBGL, Se: _emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL, Vb: _emscripten_glPauseTransformFeedback, Ba: _emscripten_glPixelStorei, md: _emscripten_glPolygonOffset, Sb: _emscripten_glProgramBinary, Rb: _emscripten_glProgramParameteri, _d: _emscripten_glQueryCounterEXT, Ue: _emscripten_glReadBuffer, Ca: _emscripten_glReadPixels, ld: _emscripten_glReleaseShaderCompiler, De: _emscripten_glRenderbufferStorage, ye: _emscripten_glRenderbufferStorageMultisample, Ub: _emscripten_glResumeTransformFeedback, kd: _emscripten_glSampleCoverage, oe: _emscripten_glSamplerParameterf, ac: _emscripten_glSamplerParameterfv, pe: _emscripten_glSamplerParameteri, qe: _emscripten_glSamplerParameteriv, Da: _emscripten_glScissor, jd: _emscripten_glShaderBinary, Ea: _emscripten_glShaderSource, Fa: _emscripten_glStencilFunc, Ga: _emscripten_glStencilFuncSeparate, Ha: _emscripten_glStencilMask, Ia: _emscripten_glStencilMaskSeparate, Ja: _emscripten_glStencilOp, Ka: _emscripten_glStencilOpSeparate, La: _emscripten_glTexImage2D, $c: _emscripten_glTexImage3D, Ma: _emscripten_glTexParameterf, Na: _emscripten_glTexParameterfv, Oa: _emscripten_glTexParameteri, Pa: _emscripten_glTexParameteriv, Oe: _emscripten_glTexStorage2D, Qb: _emscripten_glTexStorage3D, Qa: _emscripten_glTexSubImage2D, _c: _emscripten_glTexSubImage3D, Ic: _emscripten_glTransformFeedbackVaryings, Ra: _emscripten_glUniform1f, Sa: _emscripten_glUniform1fv, zf: _emscripten_glUniform1i, Af: _emscripten_glUniform1iv, xc: _emscripten_glUniform1ui, tc: _emscripten_glUniform1uiv, Bf: _emscripten_glUniform2f, Cf: _emscripten_glUniform2fv, yf: _emscripten_glUniform2i, xf: _emscripten_glUniform2iv, wc: _emscripten_glUniform2ui, sc: _emscripten_glUniform2uiv, wf: _emscripten_glUniform3f, vf: _emscripten_glUniform3fv, uf: _emscripten_glUniform3i, tf: _emscripten_glUniform3iv, vc: _emscripten_glUniform3ui, rc: _emscripten_glUniform3uiv, sf: _emscripten_glUniform4f, rf: _emscripten_glUniform4fv, ef: _emscripten_glUniform4i, ff: _emscripten_glUniform4iv, uc: _emscripten_glUniform4ui, qc: _emscripten_glUniform4uiv, gc: _emscripten_glUniformBlockBinding, gf: _emscripten_glUniformMatrix2fv, Vc: _emscripten_glUniformMatrix2x3fv, Tc: _emscripten_glUniformMatrix2x4fv, hf: _emscripten_glUniformMatrix3fv, Uc: _emscripten_glUniformMatrix3x2fv, Rc: _emscripten_glUniformMatrix3x4fv, jf: _emscripten_glUniformMatrix4fv, Sc: _emscripten_glUniformMatrix4x2fv, Qc: _emscripten_glUniformMatrix4x3fv, kf: _emscripten_glUseProgram, id: _emscripten_glValidateProgram, lf: _emscripten_glVertexAttrib1f, hd: _emscripten_glVertexAttrib1fv, gd: _emscripten_glVertexAttrib2f, mf: _emscripten_glVertexAttrib2fv, fd: _emscripten_glVertexAttrib3f, nf: _emscripten_glVertexAttrib3fv, ed: _emscripten_glVertexAttrib4f, of: _emscripten_glVertexAttrib4fv, Pe: _emscripten_glVertexAttribDivisor, Od: _emscripten_glVertexAttribDivisorANGLE, Nb: _emscripten_glVertexAttribDivisorARB, dd: _emscripten_glVertexAttribDivisorEXT, Ob: _emscripten_glVertexAttribDivisorNV, Ec: _emscripten_glVertexAttribI4i, Cc: _emscripten_glVertexAttribI4iv, Dc: _emscripten_glVertexAttribI4ui, Bc: _emscripten_glVertexAttribI4uiv, Qe: _emscripten_glVertexAttribIPointer, pf: _emscripten_glVertexAttribPointer, qf: _emscripten_glViewport, te: _emscripten_glWaitSync, bb: _emscripten_request_animation_frame_loop, ub: _emscripten_resize_heap, Hb: _environ_get, Ib: _environ_sizes_get, Va: _exit, O: _fd_close, gb: _fd_pread, Bb: _fd_read, kb: _fd_seek, L: _fd_write, R: _getentropy, Ta: _glGetIntegerv, P: _glGetString, Ua: _glGetStringi, U: invoke_diii, db: invoke_fi, _a: invoke_fif, V: invoke_fiii, $a: invoke_fiiiif, o: invoke_i, Ae: invoke_if, ab: invoke_iffiiiiiiii, e: invoke_ii, w: invoke_iif, f: invoke_iii, Xa: invoke_iiif, g: invoke_iiii, j: invoke_iiiii, rb: invoke_iiiiid, F: invoke_iiiiii, r: invoke_iiiiiii, I: invoke_iiiiiiii, Q: invoke_iiiiiiiiii, $: invoke_iiiiiiiiiii, K: invoke_iiiiiiiiiiii, fb: invoke_j, nb: invoke_ji, mb: invoke_jii, eb: invoke_jiiii, n: invoke_v, b: invoke_vi, ba: invoke_vid, C: invoke_vif, E: invoke_viff, A: invoke_vifff, s: invoke_vifffff, _: invoke_viffffffffffffffffffff, Ac: invoke_viffi, c: invoke_vii, H: invoke_viif, X: invoke_viiff, t: invoke_viifff, aa: invoke_viiffff, qb: invoke_viiffiii, q: invoke_viifii, h: invoke_viii, G: invoke_viiif, S: invoke_viiifi, v: invoke_viiifif, i: invoke_viiii, k: invoke_viiiii, Ya: invoke_viiiiiffiifff, Za: invoke_viiiiiffiifi, l: invoke_viiiiii, T: invoke_viiiiiiff, p: invoke_viiiiiii, D: invoke_viiiiiiii, Wa: invoke_viiiiiiiii, z: invoke_viiiiiiiiii, cb: invoke_viiiiiiiiiii, J: invoke_viiiiiiiiiiiiiii, ob: invoke_viij, lb: invoke_viiji, N: _llvm_eh_typeid_for, pb: _strftime_l };
5131
- var wasmExports = createWasm();
5132
- var ___wasm_call_ctors = () => (___wasm_call_ctors = wasmExports["bg"])();
5133
- var _allocate = Module["_allocate"] = (a0) => (_allocate = Module["_allocate"] = wasmExports["dg"])(a0);
5134
- var _deallocate = Module["_deallocate"] = (a0, a1) => (_deallocate = Module["_deallocate"] = wasmExports["eg"])(a0, a1);
5135
- var _init = Module["_init"] = (a0, a1, a2) => (_init = Module["_init"] = wasmExports["fg"])(a0, a1, a2);
5136
- var _tick = Module["_tick"] = (a0, a1) => (_tick = Module["_tick"] = wasmExports["gg"])(a0, a1);
5137
- var _resize_surface = Module["_resize_surface"] = (a0, a1, a2) => (_resize_surface = Module["_resize_surface"] = wasmExports["hg"])(a0, a1, a2);
5138
- var _redraw = Module["_redraw"] = (a0) => (_redraw = Module["_redraw"] = wasmExports["ig"])(a0);
5139
- var _load_scene_json = Module["_load_scene_json"] = (a0, a1, a2) => (_load_scene_json = Module["_load_scene_json"] = wasmExports["jg"])(a0, a1, a2);
5140
- var _load_dummy_scene = Module["_load_dummy_scene"] = (a0) => (_load_dummy_scene = Module["_load_dummy_scene"] = wasmExports["kg"])(a0);
5141
- var _load_benchmark_scene = Module["_load_benchmark_scene"] = (a0, a1, a2) => (_load_benchmark_scene = Module["_load_benchmark_scene"] = wasmExports["lg"])(a0, a1, a2);
5142
- var _pointer_move = Module["_pointer_move"] = (a0, a1, a2) => (_pointer_move = Module["_pointer_move"] = wasmExports["mg"])(a0, a1, a2);
5143
- var _add_font = Module["_add_font"] = (a0, a1, a2, a3, a4) => (_add_font = Module["_add_font"] = wasmExports["ng"])(a0, a1, a2, a3, a4);
5144
- var _add_image = Module["_add_image"] = (a0, a1, a2) => (_add_image = Module["_add_image"] = wasmExports["og"])(a0, a1, a2);
5145
- var _has_missing_fonts = Module["_has_missing_fonts"] = (a0) => (_has_missing_fonts = Module["_has_missing_fonts"] = wasmExports["pg"])(a0);
5146
- var _list_missing_fonts = Module["_list_missing_fonts"] = (a0) => (_list_missing_fonts = Module["_list_missing_fonts"] = wasmExports["qg"])(a0);
5147
- var _list_available_fonts = Module["_list_available_fonts"] = (a0) => (_list_available_fonts = Module["_list_available_fonts"] = wasmExports["rg"])(a0);
5148
- var _set_default_fallback_fonts = Module["_set_default_fallback_fonts"] = (a0, a1, a2) => (_set_default_fallback_fonts = Module["_set_default_fallback_fonts"] = wasmExports["sg"])(a0, a1, a2);
5149
- var _get_default_fallback_fonts = Module["_get_default_fallback_fonts"] = (a0) => (_get_default_fallback_fonts = Module["_get_default_fallback_fonts"] = wasmExports["tg"])(a0);
5150
- var _command = Module["_command"] = (a0, a1, a2, a3) => (_command = Module["_command"] = wasmExports["ug"])(a0, a1, a2, a3);
5151
- var _set_main_camera_transform = Module["_set_main_camera_transform"] = (a0, a1, a2, a3, a4, a5, a6) => (_set_main_camera_transform = Module["_set_main_camera_transform"] = wasmExports["vg"])(a0, a1, a2, a3, a4, a5, a6);
5152
- var _get_node_id_from_point = Module["_get_node_id_from_point"] = (a0, a1, a2) => (_get_node_id_from_point = Module["_get_node_id_from_point"] = wasmExports["wg"])(a0, a1, a2);
5153
- var _get_node_ids_from_point = Module["_get_node_ids_from_point"] = (a0, a1, a2) => (_get_node_ids_from_point = Module["_get_node_ids_from_point"] = wasmExports["xg"])(a0, a1, a2);
5154
- var _get_node_ids_from_envelope = Module["_get_node_ids_from_envelope"] = (a0, a1, a2, a3, a4) => (_get_node_ids_from_envelope = Module["_get_node_ids_from_envelope"] = wasmExports["yg"])(a0, a1, a2, a3, a4);
5155
- var _get_node_absolute_bounding_box = Module["_get_node_absolute_bounding_box"] = (a0, a1, a2) => (_get_node_absolute_bounding_box = Module["_get_node_absolute_bounding_box"] = wasmExports["zg"])(a0, a1, a2);
5156
- var _export_node_as = Module["_export_node_as"] = (a0, a1, a2, a3, a4) => (_export_node_as = Module["_export_node_as"] = wasmExports["Ag"])(a0, a1, a2, a3, a4);
5157
- var _to_vector_network = Module["_to_vector_network"] = (a0, a1, a2) => (_to_vector_network = Module["_to_vector_network"] = wasmExports["Bg"])(a0, a1, a2);
5158
- var _set_debug = Module["_set_debug"] = (a0, a1) => (_set_debug = Module["_set_debug"] = wasmExports["Cg"])(a0, a1);
5159
- var _toggle_debug = Module["_toggle_debug"] = (a0) => (_toggle_debug = Module["_toggle_debug"] = wasmExports["Dg"])(a0);
5160
- var _set_verbose = Module["_set_verbose"] = (a0, a1) => (_set_verbose = Module["_set_verbose"] = wasmExports["Eg"])(a0, a1);
5161
- var _devtools_rendering_set_show_ruler = Module["_devtools_rendering_set_show_ruler"] = (a0, a1) => (_devtools_rendering_set_show_ruler = Module["_devtools_rendering_set_show_ruler"] = wasmExports["Fg"])(a0, a1);
5162
- var _highlight_strokes = Module["_highlight_strokes"] = (a0, a1, a2) => (_highlight_strokes = Module["_highlight_strokes"] = wasmExports["Gg"])(a0, a1, a2);
5163
- var _devtools_rendering_set_show_tiles = Module["_devtools_rendering_set_show_tiles"] = (a0, a1) => (_devtools_rendering_set_show_tiles = Module["_devtools_rendering_set_show_tiles"] = wasmExports["Hg"])(a0, a1);
5164
- var _runtime_renderer_set_cache_tile = Module["_runtime_renderer_set_cache_tile"] = (a0, a1) => (_runtime_renderer_set_cache_tile = Module["_runtime_renderer_set_cache_tile"] = wasmExports["Ig"])(a0, a1);
5165
- var _devtools_rendering_set_show_fps_meter = Module["_devtools_rendering_set_show_fps_meter"] = (a0, a1) => (_devtools_rendering_set_show_fps_meter = Module["_devtools_rendering_set_show_fps_meter"] = wasmExports["Jg"])(a0, a1);
5166
- var _devtools_rendering_set_show_stats = Module["_devtools_rendering_set_show_stats"] = (a0, a1) => (_devtools_rendering_set_show_stats = Module["_devtools_rendering_set_show_stats"] = wasmExports["Kg"])(a0, a1);
5167
- var _devtools_rendering_set_show_hit_testing = Module["_devtools_rendering_set_show_hit_testing"] = (a0, a1) => (_devtools_rendering_set_show_hit_testing = Module["_devtools_rendering_set_show_hit_testing"] = wasmExports["Lg"])(a0, a1);
5168
- var _main = Module["_main"] = (a0, a1) => (_main = Module["_main"] = wasmExports["Mg"])(a0, a1);
5169
- var _malloc = (a0) => (_malloc = wasmExports["Ng"])(a0);
5170
- var _htonl = (a0) => (_htonl = wasmExports["htonl"])(a0);
5171
- var _htons = (a0) => (_htons = wasmExports["htons"])(a0);
5172
- var _emscripten_builtin_memalign = (a0, a1) => (_emscripten_builtin_memalign = wasmExports["Og"])(a0, a1);
5173
- var _ntohs = (a0) => (_ntohs = wasmExports["ntohs"])(a0);
5174
- var _setThrew = (a0, a1) => (_setThrew = wasmExports["Pg"])(a0, a1);
5175
- var __emscripten_tempret_set = (a0) => (__emscripten_tempret_set = wasmExports["Qg"])(a0);
5176
- var __emscripten_stack_restore = (a0) => (__emscripten_stack_restore = wasmExports["Rg"])(a0);
5177
- var __emscripten_stack_alloc = (a0) => (__emscripten_stack_alloc = wasmExports["Sg"])(a0);
5178
- var _emscripten_stack_get_current = () => (_emscripten_stack_get_current = wasmExports["Tg"])();
5179
- var ___cxa_free_exception = (a0) => (___cxa_free_exception = wasmExports["__cxa_free_exception"])(a0);
5180
- var ___cxa_decrement_exception_refcount = (a0) => (___cxa_decrement_exception_refcount = wasmExports["Ug"])(a0);
5181
- var ___cxa_increment_exception_refcount = (a0) => (___cxa_increment_exception_refcount = wasmExports["Vg"])(a0);
5182
- var ___cxa_can_catch = (a0, a1, a2) => (___cxa_can_catch = wasmExports["Wg"])(a0, a1, a2);
5183
- var ___cxa_is_pointer_type = (a0) => (___cxa_is_pointer_type = wasmExports["Xg"])(a0);
5184
- var dynCall_viij = Module["dynCall_viij"] = (a0, a1, a2, a3, a4) => (dynCall_viij = Module["dynCall_viij"] = wasmExports["Yg"])(a0, a1, a2, a3, a4);
5185
- var dynCall_ji = Module["dynCall_ji"] = (a0, a1) => (dynCall_ji = Module["dynCall_ji"] = wasmExports["Zg"])(a0, a1);
5186
- var dynCall_jii = Module["dynCall_jii"] = (a0, a1, a2) => (dynCall_jii = Module["dynCall_jii"] = wasmExports["_g"])(a0, a1, a2);
5187
- var dynCall_viiji = Module["dynCall_viiji"] = (a0, a1, a2, a3, a4, a5) => (dynCall_viiji = Module["dynCall_viiji"] = wasmExports["$g"])(a0, a1, a2, a3, a4, a5);
5188
- var dynCall_j = Module["dynCall_j"] = (a0) => (dynCall_j = Module["dynCall_j"] = wasmExports["ah"])(a0);
5189
- var dynCall_jiiii = Module["dynCall_jiiii"] = (a0, a1, a2, a3, a4) => (dynCall_jiiii = Module["dynCall_jiiii"] = wasmExports["bh"])(a0, a1, a2, a3, a4);
4980
+ {
4981
+ if (Module["noExitRuntime"]) noExitRuntime = Module["noExitRuntime"];
4982
+ if (Module["preloadPlugins"]) preloadPlugins = Module["preloadPlugins"];
4983
+ if (Module["print"]) out = Module["print"];
4984
+ if (Module["printErr"]) err = Module["printErr"];
4985
+ if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"];
4986
+ if (Module["arguments"]) arguments_ = Module["arguments"];
4987
+ if (Module["thisProgram"]) thisProgram = Module["thisProgram"];
4988
+ }
4989
+ Module["UTF8ToString"] = UTF8ToString;
4990
+ Module["stringToUTF8"] = stringToUTF8;
4991
+ Module["lengthBytesUTF8"] = lengthBytesUTF8;
4992
+ Module["GL"] = GL;
4993
+ var wasmImports = { w: ___cxa_begin_catch, z: ___cxa_end_catch, a: ___cxa_find_matching_catch_2, m: ___cxa_find_matching_catch_3, O: ___cxa_find_matching_catch_4, Z: ___cxa_rethrow, x: ___cxa_throw, hb: ___cxa_uncaught_exceptions, d: ___resumeException, $: ___syscall_fcntl64, vb: ___syscall_fstat64, rb: ___syscall_getcwd, xb: ___syscall_ioctl, sb: ___syscall_lstat64, tb: ___syscall_newfstatat, _: ___syscall_openat, ub: ___syscall_stat64, Ab: __abort_js, jb: __emscripten_throw_longjmp, ob: __gmtime_js, mb: __mmap_js, nb: __munmap_js, Bb: __tzset_js, zb: _clock_time_get, yb: _emscripten_date_now, P: _emscripten_get_now, Gf: _emscripten_glActiveTexture, Hf: _emscripten_glAttachShader, ie: _emscripten_glBeginQuery, ce: _emscripten_glBeginQueryEXT, Ic: _emscripten_glBeginTransformFeedback, If: _emscripten_glBindAttribLocation, Jf: _emscripten_glBindBuffer, Fc: _emscripten_glBindBufferBase, Gc: _emscripten_glBindBufferRange, Ge: _emscripten_glBindFramebuffer, He: _emscripten_glBindRenderbuffer, oe: _emscripten_glBindSampler, Kf: _emscripten_glBindTexture, Ub: _emscripten_glBindTransformFeedback, bf: _emscripten_glBindVertexArray, ef: _emscripten_glBindVertexArrayOES, Lf: _emscripten_glBlendColor, Mf: _emscripten_glBlendEquation, Md: _emscripten_glBlendEquationSeparate, Nf: _emscripten_glBlendFunc, Ld: _emscripten_glBlendFuncSeparate, Ae: _emscripten_glBlitFramebuffer, Of: _emscripten_glBufferData, Pf: _emscripten_glBufferSubData, Ie: _emscripten_glCheckFramebufferStatus, Qf: _emscripten_glClear, ic: _emscripten_glClearBufferfi, jc: _emscripten_glClearBufferfv, lc: _emscripten_glClearBufferiv, kc: _emscripten_glClearBufferuiv, Rf: _emscripten_glClearColor, Kd: _emscripten_glClearDepthf, Sf: _emscripten_glClearStencil, xe: _emscripten_glClientWaitSync, bd: _emscripten_glClipControlEXT, Tf: _emscripten_glColorMask, Uf: _emscripten_glCompileShader, Vf: _emscripten_glCompressedTexImage2D, Uc: _emscripten_glCompressedTexImage3D, Wf: _emscripten_glCompressedTexSubImage2D, Tc: _emscripten_glCompressedTexSubImage3D, ze: _emscripten_glCopyBufferSubData, Jd: _emscripten_glCopyTexImage2D, Xf: _emscripten_glCopyTexSubImage2D, Vc: _emscripten_glCopyTexSubImage3D, Yf: _emscripten_glCreateProgram, Zf: _emscripten_glCreateShader, _f: _emscripten_glCullFace, $f: _emscripten_glDeleteBuffers, Je: _emscripten_glDeleteFramebuffers, ag: _emscripten_glDeleteProgram, je: _emscripten_glDeleteQueries, de: _emscripten_glDeleteQueriesEXT, Ke: _emscripten_glDeleteRenderbuffers, pe: _emscripten_glDeleteSamplers, bg: _emscripten_glDeleteShader, ye: _emscripten_glDeleteSync, cg: _emscripten_glDeleteTextures, Tb: _emscripten_glDeleteTransformFeedbacks, cf: _emscripten_glDeleteVertexArrays, ff: _emscripten_glDeleteVertexArraysOES, Id: _emscripten_glDepthFunc, dg: _emscripten_glDepthMask, Hd: _emscripten_glDepthRangef, Gd: _emscripten_glDetachShader, eg: _emscripten_glDisable, fg: _emscripten_glDisableVertexAttribArray, fa: _emscripten_glDrawArrays, $e: _emscripten_glDrawArraysInstanced, Pd: _emscripten_glDrawArraysInstancedANGLE, Gb: _emscripten_glDrawArraysInstancedARB, Ye: _emscripten_glDrawArraysInstancedBaseInstanceWEBGL, _c: _emscripten_glDrawArraysInstancedEXT, Hb: _emscripten_glDrawArraysInstancedNV, We: _emscripten_glDrawBuffers, Yc: _emscripten_glDrawBuffersEXT, Qd: _emscripten_glDrawBuffersWEBGL, ga: _emscripten_glDrawElements, af: _emscripten_glDrawElementsInstanced, Od: _emscripten_glDrawElementsInstancedANGLE, Eb: _emscripten_glDrawElementsInstancedARB, Ze: _emscripten_glDrawElementsInstancedBaseVertexBaseInstanceWEBGL, Fb: _emscripten_glDrawElementsInstancedEXT, Zc: _emscripten_glDrawElementsInstancedNV, Pe: _emscripten_glDrawRangeElements, ha: _emscripten_glEnable, ia: _emscripten_glEnableVertexAttribArray, ke: _emscripten_glEndQuery, ee: _emscripten_glEndQueryEXT, Hc: _emscripten_glEndTransformFeedback, ue: _emscripten_glFenceSync, ja: _emscripten_glFinish, ka: _emscripten_glFlush, Le: _emscripten_glFramebufferRenderbuffer, Me: _emscripten_glFramebufferTexture2D, Lc: _emscripten_glFramebufferTextureLayer, la: _emscripten_glFrontFace, ma: _emscripten_glGenBuffers, Ne: _emscripten_glGenFramebuffers, le: _emscripten_glGenQueries, fe: _emscripten_glGenQueriesEXT, Oe: _emscripten_glGenRenderbuffers, qe: _emscripten_glGenSamplers, na: _emscripten_glGenTextures, Sb: _emscripten_glGenTransformFeedbacks, _e: _emscripten_glGenVertexArrays, gf: _emscripten_glGenVertexArraysOES, Ce: _emscripten_glGenerateMipmap, Fd: _emscripten_glGetActiveAttrib, Ed: _emscripten_glGetActiveUniform, dc: _emscripten_glGetActiveUniformBlockName, ec: _emscripten_glGetActiveUniformBlockiv, gc: _emscripten_glGetActiveUniformsiv, Dd: _emscripten_glGetAttachedShaders, Cd: _emscripten_glGetAttribLocation, Bd: _emscripten_glGetBooleanv, Zb: _emscripten_glGetBufferParameteri64v, oa: _emscripten_glGetBufferParameteriv, pa: _emscripten_glGetError, qa: _emscripten_glGetFloatv, uc: _emscripten_glGetFragDataLocation, De: _emscripten_glGetFramebufferAttachmentParameteriv, _b: _emscripten_glGetInteger64i_v, ac: _emscripten_glGetInteger64v, Jc: _emscripten_glGetIntegeri_v, ra: _emscripten_glGetIntegerv, Kb: _emscripten_glGetInternalformativ, Ob: _emscripten_glGetProgramBinary, sa: _emscripten_glGetProgramInfoLog, ta: _emscripten_glGetProgramiv, $d: _emscripten_glGetQueryObjecti64vEXT, Sd: _emscripten_glGetQueryObjectivEXT, ae: _emscripten_glGetQueryObjectui64vEXT, me: _emscripten_glGetQueryObjectuiv, ge: _emscripten_glGetQueryObjectuivEXT, ne: _emscripten_glGetQueryiv, he: _emscripten_glGetQueryivEXT, Ee: _emscripten_glGetRenderbufferParameteriv, Vb: _emscripten_glGetSamplerParameterfv, Wb: _emscripten_glGetSamplerParameteriv, ua: _emscripten_glGetShaderInfoLog, Yd: _emscripten_glGetShaderPrecisionFormat, Ad: _emscripten_glGetShaderSource, va: _emscripten_glGetShaderiv, wa: _emscripten_glGetString, df: _emscripten_glGetStringi, $b: _emscripten_glGetSynciv, zd: _emscripten_glGetTexParameterfv, yd: _emscripten_glGetTexParameteriv, Dc: _emscripten_glGetTransformFeedbackVarying, fc: _emscripten_glGetUniformBlockIndex, hc: _emscripten_glGetUniformIndices, xa: _emscripten_glGetUniformLocation, xd: _emscripten_glGetUniformfv, wd: _emscripten_glGetUniformiv, vc: _emscripten_glGetUniformuiv, Cc: _emscripten_glGetVertexAttribIiv, Bc: _emscripten_glGetVertexAttribIuiv, td: _emscripten_glGetVertexAttribPointerv, vd: _emscripten_glGetVertexAttribfv, ud: _emscripten_glGetVertexAttribiv, sd: _emscripten_glHint, Zd: _emscripten_glInvalidateFramebuffer, _d: _emscripten_glInvalidateSubFramebuffer, rd: _emscripten_glIsBuffer, qd: _emscripten_glIsEnabled, pd: _emscripten_glIsFramebuffer, od: _emscripten_glIsProgram, Sc: _emscripten_glIsQuery, Td: _emscripten_glIsQueryEXT, nd: _emscripten_glIsRenderbuffer, Yb: _emscripten_glIsSampler, md: _emscripten_glIsShader, ve: _emscripten_glIsSync, ya: _emscripten_glIsTexture, Rb: _emscripten_glIsTransformFeedback, Kc: _emscripten_glIsVertexArray, Rd: _emscripten_glIsVertexArrayOES, za: _emscripten_glLineWidth, Aa: _emscripten_glLinkProgram, Ue: _emscripten_glMultiDrawArraysInstancedBaseInstanceWEBGL, Ve: _emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL, Qb: _emscripten_glPauseTransformFeedback, Ba: _emscripten_glPixelStorei, ad: _emscripten_glPolygonModeWEBGL, ld: _emscripten_glPolygonOffset, cd: _emscripten_glPolygonOffsetClampEXT, Nb: _emscripten_glProgramBinary, Mb: _emscripten_glProgramParameteri, be: _emscripten_glQueryCounterEXT, Xe: _emscripten_glReadBuffer, Ca: _emscripten_glReadPixels, kd: _emscripten_glReleaseShaderCompiler, Fe: _emscripten_glRenderbufferStorage, Be: _emscripten_glRenderbufferStorageMultisample, Pb: _emscripten_glResumeTransformFeedback, jd: _emscripten_glSampleCoverage, re: _emscripten_glSamplerParameterf, Xb: _emscripten_glSamplerParameterfv, se: _emscripten_glSamplerParameteri, te: _emscripten_glSamplerParameteriv, Da: _emscripten_glScissor, id: _emscripten_glShaderBinary, Ea: _emscripten_glShaderSource, Fa: _emscripten_glStencilFunc, Ga: _emscripten_glStencilFuncSeparate, Ha: _emscripten_glStencilMask, Ia: _emscripten_glStencilMaskSeparate, Ja: _emscripten_glStencilOp, Ka: _emscripten_glStencilOpSeparate, La: _emscripten_glTexImage2D, Xc: _emscripten_glTexImage3D, Ma: _emscripten_glTexParameterf, Na: _emscripten_glTexParameterfv, Oa: _emscripten_glTexParameteri, Pa: _emscripten_glTexParameteriv, Re: _emscripten_glTexStorage2D, Lb: _emscripten_glTexStorage3D, Qa: _emscripten_glTexSubImage2D, Wc: _emscripten_glTexSubImage3D, Ec: _emscripten_glTransformFeedbackVaryings, Ra: _emscripten_glUniform1f, Sa: _emscripten_glUniform1fv, Cf: _emscripten_glUniform1i, Df: _emscripten_glUniform1iv, tc: _emscripten_glUniform1ui, pc: _emscripten_glUniform1uiv, Ef: _emscripten_glUniform2f, Ff: _emscripten_glUniform2fv, Bf: _emscripten_glUniform2i, Af: _emscripten_glUniform2iv, sc: _emscripten_glUniform2ui, oc: _emscripten_glUniform2uiv, zf: _emscripten_glUniform3f, yf: _emscripten_glUniform3fv, xf: _emscripten_glUniform3i, wf: _emscripten_glUniform3iv, rc: _emscripten_glUniform3ui, nc: _emscripten_glUniform3uiv, vf: _emscripten_glUniform4f, uf: _emscripten_glUniform4fv, hf: _emscripten_glUniform4i, jf: _emscripten_glUniform4iv, qc: _emscripten_glUniform4ui, mc: _emscripten_glUniform4uiv, bc: _emscripten_glUniformBlockBinding, kf: _emscripten_glUniformMatrix2fv, Rc: _emscripten_glUniformMatrix2x3fv, Pc: _emscripten_glUniformMatrix2x4fv, lf: _emscripten_glUniformMatrix3fv, Qc: _emscripten_glUniformMatrix3x2fv, Nc: _emscripten_glUniformMatrix3x4fv, mf: _emscripten_glUniformMatrix4fv, Oc: _emscripten_glUniformMatrix4x2fv, Mc: _emscripten_glUniformMatrix4x3fv, nf: _emscripten_glUseProgram, hd: _emscripten_glValidateProgram, of: _emscripten_glVertexAttrib1f, gd: _emscripten_glVertexAttrib1fv, fd: _emscripten_glVertexAttrib2f, pf: _emscripten_glVertexAttrib2fv, ed: _emscripten_glVertexAttrib3f, qf: _emscripten_glVertexAttrib3fv, dd: _emscripten_glVertexAttrib4f, rf: _emscripten_glVertexAttrib4fv, Se: _emscripten_glVertexAttribDivisor, Nd: _emscripten_glVertexAttribDivisorANGLE, Ib: _emscripten_glVertexAttribDivisorARB, $c: _emscripten_glVertexAttribDivisorEXT, Jb: _emscripten_glVertexAttribDivisorNV, Ac: _emscripten_glVertexAttribI4i, yc: _emscripten_glVertexAttribI4iv, zc: _emscripten_glVertexAttribI4ui, wc: _emscripten_glVertexAttribI4uiv, Te: _emscripten_glVertexAttribIPointer, sf: _emscripten_glVertexAttribPointer, tf: _emscripten_glViewport, we: _emscripten_glWaitSync, db: _emscripten_request_animation_frame_loop, kb: _emscripten_resize_heap, Cb: _environ_get, Db: _environ_sizes_get, Va: _exit, Q: _fd_close, lb: _fd_pread, wb: _fd_read, pb: _fd_seek, M: _fd_write, Ta: _glGetIntegerv, S: _glGetString, Ua: _glGetStringi, Wd: invoke_dd, Vd: invoke_ddd, Xd: invoke_dddd, X: invoke_diii, Ud: invoke_fff, ca: invoke_fi, _a: invoke_fif, Y: invoke_fiii, $a: invoke_fiiiif, p: invoke_i, cc: invoke_if, ab: invoke_iffiiiiiiii, f: invoke_ii, y: invoke_iif, g: invoke_iii, Xa: invoke_iiif, h: invoke_iiii, k: invoke_iiiii, gb: invoke_iiiiid, L: invoke_iiiiii, s: invoke_iiiiiii, H: invoke_iiiiiiii, T: invoke_iiiiiiiiii, aa: invoke_iiiiiiiiiii, J: invoke_iiiiiiiiiiii, ib: invoke_j, bb: invoke_ji, o: invoke_jii, K: invoke_jiiii, n: invoke_v, b: invoke_vi, ea: invoke_vid, E: invoke_vif, C: invoke_viff, B: invoke_vifff, t: invoke_vifffff, U: invoke_viffffffffffffffffffff, fb: invoke_viffi, c: invoke_vii, F: invoke_viif, W: invoke_viiff, u: invoke_viifff, V: invoke_viiffff, xc: invoke_viiffiii, r: invoke_viifii, e: invoke_viii, D: invoke_viiif, da: invoke_viiifi, v: invoke_viiifif, i: invoke_viiii, j: invoke_viiiii, Ya: invoke_viiiiiffiifff, Za: invoke_viiiiiffiifi, l: invoke_viiiiii, ba: invoke_viiiiiiff, q: invoke_viiiiiii, G: invoke_viiiiiiii, Wa: invoke_viiiiiiiii, A: invoke_viiiiiiiiii, eb: invoke_viiiiiiiiiii, I: invoke_viiiiiiiiiiiiiii, cb: invoke_viij, Qe: invoke_viiji, N: invoke_vijjjj, R: _llvm_eh_typeid_for, qb: _random_get };
4994
+ var wasmExports = await createWasm();
4995
+ var ___wasm_call_ctors = wasmExports["hg"];
4996
+ var _allocate = Module["_allocate"] = wasmExports["jg"];
4997
+ var _deallocate = Module["_deallocate"] = wasmExports["kg"];
4998
+ var _init = Module["_init"] = wasmExports["lg"];
4999
+ var _tick = Module["_tick"] = wasmExports["mg"];
5000
+ var _resize_surface = Module["_resize_surface"] = wasmExports["ng"];
5001
+ var _redraw = Module["_redraw"] = wasmExports["og"];
5002
+ var _load_scene_json = Module["_load_scene_json"] = wasmExports["pg"];
5003
+ var _load_dummy_scene = Module["_load_dummy_scene"] = wasmExports["qg"];
5004
+ var _load_benchmark_scene = Module["_load_benchmark_scene"] = wasmExports["rg"];
5005
+ var _pointer_move = Module["_pointer_move"] = wasmExports["sg"];
5006
+ var _add_font = Module["_add_font"] = wasmExports["tg"];
5007
+ var _add_image = Module["_add_image"] = wasmExports["ug"];
5008
+ var _has_missing_fonts = Module["_has_missing_fonts"] = wasmExports["vg"];
5009
+ var _list_missing_fonts = Module["_list_missing_fonts"] = wasmExports["wg"];
5010
+ var _list_available_fonts = Module["_list_available_fonts"] = wasmExports["xg"];
5011
+ var _set_default_fallback_fonts = Module["_set_default_fallback_fonts"] = wasmExports["yg"];
5012
+ var _get_default_fallback_fonts = Module["_get_default_fallback_fonts"] = wasmExports["zg"];
5013
+ var _command = Module["_command"] = wasmExports["Ag"];
5014
+ var _set_main_camera_transform = Module["_set_main_camera_transform"] = wasmExports["Bg"];
5015
+ var _get_node_id_from_point = Module["_get_node_id_from_point"] = wasmExports["Cg"];
5016
+ var _get_node_ids_from_point = Module["_get_node_ids_from_point"] = wasmExports["Dg"];
5017
+ var _get_node_ids_from_envelope = Module["_get_node_ids_from_envelope"] = wasmExports["Eg"];
5018
+ var _get_node_absolute_bounding_box = Module["_get_node_absolute_bounding_box"] = wasmExports["Fg"];
5019
+ var _export_node_as = Module["_export_node_as"] = wasmExports["Gg"];
5020
+ var _to_vector_network = Module["_to_vector_network"] = wasmExports["Hg"];
5021
+ var _set_debug = Module["_set_debug"] = wasmExports["Ig"];
5022
+ var _toggle_debug = Module["_toggle_debug"] = wasmExports["Jg"];
5023
+ var _set_verbose = Module["_set_verbose"] = wasmExports["Kg"];
5024
+ var _devtools_rendering_set_show_ruler = Module["_devtools_rendering_set_show_ruler"] = wasmExports["Lg"];
5025
+ var _highlight_strokes = Module["_highlight_strokes"] = wasmExports["Mg"];
5026
+ var _devtools_rendering_set_show_tiles = Module["_devtools_rendering_set_show_tiles"] = wasmExports["Ng"];
5027
+ var _runtime_renderer_set_cache_tile = Module["_runtime_renderer_set_cache_tile"] = wasmExports["Og"];
5028
+ var _devtools_rendering_set_show_fps_meter = Module["_devtools_rendering_set_show_fps_meter"] = wasmExports["Pg"];
5029
+ var _devtools_rendering_set_show_stats = Module["_devtools_rendering_set_show_stats"] = wasmExports["Qg"];
5030
+ var _devtools_rendering_set_show_hit_testing = Module["_devtools_rendering_set_show_hit_testing"] = wasmExports["Rg"];
5031
+ var _main = Module["_main"] = wasmExports["Sg"];
5032
+ var _malloc = wasmExports["Tg"];
5033
+ var _emscripten_builtin_memalign = wasmExports["Ug"];
5034
+ var _setThrew = wasmExports["Vg"];
5035
+ var __emscripten_tempret_set = wasmExports["Wg"];
5036
+ var __emscripten_stack_restore = wasmExports["Xg"];
5037
+ var __emscripten_stack_alloc = wasmExports["Yg"];
5038
+ var _emscripten_stack_get_current = wasmExports["Zg"];
5039
+ var ___cxa_decrement_exception_refcount = wasmExports["_g"];
5040
+ var ___cxa_increment_exception_refcount = wasmExports["$g"];
5041
+ var ___cxa_can_catch = wasmExports["ah"];
5042
+ var ___cxa_get_exception_ptr = wasmExports["bh"];
5190
5043
  function invoke_vii(index, a1, a2) {
5191
5044
  var sp = stackSave();
5192
5045
  try {
@@ -5297,60 +5150,91 @@ var require_grida_canvas_wasm = __commonJS({
5297
5150
  _setThrew(1, 0);
5298
5151
  }
5299
5152
  }
5300
- function invoke_viiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {
5153
+ function invoke_iiiii(index, a1, a2, a3, a4) {
5301
5154
  var sp = stackSave();
5302
5155
  try {
5303
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8);
5156
+ return getWasmTableEntry(index)(a1, a2, a3, a4);
5304
5157
  } catch (e) {
5305
5158
  stackRestore(sp);
5306
5159
  if (e !== e + 0) throw e;
5307
5160
  _setThrew(1, 0);
5308
5161
  }
5309
5162
  }
5310
- function invoke_iiiii(index, a1, a2, a3, a4) {
5163
+ function invoke_iif(index, a1, a2) {
5311
5164
  var sp = stackSave();
5312
5165
  try {
5313
- return getWasmTableEntry(index)(a1, a2, a3, a4);
5166
+ return getWasmTableEntry(index)(a1, a2);
5314
5167
  } catch (e) {
5315
5168
  stackRestore(sp);
5316
5169
  if (e !== e + 0) throw e;
5317
5170
  _setThrew(1, 0);
5318
5171
  }
5319
5172
  }
5320
- function invoke_v(index) {
5173
+ function invoke_i(index) {
5321
5174
  var sp = stackSave();
5322
5175
  try {
5323
- getWasmTableEntry(index)();
5176
+ return getWasmTableEntry(index)();
5324
5177
  } catch (e) {
5325
5178
  stackRestore(sp);
5326
5179
  if (e !== e + 0) throw e;
5327
5180
  _setThrew(1, 0);
5328
5181
  }
5329
5182
  }
5330
- function invoke_i(index) {
5183
+ function invoke_jii(index, a1, a2) {
5331
5184
  var sp = stackSave();
5332
5185
  try {
5333
- return getWasmTableEntry(index)();
5186
+ return getWasmTableEntry(index)(a1, a2);
5334
5187
  } catch (e) {
5335
5188
  stackRestore(sp);
5336
5189
  if (e !== e + 0) throw e;
5337
5190
  _setThrew(1, 0);
5191
+ return 0n;
5338
5192
  }
5339
5193
  }
5340
- function invoke_iif(index, a1, a2) {
5194
+ function invoke_viiji(index, a1, a2, a3, a4) {
5341
5195
  var sp = stackSave();
5342
5196
  try {
5343
- return getWasmTableEntry(index)(a1, a2);
5197
+ getWasmTableEntry(index)(a1, a2, a3, a4);
5344
5198
  } catch (e) {
5345
5199
  stackRestore(sp);
5346
5200
  if (e !== e + 0) throw e;
5347
5201
  _setThrew(1, 0);
5348
5202
  }
5349
5203
  }
5350
- function invoke_if(index, a1) {
5204
+ function invoke_viiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {
5351
5205
  var sp = stackSave();
5352
5206
  try {
5353
- return getWasmTableEntry(index)(a1);
5207
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8);
5208
+ } catch (e) {
5209
+ stackRestore(sp);
5210
+ if (e !== e + 0) throw e;
5211
+ _setThrew(1, 0);
5212
+ }
5213
+ }
5214
+ function invoke_viiifi(index, a1, a2, a3, a4, a5) {
5215
+ var sp = stackSave();
5216
+ try {
5217
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5218
+ } catch (e) {
5219
+ stackRestore(sp);
5220
+ if (e !== e + 0) throw e;
5221
+ _setThrew(1, 0);
5222
+ }
5223
+ }
5224
+ function invoke_viifii(index, a1, a2, a3, a4, a5) {
5225
+ var sp = stackSave();
5226
+ try {
5227
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5228
+ } catch (e) {
5229
+ stackRestore(sp);
5230
+ if (e !== e + 0) throw e;
5231
+ _setThrew(1, 0);
5232
+ }
5233
+ }
5234
+ function invoke_v(index) {
5235
+ var sp = stackSave();
5236
+ try {
5237
+ getWasmTableEntry(index)();
5354
5238
  } catch (e) {
5355
5239
  stackRestore(sp);
5356
5240
  if (e !== e + 0) throw e;
@@ -5397,70 +5281,80 @@ var require_grida_canvas_wasm = __commonJS({
5397
5281
  _setThrew(1, 0);
5398
5282
  }
5399
5283
  }
5400
- function invoke_viiffff(index, a1, a2, a3, a4, a5, a6) {
5284
+ function invoke_vifff(index, a1, a2, a3, a4) {
5401
5285
  var sp = stackSave();
5402
5286
  try {
5403
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6);
5287
+ getWasmTableEntry(index)(a1, a2, a3, a4);
5404
5288
  } catch (e) {
5405
5289
  stackRestore(sp);
5406
5290
  if (e !== e + 0) throw e;
5407
5291
  _setThrew(1, 0);
5408
5292
  }
5409
5293
  }
5410
- function invoke_viifii(index, a1, a2, a3, a4, a5) {
5294
+ function invoke_fi(index, a1) {
5411
5295
  var sp = stackSave();
5412
5296
  try {
5413
- getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5297
+ return getWasmTableEntry(index)(a1);
5414
5298
  } catch (e) {
5415
5299
  stackRestore(sp);
5416
5300
  if (e !== e + 0) throw e;
5417
5301
  _setThrew(1, 0);
5418
5302
  }
5419
5303
  }
5420
- function invoke_iiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {
5304
+ function invoke_viiffiii(index, a1, a2, a3, a4, a5, a6, a7) {
5421
5305
  var sp = stackSave();
5422
5306
  try {
5423
- return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
5307
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7);
5424
5308
  } catch (e) {
5425
5309
  stackRestore(sp);
5426
5310
  if (e !== e + 0) throw e;
5427
5311
  _setThrew(1, 0);
5428
5312
  }
5429
5313
  }
5430
- function invoke_vif(index, a1, a2) {
5314
+ function invoke_viiiiiiff(index, a1, a2, a3, a4, a5, a6, a7, a8) {
5431
5315
  var sp = stackSave();
5432
5316
  try {
5433
- getWasmTableEntry(index)(a1, a2);
5317
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8);
5434
5318
  } catch (e) {
5435
5319
  stackRestore(sp);
5436
5320
  if (e !== e + 0) throw e;
5437
5321
  _setThrew(1, 0);
5438
5322
  }
5439
5323
  }
5440
- function invoke_viifff(index, a1, a2, a3, a4, a5) {
5324
+ function invoke_if(index, a1) {
5441
5325
  var sp = stackSave();
5442
5326
  try {
5443
- getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5327
+ return getWasmTableEntry(index)(a1);
5444
5328
  } catch (e) {
5445
5329
  stackRestore(sp);
5446
5330
  if (e !== e + 0) throw e;
5447
5331
  _setThrew(1, 0);
5448
5332
  }
5449
5333
  }
5450
- function invoke_viffffffffffffffffffff(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21) {
5334
+ function invoke_iiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {
5451
5335
  var sp = stackSave();
5452
5336
  try {
5453
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21);
5337
+ return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
5454
5338
  } catch (e) {
5455
5339
  stackRestore(sp);
5456
5340
  if (e !== e + 0) throw e;
5457
5341
  _setThrew(1, 0);
5458
5342
  }
5459
5343
  }
5460
- function invoke_viffi(index, a1, a2, a3, a4) {
5344
+ function invoke_vif(index, a1, a2) {
5461
5345
  var sp = stackSave();
5462
5346
  try {
5463
- getWasmTableEntry(index)(a1, a2, a3, a4);
5347
+ getWasmTableEntry(index)(a1, a2);
5348
+ } catch (e) {
5349
+ stackRestore(sp);
5350
+ if (e !== e + 0) throw e;
5351
+ _setThrew(1, 0);
5352
+ }
5353
+ }
5354
+ function invoke_viifff(index, a1, a2, a3, a4, a5) {
5355
+ var sp = stackSave();
5356
+ try {
5357
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5464
5358
  } catch (e) {
5465
5359
  stackRestore(sp);
5466
5360
  if (e !== e + 0) throw e;
@@ -5487,7 +5381,7 @@ var require_grida_canvas_wasm = __commonJS({
5487
5381
  _setThrew(1, 0);
5488
5382
  }
5489
5383
  }
5490
- function invoke_vifff(index, a1, a2, a3, a4) {
5384
+ function invoke_viiff(index, a1, a2, a3, a4) {
5491
5385
  var sp = stackSave();
5492
5386
  try {
5493
5387
  getWasmTableEntry(index)(a1, a2, a3, a4);
@@ -5497,7 +5391,7 @@ var require_grida_canvas_wasm = __commonJS({
5497
5391
  _setThrew(1, 0);
5498
5392
  }
5499
5393
  }
5500
- function invoke_viiff(index, a1, a2, a3, a4) {
5394
+ function invoke_viffi(index, a1, a2, a3, a4) {
5501
5395
  var sp = stackSave();
5502
5396
  try {
5503
5397
  getWasmTableEntry(index)(a1, a2, a3, a4);
@@ -5507,80 +5401,81 @@ var require_grida_canvas_wasm = __commonJS({
5507
5401
  _setThrew(1, 0);
5508
5402
  }
5509
5403
  }
5510
- function invoke_viiffiii(index, a1, a2, a3, a4, a5, a6, a7) {
5404
+ function invoke_viiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {
5511
5405
  var sp = stackSave();
5512
5406
  try {
5513
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7);
5407
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
5514
5408
  } catch (e) {
5515
5409
  stackRestore(sp);
5516
5410
  if (e !== e + 0) throw e;
5517
5411
  _setThrew(1, 0);
5518
5412
  }
5519
5413
  }
5520
- function invoke_viiiiiiff(index, a1, a2, a3, a4, a5, a6, a7, a8) {
5414
+ function invoke_viiffff(index, a1, a2, a3, a4, a5, a6) {
5521
5415
  var sp = stackSave();
5522
5416
  try {
5523
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8);
5417
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6);
5524
5418
  } catch (e) {
5525
5419
  stackRestore(sp);
5526
5420
  if (e !== e + 0) throw e;
5527
5421
  _setThrew(1, 0);
5528
5422
  }
5529
5423
  }
5530
- function invoke_fi(index, a1) {
5424
+ function invoke_viffffffffffffffffffff(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21) {
5531
5425
  var sp = stackSave();
5532
5426
  try {
5533
- return getWasmTableEntry(index)(a1);
5427
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21);
5534
5428
  } catch (e) {
5535
5429
  stackRestore(sp);
5536
5430
  if (e !== e + 0) throw e;
5537
5431
  _setThrew(1, 0);
5538
5432
  }
5539
5433
  }
5540
- function invoke_viiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {
5434
+ function invoke_viij(index, a1, a2, a3) {
5541
5435
  var sp = stackSave();
5542
5436
  try {
5543
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
5437
+ getWasmTableEntry(index)(a1, a2, a3);
5544
5438
  } catch (e) {
5545
5439
  stackRestore(sp);
5546
5440
  if (e !== e + 0) throw e;
5547
5441
  _setThrew(1, 0);
5548
5442
  }
5549
5443
  }
5550
- function invoke_iffiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {
5444
+ function invoke_ji(index, a1) {
5551
5445
  var sp = stackSave();
5552
5446
  try {
5553
- return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
5447
+ return getWasmTableEntry(index)(a1);
5554
5448
  } catch (e) {
5555
5449
  stackRestore(sp);
5556
5450
  if (e !== e + 0) throw e;
5557
5451
  _setThrew(1, 0);
5452
+ return 0n;
5558
5453
  }
5559
5454
  }
5560
- function invoke_fiiiif(index, a1, a2, a3, a4, a5) {
5455
+ function invoke_iffiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {
5561
5456
  var sp = stackSave();
5562
5457
  try {
5563
- return getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5458
+ return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
5564
5459
  } catch (e) {
5565
5460
  stackRestore(sp);
5566
5461
  if (e !== e + 0) throw e;
5567
5462
  _setThrew(1, 0);
5568
5463
  }
5569
5464
  }
5570
- function invoke_fif(index, a1, a2) {
5465
+ function invoke_fiiiif(index, a1, a2, a3, a4, a5) {
5571
5466
  var sp = stackSave();
5572
5467
  try {
5573
- return getWasmTableEntry(index)(a1, a2);
5468
+ return getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5574
5469
  } catch (e) {
5575
5470
  stackRestore(sp);
5576
5471
  if (e !== e + 0) throw e;
5577
5472
  _setThrew(1, 0);
5578
5473
  }
5579
5474
  }
5580
- function invoke_viiifi(index, a1, a2, a3, a4, a5) {
5475
+ function invoke_fif(index, a1, a2) {
5581
5476
  var sp = stackSave();
5582
5477
  try {
5583
- getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5478
+ return getWasmTableEntry(index)(a1, a2);
5584
5479
  } catch (e) {
5585
5480
  stackRestore(sp);
5586
5481
  if (e !== e + 0) throw e;
@@ -5657,17 +5552,17 @@ var require_grida_canvas_wasm = __commonJS({
5657
5552
  _setThrew(1, 0);
5658
5553
  }
5659
5554
  }
5660
- function invoke_iiiiid(index, a1, a2, a3, a4, a5) {
5555
+ function invoke_vijjjj(index, a1, a2, a3, a4, a5) {
5661
5556
  var sp = stackSave();
5662
5557
  try {
5663
- return getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5558
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5664
5559
  } catch (e) {
5665
5560
  stackRestore(sp);
5666
5561
  if (e !== e + 0) throw e;
5667
5562
  _setThrew(1, 0);
5668
5563
  }
5669
5564
  }
5670
- function invoke_fiii(index, a1, a2, a3) {
5565
+ function invoke_dddd(index, a1, a2, a3) {
5671
5566
  var sp = stackSave();
5672
5567
  try {
5673
5568
  return getWasmTableEntry(index)(a1, a2, a3);
@@ -5677,115 +5572,118 @@ var require_grida_canvas_wasm = __commonJS({
5677
5572
  _setThrew(1, 0);
5678
5573
  }
5679
5574
  }
5680
- function invoke_diii(index, a1, a2, a3) {
5575
+ function invoke_dd(index, a1) {
5681
5576
  var sp = stackSave();
5682
5577
  try {
5683
- return getWasmTableEntry(index)(a1, a2, a3);
5578
+ return getWasmTableEntry(index)(a1);
5684
5579
  } catch (e) {
5685
5580
  stackRestore(sp);
5686
5581
  if (e !== e + 0) throw e;
5687
5582
  _setThrew(1, 0);
5688
5583
  }
5689
5584
  }
5690
- function invoke_iiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {
5585
+ function invoke_ddd(index, a1, a2) {
5691
5586
  var sp = stackSave();
5692
5587
  try {
5693
- return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
5588
+ return getWasmTableEntry(index)(a1, a2);
5694
5589
  } catch (e) {
5695
5590
  stackRestore(sp);
5696
5591
  if (e !== e + 0) throw e;
5697
5592
  _setThrew(1, 0);
5698
5593
  }
5699
5594
  }
5700
- function invoke_viiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {
5595
+ function invoke_fff(index, a1, a2) {
5701
5596
  var sp = stackSave();
5702
5597
  try {
5703
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
5598
+ return getWasmTableEntry(index)(a1, a2);
5704
5599
  } catch (e) {
5705
5600
  stackRestore(sp);
5706
5601
  if (e !== e + 0) throw e;
5707
5602
  _setThrew(1, 0);
5708
5603
  }
5709
5604
  }
5710
- function invoke_viiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) {
5605
+ function invoke_j(index) {
5711
5606
  var sp = stackSave();
5712
5607
  try {
5713
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);
5608
+ return getWasmTableEntry(index)();
5714
5609
  } catch (e) {
5715
5610
  stackRestore(sp);
5716
5611
  if (e !== e + 0) throw e;
5717
5612
  _setThrew(1, 0);
5613
+ return 0n;
5718
5614
  }
5719
5615
  }
5720
- function invoke_viij(index, a1, a2, a3, a4) {
5616
+ function invoke_iiiiid(index, a1, a2, a3, a4, a5) {
5721
5617
  var sp = stackSave();
5722
5618
  try {
5723
- dynCall_viij(index, a1, a2, a3, a4);
5619
+ return getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5724
5620
  } catch (e) {
5725
5621
  stackRestore(sp);
5726
5622
  if (e !== e + 0) throw e;
5727
5623
  _setThrew(1, 0);
5728
5624
  }
5729
5625
  }
5730
- function invoke_ji(index, a1) {
5626
+ function invoke_jiiii(index, a1, a2, a3, a4) {
5731
5627
  var sp = stackSave();
5732
5628
  try {
5733
- return dynCall_ji(index, a1);
5629
+ return getWasmTableEntry(index)(a1, a2, a3, a4);
5734
5630
  } catch (e) {
5735
5631
  stackRestore(sp);
5736
5632
  if (e !== e + 0) throw e;
5737
5633
  _setThrew(1, 0);
5634
+ return 0n;
5738
5635
  }
5739
5636
  }
5740
- function invoke_jii(index, a1, a2) {
5637
+ function invoke_fiii(index, a1, a2, a3) {
5741
5638
  var sp = stackSave();
5742
5639
  try {
5743
- return dynCall_jii(index, a1, a2);
5640
+ return getWasmTableEntry(index)(a1, a2, a3);
5744
5641
  } catch (e) {
5745
5642
  stackRestore(sp);
5746
5643
  if (e !== e + 0) throw e;
5747
5644
  _setThrew(1, 0);
5748
5645
  }
5749
5646
  }
5750
- function invoke_viiji(index, a1, a2, a3, a4, a5) {
5647
+ function invoke_diii(index, a1, a2, a3) {
5751
5648
  var sp = stackSave();
5752
5649
  try {
5753
- dynCall_viiji(index, a1, a2, a3, a4, a5);
5650
+ return getWasmTableEntry(index)(a1, a2, a3);
5754
5651
  } catch (e) {
5755
5652
  stackRestore(sp);
5756
5653
  if (e !== e + 0) throw e;
5757
5654
  _setThrew(1, 0);
5758
5655
  }
5759
5656
  }
5760
- function invoke_j(index) {
5657
+ function invoke_iiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {
5761
5658
  var sp = stackSave();
5762
5659
  try {
5763
- return dynCall_j(index);
5660
+ return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
5764
5661
  } catch (e) {
5765
5662
  stackRestore(sp);
5766
5663
  if (e !== e + 0) throw e;
5767
5664
  _setThrew(1, 0);
5768
5665
  }
5769
5666
  }
5770
- function invoke_jiiii(index, a1, a2, a3, a4) {
5667
+ function invoke_viiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {
5771
5668
  var sp = stackSave();
5772
5669
  try {
5773
- return dynCall_jiiii(index, a1, a2, a3, a4);
5670
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
5671
+ } catch (e) {
5672
+ stackRestore(sp);
5673
+ if (e !== e + 0) throw e;
5674
+ _setThrew(1, 0);
5675
+ }
5676
+ }
5677
+ function invoke_viiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) {
5678
+ var sp = stackSave();
5679
+ try {
5680
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);
5774
5681
  } catch (e) {
5775
5682
  stackRestore(sp);
5776
5683
  if (e !== e + 0) throw e;
5777
5684
  _setThrew(1, 0);
5778
5685
  }
5779
5686
  }
5780
- Module["UTF8ToString"] = UTF8ToString;
5781
- Module["stringToUTF8"] = stringToUTF8;
5782
- Module["lengthBytesUTF8"] = lengthBytesUTF8;
5783
- Module["GL"] = GL;
5784
- var calledRun;
5785
- dependenciesFulfilled = function runCaller() {
5786
- if (!calledRun) run();
5787
- if (!calledRun) dependenciesFulfilled = runCaller;
5788
- };
5789
5687
  function callMain(args = []) {
5790
5688
  var entryFunction = _main;
5791
5689
  args.unshift(thisProgram);
@@ -5807,52 +5705,54 @@ var require_grida_canvas_wasm = __commonJS({
5807
5705
  }
5808
5706
  function run(args = arguments_) {
5809
5707
  if (runDependencies > 0) {
5708
+ dependenciesFulfilled = run;
5810
5709
  return;
5811
5710
  }
5812
5711
  preRun();
5813
5712
  if (runDependencies > 0) {
5713
+ dependenciesFulfilled = run;
5814
5714
  return;
5815
5715
  }
5816
5716
  function doRun() {
5817
- if (calledRun) return;
5818
- calledRun = true;
5717
+ var _a2;
5819
5718
  Module["calledRun"] = true;
5820
5719
  if (ABORT) return;
5821
5720
  initRuntime();
5822
5721
  preMain();
5823
5722
  readyPromiseResolve(Module);
5824
- if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"]();
5825
- if (shouldRunNow) callMain(args);
5723
+ (_a2 = Module["onRuntimeInitialized"]) == null ? void 0 : _a2.call(Module);
5724
+ var noInitialRun = Module["noInitialRun"] || false;
5725
+ if (!noInitialRun) callMain(args);
5826
5726
  postRun();
5827
5727
  }
5828
5728
  if (Module["setStatus"]) {
5829
5729
  Module["setStatus"]("Running...");
5830
- setTimeout(function() {
5831
- setTimeout(function() {
5832
- Module["setStatus"]("");
5833
- }, 1);
5730
+ setTimeout(() => {
5731
+ setTimeout(() => Module["setStatus"](""), 1);
5834
5732
  doRun();
5835
5733
  }, 1);
5836
5734
  } else {
5837
5735
  doRun();
5838
5736
  }
5839
5737
  }
5840
- if (Module["preInit"]) {
5841
- if (typeof Module["preInit"] == "function") Module["preInit"] = [Module["preInit"]];
5842
- while (Module["preInit"].length > 0) {
5843
- Module["preInit"].pop()();
5738
+ function preInit() {
5739
+ if (Module["preInit"]) {
5740
+ if (typeof Module["preInit"] == "function") Module["preInit"] = [Module["preInit"]];
5741
+ while (Module["preInit"].length > 0) {
5742
+ Module["preInit"].shift()();
5743
+ }
5844
5744
  }
5845
5745
  }
5846
- var shouldRunNow = true;
5847
- if (Module["noInitialRun"]) shouldRunNow = false;
5746
+ preInit();
5848
5747
  run();
5849
5748
  moduleRtn = readyPromise;
5850
5749
  return moduleRtn;
5851
5750
  };
5852
5751
  })();
5853
- if (typeof exports === "object" && typeof module === "object")
5752
+ if (typeof exports === "object" && typeof module === "object") {
5854
5753
  module.exports = createGridaCanvas2;
5855
- else if (typeof define === "function" && define["amd"])
5754
+ module.exports.default = createGridaCanvas2;
5755
+ } else if (typeof define === "function" && define["amd"])
5856
5756
  define([], () => createGridaCanvas2);
5857
5757
  }
5858
5758
  });
@@ -5861,7 +5761,7 @@ var require_grida_canvas_wasm = __commonJS({
5861
5761
  var import_grida_canvas_wasm = __toESM(require_grida_canvas_wasm());
5862
5762
 
5863
5763
  // package.json
5864
- var version = "0.0.51";
5764
+ var version = "0.0.53";
5865
5765
 
5866
5766
  // lib/index.ts
5867
5767
  async function init(opts) {