@mateuszjs/magic-render 0.1.0-next.3 → 0.1.0-next.5
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/lib/e9072ac5eb734c67.png +0 -0
- package/lib/index.mjs +1 -1
- package/lib/index.mjs.map +1 -1
- package/lib/types/src/WebGPU/canvasSizeObserver.d.ts.map +1 -0
- package/lib/types/src/WebGPU/getDevice.d.ts.map +1 -0
- package/lib/types/src/WebGPU/getTexture/createCheckedImageData.d.ts.map +1 -0
- package/lib/types/src/WebGPU/getTexture/generateMimapsArray.d.ts.map +1 -0
- package/lib/types/src/WebGPU/getTexture/index.d.ts.map +1 -0
- package/lib/types/src/WebGPU/m3.d.ts.map +1 -0
- package/lib/types/src/WebGPU/pick.d.ts.map +1 -0
- package/lib/types/{WebGPU → src/WebGPU}/pointer.d.ts +1 -0
- package/lib/types/src/WebGPU/pointer.d.ts.map +1 -0
- package/lib/types/src/WebGPU/programs/blur/getProgram.d.ts.map +1 -0
- package/lib/types/src/WebGPU/programs/draw/getProgram.d.ts +2 -0
- package/lib/types/src/WebGPU/programs/draw/getProgram.d.ts.map +1 -0
- package/lib/types/src/WebGPU/programs/draw3dModel/getProgram.d.ts.map +1 -0
- package/lib/types/src/WebGPU/programs/draw3dModelLight/getProgram.d.ts.map +1 -0
- package/lib/types/src/WebGPU/programs/draw3dModelTexture/getProgram.d.ts.map +1 -0
- package/lib/types/src/WebGPU/programs/drawBezier/getProgram.d.ts.map +1 -0
- package/lib/types/src/WebGPU/programs/drawMSDF/getProgram.d.ts +2 -0
- package/lib/types/src/WebGPU/programs/drawMSDF/getProgram.d.ts.map +1 -0
- package/lib/types/src/WebGPU/programs/drawTexture/getProgram.d.ts.map +1 -0
- package/lib/types/src/WebGPU/programs/drawTriangle/getProgram.d.ts.map +1 -0
- package/lib/types/{WebGPU → src/WebGPU}/programs/initPrograms.d.ts +2 -0
- package/lib/types/src/WebGPU/programs/initPrograms.d.ts.map +1 -0
- package/lib/types/src/WebGPU/programs/pickTexture/getProgram.d.ts.map +1 -0
- package/lib/types/src/WebGPU/programs/pickTriangle/getProgram.d.ts.map +1 -0
- package/lib/types/src/__test__/index.test.d.ts.map +1 -0
- package/lib/types/src/consts.d.ts.map +1 -0
- package/lib/types/src/getCanvasMatrix.d.ts.map +1 -0
- package/lib/types/src/getCanvasRenderDescriptor.d.ts.map +1 -0
- package/lib/types/src/getDepthTexture.d.ts.map +1 -0
- package/lib/types/src/getMultisampleTexture.d.ts +2 -0
- package/lib/types/src/getMultisampleTexture.d.ts.map +1 -0
- package/lib/types/src/getRenderDescriptor.d.ts.map +1 -0
- package/lib/types/{index.d.ts → src/index.d.ts} +1 -0
- package/lib/types/src/index.d.ts.map +1 -0
- package/lib/types/src/models/Video/MiniatureVideo.d.ts.map +1 -0
- package/lib/types/src/run.d.ts.map +1 -0
- package/lib/types/src/types.d.ts +4 -0
- package/lib/types/src/types.d.ts.map +1 -0
- package/lib/types/src/utils/atNormIndex.d.ts.map +1 -0
- package/lib/types/src/utils/captureCanvasStream.d.ts.map +1 -0
- package/lib/types/src/utils/captureCanvasStreamWasm.d.ts.map +1 -0
- package/lib/types/src/utils/clamp.d.ts.map +1 -0
- package/lib/types/{utils → src/utils}/distancePointToLine.d.ts +0 -1
- package/lib/types/src/utils/distancePointToLine.d.ts.map +1 -0
- package/lib/types/src/utils/fitCurve.d.ts.map +1 -0
- package/lib/types/src/utils/getAngle.d.ts +2 -0
- package/lib/types/src/utils/getAngle.d.ts.map +1 -0
- package/lib/types/src/utils/getAngleDiff.d.ts.map +1 -0
- package/lib/types/{utils → src/utils}/getBezierPos.d.ts +0 -1
- package/lib/types/src/utils/getBezierPos.d.ts.map +1 -0
- package/lib/types/{utils → src/utils}/getBezierTan.d.ts +0 -1
- package/lib/types/src/utils/getBezierTan.d.ts.map +1 -0
- package/lib/types/{utils → src/utils}/getCurveLength.d.ts +0 -1
- package/lib/types/src/utils/getCurveLength.d.ts.map +1 -0
- package/lib/types/src/utils/getDefaultPoints.d.ts.map +1 -0
- package/lib/types/src/utils/getDistance.d.ts +2 -0
- package/lib/types/src/utils/getDistance.d.ts.map +1 -0
- package/lib/types/src/utils/getSvgSource.d.ts +2 -0
- package/lib/types/src/utils/getSvgSource.d.ts.map +1 -0
- package/lib/types/src/utils/mat4.d.ts.map +1 -0
- package/lib/types/src/utils/normalizeVec2.d.ts +2 -0
- package/lib/types/src/utils/normalizeVec2.d.ts.map +1 -0
- package/lib/types/src/utils/resizeArray.d.ts.map +1 -0
- package/lib/types/src/utils/vec3.d.ts.map +1 -0
- package/package.json +7 -3
- package/lib/types/WebGPU/canvasSizeObserver.d.ts.map +0 -1
- package/lib/types/WebGPU/getDevice.d.ts.map +0 -1
- package/lib/types/WebGPU/getTexture/createCheckedImageData.d.ts.map +0 -1
- package/lib/types/WebGPU/getTexture/generateMimapsArray.d.ts.map +0 -1
- package/lib/types/WebGPU/getTexture/index.d.ts.map +0 -1
- package/lib/types/WebGPU/m3.d.ts.map +0 -1
- package/lib/types/WebGPU/pick.d.ts.map +0 -1
- package/lib/types/WebGPU/pointer.d.ts.map +0 -1
- package/lib/types/WebGPU/programs/blur/getProgram.d.ts.map +0 -1
- package/lib/types/WebGPU/programs/draw3dModel/getProgram.d.ts.map +0 -1
- package/lib/types/WebGPU/programs/draw3dModelLight/getProgram.d.ts.map +0 -1
- package/lib/types/WebGPU/programs/draw3dModelTexture/getProgram.d.ts.map +0 -1
- package/lib/types/WebGPU/programs/drawBezier/getProgram.d.ts.map +0 -1
- package/lib/types/WebGPU/programs/drawTexture/getProgram.d.ts.map +0 -1
- package/lib/types/WebGPU/programs/drawTriangle/getProgram.d.ts.map +0 -1
- package/lib/types/WebGPU/programs/initPrograms.d.ts.map +0 -1
- package/lib/types/WebGPU/programs/pickTexture/getProgram.d.ts.map +0 -1
- package/lib/types/WebGPU/programs/pickTriangle/getProgram.d.ts.map +0 -1
- package/lib/types/__test__/index.test.d.ts.map +0 -1
- package/lib/types/consts.d.ts.map +0 -1
- package/lib/types/getCanvasMatrix.d.ts.map +0 -1
- package/lib/types/getCanvasRenderDescriptor.d.ts.map +0 -1
- package/lib/types/getDepthTexture.d.ts.map +0 -1
- package/lib/types/getRenderDescriptor.d.ts.map +0 -1
- package/lib/types/index.d.ts.map +0 -1
- package/lib/types/models/Video/MiniatureVideo.d.ts.map +0 -1
- package/lib/types/run.d.ts.map +0 -1
- package/lib/types/types.d.ts +0 -9
- package/lib/types/types.d.ts.map +0 -1
- package/lib/types/utils/atNormIndex.d.ts.map +0 -1
- package/lib/types/utils/captureCanvasStream.d.ts.map +0 -1
- package/lib/types/utils/captureCanvasStreamWasm.d.ts.map +0 -1
- package/lib/types/utils/clamp.d.ts.map +0 -1
- package/lib/types/utils/distancePointToLine.d.ts.map +0 -1
- package/lib/types/utils/fitCurve.d.ts.map +0 -1
- package/lib/types/utils/getAngle.d.ts +0 -3
- package/lib/types/utils/getAngle.d.ts.map +0 -1
- package/lib/types/utils/getAngleDiff.d.ts.map +0 -1
- package/lib/types/utils/getBezierPos.d.ts.map +0 -1
- package/lib/types/utils/getBezierTan.d.ts.map +0 -1
- package/lib/types/utils/getCurveLength.d.ts.map +0 -1
- package/lib/types/utils/getDefaultPoints.d.ts.map +0 -1
- package/lib/types/utils/getDistance.d.ts +0 -3
- package/lib/types/utils/getDistance.d.ts.map +0 -1
- package/lib/types/utils/mat4.d.ts.map +0 -1
- package/lib/types/utils/normalizeVec2.d.ts +0 -3
- package/lib/types/utils/normalizeVec2.d.ts.map +0 -1
- package/lib/types/utils/resizeArray.d.ts.map +0 -1
- package/lib/types/utils/vec3.d.ts.map +0 -1
- /package/lib/types/{WebGPU → src/WebGPU}/canvasSizeObserver.d.ts +0 -0
- /package/lib/types/{WebGPU → src/WebGPU}/getDevice.d.ts +0 -0
- /package/lib/types/{WebGPU → src/WebGPU}/getTexture/createCheckedImageData.d.ts +0 -0
- /package/lib/types/{WebGPU → src/WebGPU}/getTexture/generateMimapsArray.d.ts +0 -0
- /package/lib/types/{WebGPU → src/WebGPU}/getTexture/index.d.ts +0 -0
- /package/lib/types/{WebGPU → src/WebGPU}/m3.d.ts +0 -0
- /package/lib/types/{WebGPU → src/WebGPU}/pick.d.ts +0 -0
- /package/lib/types/{WebGPU → src/WebGPU}/programs/blur/getProgram.d.ts +0 -0
- /package/lib/types/{WebGPU → src/WebGPU}/programs/draw3dModel/getProgram.d.ts +0 -0
- /package/lib/types/{WebGPU → src/WebGPU}/programs/draw3dModelLight/getProgram.d.ts +0 -0
- /package/lib/types/{WebGPU → src/WebGPU}/programs/draw3dModelTexture/getProgram.d.ts +0 -0
- /package/lib/types/{WebGPU → src/WebGPU}/programs/drawBezier/getProgram.d.ts +0 -0
- /package/lib/types/{WebGPU → src/WebGPU}/programs/drawTexture/getProgram.d.ts +0 -0
- /package/lib/types/{WebGPU → src/WebGPU}/programs/drawTriangle/getProgram.d.ts +0 -0
- /package/lib/types/{WebGPU → src/WebGPU}/programs/pickTexture/getProgram.d.ts +0 -0
- /package/lib/types/{WebGPU → src/WebGPU}/programs/pickTriangle/getProgram.d.ts +0 -0
- /package/lib/types/{__test__ → src/__test__}/index.test.d.ts +0 -0
- /package/lib/types/{consts.d.ts → src/consts.d.ts} +0 -0
- /package/lib/types/{getCanvasMatrix.d.ts → src/getCanvasMatrix.d.ts} +0 -0
- /package/lib/types/{getCanvasRenderDescriptor.d.ts → src/getCanvasRenderDescriptor.d.ts} +0 -0
- /package/lib/types/{getDepthTexture.d.ts → src/getDepthTexture.d.ts} +0 -0
- /package/lib/types/{getRenderDescriptor.d.ts → src/getRenderDescriptor.d.ts} +0 -0
- /package/lib/types/{models → src/models}/Video/MiniatureVideo.d.ts +0 -0
- /package/lib/types/{run.d.ts → src/run.d.ts} +0 -0
- /package/lib/types/{utils → src/utils}/atNormIndex.d.ts +0 -0
- /package/lib/types/{utils → src/utils}/captureCanvasStream.d.ts +0 -0
- /package/lib/types/{utils → src/utils}/captureCanvasStreamWasm.d.ts +0 -0
- /package/lib/types/{utils → src/utils}/clamp.d.ts +0 -0
- /package/lib/types/{utils → src/utils}/fitCurve.d.ts +0 -0
- /package/lib/types/{utils → src/utils}/getAngleDiff.d.ts +0 -0
- /package/lib/types/{utils → src/utils}/getDefaultPoints.d.ts +0 -0
- /package/lib/types/{utils → src/utils}/mat4.d.ts +0 -0
- /package/lib/types/{utils → src/utils}/resizeArray.d.ts +0 -0
- /package/lib/types/{utils → src/utils}/vec3.d.ts +0 -0
package/lib/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","mappings":"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","sources":["webpack://@mateuszjs/magic-render/webpack/runtime/async module","webpack://@mateuszjs/magic-render/./src/WebGPU/canvasSizeObserver.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/getDevice.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/getTexture/index.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/pick.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/pointer.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/drawTriangle/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/blur/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/drawTexture/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/pickTexture/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/pickTriangle/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/initPrograms.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/drawBezier/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/draw3dModelTexture/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/draw3dModel/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/draw3dModelLight/getProgram.ts","webpack://@mateuszjs/magic-render/./src/getCanvasMatrix.ts","webpack://@mateuszjs/magic-render/./src/getDepthTexture.ts","webpack://@mateuszjs/magic-render/./src/getCanvasRenderDescriptor.ts","webpack://@mateuszjs/magic-render/./src/index.ts","webpack://@mateuszjs/magic-render/./src/run.ts","webpack://@mateuszjs/magic-render/./src/utils/clamp.ts","webpack://@mateuszjs/magic-render/./src/utils/getDefaultPoints.ts","webpack://@mateuszjs/magic-render/./src/utils/vec3.ts","webpack://@mateuszjs/magic-render/./src/utils/mat4.ts","webpack://@mateuszjs/magic-render/./src/logic/index.zig","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/accessors/all.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/accessors/int.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/constants.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/environment.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/errors.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/baseline.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/call-marshaling-inbound.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/call-marshaling-outbound.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/data-copying.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/int-conversion.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/memory-mapping.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/module-loading.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/object-linkage.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/pointer-synchronization.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/thunk-allocation.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/view-management.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/write-protection.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/index.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/iterators/for-array.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/iterators/for-struct.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/all.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/base64.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/data-view.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/float.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/object.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/primitive.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/to-json.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/typed-array.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/uint.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/value-of.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/void.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/all.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/arg-struct.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/array-like.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/array.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/function.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/pointer.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/primitive.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/slice.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/struct-like.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/struct.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/symbols.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/utils.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/visitors/all.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/visitors/in-arg-struct.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/visitors/in-struct.js","webpack://@mateuszjs/magic-render/webpack/bootstrap","webpack://@mateuszjs/magic-render/webpack/runtime/define property getters","webpack://@mateuszjs/magic-render/webpack/runtime/hasOwnProperty shorthand","webpack://@mateuszjs/magic-render/webpack/startup"],"sourcesContent":["var webpackQueues = typeof Symbol === \"function\" ? Symbol(\"webpack queues\") : \"__webpack_queues__\";\nvar webpackExports = typeof Symbol === \"function\" ? Symbol(\"webpack exports\") : \"__webpack_exports__\";\nvar webpackError = typeof Symbol === \"function\" ? Symbol(\"webpack error\") : \"__webpack_error__\";\nvar resolveQueue = (queue) => {\n\tif(queue && queue.d < 1) {\n\t\tqueue.d = 1;\n\t\tqueue.forEach((fn) => (fn.r--));\n\t\tqueue.forEach((fn) => (fn.r-- ? fn.r++ : fn()));\n\t}\n}\nvar wrapDeps = (deps) => (deps.map((dep) => {\n\tif(dep !== null && typeof dep === \"object\") {\n\t\tif(dep[webpackQueues]) return dep;\n\t\tif(dep.then) {\n\t\t\tvar queue = [];\n\t\t\tqueue.d = 0;\n\t\t\tdep.then((r) => {\n\t\t\t\tobj[webpackExports] = r;\n\t\t\t\tresolveQueue(queue);\n\t\t\t}, (e) => {\n\t\t\t\tobj[webpackError] = e;\n\t\t\t\tresolveQueue(queue);\n\t\t\t});\n\t\t\tvar obj = {};\n\t\t\tobj[webpackQueues] = (fn) => (fn(queue));\n\t\t\treturn obj;\n\t\t}\n\t}\n\tvar ret = {};\n\tret[webpackQueues] = x => {};\n\tret[webpackExports] = dep;\n\treturn ret;\n}));\n__webpack_require__.a = (module, body, hasAwait) => {\n\tvar queue;\n\thasAwait && ((queue = []).d = -1);\n\tvar depQueues = new Set();\n\tvar exports = module.exports;\n\tvar currentDeps;\n\tvar outerResolve;\n\tvar reject;\n\tvar promise = new Promise((resolve, rej) => {\n\t\treject = rej;\n\t\touterResolve = resolve;\n\t});\n\tpromise[webpackExports] = exports;\n\tpromise[webpackQueues] = (fn) => (queue && fn(queue), depQueues.forEach(fn), promise[\"catch\"](x => {}));\n\tmodule.exports = promise;\n\tbody((deps) => {\n\t\tcurrentDeps = wrapDeps(deps);\n\t\tvar fn;\n\t\tvar getResult = () => (currentDeps.map((d) => {\n\t\t\tif(d[webpackError]) throw d[webpackError];\n\t\t\treturn d[webpackExports];\n\t\t}))\n\t\tvar promise = new Promise((resolve) => {\n\t\t\tfn = () => (resolve(getResult));\n\t\t\tfn.r = 0;\n\t\t\tvar fnQueue = (q) => (q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn))));\n\t\t\tcurrentDeps.map((dep) => (dep[webpackQueues](fnQueue)));\n\t\t});\n\t\treturn fn.r ? promise : getResult();\n\t}, (err) => ((err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue)));\n\tqueue && queue.d < 0 && (queue.d = 0);\n};","function updateCanvasSize(\n canvas: HTMLCanvasElement,\n width: number,\n height: number,\n device: GPUDevice\n) {\n canvas.width = Math.max(1, Math.min(width, device.limits.maxTextureDimension2D))\n canvas.height = Math.max(1, Math.min(height, device.limits.maxTextureDimension2D))\n}\n\nexport default function canvasSizeObserver(\n canvas: HTMLCanvasElement,\n device: GPUDevice,\n callback: VoidFunction\n) {\n // TODO: should we also handle window.devicePixelRatio; ?\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const canvas = entry.target as HTMLCanvasElement\n const width = entry.contentBoxSize[0].inlineSize | 0\n const height = entry.contentBoxSize[0].blockSize | 0\n updateCanvasSize(canvas, width, height, device)\n callback()\n }\n })\n observer.observe(canvas)\n\n // observer calls it anyway but it just happens late enough that user see a flicker\n updateCanvasSize(canvas, canvas.clientWidth, canvas.clientHeight, device)\n}\n","export default async function getDevice() {\n if (!navigator.gpu) {\n throw Error(\"this browser does not support WebGPU\")\n }\n\n const adapter = await navigator.gpu.requestAdapter()\n \n\n if (!adapter) {\n throw Error(\"this browser supports webgpu but it appears disabled\")\n }\n\n const device = await adapter.requestDevice()\n device.lost.then((info) => {\n console.error(`WebGPU device was lost: ${info.message}`)\n\n if (info.reason !== \"destroyed\") {\n // reprot issue to the tracking system\n // getDevice(callback);\n }\n })\n\n return device\n}","import createCheckedImageData from \"./createCheckedImageData\"\nimport generateMipmapsArray from \"./generateMimapsArray\"\n\ninterface Options {\n mips?: boolean\n flipY?: boolean\n depthOrArrayLayers?: number\n}\n\ntype TextureSource =\n| ImageBitmap\n| HTMLVideoElement\n| HTMLCanvasElement\n| HTMLImageElement\n| OffscreenCanvas;\n\nconst numMipLevels = (...sizes: number[]) => {\n const maxSize = Math.max(...sizes)\n return 1 + Math.log2(maxSize) | 0\n}\n\nexport interface TextureSlice {\n source: GPUCopyExternalImageSource\n fakeMipmaps: boolean\n}\n\nfunction createCheckedMipmap(levels: Array<{ size: number, color: string }>) {\n const ctx = document.createElement('canvas').getContext('2d', {willReadFrequently: true})!\n\n return levels.map(({size, color}, i) => {\n ctx.canvas.width = size\n ctx.canvas.height = size\n ctx.fillStyle = i & 1 ? '#000' : '#fff'\n ctx.fillRect(0, 0, size, size)\n ctx.fillStyle = color\n ctx.fillRect(0, 0, size / 2, size / 2)\n ctx.fillRect(size / 2, size / 2, size / 2, size / 2)\n\n ctx.fillStyle = i & 1 ? '#FFFFFF' : '#000000'\n ctx.font = `${size * 0.3}px serif`\n ctx.textAlign = 'center'\n ctx.textBaseline = 'middle'\n ;[\n { x: 0.25, y: 0.25 },\n { x: 0.25, y: 0.75 },\n { x: 0.75, y: 0.75 },\n { x: 0.75, y: 0.25 },\n ].forEach(p => {\n ctx.fillText(i.toString(), p.x * size, p.y * size)\n })\n\n\n return ctx.getImageData(0, 0, size, size)\n })\n}\n\nexport function createTextureArray(device: GPUDevice, width: number, height: number, slices: number) {\n return device.createTexture({\n label: '2d array texture',\n format: 'rgba8unorm',\n mipLevelCount: 1 + Math.log2(2048),\n size: [width, height, slices],\n usage: GPUTextureUsage.TEXTURE_BINDING |\n GPUTextureUsage.COPY_DST |\n GPUTextureUsage.RENDER_ATTACHMENT,\n })\n}\n\n// adds texture ot texture array\nexport function attachSlice(\n device: GPUDevice,\n textue2dArray: GPUTexture,\n width: number,\n height: number,\n source: GPUCopyExternalImageSource,\n sliceIndex: number,\n options: Options = {}\n) {\n device.queue.copyExternalImageToTexture(\n { source },\n { texture: textue2dArray, origin: { z: sliceIndex }, mipLevel: 0 },\n { width, height },\n )\n\n // if (texSlice.fakeMipmaps) {\n // let mipLevel = 1, size = width\n // while ((size >>= 1) >= 1) {\n // const { data, width, height} = createCheckedImageData(size, mipLevel)\n // device.queue.writeTexture(\n // { texture: textue2dArray, origin: { z: sliceIndex }, mipLevel },\n // data,\n // { bytesPerRow: width * 4 },\n // { width, height },\n // );\n // mipLevel++\n // }\n // } else {\n // generateMipmapsArray(device, textue2dArray, {\n // baseArrayLayer: sliceIndex,\n // arrayLayerCount: 1,\n // });\n // }\n}\n\n\nexport function createTextureFromSource(device: GPUDevice, source: TextureSource, options: Options = {}) {\n const texture = device.createTexture({\n format: 'rgba8unorm',\n mipLevelCount: options.mips ? numMipLevels(source.width, source.height) : 1,\n size: [source.width, source.height],\n usage: GPUTextureUsage.TEXTURE_BINDING |\n GPUTextureUsage.COPY_DST |\n GPUTextureUsage.RENDER_ATTACHMENT,\n })\n copySourceToTexture(device, texture, source, options)\n return texture\n}\n\nfunction copySourceToTexture(device: GPUDevice, texture: GPUTexture, source: TextureSource, {flipY, depthOrArrayLayers}: Options = {}) {\n\n device.queue.copyExternalImageToTexture(\n { source, flipY, },\n { texture,\n // premultipliedAlpha: true\n },\n { width: source.width, height: source.height, depthOrArrayLayers },\n )\n\n // if (texture.mipLevelCount > 1) {\n // generateMipmaps(device, texture);\n // }\n}\n\nexport async function loadImageBitmap(url: string) {\n const res = await fetch(url)\n const blob = await res.blob()\n return await createImageBitmap(blob, { colorSpaceConversion: 'none', premultiplyAlpha: 'premultiply' })\n}\n\nexport async function createTextureFromImage(device: GPUDevice, url: string, options: Options) {\n const imgBitmap = await loadImageBitmap(url)\n return createTextureFromSource(device, imgBitmap, options)\n}\n","import mat4 from 'utils/mat4'\nimport { pointer } from './pointer'\nimport { on_update_pick } from '../logic/index.zig'\n\nconst NUM_PIXELS = 1\n\nexport default class PickManager {\n private pickBuffer: GPUBuffer\n private pickTexture: GPUTexture\n private pickDepthTexture: GPUTexture\n private isPreviousPickDone = true\n\n constructor(device: GPUDevice) {\n this.pickBuffer = device.createBuffer({\n size: NUM_PIXELS * 4,\n usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST,\n })\n\n this.pickTexture = device.createTexture({\n size: [1, 1],\n format: 'r32uint',\n usage: GPUTextureUsage.COPY_SRC | GPUTextureUsage.RENDER_ATTACHMENT,\n })\n\n this.pickDepthTexture = device.createTexture({\n size: [1, 1],\n format: 'depth24plus',\n usage: GPUTextureUsage.RENDER_ATTACHMENT,\n })\n }\n\n /**\n * Starts a picking render pass.\n * @param encoder The GPUCommandEncoder to use for the render pass.\n * @returns An object which contains render pass and a callback to end picking.\n */\n startPicking(encoder: GPUCommandEncoder): { pass: GPURenderPassEncoder; end: VoidFunction } {\n const descriptor: GPURenderPassDescriptor = {\n // describe which textures we want to raw to and how use them\n label: 'our render to canvas renderPass',\n colorAttachments: [\n {\n view: this.pickTexture.createView(),\n loadOp: 'clear',\n clearValue: [0, 0, 0, 1],\n storeOp: 'store',\n } as const,\n ],\n // depthStencilAttachment: {\n // view: this.pickDepthTexture.createView(), // placholder to calm down TS\n // depthLoadOp: 'clear',\n // depthClearValue: 1.0,\n // depthStoreOp: 'discard',\n // } as const,\n }\n\n const pass = encoder.beginRenderPass(descriptor)\n\n const width = 1\n const height = 1\n pass.setViewport(0, 0, width, height, 0, 1)\n // Set the scissor rectangle to clip rendering to the 1x1 area\n pass.setScissorRect(0, 0, width, height)\n\n const endPicking = () => {\n pass.end()\n\n if (this.isPreviousPickDone) {\n encoder.copyTextureToBuffer(\n {\n texture: this.pickTexture,\n origin: { x: 0, y: 0 },\n },\n {\n buffer: this.pickBuffer,\n },\n {\n width: NUM_PIXELS,\n }\n )\n }\n }\n\n return { pass, end: endPicking }\n }\n\n createMatrix(canvas: HTMLCanvasElement, canvasMatrix: Float32Array) {\n const { clientWidth, clientHeight } = canvas\n\n const tx = -(2 * (pointer.x / clientWidth) - 1)\n const ty = 2 * (pointer.y / clientHeight) - 1\n\n const pickMatrix = [\n mat4.scaling([clientWidth, clientHeight, 0]), // scale to 1px convers whole shader output\n mat4.translation([tx, ty, 0]),\n canvasMatrix,\n ].reduce(\n (accMatrix, rotationMatrix) => mat4.multiply(accMatrix, rotationMatrix),\n mat4.translation([-1, 1, 0]) // move (0,0) to the top left corner\n )\n\n return pickMatrix\n }\n\n async asyncPick() {\n if (!this.isPreviousPickDone) return\n this.isPreviousPickDone = false\n try {\n await this.pickBuffer.mapAsync(GPUMapMode.READ, 0, 4 * NUM_PIXELS)\n const [id] = new Uint32Array(this.pickBuffer.getMappedRange(0, 4 * NUM_PIXELS))\n on_update_pick(id)\n this.pickBuffer.unmap()\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (err) {\n /* ignorign errors when map fails because device was destroyed(so buffer too and was unmapped before mapAsync completed)*/\n }\n this.isPreviousPickDone = true\n }\n}\n","import { on_pointer_move, on_pointer_down, on_pointer_up } from '../logic/index.zig'\n\nexport const pointer = { x: 0, y: 0 }\n\nexport default function initMouseController(canvas: HTMLCanvasElement) {\n pointer.x = 0\n pointer.y = 0\n\n function updatePointer(e: MouseEvent) {\n const rect = canvas.getBoundingClientRect()\n pointer.x = e.clientX - rect.left\n pointer.y = e.clientY - rect.top\n }\n\n canvas.addEventListener('mouseleave', () => {})\n\n canvas.addEventListener('mousemove', (e) => {\n updatePointer(e)\n on_pointer_move(pointer.x, canvas.height - pointer.y)\n })\n\n canvas.addEventListener('mousedown', () => {\n on_pointer_down(pointer.x, canvas.height - pointer.y)\n })\n\n canvas.addEventListener('mouseup', () => {\n on_pointer_up()\n })\n\n canvas.addEventListener('wheel', (event) => {\n console.log(event.deltaY)\n })\n}\n","import shaderCode from \"./shader.wgsl\"\n \n\nconst STRIDE = 4 + 4// + 1 + 1 + 4\n\nexport default function getProgram(\n device: GPUDevice,\n presentationFormat: GPUTextureFormat\n) {\n const module = device.createShaderModule({\n label: 'draw triangle module',\n code: shaderCode\n })\n\n const pipeline = device.createRenderPipeline({\n label: 'draw triangle pipeline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n arrayStride: STRIDE * 4,\n attributes: [\n {shaderLocation: 0, offset: 0, format: 'float32x4'}, // destination position\n {shaderLocation: 1, offset: 16, format: 'float32x4'}, // color\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [{\n format: presentationFormat,\n // blend: {\n // color: {\n // srcFactor: 'one',\n // dstFactor: 'one-minus-src-alpha'\n // },\n // alpha: {\n // srcFactor: 'one',\n // dstFactor: 'one-minus-src-alpha'\n // },\n // },\n }],\n },\n // depthStencil: {\n // depthWriteEnabled: true,\n // depthCompare: 'less',\n // format: 'depth24plus',\n // },\n })\n\n const uniformBufferSize = (\n 16/*projection matrix*/\n ) * 4\n const uniformBuffer = device.createBuffer({\n label: 'uniforms',\n size: uniformBufferSize,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n\n const uniformValues = new Float32Array(uniformBufferSize / 4)\n const kMatrixOffset = 0\n const matrixValue = uniformValues.subarray(kMatrixOffset, kMatrixOffset + 16)\n\n return function drawTriangle(\n pass: GPURenderPassEncoder,\n worldProjectionMatrix: Float32Array,\n vertexData: Float32Array<ArrayBufferLike>,\n ) {\n const numVertices = vertexData.length / STRIDE | 0\n const vertexBuffer = device.createBuffer({\n label: 'vertex buffer vertices',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n\n\n // bind group should be pre-created and reuse instead of constantly initialized\n const bindGroup = device.createBindGroup({\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: { buffer: uniformBuffer }},\n ],\n })\n\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n\n matrixValue.set(worldProjectionMatrix)\n\n device.queue.writeBuffer(uniformBuffer, 0, uniformValues)\n\n pass.setBindGroup(0, bindGroup)\n pass.draw(numVertices)\n }\n}\n","import shaderCode from \"./index.wgsl\"\n\nconst tileDim = 128\nconst batch = [4, 4]\n\nexport default function getProgram(device: GPUDevice) {\n const module = device.createShaderModule({\n label: \"blur shader module\",\n code: shaderCode,\n })\n\n const blurPipeline = device.createComputePipeline({\n layout: 'auto',\n compute: {\n module,\n entryPoint: 'main',\n },\n })\n\n return function renderBlur(\n texture: GPUTexture,\n commandEncoder: GPUCommandEncoder,\n ): GPUTexture {\n \n const textures = [0, 1].map(() => {\n return device.createTexture({\n size: {\n width: texture.width,\n height: texture.height,\n },\n format: 'rgba8unorm',\n usage:\n GPUTextureUsage.COPY_DST |\n GPUTextureUsage.STORAGE_BINDING |\n GPUTextureUsage.TEXTURE_BINDING,\n })\n })\n \n const buffer0 = (() => {\n const buffer = device.createBuffer({\n size: 4,\n mappedAtCreation: true,\n usage: GPUBufferUsage.UNIFORM,\n })\n new Uint32Array(buffer.getMappedRange())[0] = 0\n buffer.unmap()\n return buffer\n })()\n \n const buffer1 = (() => {\n const buffer = device.createBuffer({\n size: 4,\n mappedAtCreation: true,\n usage: GPUBufferUsage.UNIFORM,\n })\n new Uint32Array(buffer.getMappedRange())[0] = 1\n buffer.unmap()\n return buffer\n })()\n \n const blurParamsBuffer = device.createBuffer({\n size: 8,\n usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.UNIFORM,\n })\n\n const sampler = device.createSampler({\n magFilter: 'linear',\n minFilter: 'linear',\n })\n \n const computeConstants = device.createBindGroup({\n layout: blurPipeline.getBindGroupLayout(0),\n entries: [\n {\n binding: 0,\n resource: sampler,\n },\n {\n binding: 1,\n resource: {\n buffer: blurParamsBuffer,\n },\n },\n ],\n })\n \n const computeBindGroup0 = device.createBindGroup({\n layout: blurPipeline.getBindGroupLayout(1),\n entries: [\n {\n binding: 1,\n resource: texture.createView(),\n },\n {\n binding: 2,\n resource: textures[0].createView(),\n },\n {\n binding: 3,\n resource: {\n buffer: buffer0,\n },\n },\n ],\n })\n \n const computeBindGroup1 = device.createBindGroup({\n layout: blurPipeline.getBindGroupLayout(1),\n entries: [\n {\n binding: 1,\n resource: textures[0].createView(),\n },\n {\n binding: 2,\n resource: textures[1].createView(),\n },\n {\n binding: 3,\n resource: {\n buffer: buffer1,\n },\n },\n ],\n })\n \n const computeBindGroup2 = device.createBindGroup({\n layout: blurPipeline.getBindGroupLayout(1),\n entries: [\n {\n binding: 1,\n resource: textures[1].createView(),\n },\n {\n binding: 2,\n resource: textures[0].createView(),\n },\n {\n binding: 3,\n resource: {\n buffer: buffer0,\n },\n },\n ],\n })\n \n const settings = {\n filterSize: 15,\n iterations: 2,\n }\n\n // const blockDim = 128 - (15 - 1) = 114\n const blockDim = tileDim - (settings.filterSize - 1)\n device.queue.writeBuffer(\n blurParamsBuffer,\n 0,\n new Uint32Array([settings.filterSize, blockDim])\n )\n\n const computePass = commandEncoder.beginComputePass()\n computePass.setPipeline(blurPipeline)\n computePass.setBindGroup(0, computeConstants)\n\n computePass.setBindGroup(1, computeBindGroup0)\n computePass.dispatchWorkgroups(\n Math.ceil(texture.width / blockDim),\n Math.ceil(texture.height / batch[1])\n )\n\n computePass.setBindGroup(1, computeBindGroup1)\n computePass.dispatchWorkgroups(\n Math.ceil(texture.height / blockDim),\n Math.ceil(texture.width / batch[1])\n )\n\n for (let i = 0; i < settings.iterations - 1; ++i) {\n computePass.setBindGroup(1, computeBindGroup2)\n computePass.dispatchWorkgroups(\n Math.ceil(texture.width / blockDim), // 1200 / 114 = 11 ~ 10.52\n Math.ceil(texture.height / batch[1]) // 800 / 4 = 200\n )\n // exchange width with height!\n computePass.setBindGroup(1, computeBindGroup1)\n computePass.dispatchWorkgroups(\n Math.ceil(texture.height / blockDim),\n Math.ceil(texture.width / batch[1])\n )\n }\n\n computePass.end()\n\n return textures[1]\n }\n}\n","import shaderCode from \"./shader.wgsl\"\n \n\nconst STRIDE = 4 + 2// + 1 + 1 + 4\n\nexport default function getProgram(\n device: GPUDevice,\n presentationFormat: GPUTextureFormat\n) {\n const module = device.createShaderModule({\n label: 'texture module',\n code: shaderCode\n })\n\n const sampler = device.createSampler({\n minFilter: 'linear',\n magFilter: 'linear',\n })\n\n const pipeline = device.createRenderPipeline({\n label: 'texture pipeline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n arrayStride: STRIDE * 4,\n attributes: [\n {shaderLocation: 0, offset: 0, format: 'float32x4'}, // destination position\n {shaderLocation: 1, offset: 16, format: 'float32x2'}, // source position\n // {shaderLocation: 2, offset: 16 + 8, format: 'float32'}, // source texture layer\n // {shaderLocation: 3, offset: 16 + 8 + 4, format: 'float32'}, // index of color matrix\n // {shaderLocation: 4, offset: 16 + 8 + 4 + 4, format: 'float32x3'}, // index of color matrix\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [{\n format: presentationFormat,\n // blend: {\n // color: {\n // srcFactor: 'one',\n // dstFactor: 'one-minus-src-alpha'\n // },\n // alpha: {\n // srcFactor: 'one',\n // dstFactor: 'one-minus-src-alpha'\n // },\n // },\n }],\n },\n // depthStencil: {\n // depthWriteEnabled: true,\n // depthCompare: 'less',\n // format: 'depth24plus',\n // },\n })\n\n const uniformBufferSize = (\n 16/*projection matrix*/\n ) * 4\n const uniformBuffer = device.createBuffer({\n label: 'uniforms',\n size: uniformBufferSize,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n\n const uniformValues = new Float32Array(uniformBufferSize / 4)\n const kMatrixOffset = 0\n const matrixValue = uniformValues.subarray(kMatrixOffset, kMatrixOffset + 16)\n\n return function drawTexture(\n pass: GPURenderPassEncoder,\n worldProjectionMatrix: Float32Array,\n vertexData: Float32Array<ArrayBufferLike>,\n texture: GPUTexture,\n ) {\n const numVertices = vertexData.length / STRIDE | 0\n const vertexBuffer = device.createBuffer({\n label: 'vertex buffer vertices',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n\n\n // bind group should be pre-created and reuse instead of constantly initialized\n const bindGroup = device.createBindGroup({\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: { buffer: uniformBuffer }},\n { binding: 1, resource: sampler },\n { binding: 2, resource: texture.createView() },\n ],\n })\n\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n\n matrixValue.set(worldProjectionMatrix)\n\n device.queue.writeBuffer(uniformBuffer, 0, uniformValues)\n\n pass.setBindGroup(0, bindGroup)\n pass.draw(numVertices)\n }\n}\n","import shaderCode from './shader.wgsl'\n\nconst STRIDE = 4 + 2 + 1\n\nexport default function getProgram(device: GPUDevice) {\n const module = device.createShaderModule({\n label: 'pick texture module',\n code: shaderCode,\n })\n\n const sampler = device.createSampler({\n minFilter: 'linear',\n magFilter: 'linear',\n })\n\n const pipeline = device.createRenderPipeline({\n label: 'pick texture pipeline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n arrayStride: STRIDE * 4,\n attributes: [\n { shaderLocation: 0, offset: 0, format: 'float32x4' }, // destination position\n { shaderLocation: 1, offset: 16, format: 'float32x2' }, // source position\n { shaderLocation: 2, offset: 16 + 8, format: 'float32' }, // id\n // {shaderLocation: 3, offset: 16 + 8, format: 'float32x3'}, // id\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [\n {\n // format: debugPresentationFormat,\n format: 'r32uint',\n },\n ],\n },\n // primitive: {\n // cullMode: 'back',\n // },\n // depthStencil: {\n // depthWriteEnabled: true,\n // depthCompare: 'less',\n // format: 'depth24plus',\n // },\n })\n\n const uniformBufferSize = 16 /*projection matrix*/ * 4\n const uniformBuffer = device.createBuffer({\n label: 'uniforms',\n size: uniformBufferSize,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n\n const uniformValues = new Float32Array(uniformBufferSize / 4)\n const kMatrixOffset = 0\n const matrixValue = uniformValues.subarray(kMatrixOffset, kMatrixOffset + 16)\n\n return function pickTexture(\n pass: GPURenderPassEncoder,\n worldProjectionMatrix: Float32Array,\n vertexData: Float32Array<ArrayBufferLike>,\n texture: GPUTexture\n ) {\n const numVertices = (vertexData.length / STRIDE) | 0\n const vertexBuffer = device.createBuffer({\n label: 'pic texture vertex buffer vertices',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n\n // bind group should be pre-created and reuse instead of constantly initialized\n // TODO: avoid creatign bind group on every render\n const bindGroup = device.createBindGroup({\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: { buffer: uniformBuffer } },\n { binding: 1, resource: sampler },\n { binding: 2, resource: texture.createView() },\n ],\n })\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n\n // const translateWorldProjMatrix = mat4.translate(worldProjectionMatrix, [])\n matrixValue.set(worldProjectionMatrix)\n\n device.queue.writeBuffer(uniformBuffer, 0, uniformValues)\n\n pass.setBindGroup(0, bindGroup)\n pass.draw(numVertices)\n }\n}\n","import shaderCode from './shader.wgsl'\n\nconst STRIDE = 4 + 1\n\nexport default function getProgram(device: GPUDevice) {\n const module = device.createShaderModule({\n label: 'pick triangle module',\n code: shaderCode,\n })\n\n const pipeline = device.createRenderPipeline({\n label: 'pick triangle pipeline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n arrayStride: STRIDE * 4,\n attributes: [\n { shaderLocation: 0, offset: 0, format: 'float32x4' }, // destination position\n { shaderLocation: 1, offset: 16, format: 'float32' }, // id\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [\n {\n format: 'r32uint',\n // blend: {\n // color: {\n // srcFactor: 'one',\n // dstFactor: 'one-minus-src-alpha'\n // },\n // alpha: {\n // srcFactor: 'one',\n // dstFactor: 'one-minus-src-alpha'\n // },\n // },\n },\n ],\n },\n // depthStencil: {\n // depthWriteEnabled: true,\n // depthCompare: 'less',\n // format: 'depth24plus',\n // },\n })\n\n const uniformBufferSize = 16 /*projection matrix*/ * 4\n const uniformBuffer = device.createBuffer({\n label: 'uniforms',\n size: uniformBufferSize,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n\n const uniformValues = new Float32Array(uniformBufferSize / 4)\n const kMatrixOffset = 0\n const matrixValue = uniformValues.subarray(kMatrixOffset, kMatrixOffset + 16)\n\n return function pickTriangle(\n pass: GPURenderPassEncoder,\n worldProjectionMatrix: Float32Array,\n vertexData: Float32Array<ArrayBufferLike>\n ) {\n const numVertices = (vertexData.length / STRIDE) | 0\n const vertexBuffer = device.createBuffer({\n label: 'pick triangle vertex buffer vertices',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n\n // bind group should be pre-created and reuse instead of constantly initialized\n const bindGroup = device.createBindGroup({\n layout: pipeline.getBindGroupLayout(0),\n entries: [{ binding: 0, resource: { buffer: uniformBuffer } }],\n })\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n\n matrixValue.set(worldProjectionMatrix)\n\n device.queue.writeBuffer(uniformBuffer, 0, uniformValues)\n\n pass.setBindGroup(0, bindGroup)\n pass.draw(numVertices)\n }\n}\n","import getDrawTriangle from './drawTriangle/getProgram'\nimport getDrawBezier from './drawBezier/getProgram'\nimport getDraw3dModelTexture from './draw3dModelTexture/getProgram'\nimport getDraw3dModel from './draw3dModel/getProgram'\nimport getDraw3dModelLight from './draw3dModelLight/getProgram'\nimport getBlur from './blur/getProgram'\nimport getDrawtexture from './drawTexture/getProgram'\nimport getPickTexture from './pickTexture/getProgram'\nimport getPickTriangle from './pickTriangle/getProgram'\n\nexport let drawTriangle: ReturnType<typeof getDrawTriangle>\nexport let drawBezier: ReturnType<typeof getDrawBezier>\nexport let draw3dModel: ReturnType<typeof getDraw3dModel>\nexport let draw3dModelTexture: ReturnType<typeof getDraw3dModelTexture>\nexport let draw3dModelLight: ReturnType<typeof getDraw3dModelLight>\nexport let drawBlur: ReturnType<typeof getBlur>\nexport let drawTexture: ReturnType<typeof getDrawtexture>\nexport let pickTexture: ReturnType<typeof getPickTexture>\nexport let pickTriangle: ReturnType<typeof getPickTriangle>\n\nexport default function initPrograms(device: GPUDevice, presentationFormat: GPUTextureFormat) {\n drawTriangle = getDrawTriangle(device, presentationFormat)\n drawBezier = getDrawBezier(device, presentationFormat)\n draw3dModelTexture = getDraw3dModelTexture(device, presentationFormat)\n draw3dModel = getDraw3dModel(device, presentationFormat)\n draw3dModelLight = getDraw3dModelLight(device, presentationFormat)\n drawBlur = getBlur(device)\n drawTexture = getDrawtexture(device, presentationFormat)\n pickTexture = getPickTexture(device)\n pickTriangle = getPickTriangle(device)\n}\n","import shaderCode from \"./shader.wgsl\"\n\nexport default function getProgram(device: GPUDevice, presentationFormat: GPUTextureFormat) {\n const module = device.createShaderModule({\n label: \"bezier shader module\",\n code: shaderCode,\n })\n\n const pipeline = device.createRenderPipeline({\n label: 'bezier pipline',\n layout: 'auto',\n primitive: {\n topology: `triangle-strip`,\n },\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n arrayStride: (1 /*t*/) * 4,\n attributes: [\n {shaderLocation: 0, offset: 0, format: 'float32'},\n ] as const,\n },\n {\n arrayStride: (1 /*dir*/) * 4,\n attributes: [\n {shaderLocation: 1, offset: 0, format: 'float32'},\n ] as const,\n },\n {\n arrayStride: (1 /*segmentIndex*/) * 4,\n attributes: [\n {shaderLocation: 2, offset: 0, format: 'uint32'},\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [{ format: presentationFormat }],\n },\n depthStencil: {\n depthWriteEnabled: false,\n depthCompare: 'always',\n format: 'depth24plus',\n },\n })\n\n return function renderBezierCurve(\n pass: GPURenderPassEncoder,\n matrix: Float32Array,\n pointsData: Float32Array,\n tData: Float32Array,\n dirData: Float32Array,\n segmentIndexData: Uint32Array,\n zoom: number,\n ) {\n // for each single segment we need to create a buffer OR more likely better is to combine\n // all of these data into one buffer!\n\n const storageBufferSize = (pointsData.length/*points*/) * 4\n const storageBuffer = device.createBuffer({\n label: 'storage points',\n size: storageBufferSize,\n usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST,\n })\n\n\n const uniformBufferSize = (16/*matrix*/ + 4/*zoom*/) * 4\n const uniformBuffer = device.createBuffer({\n label: 'uniforms',\n size: uniformBufferSize,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n\n const uniformValues = new Float32Array(uniformBufferSize / 4)\n\n // offsets to the various uniform values in float32 indices\n const kMatrixOffset = 0\n const kZoomOffset = 16\n\n const matrixValue = uniformValues.subarray(kMatrixOffset, kMatrixOffset + 16)\n const zoomValue = uniformValues.subarray(kZoomOffset, kZoomOffset + 1)\n\n const bindGroup = device.createBindGroup({\n label: 'bezier bind group for object',\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: { buffer: uniformBuffer }},\n { binding: 1, resource: { buffer: storageBuffer }},\n ],\n })\n\n\n const tBuffer = device.createBuffer({\n label: 'bezier vertex buffer vertices',\n size: tData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(tBuffer, 0, tData)\n\n const dirBuffer = device.createBuffer({\n label: 'bezier vertex buffer vertices',\n size: dirData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(dirBuffer, 0, dirData)\n\n const segmentIndexBuffer = device.createBuffer({\n label: 'bezier vertex buffer vertices',\n size: segmentIndexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(segmentIndexBuffer, 0, segmentIndexData) // not sure if it should not be 1\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, tBuffer) // index of the buffer in the pipline\n pass.setVertexBuffer(1, dirBuffer)\n pass.setVertexBuffer(2, segmentIndexBuffer)\n\n matrixValue.set(matrix)\n zoomValue.set(new Float32Array([zoom]))\n // p1, p2, p3, p4\n // t = 0, dir = 1\n // t = 0, dir = -1\n // t = 0.5, dir = 1\n // t = 0.5, dir = -1\n // t = 1, dir = 1\n // t = 1, dir = -1\n // change p1, p2, p3, p4\n\n // upload the uniform values to the uniform buffer\n device.queue.writeBuffer(uniformBuffer, 0, uniformValues)\n\n device.queue.writeBuffer(storageBuffer, 0, pointsData)\n\n pass.setBindGroup(0, bindGroup)\n pass.draw(tData.length)\n }\n}\n","import shaderCode from \"./shader.wgsl\"\n\nexport default function getProgram(device: GPUDevice, presentationFormat: GPUTextureFormat) {\n const module = device.createShaderModule({\n label: \"3d model texture shader module\",\n code: shaderCode,\n })\n\n const pipeline = device.createRenderPipeline({\n label: '3d model texture pipline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n arrayStride: (3 + 2) * 4, // (3 + 2) floats, 4 bytes each\n attributes: [\n {shaderLocation: 0, offset: 0, format: 'float32x3'}, // position\n {shaderLocation: 1, offset: (3) * 4, format: 'float32x2'}, // texture coord\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [{ format: presentationFormat }],\n },\n depthStencil: {\n depthWriteEnabled: false,\n depthCompare: 'always',\n format: 'depth24plus',\n },\n })\n\n\n return function renderDraw3dModelTexture(\n pass: GPURenderPassEncoder,\n matrix: Float32Array,\n texture: GPUTexture,\n vertexData: Float32Array,\n indexData: Uint32Array,\n ) {\n const sampler = device.createSampler({\n magFilter: \"linear\",\n minFilter: 'linear',\n })\n\n const uniformBufferSize = (16) * 4\n const uniformBuffer = device.createBuffer({\n label: 'uniforms',\n size: uniformBufferSize,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n\n const uniformValues = new Float32Array(uniformBufferSize / 4)\n\n // offsets to the various uniform values in float32 indices\n const kMatrixOffset = 0\n\n const matrixValue = uniformValues.subarray(kMatrixOffset, kMatrixOffset + 16)\n\n const numVertices = indexData.length\n const vertexBuffer = device.createBuffer({\n label: '3d model texture vertex buffer vertices',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n const indexBuffer = device.createBuffer({\n label: '3d model texture index buffer',\n size: indexData.byteLength,\n usage: GPUBufferUsage.INDEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(indexBuffer, 0, indexData)\n\n const bindGroup = device.createBindGroup({\n label: '3d model texture bind group for object',\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: { buffer: uniformBuffer }},\n { binding: 1, resource: sampler },\n { binding: 2, resource: texture.createView() },\n ],\n })\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n pass.setIndexBuffer(indexBuffer, 'uint32')\n\n matrixValue.set(matrix)\n\n device.queue.writeBuffer(uniformBuffer, 0, uniformValues)\n\n pass.setBindGroup(0, bindGroup)\n pass.drawIndexed(numVertices)\n }\n}\n","import shaderCode from \"./shader.wgsl\"\n\nexport default function getProgram(device: GPUDevice, presentationFormat: GPUTextureFormat) {\n const module = device.createShaderModule({\n label: \"3d model shader module\",\n code: shaderCode,\n })\n\n const pipeline = device.createRenderPipeline({\n label: '3d model pipline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n // position + texture coords\n // arrayStride: (3) * 4, // (3) floats, 4 bytes each\n arrayStride: (3) * 4, // (3) floats, 4 bytes each\n attributes: [\n {shaderLocation: 0, offset: 0, format: 'float32x3'}, // position\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [{ format: presentationFormat }],\n },\n primitive: {\n cullMode: 'back',\n },\n depthStencil: {\n depthWriteEnabled: true,\n depthCompare: 'less',\n format: 'depth24plus',\n },\n })\n\n\n return function renderDraw3dModel(\n pass: GPURenderPassEncoder,\n matrix: Float32Array,\n vertexData: Float32Array,\n indexData: Uint32Array,\n ) {\n // matrix\n const uniformBufferSize = (16) * 4\n const uniformBuffer = device.createBuffer({\n label: 'uniforms',\n size: uniformBufferSize,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n\n const uniformValues = new Float32Array(uniformBufferSize / 4)\n\n // offsets to the various uniform values in float32 indices\n const kMatrixOffset = 0\n\n const matrixValue = uniformValues.subarray(kMatrixOffset, kMatrixOffset + 16)\n\n const numVertices = indexData.length\n const vertexBuffer = device.createBuffer({\n label: 'vertex buffer vertices',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n const indexBuffer = device.createBuffer({\n label: 'index buffer',\n size: indexData.byteLength,\n usage: GPUBufferUsage.INDEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(indexBuffer, 0, indexData)\n\n const bindGroup = device.createBindGroup({\n label: 'bind group for object',\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: { buffer: uniformBuffer }},\n ],\n })\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n pass.setIndexBuffer(indexBuffer, 'uint32')\n\n matrixValue.set(matrix)\n\n // upload the uniform values to the uniform buffer\n device.queue.writeBuffer(uniformBuffer, 0, uniformValues)\n\n pass.setBindGroup(0, bindGroup)\n pass.drawIndexed(numVertices)\n }\n}\n","import shaderCode from \"./shader.wgsl\"\n\ninterface Uniforms {\n worldViewProjection: Float32Array,\n normalMatrix: Float32Array,\n lightColor: Float32Array,\n lightDirection: Float32Array\n}\n\nexport default function getProgram(device: GPUDevice, presentationFormat: GPUTextureFormat) {\n const module = device.createShaderModule({\n label: \"3d model light shader module\",\n code: shaderCode,\n })\n\n const pipeline = device.createRenderPipeline({\n label: '3d model light pipline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n // position + texture coords\n // arrayStride: (3) * 4, // (3) floats, 4 bytes each\n arrayStride: (3 + 3) * 4, // (3) floats, 4 bytes each\n attributes: [\n {shaderLocation: 0, offset: 0, format: 'float32x3'}, // position\n {shaderLocation: 1, offset: 12, format: 'float32x3'}, // normal\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [{ format: presentationFormat }],\n },\n primitive: {\n cullMode: 'back',\n },\n depthStencil: {\n depthWriteEnabled: true,\n depthCompare: 'less',\n format: 'depth24plus',\n },\n })\n\n\n return function renderDraw3dModelLight(\n pass: GPURenderPassEncoder,\n uniform: Uniforms,\n vertexData: Float32Array,\n indexData: Uint32Array,\n ) {\n const {\n worldViewProjection,\n normalMatrix,\n lightColor,\n lightDirection,\n } = uniform\n // matrix\n const uniformBufferSize = (12 + 16 + 4 + 4) * 4\n const uniformBuffer = device.createBuffer({\n label: 'uniforms',\n size: uniformBufferSize,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n\n const uniformValues = new Float32Array(uniformBufferSize / 4)\n\n // offsets to the various uniform values in float32 indices\n const kNormalMatrixOffset = 0\n const kWorldViewProjectionOffset = 12\n const kColorOffset = 28\n const kLightDirectionOffset = 32\n\n const normalMatrixValue = uniformValues.subarray(kNormalMatrixOffset, kNormalMatrixOffset + 12)\n const worldViewProjectionValue = uniformValues.subarray(\n kWorldViewProjectionOffset, kWorldViewProjectionOffset + 16)\n const colorValue = uniformValues.subarray(kColorOffset, kColorOffset + 4)\n const lightDirectionValue =\n uniformValues.subarray(kLightDirectionOffset, kLightDirectionOffset + 3)\n\n const bindGroup = device.createBindGroup({\n label: 'bind group for object',\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: { buffer: uniformBuffer }},\n ],\n })\n\n const numVertices = indexData.length\n const vertexBuffer = device.createBuffer({\n label: 'vertex buffer vertices',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n const indexBuffer = device.createBuffer({\n label: 'index buffer',\n size: indexData.byteLength,\n usage: GPUBufferUsage.INDEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(indexBuffer, 0, indexData)\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n pass.setIndexBuffer(indexBuffer, 'uint32')\n\n\n normalMatrixValue.set(normalMatrix)\n worldViewProjectionValue.set(worldViewProjection)\n colorValue.set(lightColor)\n lightDirectionValue.set(lightDirection)\n\n // upload the uniform values to the uniform buffer\n device.queue.writeBuffer(uniformBuffer, 0, uniformValues)\n\n pass.setBindGroup(0, bindGroup)\n pass.drawIndexed(numVertices)\n }\n}\n","import mat4 from 'utils/mat4'\n\nexport default function getCanvasMatrix(canvas: HTMLCanvasElement) {\n const matrix = mat4.ortho(\n 0, // left\n canvas.clientWidth, // right\n 0, // bottom\n canvas.clientHeight, // top\n 1, // near\n -1 // far\n )\n\n return matrix\n}\n","let depthTexture: GPUTexture | undefined\n\nexport default function getDepthTexture(device: GPUDevice, width: number, height: number) {\n if (!depthTexture ||\n depthTexture.width !== width ||\n depthTexture.height !== height\n ) {\n depthTexture?.destroy()\n depthTexture = device.createTexture({\n size: [width, height],\n format: 'depth24plus',\n usage: GPUTextureUsage.RENDER_ATTACHMENT,\n })\n }\n\n return depthTexture\n}","import getDepthTexture from \"./getDepthTexture\"\n\nexport default function getCanvasRenderDescriptor(context: GPUCanvasContext, device: GPUDevice) {\n // here we need to render that texture into canvas\n const canvasTexture = context.getCurrentTexture()\n const depthTexture = getDepthTexture(device, canvasTexture.width, canvasTexture.height)\n const descriptor :GPURenderPassDescriptor = {\n // describe which textures we want to raw to and how use them\n label: \"our render to canvas renderPass\",\n colorAttachments: [\n {\n view: canvasTexture.createView(),\n clearValue: [0, 0, 0, 1],\n loadOp: \"clear\", // before rendering clear the texture to value \"clear\". Other option is \"load\" to load existing content of the texture into GPU so we can draw over it\n storeOp: \"store\", // to store the result of what we draw, other option is \"discard\"\n },\n ],\n // depthStencilAttachment: {\n // view: depthTexture.createView(), // placholder to calm down TS\n // depthClearValue: 1.0,\n // depthLoadOp: 'clear',\n // depthStoreOp: 'discard',\n // },\n }\n\n return descriptor\n}","import canvasSizeObserver from 'WebGPU/canvasSizeObserver'\nimport getDevice from 'WebGPU/getDevice'\nimport initPrograms from 'WebGPU/programs/initPrograms'\nimport runCreator from 'run'\nimport { createTextureFromSource } from 'WebGPU/getTexture'\nimport {\n init_state,\n add_texture,\n connect_on_asset_update_callback,\n destroy_state,\n} from './logic/index.zig'\nimport initMouseController from 'WebGPU/pointer'\nimport getDefaultPoints from 'utils/getDefaultPoints'\n\nexport type SerializedAsset = Omit<AssetZig, 'texture_id'> & {\n url: string\n}\n\nexport interface CreatorAPI {\n addImage: (img: HTMLImageElement, points?: PointUV[]) => void\n destroy: VoidFunction\n}\n\nexport interface TextureSource {\n url: string\n texture: GPUTexture\n}\n\nexport default async function initCreator(\n canvas: HTMLCanvasElement,\n assets: SerializedAsset[],\n onAssetsUpdate: (assets: SerializedAsset[]) => void\n): Promise<CreatorAPI> {\n /* setup WebGPU stuff */\n const device = await getDevice()\n\n init_state(canvas.clientWidth, canvas.clientHeight)\n const context = canvas.getContext('webgpu')\n if (!context) throw Error('WebGPU from canvas needs to be always provided')\n\n const presentationFormat = navigator.gpu.getPreferredCanvasFormat()\n context.configure({\n device,\n format: presentationFormat,\n // Specify we want both RENDER_ATTACHMENT and COPY_SRC since we\n // will copy out of the swapchain texture.\n })\n\n canvasSizeObserver(canvas, device, () => {\n // state.needsRefresh = true\n })\n\n initPrograms(device, presentationFormat)\n\n initMouseController(canvas)\n\n const textures: TextureSource[] = []\n connect_on_asset_update_callback((serializedData: AssetZig[]) => {\n const serializedAssetsTextureUrl = [...serializedData].map<SerializedAsset>((asset) => ({\n points: [...asset.points].map((point) => ({\n x: point.x,\n y: point.y,\n u: point.u,\n v: point.v,\n })),\n url: textures[asset.texture_id].url,\n }))\n onAssetsUpdate(serializedAssetsTextureUrl)\n })\n\n function addImage(img: HTMLImageElement, points?: PointUV[]) {\n const newTextureId = textures.length\n textures.push({\n url: img.src,\n texture: createTextureFromSource(device, img, { flipY: true }),\n })\n\n add_texture(points || getDefaultPoints(img, canvas), newTextureId)\n }\n\n assets.forEach((asset) => {\n const img = new Image()\n img.src = asset.url\n img.onload = () => {\n addImage(img, asset.points)\n }\n })\n\n const stopCreator = runCreator(canvas, context, device, presentationFormat, textures)\n\n return {\n addImage,\n destroy: () => {\n stopCreator()\n destroy_state()\n context.unconfigure()\n device.destroy()\n },\n }\n}\n","import getCanvasRenderDescriptor from 'getCanvasRenderDescriptor'\nimport { drawTexture, drawTriangle, pickTexture, pickTriangle } from 'WebGPU/programs/initPrograms'\nimport getCanvasMatrix from 'getCanvasMatrix'\nimport PickManager from 'WebGPU/pick'\nimport { canvas_render, picks_render, connect_web_gpu_programs } from 'logic/index.zig'\nimport { TextureSource } from '.'\n\nexport const transformMatrix = new Float32Array()\nexport const MAP_BACKGROUND_SCALE = 1000\n\nexport default function runCreator(\n canvas: HTMLCanvasElement,\n context: GPUCanvasContext,\n device: GPUDevice,\n presentationFormat: GPUTextureFormat,\n textures: TextureSource[]\n): VoidFunction {\n const canvasMatrix = getCanvasMatrix(canvas)\n let canvasPass: GPURenderPassEncoder\n\n const pickManager = new PickManager(device)\n let pickMatrix: Float32Array\n let pickPass: GPURenderPassEncoder\n\n connect_web_gpu_programs({\n draw_texture: (vertex_data, texture_id) =>\n drawTexture(canvasPass, canvasMatrix, vertex_data.typedArray, textures[texture_id].texture),\n draw_triangle: (vertex_data) => drawTriangle(canvasPass, canvasMatrix, vertex_data.typedArray),\n pick_texture: (vertex_data, texture_id) =>\n pickTexture(pickPass, pickMatrix, vertex_data.typedArray, textures[texture_id].texture),\n pick_triangle: (vertex_data) => pickTriangle(pickPass, pickMatrix, vertex_data.typedArray),\n })\n\n let rafId = 0\n\n function draw(now: DOMHighResTimeStamp) {\n const encoder = device.createCommandEncoder()\n\n const canvasDescriptor = getCanvasRenderDescriptor(context, device)\n canvasPass = encoder.beginRenderPass(canvasDescriptor)\n canvas_render()\n canvasPass.end()\n\n pickMatrix = pickManager.createMatrix(canvas, canvasMatrix)\n const pick = pickManager.startPicking(encoder)\n pickPass = pick.pass\n picks_render()\n pick.end()\n\n const commandBuffer = encoder.finish()\n device.queue.submit([commandBuffer])\n\n pickManager.asyncPick()\n\n rafId = requestAnimationFrame(draw)\n }\n\n rafId = requestAnimationFrame(draw)\n\n return () => {\n cancelAnimationFrame(rafId)\n }\n}\n","export default function clamp(value: number, min: number, max: number) {\n return Math.min(max, Math.max(min, value))\n}","import clamp from 'utils/clamp'\n\nexport default function getDefaultPoints(\n img: HTMLImageElement,\n canvas: HTMLCanvasElement\n): PointUV[] {\n const scale = getDefaultTextureScale(img, canvas)\n const scaledWidth = img.width * scale\n const scaledHeight = img.height * scale\n const paddingX = (canvas.width - scaledWidth) * 0.5\n const paddingY = (canvas.height - scaledHeight) * 0.5\n\n return [\n { x: paddingX, y: paddingY + scaledHeight, u: 0, v: 1 },\n { x: paddingX + scaledWidth, y: paddingY + scaledHeight, u: 1, v: 1 },\n { x: paddingX + scaledWidth, y: paddingY, u: 1, v: 0 },\n { x: paddingX, y: paddingY, u: 0, v: 0 },\n ]\n}\n\n/**\n * Returns visualy pleasant size of texture, to make sure it doesn't overflow canvas but also is not too small to manipulate\n */\nfunction getDefaultTextureScale(img: HTMLImageElement, canvas: HTMLCanvasElement) {\n const heightDiff = canvas.height - img.height\n const widthDiff = canvas.width - img.width\n\n if (heightDiff < widthDiff) {\n const height = clamp(img.height, canvas.height * 0.2, canvas.height * 0.8)\n return height / img.height\n }\n\n const width = clamp(img.width, canvas.width * 0.2, canvas.width * 0.8)\n return width / img.width\n}\n","\nconst vec3 = {\n cross(a: number[] | Float32Array, b: number[] | Float32Array, dst = new Float32Array(3)) {\n const t0 = a[1] * b[2] - a[2] * b[1]\n const t1 = a[2] * b[0] - a[0] * b[2]\n const t2 = a[0] * b[1] - a[1] * b[0]\n\n dst[0] = t0\n dst[1] = t1\n dst[2] = t2\n\n return dst\n },\n\n subtract(a: number[] | Float32Array, b: number[] | Float32Array, dst = new Float32Array(3)) {\n dst[0] = a[0] - b[0]\n dst[1] = a[1] - b[1]\n dst[2] = a[2] - b[2]\n\n return dst\n },\n\n normalize(v : number[] | Float32Array, dst = new Float32Array(3)) {\n const length = Math.sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2])\n // make sure we don't divide by 0.\n if (length > 0.00001) {\n dst[0] = v[0] / length\n dst[1] = v[1] / length\n dst[2] = v[2] / length\n } else {\n dst[0] = 0\n dst[1] = 0\n dst[2] = 0\n }\n\n return dst\n },\n}\n\nexport default vec3","import vec3 from \"./vec3\"\n\nconst mat4 = {\n projection(width: number, height: number, depth: number, dst: Float32Array) {\n // Note: This matrix flips the Y axis so that 0 is at the top.\n return mat4.ortho(0, width, height, 0, depth, -depth, dst)\n },\n\n perspective(fieldOfViewYInRadians: number, aspect: number, zNear: number, zFar: number, dst = new Float32Array(16)) {\n const f = Math.tan(Math.PI * 0.5 - 0.5 * fieldOfViewYInRadians)\n const rangeInv = 1 / (zNear - zFar)\n\n dst[0] = f / aspect\n dst[1] = 0\n dst[2] = 0\n dst[3] = 0\n\n dst[4] = 0\n dst[5] = f\n dst[6] = 0\n dst[7] = 0\n\n dst[8] = 0\n dst[9] = 0\n dst[10] = zFar * rangeInv\n dst[11] = -1\n\n dst[12] = 0\n dst[13] = 0\n dst[14] = zNear * zFar * rangeInv\n dst[15] = 0\n\n return dst\n },\n\n ortho(left: number, right: number, bottom: number, top: number, near: number, far: number, dst = new Float32Array(16)) {\n dst[0] = 2 / (right - left)\n dst[1] = 0\n dst[2] = 0\n dst[3] = 0\n\n dst[4] = 0\n dst[5] = 2 / (top - bottom)\n dst[6] = 0\n dst[7] = 0\n\n dst[8] = 0\n dst[9] = 0\n dst[10] = 1 / (near - far)\n dst[11] = 0\n\n dst[12] = (right + left) / (left - right)\n dst[13] = (top + bottom) / (bottom - top)\n dst[14] = near / (near - far)\n dst[15] = 1\n\n return dst\n },\n\n identity(dst = new Float32Array(16)) {\n dst[ 0] = 1; dst[ 1] = 0; dst[ 2] = 0; dst[ 3] = 0\n dst[ 4] = 0; dst[ 5] = 1; dst[ 6] = 0; dst[ 7] = 0\n dst[ 8] = 0; dst[ 9] = 0; dst[10] = 1; dst[11] = 0\n dst[12] = 0; dst[13] = 0; dst[14] = 0; dst[15] = 1\n return dst\n },\n\n multiply(a: Float32Array, b: Float32Array, dst = new Float32Array(16)) {\n const b00 = b[0 * 4 + 0]\n const b01 = b[0 * 4 + 1]\n const b02 = b[0 * 4 + 2]\n const b03 = b[0 * 4 + 3]\n const b10 = b[1 * 4 + 0]\n const b11 = b[1 * 4 + 1]\n const b12 = b[1 * 4 + 2]\n const b13 = b[1 * 4 + 3]\n const b20 = b[2 * 4 + 0]\n const b21 = b[2 * 4 + 1]\n const b22 = b[2 * 4 + 2]\n const b23 = b[2 * 4 + 3]\n const b30 = b[3 * 4 + 0]\n const b31 = b[3 * 4 + 1]\n const b32 = b[3 * 4 + 2]\n const b33 = b[3 * 4 + 3]\n const a00 = a[0 * 4 + 0]\n const a01 = a[0 * 4 + 1]\n const a02 = a[0 * 4 + 2]\n const a03 = a[0 * 4 + 3]\n const a10 = a[1 * 4 + 0]\n const a11 = a[1 * 4 + 1]\n const a12 = a[1 * 4 + 2]\n const a13 = a[1 * 4 + 3]\n const a20 = a[2 * 4 + 0]\n const a21 = a[2 * 4 + 1]\n const a22 = a[2 * 4 + 2]\n const a23 = a[2 * 4 + 3]\n const a30 = a[3 * 4 + 0]\n const a31 = a[3 * 4 + 1]\n const a32 = a[3 * 4 + 2]\n const a33 = a[3 * 4 + 3]\n\n dst[0] = b00 * a00 + b01 * a10 + b02 * a20 + b03 * a30\n dst[1] = b00 * a01 + b01 * a11 + b02 * a21 + b03 * a31\n dst[2] = b00 * a02 + b01 * a12 + b02 * a22 + b03 * a32\n dst[3] = b00 * a03 + b01 * a13 + b02 * a23 + b03 * a33\n\n dst[4] = b10 * a00 + b11 * a10 + b12 * a20 + b13 * a30\n dst[5] = b10 * a01 + b11 * a11 + b12 * a21 + b13 * a31\n dst[6] = b10 * a02 + b11 * a12 + b12 * a22 + b13 * a32\n dst[7] = b10 * a03 + b11 * a13 + b12 * a23 + b13 * a33\n\n dst[8] = b20 * a00 + b21 * a10 + b22 * a20 + b23 * a30\n dst[9] = b20 * a01 + b21 * a11 + b22 * a21 + b23 * a31\n dst[10] = b20 * a02 + b21 * a12 + b22 * a22 + b23 * a32\n dst[11] = b20 * a03 + b21 * a13 + b22 * a23 + b23 * a33\n\n dst[12] = b30 * a00 + b31 * a10 + b32 * a20 + b33 * a30\n dst[13] = b30 * a01 + b31 * a11 + b32 * a21 + b33 * a31\n dst[14] = b30 * a02 + b31 * a12 + b32 * a22 + b33 * a32\n dst[15] = b30 * a03 + b31 * a13 + b32 * a23 + b33 * a33\n\n return dst\n },\n\n cameraAim(eye: number[] | Float32Array, target: number[], up: number[], dst = new Float32Array(16)) {\n const zAxis = vec3.normalize(vec3.subtract(eye, target))\n const xAxis = vec3.normalize(vec3.cross(up, zAxis))\n const yAxis = vec3.normalize(vec3.cross(zAxis, xAxis))\n\n dst[ 0] = xAxis[0]; dst[ 1] = xAxis[1]; dst[ 2] = xAxis[2]; dst[ 3] = 0\n dst[ 4] = yAxis[0]; dst[ 5] = yAxis[1]; dst[ 6] = yAxis[2]; dst[ 7] = 0\n dst[ 8] = zAxis[0]; dst[ 9] = zAxis[1]; dst[10] = zAxis[2]; dst[11] = 0\n dst[12] = eye[0]; dst[13] = eye[1]; dst[14] = eye[2]; dst[15] = 1\n\n return dst\n },\n\n inverse(m: Float32Array, dst = new Float32Array(16)) {\n const m00 = m[0 * 4 + 0]\n const m01 = m[0 * 4 + 1]\n const m02 = m[0 * 4 + 2]\n const m03 = m[0 * 4 + 3]\n const m10 = m[1 * 4 + 0]\n const m11 = m[1 * 4 + 1]\n const m12 = m[1 * 4 + 2]\n const m13 = m[1 * 4 + 3]\n const m20 = m[2 * 4 + 0]\n const m21 = m[2 * 4 + 1]\n const m22 = m[2 * 4 + 2]\n const m23 = m[2 * 4 + 3]\n const m30 = m[3 * 4 + 0]\n const m31 = m[3 * 4 + 1]\n const m32 = m[3 * 4 + 2]\n const m33 = m[3 * 4 + 3]\n\n const tmp0 = m22 * m33\n const tmp1 = m32 * m23\n const tmp2 = m12 * m33\n const tmp3 = m32 * m13\n const tmp4 = m12 * m23\n const tmp5 = m22 * m13\n const tmp6 = m02 * m33\n const tmp7 = m32 * m03\n const tmp8 = m02 * m23\n const tmp9 = m22 * m03\n const tmp10 = m02 * m13\n const tmp11 = m12 * m03\n const tmp12 = m20 * m31\n const tmp13 = m30 * m21\n const tmp14 = m10 * m31\n const tmp15 = m30 * m11\n const tmp16 = m10 * m21\n const tmp17 = m20 * m11\n const tmp18 = m00 * m31\n const tmp19 = m30 * m01\n const tmp20 = m00 * m21\n const tmp21 = m20 * m01\n const tmp22 = m00 * m11\n const tmp23 = m10 * m01\n\n const t0 = (tmp0 * m11 + tmp3 * m21 + tmp4 * m31) -\n (tmp1 * m11 + tmp2 * m21 + tmp5 * m31)\n const t1 = (tmp1 * m01 + tmp6 * m21 + tmp9 * m31) -\n (tmp0 * m01 + tmp7 * m21 + tmp8 * m31)\n const t2 = (tmp2 * m01 + tmp7 * m11 + tmp10 * m31) -\n (tmp3 * m01 + tmp6 * m11 + tmp11 * m31)\n const t3 = (tmp5 * m01 + tmp8 * m11 + tmp11 * m21) -\n (tmp4 * m01 + tmp9 * m11 + tmp10 * m21)\n\n const d = 1 / (m00 * t0 + m10 * t1 + m20 * t2 + m30 * t3)\n\n dst[0] = d * t0\n dst[1] = d * t1\n dst[2] = d * t2\n dst[3] = d * t3\n\n dst[4] = d * ((tmp1 * m10 + tmp2 * m20 + tmp5 * m30) -\n (tmp0 * m10 + tmp3 * m20 + tmp4 * m30))\n dst[5] = d * ((tmp0 * m00 + tmp7 * m20 + tmp8 * m30) -\n (tmp1 * m00 + tmp6 * m20 + tmp9 * m30))\n dst[6] = d * ((tmp3 * m00 + tmp6 * m10 + tmp11 * m30) -\n (tmp2 * m00 + tmp7 * m10 + tmp10 * m30))\n dst[7] = d * ((tmp4 * m00 + tmp9 * m10 + tmp10 * m20) -\n (tmp5 * m00 + tmp8 * m10 + tmp11 * m20))\n\n dst[8] = d * ((tmp12 * m13 + tmp15 * m23 + tmp16 * m33) -\n (tmp13 * m13 + tmp14 * m23 + tmp17 * m33))\n dst[9] = d * ((tmp13 * m03 + tmp18 * m23 + tmp21 * m33) -\n (tmp12 * m03 + tmp19 * m23 + tmp20 * m33))\n dst[10] = d * ((tmp14 * m03 + tmp19 * m13 + tmp22 * m33) -\n (tmp15 * m03 + tmp18 * m13 + tmp23 * m33))\n dst[11] = d * ((tmp17 * m03 + tmp20 * m13 + tmp23 * m23) -\n (tmp16 * m03 + tmp21 * m13 + tmp22 * m23))\n\n dst[12] = d * ((tmp14 * m22 + tmp17 * m32 + tmp13 * m12) -\n (tmp16 * m32 + tmp12 * m12 + tmp15 * m22))\n dst[13] = d * ((tmp20 * m32 + tmp12 * m02 + tmp19 * m22) -\n (tmp18 * m22 + tmp21 * m32 + tmp13 * m02))\n dst[14] = d * ((tmp18 * m12 + tmp23 * m32 + tmp15 * m02) -\n (tmp22 * m32 + tmp14 * m02 + tmp19 * m12))\n dst[15] = d * ((tmp22 * m22 + tmp16 * m02 + tmp21 * m12) -\n (tmp20 * m12 + tmp23 * m22 + tmp17 * m02))\n return dst\n },\n\n transpose(m: Float32Array, dst = new Float32Array(16)) {\n dst[ 0] = m[ 0]; dst[ 1] = m[ 4]; dst[ 2] = m[ 8]; dst[ 3] = m[12]\n dst[ 4] = m[ 1]; dst[ 5] = m[ 5]; dst[ 6] = m[ 9]; dst[ 7] = m[13]\n dst[ 8] = m[ 2]; dst[ 9] = m[ 6]; dst[10] = m[10]; dst[11] = m[14]\n dst[12] = m[ 3]; dst[13] = m[ 7]; dst[14] = m[11]; dst[15] = m[15]\n\n return dst\n },\n\n aim(eye: Float32Array | number[], target: number[], up: number[], dst = new Float32Array(16)) {\n const zAxis = vec3.normalize(vec3.subtract(target, eye))\n const xAxis = vec3.normalize(vec3.cross(up, zAxis))\n const yAxis = vec3.normalize(vec3.cross(zAxis, xAxis))\n \n dst[ 0] = xAxis[0]; dst[ 1] = xAxis[1]; dst[ 2] = xAxis[2]; dst[ 3] = 0\n dst[ 4] = yAxis[0]; dst[ 5] = yAxis[1]; dst[ 6] = yAxis[2]; dst[ 7] = 0\n dst[ 8] = zAxis[0]; dst[ 9] = zAxis[1]; dst[10] = zAxis[2]; dst[11] = 0\n dst[12] = eye[0]; dst[13] = eye[1]; dst[14] = eye[2]; dst[15] = 1\n \n return dst\n },\n\n lookAt(eye: number[] | Float32Array, target: number[], up: number[], dst?: Float32Array) {\n return mat4.inverse(mat4.cameraAim(eye, target, up, dst), dst)\n },\n\n translation([tx, ty, tz]: number[], dst = new Float32Array(16)) {\n dst[ 0] = 1; dst[ 1] = 0; dst[ 2] = 0; dst[ 3] = 0\n dst[ 4] = 0; dst[ 5] = 1; dst[ 6] = 0; dst[ 7] = 0\n dst[ 8] = 0; dst[ 9] = 0; dst[10] = 1; dst[11] = 0\n dst[12] = tx; dst[13] = ty; dst[14] = tz; dst[15] = 1\n return dst\n },\n\n rotationX(angleInRadians: number, dst = new Float32Array(16)) {\n const c = Math.cos(angleInRadians)\n const s = Math.sin(angleInRadians)\n dst[ 0] = 1; dst[ 1] = 0; dst[ 2] = 0; dst[ 3] = 0\n dst[ 4] = 0; dst[ 5] = c; dst[ 6] = s; dst[ 7] = 0\n dst[ 8] = 0; dst[ 9] = -s; dst[10] = c; dst[11] = 0\n dst[12] = 0; dst[13] = 0; dst[14] = 0; dst[15] = 1\n return dst\n },\n\n rotationY(angleInRadians: number, dst = new Float32Array(16)) {\n const c = Math.cos(angleInRadians)\n const s = Math.sin(angleInRadians)\n dst[ 0] = c; dst[ 1] = 0; dst[ 2] = -s; dst[ 3] = 0\n dst[ 4] = 0; dst[ 5] = 1; dst[ 6] = 0; dst[ 7] = 0\n dst[ 8] = s; dst[ 9] = 0; dst[10] = c; dst[11] = 0\n dst[12] = 0; dst[13] = 0; dst[14] = 0; dst[15] = 1\n return dst\n },\n\n rotationZ(angleInRadians: number, dst = new Float32Array(16)) {\n const c = Math.cos(angleInRadians)\n const s = Math.sin(angleInRadians)\n dst[ 0] = c; dst[ 1] = s; dst[ 2] = 0; dst[ 3] = 0\n dst[ 4] = -s; dst[ 5] = c; dst[ 6] = 0; dst[ 7] = 0\n dst[ 8] = 0; dst[ 9] = 0; dst[10] = 1; dst[11] = 0\n dst[12] = 0; dst[13] = 0; dst[14] = 0; dst[15] = 1\n return dst\n },\n\n scaling([sx, sy, sz]: number[], dst = new Float32Array(16)) {\n dst[ 0] = sx; dst[ 1] = 0; dst[ 2] = 0; dst[ 3] = 0\n dst[ 4] = 0; dst[ 5] = sy; dst[ 6] = 0; dst[ 7] = 0\n dst[ 8] = 0; dst[ 9] = 0; dst[10] = sz; dst[11] = 0\n dst[12] = 0; dst[13] = 0; dst[14] = 0; dst[15] = 1\n return dst\n },\n\n translate(m: Float32Array, translation: number[], dst?: Float32Array) {\n return mat4.multiply(m, mat4.translation(translation), dst)\n },\n\n rotateX(m: Float32Array, angleInRadians: number, dst?: Float32Array) {\n return mat4.multiply(m, mat4.rotationX(angleInRadians), dst)\n },\n\n rotateY(m: Float32Array, angleInRadians: number, dst?: Float32Array) {\n return mat4.multiply(m, mat4.rotationY(angleInRadians), dst)\n },\n\n rotateZ(m: Float32Array, angleInRadians: number, dst?: Float32Array) {\n return mat4.multiply(m, mat4.rotationZ(angleInRadians), dst)\n },\n\n scale(m: Float32Array, scale: number[], dst?: Float32Array) {\n return mat4.multiply(m, mat4.scaling(scale), dst)\n },\n}\n\nexport default mat4","import { createEnvironment } from \"zigar-runtime\";\nimport 'zigar-runtime/accessors/all.js';\nimport 'zigar-runtime/features/call-marshaling-inbound.js';\nimport 'zigar-runtime/features/call-marshaling-outbound.js';\nimport 'zigar-runtime/features/data-copying.js';\nimport 'zigar-runtime/features/int-conversion.js';\nimport 'zigar-runtime/features/memory-mapping.js';\nimport 'zigar-runtime/features/module-loading.js';\nimport 'zigar-runtime/features/view-management.js';\nimport 'zigar-runtime/features/write-protection.js';\nimport 'zigar-runtime/iterators/for-array.js';\nimport 'zigar-runtime/iterators/for-struct.js';\nimport 'zigar-runtime/members/all.js';\nimport 'zigar-runtime/members/base64.js';\nimport 'zigar-runtime/members/data-view.js';\nimport 'zigar-runtime/members/float.js';\nimport 'zigar-runtime/members/object.js';\nimport 'zigar-runtime/members/primitive.js';\nimport 'zigar-runtime/members/to-json.js';\nimport 'zigar-runtime/members/typed-array.js';\nimport 'zigar-runtime/members/uint.js';\nimport 'zigar-runtime/members/value-of.js';\nimport 'zigar-runtime/members/void.js';\nimport 'zigar-runtime/structures/all.js';\nimport 'zigar-runtime/structures/arg-struct.js';\nimport 'zigar-runtime/structures/array.js';\nimport 'zigar-runtime/structures/array-like.js';\nimport 'zigar-runtime/structures/function.js';\nimport 'zigar-runtime/structures/pointer.js';\nimport 'zigar-runtime/structures/primitive.js';\nimport 'zigar-runtime/structures/slice.js';\nimport 'zigar-runtime/structures/struct.js';\nimport 'zigar-runtime/structures/struct-like.js';\nimport 'zigar-runtime/visitors/all.js';\nimport 'zigar-runtime/visitors/in-arg-struct.js';\nimport 'zigar-runtime/visitors/in-struct.js';\nimport 'zigar-runtime/features/baseline.js';\nimport 'zigar-runtime/features/thunk-allocation.js';\nimport 'zigar-runtime/features/pointer-synchronization.js';\nimport 'zigar-runtime/features/object-linkage.js';\nimport 'zigar-runtime/accessors/int.js';\n\n// structure defaults\nconst s = {\n constructor: null,\n type: 0,\n flags: 0,\n signature: undefined,\n name: undefined,\n byteSize: 0,\n align: 0,\n instance: {\n members: [],\n template: null,\n },\n static: {\n members: [],\n template: null,\n },\n};\n\n// member defaults\nconst m = {\n type: 0,\n flags: 0,\n};\n\n// declare structure objects\nconst s0 = {}, s1 = {}, s2 = {}, s3 = {}, s4 = {}, s5 = {}, s6 = {}, s7 = {}, s8 = {}, s9 = {};\nconst s10 = {}, s11 = {}, s12 = {}, s13 = {}, s14 = {}, s15 = {}, s16 = {}, s17 = {}, s18 = {}, s19 = {};\nconst s20 = {}, s21 = {}, s22 = {}, s23 = {}, s24 = {}, s25 = {}, s26 = {}, s27 = {}, s28 = {}, s29 = {};\nconst s30 = {}, s31 = {}, s32 = {}, s33 = {}, s34 = {}, s35 = {}, s36 = {}, s37 = {}, s38 = {}, s39 = {};\nconst s40 = {}, s41 = {}, s42 = {};\n\n// declare objects\nconst o0 = {}, o1 = {}, o2 = {}, o3 = {}, o4 = {}, o5 = {}, o6 = {}, o7 = {}, o8 = {}, o9 = {};\nconst o10 = {}, o11 = {}, o12 = {}, o13 = {}, o14 = {}, o15 = {}, o16 = {}, o17 = {}, o18 = {}, o19 = {};\nconst o20 = {}, o21 = {}, o22 = {}, o23 = {}, o24 = {}, o25 = {}, o26 = {}, o27 = {}, o28 = {}, o29 = {};\nconst o30 = {}, o31 = {}, o32 = {}, o33 = {}, o34 = {}, o35 = {}, o36 = {}, o37 = {}, o38 = {}, o39 = {};\nconst o40 = {}, o41 = {}, o42 = {}, o43 = {};\n\n// define byte arrays\nconst U = i => new Uint8Array(i);\nconst a0 = U(0);\nconst a1 = U(16);\nconst a2 = U(8);\nconst a3 = U(16);\nconst a4 = U(68);\nconst a5 = U([ 232, 3, 0, 0 ]);\n\n// fill in object properties\nconst $ = Object.assign;\n$(o0, {\n memory: { array: a0 },\n handle: 24,\n});\n$(o1, {\n memory: { array: a0 },\n handle: 25,\n});\n$(o2, {\n memory: { array: a0 },\n handle: 26,\n});\n$(o3, {\n memory: { array: a0 },\n handle: 27,\n});\n$(o4, {\n memory: { array: a1 },\n handle: 262960,\n slots: {\n 0: o5, 1: o7, 2: o9, 3: o10,\n },\n});\n$(o5, {\n structure: s7,\n memory: { array: a1, offset: 0, length: 4 },\n slots: {\n 0: o6,\n },\n});\n$(o6, {\n structure: s6,\n memory: { array: a0 },\n});\n$(o7, {\n structure: s10,\n memory: { array: a1, offset: 4, length: 4 },\n slots: {\n 0: o8,\n },\n});\n$(o8, {\n structure: s9,\n memory: { array: a0 },\n});\n$(o9, {\n structure: s7,\n memory: { array: a1, offset: 8, length: 4 },\n slots: {\n 0: o6,\n },\n});\n$(o10, {\n structure: s10,\n memory: { array: a1, offset: 12, length: 4 },\n slots: {\n 0: o8,\n },\n});\n$(o11, {\n memory: { array: a0 },\n handle: 14,\n});\n$(o12, {\n memory: { array: a2 },\n});\n$(o13, {\n memory: { array: a0 },\n handle: 47,\n});\n$(o14, {\n memory: { array: a0 },\n handle: 48,\n});\n$(o15, {\n memory: { array: a3 },\n});\n$(o16, {\n slots: {\n 0: o17, 1: o18, 2: o19,\n },\n});\n$(o17, {\n structure: s17,\n memory: { array: a0 },\n handle: 44,\n});\n$(o18, {\n structure: s19,\n memory: { array: a0 },\n handle: 45,\n});\n$(o19, {\n structure: s19,\n memory: { array: a0 },\n handle: 46,\n});\n$(o20, {\n memory: { array: a4 },\n});\n$(o21, {\n memory: { array: a0 },\n handle: 15,\n});\n$(o22, {\n memory: { array: a0 },\n handle: 16,\n});\n$(o23, {\n memory: { array: a0 },\n handle: 17,\n});\n$(o24, {\n memory: { array: a0 },\n handle: 18,\n});\n$(o25, {\n memory: { array: a0 },\n handle: 19,\n});\n$(o26, {\n memory: { array: a0 },\n handle: 20,\n});\n$(o27, {\n memory: { array: a0 },\n handle: 21,\n});\n$(o28, {\n memory: { array: a0 },\n handle: 22,\n});\n$(o29, {\n memory: { array: a0 },\n handle: 23,\n});\n$(o30, {\n slots: {\n 0: o31, 1: o32, 2: o33, 3: o34, 4: o35, 5: o36, 6: o37, 7: o38, 8: o39, 9: o40,\n 10: o41, 11: o42, 12: o43,\n },\n});\n$(o31, {\n structure: s14,\n memory: { array: a0 },\n handle: 2,\n});\n$(o32, {\n structure: s29,\n memory: { array: a0 },\n handle: 3,\n});\n$(o33, {\n structure: s4,\n memory: { array: a5 },\n const: true,\n});\n$(o34, {\n structure: s31,\n memory: { array: a0 },\n handle: 4,\n});\n$(o35, {\n structure: s33,\n memory: { array: a0 },\n handle: 5,\n});\n$(o36, {\n structure: s35,\n memory: { array: a0 },\n handle: 6,\n});\n$(o37, {\n structure: s37,\n memory: { array: a0 },\n handle: 7,\n});\n$(o38, {\n structure: s39,\n memory: { array: a0 },\n handle: 8,\n});\n$(o39, {\n structure: s41,\n memory: { array: a0 },\n handle: 9,\n});\n$(o40, {\n structure: s39,\n memory: { array: a0 },\n handle: 10,\n});\n$(o41, {\n structure: s41,\n memory: { array: a0 },\n handle: 11,\n});\n$(o42, {\n structure: s41,\n memory: { array: a0 },\n handle: 12,\n});\n$(o43, {\n structure: s41,\n memory: { array: a0 },\n handle: 13,\n});\n\n// fill in structure properties\n$(s0, {\n ...s,\n flags: 1,\n signature: 0xa310b7d01f11b8can,\n name: \"void\",\n align: 1,\n instance: {\n members: [\n {\n ...m,\n bitOffset: 0,\n bitSize: 0,\n byteSize: 0,\n structure: s0,\n },\n ],\n },\n});\n$(s1, {\n ...s,\n flags: 1,\n signature: 0x61e77abe97c52d51n,\n name: \"f32\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n structure: s1,\n },\n ],\n },\n});\n$(s2, {\n ...s,\n type: 9,\n flags: 64,\n signature: 0x9212e6749825a514n,\n name: \"[_]f32\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n bitSize: 32,\n byteSize: 4,\n structure: s1,\n },\n ],\n },\n});\n$(s3, {\n ...s,\n type: 8,\n flags: 188,\n signature: 0xfc4e3831fa228a2en,\n name: \"[]const f32\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n structure: s2,\n },\n ],\n },\n});\n$(s4, {\n ...s,\n flags: 1,\n signature: 0x68598db431a811a3n,\n name: \"u32\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n structure: s4,\n },\n ],\n },\n});\n$(s5, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0x09675e7a1ffd5485n,\n name: \"Arg(fn ([]const f32, u32) void)\",\n length: 2,\n byteSize: 12,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 96,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s3,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 64,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"1\",\n structure: s4,\n },\n ],\n },\n});\n$(s6, {\n ...s,\n type: 14,\n signature: 0xe1a5d27f9960e020n,\n name: \"fn ([]const f32, u32) void\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 96,\n byteSize: 12,\n structure: s5,\n },\n ],\n template: o0\n },\n static: {\n members: [],\n template: o1\n },\n});\n$(s7, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0x4d3813c518971895n,\n name: \"*const fn ([]const f32, u32) void\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s6,\n },\n ],\n },\n});\n$(s8, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0x0292a02ab8f8020cn,\n name: \"Arg(fn ([]const f32) void)\",\n length: 1,\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 64,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s3,\n },\n ],\n },\n});\n$(s9, {\n ...s,\n type: 14,\n signature: 0x47389ea7e1d3d337n,\n name: \"fn ([]const f32) void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s8,\n },\n ],\n template: o2\n },\n static: {\n members: [],\n template: o3\n },\n});\n$(s10, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0x4224bff88f0203f5n,\n name: \"*const fn ([]const f32) void\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s9,\n },\n ],\n },\n});\n$(s11, {\n ...s,\n type: 2,\n flags: 14,\n signature: 0xa163853d6eea84ffn,\n name: \"WebGpuPrograms\",\n byteSize: 16,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"draw_texture\",\n structure: s7,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"draw_triangle\",\n structure: s10,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 64,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"pick_texture\",\n structure: s7,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 96,\n bitSize: 32,\n byteSize: 4,\n slot: 3,\n name: \"pick_triangle\",\n structure: s10,\n },\n ],\n template: o4\n },\n});\n$(s12, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0xf88af90d134a19c1n,\n name: \"*const WebGpuPrograms\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s11,\n },\n ],\n },\n});\n$(s13, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0xa86f8c1238de4df5n,\n name: \"Arg(fn (*const WebGpuPrograms) void)\",\n length: 1,\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 32,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s12,\n },\n ],\n },\n});\n$(s14, {\n ...s,\n type: 14,\n signature: 0xc28f54a51c95c6f5n,\n name: \"fn (*const WebGpuPrograms) void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n structure: s13,\n },\n ],\n template: o11\n },\n});\n$(s15, {\n ...s,\n type: 2,\n signature: 0x3c18d236acd7668dn,\n name: \"Point\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"x\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"y\",\n structure: s1,\n },\n ],\n template: o12\n },\n});\n$(s16, {\n ...s,\n type: 12,\n flags: 10,\n signature: 0xd1d7035b6147a5d4n,\n name: \"Arg(fn (PointUV, PointUV) Point)\",\n length: 2,\n byteSize: 40,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n name: \"retval\",\n structure: s15,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 64,\n bitSize: 128,\n byteSize: 16,\n slot: 1,\n name: \"0\",\n structure: s20,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 192,\n bitSize: 128,\n byteSize: 16,\n slot: 2,\n name: \"1\",\n structure: s20,\n },\n ],\n },\n});\n$(s17, {\n ...s,\n type: 14,\n signature: 0xbb0f8218864060e9n,\n name: \"fn (PointUV, PointUV) Point\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 320,\n byteSize: 40,\n structure: s16,\n },\n ],\n template: o13\n },\n});\n$(s18, {\n ...s,\n type: 12,\n flags: 10,\n signature: 0x0fa3968ee7482ac2n,\n name: \"Arg(fn (PointUV, PointUV) f32)\",\n length: 2,\n byteSize: 36,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"retval\",\n structure: s1,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 128,\n byteSize: 16,\n slot: 1,\n name: \"0\",\n structure: s20,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 160,\n bitSize: 128,\n byteSize: 16,\n slot: 2,\n name: \"1\",\n structure: s20,\n },\n ],\n },\n});\n$(s19, {\n ...s,\n type: 14,\n signature: 0x3170ee9a1e36ef3an,\n name: \"fn (PointUV, PointUV) f32\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 288,\n byteSize: 36,\n structure: s18,\n },\n ],\n template: o14\n },\n});\n$(s20, {\n ...s,\n type: 2,\n signature: 0x9d77c3c6a1a73d02n,\n name: \"PointUV\",\n byteSize: 16,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"x\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"y\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 64,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"u\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 96,\n bitSize: 32,\n byteSize: 4,\n slot: 3,\n name: \"v\",\n structure: s1,\n },\n ],\n template: o15\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 0,\n name: \"mid\",\n structure: s17,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 1,\n name: \"angle_to\",\n structure: s19,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 2,\n name: \"distance\",\n structure: s19,\n },\n ],\n template: o16\n },\n});\n$(s21, {\n ...s,\n type: 1,\n flags: 10,\n signature: 0x4aba6e79b2a51d1dn,\n name: \"[4]PointUV\",\n length: 4,\n byteSize: 64,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 128,\n byteSize: 16,\n structure: s20,\n },\n ],\n },\n});\n$(s22, {\n ...s,\n type: 2,\n flags: 10,\n signature: 0xa0d33217006c82a9n,\n name: \"AssetZig\",\n byteSize: 68,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 512,\n byteSize: 64,\n slot: 0,\n name: \"points\",\n structure: s21,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 512,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"texture_id\",\n structure: s4,\n },\n ],\n template: o20\n },\n});\n$(s23, {\n ...s,\n type: 9,\n flags: 10,\n signature: 0x11c865473620af61n,\n name: \"[_]AssetZig\",\n byteSize: 68,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 544,\n byteSize: 68,\n structure: s22,\n },\n ],\n },\n});\n$(s24, {\n ...s,\n type: 8,\n flags: 60,\n signature: 0xcae982de4df134f9n,\n name: \"[]AssetZig\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n structure: s23,\n },\n ],\n },\n});\n$(s25, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0x5a346ed510be0421n,\n name: \"Arg(fn ([]AssetZig) void)\",\n length: 1,\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 64,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s24,\n },\n ],\n },\n});\n$(s26, {\n ...s,\n type: 14,\n signature: 0xe4b315df8532c4cdn,\n name: \"fn ([]AssetZig) void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s25,\n },\n ],\n template: o21\n },\n static: {\n members: [],\n template: o22\n },\n});\n$(s27, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0x5f373919b4d68f19n,\n name: \"*const fn ([]AssetZig) void\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s26,\n },\n ],\n },\n});\n$(s28, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0xbc781ae065eb0cf9n,\n name: \"Arg(fn (*const fn ([]AssetZig) void) void)\",\n length: 1,\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 32,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s27,\n },\n ],\n },\n});\n$(s29, {\n ...s,\n type: 14,\n signature: 0x4dc72d4c2f1365ebn,\n name: \"fn (*const fn ([]AssetZig) void) void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n structure: s28,\n },\n ],\n template: o23\n },\n});\n$(s30, {\n ...s,\n type: 12,\n signature: 0x3f075bf644453a95n,\n name: \"Arg(fn (u32, u32) void)\",\n length: 2,\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 64,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s4,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"1\",\n structure: s4,\n },\n ],\n },\n});\n$(s31, {\n ...s,\n type: 14,\n signature: 0x4c7e047aa4ecbc8an,\n name: \"fn (u32, u32) void\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s30,\n },\n ],\n template: o24\n },\n});\n$(s32, {\n ...s,\n type: 12,\n flags: 10,\n signature: 0xc762e73c81793f51n,\n name: \"Arg(fn ([4]PointUV, u32) void)\",\n length: 2,\n byteSize: 68,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 544,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 512,\n byteSize: 64,\n slot: 1,\n name: \"0\",\n structure: s21,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 512,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"1\",\n structure: s4,\n },\n ],\n },\n});\n$(s33, {\n ...s,\n type: 14,\n signature: 0x0e773631f1483b71n,\n name: \"fn ([4]PointUV, u32) void\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 544,\n byteSize: 68,\n structure: s32,\n },\n ],\n template: o25\n },\n});\n$(s34, {\n ...s,\n type: 12,\n flags: 10,\n signature: 0xebd988516fdd5651n,\n name: \"Arg(fn (u32, [4]PointUV) void)\",\n length: 2,\n byteSize: 68,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 544,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s4,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 512,\n byteSize: 64,\n slot: 2,\n name: \"1\",\n structure: s21,\n },\n ],\n },\n});\n$(s35, {\n ...s,\n type: 14,\n signature: 0xb6b0d32aa9cdf62cn,\n name: \"fn (u32, [4]PointUV) void\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 544,\n byteSize: 68,\n structure: s34,\n },\n ],\n template: o26\n },\n});\n$(s36, {\n ...s,\n type: 12,\n signature: 0x6364608841bf263en,\n name: \"Arg(fn (u32) void)\",\n length: 1,\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 32,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s4,\n },\n ],\n },\n});\n$(s37, {\n ...s,\n type: 14,\n signature: 0x956e45a1c96ff5e6n,\n name: \"fn (u32) void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n structure: s36,\n },\n ],\n template: o27\n },\n});\n$(s38, {\n ...s,\n type: 12,\n signature: 0xb1afac27f34003f4n,\n name: \"Arg(fn (f32, f32) void)\",\n length: 2,\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 64,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"1\",\n structure: s1,\n },\n ],\n },\n});\n$(s39, {\n ...s,\n type: 14,\n signature: 0x63bac1760494db20n,\n name: \"fn (f32, f32) void\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s38,\n },\n ],\n template: o28\n },\n});\n$(s40, {\n ...s,\n type: 12,\n signature: 0xfa22378c989ae19dn,\n name: \"Arg(fn () void)\",\n length: 0,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 0,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n ],\n },\n});\n$(s41, {\n ...s,\n type: 14,\n signature: 0xe3c3b022a28cd076n,\n name: \"fn () void\",\n length: 0,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 0,\n byteSize: 0,\n structure: s40,\n },\n ],\n template: o29\n },\n});\n$(s42, {\n ...s,\n type: 2,\n flags: 4096,\n signature: 0x239ab4f327f6ac1bn,\n name: \"index\",\n align: 1,\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 0,\n name: \"connect_web_gpu_programs\",\n structure: s14,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 1,\n name: \"connect_on_asset_update_callback\",\n structure: s29,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 2,\n name: \"ASSET_ID_TRESHOLD\",\n structure: s4,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 3,\n name: \"init_state\",\n structure: s31,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 4,\n name: \"add_texture\",\n structure: s33,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 5,\n name: \"update_points\",\n structure: s35,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 6,\n name: \"on_update_pick\",\n structure: s37,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 7,\n name: \"on_pointer_down\",\n structure: s39,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 8,\n name: \"on_pointer_up\",\n structure: s41,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 9,\n name: \"on_pointer_move\",\n structure: s39,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 10,\n name: \"canvas_render\",\n structure: s41,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 11,\n name: \"picks_render\",\n structure: s41,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 12,\n name: \"destroy_state\",\n structure: s41,\n },\n ],\n template: o30\n },\n});\nconst structures = [\n s0, s1, s2, s3, s4, s5, s6, s7, s8, s9,\n s10, s11, s12, s13, s14, s15, s16, s17, s18, s19,\n s20, s21, s22, s23, s24, s25, s26, s27, s28, s29,\n s30, s31, s32, s33, s34, s35, s36, s37, s38, s39,\n s40, s41, s42,\n];\nconst root = s42;\nconst settings = {\n runtimeSafety: false,\n littleEndian: true,\n libc: false,\n};\n\n// create runtime environment\nconst env = createEnvironment();\n\n// recreate structures\nenv.recreateStructures(structures, settings);\n\n// initiate loading and compilation of WASM bytecodes\nconst source = (async () => {\n // index.zig\n const binaryString = atob(\"AGFzbQEAAAABmgEYYAR/f39/AX9gAn9/AGADf39/AGAFf39/f38AYAZ/f39/f38Bf2ABfwBgAn19AGAAAGACf38BfWACf38Bf2AEf39/fwBgAX8Bf2AAAX9gBH9/fn8AYAN/f38Bf2ACfX0BfWABfQF9YAV/f399fwBgBX9/f39/AX9gBX9+fn5+AGACfH8BfGACfX8Bf2ADfHx8AXxgA3x8fwF8AskDFgNlbnYGbWVtb3J5AgAFA2VudhlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAXAAWQNlbnYJX3JlYWRTbG90AAkDZW52Cl93cml0ZVNsb3QAAgNlbnYQX2RlZmluZVN0cnVjdHVyZQALA2VudglfY2FzdFZpZXcAAANlbnYPX2NyZWF0ZVRlbXBsYXRlAAsDZW52D19hdHRhY2hUZW1wbGF0ZQACA2Vudg1fZW5kU3RydWN0dXJlAAUDZW52EF9iZWdpbkRlZmluaXRpb24ADANlbnYOX2NhcHR1cmVTdHJpbmcACQNlbnYNX2luc2VydFN0cmluZwACA2Vudg5faW5zZXJ0SW50ZWdlcgAKA2VudhFfaW5zZXJ0QmlnSW50ZWdlcgANA2Vudg9fYmVnaW5TdHJ1Y3R1cmUACwNlbnYNX2luc2VydE9iamVjdAACA2Vudg1fYXR0YWNoTWVtYmVyAAIDZW52DF9jYXB0dXJlVmlldwAOA2Vudg1faGFuZGxlSnNDYWxsAAADZW52DV9kaXNwbGF5UGFuaWMAAQNlbnYQX2FsbG9jYXRlSnNUaHVuawAJA2VudgxfZnJlZUpzVGh1bmsACQOPAY0BBwwJAQUOBQUFBQUBBQEFAQUFBQYFBwYHBwcCCA8QCAsBDgIRBQUFCQUJCgkJCQkJBQkJBQUFBQkKCQoBAQEBAQEBAQEBAQEBAQEBCQkCAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBCgIBAQcJAAQEAwIOEgkJBwwABAQDExQQFRIWFw8QBggBfwFBgIAQCwe4AQoPZ2V0RmFjdG9yeVRodW5rABUKaW5pdGlhbGl6ZQCHARVhbGxvY2F0ZVNjcmF0Y2hNZW1vcnkAiAERZnJlZVNjcmF0Y2hNZW1vcnkAjQEIcnVuVGh1bmsAjgEQcnVuVmFyaWFkaWNUaHVuawCPAQ1jcmVhdGVKc1RodW5rAJABDmRlc3Ryb3lKc1RodW5rAJEBC2ZsdXNoU3Rkb3V0AJIBE2dldE1vZHVsZUF0dHJpYnV0ZXMAkwEIARQJaAEAQQELWBYaHB8hIyUnKSorLC07PT4/QEFCQ0VGS0xNTk9QUVJTVFVWV1hZWltcXV4uLzJfYGJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGUAZUBlgGXAYkBigGLAYwBCoqFA40BDgBBiKAQQQBBnAP8CwALBABBAQucFAEEfyMAQeAGayICJAACQAJAAkBBAEEdEAAiA0UNACACIAM2AgAgAkEAOwEEIAIhBAwBCyACQYAgNgIcIAJChYCAgCA3AhQgAkGSgBA2AhAgAkGBgAQ2AjAgAkKAgICAEDcDKCACQgA3AyAgAkKb2Nq/sp6tzSM3AwggAkE4aiACQQhqEBcgAi8BPCIDDQFBAEEdIAIoAjgiBBABAkACQCAEEAIiAw0AQciEECEDDAELIAIgAzYCoAYgAkEAOwGkBiACQaAGaiEDCyADLwEEIgMNASACQcgAahAYIAIvAUwiAw0BIAJB6ABqQgA3AgAgAkHwAGpCADcCACACQgA3AmAgAkECNgJcIAJCmICAgNAANwJUIAJBxYAQNgJQIAIgAigCSDYCgAEgAkKAgICAEDcCeCAEIAJB0ABqQQEQGSIDQf//A3ENASACQdgGahAYIAIvAdwGIgMNAQJAQQJBAEEAIAIoAtgGEAMiAw0AQQ0hAwwCCwJAQQAQBCIFDQBBFSEDDAILIAVBACADEAEgAkGEAWoQGyACLwGIASIDDQEgAkGkAWpCADcCACACQawBakIANwIAIAJCADcCnAEgAkECNgKYASACQqCAgIDQADcCkAEgAkHXgRA2AowBIAIgAigChAE2ArwBIAJCgYCAgBA3ArQBIAQgAkGMAWpBARAZIgNB//8DcQ0BIAJB2AZqEBsgAi8B3AYiAw0BAkBBA0EAQQAgAigC2AYQAyIDDQBBDSEDDAILIAVBASADEAEgAkHAAWoQHSACLwHEASIDDQEgAkHgAWpCADcCACACQegBakIANwIAIAJCADcC2AEgAkECNgLUASACQpGAgIDQADcCzAEgAkGphBA2AsgBIAIgAigCwAE2AvgBIAJCgoCAgBA3AvABIAQgAkHIAWpBARAZIgNB//8DcQ0BIAJB2AZqEB0gAi8B3AYiAw0BAkBB0IQQQQRBASACKALYBhADIgMNAEENIQMMAgsgBUECIAMQASACQfwBahAeIAIvAYACIgMNASACQZwCakIANwIAIAJBpAJqQgA3AgAgAkIANwKUAiACQQI2ApACIAJCioCAgNAANwKIAiACQb+CEDYChAIgAiACKAL8ATYCtAIgAkKDgICAEDcCrAIgBCACQYQCakEBEBkiA0H//wNxDQEgAkHYBmoQHiACLwHcBiIDDQECQEEEQQBBACACKALYBhADIgMNAEENIQMMAgsgBUEDIAMQASACQbgCahAgIAIvAbwCIgMNASACQdgCakIANwIAIAJB4AJqQgA3AgAgAkIANwLQAiACQQI2AswCIAJCi4CAgNAANwLEAiACQeSCEDYCwAIgAiACKAK4AjYC8AIgAkKEgICAEDcC6AIgBCACQcACakEBEBkiA0H//wNxDQEgAkHYBmoQICACLwHcBiIDDQECQEEFQQBBACACKALYBhADIgMNAEENIQMMAgsgBUEEIAMQASACQfQCahAiIAIvAfgCIgMNASACQZQDakIANwIAIAJBnANqQgA3AgAgAkIANwKMAyACQQI2AogDIAJCjYCAgNAANwKAAyACQbeAEDYC/AIgAiACKAL0AjYCrAMgAkKFgICAEDcCpAMgBCACQfwCakEBEBkiA0H//wNxDQEgAkHYBmoQIiACLwHcBiIDDQECQEEGQQBBACACKALYBhADIgMNAEENIQMMAgsgBUEFIAMQASACQbADahAkIAIvAbQDIgMNASACQdADakIANwIAIAJB2ANqQgA3AgAgAkIANwLIAyACQQI2AsQDIAJCjoCAgNAANwK8AyACQciBEDYCuAMgAiACKAKwAzYC6AMgAkKGgICAEDcC4AMgBCACQbgDakEBEBkiA0H//wNxDQEgAkHYBmoQJCACLwHcBiIDDQECQEEHQQBBACACKALYBhADIgMNAEENIQMMAgsgBUEGIAMQASACQewDahAmIAIvAfADIgMNASACQYwEakIANwIAIAJBlARqQgA3AgAgAkIANwKEBCACQQI2AoAEIAJCj4CAgNAANwL4AyACQauBEDYC9AMgAiACKALsAzYCpAQgAkKHgICAEDcCnAQgBCACQfQDakEBEBkiA0H//wNxDQEgAkHYBmoQJiACLwHcBiIDDQECQEEIQQBBACACKALYBhADIgMNAEENIQMMAgsgBUEHIAMQASACQagEahAoIAIvAawEIgMNASACQcgEakIANwIAIAJB0ARqQgA3AgAgAkIANwLABCACQQI2ArwEIAJCjYCAgNAANwK0BCACQZSBEDYCsAQgAiACKAKoBDYC4AQgAkKIgICAEDcC2AQgBCACQbAEakEBEBkiA0H//wNxDQEgAkHYBmoQKCACLwHcBiIDDQECQEEJQQBBACACKALYBhADIgMNAEENIQMMAgsgBUEIIAMQASACQeQEahAmIAIvAegEIgMNASACQYQFakIANwIAIAJBjAVqQgA3AgAgAkIANwL8BCACQQI2AvgEIAJCj4CAgNAANwLwBCACQaGCEDYC7AQgAiACKALkBDYCnAUgAkKJgICAEDcClAUgBCACQewEakEBEBkiA0H//wNxDQEgAkHYBmoQJiACLwHcBiIDDQECQEEKQQBBACACKALYBhADIgMNAEENIQMMAgsgBUEJIAMQASACQaAFahAoIAIvAaQFIgMNASACQcAFakIANwIAIAJByAVqQgA3AgAgAkIANwK4BSACQQI2ArQFIAJCjYCAgNAANwKsBSACQYaBEDYCqAUgAiACKAKgBTYC2AUgAkKKgICAEDcC0AUgBCACQagFakEBEBkiA0H//wNxDQEgAkHYBmoQKCACLwHcBiIDDQECQEELQQBBACACKALYBhADIgMNAEENIQMMAgsgBUEKIAMQASACQdwFahAoIAIvAeAFIgMNASACQfwFakIANwIAIAJBhAZqQgA3AgAgAkIANwL0BSACQQI2AvAFIAJCjICAgNAANwLoBSACQfmAEDYC5AUgAiACKALcBTYClAYgAkKLgICAEDcCjAYgBCACQeQFakEBEBkiA0H//wNxDQEgAkHYBmoQKCACLwHcBiIDDQECQEEMQQBBACACKALYBhADIgMNAEENIQMMAgsgBUELIAMQASACQZgGahAoIAIvAZwGIgMNASACQbgGakIANwIAIAJBwAZqQgA3AgAgAkIANwKwBiACQQI2AqwGIAJCjYCAgNAANwKkBiACQbGCEDYCoAYgAiACKAKYBjYC0AYgAkKMgICAEDcCyAYgBCACQaAGakEBEBkiA0H//wNxDQEgAkHYBmoQKCACLwHcBiIDDQECQEENQQBB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IAFBwYEQNgLQBCAHIAFB0ARqQQAQGSICQf//A3ENBQJAQQBBNBAAIggNACABQoiAgIDABzcDyAUgAUIANwPABSABQYSABDYC4AUgAUKIgICAEDcD2AUgAUIANwPQBSABQvnpxO/k2+D0SjcDuAUgAUHsBWogAUG4BWoQFyABLwHwBSICDQZBAEE0IAEoAuwFIggQAQJAQQBBPxAAIgkNACABQomAgICgATcDuAYgAUIANwOwBiABQYSABDYC0AYgAULEgICAEDcDyAYgAUIANwPABiABQuHegrHzqJnkETcDqAYgAUHcBmogAUGoBmoQFyABLwHgBiICDQdBAEE/IAEoAtwGIgkQAQJAQQBBNRAAIgoNACABQQo2AqwHIAFCiICAgCA3AqQHIAFBh4IQNgKgByABQYSABDYCwAcgAULEgICAEDcDuAcgAUIANwOwByABQqmFsoPwwszpoH83A5gHIAFBzAdqIAFBmAdqEBcgAS8B0AciAg0IQQBBNSABKALMByIKEAEgAUHUB2oQPCABLwHYByICDQggASABKALUBzYCjAggAUKAgICAEDcChAggAULAgICAEDcC/AcgAUKAhICAEDcC9AcgAUKAgICAEDcC7AcgAUEBNgLoByABQoaAgIDQADcC4AcgAUG+gBA2AtwHIAogAUHcB2pBABAZIgJB//8DcQ0IIAFBkAhqEB0gAS8BlAgiAg0IIAEgASgCkAg2AsgIIAFCgYCAgBA3AsAIIAFChICAgBA3ArgIIAFCoICAgBA3ArAIIAFCgISAgBA3AqgIIAFBATYCpAggAUKKgICAMDcCnAggAUG3gxA2ApgIIAogAUGYCGpBABAZIgJB//8DcQ0IAkBBqIgQQcQAQQEQDyICDQAgAEEMOwEEDAwLIAIQBCICRQ0HIAogAkEAEAUCQAJAIAoQAiICDQBByIQQIQIMAQsgASACNgKYCCABQQA7AZwIIAFBmAhqIQILIAIvAQQiAg0IIAoQBgsgASAKNgKUByABQgA3AowHIAFCxICAgBA3AoQHIAFCoISAgBA3AvwGIAFCADcC9AYgAUIFNwLsBiABQgA3AuQGIAkgAUHkBmpBABAZIgJB//8DcQ0HAkACQCAJEAIiAg0AQciEECECDAELIAEgAjYCmAggAUEAOwGcCCABQZgIaiECCyACLwEEIgINByAJEAYLIAEgCTYCpAYgAUKAgICAEDcCnAYgAUKIgICAEDcClAYgAULAgICAEDcCjAYgAUIANwKEBiABQgU3AvwFIAFCADcC9AUgCCABQfQFakEAEBkiAkH//wNxDQYCQAJAIAgQAiICDQBByIQQIQIMAQsgASACNgKYCCABQQA7AZwIIAFBmAhqIQILIAIvAQQiAg0GIAgQBgsgASAINgK0BSABQoGAgIAQNwKsBSABQoiAgIAQNwKkBSABQsCAgIAQNwKcBSABQoCAgIAQNwKUBSABQQE2ApAFIAFCgYCAgNAANwKIBSABQb2EEDYChAUgByABQYQFakEAEBkiAkH//wNxDQUCQAJAIAcQAiICDQBByIQQIQIMAQsgASACNgKYCCABQQA7AZwIIAFBmAhqIQILIAIvAQQiAg0FIAcQBgsgASAHNgKMBCABQgA3AoQEIAFCiICAgBA3AvwDIAFCwICAgBA3AvQDIAFCADcC7AMgAUIFNwLkAyABQgA3AtwDIAYgAUHcA2pBABAZIgJB//8DcQ0EQQwhAkEPQQBBABAPIgdFDQQgBxAEIgdFDQMgBiAHQQAQBUEQQQBBABAPIgdFDQRBFSECIAcQBCIHRQ0EIAYgB0EBEAUCQAJAIAYQAiICDQBByIQQIQIMAQsgASACNgKYCCABQQA7AZwIIAFBmAhqIQILIAIvAQQiAg0EIAYQBgsgASAGNgKcAyABQoCAgIAQNwKUAyABQoSAgIAQNwKMAyABQqCAgIAQNwKEAyABQgA3AvwCIAFCBTcC9AIgAUIANwLsAiAFIAFB7AJqQQAQGSICQf//A3ENAwJAAkAgBRACIgINAEHIhBAhAgwBCyABIAI2ApgIIAFBADsBnAggAUGYCGohAgsgAi8BBCICDQMgBRAGCyABIAU2AqwCIAFCgYCAgBA3AqQCIAFChICAgBA3ApwCIAFCoICAgBA3ApQCIAFCgICAgBA3AowCIAFBATYCiAIgAUKBgICA0AA3AoACIAFBvYQQNgL8ASAEIAFB/AFqQQAQGSICQf//A3ENAgJAAkAgBBACIgINAEHIhBAhAgwBCyABIAI2ApgIIAFBADsBnAggAUGYCGohAgsgAi8BBCICDQIgBBAGCyABIAQ2AoQBIAFCADcCfCABQoSAgIAQNwJ0IAFCoICAgBA3AmwgAUIANwJkIAFCBTcCXCABQgA3AlQgAyABQdQAakEAEBkiAkH//wNxDQECQEERQQBBABAPIgINACAAQQw7AQQMBQsgAhAEIgINAgtBFSECCyAAIAI7AQQMAgsgAyACQQAQBQJAAkAgAxACIgINAEHIhBAhAgwBCyABIAI2ApgIIAFBADsBnAggAUGYCGohAgsCQCACLwEEIgJFDQAgACACOwEEDAILIAMQBiABIAM2AkggAUEAOwFMIAFByABqIQILIAAgAikDADcCAAsgAUHQCGokAAsLAEEAIAA2AoygEAuMAwEDfyMAQZABayIBJAACQAJAAkBBAEEqEAAiAkUNACABIAI2AgggAUEAOwEMIAFBCGohAgwBCyABQoCAgIAQNwMgIAFCADcDGCABQYSABDYCOCABQoSAgIAQNwMwIAFCADcDKCABQqOjoI3DtuOs6AA3AxAgAUHAAGogAUEQahAXAkAgAS8BRCICRQ0AIAAgAjsBBAwCC0EAQSogASgCQCICEAEgAUHQAGoQHQJAAkAgAS8BVCIDDQAgASABKAJQNgKIASABQgA3AoABIAFChICAgBA3AnggAUKggICAEDcCcCABQoCAgIAQNwJoIAFCAzcCYCABQgA3AlggAiABQdgAakEAEBkiA0H//wNxRQ0BCyAAIAM7AQQMAgsCQAJAIAIQAiIDDQBByIQQIQMMAQsgASADNgJYIAFBADsBXCABQdgAaiEDCwJAIAMvAQQiA0UNACAAIAM7AQQMAgsgAhAGIAEgAjYCSCABQQA7AUwgAUHIAGohAgsgACACKQMANwIACyABQZABaiQAC84HAQR/IwBB8AJrIgEkAAJAAkACQEEAQccAEAAiAkUNACABIAI2AgAgAUEAOwEEIAEhAgwBCyABQg43AxggAUIANwMQIAFBgIAENgIwIAFCgICAgBA3AyggAUKCgICAEDcDICABQor5sqeqj4G/zAA3AwggAUE4aiABQQhqEBcCQCABLwE8IgJFDQAgACACOwEEDAILQQBBxwAgASgCOCIDEAECQAJAAkBBAEHIABAAIgQNACABQgw3A5ABIAFCADcDiAEgAUGEgAQ2AqgBIAFCiICAgBA3A6ABIAFCgoCAgBA3A5gBIAFClfWUouT+1oM/NwOAASABQbABaiABQYABahAXIAEvAbQBIgINAUEAQcgAIAEoArABIgQQASABQbgBahA4IAEvAbwBIgINASABIAEoArgBNgLwASABQoCAgIAQNwLoASABQoCAgIAQNwLgASABQoCAgIAQNwLYASABQsCAgIAQNwLQASABQQE2AswBIAFCBjcCxAEgAUHBgRA2AsABIAQgAUHAAWpBABAZIgJB//8DcQ0BIAFB9AFqEB0gAS8B+AEiAg0BIAEgASgC9AE2AqwCIAFCgYCAgBA3AqQCIAFChICAgBA3ApwCIAFCoICAgBA3ApQCIAFCgICAgBA3AowCIAFBATYCiAIgAUKBgICAMDcCgAIgAUG9hBA2AvwBIAQgAUH8AWpBABAZIgJB//8DcQ0BIAFBsAJqEB0gAS8BtAIiAg0BIAEgASgCsAI2AugCIAFCgoCAgBA3AuACIAFChICAgBA3AtgCIAFCoICAgBA3AtACIAFCoICAgBA3AsgCIAFBATYCxAIgAUKBgICAMDcCvAIgAUG7hBA2ArgCIAQgAUG4AmpBABAZIgJB//8DcQ0BAkACQCAEEAIiAg0AQciEECECDAELIAEgAjYCuAIgAUEAOwG8AiABQbgCaiECCyACLwEEIgINASAEEAYLIAEgBDYCfCABQgA3AnQgAUKIgICAEDcCbCABQsCAgIAQNwJkIAFCADcCXCABQgU3AlQgAUIANwJMIAMgAUHMAGpBABAZIgJB//8DcQ0AAkBBEkEAQQAQDyICDQAgAEEMOwEEDAQLIAIQBCICDQFBFSECCyAAIAI7AQQMAgsgAyACQQAQBQJAAkAgAxACIgINAEHIhBAhAgwBCyABIAI2ArgCIAFBADsBvAIgAUG4AmohAgsCQCACLwEEIgJFDQAgACACOwEEDAILIAMQBiABIAM2AkAgAUEAOwFEIAFBwABqIQILIAAgAikDADcCAAsgAUHwAmokAAs0AEEAQgA3AsifEEEAIAE2AsSfEEEAIAA2AsCfEEEAQQApA/CIEDcC1J8QQQBBADYC0J8QC9MHAQR/IwBB8AJrIgEkAAJAAkACQEEAQcoAEAAiAkUNACABIAI2AgAgAUEAOwEEIAEhAgwBCyABQg43AxggAUIANwMQIAFBgIAENgIwIAFCgICAgBA3AyggAUKCgICAEDcDICABQvH2oIqfxs27DjcDCCABQThqIAFBCGoQFwJAIAEvATwiAkUNACAAIAI7AQQMAgtBAEHKACABKAI4IgMQAQJAAkACQEEAQcsAEAAiBA0AIAFCjICAgKABNwOQASABQgA3A4gBIAFBhIAENgKoASABQsSAgIAQNwOgASABQoKAgIAQNwOYASABQtH+5IvI57mxRzcDgAEgAUGwAWogAUGAAWoQFyABLwG0ASICDQFBAEHLACABKAKwASIEEAEgAUG4AWoQOCABLwG8ASICDQEgASABKAK4ATYC8AEgAUKAgICAEDcC6AEgAUKAgICAEDcC4AEgAUKAgICAEDcC2AEgAUKghICAEDcC0AEgAUEBNgLMASABQgY3AsQBIAFBwYEQNgLAASAEIAFBwAFqQQAQGSICQf//A3ENASABQfQBahA8IAEvAfgBIgINASABIAEoAvQBNgKsAiABQoGAgIAQNwKkAiABQsCAgIAQNwKcAiABQoCEgIAQNwKUAiABQoCAgIAQNwKMAiABQQE2AogCIAFCgYCAgNAANwKAAiABQb2EEDYC/AEgBCABQfwBakEAEBkiAkH//wNxDQEgAUGwAmoQHSABLwG0AiICDQEgASABKAKwAjYC6AIgAUKCgICAEDcC4AIgAUKEgICAEDcC2AIgAUKggICAEDcC0AIgAUKAhICAEDcCyAIgAUEBNgLEAiABQoGAgIAwNwK8AiABQbuEEDYCuAIgBCABQbgCakEAEBkiAkH//wNxDQECQAJAIAQQAiICDQBByIQQIQIMAQsgASACNgK4AiABQQA7AbwCIAFBuAJqIQILIAIvAQQiAg0BIAQQBgsgASAENgJ8IAFCADcCdCABQsSAgIAQNwJsIAFCoISAgBA3AmQgAUIANwJcIAFCBTcCVCABQgA3AkwgAyABQcwAakEAEBkiAkH//wNxDQACQEETQQBBABAPIgINACAAQQw7AQQMBAsgAhAEIgINAUEVIQILIAAgAjsBBAwCCyADIAJBABAFAkACQCADEAIiAg0AQciEECECDAELIAEgAjYCuAIgAUEAOwG8AiABQbgCaiECCwJAIAIvAQQiAkUNACAAIAI7AQQMAgsgAxAGIAEgAzYCQCABQQA7AUQgAUHAAGohAgsgACACKQMANwIACyABQfACaiQAC+0JAwN/AX4JfyMAQZABayICJAAgAkHIAGpBCGogAEEIaikCADcDACACQcgAakEQaiAAQRBqKQIANwMAIAJByABqQRhqIABBGGopAgA3AwAgAkHIAGpBIGogAEEgaikCADcDACACQcgAakEoaiAAQShqKQIANwMAIAJByABqQTBqIABBMGopAgA3AwAgAkHIAGpBOGogAEE4aikCADcDACACIAApAgA3A0hBACgC8J8QIQMCQAJAAkACQEEAKALQnxANAEEBIQACQEEAKALInxAiBEUNACAEQXxqKAIArULQAH4iBSAFQuQAgn1C5AB8QtAAgKchAAtCAUEgIABna61C//8Dg4anEDNB//8DcQ0BCyACQRhqIAOtQoGAgIAQfiIFQtvR0IWa2t+BZ4VCACAFQqya4tOj0vD6H4VCABCYASACQQhqIAJBGGpBCGopAwBC29HQhZra34FnhUIAIAIpAxhCq8j1xcesh7ugf4VCABCYASACQQhqQQhqKQMAIAIpAwiFIQUCQAJAQQAoAsifECIGDQAgBachBEEAIQdBfyEIDAELIAZBfGooAgAiB0F/aiIIIAWncSEECyAFQjmIpyEJAkACQCAGIARqIgotAAAiAEUNACAHRQ0AIAdBf2ohCyAGQXhqIQwgBkF8aiENA0AgCyEOAkACQAJAIADAQX9KDQAgCSAAQf8AcUcNACAMKAIAIARBAnRqIgsoAgAgA0YNAQwCCyAHIA0oAgBHDQEgBCAHIABB/wFxQQFGGyEHDAELIAJBAToAjAEgBkF0aigCACAEQcgAbGohACACQYwBaiEEDAMLIAYgBEEBaiAIcSIEaiIKLQAAIgBFDQEgDkF/aiELIA4NAAsLIAZBfGooAgAhAEEAQQAoAtCfEEF/ajYC0J8QIAYgB2ogCiAHIABJIgAbIAlBgAFyOgAAQQAoAsifECIOQXhqKAIAIQsgDkF0aigCACEOQQBBACgCzJ8QQQFqNgLMnxAgAkEAOgCMASAOIAcgBCAAGyIEQcgAbGohACALIARBAnRqIQsgAkGMAWohBAsgBC0AAEEBcQ0CDAELIAJBOGogA61CgYCAgBB+IgVC29HQhZra34FnhUIAIAVCrJri06PS8PofhUIAEJgBIAJBKGogAkE4akEIaikDAELb0dCFmtrfgWeFQgAgAikDOEKryPXFx6yHu6B/hUIAEJgBIAJBKGpBCGopAwAgAikDKIUhBUF/IQYCQEEAKALInxAiDkUNACAOQXxqKAIAQX9qIQYLIAVCOYinIQcgDiAGIAWncSIEai0AACEAIA5BeGooAgAhCgNAAkAgAMBBf0oNACAHIABB/wBxRw0AIAogBEECdGoiCygCACADRw0AIAJBAToAiAEgDkF0aigCACAEQcgAbGohAEEBRQ0CDAMLIA4gBEEBaiAGcSIEai0AACEADAALCyALIAM2AgALIAAgAzYCACAAIAE2AkQgACACKQNINwIEIABBDGogAkHQAGopAwA3AgAgAEEUaiACQdgAaikDADcCACAAQRxqIAJB4ABqKQMANwIAIABBJGogAkHoAGopAwA3AgAgAEEsaiACQfAAaikDADcCACAAQTRqIAJB+ABqKQMANwIAIABBPGogAkGAAWopAwA3AgBBAEEAKALwnxBBAWo2AvCfECACQZABaiQAC9QHAQR/IwBB8AJrIgEkAAJAAkACQEEAQc0AEAAiAkUNACABIAI2AgAgAUEAOwEEIAEhAgwBCyABQg43AxggAUIANwMQIAFBgIAENgIwIAFCgICAgBA3AyggAUKCgICAEDcDICABQqzst86q5bTYtn83AwggAUE4aiABQQhqEBcCQCABLwE8IgJFDQAgACACOwEEDAILQQBBzQAgASgCOCIDEAECQAJAAkBBAEHOABAAIgQNACABQoyAgICgATcDkAEgAUIANwOIASABQYSABDYCqAEgAULEgICAEDcDoAEgAUKCgICAEDcDmAEgAULRrPX+lori7Gs3A4ABIAFBsAFqIAFBgAFqEBcgAS8BtAEiAg0BQQBBzgAgASgCsAEiBBABIAFBuAFqEDggAS8BvAEiAg0BIAEgASgCuAE2AvABIAFCgICAgBA3AugBIAFCgICAgBA3AuABIAFCgICAgBA3AtgBIAFCoISAgBA3AtABIAFBATYCzAEgAUIGNwLEASABQcGBEDYCwAEgBCABQcABakEAEBkiAkH//wNxDQEgAUH0AWoQHSABLwH4ASICDQEgASABKAL0ATYCrAIgAUKBgICAEDcCpAIgAUKEgICAEDcCnAIgAUKggICAEDcClAIgAUKAgICAEDcCjAIgAUEBNgKIAiABQoGAgIAwNwKAAiABQb2EEDYC/AEgBCABQfwBakEAEBkiAkH//wNxDQEgAUGwAmoQPCABLwG0AiICDQEgASABKAKwAjYC6AIgAUKCgICAEDcC4AIgAULAgICAEDcC2AIgAUKAhICAEDcC0AIgAUKggICAEDcCyAIgAUEBNgLEAiABQoGAgIDQADcCvAIgAUG7hBA2ArgCIAQgAUG4AmpBABAZIgJB//8DcQ0BAkACQCAEEAIiAg0AQciEECECDAELIAEgAjYCuAIgAUEAOwG8AiABQbgCaiECCyACLwEEIgINASAEEAYLIAEgBDYCfCABQgA3AnQgAULEgICAEDcCbCABQqCEgIAQNwJkIAFCADcCXCABQgU3AlQgAUIANwJMIAMgAUHMAGpBABAZIgJB//8DcQ0AAkBBFEEAQQAQDyICDQAgAEEMOwEEDAQLIAIQBCICDQFBFSECCyAAIAI7AQQMAgsgAyACQQAQBQJAAkAgAxACIgINAEHIhBAhAgwBCyABIAI2ArgCIAFBADsBvAIgAUG4AmohAgsCQCACLwEEIgJFDQAgACACOwEEDAILIAMQBiABIAM2AkAgAUEAOwFEIAFBwABqIQILIAAgAikDADcCAAsgAUHwAmokAAv/AgMBfwF+Bn8jAEEgayICJAAgAkEQaiAArUKBgICAEH4iA0Lb0dCFmtrfgWeFQgAgA0KsmuLTo9Lw+h+FQgAQmAEgAiACQRBqQQhqKQMAQtvR0IWa2t+BZ4VCACACKQMQQqvI9cXHrIe7oH+FQgAQmAEgAkEIaikDACACKQMAhSEDQX8hBAJAQQAoAsifECIFRQ0AIAVBfGooAgBBf2ohBAsgA0I5iKchBiAFIAQgA6dxIgdqLQAAIQggBUF4aigCACEJA0ACQCAIwEF/Sg0AIAYgCEH/AHFHDQAgCSAHQQJ0aigCACAARw0AIAVBdGooAgAgB0HIAGxqIgggASkCADcCBCAIQQxqIAFBCGopAgA3AgAgCEEcaiABQRhqKQIANwIAIAggASkCEDcCFCAIIAEpAiA3AiQgCEEsaiABQShqKQIANwIAIAggASkCMDcCNCAIQTxqIAFBOGopAgA3AgAgAkEgaiQADwsgBSAHQQFqIARxIgdqLQAAIQgMAAsL0wYBBH8jAEHAAmsiASQAAkACQAJAQQBB0AAQACICRQ0AIAEgAjYCCCABQQA7AQwgAUEIaiECDAELIAFCDjcDICABQgA3AxggAUGAgAQ2AjggAUKAgICAEDcDMCABQoGAgIAQNwMoIAFC5uu/y5y0kbeVfzcDECABQcAAaiABQRBqEBcCQCABLwFEIgJFDQAgACACOwEEDAILQQBB0AAgASgCQCIDEAECQAJAAkBBAEHRABAAIgINACABQgw3A5gBIAFCADcDkAEgAUGEgAQ2ArABIAFChICAgBA3A6gBIAFCgYCAgBA3A6ABIAFCvsz8jYSRmLLjADcDiAEgAUG8AWogAUGIAWoQFyABLwHAASIEDQFBAEHRACABKAK8ASICEAEgAUHEAWoQOCABLwHIASIEDQEgASABKALEATYC/AEgAUKAgICAEDcC9AEgAUKAgICAEDcC7AEgAUKAgICAEDcC5AEgAUKggICAEDcC3AEgAUEBNgLYASABQgY3AtABIAFBwYEQNgLMASACIAFBzAFqQQAQGSIEQf//A3ENASABQYACahAdIAEvAYQCIgQNASABIAEoAoACNgK4AiABQoGAgIAQNwKwAiABQoSAgIAQNwKoAiABQqCAgIAQNwKgAiABQoCAgIAQNwKYAiABQQE2ApQCIAFCgYCAgDA3AowCIAFBvYQQNgKIAiACIAFBiAJqQQAQGSIEQf//A3ENAQJAAkAgAhACIgQNAEHIhBAhBAwBCyABIAQ2AogCIAFBADsBjAIgAUGIAmohBAsgBC8BBCIEDQEgAhAGCyABIAI2AoQBIAFCADcCfCABQoSAgIAQNwJ0IAFCoICAgBA3AmwgAUIANwJkIAFCBTcCXCABQgA3AlQgAyABQdQAakEAEBkiBEH//wNxDQACQEEVQQBBABAPIgINACAAQQw7AQQMBAsgAhAEIgINAUEVIQQLIAAgBDsBBAwCCyADIAJBABAFAkACQCADEAIiAg0AQciEECECDAELIAEgAjYCiAIgAUEAOwGMAiABQYgCaiECCwJAIAIvAQQiAkUNACAAIAI7AQQMAgsgAxAGIAEgAzYCSCABQQA7AUwgAUHIAGohAgsgACACKQMANwIACyABQcACaiQACx0AAkBBAC0A7J8QQQNxQQJGDQBBACAANgLcnxALC9EHAQR/IwBB8AJrIgEkAAJAAkACQEEAQdMAEAAiAkUNACABIAI2AgAgAUEAOwEEIAEhAgwBCyABQg43AxggAUIANwMQIAFBgIAENgIwIAFCgICAgBA3AyggAUKCgICAEDcDICABQqC206TgrrDd4wA3AwggAUE4aiABQQhqEBcCQCABLwE8IgJFDQAgACACOwEEDAILQQBB0wAgASgCOCIDEAECQAJAAkBB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wD83AgggBEEUaikCACEFIAAgBEEcaikCADcCKCAAIAU3AhggAEKAgICAgICAwD83AiAgBEEkaiIGKQIAIQUgACAEQSxqIgcpAgA3AkAgACAFNwIwIABCgICAgICAgMA/NwI4IAYpAgAhBSAAIAcpAgA3AlggACAFNwJIIABCgICAgICAgMA/NwJQIARBNGopAgAhBSAAIARBPGopAgA3AnAgACAFNwJgIABCgICAgICAgMA/NwJoIAEpAgAhBSAAIAMpAgA3AogBIAAgBTcCeCAAQoCAgICAgIDAPzcCgAEgAEEkIARBxABqKAIAQQAoAoigECgCABECACACQQFqIQJBACgCyJ8QIgENAAsLIABCqtWq1Qo3ApABIABBADYCmAEgAEEAKQPwiBA3ApwBAkBBACgC3J8QIgJBACgC4J8QRg0AIABBpAFqIAIQNCAALQDsAUUNACAAQfABaiAAQaQBakHIAPwKAAAgAEHwAmogAEHgAWopAgA3AwAgAEG4AmpBMGogAEHYAWopAgA3AwAgAEHgAmogAEHQAWopAgA3AwAgAEHYAmogAEHIAWopAgA3AwAgAEG4AmpBGGogAEHAAWopAgA3AwAgAEG4AmpBEGogAEGkAWpBFGopAgA3AwAgAEG4AmpBCGogAEGwAWopAgA3AwAgACAAKQKoATcDuAIgAEHwAWpBCGohByAAQfABakEEaiEIQQAhAgNAIAcgAEHwAWogAmoiBEEYaiACQTBGIgEbIgMqAgAgAEG4AmogAmoiBkEEaioCACIJkyAIIARBFGogARsiBCoCACAGKgIAIgqTEDAhCyAAQoCAgICAgIDAPzcCtAQgAEKAgID8AzcCrAQgAEKAgICAgICAwD83AqQEIABCgICAgICAgMA/NwKUBCAAQoCAgPwDNwKMBCAAQoCAgICAgIDAPzcChAQgAEKAgICAgICAwD83AvQDIABCgICA/AM3AuwDIABCgICAgICAgMA/NwLkAyAAQoCAgICAgIDAPzcC1AMgAEKAgID8AzcCzAMgAEKAgICAgICAwD83AsQDIABCgICAgICAgMA/NwK0AyAAQoCAgPwDNwKsAyAAQoCAgICAgIDAPzcCpAMgAEKAgICAgICAwD83ApQDIABCgICA/AM3AowDIABCgICAgICAgMA/NwKEAyALEKABIQwgAyoCACENIAAg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aiABQRBqKQIANwMAIAJBCGpBCGogAUEIaikCADcDACACIAEpAgA3AwggAiABKAJAIgE2AkggAkEIaiABIAARAQAgAkHQAGokAEEAC78BAQJ/IwBB0ABrIgIkACACQQxqQQxqIAFBDGopAgA3AgAgAkEMakEUaiABQRRqKQIANwIAIAJBDGpBHGogAUEcaikCADcCACACQQxqQSRqIAFBJGopAgA3AgAgAkEMakEsaiABQSxqKQIANwIAIAJBDGpBNGogAUE0aikCADcCACACQQxqQTxqIAFBPGopAgA3AgAgAiABKAIAIgM2AgwgAiABKQIENwIQIAMgAkEQaiAAEQEAIAJB0ABqJABBAAsOACABKAIAIAARBQBBAAuMAwEDfyMAQZABayIBJAACQAJAAkBBAEElEAAiAkUNACABIAI2AgggAUEAOwEMIAFBCGohAgwBCyABQoCAgIAQNwMgIAFCADcDGCABQYSABDYCOCABQoSAgIAQNwMwIAFCADcDKCABQtHalL7p197z4QA3AxAgAUHAAGogAUEQahAXAkAgAS8BRCICRQ0AIAAgAjsBBAwCC0EAQSUgASgCQCICEAEgAUHQAGoQRAJAAkAgAS8BVCIDDQAgASABKAJQNgKIASABQgA3AoABIAFChICAgBA3AnggAUKggICAEDcCcCABQoCAgIAQNwJoIAFCBDcCYCABQgA3AlggAiABQdgAakEAEBkiA0H//wNxRQ0BCyAAIAM7AQQMAgsCQAJAIAIQAiIDDQBByIQQIQMMAQsgASADNgJYIAFBADsBXCABQdgAaiEDCwJAIAMvAQQiA0UNACAAIAM7AQQMAgsgAhAGIAEgAjYCSCABQQA7AUwgAUHIAGohAgsgACACKQMANwIACyABQZABaiQACxMAIAEqAgAgASoCBCAAEQYAQQALCQAgABEHAEEAC/0KAQR/IwBBwAJrIgEkAAJAAkACQEEAQTcQACICRQ0AIAEgAjYCACABQQA7AQQgASECDAELIAFBADYCHCABQoeAgIAgNwIUIAFBoYQQNgIQIAFBhIAENgIwIAFCkICAgBA3AyggAUIANwMgIAFCgvqcjer48LudfzcDCCABQThqIAFBCGoQFwJAIAEvATwiAkUNACAAIAI7AQQMAgtBAEE3IAEoAjgiAxABIAFBzABqEEQCQAJAIAEvAVAiAg0AIAEgASgCTDYChAEgAUKAgICAEDcCfCABQoSAgIAQNwJ0IAFCoICAgBA3AmwgAUKAgICAEDcCZCABQQE2AmAgAUKBgICAwAA3AlggAUGWgBA2AlQgAyABQdQAakEAEBkiAkH//wNxDQAgAUGIAWoQRCABLwGMASICDQAgASABKAKIATYCwAEgAUKBgICAEDcCuAEgAUKEgICAEDcCsAEgAUKggICAEDcCqAEgAUKggICAEDcCoAEgAUEBNgKcASABQoGAgIDAADcClAEgAUGQgBA2ApABIAMgAUGQAWpBABAZIgJB//8DcQ0AIAFBxAFqEEQgAS8ByAEiAg0AIAEgASgCxAE2AvwBIAFCgoCAgBA3AvQBIAFChICAgBA3AuwBIAFCoICAgBA3AuQBIAFCwICAgBA3AtwBIAFBATYC2AEgAUKBgICAwAA3AtABIAFBmoAQNgLMASADIAFBzAFqQQAQGSICQf//A3ENACABQYACahBEIAEvAYQCIgINACABIAEoAoACNgK4AiABQoOAgIAQNwKwAiABQoSAgIAQNwKoAiABQqCAgIAQNwKgAiABQuCAgIAQNwKYAiABQQE2ApQCIAFCgYCAgMAANwKMAiABQZiAEDYCiAIgAyABQYgCakEAEBkiAkH//wNxDQACQEHAhhBBEEEBEA8iAg0AIABBDDsBBAwECyACEAQiAg0BQRUhAgsgACACOwEEDAILIAMgAkEAEAUCQAJAIAMQAiICDQBByIQQIQIMAQsgASACNgKIAiABQQA7AYwCIAFBiAJqIQILAkAgAi8BBCICRQ0AIAAgAjsBBAwCCyABQYgBahBIAkACQCABLwGMASICDQAgAUGoAWpCADcCACABQbABakIANwIAIAFCADcCoAEgAUESNgKcASABQoOAgIDQADcClAEgAUGzgxA2ApABIAEgASgCiAE2AsABIAFCgICAgBA3ArgBIAMgAUGQAWpBARAZIgJB//8DcQ0AIAFB1ABqEEggAS8BWCICDQACQEEsQQBBACABKAJUEAMiAkUNAAJAQQAQBCIEDQAgAEEVOwEEDAULIARBACACEAEgAUHEAWoQSSABLwHIASICDQEgAUHkAWpCADcCACABQewBakIANwIAIAFCADcC3AEgAUESNgLYASABQoiAgIDQADcC0AEgAUGigRA2AswBIAEgASgC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ACACOwEEDAILIAMQBiABIAM2AkAgAUEAOwFEIAFBwABqIQILIAAgAikDADcCAAsgAUHwAmokAAuWBQEEfyMAQYACayIBJAACQAJAAkBBAEEkEAAiAkUNACABIAI2AgggAUEAOwEMIAFBCGohAgwBCyABQoiAgIDAFzcDICABQgA3AxggAUGEgAQ2AjggAUKIgICAEDcDMCABQgA3AyggAUKulIrRn4aOp3w3AxAgAUHAAGogAUEQahAXAkAgAS8BRCICRQ0AIAAgAjsBBAwCC0EAQSQgASgCQCICEAECQAJAAkBBAEEmEAAiAw0AIAFCiYCAgIAINwOYASABQgA3A5ABIAFBhIAENgKwASABQoSAgIAQNwOoASABQgA3A6ABIAFClMqWwcnOuYmSfzcDiAEgAUG4AWogAUGIAWoQFyABLwG8ASIEDQFBAEEmIAEoArgBIgMQASABQcABahBEIAEvAcQBIgQNASABIAEoAsABNgL4ASABQgA3AvABIAFChICAgBA3AugBIAFCoICAgBA3AuABIAFCADcC2AEgAUIENwLQASABQgA3AsgBIAMgAUHIAWpBABAZIgRB//8DcQ0BAkACQCADEAIiBA0AQciEECEEDAELIAEgBDYCyAEgAUEAOwHMASABQcgBaiEECyAELwEEIgQNASADEAYLIAEgAzYChAEgAUKAgICAEDcCfCABQoiAgIAQNwJ0IAFCwICAgBA3AmwgAUIANwJkIAFCBTcCXCABQgA3AlQgAiABQdQAakEAEBkiBEH//wNxRQ0BCyAAIAQ7AQQMAgsCQAJAIAIQAiIDDQBByIQQIQMMAQsgASADNgLIASABQQA7AcwBIAFByAFqIQMLAkAgAy8BBCIDRQ0AIAAgAzsBBAwCCyACEAYgASACNgJIIAFBADsBTCABQcgAaiECCyAAIAIpAwA3AgALIAFBgAJqJAALGAAgASgCACABKAIEIAEoAgggABECAEEAC4wGAQJ/IwBBEGsiBCQAAkACQAJAIAINAAJAQQAoAtCgEA0AQdCgECECQQAhBQwCCwJAQQAoAtSgEA0AQdSgECECQQEhBQwCCwJAQQAoAtigEA0AQdigECECQQIhBQwCCwJAQQAoAtygEA0AQdygECECQQMhBQwCCwJAQQAoAuCgEA0AQeCgECECQQQhBQwCCwJAQQAoAuSgEA0A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QTBqJABBAAtbAQF/IwBBIGsiAiQAIAJBCGogAUEMaikCADcDACACQRhqIAFBHGopAgA3AwAgAiABKQIENwMAIAIgASkCFDcDECABIAIgAkEQaiAAEQgAOAIAIAJBIGokAEEAC4cBAQF/IwBBEGsiAyQAIAMgATYCBCADIAA2AgBBACEBAkBBAC0A0KEQDQAgA0F/NgIIIAMgA0EIajYCDCADQQhqIQELAkACQAJAAkAgAiADQQggARAQQX9qDgMCAAEDC0H4gxBBIhCCAQALQd2DEEEaEIIBAAtBwoMQQRoQggEACyADQRBqJAALEgAgACABIAJBACgC0KAQEIMBCxIAIAAgASACQQAoAtSgEBCDAQsSACAAIAEgAkEAKALYoBAQgwELEgAgACABIAJBACgC3KAQEIMBCxIAIAAgASACQQAoAuCgEBCDAQsSACAAIAEgAkEAKALkoBAQgwELEgAgACABIAJBACgC6KAQEIMBCxIAIAAgASACQQAoAuygEBCDAQsSACAAIAEgAkEAKALwoBAQgwELEgAgACABIAJBACgC9KAQEIMBCxIAIAAgASACQQAoAvigEBCDAQsSACAAIAEgAkEAKAL8oBAQgwELEgAgACABIAJBACgCgKEQEIMBCxIAIAAgASACQQAoAoShEBCDAQsSACAAIAEgAkEAKAKIoRAQgwELEgAgACABIAJBACgCjKEQEIMBCxAAIAAgAUEAKAKQoRAQhAELEAAgACABQQAoApShEBCEAQsQACAAIAFBACgCmKEQEIQBCxAAIAAgAUEAKAKcoRAQhAELEAAgACABQQAoAqChEBCEAQsQACAAIAFBACgCpKEQEIQBCxAAIAAgAUEAKAKooRAQhAELEAAgACABQQAoAqyhEBCEAQsQACAAIAFBACgCsKEQEIQBCxAAIAAgAUEAKAK0oRAQhAELEAAgACABQQAoArihEBCEAQsQACAAIAFBACgCvKEQEIQBCxAAIAAgAUEAKALAoRAQhAELEAAgACABQQAoAsShEBCEAQsQACAAIAFBACgCyKEQEIQBCxAAIAAgAUEAKALMoRAQhAELCgAgACABEIUBAAuRAQEBfyMAQSBrIgQkACAEIAI2AhQgBCABNgIQIAQgADYCDEEAIQICQEEALQDQoRANACAEQX82AhggBCAEQRhqNgIcIARBGGohAgsC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IAcgBEkbIgRBASADdCIDIAQgA0sbIQQCQAJAAkBCAUEgIAJBBGoiAiADIAIgA0sbIgNBf2pna61C//8Dg4anIgJoQX1qQQxLDQAgBEF/amciA0UNASACQgFBICADa61C//8Dg4anRw0BDAILQgFBICADQYOABGpBEHZBf2pna61C//8Dg4anQgFBICAEQYOABGpBEHZBf2pna61C//8Dg4anRg0BC0EAIQELIAZBEGokACABC7YBAQJ/IwBBEGsiBSQAIAUgA0EfcToADwJAAkBCAUEgIAJBBGoiAkEBIAN0IgMgAiADSxsiA0F/amdrrUL//wODhqciAmhBfWoiBkENTw0AIAZBAnRBgKIQaiEDIAEgAmpBfGohAgwBC0IBQSAgA0GDgARqQRB2QX9qZ2utQv//A4OGpyICaEECdEHoohBqIQMgASACQRB0akF8aiECCyACIAMoAgA2AgAgAyABNgIAIAVBEGokAAt1AQF+IAAgBCABfiACIAN+fCADQiCIIgIgAUIgiCIEfnwgA0L/////D4MiAyABQv////8PgyIBfiIFQiCIIAMgBH58IgNCIIh8IANC/////w+DIAIgAX58IgFCIIh8NwMIIAAgAUIghiAFQv////8Pg4Q3AwAL1AICA34CfwJAAkACQCAAIABiDQAgAL0iAkL///////////8Ag0KAgICAgICA+P8AWg0AIAJCgICAgICAgICAf4MhA0ELIAJCAYYiBHmnayAEQjWIpyAEQoCAgICAgIAQVBshBQJAIAFBAEgNAEH+DyAFayABSA0CAkAgBSABaiIGQQFODQAgAiABQT9xrYYgA4S/DwsCQCAFQQBKDQAgAkEBIAVrrYZC/////////weDIAatQjSGhCADhL8PCyABrUI0hiACfL8PC0EAIAFrIQZBACAFayABSA0CAkBBTCAFayABTA0AIAO/DwsgBUEASq1CNIYgAkL/////////B4OEIAZBASAFIAFqayIBIAYgAUgbQX9qQT9xrSIEiEIBfEIBiCACeiAEUa1Cf4WDIAOEvyEACyAADwsgA0KAgICAgICA+P8AhL8PCyACIAatQjSGfb8LlgkDA38BfQN8IwBBEGsiASQAAkACQCAAvCICQf////8HcSIDQdqfpPoDSw0AQwAAgD8hBCADQYCAgMwDSQ0BIAC7IgUgBaIiBUSB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BUGQA2ogBiAOakEDdGorAwCioCERCyAFQfABaiADQQN0aiAROQMAIAhBeGohCCAOQX9qIQIgDkEASg0ACwsCQAJAIARFDQACQAJAIA1BAE4NAEQAAAAAAAAAACERDAELAkACQCANQQFqQQNxIgcNAEQAAAAAAAAAACERIA0hBgwBCyAFQfABaiANQQN0aiECRAAAAAAAAAAAIREgDSEGA0AgBkF/aiEGIBEgAisDAKAhESACQXhqIQIgB0F/aiIHDQALCyANQQNJDQAgBkEBaiEHIAZBA3QgBUHwAWpqQWhqIQIDQCARIAJBGGorAwCgIAJBEGorAwCgIAJBCGorAwCgIAIrAwCgIREgAkFgaiECIAdBfGoiBw0ACwsgASARmiARIBMbOQMAIAUrA/ABIBGhIRFBASECAkAgDUEBSA0AIA1BA3EhBgJAIA1BBEkNACANQfz///8HcSEIIAVB8AFqQSBqIQJBACEHA0AgESACQWhqKwMAoCACQXBqKwMAoCACQXhqKwMAoCACKwMAoCERIAJBIGohAiAIIAdBBGoiB0cNAAsgB0EBaiECCyAGRQ0AIAVB8AFqIAJBA3RqIQIDQCARIAIrAwCgIREgAkEIaiECIAZBf2oiBg0ACwsgASARmiARIBMbOQMIDAELAkACQCANQQBODQBEAAAAAAAAAAAhEQwBCwJAAkAgDUEBakEDcSIHDQBEAAAAAAAAAAAhESANIQYMAQsgBUHwAWogDUEDdGohAkQAAAAAAAAAACERIA0hBgNAIAZBf2ohBiARIAIrAwCgIREgAkF4aiECIAdBf2oiBw0ACwsgDUEDSQ0AIAZBAWohByAGQQN0IAVB8AFqakFoaiECA0AgESACQRhqKwMAoCACQRBqKwMAoCACQQhqKwMAoCACKwMAoCERIAJBYGohAiAHQXxqIgcNAAsLIAEgEZogESATGzkDAAsgBUGwBGokACAfQQdxC+YIAwN+BX8CfAJAAkACQCAAvSIDQv///////////wCDQv/////////3/wBWDQAgAb0iBEL///////////8Ag0KAgICAgICA+P8AVA0BCyAAIAGiIAKgIQIMAQsgAr0iBUL///////////8Ag0L/////////9/8AVg0AAkACQCAARAAAAAAAAAAAYQ0AIAFEAAAAAAAAAABiDQELIAAgAaIgAqAPCwJAIAJEAAAAAAAAAABiDQAgACABog8LQQAhBgJAAkAgA0I0iKciB0H/D3EiCEH/D0cNAEEAIQcMAQsCQAJAIAgNACADQv////////8Hg1BFDQFBACEHDAILIANC/////////4eAf4NCgICAgICAgPA/hCEDIAdB/w9xQYJ4aiEHDAELIANCgICAgICAgICAf4NCACADIANCDIZ5pyIIQQFqrYZC/////////weDIAhBP3FBMksbhEKAgICAgICA8D+EIQNBgnggCGshBwsCQCAEQjSIpyIJQf8PcSIIQf8PRg0AAkAgCA0AIARC/////////weDUA0BIARCgICAgICAgICAf4NCACAEIARCDIZ5pyIGQQFqrYZC/////////weDIAZBP3FBMksbhEKAgICAgICA8D+EIQRBgnggBmshBgwBCyAEQv////////+HgH+DQoCAgICAgIDwP4QhBCAJQf8PcUGCeGohBgtBACEIAkAgBUI0iKciCkH/D3EiCUH/D0YNAAJAIAkNACAFQv////////8Hg1ANASAFQoCAgICAgICAgH+DQgAgBSAFQgyGeaciCEEBaq2GQv////////8HgyAIQT9xQTJLG4RCgICAgICAgPA/hCEFQYJ4IAhrIQgMAQsgBUL/////////h4B/g0KAgICAgICA8D+EIQUgCkH/D3FBgnhqIQgLIAO/IQIgBL8hAAJAAkAgBiAHaiIGIAhrIghB6wBODQAgBb9BACAIaxCZASELDAELIAVCgICAgICAgICAf4NCgICAgICAgAiEvyELCyACIAJEAAAAAgAAoEGiIgEgAiABoaAiAaEiDCAAIABEAAAAAgAAoEGiIgIgACACoaAiAqEiAKIgDCACoiABIACioCIAIAEgAqIiAiACIACgIgChoKAhAQJAIAAgC6AiAkQAAAAAAAAAAGINACACIAEgBhCZAaAPCwJAIAEgASALIAIgAKEiDKEgACACIAyhoaAiC6AiACALoSIMoSALIAAgDKGhoCIBRAAAAAAAAAAAYQ0AIAC9IgOnQQFxDQAgA0IBhCABvSADhUI+iH2/IQALAkACQAJAIAK9Qv///////////wCDIgNCNIinIghB/w9GDQAgCA0BAkAgA1BFDQBBgICAgHghCAwDC0GNeCADeadrIQgMAgtBgICAgHhB/////wcgA0KA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\");\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n await new Promise(r => setTimeout(r, 0));\n return bytes.buffer;\n})();\nenv.loadModule(source, {\"memoryInitial\":5,\"tableInitial\":89,\"multithreaded\":false})\nenv.linkVariables(false);\n\n// export root namespace and its methods and constants\nconst { constructor: v0 } = root;\nconst v1 = env.getSpecialExports();\nconst {\n connect_web_gpu_programs: v2,\n connect_on_asset_update_callback: v3,\n ASSET_ID_TRESHOLD: v4,\n init_state: v5,\n add_texture: v6,\n update_points: v7,\n on_update_pick: v8,\n on_pointer_down: v9,\n on_pointer_up: v10,\n on_pointer_move: v11,\n canvas_render: v12,\n picks_render: v13,\n destroy_state: v14,\n} = v0;\nexport {\n v0 as default,\n v1 as __zigar,\n v2 as connect_web_gpu_programs,\n v3 as connect_on_asset_update_callback,\n v4 as ASSET_ID_TRESHOLD,\n v5 as init_state,\n v6 as add_texture,\n v7 as update_points,\n v8 as on_update_pick,\n v9 as on_pointer_down,\n v10 as on_pointer_up,\n v11 as on_pointer_move,\n v12 as canvas_render,\n v13 as picks_render,\n v14 as destroy_state,\n};\nawait v1.init();","import { memberNames, MemberType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport '../symbols.js';\nimport { defineProperty, defineValue } from '../utils.js';\n\n// handle retrieval of accessors\n\nvar all = mixin({\n init() {\n this.accessorCache = new Map();\n },\n getAccessor(access, member) {\n const { type, bitSize, bitOffset, byteSize } = member;\n const names = [];\n const unaligned = (byteSize === undefined) && (bitSize & 0x07 || bitOffset & 0x07);\n if (unaligned) {\n names.push('Unaligned');\n }\n let name = memberNames[type];\n if (bitSize > 32 && (type === MemberType.Int || type === MemberType.Uint)) {\n if (bitSize <= 64) {\n name = `Big${name}`;\n } else {\n name = `Jumbo${name}`;\n }\n }\n names.push(name, `${(type === MemberType.Bool && byteSize) ? byteSize * 8 : bitSize}`);\n if (unaligned) {\n names.push(`@${bitOffset}`);\n }\n const accessorName = access + names.join('');\n // see if it's a built-in method of DataView\n let accessor = DataView.prototype[accessorName];\n if (accessor) {\n return accessor;\n }\n // check cache\n accessor = this.accessorCache.get(accessorName);\n if (accessor) {\n return accessor;\n }\n while (names.length > 0) {\n const handlerName = `getAccessor${names.join('')}`;\n if (accessor = this[handlerName]?.(access, member)) {\n break;\n }\n names.pop();\n }\n if (!accessor) {\n throw new Error(`No accessor available: ${accessorName}`);\n }\n defineProperty(accessor, 'name', defineValue(accessorName));\n this.accessorCache.set(accessorName, accessor);\n return accessor;\n },\n});\n\nexport { all as default };\n","import { MemberType } from '../constants.js';\nimport { mixin } from '../environment.js';\n\n// handle non-standard ints 32-bit or smaller\n\nvar int = mixin({\n getAccessorInt(access, member) {\n const { bitSize, byteSize } = member;\n if (byteSize) {\n const f = this.getAccessor(access, { type: MemberType.Uint, bitSize: byteSize * 8, byteSize });\n const signMask = 2 ** (bitSize - 1);\n const valueMask = signMask - 1;\n if (access === 'get') {\n return function(offset, littleEndian) {\n const n = f.call(this, offset, littleEndian);\n return (n & valueMask) - (n & signMask);\n };\n } else {\n return function(offset, value, littleEndian) {\n const n = (value < 0) ? signMask | (value & valueMask) : value & valueMask;\n f.call(this, offset, n, littleEndian);\n };\n }\n }\n }\n});\n\nexport { int as default };\n","const StructureType = {\n Primitive: 0,\n Array: 1,\n Struct: 2,\n Union: 3,\n ErrorUnion: 4,\n ErrorSet: 5,\n Enum: 6,\n Optional: 7,\n Pointer: 8,\n Slice: 9,\n Vector: 10,\n Opaque: 11,\n ArgStruct: 12,\n VariadicStruct: 13,\n Function: 14,\n};\nconst structureNames = Object.keys(StructureType);\nconst StructureFlag = {\n HasValue: 0x0001,\n HasObject: 0x0002,\n HasPointer: 0x0004,\n HasSlot: 0x0008,\n};\nconst PrimitiveFlag = {\n IsSize: 0x0010,\n};\nconst ArrayFlag = {\n HasSentinel: 0x0010,\n IsString: 0x0020,\n IsTypedArray: 0x0040,\n IsClampedArray: 0x0080,\n};\nconst StructFlag = {\n IsExtern: 0x0010,\n IsPacked: 0x0020,\n IsIterator: 0x0040,\n IsTuple: 0x0080,\n\n IsAllocator: 0x0100,\n IsPromise: 0x0200,\n IsGenerator: 0x0400,\n IsAbortSignal: 0x0800,\n\n IsOptional: 0x1000,\n};\nconst UnionFlag = {\n HasSelector: 0x0010,\n HasTag: 0x0020,\n HasInaccessible: 0x0040,\n IsExtern: 0x0080,\n\n IsPacked: 0x0100,\n IsIterator: 0x0200,\n};\nconst EnumFlag = {\n IsOpenEnded: 0x0010,\n IsIterator: 0x0020,\n};\nconst OptionalFlag = {\n HasSelector: 0x0010,\n};\nconst PointerFlag = {\n HasLength: 0x0010,\n IsMultiple: 0x0020,\n IsSingle: 0x0040,\n IsConst: 0x0080,\n\n IsNullable: 0x0100,\n};\nconst SliceFlag = {\n HasSentinel: 0x0010,\n IsString: 0x0020,\n IsTypedArray: 0x0040,\n IsClampedArray: 0x0080,\n\n IsOpaque: 0x0100,\n};\nconst ErrorSetFlag = {\n IsGlobal: 0x0010,\n};\nconst OpaqueFlag = {\n IsIterator: 0x0010,\n};\nconst VectorFlag = {\n IsTypedArray: 0x0010,\n IsClampedArray: 0x0020,\n};\nconst ArgStructFlag = {\n HasOptions: 0x0010,\n IsThrowing: 0x0020,\n IsAsync: 0x0040,\n};\n\nconst MemberType = {\n Void: 0,\n Bool: 1,\n Int: 2,\n Uint: 3,\n Float: 4,\n Object: 5,\n Type: 6,\n Literal: 7,\n Null: 8,\n Undefined: 9,\n Unsupported: 10,\n};\nconst memberNames = Object.keys(MemberType);\nconst MemberFlag = {\n IsRequired: 0x0001,\n IsReadOnly: 0x0002,\n IsPartOfSet: 0x0004,\n IsSelector: 0x0008,\n IsMethod: 0x0010,\n IsSentinel: 0x0020,\n IsBackingInt: 0x0040,\n};\n\nconst CallResult = {\n OK: 0,\n Failure: 1,\n Deadlock: 2,\n Disabled: 3,\n};\n\nconst ModuleAttribute = {\n LittleEndian: 0x0001,\n RuntimeSafety: 0x0002,\n LibC: 0x0004,\n};\n\nconst VisitorFlag = {\n IsInactive: 0x0001,\n IsImmutable: 0x0002,\n\n IgnoreUncreated: 0x0004,\n IgnoreInactive: 0x0008,\n IgnoreArguments: 0x0010,\n IgnoreRetval: 0x0020,\n};\n\nexport { ArgStructFlag, ArrayFlag, CallResult, EnumFlag, ErrorSetFlag, MemberFlag, MemberType, ModuleAttribute, OpaqueFlag, OptionalFlag, PointerFlag, PrimitiveFlag, SliceFlag, StructFlag, StructureFlag, StructureType, UnionFlag, VectorFlag, VisitorFlag, memberNames, structureNames };\n","import { defineProperty, defineValue } from './utils.js';\n\nconst cls = {\n name: '',\n mixins: [],\n constructor: null,\n};\n\nfunction reset() {\n cls.name = '';\n cls.constructor = null;\n cls.mixins = [];\n}\n\nfunction name(s) {\n cls.name = s;\n}\n\nfunction mixin(object) {\n if (!cls.constructor) {\n cls.mixins.push(object);\n }\n return object;\n}\n\nfunction defineEnvironment() {\n if (!cls.constructor) {\n cls.constructor = defineClass(cls.name, cls.mixins);\n cls.name = '';\n cls.mixins = [];\n }\n return cls.constructor;\n}\n\nfunction defineClass(name, mixins) {\n const initFunctions = [];\n const constructor = function() {\n for (const init of initFunctions) {\n init.call(this);\n }\n };\n const { prototype } = constructor;\n defineProperty(constructor, 'name', defineValue(name));\n for (const mixin of mixins) {\n for (let [ name, object ] of Object.entries(mixin)) {\n if (name === 'init') {\n initFunctions.push(object);\n } else {\n if (typeof(object) === 'function') ; else {\n let current = prototype[name];\n if (current !== undefined) {\n if (current?.constructor === Object) {\n object = Object.assign({ ...current }, object);\n } else if (current !== object) {\n throw new Error(`Duplicate property: ${name}`);\n }\n }\n }\n defineProperty(prototype, name, defineValue(object));\n }\n }\n }\n return constructor;\n}\n\nexport { defineClass, defineEnvironment, mixin, name, reset };\n","import { StructureType, memberNames } from './constants.js';\nimport { TYPED_ARRAY, UPDATE } from './symbols.js';\nimport { getPrimitiveName, defineProperty } from './utils.js';\n\nclass MustBeOverridden extends Error {\n constructor() {\n super(`Method must be overridden`);\n }\n}\n\nclass InvalidIntConversion extends SyntaxError {\n constructor(arg) {\n super(`Cannot convert ${arg} to an Int`);\n }\n}\n\nclass Unsupported extends TypeError {\n constructor() {\n super(`Unsupported`);\n }\n}\n\nclass NoInitializer extends TypeError {\n constructor(structure) {\n const { name } = structure;\n super(`An initializer must be provided to the constructor of ${name}, even when the intended value is undefined`);\n }\n}\n\nclass BufferSizeMismatch extends TypeError {\n constructor(structure, dv, target = null) {\n const { name, type, byteSize } = structure;\n const actual = dv.byteLength;\n const s = (byteSize !== 1) ? 's' : '';\n let msg;\n if (type === StructureType.Slice && !target) {\n msg = `${name} has elements that are ${byteSize} byte${s} in length, received ${actual}`;\n } else {\n const total = (type === StructureType.Slice) ? target.length * byteSize : byteSize;\n msg = `${name} has ${total} byte${s}, received ${actual}`;\n }\n super(msg);\n }\n}\n\nclass BufferExpected extends TypeError {\n constructor(structure) {\n const { type, byteSize, typedArray } = structure;\n const s = (byteSize !== 1) ? 's' : '';\n const acceptable = [ 'ArrayBuffer', 'DataView' ].map(addArticle);\n if (typedArray) {\n acceptable.push(addArticle(typedArray.name));\n }\n let msg;\n if (type === StructureType.Slice) {\n msg = `Expecting ${formatList(acceptable)} that can accommodate items ${byteSize} byte${s} in length`;\n } else {\n msg = `Expecting ${formatList(acceptable)} that is ${byteSize} byte${s} in length`;\n }\n super(msg);\n }\n}\n\nclass EnumExpected extends TypeError {\n constructor(structure, arg) {\n const { name } = structure;\n let msg;\n if (typeof(arg) === 'number' || typeof(arg) === 'bigint') {\n msg = `Value given does not correspond to an item of enum ${name}: ${arg}`;\n } else {\n msg = `Enum item of the type ${name} expected, received ${arg}`;\n }\n super(msg);\n }\n}\n\nclass ErrorExpected extends TypeError {\n constructor(structure, arg) {\n const { name } = structure;\n const type = typeof(arg);\n let msg;\n if (type === 'string' || type === 'number' || isErrorJSON(arg)) {\n if (isErrorJSON(arg)) {\n arg = `{ error: ${JSON.stringify(arg.error)} }`;\n }\n msg = `Error ${type} does not corresponds to any error in error set ${name}: ${arg}`;\n } else {\n msg = `Error of the type ${name} expected, received ${arg}`;\n }\n super(msg);\n }\n}\n\nclass NotInErrorSet extends TypeError {\n constructor(structure) {\n const { name } = structure;\n super(`Error given is not a part of error set ${name}`);\n }\n}\n\nclass InvalidType extends TypeError {\n constructor(structure) {\n const { name } = structure;\n super(`Object of specific type expected: ${name}`);\n }\n}\n\nclass MultipleUnionInitializers extends TypeError {\n constructor(structure) {\n const { name } = structure;\n super(`Only one property of ${name} can be given a value`);\n }\n}\n\nclass InactiveUnionProperty extends TypeError {\n constructor(structure, name, currentName) {\n super(`Accessing property ${name} when ${currentName} is active`);\n }\n}\n\nclass MissingUnionInitializer extends TypeError {\n constructor(structure, arg, exclusion) {\n const { name, instance: { members } } = structure;\n const missing = members.slice(0, exclusion ? -1 : undefined).map(m => m.name);\n super(`${name} needs an initializer for one of its union properties: ${missing.join(', ')}`);\n }\n}\n\nclass InvalidInitializer extends TypeError {\n constructor(structure, expected, arg) {\n const { name } = structure;\n const acceptable = [];\n if (Array.isArray(expected)) {\n for (const type of expected) {\n acceptable.push(addArticle(type));\n }\n } else {\n acceptable.push(addArticle(expected));\n }\n const received = getDescription(arg);\n super(`${name} expects ${formatList(acceptable)} as argument, received ${received}`);\n }\n}\n\nclass InvalidArrayInitializer extends InvalidInitializer {\n constructor(structure, arg, shapeless = false) {\n const { instance: { members: [ member ] }, type, constructor } = structure;\n const acceptable = [];\n const primitive = getPrimitiveName(member);\n if (primitive) {\n let object;\n switch (member.structure?.type) {\n case StructureType.Enum: object = 'enum item'; break;\n case StructureType.ErrorSet: object = 'error'; break;\n default: object = primitive;\n }\n acceptable.push(`array of ${object}s`);\n } else {\n acceptable.push(`array of objects`);\n }\n if (constructor[TYPED_ARRAY]) {\n acceptable.push(constructor[TYPED_ARRAY].name);\n }\n if (type === StructureType.Slice && shapeless) {\n acceptable.push(`length`);\n }\n super(structure, acceptable.join(' or '), arg);\n }\n}\n\nclass ArrayLengthMismatch extends TypeError {\n constructor(structure, target, arg) {\n const { name, length, instance: { members: [ member ] } } = structure;\n const { structure: { constructor: elementConstructor} } = member;\n const { length: argLength, constructor: argConstructor } = arg;\n // get length from object whech it's a slice\n const actualLength = target?.length ?? length;\n const s = (actualLength !== 1) ? 's' : '';\n let received;\n if (argConstructor === elementConstructor) {\n received = `only a single one`;\n } else if (argConstructor.child === elementConstructor) {\n received = `a slice/array that has ${argLength}`;\n } else {\n received = `${argLength} initializer${argLength > 1 ? 's' : ''}`;\n }\n super(`${name} has ${actualLength} element${s}, received ${received}`);\n }\n}\n\nclass InvalidSliceLength extends TypeError {\n constructor(length, max) {\n if (length < 0) {\n super(`Length of slice cannot be negative`);\n } else {\n super(`Length of slice can be ${max} or less, received ${length}`);\n }\n }\n}\n\nclass MissingInitializers extends TypeError {\n constructor(structure, missing) {\n const { name } = structure;\n super(`Missing initializers for ${name}: ${missing.join(', ')}`);\n }\n}\n\nclass NoProperty extends TypeError {\n constructor(structure, propName) {\n const { name, instance: { members } } = structure;\n const member = members.find(m => m.name === propName);\n let msg;\n if (member) {\n msg = `Comptime value cannot be changed: ${propName}`;\n } else {\n msg = `${name} does not have a property with that name: ${propName}`;\n }\n super(msg);\n }\n}\n\nclass ArgumentCountMismatch extends Error {\n constructor(expected, received, variadic = false) {\n super();\n const updateText = (argOffset) => {\n expected -= argOffset;\n received -= argOffset;\n const s = (expected !== 1) ? 's' : '';\n const p = (variadic) ? 'at least ' : '';\n this.message = `Expecting ${p}${expected} argument${s}, received ${received}`;\n this.stack = adjustStack(this.stack, 'new Arg(');\n };\n updateText(0);\n defineProperty(this, UPDATE, { value: updateText, enumerable: false });\n }\n}\n\nclass UndefinedArgument extends Error {\n constructor() {\n super(`Undefined argument`);\n }\n}\n\nclass NoCastingToPointer extends TypeError {\n constructor() {\n super(`Non-slice pointers can only be created with the help of the new operator`);\n }\n}\n\nclass NoCastingToFunction extends TypeError {\n constructor() {\n super(`Casting to function is not allowed`);\n }\n}\n\nclass ConstantConstraint extends TypeError {\n constructor(structure, pointer) {\n const { name: target } = structure;\n const { constructor: { name } } = pointer;\n super(`Conversion of ${name} to ${target} requires an explicit cast`);\n }\n}\n\nclass MisplacedSentinel extends TypeError {\n constructor(structure, value, index, length) {\n const { name } = structure;\n super(`${name} expects the sentinel value ${value} at ${length - 1}, found at ${index}`);\n }\n}\n\nclass MissingSentinel extends TypeError {\n constructor(structure, value, length) {\n const { name } = structure;\n super(`${name} expects the sentinel value ${value} at ${length - 1}`);\n }\n}\n\nclass AlignmentConflict extends TypeError {\n constructor(align1, align2) {\n super(`Unable to simultaneously align memory to ${align2}-byte and ${align1}-byte boundary`);\n }\n}\n\nclass AssigningToConstant extends TypeError {\n constructor(pointer) {\n const { constructor: { name } } = pointer;\n super(`${name} cannot be modified`);\n }\n}\n\nclass TypeMismatch extends TypeError {\n constructor(expected, arg) {\n const received = getDescription(arg);\n super(`Expected ${addArticle(expected)}, received ${received}`);\n }\n}\n\nclass InaccessiblePointer extends TypeError {\n constructor() {\n super(`Pointers within an untagged union are not accessible`);\n }\n}\n\nclass NullPointer extends TypeError {\n constructor() {\n super(`Null pointer`);\n }\n}\n\nclass PreviouslyFreed extends TypeError {\n constructor(arg) {\n super(`Object has been freed already: ${arg.constructor.name}`);\n }\n}\n\nclass InvalidPointerTarget extends TypeError {\n constructor(structure, arg) {\n const { name } = structure;\n let target;\n if (arg != null) {\n const noun = (arg instanceof Object && arg.constructor !== Object) ? `${arg.constructor.name} object`: typeof(arg);\n const a = article(noun);\n target = `${a} ${noun}`;\n } else {\n target = arg + '';\n }\n super(`${name} cannot point to ${target}`);\n }\n}\n\nclass ZigMemoryTargetRequired extends TypeError {\n constructor() {\n super(`Pointers in Zig memory cannot point to garbage-collected object`);\n }\n}\n\nclass Overflow extends TypeError {\n constructor(member, value) {\n const { type, bitSize } = member;\n const name = (bitSize > 32 ? 'Big' : '') + memberNames[type] + bitSize;\n super(`${name} cannot represent the value given: ${value}`);\n }\n}\n\nclass OutOfBound extends RangeError {\n constructor(member, index) {\n const { name } = member;\n super(`Index exceeds the size of ${name ?? 'array'}: ${index}`);\n }\n}\n\nclass NotUndefined extends TypeError {\n constructor(member) {\n const { name } = member;\n const rvalue = (name !== undefined) ? `Property ${name}` : `Element`;\n super(`${rvalue} can only be undefined`);\n }\n}\n\nclass NotOnByteBoundary extends TypeError {\n constructor(member) {\n const { name, structure: { name: struct } } = member;\n super(`Unable to create ${struct} as it is not situated on a byte boundary: ${name}`);\n }\n}\n\nclass ReadOnly extends TypeError {\n constructor() {\n super(`Unable to modify read-only object`);\n }\n}\n\nclass ReadOnlyTarget extends TypeError {\n constructor(structure) {\n const { name } = structure;\n super(`${name} cannot point to a read-only object`);\n }\n}\n\nclass AccessingOpaque extends TypeError {\n constructor(structure) {\n const { name } = structure;\n super(`Unable to access opaque structure ${name}`);\n }\n}\n\nclass CreatingOpaque extends TypeError {\n constructor(structure) {\n const { name } = structure;\n super(`Unable to create instance of ${name}, as it is opaque`);\n }\n}\n\nclass InvalidVariadicArgument extends TypeError {\n constructor() {\n super(`Arguments passed to variadic function must be casted to a Zig type`);\n }\n}\n\nclass UnexpectedGenerator extends TypeError {\n constructor() {\n super(`Unexpected async generator`);\n }\n}\n\nclass ZigError extends Error {\n constructor(error, remove = 0) {\n if (error instanceof Error) {\n super(error.message);\n error.stack = adjustStack(this.stack, remove);\n return error;\n } else {\n super(error ?? 'Error encountered in Zig code');\n }\n }\n}\n\nclass Exit extends ZigError {\n constructor(code) {\n super('Program exited');\n this.code = code;\n }\n}\n\nfunction adjustArgumentError(err, argIndex) {\n const updateText = (argOffset) => {\n argIndex -= argOffset;\n err.message = `args[${argIndex}]: ${err.message}`;\n err.stack = adjustStack(err.stack, 'new Arg(');\n };\n updateText(0);\n defineProperty(err, UPDATE, { value: updateText, enumerable: false });\n return err;\n}\n\nfunction adjustStack(stack, search) {\n if (typeof(stack) === 'string') {\n const lines = stack.split('\\n');\n const index = lines.findIndex(s => s.includes(search));\n if (index !== -1) {\n lines.splice(1, index);\n stack = lines.join('\\n');\n }\n }\n return stack;\n}\n\nfunction replaceRangeError(member, index, err) {\n if (err instanceof RangeError && !(err instanceof OutOfBound)) {\n err = new OutOfBound(member, index);\n }\n return err;\n}\n\nfunction throwReadOnly() {\n throw new ReadOnly();\n}\n\nfunction deanimalizeErrorName(name) {\n // deal with snake_case first\n let s = name.replace(/_/g, ' ');\n // then camelCase, using a try block in case Unicode regex fails\n try {\n s = s.replace(/(\\p{Uppercase}+)(\\p{Lowercase}*)/gu, (m0, m1, m2) => {\n if (m1.length === 1) {\n return ` ${m1.toLocaleLowerCase()}${m2}`;\n } else {\n if (m2) {\n return m0;\n } else {\n return ` ${m1}`;\n }\n }\n }).trimStart();\n } catch (err) {\n }\n return s.charAt(0).toLocaleUpperCase() + s.substring(1);\n}\n\nfunction isErrorJSON(arg) {\n return typeof(arg) === 'object' && typeof(arg.error) === 'string' && Object.keys(arg).length === 1 ;\n}\n\nfunction getDescription(arg) {\n const type = typeof(arg);\n let s;\n if (type === 'object') {\n s = (arg) ? Object.prototype.toString.call(arg) : 'null';\n } else {\n s = type;\n }\n return addArticle(s);\n}\n\nfunction addArticle(noun) {\n return `${article(noun)} ${noun}`;\n}\n\nfunction article(noun) {\n return /^\\W*[aeiou]/i.test(noun) ? 'an' : 'a';\n}\n\nfunction formatList(list, conj = 'or') {\n const sep = ` ${conj} `;\n if (list.length > 2) {\n return list.slice(0, -1).join(', ') + sep + list[list.length - 1];\n } else {\n return list.join(sep);\n }\n}\n\nexport { AccessingOpaque, AlignmentConflict, ArgumentCountMismatch, ArrayLengthMismatch, AssigningToConstant, BufferExpected, BufferSizeMismatch, ConstantConstraint, CreatingOpaque, EnumExpected, ErrorExpected, Exit, InaccessiblePointer, InactiveUnionProperty, InvalidArrayInitializer, InvalidInitializer, InvalidIntConversion, InvalidPointerTarget, InvalidSliceLength, InvalidType, InvalidVariadicArgument, MisplacedSentinel, MissingInitializers, MissingSentinel, MissingUnionInitializer, MultipleUnionInitializers, MustBeOverridden, NoCastingToFunction, NoCastingToPointer, NoInitializer, NoProperty, NotInErrorSet, NotOnByteBoundary, NotUndefined, NullPointer, OutOfBound, Overflow, PreviouslyFreed, ReadOnly, ReadOnlyTarget, TypeMismatch, UndefinedArgument, UnexpectedGenerator, Unsupported, ZigError, ZigMemoryTargetRequired, addArticle, adjustArgumentError, article, deanimalizeErrorName, formatList, getDescription, isErrorJSON, replaceRangeError, throwReadOnly };\n","import { structureNames } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { MEMORY, SLOTS, TYPE, ALIGN, SIZE, ENVIRONMENT } from '../symbols.js';\n\nvar baseline = mixin({\n init() {\n this.variables = [];\n },\n getSpecialExports() {\n const check = (v) => {\n if (v === undefined) throw new Error('Not a Zig type');\n return v;\n };\n return {\n init: (...args) => this.initialize?.(...args),\n abandon: () => this.abandonModule?.(),\n connect: (console) => this.consoleObject = console,\n sizeOf: (T) => check(T?.[SIZE]),\n alignOf: (T) => check(T?.[ALIGN]),\n typeOf: (T) => structureNamesLC[check(T?.[TYPE])],\n };\n },\n recreateStructures(structures, settings) {\n Object.assign(this, settings);\n const insertObjects = (dest, placeholders) => {\n for (const [ slot, placeholder ] of Object.entries(placeholders)) {\n dest[slot] = createObject(placeholder);\n }\n return dest;\n };\n // empty arrays aren't replicated\n const getBuffer = a => (a.length) ? a.buffer : new ArrayBuffer(0);\n const createObject = (placeholder) => {\n const { memory, structure, actual } = placeholder;\n if (memory) {\n if (actual) {\n return actual;\n } else {\n const { array, offset, length } = memory;\n const dv = this.obtainView(getBuffer(array), offset, length);\n const { handle, const: isConst } = placeholder;\n const constructor = structure?.constructor;\n const object = placeholder.actual = constructor.call(ENVIRONMENT, dv);\n if (isConst) {\n this.makeReadOnly(object);\n }\n if (placeholder.slots) {\n insertObjects(object[SLOTS], placeholder.slots);\n }\n if (handle) {\n // need to replace dataview with one pointing to Zig memory later,\n // when the VM is up and running\n this.variables.push({ handle, object });\n }\n return object;\n }\n } else {\n return structure;\n }\n };\n this.resetGlobalErrorSet?.();\n const objectPlaceholders = new Map();\n for (const structure of structures) {\n // recreate the actual template using the provided placeholder\n for (const scope of [ structure.instance, structure.static ]) {\n if (scope.template) {\n const { slots, memory, handle } = scope.template;\n const object = scope.template = {};\n if (memory) {\n const { array, offset, length } = memory;\n object[MEMORY] = this.obtainView(getBuffer(array), offset, length);\n if (handle) {\n this.variables.push({ handle, object });\n }\n }\n if (slots) {\n // defer creation of objects until shapes of structures are finalized\n const realSlots = object[SLOTS] = {};\n objectPlaceholders.set(realSlots, slots);\n }\n }\n }\n this.defineStructure(structure);\n }\n // insert objects into template slots\n for (const [ slots, placeholders ] of objectPlaceholders) {\n insertObjects(slots, placeholders);\n }\n // add static members, methods, etc.\n for (const structure of structures) {\n this.finalizeStructure(structure);\n }\n },\n});\n\nconst structureNamesLC = structureNames.map(name => name.replace(/([a-z])([A-Z])/g, '$1 $2').toLowerCase());\n\nexport { baseline as default };\n","import { CallResult, StructureType, StructFlag, MemberType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { UnexpectedGenerator } from '../errors.js';\nimport { MEMORY, ZIG, ALLOCATOR, VISIT, THROWING, RETURN, YIELD } from '../symbols.js';\n\nvar callMarshalingInbound = mixin({\n init() {\n this.jsFunctionThunkMap = new Map();\n this.jsFunctionCallerMap = new Map();\n this.jsFunctionControllerMap = new Map();\n this.jsFunctionIdMap = new WeakMap();\n this.jsFunctionNextId = 1;\n },\n getFunctionId(fn) {\n let id = this.jsFunctionIdMap.get(fn);\n if (id === undefined) {\n id = this.jsFunctionNextId++;\n this.jsFunctionIdMap.set(fn, id);\n }\n return id;\n },\n getFunctionThunk(fn, jsThunkController) {\n const id = this.getFunctionId(fn);\n let dv = this.jsFunctionThunkMap.get(id);\n if (dv === undefined) {\n const controllerAddress = this.getViewAddress(jsThunkController[MEMORY]);\n const thunkAddress = this.createJsThunk(controllerAddress, id);\n if (!thunkAddress) {\n throw new Error('Unable to create function thunk');\n }\n dv = this.obtainZigView(thunkAddress, 0);\n this.jsFunctionThunkMap.set(id, dv);\n this.jsFunctionControllerMap.set(id, jsThunkController);\n }\n return dv;\n },\n createInboundCaller(fn, ArgStruct) {\n const handler = (dv, futexHandle) => {\n let result = CallResult.OK;\n let awaiting = false;\n try {\n const argStruct = ArgStruct(dv);\n if (VISIT in argStruct) {\n // reset pointers in arg so we don't pick up old pointers\n // objects in stack memory really shouldn't be cached\n argStruct[VISIT]('reset');\n const context = this.startContext();\n this.updatePointerTargets(context, argStruct, true);\n this.updateShadowTargets(context);\n this.endContext();\n }\n const onError = function(err) {\n try {\n // if the error is not part of the error set returned by the function,\n // the following will throw\n if (ArgStruct[THROWING] && err instanceof Error) {\n argStruct[RETURN](err);\n } else {\n throw err;\n }\n } catch (_) {\n result = CallResult.Failure;\n console.error(err);\n }\n };\n const onReturn = function(value) {\n try {\n // [RETURN] defaults to the setter of retval; if the function accepts a promise,\n // it'd invoke the callback\n argStruct[RETURN](value);\n } catch (err) {\n result = CallResult.Failure;\n console.error(err);\n }\n };\n try {\n const retval = fn(...argStruct);\n const hasCallback = argStruct.hasOwnProperty(RETURN);\n if (retval?.[Symbol.toStringTag] === 'Promise') {\n // we can handle a promise when the Zig caller is able to wait or\n // it's receiving the result through a callback\n if (futexHandle || hasCallback) {\n const promise = retval.then(onReturn, onError);\n if (futexHandle) {\n promise.then(() => this.finalizeAsyncCall(futexHandle, result));\n }\n awaiting = true;\n result = CallResult.OK;\n } else {\n result = CallResult.Deadlock;\n }\n } else if (retval?.[Symbol.asyncIterator]) {\n if (argStruct.hasOwnProperty(YIELD)) {\n this.pipeContents(retval, argStruct);\n result = CallResult.OK;\n } else {\n throw new UnexpectedGenerator();\n }\n } else if (retval != undefined || !hasCallback) {\n onReturn(retval);\n }\n } catch (err) {\n onError(err);\n }\n } catch(err) {\n console.error(err);\n result = CallResult.Failure;\n }\n if (futexHandle && !awaiting) {\n this.finalizeAsyncCall(futexHandle, result);\n }\n return result;\n };\n const id = this.getFunctionId(fn);\n this.jsFunctionCallerMap.set(id, handler);\n return function(...args) {\n return fn(...args);\n };\n },\n defineArgIterator(members) {\n const thisEnv = this;\n const allocatorTotal = members.filter(({ structure: s }) => {\n return (s.type === StructureType.Struct) && (s.flags & StructFlag.IsAllocator);\n }).length;\n return {\n value() {\n let options;\n let allocatorCount = 0, callbackCount = 0, signalCount = 0;\n const args = [];\n for (const [ srcIndex, { structure, type } ] of members.entries()) {\n // error unions will throw on access, in which case we pass the error as the argument\n try {\n let arg = this[srcIndex];\n if (type === MemberType.Object && arg?.[MEMORY]?.[ZIG]) {\n // create copy in JS memory\n arg = new arg.constructor(arg);\n }\n let optName, opt;\n if (structure.type === StructureType.Struct) {\n if (structure.flags & StructFlag.IsAllocator) {\n optName = (allocatorTotal === 1) ? `allocator` : `allocator${++allocatorCount}`;\n opt = this[ALLOCATOR] = arg;\n } else if (structure.flags & StructFlag.IsPromise) {\n optName = 'callback';\n if (++callbackCount === 1) {\n opt = thisEnv.createPromiseCallback(this, arg);\n }\n } else if (structure.flags & StructFlag.IsGenerator) {\n optName = 'callback';\n if (++callbackCount === 1) {\n opt = thisEnv.createGeneratorCallback(this, arg);\n }\n } else if (structure.flags & StructFlag.IsAbortSignal) {\n optName = 'signal';\n if (++signalCount === 1) {\n opt = thisEnv.createInboundSignal(arg);\n }\n }\n }\n if (optName !== undefined) {\n if (opt !== undefined) {\n options ||= {};\n options[optName] = opt;\n }\n } else {\n // just a regular argument\n args.push(arg);\n }\n } catch (err) {\n args.push(err);\n }\n }\n if (options) {\n args.push(options);\n }\n return args[Symbol.iterator]();\n }\n };\n },\n handleJsCall(id, argAddress, argSize, futexHandle = 0) {\n const dv = this.obtainZigView(argAddress, argSize, false);\n const caller = this.jsFunctionCallerMap.get(id);\n return (caller) ? caller(dv, futexHandle) : CallResult.Failure;\n },\n releaseFunction(id) {\n const thunk = this.jsFunctionThunkMap.get(id);\n const controller = this.jsFunctionControllerMap.get(id);\n if (thunk && controller) {\n const controllerAddress = this.getViewAddress(controller[MEMORY]);\n const thunkAddress = this.getViewAddress(thunk);\n this.destroyJsThunk(controllerAddress, thunkAddress);\n this.releaseZigView(thunk);\n if (id) {\n this.jsFunctionThunkMap.delete(id);\n this.jsFunctionCallerMap.delete(id);\n this.jsFunctionControllerMap.delete(id);\n }\n }\n },\n ...({\n exports: {\n handleJsCall: { argType: 'iiii', returnType: 'i' },\n releaseFunction: { argType: 'i' },\n },\n imports: {\n createJsThunk: { argType: 'ii', returnType: 'i' },\n destroyJsThunk: { argType: 'ii', returnType: 'i' },\n finalizeAsyncCall: { argType: 'ii' },\n },\n } ),\n});\n\nexport { callMarshalingInbound as default };\n","import { StructureType, StructFlag, MemberType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { ZigError, UndefinedArgument, adjustArgumentError, Exit } from '../errors.js';\nimport { ATTRIBUTES, MEMORY, FINALIZE, COPY, RETURN, PROMISE, GENERATOR, SETTERS, VISIT, ALLOCATOR } from '../symbols.js';\n\nvar callMarshalingOutbound = mixin({\n createOutboundCaller(thunk, ArgStruct) {\n const thisEnv = this;\n const self = function (...args) {\n {\n if (!thisEnv.runThunk) {\n return thisEnv.initPromise.then(() => {\n return self(...args);\n });\n }\n }\n // `this` is present when running a promise and generator callback received from a inbound call\n // it's going to be the argument struct of that call\n const argStruct = new ArgStruct(args, this?.[ALLOCATOR]);\n {\n try {\n return thisEnv.invokeThunk(thunk, self, argStruct);\n } catch (err) {\n // do nothing when exit code is 0\n if (err instanceof Exit && err.code === 0) {\n return;\n }\n throw err;\n }\n }\n };\n return self;\n },\n copyArguments(argStruct, argList, members, options, argAlloc) {\n let destIndex = 0, srcIndex = 0;\n let allocatorCount = 0;\n const setters = argStruct[SETTERS];\n for (const { type, structure } of members) {\n let arg, promise, generator, signal;\n if (structure.type === StructureType.Struct) {\n if (structure.flags & StructFlag.IsAllocator) {\n // use programmer-supplied allocator if found in options object, handling rare scenarios\n // where a function uses multiple allocators\n const allocator = (++allocatorCount === 1)\n ? options?.['allocator'] ?? options?.['allocator1']\n : options?.[`allocator${allocatorCount}`];\n // otherwise use default allocator which allocates relocatable memory from JS engine\n arg = allocator ?? this.createDefaultAllocator(argStruct, structure);\n } else if (structure.flags & StructFlag.IsPromise) {\n promise ||= this.createPromise(argStruct, options?.['callback']);\n arg = promise;\n } else if (structure.flags & StructFlag.IsGenerator) {\n generator ||= this.createGenerator(argStruct, options?.['callback']);\n arg = generator;\n } else if (structure.flags & StructFlag.IsAbortSignal) {\n // create an Int32Array with one element, hooking it up to the programmer-supplied\n // AbortSignal object if found\n signal ||= this.createSignal(structure, options?.['signal']);\n arg = signal;\n }\n }\n if (arg === undefined) {\n // just a regular argument\n arg = argList[srcIndex++];\n // only void has the value of undefined\n if (arg === undefined && type !== MemberType.Void) {\n throw new UndefinedArgument();\n }\n }\n try {\n const set = setters[destIndex++];\n set.call(argStruct, arg, argAlloc);\n } catch (err) {\n throw adjustArgumentError(err, destIndex - 1);\n }\n }\n },\n invokeThunk(thunk, fn, argStruct) {\n const context = this.startContext();\n const attrs = argStruct[ATTRIBUTES];\n const thunkAddress = this.getViewAddress(thunk[MEMORY]);\n const fnAddress = this.getViewAddress(fn[MEMORY]);\n const isAsync = FINALIZE in argStruct;\n const hasPointers = VISIT in argStruct;\n if (hasPointers) {\n this.updatePointerAddresses(context, argStruct);\n }\n // return address of shadow for argumnet struct\n const argAddress = this.getShadowAddress(context, argStruct, null, false)\n ;\n // get address of attributes if function variadic\n const attrAddress = (attrs) ? this.getShadowAddress(context, attrs) : 0\n ;\n this.updateShadows(context);\n const finalize = () => {\n this.updateShadowTargets(context);\n // create objects that pointers point to\n if (hasPointers) {\n this.updatePointerTargets(context, argStruct);\n }\n if (this.libc) {\n this.flushStdout?.();\n }\n this.flushConsole?.();\n this.endContext();\n };\n if (isAsync) {\n argStruct[FINALIZE] = finalize;\n }\n const success = (attrs)\n ? this.runVariadicThunk(thunkAddress, fnAddress, argAddress, attrAddress, attrs.length)\n : this.runThunk(thunkAddress, fnAddress, argAddress);\n if (!success) {\n finalize();\n throw new ZigError();\n }\n {\n // copy retval from shadow view\n argStruct[COPY]?.(this.findShadowView(argStruct[MEMORY]));\n }\n if (isAsync) {\n let retval = null;\n // if a function has returned a value or failed synchronmously, the promise is resolved immediately\n try {\n retval = argStruct.retval;\n } catch (err) {\n retval = new ZigError(err, 1);\n }\n if (retval != null) {\n argStruct[RETURN](retval);\n }\n // this would be undefined if a callback function is used instead\n return argStruct[PROMISE] ?? argStruct[GENERATOR];\n } else {\n finalize();\n try {\n return argStruct.retval;\n } catch (err) {\n throw new ZigError(err, 1);\n }\n }\n },\n ...({\n imports: {\n runThunk: { argType: 'iii', returnType: 'b' },\n runVariadicThunk: { argType: 'iiiii', returnType: 'b' },\n },\n } ),\n});\n\nexport { callMarshalingOutbound as default };\n","import { MemberType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { MEMORY, ZIG, RESTORE } from '../symbols.js';\nimport { empty } from '../utils.js';\n\nvar dataCopying = mixin({\n init() {\n const int8 = { type: MemberType.Int, bitSize: 8, byteSize: 1 };\n const int16 = { type: MemberType.Int, bitSize: 16, byteSize: 2 };\n const int32 = { type: MemberType.Int, bitSize: 32, byteSize: 4 };\n const getInt8 = this.getAccessor('get', int8);\n const setInt8 = this.getAccessor('set', int8);\n const getInt16 = this.getAccessor('get', int16);\n const setInt16 = this.getAccessor('set', int16);\n const getInt32 = this.getAccessor('get', int32);\n const setInt32 = this.getAccessor('set', int32);\n this.copiers = {\n 0: empty,\n 1: function(dest, src) {\n setInt8.call(dest, 0, getInt8.call(src, 0));\n },\n 2: function(dest, src) {\n setInt16.call(dest, 0, getInt16.call(src, 0, true), true);\n\n },\n 4: function(dest, src) {\n setInt32.call(dest, 0, getInt32.call(src, 0, true), true);\n },\n 8: function(dest, src) {\n setInt32.call(dest, 0, getInt32.call(src, 0, true), true);\n setInt32.call(dest, 4, getInt32.call(src, 4, true), true);\n },\n 16: function(dest, src) {\n setInt32.call(dest, 0, getInt32.call(src, 0, true), true);\n setInt32.call(dest, 4, getInt32.call(src, 4, true), true);\n setInt32.call(dest, 8, getInt32.call(src, 8, true), true);\n setInt32.call(dest, 12, getInt32.call(src, 12, true), true);\n },\n 'any': function(dest, src) {\n let i = 0, len = dest.byteLength;\n while (i + 4 <= len) {\n setInt32.call(dest, i, getInt32.call(src, i, true), true);\n i += 4;\n }\n while (i + 1 <= len) {\n setInt8.call(dest, i, getInt8.call(src, i));\n i++;\n }\n },\n };\n this.resetters = {\n 0: empty,\n 1: function(dest, offset) {\n setInt8.call(dest, offset, 0);\n },\n 2: function(dest, offset) {\n setInt16.call(dest, offset, 0, true);\n\n },\n 4: function(dest, offset) {\n setInt32.call(dest, offset, 0, true);\n },\n 8: function(dest, offset) {\n setInt32.call(dest, offset + 0, 0, true);\n setInt32.call(dest, offset + 4, 0, true);\n },\n 16: function(dest, offset) {\n setInt32.call(dest, offset + 0, 0, true);\n setInt32.call(dest, offset + 4, 0, true);\n setInt32.call(dest, offset + 8, 0, true);\n setInt32.call(dest, offset + 12, 0, true);\n },\n any: function(dest, offset, len) {\n let i = offset;\n while (i + 4 <= len) {\n setInt32.call(dest, i, 0, true);\n i += 4;\n }\n while (i + 1 <= len) {\n setInt8.call(dest, i, 0);\n i++;\n }\n },\n };\n },\n defineCopier(size, multiple) {\n const copy = this.getCopyFunction(size, multiple);\n return {\n value(target) {\n {\n this[RESTORE]?.();\n target[RESTORE]?.();\n }\n const src = target[MEMORY];\n const dest = this[MEMORY];\n copy(dest, src);\n },\n };\n },\n defineResetter(offset, size) {\n const reset = this.getResetFunction(size);\n return {\n value() {\n {\n this[RESTORE]?.();\n }\n const dest = this[MEMORY];\n reset(dest, offset, size);\n }\n };\n },\n getCopyFunction(size, multiple = false) {\n const f = !multiple ? this.copiers[size] : undefined;\n return f ?? this.copiers.any;\n },\n getResetFunction(size) {\n return this.resetters[size] ?? this.resetters.any;\n },\n ...({\n defineRetvalCopier({ byteSize, bitOffset }) {\n if (byteSize > 0) {\n const thisEnv = this;\n const offset = bitOffset >> 3;\n const copy = this.getCopyFunction(byteSize);\n return {\n value(shadowDV) {\n const dv = this[MEMORY];\n const { address } = shadowDV[ZIG];\n const src = new DataView(thisEnv.memory.buffer, address + offset, byteSize);\n const dest = new DataView(dv.buffer, dv.byteOffset + offset, byteSize);\n copy(dest, src);\n }\n };\n }\n },\n copyExternBytes(dst, address, len) {\n const { memory } = this;\n const src = new DataView(memory.buffer, address, len);\n const copy = this.getCopyFunction(len);\n copy(dst, src);\n },\n } )\n});\n\nexport { dataCopying as default };\n","import { PrimitiveFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { InvalidIntConversion } from '../errors.js';\n\nvar intConversion = mixin({\n addIntConversion(getAccessor) {\n return function (access, member) {\n const accessor = getAccessor.call(this, access, member);\n const { flags, bitSize } = member;\n if (access === 'set') {\n return (bitSize > 32)\n ? function(offset, value, littleEndian) {\n accessor.call(this, offset, BigInt(value), littleEndian);\n }\n : function(offset, value, littleEndian) {\n const number = Number(value);\n if (!isFinite(number)) {\n throw new InvalidIntConversion(value)\n }\n accessor.call(this, offset, number, littleEndian);\n };\n } else {\n const { flags: structureFlags } = member.structure;\n if ((structureFlags & PrimitiveFlag.IsSize) && bitSize > 32) {\n const max = BigInt(Number.MAX_SAFE_INTEGER);\n const min = BigInt(Number.MIN_SAFE_INTEGER);\n return function(offset, littleEndian) {\n const bigint = accessor.call(this, offset, littleEndian);\n return (min <= bigint && bigint <= max) ? Number(bigint) : bigint;\n };\n }\n }\n return accessor;\n };\n },\n});\n\nexport { intConversion as default };\n","import { mixin } from '../environment.js';\nimport { AlignmentConflict } from '../errors.js';\nimport { MEMORY, ZIG, ALIGN } from '../symbols.js';\nimport { isInvalidAddress, usizeMax, usizeMin, adjustAddress, usizeInvalid, alignForward, isMisaligned, findSortedIndex } from '../utils.js';\n\nvar memoryMapping = mixin({\n init() {\n this.isMemoryMapping = true;\n this.memoryList = [];\n this.contextCount = 0;\n },\n startContext() {\n ++this.contextCount;\n return { shadowList: [] };\n },\n endContext() {\n if (--this.contextCount === 0) {\n for (const { shadowDV } of this.memoryList) {\n if (shadowDV) {\n this.freeShadowMemory(shadowDV);\n }\n }\n this.memoryList.splice(0);\n }\n },\n getShadowAddress(context, target, cluster, writable) {\n const targetDV = target[MEMORY];\n if (cluster) {\n if (cluster.address === undefined) {\n const { start, end, targets } = cluster;\n // look for largest align\n let maxAlign = 0, maxAlignOffset;\n for (const target of targets) {\n const dv = target[MEMORY];\n const offset = dv.byteOffset;\n const align = target.constructor[ALIGN] ?? dv[ALIGN];\n if (maxAlign === undefined || align > maxAlign) {\n maxAlign = align;\n maxAlignOffset = offset;\n }\n }\n // ensure the shadow buffer is large enough to accommodate necessary adjustments\n const len = end - start;\n const unalignedDV = this.allocateShadowMemory(len + maxAlign, 1);\n const unalignedAddress = this.getViewAddress(unalignedDV);\n const maxAlignAddress = alignForward(adjustAddress(unalignedAddress, maxAlignOffset - start), maxAlign);\n const address = adjustAddress(maxAlignAddress, start - maxAlignOffset);\n // make sure that other pointers are correctly aligned also\n for (const target of targets) {\n const dv = target[MEMORY];\n const offset = dv.byteOffset;\n if (offset !== maxAlignOffset) {\n const align = target.constructor[ALIGN] ?? dv[ALIGN];\n if (isMisaligned(adjustAddress(address, offset - start), align)) {\n throw new AlignmentConflict(align, maxAlign);\n }\n }\n }\n const shadowOffset = unalignedDV.byteOffset + Number(address - unalignedAddress);\n const shadowDV = new DataView(unalignedDV.buffer, shadowOffset, len);\n {\n // attach Zig memory info to aligned data view so it gets freed correctly\n shadowDV[ZIG] = { address, len, align: 1, unalignedAddress, type: MemoryType.Scratch };\n }\n const clusterDV = new DataView(targetDV.buffer, Number(start), len);\n const entry = this.registerMemory(address, len, 1, writable, clusterDV, shadowDV);\n context.shadowList.push(entry);\n cluster.address = address;\n }\n return adjustAddress(cluster.address, targetDV.byteOffset - cluster.start);\n } else {\n const align = target.constructor[ALIGN] ?? targetDV[ALIGN];\n const len = targetDV.byteLength;\n const shadowDV = this.allocateShadowMemory(len, align);\n const address = this.getViewAddress(shadowDV);\n const entry = this.registerMemory(address, len, 1, writable, targetDV, shadowDV);\n context.shadowList.push(entry);\n return address;\n }\n },\n updateShadows(context) {\n const copy = this.getCopyFunction();\n for (let { targetDV, shadowDV } of context.shadowList) {\n {\n shadowDV = this.restoreView(shadowDV);\n }\n copy(shadowDV, targetDV);\n }\n },\n updateShadowTargets(context) {\n const copy = this.getCopyFunction();\n for (let { targetDV, shadowDV, writable } of context.shadowList) {\n if (writable) {\n {\n shadowDV = this.restoreView(shadowDV);\n }\n copy(targetDV, shadowDV);\n }\n }\n },\n registerMemory(address, len, align, writable, targetDV, shadowDV) {\n const index = findMemoryIndex(this.memoryList, address);\n let entry = this.memoryList[index - 1];\n if (entry?.address === address && entry.len === len) {\n entry.writable ||= writable;\n } else {\n entry = { address, len, align, writable, targetDV, shadowDV };\n this.memoryList.splice(index, 0, entry);\n }\n return entry;\n },\n unregisterMemory(address, len) {\n const index = findMemoryIndex(this.memoryList, address);\n const entry = this.memoryList[index - 1];\n if (entry?.address === address && entry.len === len) {\n this.memoryList.splice(index - 1, 1);\n return entry;\n }\n },\n findMemory(context, address, count, size) {\n let len = count * (size ?? 0);\n const index = findMemoryIndex(this.memoryList, address);\n const entry = this.memoryList[index - 1];\n let dv;\n if (entry?.address === address && entry.len === len) {\n dv = entry.targetDV;\n } else if (entry?.address <= address && adjustAddress(address, len) <= adjustAddress(entry.address, entry.len)) {\n const offset = Number(address - entry.address);\n const isOpaque = size === undefined;\n const { targetDV } = entry;\n if (isOpaque) {\n len = targetDV.byteLength - offset;\n }\n dv = this.obtainView(targetDV.buffer, targetDV.byteOffset + offset, len);\n if (isOpaque) {\n // opaque structure--need to save the alignment\n dv[ALIGN] = entry.align;\n }\n }\n if (!dv) {\n // not found in any of the buffers we've seen--assume it's Zig memory\n dv = this.obtainZigView(address, len);\n } else {\n let { targetDV, shadowDV } = entry;\n if (shadowDV && context && !context.shadowList.includes(entry)) {\n {\n shadowDV = this.restoreView(shadowDV);\n }\n const copy = this.getCopyFunction();\n copy(targetDV, shadowDV);\n }\n }\n return dv;\n },\n findShadowView(dv) {\n for (const { shadowDV, targetDV } of this.memoryList) {\n if (targetDV === dv) {\n return shadowDV;\n }\n }\n },\n releaseZigView(dv) {\n const zig = dv[ZIG];\n const address = zig?.address;\n if (address && address !== usizeInvalid) {\n // set address to invalid to avoid double free\n zig.address = usizeInvalid;\n }\n },\n getViewAddress(dv) {\n const zig = dv[ZIG];\n if (zig) {\n return zig.address;\n } else {\n const address = this.getBufferAddress(dv.buffer);\n return adjustAddress(address, dv.byteOffset);\n }\n },\n ...({\n imports: {\n allocateScratchMemory: { argType: 'ii', returnType: 'i' },\n freeScratchMemory: { argType: 'iii' },\n },\n exports: {\n getViewAddress: { argType: 'v', returnType: 'i' },\n },\n usizeMaxBuffer: new ArrayBuffer(0),\n\n allocateShadowMemory(len, align) {\n const address = (len) ? this.allocateScratchMemory(len, align) : 0;\n if (!address && len) {\n throw new Error('Out of memory');\n }\n const dv = this.obtainZigView(address, len);\n const zig = dv?.[ZIG];\n if (zig) {\n zig.align = align;\n }\n return dv;\n },\n freeShadowMemory(dv) {\n const { address, unalignedAddress, len, align } = dv[ZIG];\n if (len) {\n this.freeScratchMemory(unalignedAddress ?? address, len, align);\n }\n this.releaseZigView(dv);\n },\n obtainZigView(address, len, cache = true) {\n if (isInvalidAddress(address)) {\n address = (len > 0) ? 0 : usizeMax;\n }\n if (!address && len) {\n return null;\n }\n let { buffer } = this.memory;\n if (address === usizeMax) {\n buffer = this.usizeMaxBuffer;\n address = usizeMin;\n len = 0;\n }\n return (cache) ? this.obtainView(buffer, address, len) : new DataView(buffer, address, len);\n },\n getTargetAddress(context, target, cluster, writable) {\n const dv = target[MEMORY];\n if (dv[ZIG]) {\n return this.getViewAddress(dv);\n } else if (dv.byteLength === 0) {\n // it's a null pointer/empty slice\n return 0;\n }\n // JS buffers always need shadowing\n return this.getShadowAddress(context, target, cluster, writable);\n },\n getBufferAddress(buffer) {\n return 0;\n },\n } ),\n});\n\nfunction findMemoryIndex(array, address) {\n return findSortedIndex(array, address, m => m.address);\n}\n\nconst MemoryType = {\n Normal: 0,\n Scratch: 1,\n};\n\nexport { MemoryType, memoryMapping as default };\n","import { mixin } from '../environment.js';\nimport { decodeText, empty, defineProperty } from '../utils.js';\n\nvar moduleLoading = mixin({\n init() {\n this.abandoned = false;\n {\n this.nextValueIndex = 1;\n this.valueMap = new Map();\n this.valueIndices = new Map();\n this.options = null;\n this.executable = null;\n this.memory = null;\n this.table = null;\n this.initialTableLength = 0;\n this.exportedFunctions = null;\n }\n },\n releaseFunctions() {\n const throwError = () => { throw new Error(`Module was abandoned`) };\n for (const name of Object.keys(this.imports)) {\n if (this[name]) {\n this[name] = throwError;\n }\n }\n },\n abandonModule() {\n if (!this.abandoned) {\n this.releaseFunctions();\n this.unlinkVariables?.();\n this.abandoned = true;\n }\n },\n ...({\n imports: {\n initialize: { argType: '' },\n },\n exports: {\n displayPanic: { argType: 'ii' },\n },\n\n async initialize(wasi) {\n this.setCustomWASI?.(wasi);\n await this.initPromise;\n },\n getObjectIndex(object) {\n if (object != null) {\n let index = this.valueIndices.get(object);\n if (index === undefined) {\n index = this.nextValueIndex++;\n this.valueIndices.set(object, index);\n this.valueMap.set(index, object);\n }\n return index;\n } else {\n return 0;\n }\n },\n fromWebAssembly(type, arg) {\n switch (type) {\n case 'v':\n case 's': return this.valueMap.get(arg);\n case 'i': return arg;\n case 'b': return !!arg;\n }\n },\n toWebAssembly(type, arg) {\n switch (type) {\n case 'v':\n case 's': return this.getObjectIndex(arg);\n case 'i': return arg;\n case 'b': return arg ? 1 : 0;\n }\n },\n exportFunction(fn, argType = '', returnType = '', name) {\n if (!fn) {\n return () => {};\n }\n return (...args) => {\n args = args.map((arg, i) => this.fromWebAssembly(argType.charAt(i), arg));\n const retval = fn.apply(this, args);\n const retval2 = this.toWebAssembly(returnType, retval);\n return retval2;\n };\n },\n importFunction(fn, argType = '', returnType = '') {\n return (...args) => {\n args = args.map((arg, i) => this.toWebAssembly(argType.charAt(i), arg));\n const retval = fn.apply(this, args);\n return this.fromWebAssembly(returnType, retval);\n };\n },\n exportFunctions() {\n const imports = {};\n for (const [ name, { argType, returnType, alias } ] of Object.entries(this.exports)) {\n const fn = this[alias ?? name];\n if (fn) {\n imports[`_${name}`] = this.exportFunction(fn, argType, returnType, name);\n }\n }\n return imports;\n },\n importFunctions(exports) {\n for (const [ name, { argType, returnType } ] of Object.entries(this.imports)) {\n const fn = exports[name];\n if (fn) {\n defineProperty(this, name, { value: this.importFunction(fn, argType, returnType) });\n }\n }\n },\n async instantiateWebAssembly(source, options) {\n const {\n memoryInitial,\n memoryMax,\n tableInitial,\n multithreaded,\n } = this.options = options;\n const res = await source;\n const suffix = (res[Symbol.toStringTag] === 'Response') ? 'Streaming' : '';\n const w = WebAssembly;\n const f = w['compile' + suffix];\n const executable = this.executable = await f(res);\n const functions = this.exportFunctions();\n const env = {}, wasi = {}, wasiPreview = {};\n const exports = this.exportedModules = { env, wasi, wasi_snapshot_preview1: wasiPreview };\n for (const { module, name, kind } of w.Module.imports(executable)) {\n if (kind === 'function') {\n if (module === 'env') {\n env[name] = functions[name] ?? empty;\n } else if (module === 'wasi_snapshot_preview1') {\n wasiPreview[name] = this.getWASIHandler(name);\n } else if (module === 'wasi') {\n wasi[name] = this.getThreadHandler?.(name) ?? empty;\n }\n }\n }\n this.memory = env.memory = new w.Memory({\n initial: memoryInitial,\n maximum: memoryMax,\n shared: multithreaded,\n });\n this.table = env.__indirect_function_table = new w.Table({\n initial: tableInitial,\n element: 'anyfunc',\n shared: multithreaded,\n });\n this.initialTableLength = tableInitial;\n return new w.Instance(executable, exports);\n },\n loadModule(source, options) {\n return this.initPromise = (async () => {\n const instance = await this.instantiateWebAssembly(source, options);\n const { exports } = instance;\n this.importFunctions(exports);\n if (this.customWASI) {\n // use a proxy to attach the memory object to the list of exports\n const exportsPlusMemory = { ...exports, memory: this.memory };\n const instanceProxy = new Proxy(instance, {\n get(inst, name) {\n return (name === 'exports') ? exportsPlusMemory : inst[name];\n }\n });\n this.customWASI.initialize?.(instanceProxy);\n }\n this.initialize();\n })();\n },\n displayPanic(address, len) {\n const array = new Uint8Array(this.memory.buffer, address, len);\n const msg = decodeText(array);\n console.error(`Zig panic: ${msg}`);\n },\n } ),\n});\n\nexport { moduleLoading as default };\n","import { VisitorFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { MEMORY, ZIG, CACHE, VISIT, UPDATE, SLOTS } from '../symbols.js';\n\nvar objectLinkage = mixin({\n linkVariables(writeBack) {\n {\n // linkage occurs when WASM compilation is complete and functions have been imported\n if (!this.memory) {\n this.initPromise = this.initPromise.then(() => this.linkVariables(writeBack));\n return;\n }\n }\n const copy = this.getCopyFunction();\n for (const { object, handle } of this.variables) {\n const jsDV = object[MEMORY];\n // objects in WebAssembly have fixed addresses so the handle is the address\n // for native code module, locations of objects in memory can change depending on\n // where the shared library is loaded\n const address = handle ;\n const zigDV = object[MEMORY] = this.obtainZigView(address, jsDV.byteLength);\n if (writeBack) {\n copy(zigDV, jsDV);\n }\n object.constructor[CACHE]?.save?.(zigDV, object);\n const linkChildren = (object) => {\n const slots = object[SLOTS];\n if (slots) {\n const parentOffset = zigDV.byteOffset;\n for (const child of Object.values(slots)) {\n if (child) {\n const childDV = child[MEMORY];\n if (childDV.buffer === jsDV.buffer) {\n const offset = parentOffset + childDV.byteOffset - jsDV.byteOffset;\n child[MEMORY] = this.obtainView(zigDV.buffer, offset, childDV.byteLength);\n child.constructor[CACHE]?.save?.(zigDV, child);\n linkChildren(child);\n }\n }\n }\n }\n };\n linkChildren(object);\n // update pointer targets\n object[VISIT]?.(function() { this[UPDATE](); }, VisitorFlag.IgnoreInactive);\n }\n },\n unlinkVariables() {\n const copy = this.getCopyFunction();\n for (const { object } of this.variables) {\n const zigDV = this.restoreView(object[MEMORY]) ;\n const zig = zigDV[ZIG];\n if (zig) {\n const jsDV = object[MEMORY] = this.allocateMemory(zig.len);\n copy(jsDV, zigDV);\n }\n }\n },\n ...({\n imports: {\n recreateAddress: { argType: 'i', returnType: 'i' },\n },\n } ),\n });\n\nexport { objectLinkage as default };\n","import { VisitorFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { MEMORY, VISIT, ADDRESS, LENGTH, POINTER, SLOTS, UPDATE, ZIG } from '../symbols.js';\nimport { findSortedIndex } from '../utils.js';\n\nvar pointerSynchronization = mixin({\n updatePointerAddresses(context, object) {\n // first, collect all the pointers\n const pointerMap = new Map();\n const bufferMap = new Map();\n const potentialClusters = [];\n const callback = function(flags) {\n // bypass proxy\n const pointer = this[POINTER];\n if (pointerMap.get(pointer) === undefined) {\n const target = pointer[SLOTS][0];\n if (target) {\n const writable = !pointer.constructor.const;\n const entry = { target, writable };\n // only targets in JS memory need updating\n const dv = target[MEMORY];\n if (!dv[ZIG]) {\n pointerMap.set(pointer, target);\n // see if the buffer is shared with other objects\n const other = bufferMap.get(dv.buffer);\n if (other) {\n const array = Array.isArray(other) ? other : [ other ];\n const index = findSortedIndex(array, dv.byteOffset, e => e.target[MEMORY].byteOffset);\n array.splice(index, 0, entry);\n if (!Array.isArray(other)) {\n bufferMap.set(dv.buffer, array);\n potentialClusters.push(array);\n }\n } else {\n bufferMap.set(dv.buffer, entry);\n }\n // scan pointers in target\n target[VISIT]?.(callback, 0);\n } else {\n // in Zig memory--no need to update\n pointerMap.set(pointer, null);\n }\n }\n }\n };\n const flags = VisitorFlag.IgnoreRetval | VisitorFlag.IgnoreInactive;\n object[VISIT](callback, flags);\n // find targets that overlap each other\n const clusters = this.findTargetClusters(potentialClusters);\n const clusterMap = new Map();\n for (const cluster of clusters) {\n for (const target of cluster.targets) {\n clusterMap.set(target, cluster);\n }\n }\n // process the pointers\n for (const [ pointer, target ] of pointerMap) {\n if (target) {\n const cluster = clusterMap.get(target);\n const writable = cluster?.writable ?? !pointer.constructor.const;\n pointer[ADDRESS] = this.getTargetAddress(context, target, cluster, writable);\n if (LENGTH in pointer) {\n pointer[LENGTH] = target.length;\n }\n }\n }\n },\n updatePointerTargets(context, object, inbound = false) {\n const pointerMap = new Map();\n const callback = function(flags) {\n // bypass proxy\n const pointer = this[POINTER];\n if (!pointerMap.get(pointer)) {\n pointerMap.set(pointer, true);\n const currentTarget = pointer[SLOTS][0];\n const newTarget = (!currentTarget || !(flags & VisitorFlag.IsImmutable))\n ? pointer[UPDATE](context, true, !(flags & VisitorFlag.IsInactive))\n : currentTarget;\n const targetFlags = (pointer.constructor.const) ? VisitorFlag.IsImmutable : 0;\n if (!(targetFlags & VisitorFlag.IsImmutable)) {\n // update targets of pointers in original target if it's in JS memory\n // pointers in Zig memory are updated on access so we don't need to do it here\n // (and they should never point to reloctable memory)\n if (currentTarget && !currentTarget[MEMORY][ZIG]) {\n currentTarget[VISIT]?.(callback, targetFlags);\n }\n }\n if (newTarget !== currentTarget) {\n // acquire targets of pointers in new target if it;s in JS memory\n if (newTarget && !newTarget[MEMORY][ZIG]) {\n newTarget?.[VISIT]?.(callback, targetFlags);\n }\n }\n }\n };\n const flags = (inbound) ? VisitorFlag.IgnoreRetval : 0;\n object[VISIT](callback, flags);\n },\n findTargetClusters(potentialClusters) {\n const clusters = [];\n for (const entries of potentialClusters) {\n let prevTarget = null, prevStart = 0, prevEnd = 0;\n let currentCluster = null;\n for (const { target, writable } of entries) {\n const dv = target[MEMORY];\n const { byteOffset: start, byteLength } = dv;\n const end = start + byteLength;\n let forward = true;\n if (prevTarget) {\n if (prevEnd > start) {\n // the previous target overlaps this one\n if (!currentCluster) {\n currentCluster = {\n targets: [ prevTarget ],\n start: prevStart,\n end: prevEnd,\n address: undefined,\n misaligned: undefined,\n writable,\n };\n clusters.push(currentCluster);\n } else {\n currentCluster.writable ||= writable;\n }\n currentCluster.targets.push(target);\n if (end > prevEnd) {\n // set cluster end offset to include this one\n currentCluster.end = end;\n } else {\n // the previous target contains this one\n forward = false;\n }\n } else {\n currentCluster = null;\n }\n }\n if (forward) {\n prevTarget = target;\n prevStart = start;\n prevEnd = end;\n }\n }\n }\n return clusters;\n },\n});\n\nexport { pointerSynchronization as default };\n","import { mixin } from '../environment.js';\nimport { empty } from '../utils.js';\n\nvar thunkAllocation = mixin({\n ...({\n exports: {\n allocateJsThunk: { argType: 'ii', returnType: 'i' },\n freeJsThunk: { argType: 'ii', returnType: 'i' },\n },\n init() {\n this.thunkSources = [];\n this.thunkMap = new Map();\n },\n addJsThunkSource() {\n const {\n memoryInitial,\n memoryMax,\n tableInitial,\n multithreaded,\n } = this.options;\n const w = WebAssembly;\n const env = {}, wasi = {}, wasiPreview = {};\n const imports = { env, wasi, wasi_snapshot_preview1: wasiPreview };\n for (const { module, name, kind } of w.Module.imports(this.executable)) {\n if (kind === 'function') {\n if (module === 'env') {\n env[name] = empty;\n } else if (module === 'wasi_snapshot_preview1') {\n wasiPreview[name] = empty;\n }\n }\n }\n env.memory = new w.Memory({\n initial: memoryInitial,\n maximum: memoryMax,\n shared: multithreaded,\n });\n const table = env.__indirect_function_table = new w.Table({\n initial: tableInitial,\n element: 'anyfunc',\n });\n const { exports } = new w.Instance(this.executable, imports);\n const { createJsThunk, destroyJsThunk } = exports;\n const source = {\n thunkCount: 0,\n createJsThunk,\n destroyJsThunk,\n table,\n };\n this.thunkSources.unshift(source);\n return source;\n },\n allocateJsThunk(controllerAddress, funcId) {\n let source, sourceAddress = 0;\n for (source of this.thunkSources) {\n sourceAddress = source.createJsThunk(controllerAddress, funcId);\n break;\n }\n if (!sourceAddress) {\n source = this.addJsThunkSource();\n sourceAddress = source.createJsThunk(controllerAddress, funcId);\n }\n // sourceAddress is an index into the function table of the source instance\n // we need to get the function object and place it into the main instance's\n // function table\n const thunkObject = source.table.get(sourceAddress);\n let thunkAddress = 0;\n for (let i = this.table.length - 1; i >= this.initialTableLength; i--) {\n if (!this.table.get(i)) {\n thunkAddress = i;\n break;\n }\n }\n if (!thunkAddress) {\n thunkAddress = this.table.length;\n this.table.grow(8);\n }\n this.table.set(thunkAddress, thunkObject);\n source.thunkCount++;\n // remember where the object is from\n this.thunkMap.set(thunkObject, { source, sourceAddress });\n return thunkAddress;\n },\n freeJsThunk(controllerAddress, thunkAddress) {\n let fnId = 0;\n const thunkObject = this.table.get(thunkAddress);\n this.table.set(thunkAddress, null);\n const entry = this.thunkMap.get(thunkObject);\n if (entry) {\n const { source, sourceAddress } = entry;\n fnId = source.destroyJsThunk(controllerAddress, sourceAddress);\n if (--source.thunkCount === 0) {\n const index = this.thunkSources.indexOf(source);\n if (index !== -1) {\n this.thunkSources.splice(index, 1);\n }\n }\n this.thunkMap.delete(thunkObject);\n }\n return fnId;\n },\n } ),\n});\n\nexport { thunkAllocation as default };\n","import { StructureType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { BufferSizeMismatch, ArrayLengthMismatch, BufferExpected } from '../errors.js';\nimport { MEMORY, CONST_TARGET, CACHE, PROXY, ZIG, SENTINEL, SHAPE, COPY, TYPED_ARRAY } from '../symbols.js';\nimport { usizeInvalid, isCompatibleInstanceOf, findElements } from '../utils.js';\n\nvar viewManagement = mixin({\n init() {\n this.viewMap = new WeakMap();\n },\n extractView(structure, arg, onError = throwError) {\n const { type, byteSize, constructor } = structure;\n let dv;\n // not using instanceof just in case we're getting objects created in other contexts\n const tag = arg?.[Symbol.toStringTag];\n if (tag) {\n if (tag === 'DataView') {\n // capture relationship between the view and its buffer\n dv = this.registerView(arg);\n } else if (tag === 'ArrayBuffer') {\n dv = this.obtainView(arg, 0, arg.byteLength);\n } else if ((tag && tag === constructor[TYPED_ARRAY]?.name) || (tag === 'Uint8ClampedArray' && constructor[TYPED_ARRAY] === Uint8Array)) {\n dv = this.obtainView(arg.buffer, arg.byteOffset, arg.byteLength);\n } else ;\n }\n if (!dv) {\n const memory = arg?.[MEMORY];\n if (memory) {\n // arg a Zig data object\n const { constructor, instance: { members: [ member ] } } = structure;\n if (isCompatibleInstanceOf(arg, constructor)) {\n // same type, no problem\n return memory;\n } else {\n if (isArrayLike(type)) {\n // make sure the arg has the same type of elements\n const { byteSize: elementSize, structure: { constructor: Child } } = member;\n const number = findElements(arg, Child);\n if (number !== undefined) {\n if (type === StructureType.Slice || number * elementSize === byteSize) {\n return memory;\n } else {\n throw new ArrayLengthMismatch(structure, null, arg);\n }\n }\n }\n }\n }\n }\n if (dv) {\n if (byteSize !== undefined) {\n checkDataViewSize(dv, structure);\n }\n } else {\n onError?.(structure, arg);\n }\n return dv;\n },\n assignView(target, dv, structure, copy, allocator) {\n const { byteSize, type } = structure;\n const elementSize = byteSize ?? 1;\n if (!target[MEMORY]) {\n if (byteSize !== undefined) {\n checkDataViewSize(dv, structure);\n }\n const len = dv.byteLength / elementSize;\n const source = { [MEMORY]: dv };\n target.constructor[SENTINEL]?.validateData?.(source, len);\n if (allocator) {\n // need to copy when target object is in Zig memory\n copy = true;\n }\n target[SHAPE](copy ? null : dv, len, allocator);\n if (copy) {\n target[COPY](source);\n }\n } else {\n const byteLength = (type === StructureType.Slice) ? elementSize * target.length : elementSize;\n if (dv.byteLength !== byteLength) {\n throw new BufferSizeMismatch(structure, dv, target);\n }\n const source = { [MEMORY]: dv };\n target.constructor[SENTINEL]?.validateData?.(source, target.length);\n target[COPY](source);\n }\n },\n findViewAt(buffer, offset, len) {\n let entry = this.viewMap.get(buffer);\n let existing;\n if (entry) {\n if (entry instanceof DataView) {\n // only one view created thus far--see if that's the matching one\n if (entry.byteOffset === offset && entry.byteLength === len) {\n existing = entry;\n entry = null;\n } else {\n // no, need to replace the entry with a hash keyed by `offset:len`\n const prev = entry;\n const prevKey = `${prev.byteOffset}:${prev.byteLength}`;\n entry = new Map([ [ prevKey, prev ] ]);\n this.viewMap.set(buffer, entry);\n }\n } else {\n existing = entry.get(`${offset}:${len}`);\n }\n }\n {\n if (existing?.[ZIG]?.address === usizeInvalid) {\n // view was of previously freed memory\n existing = null;\n }\n }\n return { existing, entry };\n },\n obtainView(buffer, offset, len) {\n const { existing, entry } = this.findViewAt(buffer, offset, len);\n let dv;\n if (existing) {\n return existing;\n }\n dv = new DataView(buffer, offset, len);\n if (entry) {\n entry.set(`${offset}:${len}`, dv);\n } else {\n // just one view of this buffer for now\n this.viewMap.set(buffer, dv);\n }\n {\n if (buffer === this.memory?.buffer || buffer === this.usizeMaxBuffer) {\n dv[ZIG] = { address: offset, len };\n }\n return dv;\n }\n },\n registerView(dv) {\n if (!dv[ZIG]) {\n const { buffer, byteOffset, byteLength } = dv;\n const { existing, entry } = this.findViewAt(buffer, byteOffset, byteLength);\n if (existing) {\n // return existing view instead of this one\n return existing;\n } else if (entry) {\n entry.set(`${byteOffset}:${byteLength}`, dv);\n } else {\n this.viewMap.set(buffer, dv);\n }\n }\n return dv;\n },\n allocateMemory(len, align = 0, allocator = null) {\n return allocator?.alloc?.(len, align) ?? this.allocateJSMemory(len, align);\n },\n ...({\n allocateJSMemory(len, align) {\n // alignment doesn't matter since memory always needs to be shadowed\n return this.obtainView(new ArrayBuffer(len), 0, len);\n },\n restoreView(dv) {\n const zig = dv?.[ZIG];\n if (zig?.len > 0 && dv.buffer.byteLength === 0) {\n dv = this.obtainZigView(zig.address, zig.len);\n if (zig.align) {\n dv[ZIG].align = zig.align;\n }\n }\n return dv;\n },\n defineRestorer() {\n const thisEnv = this;\n return {\n value() {\n const dv = this[MEMORY];\n const newDV = thisEnv.restoreView(dv);\n if (dv !== newDV) {\n const target = this[CONST_TARGET] ?? this;\n target[MEMORY] = newDV;\n // pointers are referenced by their proxies in the cache\n target.constructor[CACHE]?.save?.(newDV, target[PROXY] ?? target);\n return true;\n } else {\n return false;\n }\n },\n }\n },\n } ),\n});\n\nfunction checkDataViewSize(dv, structure) {\n const { byteSize, type } = structure;\n const isSizeMatching = type === StructureType.Slice\n ? dv.byteLength % byteSize === 0\n : dv.byteLength === byteSize;\n if (!isSizeMatching) {\n throw new BufferSizeMismatch(structure, dv);\n }\n}\n\nfunction isArrayLike(type) {\n return type === StructureType.Array || type === StructureType.Vector || type === StructureType.Slice;\n}\n\nfunction throwError(structure) {\n throw new BufferExpected(structure);\n}\n\nexport { checkDataViewSize, viewManagement as default };\n","import { mixin } from '../environment.js';\nimport { throwReadOnly } from '../errors.js';\nimport { POINTER, ARRAY, CONST_TARGET } from '../symbols.js';\n\nvar writeProtection = mixin({\n makeReadOnly(object) {\n protect(object);\n }\n});\n\nconst gp = Object.getOwnPropertyDescriptors;\nconst df = Object.defineProperty;\n\nfunction protect(object) {\n const pointer = object[POINTER];\n if (pointer) {\n protectProperties(pointer, [ 'length' ]);\n } else {\n const array = object[ARRAY];\n if (array) {\n protectProperties(array);\n protectElements(array);\n } else {\n protectProperties(object);\n }\n }\n}\n\nfunction protectProperties(object, exclude = []) {\n const descriptors = gp(object.constructor.prototype);\n for (const [ name, descriptor ] of Object.entries(descriptors)) {\n if (descriptor.set && !exclude.includes(name)) {\n descriptor.set = throwReadOnly;\n df(object, name, descriptor);\n }\n }\n df(object, CONST_TARGET, { value: object });\n}\n\nfunction protectElements(array) {\n df(array, 'set', { value: throwReadOnly });\n const get = array.get;\n const getReadOnly = function(index) {\n const element = get.call(this, index);\n if (element?.[CONST_TARGET] === null) {\n protect(element);\n }\n return element;\n };\n df(array, 'get', { value: getReadOnly });\n}\n\nexport { writeProtection as default };\n","import { defineEnvironment } from './environment.js';\n\nfunction createEnvironment() {\n // define Environment class, incorporating methods and properties in imported mixins\n const Env = defineEnvironment();\n return new Env();\n}\n\nexport { createEnvironment };\n","import { mixin } from '../environment.js';\nimport { ARRAY } from '../symbols.js';\nimport { defineValue, getErrorHandler } from '../utils.js';\n\nvar forArray = mixin({\n defineArrayEntries() {\n return defineValue(getArrayEntries);\n },\n defineArrayIterator() {\n return defineValue(getArrayIterator);\n }\n});\n\nfunction getArrayIterator() {\n const self = this[ARRAY] ?? this;\n const length = this.length;\n let index = 0;\n return {\n next() {\n let value, done;\n if (index < length) {\n const current = index++;\n value = self.get(current);\n done = false;\n } else {\n done = true;\n }\n return { value, done };\n },\n };\n}\n\nfunction getArrayEntriesIterator(options) {\n const handleError = getErrorHandler(options);\n const self = this[ARRAY] ?? this;\n const length = this.length;\n let index = 0;\n return {\n next() {\n let value, done;\n if (index < length) {\n const current = index++;\n value = [ current, handleError(() => self.get(current)) ];\n done = false;\n } else {\n done = true;\n }\n return { value, done };\n },\n };\n}\n\nfunction getArrayEntries(options) {\n return {\n [Symbol.iterator]: getArrayEntriesIterator.bind(this, options),\n length: this.length,\n };\n}\n\nexport { forArray as default };\n","import { mixin } from '../environment.js';\nimport { PROPS } from '../symbols.js';\nimport { defineValue, getErrorHandler } from '../utils.js';\n\nvar forStruct = mixin({\n defineStructEntries() {\n return defineValue(getStructEntries);\n },\n defineStructIterator() {\n return defineValue(getStructIterator);\n }\n});\n\nfunction getStructEntries(options) {\n return {\n [Symbol.iterator]: getStructEntriesIterator.bind(this, options),\n length: this[PROPS].length,\n };\n}\n\nfunction getStructIterator(options) {\n const entries = getStructEntries.call(this, options);\n return entries[Symbol.iterator]();\n}\n\nfunction getStructEntriesIterator(options) {\n const handleError = getErrorHandler(options);\n const self = this;\n const props = this[PROPS];\n let index = 0;\n return {\n next() {\n let value, done;\n if (index < props.length) {\n const current = props[index++];\n value = [ current, handleError(() => self[current]) ];\n done = false;\n } else {\n done = true;\n }\n return { value, done };\n },\n };\n}\n\nexport { forStruct as default };\n","import { memberNames, structureNames } from '../constants.js';\nimport { mixin } from '../environment.js';\n\nvar all = mixin({\n defineMember(member, applyTransform = true) {\n if (!member) {\n return {};\n }\n const { type, structure } = member;\n const handleName = `defineMember${memberNames[type]}`;\n const f = this[handleName];\n const descriptor = f.call(this, member);\n if (applyTransform) {\n if (structure) {\n // we use int/uint getters to access underlying values of enums and error sets;\n // the transform functions put wrapper functions around the accessors that\n // perform item lookup\n const { type } = structure;\n const handleName = `transformDescriptor${structureNames[type]}`;\n const f = this[handleName];\n if (f) {\n return f.call(this, descriptor, member);\n }\n }\n }\n return descriptor;\n },\n});\n\nfunction bindSlot(slot, { get, set }) {\n if (slot !== undefined) {\n return {\n get: function() {\n return get.call(this, slot);\n },\n set: (set)\n ? function(arg, allocator) {\n return set.call(this, slot, arg, allocator);\n }\n : undefined,\n };\n } else {\n // array accessors\n return { get, set };\n }\n}\n\nexport { bindSlot, all as default };\n","import { mixin } from '../environment.js';\nimport { TypeMismatch } from '../errors.js';\nimport { markAsSpecial, decodeBase64, encodeBase64 } from '../utils.js';\n\nvar base64 = mixin({\n defineBase64(structure) {\n const thisEnv = this;\n return markAsSpecial({\n get() {\n return encodeBase64(this.dataView);\n },\n set(str, allocator) {\n if (typeof(str) !== 'string') {\n throw new TypeMismatch('string', str);\n }\n const dv = decodeBase64(str);\n thisEnv.assignView(this, dv, structure, false, allocator);\n }\n });\n },\n});\n\nexport { base64 as default };\n","import { mixin } from '../environment.js';\nimport { TypeMismatch } from '../errors.js';\nimport { RESTORE, MEMORY } from '../symbols.js';\nimport { markAsSpecial } from '../utils.js';\n\nvar dataView = mixin({\n defineDataView(structure) {\n const thisEnv = this;\n return markAsSpecial({\n get() {\n {\n this[RESTORE]?.();\n }\n const dv = this[MEMORY];\n return dv;\n },\n set(dv, allocator) {\n if (dv?.[Symbol.toStringTag] !== 'DataView') {\n throw new TypeMismatch('DataView', dv);\n }\n thisEnv.assignView(this, dv, structure, true, allocator);\n },\n });\n },\n});\n\nexport { dataView as default };\n","import { mixin } from '../environment.js';\n\nvar float = mixin({\n defineMemberFloat(member) {\n return this.defineMemberUsing(member, this.getAccessor);\n },\n});\n\nexport { float as default };\n","import { MemberFlag, StructureFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { throwReadOnly } from '../errors.js';\nimport { SLOTS, VIVIFICATE, INITIALIZE } from '../symbols.js';\nimport { bindSlot } from './all.js';\n\nvar object = mixin({\n defineMemberObject(member) {\n return bindSlot(member.slot, {\n get: (member.structure.flags & StructureFlag.HasValue) ? getValue : getObject,\n set: (member.flags & MemberFlag.IsReadOnly) ? throwReadOnly : setValue,\n });\n }\n});\n\nfunction getValue(slot) {\n const object = this[SLOTS][slot] ?? this[VIVIFICATE](slot);\n return object.$;\n}\n\nfunction getObject(slot) {\n const object = this[SLOTS][slot] ?? this[VIVIFICATE](slot);\n return object;\n}\n\nfunction setValue(slot, value, allocator) {\n const object = this[SLOTS][slot] ?? this[VIVIFICATE](slot);\n object[INITIALIZE](value, allocator);\n}\n\nexport { object as default };\n","import { mixin } from '../environment.js';\nimport { replaceRangeError } from '../errors.js';\nimport { MEMORY, RESTORE } from '../symbols.js';\n\nvar primitive = mixin({\n ...({\n defineMemberUsing(member, getAccessor) {\n const { littleEndian } = this;\n const { bitOffset, byteSize } = member;\n const getter = getAccessor.call(this, 'get', member);\n const setter = getAccessor.call(this, 'set', member);\n if (bitOffset !== undefined) {\n const offset = bitOffset >> 3;\n return {\n get: function getValue() {\n try {\n return getter.call(this[MEMORY], offset, littleEndian);\n } catch (err) {\n if (err instanceof TypeError && this[RESTORE]?.()) {\n return getter.call(this[MEMORY], offset, littleEndian);\n } else {\n throw err;\n }\n }\n },\n set: function setValue(value) {\n try {\n return setter.call(this[MEMORY], offset, value, littleEndian);\n } catch (err) {\n if (err instanceof TypeError && this[RESTORE]?.()) {\n return setter.call(this[MEMORY], offset, value, littleEndian);\n } else {\n throw err;\n }\n }\n }\n }\n } else {\n return {\n get: function getElement(index) {\n try {\n return getter.call(this[MEMORY], index * byteSize, littleEndian);\n } catch (err) {\n if (err instanceof TypeError && this[RESTORE]?.()) {\n return getter.call(this[MEMORY], index * byteSize, littleEndian);\n } else {\n throw replaceRangeError(member, index, err);\n }\n }\n },\n set: function setElement(index, value) {\n try {\n return setter.call(this[MEMORY], index * byteSize, value, littleEndian);\n } catch (err) {\n if (err instanceof TypeError && this[RESTORE]?.()) {\n return setter.call(this[MEMORY], index * byteSize, value, littleEndian);\n } else {\n throw replaceRangeError(member, index, err);\n }\n }\n },\n }\n }\n },\n } ),\n});\n\nexport { primitive as default };\n","import { mixin } from '../environment.js';\nimport { normalizeObject } from './value-of.js';\n\nvar toJson = mixin({\n defineToJSON() {\n return {\n value() {\n return normalizeObject(this, true);\n },\n };\n },\n});\n\nexport { toJson as default };\n","import { mixin } from '../environment.js';\nimport { TypeMismatch } from '../errors.js';\nimport { markAsSpecial } from '../utils.js';\n\nvar typedArray = mixin({\n defineTypedArray(structure) {\n const thisEnv = this;\n const TypedArray = this.getTypedArray(structure); // (from mixin \"structures/all\")\n return markAsSpecial({\n get() {\n const dv = this.dataView;\n const length = dv.byteLength / TypedArray.BYTES_PER_ELEMENT;\n return new TypedArray(dv.buffer, dv.byteOffset, length);\n },\n set(ta, allocator) {\n if (ta?.[Symbol.toStringTag] !== TypedArray.name) {\n throw new TypeMismatch(TypedArray.name, ta);\n }\n const dv = new DataView(ta.buffer, ta.byteOffset, ta.byteLength);\n thisEnv.assignView(this, dv, structure, true, allocator);\n },\n });\n },\n});\n\nexport { typedArray as default };\n","import { mixin } from '../environment.js';\n\nvar uint = mixin({\n defineMemberUint(member) {\n let getAccessor = this.getAccessor;\n if (this.runtimeSafety) {\n getAccessor = this.addRuntimeCheck(getAccessor);\n }\n getAccessor = this.addIntConversion(getAccessor);\n return this.defineMemberUsing(member, getAccessor);\n },\n});\n\nexport { uint as default };\n","import { StructureType, StructFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { TYPE, ENTRIES, FLAGS } from '../symbols.js';\nimport { getErrorHandler } from '../utils.js';\n\nvar valueOf = mixin({\n defineValueOf() {\n return {\n value() {\n return normalizeObject(this, false);\n },\n };\n },\n});\n\nconst INT_MAX = BigInt(Number.MAX_SAFE_INTEGER);\nconst INT_MIN = BigInt(Number.MIN_SAFE_INTEGER);\n\nfunction normalizeObject(object, forJSON) {\n const options = { error: (forJSON) ? 'return' : 'throw' };\n const handleError = getErrorHandler(options);\n const resultMap = new Map();\n const process = function(value) {\n // handle type (i.e. constructor) like a struct\n const type = (typeof(value) === 'function') ? StructureType.Struct : value?.constructor?.[TYPE];\n if (type === undefined) {\n if (forJSON) {\n if (typeof(value) === 'bigint' && INT_MIN <= value && value <= INT_MAX) {\n return Number(value);\n } else if (value instanceof Error) {\n return { error: value.message };\n }\n }\n return value;\n }\n let result = resultMap.get(value);\n if (result === undefined) {\n let entries;\n switch (type) {\n case StructureType.Struct:\n entries = value[ENTRIES](options);\n result = (value.constructor[FLAGS] & StructFlag.IsTuple) ? [] : {};\n break;\n case StructureType.Union:\n entries = value[ENTRIES](options);\n result = {};\n break;\n case StructureType.Array:\n case StructureType.Vector:\n case StructureType.Slice:\n entries = value[ENTRIES]();\n result = [];\n break;\n case StructureType.Pointer:\n try {\n result = value['*'];\n } catch (err) {\n result = Symbol.for('inaccessible');\n }\n break;\n case StructureType.Enum:\n result = handleError(() => String(value));\n break;\n case StructureType.Opaque:\n result = {};\n break;\n default:\n result = handleError(() => value.$);\n }\n result = process(result);\n resultMap.set(value, result);\n if (entries) {\n for (const [ key, child ] of entries) {\n result[key] = process(child);\n }\n }\n }\n return result;\n };\n return process(object);\n}\n\nexport { valueOf as default, normalizeObject };\n","import { mixin } from '../environment.js';\nimport { NotUndefined, OutOfBound } from '../errors.js';\n\nvar _void = mixin({\n defineMemberVoid(member, env) {\n const { bitOffset } = member;\n return {\n get() {\n return undefined;\n },\n set: (bitOffset !== undefined)\n ? function(value) {\n if (value !== undefined) {\n throw new NotUndefined(member);\n }\n }\n : function(index, value) {\n if (value !== undefined) {\n throw new NotUndefined(member);\n }\n if (index < 0 || index >= this.length) {\n throw new OutOfBound(member, index);\n }\n },\n };\n }\n});\n\nexport { _void as default };\n","import { StructureType, MemberType, MemberFlag, structureNames, StructureFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { NoProperty, MissingInitializers, NoInitializer } from '../errors.js';\nimport { KEYS, SETTERS, MEMORY, COPY, SLOTS, CACHE, RESTORE, PROPS, ENTRIES, TYPED_ARRAY, FLAGS, TYPE, SIZE, ALIGN, ENVIRONMENT, SIGNATURE, SHAPE, INITIALIZE, CAST, RESTRICT, FINALIZE, UPDATE, CONST_TARGET } from '../symbols.js';\nimport { ObjectCache, defineProperty, defineValue, defineProperties } from '../utils.js';\n\nvar all = mixin({\n defineStructure(structure) {\n const {\n type,\n byteSize,\n } = structure;\n const handlerName = `define${structureNames[type]}`;\n const f = this[handlerName];\n // default discriptors\n const keys = [];\n const setters = {};\n const descriptors = {\n dataView: this.defineDataView(structure),\n base64: this.defineBase64(structure),\n toJSON: this.defineToJSON(),\n valueOf: this.defineValueOf(),\n [CONST_TARGET]: { value: null },\n [SETTERS]: defineValue(setters),\n [KEYS]: defineValue(keys),\n // add memory copier (from mixin \"memory/copying\")\n [COPY]: this.defineCopier(byteSize),\n ...({\n // add method for recoverng from array detachment\n [RESTORE]: this.defineRestorer(),\n } ),\n };\n const constructor = structure.constructor = f.call(this, structure, descriptors);\n for (const [ name, descriptor ] of Object.entries(descriptors)) {\n const s = descriptor?.set;\n if (s && !setters[name] && name !== '$') {\n setters[name] = s;\n keys.push(name);\n }\n }\n defineProperties(constructor.prototype, descriptors);\n return constructor;\n },\n finalizeStructure(structure) {\n const {\n name,\n type,\n constructor,\n align,\n byteSize,\n flags,\n signature,\n static: { members, template },\n } = structure;\n const props = [];\n const staticDescriptors = {\n name: defineValue(name),\n toJSON: this.defineToJSON(),\n valueOf: this.defineValueOf(),\n [SIGNATURE]: defineValue(signature),\n [ENVIRONMENT]: defineValue(this),\n [ALIGN]: defineValue(align),\n [SIZE]: defineValue(byteSize),\n [TYPE]: defineValue(type),\n [FLAGS]: defineValue(flags),\n [PROPS]: defineValue(props),\n [TYPED_ARRAY]: defineValue(this.getTypedArray(structure)),\n [Symbol.iterator]: this.defineStructIterator(),\n [ENTRIES]: this.defineStructEntries(),\n [PROPS]: defineValue(props),\n };\n const descriptors = {\n [Symbol.toStringTag]: defineValue(name),\n };\n for (const member of members) {\n const { name, slot } = member;\n if (member.structure.type === StructureType.Function) {\n const fn = template[SLOTS][slot];\n staticDescriptors[name] = defineValue(fn);\n // provide a name if one isn't assigned yet\n if (!fn.name) {\n defineProperty(fn, 'name', defineValue(name));\n }\n // see if it's a getter or setter\n const [ accessorType, propName ] = /^(get|set)\\s+([\\s\\S]+)/.exec(name)?.slice(1) ?? [];\n const argRequired = (accessorType === 'get') ? 0 : 1;\n if (accessorType && fn.length === argRequired) {\n staticDescriptors[propName] ||= {};\n const descriptor = staticDescriptors[propName];\n descriptor[accessorType] = fn;\n }\n // see if it's a method\n if (member.flags & MemberFlag.IsMethod) {\n const method = function(...args) {\n try {\n return fn(this, ...args);\n } catch (err) {\n // adjust argument index/count\n err[UPDATE]?.(1);\n throw err;\n }\n };\n defineProperties(method, {\n name: defineValue(name),\n length: defineValue(fn.length - 1),\n });\n descriptors[name] = defineValue(method);\n if (accessorType && method.length === argRequired) {\n const descriptor = descriptors[propName] ||= {};\n descriptor[accessorType] = method;\n }\n }\n } else {\n staticDescriptors[name] = this.defineMember(member);\n props.push(name);\n }\n }\n // static variable/constants are stored in slots\n staticDescriptors[SLOTS] = (props.length > 0) && defineValue(template[SLOTS]);\n const handlerName = `finalize${structureNames[type]}`;\n const f = this[handlerName];\n if (f?.call(this, structure, staticDescriptors, descriptors) !== false) {\n defineProperties(constructor.prototype, descriptors);\n defineProperties(constructor, staticDescriptors);\n }\n },\n createConstructor(structure, handlers = {}) {\n const {\n type,\n byteSize,\n align,\n flags,\n instance: { members, template },\n } = structure;\n const { onCastError } = handlers;\n // comptime fields are stored in the instance template's slots\n let comptimeFieldSlots;\n if (template?.[SLOTS]) {\n const comptimeMembers = members.filter(m => m.flags & MemberFlag.IsReadOnly);\n if (comptimeMembers.length > 0) {\n comptimeFieldSlots = comptimeMembers.map(m => m.slot);\n }\n }\n const cache = new ObjectCache();\n const thisEnv = this;\n const constructor = function(arg, options = {}) {\n const {\n allocator,\n } = options;\n const creating = this instanceof constructor;\n let self, dv;\n if (creating) {\n if (arguments.length === 0) {\n throw new NoInitializer(structure);\n }\n self = this;\n if (flags & StructureFlag.HasSlot) {\n self[SLOTS] = {};\n }\n if (SHAPE in self) {\n // provided by defineStructureSlice(); the slice is different from other structures\n // as it does not have a zig size; memory is allocated by the slice initializer\n // based on the argument given\n self[INITIALIZE](arg, allocator);\n dv = self[MEMORY];\n } else {\n // don't use allocator to create storage for pointer\n const a = (type !== StructureType.Pointer) ? allocator : null;\n self[MEMORY] = dv = thisEnv.allocateMemory(byteSize, align, a);\n }\n } else {\n if (CAST in constructor) {\n // casting from number, string, etc.\n self = constructor[CAST].call(this, arg, options);\n if (self !== false) {\n return self;\n }\n }\n // look for buffer\n dv = thisEnv.extractView(structure, arg, onCastError);\n if (self = cache.find(dv)) {\n return self;\n }\n self = Object.create(constructor.prototype);\n if (SHAPE in self) {\n thisEnv.assignView(self, dv, structure, false, false);\n } else {\n self[MEMORY] = dv;\n }\n if (flags & StructureFlag.HasSlot) {\n self[SLOTS] = {};\n }\n }\n if (comptimeFieldSlots) {\n for (const slot of comptimeFieldSlots) {\n self[SLOTS][slot] = template[SLOTS][slot];\n }\n }\n self[RESTRICT]?.();\n if (creating) {\n // initialize object unless that's done already\n if (!(SHAPE in self)) {\n self[INITIALIZE](arg, allocator);\n }\n }\n if (FINALIZE in self) {\n self = self[FINALIZE]();\n }\n return cache.save(dv, self);\n };\n defineProperty(constructor, CACHE, defineValue(cache));\n {\n if (template?.[MEMORY]) {\n defineProperty(template, RESTORE, this.defineRestorer());\n }\n }\n return constructor;\n },\n createApplier(structure) {\n const { instance: { template } } = structure;\n return function(arg, allocator) {\n const argKeys = Object.keys(arg);\n const keys = this[KEYS];\n const setters = this[SETTERS];\n // don't accept unknown props\n for (const key of argKeys) {\n if (!(key in setters)) {\n throw new NoProperty(structure, key);\n }\n }\n // checking each name so that we would see inenumerable initializers as well\n let normalCount = 0;\n let normalFound = 0;\n let normalMissing = 0;\n let specialFound = 0;\n for (const key of keys) {\n const set = setters[key];\n if (set.special) {\n if (key in arg) {\n specialFound++;\n }\n } else {\n normalCount++;\n if (key in arg) {\n normalFound++;\n } else if (set.required) {\n normalMissing++;\n }\n }\n }\n if (normalMissing !== 0 && specialFound === 0) {\n const missing = keys.filter(k => setters[k].required && !(k in arg));\n throw new MissingInitializers(structure, missing);\n }\n if (specialFound + normalFound > argKeys.length) {\n // some props aren't enumerable\n for (const key of keys) {\n if (key in arg) {\n if (!argKeys.includes(key)) {\n argKeys.push(key);\n }\n }\n }\n }\n // apply default values unless all properties are initialized\n if (normalFound < normalCount && specialFound === 0) {\n if (template) {\n if (template[MEMORY]) {\n this[COPY](template);\n }\n }\n }\n for (const key of argKeys) {\n const set = setters[key];\n set.call(this, arg[key], allocator);\n }\n return argKeys.length;\n };\n },\n getTypedArray(structure) {\n const { type, instance } = structure;\n if (type !== undefined && instance) {\n const [ member ] = instance.members;\n switch (type) {\n case StructureType.Enum:\n case StructureType.ErrorSet:\n case StructureType.Primitive: {\n const { byteSize, type } = member;\n const intType = (type === MemberType.Float)\n ? 'Float'\n : (type === MemberType.Int) ? 'Int' : 'Uint';\n const prefix = (byteSize > 4 && type !== MemberType.Float) ? 'Big' : '';\n const arrayName = prefix + intType + (byteSize * 8) + 'Array';\n return globalThis[arrayName];\n } case StructureType.Array:\n case StructureType.Slice:\n case StructureType.Vector:\n return this.getTypedArray(member.structure);\n }\n }\n },\n});\n\nexport { all as default };\n","import { ArgStructFlag, StructureFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { ArgumentCountMismatch } from '../errors.js';\nimport { THROWING, VIVIFICATE, VISIT, RETURN, ALLOCATOR, COPY, MEMORY, SLOTS, FINALIZE } from '../symbols.js';\nimport { defineValue } from '../utils.js';\n\nvar argStruct = mixin({\n defineArgStruct(structure, descriptors) {\n const {\n flags,\n byteSize,\n align,\n length,\n instance: { members },\n } = structure;\n const thisEnv = this;\n const argMembers = members.slice(1);\n const constructor = function(args, argAlloc) {\n const creating = this instanceof constructor;\n let self, dv;\n if (creating) {\n self = this;\n dv = thisEnv.allocateMemory(byteSize, align);\n } else {\n self = Object.create(constructor.prototype);\n dv = args;\n }\n self[MEMORY] = dv;\n if (flags & StructureFlag.HasSlot) {\n self[SLOTS] = {};\n }\n if (creating) {\n let options;\n if (flags & ArgStructFlag.HasOptions) {\n if (args.length === length + 1) {\n options = args.pop();\n }\n }\n // length holds the minimum number of arguments\n if (args.length !== length) {\n throw new ArgumentCountMismatch(length, args.length);\n }\n if (flags & ArgStructFlag.IsAsync) {\n self[FINALIZE] = null;\n }\n thisEnv.copyArguments(self, args, argMembers, options, argAlloc);\n } else {\n return self;\n }\n };\n for (const member of members) {\n descriptors[member.name] = this.defineMember(member);\n }\n const retvalSetter = descriptors.retval.set;\n descriptors.length = defineValue(argMembers.length);\n descriptors[VIVIFICATE] = (flags & StructureFlag.HasObject) && this.defineVivificatorStruct(structure);\n descriptors[VISIT] = (flags & StructureFlag.HasPointer) && this.defineVisitorArgStruct(members);\n descriptors[RETURN] = defineValue(function(value) {\n // pass allocator associated with argument to setter\n retvalSetter.call(this, value, this[ALLOCATOR]);\n });\n descriptors[Symbol.iterator] = this.defineArgIterator?.(argMembers);\n {\n descriptors[COPY] = this.defineRetvalCopier(members[0]);\n }\n return constructor;\n },\n finalizeArgStruct(structure, staticDescriptors) {\n const { flags } = structure;\n staticDescriptors[THROWING] = defineValue(!!(flags & ArgStructFlag.IsThrowing));\n },\n});\n\nexport { argStruct as default };\n","import { mixin } from '../environment.js';\nimport { PROXY, ARRAY, RESTORE, MEMORY, SLOTS, PARENT } from '../symbols.js';\nimport { defineProperties } from '../utils.js';\n\nvar arrayLike = mixin({\n defineFinalizerArray({ get, set }) {\n return {\n value() {\n const value = new Proxy(this, proxyHandlers);\n defineProperties(this, {\n [PROXY]: { value },\n get: { value: get.bind(this) },\n set: set && { value: set.bind(this) },\n });\n return value;\n },\n };\n },\n defineVivificatorArray(structure) {\n const { instance: { members: [ member ]} } = structure;\n const { byteSize, structure: elementStructure } = member;\n const thisEnv = this;\n const value = function getChild(index) {\n const { constructor } = elementStructure;\n {\n this[RESTORE]?.();\n }\n const dv = this[MEMORY];\n const parentOffset = dv.byteOffset;\n const offset = parentOffset + byteSize * index;\n const childDV = thisEnv.obtainView(dv.buffer, offset, byteSize);\n const object = this[SLOTS][index] = constructor.call(PARENT, childDV);\n return object;\n };\n return { value };\n },\n});\n\nconst proxyHandlers = {\n get(array, name) {\n const index = (typeof(name) === 'symbol') ? 0 : name|0;\n if (index !== 0 || index == name) {\n return array.get(index);\n } else if (name === ARRAY) {\n return array;\n } else {\n return array[name];\n }\n },\n set(array, name, value) {\n const index = (typeof(name) === 'symbol') ? 0 : name|0;\n if (index !== 0 || index == name) {\n array.set(index, value);\n } else {\n array[name] = value;\n }\n return true;\n },\n deleteProperty(array, name) {\n const index = (typeof(name) === 'symbol') ? 0 : name|0;\n if (index !== 0 || index == name) {\n return false;\n } else {\n delete array[name];\n return true;\n }\n },\n has(array, name) {\n const index = (typeof(name) === 'symbol') ? 0 : name|0;\n if (index !== 0 || index == name) {\n return (index >= 0 && index < array.length);\n } else {\n return array[name];\n }\n },\n ownKeys(array) {\n const keys = [];\n for (let i = 0, len = array.length; i < len; i++) {\n keys.push(`${i}`);\n }\n keys.push('length', PROXY);\n return keys;\n },\n getOwnPropertyDescriptor(array, name) {\n const index = (typeof(name) === 'symbol') ? 0 : name|0;\n if (index !== 0 || index == name) {\n if (index >= 0 && index < array.length) {\n return { value: array.get(index), enumerable: true, writable: true, configurable: true };\n }\n } else {\n return Object.getOwnPropertyDescriptor(array, name);\n }\n },\n};\n\nexport { arrayLike as default };\n","import { ArrayFlag, StructureFlag, VisitorFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { ArrayLengthMismatch, InvalidArrayInitializer } from '../errors.js';\nimport { SENTINEL, ENTRIES, INITIALIZE, FINALIZE, VIVIFICATE, VISIT, COPY } from '../symbols.js';\nimport { defineValue, getProxy, isCompatibleInstanceOf, transformIterable } from '../utils.js';\n\nvar array = mixin({\n defineArray(structure, descriptors) {\n const {\n length,\n instance: { members: [ member ] },\n flags,\n } = structure;\n const propApplier = this.createApplier(structure);\n const descriptor = this.defineMember(member);\n const { set } = descriptor;\n const constructor = this.createConstructor(structure);\n const initializer = function(arg, allocator) {\n if (isCompatibleInstanceOf(arg, constructor)) {\n this[COPY](arg);\n if (flags & StructureFlag.HasPointer) {\n this[VISIT]('copy', VisitorFlag.Vivificate, arg);\n }\n } else {\n if (typeof(arg) === 'string' && flags & ArrayFlag.IsString) {\n arg = { string: arg };\n }\n if (arg?.[Symbol.iterator]) {\n arg = transformIterable(arg);\n if (arg.length !== length) {\n throw new ArrayLengthMismatch(structure, this, arg);\n }\n let i = 0;\n for (const value of arg) {\n set.call(this, i++, value, allocator);\n }\n } else if (arg && typeof(arg) === 'object') {\n if (propApplier.call(this, arg) === 0) {\n throw new InvalidArrayInitializer(structure, arg);\n }\n } else if (arg !== undefined) {\n throw new InvalidArrayInitializer(structure, arg);\n }\n }\n };\n descriptors.$ = { get: getProxy, set: initializer };\n descriptors.length = defineValue(length);\n descriptors.entries = descriptors[ENTRIES] = this.defineArrayEntries();\n if (flags & ArrayFlag.IsTypedArray) {\n descriptors.typedArray = this.defineTypedArray(structure);\n if (flags & ArrayFlag.IsString) {\n descriptors.string = this.defineString(structure);\n }\n if (flags & ArrayFlag.IsClampedArray) {\n descriptors.clampedArray = this.defineClampedArray(structure);\n }\n }\n descriptors[Symbol.iterator] = this.defineArrayIterator();\n descriptors[INITIALIZE] = defineValue(initializer);\n descriptors[FINALIZE] = this.defineFinalizerArray(descriptor);\n descriptors[VIVIFICATE] = (flags & StructureFlag.HasObject) && this.defineVivificatorArray(structure);\n descriptors[VISIT] = (flags & StructureFlag.HasPointer) && this.defineVisitorArray();\n return constructor;\n },\n finalizeArray(structure, staticDescriptors) {\n const {\n flags,\n instance: { members: [ member ] },\n } = structure;\n staticDescriptors.child = defineValue(member.structure.constructor);\n staticDescriptors[SENTINEL] = (flags & ArrayFlag.HasSentinel) && this.defineSentinel(structure);\n },\n});\n\nexport { array as default };\n","import { StructureType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { NoInitializer, TypeMismatch, Unsupported, NoCastingToFunction } from '../errors.js';\nimport { TYPE, ENVIRONMENT, MEMORY } from '../symbols.js';\nimport { ObjectCache, defineValue, getSelf, defineProperties } from '../utils.js';\n\nvar _function = mixin({\n defineFunction(structure, descriptors) {\n const {\n instance: { members: [ member ], template: thunk },\n static: { template: jsThunkController },\n } = structure;\n const cache = new ObjectCache();\n const { structure: { constructor: ArgStruct } } = member;\n const thisEnv = this;\n const constructor = function(arg) {\n const creating = this instanceof constructor;\n let dv;\n if (creating) {\n // creating a Zig function object from a JavaScript function\n if (arguments.length === 0) {\n throw new NoInitializer(structure);\n }\n if (typeof(arg) !== 'function') {\n throw new TypeMismatch('function', arg);\n }\n if (ArgStruct[TYPE] === StructureType.VariadicStruct || !jsThunkController) {\n throw new Unsupported();\n }\n // create an inbound thunk for function (from mixin \"features/call-marshaling-inbound\")\n dv = thisEnv.getFunctionThunk(arg, jsThunkController);\n } else {\n if (this !== ENVIRONMENT) {\n // casting from buffer to function is allowed only if request comes from the runtime\n throw new NoCastingToFunction();\n }\n // casting a memory pointing to Zig binary\n dv = arg;\n }\n let existing;\n if (existing = cache.find(dv)) {\n return existing;\n }\n const argCount = ArgStruct.prototype.length;\n const self = (creating)\n ? thisEnv.createInboundCaller(arg, ArgStruct)\n : thisEnv.createOutboundCaller(thunk, ArgStruct);\n defineProperties(self, {\n length: defineValue(argCount),\n name: defineValue(creating ? arg.name : ''),\n });\n // make self an instance of this function type\n Object.setPrototypeOf(self, constructor.prototype);\n self[MEMORY] = dv;\n cache.save(dv, self);\n return self;\n };\n // make function type a superclass of Function\n Object.setPrototypeOf(constructor.prototype, Function.prototype);\n descriptors.valueOf = descriptors.toJSON = defineValue(getSelf);\n return constructor;\n },\n finalizeFunction(structure, staticDescriptors, descriptors) {\n // don't change the tag of functions\n descriptors[Symbol.toStringTag] = undefined;\n },\n});\n\nexport { _function as default };\n","import { PointerFlag, StructureType, MemberType, PrimitiveFlag, SliceFlag, StructureFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { NoCastingToPointer, throwReadOnly, NullPointer, ConstantConstraint, ReadOnlyTarget, InvalidPointerTarget, PreviouslyFreed, InvalidSliceLength, ZigMemoryTargetRequired } from '../errors.js';\nimport { CAST, ENVIRONMENT, PARENT, LAST_LENGTH, TARGET, INITIALIZE, FINALIZE, MEMORY, SLOTS, PROXY, UPDATE, ADDRESS, LENGTH, VISIT, LAST_ADDRESS, MAX_LENGTH, POINTER, TYPE, RESTORE, CONST_TARGET, SETTERS, TYPED_ARRAY, ZIG, SENTINEL, SIZE } from '../symbols.js';\nimport { defineValue, getProxy, isCompatibleType, isCompatibleInstanceOf, usizeInvalid, findElements } from '../utils.js';\n\nvar pointer = mixin({\n definePointer(structure, descriptors) {\n const {\n flags,\n byteSize,\n instance: { members: [ member ] },\n } = structure;\n const { structure: targetStructure } = member;\n const {\n type: targetType,\n flags: targetFlags,\n byteSize: targetSize = 1\n } = targetStructure;\n // length for slice can be zero or undefined\n const addressSize = (flags & PointerFlag.HasLength) ? byteSize / 2 : byteSize;\n const { get: readAddress, set: writeAddress } = this.defineMember({\n type: MemberType.Uint,\n bitOffset: 0,\n bitSize: addressSize * 8,\n byteSize: addressSize,\n structure: { byteSize: addressSize },\n });\n const { get: readLength, set: writeLength } = (flags & PointerFlag.HasLength) ? this.defineMember({\n type: MemberType.Uint,\n bitOffset: addressSize * 8,\n bitSize: addressSize * 8,\n byteSize: addressSize,\n structure: {\n flags: PrimitiveFlag.IsSize,\n byteSize: addressSize\n },\n }) : {};\n const updateTarget = function(context, all = true, active = true) {\n if (all || this[MEMORY][ZIG]) {\n if (active) {\n const Target = constructor.child;\n const address = readAddress.call(this);\n const length = (flags & PointerFlag.HasLength)\n ? readLength.call(this)\n : (targetType === StructureType.Slice && targetFlags & SliceFlag.HasSentinel)\n ? thisEnv.findSentinel(address, Target[SENTINEL].bytes) + 1\n : 1;\n if (address !== this[LAST_ADDRESS] || length !== this[LAST_LENGTH]) {\n const dv = thisEnv.findMemory(context, address, length, Target[SIZE]);\n const newTarget = (dv) ? Target.call(ENVIRONMENT, dv) : null;\n this[SLOTS][0] = newTarget;\n this[LAST_ADDRESS] = address;\n this[LAST_LENGTH] = length;\n if (flags & PointerFlag.HasLength) {\n this[MAX_LENGTH] = null;\n }\n return newTarget;\n }\n } else {\n return this[SLOTS][0] = undefined;\n }\n }\n return this[SLOTS][0];\n };\n const setAddress = function(address) {\n writeAddress.call(this, address);\n this[LAST_ADDRESS] = address;\n };\n const sentinelCount = (targetFlags & SliceFlag.HasSentinel) ? 1 : 0;\n const setLength = (flags & PointerFlag.HasLength || targetFlags & SliceFlag.HasSentinel)\n ? function(length) {\n writeLength?.call?.(this, length - sentinelCount);\n this[LAST_LENGTH] = length;\n }\n : null;\n const getTargetObject = function() {\n const pointer = this[POINTER] ?? this;\n const empty = !pointer[SLOTS][0];\n const target = updateTarget.call(pointer, null, empty);\n if (!target) {\n if (flags & PointerFlag.IsNullable) {\n return null;\n }\n throw new NullPointer();\n }\n return (flags & PointerFlag.IsConst) ? getConstProxy(target) : target;\n };\n const setTargetObject = function(arg) {\n if (arg === undefined) {\n return;\n }\n const pointer = this[POINTER] ?? this;\n if (arg) {\n const zig = arg[MEMORY][ZIG];\n if (zig) {\n // the target sits in Zig memory--apply the change immediately\n const { address, js } = zig;\n setAddress.call(this, address);\n setLength?.call?.(this, arg.length);\n if (js) {\n // remove the fake Zig memory attributes now that we've bypassed the check\n arg[MEMORY][ZIG] = undefined;\n }\n } else {\n if (pointer[MEMORY][ZIG]) {\n throw new ZigMemoryTargetRequired();\n }\n }\n } else if (pointer[MEMORY][ZIG]) {\n setAddress.call(this, 0);\n setLength?.call?.(this, 0);\n }\n pointer[SLOTS][0] = arg ?? null;\n if (flags & PointerFlag.HasLength) {\n pointer[MAX_LENGTH] = null;\n }\n };\n const getTarget = (targetFlags & StructureFlag.HasValue)\n ? function() {\n const target = getTargetObject.call(this);\n return target.$;\n }\n : getTargetObject;\n const setTarget = (flags & PointerFlag.IsConst)\n ? throwReadOnly\n : function(value) {\n const target = getTargetObject.call(this);\n return target.$ = value;\n };\n const getTargetLength = function() {\n const target = getTargetObject.call(this);\n return (target) ? target.length : 0;\n };\n const setTargetLength = function(len) {\n len = len | 0;\n const target = getTargetObject.call(this);\n if (target) {\n if (target.length === len) {\n return;\n }\n } else {\n if (len !== 0) {\n throw new InvalidSliceLength(len, 0);\n }\n return;\n }\n {\n target[RESTORE]?.();\n }\n const dv = target[MEMORY];\n const zig = dv[ZIG];\n // determine the maximum length\n let max;\n if (!zig) {\n if (flags & PointerFlag.HasLength) {\n this[MAX_LENGTH] ||= target.length;\n max = this[MAX_LENGTH];\n } else {\n const bytesAvailable = dv.buffer.byteLength - dv.byteOffset;\n max = (bytesAvailable / targetSize) | 0;\n }\n }\n if (len < 0 || len > max) {\n throw new InvalidSliceLength(len, max);\n }\n const byteLength = len * targetSize;\n const newDV = (zig)\n ? thisEnv.obtainZigView(zig.address, byteLength)\n : thisEnv.obtainView(dv.buffer, dv.byteOffset, byteLength);\n const Target = targetStructure.constructor;\n this[SLOTS][0] = Target.call(ENVIRONMENT, newDV);\n setLength?.call?.(this, len);\n };\n const thisEnv = this;\n const initializer = function(arg, allocator) {\n const Target = targetStructure.constructor;\n if (isPointerOf(arg, Target)) {\n // initialize with the other pointer'structure target\n if (!(flags & PointerFlag.IsConst) && arg.constructor.const) {\n throw new ConstantConstraint(structure, arg);\n }\n arg = arg[SLOTS][0];\n } else if (flags & PointerFlag.IsMultiple) {\n if (isCompatiblePointer(arg, Target, flags)) {\n arg = Target(arg[SLOTS][0][MEMORY]);\n }\n } else if (targetType === StructureType.Slice && (targetFlags & SliceFlag.IsOpaque) && arg) {\n if (arg.constructor[TYPE] === StructureType.Pointer) {\n arg = arg[TARGET]?.[MEMORY];\n } else if (arg[MEMORY]) {\n arg = arg[MEMORY];\n } else if (arg?.buffer instanceof ArrayBuffer) {\n if (!(arg instanceof Uint8Array || arg instanceof DataView)) {\n const { byteOffset, byteLength } = arg;\n if (byteOffset !== undefined && byteLength !== undefined) {\n arg = new DataView(arg.buffer, byteOffset, byteLength);\n }\n }\n }\n }\n if (arg instanceof Target) {\n {\n arg[RESTORE]?.();\n }\n const constTarget = arg[CONST_TARGET];\n if (constTarget) {\n if (flags & PointerFlag.IsConst) {\n arg = constTarget;\n } else {\n throw new ReadOnlyTarget(structure);\n }\n }\n } else if (isCompatibleInstanceOf(arg, Target)) {\n // compatible object from a different module\n arg = Target.call(ENVIRONMENT, arg[MEMORY]);\n } else if (flags & PointerFlag.IsSingle && flags & PointerFlag.IsMultiple && arg instanceof Target.child) {\n // C pointer\n arg = Target(arg[MEMORY]);\n } else if (isCompatibleBuffer(arg, Target)) {\n // autocast to target type\n const dv = thisEnv.extractView(targetStructure, arg);\n arg = Target(dv);\n } else if (arg != undefined && !arg[MEMORY]) {\n if (flags & PointerFlag.IsSingle && flags & PointerFlag.IsMultiple) {\n // C pointer\n if (typeof(arg) === 'object' && !arg[Symbol.iterator]) {\n let single = true;\n // make sure the object doesn't contain special props for the slice\n const propSetters = Target.prototype[SETTERS];\n for (const key of Object.keys(arg)) {\n const set = propSetters[key];\n if (set?.special) {\n single = false;\n break;\n }\n }\n if (single) {\n arg = [ arg ];\n }\n }\n }\n if (TYPED_ARRAY in Target && arg?.buffer && arg[Symbol.iterator]) {\n throw new InvalidPointerTarget(structure, arg);\n }\n // autovivificate target object\n const autoObj = new Target(arg, { allocator });\n arg = autoObj;\n } else if (arg !== undefined) {\n if (!(flags & PointerFlag.IsNullable) || arg !== null) {\n throw new InvalidPointerTarget(structure, arg);\n }\n }\n const zig = arg?.[MEMORY]?.[ZIG];\n if (zig?.address === usizeInvalid) {\n throw new PreviouslyFreed(arg);\n }\n this[TARGET] = arg;\n };\n const constructor = this.createConstructor(structure);\n descriptors['*'] = { get: getTarget, set: setTarget };\n descriptors.$ = { get: getProxy, set: initializer };\n descriptors.length = { get: getTargetLength, set: setTargetLength };\n descriptors.slice = (targetType === StructureType.Slice) && {\n value(begin, end) {\n const newTarget = this[TARGET].slice(begin, end);\n return new constructor(newTarget);\n }\n };\n descriptors.subarray = (targetType === StructureType.Slice) && {\n value(begin, end, options) {\n const newTarget = this[TARGET].subarray(begin, end, options);\n return new constructor(newTarget);\n }\n };\n descriptors[Symbol.toPrimitive] = (targetType === StructureType.Primitive) && {\n value(hint) {\n return this[TARGET][Symbol.toPrimitive](hint);\n }\n };\n descriptors[INITIALIZE] = defineValue(initializer);\n descriptors[FINALIZE] = {\n value() {\n const handlers = (targetType !== StructureType.Pointer) ? proxyHandlers : {};\n let self;\n if (targetType === StructureType.Function) {\n // use an empty function as object so the proxy's apply() method is triggered\n self = function() {};\n self[MEMORY] = this[MEMORY];\n self[SLOTS] = this[SLOTS];\n Object.setPrototypeOf(self, constructor.prototype);\n } else {\n self = this;\n }\n const proxy = new Proxy(self, handlers);\n // hide the proxy so console wouldn't display a recursive structure\n Object.defineProperty(self, PROXY, { value: proxy });\n return proxy;\n }\n };\n descriptors[TARGET] = { get: getTargetObject, set: setTargetObject };\n descriptors[UPDATE] = defineValue(updateTarget);\n descriptors[ADDRESS] = { set: setAddress };\n descriptors[LENGTH] = { set: setLength };\n descriptors[VISIT] = this.defineVisitor();\n descriptors[LAST_ADDRESS] = defineValue(0);\n descriptors[LAST_LENGTH] = defineValue(0);\n descriptors[MAX_LENGTH] = (flags & PointerFlag.HasLength) && defineValue(null);\n // disable these so the target's properties are returned instead through auto-dereferencing\n descriptors.dataView = descriptors.base64 = undefined;\n return constructor;\n },\n finalizePointer(structure, staticDescriptors) {\n const {\n flags,\n constructor,\n instance: { members: [ member ] },\n } = structure;\n const { structure: targetStructure } = member;\n const { type: targetType, constructor: Target } = targetStructure;\n staticDescriptors.child = (Target) ? defineValue(Target) : {\n // deal with self-referencing pointer\n get() { return targetStructure.constructor }\n };\n staticDescriptors.const = defineValue(!!(flags & PointerFlag.IsConst));\n staticDescriptors[CAST] = {\n value(arg, options) {\n if (this === ENVIRONMENT || this === PARENT || arg instanceof constructor) {\n // casting from buffer to pointer is allowed only if request comes from the runtime\n // casting from writable to read-only is also allowed\n return false;\n } else if (isPointerOf(arg, Target)) {\n // const/non-const casting\n return new constructor(Target(arg['*']), options);\n } else if (isCompatiblePointer(arg, Target, flags)) {\n // casting between C/multi/slice pointers\n return new constructor(arg);\n } else if (targetType === StructureType.Slice) {\n // allow casting to slice through constructor of its pointer\n return new constructor(Target(arg), options);\n } else {\n throw new NoCastingToPointer(structure);\n }\n }\n };\n }\n});\n\nfunction isPointerOf(arg, Target) {\n return isCompatibleType(arg?.constructor?.child, Target) && arg['*'];\n}\n\nfunction isCompatiblePointer(arg, Target, flags) {\n if (flags & PointerFlag.IsMultiple) {\n if (arg?.constructor?.child?.child === Target.child && arg['*']) {\n return true;\n } else if (flags & PointerFlag.IsSingle && isPointerOf(arg, Target.child)) {\n // C pointer\n return true;\n }\n }\n return false;\n}\n\nconst constProxies = new WeakMap();\n\nfunction getConstProxy(target) {\n let proxy = constProxies.get(target);\n if (!proxy) {\n const pointer = target[POINTER];\n if (pointer) {\n proxy = new Proxy(pointer, readOnlyProxyHandlers);\n } else {\n proxy = new Proxy(target, constTargetProxyHandlers);\n }\n constProxies.set(target, proxy);\n }\n return proxy;\n}\n\nconst proxyHandlers = {\n get(pointer, name) {\n if (name === POINTER) {\n return pointer;\n } else if (name in pointer) {\n return pointer[name];\n } else {\n const target = pointer[TARGET];\n return target[name];\n }\n },\n set(pointer, name, value) {\n if (name in pointer) {\n pointer[name] = value;\n } else {\n const target = pointer[TARGET];\n target[name] = value;\n }\n return true;\n },\n deleteProperty(pointer, name) {\n if (name in pointer) {\n delete pointer[name];\n } else {\n const target = pointer[TARGET];\n delete target[name];\n }\n return true;\n },\n has(pointer, name) {\n if (name in pointer) {\n return true;\n } else {\n const target = pointer[TARGET];\n return name in target;\n }\n },\n apply(pointer, thisArg, args) {\n const f = pointer['*'];\n return f.apply(thisArg, args);\n },\n};\n\nconst readOnlyProxyHandlers = {\n ...proxyHandlers,\n set(pointer, name, value) {\n if (name in pointer) {\n throwReadOnly();\n } else {\n const target = pointer[TARGET];\n target[name] = value;\n }\n return true;\n },\n};\n\nconst constTargetProxyHandlers = {\n get(target, name) {\n if (name === CONST_TARGET) {\n return target;\n } else {\n const value = target[name];\n if (value?.[MEMORY]) {\n return getConstProxy(value);\n } else {\n return value;\n }\n }\n },\n set(target, name, value) {\n throwReadOnly();\n }\n};\n\nfunction isCompatibleBuffer(arg, constructor) {\n // TODO: merge this with extractView in mixin \"view-management\"\n const tag = arg?.[Symbol.toStringTag];\n if (tag) {\n const typedArray = constructor[TYPED_ARRAY];\n if (typedArray) {\n switch (tag) {\n case typedArray.name:\n case 'DataView':\n return true;\n case 'ArrayBuffer':\n return typedArray === Uint8Array || typedArray === Int8Array;\n case 'Uint8ClampedArray':\n return typedArray === Uint8Array;\n }\n }\n if (constructor.child) {\n if (findElements(arg, constructor.child) !== undefined) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport { pointer as default };\n","import { mixin } from '../environment.js';\nimport { InvalidInitializer } from '../errors.js';\nimport { BIT_SIZE, PRIMITIVE, INITIALIZE, COPY } from '../symbols.js';\nimport { defineValue, isCompatibleInstanceOf, getPrimitiveName } from '../utils.js';\n\nvar primitive = mixin({\n definePrimitive(structure, descriptors) {\n const {\n instance: { members: [ member ] },\n } = structure;\n const propApplier = this.createApplier(structure);\n const { get, set } = this.defineMember(member);\n const initializer = function(arg) {\n if (isCompatibleInstanceOf(arg, constructor)) {\n this[COPY](arg);\n } else {\n if (arg && typeof(arg) === 'object') {\n if (propApplier.call(this, arg) === 0) {\n const type = getPrimitiveName(member);\n throw new InvalidInitializer(structure, type, arg);\n }\n } else if (arg !== undefined) {\n set.call(this, arg);\n }\n }\n };\n const constructor = this.createConstructor(structure);\n descriptors.$ = { get, set: initializer };\n descriptors[INITIALIZE] = defineValue(initializer);\n descriptors[Symbol.toPrimitive] = defineValue(get);\n return constructor;\n },\n finalizePrimitive(structure, staticDescriptors) {\n const {\n instance: { members: [ member ] },\n } = structure;\n staticDescriptors[BIT_SIZE] = defineValue(member.bitSize);\n staticDescriptors[PRIMITIVE] = defineValue(member.type);\n },\n});\n\nexport { primitive as default };\n","import { SliceFlag, StructureFlag, VisitorFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { InvalidArrayInitializer, ArrayLengthMismatch } from '../errors.js';\nimport { SENTINEL, ENTRIES, COPY, MEMORY, SHAPE, INITIALIZE, FINALIZE, VIVIFICATE, VISIT, LENGTH } from '../symbols.js';\nimport { defineValue, getProxy, isCompatibleInstanceOf, transformIterable } from '../utils.js';\n\nvar slice = mixin({\n defineSlice(structure, descriptors) {\n const {\n align,\n flags,\n byteSize,\n name,\n instance: {\n members: [ member ],\n },\n } = structure;\n const { byteSize: elementSize, structure: elementStructure } = member;\n const thisEnv = this;\n const shapeDefiner = function(dv, length, allocator) {\n if (!dv) {\n dv = thisEnv.allocateMemory(length * elementSize, align, allocator);\n }\n this[MEMORY] = dv;\n this[LENGTH] = length;\n };\n const shapeChecker = function(arg, length) {\n if (length !== this[LENGTH]) {\n throw new ArrayLengthMismatch(structure, this, arg);\n }\n };\n const descriptor = this.defineMember(member);\n const { set } = descriptor;\n // the initializer behave differently depending on whether it's called by the\n // constructor or by a member setter (i.e. after object's shape has been established)\n const propApplier = this.createApplier(structure);\n const initializer = function(arg, allocator) {\n if (isCompatibleInstanceOf(arg, constructor)) {\n if (!this[MEMORY]) {\n shapeDefiner.call(this, null, arg.length, allocator);\n } else {\n shapeChecker.call(this, arg, arg.length);\n }\n this[COPY](arg);\n if (flags & StructureFlag.HasPointer) {\n this[VISIT]('copy', VisitorFlag.Vivificate, arg);\n }\n } else if (typeof(arg) === 'string' && flags & SliceFlag.IsString) {\n initializer.call(this, { string: arg }, allocator);\n } else if (arg?.[Symbol.iterator]) {\n arg = transformIterable(arg);\n if (!this[MEMORY]) {\n shapeDefiner.call(this, null, arg.length, allocator);\n } else {\n shapeChecker.call(this, arg, arg.length);\n }\n let i = 0;\n for (const value of arg) {\n constructor[SENTINEL]?.validateValue(value, i, arg.length);\n set.call(this, i++, value, allocator);\n }\n } else if (typeof(arg) === 'number') {\n if (!this[MEMORY] && arg >= 0 && isFinite(arg)) {\n shapeDefiner.call(this, null, arg, allocator);\n } else {\n throw new InvalidArrayInitializer(structure, arg, !this[MEMORY]);\n }\n } else if (arg && typeof(arg) === 'object') {\n if (propApplier.call(this, arg, allocator) === 0) {\n throw new InvalidArrayInitializer(structure, arg);\n }\n } else if (arg !== undefined) {\n throw new InvalidArrayInitializer(structure, arg);\n }\n };\n const getSubArrayView = function(begin, end) {\n const length = this[LENGTH];\n const dv = this[MEMORY];\n begin = (begin === undefined) ? 0 : adjustIndex(begin, length);\n end = (end === undefined) ? length : adjustIndex(end, length);\n const offset = begin * elementSize;\n const len = (end * elementSize) - offset;\n return thisEnv.obtainView(dv.buffer, dv.byteOffset + offset, len);\n };\n const constructor = this.createConstructor(structure);\n descriptors.$ = { get: getProxy, set: initializer };\n descriptors.length = { get: getLength };\n if (flags & SliceFlag.IsTypedArray) {\n descriptors.typedArray = this.defineTypedArray(structure);\n if (flags & SliceFlag.IsString) {\n descriptors.string = this.defineString(structure);\n }\n if (flags & SliceFlag.IsClampedArray) {\n descriptors.clampedArray = this.defineClampedArray(structure);\n }\n }\n descriptors.entries = descriptors[ENTRIES] = this.defineArrayEntries();\n descriptors.subarray = {\n value(begin, end) {\n const dv = getSubArrayView.call(this, begin, end);\n return constructor(dv);\n },\n };\n descriptors.slice = {\n value(begin, end, options = {}) {\n const {\n zig = false\n } = options;\n const dv1 = getSubArrayView.call(this, begin, end);\n const dv2 = thisEnv.allocateMemory(dv1.byteLength, align, zig);\n const slice = constructor(dv2);\n slice[COPY]({ [MEMORY]: dv1 });\n return slice;\n },\n };\n descriptors[Symbol.iterator] = this.defineArrayIterator();\n descriptors[SHAPE] = defineValue(shapeDefiner);\n descriptors[COPY] = this.defineCopier(byteSize, true);\n descriptors[INITIALIZE] = defineValue(initializer);\n descriptors[FINALIZE] = this.defineFinalizerArray(descriptor);\n descriptors[VIVIFICATE] = (flags & StructureFlag.HasObject) && this.defineVivificatorArray(structure);\n descriptors[VISIT] = (flags & StructureFlag.HasPointer) && this.defineVisitorArray();\n return constructor;\n },\n finalizeSlice(structure, staticDescriptors) {\n const {\n flags,\n instance: { members: [ member ] },\n } = structure;\n staticDescriptors.child = defineValue(member.structure.constructor);\n staticDescriptors[SENTINEL] = (flags & SliceFlag.HasSentinel) && this.defineSentinel(structure);\n },\n});\n\nfunction getLength() {\n return this[LENGTH];\n}\n\nfunction adjustIndex(index, len) {\n index = index | 0;\n if (index < 0) {\n index = len + index;\n if (index < 0) {\n index = 0;\n }\n } else {\n if (index > len) {\n index = len;\n }\n }\n return index;\n}\n\nexport { slice as default };\n","import { MemberType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { NotOnByteBoundary } from '../errors.js';\nimport { RESTORE, MEMORY, SLOTS, PARENT } from '../symbols.js';\n\nvar structLike = mixin({\n defineVivificatorStruct(structure) {\n const { instance: { members } } = structure;\n const objectMembers = {};\n for (const member of members.filter(m => m.type === MemberType.Object)) {\n objectMembers[member.slot] = member;\n }\n const thisEnv = this;\n return {\n value(slot) {\n const member = objectMembers[slot];\n const { bitOffset, byteSize, structure: { constructor } } = member;\n {\n this[RESTORE]?.();\n }\n const dv = this[MEMORY];\n const parentOffset = dv.byteOffset;\n const offset = parentOffset + (bitOffset >> 3);\n let len = byteSize;\n if (len === undefined) {\n if (bitOffset & 7) {\n throw new NotOnByteBoundary(member);\n }\n len = member.bitSize >> 3;\n }\n const childDV = thisEnv.obtainView(dv.buffer, offset, len);\n const object = this[SLOTS][slot] = constructor.call(PARENT, childDV);\n return object;\n }\n };\n },\n});\n\nexport { structLike as default };\n","import { MemberFlag, StructFlag, StructureFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { InvalidInitializer } from '../errors.js';\nimport { SETTERS, KEYS, INITIALIZE, VIVIFICATE, VISIT, ENTRIES, PROPS, COPY } from '../symbols.js';\nimport { getSelf, defineValue, isCompatibleInstanceOf } from '../utils.js';\n\nvar struct = mixin({\n defineStruct(structure, descriptors) {\n const {\n flags,\n length,\n instance: { members },\n } = structure;\n const backingIntMember = members.find(m => m.flags & MemberFlag.IsBackingInt);\n const backingInt = backingIntMember && this.defineMember(backingIntMember);\n const propApplier = this.createApplier(structure);\n const initializer = function(arg, allocator) {\n if (isCompatibleInstanceOf(arg, constructor)) {\n this[COPY](arg);\n if (flags & StructureFlag.HasPointer) {\n this[VISIT]('copy', 0, arg);\n }\n } else if (arg && typeof(arg) === 'object') {\n propApplier.call(this, arg, allocator);\n } else if ((typeof(arg) === 'number' || typeof(arg) === 'bigint') && backingInt) {\n backingInt.set.call(this, arg);\n } else if (arg !== undefined) {\n throw new InvalidInitializer(structure, 'object', arg);\n }\n };\n const constructor = this.createConstructor(structure);\n // add descriptors of struct field\n const setters = descriptors[SETTERS].value;\n const keys = descriptors[KEYS].value;\n const props = [];\n for (const member of members.filter(m => !!m.name)) {\n const { name, flags } = member;\n const { set } = descriptors[name] = this.defineMember(member);\n if (set) {\n if (flags & MemberFlag.IsRequired) {\n set.required = true;\n }\n setters[name] = set;\n keys.push(name);\n }\n props.push(name);\n }\n descriptors.$ = { get: getSelf, set: initializer };\n // add length and entries if struct is a tuple\n descriptors.length = defineValue(length);\n descriptors.entries = (flags & StructFlag.IsTuple) && this.defineVectorEntries();\n // allow conversion of packed struct to number when there's a backing int\n descriptors[Symbol.toPrimitive] = backingInt && {\n value(hint) {\n return (hint === 'string')\n ? Object.prototype.toString.call(this)\n : backingInt.get.call(this);\n }\n };\n // add iterator\n descriptors[Symbol.iterator] = (flags & StructFlag.IsIterator)\n ? this.defineZigIterator()\n : (flags & StructFlag.IsTuple)\n ? this.defineVectorIterator()\n : this.defineStructIterator();\n descriptors[INITIALIZE] = defineValue(initializer);\n // for creating complex fields on access\n descriptors[VIVIFICATE] = (flags & StructureFlag.HasObject) && this.defineVivificatorStruct(structure);\n // for operating on pointers contained in the struct\n descriptors[VISIT] = (flags & StructureFlag.HasPointer) && this.defineVisitorStruct(members);\n descriptors[ENTRIES] = (flags & StructFlag.IsTuple) ? this.defineVectorEntries() : this.defineStructEntries();\n descriptors[PROPS] = defineValue(props);\n if (flags & StructFlag.IsAllocator) {\n descriptors.alloc = this.defineAlloc();\n descriptors.free = this.defineFree();\n descriptors.dupe = this.defineDupe();\n }\n return constructor;\n }\n});\n\nexport { struct as default };\n","const dict = globalThis[Symbol.for('ZIGAR')] ||= {};\n\nfunction __symbol(name) {\n return dict[name] ||= Symbol(name);\n}\n\nfunction symbol(name) {\n return /*@__PURE__*/ __symbol(name);\n}\n\nconst MEMORY = symbol('memory');\nconst SLOTS = symbol('slots');\nconst PARENT = symbol('parent');\nconst ZIG = symbol('zig');\nconst NAME = symbol('name');\nconst TYPE = symbol('type');\nconst FLAGS = symbol('flags');\nconst CLASS = symbol('class');\nconst TAG = symbol('tag');\nconst PROPS = symbol('props');\nconst POINTER = symbol('pointer');\nconst SENTINEL = symbol('sentinel');\nconst ARRAY = symbol('array');\nconst ITEMS = symbol('items');\nconst TARGET = symbol('target');\nconst ENTRIES = symbol('entries');\nconst MAX_LENGTH = symbol('max length');\nconst KEYS = symbol('keys');\nconst ADDRESS = symbol('address');\nconst LENGTH = symbol('length');\nconst LAST_ADDRESS = symbol('last address');\nconst LAST_LENGTH = symbol('last length');\nconst PROXY = symbol('proxy');\nconst CACHE = symbol('cache');\nconst SIZE = symbol('size');\nconst BIT_SIZE = symbol('bit size');\nconst ALIGN = symbol('align');\nconst CONST_TARGET = symbol('const target');\nconst ENVIRONMENT = symbol('environment');\nconst ATTRIBUTES = symbol('attributes');\nconst PRIMITIVE = symbol('primitive');\nconst GETTERS = symbol('getters');\nconst SETTERS = symbol('setters');\nconst TYPED_ARRAY = symbol('typed array');\nconst THROWING = symbol('throwing');\nconst PROMISE = symbol('promise');\nconst GENERATOR = symbol('generator');\nconst ALLOCATOR = symbol('allocator');\nconst FALLBACK = symbol('fallback');\nconst SIGNATURE = symbol('signature');\n\nconst UPDATE = symbol('update');\nconst RESTORE = symbol('restore');\nconst RESET = symbol('reset');\nconst VIVIFICATE = symbol('vivificate');\nconst VISIT = symbol('visit');\nconst COPY = symbol('copy');\nconst SHAPE = symbol('shape');\nconst INITIALIZE = symbol('initialize');\nconst RESTRICT = symbol('restrict');\nconst FINALIZE = symbol('finalize');\nconst CAST = symbol('cast');\nconst RETURN = symbol('return');\nconst YIELD = symbol('yield');\n\nexport { ADDRESS, ALIGN, ALLOCATOR, ARRAY, ATTRIBUTES, BIT_SIZE, CACHE, CAST, CLASS, CONST_TARGET, COPY, ENTRIES, ENVIRONMENT, FALLBACK, FINALIZE, FLAGS, GENERATOR, GETTERS, INITIALIZE, ITEMS, KEYS, LAST_ADDRESS, LAST_LENGTH, LENGTH, MAX_LENGTH, MEMORY, NAME, PARENT, POINTER, PRIMITIVE, PROMISE, PROPS, PROXY, RESET, RESTORE, RESTRICT, RETURN, SENTINEL, SETTERS, SHAPE, SIGNATURE, SIZE, SLOTS, TAG, TARGET, THROWING, TYPE, TYPED_ARRAY, UPDATE, VISIT, VIVIFICATE, YIELD, ZIG };\n","import { MemberType } from './constants.js';\nimport { SIGNATURE, ENVIRONMENT, LENGTH, PROXY } from './symbols.js';\n\nfunction defineProperty(object, name, descriptor) {\n if (descriptor) {\n const {\n set,\n get,\n value,\n enumerable,\n configurable = true,\n writable = true,\n } = descriptor;\n Object.defineProperty(object, name, (get || set)\n ? { get, set, configurable, enumerable }\n : { value, configurable, enumerable, writable }\n );\n }\n return object;\n}\n\nfunction defineProperties(object, descriptors) {\n for (const [ name, descriptor ] of Object.entries(descriptors)) {\n defineProperty(object, name, descriptor);\n }\n for (const symbol of Object.getOwnPropertySymbols(descriptors)) {\n const descriptor = descriptors[symbol];\n defineProperty(object, symbol, descriptor);\n }\n return object;\n}\n\nfunction defineValue(value) {\n return (value !== undefined) ? { value } : undefined;\n}\n\nfunction getErrorHandler(options) {\n return (options?.error === 'return')\n ? (cb) => {\n try {\n return cb();\n } catch (err) {\n return err;\n }\n }\n : (cb) => cb();\n}\n\nfunction getPrimitiveName({ type, bitSize }) {\n switch (type) {\n case MemberType.Bool: return 'boolean';\n case MemberType.Int:\n case MemberType.Uint:\n if (bitSize > 32) {\n return 'bigint';\n }\n case MemberType.Float: return 'number';\n }\n}\n\nfunction decodeText(arrays, encoding = 'utf-8') {\n const decoder = decoders[encoding] ||= new TextDecoder(encoding);\n let array;\n if (Array.isArray(arrays)) {\n if (arrays.length === 1) {\n array = arrays[0];\n } else {\n let len = 0;\n for (const a of arrays) {\n len += a.length;\n }\n const { constructor } = arrays[0];\n array = new constructor(len);\n let offset = 0;\n for (const a of arrays) {\n array.set(a, offset);\n offset += a.length;\n }\n }\n } else {\n array = arrays;\n }\n if (array.buffer[Symbol.toStringTag] === 'SharedArrayBuffer') {\n array = new array.constructor(array);\n }\n return decoder.decode(array);\n}\n\nfunction encodeText(text, encoding = 'utf-8') {\n switch (encoding) {\n case 'utf-16': {\n const { length } = text;\n const ta = new Uint16Array(length);\n for (let i = 0; i < length; i++) {\n ta[i] = text.charCodeAt(i);\n }\n return ta;\n }\n default: {\n const encoder = encoders[encoding] ||= new TextEncoder();\n return encoder.encode(text);\n }\n }\n}\n\nfunction encodeBase64(dv) {\n const ta = new Uint8Array(dv.buffer, dv.byteOffset, dv.byteLength);\n const bstr = String.fromCharCode.apply(null, ta);\n return btoa(bstr);\n}\n\nfunction decodeBase64(str) {\n const bstr = atob(str);\n const ta = new Uint8Array(bstr.length);\n for (let i = 0; i < ta.byteLength; i++) {\n ta[i] = bstr.charCodeAt(i);\n }\n return new DataView(ta.buffer);\n}\n\nconst decoders = {};\nconst encoders = {};\n\nfunction findSortedIndex(array, value, cb) {\n let low = 0;\n let high = array.length;\n if (high === 0) {\n return 0;\n }\n while (low < high) {\n const mid = Math.floor((low + high) / 2);\n const value2 = cb(array[mid]);\n if (value2 <= value) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n}\n\nconst isMisaligned = function(address, align) {\n return (align) ? !!(address & (align - 1)) : false;\n }\n;\n\nconst alignForward = function(address, align) {\n return (address + (align - 1)) & ~(align - 1);\n }\n;\n\nconst usizeMin = 0;\nconst usizeMax = 0xFFFF_FFFF;\nconst usizeInvalid = -1;\n\nconst usize = function(arg) {\n return Number(arg);\n }\n;\n\nconst isInvalidAddress = function(address) {\n return address === 0xaaaa_aaaa || address === -1431655766;\n }\n;\n\nconst adjustAddress = function(address, addend) {\n return address + addend;\n }\n;\n\nfunction transformIterable(arg) {\n if (typeof(arg.length) === 'number') {\n // it's an array of sort\n return arg;\n }\n const iterator = arg[Symbol.iterator]();\n const first = iterator.next();\n const length = first.value?.length;\n if (typeof(length) === 'number' && Object.keys(first.value).join() === 'length') {\n // return generator with length attached\n return Object.assign((function*() {\n let result;\n while (!(result = iterator.next()).done) {\n yield result.value;\n }\n })(), { length });\n } else {\n const array = [];\n let result = first;\n while (!result.done) {\n array.push(result.value);\n result = iterator.next();\n }\n return array;\n }\n}\n\nfunction findElements(arg, Child) {\n // casting to a array/slice\n const { constructor: Arg } = arg;\n if (Arg === Child) {\n // matching object\n return 1;\n } else if (Arg.child === Child) {\n // matching slice/array\n return arg.length;\n }\n}\n\nfunction findObjects(structures, SLOTS) {\n const list = [];\n const found = new Map();\n const find = (object) => {\n if (!object || found.get(object)) {\n return;\n }\n found.set(object, true);\n list.push(object);\n if (object[SLOTS]) {\n for (const child of Object.values(object[SLOTS])) {\n find(child);\n }\n }\n };\n for (const structure of structures) {\n find(structure.instance.template);\n find(structure.static.template);\n }\n return list;\n}\n\nfunction isCompatibleType(TypeA, TypeB) {\n return (TypeA === TypeB)\n || ((TypeA?.[SIGNATURE] === TypeB[SIGNATURE]) && (TypeA?.[ENVIRONMENT] !== TypeB?.[ENVIRONMENT]));\n}\n\nfunction isCompatibleInstanceOf(object, Type) {\n return (object instanceof Type) || isCompatibleType(object?.constructor, Type);\n}\n\nfunction markAsSpecial({ get, set }) {\n get.special = set.special = true;\n return { get, set };\n}\n\nfunction getSelf() {\n return this;\n}\n\nfunction getLength() {\n return this[LENGTH];\n}\n\nfunction getProxy() {\n return this[PROXY];\n}\n\nfunction toString() {\n return String(this);\n}\n\nfunction always() {\n return true;\n}\n\nfunction never() {\n return false;\n}\n\nfunction empty() {}\n\nclass ObjectCache {\n map = new WeakMap();\n\n find(dv) {\n return this.map.get(dv);\n }\n\n save(dv, object) {\n this.map.set(dv, object);\n return object;\n }\n}\n\nexport { ObjectCache, adjustAddress, alignForward, always, decodeBase64, decodeText, defineProperties, defineProperty, defineValue, empty, encodeBase64, encodeText, findElements, findObjects, findSortedIndex, getErrorHandler, getLength, getPrimitiveName, getProxy, getSelf, isCompatibleInstanceOf, isCompatibleType, isInvalidAddress, isMisaligned, markAsSpecial, never, toString, transformIterable, usize, usizeInvalid, usizeMax, usizeMin };\n","import { VisitorFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { ZigMemoryTargetRequired } from '../errors.js';\nimport { SLOTS, LAST_ADDRESS, MEMORY, ZIG, VIVIFICATE, VISIT } from '../symbols.js';\n\nvar all = mixin({\n defineVisitor() {\n return {\n value(cb, flags, src) {\n let fn;\n if (typeof(cb) === 'string') {\n fn = builtinVisitors[cb];\n } else {\n fn = cb;\n }\n fn.call(this, flags, src);\n }\n };\n },\n});\n\nfunction visitChild(slot, cb, flags, src) {\n let child = this[SLOTS][slot];\n if (!child) {\n if (!(flags & VisitorFlag.IgnoreUncreated)) {\n child = this[VIVIFICATE](slot);\n } else {\n return;\n }\n }\n let srcChild;\n if (src) {\n srcChild = src[SLOTS][slot];\n if (!srcChild) {\n return;\n }\n }\n child[VISIT](cb, flags, srcChild);\n}\n\nconst builtinVisitors = {\n copy(flags, src) {\n const target = src[SLOTS][0];\n if (this[MEMORY][ZIG]) {\n if (target && !target[MEMORY][ZIG]) {\n throw new ZigMemoryTargetRequired();\n }\n }\n this[SLOTS][0] = target;\n },\n clear(flags) {\n if (flags & VisitorFlag.IsInactive) {\n this[SLOTS][0] = undefined;\n }\n },\n reset() {\n this[SLOTS][0] = undefined;\n this[LAST_ADDRESS] = undefined;\n },\n};\n\nexport { all as default, visitChild };\n","import { StructureFlag, VisitorFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { visitChild } from './all.js';\n\nvar inArgStruct = mixin({\n defineVisitorArgStruct(members) {\n const argSlots = [];\n let rvSlot = undefined;\n for (const [ index, { slot, structure } ] of members.entries()) {\n if (structure.flags & StructureFlag.HasPointer) {\n if (index === 0) {\n rvSlot = slot;\n } else {\n argSlots.push(slot);\n }\n }\n }\n return {\n value(cb, flags, src) {\n if (!(flags & VisitorFlag.IgnoreArguments) && argSlots.length > 0) {\n for (const slot of argSlots) {\n visitChild.call(this, slot, cb, flags | VisitorFlag.IsImmutable, src);\n }\n }\n if (!(flags & VisitorFlag.IgnoreRetval) && rvSlot !== undefined) {\n visitChild.call(this, rvSlot, cb, flags, src);\n }\n }\n };\n }\n});\n\nexport { inArgStruct as default };\n","import { StructureFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { visitChild } from './all.js';\n\nvar inStruct = mixin({\n defineVisitorStruct(members) {\n const slots = members.filter(m => m.structure?.flags & StructureFlag.HasPointer).map(m => m.slot);\n return {\n value(cb, flags, src) {\n for (const slot of slots) {\n visitChild.call(this, slot, cb, flags, src);\n }\n }\n };\n }\n});\n\nexport { inStruct as default };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// startup\n// Load entry module and return exports\n// This entry module used 'module' so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(8156);\n"],"names":["webpackQueues","webpackExports","webpackError","resolveQueue","updateCanvasSize","canvas","width","height","device","Math","max","min","limits","maxTextureDimension2D","canvasSizeObserver","callback","ResizeObserver","entries","entry","target","contentBoxSize","inlineSize","blockSize","observe","clientWidth","clientHeight","getDevice","navigator","gpu","Error","adapter","requestAdapter","requestDevice","lost","then","info","console","error","message","reason","numMipLevels","sizes","maxSize","log2","createTextureFromSource","source","options","texture","createTexture","format","mipLevelCount","mips","size","usage","GPUTextureUsage","TEXTURE_BINDING","COPY_DST","RENDER_ATTACHMENT","flipY","depthOrArrayLayers","queue","copyExternalImageToTexture","copySourceToTexture","NUM_PIXELS","PickManager","constructor","isPreviousPickDone","this","pickBuffer","createBuffer","GPUBufferUsage","MAP_READ","pickTexture","COPY_SRC","pickDepthTexture","startPicking","encoder","descriptor","label","colorAttachments","view","createView","loadOp","clearValue","storeOp","pass","beginRenderPass","setViewport","setScissorRect","end","copyTextureToBuffer","origin","x","y","buffer","createMatrix","canvasMatrix","tx","ty","scaling","translation","reduce","accMatrix","rotationMatrix","multiply","asyncPick","mapAsync","GPUMapMode","READ","id","Uint32Array","getMappedRange","unmap","err","pointer","initMouseController","addEventListener","e","rect","getBoundingClientRect","clientX","left","clientY","top","updatePointer","event","log","deltaY","STRIDE","tileDim","batch","drawTriangle","drawBezier","draw3dModel","draw3dModelTexture","draw3dModelLight","drawBlur","drawTexture","pickTriangle","initPrograms","presentationFormat","module","createShaderModule","code","pipeline","createRenderPipeline","layout","vertex","entryPoint","buffers","arrayStride","attributes","shaderLocation","offset","fragment","targets","uniformBuffer","UNIFORM","uniformValues","Float32Array","uniformBufferSize","matrixValue","subarray","kMatrixOffset","worldProjectionMatrix","vertexData","numVertices","length","vertexBuffer","byteLength","VERTEX","writeBuffer","bindGroup","createBindGroup","getBindGroupLayout","binding","resource","setPipeline","setVertexBuffer","set","setBindGroup","draw","primitive","topology","depthStencil","depthWriteEnabled","depthCompare","matrix","pointsData","tData","dirData","segmentIndexData","zoom","storageBufferSize","storageBuffer","STORAGE","zoomValue","kZoomOffset","tBuffer","dirBuffer","segmentIndexBuffer","indexData","sampler","createSampler","magFilter","minFilter","indexBuffer","INDEX","setIndexBuffer","drawIndexed","cullMode","uniform","worldViewProjection","normalMatrix","lightColor","lightDirection","normalMatrixValue","kNormalMatrixOffset","worldViewProjectionValue","kWorldViewProjectionOffset","colorValue","kColorOffset","lightDirectionValue","kLightDirectionOffset","blurPipeline","createComputePipeline","compute","commandEncoder","textures","map","STORAGE_BINDING","buffer0","mappedAtCreation","buffer1","blurParamsBuffer","computeConstants","computeBindGroup0","computeBindGroup1","computeBindGroup2","blockDim","computePass","beginComputePass","dispatchWorkgroups","ceil","i","settings","getCanvasMatrix","ortho","depthTexture","getCanvasRenderDescriptor","context","canvasTexture","getCurrentTexture","destroy","getDepthTexture","initCreator","assets","onAssetsUpdate","getContext","getPreferredCanvasFormat","configure","addImage","img","points","newTextureId","push","url","src","serializedData","serializedAssetsTextureUrl","asset","point","u","v","texture_id","forEach","Image","onload","stopCreator","unconfigure","runCreator","canvasPass","pickManager","pickMatrix","pickPass","draw_texture","vertex_data","typedArray","draw_triangle","pick_texture","pick_triangle","rafId","requestAnimationFrame","now","createCommandEncoder","canvasDescriptor","pick","commandBuffer","finish","submit","cancelAnimationFrame","clamp","value","getDefaultPoints","scale","getDefaultTextureScale","scaledWidth","scaledHeight","paddingX","paddingY","cross","a","b","dst","t0","t1","t2","subtract","normalize","sqrt","mat4","projection","depth","perspective","fieldOfViewYInRadians","aspect","zNear","zFar","f","tan","PI","rangeInv","right","bottom","near","far","identity","b00","b01","b02","b03","b10","b11","b12","b13","b20","b21","b22","b23","b30","b31","b32","b33","a00","a01","a02","a03","a10","a11","a12","a13","a20","a21","a22","a23","a30","a31","a32","a33","cameraAim","eye","up","zAxis","xAxis","yAxis","inverse","m","m00","m01","m02","m03","m10","m11","m12","m13","m20","m21","m22","m23","m30","m31","m32","m33","tmp0","tmp1","tmp2","tmp3","tmp4","tmp5","tmp6","tmp7","tmp8","tmp9","tmp10","tmp11","tmp12","tmp13","tmp14","tmp15","tmp16","tmp17","tmp18","tmp19","tmp20","tmp21","tmp22","tmp23","t3","d","transpose","aim","lookAt","tz","rotationX","angleInRadians","c","cos","s","sin","rotationY","rotationZ","sx","sy","sz","translate","rotateX","rotateY","rotateZ","type","flags","signature","undefined","name","byteSize","align","instance","members","template","static","s0","s1","s2","s3","s4","s5","s6","s7","s8","s9","s10","s11","s12","s13","s14","s15","s16","s17","s18","s19","s20","s21","s22","s23","s24","s25","s26","s27","s28","s29","s30","s31","s32","s33","s34","s35","s36","s37","s38","s39","s40","s41","s42","o0","o1","o2","o3","o4","o5","o6","o7","o8","o9","o10","o11","o12","o13","o14","o15","o16","o17","o18","o19","o20","o21","o22","o23","o24","o25","o26","o27","o28","o29","o30","o31","o32","o33","o34","o35","o36","o37","o38","o39","o40","o41","o42","o43","U","Uint8Array","a0","a1","a2","a3","a4","a5","$","Object","assign","memory","array","handle","slots","structure","const","bitOffset","bitSize","slot","structures","root","runtimeSafety","littleEndian","libc","env","recreateStructures","binaryString","atob","bytes","charCodeAt","Promise","r","setTimeout","loadModule","linkVariables","v0","v1","getSpecialExports","connect_web_gpu_programs","v2","connect_on_asset_update_callback","v3","ASSET_ID_TRESHOLD","v4","init_state","v5","add_texture","v6","update_points","v7","on_update_pick","v8","on_pointer_down","v9","on_pointer_up","v10","on_pointer_move","v11","canvas_render","v12","picks_render","v13","destroy_state","v14","init","accessorCache","Map","getAccessor","access","member","names","unaligned","Int","Uint","Bool","accessorName","join","accessor","DataView","prototype","get","handlerName","pop","getAccessorInt","signMask","valueMask","n","call","StructureType","Primitive","Array","Struct","Union","ErrorUnion","ErrorSet","Enum","Optional","Pointer","Slice","Vector","Opaque","ArgStruct","VariadicStruct","Function","structureNames","keys","StructureFlag","HasValue","HasObject","HasPointer","HasSlot","PrimitiveFlag","IsSize","ArrayFlag","HasSentinel","IsString","IsTypedArray","IsClampedArray","StructFlag","IsExtern","IsPacked","IsIterator","IsTuple","IsAllocator","IsPromise","IsGenerator","IsAbortSignal","IsOptional","PointerFlag","HasLength","IsMultiple","IsSingle","IsConst","IsNullable","SliceFlag","IsOpaque","ArgStructFlag","HasOptions","IsThrowing","IsAsync","MemberType","Void","Float","Type","Literal","Null","Undefined","Unsupported","memberNames","MemberFlag","IsRequired","IsReadOnly","IsPartOfSet","IsSelector","IsMethod","IsSentinel","IsBackingInt","CallResult","OK","Failure","Deadlock","Disabled","VisitorFlag","IsInactive","IsImmutable","IgnoreUncreated","IgnoreInactive","IgnoreArguments","IgnoreRetval","cls","mixins","mixin","object","defineEnvironment","initFunctions","current","defineClass","InvalidIntConversion","SyntaxError","arg","super","TypeError","NoInitializer","BufferSizeMismatch","dv","actual","msg","BufferExpected","acceptable","addArticle","formatList","InvalidInitializer","expected","isArray","received","getDescription","InvalidArrayInitializer","shapeless","ArrayLengthMismatch","elementConstructor","argLength","argConstructor","actualLength","child","InvalidSliceLength","MissingInitializers","missing","NoProperty","propName","find","ArgumentCountMismatch","variadic","updateText","argOffset","p","stack","adjustStack","enumerable","UndefinedArgument","NoCastingToPointer","NoCastingToFunction","ConstantConstraint","AlignmentConflict","align1","align2","TypeMismatch","NullPointer","PreviouslyFreed","InvalidPointerTarget","noun","article","ZigMemoryTargetRequired","OutOfBound","RangeError","index","NotUndefined","NotOnByteBoundary","struct","ReadOnly","ReadOnlyTarget","UnexpectedGenerator","ZigError","remove","Exit","adjustArgumentError","argIndex","search","lines","split","findIndex","includes","splice","replaceRangeError","throwReadOnly","toString","test","list","conj","sep","slice","variables","check","args","initialize","abandon","abandonModule","connect","consoleObject","sizeOf","T","alignOf","typeOf","structureNamesLC","insertObjects","dest","placeholders","placeholder","createObject","getBuffer","ArrayBuffer","obtainView","isConst","makeReadOnly","resetGlobalErrorSet","objectPlaceholders","scope","realSlots","defineStructure","finalizeStructure","replace","toLowerCase","jsFunctionThunkMap","jsFunctionCallerMap","jsFunctionControllerMap","jsFunctionIdMap","WeakMap","jsFunctionNextId","getFunctionId","fn","getFunctionThunk","jsThunkController","controllerAddress","getViewAddress","thunkAddress","createJsThunk","obtainZigView","createInboundCaller","futexHandle","result","awaiting","argStruct","startContext","updatePointerTargets","updateShadowTargets","endContext","onError","_","onReturn","retval","hasCallback","hasOwnProperty","Symbol","toStringTag","promise","finalizeAsyncCall","asyncIterator","pipeContents","defineArgIterator","thisEnv","allocatorTotal","filter","allocatorCount","callbackCount","signalCount","srcIndex","optName","opt","createPromiseCallback","createGeneratorCallback","createInboundSignal","iterator","handleJsCall","argAddress","argSize","caller","releaseFunction","thunk","controller","destroyJsThunk","releaseZigView","delete","exports","argType","returnType","imports","createOutboundCaller","self","runThunk","initPromise","invokeThunk","copyArguments","argList","argAlloc","destIndex","setters","generator","signal","createDefaultAllocator","createPromise","createGenerator","createSignal","attrs","fnAddress","isAsync","hasPointers","updatePointerAddresses","getShadowAddress","attrAddress","updateShadows","finalize","flushStdout","flushConsole","runVariadicThunk","findShadowView","int8","int16","int32","getInt8","setInt8","getInt16","setInt16","getInt32","setInt32","copiers","len","resetters","any","defineCopier","multiple","copy","getCopyFunction","defineResetter","reset","getResetFunction","defineRetvalCopier","shadowDV","address","byteOffset","copyExternBytes","addIntConversion","BigInt","number","Number","isFinite","structureFlags","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","bigint","findMemoryIndex","isMemoryMapping","memoryList","contextCount","shadowList","freeShadowMemory","cluster","writable","targetDV","start","maxAlignOffset","maxAlign","unalignedDV","allocateShadowMemory","unalignedAddress","maxAlignAddress","shadowOffset","MemoryType","Scratch","clusterDV","registerMemory","restoreView","unregisterMemory","findMemory","count","isOpaque","zig","getBufferAddress","allocateScratchMemory","freeScratchMemory","usizeMaxBuffer","cache","getTargetAddress","Normal","abandoned","nextValueIndex","valueMap","valueIndices","executable","table","initialTableLength","exportedFunctions","releaseFunctions","throwError","unlinkVariables","displayPanic","wasi","setCustomWASI","getObjectIndex","fromWebAssembly","toWebAssembly","exportFunction","charAt","apply","importFunction","exportFunctions","alias","importFunctions","instantiateWebAssembly","memoryInitial","memoryMax","tableInitial","multithreaded","res","suffix","w","WebAssembly","functions","wasiPreview","exportedModules","wasi_snapshot_preview1","kind","Module","getWASIHandler","getThreadHandler","Memory","initial","maximum","shared","__indirect_function_table","Table","element","Instance","customWASI","exportsPlusMemory","instanceProxy","Proxy","inst","writeBack","jsDV","zigDV","save","linkChildren","parentOffset","values","childDV","allocateMemory","recreateAddress","pointerMap","bufferMap","potentialClusters","other","clusters","findTargetClusters","clusterMap","inbound","currentTarget","newTarget","targetFlags","prevTarget","prevStart","prevEnd","currentCluster","forward","misaligned","allocateJsThunk","freeJsThunk","thunkSources","thunkMap","addJsThunkSource","thunkCount","unshift","funcId","sourceAddress","thunkObject","grow","fnId","indexOf","checkDataViewSize","viewMap","extractView","tag","registerView","isArrayLike","elementSize","Child","assignView","allocator","validateData","findViewAt","existing","prev","prevKey","alloc","allocateJSMemory","defineRestorer","newDV","protect","gp","getOwnPropertyDescriptors","df","defineProperty","protectProperties","protectElements","exclude","descriptors","createEnvironment","getArrayIterator","next","done","getArrayEntriesIterator","handleError","getArrayEntries","bind","defineArrayEntries","defineArrayIterator","getStructEntries","getStructEntriesIterator","getStructIterator","props","defineStructEntries","defineStructIterator","bindSlot","defineMember","applyTransform","defineBase64","dataView","str","defineDataView","defineMemberFloat","defineMemberUsing","getValue","getObject","setValue","defineMemberObject","getter","setter","defineToJSON","defineTypedArray","TypedArray","getTypedArray","BYTES_PER_ELEMENT","ta","defineMemberUint","addRuntimeCheck","defineValueOf","normalizeObject","INT_MAX","INT_MIN","forJSON","resultMap","process","for","String","key","defineMemberVoid","base64","toJSON","valueOf","staticDescriptors","accessorType","exec","argRequired","method","createConstructor","handlers","onCastError","comptimeFieldSlots","comptimeMembers","creating","arguments","create","createApplier","argKeys","normalCount","normalFound","normalMissing","specialFound","special","required","k","intType","prefix","globalThis","defineArgStruct","argMembers","retvalSetter","defineVivificatorStruct","defineVisitorArgStruct","finalizeArgStruct","defineFinalizerArray","proxyHandlers","defineVivificatorArray","elementStructure","deleteProperty","has","ownKeys","getOwnPropertyDescriptor","configurable","defineArray","propApplier","initializer","Vivificate","string","defineString","clampedArray","defineClampedArray","defineVisitorArray","finalizeArray","defineSentinel","defineFunction","argCount","setPrototypeOf","finalizeFunction","isPointerOf","Target","isCompatiblePointer","definePointer","targetStructure","targetType","targetSize","addressSize","readAddress","writeAddress","readLength","writeLength","updateTarget","all","active","findSentinel","setAddress","sentinelCount","setLength","getTargetObject","empty","getConstProxy","getTarget","setTarget","constTarget","Int8Array","isCompatibleBuffer","single","propSetters","begin","toPrimitive","hint","proxy","js","defineVisitor","finalizePointer","constProxies","readOnlyProxyHandlers","constTargetProxyHandlers","thisArg","definePrimitive","finalizePrimitive","getLength","adjustIndex","defineSlice","shapeDefiner","shapeChecker","validateValue","getSubArrayView","dv1","dv2","finalizeSlice","objectMembers","defineStruct","backingIntMember","backingInt","defineVectorEntries","defineZigIterator","defineVectorIterator","defineVisitorStruct","defineAlloc","free","defineFree","dupe","defineDupe","dict","__symbol","symbol","MEMORY","SLOTS","PARENT","ZIG","TYPE","FLAGS","PROPS","POINTER","SENTINEL","ARRAY","TARGET","ENTRIES","MAX_LENGTH","KEYS","ADDRESS","LENGTH","LAST_ADDRESS","LAST_LENGTH","PROXY","CACHE","SIZE","BIT_SIZE","ALIGN","CONST_TARGET","ENVIRONMENT","ATTRIBUTES","PRIMITIVE","SETTERS","TYPED_ARRAY","THROWING","PROMISE","GENERATOR","ALLOCATOR","SIGNATURE","UPDATE","RESTORE","VIVIFICATE","VISIT","COPY","SHAPE","INITIALIZE","RESTRICT","FINALIZE","CAST","RETURN","YIELD","defineProperties","getOwnPropertySymbols","defineValue","getErrorHandler","cb","getPrimitiveName","decodeText","arrays","encoding","decoder","decoders","TextDecoder","decode","encodeBase64","bstr","fromCharCode","btoa","decodeBase64","findSortedIndex","low","high","mid","floor","isMisaligned","alignForward","usizeMin","usizeMax","usizeInvalid","isInvalidAddress","adjustAddress","addend","transformIterable","first","findElements","Arg","isCompatibleType","TypeA","TypeB","isCompatibleInstanceOf","markAsSpecial","getSelf","getProxy","ObjectCache","visitChild","srcChild","builtinVisitors","clear","argSlots","rvSlot","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","body","hasAwait","currentDeps","outerResolve","reject","depQueues","Set","resolve","rej","deps","dep","obj","ret","wrapDeps","getResult","fnQueue","q","add","definition","o","prop","__webpack_exports__"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"index.mjs","mappings":"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C,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EACjGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EACjGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EACjGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAG3BC,EAAK,CAAC,EAAGC,EAAK,CAAC,EAAGC,EAAK,CAAC,EAAGC,EAAK,CAAC,EAAGC,EAAK,CAAC,EAAGC,GAAK,CAAC,EAAGC,GAAK,CAAC,EAAGC,GAAK,CAAC,EAAGC,GAAK,CAAC,EAAGC,GAAK,CAAC,EACvFC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,C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","sources":["webpack://@mateuszjs/magic-render/webpack/runtime/async module","webpack://@mateuszjs/magic-render/./src/WebGPU/canvasSizeObserver.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/getDevice.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/getTexture/index.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/pick.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/pointer.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/drawTriangle/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/blur/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/drawTexture/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/pickTexture/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/pickTriangle/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/drawMSDF/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/initPrograms.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/drawBezier/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/draw3dModelTexture/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/draw3dModel/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/draw3dModelLight/getProgram.ts","webpack://@mateuszjs/magic-render/./src/getCanvasMatrix.ts","webpack://@mateuszjs/magic-render/./src/getMultisampleTexture.ts","webpack://@mateuszjs/magic-render/./src/getDepthTexture.ts","webpack://@mateuszjs/magic-render/./src/getCanvasRenderDescriptor.ts","webpack://@mateuszjs/magic-render/./src/index.ts","webpack://@mateuszjs/magic-render/./src/run.ts","webpack://@mateuszjs/magic-render/./src/utils/clamp.ts","webpack://@mateuszjs/magic-render/./src/utils/getDefaultPoints.ts","webpack://@mateuszjs/magic-render/./src/utils/vec3.ts","webpack://@mateuszjs/magic-render/./src/utils/mat4.ts","webpack://@mateuszjs/magic-render/./src/logic/index.zig","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/accessors/all.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/accessors/int.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/constants.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/environment.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/errors.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/baseline.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/call-marshaling-inbound.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/call-marshaling-outbound.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/data-copying.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/int-conversion.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/memory-mapping.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/module-loading.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/object-linkage.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/pointer-synchronization.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/thunk-allocation.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/view-management.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/write-protection.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/index.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/iterators/for-array.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/iterators/for-struct.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/all.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/base64.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/data-view.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/float.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/object.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/primitive.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/to-json.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/typed-array.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/uint.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/value-of.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/void.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/all.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/arg-struct.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/array-like.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/array.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/function.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/pointer.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/primitive.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/slice.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/struct-like.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/struct.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/symbols.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/utils.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/visitors/all.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/visitors/in-arg-struct.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/visitors/in-struct.js","webpack://@mateuszjs/magic-render/webpack/bootstrap","webpack://@mateuszjs/magic-render/webpack/runtime/define property getters","webpack://@mateuszjs/magic-render/webpack/runtime/hasOwnProperty shorthand","webpack://@mateuszjs/magic-render/webpack/runtime/publicPath","webpack://@mateuszjs/magic-render/webpack/startup"],"sourcesContent":["var webpackQueues = typeof Symbol === \"function\" ? Symbol(\"webpack queues\") : \"__webpack_queues__\";\nvar webpackExports = typeof Symbol === \"function\" ? Symbol(\"webpack exports\") : \"__webpack_exports__\";\nvar webpackError = typeof Symbol === \"function\" ? Symbol(\"webpack error\") : \"__webpack_error__\";\nvar resolveQueue = (queue) => {\n\tif(queue && queue.d < 1) {\n\t\tqueue.d = 1;\n\t\tqueue.forEach((fn) => (fn.r--));\n\t\tqueue.forEach((fn) => (fn.r-- ? fn.r++ : fn()));\n\t}\n}\nvar wrapDeps = (deps) => (deps.map((dep) => {\n\tif(dep !== null && typeof dep === \"object\") {\n\t\tif(dep[webpackQueues]) return dep;\n\t\tif(dep.then) {\n\t\t\tvar queue = [];\n\t\t\tqueue.d = 0;\n\t\t\tdep.then((r) => {\n\t\t\t\tobj[webpackExports] = r;\n\t\t\t\tresolveQueue(queue);\n\t\t\t}, (e) => {\n\t\t\t\tobj[webpackError] = e;\n\t\t\t\tresolveQueue(queue);\n\t\t\t});\n\t\t\tvar obj = {};\n\t\t\tobj[webpackQueues] = (fn) => (fn(queue));\n\t\t\treturn obj;\n\t\t}\n\t}\n\tvar ret = {};\n\tret[webpackQueues] = x => {};\n\tret[webpackExports] = dep;\n\treturn ret;\n}));\n__webpack_require__.a = (module, body, hasAwait) => {\n\tvar queue;\n\thasAwait && ((queue = []).d = -1);\n\tvar depQueues = new Set();\n\tvar exports = module.exports;\n\tvar currentDeps;\n\tvar outerResolve;\n\tvar reject;\n\tvar promise = new Promise((resolve, rej) => {\n\t\treject = rej;\n\t\touterResolve = resolve;\n\t});\n\tpromise[webpackExports] = exports;\n\tpromise[webpackQueues] = (fn) => (queue && fn(queue), depQueues.forEach(fn), promise[\"catch\"](x => {}));\n\tmodule.exports = promise;\n\tbody((deps) => {\n\t\tcurrentDeps = wrapDeps(deps);\n\t\tvar fn;\n\t\tvar getResult = () => (currentDeps.map((d) => {\n\t\t\tif(d[webpackError]) throw d[webpackError];\n\t\t\treturn d[webpackExports];\n\t\t}))\n\t\tvar promise = new Promise((resolve) => {\n\t\t\tfn = () => (resolve(getResult));\n\t\t\tfn.r = 0;\n\t\t\tvar fnQueue = (q) => (q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn))));\n\t\t\tcurrentDeps.map((dep) => (dep[webpackQueues](fnQueue)));\n\t\t});\n\t\treturn fn.r ? promise : getResult();\n\t}, (err) => ((err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue)));\n\tqueue && queue.d < 0 && (queue.d = 0);\n};","function updateCanvasSize(\n canvas: HTMLCanvasElement,\n width: number,\n height: number,\n device: GPUDevice\n) {\n canvas.width = Math.max(1, Math.min(width, device.limits.maxTextureDimension2D))\n canvas.height = Math.max(1, Math.min(height, device.limits.maxTextureDimension2D))\n}\n\nexport default function canvasSizeObserver(\n canvas: HTMLCanvasElement,\n device: GPUDevice,\n callback: VoidFunction\n) {\n // TODO: should we also handle window.devicePixelRatio; ?\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const canvas = entry.target as HTMLCanvasElement\n const width = entry.contentBoxSize[0].inlineSize | 0\n const height = entry.contentBoxSize[0].blockSize | 0\n updateCanvasSize(canvas, width, height, device)\n callback()\n }\n })\n observer.observe(canvas)\n\n // observer calls it anyway but it just happens late enough that user see a flicker\n updateCanvasSize(canvas, canvas.clientWidth, canvas.clientHeight, device)\n}\n","export default async function getDevice() {\n if (!navigator.gpu) {\n throw Error(\"this browser does not support WebGPU\")\n }\n\n const adapter = await navigator.gpu.requestAdapter()\n \n\n if (!adapter) {\n throw Error(\"this browser supports webgpu but it appears disabled\")\n }\n\n const device = await adapter.requestDevice()\n device.lost.then((info) => {\n console.error(`WebGPU device was lost: ${info.message}`)\n\n if (info.reason !== \"destroyed\") {\n // reprot issue to the tracking system\n // getDevice(callback);\n }\n })\n\n return device\n}","import createCheckedImageData from \"./createCheckedImageData\"\nimport generateMipmapsArray from \"./generateMimapsArray\"\n\ninterface Options {\n mips?: boolean\n flipY?: boolean\n depthOrArrayLayers?: number\n}\n\ntype TextureSource =\n| ImageBitmap\n| HTMLVideoElement\n| HTMLCanvasElement\n| HTMLImageElement\n| OffscreenCanvas;\n\nconst numMipLevels = (...sizes: number[]) => {\n const maxSize = Math.max(...sizes)\n return 1 + Math.log2(maxSize) | 0\n}\n\nexport interface TextureSlice {\n source: GPUCopyExternalImageSource\n fakeMipmaps: boolean\n}\n\nfunction createCheckedMipmap(levels: Array<{ size: number, color: string }>) {\n const ctx = document.createElement('canvas').getContext('2d', {willReadFrequently: true})!\n\n return levels.map(({size, color}, i) => {\n ctx.canvas.width = size\n ctx.canvas.height = size\n ctx.fillStyle = i & 1 ? '#000' : '#fff'\n ctx.fillRect(0, 0, size, size)\n ctx.fillStyle = color\n ctx.fillRect(0, 0, size / 2, size / 2)\n ctx.fillRect(size / 2, size / 2, size / 2, size / 2)\n\n ctx.fillStyle = i & 1 ? '#FFFFFF' : '#000000'\n ctx.font = `${size * 0.3}px serif`\n ctx.textAlign = 'center'\n ctx.textBaseline = 'middle'\n ;[\n { x: 0.25, y: 0.25 },\n { x: 0.25, y: 0.75 },\n { x: 0.75, y: 0.75 },\n { x: 0.75, y: 0.25 },\n ].forEach(p => {\n ctx.fillText(i.toString(), p.x * size, p.y * size)\n })\n\n\n return ctx.getImageData(0, 0, size, size)\n })\n}\n\nexport function createTextureArray(device: GPUDevice, width: number, height: number, slices: number) {\n return device.createTexture({\n label: '2d array texture',\n format: 'rgba8unorm',\n mipLevelCount: 1 + Math.log2(2048),\n size: [width, height, slices],\n usage: GPUTextureUsage.TEXTURE_BINDING |\n GPUTextureUsage.COPY_DST |\n GPUTextureUsage.RENDER_ATTACHMENT,\n })\n}\n\n// adds texture ot texture array\nexport function attachSlice(\n device: GPUDevice,\n textue2dArray: GPUTexture,\n width: number,\n height: number,\n source: GPUCopyExternalImageSource,\n sliceIndex: number,\n options: Options = {}\n) {\n device.queue.copyExternalImageToTexture(\n { source },\n { texture: textue2dArray, origin: { z: sliceIndex }, mipLevel: 0 },\n { width, height },\n )\n\n // if (texSlice.fakeMipmaps) {\n // let mipLevel = 1, size = width\n // while ((size >>= 1) >= 1) {\n // const { data, width, height} = createCheckedImageData(size, mipLevel)\n // device.queue.writeTexture(\n // { texture: textue2dArray, origin: { z: sliceIndex }, mipLevel },\n // data,\n // { bytesPerRow: width * 4 },\n // { width, height },\n // );\n // mipLevel++\n // }\n // } else {\n // generateMipmapsArray(device, textue2dArray, {\n // baseArrayLayer: sliceIndex,\n // arrayLayerCount: 1,\n // });\n // }\n}\n\n\nexport function createTextureFromSource(device: GPUDevice, source: TextureSource, options: Options = {}) {\n const texture = device.createTexture({\n format: 'rgba8unorm',\n mipLevelCount: options.mips ? numMipLevels(source.width, source.height) : 1,\n size: [source.width, source.height],\n usage: GPUTextureUsage.TEXTURE_BINDING |\n GPUTextureUsage.COPY_DST |\n GPUTextureUsage.RENDER_ATTACHMENT,\n })\n copySourceToTexture(device, texture, source, options)\n return texture\n}\n\nfunction copySourceToTexture(device: GPUDevice, texture: GPUTexture, source: TextureSource, {flipY, depthOrArrayLayers}: Options = {}) {\n\n device.queue.copyExternalImageToTexture(\n { source, flipY, },\n { texture,\n // premultipliedAlpha: true\n },\n { width: source.width, height: source.height, depthOrArrayLayers },\n )\n\n // if (texture.mipLevelCount > 1) {\n // generateMipmaps(device, texture);\n // }\n}\n\nexport async function loadImageBitmap(url: string) {\n const res = await fetch(url)\n const blob = await res.blob()\n return await createImageBitmap(blob, { colorSpaceConversion: 'none', premultiplyAlpha: 'premultiply' })\n}\n\nexport async function createTextureFromImage(device: GPUDevice, url: string, options: Options) {\n const imgBitmap = await loadImageBitmap(url)\n return createTextureFromSource(device, imgBitmap, options)\n}\n","import mat4 from 'utils/mat4'\nimport { pointer } from './pointer'\nimport { on_update_pick } from '../logic/index.zig'\n\nconst NUM_PIXELS = 1\n\nexport default class PickManager {\n private pickBuffer: GPUBuffer\n private pickTexture: GPUTexture\n private pickDepthTexture: GPUTexture\n private isPreviousPickDone = true\n\n constructor(device: GPUDevice) {\n this.pickBuffer = device.createBuffer({\n size: NUM_PIXELS * 4,\n usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST,\n })\n\n this.pickTexture = device.createTexture({\n size: [1, 1],\n format: 'r32uint',\n usage: GPUTextureUsage.COPY_SRC | GPUTextureUsage.RENDER_ATTACHMENT,\n })\n\n this.pickDepthTexture = device.createTexture({\n size: [1, 1],\n format: 'depth24plus',\n usage: GPUTextureUsage.RENDER_ATTACHMENT,\n })\n }\n\n /**\n * Starts a picking render pass.\n * @param encoder The GPUCommandEncoder to use for the render pass.\n * @returns An object which contains render pass and a callback to end picking.\n */\n startPicking(encoder: GPUCommandEncoder): { pass: GPURenderPassEncoder; end: VoidFunction } {\n const descriptor: GPURenderPassDescriptor = {\n // describe which textures we want to raw to and how use them\n label: 'our render to canvas renderPass',\n colorAttachments: [\n {\n view: this.pickTexture.createView(),\n loadOp: 'clear',\n clearValue: [0, 0, 0, 1],\n storeOp: 'store',\n } as const,\n ],\n // depthStencilAttachment: {\n // view: this.pickDepthTexture.createView(), // placholder to calm down TS\n // depthLoadOp: 'clear',\n // depthClearValue: 1.0,\n // depthStoreOp: 'discard',\n // } as const,\n }\n\n const pass = encoder.beginRenderPass(descriptor)\n\n const width = 1\n const height = 1\n pass.setViewport(0, 0, width, height, 0, 1)\n // Set the scissor rectangle to clip rendering to the 1x1 area\n pass.setScissorRect(0, 0, width, height)\n\n const endPicking = () => {\n pass.end()\n\n if (this.isPreviousPickDone) {\n encoder.copyTextureToBuffer(\n {\n texture: this.pickTexture,\n origin: { x: 0, y: 0 },\n },\n {\n buffer: this.pickBuffer,\n },\n {\n width: NUM_PIXELS,\n }\n )\n }\n }\n\n return { pass, end: endPicking }\n }\n\n createMatrix(canvas: HTMLCanvasElement, canvasMatrix: Float32Array) {\n const { clientWidth, clientHeight } = canvas\n\n const tx = -(2 * (pointer.x / clientWidth) - 1)\n const ty = 2 * (pointer.y / clientHeight) - 1\n\n const pickMatrix = [\n mat4.scaling([clientWidth, clientHeight, 0]), // scale to 1px convers whole shader output\n mat4.translation([tx, ty, 0]),\n canvasMatrix,\n ].reduce(\n (accMatrix, rotationMatrix) => mat4.multiply(accMatrix, rotationMatrix),\n mat4.translation([-1, 1, 0]) // move (0,0) to the top left corner\n )\n\n return pickMatrix\n }\n\n async asyncPick() {\n if (!this.isPreviousPickDone) return\n this.isPreviousPickDone = false\n try {\n await this.pickBuffer.mapAsync(GPUMapMode.READ, 0, 4 * NUM_PIXELS)\n const [id] = new Uint32Array(this.pickBuffer.getMappedRange(0, 4 * NUM_PIXELS))\n on_update_pick(id)\n\n if (pointer.downCallback) {\n // to me 100% precise we should also check timestamp if pickign started after the click happened\n // but not sure if it's possible to expose this issue\n pointer.downCallback()\n pointer.downCallback = null // reset callback after use\n }\n\n this.pickBuffer.unmap()\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (err) {\n /* ignorign errors when map fails because device was destroyed(so buffer too and was unmapped before mapAsync completed)*/\n }\n this.isPreviousPickDone = true\n }\n}\n","import { on_pointer_move, on_pointer_down, on_pointer_up } from '../logic/index.zig'\n\nexport const pointer = {\n x: 0,\n y: 0,\n downCallback: null as VoidFunction | null,\n}\n\nexport default function initMouseController(canvas: HTMLCanvasElement) {\n pointer.x = 0\n pointer.y = 0\n\n function updatePointer(e: MouseEvent) {\n const rect = canvas.getBoundingClientRect()\n pointer.x = e.clientX - rect.left\n pointer.y = e.clientY - rect.top\n }\n\n canvas.addEventListener('mouseleave', () => {})\n\n canvas.addEventListener('mousemove', (e) => {\n updatePointer(e)\n on_pointer_move(pointer.x, canvas.height - pointer.y)\n })\n\n canvas.addEventListener('mousedown', (e) => {\n updatePointer(e)\n pointer.downCallback = () => {\n on_pointer_down(pointer.x, canvas.height - pointer.y)\n }\n })\n\n canvas.addEventListener('mouseup', () => {\n on_pointer_up()\n })\n\n canvas.addEventListener('wheel', (event) => {\n console.log(event.deltaY)\n })\n}\n","import shaderCode from './shader.wgsl'\n\nconst INSTANCE_STRIDE =\n 4 * 3 /* positon */ + 4 /* color */ + 3 /* value of roudned corner for each of three positions */\n\nexport default function getProgram(device: GPUDevice, presentationFormat: GPUTextureFormat) {\n const module = device.createShaderModule({\n label: 'draw triangle module',\n code: shaderCode,\n })\n\n const pipeline = device.createRenderPipeline({\n label: 'draw triangle pipeline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n arrayStride: INSTANCE_STRIDE * 4, // The size in bytes for one instance's data\n stepMode: 'instance',\n attributes: [\n { shaderLocation: 0, offset: 0, format: 'float32x4' }, // position 0\n { shaderLocation: 1, offset: 16, format: 'float32x4' }, // position 1\n { shaderLocation: 2, offset: 16 + 16, format: 'float32x4' }, // position 2\n { shaderLocation: 3, offset: 16 + 16 + 16, format: 'float32x4' }, // color\n { shaderLocation: 4, offset: 16 + 16 + 16 + 16, format: 'float32x3' }, // rounded corner values\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [\n {\n format: presentationFormat,\n blend: {\n color: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n },\n alpha: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n },\n },\n },\n ],\n },\n multisample: {\n count: 4,\n },\n })\n\n const uniformBufferSize = 16 /*projection matrix*/ * 4\n const uniformBuffer = device.createBuffer({\n label: 'uniforms',\n size: uniformBufferSize,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n\n const uniformValues = new Float32Array(uniformBufferSize / 4)\n const kMatrixOffset = 0\n const matrixValue = uniformValues.subarray(kMatrixOffset, kMatrixOffset + 16)\n\n return function drawTriangle(\n pass: GPURenderPassEncoder,\n worldProjectionMatrix: Float32Array,\n vertexData: Float32Array<ArrayBufferLike>\n ) {\n // console.log('worldProjectionMatrix', worldProjectionMatrix)\n const numInstances = vertexData.length / INSTANCE_STRIDE\n\n const vertexBuffer = device.createBuffer({\n label: 'vertex buffer vertices',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n\n // bind group should be pre-created and reuse instead of constantly initialized\n const bindGroup = device.createBindGroup({\n layout: pipeline.getBindGroupLayout(0),\n entries: [{ binding: 0, resource: { buffer: uniformBuffer } }],\n })\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n\n matrixValue.set(worldProjectionMatrix)\n\n device.queue.writeBuffer(uniformBuffer, 0, uniformValues)\n\n pass.setBindGroup(0, bindGroup)\n pass.draw(3, numInstances)\n }\n}\n","import shaderCode from \"./index.wgsl\"\n\nconst tileDim = 128\nconst batch = [4, 4]\n\nexport default function getProgram(device: GPUDevice) {\n const module = device.createShaderModule({\n label: \"blur shader module\",\n code: shaderCode,\n })\n\n const blurPipeline = device.createComputePipeline({\n layout: 'auto',\n compute: {\n module,\n entryPoint: 'main',\n },\n })\n\n return function renderBlur(\n texture: GPUTexture,\n commandEncoder: GPUCommandEncoder,\n ): GPUTexture {\n \n const textures = [0, 1].map(() => {\n return device.createTexture({\n size: {\n width: texture.width,\n height: texture.height,\n },\n format: 'rgba8unorm',\n usage:\n GPUTextureUsage.COPY_DST |\n GPUTextureUsage.STORAGE_BINDING |\n GPUTextureUsage.TEXTURE_BINDING,\n })\n })\n \n const buffer0 = (() => {\n const buffer = device.createBuffer({\n size: 4,\n mappedAtCreation: true,\n usage: GPUBufferUsage.UNIFORM,\n })\n new Uint32Array(buffer.getMappedRange())[0] = 0\n buffer.unmap()\n return buffer\n })()\n \n const buffer1 = (() => {\n const buffer = device.createBuffer({\n size: 4,\n mappedAtCreation: true,\n usage: GPUBufferUsage.UNIFORM,\n })\n new Uint32Array(buffer.getMappedRange())[0] = 1\n buffer.unmap()\n return buffer\n })()\n \n const blurParamsBuffer = device.createBuffer({\n size: 8,\n usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.UNIFORM,\n })\n\n const sampler = device.createSampler({\n magFilter: 'linear',\n minFilter: 'linear',\n })\n \n const computeConstants = device.createBindGroup({\n layout: blurPipeline.getBindGroupLayout(0),\n entries: [\n {\n binding: 0,\n resource: sampler,\n },\n {\n binding: 1,\n resource: {\n buffer: blurParamsBuffer,\n },\n },\n ],\n })\n \n const computeBindGroup0 = device.createBindGroup({\n layout: blurPipeline.getBindGroupLayout(1),\n entries: [\n {\n binding: 1,\n resource: texture.createView(),\n },\n {\n binding: 2,\n resource: textures[0].createView(),\n },\n {\n binding: 3,\n resource: {\n buffer: buffer0,\n },\n },\n ],\n })\n \n const computeBindGroup1 = device.createBindGroup({\n layout: blurPipeline.getBindGroupLayout(1),\n entries: [\n {\n binding: 1,\n resource: textures[0].createView(),\n },\n {\n binding: 2,\n resource: textures[1].createView(),\n },\n {\n binding: 3,\n resource: {\n buffer: buffer1,\n },\n },\n ],\n })\n \n const computeBindGroup2 = device.createBindGroup({\n layout: blurPipeline.getBindGroupLayout(1),\n entries: [\n {\n binding: 1,\n resource: textures[1].createView(),\n },\n {\n binding: 2,\n resource: textures[0].createView(),\n },\n {\n binding: 3,\n resource: {\n buffer: buffer0,\n },\n },\n ],\n })\n \n const settings = {\n filterSize: 15,\n iterations: 2,\n }\n\n // const blockDim = 128 - (15 - 1) = 114\n const blockDim = tileDim - (settings.filterSize - 1)\n device.queue.writeBuffer(\n blurParamsBuffer,\n 0,\n new Uint32Array([settings.filterSize, blockDim])\n )\n\n const computePass = commandEncoder.beginComputePass()\n computePass.setPipeline(blurPipeline)\n computePass.setBindGroup(0, computeConstants)\n\n computePass.setBindGroup(1, computeBindGroup0)\n computePass.dispatchWorkgroups(\n Math.ceil(texture.width / blockDim),\n Math.ceil(texture.height / batch[1])\n )\n\n computePass.setBindGroup(1, computeBindGroup1)\n computePass.dispatchWorkgroups(\n Math.ceil(texture.height / blockDim),\n Math.ceil(texture.width / batch[1])\n )\n\n for (let i = 0; i < settings.iterations - 1; ++i) {\n computePass.setBindGroup(1, computeBindGroup2)\n computePass.dispatchWorkgroups(\n Math.ceil(texture.width / blockDim), // 1200 / 114 = 11 ~ 10.52\n Math.ceil(texture.height / batch[1]) // 800 / 4 = 200\n )\n // exchange width with height!\n computePass.setBindGroup(1, computeBindGroup1)\n computePass.dispatchWorkgroups(\n Math.ceil(texture.height / blockDim),\n Math.ceil(texture.width / batch[1])\n )\n }\n\n computePass.end()\n\n return textures[1]\n }\n}\n","import shaderCode from './shader.wgsl'\n\nconst STRIDE = 4 + 2 // + 1 + 1 + 4\n\nexport default function getProgram(device: GPUDevice, presentationFormat: GPUTextureFormat) {\n const module = device.createShaderModule({\n label: 'texture module',\n code: shaderCode,\n })\n\n const sampler = device.createSampler({\n minFilter: 'linear',\n magFilter: 'linear',\n })\n\n const pipeline = device.createRenderPipeline({\n label: 'texture pipeline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n arrayStride: STRIDE * 4,\n attributes: [\n { shaderLocation: 0, offset: 0, format: 'float32x4' }, // destination position\n { shaderLocation: 1, offset: 16, format: 'float32x2' }, // source position\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [\n {\n format: presentationFormat,\n blend: {\n color: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n },\n alpha: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n },\n },\n },\n ],\n },\n multisample: {\n count: 4,\n },\n // depthStencil: {\n // depthWriteEnabled: true,\n // depthCompare: 'less',\n // format: 'depth24plus',\n // },\n })\n\n const uniformBufferSize = 16 /*projection matrix*/ * 4\n const uniformBuffer = device.createBuffer({\n label: 'uniforms',\n size: uniformBufferSize,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n\n const uniformValues = new Float32Array(uniformBufferSize / 4)\n const kMatrixOffset = 0\n const matrixValue = uniformValues.subarray(kMatrixOffset, kMatrixOffset + 16)\n\n return function drawTexture(\n pass: GPURenderPassEncoder,\n worldProjectionMatrix: Float32Array,\n vertexData: Float32Array<ArrayBufferLike>,\n texture: GPUTexture\n ) {\n const numVertices = (vertexData.length / STRIDE) | 0\n const vertexBuffer = device.createBuffer({\n label: 'vertex buffer vertices',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n\n // bind group should be pre-created and reuse instead of constantly initialized\n const bindGroup = device.createBindGroup({\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: { buffer: uniformBuffer } },\n { binding: 1, resource: sampler },\n { binding: 2, resource: texture.createView() },\n ],\n })\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n\n matrixValue.set(worldProjectionMatrix)\n\n device.queue.writeBuffer(uniformBuffer, 0, uniformValues)\n\n pass.setBindGroup(0, bindGroup)\n pass.draw(numVertices)\n }\n}\n","import shaderCode from './shader.wgsl'\n\nconst STRIDE = 4 + 2 + 1\n\nexport default function getProgram(device: GPUDevice) {\n const module = device.createShaderModule({\n label: 'pick texture module',\n code: shaderCode,\n })\n\n const sampler = device.createSampler({\n minFilter: 'linear',\n magFilter: 'linear',\n })\n\n const pipeline = device.createRenderPipeline({\n label: 'pick texture pipeline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n arrayStride: STRIDE * 4,\n attributes: [\n { shaderLocation: 0, offset: 0, format: 'float32x4' }, // destination position\n { shaderLocation: 1, offset: 16, format: 'float32x2' }, // source position\n { shaderLocation: 2, offset: 16 + 8, format: 'float32' }, // id\n // {shaderLocation: 3, offset: 16 + 8, format: 'float32x3'}, // id\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [\n {\n // format: debugPresentationFormat,\n format: 'r32uint',\n },\n ],\n },\n // primitive: {\n // cullMode: 'back',\n // },\n // depthStencil: {\n // depthWriteEnabled: true,\n // depthCompare: 'less',\n // format: 'depth24plus',\n // },\n })\n\n const uniformBufferSize = 16 /*projection matrix*/ * 4\n const uniformBuffer = device.createBuffer({\n label: 'uniforms',\n size: uniformBufferSize,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n\n const uniformValues = new Float32Array(uniformBufferSize / 4)\n const kMatrixOffset = 0\n const matrixValue = uniformValues.subarray(kMatrixOffset, kMatrixOffset + 16)\n\n return function pickTexture(\n pass: GPURenderPassEncoder,\n worldProjectionMatrix: Float32Array,\n vertexData: Float32Array<ArrayBufferLike>,\n texture: GPUTexture\n ) {\n const numVertices = (vertexData.length / STRIDE) | 0\n const vertexBuffer = device.createBuffer({\n label: 'pic texture vertex buffer vertices',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n\n // bind group should be pre-created and reuse instead of constantly initialized\n // TODO: avoid creatign bind group on every render\n const bindGroup = device.createBindGroup({\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: { buffer: uniformBuffer } },\n { binding: 1, resource: sampler },\n { binding: 2, resource: texture.createView() },\n ],\n })\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n\n // const translateWorldProjMatrix = mat4.translate(worldProjectionMatrix, [])\n matrixValue.set(worldProjectionMatrix)\n\n device.queue.writeBuffer(uniformBuffer, 0, uniformValues)\n\n pass.setBindGroup(0, bindGroup)\n pass.draw(numVertices)\n }\n}\n","import shaderCode from './shader.wgsl'\n\nconst STRIDE = 4 + 1\n\nexport default function getProgram(device: GPUDevice) {\n const module = device.createShaderModule({\n label: 'pick triangle module',\n code: shaderCode,\n })\n\n const pipeline = device.createRenderPipeline({\n label: 'pick triangle pipeline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n arrayStride: STRIDE * 4,\n attributes: [\n { shaderLocation: 0, offset: 0, format: 'float32x4' }, // destination position\n { shaderLocation: 1, offset: 16, format: 'float32' }, // id\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [\n {\n format: 'r32uint',\n // blend: {\n // color: {\n // srcFactor: 'one',\n // dstFactor: 'one-minus-src-alpha'\n // },\n // alpha: {\n // srcFactor: 'one',\n // dstFactor: 'one-minus-src-alpha'\n // },\n // },\n },\n ],\n },\n // depthStencil: {\n // depthWriteEnabled: true,\n // depthCompare: 'less',\n // format: 'depth24plus',\n // },\n })\n\n const uniformBufferSize = 16 /*projection matrix*/ * 4\n const uniformBuffer = device.createBuffer({\n label: 'uniforms',\n size: uniformBufferSize,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n\n const uniformValues = new Float32Array(uniformBufferSize / 4)\n const kMatrixOffset = 0\n const matrixValue = uniformValues.subarray(kMatrixOffset, kMatrixOffset + 16)\n\n return function pickTriangle(\n pass: GPURenderPassEncoder,\n worldProjectionMatrix: Float32Array,\n vertexData: Float32Array<ArrayBufferLike>\n ) {\n const numVertices = (vertexData.length / STRIDE) | 0\n const vertexBuffer = device.createBuffer({\n label: 'pick triangle vertex buffer vertices',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n\n // bind group should be pre-created and reuse instead of constantly initialized\n const bindGroup = device.createBindGroup({\n layout: pipeline.getBindGroupLayout(0),\n entries: [{ binding: 0, resource: { buffer: uniformBuffer } }],\n })\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n\n matrixValue.set(worldProjectionMatrix)\n\n device.queue.writeBuffer(uniformBuffer, 0, uniformValues)\n\n pass.setBindGroup(0, bindGroup)\n pass.draw(numVertices)\n }\n}\n","import shaderCode from './shader.wgsl'\n\nconst INSTANCE_STRIDE =\n 3 /*3 verticies*/ * (4 /*destinatio position*/ + 2) /*source position*/ + 4 /*color*/\n\nexport default function getProgram(device: GPUDevice, presentationFormat: GPUTextureFormat) {\n const module = device.createShaderModule({\n label: 'draw msdf module',\n code: shaderCode,\n })\n\n const sampler = device.createSampler({\n minFilter: 'linear',\n magFilter: 'linear',\n })\n\n const pipeline = device.createRenderPipeline({\n label: 'draw msdf pipeline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n arrayStride: INSTANCE_STRIDE * 4,\n stepMode: 'instance',\n attributes: [\n { shaderLocation: 0, offset: 0, format: 'float32x4' }, // p0 destination position\n { shaderLocation: 1, offset: 16, format: 'float32x2' }, // p0 source position\n { shaderLocation: 2, offset: 16 + 8, format: 'float32x4' }, // p1 destination position\n { shaderLocation: 3, offset: 16 + 8 + 16, format: 'float32x2' }, // p1 source position\n { shaderLocation: 4, offset: 16 + 8 + 16 + 8, format: 'float32x4' }, // p2 destination position\n { shaderLocation: 5, offset: 16 + 8 + 16 + 8 + 16, format: 'float32x2' }, // p2 source position\n { shaderLocation: 6, offset: 16 + 8 + 16 + 8 + 16 + 8, format: 'float32x4' }, // color\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [\n {\n format: presentationFormat,\n blend: {\n color: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n },\n alpha: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n },\n },\n },\n ],\n },\n multisample: {\n count: 4,\n },\n // depthStencil: {\n // depthWriteEnabled: true,\n // depthCompare: 'less',\n // format: 'depth24plus',\n // },\n })\n\n const uniformBufferSize = 16 /*projection matrix*/ * 4\n const uniformBuffer = device.createBuffer({\n label: 'draw msdf uniforms',\n size: uniformBufferSize,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n\n const uniformValues = new Float32Array(uniformBufferSize / 4)\n const kMatrixOffset = 0\n const matrixValue = uniformValues.subarray(kMatrixOffset, kMatrixOffset + 16)\n\n return function drawMSDF(\n pass: GPURenderPassEncoder,\n worldProjectionMatrix: Float32Array,\n vertexData: Float32Array,\n texture: GPUTexture\n ) {\n const numInstances = vertexData.length / INSTANCE_STRIDE\n\n const vertexBuffer = device.createBuffer({\n label: 'draw msdf - vertex buffer',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n\n // bind group should be pre-created and reuse instead of constantly initialized\n const bindGroup = device.createBindGroup({\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: { buffer: uniformBuffer } },\n { binding: 1, resource: sampler },\n { binding: 2, resource: texture.createView() },\n ],\n })\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n\n matrixValue.set(worldProjectionMatrix)\n\n device.queue.writeBuffer(uniformBuffer, 0, uniformValues)\n\n pass.setBindGroup(0, bindGroup)\n pass.draw(3, numInstances)\n }\n}\n","import getDrawTriangle from './drawTriangle/getProgram'\nimport getDrawBezier from './drawBezier/getProgram'\nimport getDraw3dModelTexture from './draw3dModelTexture/getProgram'\nimport getDraw3dModel from './draw3dModel/getProgram'\nimport getDraw3dModelLight from './draw3dModelLight/getProgram'\nimport getBlur from './blur/getProgram'\nimport getDrawtexture from './drawTexture/getProgram'\nimport getPickTexture from './pickTexture/getProgram'\nimport getPickTriangle from './pickTriangle/getProgram'\nimport getDrawMSDF from './drawMSDF/getProgram'\n\nexport let drawTriangle: ReturnType<typeof getDrawTriangle>\nexport let drawBezier: ReturnType<typeof getDrawBezier>\nexport let draw3dModel: ReturnType<typeof getDraw3dModel>\nexport let draw3dModelTexture: ReturnType<typeof getDraw3dModelTexture>\nexport let draw3dModelLight: ReturnType<typeof getDraw3dModelLight>\nexport let drawBlur: ReturnType<typeof getBlur>\nexport let drawTexture: ReturnType<typeof getDrawtexture>\nexport let pickTexture: ReturnType<typeof getPickTexture>\nexport let pickTriangle: ReturnType<typeof getPickTriangle>\nexport let drawMSDF: ReturnType<typeof getDrawMSDF>\n\nexport default function initPrograms(device: GPUDevice, presentationFormat: GPUTextureFormat) {\n drawTriangle = getDrawTriangle(device, presentationFormat)\n drawBezier = getDrawBezier(device, presentationFormat)\n draw3dModelTexture = getDraw3dModelTexture(device, presentationFormat)\n draw3dModel = getDraw3dModel(device, presentationFormat)\n draw3dModelLight = getDraw3dModelLight(device, presentationFormat)\n drawBlur = getBlur(device)\n drawTexture = getDrawtexture(device, presentationFormat)\n pickTexture = getPickTexture(device)\n pickTriangle = getPickTriangle(device)\n drawMSDF = getDrawMSDF(device, presentationFormat)\n}\n","import shaderCode from \"./shader.wgsl\"\n\nexport default function getProgram(device: GPUDevice, presentationFormat: GPUTextureFormat) {\n const module = device.createShaderModule({\n label: \"bezier shader module\",\n code: shaderCode,\n })\n\n const pipeline = device.createRenderPipeline({\n label: 'bezier pipline',\n layout: 'auto',\n primitive: {\n topology: `triangle-strip`,\n },\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n arrayStride: (1 /*t*/) * 4,\n attributes: [\n {shaderLocation: 0, offset: 0, format: 'float32'},\n ] as const,\n },\n {\n arrayStride: (1 /*dir*/) * 4,\n attributes: [\n {shaderLocation: 1, offset: 0, format: 'float32'},\n ] as const,\n },\n {\n arrayStride: (1 /*segmentIndex*/) * 4,\n attributes: [\n {shaderLocation: 2, offset: 0, format: 'uint32'},\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [{ format: presentationFormat }],\n },\n depthStencil: {\n depthWriteEnabled: false,\n depthCompare: 'always',\n format: 'depth24plus',\n },\n })\n\n return function renderBezierCurve(\n pass: GPURenderPassEncoder,\n matrix: Float32Array,\n pointsData: Float32Array,\n tData: Float32Array,\n dirData: Float32Array,\n segmentIndexData: Uint32Array,\n zoom: number,\n ) {\n // for each single segment we need to create a buffer OR more likely better is to combine\n // all of these data into one buffer!\n\n const storageBufferSize = (pointsData.length/*points*/) * 4\n const storageBuffer = device.createBuffer({\n label: 'storage points',\n size: storageBufferSize,\n usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST,\n })\n\n\n const uniformBufferSize = (16/*matrix*/ + 4/*zoom*/) * 4\n const uniformBuffer = device.createBuffer({\n label: 'uniforms',\n size: uniformBufferSize,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n\n const uniformValues = new Float32Array(uniformBufferSize / 4)\n\n // offsets to the various uniform values in float32 indices\n const kMatrixOffset = 0\n const kZoomOffset = 16\n\n const matrixValue = uniformValues.subarray(kMatrixOffset, kMatrixOffset + 16)\n const zoomValue = uniformValues.subarray(kZoomOffset, kZoomOffset + 1)\n\n const bindGroup = device.createBindGroup({\n label: 'bezier bind group for object',\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: { buffer: uniformBuffer }},\n { binding: 1, resource: { buffer: storageBuffer }},\n ],\n })\n\n\n const tBuffer = device.createBuffer({\n label: 'bezier vertex buffer vertices',\n size: tData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(tBuffer, 0, tData)\n\n const dirBuffer = device.createBuffer({\n label: 'bezier vertex buffer vertices',\n size: dirData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(dirBuffer, 0, dirData)\n\n const segmentIndexBuffer = device.createBuffer({\n label: 'bezier vertex buffer vertices',\n size: segmentIndexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(segmentIndexBuffer, 0, segmentIndexData) // not sure if it should not be 1\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, tBuffer) // index of the buffer in the pipline\n pass.setVertexBuffer(1, dirBuffer)\n pass.setVertexBuffer(2, segmentIndexBuffer)\n\n matrixValue.set(matrix)\n zoomValue.set(new Float32Array([zoom]))\n // p1, p2, p3, p4\n // t = 0, dir = 1\n // t = 0, dir = -1\n // t = 0.5, dir = 1\n // t = 0.5, dir = -1\n // t = 1, dir = 1\n // t = 1, dir = -1\n // change p1, p2, p3, p4\n\n // upload the uniform values to the uniform buffer\n device.queue.writeBuffer(uniformBuffer, 0, uniformValues)\n\n device.queue.writeBuffer(storageBuffer, 0, pointsData)\n\n pass.setBindGroup(0, bindGroup)\n pass.draw(tData.length)\n }\n}\n","import shaderCode from \"./shader.wgsl\"\n\nexport default function getProgram(device: GPUDevice, presentationFormat: GPUTextureFormat) {\n const module = device.createShaderModule({\n label: \"3d model texture shader module\",\n code: shaderCode,\n })\n\n const pipeline = device.createRenderPipeline({\n label: '3d model texture pipline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n arrayStride: (3 + 2) * 4, // (3 + 2) floats, 4 bytes each\n attributes: [\n {shaderLocation: 0, offset: 0, format: 'float32x3'}, // position\n {shaderLocation: 1, offset: (3) * 4, format: 'float32x2'}, // texture coord\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [{ format: presentationFormat }],\n },\n depthStencil: {\n depthWriteEnabled: false,\n depthCompare: 'always',\n format: 'depth24plus',\n },\n })\n\n\n return function renderDraw3dModelTexture(\n pass: GPURenderPassEncoder,\n matrix: Float32Array,\n texture: GPUTexture,\n vertexData: Float32Array,\n indexData: Uint32Array,\n ) {\n const sampler = device.createSampler({\n magFilter: \"linear\",\n minFilter: 'linear',\n })\n\n const uniformBufferSize = (16) * 4\n const uniformBuffer = device.createBuffer({\n label: 'uniforms',\n size: uniformBufferSize,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n\n const uniformValues = new Float32Array(uniformBufferSize / 4)\n\n // offsets to the various uniform values in float32 indices\n const kMatrixOffset = 0\n\n const matrixValue = uniformValues.subarray(kMatrixOffset, kMatrixOffset + 16)\n\n const numVertices = indexData.length\n const vertexBuffer = device.createBuffer({\n label: '3d model texture vertex buffer vertices',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n const indexBuffer = device.createBuffer({\n label: '3d model texture index buffer',\n size: indexData.byteLength,\n usage: GPUBufferUsage.INDEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(indexBuffer, 0, indexData)\n\n const bindGroup = device.createBindGroup({\n label: '3d model texture bind group for object',\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: { buffer: uniformBuffer }},\n { binding: 1, resource: sampler },\n { binding: 2, resource: texture.createView() },\n ],\n })\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n pass.setIndexBuffer(indexBuffer, 'uint32')\n\n matrixValue.set(matrix)\n\n device.queue.writeBuffer(uniformBuffer, 0, uniformValues)\n\n pass.setBindGroup(0, bindGroup)\n pass.drawIndexed(numVertices)\n }\n}\n","import shaderCode from \"./shader.wgsl\"\n\nexport default function getProgram(device: GPUDevice, presentationFormat: GPUTextureFormat) {\n const module = device.createShaderModule({\n label: \"3d model shader module\",\n code: shaderCode,\n })\n\n const pipeline = device.createRenderPipeline({\n label: '3d model pipline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n // position + texture coords\n // arrayStride: (3) * 4, // (3) floats, 4 bytes each\n arrayStride: (3) * 4, // (3) floats, 4 bytes each\n attributes: [\n {shaderLocation: 0, offset: 0, format: 'float32x3'}, // position\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [{ format: presentationFormat }],\n },\n primitive: {\n cullMode: 'back',\n },\n depthStencil: {\n depthWriteEnabled: true,\n depthCompare: 'less',\n format: 'depth24plus',\n },\n })\n\n\n return function renderDraw3dModel(\n pass: GPURenderPassEncoder,\n matrix: Float32Array,\n vertexData: Float32Array,\n indexData: Uint32Array,\n ) {\n // matrix\n const uniformBufferSize = (16) * 4\n const uniformBuffer = device.createBuffer({\n label: 'uniforms',\n size: uniformBufferSize,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n\n const uniformValues = new Float32Array(uniformBufferSize / 4)\n\n // offsets to the various uniform values in float32 indices\n const kMatrixOffset = 0\n\n const matrixValue = uniformValues.subarray(kMatrixOffset, kMatrixOffset + 16)\n\n const numVertices = indexData.length\n const vertexBuffer = device.createBuffer({\n label: 'vertex buffer vertices',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n const indexBuffer = device.createBuffer({\n label: 'index buffer',\n size: indexData.byteLength,\n usage: GPUBufferUsage.INDEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(indexBuffer, 0, indexData)\n\n const bindGroup = device.createBindGroup({\n label: 'bind group for object',\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: { buffer: uniformBuffer }},\n ],\n })\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n pass.setIndexBuffer(indexBuffer, 'uint32')\n\n matrixValue.set(matrix)\n\n // upload the uniform values to the uniform buffer\n device.queue.writeBuffer(uniformBuffer, 0, uniformValues)\n\n pass.setBindGroup(0, bindGroup)\n pass.drawIndexed(numVertices)\n }\n}\n","import shaderCode from \"./shader.wgsl\"\n\ninterface Uniforms {\n worldViewProjection: Float32Array,\n normalMatrix: Float32Array,\n lightColor: Float32Array,\n lightDirection: Float32Array\n}\n\nexport default function getProgram(device: GPUDevice, presentationFormat: GPUTextureFormat) {\n const module = device.createShaderModule({\n label: \"3d model light shader module\",\n code: shaderCode,\n })\n\n const pipeline = device.createRenderPipeline({\n label: '3d model light pipline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n // position + texture coords\n // arrayStride: (3) * 4, // (3) floats, 4 bytes each\n arrayStride: (3 + 3) * 4, // (3) floats, 4 bytes each\n attributes: [\n {shaderLocation: 0, offset: 0, format: 'float32x3'}, // position\n {shaderLocation: 1, offset: 12, format: 'float32x3'}, // normal\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [{ format: presentationFormat }],\n },\n primitive: {\n cullMode: 'back',\n },\n depthStencil: {\n depthWriteEnabled: true,\n depthCompare: 'less',\n format: 'depth24plus',\n },\n })\n\n\n return function renderDraw3dModelLight(\n pass: GPURenderPassEncoder,\n uniform: Uniforms,\n vertexData: Float32Array,\n indexData: Uint32Array,\n ) {\n const {\n worldViewProjection,\n normalMatrix,\n lightColor,\n lightDirection,\n } = uniform\n // matrix\n const uniformBufferSize = (12 + 16 + 4 + 4) * 4\n const uniformBuffer = device.createBuffer({\n label: 'uniforms',\n size: uniformBufferSize,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n\n const uniformValues = new Float32Array(uniformBufferSize / 4)\n\n // offsets to the various uniform values in float32 indices\n const kNormalMatrixOffset = 0\n const kWorldViewProjectionOffset = 12\n const kColorOffset = 28\n const kLightDirectionOffset = 32\n\n const normalMatrixValue = uniformValues.subarray(kNormalMatrixOffset, kNormalMatrixOffset + 12)\n const worldViewProjectionValue = uniformValues.subarray(\n kWorldViewProjectionOffset, kWorldViewProjectionOffset + 16)\n const colorValue = uniformValues.subarray(kColorOffset, kColorOffset + 4)\n const lightDirectionValue =\n uniformValues.subarray(kLightDirectionOffset, kLightDirectionOffset + 3)\n\n const bindGroup = device.createBindGroup({\n label: 'bind group for object',\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: { buffer: uniformBuffer }},\n ],\n })\n\n const numVertices = indexData.length\n const vertexBuffer = device.createBuffer({\n label: 'vertex buffer vertices',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n const indexBuffer = device.createBuffer({\n label: 'index buffer',\n size: indexData.byteLength,\n usage: GPUBufferUsage.INDEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(indexBuffer, 0, indexData)\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n pass.setIndexBuffer(indexBuffer, 'uint32')\n\n\n normalMatrixValue.set(normalMatrix)\n worldViewProjectionValue.set(worldViewProjection)\n colorValue.set(lightColor)\n lightDirectionValue.set(lightDirection)\n\n // upload the uniform values to the uniform buffer\n device.queue.writeBuffer(uniformBuffer, 0, uniformValues)\n\n pass.setBindGroup(0, bindGroup)\n pass.drawIndexed(numVertices)\n }\n}\n","import mat4 from 'utils/mat4'\n\nexport default function getCanvasMatrix(canvas: HTMLCanvasElement) {\n const matrix = mat4.ortho(\n 0, // left\n canvas.clientWidth, // right\n 0, // bottom\n canvas.clientHeight, // top\n 1, // near\n -1 // far\n )\n\n return matrix\n}\n","let multisampleTexture: GPUTexture | undefined\n\nexport default function getMultisampleTexture(\n device: GPUDevice,\n width: number,\n height: number,\n format: GPUTextureFormat\n) {\n if (\n !multisampleTexture ||\n multisampleTexture.width !== width ||\n multisampleTexture.height !== height\n ) {\n multisampleTexture?.destroy()\n multisampleTexture = device.createTexture({\n size: [width, height],\n format: 'depth24plus',\n usage: GPUTextureUsage.RENDER_ATTACHMENT,\n })\n multisampleTexture = device.createTexture({\n format: format,\n usage: GPUTextureUsage.RENDER_ATTACHMENT,\n size: [width, height],\n sampleCount: 4,\n })\n }\n\n return multisampleTexture\n}\n","let depthTexture: GPUTexture | undefined\n\nexport default function getDepthTexture(device: GPUDevice, width: number, height: number) {\n if (!depthTexture || depthTexture.width !== width || depthTexture.height !== height) {\n depthTexture?.destroy()\n depthTexture = device.createTexture({\n size: [width, height],\n format: 'depth24plus',\n usage: GPUTextureUsage.RENDER_ATTACHMENT,\n })\n }\n\n return depthTexture\n}\n","import getMultisampleTexture from './getMultisampleTexture'\nimport getDepthTexture from './getDepthTexture'\n\nexport default function getCanvasRenderDescriptor(context: GPUCanvasContext, device: GPUDevice) {\n // here we need to render that texture into canvas\n const canvasTexture = context.getCurrentTexture()\n\n const depthTexture = getDepthTexture(device, canvasTexture.width, canvasTexture.height)\n const multisampleTexture = getMultisampleTexture(\n device,\n canvasTexture.width,\n canvasTexture.height,\n canvasTexture.format\n )\n const descriptor: GPURenderPassDescriptor = {\n // describe which textures we want to raw to and how use them\n label: 'our render to canvas renderPass',\n colorAttachments: [\n {\n view: multisampleTexture.createView(),\n resolveTarget: canvasTexture.createView(), // resolveTarget is used to resolve multisample texture into single sample texture\n clearValue: [0, 0, 0, 1],\n loadOp: 'clear', // before rendering clear the texture to value \"clear\". Other option is \"load\" to load existing content of the texture into GPU so we can draw over it\n storeOp: 'store', // to store the result of what we draw, other option is \"discard\"\n },\n ],\n // depthStencilAttachment: {\n // view: depthTexture.createView(), // placholder to calm down TS\n // depthClearValue: 1.0,\n // depthLoadOp: 'clear',\n // depthStoreOp: 'discard',\n // },\n }\n\n return descriptor\n}\n","import canvasSizeObserver from 'WebGPU/canvasSizeObserver'\nimport getDevice from 'WebGPU/getDevice'\nimport initPrograms from 'WebGPU/programs/initPrograms'\nimport runCreator from 'run'\nimport { createTextureFromSource } from 'WebGPU/getTexture'\nimport {\n init_state,\n add_asset,\n remove_asset,\n connect_on_asset_update_callback,\n destroy_state,\n import_icons,\n} from './logic/index.zig'\nimport initMouseController from 'WebGPU/pointer'\nimport getDefaultPoints from 'utils/getDefaultPoints'\nimport IconsPng from '../msdf/output/icons.png'\nimport IconsJson from '../msdf/output/icons.json'\n\nexport type SerializedAsset = Omit<AssetZig, 'texture_id'> & {\n url: string\n}\n\nexport interface CreatorAPI {\n addImage: (img: HTMLImageElement, points?: PointUV[]) => void\n removeAsset: VoidFunction\n destroy: VoidFunction\n}\n\nexport interface TextureSource {\n url: string\n texture: GPUTexture\n}\n\nexport default async function initCreator(\n canvas: HTMLCanvasElement,\n assets: SerializedAsset[],\n onAssetsUpdate: (assets: SerializedAsset[]) => void\n): Promise<CreatorAPI> {\n /* setup WebGPU stuff */\n const device = await getDevice()\n\n init_state(canvas.clientWidth, canvas.clientHeight)\n const context = canvas.getContext('webgpu')\n if (!context) throw Error('WebGPU from canvas needs to be always provided')\n\n const presentationFormat = navigator.gpu.getPreferredCanvasFormat()\n context.configure({\n device,\n format: presentationFormat,\n // Specify we want both RENDER_ATTACHMENT and COPY_SRC since we\n // will copy out of the swapchain texture.\n })\n\n canvasSizeObserver(canvas, device, () => {\n // state.needsRefresh = true\n })\n\n initPrograms(device, presentationFormat)\n\n initMouseController(canvas)\n\n const textures: TextureSource[] = [{} as TextureSource /*reserved for icons texture*/]\n connect_on_asset_update_callback((serializedData: AssetZig[]) => {\n const serializedAssetsTextureUrl = [...serializedData].map<SerializedAsset>((asset) => ({\n points: [...asset.points].map((point) => ({\n x: point.x,\n y: point.y,\n u: point.u,\n v: point.v,\n })),\n url: textures[asset.texture_id].url,\n }))\n onAssetsUpdate(serializedAssetsTextureUrl)\n })\n\n function addImage(img: HTMLImageElement, points?: PointUV[]) {\n const newTextureId = textures.length\n textures.push({\n url: img.src,\n texture: createTextureFromSource(device, img, { flipY: true }),\n })\n\n add_asset(points || getDefaultPoints(img, canvas), newTextureId)\n }\n\n assets.forEach((asset) => {\n const img = new Image()\n img.src = asset.url\n img.onload = () => {\n addImage(img, asset.points)\n }\n })\n\n const icons = new Image()\n icons.src = IconsPng\n icons.onload = () => {\n textures[0].texture = createTextureFromSource(device, icons, { flipY: true })\n import_icons(\n IconsJson.chars.flatMap((char) => [\n char.id,\n char.x / icons.width,\n char.y / icons.height,\n char.width / icons.width,\n char.height / icons.height,\n char.width,\n char.height,\n ])\n )\n }\n\n const stopCreator = runCreator(canvas, context, device, presentationFormat, textures)\n\n function removeAsset() {\n remove_asset()\n }\n\n return {\n addImage,\n removeAsset,\n destroy: () => {\n stopCreator()\n destroy_state()\n context.unconfigure()\n device.destroy()\n },\n }\n}\n","import getCanvasRenderDescriptor from 'getCanvasRenderDescriptor'\nimport {\n drawTexture,\n drawTriangle,\n drawMSDF,\n pickTexture,\n pickTriangle,\n} from 'WebGPU/programs/initPrograms'\nimport getCanvasMatrix from 'getCanvasMatrix'\nimport PickManager from 'WebGPU/pick'\nimport { canvas_render, picks_render, connect_web_gpu_programs } from 'logic/index.zig'\nimport { TextureSource } from '.'\nimport { pointer } from 'WebGPU/pointer'\n\nexport const transformMatrix = new Float32Array()\nexport const MAP_BACKGROUND_SCALE = 1000\n\nexport default function runCreator(\n canvas: HTMLCanvasElement,\n context: GPUCanvasContext,\n device: GPUDevice,\n presentationFormat: GPUTextureFormat,\n textures: TextureSource[]\n): VoidFunction {\n const canvasMatrix = getCanvasMatrix(canvas)\n let canvasPass: GPURenderPassEncoder\n\n const pickManager = new PickManager(device)\n let pickMatrix: Float32Array\n let pickPass: GPURenderPassEncoder\n\n connect_web_gpu_programs({\n draw_texture: (vertex_data, texture_id) =>\n drawTexture(canvasPass, canvasMatrix, vertex_data.typedArray, textures[texture_id].texture),\n draw_msdf: (vertex_data, texture_id) => {\n if (textures[texture_id].texture) {\n drawMSDF(canvasPass, canvasMatrix, vertex_data.typedArray, textures[texture_id].texture)\n }\n },\n draw_triangle: (vertex_data) => drawTriangle(canvasPass, canvasMatrix, vertex_data.typedArray),\n pick_texture: (vertex_data, texture_id) =>\n pickTexture(pickPass, pickMatrix, vertex_data.typedArray, textures[texture_id].texture),\n pick_triangle: (vertex_data) => pickTriangle(pickPass, pickMatrix, vertex_data.typedArray),\n })\n\n let rafId = 0\n const lastPickPointer: Point = { x: 0, y: 0 }\n\n function draw(now: DOMHighResTimeStamp) {\n const encoder = device.createCommandEncoder()\n\n const canvasDescriptor = getCanvasRenderDescriptor(context, device)\n canvasPass = encoder.beginRenderPass(canvasDescriptor)\n canvas_render()\n canvasPass.end()\n\n if (lastPickPointer.x !== pointer.x || lastPickPointer.y !== pointer.y) {\n lastPickPointer.x = pointer.x\n lastPickPointer.y = pointer.y\n pickMatrix = pickManager.createMatrix(canvas, canvasMatrix)\n const pick = pickManager.startPicking(encoder)\n pickPass = pick.pass\n picks_render()\n pick.end()\n }\n\n const commandBuffer = encoder.finish()\n device.queue.submit([commandBuffer])\n\n pickManager.asyncPick()\n\n rafId = requestAnimationFrame(draw)\n }\n\n rafId = requestAnimationFrame(draw)\n\n return () => {\n cancelAnimationFrame(rafId)\n }\n}\n","export default function clamp(value: number, min: number, max: number) {\n return Math.min(max, Math.max(min, value))\n}","import clamp from 'utils/clamp'\n\nexport default function getDefaultPoints(\n img: HTMLImageElement,\n canvas: HTMLCanvasElement\n): PointUV[] {\n const scale = getDefaultTextureScale(img, canvas)\n const scaledWidth = img.width * scale\n const scaledHeight = img.height * scale\n const paddingX = (canvas.width - scaledWidth) * 0.5\n const paddingY = (canvas.height - scaledHeight) * 0.5\n\n return [\n { x: paddingX, y: paddingY + scaledHeight, u: 0, v: 1 },\n { x: paddingX + scaledWidth, y: paddingY + scaledHeight, u: 1, v: 1 },\n { x: paddingX + scaledWidth, y: paddingY, u: 1, v: 0 },\n { x: paddingX, y: paddingY, u: 0, v: 0 },\n ]\n}\n\n/**\n * Returns visualy pleasant size of texture, to make sure it doesn't overflow canvas but also is not too small to manipulate\n */\nfunction getDefaultTextureScale(img: HTMLImageElement, canvas: HTMLCanvasElement) {\n const heightDiff = canvas.height - img.height\n const widthDiff = canvas.width - img.width\n\n if (heightDiff < widthDiff) {\n const height = clamp(img.height, canvas.height * 0.2, canvas.height * 0.8)\n return height / img.height\n }\n\n const width = clamp(img.width, canvas.width * 0.2, canvas.width * 0.8)\n return width / img.width\n}\n","\nconst vec3 = {\n cross(a: number[] | Float32Array, b: number[] | Float32Array, dst = new Float32Array(3)) {\n const t0 = a[1] * b[2] - a[2] * b[1]\n const t1 = a[2] * b[0] - a[0] * b[2]\n const t2 = a[0] * b[1] - a[1] * b[0]\n\n dst[0] = t0\n dst[1] = t1\n dst[2] = t2\n\n return dst\n },\n\n subtract(a: number[] | Float32Array, b: number[] | Float32Array, dst = new Float32Array(3)) {\n dst[0] = a[0] - b[0]\n dst[1] = a[1] - b[1]\n dst[2] = a[2] - b[2]\n\n return dst\n },\n\n normalize(v : number[] | Float32Array, dst = new Float32Array(3)) {\n const length = Math.sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2])\n // make sure we don't divide by 0.\n if (length > 0.00001) {\n dst[0] = v[0] / length\n dst[1] = v[1] / length\n dst[2] = v[2] / length\n } else {\n dst[0] = 0\n dst[1] = 0\n dst[2] = 0\n }\n\n return dst\n },\n}\n\nexport default vec3","import vec3 from \"./vec3\"\n\nconst mat4 = {\n projection(width: number, height: number, depth: number, dst: Float32Array) {\n // Note: This matrix flips the Y axis so that 0 is at the top.\n return mat4.ortho(0, width, height, 0, depth, -depth, dst)\n },\n\n perspective(fieldOfViewYInRadians: number, aspect: number, zNear: number, zFar: number, dst = new Float32Array(16)) {\n const f = Math.tan(Math.PI * 0.5 - 0.5 * fieldOfViewYInRadians)\n const rangeInv = 1 / (zNear - zFar)\n\n dst[0] = f / aspect\n dst[1] = 0\n dst[2] = 0\n dst[3] = 0\n\n dst[4] = 0\n dst[5] = f\n dst[6] = 0\n dst[7] = 0\n\n dst[8] = 0\n dst[9] = 0\n dst[10] = zFar * rangeInv\n dst[11] = -1\n\n dst[12] = 0\n dst[13] = 0\n dst[14] = zNear * zFar * rangeInv\n dst[15] = 0\n\n return dst\n },\n\n ortho(left: number, right: number, bottom: number, top: number, near: number, far: number, dst = new Float32Array(16)) {\n dst[0] = 2 / (right - left)\n dst[1] = 0\n dst[2] = 0\n dst[3] = 0\n\n dst[4] = 0\n dst[5] = 2 / (top - bottom)\n dst[6] = 0\n dst[7] = 0\n\n dst[8] = 0\n dst[9] = 0\n dst[10] = 1 / (near - far)\n dst[11] = 0\n\n dst[12] = (right + left) / (left - right)\n dst[13] = (top + bottom) / (bottom - top)\n dst[14] = near / (near - far)\n dst[15] = 1\n\n return dst\n },\n\n identity(dst = new Float32Array(16)) {\n dst[ 0] = 1; dst[ 1] = 0; dst[ 2] = 0; dst[ 3] = 0\n dst[ 4] = 0; dst[ 5] = 1; dst[ 6] = 0; dst[ 7] = 0\n dst[ 8] = 0; dst[ 9] = 0; dst[10] = 1; dst[11] = 0\n dst[12] = 0; dst[13] = 0; dst[14] = 0; dst[15] = 1\n return dst\n },\n\n multiply(a: Float32Array, b: Float32Array, dst = new Float32Array(16)) {\n const b00 = b[0 * 4 + 0]\n const b01 = b[0 * 4 + 1]\n const b02 = b[0 * 4 + 2]\n const b03 = b[0 * 4 + 3]\n const b10 = b[1 * 4 + 0]\n const b11 = b[1 * 4 + 1]\n const b12 = b[1 * 4 + 2]\n const b13 = b[1 * 4 + 3]\n const b20 = b[2 * 4 + 0]\n const b21 = b[2 * 4 + 1]\n const b22 = b[2 * 4 + 2]\n const b23 = b[2 * 4 + 3]\n const b30 = b[3 * 4 + 0]\n const b31 = b[3 * 4 + 1]\n const b32 = b[3 * 4 + 2]\n const b33 = b[3 * 4 + 3]\n const a00 = a[0 * 4 + 0]\n const a01 = a[0 * 4 + 1]\n const a02 = a[0 * 4 + 2]\n const a03 = a[0 * 4 + 3]\n const a10 = a[1 * 4 + 0]\n const a11 = a[1 * 4 + 1]\n const a12 = a[1 * 4 + 2]\n const a13 = a[1 * 4 + 3]\n const a20 = a[2 * 4 + 0]\n const a21 = a[2 * 4 + 1]\n const a22 = a[2 * 4 + 2]\n const a23 = a[2 * 4 + 3]\n const a30 = a[3 * 4 + 0]\n const a31 = a[3 * 4 + 1]\n const a32 = a[3 * 4 + 2]\n const a33 = a[3 * 4 + 3]\n\n dst[0] = b00 * a00 + b01 * a10 + b02 * a20 + b03 * a30\n dst[1] = b00 * a01 + b01 * a11 + b02 * a21 + b03 * a31\n dst[2] = b00 * a02 + b01 * a12 + b02 * a22 + b03 * a32\n dst[3] = b00 * a03 + b01 * a13 + b02 * a23 + b03 * a33\n\n dst[4] = b10 * a00 + b11 * a10 + b12 * a20 + b13 * a30\n dst[5] = b10 * a01 + b11 * a11 + b12 * a21 + b13 * a31\n dst[6] = b10 * a02 + b11 * a12 + b12 * a22 + b13 * a32\n dst[7] = b10 * a03 + b11 * a13 + b12 * a23 + b13 * a33\n\n dst[8] = b20 * a00 + b21 * a10 + b22 * a20 + b23 * a30\n dst[9] = b20 * a01 + b21 * a11 + b22 * a21 + b23 * a31\n dst[10] = b20 * a02 + b21 * a12 + b22 * a22 + b23 * a32\n dst[11] = b20 * a03 + b21 * a13 + b22 * a23 + b23 * a33\n\n dst[12] = b30 * a00 + b31 * a10 + b32 * a20 + b33 * a30\n dst[13] = b30 * a01 + b31 * a11 + b32 * a21 + b33 * a31\n dst[14] = b30 * a02 + b31 * a12 + b32 * a22 + b33 * a32\n dst[15] = b30 * a03 + b31 * a13 + b32 * a23 + b33 * a33\n\n return dst\n },\n\n cameraAim(eye: number[] | Float32Array, target: number[], up: number[], dst = new Float32Array(16)) {\n const zAxis = vec3.normalize(vec3.subtract(eye, target))\n const xAxis = vec3.normalize(vec3.cross(up, zAxis))\n const yAxis = vec3.normalize(vec3.cross(zAxis, xAxis))\n\n dst[ 0] = xAxis[0]; dst[ 1] = xAxis[1]; dst[ 2] = xAxis[2]; dst[ 3] = 0\n dst[ 4] = yAxis[0]; dst[ 5] = yAxis[1]; dst[ 6] = yAxis[2]; dst[ 7] = 0\n dst[ 8] = zAxis[0]; dst[ 9] = zAxis[1]; dst[10] = zAxis[2]; dst[11] = 0\n dst[12] = eye[0]; dst[13] = eye[1]; dst[14] = eye[2]; dst[15] = 1\n\n return dst\n },\n\n inverse(m: Float32Array, dst = new Float32Array(16)) {\n const m00 = m[0 * 4 + 0]\n const m01 = m[0 * 4 + 1]\n const m02 = m[0 * 4 + 2]\n const m03 = m[0 * 4 + 3]\n const m10 = m[1 * 4 + 0]\n const m11 = m[1 * 4 + 1]\n const m12 = m[1 * 4 + 2]\n const m13 = m[1 * 4 + 3]\n const m20 = m[2 * 4 + 0]\n const m21 = m[2 * 4 + 1]\n const m22 = m[2 * 4 + 2]\n const m23 = m[2 * 4 + 3]\n const m30 = m[3 * 4 + 0]\n const m31 = m[3 * 4 + 1]\n const m32 = m[3 * 4 + 2]\n const m33 = m[3 * 4 + 3]\n\n const tmp0 = m22 * m33\n const tmp1 = m32 * m23\n const tmp2 = m12 * m33\n const tmp3 = m32 * m13\n const tmp4 = m12 * m23\n const tmp5 = m22 * m13\n const tmp6 = m02 * m33\n const tmp7 = m32 * m03\n const tmp8 = m02 * m23\n const tmp9 = m22 * m03\n const tmp10 = m02 * m13\n const tmp11 = m12 * m03\n const tmp12 = m20 * m31\n const tmp13 = m30 * m21\n const tmp14 = m10 * m31\n const tmp15 = m30 * m11\n const tmp16 = m10 * m21\n const tmp17 = m20 * m11\n const tmp18 = m00 * m31\n const tmp19 = m30 * m01\n const tmp20 = m00 * m21\n const tmp21 = m20 * m01\n const tmp22 = m00 * m11\n const tmp23 = m10 * m01\n\n const t0 = (tmp0 * m11 + tmp3 * m21 + tmp4 * m31) -\n (tmp1 * m11 + tmp2 * m21 + tmp5 * m31)\n const t1 = (tmp1 * m01 + tmp6 * m21 + tmp9 * m31) -\n (tmp0 * m01 + tmp7 * m21 + tmp8 * m31)\n const t2 = (tmp2 * m01 + tmp7 * m11 + tmp10 * m31) -\n (tmp3 * m01 + tmp6 * m11 + tmp11 * m31)\n const t3 = (tmp5 * m01 + tmp8 * m11 + tmp11 * m21) -\n (tmp4 * m01 + tmp9 * m11 + tmp10 * m21)\n\n const d = 1 / (m00 * t0 + m10 * t1 + m20 * t2 + m30 * t3)\n\n dst[0] = d * t0\n dst[1] = d * t1\n dst[2] = d * t2\n dst[3] = d * t3\n\n dst[4] = d * ((tmp1 * m10 + tmp2 * m20 + tmp5 * m30) -\n (tmp0 * m10 + tmp3 * m20 + tmp4 * m30))\n dst[5] = d * ((tmp0 * m00 + tmp7 * m20 + tmp8 * m30) -\n (tmp1 * m00 + tmp6 * m20 + tmp9 * m30))\n dst[6] = d * ((tmp3 * m00 + tmp6 * m10 + tmp11 * m30) -\n (tmp2 * m00 + tmp7 * m10 + tmp10 * m30))\n dst[7] = d * ((tmp4 * m00 + tmp9 * m10 + tmp10 * m20) -\n (tmp5 * m00 + tmp8 * m10 + tmp11 * m20))\n\n dst[8] = d * ((tmp12 * m13 + tmp15 * m23 + tmp16 * m33) -\n (tmp13 * m13 + tmp14 * m23 + tmp17 * m33))\n dst[9] = d * ((tmp13 * m03 + tmp18 * m23 + tmp21 * m33) -\n (tmp12 * m03 + tmp19 * m23 + tmp20 * m33))\n dst[10] = d * ((tmp14 * m03 + tmp19 * m13 + tmp22 * m33) -\n (tmp15 * m03 + tmp18 * m13 + tmp23 * m33))\n dst[11] = d * ((tmp17 * m03 + tmp20 * m13 + tmp23 * m23) -\n (tmp16 * m03 + tmp21 * m13 + tmp22 * m23))\n\n dst[12] = d * ((tmp14 * m22 + tmp17 * m32 + tmp13 * m12) -\n (tmp16 * m32 + tmp12 * m12 + tmp15 * m22))\n dst[13] = d * ((tmp20 * m32 + tmp12 * m02 + tmp19 * m22) -\n (tmp18 * m22 + tmp21 * m32 + tmp13 * m02))\n dst[14] = d * ((tmp18 * m12 + tmp23 * m32 + tmp15 * m02) -\n (tmp22 * m32 + tmp14 * m02 + tmp19 * m12))\n dst[15] = d * ((tmp22 * m22 + tmp16 * m02 + tmp21 * m12) -\n (tmp20 * m12 + tmp23 * m22 + tmp17 * m02))\n return dst\n },\n\n transpose(m: Float32Array, dst = new Float32Array(16)) {\n dst[ 0] = m[ 0]; dst[ 1] = m[ 4]; dst[ 2] = m[ 8]; dst[ 3] = m[12]\n dst[ 4] = m[ 1]; dst[ 5] = m[ 5]; dst[ 6] = m[ 9]; dst[ 7] = m[13]\n dst[ 8] = m[ 2]; dst[ 9] = m[ 6]; dst[10] = m[10]; dst[11] = m[14]\n dst[12] = m[ 3]; dst[13] = m[ 7]; dst[14] = m[11]; dst[15] = m[15]\n\n return dst\n },\n\n aim(eye: Float32Array | number[], target: number[], up: number[], dst = new Float32Array(16)) {\n const zAxis = vec3.normalize(vec3.subtract(target, eye))\n const xAxis = vec3.normalize(vec3.cross(up, zAxis))\n const yAxis = vec3.normalize(vec3.cross(zAxis, xAxis))\n \n dst[ 0] = xAxis[0]; dst[ 1] = xAxis[1]; dst[ 2] = xAxis[2]; dst[ 3] = 0\n dst[ 4] = yAxis[0]; dst[ 5] = yAxis[1]; dst[ 6] = yAxis[2]; dst[ 7] = 0\n dst[ 8] = zAxis[0]; dst[ 9] = zAxis[1]; dst[10] = zAxis[2]; dst[11] = 0\n dst[12] = eye[0]; dst[13] = eye[1]; dst[14] = eye[2]; dst[15] = 1\n \n return dst\n },\n\n lookAt(eye: number[] | Float32Array, target: number[], up: number[], dst?: Float32Array) {\n return mat4.inverse(mat4.cameraAim(eye, target, up, dst), dst)\n },\n\n translation([tx, ty, tz]: number[], dst = new Float32Array(16)) {\n dst[ 0] = 1; dst[ 1] = 0; dst[ 2] = 0; dst[ 3] = 0\n dst[ 4] = 0; dst[ 5] = 1; dst[ 6] = 0; dst[ 7] = 0\n dst[ 8] = 0; dst[ 9] = 0; dst[10] = 1; dst[11] = 0\n dst[12] = tx; dst[13] = ty; dst[14] = tz; dst[15] = 1\n return dst\n },\n\n rotationX(angleInRadians: number, dst = new Float32Array(16)) {\n const c = Math.cos(angleInRadians)\n const s = Math.sin(angleInRadians)\n dst[ 0] = 1; dst[ 1] = 0; dst[ 2] = 0; dst[ 3] = 0\n dst[ 4] = 0; dst[ 5] = c; dst[ 6] = s; dst[ 7] = 0\n dst[ 8] = 0; dst[ 9] = -s; dst[10] = c; dst[11] = 0\n dst[12] = 0; dst[13] = 0; dst[14] = 0; dst[15] = 1\n return dst\n },\n\n rotationY(angleInRadians: number, dst = new Float32Array(16)) {\n const c = Math.cos(angleInRadians)\n const s = Math.sin(angleInRadians)\n dst[ 0] = c; dst[ 1] = 0; dst[ 2] = -s; dst[ 3] = 0\n dst[ 4] = 0; dst[ 5] = 1; dst[ 6] = 0; dst[ 7] = 0\n dst[ 8] = s; dst[ 9] = 0; dst[10] = c; dst[11] = 0\n dst[12] = 0; dst[13] = 0; dst[14] = 0; dst[15] = 1\n return dst\n },\n\n rotationZ(angleInRadians: number, dst = new Float32Array(16)) {\n const c = Math.cos(angleInRadians)\n const s = Math.sin(angleInRadians)\n dst[ 0] = c; dst[ 1] = s; dst[ 2] = 0; dst[ 3] = 0\n dst[ 4] = -s; dst[ 5] = c; dst[ 6] = 0; dst[ 7] = 0\n dst[ 8] = 0; dst[ 9] = 0; dst[10] = 1; dst[11] = 0\n dst[12] = 0; dst[13] = 0; dst[14] = 0; dst[15] = 1\n return dst\n },\n\n scaling([sx, sy, sz]: number[], dst = new Float32Array(16)) {\n dst[ 0] = sx; dst[ 1] = 0; dst[ 2] = 0; dst[ 3] = 0\n dst[ 4] = 0; dst[ 5] = sy; dst[ 6] = 0; dst[ 7] = 0\n dst[ 8] = 0; dst[ 9] = 0; dst[10] = sz; dst[11] = 0\n dst[12] = 0; dst[13] = 0; dst[14] = 0; dst[15] = 1\n return dst\n },\n\n translate(m: Float32Array, translation: number[], dst?: Float32Array) {\n return mat4.multiply(m, mat4.translation(translation), dst)\n },\n\n rotateX(m: Float32Array, angleInRadians: number, dst?: Float32Array) {\n return mat4.multiply(m, mat4.rotationX(angleInRadians), dst)\n },\n\n rotateY(m: Float32Array, angleInRadians: number, dst?: Float32Array) {\n return mat4.multiply(m, mat4.rotationY(angleInRadians), dst)\n },\n\n rotateZ(m: Float32Array, angleInRadians: number, dst?: Float32Array) {\n return mat4.multiply(m, mat4.rotationZ(angleInRadians), dst)\n },\n\n scale(m: Float32Array, scale: number[], dst?: Float32Array) {\n return mat4.multiply(m, mat4.scaling(scale), dst)\n },\n}\n\nexport default mat4","import { createEnvironment } from \"zigar-runtime\";\nimport 'zigar-runtime/accessors/all.js';\nimport 'zigar-runtime/features/call-marshaling-inbound.js';\nimport 'zigar-runtime/features/call-marshaling-outbound.js';\nimport 'zigar-runtime/features/data-copying.js';\nimport 'zigar-runtime/features/int-conversion.js';\nimport 'zigar-runtime/features/memory-mapping.js';\nimport 'zigar-runtime/features/module-loading.js';\nimport 'zigar-runtime/features/view-management.js';\nimport 'zigar-runtime/features/write-protection.js';\nimport 'zigar-runtime/iterators/for-array.js';\nimport 'zigar-runtime/iterators/for-struct.js';\nimport 'zigar-runtime/members/all.js';\nimport 'zigar-runtime/members/base64.js';\nimport 'zigar-runtime/members/data-view.js';\nimport 'zigar-runtime/members/float.js';\nimport 'zigar-runtime/members/object.js';\nimport 'zigar-runtime/members/primitive.js';\nimport 'zigar-runtime/members/to-json.js';\nimport 'zigar-runtime/members/typed-array.js';\nimport 'zigar-runtime/members/uint.js';\nimport 'zigar-runtime/members/value-of.js';\nimport 'zigar-runtime/members/void.js';\nimport 'zigar-runtime/structures/all.js';\nimport 'zigar-runtime/structures/arg-struct.js';\nimport 'zigar-runtime/structures/array.js';\nimport 'zigar-runtime/structures/array-like.js';\nimport 'zigar-runtime/structures/function.js';\nimport 'zigar-runtime/structures/pointer.js';\nimport 'zigar-runtime/structures/primitive.js';\nimport 'zigar-runtime/structures/slice.js';\nimport 'zigar-runtime/structures/struct.js';\nimport 'zigar-runtime/structures/struct-like.js';\nimport 'zigar-runtime/visitors/all.js';\nimport 'zigar-runtime/visitors/in-arg-struct.js';\nimport 'zigar-runtime/visitors/in-struct.js';\nimport 'zigar-runtime/features/baseline.js';\nimport 'zigar-runtime/features/thunk-allocation.js';\nimport 'zigar-runtime/features/pointer-synchronization.js';\nimport 'zigar-runtime/features/object-linkage.js';\nimport 'zigar-runtime/accessors/int.js';\n\n// structure defaults\nconst s = {\n constructor: null,\n type: 0,\n flags: 0,\n signature: undefined,\n name: undefined,\n byteSize: 0,\n align: 0,\n instance: {\n members: [],\n template: null,\n },\n static: {\n members: [],\n template: null,\n },\n};\n\n// member defaults\nconst m = {\n type: 0,\n flags: 0,\n};\n\n// declare structure objects\nconst s0 = {}, s1 = {}, s2 = {}, s3 = {}, s4 = {}, s5 = {}, s6 = {}, s7 = {}, s8 = {}, s9 = {};\nconst s10 = {}, s11 = {}, s12 = {}, s13 = {}, s14 = {}, s15 = {}, s16 = {}, s17 = {}, s18 = {}, s19 = {};\nconst s20 = {}, s21 = {}, s22 = {}, s23 = {}, s24 = {}, s25 = {}, s26 = {}, s27 = {}, s28 = {}, s29 = {};\nconst s30 = {}, s31 = {}, s32 = {}, s33 = {}, s34 = {}, s35 = {}, s36 = {}, s37 = {}, s38 = {}, s39 = {};\nconst s40 = {}, s41 = {}, s42 = {};\n\n// declare objects\nconst o0 = {}, o1 = {}, o2 = {}, o3 = {}, o4 = {}, o5 = {}, o6 = {}, o7 = {}, o8 = {}, o9 = {};\nconst o10 = {}, o11 = {}, o12 = {}, o13 = {}, o14 = {}, o15 = {}, o16 = {}, o17 = {}, o18 = {}, o19 = {};\nconst o20 = {}, o21 = {}, o22 = {}, o23 = {}, o24 = {}, o25 = {}, o26 = {}, o27 = {}, o28 = {}, o29 = {};\nconst o30 = {}, o31 = {}, o32 = {}, o33 = {}, o34 = {}, o35 = {}, o36 = {}, o37 = {}, o38 = {}, o39 = {};\nconst o40 = {}, o41 = {}, o42 = {}, o43 = {}, o44 = {}, o45 = {}, o46 = {}, o47 = {}, o48 = {};\n\n// define byte arrays\nconst U = i => new Uint8Array(i);\nconst a0 = U(0);\nconst a1 = U(20);\nconst a2 = U(8);\nconst a3 = U(16);\nconst a4 = U(68);\nconst a5 = U([ 232, 3, 0, 0 ]);\n\n// fill in object properties\nconst $ = Object.assign;\n$(o0, {\n memory: { array: a0 },\n handle: 27,\n});\n$(o1, {\n memory: { array: a0 },\n handle: 28,\n});\n$(o2, {\n memory: { array: a0 },\n handle: 25,\n});\n$(o3, {\n memory: { array: a0 },\n handle: 26,\n});\n$(o4, {\n memory: { array: a1 },\n handle: 263092,\n slots: {\n 0: o5, 1: o7, 2: o9, 3: o10, 4: o11,\n },\n});\n$(o5, {\n structure: s7,\n memory: { array: a1, offset: 0, length: 4 },\n slots: {\n 0: o6,\n },\n});\n$(o6, {\n structure: s6,\n memory: { array: a0 },\n});\n$(o7, {\n structure: s10,\n memory: { array: a1, offset: 4, length: 4 },\n slots: {\n 0: o8,\n },\n});\n$(o8, {\n structure: s9,\n memory: { array: a0 },\n});\n$(o9, {\n structure: s7,\n memory: { array: a1, offset: 8, length: 4 },\n slots: {\n 0: o6,\n },\n});\n$(o10, {\n structure: s7,\n memory: { array: a1, offset: 12, length: 4 },\n slots: {\n 0: o6,\n },\n});\n$(o11, {\n structure: s10,\n memory: { array: a1, offset: 16, length: 4 },\n slots: {\n 0: o8,\n },\n});\n$(o12, {\n memory: { array: a0 },\n handle: 16,\n});\n$(o13, {\n memory: { array: a0 },\n handle: 82,\n});\n$(o14, {\n memory: { array: a2 },\n});\n$(o15, {\n slots: {\n 0: o16,\n },\n});\n$(o16, {\n structure: s16,\n memory: { array: a0 },\n handle: 61,\n});\n$(o17, {\n memory: { array: a0 },\n handle: 64,\n});\n$(o18, {\n memory: { array: a0 },\n handle: 65,\n});\n$(o19, {\n memory: { array: a3 },\n});\n$(o20, {\n slots: {\n 0: o21, 1: o22, 2: o23,\n },\n});\n$(o21, {\n structure: s19,\n memory: { array: a0 },\n handle: 61,\n});\n$(o22, {\n structure: s21,\n memory: { array: a0 },\n handle: 62,\n});\n$(o23, {\n structure: s21,\n memory: { array: a0 },\n handle: 63,\n});\n$(o24, {\n memory: { array: a4 },\n});\n$(o25, {\n memory: { array: a0 },\n handle: 17,\n});\n$(o26, {\n memory: { array: a0 },\n handle: 18,\n});\n$(o27, {\n memory: { array: a0 },\n handle: 19,\n});\n$(o28, {\n memory: { array: a0 },\n handle: 20,\n});\n$(o29, {\n memory: { array: a0 },\n handle: 21,\n});\n$(o30, {\n memory: { array: a0 },\n handle: 22,\n});\n$(o31, {\n memory: { array: a0 },\n handle: 23,\n});\n$(o32, {\n memory: { array: a0 },\n handle: 24,\n});\n$(o33, {\n slots: {\n 0: o34, 1: o35, 2: o36, 3: o37, 4: o38, 5: o39, 6: o40, 7: o41, 8: o42, 9: o43,\n 10: o44, 11: o45, 12: o46, 13: o47, 14: o48,\n },\n});\n$(o34, {\n structure: s14,\n memory: { array: a0 },\n handle: 2,\n});\n$(o35, {\n structure: s31,\n memory: { array: a0 },\n handle: 3,\n});\n$(o36, {\n structure: s4,\n memory: { array: a5 },\n const: true,\n});\n$(o37, {\n structure: s33,\n memory: { array: a0 },\n handle: 4,\n});\n$(o38, {\n structure: s35,\n memory: { array: a0 },\n handle: 5,\n});\n$(o39, {\n structure: s37,\n memory: { array: a0 },\n handle: 6,\n});\n$(o40, {\n structure: s39,\n memory: { array: a0 },\n handle: 7,\n});\n$(o41, {\n structure: s41,\n memory: { array: a0 },\n handle: 8,\n});\n$(o42, {\n structure: s33,\n memory: { array: a0 },\n handle: 9,\n});\n$(o43, {\n structure: s37,\n memory: { array: a0 },\n handle: 10,\n});\n$(o44, {\n structure: s33,\n memory: { array: a0 },\n handle: 11,\n});\n$(o45, {\n structure: s37,\n memory: { array: a0 },\n handle: 12,\n});\n$(o46, {\n structure: s37,\n memory: { array: a0 },\n handle: 13,\n});\n$(o47, {\n structure: s37,\n memory: { array: a0 },\n handle: 14,\n});\n$(o48, {\n structure: s9,\n memory: { array: a0 },\n handle: 15,\n});\n\n// fill in structure properties\n$(s0, {\n ...s,\n flags: 1,\n signature: 0xa310b7d01f11b8can,\n name: \"void\",\n align: 1,\n instance: {\n members: [\n {\n ...m,\n bitOffset: 0,\n bitSize: 0,\n byteSize: 0,\n structure: s0,\n },\n ],\n },\n});\n$(s1, {\n ...s,\n flags: 1,\n signature: 0x61e77abe97c52d51n,\n name: \"f32\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n structure: s1,\n },\n ],\n },\n});\n$(s2, {\n ...s,\n type: 9,\n flags: 64,\n signature: 0x9212e6749825a514n,\n name: \"[_]f32\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n bitSize: 32,\n byteSize: 4,\n structure: s1,\n },\n ],\n },\n});\n$(s3, {\n ...s,\n type: 8,\n flags: 188,\n signature: 0xfc4e3831fa228a2en,\n name: \"[]const f32\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n structure: s2,\n },\n ],\n },\n});\n$(s4, {\n ...s,\n flags: 1,\n signature: 0x68598db431a811a3n,\n name: \"u32\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n structure: s4,\n },\n ],\n },\n});\n$(s5, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0x09675e7a1ffd5485n,\n name: \"Arg(fn ([]const f32, u32) void)\",\n length: 2,\n byteSize: 12,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 96,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s3,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 64,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"1\",\n structure: s4,\n },\n ],\n },\n});\n$(s6, {\n ...s,\n type: 14,\n signature: 0xe1a5d27f9960e020n,\n name: \"fn ([]const f32, u32) void\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 96,\n byteSize: 12,\n structure: s5,\n },\n ],\n template: o0\n },\n static: {\n members: [],\n template: o1\n },\n});\n$(s7, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0x4d3813c518971895n,\n name: \"*const fn ([]const f32, u32) void\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s6,\n },\n ],\n },\n});\n$(s8, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0x0292a02ab8f8020cn,\n name: \"Arg(fn ([]const f32) void)\",\n length: 1,\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 64,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s3,\n },\n ],\n },\n});\n$(s9, {\n ...s,\n type: 14,\n signature: 0x47389ea7e1d3d337n,\n name: \"fn ([]const f32) void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s8,\n },\n ],\n template: o2\n },\n static: {\n members: [],\n template: o3\n },\n});\n$(s10, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0x4224bff88f0203f5n,\n name: \"*const fn ([]const f32) void\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s9,\n },\n ],\n },\n});\n$(s11, {\n ...s,\n type: 2,\n flags: 14,\n signature: 0xe3bd70be86a1c0e7n,\n name: \"WebGpuPrograms\",\n byteSize: 20,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"draw_texture\",\n structure: s7,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"draw_triangle\",\n structure: s10,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 64,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"draw_msdf\",\n structure: s7,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 96,\n bitSize: 32,\n byteSize: 4,\n slot: 3,\n name: \"pick_texture\",\n structure: s7,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 128,\n bitSize: 32,\n byteSize: 4,\n slot: 4,\n name: \"pick_triangle\",\n structure: s10,\n },\n ],\n template: o4\n },\n});\n$(s12, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0x55f6507b4f6d4f28n,\n name: \"*const WebGpuPrograms\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s11,\n },\n ],\n },\n});\n$(s13, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0xeb0499d78c5f06c3n,\n name: \"Arg(fn (*const WebGpuPrograms) void)\",\n length: 1,\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 32,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s12,\n },\n ],\n },\n});\n$(s14, {\n ...s,\n type: 14,\n signature: 0xe04ead767a55cf67n,\n name: \"fn (*const WebGpuPrograms) void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n structure: s13,\n },\n ],\n template: o12\n },\n});\n$(s15, {\n ...s,\n type: 12,\n flags: 10,\n signature: 0x6d671df4e9418a6dn,\n name: \"Arg(fn (Point, Point) Point)\",\n length: 2,\n byteSize: 24,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n name: \"retval\",\n structure: s17,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 64,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s17,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 128,\n bitSize: 64,\n byteSize: 8,\n slot: 2,\n name: \"1\",\n structure: s17,\n },\n ],\n },\n});\n$(s16, {\n ...s,\n type: 14,\n signature: 0xd634f75c7a6c5553n,\n name: \"fn (Point, Point) Point\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 192,\n byteSize: 24,\n structure: s15,\n },\n ],\n template: o13\n },\n});\n$(s17, {\n ...s,\n type: 2,\n signature: 0x3c18d236acd7668dn,\n name: \"Point\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"x\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"y\",\n structure: s1,\n },\n ],\n template: o14\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 0,\n name: \"mid\",\n structure: s16,\n },\n ],\n template: o15\n },\n});\n$(s18, {\n ...s,\n type: 12,\n flags: 10,\n signature: 0xd1d7035b6147a5d4n,\n name: \"Arg(fn (PointUV, PointUV) Point)\",\n length: 2,\n byteSize: 40,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n name: \"retval\",\n structure: s17,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 64,\n bitSize: 128,\n byteSize: 16,\n slot: 1,\n name: \"0\",\n structure: s22,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 192,\n bitSize: 128,\n byteSize: 16,\n slot: 2,\n name: \"1\",\n structure: s22,\n },\n ],\n },\n});\n$(s19, {\n ...s,\n type: 14,\n signature: 0xbb0f8218864060e9n,\n name: \"fn (PointUV, PointUV) Point\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 320,\n byteSize: 40,\n structure: s18,\n },\n ],\n template: o17\n },\n});\n$(s20, {\n ...s,\n type: 12,\n flags: 10,\n signature: 0x0fa3968ee7482ac2n,\n name: \"Arg(fn (PointUV, PointUV) f32)\",\n length: 2,\n byteSize: 36,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"retval\",\n structure: s1,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 128,\n byteSize: 16,\n slot: 1,\n name: \"0\",\n structure: s22,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 160,\n bitSize: 128,\n byteSize: 16,\n slot: 2,\n name: \"1\",\n structure: s22,\n },\n ],\n },\n});\n$(s21, {\n ...s,\n type: 14,\n signature: 0x3170ee9a1e36ef3an,\n name: \"fn (PointUV, PointUV) f32\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 288,\n byteSize: 36,\n structure: s20,\n },\n ],\n template: o18\n },\n});\n$(s22, {\n ...s,\n type: 2,\n signature: 0x9d77c3c6a1a73d02n,\n name: \"PointUV\",\n byteSize: 16,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"x\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"y\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 64,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"u\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 96,\n bitSize: 32,\n byteSize: 4,\n slot: 3,\n name: \"v\",\n structure: s1,\n },\n ],\n template: o19\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 0,\n name: \"mid\",\n structure: s19,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 1,\n name: \"angle_to\",\n structure: s21,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 2,\n name: \"distance\",\n structure: s21,\n },\n ],\n template: o20\n },\n});\n$(s23, {\n ...s,\n type: 1,\n flags: 10,\n signature: 0x4aba6e79b2a51d1dn,\n name: \"[4]PointUV\",\n length: 4,\n byteSize: 64,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 128,\n byteSize: 16,\n structure: s22,\n },\n ],\n },\n});\n$(s24, {\n ...s,\n type: 2,\n flags: 10,\n signature: 0xa0d33217006c82a9n,\n name: \"AssetZig\",\n byteSize: 68,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 512,\n byteSize: 64,\n slot: 0,\n name: \"points\",\n structure: s23,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 512,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"texture_id\",\n structure: s4,\n },\n ],\n template: o24\n },\n});\n$(s25, {\n ...s,\n type: 9,\n flags: 10,\n signature: 0x11c865473620af61n,\n name: \"[_]AssetZig\",\n byteSize: 68,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 544,\n byteSize: 68,\n structure: s24,\n },\n ],\n },\n});\n$(s26, {\n ...s,\n type: 8,\n flags: 60,\n signature: 0xcae982de4df134f9n,\n name: \"[]AssetZig\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n structure: s25,\n },\n ],\n },\n});\n$(s27, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0x5a346ed510be0421n,\n name: \"Arg(fn ([]AssetZig) void)\",\n length: 1,\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 64,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s26,\n },\n ],\n },\n});\n$(s28, {\n ...s,\n type: 14,\n signature: 0xe4b315df8532c4cdn,\n name: \"fn ([]AssetZig) void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s27,\n },\n ],\n template: o25\n },\n static: {\n members: [],\n template: o26\n },\n});\n$(s29, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0x5f373919b4d68f19n,\n name: \"*const fn ([]AssetZig) void\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s28,\n },\n ],\n },\n});\n$(s30, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0xbc781ae065eb0cf9n,\n name: \"Arg(fn (*const fn ([]AssetZig) void) void)\",\n length: 1,\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 32,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s29,\n },\n ],\n },\n});\n$(s31, {\n ...s,\n type: 14,\n signature: 0x4dc72d4c2f1365ebn,\n name: \"fn (*const fn ([]AssetZig) void) void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n structure: s30,\n },\n ],\n template: o27\n },\n});\n$(s32, {\n ...s,\n type: 12,\n signature: 0xb1afac27f34003f4n,\n name: \"Arg(fn (f32, f32) void)\",\n length: 2,\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 64,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"1\",\n structure: s1,\n },\n ],\n },\n});\n$(s33, {\n ...s,\n type: 14,\n signature: 0x63bac1760494db20n,\n name: \"fn (f32, f32) void\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s32,\n },\n ],\n template: o28\n },\n});\n$(s34, {\n ...s,\n type: 12,\n flags: 10,\n signature: 0xc762e73c81793f51n,\n name: \"Arg(fn ([4]PointUV, u32) void)\",\n length: 2,\n byteSize: 68,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 544,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 512,\n byteSize: 64,\n slot: 1,\n name: \"0\",\n structure: s23,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 512,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"1\",\n structure: s4,\n },\n ],\n },\n});\n$(s35, {\n ...s,\n type: 14,\n signature: 0x0e773631f1483b71n,\n name: \"fn ([4]PointUV, u32) void\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 544,\n byteSize: 68,\n structure: s34,\n },\n ],\n template: o29\n },\n});\n$(s36, {\n ...s,\n type: 12,\n signature: 0xfa22378c989ae19dn,\n name: \"Arg(fn () void)\",\n length: 0,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 0,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n ],\n },\n});\n$(s37, {\n ...s,\n type: 14,\n signature: 0xe3c3b022a28cd076n,\n name: \"fn () void\",\n length: 0,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 0,\n byteSize: 0,\n structure: s36,\n },\n ],\n template: o30\n },\n});\n$(s38, {\n ...s,\n type: 12,\n flags: 10,\n signature: 0xebd988516fdd5651n,\n name: \"Arg(fn (u32, [4]PointUV) void)\",\n length: 2,\n byteSize: 68,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 544,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s4,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 512,\n byteSize: 64,\n slot: 2,\n name: \"1\",\n structure: s23,\n },\n ],\n },\n});\n$(s39, {\n ...s,\n type: 14,\n signature: 0xb6b0d32aa9cdf62cn,\n name: \"fn (u32, [4]PointUV) void\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 544,\n byteSize: 68,\n structure: s38,\n },\n ],\n template: o31\n },\n});\n$(s40, {\n ...s,\n type: 12,\n signature: 0x6364608841bf263en,\n name: \"Arg(fn (u32) void)\",\n length: 1,\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 32,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s4,\n },\n ],\n },\n});\n$(s41, {\n ...s,\n type: 14,\n signature: 0x956e45a1c96ff5e6n,\n name: \"fn (u32) void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n structure: s40,\n },\n ],\n template: o32\n },\n});\n$(s42, {\n ...s,\n type: 2,\n flags: 4096,\n signature: 0x239ab4f327f6ac1bn,\n name: \"index\",\n align: 1,\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 0,\n name: \"connect_web_gpu_programs\",\n structure: s14,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 1,\n name: \"connect_on_asset_update_callback\",\n structure: s31,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 2,\n name: \"ASSET_ID_TRESHOLD\",\n structure: s4,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 3,\n name: \"init_state\",\n structure: s33,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 4,\n name: \"add_asset\",\n structure: s35,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 5,\n name: \"remove_asset\",\n structure: s37,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 6,\n name: \"update_points\",\n structure: s39,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 7,\n name: \"on_update_pick\",\n structure: s41,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 8,\n name: \"on_pointer_down\",\n structure: s33,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 9,\n name: \"on_pointer_up\",\n structure: s37,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 10,\n name: \"on_pointer_move\",\n structure: s33,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 11,\n name: \"canvas_render\",\n structure: s37,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 12,\n name: \"picks_render\",\n structure: s37,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 13,\n name: \"destroy_state\",\n structure: s37,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 14,\n name: \"import_icons\",\n structure: s9,\n },\n ],\n template: o33\n },\n});\nconst structures = [\n s0, s1, s2, s3, s4, s5, s6, s7, s8, s9,\n s10, s11, s12, s13, s14, s15, s16, s17, s18, s19,\n s20, s21, s22, s23, s24, s25, s26, s27, s28, s29,\n s30, s31, s32, s33, s34, s35, s36, s37, s38, s39,\n s40, s41, s42,\n];\nconst root = s42;\nconst settings = {\n runtimeSafety: false,\n littleEndian: true,\n libc: false,\n};\n\n// create runtime environment\nconst env = createEnvironment();\n\n// recreate structures\nenv.recreateStructures(structures, settings);\n\n// initiate loading and compilation of WASM bytecodes\nconst source = (async () => {\n // index.zig\n const binaryString = atob(\"AGFzbQEAAAABmwEYYAR/f39/AX9gAn9/AGADf39/AGAFf39/f38AYAZ/f39/f38Bf2ABfwBgAn19AGAAAGACf38BfWACf38Bf2AEf39/fwBgAX8Bf2AAAX9gBH9/fn8AYAN/f38Bf2ACfX0BfWABfQF9YAZ/f399f30AYAV/f39/fwF/YAV/fn5+fgBgAnx/AXxgAn1/AX9gA3x8fAF8YAN8fH8BfALJAxYDZW52Bm1lbW9yeQIABQNlbnYZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQFwAFsDZW52CV9yZWFkU2xvdAAJA2Vudgpfd3JpdGVTbG90AAIDZW52EF9kZWZpbmVTdHJ1Y3R1cmUACwNlbnYJX2Nhc3RWaWV3AAADZW52D19jcmVhdGVUZW1wbGF0ZQALA2Vudg9fYXR0YWNoVGVtcGxhdGUAAgNlbnYNX2VuZFN0cnVjdHVyZQAFA2VudhBfYmVnaW5EZWZpbml0aW9uAAwDZW52Dl9jYXB0dXJlU3RyaW5nAAkDZW52DV9pbnNlcnRTdHJpbmcAAgNlbnYOX2luc2VydEludGVnZXIACgNlbnYRX2luc2VydEJpZ0ludGVnZXIADQNlbnYPX2JlZ2luU3RydWN0dXJlAAsDZW52DV9pbnNlcnRPYmplY3QAAgNlbnYNX2F0dGFjaE1lbWJlcgACA2VudgxfY2FwdHVyZVZpZXcADgNlbnYNX2hhbmRsZUpzQ2FsbAAAA2Vudg1fZGlzcGxheVBhbmljAAEDZW52EF9hbGxvY2F0ZUpzVGh1bmsACQNlbnYMX2ZyZWVKc1RodW5rAAkDlQGTAQcMCQEFDgUFBQUFBgUBBQcFAQUFBgcGBwcHBQECCA8QCAsBCg4CEQsFBQUJBQkKCQUJCQkJCQUJCgEBAQEBAQEBAQEBAQEBAQEFAgUFAQkKAQEBAQEBAQEBAQEBAQEBAQUJCQECAQICAgICAgICAgICAgICAgIFCgkHCQAEBAMCDhIJCQcMAAQEAxMUEBUSFhcPEAYIAX8BQYCAEAsHuAEKD2dldEZhY3RvcnlUaHVuawAVCmluaXRpYWxpemUAjQEVYWxsb2NhdGVTY3JhdGNoTWVtb3J5AI4BEWZyZWVTY3JhdGNoTWVtb3J5AJMBCHJ1blRodW5rAJQBEHJ1blZhcmlhZGljVGh1bmsA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ahBAIAEvAdgHIgINCCABIAEoAtQHNgKMCCABQoCAgIAQNwKECCABQsCAgIAQNwL8ByABQoCEgIAQNwL0ByABQoCAgIAQNwLsByABQQE2AugHIAFChoCAgNAANwLgByABQdWAEDYC3AcgCiABQdwHakEAEBkiAkH//wNxDQggAUGQCGoQHSABLwGUCCICDQggASABKAKQCDYCyAggAUKBgICAEDcCwAggAUKEgICAEDcCuAggAUKggICAEDcCsAggAUKAhICAEDcCqAggAUEBNgKkCCABQoqAgIAwNwKcCCABQdmDEDYCmAggCiABQZgIakEAEBkiAkH//wNxDQgCQEHwiBBBxABBARAPIgINACAAQQw7AQQMDAsgAhAEIgJFDQcgCiACQQAQBQJAAkAgChACIgINAEHshBAhAgwBCyABIAI2ApgIIAFBADsBnAggAUGYCGohAgsgAi8BBCICDQggChAGCyABIAo2ApQHIAFCADcCjAcgAULEgICAEDcChAcgAUKghICAEDcC/AYgAUIANwL0BiABQgU3AuwGIAFCADcC5AYgCSABQeQGakEAEBkiAkH//wNxDQcCQAJAIAkQAiICDQBB7IQQIQIMAQsgASACNgKYCCABQQA7AZwIIAFBmAhqIQILIAIvAQQiAg0HIAkQBgsgASAJNgKkBiABQoCAgIAQNwKcBiABQoiAgIAQNwKUBiABQsCAgIAQNwKMBiABQgA3AoQGIAFCBTcC/AUgAUIANwL0BSAIIAFB9AVqQQAQGSICQf//A3ENBgJAAkAgCBACIgINAEHshBAhAgwBCyABIAI2ApgIIAFBADsBnAggAUGYCGohAgsgAi8BBCICDQYgCBAGCyABIAg2ArQFIAFCgYCAgBA3AqwFIAFCiICAgBA3AqQFIAFCwICAgBA3ApwFIAFCgICAgBA3ApQFIAFBATYCkAUgAUKBgICA0AA3AogFIAFB34QQNgKEBSAHIAFBhAVqQQAQGSICQf//A3ENBQJAAkAgBxACIgINAEHshBAhAgwBCyABIAI2ApgIIAFBADsBnAggAUGYCGohAgsgAi8BBCICDQUgBxAGCyABIAc2AowEIAFCADcChAQgAUKIgICAEDcC/AMgAULAgICAEDcC9AMgAUIANwLsAyABQgU3AuQDIAFCADcC3AMgBiABQdwDakEAEBkiAkH/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IAFCADcCaCABQgU3AmAgAUIANwJYIAIgAUHYAGpBABAZIgNB//8DcUUNAQsgACADOwEEDAILAkACQCACEAIiAw0AQeyEECEDDAELIAEgAzYCWCABQQA7AVwgAUHYAGohAwsCQCADLwEEIgNFDQAgACADOwEEDAILIAIQBiABIAI2AkggAUEAOwFMIAFByABqIQILIAAgAikDADcCAAsgAUGQAWokAAsOACABKAIAIAARBQBBAAuNAwEDfyMAQZABayIBJAACQAJAAkBBAEE2EAAiAkUNACABIAI2AgggAUEAOwEMIAFBCGohAgwBCyABQoGAgICgATcDICABQgA3AxggAUGEgAQ2AjggAULAgICAEDcDMCABQoSAgIAQNwMoIAFCnbqUlZvPm93KADcDECABQcAAaiABQRBqEBcCQCABLwFEIgJFDQAgACACOwEEDAILQQBBNiABKAJAIgIQASABQdAAahBdAkACQCABLwFUIgMNACABIAEoAlA2AogBIAFCADcCgAEgAUKQgICAEDcCeCABQoCBgIAQNwJwIAFCADcCaCABQgU3AmAgAUIANwJYIAIgAUHYAGpBABAZIgNB//8DcUUNAQsgACADOwEEDAILAkACQCACEAIiAw0AQeyEECEDDAELIAEgAzYCWCABQQA7AVwgAUHYAGohAwsCQCADLwEEIgNFDQAgACADOwEEDAILIAIQBiABIAI2AkggAUEAOwFMIAFByABqIQILIAAgAikDADcCAAsgAUGQAWokAAsTACABKAIAIAEoAgQgABEBAEEAC4sGAQJ/IwBBEGsiBCQAAkACQAJAIAINAAJAQQAoAqyhEA0AQayhECECQQAhBQwCCwJAQQAoArChEA0AQbChECECQQEhBQwCCwJAQQAoArShEA0AQbShECECQQIhBQwCCwJAQQAoArihEA0AQbihECECQQMhBQwCCwJAQQAoAryhEA0AQbyhECECQQQhBQwCCwJAQQAoAsChEA0AQcChECECQQUhBQwCCwJAQQAoAsShEA0AQcShECECQQYhBQwCCwJAQQAoAsihEA0AQcihECECQQchBQwCCwJAQQAoAsyhEA0AQcyhECECQQghBQwCCwJAQQAoAtChEA0AQdChECECQQkhBQwCCwJAQQAoAtShEA0AQdShECECQQohBQwCCwJAQQAoAtihEA0AQdihECECQQshBQwCCwJAQQAoAtyhEA0AQdyhECECQQwhBQwCCwJAQQAoAuChEA0AQeChECECQQ0hBQwCCwJAQQAoAuShEA0AQeShECECQQ4hBQwCCwJAQQAoAuihEEUNAEHYiBAhAwwDC0HooRAhAkEPIQUMAQtBACECAkAgA0EdRg0AAkAgA0EeRw0AQQEhAgwBCwJAIANBH0cNAEECIQIMAQsCQCADQSBHDQBBAyECDAELAkAgA0EhRw0AQQQhAgwBCwJAIANBIkcNAEEFIQIMAQsCQCADQSNHDQBBBiECDAELAkAgA0EkRw0AQQchAgwBCwJAIANBJUcNAEEIIQIMAQsCQCADQSZHDQBBCSECDAELAkAgA0EnRw0AQQohAgwBCwJAIANBKEcNAEELIQIMAQsCQCADQSlHDQBBDCECDAELAkAgA0EqRw0AQQ0hAgwBCwJAIANBK0cNAEEOIQIMAQsCQCADQSxGDQBB4IgQIQMMAwtBDyECCyACQQJ0QayhEGoiAygCACECIANBADYCACAEQQA7AQwgBCACNgIIIARBCGohAwwBCyACIAM2AgAgBEEAOwEEIAQgBUECdEHYhxBqKAIANgIAIAQhAwsgACADKQIANwIAIARBEGokAAsOACABKAIAIAARBQBBAAuMAwEDfyMAQZABayIBJAACQAJAAkBBAEElEAAiAkUNACABIAI2AgggAUEAOwEMIAFBCGohAgwBCyABQoCAgIAQNwMgIAFCADcDGCABQYSABDYCOCABQoSAgIAQNwMwIAFCADcDKCABQtHalL7p197z4QA3AxAgAUHAAGogAUEQahAXAkAgAS8BRCICRQ0AIAAgAjsBBAwCC0EAQSUgASgCQCICEAEgAUHQAGoQRAJAAkAgAS8BVCIDDQAgASABKAJQNgKIASABQgA3AoABIAFChICAgBA3AnggAUKggICAEDcCcCABQoCAgIAQNwJoIAFCBDcCYCABQgA3AlggAiABQdgAakEAEBkiA0H//wNxRQ0BCyAAIAM7AQQMAgsCQAJAIAIQAiIDDQBB7IQQIQMMAQsgASADNgJYIAFBADsBXCABQdgAaiEDCwJAIAMvAQQiA0UNACAAIAM7AQQMAgsgAhAGIAEgAjYCSCABQQA7AUwgAUHIAGohAgsgACACKQMANwIACyABQZABaiQACxMAIAEqAgAgASoCBCAAEQYAQQALvwEBAX8jAEHQAGsiAiQAIAJBCGpBOGogAUE4aikCADcDACACQQhqQTBqIAFBMGopAgA3AwAgAkEIakEoaiABQShqKQIANwMAIAJBCGpBIGogAUEgaikCADcDACACQQhqQRhqIAFBGGopAgA3AwAgAkEIakEQaiABQRBqKQIANwMAIAJBCGpBCGogAUEIaikCADcDACACIAEpAgA3AwggAiABKAJAIgE2AkggAkEIaiABIAARAQAgAkHQAGokAEEACwkAIAARBwBBAAu/AQECfyMAQdAAayICJAAgAkEMakEMaiABQQxqKQIANwIAIAJBDGpBFGogAUEUaikCADcCACACQQxqQRxqIAFBHGopAgA3AgAgAkEMakEkaiABQSRqKQIANwIAIAJBDGpBLGogAUEsaikCADcCACACQQxqQTRqIAFBNGopAgA3AgAgAkEMakE8aiABQTxqKQIANwIAIAIgASgCACIDNgIMIAIgASkCBDcCECADIAJBEGogABEBACACQdAAaiQAQQALDgAgASgCACAAEQUAQQALlgUBBH8jAEGAAmsiASQAAkACQAJAQQBBJBAAIgJFDQAgASACNgIIIAFBADsBDCABQQhqIQIMAQsgAUKIgICAwBc3AyAgAUIANwMYIAFBhIAENgI4IAFCiICAgBA3AzAgAUIANwMoIAFCrpSK0Z+Gjqd8NwMQIAFBwABqIAFBEGoQFwJAIAEvAUQiAkUNACAAIAI7AQQMAgtBAEEkIAEoAkAiAhABAkACQAJAQQBBJhAAIgMNACABQomAgICACDcDmAEgAUIANwOQASABQYSABDYCsAEgAUKEgICAEDcDqAEgAUIANwOgASABQpTKlsHJzrmJkn83A4gBIAFBuAFqIAFBiAFqEBcgAS8BvAEiBA0BQQBBJiABKAK4ASIDEAEgAUHAAWoQRCABLwHEASIEDQEgASABKALAATYC+AEgAUIANwLwASABQoSAgIAQNwLoASABQqCAgIAQNwLgASABQgA3AtgBIAFCBDcC0AEgAUIANwLIASADIAFByAFqQQAQGSIEQf//A3ENAQJAAkAgAxACIgQNAEHshBAhBAwBCyABIAQ2AsgBIAFBADsBzAEgAUHIAWohBAsgBC8BBCIEDQEgAxAGCyABIAM2AoQBIAFCgICAgBA3Anwg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BAwECyADEAQiAw0BQRUhAwsgACADOwEEDAILIAIgA0EAEAUCQAJAIAIQAiIDDQBB7IQQIQMMAQsgASADNgKYASABQQA7AZwBIAFBmAFqIQMLAkAgAy8BBCIDRQ0AIAAgAzsBBAwCCyABQZABahCKAQJAAkAgAS8BlAEiAw0AIAFBsAFqQgA3AgAgAUG4AWpCADcCACABQgA3AqgBIAFBEjYCpAEgAUKDgICA0AA3ApwBIAFB1YMQNgKYASABIAEoApABNgLIASABQoCAgIAQNwLAASACIAFBmAFqQQEQGSIDQf//A3ENACABQdwAahCKASABLwFgIgMNAAJAQT1BAEEAIAEoAlwQAyIEDQAgAEENOwEEDAQLQQAQBCIDDQFBFSEDCyAAIAM7AQQMAgsgA0EAIAQQASACIANBARAFIAIQBiABIAI2AkggAUEAOwFMIAFByABqIQILIAAgAikDADcCAAsgAUHQAWokAAtrAQF/IwBBMGsiAiQAIAJBEGogAUEQaikCADcDACACQSBqIAFBIGopAgA3AwAgAiABKQIINwMIIAIgASkCGDcDGCACQShqIAJBCGogAkEIakEQaiAAEQIAIAEgAikDKDcCACACQTBqJABBAAtbAQF/IwBBIGsiAiQAIAJBCGogAUEMaikCADcDACACQRhqIAFBHGopAgA3AwAgAiABKQIENwMAIAIgASkCFDcDECABIAIgAkEQaiAAEQgAOAIAIAJBIGokAEEACwkAIAAgARB5AAuEAQEBfyMAQRBrIgMkACADIAE2AgQgAyAANgIAQQAhAQJAQQAtAOyhEA0AIANBfzYCCCADIANBCGo2AgwgA0EIaiEBCwJAAkACQAJAIAIgA0EIIAEQEEF/ag4DAgABAwtBmoQQQSIQYQALQf+DEEEaEGEAC0HkgxBBGhBhAAsgA0EQaiQACwkAIAAgARARAAsSACAAIAEgAkEAKALwoRAQiwELEgAgACABIAJBACgC9KEQEIsBCxIAIAAgASACQQAoAvihEBCLAQsSACAAIAEgAkEAKAL8oRAQiwELEgAgACABIAJBACgCgKIQEIsBCxIAIAAgASACQQAoAoSiEBCLAQsSACAAIAEgAkEAKAKIohAQiwELEgAgACABIAJBACgCjKIQEIsBCxIAIAAgASACQQAoApCiEBCLAQsSACAAIAEgAkEA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IQEgBiAHTQ0CDAELIAAoAgAgASACIAMgBCAFIAAoAgQoAgQRBAAhAQsgAQ8LIAAgBjYCCEEBC5ABAQJ/AkACQCAAQQxqKAIAIgYgAUsNACAAQRBqKAIAIgcgBmogAU0NAAJAAkAgASACaiAGIAAoAggiBWpHDQAgBSAEIAJraiEGIAQgAk0NASAGIAdNDQFBAA8LIAQgAk0NAkEADwsgACAGNgIIIAEPCyAAKAIAIAEgAiADIAQgBSAAKAIEKAIIEQQAIQELIAELXgEBfwJAAkAgAEEMaigCACIFIAFLDQAgAEEQaigCACAFaiABTQ0AIAEgAmogBSAAKAIIIgFqRw0BIAAgASACazYCCA8LIAAoAgAgASACIAMgBCAAKAIEKAIMEQMACwu5AQMBfwF+AX8jAEEQayIDJAACQEEALQC4ohANAEEAKQO4iRAiBKdBgIAEQQBBACAEQiCIpygCABEAACEFQQBBAToA1KIQQQBBgIAENgLQohBBACAFNgLMohBBACAENwPAohBBAEEBOgC4ohBBAEHAiRA2ArSiEEEAQcCiEDYCsKIQQQBBADYCyKIQC0EAKQOwohAiBKcgACABIAJBASACQQFLG2hBACAEQiCIpygCDBEDACADQRBqJAALGgAgASACQarVqtV6IAIbIAARCQBB//8DcUULJwAgASACQarVqtV6IAIbIANBqtWq1XogAhsgBCAAEQAAQf//A3FFC84EAgh/AX4jAEEQayICJABBACEDQQAtAOyhECEEIAJBAEEAIAEgABEKAAJAAkACQCACLwEEDQAgAigCACEDDAELIARBAXFFDQEgACABEBIhAwtBAC0A7KEQRQ0AIANFDQACQAJAAkACQEEAKALEoBAiBUEAKALAoBAiBksNACAFIQADQEF/IABBAXYgAGpBCGoiBCAEIABJGyIAIAZNDQALQQAhBEEAKAK8oBAhByAFDQFBACEGDAILQQAoArygECEEDAILQQAoAsygECEGQQAoAsigECEIIAIgAEH/////AUs6AAgCQCAAQYCAgIACSQ0AQQAhBEEAIQYMAQtBACEEAkAgCCAHIAVBA3RBAiAAQQN0IglBACAGKAIIEQQAIgYNAEEAIQYMAQsgBkGq1arVeiAJGyEEIABB/////wFxQQAgCRshBgsCQCAERQ0AQQAgBDYCvKAQQQAgBjYCxKAQDAELQQApAsigECEKIAIgAEH/////AUs6AAwgAEGAgICAAk8NAQJAAkAgAEEDdCIEDQBBfCEEDAELIAqnIARBAkEAIApCIIinKAIAEQAAIgRFDQILAkBBACgCwKAQIgZFDQAgBEEAKAK8oBAgBkEDdPwKAAALAkAgBUEDdCIGRQ0AQQApAsigECIKpyAHQarVqtV6IAUbIAZBAkEAIApCIIinKAIMEQMAC0EAIAA2AsSgEEEAIAQ2ArygEAtBAEEAKALAoBAiAEEBajYCwKAQIAQgAEEDdGogA61CIIYgAa2ENwIACyACQRBqJAAgAwvqAQIFfwF+IwBBEGsiAiQAQQAhA0EALQDsoRAhBCACQQhqQQBBASABIAARCgACQAJAAkAgAi8BDA0AIAIoAgghAwwBCyAEQQFxRQ0BIAAgARATIQMLQQAtAOyhEEUNACADRQ0AQQAhBEEAKALAoBAiBUUNAEEAKAK8oBAiBiEAA0ACQCAAQQRqKAIAIAFHDQACQCAFQX9qIgEgBEcNAEEAIAQ2AsCgEAwDCyAGIAVBA3RqQXhqKQIAIQdBACABNgLAoBAgACAHNwIADAILIABBCGohACAFIARBAWoiBEcNAAsLIAJBEGokACADCwIACwQAQQEL6AIBA38jAEEQayIEJAAgBCACQR9xOgAPAkACQEF/IAFBBGoiBSAFIAFJGyIBQQEgAnQiAiABIAJLGyIBQX9qZyICDQBBACECDAELAkBCAUEgIAJrrUL//wODhqciBWhBfWoiAkENSQ0AAkBCAUEgIAFBg4AEakEQdkF/amdrrUL//wODhqciAWhBAnRBwKMQaiIFKAIAIgJFDQAgBSABQRB0IAJqQXxqKAIANgIADAILQQAgAUAAIgJBEHQgAkF/RhshAgwBCwJAIAJBAnQiBkHYohBqIgEoAgAiAkUNACABIAUgAmpBfGooAgA2AgAMAQsCQCAGQYyjEGoiASgCACICQf//A3ENAEEAIQICQAJAQQAoAsCjECIGRQ0AQQAgBigC/P8DNgLAoxAgBiECDAELQQFAACIGQQFqQQJJDQIgBkEQdCECCyABIAIgBWo2AgAMAQsgASACIAVqNgIACyAEQRBqJAAgAgvVAQECfyMAQRBrIgYkACAGIANBH3E6AA9BfyAEQQRqIgcgByAESRsiBEEBIAN0IgMgBCADSxshBAJAAkACQEIBQSAgAkEEaiICIAMgAiADSxsiA0F/amdrrUL//wODhqciAmhBfWpBDEsNACAEQX9qZyIDDQFBACEDDAILQgFBICADQYOABGpBEHZBf2pna61C//8Dg4anQgFBICAEQYOABGpBEHZBf2pna61C//8Dg4anRiEDDAELIAJCAUEgIANrrUL//wODhqdGIQMLIAZBEGokACADC9QBAQJ/IwBBEGsiBiQAIAYgA0EfcToAD0F/IARBBGoiByAHIARJGyIEQQEgA3QiAyAEIANLGyEEAkACQAJAQgFBICACQQRqIgIgAyACIANLGyIDQX9qZ2utQv//A4OGpyICaEF9akEMSw0AIARBf2pnIgNFDQEgAkIBQSAgA2utQv//A4OGp0cNAQwCC0IBQSAgA0GDgARqQRB2QX9qZ2utQv//A4OGp0IBQSAgBEGDgARqQRB2QX9qZ2utQv//A4OGp0YNAQtBACEBCyAGQRBqJAAgAQu2AQECfyMAQRBrIgUkACAFIANBH3E6AA8CQAJAQgFBICACQQRqIgJBASADdCIDIAIgA0sbIgNBf2pna61C//8Dg4anIgJoQX1qIgZBDU8NACAGQQJ0QdiiEGohAyABIAJqQXxqIQIMAQtCAUEgIANBg4AEakEQdkF/amdrrUL//wODhqciAmhBAnRBwKMQaiEDIAEgAkEQdGpBfGohAgsgAiADKAIANgIAIAMgATYCACAFQRBqJAALdQEBfiAAIAQgAX4gAiADfnwgA0IgiCICIAFCIIgiBH58IANC/////w+DIgMgAUL/////D4MiAX4iBUIgiCADIAR+fCIDQiCIfCADQv////8PgyACIAF+fCIBQiCIfDcDCCAAIAFCIIYgBUL/////D4OENwMAC9QCAgN+An8CQAJAAkAgACAAYg0AIAC9IgJC////////////AINCgICAgICAgPj/AFoNACACQoCAgICAgICAgH+DIQNBCyACQgGGIgR5p2sgBEI1iKcgBEKAgICAgICAEFQbIQUCQCABQQBIDQBB/g8gBWsgAUgNAgJAIAUgAWoiBkEBTg0AIAIgAUE/ca2GIAOEvw8LAkAgBUEASg0AIAJBASAFa62GQv////////8HgyAGrUI0hoQgA4S/DwsgAa1CNIYgAny/DwtBACABayEGQQAgBWsgAUgNAgJA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DQALCyABIBGaIBEgExs5AwALIAVBsARqJAAgH0EHcQvmCAMDfgV/AnwCQAJAAkAgAL0iA0L///////////8Ag0L/////////9/8AVg0AIAG9IgRC////////////AINCgICAgICAgPj/AFQNAQsgACABoiACoCECDAELIAK9IgVC////////////AINC//////////f/AFYNAAJAAkAgAEQAAAAAAAAAAGENACABRAAAAAAAAAAAYg0BCyAAIAGiIAKgDwsCQCACRAAAAAAAAAAAYg0AIAAgAaIPC0EAIQYCQAJAIANCNIinIgdB/w9xIghB/w9HDQBBACEHDAELAkACQCAIDQAgA0L/////////B4NQRQ0BQQAhBwwCCyADQv////////+HgH+DQoCAgICAgIDwP4QhAyAHQf8PcUGCeGohBwwBCyADQoCAgICAgICAgH+DQgAgAyADQgyGeaciCEEBaq2GQv////////8HgyAIQT9xQTJLG4RCgICAgICAgPA/hCEDQYJ4IAhrIQcLAkAgBEI0iKciCUH/D3EiCEH/D0YNAAJAIAgNACAEQv////////8Hg1ANASAEQoCAgICAgICAgH+DQgAgBCAEQgyGeaciBkEBaq2GQv////////8HgyAGQT9xQTJLG4RCgICAgICAgPA/hCEEQYJ4IAZrIQYMAQsgBEL/////////h4B/g0KAgICAgICA8D+EIQQgCUH/D3FBgnhqIQYLQQAhCAJAIAVCNIinIgpB/w9xIglB/w9GDQACQCAJDQAgBUL/////////B4NQDQEgBUKAgICAgICAgIB/g0IAIAUgBUIMhnmnIghBAWqthkL/////////B4MgCEE/cUEySxuEQoCAgICAgIDwP4QhBUGCeCAIayEIDAELIAVC/////////4eAf4NCgICAgICAgPA/hCEFIApB/w9xQYJ4aiEICyADvyECIAS/IQACQAJAIAYgB2oiBiAIayIIQesATg0AIAW/QQAgCGsQnwEhCwwBCyAFQoCAgICAgICAgH+DQoCAgICAgIAIhL8hCwsgAiACRAAAAAIAAKBBoiIBIAIgAaGgIgGhIgwgACAARAAAAAIAAKBBoiICIAAgAqGgIgKhIgCiIAwgAqIgASAAoqAiACABIAKiIgIgAiAAoCIAoaCgIQECQCAAIAugIgJEAAAA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\");\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n await new Promise(r => setTimeout(r, 0));\n return bytes.buffer;\n})();\nenv.loadModule(source, {\"memoryInitial\":5,\"tableInitial\":91,\"multithreaded\":false})\nenv.linkVariables(false);\n\n// export root namespace and its methods and constants\nconst { constructor: v0 } = root;\nconst v1 = env.getSpecialExports();\nconst {\n connect_web_gpu_programs: v2,\n connect_on_asset_update_callback: v3,\n ASSET_ID_TRESHOLD: v4,\n init_state: v5,\n add_asset: v6,\n remove_asset: v7,\n update_points: v8,\n on_update_pick: v9,\n on_pointer_down: v10,\n on_pointer_up: v11,\n on_pointer_move: v12,\n canvas_render: v13,\n picks_render: v14,\n destroy_state: v15,\n import_icons: v16,\n} = v0;\nexport {\n v0 as default,\n v1 as __zigar,\n v2 as connect_web_gpu_programs,\n v3 as connect_on_asset_update_callback,\n v4 as ASSET_ID_TRESHOLD,\n v5 as init_state,\n v6 as add_asset,\n v7 as remove_asset,\n v8 as update_points,\n v9 as on_update_pick,\n v10 as on_pointer_down,\n v11 as on_pointer_up,\n v12 as on_pointer_move,\n v13 as canvas_render,\n v14 as picks_render,\n v15 as destroy_state,\n v16 as import_icons,\n};\nawait v1.init();","import { memberNames, MemberType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport '../symbols.js';\nimport { defineProperty, defineValue } from '../utils.js';\n\n// handle retrieval of accessors\n\nvar all = mixin({\n init() {\n this.accessorCache = new Map();\n },\n getAccessor(access, member) {\n const { type, bitSize, bitOffset, byteSize } = member;\n const names = [];\n const unaligned = (byteSize === undefined) && (bitSize & 0x07 || bitOffset & 0x07);\n if (unaligned) {\n names.push('Unaligned');\n }\n let name = memberNames[type];\n if (bitSize > 32 && (type === MemberType.Int || type === MemberType.Uint)) {\n if (bitSize <= 64) {\n name = `Big${name}`;\n } else {\n name = `Jumbo${name}`;\n }\n }\n names.push(name, `${(type === MemberType.Bool && byteSize) ? byteSize * 8 : bitSize}`);\n if (unaligned) {\n names.push(`@${bitOffset}`);\n }\n const accessorName = access + names.join('');\n // see if it's a built-in method of DataView\n let accessor = DataView.prototype[accessorName];\n if (accessor) {\n return accessor;\n }\n // check cache\n accessor = this.accessorCache.get(accessorName);\n if (accessor) {\n return accessor;\n }\n while (names.length > 0) {\n const handlerName = `getAccessor${names.join('')}`;\n if (accessor = this[handlerName]?.(access, member)) {\n break;\n }\n names.pop();\n }\n if (!accessor) {\n throw new Error(`No accessor available: ${accessorName}`);\n }\n defineProperty(accessor, 'name', defineValue(accessorName));\n this.accessorCache.set(accessorName, accessor);\n return accessor;\n },\n});\n\nexport { all as default };\n","import { MemberType } from '../constants.js';\nimport { mixin } from '../environment.js';\n\n// handle non-standard ints 32-bit or smaller\n\nvar int = mixin({\n getAccessorInt(access, member) {\n const { bitSize, byteSize } = member;\n if (byteSize) {\n const f = this.getAccessor(access, { type: MemberType.Uint, bitSize: byteSize * 8, byteSize });\n const signMask = 2 ** (bitSize - 1);\n const valueMask = signMask - 1;\n if (access === 'get') {\n return function(offset, littleEndian) {\n const n = f.call(this, offset, littleEndian);\n return (n & valueMask) - (n & signMask);\n };\n } else {\n return function(offset, value, littleEndian) {\n const n = (value < 0) ? signMask | (value & valueMask) : value & valueMask;\n f.call(this, offset, n, littleEndian);\n };\n }\n }\n }\n});\n\nexport { int as default };\n","const StructureType = {\n Primitive: 0,\n Array: 1,\n Struct: 2,\n Union: 3,\n ErrorUnion: 4,\n ErrorSet: 5,\n Enum: 6,\n Optional: 7,\n Pointer: 8,\n Slice: 9,\n Vector: 10,\n Opaque: 11,\n ArgStruct: 12,\n VariadicStruct: 13,\n Function: 14,\n};\nconst structureNames = Object.keys(StructureType);\nconst StructureFlag = {\n HasValue: 0x0001,\n HasObject: 0x0002,\n HasPointer: 0x0004,\n HasSlot: 0x0008,\n};\nconst PrimitiveFlag = {\n IsSize: 0x0010,\n};\nconst ArrayFlag = {\n HasSentinel: 0x0010,\n IsString: 0x0020,\n IsTypedArray: 0x0040,\n IsClampedArray: 0x0080,\n};\nconst StructFlag = {\n IsExtern: 0x0010,\n IsPacked: 0x0020,\n IsIterator: 0x0040,\n IsTuple: 0x0080,\n\n IsAllocator: 0x0100,\n IsPromise: 0x0200,\n IsGenerator: 0x0400,\n IsAbortSignal: 0x0800,\n\n IsOptional: 0x1000,\n};\nconst UnionFlag = {\n HasSelector: 0x0010,\n HasTag: 0x0020,\n HasInaccessible: 0x0040,\n IsExtern: 0x0080,\n\n IsPacked: 0x0100,\n IsIterator: 0x0200,\n};\nconst EnumFlag = {\n IsOpenEnded: 0x0010,\n IsIterator: 0x0020,\n};\nconst OptionalFlag = {\n HasSelector: 0x0010,\n};\nconst PointerFlag = {\n HasLength: 0x0010,\n IsMultiple: 0x0020,\n IsSingle: 0x0040,\n IsConst: 0x0080,\n\n IsNullable: 0x0100,\n};\nconst SliceFlag = {\n HasSentinel: 0x0010,\n IsString: 0x0020,\n IsTypedArray: 0x0040,\n IsClampedArray: 0x0080,\n\n IsOpaque: 0x0100,\n};\nconst ErrorSetFlag = {\n IsGlobal: 0x0010,\n};\nconst OpaqueFlag = {\n IsIterator: 0x0010,\n};\nconst VectorFlag = {\n IsTypedArray: 0x0010,\n IsClampedArray: 0x0020,\n};\nconst ArgStructFlag = {\n HasOptions: 0x0010,\n IsThrowing: 0x0020,\n IsAsync: 0x0040,\n};\n\nconst MemberType = {\n Void: 0,\n Bool: 1,\n Int: 2,\n Uint: 3,\n Float: 4,\n Object: 5,\n Type: 6,\n Literal: 7,\n Null: 8,\n Undefined: 9,\n Unsupported: 10,\n};\nconst memberNames = Object.keys(MemberType);\nconst MemberFlag = {\n IsRequired: 0x0001,\n IsReadOnly: 0x0002,\n IsPartOfSet: 0x0004,\n IsSelector: 0x0008,\n IsMethod: 0x0010,\n IsSentinel: 0x0020,\n IsBackingInt: 0x0040,\n};\n\nconst CallResult = {\n OK: 0,\n Failure: 1,\n Deadlock: 2,\n Disabled: 3,\n};\n\nconst ModuleAttribute = {\n LittleEndian: 0x0001,\n RuntimeSafety: 0x0002,\n LibC: 0x0004,\n};\n\nconst VisitorFlag = {\n IsInactive: 0x0001,\n IsImmutable: 0x0002,\n\n IgnoreUncreated: 0x0004,\n IgnoreInactive: 0x0008,\n IgnoreArguments: 0x0010,\n IgnoreRetval: 0x0020,\n};\n\nexport { ArgStructFlag, ArrayFlag, CallResult, EnumFlag, ErrorSetFlag, MemberFlag, MemberType, ModuleAttribute, OpaqueFlag, OptionalFlag, PointerFlag, PrimitiveFlag, SliceFlag, StructFlag, StructureFlag, StructureType, UnionFlag, VectorFlag, VisitorFlag, memberNames, structureNames };\n","import { defineProperty, defineValue } from './utils.js';\n\nconst cls = {\n name: '',\n mixins: [],\n constructor: null,\n};\n\nfunction reset() {\n cls.name = '';\n cls.constructor = null;\n cls.mixins = [];\n}\n\nfunction name(s) {\n cls.name = s;\n}\n\nfunction mixin(object) {\n if (!cls.constructor) {\n cls.mixins.push(object);\n }\n return object;\n}\n\nfunction defineEnvironment() {\n if (!cls.constructor) {\n cls.constructor = defineClass(cls.name, cls.mixins);\n cls.name = '';\n cls.mixins = [];\n }\n return cls.constructor;\n}\n\nfunction defineClass(name, mixins) {\n const initFunctions = [];\n const constructor = function() {\n for (const init of initFunctions) {\n init.call(this);\n }\n };\n const { prototype } = constructor;\n defineProperty(constructor, 'name', defineValue(name));\n for (const mixin of mixins) {\n for (let [ name, object ] of Object.entries(mixin)) {\n if (name === 'init') {\n initFunctions.push(object);\n } else {\n if (typeof(object) === 'function') ; else {\n let current = prototype[name];\n if (current !== undefined) {\n if (current?.constructor === Object) {\n object = Object.assign({ ...current }, object);\n } else if (current !== object) {\n throw new Error(`Duplicate property: ${name}`);\n }\n }\n }\n defineProperty(prototype, name, defineValue(object));\n }\n }\n }\n return constructor;\n}\n\nexport { defineClass, defineEnvironment, mixin, name, reset };\n","import { StructureType, memberNames } from './constants.js';\nimport { TYPED_ARRAY, UPDATE } from './symbols.js';\nimport { getPrimitiveName, defineProperty } from './utils.js';\n\nclass MustBeOverridden extends Error {\n constructor() {\n super(`Method must be overridden`);\n }\n}\n\nclass InvalidIntConversion extends SyntaxError {\n constructor(arg) {\n super(`Cannot convert ${arg} to an Int`);\n }\n}\n\nclass Unsupported extends TypeError {\n constructor() {\n super(`Unsupported`);\n }\n}\n\nclass NoInitializer extends TypeError {\n constructor(structure) {\n const { name } = structure;\n super(`An initializer must be provided to the constructor of ${name}, even when the intended value is undefined`);\n }\n}\n\nclass BufferSizeMismatch extends TypeError {\n constructor(structure, dv, target = null) {\n const { name, type, byteSize } = structure;\n const actual = dv.byteLength;\n const s = (byteSize !== 1) ? 's' : '';\n let msg;\n if (type === StructureType.Slice && !target) {\n msg = `${name} has elements that are ${byteSize} byte${s} in length, received ${actual}`;\n } else {\n const total = (type === StructureType.Slice) ? target.length * byteSize : byteSize;\n msg = `${name} has ${total} byte${s}, received ${actual}`;\n }\n super(msg);\n }\n}\n\nclass BufferExpected extends TypeError {\n constructor(structure) {\n const { type, byteSize, typedArray } = structure;\n const s = (byteSize !== 1) ? 's' : '';\n const acceptable = [ 'ArrayBuffer', 'DataView' ].map(addArticle);\n if (typedArray) {\n acceptable.push(addArticle(typedArray.name));\n }\n let msg;\n if (type === StructureType.Slice) {\n msg = `Expecting ${formatList(acceptable)} that can accommodate items ${byteSize} byte${s} in length`;\n } else {\n msg = `Expecting ${formatList(acceptable)} that is ${byteSize} byte${s} in length`;\n }\n super(msg);\n }\n}\n\nclass EnumExpected extends TypeError {\n constructor(structure, arg) {\n const { name } = structure;\n let msg;\n if (typeof(arg) === 'number' || typeof(arg) === 'bigint') {\n msg = `Value given does not correspond to an item of enum ${name}: ${arg}`;\n } else {\n msg = `Enum item of the type ${name} expected, received ${arg}`;\n }\n super(msg);\n }\n}\n\nclass ErrorExpected extends TypeError {\n constructor(structure, arg) {\n const { name } = structure;\n const type = typeof(arg);\n let msg;\n if (type === 'string' || type === 'number' || isErrorJSON(arg)) {\n if (isErrorJSON(arg)) {\n arg = `{ error: ${JSON.stringify(arg.error)} }`;\n }\n msg = `Error ${type} does not corresponds to any error in error set ${name}: ${arg}`;\n } else {\n msg = `Error of the type ${name} expected, received ${arg}`;\n }\n super(msg);\n }\n}\n\nclass NotInErrorSet extends TypeError {\n constructor(structure) {\n const { name } = structure;\n super(`Error given is not a part of error set ${name}`);\n }\n}\n\nclass InvalidType extends TypeError {\n constructor(structure) {\n const { name } = structure;\n super(`Object of specific type expected: ${name}`);\n }\n}\n\nclass MultipleUnionInitializers extends TypeError {\n constructor(structure) {\n const { name } = structure;\n super(`Only one property of ${name} can be given a value`);\n }\n}\n\nclass InactiveUnionProperty extends TypeError {\n constructor(structure, name, currentName) {\n super(`Accessing property ${name} when ${currentName} is active`);\n }\n}\n\nclass MissingUnionInitializer extends TypeError {\n constructor(structure, arg, exclusion) {\n const { name, instance: { members } } = structure;\n const missing = members.slice(0, exclusion ? -1 : undefined).map(m => m.name);\n super(`${name} needs an initializer for one of its union properties: ${missing.join(', ')}`);\n }\n}\n\nclass InvalidInitializer extends TypeError {\n constructor(structure, expected, arg) {\n const { name } = structure;\n const acceptable = [];\n if (Array.isArray(expected)) {\n for (const type of expected) {\n acceptable.push(addArticle(type));\n }\n } else {\n acceptable.push(addArticle(expected));\n }\n const received = getDescription(arg);\n super(`${name} expects ${formatList(acceptable)} as argument, received ${received}`);\n }\n}\n\nclass InvalidArrayInitializer extends InvalidInitializer {\n constructor(structure, arg, shapeless = false) {\n const { instance: { members: [ member ] }, type, constructor } = structure;\n const acceptable = [];\n const primitive = getPrimitiveName(member);\n if (primitive) {\n let object;\n switch (member.structure?.type) {\n case StructureType.Enum: object = 'enum item'; break;\n case StructureType.ErrorSet: object = 'error'; break;\n default: object = primitive;\n }\n acceptable.push(`array of ${object}s`);\n } else {\n acceptable.push(`array of objects`);\n }\n if (constructor[TYPED_ARRAY]) {\n acceptable.push(constructor[TYPED_ARRAY].name);\n }\n if (type === StructureType.Slice && shapeless) {\n acceptable.push(`length`);\n }\n super(structure, acceptable.join(' or '), arg);\n }\n}\n\nclass ArrayLengthMismatch extends TypeError {\n constructor(structure, target, arg) {\n const { name, length, instance: { members: [ member ] } } = structure;\n const { structure: { constructor: elementConstructor} } = member;\n const { length: argLength, constructor: argConstructor } = arg;\n // get length from object whech it's a slice\n const actualLength = target?.length ?? length;\n const s = (actualLength !== 1) ? 's' : '';\n let received;\n if (argConstructor === elementConstructor) {\n received = `only a single one`;\n } else if (argConstructor.child === elementConstructor) {\n received = `a slice/array that has ${argLength}`;\n } else {\n received = `${argLength} initializer${argLength > 1 ? 's' : ''}`;\n }\n super(`${name} has ${actualLength} element${s}, received ${received}`);\n }\n}\n\nclass InvalidSliceLength extends TypeError {\n constructor(length, max) {\n if (length < 0) {\n super(`Length of slice cannot be negative`);\n } else {\n super(`Length of slice can be ${max} or less, received ${length}`);\n }\n }\n}\n\nclass MissingInitializers extends TypeError {\n constructor(structure, missing) {\n const { name } = structure;\n super(`Missing initializers for ${name}: ${missing.join(', ')}`);\n }\n}\n\nclass NoProperty extends TypeError {\n constructor(structure, propName) {\n const { name, instance: { members } } = structure;\n const member = members.find(m => m.name === propName);\n let msg;\n if (member) {\n msg = `Comptime value cannot be changed: ${propName}`;\n } else {\n msg = `${name} does not have a property with that name: ${propName}`;\n }\n super(msg);\n }\n}\n\nclass ArgumentCountMismatch extends Error {\n constructor(expected, received, variadic = false) {\n super();\n const updateText = (argOffset) => {\n expected -= argOffset;\n received -= argOffset;\n const s = (expected !== 1) ? 's' : '';\n const p = (variadic) ? 'at least ' : '';\n this.message = `Expecting ${p}${expected} argument${s}, received ${received}`;\n this.stack = adjustStack(this.stack, 'new Arg(');\n };\n updateText(0);\n defineProperty(this, UPDATE, { value: updateText, enumerable: false });\n }\n}\n\nclass UndefinedArgument extends Error {\n constructor() {\n super(`Undefined argument`);\n }\n}\n\nclass NoCastingToPointer extends TypeError {\n constructor() {\n super(`Non-slice pointers can only be created with the help of the new operator`);\n }\n}\n\nclass NoCastingToFunction extends TypeError {\n constructor() {\n super(`Casting to function is not allowed`);\n }\n}\n\nclass ConstantConstraint extends TypeError {\n constructor(structure, pointer) {\n const { name: target } = structure;\n const { constructor: { name } } = pointer;\n super(`Conversion of ${name} to ${target} requires an explicit cast`);\n }\n}\n\nclass MisplacedSentinel extends TypeError {\n constructor(structure, value, index, length) {\n const { name } = structure;\n super(`${name} expects the sentinel value ${value} at ${length - 1}, found at ${index}`);\n }\n}\n\nclass MissingSentinel extends TypeError {\n constructor(structure, value, length) {\n const { name } = structure;\n super(`${name} expects the sentinel value ${value} at ${length - 1}`);\n }\n}\n\nclass AlignmentConflict extends TypeError {\n constructor(align1, align2) {\n super(`Unable to simultaneously align memory to ${align2}-byte and ${align1}-byte boundary`);\n }\n}\n\nclass AssigningToConstant extends TypeError {\n constructor(pointer) {\n const { constructor: { name } } = pointer;\n super(`${name} cannot be modified`);\n }\n}\n\nclass TypeMismatch extends TypeError {\n constructor(expected, arg) {\n const received = getDescription(arg);\n super(`Expected ${addArticle(expected)}, received ${received}`);\n }\n}\n\nclass InaccessiblePointer extends TypeError {\n constructor() {\n super(`Pointers within an untagged union are not accessible`);\n }\n}\n\nclass NullPointer extends TypeError {\n constructor() {\n super(`Null pointer`);\n }\n}\n\nclass PreviouslyFreed extends TypeError {\n constructor(arg) {\n super(`Object has been freed already: ${arg.constructor.name}`);\n }\n}\n\nclass InvalidPointerTarget extends TypeError {\n constructor(structure, arg) {\n const { name } = structure;\n let target;\n if (arg != null) {\n const noun = (arg instanceof Object && arg.constructor !== Object) ? `${arg.constructor.name} object`: typeof(arg);\n const a = article(noun);\n target = `${a} ${noun}`;\n } else {\n target = arg + '';\n }\n super(`${name} cannot point to ${target}`);\n }\n}\n\nclass ZigMemoryTargetRequired extends TypeError {\n constructor() {\n super(`Pointers in Zig memory cannot point to garbage-collected object`);\n }\n}\n\nclass Overflow extends TypeError {\n constructor(member, value) {\n const { type, bitSize } = member;\n const name = (bitSize > 32 ? 'Big' : '') + memberNames[type] + bitSize;\n super(`${name} cannot represent the value given: ${value}`);\n }\n}\n\nclass OutOfBound extends RangeError {\n constructor(member, index) {\n const { name } = member;\n super(`Index exceeds the size of ${name ?? 'array'}: ${index}`);\n }\n}\n\nclass NotUndefined extends TypeError {\n constructor(member) {\n const { name } = member;\n const rvalue = (name !== undefined) ? `Property ${name}` : `Element`;\n super(`${rvalue} can only be undefined`);\n }\n}\n\nclass NotOnByteBoundary extends TypeError {\n constructor(member) {\n const { name, structure: { name: struct } } = member;\n super(`Unable to create ${struct} as it is not situated on a byte boundary: ${name}`);\n }\n}\n\nclass ReadOnly extends TypeError {\n constructor() {\n super(`Unable to modify read-only object`);\n }\n}\n\nclass ReadOnlyTarget extends TypeError {\n constructor(structure) {\n const { name } = structure;\n super(`${name} cannot point to a read-only object`);\n }\n}\n\nclass AccessingOpaque extends TypeError {\n constructor(structure) {\n const { name } = structure;\n super(`Unable to access opaque structure ${name}`);\n }\n}\n\nclass CreatingOpaque extends TypeError {\n constructor(structure) {\n const { name } = structure;\n super(`Unable to create instance of ${name}, as it is opaque`);\n }\n}\n\nclass InvalidVariadicArgument extends TypeError {\n constructor() {\n super(`Arguments passed to variadic function must be casted to a Zig type`);\n }\n}\n\nclass UnexpectedGenerator extends TypeError {\n constructor() {\n super(`Unexpected async generator`);\n }\n}\n\nclass ZigError extends Error {\n constructor(error, remove = 0) {\n if (error instanceof Error) {\n super(error.message);\n error.stack = adjustStack(this.stack, remove);\n return error;\n } else {\n super(error ?? 'Error encountered in Zig code');\n }\n }\n}\n\nclass Exit extends ZigError {\n constructor(code) {\n super('Program exited');\n this.code = code;\n }\n}\n\nfunction adjustArgumentError(err, argIndex) {\n const updateText = (argOffset) => {\n argIndex -= argOffset;\n err.message = `args[${argIndex}]: ${err.message}`;\n err.stack = adjustStack(err.stack, 'new Arg(');\n };\n updateText(0);\n defineProperty(err, UPDATE, { value: updateText, enumerable: false });\n return err;\n}\n\nfunction adjustStack(stack, search) {\n if (typeof(stack) === 'string') {\n const lines = stack.split('\\n');\n const index = lines.findIndex(s => s.includes(search));\n if (index !== -1) {\n lines.splice(1, index);\n stack = lines.join('\\n');\n }\n }\n return stack;\n}\n\nfunction replaceRangeError(member, index, err) {\n if (err instanceof RangeError && !(err instanceof OutOfBound)) {\n err = new OutOfBound(member, index);\n }\n return err;\n}\n\nfunction throwReadOnly() {\n throw new ReadOnly();\n}\n\nfunction deanimalizeErrorName(name) {\n // deal with snake_case first\n let s = name.replace(/_/g, ' ');\n // then camelCase, using a try block in case Unicode regex fails\n try {\n s = s.replace(/(\\p{Uppercase}+)(\\p{Lowercase}*)/gu, (m0, m1, m2) => {\n if (m1.length === 1) {\n return ` ${m1.toLocaleLowerCase()}${m2}`;\n } else {\n if (m2) {\n return m0;\n } else {\n return ` ${m1}`;\n }\n }\n }).trimStart();\n } catch (err) {\n }\n return s.charAt(0).toLocaleUpperCase() + s.substring(1);\n}\n\nfunction isErrorJSON(arg) {\n return typeof(arg) === 'object' && typeof(arg.error) === 'string' && Object.keys(arg).length === 1 ;\n}\n\nfunction getDescription(arg) {\n const type = typeof(arg);\n let s;\n if (type === 'object') {\n s = (arg) ? Object.prototype.toString.call(arg) : 'null';\n } else {\n s = type;\n }\n return addArticle(s);\n}\n\nfunction addArticle(noun) {\n return `${article(noun)} ${noun}`;\n}\n\nfunction article(noun) {\n return /^\\W*[aeiou]/i.test(noun) ? 'an' : 'a';\n}\n\nfunction formatList(list, conj = 'or') {\n const sep = ` ${conj} `;\n if (list.length > 2) {\n return list.slice(0, -1).join(', ') + sep + list[list.length - 1];\n } else {\n return list.join(sep);\n }\n}\n\nexport { AccessingOpaque, AlignmentConflict, ArgumentCountMismatch, ArrayLengthMismatch, AssigningToConstant, BufferExpected, BufferSizeMismatch, ConstantConstraint, CreatingOpaque, EnumExpected, ErrorExpected, Exit, InaccessiblePointer, InactiveUnionProperty, InvalidArrayInitializer, InvalidInitializer, InvalidIntConversion, InvalidPointerTarget, InvalidSliceLength, InvalidType, InvalidVariadicArgument, MisplacedSentinel, MissingInitializers, MissingSentinel, MissingUnionInitializer, MultipleUnionInitializers, MustBeOverridden, NoCastingToFunction, NoCastingToPointer, NoInitializer, NoProperty, NotInErrorSet, NotOnByteBoundary, NotUndefined, NullPointer, OutOfBound, Overflow, PreviouslyFreed, ReadOnly, ReadOnlyTarget, TypeMismatch, UndefinedArgument, UnexpectedGenerator, Unsupported, ZigError, ZigMemoryTargetRequired, addArticle, adjustArgumentError, article, deanimalizeErrorName, formatList, getDescription, isErrorJSON, replaceRangeError, throwReadOnly };\n","import { structureNames } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { MEMORY, SLOTS, TYPE, ALIGN, SIZE, ENVIRONMENT } from '../symbols.js';\n\nvar baseline = mixin({\n init() {\n this.variables = [];\n },\n getSpecialExports() {\n const check = (v) => {\n if (v === undefined) throw new Error('Not a Zig type');\n return v;\n };\n return {\n init: (...args) => this.initialize?.(...args),\n abandon: () => this.abandonModule?.(),\n connect: (console) => this.consoleObject = console,\n sizeOf: (T) => check(T?.[SIZE]),\n alignOf: (T) => check(T?.[ALIGN]),\n typeOf: (T) => structureNamesLC[check(T?.[TYPE])],\n };\n },\n recreateStructures(structures, settings) {\n Object.assign(this, settings);\n const insertObjects = (dest, placeholders) => {\n for (const [ slot, placeholder ] of Object.entries(placeholders)) {\n dest[slot] = createObject(placeholder);\n }\n return dest;\n };\n // empty arrays aren't replicated\n const getBuffer = a => (a.length) ? a.buffer : new ArrayBuffer(0);\n const createObject = (placeholder) => {\n const { memory, structure, actual } = placeholder;\n if (memory) {\n if (actual) {\n return actual;\n } else {\n const { array, offset, length } = memory;\n const dv = this.obtainView(getBuffer(array), offset, length);\n const { handle, const: isConst } = placeholder;\n const constructor = structure?.constructor;\n const object = placeholder.actual = constructor.call(ENVIRONMENT, dv);\n if (isConst) {\n this.makeReadOnly(object);\n }\n if (placeholder.slots) {\n insertObjects(object[SLOTS], placeholder.slots);\n }\n if (handle) {\n // need to replace dataview with one pointing to Zig memory later,\n // when the VM is up and running\n this.variables.push({ handle, object });\n }\n return object;\n }\n } else {\n return structure;\n }\n };\n this.resetGlobalErrorSet?.();\n const objectPlaceholders = new Map();\n for (const structure of structures) {\n // recreate the actual template using the provided placeholder\n for (const scope of [ structure.instance, structure.static ]) {\n if (scope.template) {\n const { slots, memory, handle } = scope.template;\n const object = scope.template = {};\n if (memory) {\n const { array, offset, length } = memory;\n object[MEMORY] = this.obtainView(getBuffer(array), offset, length);\n if (handle) {\n this.variables.push({ handle, object });\n }\n }\n if (slots) {\n // defer creation of objects until shapes of structures are finalized\n const realSlots = object[SLOTS] = {};\n objectPlaceholders.set(realSlots, slots);\n }\n }\n }\n this.defineStructure(structure);\n }\n // insert objects into template slots\n for (const [ slots, placeholders ] of objectPlaceholders) {\n insertObjects(slots, placeholders);\n }\n // add static members, methods, etc.\n for (const structure of structures) {\n this.finalizeStructure(structure);\n }\n },\n});\n\nconst structureNamesLC = structureNames.map(name => name.replace(/([a-z])([A-Z])/g, '$1 $2').toLowerCase());\n\nexport { baseline as default };\n","import { CallResult, StructureType, StructFlag, MemberType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { UnexpectedGenerator } from '../errors.js';\nimport { MEMORY, ZIG, ALLOCATOR, VISIT, THROWING, RETURN, YIELD } from '../symbols.js';\n\nvar callMarshalingInbound = mixin({\n init() {\n this.jsFunctionThunkMap = new Map();\n this.jsFunctionCallerMap = new Map();\n this.jsFunctionControllerMap = new Map();\n this.jsFunctionIdMap = new WeakMap();\n this.jsFunctionNextId = 1;\n },\n getFunctionId(fn) {\n let id = this.jsFunctionIdMap.get(fn);\n if (id === undefined) {\n id = this.jsFunctionNextId++;\n this.jsFunctionIdMap.set(fn, id);\n }\n return id;\n },\n getFunctionThunk(fn, jsThunkController) {\n const id = this.getFunctionId(fn);\n let dv = this.jsFunctionThunkMap.get(id);\n if (dv === undefined) {\n const controllerAddress = this.getViewAddress(jsThunkController[MEMORY]);\n const thunkAddress = this.createJsThunk(controllerAddress, id);\n if (!thunkAddress) {\n throw new Error('Unable to create function thunk');\n }\n dv = this.obtainZigView(thunkAddress, 0);\n this.jsFunctionThunkMap.set(id, dv);\n this.jsFunctionControllerMap.set(id, jsThunkController);\n }\n return dv;\n },\n createInboundCaller(fn, ArgStruct) {\n const handler = (dv, futexHandle) => {\n let result = CallResult.OK;\n let awaiting = false;\n try {\n const argStruct = ArgStruct(dv);\n if (VISIT in argStruct) {\n // reset pointers in arg so we don't pick up old pointers\n // objects in stack memory really shouldn't be cached\n argStruct[VISIT]('reset');\n const context = this.startContext();\n this.updatePointerTargets(context, argStruct, true);\n this.updateShadowTargets(context);\n this.endContext();\n }\n const onError = function(err) {\n try {\n // if the error is not part of the error set returned by the function,\n // the following will throw\n if (ArgStruct[THROWING] && err instanceof Error) {\n argStruct[RETURN](err);\n } else {\n throw err;\n }\n } catch (_) {\n result = CallResult.Failure;\n console.error(err);\n }\n };\n const onReturn = function(value) {\n try {\n // [RETURN] defaults to the setter of retval; if the function accepts a promise,\n // it'd invoke the callback\n argStruct[RETURN](value);\n } catch (err) {\n result = CallResult.Failure;\n console.error(err);\n }\n };\n try {\n const retval = fn(...argStruct);\n const hasCallback = argStruct.hasOwnProperty(RETURN);\n if (retval?.[Symbol.toStringTag] === 'Promise') {\n // we can handle a promise when the Zig caller is able to wait or\n // it's receiving the result through a callback\n if (futexHandle || hasCallback) {\n const promise = retval.then(onReturn, onError);\n if (futexHandle) {\n promise.then(() => this.finalizeAsyncCall(futexHandle, result));\n }\n awaiting = true;\n result = CallResult.OK;\n } else {\n result = CallResult.Deadlock;\n }\n } else if (retval?.[Symbol.asyncIterator]) {\n if (argStruct.hasOwnProperty(YIELD)) {\n this.pipeContents(retval, argStruct);\n result = CallResult.OK;\n } else {\n throw new UnexpectedGenerator();\n }\n } else if (retval != undefined || !hasCallback) {\n onReturn(retval);\n }\n } catch (err) {\n onError(err);\n }\n } catch(err) {\n console.error(err);\n result = CallResult.Failure;\n }\n if (futexHandle && !awaiting) {\n this.finalizeAsyncCall(futexHandle, result);\n }\n return result;\n };\n const id = this.getFunctionId(fn);\n this.jsFunctionCallerMap.set(id, handler);\n return function(...args) {\n return fn(...args);\n };\n },\n defineArgIterator(members) {\n const thisEnv = this;\n const allocatorTotal = members.filter(({ structure: s }) => {\n return (s.type === StructureType.Struct) && (s.flags & StructFlag.IsAllocator);\n }).length;\n return {\n value() {\n let options;\n let allocatorCount = 0, callbackCount = 0, signalCount = 0;\n const args = [];\n for (const [ srcIndex, { structure, type } ] of members.entries()) {\n // error unions will throw on access, in which case we pass the error as the argument\n try {\n let arg = this[srcIndex];\n if (type === MemberType.Object && arg?.[MEMORY]?.[ZIG]) {\n // create copy in JS memory\n arg = new arg.constructor(arg);\n }\n let optName, opt;\n if (structure.type === StructureType.Struct) {\n if (structure.flags & StructFlag.IsAllocator) {\n optName = (allocatorTotal === 1) ? `allocator` : `allocator${++allocatorCount}`;\n opt = this[ALLOCATOR] = arg;\n } else if (structure.flags & StructFlag.IsPromise) {\n optName = 'callback';\n if (++callbackCount === 1) {\n opt = thisEnv.createPromiseCallback(this, arg);\n }\n } else if (structure.flags & StructFlag.IsGenerator) {\n optName = 'callback';\n if (++callbackCount === 1) {\n opt = thisEnv.createGeneratorCallback(this, arg);\n }\n } else if (structure.flags & StructFlag.IsAbortSignal) {\n optName = 'signal';\n if (++signalCount === 1) {\n opt = thisEnv.createInboundSignal(arg);\n }\n }\n }\n if (optName !== undefined) {\n if (opt !== undefined) {\n options ||= {};\n options[optName] = opt;\n }\n } else {\n // just a regular argument\n args.push(arg);\n }\n } catch (err) {\n args.push(err);\n }\n }\n if (options) {\n args.push(options);\n }\n return args[Symbol.iterator]();\n }\n };\n },\n handleJsCall(id, argAddress, argSize, futexHandle = 0) {\n const dv = this.obtainZigView(argAddress, argSize, false);\n const caller = this.jsFunctionCallerMap.get(id);\n return (caller) ? caller(dv, futexHandle) : CallResult.Failure;\n },\n releaseFunction(id) {\n const thunk = this.jsFunctionThunkMap.get(id);\n const controller = this.jsFunctionControllerMap.get(id);\n if (thunk && controller) {\n const controllerAddress = this.getViewAddress(controller[MEMORY]);\n const thunkAddress = this.getViewAddress(thunk);\n this.destroyJsThunk(controllerAddress, thunkAddress);\n this.releaseZigView(thunk);\n if (id) {\n this.jsFunctionThunkMap.delete(id);\n this.jsFunctionCallerMap.delete(id);\n this.jsFunctionControllerMap.delete(id);\n }\n }\n },\n ...({\n exports: {\n handleJsCall: { argType: 'iiii', returnType: 'i' },\n releaseFunction: { argType: 'i' },\n },\n imports: {\n createJsThunk: { argType: 'ii', returnType: 'i' },\n destroyJsThunk: { argType: 'ii', returnType: 'i' },\n finalizeAsyncCall: { argType: 'ii' },\n },\n } ),\n});\n\nexport { callMarshalingInbound as default };\n","import { StructureType, StructFlag, MemberType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { ZigError, UndefinedArgument, adjustArgumentError, Exit } from '../errors.js';\nimport { ATTRIBUTES, MEMORY, FINALIZE, COPY, RETURN, PROMISE, GENERATOR, SETTERS, VISIT, ALLOCATOR } from '../symbols.js';\n\nvar callMarshalingOutbound = mixin({\n createOutboundCaller(thunk, ArgStruct) {\n const thisEnv = this;\n const self = function (...args) {\n {\n if (!thisEnv.runThunk) {\n return thisEnv.initPromise.then(() => {\n return self(...args);\n });\n }\n }\n // `this` is present when running a promise and generator callback received from a inbound call\n // it's going to be the argument struct of that call\n const argStruct = new ArgStruct(args, this?.[ALLOCATOR]);\n {\n try {\n return thisEnv.invokeThunk(thunk, self, argStruct);\n } catch (err) {\n // do nothing when exit code is 0\n if (err instanceof Exit && err.code === 0) {\n return;\n }\n throw err;\n }\n }\n };\n return self;\n },\n copyArguments(argStruct, argList, members, options, argAlloc) {\n let destIndex = 0, srcIndex = 0;\n let allocatorCount = 0;\n const setters = argStruct[SETTERS];\n for (const { type, structure } of members) {\n let arg, promise, generator, signal;\n if (structure.type === StructureType.Struct) {\n if (structure.flags & StructFlag.IsAllocator) {\n // use programmer-supplied allocator if found in options object, handling rare scenarios\n // where a function uses multiple allocators\n const allocator = (++allocatorCount === 1)\n ? options?.['allocator'] ?? options?.['allocator1']\n : options?.[`allocator${allocatorCount}`];\n // otherwise use default allocator which allocates relocatable memory from JS engine\n arg = allocator ?? this.createDefaultAllocator(argStruct, structure);\n } else if (structure.flags & StructFlag.IsPromise) {\n promise ||= this.createPromise(argStruct, options?.['callback']);\n arg = promise;\n } else if (structure.flags & StructFlag.IsGenerator) {\n generator ||= this.createGenerator(argStruct, options?.['callback']);\n arg = generator;\n } else if (structure.flags & StructFlag.IsAbortSignal) {\n // create an Int32Array with one element, hooking it up to the programmer-supplied\n // AbortSignal object if found\n signal ||= this.createSignal(structure, options?.['signal']);\n arg = signal;\n }\n }\n if (arg === undefined) {\n // just a regular argument\n arg = argList[srcIndex++];\n // only void has the value of undefined\n if (arg === undefined && type !== MemberType.Void) {\n throw new UndefinedArgument();\n }\n }\n try {\n const set = setters[destIndex++];\n set.call(argStruct, arg, argAlloc);\n } catch (err) {\n throw adjustArgumentError(err, destIndex - 1);\n }\n }\n },\n invokeThunk(thunk, fn, argStruct) {\n const context = this.startContext();\n const attrs = argStruct[ATTRIBUTES];\n const thunkAddress = this.getViewAddress(thunk[MEMORY]);\n const fnAddress = this.getViewAddress(fn[MEMORY]);\n const isAsync = FINALIZE in argStruct;\n const hasPointers = VISIT in argStruct;\n if (hasPointers) {\n this.updatePointerAddresses(context, argStruct);\n }\n // return address of shadow for argumnet struct\n const argAddress = this.getShadowAddress(context, argStruct, null, false)\n ;\n // get address of attributes if function variadic\n const attrAddress = (attrs) ? this.getShadowAddress(context, attrs) : 0\n ;\n this.updateShadows(context);\n const finalize = () => {\n this.updateShadowTargets(context);\n // create objects that pointers point to\n if (hasPointers) {\n this.updatePointerTargets(context, argStruct);\n }\n if (this.libc) {\n this.flushStdout?.();\n }\n this.flushConsole?.();\n this.endContext();\n };\n if (isAsync) {\n argStruct[FINALIZE] = finalize;\n }\n const success = (attrs)\n ? this.runVariadicThunk(thunkAddress, fnAddress, argAddress, attrAddress, attrs.length)\n : this.runThunk(thunkAddress, fnAddress, argAddress);\n if (!success) {\n finalize();\n throw new ZigError();\n }\n {\n // copy retval from shadow view\n argStruct[COPY]?.(this.findShadowView(argStruct[MEMORY]));\n }\n if (isAsync) {\n let retval = null;\n // if a function has returned a value or failed synchronmously, the promise is resolved immediately\n try {\n retval = argStruct.retval;\n } catch (err) {\n retval = new ZigError(err, 1);\n }\n if (retval != null) {\n argStruct[RETURN](retval);\n }\n // this would be undefined if a callback function is used instead\n return argStruct[PROMISE] ?? argStruct[GENERATOR];\n } else {\n finalize();\n try {\n return argStruct.retval;\n } catch (err) {\n throw new ZigError(err, 1);\n }\n }\n },\n ...({\n imports: {\n runThunk: { argType: 'iii', returnType: 'b' },\n runVariadicThunk: { argType: 'iiiii', returnType: 'b' },\n },\n } ),\n});\n\nexport { callMarshalingOutbound as default };\n","import { MemberType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { MEMORY, ZIG, RESTORE } from '../symbols.js';\nimport { empty } from '../utils.js';\n\nvar dataCopying = mixin({\n init() {\n const int8 = { type: MemberType.Int, bitSize: 8, byteSize: 1 };\n const int16 = { type: MemberType.Int, bitSize: 16, byteSize: 2 };\n const int32 = { type: MemberType.Int, bitSize: 32, byteSize: 4 };\n const getInt8 = this.getAccessor('get', int8);\n const setInt8 = this.getAccessor('set', int8);\n const getInt16 = this.getAccessor('get', int16);\n const setInt16 = this.getAccessor('set', int16);\n const getInt32 = this.getAccessor('get', int32);\n const setInt32 = this.getAccessor('set', int32);\n this.copiers = {\n 0: empty,\n 1: function(dest, src) {\n setInt8.call(dest, 0, getInt8.call(src, 0));\n },\n 2: function(dest, src) {\n setInt16.call(dest, 0, getInt16.call(src, 0, true), true);\n\n },\n 4: function(dest, src) {\n setInt32.call(dest, 0, getInt32.call(src, 0, true), true);\n },\n 8: function(dest, src) {\n setInt32.call(dest, 0, getInt32.call(src, 0, true), true);\n setInt32.call(dest, 4, getInt32.call(src, 4, true), true);\n },\n 16: function(dest, src) {\n setInt32.call(dest, 0, getInt32.call(src, 0, true), true);\n setInt32.call(dest, 4, getInt32.call(src, 4, true), true);\n setInt32.call(dest, 8, getInt32.call(src, 8, true), true);\n setInt32.call(dest, 12, getInt32.call(src, 12, true), true);\n },\n 'any': function(dest, src) {\n let i = 0, len = dest.byteLength;\n while (i + 4 <= len) {\n setInt32.call(dest, i, getInt32.call(src, i, true), true);\n i += 4;\n }\n while (i + 1 <= len) {\n setInt8.call(dest, i, getInt8.call(src, i));\n i++;\n }\n },\n };\n this.resetters = {\n 0: empty,\n 1: function(dest, offset) {\n setInt8.call(dest, offset, 0);\n },\n 2: function(dest, offset) {\n setInt16.call(dest, offset, 0, true);\n\n },\n 4: function(dest, offset) {\n setInt32.call(dest, offset, 0, true);\n },\n 8: function(dest, offset) {\n setInt32.call(dest, offset + 0, 0, true);\n setInt32.call(dest, offset + 4, 0, true);\n },\n 16: function(dest, offset) {\n setInt32.call(dest, offset + 0, 0, true);\n setInt32.call(dest, offset + 4, 0, true);\n setInt32.call(dest, offset + 8, 0, true);\n setInt32.call(dest, offset + 12, 0, true);\n },\n any: function(dest, offset, len) {\n let i = offset;\n while (i + 4 <= len) {\n setInt32.call(dest, i, 0, true);\n i += 4;\n }\n while (i + 1 <= len) {\n setInt8.call(dest, i, 0);\n i++;\n }\n },\n };\n },\n defineCopier(size, multiple) {\n const copy = this.getCopyFunction(size, multiple);\n return {\n value(target) {\n {\n this[RESTORE]?.();\n target[RESTORE]?.();\n }\n const src = target[MEMORY];\n const dest = this[MEMORY];\n copy(dest, src);\n },\n };\n },\n defineResetter(offset, size) {\n const reset = this.getResetFunction(size);\n return {\n value() {\n {\n this[RESTORE]?.();\n }\n const dest = this[MEMORY];\n reset(dest, offset, size);\n }\n };\n },\n getCopyFunction(size, multiple = false) {\n const f = !multiple ? this.copiers[size] : undefined;\n return f ?? this.copiers.any;\n },\n getResetFunction(size) {\n return this.resetters[size] ?? this.resetters.any;\n },\n ...({\n defineRetvalCopier({ byteSize, bitOffset }) {\n if (byteSize > 0) {\n const thisEnv = this;\n const offset = bitOffset >> 3;\n const copy = this.getCopyFunction(byteSize);\n return {\n value(shadowDV) {\n const dv = this[MEMORY];\n const { address } = shadowDV[ZIG];\n const src = new DataView(thisEnv.memory.buffer, address + offset, byteSize);\n const dest = new DataView(dv.buffer, dv.byteOffset + offset, byteSize);\n copy(dest, src);\n }\n };\n }\n },\n copyExternBytes(dst, address, len) {\n const { memory } = this;\n const src = new DataView(memory.buffer, address, len);\n const copy = this.getCopyFunction(len);\n copy(dst, src);\n },\n } )\n});\n\nexport { dataCopying as default };\n","import { PrimitiveFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { InvalidIntConversion } from '../errors.js';\n\nvar intConversion = mixin({\n addIntConversion(getAccessor) {\n return function (access, member) {\n const accessor = getAccessor.call(this, access, member);\n const { flags, bitSize } = member;\n if (access === 'set') {\n return (bitSize > 32)\n ? function(offset, value, littleEndian) {\n accessor.call(this, offset, BigInt(value), littleEndian);\n }\n : function(offset, value, littleEndian) {\n const number = Number(value);\n if (!isFinite(number)) {\n throw new InvalidIntConversion(value)\n }\n accessor.call(this, offset, number, littleEndian);\n };\n } else {\n const { flags: structureFlags } = member.structure;\n if ((structureFlags & PrimitiveFlag.IsSize) && bitSize > 32) {\n const max = BigInt(Number.MAX_SAFE_INTEGER);\n const min = BigInt(Number.MIN_SAFE_INTEGER);\n return function(offset, littleEndian) {\n const bigint = accessor.call(this, offset, littleEndian);\n return (min <= bigint && bigint <= max) ? Number(bigint) : bigint;\n };\n }\n }\n return accessor;\n };\n },\n});\n\nexport { intConversion as default };\n","import { mixin } from '../environment.js';\nimport { AlignmentConflict } from '../errors.js';\nimport { MEMORY, ZIG, ALIGN } from '../symbols.js';\nimport { isInvalidAddress, usizeMax, usizeMin, adjustAddress, usizeInvalid, alignForward, isMisaligned, findSortedIndex } from '../utils.js';\n\nvar memoryMapping = mixin({\n init() {\n this.isMemoryMapping = true;\n this.memoryList = [];\n this.contextCount = 0;\n },\n startContext() {\n ++this.contextCount;\n return { shadowList: [] };\n },\n endContext() {\n if (--this.contextCount === 0) {\n for (const { shadowDV } of this.memoryList) {\n if (shadowDV) {\n this.freeShadowMemory(shadowDV);\n }\n }\n this.memoryList.splice(0);\n }\n },\n getShadowAddress(context, target, cluster, writable) {\n const targetDV = target[MEMORY];\n if (cluster) {\n if (cluster.address === undefined) {\n const { start, end, targets } = cluster;\n // look for largest align\n let maxAlign = 0, maxAlignOffset;\n for (const target of targets) {\n const dv = target[MEMORY];\n const offset = dv.byteOffset;\n const align = target.constructor[ALIGN] ?? dv[ALIGN];\n if (maxAlign === undefined || align > maxAlign) {\n maxAlign = align;\n maxAlignOffset = offset;\n }\n }\n // ensure the shadow buffer is large enough to accommodate necessary adjustments\n const len = end - start;\n const unalignedDV = this.allocateShadowMemory(len + maxAlign, 1);\n const unalignedAddress = this.getViewAddress(unalignedDV);\n const maxAlignAddress = alignForward(adjustAddress(unalignedAddress, maxAlignOffset - start), maxAlign);\n const address = adjustAddress(maxAlignAddress, start - maxAlignOffset);\n // make sure that other pointers are correctly aligned also\n for (const target of targets) {\n const dv = target[MEMORY];\n const offset = dv.byteOffset;\n if (offset !== maxAlignOffset) {\n const align = target.constructor[ALIGN] ?? dv[ALIGN];\n if (isMisaligned(adjustAddress(address, offset - start), align)) {\n throw new AlignmentConflict(align, maxAlign);\n }\n }\n }\n const shadowOffset = unalignedDV.byteOffset + Number(address - unalignedAddress);\n const shadowDV = new DataView(unalignedDV.buffer, shadowOffset, len);\n {\n // attach Zig memory info to aligned data view so it gets freed correctly\n shadowDV[ZIG] = { address, len, align: 1, unalignedAddress, type: MemoryType.Scratch };\n }\n const clusterDV = new DataView(targetDV.buffer, Number(start), len);\n const entry = this.registerMemory(address, len, 1, writable, clusterDV, shadowDV);\n context.shadowList.push(entry);\n cluster.address = address;\n }\n return adjustAddress(cluster.address, targetDV.byteOffset - cluster.start);\n } else {\n const align = target.constructor[ALIGN] ?? targetDV[ALIGN];\n const len = targetDV.byteLength;\n const shadowDV = this.allocateShadowMemory(len, align);\n const address = this.getViewAddress(shadowDV);\n const entry = this.registerMemory(address, len, 1, writable, targetDV, shadowDV);\n context.shadowList.push(entry);\n return address;\n }\n },\n updateShadows(context) {\n const copy = this.getCopyFunction();\n for (let { targetDV, shadowDV } of context.shadowList) {\n {\n shadowDV = this.restoreView(shadowDV);\n }\n copy(shadowDV, targetDV);\n }\n },\n updateShadowTargets(context) {\n const copy = this.getCopyFunction();\n for (let { targetDV, shadowDV, writable } of context.shadowList) {\n if (writable) {\n {\n shadowDV = this.restoreView(shadowDV);\n }\n copy(targetDV, shadowDV);\n }\n }\n },\n registerMemory(address, len, align, writable, targetDV, shadowDV) {\n const index = findMemoryIndex(this.memoryList, address);\n let entry = this.memoryList[index - 1];\n if (entry?.address === address && entry.len === len) {\n entry.writable ||= writable;\n } else {\n entry = { address, len, align, writable, targetDV, shadowDV };\n this.memoryList.splice(index, 0, entry);\n }\n return entry;\n },\n unregisterMemory(address, len) {\n const index = findMemoryIndex(this.memoryList, address);\n const entry = this.memoryList[index - 1];\n if (entry?.address === address && entry.len === len) {\n this.memoryList.splice(index - 1, 1);\n return entry;\n }\n },\n findMemory(context, address, count, size) {\n let len = count * (size ?? 0);\n const index = findMemoryIndex(this.memoryList, address);\n const entry = this.memoryList[index - 1];\n let dv;\n if (entry?.address === address && entry.len === len) {\n dv = entry.targetDV;\n } else if (entry?.address <= address && adjustAddress(address, len) <= adjustAddress(entry.address, entry.len)) {\n const offset = Number(address - entry.address);\n const isOpaque = size === undefined;\n const { targetDV } = entry;\n if (isOpaque) {\n len = targetDV.byteLength - offset;\n }\n dv = this.obtainView(targetDV.buffer, targetDV.byteOffset + offset, len);\n if (isOpaque) {\n // opaque structure--need to save the alignment\n dv[ALIGN] = entry.align;\n }\n }\n if (!dv) {\n // not found in any of the buffers we've seen--assume it's Zig memory\n dv = this.obtainZigView(address, len);\n } else {\n let { targetDV, shadowDV } = entry;\n if (shadowDV && context && !context.shadowList.includes(entry)) {\n {\n shadowDV = this.restoreView(shadowDV);\n }\n const copy = this.getCopyFunction();\n copy(targetDV, shadowDV);\n }\n }\n return dv;\n },\n findShadowView(dv) {\n for (const { shadowDV, targetDV } of this.memoryList) {\n if (targetDV === dv) {\n return shadowDV;\n }\n }\n },\n releaseZigView(dv) {\n const zig = dv[ZIG];\n const address = zig?.address;\n if (address && address !== usizeInvalid) {\n // set address to invalid to avoid double free\n zig.address = usizeInvalid;\n }\n },\n getViewAddress(dv) {\n const zig = dv[ZIG];\n if (zig) {\n return zig.address;\n } else {\n const address = this.getBufferAddress(dv.buffer);\n return adjustAddress(address, dv.byteOffset);\n }\n },\n ...({\n imports: {\n allocateScratchMemory: { argType: 'ii', returnType: 'i' },\n freeScratchMemory: { argType: 'iii' },\n },\n exports: {\n getViewAddress: { argType: 'v', returnType: 'i' },\n },\n usizeMaxBuffer: new ArrayBuffer(0),\n\n allocateShadowMemory(len, align) {\n const address = (len) ? this.allocateScratchMemory(len, align) : 0;\n if (!address && len) {\n throw new Error('Out of memory');\n }\n const dv = this.obtainZigView(address, len);\n const zig = dv?.[ZIG];\n if (zig) {\n zig.align = align;\n }\n return dv;\n },\n freeShadowMemory(dv) {\n const { address, unalignedAddress, len, align } = dv[ZIG];\n if (len) {\n this.freeScratchMemory(unalignedAddress ?? address, len, align);\n }\n this.releaseZigView(dv);\n },\n obtainZigView(address, len, cache = true) {\n if (isInvalidAddress(address)) {\n address = (len > 0) ? 0 : usizeMax;\n }\n if (!address && len) {\n return null;\n }\n let { buffer } = this.memory;\n if (address === usizeMax) {\n buffer = this.usizeMaxBuffer;\n address = usizeMin;\n len = 0;\n }\n return (cache) ? this.obtainView(buffer, address, len) : new DataView(buffer, address, len);\n },\n getTargetAddress(context, target, cluster, writable) {\n const dv = target[MEMORY];\n if (dv[ZIG]) {\n return this.getViewAddress(dv);\n } else if (dv.byteLength === 0) {\n // it's a null pointer/empty slice\n return 0;\n }\n // JS buffers always need shadowing\n return this.getShadowAddress(context, target, cluster, writable);\n },\n getBufferAddress(buffer) {\n return 0;\n },\n } ),\n});\n\nfunction findMemoryIndex(array, address) {\n return findSortedIndex(array, address, m => m.address);\n}\n\nconst MemoryType = {\n Normal: 0,\n Scratch: 1,\n};\n\nexport { MemoryType, memoryMapping as default };\n","import { mixin } from '../environment.js';\nimport { decodeText, empty, defineProperty } from '../utils.js';\n\nvar moduleLoading = mixin({\n init() {\n this.abandoned = false;\n {\n this.nextValueIndex = 1;\n this.valueMap = new Map();\n this.valueIndices = new Map();\n this.options = null;\n this.executable = null;\n this.memory = null;\n this.table = null;\n this.initialTableLength = 0;\n this.exportedFunctions = null;\n }\n },\n releaseFunctions() {\n const throwError = () => { throw new Error(`Module was abandoned`) };\n for (const name of Object.keys(this.imports)) {\n if (this[name]) {\n this[name] = throwError;\n }\n }\n },\n abandonModule() {\n if (!this.abandoned) {\n this.releaseFunctions();\n this.unlinkVariables?.();\n this.abandoned = true;\n }\n },\n ...({\n imports: {\n initialize: { argType: '' },\n },\n exports: {\n displayPanic: { argType: 'ii' },\n },\n\n async initialize(wasi) {\n this.setCustomWASI?.(wasi);\n await this.initPromise;\n },\n getObjectIndex(object) {\n if (object != null) {\n let index = this.valueIndices.get(object);\n if (index === undefined) {\n index = this.nextValueIndex++;\n this.valueIndices.set(object, index);\n this.valueMap.set(index, object);\n }\n return index;\n } else {\n return 0;\n }\n },\n fromWebAssembly(type, arg) {\n switch (type) {\n case 'v':\n case 's': return this.valueMap.get(arg);\n case 'i': return arg;\n case 'b': return !!arg;\n }\n },\n toWebAssembly(type, arg) {\n switch (type) {\n case 'v':\n case 's': return this.getObjectIndex(arg);\n case 'i': return arg;\n case 'b': return arg ? 1 : 0;\n }\n },\n exportFunction(fn, argType = '', returnType = '', name) {\n if (!fn) {\n return () => {};\n }\n return (...args) => {\n args = args.map((arg, i) => this.fromWebAssembly(argType.charAt(i), arg));\n const retval = fn.apply(this, args);\n const retval2 = this.toWebAssembly(returnType, retval);\n return retval2;\n };\n },\n importFunction(fn, argType = '', returnType = '') {\n return (...args) => {\n args = args.map((arg, i) => this.toWebAssembly(argType.charAt(i), arg));\n const retval = fn.apply(this, args);\n return this.fromWebAssembly(returnType, retval);\n };\n },\n exportFunctions() {\n const imports = {};\n for (const [ name, { argType, returnType, alias } ] of Object.entries(this.exports)) {\n const fn = this[alias ?? name];\n if (fn) {\n imports[`_${name}`] = this.exportFunction(fn, argType, returnType, name);\n }\n }\n return imports;\n },\n importFunctions(exports) {\n for (const [ name, { argType, returnType } ] of Object.entries(this.imports)) {\n const fn = exports[name];\n if (fn) {\n defineProperty(this, name, { value: this.importFunction(fn, argType, returnType) });\n }\n }\n },\n async instantiateWebAssembly(source, options) {\n const {\n memoryInitial,\n memoryMax,\n tableInitial,\n multithreaded,\n } = this.options = options;\n const res = await source;\n const suffix = (res[Symbol.toStringTag] === 'Response') ? 'Streaming' : '';\n const w = WebAssembly;\n const f = w['compile' + suffix];\n const executable = this.executable = await f(res);\n const functions = this.exportFunctions();\n const env = {}, wasi = {}, wasiPreview = {};\n const exports = this.exportedModules = { env, wasi, wasi_snapshot_preview1: wasiPreview };\n for (const { module, name, kind } of w.Module.imports(executable)) {\n if (kind === 'function') {\n if (module === 'env') {\n env[name] = functions[name] ?? empty;\n } else if (module === 'wasi_snapshot_preview1') {\n wasiPreview[name] = this.getWASIHandler(name);\n } else if (module === 'wasi') {\n wasi[name] = this.getThreadHandler?.(name) ?? empty;\n }\n }\n }\n this.memory = env.memory = new w.Memory({\n initial: memoryInitial,\n maximum: memoryMax,\n shared: multithreaded,\n });\n this.table = env.__indirect_function_table = new w.Table({\n initial: tableInitial,\n element: 'anyfunc',\n shared: multithreaded,\n });\n this.initialTableLength = tableInitial;\n return new w.Instance(executable, exports);\n },\n loadModule(source, options) {\n return this.initPromise = (async () => {\n const instance = await this.instantiateWebAssembly(source, options);\n const { exports } = instance;\n this.importFunctions(exports);\n if (this.customWASI) {\n // use a proxy to attach the memory object to the list of exports\n const exportsPlusMemory = { ...exports, memory: this.memory };\n const instanceProxy = new Proxy(instance, {\n get(inst, name) {\n return (name === 'exports') ? exportsPlusMemory : inst[name];\n }\n });\n this.customWASI.initialize?.(instanceProxy);\n }\n this.initialize();\n })();\n },\n displayPanic(address, len) {\n const array = new Uint8Array(this.memory.buffer, address, len);\n const msg = decodeText(array);\n console.error(`Zig panic: ${msg}`);\n },\n } ),\n});\n\nexport { moduleLoading as default };\n","import { VisitorFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { MEMORY, ZIG, CACHE, VISIT, UPDATE, SLOTS } from '../symbols.js';\n\nvar objectLinkage = mixin({\n linkVariables(writeBack) {\n {\n // linkage occurs when WASM compilation is complete and functions have been imported\n if (!this.memory) {\n this.initPromise = this.initPromise.then(() => this.linkVariables(writeBack));\n return;\n }\n }\n const copy = this.getCopyFunction();\n for (const { object, handle } of this.variables) {\n const jsDV = object[MEMORY];\n // objects in WebAssembly have fixed addresses so the handle is the address\n // for native code module, locations of objects in memory can change depending on\n // where the shared library is loaded\n const address = handle ;\n const zigDV = object[MEMORY] = this.obtainZigView(address, jsDV.byteLength);\n if (writeBack) {\n copy(zigDV, jsDV);\n }\n object.constructor[CACHE]?.save?.(zigDV, object);\n const linkChildren = (object) => {\n const slots = object[SLOTS];\n if (slots) {\n const parentOffset = zigDV.byteOffset;\n for (const child of Object.values(slots)) {\n if (child) {\n const childDV = child[MEMORY];\n if (childDV.buffer === jsDV.buffer) {\n const offset = parentOffset + childDV.byteOffset - jsDV.byteOffset;\n child[MEMORY] = this.obtainView(zigDV.buffer, offset, childDV.byteLength);\n child.constructor[CACHE]?.save?.(zigDV, child);\n linkChildren(child);\n }\n }\n }\n }\n };\n linkChildren(object);\n // update pointer targets\n object[VISIT]?.(function() { this[UPDATE](); }, VisitorFlag.IgnoreInactive);\n }\n },\n unlinkVariables() {\n const copy = this.getCopyFunction();\n for (const { object } of this.variables) {\n const zigDV = this.restoreView(object[MEMORY]) ;\n const zig = zigDV[ZIG];\n if (zig) {\n const jsDV = object[MEMORY] = this.allocateMemory(zig.len);\n copy(jsDV, zigDV);\n }\n }\n },\n ...({\n imports: {\n recreateAddress: { argType: 'i', returnType: 'i' },\n },\n } ),\n });\n\nexport { objectLinkage as default };\n","import { VisitorFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { MEMORY, VISIT, ADDRESS, LENGTH, POINTER, SLOTS, UPDATE, ZIG } from '../symbols.js';\nimport { findSortedIndex } from '../utils.js';\n\nvar pointerSynchronization = mixin({\n updatePointerAddresses(context, object) {\n // first, collect all the pointers\n const pointerMap = new Map();\n const bufferMap = new Map();\n const potentialClusters = [];\n const callback = function(flags) {\n // bypass proxy\n const pointer = this[POINTER];\n if (pointerMap.get(pointer) === undefined) {\n const target = pointer[SLOTS][0];\n if (target) {\n const writable = !pointer.constructor.const;\n const entry = { target, writable };\n // only targets in JS memory need updating\n const dv = target[MEMORY];\n if (!dv[ZIG]) {\n pointerMap.set(pointer, target);\n // see if the buffer is shared with other objects\n const other = bufferMap.get(dv.buffer);\n if (other) {\n const array = Array.isArray(other) ? other : [ other ];\n const index = findSortedIndex(array, dv.byteOffset, e => e.target[MEMORY].byteOffset);\n array.splice(index, 0, entry);\n if (!Array.isArray(other)) {\n bufferMap.set(dv.buffer, array);\n potentialClusters.push(array);\n }\n } else {\n bufferMap.set(dv.buffer, entry);\n }\n // scan pointers in target\n target[VISIT]?.(callback, 0);\n } else {\n // in Zig memory--no need to update\n pointerMap.set(pointer, null);\n }\n }\n }\n };\n const flags = VisitorFlag.IgnoreRetval | VisitorFlag.IgnoreInactive;\n object[VISIT](callback, flags);\n // find targets that overlap each other\n const clusters = this.findTargetClusters(potentialClusters);\n const clusterMap = new Map();\n for (const cluster of clusters) {\n for (const target of cluster.targets) {\n clusterMap.set(target, cluster);\n }\n }\n // process the pointers\n for (const [ pointer, target ] of pointerMap) {\n if (target) {\n const cluster = clusterMap.get(target);\n const writable = cluster?.writable ?? !pointer.constructor.const;\n pointer[ADDRESS] = this.getTargetAddress(context, target, cluster, writable);\n if (LENGTH in pointer) {\n pointer[LENGTH] = target.length;\n }\n }\n }\n },\n updatePointerTargets(context, object, inbound = false) {\n const pointerMap = new Map();\n const callback = function(flags) {\n // bypass proxy\n const pointer = this[POINTER];\n if (!pointerMap.get(pointer)) {\n pointerMap.set(pointer, true);\n const currentTarget = pointer[SLOTS][0];\n const newTarget = (!currentTarget || !(flags & VisitorFlag.IsImmutable))\n ? pointer[UPDATE](context, true, !(flags & VisitorFlag.IsInactive))\n : currentTarget;\n const targetFlags = (pointer.constructor.const) ? VisitorFlag.IsImmutable : 0;\n if (!(targetFlags & VisitorFlag.IsImmutable)) {\n // update targets of pointers in original target if it's in JS memory\n // pointers in Zig memory are updated on access so we don't need to do it here\n // (and they should never point to reloctable memory)\n if (currentTarget && !currentTarget[MEMORY][ZIG]) {\n currentTarget[VISIT]?.(callback, targetFlags);\n }\n }\n if (newTarget !== currentTarget) {\n // acquire targets of pointers in new target if it;s in JS memory\n if (newTarget && !newTarget[MEMORY][ZIG]) {\n newTarget?.[VISIT]?.(callback, targetFlags);\n }\n }\n }\n };\n const flags = (inbound) ? VisitorFlag.IgnoreRetval : 0;\n object[VISIT](callback, flags);\n },\n findTargetClusters(potentialClusters) {\n const clusters = [];\n for (const entries of potentialClusters) {\n let prevTarget = null, prevStart = 0, prevEnd = 0;\n let currentCluster = null;\n for (const { target, writable } of entries) {\n const dv = target[MEMORY];\n const { byteOffset: start, byteLength } = dv;\n const end = start + byteLength;\n let forward = true;\n if (prevTarget) {\n if (prevEnd > start) {\n // the previous target overlaps this one\n if (!currentCluster) {\n currentCluster = {\n targets: [ prevTarget ],\n start: prevStart,\n end: prevEnd,\n address: undefined,\n misaligned: undefined,\n writable,\n };\n clusters.push(currentCluster);\n } else {\n currentCluster.writable ||= writable;\n }\n currentCluster.targets.push(target);\n if (end > prevEnd) {\n // set cluster end offset to include this one\n currentCluster.end = end;\n } else {\n // the previous target contains this one\n forward = false;\n }\n } else {\n currentCluster = null;\n }\n }\n if (forward) {\n prevTarget = target;\n prevStart = start;\n prevEnd = end;\n }\n }\n }\n return clusters;\n },\n});\n\nexport { pointerSynchronization as default };\n","import { mixin } from '../environment.js';\nimport { empty } from '../utils.js';\n\nvar thunkAllocation = mixin({\n ...({\n exports: {\n allocateJsThunk: { argType: 'ii', returnType: 'i' },\n freeJsThunk: { argType: 'ii', returnType: 'i' },\n },\n init() {\n this.thunkSources = [];\n this.thunkMap = new Map();\n },\n addJsThunkSource() {\n const {\n memoryInitial,\n memoryMax,\n tableInitial,\n multithreaded,\n } = this.options;\n const w = WebAssembly;\n const env = {}, wasi = {}, wasiPreview = {};\n const imports = { env, wasi, wasi_snapshot_preview1: wasiPreview };\n for (const { module, name, kind } of w.Module.imports(this.executable)) {\n if (kind === 'function') {\n if (module === 'env') {\n env[name] = empty;\n } else if (module === 'wasi_snapshot_preview1') {\n wasiPreview[name] = empty;\n }\n }\n }\n env.memory = new w.Memory({\n initial: memoryInitial,\n maximum: memoryMax,\n shared: multithreaded,\n });\n const table = env.__indirect_function_table = new w.Table({\n initial: tableInitial,\n element: 'anyfunc',\n });\n const { exports } = new w.Instance(this.executable, imports);\n const { createJsThunk, destroyJsThunk } = exports;\n const source = {\n thunkCount: 0,\n createJsThunk,\n destroyJsThunk,\n table,\n };\n this.thunkSources.unshift(source);\n return source;\n },\n allocateJsThunk(controllerAddress, funcId) {\n let source, sourceAddress = 0;\n for (source of this.thunkSources) {\n sourceAddress = source.createJsThunk(controllerAddress, funcId);\n break;\n }\n if (!sourceAddress) {\n source = this.addJsThunkSource();\n sourceAddress = source.createJsThunk(controllerAddress, funcId);\n }\n // sourceAddress is an index into the function table of the source instance\n // we need to get the function object and place it into the main instance's\n // function table\n const thunkObject = source.table.get(sourceAddress);\n let thunkAddress = 0;\n for (let i = this.table.length - 1; i >= this.initialTableLength; i--) {\n if (!this.table.get(i)) {\n thunkAddress = i;\n break;\n }\n }\n if (!thunkAddress) {\n thunkAddress = this.table.length;\n this.table.grow(8);\n }\n this.table.set(thunkAddress, thunkObject);\n source.thunkCount++;\n // remember where the object is from\n this.thunkMap.set(thunkObject, { source, sourceAddress });\n return thunkAddress;\n },\n freeJsThunk(controllerAddress, thunkAddress) {\n let fnId = 0;\n const thunkObject = this.table.get(thunkAddress);\n this.table.set(thunkAddress, null);\n const entry = this.thunkMap.get(thunkObject);\n if (entry) {\n const { source, sourceAddress } = entry;\n fnId = source.destroyJsThunk(controllerAddress, sourceAddress);\n if (--source.thunkCount === 0) {\n const index = this.thunkSources.indexOf(source);\n if (index !== -1) {\n this.thunkSources.splice(index, 1);\n }\n }\n this.thunkMap.delete(thunkObject);\n }\n return fnId;\n },\n } ),\n});\n\nexport { thunkAllocation as default };\n","import { StructureType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { BufferSizeMismatch, ArrayLengthMismatch, BufferExpected } from '../errors.js';\nimport { MEMORY, CONST_TARGET, CACHE, PROXY, ZIG, SENTINEL, SHAPE, COPY, TYPED_ARRAY } from '../symbols.js';\nimport { usizeInvalid, isCompatibleInstanceOf, findElements } from '../utils.js';\n\nvar viewManagement = mixin({\n init() {\n this.viewMap = new WeakMap();\n },\n extractView(structure, arg, onError = throwError) {\n const { type, byteSize, constructor } = structure;\n let dv;\n // not using instanceof just in case we're getting objects created in other contexts\n const tag = arg?.[Symbol.toStringTag];\n if (tag) {\n if (tag === 'DataView') {\n // capture relationship between the view and its buffer\n dv = this.registerView(arg);\n } else if (tag === 'ArrayBuffer') {\n dv = this.obtainView(arg, 0, arg.byteLength);\n } else if ((tag && tag === constructor[TYPED_ARRAY]?.name) || (tag === 'Uint8ClampedArray' && constructor[TYPED_ARRAY] === Uint8Array)) {\n dv = this.obtainView(arg.buffer, arg.byteOffset, arg.byteLength);\n } else ;\n }\n if (!dv) {\n const memory = arg?.[MEMORY];\n if (memory) {\n // arg a Zig data object\n const { constructor, instance: { members: [ member ] } } = structure;\n if (isCompatibleInstanceOf(arg, constructor)) {\n // same type, no problem\n return memory;\n } else {\n if (isArrayLike(type)) {\n // make sure the arg has the same type of elements\n const { byteSize: elementSize, structure: { constructor: Child } } = member;\n const number = findElements(arg, Child);\n if (number !== undefined) {\n if (type === StructureType.Slice || number * elementSize === byteSize) {\n return memory;\n } else {\n throw new ArrayLengthMismatch(structure, null, arg);\n }\n }\n }\n }\n }\n }\n if (dv) {\n if (byteSize !== undefined) {\n checkDataViewSize(dv, structure);\n }\n } else {\n onError?.(structure, arg);\n }\n return dv;\n },\n assignView(target, dv, structure, copy, allocator) {\n const { byteSize, type } = structure;\n const elementSize = byteSize ?? 1;\n if (!target[MEMORY]) {\n if (byteSize !== undefined) {\n checkDataViewSize(dv, structure);\n }\n const len = dv.byteLength / elementSize;\n const source = { [MEMORY]: dv };\n target.constructor[SENTINEL]?.validateData?.(source, len);\n if (allocator) {\n // need to copy when target object is in Zig memory\n copy = true;\n }\n target[SHAPE](copy ? null : dv, len, allocator);\n if (copy) {\n target[COPY](source);\n }\n } else {\n const byteLength = (type === StructureType.Slice) ? elementSize * target.length : elementSize;\n if (dv.byteLength !== byteLength) {\n throw new BufferSizeMismatch(structure, dv, target);\n }\n const source = { [MEMORY]: dv };\n target.constructor[SENTINEL]?.validateData?.(source, target.length);\n target[COPY](source);\n }\n },\n findViewAt(buffer, offset, len) {\n let entry = this.viewMap.get(buffer);\n let existing;\n if (entry) {\n if (entry instanceof DataView) {\n // only one view created thus far--see if that's the matching one\n if (entry.byteOffset === offset && entry.byteLength === len) {\n existing = entry;\n entry = null;\n } else {\n // no, need to replace the entry with a hash keyed by `offset:len`\n const prev = entry;\n const prevKey = `${prev.byteOffset}:${prev.byteLength}`;\n entry = new Map([ [ prevKey, prev ] ]);\n this.viewMap.set(buffer, entry);\n }\n } else {\n existing = entry.get(`${offset}:${len}`);\n }\n }\n {\n if (existing?.[ZIG]?.address === usizeInvalid) {\n // view was of previously freed memory\n existing = null;\n }\n }\n return { existing, entry };\n },\n obtainView(buffer, offset, len) {\n const { existing, entry } = this.findViewAt(buffer, offset, len);\n let dv;\n if (existing) {\n return existing;\n }\n dv = new DataView(buffer, offset, len);\n if (entry) {\n entry.set(`${offset}:${len}`, dv);\n } else {\n // just one view of this buffer for now\n this.viewMap.set(buffer, dv);\n }\n {\n if (buffer === this.memory?.buffer || buffer === this.usizeMaxBuffer) {\n dv[ZIG] = { address: offset, len };\n }\n return dv;\n }\n },\n registerView(dv) {\n if (!dv[ZIG]) {\n const { buffer, byteOffset, byteLength } = dv;\n const { existing, entry } = this.findViewAt(buffer, byteOffset, byteLength);\n if (existing) {\n // return existing view instead of this one\n return existing;\n } else if (entry) {\n entry.set(`${byteOffset}:${byteLength}`, dv);\n } else {\n this.viewMap.set(buffer, dv);\n }\n }\n return dv;\n },\n allocateMemory(len, align = 0, allocator = null) {\n return allocator?.alloc?.(len, align) ?? this.allocateJSMemory(len, align);\n },\n ...({\n allocateJSMemory(len, align) {\n // alignment doesn't matter since memory always needs to be shadowed\n return this.obtainView(new ArrayBuffer(len), 0, len);\n },\n restoreView(dv) {\n const zig = dv?.[ZIG];\n if (zig?.len > 0 && dv.buffer.byteLength === 0) {\n dv = this.obtainZigView(zig.address, zig.len);\n if (zig.align) {\n dv[ZIG].align = zig.align;\n }\n }\n return dv;\n },\n defineRestorer() {\n const thisEnv = this;\n return {\n value() {\n const dv = this[MEMORY];\n const newDV = thisEnv.restoreView(dv);\n if (dv !== newDV) {\n const target = this[CONST_TARGET] ?? this;\n target[MEMORY] = newDV;\n // pointers are referenced by their proxies in the cache\n target.constructor[CACHE]?.save?.(newDV, target[PROXY] ?? target);\n return true;\n } else {\n return false;\n }\n },\n }\n },\n } ),\n});\n\nfunction checkDataViewSize(dv, structure) {\n const { byteSize, type } = structure;\n const isSizeMatching = type === StructureType.Slice\n ? dv.byteLength % byteSize === 0\n : dv.byteLength === byteSize;\n if (!isSizeMatching) {\n throw new BufferSizeMismatch(structure, dv);\n }\n}\n\nfunction isArrayLike(type) {\n return type === StructureType.Array || type === StructureType.Vector || type === StructureType.Slice;\n}\n\nfunction throwError(structure) {\n throw new BufferExpected(structure);\n}\n\nexport { checkDataViewSize, viewManagement as default };\n","import { mixin } from '../environment.js';\nimport { throwReadOnly } from '../errors.js';\nimport { POINTER, ARRAY, CONST_TARGET } from '../symbols.js';\n\nvar writeProtection = mixin({\n makeReadOnly(object) {\n protect(object);\n }\n});\n\nconst gp = Object.getOwnPropertyDescriptors;\nconst df = Object.defineProperty;\n\nfunction protect(object) {\n const pointer = object[POINTER];\n if (pointer) {\n protectProperties(pointer, [ 'length' ]);\n } else {\n const array = object[ARRAY];\n if (array) {\n protectProperties(array);\n protectElements(array);\n } else {\n protectProperties(object);\n }\n }\n}\n\nfunction protectProperties(object, exclude = []) {\n const descriptors = gp(object.constructor.prototype);\n for (const [ name, descriptor ] of Object.entries(descriptors)) {\n if (descriptor.set && !exclude.includes(name)) {\n descriptor.set = throwReadOnly;\n df(object, name, descriptor);\n }\n }\n df(object, CONST_TARGET, { value: object });\n}\n\nfunction protectElements(array) {\n df(array, 'set', { value: throwReadOnly });\n const get = array.get;\n const getReadOnly = function(index) {\n const element = get.call(this, index);\n if (element?.[CONST_TARGET] === null) {\n protect(element);\n }\n return element;\n };\n df(array, 'get', { value: getReadOnly });\n}\n\nexport { writeProtection as default };\n","import { defineEnvironment } from './environment.js';\n\nfunction createEnvironment() {\n // define Environment class, incorporating methods and properties in imported mixins\n const Env = defineEnvironment();\n return new Env();\n}\n\nexport { createEnvironment };\n","import { mixin } from '../environment.js';\nimport { ARRAY } from '../symbols.js';\nimport { defineValue, getErrorHandler } from '../utils.js';\n\nvar forArray = mixin({\n defineArrayEntries() {\n return defineValue(getArrayEntries);\n },\n defineArrayIterator() {\n return defineValue(getArrayIterator);\n }\n});\n\nfunction getArrayIterator() {\n const self = this[ARRAY] ?? this;\n const length = this.length;\n let index = 0;\n return {\n next() {\n let value, done;\n if (index < length) {\n const current = index++;\n value = self.get(current);\n done = false;\n } else {\n done = true;\n }\n return { value, done };\n },\n };\n}\n\nfunction getArrayEntriesIterator(options) {\n const handleError = getErrorHandler(options);\n const self = this[ARRAY] ?? this;\n const length = this.length;\n let index = 0;\n return {\n next() {\n let value, done;\n if (index < length) {\n const current = index++;\n value = [ current, handleError(() => self.get(current)) ];\n done = false;\n } else {\n done = true;\n }\n return { value, done };\n },\n };\n}\n\nfunction getArrayEntries(options) {\n return {\n [Symbol.iterator]: getArrayEntriesIterator.bind(this, options),\n length: this.length,\n };\n}\n\nexport { forArray as default };\n","import { mixin } from '../environment.js';\nimport { PROPS } from '../symbols.js';\nimport { defineValue, getErrorHandler } from '../utils.js';\n\nvar forStruct = mixin({\n defineStructEntries() {\n return defineValue(getStructEntries);\n },\n defineStructIterator() {\n return defineValue(getStructIterator);\n }\n});\n\nfunction getStructEntries(options) {\n return {\n [Symbol.iterator]: getStructEntriesIterator.bind(this, options),\n length: this[PROPS].length,\n };\n}\n\nfunction getStructIterator(options) {\n const entries = getStructEntries.call(this, options);\n return entries[Symbol.iterator]();\n}\n\nfunction getStructEntriesIterator(options) {\n const handleError = getErrorHandler(options);\n const self = this;\n const props = this[PROPS];\n let index = 0;\n return {\n next() {\n let value, done;\n if (index < props.length) {\n const current = props[index++];\n value = [ current, handleError(() => self[current]) ];\n done = false;\n } else {\n done = true;\n }\n return { value, done };\n },\n };\n}\n\nexport { forStruct as default };\n","import { memberNames, structureNames } from '../constants.js';\nimport { mixin } from '../environment.js';\n\nvar all = mixin({\n defineMember(member, applyTransform = true) {\n if (!member) {\n return {};\n }\n const { type, structure } = member;\n const handleName = `defineMember${memberNames[type]}`;\n const f = this[handleName];\n const descriptor = f.call(this, member);\n if (applyTransform) {\n if (structure) {\n // we use int/uint getters to access underlying values of enums and error sets;\n // the transform functions put wrapper functions around the accessors that\n // perform item lookup\n const { type } = structure;\n const handleName = `transformDescriptor${structureNames[type]}`;\n const f = this[handleName];\n if (f) {\n return f.call(this, descriptor, member);\n }\n }\n }\n return descriptor;\n },\n});\n\nfunction bindSlot(slot, { get, set }) {\n if (slot !== undefined) {\n return {\n get: function() {\n return get.call(this, slot);\n },\n set: (set)\n ? function(arg, allocator) {\n return set.call(this, slot, arg, allocator);\n }\n : undefined,\n };\n } else {\n // array accessors\n return { get, set };\n }\n}\n\nexport { bindSlot, all as default };\n","import { mixin } from '../environment.js';\nimport { TypeMismatch } from '../errors.js';\nimport { markAsSpecial, decodeBase64, encodeBase64 } from '../utils.js';\n\nvar base64 = mixin({\n defineBase64(structure) {\n const thisEnv = this;\n return markAsSpecial({\n get() {\n return encodeBase64(this.dataView);\n },\n set(str, allocator) {\n if (typeof(str) !== 'string') {\n throw new TypeMismatch('string', str);\n }\n const dv = decodeBase64(str);\n thisEnv.assignView(this, dv, structure, false, allocator);\n }\n });\n },\n});\n\nexport { base64 as default };\n","import { mixin } from '../environment.js';\nimport { TypeMismatch } from '../errors.js';\nimport { RESTORE, MEMORY } from '../symbols.js';\nimport { markAsSpecial } from '../utils.js';\n\nvar dataView = mixin({\n defineDataView(structure) {\n const thisEnv = this;\n return markAsSpecial({\n get() {\n {\n this[RESTORE]?.();\n }\n const dv = this[MEMORY];\n return dv;\n },\n set(dv, allocator) {\n if (dv?.[Symbol.toStringTag] !== 'DataView') {\n throw new TypeMismatch('DataView', dv);\n }\n thisEnv.assignView(this, dv, structure, true, allocator);\n },\n });\n },\n});\n\nexport { dataView as default };\n","import { mixin } from '../environment.js';\n\nvar float = mixin({\n defineMemberFloat(member) {\n return this.defineMemberUsing(member, this.getAccessor);\n },\n});\n\nexport { float as default };\n","import { MemberFlag, StructureFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { throwReadOnly } from '../errors.js';\nimport { SLOTS, VIVIFICATE, INITIALIZE } from '../symbols.js';\nimport { bindSlot } from './all.js';\n\nvar object = mixin({\n defineMemberObject(member) {\n return bindSlot(member.slot, {\n get: (member.structure.flags & StructureFlag.HasValue) ? getValue : getObject,\n set: (member.flags & MemberFlag.IsReadOnly) ? throwReadOnly : setValue,\n });\n }\n});\n\nfunction getValue(slot) {\n const object = this[SLOTS][slot] ?? this[VIVIFICATE](slot);\n return object.$;\n}\n\nfunction getObject(slot) {\n const object = this[SLOTS][slot] ?? this[VIVIFICATE](slot);\n return object;\n}\n\nfunction setValue(slot, value, allocator) {\n const object = this[SLOTS][slot] ?? this[VIVIFICATE](slot);\n object[INITIALIZE](value, allocator);\n}\n\nexport { object as default };\n","import { mixin } from '../environment.js';\nimport { replaceRangeError } from '../errors.js';\nimport { MEMORY, RESTORE } from '../symbols.js';\n\nvar primitive = mixin({\n ...({\n defineMemberUsing(member, getAccessor) {\n const { littleEndian } = this;\n const { bitOffset, byteSize } = member;\n const getter = getAccessor.call(this, 'get', member);\n const setter = getAccessor.call(this, 'set', member);\n if (bitOffset !== undefined) {\n const offset = bitOffset >> 3;\n return {\n get: function getValue() {\n try {\n return getter.call(this[MEMORY], offset, littleEndian);\n } catch (err) {\n if (err instanceof TypeError && this[RESTORE]?.()) {\n return getter.call(this[MEMORY], offset, littleEndian);\n } else {\n throw err;\n }\n }\n },\n set: function setValue(value) {\n try {\n return setter.call(this[MEMORY], offset, value, littleEndian);\n } catch (err) {\n if (err instanceof TypeError && this[RESTORE]?.()) {\n return setter.call(this[MEMORY], offset, value, littleEndian);\n } else {\n throw err;\n }\n }\n }\n }\n } else {\n return {\n get: function getElement(index) {\n try {\n return getter.call(this[MEMORY], index * byteSize, littleEndian);\n } catch (err) {\n if (err instanceof TypeError && this[RESTORE]?.()) {\n return getter.call(this[MEMORY], index * byteSize, littleEndian);\n } else {\n throw replaceRangeError(member, index, err);\n }\n }\n },\n set: function setElement(index, value) {\n try {\n return setter.call(this[MEMORY], index * byteSize, value, littleEndian);\n } catch (err) {\n if (err instanceof TypeError && this[RESTORE]?.()) {\n return setter.call(this[MEMORY], index * byteSize, value, littleEndian);\n } else {\n throw replaceRangeError(member, index, err);\n }\n }\n },\n }\n }\n },\n } ),\n});\n\nexport { primitive as default };\n","import { mixin } from '../environment.js';\nimport { normalizeObject } from './value-of.js';\n\nvar toJson = mixin({\n defineToJSON() {\n return {\n value() {\n return normalizeObject(this, true);\n },\n };\n },\n});\n\nexport { toJson as default };\n","import { mixin } from '../environment.js';\nimport { TypeMismatch } from '../errors.js';\nimport { markAsSpecial } from '../utils.js';\n\nvar typedArray = mixin({\n defineTypedArray(structure) {\n const thisEnv = this;\n const TypedArray = this.getTypedArray(structure); // (from mixin \"structures/all\")\n return markAsSpecial({\n get() {\n const dv = this.dataView;\n const length = dv.byteLength / TypedArray.BYTES_PER_ELEMENT;\n return new TypedArray(dv.buffer, dv.byteOffset, length);\n },\n set(ta, allocator) {\n if (ta?.[Symbol.toStringTag] !== TypedArray.name) {\n throw new TypeMismatch(TypedArray.name, ta);\n }\n const dv = new DataView(ta.buffer, ta.byteOffset, ta.byteLength);\n thisEnv.assignView(this, dv, structure, true, allocator);\n },\n });\n },\n});\n\nexport { typedArray as default };\n","import { mixin } from '../environment.js';\n\nvar uint = mixin({\n defineMemberUint(member) {\n let getAccessor = this.getAccessor;\n if (this.runtimeSafety) {\n getAccessor = this.addRuntimeCheck(getAccessor);\n }\n getAccessor = this.addIntConversion(getAccessor);\n return this.defineMemberUsing(member, getAccessor);\n },\n});\n\nexport { uint as default };\n","import { StructureType, StructFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { TYPE, ENTRIES, FLAGS } from '../symbols.js';\nimport { getErrorHandler } from '../utils.js';\n\nvar valueOf = mixin({\n defineValueOf() {\n return {\n value() {\n return normalizeObject(this, false);\n },\n };\n },\n});\n\nconst INT_MAX = BigInt(Number.MAX_SAFE_INTEGER);\nconst INT_MIN = BigInt(Number.MIN_SAFE_INTEGER);\n\nfunction normalizeObject(object, forJSON) {\n const options = { error: (forJSON) ? 'return' : 'throw' };\n const handleError = getErrorHandler(options);\n const resultMap = new Map();\n const process = function(value) {\n // handle type (i.e. constructor) like a struct\n const type = (typeof(value) === 'function') ? StructureType.Struct : value?.constructor?.[TYPE];\n if (type === undefined) {\n if (forJSON) {\n if (typeof(value) === 'bigint' && INT_MIN <= value && value <= INT_MAX) {\n return Number(value);\n } else if (value instanceof Error) {\n return { error: value.message };\n }\n }\n return value;\n }\n let result = resultMap.get(value);\n if (result === undefined) {\n let entries;\n switch (type) {\n case StructureType.Struct:\n entries = value[ENTRIES](options);\n result = (value.constructor[FLAGS] & StructFlag.IsTuple) ? [] : {};\n break;\n case StructureType.Union:\n entries = value[ENTRIES](options);\n result = {};\n break;\n case StructureType.Array:\n case StructureType.Vector:\n case StructureType.Slice:\n entries = value[ENTRIES]();\n result = [];\n break;\n case StructureType.Pointer:\n try {\n result = value['*'];\n } catch (err) {\n result = Symbol.for('inaccessible');\n }\n break;\n case StructureType.Enum:\n result = handleError(() => String(value));\n break;\n case StructureType.Opaque:\n result = {};\n break;\n default:\n result = handleError(() => value.$);\n }\n result = process(result);\n resultMap.set(value, result);\n if (entries) {\n for (const [ key, child ] of entries) {\n result[key] = process(child);\n }\n }\n }\n return result;\n };\n return process(object);\n}\n\nexport { valueOf as default, normalizeObject };\n","import { mixin } from '../environment.js';\nimport { NotUndefined, OutOfBound } from '../errors.js';\n\nvar _void = mixin({\n defineMemberVoid(member, env) {\n const { bitOffset } = member;\n return {\n get() {\n return undefined;\n },\n set: (bitOffset !== undefined)\n ? function(value) {\n if (value !== undefined) {\n throw new NotUndefined(member);\n }\n }\n : function(index, value) {\n if (value !== undefined) {\n throw new NotUndefined(member);\n }\n if (index < 0 || index >= this.length) {\n throw new OutOfBound(member, index);\n }\n },\n };\n }\n});\n\nexport { _void as default };\n","import { StructureType, MemberType, MemberFlag, structureNames, StructureFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { NoProperty, MissingInitializers, NoInitializer } from '../errors.js';\nimport { KEYS, SETTERS, MEMORY, COPY, SLOTS, CACHE, RESTORE, PROPS, ENTRIES, TYPED_ARRAY, FLAGS, TYPE, SIZE, ALIGN, ENVIRONMENT, SIGNATURE, SHAPE, INITIALIZE, CAST, RESTRICT, FINALIZE, UPDATE, CONST_TARGET } from '../symbols.js';\nimport { ObjectCache, defineProperty, defineValue, defineProperties } from '../utils.js';\n\nvar all = mixin({\n defineStructure(structure) {\n const {\n type,\n byteSize,\n } = structure;\n const handlerName = `define${structureNames[type]}`;\n const f = this[handlerName];\n // default discriptors\n const keys = [];\n const setters = {};\n const descriptors = {\n dataView: this.defineDataView(structure),\n base64: this.defineBase64(structure),\n toJSON: this.defineToJSON(),\n valueOf: this.defineValueOf(),\n [CONST_TARGET]: { value: null },\n [SETTERS]: defineValue(setters),\n [KEYS]: defineValue(keys),\n // add memory copier (from mixin \"memory/copying\")\n [COPY]: this.defineCopier(byteSize),\n ...({\n // add method for recoverng from array detachment\n [RESTORE]: this.defineRestorer(),\n } ),\n };\n const constructor = structure.constructor = f.call(this, structure, descriptors);\n for (const [ name, descriptor ] of Object.entries(descriptors)) {\n const s = descriptor?.set;\n if (s && !setters[name] && name !== '$') {\n setters[name] = s;\n keys.push(name);\n }\n }\n defineProperties(constructor.prototype, descriptors);\n return constructor;\n },\n finalizeStructure(structure) {\n const {\n name,\n type,\n constructor,\n align,\n byteSize,\n flags,\n signature,\n static: { members, template },\n } = structure;\n const props = [];\n const staticDescriptors = {\n name: defineValue(name),\n toJSON: this.defineToJSON(),\n valueOf: this.defineValueOf(),\n [SIGNATURE]: defineValue(signature),\n [ENVIRONMENT]: defineValue(this),\n [ALIGN]: defineValue(align),\n [SIZE]: defineValue(byteSize),\n [TYPE]: defineValue(type),\n [FLAGS]: defineValue(flags),\n [PROPS]: defineValue(props),\n [TYPED_ARRAY]: defineValue(this.getTypedArray(structure)),\n [Symbol.iterator]: this.defineStructIterator(),\n [ENTRIES]: this.defineStructEntries(),\n [PROPS]: defineValue(props),\n };\n const descriptors = {\n [Symbol.toStringTag]: defineValue(name),\n };\n for (const member of members) {\n const { name, slot } = member;\n if (member.structure.type === StructureType.Function) {\n const fn = template[SLOTS][slot];\n staticDescriptors[name] = defineValue(fn);\n // provide a name if one isn't assigned yet\n if (!fn.name) {\n defineProperty(fn, 'name', defineValue(name));\n }\n // see if it's a getter or setter\n const [ accessorType, propName ] = /^(get|set)\\s+([\\s\\S]+)/.exec(name)?.slice(1) ?? [];\n const argRequired = (accessorType === 'get') ? 0 : 1;\n if (accessorType && fn.length === argRequired) {\n staticDescriptors[propName] ||= {};\n const descriptor = staticDescriptors[propName];\n descriptor[accessorType] = fn;\n }\n // see if it's a method\n if (member.flags & MemberFlag.IsMethod) {\n const method = function(...args) {\n try {\n return fn(this, ...args);\n } catch (err) {\n // adjust argument index/count\n err[UPDATE]?.(1);\n throw err;\n }\n };\n defineProperties(method, {\n name: defineValue(name),\n length: defineValue(fn.length - 1),\n });\n descriptors[name] = defineValue(method);\n if (accessorType && method.length === argRequired) {\n const descriptor = descriptors[propName] ||= {};\n descriptor[accessorType] = method;\n }\n }\n } else {\n staticDescriptors[name] = this.defineMember(member);\n props.push(name);\n }\n }\n // static variable/constants are stored in slots\n staticDescriptors[SLOTS] = (props.length > 0) && defineValue(template[SLOTS]);\n const handlerName = `finalize${structureNames[type]}`;\n const f = this[handlerName];\n if (f?.call(this, structure, staticDescriptors, descriptors) !== false) {\n defineProperties(constructor.prototype, descriptors);\n defineProperties(constructor, staticDescriptors);\n }\n },\n createConstructor(structure, handlers = {}) {\n const {\n type,\n byteSize,\n align,\n flags,\n instance: { members, template },\n } = structure;\n const { onCastError } = handlers;\n // comptime fields are stored in the instance template's slots\n let comptimeFieldSlots;\n if (template?.[SLOTS]) {\n const comptimeMembers = members.filter(m => m.flags & MemberFlag.IsReadOnly);\n if (comptimeMembers.length > 0) {\n comptimeFieldSlots = comptimeMembers.map(m => m.slot);\n }\n }\n const cache = new ObjectCache();\n const thisEnv = this;\n const constructor = function(arg, options = {}) {\n const {\n allocator,\n } = options;\n const creating = this instanceof constructor;\n let self, dv;\n if (creating) {\n if (arguments.length === 0) {\n throw new NoInitializer(structure);\n }\n self = this;\n if (flags & StructureFlag.HasSlot) {\n self[SLOTS] = {};\n }\n if (SHAPE in self) {\n // provided by defineStructureSlice(); the slice is different from other structures\n // as it does not have a zig size; memory is allocated by the slice initializer\n // based on the argument given\n self[INITIALIZE](arg, allocator);\n dv = self[MEMORY];\n } else {\n // don't use allocator to create storage for pointer\n const a = (type !== StructureType.Pointer) ? allocator : null;\n self[MEMORY] = dv = thisEnv.allocateMemory(byteSize, align, a);\n }\n } else {\n if (CAST in constructor) {\n // casting from number, string, etc.\n self = constructor[CAST].call(this, arg, options);\n if (self !== false) {\n return self;\n }\n }\n // look for buffer\n dv = thisEnv.extractView(structure, arg, onCastError);\n if (self = cache.find(dv)) {\n return self;\n }\n self = Object.create(constructor.prototype);\n if (SHAPE in self) {\n thisEnv.assignView(self, dv, structure, false, false);\n } else {\n self[MEMORY] = dv;\n }\n if (flags & StructureFlag.HasSlot) {\n self[SLOTS] = {};\n }\n }\n if (comptimeFieldSlots) {\n for (const slot of comptimeFieldSlots) {\n self[SLOTS][slot] = template[SLOTS][slot];\n }\n }\n self[RESTRICT]?.();\n if (creating) {\n // initialize object unless that's done already\n if (!(SHAPE in self)) {\n self[INITIALIZE](arg, allocator);\n }\n }\n if (FINALIZE in self) {\n self = self[FINALIZE]();\n }\n return cache.save(dv, self);\n };\n defineProperty(constructor, CACHE, defineValue(cache));\n {\n if (template?.[MEMORY]) {\n defineProperty(template, RESTORE, this.defineRestorer());\n }\n }\n return constructor;\n },\n createApplier(structure) {\n const { instance: { template } } = structure;\n return function(arg, allocator) {\n const argKeys = Object.keys(arg);\n const keys = this[KEYS];\n const setters = this[SETTERS];\n // don't accept unknown props\n for (const key of argKeys) {\n if (!(key in setters)) {\n throw new NoProperty(structure, key);\n }\n }\n // checking each name so that we would see inenumerable initializers as well\n let normalCount = 0;\n let normalFound = 0;\n let normalMissing = 0;\n let specialFound = 0;\n for (const key of keys) {\n const set = setters[key];\n if (set.special) {\n if (key in arg) {\n specialFound++;\n }\n } else {\n normalCount++;\n if (key in arg) {\n normalFound++;\n } else if (set.required) {\n normalMissing++;\n }\n }\n }\n if (normalMissing !== 0 && specialFound === 0) {\n const missing = keys.filter(k => setters[k].required && !(k in arg));\n throw new MissingInitializers(structure, missing);\n }\n if (specialFound + normalFound > argKeys.length) {\n // some props aren't enumerable\n for (const key of keys) {\n if (key in arg) {\n if (!argKeys.includes(key)) {\n argKeys.push(key);\n }\n }\n }\n }\n // apply default values unless all properties are initialized\n if (normalFound < normalCount && specialFound === 0) {\n if (template) {\n if (template[MEMORY]) {\n this[COPY](template);\n }\n }\n }\n for (const key of argKeys) {\n const set = setters[key];\n set.call(this, arg[key], allocator);\n }\n return argKeys.length;\n };\n },\n getTypedArray(structure) {\n const { type, instance } = structure;\n if (type !== undefined && instance) {\n const [ member ] = instance.members;\n switch (type) {\n case StructureType.Enum:\n case StructureType.ErrorSet:\n case StructureType.Primitive: {\n const { byteSize, type } = member;\n const intType = (type === MemberType.Float)\n ? 'Float'\n : (type === MemberType.Int) ? 'Int' : 'Uint';\n const prefix = (byteSize > 4 && type !== MemberType.Float) ? 'Big' : '';\n const arrayName = prefix + intType + (byteSize * 8) + 'Array';\n return globalThis[arrayName];\n } case StructureType.Array:\n case StructureType.Slice:\n case StructureType.Vector:\n return this.getTypedArray(member.structure);\n }\n }\n },\n});\n\nexport { all as default };\n","import { ArgStructFlag, StructureFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { ArgumentCountMismatch } from '../errors.js';\nimport { THROWING, VIVIFICATE, VISIT, RETURN, ALLOCATOR, COPY, MEMORY, SLOTS, FINALIZE } from '../symbols.js';\nimport { defineValue } from '../utils.js';\n\nvar argStruct = mixin({\n defineArgStruct(structure, descriptors) {\n const {\n flags,\n byteSize,\n align,\n length,\n instance: { members },\n } = structure;\n const thisEnv = this;\n const argMembers = members.slice(1);\n const constructor = function(args, argAlloc) {\n const creating = this instanceof constructor;\n let self, dv;\n if (creating) {\n self = this;\n dv = thisEnv.allocateMemory(byteSize, align);\n } else {\n self = Object.create(constructor.prototype);\n dv = args;\n }\n self[MEMORY] = dv;\n if (flags & StructureFlag.HasSlot) {\n self[SLOTS] = {};\n }\n if (creating) {\n let options;\n if (flags & ArgStructFlag.HasOptions) {\n if (args.length === length + 1) {\n options = args.pop();\n }\n }\n // length holds the minimum number of arguments\n if (args.length !== length) {\n throw new ArgumentCountMismatch(length, args.length);\n }\n if (flags & ArgStructFlag.IsAsync) {\n self[FINALIZE] = null;\n }\n thisEnv.copyArguments(self, args, argMembers, options, argAlloc);\n } else {\n return self;\n }\n };\n for (const member of members) {\n descriptors[member.name] = this.defineMember(member);\n }\n const retvalSetter = descriptors.retval.set;\n descriptors.length = defineValue(argMembers.length);\n descriptors[VIVIFICATE] = (flags & StructureFlag.HasObject) && this.defineVivificatorStruct(structure);\n descriptors[VISIT] = (flags & StructureFlag.HasPointer) && this.defineVisitorArgStruct(members);\n descriptors[RETURN] = defineValue(function(value) {\n // pass allocator associated with argument to setter\n retvalSetter.call(this, value, this[ALLOCATOR]);\n });\n descriptors[Symbol.iterator] = this.defineArgIterator?.(argMembers);\n {\n descriptors[COPY] = this.defineRetvalCopier(members[0]);\n }\n return constructor;\n },\n finalizeArgStruct(structure, staticDescriptors) {\n const { flags } = structure;\n staticDescriptors[THROWING] = defineValue(!!(flags & ArgStructFlag.IsThrowing));\n },\n});\n\nexport { argStruct as default };\n","import { mixin } from '../environment.js';\nimport { PROXY, ARRAY, RESTORE, MEMORY, SLOTS, PARENT } from '../symbols.js';\nimport { defineProperties } from '../utils.js';\n\nvar arrayLike = mixin({\n defineFinalizerArray({ get, set }) {\n return {\n value() {\n const value = new Proxy(this, proxyHandlers);\n defineProperties(this, {\n [PROXY]: { value },\n get: { value: get.bind(this) },\n set: set && { value: set.bind(this) },\n });\n return value;\n },\n };\n },\n defineVivificatorArray(structure) {\n const { instance: { members: [ member ]} } = structure;\n const { byteSize, structure: elementStructure } = member;\n const thisEnv = this;\n const value = function getChild(index) {\n const { constructor } = elementStructure;\n {\n this[RESTORE]?.();\n }\n const dv = this[MEMORY];\n const parentOffset = dv.byteOffset;\n const offset = parentOffset + byteSize * index;\n const childDV = thisEnv.obtainView(dv.buffer, offset, byteSize);\n const object = this[SLOTS][index] = constructor.call(PARENT, childDV);\n return object;\n };\n return { value };\n },\n});\n\nconst proxyHandlers = {\n get(array, name) {\n const index = (typeof(name) === 'symbol') ? 0 : name|0;\n if (index !== 0 || index == name) {\n return array.get(index);\n } else if (name === ARRAY) {\n return array;\n } else {\n return array[name];\n }\n },\n set(array, name, value) {\n const index = (typeof(name) === 'symbol') ? 0 : name|0;\n if (index !== 0 || index == name) {\n array.set(index, value);\n } else {\n array[name] = value;\n }\n return true;\n },\n deleteProperty(array, name) {\n const index = (typeof(name) === 'symbol') ? 0 : name|0;\n if (index !== 0 || index == name) {\n return false;\n } else {\n delete array[name];\n return true;\n }\n },\n has(array, name) {\n const index = (typeof(name) === 'symbol') ? 0 : name|0;\n if (index !== 0 || index == name) {\n return (index >= 0 && index < array.length);\n } else {\n return array[name];\n }\n },\n ownKeys(array) {\n const keys = [];\n for (let i = 0, len = array.length; i < len; i++) {\n keys.push(`${i}`);\n }\n keys.push('length', PROXY);\n return keys;\n },\n getOwnPropertyDescriptor(array, name) {\n const index = (typeof(name) === 'symbol') ? 0 : name|0;\n if (index !== 0 || index == name) {\n if (index >= 0 && index < array.length) {\n return { value: array.get(index), enumerable: true, writable: true, configurable: true };\n }\n } else {\n return Object.getOwnPropertyDescriptor(array, name);\n }\n },\n};\n\nexport { arrayLike as default };\n","import { ArrayFlag, StructureFlag, VisitorFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { ArrayLengthMismatch, InvalidArrayInitializer } from '../errors.js';\nimport { SENTINEL, ENTRIES, INITIALIZE, FINALIZE, VIVIFICATE, VISIT, COPY } from '../symbols.js';\nimport { defineValue, getProxy, isCompatibleInstanceOf, transformIterable } from '../utils.js';\n\nvar array = mixin({\n defineArray(structure, descriptors) {\n const {\n length,\n instance: { members: [ member ] },\n flags,\n } = structure;\n const propApplier = this.createApplier(structure);\n const descriptor = this.defineMember(member);\n const { set } = descriptor;\n const constructor = this.createConstructor(structure);\n const initializer = function(arg, allocator) {\n if (isCompatibleInstanceOf(arg, constructor)) {\n this[COPY](arg);\n if (flags & StructureFlag.HasPointer) {\n this[VISIT]('copy', VisitorFlag.Vivificate, arg);\n }\n } else {\n if (typeof(arg) === 'string' && flags & ArrayFlag.IsString) {\n arg = { string: arg };\n }\n if (arg?.[Symbol.iterator]) {\n arg = transformIterable(arg);\n if (arg.length !== length) {\n throw new ArrayLengthMismatch(structure, this, arg);\n }\n let i = 0;\n for (const value of arg) {\n set.call(this, i++, value, allocator);\n }\n } else if (arg && typeof(arg) === 'object') {\n if (propApplier.call(this, arg) === 0) {\n throw new InvalidArrayInitializer(structure, arg);\n }\n } else if (arg !== undefined) {\n throw new InvalidArrayInitializer(structure, arg);\n }\n }\n };\n descriptors.$ = { get: getProxy, set: initializer };\n descriptors.length = defineValue(length);\n descriptors.entries = descriptors[ENTRIES] = this.defineArrayEntries();\n if (flags & ArrayFlag.IsTypedArray) {\n descriptors.typedArray = this.defineTypedArray(structure);\n if (flags & ArrayFlag.IsString) {\n descriptors.string = this.defineString(structure);\n }\n if (flags & ArrayFlag.IsClampedArray) {\n descriptors.clampedArray = this.defineClampedArray(structure);\n }\n }\n descriptors[Symbol.iterator] = this.defineArrayIterator();\n descriptors[INITIALIZE] = defineValue(initializer);\n descriptors[FINALIZE] = this.defineFinalizerArray(descriptor);\n descriptors[VIVIFICATE] = (flags & StructureFlag.HasObject) && this.defineVivificatorArray(structure);\n descriptors[VISIT] = (flags & StructureFlag.HasPointer) && this.defineVisitorArray();\n return constructor;\n },\n finalizeArray(structure, staticDescriptors) {\n const {\n flags,\n instance: { members: [ member ] },\n } = structure;\n staticDescriptors.child = defineValue(member.structure.constructor);\n staticDescriptors[SENTINEL] = (flags & ArrayFlag.HasSentinel) && this.defineSentinel(structure);\n },\n});\n\nexport { array as default };\n","import { StructureType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { NoInitializer, TypeMismatch, Unsupported, NoCastingToFunction } from '../errors.js';\nimport { TYPE, ENVIRONMENT, MEMORY } from '../symbols.js';\nimport { ObjectCache, defineValue, getSelf, defineProperties } from '../utils.js';\n\nvar _function = mixin({\n defineFunction(structure, descriptors) {\n const {\n instance: { members: [ member ], template: thunk },\n static: { template: jsThunkController },\n } = structure;\n const cache = new ObjectCache();\n const { structure: { constructor: ArgStruct } } = member;\n const thisEnv = this;\n const constructor = function(arg) {\n const creating = this instanceof constructor;\n let dv;\n if (creating) {\n // creating a Zig function object from a JavaScript function\n if (arguments.length === 0) {\n throw new NoInitializer(structure);\n }\n if (typeof(arg) !== 'function') {\n throw new TypeMismatch('function', arg);\n }\n if (ArgStruct[TYPE] === StructureType.VariadicStruct || !jsThunkController) {\n throw new Unsupported();\n }\n // create an inbound thunk for function (from mixin \"features/call-marshaling-inbound\")\n dv = thisEnv.getFunctionThunk(arg, jsThunkController);\n } else {\n if (this !== ENVIRONMENT) {\n // casting from buffer to function is allowed only if request comes from the runtime\n throw new NoCastingToFunction();\n }\n // casting a memory pointing to Zig binary\n dv = arg;\n }\n let existing;\n if (existing = cache.find(dv)) {\n return existing;\n }\n const argCount = ArgStruct.prototype.length;\n const self = (creating)\n ? thisEnv.createInboundCaller(arg, ArgStruct)\n : thisEnv.createOutboundCaller(thunk, ArgStruct);\n defineProperties(self, {\n length: defineValue(argCount),\n name: defineValue(creating ? arg.name : ''),\n });\n // make self an instance of this function type\n Object.setPrototypeOf(self, constructor.prototype);\n self[MEMORY] = dv;\n cache.save(dv, self);\n return self;\n };\n // make function type a superclass of Function\n Object.setPrototypeOf(constructor.prototype, Function.prototype);\n descriptors.valueOf = descriptors.toJSON = defineValue(getSelf);\n return constructor;\n },\n finalizeFunction(structure, staticDescriptors, descriptors) {\n // don't change the tag of functions\n descriptors[Symbol.toStringTag] = undefined;\n },\n});\n\nexport { _function as default };\n","import { PointerFlag, StructureType, MemberType, PrimitiveFlag, SliceFlag, StructureFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { NoCastingToPointer, throwReadOnly, NullPointer, ConstantConstraint, ReadOnlyTarget, InvalidPointerTarget, PreviouslyFreed, InvalidSliceLength, ZigMemoryTargetRequired } from '../errors.js';\nimport { CAST, ENVIRONMENT, PARENT, LAST_LENGTH, TARGET, INITIALIZE, FINALIZE, MEMORY, SLOTS, PROXY, UPDATE, ADDRESS, LENGTH, VISIT, LAST_ADDRESS, MAX_LENGTH, POINTER, TYPE, RESTORE, CONST_TARGET, SETTERS, TYPED_ARRAY, ZIG, SENTINEL, SIZE } from '../symbols.js';\nimport { defineValue, getProxy, isCompatibleType, isCompatibleInstanceOf, usizeInvalid, findElements } from '../utils.js';\n\nvar pointer = mixin({\n definePointer(structure, descriptors) {\n const {\n flags,\n byteSize,\n instance: { members: [ member ] },\n } = structure;\n const { structure: targetStructure } = member;\n const {\n type: targetType,\n flags: targetFlags,\n byteSize: targetSize = 1\n } = targetStructure;\n // length for slice can be zero or undefined\n const addressSize = (flags & PointerFlag.HasLength) ? byteSize / 2 : byteSize;\n const { get: readAddress, set: writeAddress } = this.defineMember({\n type: MemberType.Uint,\n bitOffset: 0,\n bitSize: addressSize * 8,\n byteSize: addressSize,\n structure: { byteSize: addressSize },\n });\n const { get: readLength, set: writeLength } = (flags & PointerFlag.HasLength) ? this.defineMember({\n type: MemberType.Uint,\n bitOffset: addressSize * 8,\n bitSize: addressSize * 8,\n byteSize: addressSize,\n structure: {\n flags: PrimitiveFlag.IsSize,\n byteSize: addressSize\n },\n }) : {};\n const updateTarget = function(context, all = true, active = true) {\n if (all || this[MEMORY][ZIG]) {\n if (active) {\n const Target = constructor.child;\n const address = readAddress.call(this);\n const length = (flags & PointerFlag.HasLength)\n ? readLength.call(this)\n : (targetType === StructureType.Slice && targetFlags & SliceFlag.HasSentinel)\n ? thisEnv.findSentinel(address, Target[SENTINEL].bytes) + 1\n : 1;\n if (address !== this[LAST_ADDRESS] || length !== this[LAST_LENGTH]) {\n const dv = thisEnv.findMemory(context, address, length, Target[SIZE]);\n const newTarget = (dv) ? Target.call(ENVIRONMENT, dv) : null;\n this[SLOTS][0] = newTarget;\n this[LAST_ADDRESS] = address;\n this[LAST_LENGTH] = length;\n if (flags & PointerFlag.HasLength) {\n this[MAX_LENGTH] = null;\n }\n return newTarget;\n }\n } else {\n return this[SLOTS][0] = undefined;\n }\n }\n return this[SLOTS][0];\n };\n const setAddress = function(address) {\n writeAddress.call(this, address);\n this[LAST_ADDRESS] = address;\n };\n const sentinelCount = (targetFlags & SliceFlag.HasSentinel) ? 1 : 0;\n const setLength = (flags & PointerFlag.HasLength || targetFlags & SliceFlag.HasSentinel)\n ? function(length) {\n writeLength?.call?.(this, length - sentinelCount);\n this[LAST_LENGTH] = length;\n }\n : null;\n const getTargetObject = function() {\n const pointer = this[POINTER] ?? this;\n const empty = !pointer[SLOTS][0];\n const target = updateTarget.call(pointer, null, empty);\n if (!target) {\n if (flags & PointerFlag.IsNullable) {\n return null;\n }\n throw new NullPointer();\n }\n return (flags & PointerFlag.IsConst) ? getConstProxy(target) : target;\n };\n const setTargetObject = function(arg) {\n if (arg === undefined) {\n return;\n }\n const pointer = this[POINTER] ?? this;\n if (arg) {\n const zig = arg[MEMORY][ZIG];\n if (zig) {\n // the target sits in Zig memory--apply the change immediately\n const { address, js } = zig;\n setAddress.call(this, address);\n setLength?.call?.(this, arg.length);\n if (js) {\n // remove the fake Zig memory attributes now that we've bypassed the check\n arg[MEMORY][ZIG] = undefined;\n }\n } else {\n if (pointer[MEMORY][ZIG]) {\n throw new ZigMemoryTargetRequired();\n }\n }\n } else if (pointer[MEMORY][ZIG]) {\n setAddress.call(this, 0);\n setLength?.call?.(this, 0);\n }\n pointer[SLOTS][0] = arg ?? null;\n if (flags & PointerFlag.HasLength) {\n pointer[MAX_LENGTH] = null;\n }\n };\n const getTarget = (targetFlags & StructureFlag.HasValue)\n ? function() {\n const target = getTargetObject.call(this);\n return target.$;\n }\n : getTargetObject;\n const setTarget = (flags & PointerFlag.IsConst)\n ? throwReadOnly\n : function(value) {\n const target = getTargetObject.call(this);\n return target.$ = value;\n };\n const getTargetLength = function() {\n const target = getTargetObject.call(this);\n return (target) ? target.length : 0;\n };\n const setTargetLength = function(len) {\n len = len | 0;\n const target = getTargetObject.call(this);\n if (target) {\n if (target.length === len) {\n return;\n }\n } else {\n if (len !== 0) {\n throw new InvalidSliceLength(len, 0);\n }\n return;\n }\n {\n target[RESTORE]?.();\n }\n const dv = target[MEMORY];\n const zig = dv[ZIG];\n // determine the maximum length\n let max;\n if (!zig) {\n if (flags & PointerFlag.HasLength) {\n this[MAX_LENGTH] ||= target.length;\n max = this[MAX_LENGTH];\n } else {\n const bytesAvailable = dv.buffer.byteLength - dv.byteOffset;\n max = (bytesAvailable / targetSize) | 0;\n }\n }\n if (len < 0 || len > max) {\n throw new InvalidSliceLength(len, max);\n }\n const byteLength = len * targetSize;\n const newDV = (zig)\n ? thisEnv.obtainZigView(zig.address, byteLength)\n : thisEnv.obtainView(dv.buffer, dv.byteOffset, byteLength);\n const Target = targetStructure.constructor;\n this[SLOTS][0] = Target.call(ENVIRONMENT, newDV);\n setLength?.call?.(this, len);\n };\n const thisEnv = this;\n const initializer = function(arg, allocator) {\n const Target = targetStructure.constructor;\n if (isPointerOf(arg, Target)) {\n // initialize with the other pointer'structure target\n if (!(flags & PointerFlag.IsConst) && arg.constructor.const) {\n throw new ConstantConstraint(structure, arg);\n }\n arg = arg[SLOTS][0];\n } else if (flags & PointerFlag.IsMultiple) {\n if (isCompatiblePointer(arg, Target, flags)) {\n arg = Target(arg[SLOTS][0][MEMORY]);\n }\n } else if (targetType === StructureType.Slice && (targetFlags & SliceFlag.IsOpaque) && arg) {\n if (arg.constructor[TYPE] === StructureType.Pointer) {\n arg = arg[TARGET]?.[MEMORY];\n } else if (arg[MEMORY]) {\n arg = arg[MEMORY];\n } else if (arg?.buffer instanceof ArrayBuffer) {\n if (!(arg instanceof Uint8Array || arg instanceof DataView)) {\n const { byteOffset, byteLength } = arg;\n if (byteOffset !== undefined && byteLength !== undefined) {\n arg = new DataView(arg.buffer, byteOffset, byteLength);\n }\n }\n }\n }\n if (arg instanceof Target) {\n {\n arg[RESTORE]?.();\n }\n const constTarget = arg[CONST_TARGET];\n if (constTarget) {\n if (flags & PointerFlag.IsConst) {\n arg = constTarget;\n } else {\n throw new ReadOnlyTarget(structure);\n }\n }\n } else if (isCompatibleInstanceOf(arg, Target)) {\n // compatible object from a different module\n arg = Target.call(ENVIRONMENT, arg[MEMORY]);\n } else if (flags & PointerFlag.IsSingle && flags & PointerFlag.IsMultiple && arg instanceof Target.child) {\n // C pointer\n arg = Target(arg[MEMORY]);\n } else if (isCompatibleBuffer(arg, Target)) {\n // autocast to target type\n const dv = thisEnv.extractView(targetStructure, arg);\n arg = Target(dv);\n } else if (arg != undefined && !arg[MEMORY]) {\n if (flags & PointerFlag.IsSingle && flags & PointerFlag.IsMultiple) {\n // C pointer\n if (typeof(arg) === 'object' && !arg[Symbol.iterator]) {\n let single = true;\n // make sure the object doesn't contain special props for the slice\n const propSetters = Target.prototype[SETTERS];\n for (const key of Object.keys(arg)) {\n const set = propSetters[key];\n if (set?.special) {\n single = false;\n break;\n }\n }\n if (single) {\n arg = [ arg ];\n }\n }\n }\n if (TYPED_ARRAY in Target && arg?.buffer && arg[Symbol.iterator]) {\n throw new InvalidPointerTarget(structure, arg);\n }\n // autovivificate target object\n const autoObj = new Target(arg, { allocator });\n arg = autoObj;\n } else if (arg !== undefined) {\n if (!(flags & PointerFlag.IsNullable) || arg !== null) {\n throw new InvalidPointerTarget(structure, arg);\n }\n }\n const zig = arg?.[MEMORY]?.[ZIG];\n if (zig?.address === usizeInvalid) {\n throw new PreviouslyFreed(arg);\n }\n this[TARGET] = arg;\n };\n const constructor = this.createConstructor(structure);\n descriptors['*'] = { get: getTarget, set: setTarget };\n descriptors.$ = { get: getProxy, set: initializer };\n descriptors.length = { get: getTargetLength, set: setTargetLength };\n descriptors.slice = (targetType === StructureType.Slice) && {\n value(begin, end) {\n const newTarget = this[TARGET].slice(begin, end);\n return new constructor(newTarget);\n }\n };\n descriptors.subarray = (targetType === StructureType.Slice) && {\n value(begin, end, options) {\n const newTarget = this[TARGET].subarray(begin, end, options);\n return new constructor(newTarget);\n }\n };\n descriptors[Symbol.toPrimitive] = (targetType === StructureType.Primitive) && {\n value(hint) {\n return this[TARGET][Symbol.toPrimitive](hint);\n }\n };\n descriptors[INITIALIZE] = defineValue(initializer);\n descriptors[FINALIZE] = {\n value() {\n const handlers = (targetType !== StructureType.Pointer) ? proxyHandlers : {};\n let self;\n if (targetType === StructureType.Function) {\n // use an empty function as object so the proxy's apply() method is triggered\n self = function() {};\n self[MEMORY] = this[MEMORY];\n self[SLOTS] = this[SLOTS];\n Object.setPrototypeOf(self, constructor.prototype);\n } else {\n self = this;\n }\n const proxy = new Proxy(self, handlers);\n // hide the proxy so console wouldn't display a recursive structure\n Object.defineProperty(self, PROXY, { value: proxy });\n return proxy;\n }\n };\n descriptors[TARGET] = { get: getTargetObject, set: setTargetObject };\n descriptors[UPDATE] = defineValue(updateTarget);\n descriptors[ADDRESS] = { set: setAddress };\n descriptors[LENGTH] = { set: setLength };\n descriptors[VISIT] = this.defineVisitor();\n descriptors[LAST_ADDRESS] = defineValue(0);\n descriptors[LAST_LENGTH] = defineValue(0);\n descriptors[MAX_LENGTH] = (flags & PointerFlag.HasLength) && defineValue(null);\n // disable these so the target's properties are returned instead through auto-dereferencing\n descriptors.dataView = descriptors.base64 = undefined;\n return constructor;\n },\n finalizePointer(structure, staticDescriptors) {\n const {\n flags,\n constructor,\n instance: { members: [ member ] },\n } = structure;\n const { structure: targetStructure } = member;\n const { type: targetType, constructor: Target } = targetStructure;\n staticDescriptors.child = (Target) ? defineValue(Target) : {\n // deal with self-referencing pointer\n get() { return targetStructure.constructor }\n };\n staticDescriptors.const = defineValue(!!(flags & PointerFlag.IsConst));\n staticDescriptors[CAST] = {\n value(arg, options) {\n if (this === ENVIRONMENT || this === PARENT || arg instanceof constructor) {\n // casting from buffer to pointer is allowed only if request comes from the runtime\n // casting from writable to read-only is also allowed\n return false;\n } else if (isPointerOf(arg, Target)) {\n // const/non-const casting\n return new constructor(Target(arg['*']), options);\n } else if (isCompatiblePointer(arg, Target, flags)) {\n // casting between C/multi/slice pointers\n return new constructor(arg);\n } else if (targetType === StructureType.Slice) {\n // allow casting to slice through constructor of its pointer\n return new constructor(Target(arg), options);\n } else {\n throw new NoCastingToPointer(structure);\n }\n }\n };\n }\n});\n\nfunction isPointerOf(arg, Target) {\n return isCompatibleType(arg?.constructor?.child, Target) && arg['*'];\n}\n\nfunction isCompatiblePointer(arg, Target, flags) {\n if (flags & PointerFlag.IsMultiple) {\n if (arg?.constructor?.child?.child === Target.child && arg['*']) {\n return true;\n } else if (flags & PointerFlag.IsSingle && isPointerOf(arg, Target.child)) {\n // C pointer\n return true;\n }\n }\n return false;\n}\n\nconst constProxies = new WeakMap();\n\nfunction getConstProxy(target) {\n let proxy = constProxies.get(target);\n if (!proxy) {\n const pointer = target[POINTER];\n if (pointer) {\n proxy = new Proxy(pointer, readOnlyProxyHandlers);\n } else {\n proxy = new Proxy(target, constTargetProxyHandlers);\n }\n constProxies.set(target, proxy);\n }\n return proxy;\n}\n\nconst proxyHandlers = {\n get(pointer, name) {\n if (name === POINTER) {\n return pointer;\n } else if (name in pointer) {\n return pointer[name];\n } else {\n const target = pointer[TARGET];\n return target[name];\n }\n },\n set(pointer, name, value) {\n if (name in pointer) {\n pointer[name] = value;\n } else {\n const target = pointer[TARGET];\n target[name] = value;\n }\n return true;\n },\n deleteProperty(pointer, name) {\n if (name in pointer) {\n delete pointer[name];\n } else {\n const target = pointer[TARGET];\n delete target[name];\n }\n return true;\n },\n has(pointer, name) {\n if (name in pointer) {\n return true;\n } else {\n const target = pointer[TARGET];\n return name in target;\n }\n },\n apply(pointer, thisArg, args) {\n const f = pointer['*'];\n return f.apply(thisArg, args);\n },\n};\n\nconst readOnlyProxyHandlers = {\n ...proxyHandlers,\n set(pointer, name, value) {\n if (name in pointer) {\n throwReadOnly();\n } else {\n const target = pointer[TARGET];\n target[name] = value;\n }\n return true;\n },\n};\n\nconst constTargetProxyHandlers = {\n get(target, name) {\n if (name === CONST_TARGET) {\n return target;\n } else {\n const value = target[name];\n if (value?.[MEMORY]) {\n return getConstProxy(value);\n } else {\n return value;\n }\n }\n },\n set(target, name, value) {\n throwReadOnly();\n }\n};\n\nfunction isCompatibleBuffer(arg, constructor) {\n // TODO: merge this with extractView in mixin \"view-management\"\n const tag = arg?.[Symbol.toStringTag];\n if (tag) {\n const typedArray = constructor[TYPED_ARRAY];\n if (typedArray) {\n switch (tag) {\n case typedArray.name:\n case 'DataView':\n return true;\n case 'ArrayBuffer':\n return typedArray === Uint8Array || typedArray === Int8Array;\n case 'Uint8ClampedArray':\n return typedArray === Uint8Array;\n }\n }\n if (constructor.child) {\n if (findElements(arg, constructor.child) !== undefined) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport { pointer as default };\n","import { mixin } from '../environment.js';\nimport { InvalidInitializer } from '../errors.js';\nimport { BIT_SIZE, PRIMITIVE, INITIALIZE, COPY } from '../symbols.js';\nimport { defineValue, isCompatibleInstanceOf, getPrimitiveName } from '../utils.js';\n\nvar primitive = mixin({\n definePrimitive(structure, descriptors) {\n const {\n instance: { members: [ member ] },\n } = structure;\n const propApplier = this.createApplier(structure);\n const { get, set } = this.defineMember(member);\n const initializer = function(arg) {\n if (isCompatibleInstanceOf(arg, constructor)) {\n this[COPY](arg);\n } else {\n if (arg && typeof(arg) === 'object') {\n if (propApplier.call(this, arg) === 0) {\n const type = getPrimitiveName(member);\n throw new InvalidInitializer(structure, type, arg);\n }\n } else if (arg !== undefined) {\n set.call(this, arg);\n }\n }\n };\n const constructor = this.createConstructor(structure);\n descriptors.$ = { get, set: initializer };\n descriptors[INITIALIZE] = defineValue(initializer);\n descriptors[Symbol.toPrimitive] = defineValue(get);\n return constructor;\n },\n finalizePrimitive(structure, staticDescriptors) {\n const {\n instance: { members: [ member ] },\n } = structure;\n staticDescriptors[BIT_SIZE] = defineValue(member.bitSize);\n staticDescriptors[PRIMITIVE] = defineValue(member.type);\n },\n});\n\nexport { primitive as default };\n","import { SliceFlag, StructureFlag, VisitorFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { InvalidArrayInitializer, ArrayLengthMismatch } from '../errors.js';\nimport { SENTINEL, ENTRIES, COPY, MEMORY, SHAPE, INITIALIZE, FINALIZE, VIVIFICATE, VISIT, LENGTH } from '../symbols.js';\nimport { defineValue, getProxy, isCompatibleInstanceOf, transformIterable } from '../utils.js';\n\nvar slice = mixin({\n defineSlice(structure, descriptors) {\n const {\n align,\n flags,\n byteSize,\n name,\n instance: {\n members: [ member ],\n },\n } = structure;\n const { byteSize: elementSize, structure: elementStructure } = member;\n const thisEnv = this;\n const shapeDefiner = function(dv, length, allocator) {\n if (!dv) {\n dv = thisEnv.allocateMemory(length * elementSize, align, allocator);\n }\n this[MEMORY] = dv;\n this[LENGTH] = length;\n };\n const shapeChecker = function(arg, length) {\n if (length !== this[LENGTH]) {\n throw new ArrayLengthMismatch(structure, this, arg);\n }\n };\n const descriptor = this.defineMember(member);\n const { set } = descriptor;\n // the initializer behave differently depending on whether it's called by the\n // constructor or by a member setter (i.e. after object's shape has been established)\n const propApplier = this.createApplier(structure);\n const initializer = function(arg, allocator) {\n if (isCompatibleInstanceOf(arg, constructor)) {\n if (!this[MEMORY]) {\n shapeDefiner.call(this, null, arg.length, allocator);\n } else {\n shapeChecker.call(this, arg, arg.length);\n }\n this[COPY](arg);\n if (flags & StructureFlag.HasPointer) {\n this[VISIT]('copy', VisitorFlag.Vivificate, arg);\n }\n } else if (typeof(arg) === 'string' && flags & SliceFlag.IsString) {\n initializer.call(this, { string: arg }, allocator);\n } else if (arg?.[Symbol.iterator]) {\n arg = transformIterable(arg);\n if (!this[MEMORY]) {\n shapeDefiner.call(this, null, arg.length, allocator);\n } else {\n shapeChecker.call(this, arg, arg.length);\n }\n let i = 0;\n for (const value of arg) {\n constructor[SENTINEL]?.validateValue(value, i, arg.length);\n set.call(this, i++, value, allocator);\n }\n } else if (typeof(arg) === 'number') {\n if (!this[MEMORY] && arg >= 0 && isFinite(arg)) {\n shapeDefiner.call(this, null, arg, allocator);\n } else {\n throw new InvalidArrayInitializer(structure, arg, !this[MEMORY]);\n }\n } else if (arg && typeof(arg) === 'object') {\n if (propApplier.call(this, arg, allocator) === 0) {\n throw new InvalidArrayInitializer(structure, arg);\n }\n } else if (arg !== undefined) {\n throw new InvalidArrayInitializer(structure, arg);\n }\n };\n const getSubArrayView = function(begin, end) {\n const length = this[LENGTH];\n const dv = this[MEMORY];\n begin = (begin === undefined) ? 0 : adjustIndex(begin, length);\n end = (end === undefined) ? length : adjustIndex(end, length);\n const offset = begin * elementSize;\n const len = (end * elementSize) - offset;\n return thisEnv.obtainView(dv.buffer, dv.byteOffset + offset, len);\n };\n const constructor = this.createConstructor(structure);\n descriptors.$ = { get: getProxy, set: initializer };\n descriptors.length = { get: getLength };\n if (flags & SliceFlag.IsTypedArray) {\n descriptors.typedArray = this.defineTypedArray(structure);\n if (flags & SliceFlag.IsString) {\n descriptors.string = this.defineString(structure);\n }\n if (flags & SliceFlag.IsClampedArray) {\n descriptors.clampedArray = this.defineClampedArray(structure);\n }\n }\n descriptors.entries = descriptors[ENTRIES] = this.defineArrayEntries();\n descriptors.subarray = {\n value(begin, end) {\n const dv = getSubArrayView.call(this, begin, end);\n return constructor(dv);\n },\n };\n descriptors.slice = {\n value(begin, end, options = {}) {\n const {\n zig = false\n } = options;\n const dv1 = getSubArrayView.call(this, begin, end);\n const dv2 = thisEnv.allocateMemory(dv1.byteLength, align, zig);\n const slice = constructor(dv2);\n slice[COPY]({ [MEMORY]: dv1 });\n return slice;\n },\n };\n descriptors[Symbol.iterator] = this.defineArrayIterator();\n descriptors[SHAPE] = defineValue(shapeDefiner);\n descriptors[COPY] = this.defineCopier(byteSize, true);\n descriptors[INITIALIZE] = defineValue(initializer);\n descriptors[FINALIZE] = this.defineFinalizerArray(descriptor);\n descriptors[VIVIFICATE] = (flags & StructureFlag.HasObject) && this.defineVivificatorArray(structure);\n descriptors[VISIT] = (flags & StructureFlag.HasPointer) && this.defineVisitorArray();\n return constructor;\n },\n finalizeSlice(structure, staticDescriptors) {\n const {\n flags,\n instance: { members: [ member ] },\n } = structure;\n staticDescriptors.child = defineValue(member.structure.constructor);\n staticDescriptors[SENTINEL] = (flags & SliceFlag.HasSentinel) && this.defineSentinel(structure);\n },\n});\n\nfunction getLength() {\n return this[LENGTH];\n}\n\nfunction adjustIndex(index, len) {\n index = index | 0;\n if (index < 0) {\n index = len + index;\n if (index < 0) {\n index = 0;\n }\n } else {\n if (index > len) {\n index = len;\n }\n }\n return index;\n}\n\nexport { slice as default };\n","import { MemberType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { NotOnByteBoundary } from '../errors.js';\nimport { RESTORE, MEMORY, SLOTS, PARENT } from '../symbols.js';\n\nvar structLike = mixin({\n defineVivificatorStruct(structure) {\n const { instance: { members } } = structure;\n const objectMembers = {};\n for (const member of members.filter(m => m.type === MemberType.Object)) {\n objectMembers[member.slot] = member;\n }\n const thisEnv = this;\n return {\n value(slot) {\n const member = objectMembers[slot];\n const { bitOffset, byteSize, structure: { constructor } } = member;\n {\n this[RESTORE]?.();\n }\n const dv = this[MEMORY];\n const parentOffset = dv.byteOffset;\n const offset = parentOffset + (bitOffset >> 3);\n let len = byteSize;\n if (len === undefined) {\n if (bitOffset & 7) {\n throw new NotOnByteBoundary(member);\n }\n len = member.bitSize >> 3;\n }\n const childDV = thisEnv.obtainView(dv.buffer, offset, len);\n const object = this[SLOTS][slot] = constructor.call(PARENT, childDV);\n return object;\n }\n };\n },\n});\n\nexport { structLike as default };\n","import { MemberFlag, StructFlag, StructureFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { InvalidInitializer } from '../errors.js';\nimport { SETTERS, KEYS, INITIALIZE, VIVIFICATE, VISIT, ENTRIES, PROPS, COPY } from '../symbols.js';\nimport { getSelf, defineValue, isCompatibleInstanceOf } from '../utils.js';\n\nvar struct = mixin({\n defineStruct(structure, descriptors) {\n const {\n flags,\n length,\n instance: { members },\n } = structure;\n const backingIntMember = members.find(m => m.flags & MemberFlag.IsBackingInt);\n const backingInt = backingIntMember && this.defineMember(backingIntMember);\n const propApplier = this.createApplier(structure);\n const initializer = function(arg, allocator) {\n if (isCompatibleInstanceOf(arg, constructor)) {\n this[COPY](arg);\n if (flags & StructureFlag.HasPointer) {\n this[VISIT]('copy', 0, arg);\n }\n } else if (arg && typeof(arg) === 'object') {\n propApplier.call(this, arg, allocator);\n } else if ((typeof(arg) === 'number' || typeof(arg) === 'bigint') && backingInt) {\n backingInt.set.call(this, arg);\n } else if (arg !== undefined) {\n throw new InvalidInitializer(structure, 'object', arg);\n }\n };\n const constructor = this.createConstructor(structure);\n // add descriptors of struct field\n const setters = descriptors[SETTERS].value;\n const keys = descriptors[KEYS].value;\n const props = [];\n for (const member of members.filter(m => !!m.name)) {\n const { name, flags } = member;\n const { set } = descriptors[name] = this.defineMember(member);\n if (set) {\n if (flags & MemberFlag.IsRequired) {\n set.required = true;\n }\n setters[name] = set;\n keys.push(name);\n }\n props.push(name);\n }\n descriptors.$ = { get: getSelf, set: initializer };\n // add length and entries if struct is a tuple\n descriptors.length = defineValue(length);\n descriptors.entries = (flags & StructFlag.IsTuple) && this.defineVectorEntries();\n // allow conversion of packed struct to number when there's a backing int\n descriptors[Symbol.toPrimitive] = backingInt && {\n value(hint) {\n return (hint === 'string')\n ? Object.prototype.toString.call(this)\n : backingInt.get.call(this);\n }\n };\n // add iterator\n descriptors[Symbol.iterator] = (flags & StructFlag.IsIterator)\n ? this.defineZigIterator()\n : (flags & StructFlag.IsTuple)\n ? this.defineVectorIterator()\n : this.defineStructIterator();\n descriptors[INITIALIZE] = defineValue(initializer);\n // for creating complex fields on access\n descriptors[VIVIFICATE] = (flags & StructureFlag.HasObject) && this.defineVivificatorStruct(structure);\n // for operating on pointers contained in the struct\n descriptors[VISIT] = (flags & StructureFlag.HasPointer) && this.defineVisitorStruct(members);\n descriptors[ENTRIES] = (flags & StructFlag.IsTuple) ? this.defineVectorEntries() : this.defineStructEntries();\n descriptors[PROPS] = defineValue(props);\n if (flags & StructFlag.IsAllocator) {\n descriptors.alloc = this.defineAlloc();\n descriptors.free = this.defineFree();\n descriptors.dupe = this.defineDupe();\n }\n return constructor;\n }\n});\n\nexport { struct as default };\n","const dict = globalThis[Symbol.for('ZIGAR')] ||= {};\n\nfunction __symbol(name) {\n return dict[name] ||= Symbol(name);\n}\n\nfunction symbol(name) {\n return /*@__PURE__*/ __symbol(name);\n}\n\nconst MEMORY = symbol('memory');\nconst SLOTS = symbol('slots');\nconst PARENT = symbol('parent');\nconst ZIG = symbol('zig');\nconst NAME = symbol('name');\nconst TYPE = symbol('type');\nconst FLAGS = symbol('flags');\nconst CLASS = symbol('class');\nconst TAG = symbol('tag');\nconst PROPS = symbol('props');\nconst POINTER = symbol('pointer');\nconst SENTINEL = symbol('sentinel');\nconst ARRAY = symbol('array');\nconst ITEMS = symbol('items');\nconst TARGET = symbol('target');\nconst ENTRIES = symbol('entries');\nconst MAX_LENGTH = symbol('max length');\nconst KEYS = symbol('keys');\nconst ADDRESS = symbol('address');\nconst LENGTH = symbol('length');\nconst LAST_ADDRESS = symbol('last address');\nconst LAST_LENGTH = symbol('last length');\nconst PROXY = symbol('proxy');\nconst CACHE = symbol('cache');\nconst SIZE = symbol('size');\nconst BIT_SIZE = symbol('bit size');\nconst ALIGN = symbol('align');\nconst CONST_TARGET = symbol('const target');\nconst ENVIRONMENT = symbol('environment');\nconst ATTRIBUTES = symbol('attributes');\nconst PRIMITIVE = symbol('primitive');\nconst GETTERS = symbol('getters');\nconst SETTERS = symbol('setters');\nconst TYPED_ARRAY = symbol('typed array');\nconst THROWING = symbol('throwing');\nconst PROMISE = symbol('promise');\nconst GENERATOR = symbol('generator');\nconst ALLOCATOR = symbol('allocator');\nconst FALLBACK = symbol('fallback');\nconst SIGNATURE = symbol('signature');\n\nconst UPDATE = symbol('update');\nconst RESTORE = symbol('restore');\nconst RESET = symbol('reset');\nconst VIVIFICATE = symbol('vivificate');\nconst VISIT = symbol('visit');\nconst COPY = symbol('copy');\nconst SHAPE = symbol('shape');\nconst INITIALIZE = symbol('initialize');\nconst RESTRICT = symbol('restrict');\nconst FINALIZE = symbol('finalize');\nconst CAST = symbol('cast');\nconst RETURN = symbol('return');\nconst YIELD = symbol('yield');\n\nexport { ADDRESS, ALIGN, ALLOCATOR, ARRAY, ATTRIBUTES, BIT_SIZE, CACHE, CAST, CLASS, CONST_TARGET, COPY, ENTRIES, ENVIRONMENT, FALLBACK, FINALIZE, FLAGS, GENERATOR, GETTERS, INITIALIZE, ITEMS, KEYS, LAST_ADDRESS, LAST_LENGTH, LENGTH, MAX_LENGTH, MEMORY, NAME, PARENT, POINTER, PRIMITIVE, PROMISE, PROPS, PROXY, RESET, RESTORE, RESTRICT, RETURN, SENTINEL, SETTERS, SHAPE, SIGNATURE, SIZE, SLOTS, TAG, TARGET, THROWING, TYPE, TYPED_ARRAY, UPDATE, VISIT, VIVIFICATE, YIELD, ZIG };\n","import { MemberType } from './constants.js';\nimport { SIGNATURE, ENVIRONMENT, LENGTH, PROXY } from './symbols.js';\n\nfunction defineProperty(object, name, descriptor) {\n if (descriptor) {\n const {\n set,\n get,\n value,\n enumerable,\n configurable = true,\n writable = true,\n } = descriptor;\n Object.defineProperty(object, name, (get || set)\n ? { get, set, configurable, enumerable }\n : { value, configurable, enumerable, writable }\n );\n }\n return object;\n}\n\nfunction defineProperties(object, descriptors) {\n for (const [ name, descriptor ] of Object.entries(descriptors)) {\n defineProperty(object, name, descriptor);\n }\n for (const symbol of Object.getOwnPropertySymbols(descriptors)) {\n const descriptor = descriptors[symbol];\n defineProperty(object, symbol, descriptor);\n }\n return object;\n}\n\nfunction defineValue(value) {\n return (value !== undefined) ? { value } : undefined;\n}\n\nfunction getErrorHandler(options) {\n return (options?.error === 'return')\n ? (cb) => {\n try {\n return cb();\n } catch (err) {\n return err;\n }\n }\n : (cb) => cb();\n}\n\nfunction getPrimitiveName({ type, bitSize }) {\n switch (type) {\n case MemberType.Bool: return 'boolean';\n case MemberType.Int:\n case MemberType.Uint:\n if (bitSize > 32) {\n return 'bigint';\n }\n case MemberType.Float: return 'number';\n }\n}\n\nfunction decodeText(arrays, encoding = 'utf-8') {\n const decoder = decoders[encoding] ||= new TextDecoder(encoding);\n let array;\n if (Array.isArray(arrays)) {\n if (arrays.length === 1) {\n array = arrays[0];\n } else {\n let len = 0;\n for (const a of arrays) {\n len += a.length;\n }\n const { constructor } = arrays[0];\n array = new constructor(len);\n let offset = 0;\n for (const a of arrays) {\n array.set(a, offset);\n offset += a.length;\n }\n }\n } else {\n array = arrays;\n }\n if (array.buffer[Symbol.toStringTag] === 'SharedArrayBuffer') {\n array = new array.constructor(array);\n }\n return decoder.decode(array);\n}\n\nfunction encodeText(text, encoding = 'utf-8') {\n switch (encoding) {\n case 'utf-16': {\n const { length } = text;\n const ta = new Uint16Array(length);\n for (let i = 0; i < length; i++) {\n ta[i] = text.charCodeAt(i);\n }\n return ta;\n }\n default: {\n const encoder = encoders[encoding] ||= new TextEncoder();\n return encoder.encode(text);\n }\n }\n}\n\nfunction encodeBase64(dv) {\n const ta = new Uint8Array(dv.buffer, dv.byteOffset, dv.byteLength);\n const bstr = String.fromCharCode.apply(null, ta);\n return btoa(bstr);\n}\n\nfunction decodeBase64(str) {\n const bstr = atob(str);\n const ta = new Uint8Array(bstr.length);\n for (let i = 0; i < ta.byteLength; i++) {\n ta[i] = bstr.charCodeAt(i);\n }\n return new DataView(ta.buffer);\n}\n\nconst decoders = {};\nconst encoders = {};\n\nfunction findSortedIndex(array, value, cb) {\n let low = 0;\n let high = array.length;\n if (high === 0) {\n return 0;\n }\n while (low < high) {\n const mid = Math.floor((low + high) / 2);\n const value2 = cb(array[mid]);\n if (value2 <= value) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n}\n\nconst isMisaligned = function(address, align) {\n return (align) ? !!(address & (align - 1)) : false;\n }\n;\n\nconst alignForward = function(address, align) {\n return (address + (align - 1)) & ~(align - 1);\n }\n;\n\nconst usizeMin = 0;\nconst usizeMax = 0xFFFF_FFFF;\nconst usizeInvalid = -1;\n\nconst usize = function(arg) {\n return Number(arg);\n }\n;\n\nconst isInvalidAddress = function(address) {\n return address === 0xaaaa_aaaa || address === -1431655766;\n }\n;\n\nconst adjustAddress = function(address, addend) {\n return address + addend;\n }\n;\n\nfunction transformIterable(arg) {\n if (typeof(arg.length) === 'number') {\n // it's an array of sort\n return arg;\n }\n const iterator = arg[Symbol.iterator]();\n const first = iterator.next();\n const length = first.value?.length;\n if (typeof(length) === 'number' && Object.keys(first.value).join() === 'length') {\n // return generator with length attached\n return Object.assign((function*() {\n let result;\n while (!(result = iterator.next()).done) {\n yield result.value;\n }\n })(), { length });\n } else {\n const array = [];\n let result = first;\n while (!result.done) {\n array.push(result.value);\n result = iterator.next();\n }\n return array;\n }\n}\n\nfunction findElements(arg, Child) {\n // casting to a array/slice\n const { constructor: Arg } = arg;\n if (Arg === Child) {\n // matching object\n return 1;\n } else if (Arg.child === Child) {\n // matching slice/array\n return arg.length;\n }\n}\n\nfunction findObjects(structures, SLOTS) {\n const list = [];\n const found = new Map();\n const find = (object) => {\n if (!object || found.get(object)) {\n return;\n }\n found.set(object, true);\n list.push(object);\n if (object[SLOTS]) {\n for (const child of Object.values(object[SLOTS])) {\n find(child);\n }\n }\n };\n for (const structure of structures) {\n find(structure.instance.template);\n find(structure.static.template);\n }\n return list;\n}\n\nfunction isCompatibleType(TypeA, TypeB) {\n return (TypeA === TypeB)\n || ((TypeA?.[SIGNATURE] === TypeB[SIGNATURE]) && (TypeA?.[ENVIRONMENT] !== TypeB?.[ENVIRONMENT]));\n}\n\nfunction isCompatibleInstanceOf(object, Type) {\n return (object instanceof Type) || isCompatibleType(object?.constructor, Type);\n}\n\nfunction markAsSpecial({ get, set }) {\n get.special = set.special = true;\n return { get, set };\n}\n\nfunction getSelf() {\n return this;\n}\n\nfunction getLength() {\n return this[LENGTH];\n}\n\nfunction getProxy() {\n return this[PROXY];\n}\n\nfunction toString() {\n return String(this);\n}\n\nfunction always() {\n return true;\n}\n\nfunction never() {\n return false;\n}\n\nfunction empty() {}\n\nclass ObjectCache {\n map = new WeakMap();\n\n find(dv) {\n return this.map.get(dv);\n }\n\n save(dv, object) {\n this.map.set(dv, object);\n return object;\n }\n}\n\nexport { ObjectCache, adjustAddress, alignForward, always, decodeBase64, decodeText, defineProperties, defineProperty, defineValue, empty, encodeBase64, encodeText, findElements, findObjects, findSortedIndex, getErrorHandler, getLength, getPrimitiveName, getProxy, getSelf, isCompatibleInstanceOf, isCompatibleType, isInvalidAddress, isMisaligned, markAsSpecial, never, toString, transformIterable, usize, usizeInvalid, usizeMax, usizeMin };\n","import { VisitorFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { ZigMemoryTargetRequired } from '../errors.js';\nimport { SLOTS, LAST_ADDRESS, MEMORY, ZIG, VIVIFICATE, VISIT } from '../symbols.js';\n\nvar all = mixin({\n defineVisitor() {\n return {\n value(cb, flags, src) {\n let fn;\n if (typeof(cb) === 'string') {\n fn = builtinVisitors[cb];\n } else {\n fn = cb;\n }\n fn.call(this, flags, src);\n }\n };\n },\n});\n\nfunction visitChild(slot, cb, flags, src) {\n let child = this[SLOTS][slot];\n if (!child) {\n if (!(flags & VisitorFlag.IgnoreUncreated)) {\n child = this[VIVIFICATE](slot);\n } else {\n return;\n }\n }\n let srcChild;\n if (src) {\n srcChild = src[SLOTS][slot];\n if (!srcChild) {\n return;\n }\n }\n child[VISIT](cb, flags, srcChild);\n}\n\nconst builtinVisitors = {\n copy(flags, src) {\n const target = src[SLOTS][0];\n if (this[MEMORY][ZIG]) {\n if (target && !target[MEMORY][ZIG]) {\n throw new ZigMemoryTargetRequired();\n }\n }\n this[SLOTS][0] = target;\n },\n clear(flags) {\n if (flags & VisitorFlag.IsInactive) {\n this[SLOTS][0] = undefined;\n }\n },\n reset() {\n this[SLOTS][0] = undefined;\n this[LAST_ADDRESS] = undefined;\n },\n};\n\nexport { all as default, visitChild };\n","import { StructureFlag, VisitorFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { visitChild } from './all.js';\n\nvar inArgStruct = mixin({\n defineVisitorArgStruct(members) {\n const argSlots = [];\n let rvSlot = undefined;\n for (const [ index, { slot, structure } ] of members.entries()) {\n if (structure.flags & StructureFlag.HasPointer) {\n if (index === 0) {\n rvSlot = slot;\n } else {\n argSlots.push(slot);\n }\n }\n }\n return {\n value(cb, flags, src) {\n if (!(flags & VisitorFlag.IgnoreArguments) && argSlots.length > 0) {\n for (const slot of argSlots) {\n visitChild.call(this, slot, cb, flags | VisitorFlag.IsImmutable, src);\n }\n }\n if (!(flags & VisitorFlag.IgnoreRetval) && rvSlot !== undefined) {\n visitChild.call(this, rvSlot, cb, flags, src);\n }\n }\n };\n }\n});\n\nexport { inArgStruct as default };\n","import { StructureFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { visitChild } from './all.js';\n\nvar inStruct = mixin({\n defineVisitorStruct(members) {\n const slots = members.filter(m => m.structure?.flags & StructureFlag.HasPointer).map(m => m.slot);\n return {\n value(cb, flags, src) {\n for (const slot of slots) {\n visitChild.call(this, slot, cb, flags, src);\n }\n }\n };\n }\n});\n\nexport { inStruct as default };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var scriptUrl;\nif (typeof import.meta.url === \"string\") scriptUrl = import.meta.url\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// startup\n// Load entry module and return exports\n// This entry module used 'module' so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(8156);\n"],"names":["webpackQueues","webpackExports","webpackError","resolveQueue","updateCanvasSize","canvas","width","height","device","Math","max","min","limits","maxTextureDimension2D","canvasSizeObserver","callback","ResizeObserver","entries","entry","target","contentBoxSize","inlineSize","blockSize","observe","clientWidth","clientHeight","getDevice","navigator","gpu","Error","adapter","requestAdapter","requestDevice","lost","then","info","console","error","message","reason","numMipLevels","sizes","maxSize","log2","createTextureFromSource","source","options","texture","createTexture","format","mipLevelCount","mips","size","usage","GPUTextureUsage","TEXTURE_BINDING","COPY_DST","RENDER_ATTACHMENT","flipY","depthOrArrayLayers","queue","copyExternalImageToTexture","copySourceToTexture","NUM_PIXELS","PickManager","constructor","isPreviousPickDone","this","pickBuffer","createBuffer","GPUBufferUsage","MAP_READ","pickTexture","COPY_SRC","pickDepthTexture","startPicking","encoder","descriptor","label","colorAttachments","view","createView","loadOp","clearValue","storeOp","pass","beginRenderPass","setViewport","setScissorRect","end","copyTextureToBuffer","origin","x","y","buffer","createMatrix","canvasMatrix","tx","ty","scaling","translation","reduce","accMatrix","rotationMatrix","multiply","asyncPick","mapAsync","GPUMapMode","READ","id","Uint32Array","getMappedRange","downCallback","unmap","err","pointer","initMouseController","updatePointer","e","rect","getBoundingClientRect","clientX","left","clientY","top","addEventListener","event","log","deltaY","INSTANCE_STRIDE","tileDim","batch","STRIDE","drawTriangle","drawBezier","draw3dModel","draw3dModelTexture","draw3dModelLight","drawBlur","drawTexture","pickTriangle","drawMSDF","initPrograms","presentationFormat","module","createShaderModule","code","pipeline","createRenderPipeline","layout","vertex","entryPoint","buffers","arrayStride","stepMode","attributes","shaderLocation","offset","fragment","targets","blend","color","srcFactor","dstFactor","alpha","multisample","count","uniformBuffer","UNIFORM","uniformValues","Float32Array","uniformBufferSize","matrixValue","subarray","kMatrixOffset","worldProjectionMatrix","vertexData","numInstances","length","vertexBuffer","byteLength","VERTEX","writeBuffer","bindGroup","createBindGroup","getBindGroupLayout","binding","resource","setPipeline","setVertexBuffer","set","setBindGroup","draw","primitive","topology","depthStencil","depthWriteEnabled","depthCompare","matrix","pointsData","tData","dirData","segmentIndexData","zoom","storageBufferSize","storageBuffer","STORAGE","zoomValue","kZoomOffset","tBuffer","dirBuffer","segmentIndexBuffer","indexData","sampler","createSampler","magFilter","minFilter","numVertices","indexBuffer","INDEX","setIndexBuffer","drawIndexed","cullMode","uniform","worldViewProjection","normalMatrix","lightColor","lightDirection","normalMatrixValue","kNormalMatrixOffset","worldViewProjectionValue","kWorldViewProjectionOffset","colorValue","kColorOffset","lightDirectionValue","kLightDirectionOffset","blurPipeline","createComputePipeline","compute","commandEncoder","textures","map","STORAGE_BINDING","buffer0","mappedAtCreation","buffer1","blurParamsBuffer","computeConstants","computeBindGroup0","computeBindGroup1","computeBindGroup2","blockDim","computePass","beginComputePass","dispatchWorkgroups","ceil","i","settings","getCanvasMatrix","ortho","multisampleTexture","depthTexture","getMultisampleTexture","destroy","sampleCount","getCanvasRenderDescriptor","context","canvasTexture","getCurrentTexture","getDepthTexture","resolveTarget","initCreator","assets","onAssetsUpdate","getContext","getPreferredCanvasFormat","configure","addImage","img","points","newTextureId","push","url","src","serializedData","serializedAssetsTextureUrl","asset","point","u","v","texture_id","forEach","Image","onload","icons","flatMap","char","stopCreator","removeAsset","unconfigure","runCreator","canvasPass","pickManager","pickMatrix","pickPass","draw_texture","vertex_data","typedArray","draw_msdf","draw_triangle","pick_texture","pick_triangle","rafId","lastPickPointer","requestAnimationFrame","now","createCommandEncoder","canvasDescriptor","pick","commandBuffer","finish","submit","cancelAnimationFrame","clamp","value","getDefaultPoints","scale","getDefaultTextureScale","scaledWidth","scaledHeight","paddingX","paddingY","cross","a","b","dst","t0","t1","t2","subtract","normalize","sqrt","mat4","projection","depth","perspective","fieldOfViewYInRadians","aspect","zNear","zFar","f","tan","PI","rangeInv","right","bottom","near","far","identity","b00","b01","b02","b03","b10","b11","b12","b13","b20","b21","b22","b23","b30","b31","b32","b33","a00","a01","a02","a03","a10","a11","a12","a13","a20","a21","a22","a23","a30","a31","a32","a33","cameraAim","eye","up","zAxis","xAxis","yAxis","inverse","m","m00","m01","m02","m03","m10","m11","m12","m13","m20","m21","m22","m23","m30","m31","m32","m33","tmp0","tmp1","tmp2","tmp3","tmp4","tmp5","tmp6","tmp7","tmp8","tmp9","tmp10","tmp11","tmp12","tmp13","tmp14","tmp15","tmp16","tmp17","tmp18","tmp19","tmp20","tmp21","tmp22","tmp23","t3","d","transpose","aim","lookAt","tz","rotationX","angleInRadians","c","cos","s","sin","rotationY","rotationZ","sx","sy","sz","translate","rotateX","rotateY","rotateZ","type","flags","signature","undefined","name","byteSize","align","instance","members","template","static","s0","s1","s2","s3","s4","s5","s6","s7","s8","s9","s10","s11","s12","s13","s14","s15","s16","s17","s18","s19","s20","s21","s22","s23","s24","s25","s26","s27","s28","s29","s30","s31","s32","s33","s34","s35","s36","s37","s38","s39","s40","s41","s42","o0","o1","o2","o3","o4","o5","o6","o7","o8","o9","o10","o11","o12","o13","o14","o15","o16","o17","o18","o19","o20","o21","o22","o23","o24","o25","o26","o27","o28","o29","o30","o31","o32","o33","o34","o35","o36","o37","o38","o39","o40","o41","o42","o43","o44","o45","o46","o47","o48","U","Uint8Array","a0","a1","a2","a3","a4","a5","$","Object","assign","memory","array","handle","slots","structure","const","bitOffset","bitSize","slot","structures","root","runtimeSafety","littleEndian","libc","env","recreateStructures","binaryString","atob","bytes","charCodeAt","Promise","r","setTimeout","loadModule","linkVariables","v0","v1","getSpecialExports","connect_web_gpu_programs","v2","connect_on_asset_update_callback","v3","ASSET_ID_TRESHOLD","v4","init_state","v5","add_asset","v6","remove_asset","v7","update_points","v8","on_update_pick","v9","on_pointer_down","v10","on_pointer_up","v11","on_pointer_move","v12","canvas_render","v13","picks_render","v14","destroy_state","v15","import_icons","v16","init","accessorCache","Map","getAccessor","access","member","names","unaligned","Int","Uint","Bool","accessorName","join","accessor","DataView","prototype","get","handlerName","pop","getAccessorInt","signMask","valueMask","n","call","StructureType","Primitive","Array","Struct","Union","ErrorUnion","ErrorSet","Enum","Optional","Pointer","Slice","Vector","Opaque","ArgStruct","VariadicStruct","Function","structureNames","keys","StructureFlag","HasValue","HasObject","HasPointer","HasSlot","PrimitiveFlag","IsSize","ArrayFlag","HasSentinel","IsString","IsTypedArray","IsClampedArray","StructFlag","IsExtern","IsPacked","IsIterator","IsTuple","IsAllocator","IsPromise","IsGenerator","IsAbortSignal","IsOptional","PointerFlag","HasLength","IsMultiple","IsSingle","IsConst","IsNullable","SliceFlag","IsOpaque","ArgStructFlag","HasOptions","IsThrowing","IsAsync","MemberType","Void","Float","Type","Literal","Null","Undefined","Unsupported","memberNames","MemberFlag","IsRequired","IsReadOnly","IsPartOfSet","IsSelector","IsMethod","IsSentinel","IsBackingInt","CallResult","OK","Failure","Deadlock","Disabled","VisitorFlag","IsInactive","IsImmutable","IgnoreUncreated","IgnoreInactive","IgnoreArguments","IgnoreRetval","cls","mixins","mixin","object","defineEnvironment","initFunctions","current","defineClass","InvalidIntConversion","SyntaxError","arg","super","TypeError","NoInitializer","BufferSizeMismatch","dv","actual","msg","BufferExpected","acceptable","addArticle","formatList","InvalidInitializer","expected","isArray","received","getDescription","InvalidArrayInitializer","shapeless","ArrayLengthMismatch","elementConstructor","argLength","argConstructor","actualLength","child","InvalidSliceLength","MissingInitializers","missing","NoProperty","propName","find","ArgumentCountMismatch","variadic","updateText","argOffset","p","stack","adjustStack","enumerable","UndefinedArgument","NoCastingToPointer","NoCastingToFunction","ConstantConstraint","AlignmentConflict","align1","align2","TypeMismatch","NullPointer","PreviouslyFreed","InvalidPointerTarget","noun","article","ZigMemoryTargetRequired","OutOfBound","RangeError","index","NotUndefined","NotOnByteBoundary","struct","ReadOnly","ReadOnlyTarget","UnexpectedGenerator","ZigError","remove","Exit","adjustArgumentError","argIndex","search","lines","split","findIndex","includes","splice","replaceRangeError","throwReadOnly","toString","test","list","conj","sep","slice","variables","check","args","initialize","abandon","abandonModule","connect","consoleObject","sizeOf","T","alignOf","typeOf","structureNamesLC","insertObjects","dest","placeholders","placeholder","createObject","getBuffer","ArrayBuffer","obtainView","isConst","makeReadOnly","resetGlobalErrorSet","objectPlaceholders","scope","realSlots","defineStructure","finalizeStructure","replace","toLowerCase","jsFunctionThunkMap","jsFunctionCallerMap","jsFunctionControllerMap","jsFunctionIdMap","WeakMap","jsFunctionNextId","getFunctionId","fn","getFunctionThunk","jsThunkController","controllerAddress","getViewAddress","thunkAddress","createJsThunk","obtainZigView","createInboundCaller","futexHandle","result","awaiting","argStruct","startContext","updatePointerTargets","updateShadowTargets","endContext","onError","_","onReturn","retval","hasCallback","hasOwnProperty","Symbol","toStringTag","promise","finalizeAsyncCall","asyncIterator","pipeContents","defineArgIterator","thisEnv","allocatorTotal","filter","allocatorCount","callbackCount","signalCount","srcIndex","optName","opt","createPromiseCallback","createGeneratorCallback","createInboundSignal","iterator","handleJsCall","argAddress","argSize","caller","releaseFunction","thunk","controller","destroyJsThunk","releaseZigView","delete","exports","argType","returnType","imports","createOutboundCaller","self","runThunk","initPromise","invokeThunk","copyArguments","argList","argAlloc","destIndex","setters","generator","signal","createDefaultAllocator","createPromise","createGenerator","createSignal","attrs","fnAddress","isAsync","hasPointers","updatePointerAddresses","getShadowAddress","attrAddress","updateShadows","finalize","flushStdout","flushConsole","runVariadicThunk","findShadowView","int8","int16","int32","getInt8","setInt8","getInt16","setInt16","getInt32","setInt32","copiers","len","resetters","any","defineCopier","multiple","copy","getCopyFunction","defineResetter","reset","getResetFunction","defineRetvalCopier","shadowDV","address","byteOffset","copyExternBytes","addIntConversion","BigInt","number","Number","isFinite","structureFlags","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","bigint","findMemoryIndex","isMemoryMapping","memoryList","contextCount","shadowList","freeShadowMemory","cluster","writable","targetDV","start","maxAlignOffset","maxAlign","unalignedDV","allocateShadowMemory","unalignedAddress","maxAlignAddress","shadowOffset","MemoryType","Scratch","clusterDV","registerMemory","restoreView","unregisterMemory","findMemory","isOpaque","zig","getBufferAddress","allocateScratchMemory","freeScratchMemory","usizeMaxBuffer","cache","getTargetAddress","Normal","abandoned","nextValueIndex","valueMap","valueIndices","executable","table","initialTableLength","exportedFunctions","releaseFunctions","throwError","unlinkVariables","displayPanic","wasi","setCustomWASI","getObjectIndex","fromWebAssembly","toWebAssembly","exportFunction","charAt","apply","importFunction","exportFunctions","alias","importFunctions","instantiateWebAssembly","memoryInitial","memoryMax","tableInitial","multithreaded","res","suffix","w","WebAssembly","functions","wasiPreview","exportedModules","wasi_snapshot_preview1","kind","Module","getWASIHandler","getThreadHandler","Memory","initial","maximum","shared","__indirect_function_table","Table","element","Instance","customWASI","exportsPlusMemory","instanceProxy","Proxy","inst","writeBack","jsDV","zigDV","save","linkChildren","parentOffset","values","childDV","allocateMemory","recreateAddress","pointerMap","bufferMap","potentialClusters","other","clusters","findTargetClusters","clusterMap","inbound","currentTarget","newTarget","targetFlags","prevTarget","prevStart","prevEnd","currentCluster","forward","misaligned","allocateJsThunk","freeJsThunk","thunkSources","thunkMap","addJsThunkSource","thunkCount","unshift","funcId","sourceAddress","thunkObject","grow","fnId","indexOf","checkDataViewSize","viewMap","extractView","tag","registerView","isArrayLike","elementSize","Child","assignView","allocator","validateData","findViewAt","existing","prev","prevKey","alloc","allocateJSMemory","defineRestorer","newDV","protect","gp","getOwnPropertyDescriptors","df","defineProperty","protectProperties","protectElements","exclude","descriptors","createEnvironment","getArrayIterator","next","done","getArrayEntriesIterator","handleError","getArrayEntries","bind","defineArrayEntries","defineArrayIterator","getStructEntries","getStructEntriesIterator","getStructIterator","props","defineStructEntries","defineStructIterator","bindSlot","defineMember","applyTransform","defineBase64","dataView","str","defineDataView","defineMemberFloat","defineMemberUsing","getValue","getObject","setValue","defineMemberObject","getter","setter","defineToJSON","defineTypedArray","TypedArray","getTypedArray","BYTES_PER_ELEMENT","ta","defineMemberUint","addRuntimeCheck","defineValueOf","normalizeObject","INT_MAX","INT_MIN","forJSON","resultMap","process","for","String","key","defineMemberVoid","base64","toJSON","valueOf","staticDescriptors","accessorType","exec","argRequired","method","createConstructor","handlers","onCastError","comptimeFieldSlots","comptimeMembers","creating","arguments","create","createApplier","argKeys","normalCount","normalFound","normalMissing","specialFound","special","required","k","intType","prefix","globalThis","defineArgStruct","argMembers","retvalSetter","defineVivificatorStruct","defineVisitorArgStruct","finalizeArgStruct","defineFinalizerArray","proxyHandlers","defineVivificatorArray","elementStructure","deleteProperty","has","ownKeys","getOwnPropertyDescriptor","configurable","defineArray","propApplier","initializer","Vivificate","string","defineString","clampedArray","defineClampedArray","defineVisitorArray","finalizeArray","defineSentinel","defineFunction","argCount","setPrototypeOf","finalizeFunction","isPointerOf","Target","isCompatiblePointer","definePointer","targetStructure","targetType","targetSize","addressSize","readAddress","writeAddress","readLength","writeLength","updateTarget","all","active","findSentinel","setAddress","sentinelCount","setLength","getTargetObject","empty","getConstProxy","getTarget","setTarget","constTarget","Int8Array","isCompatibleBuffer","single","propSetters","begin","toPrimitive","hint","proxy","js","defineVisitor","finalizePointer","constProxies","readOnlyProxyHandlers","constTargetProxyHandlers","thisArg","definePrimitive","finalizePrimitive","getLength","adjustIndex","defineSlice","shapeDefiner","shapeChecker","validateValue","getSubArrayView","dv1","dv2","finalizeSlice","objectMembers","defineStruct","backingIntMember","backingInt","defineVectorEntries","defineZigIterator","defineVectorIterator","defineVisitorStruct","defineAlloc","free","defineFree","dupe","defineDupe","dict","__symbol","symbol","MEMORY","SLOTS","PARENT","ZIG","TYPE","FLAGS","PROPS","POINTER","SENTINEL","ARRAY","TARGET","ENTRIES","MAX_LENGTH","KEYS","ADDRESS","LENGTH","LAST_ADDRESS","LAST_LENGTH","PROXY","CACHE","SIZE","BIT_SIZE","ALIGN","CONST_TARGET","ENVIRONMENT","ATTRIBUTES","PRIMITIVE","SETTERS","TYPED_ARRAY","THROWING","PROMISE","GENERATOR","ALLOCATOR","SIGNATURE","UPDATE","RESTORE","VIVIFICATE","VISIT","COPY","SHAPE","INITIALIZE","RESTRICT","FINALIZE","CAST","RETURN","YIELD","defineProperties","getOwnPropertySymbols","defineValue","getErrorHandler","cb","getPrimitiveName","decodeText","arrays","encoding","decoder","decoders","TextDecoder","decode","encodeBase64","bstr","fromCharCode","btoa","decodeBase64","findSortedIndex","low","high","mid","floor","isMisaligned","alignForward","usizeMin","usizeMax","usizeInvalid","isInvalidAddress","adjustAddress","addend","transformIterable","first","findElements","Arg","isCompatibleType","TypeA","TypeB","isCompatibleInstanceOf","markAsSpecial","getSelf","getProxy","ObjectCache","visitChild","srcChild","builtinVisitors","clear","argSlots","rvSlot","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","body","hasAwait","currentDeps","outerResolve","reject","depQueues","Set","resolve","rej","deps","dep","obj","ret","wrapDeps","getResult","fnQueue","q","add","definition","o","prop","scriptUrl","__webpack_exports__"],"sourceRoot":""}
|