@mateuszjs/magic-render 0.1.0-next.13 → 0.1.0-next.15
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/index.mjs +1 -1
- package/lib/index.mjs.map +1 -1
- package/lib/types/src/WebGPU/canvasSizeObserver.d.ts.map +1 -1
- package/lib/types/src/index.d.ts +0 -4
- package/lib/types/src/index.d.ts.map +1 -1
- package/lib/types/src/run.d.ts +1 -2
- package/lib/types/src/run.d.ts.map +1 -1
- package/lib/types/src/textures.d.ts +9 -0
- package/lib/types/src/textures.d.ts.map +1 -0
- package/package.json +1 -1
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/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/loadingTexture.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/bool.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/bool.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 let i = 0\n while (i < pointer.afterPickEventsQueue.length) {\n // this is pretty stupid, because pointer.x, pointer.y were updated immediately\n // without waiting for this place right here\n const { requireNewPick, cb } = pointer.afterPickEventsQueue[i]\n if (requireNewPick && i > 0) break // we need to start new picking pass\n cb()\n i++\n }\n pointer.afterPickEventsQueue.splice(0, i) // remove processed events\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 {\n on_pointer_move,\n on_pointer_leave,\n on_pointer_down,\n on_pointer_up,\n} from '../logic/index.zig'\n\nconst OUTSIDE_CANVAS = -1\n\nexport const pointer = {\n x: 0,\n y: 0,\n afterPickEventsQueue: [] as Array<{ requireNewPick: boolean; cb: VoidFunction }>,\n /* this queue exists because wen mobiel device is touched we have to:\n 1) update pointer,\n 2) do picking,\n 3) record a click in order,\n so click has to wait after pick is done */\n}\n\nexport default function initMouseController(\n canvas: HTMLCanvasElement,\n onStartProcessing: VoidFunction\n) {\n pointer.x = OUTSIDE_CANVAS\n pointer.y = OUTSIDE_CANVAS\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 onStartProcessing()\n\n const update = () => {\n pointer.x = OUTSIDE_CANVAS\n pointer.y = OUTSIDE_CANVAS\n on_pointer_leave()\n }\n if (pointer.afterPickEventsQueue.length > 0) {\n pointer.afterPickEventsQueue.push({\n requireNewPick: false,\n cb: update,\n })\n } else {\n update()\n }\n })\n\n canvas.addEventListener('mousemove', (e) => {\n onStartProcessing()\n\n const move = () => {\n updatePointer(e)\n on_pointer_move(pointer.x, canvas.height - pointer.y)\n }\n if (pointer.afterPickEventsQueue.length > 0) {\n pointer.afterPickEventsQueue.push({\n requireNewPick: false,\n cb: move,\n })\n } else {\n move()\n }\n })\n\n canvas.addEventListener('mousedown', (e) => {\n onStartProcessing()\n\n updatePointer(e)\n pointer.afterPickEventsQueue.push({\n requireNewPick: true,\n cb: on_pointer_down.bind(null, pointer.x, canvas.height - pointer.y),\n })\n })\n\n canvas.addEventListener('mouseup', () => {\n onStartProcessing()\n\n if (pointer.afterPickEventsQueue.length > 0) {\n pointer.afterPickEventsQueue.push({\n requireNewPick: false,\n cb: on_pointer_up,\n })\n } else {\n on_pointer_up()\n }\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 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 reset_assets,\n connect_on_asset_update_callback,\n connect_on_asset_selection_callback,\n destroy_state,\n import_icons,\n} from './logic/index.zig'\nimport initMouseController from 'WebGPU/pointer'\nimport IconsPng from '../msdf/output/icons.png'\nimport IconsJson from '../msdf/output/icons.json'\nimport getDefaultPoints from 'utils/getDefaultPoints'\n\nexport type SerializedInputAsset = {\n id?: number // not needed while loading project but useful for undo/redo to maintain selection\n points?: PointUV[]\n url: string\n textureId?: number\n}\n\nexport type SerializedOutputAsset = {\n id: number // not needed while loading project but useful for undo/redo to maintain selection\n points: PointUV[]\n url: string\n textureId: number\n}\n\nexport interface CreatorAPI {\n addImage: (url: string) => void\n resetAssets: (assets: SerializedInputAsset[], withSnapshot?: boolean) => 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 onAssetsUpdate: (assets: SerializedOutputAsset[]) => void,\n onAssetSelect: (assetId: number) => void,\n onProcessingUpdate: (inProgress: boolean) => void\n): Promise<CreatorAPI> {\n let loadingTextures = 0\n let isMouseEventProcessing = false\n\n function updateProcessing() {\n onProcessingUpdate(loadingTextures > 0 || isMouseEventProcessing)\n }\n\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 isMouseEventProcessing = true\n updateProcessing()\n })\n\n const textures: TextureSource[] = []\n\n function addTexture(url: string, callback?: (width: number, height: number) => void): number {\n loadingTextures++\n updateProcessing()\n\n const textureId = textures.length\n textures.push({ url })\n\n const img = new Image()\n img.src = url\n\n img.onload = () => {\n textures[textureId].texture = createTextureFromSource(device, img, { flipY: true })\n callback?.(img.width, img.height)\n\n loadingTextures--\n updateProcessing()\n }\n\n img.onerror = () => {\n console.error(`Failed to load image from ${url}`)\n\n loadingTextures--\n updateProcessing()\n }\n\n return textureId\n }\n\n connect_on_asset_update_callback((serializedData: AssetZig[]) => {\n const serializedAssetsTextureUrl = [...serializedData].map<SerializedOutputAsset>((asset) => ({\n id: asset.id,\n textureId: asset.texture_id,\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 connect_on_asset_selection_callback(onAssetSelect)\n\n const addImage: CreatorAPI['addImage'] = (url) => {\n const textureId = addTexture(url, (width, height) => {\n const points = getDefaultPoints(width, height, canvas.clientWidth, canvas.clientHeight)\n add_asset(0 /* no id yet, needs to be generated */, points, textureId)\n })\n }\n\n addTexture(IconsPng, (width, height) => {\n import_icons(\n IconsJson.chars.flatMap((char) => [\n char.id,\n char.x / width,\n char.y / height,\n char.width / width,\n char.height / height,\n char.width,\n char.height,\n ])\n )\n })\n\n const stopCreator = runCreator(canvas, context, device, presentationFormat, textures, () => {\n isMouseEventProcessing = false\n updateProcessing()\n })\n\n const resetAssets: CreatorAPI['resetAssets'] = async (assets, withSnapshot = false) => {\n const results = await Promise.allSettled(\n assets.map<Promise<AssetZig>>(\n (asset) =>\n new Promise((resolve, reject) => {\n if (asset.points) {\n return resolve({\n points: asset.points,\n texture_id: asset.textureId || addTexture(asset.url),\n id: asset.id || 0,\n })\n }\n\n const textureId = addTexture(asset.url, (width, height) => {\n // we wait to add image once points are known because otherwise\n // if we add img first with \"Default\" point value and update\n // it later once texture is loaded, we will get history snapshot with\n // that \"default\" points\n return resolve({\n points: getDefaultPoints(width, height, canvas.clientWidth, canvas.clientHeight),\n texture_id: textureId, // if there is no points, then for sure there is no asset.textureId\n id: 0,\n })\n })\n })\n )\n )\n\n const zigAssets = results\n .filter((result) => result.status === 'fulfilled')\n .map((result) => result.value)\n\n reset_assets(zigAssets, withSnapshot)\n }\n\n return {\n addImage,\n removeAsset: remove_asset,\n resetAssets,\n destroy: () => {\n stopCreator()\n destroy_state()\n context.unconfigure()\n device.destroy()\n },\n }\n}\n","export default function getLoadingTexture(device: GPUDevice): GPUTexture {\n const kTextureWidth = 5\n const kTextureHeight = 7\n const _ = [255, 0, 0, 255] // red\n const y = [255, 255, 0, 255] // yellow\n const b = [0, 0, 255, 255] // blue\n // prettier-ignore\n const textureData = new Uint8Array([\n b, _, _, _, _,\n _, y, y, y, _,\n _, y, _, _, _,\n _, y, y, _, _,\n _, y, _, _, _,\n _, y, _, _, _,\n _, _, _, _, _,\n ].flat())\n\n const texture = device.createTexture({\n label: 'yellow F on red',\n size: [kTextureWidth, kTextureHeight],\n format: 'rgba8unorm',\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST,\n })\n device.queue.writeTexture(\n { texture },\n textureData,\n { bytesPerRow: kTextureWidth * 4 },\n { width: kTextureWidth, height: kTextureHeight }\n )\n\n return texture\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'\nimport getLoadingTexture from 'loadingTexture'\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 onEmptyEvents: VoidFunction // call when there is no more events to process\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 const loadingTexture = getLoadingTexture(device)\n\n connect_web_gpu_programs({\n draw_texture: (vertex_data, texture_id) =>\n drawTexture(\n canvasPass,\n canvasMatrix,\n vertex_data.typedArray,\n textures[texture_id].texture ?? loadingTexture\n ),\n draw_msdf: (vertex_data, texture_id) => {\n drawMSDF(\n canvasPass,\n canvasMatrix,\n vertex_data.typedArray,\n textures[texture_id].texture ?? loadingTexture\n )\n },\n draw_triangle: (vertex_data) => drawTriangle(canvasPass, canvasMatrix, vertex_data.typedArray),\n pick_texture: (vertex_data, texture_id) =>\n pickTexture(\n pickPass,\n pickMatrix,\n vertex_data.typedArray,\n textures[texture_id].texture ?? loadingTexture\n ),\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 (pointer.afterPickEventsQueue.length === 0) {\n onEmptyEvents()\n }\n\n const needsUpdatePick =\n pointer.afterPickEventsQueue.length > 0 ||\n lastPickPointer.x !== pointer.x ||\n lastPickPointer.y !== pointer.y\n\n if (needsUpdatePick) {\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 texWidth: number,\n texHeight: number,\n projectWidth: number,\n projectHeight: number\n): PointUV[] {\n const scale = getDefaultTextureScale(texWidth, texHeight, projectWidth, projectHeight)\n const scaledWidth = texWidth * scale\n const scaledHeight = texHeight * scale\n const paddingX = (projectWidth - scaledWidth) * 0.5\n const paddingY = (projectHeight - 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(\n texWidth: number,\n texHeight: number,\n projectWidth: number,\n projectHeight: number\n) {\n const heightDiff = projectHeight - texHeight\n const widthDiff = projectWidth - texWidth\n\n if (heightDiff < widthDiff) {\n const height = clamp(texHeight, projectHeight * 0.2, projectHeight * 0.8)\n return height / texHeight\n }\n\n const width = clamp(texWidth, projectWidth * 0.2, projectWidth * 0.8)\n return width / texWidth\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/accessors/bool.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/bool.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 = {}, s43 = {}, s44 = {}, s45 = {}, s46 = {};\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 = {}, o49 = {};\nconst o50 = {}, o51 = {}, o52 = {};\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(72);\nconst a5 = U([ 232, 3, 0, 0 ]);\n\n// fill in object properties\nconst $ = Object.assign;\n$(o0, {\n memory: { array: a0 },\n handle: 29,\n});\n$(o1, {\n memory: { array: a0 },\n handle: 30,\n});\n$(o2, {\n memory: { array: a0 },\n handle: 19,\n});\n$(o3, {\n memory: { array: a0 },\n handle: 28,\n});\n$(o4, {\n memory: { array: a1 },\n handle: 263216,\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: 18,\n});\n$(o13, {\n memory: { array: a0 },\n handle: 100,\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: 79,\n});\n$(o17, {\n memory: { array: a0 },\n handle: 82,\n});\n$(o18, {\n memory: { array: a0 },\n handle: 83,\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: 79,\n});\n$(o22, {\n structure: s21,\n memory: { array: a0 },\n handle: 80,\n});\n$(o23, {\n structure: s21,\n memory: { array: a0 },\n handle: 81,\n});\n$(o24, {\n memory: { array: a4 },\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: 25,\n});\n$(o29, {\n memory: { array: a0 },\n handle: 26,\n});\n$(o30, {\n memory: { array: a0 },\n handle: 21,\n});\n$(o31, {\n memory: { array: a0 },\n handle: 22,\n});\n$(o32, {\n memory: { array: a0 },\n handle: 23,\n});\n$(o33, {\n memory: { array: a0 },\n handle: 24,\n});\n$(o34, {\n memory: { array: a0 },\n handle: 27,\n});\n$(o35, {\n slots: {\n 0: o36, 1: o37, 2: o38, 3: o39, 4: o40, 5: o41, 6: o42, 7: o43, 8: o44, 9: o45,\n 10: o46, 11: o47, 12: o48, 13: o49, 14: o50, 15: o51, 16: o52,\n },\n});\n$(o36, {\n structure: s14,\n memory: { array: a0 },\n handle: 2,\n});\n$(o37, {\n structure: s31,\n memory: { array: a0 },\n handle: 3,\n});\n$(o38, {\n structure: s36,\n memory: { array: a0 },\n handle: 4,\n});\n$(o39, {\n structure: s4,\n memory: { array: a5 },\n const: true,\n});\n$(o40, {\n structure: s38,\n memory: { array: a0 },\n handle: 5,\n});\n$(o41, {\n structure: s40,\n memory: { array: a0 },\n handle: 6,\n});\n$(o42, {\n structure: s42,\n memory: { array: a0 },\n handle: 7,\n});\n$(o43, {\n structure: s33,\n memory: { array: a0 },\n handle: 8,\n});\n$(o44, {\n structure: s38,\n memory: { array: a0 },\n handle: 9,\n});\n$(o45, {\n structure: s42,\n memory: { array: a0 },\n handle: 10,\n});\n$(o46, {\n structure: s38,\n memory: { array: a0 },\n handle: 11,\n});\n$(o47, {\n structure: s42,\n memory: { array: a0 },\n handle: 12,\n});\n$(o48, {\n structure: s42,\n memory: { array: a0 },\n handle: 13,\n});\n$(o49, {\n structure: s42,\n memory: { array: a0 },\n handle: 14,\n});\n$(o50, {\n structure: s45,\n memory: { array: a0 },\n handle: 15,\n});\n$(o51, {\n structure: s42,\n memory: { array: a0 },\n handle: 16,\n});\n$(o52, {\n structure: s9,\n memory: { array: a0 },\n handle: 17,\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: 0x4ae79eaef47ad8ddn,\n name: \"AssetZig\",\n byteSize: 72,\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 ...m,\n type: 3,\n flags: 1,\n bitOffset: 544,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"id\",\n structure: s4,\n },\n ],\n template: o24\n },\n});\n$(s25, {\n ...s,\n type: 9,\n flags: 10,\n signature: 0xe0d907eca6c48c2bn,\n name: \"[_]AssetZig\",\n byteSize: 72,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 576,\n byteSize: 72,\n structure: s24,\n },\n ],\n },\n});\n$(s26, {\n ...s,\n type: 8,\n flags: 188,\n signature: 0x6e413be38a1c13can,\n name: \"[]const 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: 0x553f6f88d529422an,\n name: \"Arg(fn ([]const 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: 0x3bd0f1fed1ded14an,\n name: \"fn ([]const 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: 0x384247752a6c2fa8n,\n name: \"*const fn ([]const 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: 0xee84c3d23e38b13bn,\n name: \"Arg(fn (*const fn ([]const 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: 0x31ed60e02d201a60n,\n name: \"fn (*const fn ([]const 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: 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$(s33, {\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: s32,\n },\n ],\n template: o28\n },\n static: {\n members: [],\n template: o29\n },\n});\n$(s34, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0x139c4e15eb0a34d6n,\n name: \"*const fn (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: s33,\n },\n ],\n },\n});\n$(s35, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0xfaa14a525ee0f8d4n,\n name: \"Arg(fn (*const fn (u32) 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: s34,\n },\n ],\n },\n});\n$(s36, {\n ...s,\n type: 14,\n signature: 0x651c6f0337fe6099n,\n name: \"fn (*const fn (u32) void) void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n structure: s35,\n },\n ],\n template: o30\n },\n});\n$(s37, {\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$(s38, {\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: s37,\n },\n ],\n template: o31\n },\n});\n$(s39, {\n ...s,\n type: 12,\n flags: 10,\n signature: 0x9d8f5b87c05655fbn,\n name: \"Arg(fn (u32, [4]PointUV, u32) void)\",\n length: 3,\n byteSize: 72,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 576,\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 ...m,\n type: 3,\n flags: 1,\n bitOffset: 544,\n bitSize: 32,\n byteSize: 4,\n slot: 3,\n name: \"2\",\n structure: s4,\n },\n ],\n },\n});\n$(s40, {\n ...s,\n type: 14,\n signature: 0x92d326bf03506c95n,\n name: \"fn (u32, [4]PointUV, u32) void\",\n length: 3,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 576,\n byteSize: 72,\n structure: s39,\n },\n ],\n template: o32\n },\n});\n$(s41, {\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$(s42, {\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: s41,\n },\n ],\n template: o33\n },\n});\n$(s43, {\n ...s,\n flags: 1,\n signature: 0x6eddab4b13ff06c5n,\n name: \"bool\",\n byteSize: 1,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 1,\n bitOffset: 0,\n bitSize: 1,\n byteSize: 1,\n structure: s43,\n },\n ],\n },\n});\n$(s44, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0x85fe3287727e2e0en,\n name: \"Arg(fn ([]const AssetZig, bool) void)\",\n length: 2,\n byteSize: 12,\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 ...m,\n type: 1,\n flags: 1,\n bitOffset: 64,\n bitSize: 1,\n byteSize: 1,\n slot: 2,\n name: \"1\",\n structure: s43,\n },\n ],\n },\n});\n$(s45, {\n ...s,\n type: 14,\n signature: 0x0f521e207596cb59n,\n name: \"fn ([]const AssetZig, bool) void\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 96,\n byteSize: 12,\n structure: s44,\n },\n ],\n template: o34\n },\n});\n$(s46, {\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: \"connect_on_asset_selection_callback\",\n structure: s36,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 3,\n name: \"ASSET_ID_TRESHOLD\",\n structure: s4,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 4,\n name: \"init_state\",\n structure: s38,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 5,\n name: \"add_asset\",\n structure: s40,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 6,\n name: \"remove_asset\",\n structure: s42,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 7,\n name: \"on_update_pick\",\n structure: s33,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 8,\n name: \"on_pointer_down\",\n structure: s38,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 9,\n name: \"on_pointer_up\",\n structure: s42,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 10,\n name: \"on_pointer_move\",\n structure: s38,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 11,\n name: \"on_pointer_leave\",\n structure: s42,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 12,\n name: \"canvas_render\",\n structure: s42,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 13,\n name: \"picks_render\",\n structure: s42,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 14,\n name: \"reset_assets\",\n structure: s45,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 15,\n name: \"destroy_state\",\n structure: s42,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 16,\n name: \"import_icons\",\n structure: s9,\n },\n ],\n template: o35\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, s43, s44, s45, s46,\n];\nconst root = s46;\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(\"AGFzbQEAAAABmwEYYAF/AGADf39/AGACf38AYAV/f39/fwBgBH9/f38Bf2AGf39/f39/AX9gAn19AGAAAGACf38BfWACf38Bf2AEf39/fwBgAX8Bf2AAAX9gBH9/fn8AYAN/f38Bf2ACfX0BfWABfQF9YAZ/f399f30AYAV/f39/fwF/YAV/fn5+fgBgAnx/AXxgAn1/AX9gA3x8fAF8YAN8fH8BfALJAxYDZW52Bm1lbW9yeQIABQNlbnYZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQFwAG0DZW52CV9yZWFkU2xvdAAJA2Vudgpfd3JpdGVTbG90AAEDZW52EF9kZWZpbmVTdHJ1Y3R1cmUACwNlbnYJX2Nhc3RWaWV3AAQDZW52D19jcmVhdGVUZW1wbGF0ZQALA2Vudg9fYXR0YWNoVGVtcGxhdGUAAQNlbnYNX2VuZFN0cnVjdHVyZQAAA2VudhBfYmVnaW5EZWZpbml0aW9uAAwDZW52Dl9jYXB0dXJlU3RyaW5nAAkDZW52DV9pbnNlcnRTdHJpbmcAAQNlbnYOX2luc2VydEludGVnZXIACgNlbnYRX2luc2VydEJpZ0ludGVnZXIADQNlbnYPX2JlZ2luU3RydWN0dXJlAAsDZW52DV9pbnNlcnRPYmplY3QAAQNlbnYNX2F0dGFjaE1lbWJlcgABA2VudgxfY2FwdHVyZVZpZXcADgNlbnYNX2hhbmRsZUpzQ2FsbAAEA2Vudg1fZGlzcGxheVBhbmljAAIDZW52EF9hbGxvY2F0ZUpzVGh1bmsACQNlbnYMX2ZyZWVKc1RodW5rAAkDqwGpAQcMCQIADgAAAAAAAAAGAAEABwAABgcGBwcHAAEHAAIBCA8QCAsAAgoOARELAAAACQAJCgkACQAJCQkKAAkACgAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAIBAAACCQoCAgICAgICAgICAgICAgICAAkJAgIBAQEBAQEBAQEBAQEBAQEBAAoJBwkEBQUDAQ4SCQkHDAQFBQMTFBAVEhYXDxAGCAF/AUGAgBALB7gBCg9nZXRGYWN0b3J5VGh1bmsAFQppbml0aWFsaXplAKMBFWFsbG9jYXRlU2NyYXRjaE1lbW9yeQCkARFmcmVlU2NyYXRjaE1lbW9yeQCpAQhydW5UaHVuawCqARBydW5WYXJpYWRpY1RodW5rAKsBDWNyZWF0ZUpzVGh1bmsArAEOZGVzdHJveUpzVGh1bmsArQELZmx1c2hTdGRvdXQArgETZ2V0TW9kdWxlQXR0cmlidXRlcwCvAQgBFAmYAQEAQQELbBYaHB4hIyUnKCkqKywtLzAyQ0VGR0lLTE1OUFJ5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAVNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyMzQ3jAGNAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BogGwAbEBsgGzAaUBpgGnAagBCtXJA6kBDgBB2KEQQQBB9AP8CwALBABBAQvgGQEEfyMAQdAIayICJAACQAJAAkBBAEEdEAAiA0UNACACIAM2AgAgAkEAOwEEIAIhBAwBCyACQYAgNgIcIAJChYCAgCA3AhQgAkGSgBA2AhAgAkGBgAQ2AjAgAkKAgICAEDcDKCACQgA3AyAgAkKb2Nq/sp6tzSM3AwggAkE4aiACQQhqEBcgAi8BPCIDDQFBAEEdIAIoAjgiBBABAkACQCAEEAIiAw0AQaiFECEDDAELIAIgAzYCkAggAkEAOwGUCCACQZAIaiEDCyADLwEEIgMNASACQcgAahAYIAIvAUwiAw0BIAJB6ABqQgA3AgAgAkHwAGpCADcCACACQgA3AmAgAkECNgJcIAJCmICAgNAANwJUIAJB74AQNgJQIAIgAigCSDYCgAEgAkKAgICAEDcCeCAEIAJB0ABqQQEQGSIDQf//A3ENASACQcgIahAYIAIvAcwIIgMNAQJAQQJBAEEAIAIoAsgIEAMiAw0AQQ0hAwwCCwJAQQAQBCIFDQBBFSEDDAILIAVBACADEAEgAkGEAWoQGyACLwGIASIDDQEgAkGkAWpCADcCACACQawBakIANwIAIAJCADcCnAEgAkECNgKYASACQqCAgIDQADcCkAEgAkGlghA2AowBIAIgAigChAE2ArwBIAJCgYCAgBA3ArQBIAQgAkGMAWpBARAZIgNB//8DcQ0BIAJByAhqEBsgAi8BzAgiAw0BAkBBA0EAQQAgAigCyAgQAyIDDQBBDSEDDAILIAVBASADEAEgAkHAAWoQHSACLwHEASIDDQEgAkHgAWpCADcCACACQegBakIANwIAIAJCADcC2AEgAkECNgLUASACQqOAgIDQADcCzAEgAkGBghA2AsgBIAIgAigCwAE2AvgBIAJCgoCAgBA3AvABIAQgAkHIAWpBARAZIgNB//8DcQ0BIAJByAhqEB0gAi8BzAgiAw0BAkBBBEEAQQAgAigCyAgQAyIDDQBBDSEDDAILIAVBAiADEAEgAkH8AWoQHyACLwGAAiIDDQEgAkGcAmpCADcCACACQaQCakIANwIAIAJCADcClAIgAkECNgKQAiACQpGAgIDQADcCiAIgAkGGhRA2AoQCIAIgAigC/AE2ArQCIAJCg4CAgBA3AqwCIAQgAkGEAmpBARAZIgNB//8DcQ0BIAJByAhqEB8gAi8BzAgiAw0BAkBBsIUQQQRBASACKALICBADIgMNAEENIQMMAgsgBUEDIAMQASACQbgCahAgIAIvAbwCIgMNASACQdgCakIANwIAIAJB4AJqQgA3AgAgAkIANwLQAiACQQI2AswCIAJCioCAgNAANwLEAiACQaiDEDYCwAIgAiACKAK4AjYC8AIgAkKEgICAEDcC6AIgBCACQcACakEBEBkiA0H//wNxDQEgAkHICGoQICACLwHMCCIDDQECQEEFQQBBACACKALICBADIgMNAEENIQMMAgsgBUEEIAMQASACQfQCahAiIAIvAfgCIgMNASACQZQDakIANwIAIAJBnANqQgA3AgAgAkIANwKMAyACQQI2AogDIAJCiYCAgNAANwKAAyACQbqAEDYC/AIgAiACKAL0AjYCrAMgAkKFgICAEDcCpAMgBCACQfwCakEBEBkiA0H//wNxDQEgAkHICGoQIiACLwHMCCIDDQECQEEGQQBBACACKALICBADIgMNAEENIQMMAgsgBUEFIAMQASACQbADahAkIAIvAbQDIgMNASACQdADakIANwIAIAJB2ANqQgA3AgAgAkIANwLIAyACQQI2AsQDIAJCjICAgNAANwK8AyACQa2AEDYCuAMgAiACKAKwAzYC6AMgAkKGgICAEDcC4AMgBCACQbgDakEBEBkiA0H//wNxDQEgAkHICGoQJCACLwHMCCIDDQECQEEHQQBBACACKALICBADIgMNAEENIQMMAgsgBUEGIAMQASACQewDahAmIAIvAfADIgMNASACQYwEakIANwIAIAJBlARqQgA3AgAgAkIANwKEBCACQQI2AoAEIAJCjoCAgNAANwL4AyACQfKBEDYC9AMgAiACKALsAzYCpAQgAkKHgICAEDcCnAQgBCACQfQDakEBEBkiA0H//wNxDQEgAkHICGoQJiACLwHMCCIDDQECQEEIQQBBACACKALICBADIgMNAEENIQMMAgsgBUEHIAMQASACQagEahAgIAIvAawEIgMNASACQcgEakIANwIAIAJB0ARqQgA3AgAgAkIANwLABCACQQI2ArwEIAJCj4CAgNAANwK0BCACQdWBEDYCsAQgAiACKAKoBDYC4AQgAkKIgICAEDcC2AQgBCACQbAEakEBEBkiA0H//wNxDQEgAkHICGoQICACLwHMCCIDDQECQEEJQQBBACACKALICBADIgMNAEENIQMMAgsgBUEIIAMQASACQeQEahAkIAIvAegEIgMNASACQYQFakIANwIAIAJBjAVqQgA3AgAgAkIANwL8BCACQQI2AvgEIAJCjYCAgNAANwLwBCACQb6BEDYC7AQgAiACKALkBDYCnAUgAkKJgICAEDcClAUgBCACQewEakEBEBkiA0H//wNxDQEgAkHICGoQJCACLwHMCCIDDQECQEEKQQBBACACKALICBADIgMNAEENIQMMAgsgBUEJIAMQASACQaAFahAgIAIvAaQFIgMNASACQcAFakIANwIAIAJByAVqQgA3AgAgAkIANwK4BSACQQI2ArQFIAJCj4CAgNAANwKsBSACQfmCEDYCqAUgAiACKAKgBTYC2AUgAkKKgICAEDcC0AUgBCACQagFakEBEBkiA0H//wNxDQEgAkHICGoQICACLwHMCCIDDQECQEELQQBBACACKALICBADIgMNAEENIQMMAgsgBUEKIAMQASACQdwFahAkIAIvAeAFIgMNASACQfwFakIANwIAIAJBhAZqQgA3AgAgAkIANwL0BSACQQI2AvAFIAJCkICAgNAANwLoBSACQYmDEDYC5AUgAiACKALcBTYClAYgAkKLgICAEDcCjAYgBCACQeQFakEBEBkiA0H//wNxDQEgAkHICGoQJCACLwHMCCIDDQECQEEMQQBBACACKALICBADIgMNAEENIQMMAgsgBUELIAMQASACQZgGahAkIAIvAZwGIgMNASACQbgGakIANwIAIAJBwAZqQgA3AgAgAkIANwKwBiACQQI2AqwGIAJCjYCAgNAANwKkBiACQbCBEDYCoAYgAiACKAKYBjYC0AYgAkKMgICAEDcCyAYgBCACQaAGakEBEBkiA0H//wNxDQEgAkHICGoQJCACLwHMCCIDDQECQEENQQBBACACKALICBADIgMNAEENIQMMAgsgBUEMIAMQASACQdQGahAkIAIvAdgGIgMNASACQfQGakIANwIAIAJB/AZqQgA3AgAgAkIANwLsBiACQQI2AugGIAJCjICAgNAANwLgBiACQaOBEDYC3AYgAiACKALUBjYCjAcgAkKNgICAEDcChAcgBCACQdwGakEBEBkiA0H//wNxDQEgAkHICGoQJCACLwHMCCIDDQECQEEOQQBBACACKALICBADIgMNAEENIQMMAgsgBUENIAMQASACQZAHahAuIAIvAZQHIgMNASACQbAHakIANwIAIAJBuAdqQgA3AgAgAkIANwKoByACQQI2AqQHIAJCjICAgNAANwKcByACQdWAEDYCmAcgAiACKAKQBzYCyAcgAkKOgICAEDcCwAcgBCACQZgHakEBEBkiA0H//wNxDQEgAkHICGoQLiACLwHMCCIDDQECQEEPQQBBACACKALICBADIgMNAEENIQMMAgsgBUEOIAMQASACQcwHahAkIAIvAdAHIgMNASACQewHakIANwIAIAJB9AdqQgA3AgAgAkIANwLkByACQQI2AuAHIAJCjYCAgNAANwLYByACQZqDEDYC1AcgAiACKALMBzYChAggAkKPgICAEDcC/AcgBCACQdQHakEBEBkiA0H//wNxDQEgAkHICGoQJCACLwHMCCIDDQECQEEQQQBBACACKALICBADIgMNAEENIQMMAgsgBUEPIAMQASACQYgIahAxIAIvAYwIIgMNASACQagIakIANwIAIAJBsAhqQgA3AgAgAkIANwKgCCACQQI2ApwIIAJCjICAgNAANwKUCCACQeKAEDYCkAggAiACKAKICDYCwAggAkKQgICAEDcCuAggBCACQZAIakEBEBkiA0H//wNxDQEgAkHICGoQMSACLwHMCCIDDQECQEERQQBBACACKALICBADIgMNAEENIQMMAgsgBUEQIAMQASAEIAVBARAFIAQQBiACIAQ2AkAgAkEAOwFEIAJBwABqIQQLQQAhAyAELwEEIgRFDQAgBCEDCyACQdAIaiQAIAMLqgMCBX8BfiMAQRBrIgIkABAHIQMC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nIUQNgL0ASAEIAFB9AFqQQAQGSICQf//A3ENAQJAAkAgBBACIgINAEGohRAhAgwBCyABIAI2AugCIAFBADsB7AIgAUHoAmohAgsgAi8BBCICDQEgBBAGCyABIAQ2AnwgAUIANwJ0IAFChICAgBA3AmwgAUKggICAEDcCZCABQgA3AlwgAUIFNwJUIAFCADcCTCADIAFBzABqQQAQGSICQf//A3ENAAJAQRVBAEEAEA8iAg0AIABBDDsBBAwECyACEAQiAg0BQRUhAgsgACACOwEEDAILIAMgAkEAEAUCQAJAIAMQAiICDQBBqIUQIQIMAQsgASACNgLoAiABQQA7AewCIAFB6AJqIQILAkAgAi8BBCICRQ0AIAAgAjsBBAwCCyADEAYgASADNgJAIAFBADsBRCABQcAAaiECCyAAIAIpAwA3AgALIAFBoANqJAALCwBBACAANgLgoRALjAMBA38jAEGQAWsiASQAAkACQAJAQQBBKhAAIgJFDQAgASACNgIIIAFBADsBDCABQQhqIQIMAQsgAUKAgICAEDcDICABQgA3AxggAUGEgAQ2AjggAUKEgICAEDcDMCABQgA3AyggAUKjo6CNw7bjrOgANwMQIAFBwABqIAFBEGoQFwJAIAEvAUQiAkUNACAAIAI7AQQMAgtBAEEqIAEoAkAiAhABIAFB0ABqEB8CQAJAIAEvAVQiAw0AIAEgASgCUDYCiAEgAUIANwKAASABQoSAgIAQNwJ4IAFCoICAgBA3AnAgAUKAgICAEDcCaCABQgM3AmAgAUIANwJYIAIgAUHYAGpBABAZIgNB//8DcUUNAQsgACADOwEEDAILAkACQCACEAIiAw0AQaiFECEDDAELIAEgAzYCWCABQQA7AVwgAUHYAGohAwsCQCADLwEEIgNFDQAgACADOwEEDAILIAIQBiABIAI2AkggAUEAOwFMIAFByABqIQILIAAgAikDADcCAAsgAUGQAWokAAvRBwEEfyMAQfACayIBJAACQAJAAkBBAEHQABAAIgJFDQAgASACNgIAIAFBADsBBCABIQIMAQsgAUIONwMYIAFCADcDECABQYCABDYCMCABQoCAgIAQNwMoIAFCgoCAgBA3AyAgAUKgttOk4K6w3eMANwMIIAFBOGogAUEIahAXAkAgAS8BPCICRQ0AIAAgAjsBBAwCC0EAQdAA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AyABQcwAakEAEBkiAkH//wNxDQACQEEXQQBBABAPIgINACAAQQw7AQQMBAsgAhAEIgINAUEVIQILIAAgAjsBBAwCCyADIAJBABAFAkACQCADEAIiAg0AQaiFECECDAELIAEgAjYC+AIgAUEAOwH8AiABQfgCaiECCwJAIAIvAQQiAkUNACAAIAI7AQQMAgsgAxAGIAEgAzYCQCABQQA7AUQgAUHAAGohAgsgACACKQMANwIACyABQbADaiQAC/EJAwJ/AX4JfyMAQZABayIDJAACQCAADQBBAEEAKAK8oRAiAEEBajYCvKEQCyADQcgAakE4aiABQThqKQIANwMAIANByABqQTBqIAFBMGopAgA3AwAgA0HIAGpBKGogAUEoaikCADcDACADQcgAakEgaiABQSBqKQIANwMAIANByABqQRhqIAFBGGopAgA3AwAgA0HIAGpBEGogAUEQaikCADcDACADQcgAakEIaiABQQhqKQIANwMAIAMgASkCADcDSAJAAkACQAJAQQAoApihEA0AQQEhAQJAQQAoApChECIERQ0AIARBfGooAgCtQtAAfiIFIAVC5ACCfULkAHxC0ACApyEBC0IBQSAgAWdrrUL//wODhqcQOEH//wNxDQELIANBGGogAK1CgYCAgBB+IgVC29HQhZra34FnhUIAIAVCrJri06PS8PofhUIAELQBIANBCGogA0EYakEIaikDAELb0dCFmtrfgWeFQgAgAykDGEKryPXFx6yHu6B/hUIAELQBIANBCGpBCGopAwAgAykDCIUhBQJAAkBBACgCkKEQIgYNACAFpyEEQQAhB0F/IQgMAQsgBkF8aigCACIHQX9qIgggBadxIQQLIAVCOYinIQkCQAJAIAYgBGoiCi0AACIBRQ0AIAdFDQAgB0F/aiELIAZBeGohDCAGQXxqIQ0DQCALIQ4CQAJAAkAgAcBBf0oNACAJIAFB/wBxRw0AIAwoAgAgBEECdGoiCygCACAARg0BDAILIAcgDSgCAEcNASAEIAcgAUH/AXFBAUYbIQcMAQsgA0EBOgCMASAGQXRqKAIAIARByABsaiEBIANBjAFqIQQMAwsgBiAEQQFqIAhxIgRqIgotAAAiAUUNASAOQX9qIQsgDg0ACwsgBkF8aigCACEBQQBBACgCmKEQQX9qNgKYoRAgBiAHaiAKIAcgAUki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QwAAAD+UED4gBkEmaiEGIAdBAWoiB0ENRw0ACyAAIAo4AuAlIAAgCzgC3CUgACAMOALYJSAAIA04AtQlIAAgDjgC0CUgACAPOALMJSAAIBA4AsglIAAgETgCxCUgACASOALAJSAAIBM4ArwlIAAgFDgCuCUgACAVOAK0JSAAIBY4ArAlIABBnAFqIABBwAZqQdwHEDwaIABBsAFqIABBsCVqQSwQPBogACgCtAEhAiAAKAKwASEECwJAIAAoAqABIgFFDQAgACgCnAEgAUEAKALYoRAoAgQRAgALAkAgAkUNACAEIAJBAEEAKALYoRAoAggRAQALIABBkCdqJAAL+AgEBX8BfgJ/C30jAEGAD2siACQAAkBBACgCkKEQIgFFDQBBACECA0BBACgClKEQRQ0BIAIgAUF8aigCACIDRg0BIAJByABsIQQCQANAIAEgAmosAABBAEgNASAEQcgAaiEEIAMgAkEBaiICRw0ADAMLCyABQXRqKAIAIARqIgRBBGoiASkCACEFIAAgBEEMaiIDKQIANwIcIAAgBTcCDCAAQoCAgICAgIDAPzcCFCAAIAQoAgCzOAIkIARBFGopAgAhBSAAIARBHGopAgA3AjggACAFNwIoIABCgICAgICAgMA/NwIwIAAgBCgCALM4AkAgBEEkaiIGKQIAIQUgACAEQSxqIgcpAgA3AlQgACAFNwJEIABCgICAgICAgMA/NwJMIAAgBCgCALM4AlwgBikCACEFIAAgBykCADcCcCAAIAU3AmAgAEKAgICAgICAwD83AmggACAEKAIAszgCeCAEQTRqKQIAIQUgACAEQTxqKQIANwKMASAAIAU3AnwgAEKAgICAgICAwD83AoQBIAAgBCgCALM4ApQBIAEpAgAhBSAAIAMpAgA3AqgBIAAgBTcCmAEgAEKAgICAgICAwD83AqABIAAgBCgCALM4ArABIABBDGpBKiAEQcQAaigCAEEAKALYoRAoAgwRAQAgAkEBaiECQQAoApChECIBDQALC0EAIQEgAEG0AWpBACgCqKEQEDoCQCAALQD8AUUNACAAQYACaiAAQbQBakHIAPwKAABB1IUQIQQDQCAAQeAOakEIaiAEQQhqKAIANgIAIAAgBCkCADcD4A4gAEHwDmogAEGAAmogAEHgDmoQPSAAKALgDiEDIAAqAvwOIgggACoC9A4iCZMgACoC+A4iCiAAKgLwDiILkxA1IQwgAEHIAmogAWoiAkH0AGogA7MiDTgCACACQewAakKAgICAgICAwD83AgAgAkHgAGogDTgCACACQdgAakKAgICAgICAwD83AgAgAkHMAGogDTgCACACQcQAakKAgICAgICAwD83AgAgAkE4aiANOAIAIAJBMGpCgICAgICAgMA/NwIAIAJBJGogDTgCACACQRxqQoCAgICAgIDAPzcCACACQRBqIA04AgAgAkEIakKAgICAgICAwD83AgAgDBC8ASEOIAJB6ABqQwAAoEFDAAAgQSADQQlGGyINIAxD2w/JP5IiDxC8AZQiECAIIA0gDpQiDpIiCJIiETgCACAMELYBIRIgAkHkAGogDSAPELYBlCIMIAogDSASlCINkiIKkiIPOAIAIAJB1ABqIAkgDpMiCSAQkyIOOAIAIAJB0ABqIAsgDZMiDSAMkyILOAIAIAJBwABqIAggEJM4AgAgAkE8aiAKIAyTOAIAIAJBLGogETgCACACQShqIA84AgAgAkEYaiAJIBCSOAIAIAJBFGogDSAMkjgCACACQQRqIA44AgAgAiALOAIAIARBDGohBCABQfgAaiIBQZgMRw0ACyAAQcgCakGGA0EAKALYoRAoAhARAgALIABBgA9qJAAL1AcBBH8jAEHwAmsiASQAAkACQAJAQQBB2QAQACICRQ0AIAEgAjYCACABQQA7AQQgASECDAELIAFCDjcDGCABQgA3AxAgAUGAgAQ2AjAgAUKAgICAEDcDKCABQoKAgIAQNwMgIAFC2ZbbrIfEh6kPNwMIIAFBOGogAUEIahAXAkAgAS8BPCICRQ0AIAAgAjsBBAwCC0EAQdkAIAEoAjgiAxABAkACQAJAQQBB2gAQACIEDQAgAUKMgICA4AE3A5ABIAFCADcDiAEgAUGEgAQ2AqgBIAFCjICAgBA3A6ABIAFCgoCAgBA3A5gBIAFCjtz4k/fQjP+FfzcDgAEgAUGwAWogAUGAAWoQFyABLwG0ASICDQFBAEHaACABKAKwASIEEAEgAUG4AWoQQCABLwG8ASICDQEgASABKAK4ATYC8AEgAUKAgICAEDcC6AEgAUKAgICAEDcC4AEgAUKAgICAEDcC2AEgAULAgICAEDcC0AEgAUEBNgLMASABQgY3AsQBIAFB64EQNgLAASAEIAFBwAFqQQAQGSICQf//A3ENASABQfQBahBEIAEvAfgBIgINASABIAEoAvQBNgKsAiABQoGAgIAQNwKkAiABQoiAgIAQNwKcAiABQsCAgIAQNwKUAiABQoCAgIAQNwKMAiABQQE2AogCIAFCgYCAgNAANwKAAiABQZyFEDYC/AEgBCABQfwBakEAEBkiAkH//wNxDQEgAUGwAmoQTyABLwG0AiICDQEgASABKAKwAjYC6AIgAUKCgICAEDcC4AIgAUKBgICAEDcC2AIgAUKBgICAEDcC0AIgAULAgICAEDcCyAIgAUEBNgLEAiABQoGAgIAQNwK8AiABQZqFEDYCuAIgBCABQbgCakEAEBkiAkH//wNxDQECQAJAIAQQAiICDQBBqIUQIQIMAQsgASACNgK4AiABQQA7AbwCIAFBuAJqIQILIAIvAQQiAg0BIAQQBgsgASAENgJ8IAFCADcCdCABQoyAgIAQNwJsIAFC4ICAgBA3AmQgAUIANwJcIAFCBTcCVCABQgA3AkwgAyABQcwAakEAEBkiAkH//wNxDQACQEEbQQBBABAPIgINACAAQQw7AQQMBAsgAhAEIgINAUEVIQILIAAgAjsBBAwCCyADIAJBABAFAkACQCADEAIiAg0AQaiFECECDAELIAEgAjYCuAIgAUEAOwG8AiABQbgCaiECCwJAIAIvAQQiAkUNACAAIAI7AQQMAgsgAxAGIAEgAzYCQCABQQA7AUQgAUHAAGohAgsgACACKQMANwIACyABQfACaiQAC4gEAwR/AX4FfyMAQSBrIgMkAEEAKALcoRAhBEEAQQA2AtyhEAJAQQAoApChECIFRQ0AAkAgBUF8aigCAEHNAGxBD2pBfHEiBkUNAEEAKQKcoRAiB6cgBUF0aiAGQQJBACAHQiCIpygCDBEDAAtBAEEANgKQoRALQQBCADcClKEQAkACQCABRQ0AA0AgAEHEAGooAgAgACAAQcAAaigCABAjIABByABqIQAgAUF/aiIBDQALQQAhAEEAKAKUoRBFDQBBACgCkKEQIQggA0EQakEAKAKooRAiCa1CgYCAgBB+IgdC29HQhZra34FnhUIAIAdCrJri06PS8PofhUIAELQBIAMgA0EQakEIaikDAELb0dCFmtrfgWeFQgAgAykDEEKryPXFx6yHu6B/hUIAELQBIANBCGopAwAgAykD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dQuACwEEfyMAQcACayIBJAACQAJAAkBBAEE3EAAiAkUNACABIAI2AgAgAUEAOwEEIAEhAgwBCyABQQA2AhwgAUKHgICAIDcCFCABQf6EEDYCECABQYSABDYCMCABQpCAgIAQNwMoIAFCADcDICABQoL6nI3q+PC7nX83AwggAUE4aiABQQhqEBcCQCABLwE8IgJFDQAgACACOwEEDAILQQBBNyABKAI4IgMQASABQcwAahBIAkACQCABLwFQIgINACABIAEoAkw2AoQBIAFCgICAgBA3AnwgAUKEgICAEDcCdCABQqCAgIAQNwJsIAFCgICAgBA3AmQgAUEBNgJgIAFCgYCAgMAANwJYIAFBloAQNgJUIAMgAUHUAGpBABAZIgJB//8DcQ0AIAFBiAFqEEggAS8BjAEiAg0AIAEgASgCiAE2AsABIAFCgYCAgBA3ArgBIAFChICAgBA3ArABIAFCoICAgBA3AqgBIAFCoICAgBA3AqABIAFBATYCnAEgAUKBgICAwAA3ApQBIAFBkIAQNgKQASADIAFBkAFqQQAQGSICQf//A3ENACABQcQBahBIIAEvAcgBIgINACABIAEoAsQBNgL8ASABQoKAgIAQNwL0ASABQoSAgIAQNwLsASABQqCAgIAQNwLkASABQsCAgIAQNwLcASABQQE2AtgBIAFCgYCAgMAANwLQASABQZqAEDYCzAEgAyABQcwBakEAEBkiAkH//wNxDQAgAUGAAmoQSCABLwGEAiICDQAgASABKAKAAjYCuAIgAUKDgICAEDcCsAIgAUKEgICAEDcCqAIgAUKggICAEDcCoAIgAULggICAEDcCmAIgAUEBNgKUAiABQoGAgIDAADcCjAIgAUGYgBA2AogCIAMgAUGIAmpBABAZIgJB//8DcQ0AAkBBxIgQQRBBARAPIgINACAAQQw7AQQMBAsgAhAEIgINAUEVIQILIAAgAjsBBAwCCyADIAJBABAFAkACQCADEAIiAg0AQaiFECECDAELIAEgAjYCiAIgAUEAOwGMAiABQYgCaiECCwJAIAIvAQQiAkUNACAAIAI7AQQMAgsgAUGIAWoQdgJAAkAgAS8BjAEiAg0AIAFBqAFqQgA3AgAgAUGwAWpCADcCACABQgA3AqABIAFBEjYCnAEgAUKDgICA0AA3ApQBIAFBkIQQNgKQASABIAEoAogBNgLAASABQoCAgIAQNwK4ASADIAFBkAFqQQEQGSICQf//A3ENACABQdQAahB2IAEvAVgiAg0AAkBBzwBBAEEAIAEoAlQQAyICRQ0AAkBBABAEIgQNACAAQRU7AQQMBQsgBEEAIAIQASABQcQBahB3IAEvAcgBIgINASABQeQBakIANwIAIAFB7AFqQgA3AgAgAUIANwLcASABQRI2AtgBIAFCiICAgNAANwLQASABQcyBEDYCzAEgASABKALEATYC/AEgAUKBgICAEDcC9AEgAyABQcwBakEBEBkiAkH//wNxDQEgAUHUAGoQdyABLwFYIgINAUHQAEEAQQAgASgCVBADIgJFDQAgBEEBIAIQASABQYACahB3IAEvAYQCIgINASABQaACakIANwIAIAFBqAJqQgA3AgAgAUIANwKYAiABQRI2ApQCIAFCiICAgNAANwKMAiABQYeEEDYCiAIgASABKAKAAjYCuAIgAUKCgICAEDcCsAIgAyABQYgCakEBEBkiAkH//wNxDQEgAUHUAGoQdyABLwFYIgINAUHRAEEAQQAgASgCVBADIgINAgtBDSECCyAAIAI7AQQMAgsgBEECIAIQASADIARBARAFIAMQBiABIAM2AkAgAUEAOwFEIAFBwABqIQILIAAgAikDADcCAAsgAUHAAmokAAuAAQEBfyMAQRBrIgIkACACIAA2AgRBACEAAkBBAC0AvKMQDQAgAkF/NgIIIAIgAkEIajYCDCACQQhqIQALAkACQAJAAkAgASACQQRqQQQgABAQQX9qDgMCAAEDC0HVhBBBIhB4AAtBuoQQQRoQeAALQZ+EEEEaEHgACyACQRBqJAALhAEBAX8jAEEQayIDJAAgAyABNgIEIAMgADYCAEEAIQECQEEALQC8oxANACADQX82AgggAyADQQhqNgIMIANBCGohAQsCQAJAAkACQCACIANBCCABEBBBf2oOAwIAAQMLQdWEEEEiEHgAC0G6hBBBGhB4AAtBn4QQQRoQeAALIANBEGokAAvYBwEEfyMAQfACayIBJAACQAJAAkBBAEE5EAAiAkUNACABIAI2AgAgAUEAOwEEIAEhAgwBCyABQg43AxggAUIANwMQIAFBgIAENgIwIAFCgICAgBA3AyggAUKCgICAEDcDICABQunBgbKIw+CHu383AwggAUE4aiABQQhqEBcCQCABLwE8IgJFDQAgACACOwEEDAILQQBBOSABKAI4IgMQAQJAAkACQEEAQT4QACIEDQAgAUKMgICAoAE3A5ABIAFCADcDiAEgAUGEgAQ2AqgBIAFCqICAgBA3A6ABIAFCgoCAgBA3A5gBIAFC1MueirbrwOtRNwOAASABQbABaiABQYABahAXIAEvAbQBIgINAUEAQT4gASgCsAEiBBABIAFBuAFqEIsBIAEvAbwBIgINASABIAEoArgBNgLwASABQoCAgIAQNwLoASABQoiAgIAQNwLgASABQsCAgIAQNwLYASABQoCAgIAQNwLQASABQQE2AswBIAFChoCAgNAANwLEASABQeuBEDYCwAEgBCABQcABakEAEBkiAkH//wNxDQEgAUH0AWoQcyABLwH4ASICDQEgASABKAL0ATYCrAIgAUKBgICAEDcCpAIgAUKQgICAEDcCnAIgAUKAgYCAEDcClAIgAULAgICAEDcCjAIgAUEBNgKIAiABQoGAgIDQADcCgAIgAUGchRA2AvwBIAQgAUH8AWpBABAZIgJB//8DcQ0BIAFBsAJqEHMgAS8BtAIiAg0BIAEgASgCsAI2AugCIAFCgoCAgBA3AuACIAFCkICAgBA3AtgCIAFCgIGAgBA3AtACIAFCwIGAgBA3AsgCIAFBATYCxAIgAUKBgICA0AA3ArwCIAFBmoUQNgK4AiAEIAFBuAJqQQAQGSICQf//A3ENAQJAAkAgBBACIgINAEGohRAhAgwBCyABIAI2ArgCIAFBADsBvAIgAUG4AmohAgsgAi8BBCICDQEgBBAGCyABIAQ2AnwgAUIANwJ0IAFCqICAgBA3AmwgAULAgoCAEDcCZCABQgA3AlwgAUIFNwJUIAFCADcCTCADIAFBzABqQQAQGSICQf//A3ENAAJAQdIAQQBBABAPIgINACAAQQw7AQQMBAsgAhAEIgINAUEVIQILIAAgAjsBBAwCCyADIAJBABAFAkACQCADEAIiAg0AQaiFECECDAELIAEgAjYCuAIgAUEAOwG8AiABQbgCaiECCwJAIAIvAQQiAkUNACAAIAI7AQQMAgsgAxAGIAEgAzYCQCABQQA7AUQgAUHAAGohAgsgACACKQMANwIACyABQfACaiQAC9oHAQR/IwBB8AJrIgEkAAJAAkACQEEAQcAAEAAiAkUNACABIAI2AgAgAUEAOwEEIAEhAgwBCyABQg43AxggAUIANwMQIAFBgIAENgIwIAFCgICAgBA3AyggAUKCgICAEDcDICABQrre2/Gh07u4MTcDCCABQThqIAFBCGoQFwJAIAEvATwiAkUNACAAIAI7AQQMAgtBAEHAACABKAI4IgMQAQJAAkACQEEAQcEAEAAiBA0AIAFCjICAgKABNwOQASABQgA3A4gBIAFBhIAENgKoASABQqSAgIAQNwOgASABQoKAgIAQNwOYASABQsLVoLru0eXRDzcDgAEgAUGwAWogAUGAAWoQFyABLwG0ASICDQFBAEHBACABKAKwASIEEAEgAUG4AWoQSCABLwG8ASICDQEgASABKAK4ATYC8AEgAUKAgICAEDcC6AEgAUKEgICAEDcC4AEgAUKggICAEDcC2AEgAUKAgICAEDcC0AEgAUEBNgLMASABQoaAgIDAADcCxAEgAUHrgRA2AsABIAQgAUHAAWpBABAZIgJB//8DcQ0BIAFB9AFqEHMgAS8B+AEiAg0BIAEgASgC9AE2AqwCIAFCgYCAgBA3AqQCIAFCkICAgBA3ApwCIAFCgIGAgBA3ApQCIAFCoICAgBA3AowCIAFBATYCiAIgAUKBgICA0AA3AoACIAFBnIUQNgL8ASAEIAFB/AFqQQAQGSICQf//A3ENASABQbACahBzIAEvAbQCIgINASABIAEoArACNgLoAiABQoKAgIAQNwLgAiABQpCAgIAQNwLYAiABQoCBgIAQNwLQAiABQqCBgIAQNwLIAiABQQE2AsQCIAFCgYCAgNAANwK8AiABQZqFEDYCuAIgBCABQbgCakEAEBkiAkH//wNxDQECQAJAIAQQAiICDQBBqIUQIQIMAQsgASACNgK4AiABQQA7AbwCIAFBuAJqIQILIAIvAQQiAg0BIAQQBgsgASAENgJ8IAFCADcCdCABQqSAgIAQNwJsIAFCoIKAgBA3AmQgAUIANwJcIAFCBTcCVCABQgA3AkwgAyABQcwAakEAEBkiAkH//wNxDQACQEHTAEEAQQAQDyICDQAgAEEMOwEEDAQLIAIQBCICDQFBFSECCyAAIAI7AQQMAgsgAyACQQAQBQJAAkAgAxACIgINAEGohRAhAgwBCyABIAI2ArgCIAFBADsBvAIgAUG4AmohAgsCQCACLwEEIgJFDQAgACACOwEEDAILIAMQBiABIAM2AkAgAUEAOwFEIAFBwABqIQILIAAgAikDADcCAAsgAUHwAmokAAsKACAAIAEQjgEACxgAIAEoAgAgASgCBCABKAIIIAARAQBBAAubBgECfyMAQRBrIgQkAAJAAkACQCACDQACQEEAKALAoxANAEHAoxAhAkEAIQUMAgsCQEEAKALEoxANAEHEoxAhAkEBIQUMAgsCQEEAKALIoxANAEHIoxAhAkECIQUMAgsCQEEAKALMoxANAEHMoxAhAkEDIQUMAgsCQEEAKALQoxANAEHQoxAhAkEEIQUMAgsCQEEAKALUoxANAEHUoxAhAkEFIQUMAgsCQEEAKALYoxANAEHYoxAhAkEGIQUMAgsCQEEAKALcoxANAEHcoxAhAkEHIQUMAgsCQEEAKALgoxANAEHgoxAhAkEIIQUMAgsCQEEAKALkoxANAEHkoxAhAkEJIQUMAgsCQEEAKALooxANAEHooxAhAkEKIQUMAgsCQEEAKALsoxANAEHsoxAhAkELIQUMAgsCQEEAKALwoxANAEHwoxAhAkEMIQUMAgsCQEEAKAL0oxANAEH0oxAhAkENIQUMAgsCQEEAKAL4oxANAEH4oxAhAkEOIQUMAgsCQEEAKAL8oxBFDQBBnIoQIQMMAwtB/KMQIQJBDyEFDAELQQAhAgJAIANB1ABGDQACQCADQdUARw0AQQEhAgwBCwJAIANB1gBHDQBBAiECDAELAkAgA0HXAEcNAEEDIQIMAQsCQCADQdgARw0AQQQhAgwBCwJAIANB2QBHDQBBBSECDAELAkAgA0HaAEcNAEEGIQIMAQsCQCADQdsARw0AQQchAgwBCwJAIANB3ABHDQBBCCECDAELAkAgA0HdAEcNAEEJIQIMAQsCQCADQd4ARw0AQQohAgwBCwJAIANB3wBHDQBBCyECDAELAkAgA0HgAEcNAEEMIQIMAQsCQCADQeEARw0AQQ0hAgwBCwJAIANB4gBHDQBBDiECDAELAkAgA0HjAEYNAEGkihAhAwwDC0EPIQILIAJBAnRBwKMQaiIDKAIAIQIgA0EANgIAIARBADsBDCAEIAI2AgggBEEIaiEDDAELIAIgAzYCACAEQQA7AQQgBCAFQQJ0QdyJEGooAgA2AgAgBCEDCyAAIAMpAgA3AgAgBEEQaiQACw8AIAAgAUEAKAL8ohAQdQsPACAAIAFBACgCgKMQEHULDwAgACABQQAoAoSjEBB1Cw8AIAAgAUEAKAKIoxAQdQsPACAAIAFBACgCjKMQEHULDwAgACABQQAoApCjEBB1Cw8AIAAgAUEAKAKUoxAQdQsPACAAIAFBACgCmKMQEHULDwAgACABQQAoApyjEBB1Cw8AIAAgAUEAKAKgoxAQdQsPACAAIAFBACgCpKMQEHULDwAgACABQQAoAqijEBB1Cw8AIAAgAUEAKAKsoxAQdQsPACAAIAFBACgCsKMQEHULDwAgACABQQAoArSjEBB1Cw8AIAAgAUEAKAK4oxAQdQuvBgEEfyMAQdABayIBJAACQAJAAkBBAEE6EAAiAkUNACABIAI2AgggAUEAOwEMIAFBCGohAgwBCyABQQA2AiQgAUKFgICAIDcCHCABQaeAEDYCGCABQYSABDYCOCABQoiAgIAQNwMwIAFCADcDKCABQo3N3ebqxrSMPDcDECABQcAAaiABQRBqEBcCQCABLwFEIgJFDQAgACACOwEEDAILQQBBOiABKAJAIgIQASABQdQAahBIAkACQCABLwFYIgMNACABIAEoAlQ2AowBIAFCgICAgBA3AoQBIAFChICAgBA3AnwgAUKggICAEDcCdCABQoCAgIAQNwJsIAFBATYCaCABQoGAgIDAADcCYCABQZaAEDYCXCACIAFB3ABqQQAQGSIDQf//A3ENACABQZABahBIIAEvAZQBIgMNACABIAEoApABNgLIASABQoGAgIAQNwLAASABQoSAgIAQNwK4ASABQqCAgIAQNwKwASABQqCAgIAQNwKoASABQQE2AqQBIAFCgYCAgMAANwKcASABQZCAEDYCmAEgAiABQZgBakEAEBkiA0H//wNxDQACQEGsihBBCEEBEA8iAw0AIABBDDsBBAwECyADEAQiAw0BQRUhAwsgACADOwEEDAILIAIgA0EAEAUCQAJAIAIQAiIDDQBBqIUQIQMMAQsgASADNgKYASABQQA7AZwBIAFBmAFqIQMLAkAgAy8BBCIDRQ0AIAAgAzsBBAwCCyABQZABahCgAQJAAkAgAS8BlAEiAw0AIAFBsAFqQgA3AgAgAUG4AWpCADcCACABQgA3AqgBIAFBEjYCpAEgAUKDgICA0AA3ApwBIAFBkIQQNgKYASABIAEoApABNgLIASABQoCAgIAQNwLAASACIAFBmAFqQQEQGSIDQf//A3ENACABQdwAahCgASABLwFgIgMNAAJAQc8AQQBBACABKAJcEAMiBA0AIABBDTsBBAwEC0EAEAQiAw0BQRUhAwsgACADOwEEDAILIANBACAEEAEgAiADQQEQBSACEAYgASACNgJIIAFBADsBTCABQcgAaiECCyAAIAIpAwA3AgALIAFB0AFqJAALawEBfyMAQTBrIgIkACACQRBqIAFBEGopAgA3AwAgAkEgaiABQSBqKQIANwMAIAIgASkCCDcDCCACIAEpAhg3AxggAkEoaiACQQhqIAJBCGpBEGogABEBACABIAIpAyg3AgAgAkEwaiQAQQALWwEBfyMAQSBrIgIkACACQQhqIAFBDGopAgA3AwAgAkEYaiABQRxqKQIANwMAIAIgASkCBDcDACACIAEpAhQ3AxAgASACIAJBEGogABEIADgCACACQSBqJABBAAsKACAAIAEQjwEACwkAIAAgARARAAsSACAAIAEgAkEAKALAoxAQoQELEgAgACABIAJBACgCxKMQEKEBCxIAIAAgASACQQAoAsijEBChAQsSACAAIAEgAkEAKALMoxAQoQELEgAgACABIAJBACgC0KMQEKEBCxIAIAAgASACQQAoAtSjEBChAQsSACAAIAEgAkEAKALYoxAQoQELEgAgACABIAJBACgC3KMQEKEBCxIAIAAgASACQQAoAuCjEBChAQsSACAAIAEgAkEAKALkoxAQoQELEgAgACABIAJBACgC6KMQEKEBCxIAIAAgASACQQAoAuyjEBChAQsSACAAIAEgAkEAKALwoxAQoQELEgAgACABIAJBACgC9KMQEKEBCxIAIAAgASACQQAoAvijEBChAQsSACAAIAEgAkEAKAL8oxAQoQEL2gcBBH8jAEHwAmsiASQAAkACQAJAQQBBPBAAIgJFDQAgASACNgIAIAFBADsBBCABIQIMAQsgAUIONwMYIAFCADcDECABQYCABDYCMCABQoCAgIAQNwMoIAFCgoCAgBA3AyAgAULTqrHTx+u9mlY3AwggAUE4aiABQQhqEBcCQCABLwE8IgJFDQAgACACOwEEDAILQQBBPCABKAI4IgMQAQJAAkACQEEAQT0QACIEDQAgAUKMgICAoAE3A5ABIAFCADcDiAEgAUGEgAQ2AqgBIAFCmICAgBA3A6AB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QQBBACAEQiCIpygCABEEACEFQQBBAToApKQQQQBBgIAENgKgpBBBACAFNgKcpBBBACAENwOQpBBBAEEBOgCIpBBBAEHAihA2AoSkEEEAQZCkEDYCgKQQQQBBADYCmKQQC0EAKQOApBAiBKcgACABIAJBASACQQFLG2hBACAEQiCIpygCDBEDACADQRBqJAALGgAgASACQarVqtV6IAIbIAARCQBB//8DcUULJwAgASACQarVqtV6IAIbIANBqtWq1XogAhsgBCAAEQQAQf//A3FFC84EAgh/AX4jAEEQayICJABBACEDQQAtALyjECEEIAJBAEEAIAEgABEKAAJAAkACQCACLwEEDQAgAigCACEDDAELIARBAXFFDQEgACABEBIhAwtBAC0AvKMQRQ0AIANFDQACQAJAAkACQEEAKALIoRAiBUEAKALEoRAiBksNACAFIQADQEF/IABBAXYgAGpBCGoiBCAEIABJGyIAIAZNDQALQQAhBEEAKALAoRAhByAFDQFBACEGDAILQQAoAsChECEEDAILQQAoAtChECEGQQAoAsyhECEIIAIgAEH/////AUs6AAgCQCAAQYCAgIACSQ0AQQAhBEEAIQYMAQtBACEEAkAgCCAHIAVBA3RBAiAAQQN0IglBACAGKAIIEQUAIgYNAEEAIQYMAQsgBkGq1arVeiAJGyEEIABB/////wFxQQAgCRshBgsCQCAERQ0AQQAgBDYCwKEQQQAgBjYCyKEQDAELQQApAsyhECEKIAIgAEH/////AUs6AAwgAEGAgICAAk8NAQJAAkAgAEEDdCIEDQBBfCEEDAELIAqnIARBAkEAIApCIIinKAIAEQQAIgRFDQILAkBBACgCxKEQIgZFDQAgBEEAKALAoRAgBkEDdPwKAAALAkAgBUEDdCIGRQ0AQQApAsyhECIKpyAHQarVqtV6IAUbIAZBAkEAIApCIIinKAIMEQMAC0EAIAA2AsihEEEAIAQ2AsChEAtBAEEAKALEoRAiAEEBajYCxKEQIAQgAEEDdGogA61CIIYgAa2ENwIACyACQRBqJAAgAwvqAQIFfwF+IwBBEGsiAiQAQQAhA0EALQC8oxAhBCACQQhqQQBBASABIAARCgACQAJAAkAgAi8BDA0AIAIoAgghAwwBCyAEQQFxRQ0BIAAgARATIQMLQQAtALyjEEUNACADRQ0AQQAhBEEAKALEoRAiBUUNAEEAKALAoRAiBiEAA0ACQCAAQQRqKAIAIAFHDQACQCAFQX9qIgEgBEcNAEEAIAQ2AsShEAwDCyAGIAVBA3RqQXhqKQIAIQdBACABNgLEoRAgACAHNwIADAILIABBCGohACAFIARBAWoiBEcNAAsLIAJBEGokACADCwIACwQAQQEL6AIBA38jAEEQayIEJAAgBCACQR9xOgAPAkACQEF/IAFBBGoiBSAFIAFJGyIBQQEgAnQiAiABIAJLGyIBQX9qZyICDQBBACECDAELAkBCAUEgIAJrrUL//wODhqciBWhBfWoiAkENSQ0AAkBCAUEgIAFBg4AEakEQdkF/amdrrUL//wODhqciAWhBAnRBkKUQaiIFKAIAIgJFDQAgBSABQRB0IAJqQXxqKAIANgIADAILQQAgAUAAIgJBEHQgAkF/RhshAgwBCwJAIAJBAnQiBkGopBBqIgEoAgAiAkUNACABIAUgAmpBfGooAgA2AgAMAQsCQCAGQdykEGoiASgCACICQf//A3ENAEEAIQICQAJAQQAoApClECIGRQ0AQQAgBigC/P8DNgKQpRAgBiECDAELQQFAACIGQQFqQQJJDQIgBkEQdCECCyABIAIgBWo2AgAMAQsgASACIAVqNgIACyAEQRBqJAAgAgvVAQECfyMAQRBrIgYkACAGIANBH3E6AA9BfyAEQQRqIgcgByAESRsiBEEBIAN0IgMgBCADSxshBAJAAkACQEIBQSAgAkEEaiICIAMgAiADSxsiA0F/amdrrUL//wODhqciAmhBfWpBDEsNACAEQX9qZyIDDQFBACEDDAILQgFBICADQYOABGpBEHZBf2pna61C//8Dg4anQgFBICAEQYOABGpBEHZBf2pna61C//8Dg4anRiEDDAELIAJCAUEgIANrrUL//wODhqdGIQMLIAZBEGokACADC9QBAQJ/IwBBEGsiBiQAIAYgA0EfcToAD0F/IARBBGoiByAHIARJGyIEQQEgA3QiAyAEIANLGyEEAkACQAJAQgFBICACQQRqIgIgAyACIANLGyIDQX9qZ2utQv//A4OGpyICaEF9akEMSw0AIARBf2pnIgNFDQEgAkIBQSAgA2utQv//A4OGp0cNAQwCC0IBQSAgA0GDgARqQRB2QX9qZ2utQv//A4OGp0IBQSAgBEGDgARqQRB2QX9qZ2utQv//A4OGp0YNAQtBACEBCyAGQRBqJAAgAQu2AQECfyMAQRBrIgUkACAFIANBH3E6AA8CQAJAQgFBICACQQRqIgJBASADdCIDIAIgA0sbIgNBf2pna61C//8Dg4anIgJoQX1qIgZBDU8NACAGQQJ0QaikEGohAyABIAJqQXxqIQIMAQtCAUEgIANBg4AEakEQdkF/amdrrUL//wODhqciAmhBAnRBkKUQaiEDIAEgAkEQdGpBfGohAgsgAiADKAIANgIAIAMgATYCACAFQRBqJAALdQEBfiAAIAQgAX4gAiADfnwgA0IgiCICIAFCIIgiBH58IANC/////w+DIgMgAUL/////D4MiAX4iBUIgiCADIAR+fCIDQiCIfCADQv////8PgyACIAF+fCIBQiCIfDcDCCAAIAFCIIYgBUL/////D4OENwMAC9QCAgN+An8CQAJAAkAgACAAYg0AIAC9IgJC////////////AINCgICAgICAgPj/AFoNACACQoCAgICAgICAgH+DIQNBCyACQgGGIgR5p2sgBEI1iKcgBEKAgICAgICAEFQbIQUCQCABQQBIDQBB/g8gBWsgAUgNAgJAIAUgAWoiBkEBTg0AIAIgAUE/ca2GIAOEvw8LAkAgBUEASg0AIAJBASAFa62GQv////////8HgyAGrUI0hoQgA4S/DwsgAa1CNIYgAny/DwtBACABayEGQQAgBWsgAUgNAgJAQUwgBWsgAUwNACADvw8LIAVBAEqtQjSGIAJC/////////weDhCAGQQEgBSABamsiASAGIAFIG0F/akE/ca0iBIhCAXxCAYggAnogBFGtQn+FgyADhL8hAAsgAA8LIANCgICAgICAgPj/AIS/DwsgAiAGrUI0hn2/C5YJAwN/AX0DfCMAQRBrIgEkAAJAAkAgALwiAkH/////B3EiA0Han6T6A0sNAEMAAIA/IQQgA0GAgIDMA0kNASAAuyIFIAWiIgVEgV4M/f//37+iRAAAAAAAAPA/oCAFIAWiIgZEQjoF4VNVpT+ioCAFIAaiIAVEaVDu4EKT+T6iRCceD+iHwFa/oKKgtiEEDAELAkACQAJAAkAgA0HSp+2DBEkNACADQdbjiIcETw0CIANB39u/hQRNDQFEGC1EVPshGcBEGC1EVPshGUAgAkF/ShsgALugIgUg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AkQAAAAAAAAAACERIA0hBgNAIAZBf2ohBiARIAIrAwCgIREgAkF4aiECIAdBf2oiBw0ACwsgDUEDSQ0AIAZBAWohByAGQQN0IAVB8AFqakFoaiECA0AgESACQRhqKwMAoCACQRBqKwMAoCACQQhqKwMAoCACKwMAoCERIAJBYGohAiAHQXxqIgcNAAsLIAEgEZogESATGzkDACAFKwPwASARoSERQQEhAgJAIA1BAUgNACANQQNxIQYCQCANQQRJDQAgDUH8////B3EhCCAFQfABakEgaiECQQAhBwNAIBEgAkFoaisDAKAgAkFwaisDAKAgAkF4aisDAKAgAisDAKAhESACQSBqIQIgCCAHQQRqIgdHDQALIAdBAWohAgsgBkUNACAFQfABaiACQQN0aiECA0AgESACKwMAoCERIAJBCGohAiAGQX9qIgYNAAsLIAEgEZogESATGzkDCAwBCwJAAkAgDUEATg0ARAAAAAAAAAAAIREMAQsCQAJAIA1BAWpBA3EiBw0ARAAAAAAAAAAAIREgDSEGDAELIAVB8AFqIA1BA3RqIQJEAAAAAAAAAAAhESANIQYDQCAGQX9qIQYgESACKwMAoCERIAJBeGohAiAHQX9qIgcNAAsLIA1BA0kNACAGQQFqIQcgBkEDdCAFQfABampBaGohAgNAIBEgAkEYaisDAKAgAkEQaisDAKAgAkEIaisDAKAgAisDAKAhESACQWBqIQIgB0F8aiIHDQALCyABIBGaIBEgExs5AwALIAVBsARqJAAgH0EHcQvmCAMDfgV/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/QQAgCGsQtQEhCwwBCyAFQoCAgICAgICAgH+DQoCAgICAgIAIhL8hCwsgAiACRAAAAAIAAKBBoiIBIAIgAaGgIgGhIgwgACAARAAAAAIAAKBBoiICIAAgAqGgIgKhIgCiIAwgAqIgASAAoqAiACABIAKiIgIgAiAAoCIAoaCgIQECQCAAIAugIgJEAAAAAAAAAABiDQAgAiABIAYQtQGgDwsCQCABIAEgCyACIAChIgyhIAAgAiAMoaGgIgugIgAgC6EiDKEgCyAAIAyhoaAiAUQAAAAAAAAAAGENACAAvSIDp0EBcQ0AIANCAYQgAb0gA4VCPoh9vyEACwJAAkACQCACvUL///////////8AgyIDQjSIpyIIQf8PRg0AIAgNAQJAIANQRQ0AQYCAgIB4IQgMAwtBjXggA3mnayEIDAILQYCAgIB4Qf////8HIANCgICAgICAgPj/AFYbIQgMAQsgCEGBeGohCAsCQCAIIAZqQYJ4SA0AIAIgAKAgBhC1AQ8LIAIgACAGELoBDwsgAgtnAgJ8AX4CQCABIAAgAaAiAyAAoSIEoSAAIAMgBKGhoCIARAAAAAAAAAAAYQ0AIAO9IgVCAYNQIAVCNIinQf8PcUEAIAJrR0YNACAFIAC9IAWFQj6IQgKDfUIBfL8hAwsgAyACELUBCycAAkAgACAAXA0AAkAgASABWw0AIAAPCyAAIAEgACABXRshAQsgAQuVCQIDfwN8IwBBEGsiASQAAkACQCAAvCICQf////8HcSIDQdqfpPoDSw0AIANBgICAzANJDQEgALsiBCAEoiIFIASiIgYgBSAFoqIgBUSnRjuMh83GPqJEdOfK4vkAKr+goiAGIAVEsvtuiRARgT+iRHesy1RVVcW/oKIgBKCgtiEADAELAkACQAJAAkAgA0HSp+2DBEkNACADQdbjiIcETw0DIAC7IQUgA0Hg27+FBE8NASACQX9KDQIgBUTSITN/fNkSQKAiBSAFoiIFRIFeDP3//9+/okQAAAAAAADwP6AgBSAFoiIEREI6BeFTVaU/oqAgBSAEoiAFRGlQ7uBCk/k+okQnHg/oh8BWv6CioLYhAAwECyAAuyEFAkAgA0Hkl9uABEkNAEQYLURU+yEJwEQYLURU+yEJQCACQX9KGyAFoCIEIASiIgUgBJqiIgYgBSAFoqIgBUSnRjuMh83GPqJEdOfK4vkAKr+goiAGIAVEsvtuiRARgT+iRHesy1RVVcW/oKIgBKGgtiEADAQLAkAgAkF/Sg0AIAVEGC1EVPsh+T+gIgUgBaIiBUSBXgz9///fv6JEAAAAAAAA8D+gIAUgBaIiBERCOgXhU1WlP6KgIAUgBKIgBURpUO7gQpP5PqJEJx4P6IfAVr+goqC2jCEADAQLIAVEGC1EVPsh+b+gIgUgBaIiBUSBXgz9///fv6JEAAAAAAAA8D+gIAUgBaIiBERCOgXhU1WlP6KgIAUgBKIgBURpUO7gQpP5PqJEJx4P6IfAVr+goqC2IQAMAwtEGC1EVPshGcBEGC1EVPshGUAgAkF/ShsgBaAiBCAEIASiIgWiIgYgBSAFoqIgBUSnRjuMh83GPqJEdOfK4vkAKr+goiAEIAYgBUSy+26JEBGBP6JEd6zLVFVVxb+goqCgtiEADAILIAVE0iEzf3zZEsCgIgUgBaIiBUSBXgz9///fv6JEAAAAAAAA8D+gIAUgBaIiBERCOgXhU1WlP6KgIAUgBKIgBURpUO7gQpP5PqJEJx4P6IfAVr+goqC2jCEADAELAkAgA0H////7B0sNACAAIAFBCGoQtwEhAyABKwMIIQUCQAJAAkACQCADQQNxDgQAAQIDAAsgBSAFIAWiIgSiIgYgBCAEoqIgBESnRjuMh83GPqJEdOfK4vkAKr+goiAFIAYgBESy+26JEBGBP6JEd6zLVFVVxb+goqCgtiEADAQLIAUgBaIiBUSBXgz9///fv6JEAAAAAAAA8D+gIAUgBaIiBERCOgXhU1WlP6KgIAUgBKIgBURpUO7gQpP5PqJEJx4P6IfAVr+goqC2IQAMAwsgBSAFoiIEIAWaoiIGIAQgBKKiIAREp0Y7jIfNxj6iRHTnyuL5ACq/oKIgBiAERLL7bokQEYE/okR3rMtUVVXFv6CiIAWhoLYhAAwCCyAFIAWiIgVEgV4M/f//37+iRAAAAAAAAPA/oCAFIAWiIgREQjoF4VNVpT+ioCAFIASiIAVEaVDu4EKT+T6iRCceD+iHwFa/oKKgtowhAAwBCyAAIACTIQALIAFBEGokACAACwvkIQIAQYCAEAuIIWUAAABmAAAAZwAAAGgAAAB5AGluZGV4AHYAdQBzbG90AHR5cGVzLlBvaW50AHJlbW92ZV9hc3NldABhZGRfYXNzZXQAYml0T2Zmc2V0AHBvaW50cwByZXNldF9hc3NldHMAaW1wb3J0X2ljb25zAGNvbm5lY3Rfd2ViX2dwdV9wcm9ncmFtcwBpbmRleC5XZWJHcHVQcm9ncmFtcwBmbGFncwBwaWNrc19yZW5kZXIAY2FudmFzX3JlbmRlcgBvbl9wb2ludGVyX3VwAGFuZ2xlX3RvAG9uX3BvaW50ZXJfZG93bgBhbGlnbgByZXR2YWwAb25fdXBkYXRlX3BpY2sAY29ubmVjdF9vbl9hc3NldF9zZWxlY3Rpb25fY2FsbGJhY2sAY29ubmVjdF9vbl9hc3NldF91cGRhdGVfY2FsbGJhY2sAbGVuZ3RoAHRleHR1cmUuQXNzZXRaaWcAZHJhd19tc2RmAGJpdFNpemUAYnl0ZVNpemUAb25fcG9pbnRlcl9tb3ZlAG9uX3BvaW50ZXJfbGVhdmUAZGVzdHJveV9zdGF0ZQBpbml0X3N0YXRlAGRyYXdfdGV4dHVyZQBwaWNrX3RleHR1cmUAc3RydWN0dXJlAHNpZ25hdHVyZQB0eXBlAG5hbWUAZHJhd190cmlhbmdsZQBwaWNrX3RyaWFuZ2xlAGRpc3RhbmNlAG1pZAB0ZXh0dXJlX2lkAEphdmFT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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\":109,\"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 connect_on_asset_selection_callback: v4,\n ASSET_ID_TRESHOLD: v5,\n init_state: v6,\n add_asset: v7,\n remove_asset: v8,\n on_update_pick: v9,\n on_pointer_down: v10,\n on_pointer_up: v11,\n on_pointer_move: v12,\n on_pointer_leave: v13,\n canvas_render: v14,\n picks_render: v15,\n reset_assets: v16,\n destroy_state: v17,\n import_icons: v18,\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 connect_on_asset_selection_callback,\n v5 as ASSET_ID_TRESHOLD,\n v6 as init_state,\n v7 as add_asset,\n v8 as remove_asset,\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 on_pointer_leave,\n v14 as canvas_render,\n v15 as picks_render,\n v16 as reset_assets,\n v17 as destroy_state,\n v18 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// handles bools, including implicit ones in optional pointers, where an address\n// of zero would be treated as boolean false\n\nvar bool = mixin({\n getAccessorBool(access, member) {\n const { byteSize } = member;\n const bitSize = byteSize * 8;\n const f = this.getAccessor(access, { type: MemberType.Uint, bitSize, byteSize });\n if (access === 'get') {\n return function(offset, littleEndian) {\n return !!f.call(this, offset, littleEndian);\n }\n } else {\n const zero = (bitSize <= 32) ? 0 : 0n;\n const one = (bitSize <= 32) ? 1 : 1n;\n return function(offset, value, littleEndian) {\n f.call(this, offset, value ? one : zero, littleEndian);\n }\n }\n }\n});\n\nexport { bool 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';\n\nvar bool = mixin({\n defineMemberBool(member) {\n return this.defineMemberUsing(member, this.getAccessor);\n },\n});\n\nexport { bool 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","i","afterPickEventsQueue","length","requireNewPick","cb","splice","unmap","err","OUTSIDE_CANVAS","pointer","initMouseController","onStartProcessing","updatePointer","e","rect","getBoundingClientRect","clientX","left","clientY","top","addEventListener","update","push","move","bind","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","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","settings","getCanvasMatrix","ortho","multisampleTexture","depthTexture","getMultisampleTexture","destroy","sampleCount","getCanvasRenderDescriptor","context","canvasTexture","getCurrentTexture","getDepthTexture","resolveTarget","initCreator","onAssetsUpdate","onAssetSelect","onProcessingUpdate","loadingTextures","isMouseEventProcessing","updateProcessing","getContext","getPreferredCanvasFormat","configure","addTexture","url","textureId","img","Image","src","onload","onerror","serializedData","serializedAssetsTextureUrl","asset","texture_id","points","point","u","v","flatMap","char","stopCreator","addImage","removeAsset","resetAssets","assets","withSnapshot","zigAssets","Promise","allSettled","resolve","reject","filter","result","status","value","unconfigure","getLoadingTexture","_","textureData","Uint8Array","flat","writeTexture","bytesPerRow","kTextureWidth","runCreator","onEmptyEvents","canvasPass","pickManager","pickMatrix","pickPass","loadingTexture","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","getDefaultPoints","texWidth","texHeight","projectWidth","projectHeight","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","s43","s44","s45","s46","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","o49","o50","o51","o52","U","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","r","setTimeout","loadModule","linkVariables","v0","v1","getSpecialExports","connect_web_gpu_programs","v2","connect_on_asset_update_callback","v3","connect_on_asset_selection_callback","v4","ASSET_ID_TRESHOLD","v5","init_state","v6","add_asset","v7","remove_asset","v8","on_update_pick","v9","on_pointer_down","v10","on_pointer_up","v11","on_pointer_move","v12","on_pointer_leave","v13","canvas_render","v14","picks_render","v15","reset_assets","v16","destroy_state","v17","import_icons","v18","init","accessorCache","Map","getAccessor","access","member","names","unaligned","Int","Uint","Bool","accessorName","join","accessor","DataView","prototype","get","handlerName","pop","getAccessorBool","call","zero","one","getAccessorInt","signMask","valueMask","n","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","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","awaiting","argStruct","startContext","updatePointerTargets","updateShadowTargets","endContext","onError","onReturn","retval","hasCallback","hasOwnProperty","Symbol","toStringTag","promise","finalizeAsyncCall","asyncIterator","pipeContents","defineArgIterator","thisEnv","allocatorTotal","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","defineArrayEntries","defineArrayIterator","getStructEntries","getStructEntriesIterator","getStructIterator","props","defineStructEntries","defineStructIterator","bindSlot","defineMember","applyTransform","defineBase64","dataView","str","defineMemberBool","defineMemberUsing","defineDataView","defineMemberFloat","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","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__","forEach","body","hasAwait","currentDeps","outerResolve","depQueues","Set","rej","deps","dep","obj","ret","wrapDeps","getResult","fnQueue","q","add","definition","o","prop","scriptUrl","__webpack_exports__"],"sourceRoot":""}
|
|
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/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/WebGPU/getTexture/index.ts","webpack://@mateuszjs/magic-render/./src/textures.ts","webpack://@mateuszjs/magic-render/./src/loadingTexture.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/bool.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/bool.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 // Safari does not support devicePixelContentBoxSize\n const width =\n entry.devicePixelContentBoxSize[0].inlineSize ||\n entry.contentBoxSize[0].inlineSize * devicePixelRatio\n const height =\n entry.devicePixelContentBoxSize[0].blockSize ||\n entry.contentBoxSize[0].blockSize * devicePixelRatio\n\n updateCanvasSize(canvas, width, height, device)\n callback()\n }\n })\n\n try {\n observer.observe(canvas, { box: 'device-pixel-content-box' })\n } catch {\n observer.observe(canvas, { box: 'content-box' })\n }\n\n // observer calls it anyway but it just happens late enough that user see a flicker\n // it it just displayed for a brief second, so we don't play with devicePixelContentBoxSize or devicePixelRatio\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 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 let i = 0\n while (i < pointer.afterPickEventsQueue.length) {\n // this is pretty stupid, because pointer.x, pointer.y were updated immediately\n // without waiting for this place right here\n const { requireNewPick, cb } = pointer.afterPickEventsQueue[i]\n if (requireNewPick && i > 0) break // we need to start new picking pass\n cb()\n i++\n }\n pointer.afterPickEventsQueue.splice(0, i) // remove processed events\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 {\n on_pointer_move,\n on_pointer_leave,\n on_pointer_down,\n on_pointer_up,\n} from '../logic/index.zig'\n\nconst OUTSIDE_CANVAS = -1\n\nexport const pointer = {\n x: 0,\n y: 0,\n afterPickEventsQueue: [] as Array<{ requireNewPick: boolean; cb: VoidFunction }>,\n /* this queue exists because wen mobiel device is touched we have to:\n 1) update pointer,\n 2) do picking,\n 3) record a click in order,\n so click has to wait after pick is done */\n}\n\nexport default function initMouseController(\n canvas: HTMLCanvasElement,\n onStartProcessing: VoidFunction\n) {\n pointer.x = OUTSIDE_CANVAS\n pointer.y = OUTSIDE_CANVAS\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 onStartProcessing()\n\n const update = () => {\n pointer.x = OUTSIDE_CANVAS\n pointer.y = OUTSIDE_CANVAS\n on_pointer_leave()\n }\n if (pointer.afterPickEventsQueue.length > 0) {\n pointer.afterPickEventsQueue.push({\n requireNewPick: false,\n cb: update,\n })\n } else {\n update()\n }\n })\n\n canvas.addEventListener('mousemove', (e) => {\n onStartProcessing()\n\n const move = () => {\n updatePointer(e)\n on_pointer_move(pointer.x, canvas.clientHeight - pointer.y)\n }\n if (pointer.afterPickEventsQueue.length > 0) {\n pointer.afterPickEventsQueue.push({\n requireNewPick: false,\n cb: move,\n })\n } else {\n move()\n }\n })\n\n canvas.addEventListener('mousedown', (e) => {\n onStartProcessing()\n\n updatePointer(e)\n pointer.afterPickEventsQueue.push({\n requireNewPick: true,\n cb: on_pointer_down.bind(null, pointer.x, canvas.clientHeight - pointer.y),\n })\n })\n\n canvas.addEventListener('mouseup', () => {\n onStartProcessing()\n\n if (pointer.afterPickEventsQueue.length > 0) {\n pointer.afterPickEventsQueue.push({\n requireNewPick: false,\n cb: on_pointer_up,\n })\n } else {\n on_pointer_up()\n }\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 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.width, // right\n 0, // bottom\n canvas.height, // 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 {\n init_state,\n add_asset,\n remove_asset,\n reset_assets,\n connect_on_asset_update_callback,\n connect_on_asset_selection_callback,\n destroy_state,\n import_icons,\n} from './logic/index.zig'\nimport initMouseController from 'WebGPU/pointer'\nimport IconsPng from '../msdf/output/icons.png'\nimport IconsJson from '../msdf/output/icons.json'\nimport getDefaultPoints from 'utils/getDefaultPoints'\nimport * as Textures from 'textures'\n\nexport type SerializedInputAsset = {\n id?: number // not needed while loading project but useful for undo/redo to maintain selection\n points?: PointUV[]\n url: string\n textureId?: number\n}\n\nexport type SerializedOutputAsset = {\n id: number // not needed while loading project but useful for undo/redo to maintain selection\n points: PointUV[]\n url: string\n textureId: number\n}\n\nexport interface CreatorAPI {\n addImage: (url: string) => void\n resetAssets: (assets: SerializedInputAsset[], withSnapshot?: boolean) => void\n removeAsset: VoidFunction\n destroy: VoidFunction\n}\n\nexport default async function initCreator(\n canvas: HTMLCanvasElement,\n onAssetsUpdate: (assets: SerializedOutputAsset[]) => void,\n onAssetSelect: (assetId: number) => void,\n onProcessingUpdate: (inProgress: boolean) => void\n): Promise<CreatorAPI> {\n let loadingTextures = 0\n let isMouseEventProcessing = false\n\n function updateProcessing() {\n onProcessingUpdate(loadingTextures > 0 || isMouseEventProcessing)\n }\n\n const device = await getDevice()\n Textures.init(device, (texLoadings) => {\n loadingTextures = texLoadings\n updateProcessing()\n })\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 isMouseEventProcessing = true\n updateProcessing()\n })\n\n connect_on_asset_update_callback((serializedData: ZigAssetOutput[]) => {\n const serializedAssetsTextureUrl = [...serializedData].map<SerializedOutputAsset>((asset) => ({\n id: asset.id,\n textureId: asset.texture_id,\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.getUrl(asset.texture_id),\n }))\n onAssetsUpdate(serializedAssetsTextureUrl)\n })\n\n connect_on_asset_selection_callback(onAssetSelect)\n\n const addImage: CreatorAPI['addImage'] = (url) => {\n const textureId = Textures.add(url, (width, height) => {\n const points = getDefaultPoints(width, height, canvas.clientWidth, canvas.clientHeight)\n add_asset(0 /* no id yet, needs to be generated */, points, textureId)\n })\n }\n\n Textures.add(IconsPng, (width, height) => {\n import_icons(\n IconsJson.chars.flatMap((char) => [\n char.id,\n char.x / width,\n char.y / height,\n char.width / width,\n char.height / height,\n char.width,\n char.height,\n ])\n )\n })\n\n const stopCreator = runCreator(canvas, context, device, presentationFormat, () => {\n isMouseEventProcessing = false\n updateProcessing()\n })\n\n const resetAssets: CreatorAPI['resetAssets'] = async (assets, withSnapshot = false) => {\n const results = await Promise.allSettled(\n assets.map<Promise<ZigAssetInput>>(\n (asset) =>\n new Promise((resolve, reject) => {\n if (asset.points) {\n return resolve({\n points: asset.points,\n texture_id: asset.textureId || Textures.add(asset.url),\n id: asset.id || 0,\n })\n }\n\n const textureId = Textures.add(asset.url, (width, height) => {\n // we wait to add image once points are known. Other option was to add image first\n // with \"default\" points and then update it once texture is loaded.\n // However, that would cause issues with undo/redo since we would have history\n // snapshot with \"default\" points and then update it to the real points.\n return resolve({\n points: getDefaultPoints(width, height, canvas.clientWidth, canvas.clientHeight),\n texture_id: textureId, // if there is no points, then for sure there is no asset.textureId\n id: 0,\n })\n })\n })\n )\n )\n\n const serializedAssets = results\n .filter((result) => result.status === 'fulfilled')\n .map((result) => result.value)\n\n reset_assets(serializedAssets, withSnapshot)\n }\n\n return {\n addImage,\n removeAsset: remove_asset,\n resetAssets,\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 { pointer } from 'WebGPU/pointer'\nimport * as Textures from 'textures'\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 onEmptyEvents: VoidFunction // call when there is no more events to process\n): VoidFunction {\n let canvasPass: GPURenderPassEncoder\n let canvasMatrix: Float32Array\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(\n canvasPass,\n canvasMatrix,\n vertex_data.typedArray,\n Textures.getTexture(texture_id)\n ),\n draw_msdf: (vertex_data, texture_id) => {\n drawMSDF(canvasPass, canvasMatrix, vertex_data.typedArray, Textures.getTexture(texture_id))\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.getTexture(texture_id)),\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 canvasMatrix = getCanvasMatrix(canvas)\n\n canvas_render()\n canvasPass.end()\n\n if (pointer.afterPickEventsQueue.length === 0) {\n onEmptyEvents()\n }\n\n const needsUpdatePick =\n pointer.afterPickEventsQueue.length > 0 ||\n lastPickPointer.x !== pointer.x ||\n lastPickPointer.y !== pointer.y\n\n if (needsUpdatePick) {\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","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 getLoadingTexture from 'loadingTexture'\nimport { createTextureFromSource } from 'WebGPU/getTexture'\n\nlet device: GPUDevice\nlet textures: TextureSource[]\nlet loadingTexture: GPUTexture\nlet updateProcessing: () => void\nlet loadingTextures: number\n\nexport function init(\n _device: GPUDevice,\n _updateProcessing: (loadingTextures: number) => void\n): void {\n device = _device\n textures = []\n loadingTexture = getLoadingTexture(device)\n updateProcessing = () => _updateProcessing(loadingTextures)\n loadingTextures = 0\n}\n\nexport interface TextureSource {\n url: string\n texture?: GPUTexture\n}\n\nexport function add(url: string, callback?: (width: number, height: number) => void): number {\n loadingTextures++\n updateProcessing()\n\n const textureId = textures.length\n textures.push({ url })\n\n const img = new Image()\n img.src = url\n\n img.onload = () => {\n textures[textureId].texture = createTextureFromSource(device, img, { flipY: true })\n callback?.(img.width, img.height)\n\n loadingTextures--\n updateProcessing()\n }\n\n img.onerror = () => {\n console.error(`Failed to load image from ${url}`)\n\n loadingTextures--\n updateProcessing()\n }\n\n return textureId\n}\n\nexport function getTexture(textureId: number): GPUTexture {\n return textures[textureId].texture ?? loadingTexture\n}\n\nexport function getUrl(textureId: number): string {\n return textures[textureId].url\n}\n","export default function getLoadingTexture(device: GPUDevice): GPUTexture {\n const textureWidth = 5\n const textureHeight = 7\n const _ = [255, 0, 0, 255] // red\n const y = [255, 255, 0, 255] // yellow\n const b = [0, 0, 255, 255] // blue\n // prettier-ignore\n const textureData = new Uint8Array([\n b, _, _, _, _,\n _, y, y, y, _,\n _, y, _, _, _,\n _, y, y, _, _,\n _, y, _, _, _,\n _, y, _, _, _,\n _, _, _, _, _,\n ].flat())\n\n const texture = device.createTexture({\n label: 'yellow F on red',\n size: [textureWidth, textureHeight],\n format: 'rgba8unorm',\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST,\n })\n device.queue.writeTexture(\n { texture },\n textureData,\n { bytesPerRow: textureWidth * 4 },\n { width: textureWidth, height: textureHeight }\n )\n\n return texture\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 texWidth: number,\n texHeight: number,\n projectWidth: number,\n projectHeight: number\n): PointUV[] {\n const scale = getDefaultTextureScale(texWidth, texHeight, projectWidth, projectHeight)\n const scaledWidth = texWidth * scale\n const scaledHeight = texHeight * scale\n const paddingX = (projectWidth - scaledWidth) * 0.5\n const paddingY = (projectHeight - 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(\n texWidth: number,\n texHeight: number,\n projectWidth: number,\n projectHeight: number\n) {\n const heightDiff = projectHeight - texHeight\n const widthDiff = projectWidth - texWidth\n\n if (heightDiff < widthDiff) {\n const height = clamp(texHeight, projectHeight * 0.2, projectHeight * 0.8)\n return height / texHeight\n }\n\n const width = clamp(texWidth, projectWidth * 0.2, projectWidth * 0.8)\n return width / texWidth\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/accessors/bool.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/bool.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 = {}, s43 = {}, s44 = {}, s45 = {}, s46 = {};\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 = {}, o49 = {};\nconst o50 = {}, o51 = {}, o52 = {};\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(72);\nconst a5 = U([ 232, 3, 0, 0 ]);\n\n// fill in object properties\nconst $ = Object.assign;\n$(o0, {\n memory: { array: a0 },\n handle: 29,\n});\n$(o1, {\n memory: { array: a0 },\n handle: 30,\n});\n$(o2, {\n memory: { array: a0 },\n handle: 19,\n});\n$(o3, {\n memory: { array: a0 },\n handle: 28,\n});\n$(o4, {\n memory: { array: a1 },\n handle: 263220,\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: 18,\n});\n$(o13, {\n memory: { array: a0 },\n handle: 100,\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: 79,\n});\n$(o17, {\n memory: { array: a0 },\n handle: 82,\n});\n$(o18, {\n memory: { array: a0 },\n handle: 83,\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: 79,\n});\n$(o22, {\n structure: s21,\n memory: { array: a0 },\n handle: 80,\n});\n$(o23, {\n structure: s21,\n memory: { array: a0 },\n handle: 81,\n});\n$(o24, {\n memory: { array: a4 },\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: 25,\n});\n$(o29, {\n memory: { array: a0 },\n handle: 26,\n});\n$(o30, {\n memory: { array: a0 },\n handle: 21,\n});\n$(o31, {\n memory: { array: a0 },\n handle: 22,\n});\n$(o32, {\n memory: { array: a0 },\n handle: 23,\n});\n$(o33, {\n memory: { array: a0 },\n handle: 24,\n});\n$(o34, {\n memory: { array: a0 },\n handle: 27,\n});\n$(o35, {\n slots: {\n 0: o36, 1: o37, 2: o38, 3: o39, 4: o40, 5: o41, 6: o42, 7: o43, 8: o44, 9: o45,\n 10: o46, 11: o47, 12: o48, 13: o49, 14: o50, 15: o51, 16: o52,\n },\n});\n$(o36, {\n structure: s14,\n memory: { array: a0 },\n handle: 2,\n});\n$(o37, {\n structure: s31,\n memory: { array: a0 },\n handle: 3,\n});\n$(o38, {\n structure: s36,\n memory: { array: a0 },\n handle: 4,\n});\n$(o39, {\n structure: s4,\n memory: { array: a5 },\n const: true,\n});\n$(o40, {\n structure: s38,\n memory: { array: a0 },\n handle: 5,\n});\n$(o41, {\n structure: s40,\n memory: { array: a0 },\n handle: 6,\n});\n$(o42, {\n structure: s42,\n memory: { array: a0 },\n handle: 7,\n});\n$(o43, {\n structure: s33,\n memory: { array: a0 },\n handle: 8,\n});\n$(o44, {\n structure: s38,\n memory: { array: a0 },\n handle: 9,\n});\n$(o45, {\n structure: s42,\n memory: { array: a0 },\n handle: 10,\n});\n$(o46, {\n structure: s38,\n memory: { array: a0 },\n handle: 11,\n});\n$(o47, {\n structure: s42,\n memory: { array: a0 },\n handle: 12,\n});\n$(o48, {\n structure: s42,\n memory: { array: a0 },\n handle: 13,\n});\n$(o49, {\n structure: s42,\n memory: { array: a0 },\n handle: 14,\n});\n$(o50, {\n structure: s45,\n memory: { array: a0 },\n handle: 15,\n});\n$(o51, {\n structure: s42,\n memory: { array: a0 },\n handle: 16,\n});\n$(o52, {\n structure: s9,\n memory: { array: a0 },\n handle: 17,\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: 0x4ae79eaef47ad8ddn,\n name: \"SerializedAsset\",\n byteSize: 72,\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 ...m,\n type: 3,\n flags: 1,\n bitOffset: 544,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"id\",\n structure: s4,\n },\n ],\n template: o24\n },\n});\n$(s25, {\n ...s,\n type: 9,\n flags: 10,\n signature: 0xe0d907eca6c48c2bn,\n name: \"[_]SerializedAsset\",\n byteSize: 72,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 576,\n byteSize: 72,\n structure: s24,\n },\n ],\n },\n});\n$(s26, {\n ...s,\n type: 8,\n flags: 188,\n signature: 0x6e413be38a1c13can,\n name: \"[]const SerializedAsset\",\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: 0x553f6f88d529422an,\n name: \"Arg(fn ([]const SerializedAsset) 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: 0x3bd0f1fed1ded14an,\n name: \"fn ([]const SerializedAsset) 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: 0x384247752a6c2fa8n,\n name: \"*const fn ([]const SerializedAsset) 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: 0xee84c3d23e38b13bn,\n name: \"Arg(fn (*const fn ([]const SerializedAsset) 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: 0x31ed60e02d201a60n,\n name: \"fn (*const fn ([]const SerializedAsset) 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: 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$(s33, {\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: s32,\n },\n ],\n template: o28\n },\n static: {\n members: [],\n template: o29\n },\n});\n$(s34, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0x139c4e15eb0a34d6n,\n name: \"*const fn (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: s33,\n },\n ],\n },\n});\n$(s35, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0xfaa14a525ee0f8d4n,\n name: \"Arg(fn (*const fn (u32) 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: s34,\n },\n ],\n },\n});\n$(s36, {\n ...s,\n type: 14,\n signature: 0x651c6f0337fe6099n,\n name: \"fn (*const fn (u32) void) void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n structure: s35,\n },\n ],\n template: o30\n },\n});\n$(s37, {\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$(s38, {\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: s37,\n },\n ],\n template: o31\n },\n});\n$(s39, {\n ...s,\n type: 12,\n flags: 10,\n signature: 0x9d8f5b87c05655fbn,\n name: \"Arg(fn (u32, [4]PointUV, u32) void)\",\n length: 3,\n byteSize: 72,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 576,\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 ...m,\n type: 3,\n flags: 1,\n bitOffset: 544,\n bitSize: 32,\n byteSize: 4,\n slot: 3,\n name: \"2\",\n structure: s4,\n },\n ],\n },\n});\n$(s40, {\n ...s,\n type: 14,\n signature: 0x92d326bf03506c95n,\n name: \"fn (u32, [4]PointUV, u32) void\",\n length: 3,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 576,\n byteSize: 72,\n structure: s39,\n },\n ],\n template: o32\n },\n});\n$(s41, {\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$(s42, {\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: s41,\n },\n ],\n template: o33\n },\n});\n$(s43, {\n ...s,\n flags: 1,\n signature: 0x6eddab4b13ff06c5n,\n name: \"bool\",\n byteSize: 1,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 1,\n bitOffset: 0,\n bitSize: 1,\n byteSize: 1,\n structure: s43,\n },\n ],\n },\n});\n$(s44, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0x85fe3287727e2e0en,\n name: \"Arg(fn ([]const SerializedAsset, bool) void)\",\n length: 2,\n byteSize: 12,\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 ...m,\n type: 1,\n flags: 1,\n bitOffset: 64,\n bitSize: 1,\n byteSize: 1,\n slot: 2,\n name: \"1\",\n structure: s43,\n },\n ],\n },\n});\n$(s45, {\n ...s,\n type: 14,\n signature: 0x0f521e207596cb59n,\n name: \"fn ([]const SerializedAsset, bool) void\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 96,\n byteSize: 12,\n structure: s44,\n },\n ],\n template: o34\n },\n});\n$(s46, {\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: \"connect_on_asset_selection_callback\",\n structure: s36,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 3,\n name: \"ASSET_ID_TRESHOLD\",\n structure: s4,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 4,\n name: \"init_state\",\n structure: s38,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 5,\n name: \"add_asset\",\n structure: s40,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 6,\n name: \"remove_asset\",\n structure: s42,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 7,\n name: \"on_update_pick\",\n structure: s33,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 8,\n name: \"on_pointer_down\",\n structure: s38,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 9,\n name: \"on_pointer_up\",\n structure: s42,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 10,\n name: \"on_pointer_move\",\n structure: s38,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 11,\n name: \"on_pointer_leave\",\n structure: s42,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 12,\n name: \"canvas_render\",\n structure: s42,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 13,\n name: \"picks_render\",\n structure: s42,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 14,\n name: \"reset_assets\",\n structure: s45,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 15,\n name: \"destroy_state\",\n structure: s42,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 16,\n name: \"import_icons\",\n structure: s9,\n },\n ],\n template: o35\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, s43, s44, s45, s46,\n];\nconst root = s46;\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(\"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ADcC2AEgAkECNgLUASACQqOAgIDQADcCzAEgAkGXghA2AsgBIAIgAigCwAE2AvgBIAJCgoCAgBA3AvABIAQgAkHIAWpBARAZIgNB//8DcQ0BIAJByAhqEB0gAi8BzAgiAw0BAkBBBEEAQQAgAigCyAgQAyIDDQBBDSEDDAILIAVBAiADEAEgAkH8AWoQHyACLwGAAiIDDQEgAkGcAmpCADcCACACQaQCakIANwIAIAJCADcClAIgAkECNgKQAiACQpGAgIDQADcCiAIgAkGLhRA2AoQCIAIgAigC/AE2ArQCIAJCg4CAgBA3AqwCIAQgAkGEAmpBARAZIgNB//8DcQ0BIAJByAhqEB8gAi8BzAgiAw0BAkBBtIUQQQRBASACKALICBADIgMNAEENIQMMAgsgBUEDIAMQASACQbgCahAgIAIvAbwCIgMNASACQdgCakIANwIAIAJB4AJqQgA3AgAgAkIANwLQAiACQQI2AswCIAJCioCAgNAANwLEAiACQa2DEDYCwAIgAiACKAK4AjYC8AIgAkKEgICAEDcC6AIgBCACQcACakEBEBkiA0H//wNxDQEgAkHICGoQICACLwHMCCIDDQECQEEFQQBBACACKALICBADIgMNAEENIQMMAgsgBUEEIAMQASACQfQCahAiIAIvAfgCIgMNASACQZQDakIANwIAIAJBnANqQgA3AgAgAkIANwKMAyACQQI2AogDIAJCiYCAgNAANwKAAyACQbqAEDYC/AIgAiACKAL0AjYCrAMgAkKFgICAEDcCpAMgBCACQfwCakEBEBkiA0H//wNxDQEgAkHICGoQIiACLwHMCCIDDQECQEEGQQBBACACKALICBADIgMNAEENIQMMAgsgBUEFIAMQASACQbADahAkIAIvAbQDIgMNASACQdADakIANwIAIAJB2ANqQgA3AgAgAkIANwLIAyACQQI2AsQDIAJCjICAgNAANwK8AyACQa2AEDYCuAMgAiACKAKwAzYC6AMgAkKGgICAEDcC4AMgBCACQbgDakEBEBkiA0H//wNxDQEgAkHICGoQJCACLwHMCCIDDQECQEEHQQBBACACKALICBADIgMNAEENIQMMAgsgBUEGIAMQASACQewDahAmIAIvAfADIgMNASACQYwEakIANwIAIAJBlARqQgA3AgAgAkIANwKEBCACQQI2AoAEIAJCjoCAgNAANwL4AyACQYiCEDYC9AMgAiACKALsAzYCpAQgAkKHgICAEDcCnAQgBCACQfQDakEBEBkiA0H//wNxDQEgAkHICGoQJiACLwHMCCIDDQECQEEIQQBBACACKALICBADIgMNAEENIQMMAgsgBUEHIAMQASACQagEahAgIAIvAawEIgMNASACQcgEakIANwIAIAJB0ARqQgA3AgAgAkIANwLABCACQQI2ArwEIAJCj4CAgNAANwK0BCACQeuBEDYCsAQgAiACKAKoBDYC4AQgAkKIgICAEDcC2AQgBCACQbAEakEBEBkiA0H//wNxDQEgAkHICGoQICACLwHMCCIDDQECQEEJQQBBACACKALICBADIgMNAEENIQMMAgsgBUEIIAMQASACQeQEahAkIAIvAegEIgMNASACQYQFakIANwIAIAJBjAVqQgA3AgAgAkIANwL8BCACQQI2AvgEIAJCjYCAgNAANwLwBCACQdSBEDYC7AQgAiACKALkBDYCnAUgAkKJgICAEDcClAUgBCACQewEakEBEBkiA0H//wNxDQEgAkHICGoQJCACLwHMCCIDDQECQEEKQQBBACACKALICBADIgMNAEENIQMMAgsgBUEJIAMQASACQaAFahAgIAIvAaQFIgMNASACQcAFakIANwIAIAJByAVqQgA3AgAgAkIANwK4BSACQQI2ArQFIAJCj4CAgNAANwKsBSACQf6CEDYCqAUgAiACKAKgBTYC2AUgAkKKgICAEDcC0AUgBCACQagFakEBEBkiA0H//wNxDQEgAkHICGoQICACLwHMCCIDDQECQEELQQBBACACKALICBADIgMNAEENIQMMAgsgBUEKIAMQASACQdwFahAkIAIvAeAFIgMNASACQfwFakIANwIAIAJBhAZqQgA3AgAgAkIANwL0BSACQQI2AvAFIAJCkICAgNAANwLoBSACQY6DEDYC5AUgAiACKALcBTYClAYgAkKLgICAEDcCjAYgBCACQeQFakEBEBkiA0H//wNxDQEgAkHICGoQJCACLwHMCCIDDQECQEEMQQBBACACKALICBADIgMNAEENIQMMAgsgBUELIAMQASACQZgGahAkIAIvAZwGIgMNASACQbgGakIANwIAIAJBwAZqQgA3AgAgAkIANwKwBiACQQI2AqwGIAJCjYCAgNAANwKkBiACQcaBEDYCoAYgAiACKAKYBjYC0AYgAkKMgICAEDcCyAYgBCACQaAGakEBEBkiA0H//wNxDQEgAkHICGoQJCACLwHMCCIDDQECQEENQQBBACACKALICBADIgMNAEENIQMMAgsgBUEMIAMQASACQdQGahAkIAIvAdgGIgMNASACQfQGakIANwIAIAJB/AZqQgA3AgAgAkIANwLsBiACQQI2AugGIAJCjICAgNAANwLgBiACQbmBEDYC3AYgAiACKALUBjYCjAcgAkKNgICAEDcChAcgBCACQdwGakEBEBkiA0H//wNxDQEgAkHICGoQJCACLwHMCCIDDQECQEEOQQBBACACKALICBADIgMNAEENIQMMAgsgBUENIAMQASACQZAHahAuIAIvAZQHIgMNASACQbAHakIANwIAIAJBuAdqQgA3AgAgAkIANwKoByACQQI2AqQHIAJCjICAgNAANwKcByACQeuAEDYCmAcgAiACKAKQBzYCyAcgAkKOgICAEDcCwAcgBCACQZgHakEBEBkiA0H//wNxDQEgAkHICGoQLiACLwHMCCIDDQECQEEPQQBBACACKALICBADIgMNAEENIQMMAgsgBUEOIAMQASACQcwHahAkIAIvAdAHIgMNASACQewHakIANwIAIAJB9AdqQgA3AgAgAkIANwLkByACQQI2AuAHIAJCjYCAgNAANwLYByACQZ+DEDYC1AcgAiACKALMBzYChAggAkKPgICAEDcC/AcgBCACQdQHakEBEBkiA0H//wNxDQEgAkHICGoQJCACLwHMCCIDDQECQEEQQQBBACACKALICBADIgMNAEENIQMMAgsgBUEPIAMQASACQYgIahAxIAIvAYwIIgMNASACQagIakIANwIAIAJBsAhqQgA3AgAgAkIANwKgCCACQQI2ApwIIAJCjICAgNAANwKUCCACQfiAEDYCkAggAiACKAKICDYCwAggAkKQgICAEDcCuAggBCACQZAIakEBEBkiA0H//wNxDQEgAkHICGoQMSACLwHMCCIDDQECQEERQQBBACACKALICBADIgMNAEENIQMMAgsgBUEQIAMQASAEIAVBARAFIAQQBiACIAQ2AkAgAkEAOwFEIAJBwABqIQQLQQAhAyAELwEEIgRFDQAgBCEDCyACQdAIaiQAIAMLqgMCBX8BfiMAQRBrIgIkABAHIQMC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QayFECECDAELIAEgAjYCiAUgAUEAOwGMBSABQYgFaiECCwJAIAIvAQQiAkUNACAAIAI7AQQMAgsgAxAGIAEgAzYCQCABQQA7AUQgAUHAAGohAgsgACACKQMANwIACyABQcAFaiQACwsAQQAgADYC3KEQC98IAQV/IwBBoANrIgEkAAJAAkACQEEAQckAEAAiAkUNACABIAI2AgAgAUEAOwEEIAEhAgwBCyABQg43AxggAUIANwMQIAFBgIAENgIwIAFCgICAgBA3AyggAUKBgICAEDcDICABQpnB+b+z4JuO5QA3AwggAUE4aiABQQhqEBcCQCABLwE8IgJFDQAgACACOwEEDAILQQBByQAgASgCOCIDEAECQAJAAkBBAEHNABAAIgQNACABQoyAgIDgATcDkAEgAUIANwOIASABQYSABDYCqAEgAUKEgICAEDcDoAEgAUKBgICAEDcDmAEgAULU8YP3pcrS0Ho3A4ABIAFBsAFqIAFBgAFqEBcgAS8BtAEiAg0BQQBBzQAgASgCsAEiBBABIAFBuAFqEEAgAS8BvAEiAg0BIAEgASgCuAE2AvABIAFCgICAgBA3AugBIAFCgICAgBA3AuABIAFCgICAgBA3AtgBIAFCoICAgBA3AtABIAFBATYCzAEgAUIGNwLEASABQYGCEDYCwAEgBCABQcABakEAEBkiAkH//wNxDQECQEEAQcoAEAAiBQ0AIAFCiICAgMAZNwO4AiABQgA3A7ACIAFBhIAENgLQAiABQoSAgIAQNwPIAiABQgA3A8ACIAFC1umo2N7Ck84TNwOoAiABQdgCaiABQagCahAXIAEvAdwCIgINAkEAQcoAIAEoAtgCIgUQASABQeACahAmIAEvAeQCIgINAiABIAEoAuACNgKYAyABQoCAgIAQNwKQAyABQoSAgIAQNwKIAyABQqCAgIAQNwKAAyABQgA3AvgCIAFCBTcC8AIgAUIANwLoAiAFIAFB6AJqQQAQGSICQf//A3ENAgJAAkAgBRACIgINAEGshRAhAgwBCyABIAI2AugCIAFBADsB7AIgAUHoAmohAgsgAi8BBCICDQIgBRAGCyABIAU2AqQCIAFCgYCAgBA3ApwCIAFChICAgBA3ApQCIAFCoICAgBA3AowCIAFCgICAgBA3AoQCIAFBATYCgAIgAUKBgICA0AA3AvgBIAFBoYUQNgL0ASAEIAFB9AFqQQAQGSICQf//A3ENAQJAAkAgBBACIgINAEGshRAhAgwBCyABIAI2AugCIAFBADsB7AIgAUHoAmohAgsgAi8BBCICDQEgBBAGCyABIAQ2AnwgAUIANwJ0IAFChICAgBA3AmwgAUKggICAEDcCZCABQgA3AlwgAUIFNwJUIAFCADcCTCADIAFBzABqQQAQGSICQf//A3ENAAJAQRVBAEEAEA8iAg0AIABBDDsBBAwECyACEAQiAg0BQRUhAgsgACACOwEEDAILIAMgAkEAEAUCQAJAIAMQAiICDQBBrIUQIQIMAQsgASACNgLoAiABQQA7AewCIAFB6AJqIQILAkAgAi8BBCICRQ0AIAAgAjsBBAwCCyADEAYgASADNgJAIAFBADsBRCABQcAAaiECCyAAIAIpAwA3AgALIAFBoANqJAALCwBBACAANgLgoRALjAMBA38jAEGQAWsiASQAAkACQAJAQQBBKhAAIgJFDQAgASACNgIIIAFBADsBDCABQQhqIQIMAQsgAUKAgICAEDcDICABQgA3AxggAUGEgAQ2AjggAUKEgICAEDcDMCABQgA3AyggAUKjo6CNw7bjrOgANwMQIAFBwABqIAFBEGoQFwJAIAEvAUQiAkUNACAAIAI7AQQMAgtBAEEqIAEoAkAiAhABIAFB0ABqEB8CQAJAIAEvAVQiAw0AIAEgASgCUDYCiAEgAUIANwKAASABQoSAgIAQNwJ4IAFCoICAgBA3AnAgAUKAgICAEDcCaCABQgM3AmAgAUIANwJYIAIgAUHYAGpBABAZIgNB//8DcUUNAQsgACADOwEEDAILAkACQCACEAIiAw0AQayFECEDDAELIAEgAzYCWCABQQA7AVwgAUHYAGohAwsCQCADLwEEIgNFDQAgACADOwEEDAILIAIQBiABIAI2AkggAUEAOwFMIAFByABqIQILIAAgAikDADcCAAsgAUGQAWokAAvRBwEEfyMAQfACayIBJAACQAJAAkBBAEHQABAAIgJFDQAgASACNgIAIAFBADsBBCABIQIMAQsgAUIONwMYIAFCADcDECABQYCABDYCMCABQoCAgIAQNwMoIAFCgoCAgBA3AyAgAUKgttOk4K6w3eMANwMIIAFBOGogAUEIahAXAkAgAS8BPCICRQ0AIAAgAjsBBAwCC0EAQdAAIAEoAjgiAxABAkACQAJAQQBB0QAQACIEDQAgAUIMNwOQASABQgA3A4gBIAFBhIAENgKoASABQoiAgIAQNwOgASABQoKAgIAQNwOYASABQvSHgJr/hOvXsX83A4ABIAFBsAFqIAFBgAFqEBcgAS8BtAEiAg0BQQBB0QAgASgCsAEiBBABIAFBuAFqEEAgAS8BvAEiAg0BIAEgASgCuAE2AvABIAFCgICAgBA3AugBIAFCgICAgBA3AuABIAFCgICAgBA3AtgBIAFCwICAgBA3AtABIAFBATYCzAEgAUIGNwLEASABQYGCEDYCwAEgBCABQcABakEAEBkiAkH//wNxDQEgAUH0AWoQSCABLwH4ASICDQEgASABKAL0ATYCrAIgAUKBgICAEDcCpAIgAUKEgICAEDcCnAIgAUKggICAEDcClAIgAUKAgICAEDcCjAIgAUEBNgKIAiABQoGAgIDAADcCgAIgAUGhhRA2AvwBIAQgAUH8AWpBABAZIgJB//8DcQ0BIAFBsAJqEEggAS8BtAIiAg0BIAEgASgCsAI2AugCIAFCgoCAgBA3AuACIAFChICAgBA3AtgCIAFCoICAgBA3AtACIAFCoICAgBA3AsgCIAFBATYCxAIgAUKBgICAwAA3ArwCIAFBn4UQNgK4AiAEIAFBuAJqQQAQGSICQf//A3ENAQJAAkAgBBACIgINAEGshRAhAgwBCyABIAI2ArgCIAFBADsBvAIgAUG4AmohAgsgAi8BBCICDQEgBBAGCyABIAQ2AnwgAUIANwJ0IAFCiICAgBA3AmwgAULAgICAEDcCZCABQgA3AlwgAUIFNwJUIAFCADcCTCADIAFBzABqQQAQGSICQf//A3ENAAJAQRZBAEEAEA8iAg0AIABBDDsBBAwECyACEAQiAg0BQRUhAgsgACACOwEEDAILIAMgAkEAEAUCQAJAIAMQAiICDQBBrIUQIQIMAQsgASACNgK4AiABQQA7AbwCIAFBuAJqIQILAkAgAi8BBCICRQ0AIAAgAjsBBAwCCyADEAYgASADNgJAIAFBADsBRCABQcAAaiECCyAAIAIpAwA3AgALIAFB8AJqJAALNABBAEIANwKQoRBBACABOAKMoRBBACAAOAKIoRBBAEEAKQO4ihA3ApyhEEEAQQA2ApihEAvWCAEEfyMAQbADayIBJAACQAJAAkBBAEHTABAAIgJFDQAgASACNgIAIAFBADsBBCABIQIMAQsgAUIONwMYIAFCADcDECABQYCABDYCMCABQoCAgIAQNwMoIAFCg4CAgBA3AyAgAUKV2cGa8NfJ6ZJ/NwMIIAFBOGogAUEIahAXAkAgAS8BPCICRQ0AIAAgAjsBBAwCC0EAQdMAIAEoAjgiAxABAkACQAJAQQBB1AAQACIEDQAgAUKMgICAoAE3A5ABIAFCADcDiAEgAUGEgAQ2AqgBIAFCyICAgBA3A6ABIAFCg4CAgBA3A5gBIAFC+6vZgvzw1sedfzcDgAEgAUG0AWogAUGAAWoQFyABLwG4ASICDQFBAEHUACABKAK0ASIEEAEgAUG8AWoQQCABLwHAASICDQEgASABKAK8ATYC9AEgAUKAgICAEDcC7AEgAUKAgICAEDcC5AEgAUKAgICAEDcC3AEgAULAhICAEDcC1AEgAUEBNgLQASABQgY3AsgBIAFBgYIQNgLEASAEIAFBxAFqQQAQGSICQf//A3ENASABQfgBahAfIAEvAfwBIgINASABIAEoAvgBNgKwAiABQoGAgIAQNwKoAiABQoSAgIAQNwKgAiABQqCAgIAQNwKYAiABQoCAgIAQNwKQAiABQQE2AowCIAFCgYCAgDA3AoQCIAFBoYUQNgKAAiAEIAFBgAJqQQAQGSICQf//A3ENASABQbQCahBKIAEvAbgCIgINASABIAEoArQCNgLsAiABQoKAgIAQNwLkAiABQsCAgIAQNwLcAiABQoCEgIAQNwLUAiABQqCAgIAQNwLMAiABQQE2AsgCIAFCgYCAgNAANwLAAiABQZ+FEDYCvAIgBCABQbwCakEAEBkiAkH//wNxDQEgAUHwAmoQHyABLwH0AiICDQEgASABKALwAjYCqAMgAUKDgICAEDcCoAMgAUKEgICAEDcCmAMgAUKggICAEDcCkAMgAUKghICAEDcCiAMgAUEBNgKEAyABQoGAgIAwNwL8AiABQZ2FEDYC+AIgBCABQfgCakEAEBkiAkH//wNxDQECQAJAIAQQAiICDQBBrIUQIQIMAQsgASACNgL4AiABQQA7AfwCIAFB+AJqIQILIAIvAQQiAg0BIAQQBgsgASAENgJ8IAFCADcCdCABQsiAgIAQNwJsIAFCwISAgBA3AmQgAUIANwJcIAFCBTcCVCABQgA3AkwgAyABQcwAakEAEBkiAkH//wNxDQACQEEXQQBBABAPIgINACAAQQw7AQQMBAsgAhAEIgINAUEVIQILIAAgAjsBBAwCCyADIAJBABAFAkACQCADEAIiAg0AQayFECECDAELIAEgAjYC+AIgAUEAOwH8AiABQfgCaiECCwJAIAIvAQQiAkUNACAAIAI7AQQMAgsgAxAGIAEgAzYCQCABQQA7AUQgAUHAAGohAgsgACACKQMANwIACyABQbADaiQAC/EJAwJ/AX4JfyMAQZABayIDJAACQCAADQBBAEEAKAK8oRAiAEEBajYCvKEQCyADQcgAakE4aiABQThqKQIANwMAIANByABqQTBqIAFBMGopAgA3AwAgA0HIAGpBKGogAUEoaikCADcDACADQcgAakEgaiABQSBqKQIANwMAIANByABqQRhqIAFBGGopAgA3AwAgA0HIAGpBEGogAUEQaikCADcDACADQcgAakEIaiABQQhqKQIANwMAIAMgASkCADcDSAJAAkACQAJAQQAoApihEA0AQQEhAQJAQQAoApChECIERQ0AIARBfGooAgCtQtAAfiIFIAVC5ACCfULkAHxC0ACApyEBC0IBQSAgAWdrrUL//wODhqcQOEH//wNxDQELIANBGGogAK1CgYCAgBB+IgVC29HQhZra34FnhUIAIAVCrJri06PS8PofhUIAELQBIANBCGogA0EYakEIaikDAELb0dCFmtrfgWeFQgAgAykDGEKryPXFx6yHu6B/hUIAELQBIANBCGpBCGopAwAgAykDCIUhBQJAAkBBACgCkKEQIgYNACAFpyEEQQAhB0F/IQgMAQsgBkF8aigCACIHQX9qIgggBadxIQQLIAVCOYinIQkCQAJAIAYgBGoiCi0AACIBRQ0AIAdFDQAgB0F/aiELIAZBeGohDCAGQXxqIQ0DQCALIQ4CQAJAAkAgAcBBf0oNACAJIAFB/wBxRw0AIAwoAgAgBEECdGoiCygCACAARg0BDAILIAcgDSgCAEcNASAEIAcgAUH/AXFBAUYbIQcMAQsgA0EBOgCMASAGQXRqKAIAIARByABsaiEBIANBjAFqIQQMAwsgBiAEQQFqIAhxIgRqIgotAAAiAUUNASAOQX9qIQsgDg0ACwsgBkF8aigCACEBQQBBACgCmKEQQX9qNgKYoRAgBiAHaiAKIAcgAUki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FGopAgAhBSAAIARBHGopAgA3AjggACAFNwIoIABCgICAgICAgMA/NwIwIAAgBCgCALM4AkAgBEEkaiIGKQIAIQUgACAEQSxqIgcpAgA3AlQgACAFNwJEIABCgICAgICAgMA/NwJMIAAgBCgCALM4AlwgBikCACEFIAAgBykCADcCcCAAIAU3AmAgAEKAgICAgICAwD83AmggACAEKAIAszgCeCAEQTRqKQIAIQUgACAEQTxqKQIANwKMASAAIAU3AnwgAEKAgICAgICAwD83AoQBIAAgBCgCALM4ApQBIAEpAgAhBSAAIAMpAgA3AqgBIAAgBTcCmAEgAEKAgICAgICAwD83AqABIAAgBCgCALM4ArABIABBDGpBKiAEQcQAaigCAEEAKALYoRAoAgwRAQAgAkEBaiECQQAoApChECIBDQALC0EAIQEgAEG0AWpBACgCqKEQEDoCQCAALQD8AUUNACAAQYACaiAAQbQBakHIAPwKAABB2IUQIQQDQCAAQeAOakEIaiAEQQhqKAIANgIAIAAgBCkCADcD4A4gAEHwDmogAEGAAmogAEHgDmoQPSAAKALgDiEDIAAqAvwOIgggACoC9A4iCZMgACoC+A4iCiAAKgLwDiILkxA1IQwgAEHIAmogAWoiAkH0AGogA7MiDTgCACACQewAakKAgICAgICAwD83AgAgAkHgAGogDTgCACACQdgAakKAgICAgICAwD83AgAgAkHMAGogDTgCACACQcQAakKAgICAgICAwD83AgAgAkE4aiANOAIAIAJBMGpCgICAgICAgMA/NwIAIAJBJGogDTgCACACQRxqQoCAgICAgIDAPzcCACACQRBqIA04AgAgAkEIakKAgICAgICAwD83AgAgDBC8ASEOIAJB6ABqQwAAoEFDAAAgQSADQQlGGyINIAxD2w/JP5IiDxC8AZQiECAIIA0gDpQiDpIiCJIiETgCACAMELYBIRIgAkHkAGogDSAPELYBlCIMIAogDSASlCINkiIKkiIPOAIAIAJB1ABqIAkgDpMiCSAQkyIOOAIAIAJB0ABqIAsgDZMiDSAMkyILOAIAIAJBwABqIAggEJM4AgAgAkE8aiAKIAyTOAIAIAJBLGogETgCACACQShqIA84AgAgAkEYaiAJIBCSOAIAIAJBFGogDSAMkjgCACACQQRqIA44AgAgAiAL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NwJsIAFCgICAgBA3AmQgAUEBNgJgIAFCgYCAgMAANwJYIAFBloAQNgJUIAMgAUHUAGpBABAZIgJB//8DcQ0AIAFBiAFqEEggAS8BjAEiAg0AIAEgASgCiAE2AsABIAFCgYCAgBA3ArgBIAFChICAgBA3ArABIAFCoICAgBA3AqgBIAFCoICAgBA3AqABIAFBATYCnAEgAUKBgICAwAA3ApQBIAFBkIAQNgKQASADIAFBkAFqQQAQGSICQf//A3ENACABQcQBahBIIAEvAcgBIgINACABIAEoAsQBNgL8ASABQoKAgIAQNwL0ASABQoSAgIAQNwLsASABQqCAgIAQNwLkASABQsCAgIAQNwLcASABQQE2AtgBIAFCgYCAgMAANwLQASABQZqAEDYCzAEgAyABQcwBakEAEBkiAkH//wNxDQAgAUGAAmoQSCABLwGEAiICDQAgASABKAKAAjYCuAIgAUKDgICAEDcCsAIgAUKEgICAEDcCqAIgAUKggICAEDcCoAIgAULggICAEDcCmAIgAUEBNgKUAiABQoGAgIDAADcCjAIgAUGYgBA2AogCIAMgAUGIAmpBABAZIgJB//8DcQ0AAkBByIgQQRBBARAPIgINACAAQQw7AQQMBAsgAhAEIgINAUEVIQILIAAgAjsBBAwCCyADIAJBABAFAkACQCADEAIiAg0AQayFECECDAELIAEgAjYCiAIgAUEAOwGMAiABQYgCaiECCwJAIAIvAQQiAkUNACAAIAI7AQQMAgsgAUGIAWoQdgJAAkAgAS8BjAEiAg0AIAFBqAFqQgA3AgAgAUGwAWpCADcCACABQgA3AqABIAFBEjYCnAEgAUKDgICA0AA3ApQBIAFBlYQQNgKQASABIAEoAogBNgLAASABQoCAgIAQNwK4ASADIAFBkAFqQQEQGSICQf//A3ENACABQdQAahB2IAEvAVgiAg0AAkBBzwBBAEEAIAEoAlQQAyICRQ0AAkBBABAEIgQNACAAQRU7AQQMBQsgBEEAIAIQASABQcQBahB3IAEvAcgBIgINASABQeQBakIANwIAIAFB7AFqQgA3AgAgAUIANwLcASABQRI2AtgBIAFCiICAgNAANwLQASABQeKBEDYCzAEgASABKALEATYC/AEgAUKBgICAEDcC9AEgAyABQcwBakEBEBkiAkH//wNxDQEgAUHUAGoQdyABLwFYIgINAUHQAEEAQQAgASgCVBADIgJFDQAgBEEBIAIQASABQYACahB3IAEvAYQCIgINASABQaACakIANwIAIAFBqAJqQgA3AgAgAUIANwKYAiABQRI2ApQCIAFCiICAgNAANwKMAiABQYyEEDYCiAIgASABKAKAAjYCuAIgAUKCgICAEDcCsAIgAyABQYgCakEBEBkiAkH//wNxDQEgAUHUAGoQdyABLwFYIgINAUHRAEEAQQAgASgCVBADIgINAgtBDSECCyAAIAI7AQQMAgsgBEECIAIQASADIARBARAFIAMQBiABIAM2AkAgAUEAOwFEIAFBwABqIQILIAAgAikDADcCAAsgAUHAAmokAAuAAQEBfyMAQRBrIgIkACACIAA2AgRBACEAAkBBAC0AvKMQDQAgAkF/NgIIIAIgAkEIajYCDCACQQhqIQALAkACQAJAAkAgASACQQRqQQQgABAQQX9qDgMCAAEDC0HahBBBIhB4AAtBv4QQQRoQeAALQaSEEEEaEHgACyACQRBqJAALhAEBAX8jAEEQayIDJAAgAyABNgIEIAMgADYCAEEAIQECQEEALQC8oxANACADQX82AgggAyADQQhqNgIMIANBCGohAQsCQAJAAkACQCACIANBCCABEBBBf2oOAwIAAQMLQdqEEEEiEHgAC0G/hBBBGhB4AAtBpIQQQRoQeAALIANBEGokAAvYBwEEfyMAQfACayIBJAACQAJAAkBBAEE5EAAiAkUNACABIAI2AgAgAUEAOwEEIAEhAgwBCyABQg43AxggAUIANwMQIAFBgIAENgIwIAFCgICAgBA3AyggAUKCgICAEDcDICABQunBgbKIw+CHu383AwggAUE4aiABQQhqEBcCQCABLwE8IgJFDQAgACACOwEEDAILQQBBOSABKAI4IgMQAQJAAkACQEEAQT4QACIEDQAgAUKMgICAoAE3A5ABIAFCADcDiAEgAUGEgAQ2AqgBIAFCqICAgBA3A6ABIAFCgoCAgBA3A5gBIAFC1MueirbrwOtRNwOAASABQbABaiABQYABahAXIAEvAbQBIgINAUEAQT4gASgCsAEiBBABIAFBuAFqEIsBIAEvAbwBIgINASABIAEoArgBNgLwASABQoCAgIAQNwLoASABQoiAgIAQNwLgASABQsCAgIAQNwLYASABQoCA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oxAQdQuvBgEEfyMAQdABayIBJAACQAJAAkBBAEE6EAAiAkUNACABIAI2AgggAUEAOwEMIAFBCGohAgwBCyABQQA2AiQgAUKFgICAIDcCHCABQaeAEDYCGCABQYSABDYCOCABQoiAgIAQNwMwIAFCADcDKCABQo3N3ebqxrSMPDcDECABQcAAaiABQRBqEBcCQCABLwFEIgJFDQAgACACOwEEDAILQQBBOiABKAJAIgIQASABQdQAahBIAkACQCABLwFYIgMNACABIAEoAlQ2AowBIAFCgICAgBA3AoQBIAFChICAgBA3AnwgAUKggICAEDcCdCABQoCAgIAQNwJsIAFBATYCaCABQoGAgIDAADcCYCABQZaAEDYCXCACIAFB3ABqQQAQGSIDQf//A3ENACABQZABahBIIAEvAZQBIgMNACABIAEoApABNgLIASABQoGAgIAQNwLAASABQoSAgIAQNwK4ASABQqCAgIAQNwKwASABQqCAgIAQNwKoASABQQE2AqQBIAFCgYCAgMAANwKcASABQZCAEDYCmAEgAiABQZgBakEAEBkiA0H//wNxDQACQEGwihBBCEEBEA8iAw0AIABBDDsBBAwECyADEAQiAw0BQRUhAwsgACADOwEEDAILIAIgA0EAEAUCQAJAIAIQAiIDDQBBrIUQIQMMAQsgASADNgKYASABQQA7AZwBIAFBmAFqIQMLAkAgAy8BBCIDRQ0AIAAgAzsBBAwCCyABQZABahCgAQJAAkAgAS8BlAEiAw0AIAFBsAFqQgA3AgAgAUG4AWpCADcCACABQgA3AqgBIAFBEjYCpAEgAUKDgICA0AA3ApwBIAFBlYQQNgKYASABIAEoApABNgLIASABQoCAgIAQNwLAASACIAFBmAFqQQEQGSIDQf//A3ENACABQdwAahCgASABLwFgIgMNAAJAQc8AQQBBACABKAJcEAMiBA0AIABBDTsBBAwEC0EAEAQiAw0BQRUhAwsgACADOwEEDAILIANBACAEEAEgAiADQQEQBSACEAYgASACNgJIIAFBADsBTCABQcgAaiECCyAAIAIpAwA3AgALIAFB0AFqJAALawEBfyMAQTBrIgIkACACQRBqIAFBEGopAgA3AwAgAkEgaiABQSBqKQIANwMAIAIgASkCCDcDCCACIAEpAhg3AxggAkEoaiACQQhqIAJBCGpBEGogABEBACABIAIpAyg3AgAgAkEwaiQAQQALWwEBfyMAQSBrIgIkACACQQhqIAFBDGopAgA3AwAgAkEYaiABQRxqKQIANwMAIAIgASkCBDcDACACIAEpAhQ3AxAgASACIAJBEGogABEIADgCACACQSBqJABBAAsKACAAIAEQjwEACwkAIAAgARARAAsSACAAIAEgAkEAKALAoxAQoQELEgAgACABIAJBACgCxKMQEKEBCxIAIAAgASACQQAoAsijEBChAQsSACAAIAEgAkEAKALMoxAQoQELEgAgACABIAJBACgC0KMQEKEBCxIAIAAgASACQQAoAtSjEBChAQsSACAAIAEgAkEAKALYoxAQoQELEgAgACABIAJBACgC3KMQEKEBCxIAIAAgASACQQAoAuCjEBChAQsSACAAIAEgAkEAKALkoxAQoQELEgAgACABIAJBACgC6KMQEKEBCxIAIAAgASACQQAoAuyjEBChAQsSACAAIAEgAkEAKALwoxAQoQELEgAgACABIAJBACgC9KMQEKEBCxIAIAAgASACQQAoAvijEBChAQsSACAAIAEgAkEAKAL8oxAQoQEL2gcBBH8jAEHwAmsiASQAAkACQAJAQQBBPBAAIgJFDQAgASACNgIAIAFBADsBBCABIQIMAQsgAUIONwMYIAFCADcDECABQYCABDYCMCABQoCAgIAQNwMoIAFCgoCAgBA3AyAgAULTqrHTx+u9mlY3AwggAUE4aiABQQhqEBcCQCABLwE8IgJFDQAgACACOwEEDAILQQBBPCABKAI4IgMQAQJAAkACQEEAQT0QACIEDQAgAUKMgICAoAE3A5ABIAFCADcDiAEgAUGEgAQ2AqgBIAFCmICAgBA3A6ABIAFCgoCAgBA3A5gBIAFC7ZSGys6+x7PtADcDgAEgAUGwAWogAUGAAWoQFyABLwG0ASICDQFBAEE9IAEoArABIgQQASABQbgBahCLASABLwG8ASICDQEgASABKAK4ATYC8AEgAUKAgICAEDcC6AEgAUKIgICAEDcC4AEgAULAgICAEDcC2AEgAUKAgICAEDcC0AEgAUEBNgLMASABQoaAgIDQADcCxAEgAUGBghA2AsABIAQgAUHAAWpBABAZIgJB//8DcQ0BIAFB9AFqEIsBIAEvAfgBIgINASABIAEoAvQBNgKsAiABQoGA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/wODhqciBWhBfWoiAkENSQ0AAkBCAUEgIAFBg4AEakEQdkF/amdrrUL//wODhqciAWhBAnRBkKUQaiIFKAIAIgJFDQAgBSABQRB0IAJqQXxqKAIANgIADAILQQAgAUAAIgJBEHQgAkF/RhshAgwBCwJAIAJBAnQiBkGopBBqIgEoAgAiAkUNACABIAUgAmpBfGooAgA2AgAMAQsCQCAGQdykEGoiASgCACICQf//A3ENAEEAIQICQAJAQQAoApClECIGRQ0AQQAgBigC/P8DNgKQpRAgBiECDAELQQFAACIGQQFqQQJJDQIgBkEQdCECCyABIAIgBWo2AgAMAQsgASACIAVqNgIACyAEQRBqJAAgAgvVAQECfyMAQRBrIgYkACAGIANBH3E6AA9BfyAEQQRqIgcgByAESRsiBEEBIAN0IgMgBCADSxshBAJAAkACQEIBQSAgAkEEaiICIAMgAiADSxsiA0F/amdrrUL//wODhqciAmhBfWpBDEsNACAEQX9qZyIDDQFBACEDDAILQgFBICADQYOABGpBEHZBf2pna61C//8Dg4anQgFBICAEQYOABGpBEHZBf2pna61C//8Dg4anRiEDDAELIAJCAUEgIANrrUL//wODhqdGIQMLIAZBEGokACADC9QBAQJ/IwBBEGsiBiQAIAYgA0EfcToAD0F/IARBBGoiByAHIARJGyIEQQEgA3QiAyAEIANLGyEEAkACQAJAQgFBICACQQRqIgIgAyACIANLGyIDQX9qZ2utQv//A4OGpyICaEF9akEMSw0AIARBf2pnIgNFDQEgAkIBQSAgA2utQv//A4OGp0cNAQwCC0IBQSAgA0GDgARqQRB2QX9qZ2utQv//A4OGp0IBQSAgBEGDgARqQRB2QX9qZ2utQv//A4OGp0YNAQtBACEBCyAGQRBqJAAgAQu2AQECfyMAQRBrIgUkACAFIANBH3E6AA8CQAJAQgFBICACQQRqIgJBASADdCIDIAIgA0sbIgNBf2pna61C//8Dg4anIgJoQX1qIgZBDU8NACAGQQJ0QaikEGohAyABIAJqQXxqIQIMAQtCAUEgIANBg4AEakEQdkF/amdrrUL//wODhqciAmhBAnRBkKUQaiEDIAEgAkEQdGpBfGohAgsgAiADKAIANgIAIAMgATYCACAFQRBqJAALdQEBfiAAIAQgAX4g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AkFwaisDAKAgAkF4aisDAKAgAisDAKAhESACQSBqIQIgCCAHQQRqIgdHDQALIAdBAWohAgsgBkUNACAFQfABaiACQQN0aiECA0AgESACKwMAoCERIAJBCGohAiAGQX9qIgYNAAsLIAEgEZogESATGzkDCAwBCwJAAkAgDUEATg0ARAAAAAAAAAAAIREMAQsCQAJAIA1BAWpBA3EiBw0ARAAAAAAAAAAAIREgDSEGDAELIAVB8AFqIA1BA3RqIQJEAAAAAAAAAAAhESANIQYDQCAGQX9qIQYgESACKwMAoCERIAJBeGohAiAHQX9qIgcNAAsLIA1BA0kNACAGQQFqIQcgBkEDdCAFQfABampBaGohAgNAIBEgAkEYaisDAKAgAkEQaisDAKAgAkEIaisDAKAgAisDAKAhESACQWBqIQIgB0F8aiIHDQALCyABIBGaIBEgExs5AwALIAVBsARqJAAgH0EHcQvmCAMDfgV/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/D3FBgnhqIQYLQQAhCAJAIAVCNIin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oLYhAAwCCyAFIAWiIgVEgV4M/f//37+iRAAAAAAAAPA/oCAFIAWiIgREQjoF4VNVpT+ioCAFIASiIAVEaVDu4EKT+T6iRCceD+iHwFa/oKKgtowhAAwBCyAAIACTIQALIAFBEGokACAACwvkIQIAQYCAEAuIIWUAAABmAAAAZwAAAGgAAAB5AGluZGV4AHYAdQBzbG90AHR5cGVzLlBvaW50AHJlbW92ZV9hc3NldABhZGRfYXNzZXQAYXNzZXQuU2VyaWFsaXplZEFzc2V0AGJpdE9mZnNldABwb2ludHMAcmVzZXRfYXNzZXRzAGltcG9ydF9pY29ucwBjb25uZWN0X3dlYl9ncHVfcHJvZ3JhbXMAaW5kZXguV2ViR3B1UHJvZ3JhbXMAZmxhZ3MAcGlja3NfcmVuZGVyAGNhbnZhc19yZW5kZXIAb25fcG9pbnRlcl91cABhbmdsZV90bwBvbl9wb2ludGVyX2Rvd24AYWxpZ24AcmV0dmFsAG9uX3VwZGF0ZV9waWNrAGNvbm5lY3Rfb25fYXNzZXRfc2VsZWN0aW9uX2NhbGxiYWNrAGNvbm5lY3Rfb25fYXNzZXRfdXBkYXRlX2NhbGxiYWNrAGxlbmd0aABkcmF3X21zZGYAYml0U2l6ZQBieXRlU2l6ZQBvbl9wb2ludGVyX21vdmUAb25fcG9pbnRlcl9sZWF2ZQBkZXN0cm95X3N0YXRlAGluaXRfc3RhdGUAZHJhd190ZXh0dXJlAHBpY2tfdGV4dHVyZQBzdHJ1Y3R1cmUAc2lnbmF0dXJlAHR5cGUAbmFtZQBkcmF3X3RyaWFuZ2xlAHBpY2tfdHJpYW5nbGUAZGlzdGFuY2UAbWlkAHRleHR1cmVfaWQASmF2YVNjcmlwdCBmdW5jdGlvbiBmYWlsZWQATXVsdGl0aHJlYWRpbmcgbm90IGVuYWJsZWQAUHJvbWlzZSBlbmNvdW50ZXJlZCBpbiBtYWluIHRocmVhZAB0eXBlcy5Qb2ludFVWAEFTU0VUX0lEX1RSRVNIT0xEADIAMQAwAAAAAAAAEQAAAAAAAAAYAAAA6AMAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAACAPwAAAAAAAIA/AQAAAAAAAAABAAAAAQAAAAAAAAADAAAAAgAAAAEAAAAAAAAAAgAAAAEAAAACAAAAAwAAAAIAAAABAAAAAwAAAAIAAAADAAAABAAAAAMAAAAAAAAABAAAAAMAAAACAAAABQAAAAAAAAABAAAABgAAAAEAAAACAAAABwAAAAIAAAADAAAACAAAAAMAAAAAAAAACQAAAAAAAAAAAAAAAACAPwAAgD8AAIA/AACAPwAAAAAAAAAAAAAAAAAAgD8vAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADoAAAA7AAAAPAAAAD0AAAA+AAAAPwAAAEAAAABBAAAAQgAAAEMAAABEAAAARQAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAAEwAAABNAAAATgAAADhj7T7aD0k/Xph7P9oPyT9pN6wxaCEiM7QPFDNoIaIzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAACAAAAAhAAAAIgAAACMAAAAkAAAAJQAAACYAAAAnAAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAABVAAAAVgAAAFcAAABYAAAAWQAAAFoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABhAAAAYgAAAGMAAAAAAAAAIgAAAAAAAAAjAAAAAAAAAAAAAAAAAAAAAAAEAGkAAABqAAAAawAAAGwAAADbD0k/2w9Jv+TLFkDkyxbAAAAAAAAAAIDbD0lA2w9JwAMAAAAEAAAABAAAAAYAAACD+aIARE5uAPwpFQDRVycA3TT1AGLbwAA8mZUAQZBDAGNR/gC73qsAt2HFADpuJADSTUIASQbgAAnqLgAcktEA6x3+ACmxHADoPqcA9TWCAES7LgCc6YQAtCZwAEF+XwDWkTkAU4M5AJz0OQCLX4QAKPm9APgfOwDe/5cAD5gFABEv7wAKWosAbR9tAM9+NgAJyycARk+3AJ5mPwAt6l8Auid1AOXrxwA9e/EA9zkHAJJSigD7a+oAH7FfAAhdjQAwA1YAe/xGAPCrawAgvM8ANvSaAOOpHQBeYZEACBvmAIWZZQCgFF8AjUBoAIDY/wAnc00ABgYxAMpWFQDJqHMAe+JgAGuMwAAZxEcAzWfDAAno3ABZgyoAi3bEAKYclgBEr90AGVfRAKU+BQAFB/8AM34/AMIy6ACYT94Au30yACY9wwAea+8An/heADUfOgB/8soA8YcdAHyQIQBqJHwA1W76ADAtdwAVO0MAtRTGAMMZnQCtxMIALE1BAAwAXQCGfUYA43EtAJvGmgAzYgAAtNJ8ALSnlwA3VdUA1z72AKMQGABNdvwAZJ0qAHDXqwBjfPgAerBXABcV5wDASVYAO9bZAKeEOAAkI8sA1op3AFpUIwAAH7kA8QobABnO3wCfMf8AZh5qAJlXYQCs+0cAfn/YACJltwAy6IkA5r9gAO/EzQBsNgkAXT/UABbe1wBYO94A3puSANIiKAAohugA4lhNAMbKMgAI4xYA4H3LABfAUADzHacAGOBbAC4TNACDEmIAg0gBAPWOWwCtsH8AHunyAEhKQwAQZ9MAqt3YAK5fQgBqYc4ACiikANOZtAAGpvIAXHd/AKPCgwBhPIgAinN4AK+MWgBv170ALaZjAPS/ywCNge8AJsFnAFXKRQDK2TYAKKjSAMJhjQASyXcABCYUABJGmwDEWcQAyMVEAE2ykQAAF/MA1EOtAClJ5QD91RAAAL78AB6UzABwzu4AEz71AOzxgACz58MAx/goAJMFlADBcT4ALgmzAAtF8wCIEpwAqyB7AC61nwBHksIAezIvAAxVbQByp5AAa+cfADHLlgB5FkoAQXniAPTfiQDolJcA4uaEAJkxlwCI7WsAX182ALv9DgBImrQAZ6RsAHFyQgCNXTIAnxW4ALzlCQCNMSUA93Q5ADAFHAANDAEASwhoACzuWABHqpAAdOcCAL3WJAD3faYAbkhyAJ8W7wCOlKYAtJH2ANFTUQDPCvIAIJgzAPVLfgCyY2gA3T5fAEBdAwCFiX8AVVIpADdkwABt2BAAMkgyAFtMdQBOcdQARVRuAAsJwQAq9WkAFGbVACcHnQBdBFAAtDvbAOp2xQCH+RcASWt9AB0nugCWaSkAxsysAK0UVACQ4moAiNmJACxyUAAEpL4AdweUAPMwcAAA/CcA6nGoAGbCSQBk4D0Al92DAKM/lwBDlP0ADYaMADFB3gCSOZ0A3XCMABe35wAI3zsAFTcrAFyAoABagJMAEBGSAA/o2ABsgK8A2/9LADiQDwBZGHYAYqUVAGHLuwDHibkAEEC9ANLyBABJdScA67b2ANsiuwAKFKoAiSYvAGSDdgAJOzMADpQaAFE6qgAdo8IAr+2uAFwmEgBtwk0ALXqcAMBWlwADP4MACfD2ACtAjABtMZkAObQHAAwgFQDYw1sA9ZLEAMatSwBOyqUApzfNAOapNgCrkpQA3UJoABlj3gB2jO8AaItSAPzbNwCuoasA3xUxAACuoQAM+9oAZE1mAO0FtwApZTAAV1a/AEf/OgBq+bkAdb7zACiT3wCrgDAAZoz2AATLFQD6IgYA2eQdAD2zpABXG48ANs0JAE5C6QATvqQAMyO1APCqGgBPZagA0sGlAAs/DwBbeM0AI/l2AHuLBACJF3IAxqZTAG9u4gDv6wAAm0pYAMTatwCqZroAds/PANECHQCx8S0AjJnBAMOtdwCGSNoA912gAMaA9ACs8C8A3eyaAD9cvADQ3m0AkMcfACrbtgCjJToAAK+aAK1TkwC2VwQAKS20AEuAfgDaB6cAdqoOAHtZoQAWEioA3LctAPrl/QCJ2/4Aib79AOR2bAAGqfwAPoBwAIVuFQD9h/8AKD4HAGFnMwAqGIYATb3qALPnrwCPbW4AlWc5ADG/WwCE10gAMN8WAMctQwAlYTUAyXDOADDLuAC/bP0ApACiAAVs5ABa3aAAIW9HAGIS0gC5XIQAcGFJAGtW4ACZUgEAUFU3AB7VtwAz8cQAE25fAF0w5ACFLqkAHbLDAKEyNgAIt6QA6rHUABb3IQCPaeQAJ/93AAwDgACNQC0AT82gACClmQCzotMAL10KALT5QgAR2ssAfb7QAJvbwQCrF70AyqKBAAhqXAAuVRcAJwBVAH8U8ADhB4YAFAtkAJZBjQCHvt4A2v0qAGsltgB7iTQABfP+ALm/ngBoak8ASiqoAE/EWgAt+LwA11qYAPTHlQANTY0AIDqmAKRXXwAUP7EAgDiVAMwgAQBx3YYAyd62AL9g9QBNZREAAQdrAIywrACywNAAUVVIAB77DgCVcsMAowY7AMBANQAG3HsA4EXMAE4p+gDWysgA6PNBAHxk3gCbZNgA2b4xAKSXwwB3WNQAaePFAPDaEwC6OjwARhhGAFV1XwDSvfUAbpLGAKwuXQAORO0AHD5CAGHEhwAp/ekA59bzACJ8ygBvkTUACODFAP/XjQBuauIAsP3GAJMIwQB8XXQAa62yAM1unQA+cnsAxhFqAPfPqQApc98Atcm6ALcAUQDisg0AdLokAOV9YAB02IoADRUsAIEYDAB+ZpQAASkWAJ96dgD9/b4AVkXvANl+NgDs2RMAi7q5AMSX/AAxqCcA8W7DAJTFNgDYqFYAtKi1AM/MDgASiS0Ab1c0ACxWiQCZzuMA1iC5AGteqgA+KpwAEV/MAP0LSgDh9PsAjjttAOKGLADp1IQA/LSpAO/u0QAuNckALzlhADghRAAb2cgAgfwKAPtKagAvHNgAU7SEAE6ZjABUIswAKlXcAMDG1gALGZYAGnC4AGmVZAAmWmAAP1LuAH8RDwD0tREA/Mv1ADS8LQA0vO4A6F3MAN1eYABnjpsAkjPvAMkXuABhWJsA4Ve8AFGDxgDYPhAA3XFIAC0c3QCvGKEAISxGAFnz1wDZepgAnlTAAE+G+gBWBvwA5XmuAIkiNgA4rSIAZ5PcAFXoqgCCJjgAyuebAFENpACZM7EAqdcOAGkFSABlsvAAf4inAIhMlwD50TYAIZKzAHuCSgCYzyEAQJ/cANxHVQDhdDoAZ+tCAP6d3wBe1F8Ae2ekALqsegBV9qIAK4gjAEG6VQBZbggAISqGADlHgwCJ4+YA5Z7UAEn7QAD/VukAHA/KAMVZigCU+isA08HFAA/FzwDbWq4AR8WGAIVDYgAhhjsALHmUABBhhwAqTHsAgCwaAEO/EgCIJpAAeDyJAKjE5ADl23sAxDrCACb06gD3Z4oADZK/AGWjKwA9k7EAvXwLAKRR3AAn3WMAaeHdAJqUGQCoKZUAaM4oAAnttABEnyAATpjKAHCCYwB+fCMAD7kyAKf1jgAUVucAIfEIALWdKgBvfk0ApRlRALX5qwCC39YAlt1hABY2AgDEOp8Ag6KhAHLtbQA5jXoAgripAGsyXABGJ1sAADTtANIAdwD89FUAAVlNAOBxgAAAAABA+yH5PwAAAAAtRHQ+AAAAgJhG+DwAAABgUcx4OwAAAICDG/A5AAAAQCAlejgAAACAIoLjNgAAAAAd82k1AEGIoRALTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAKqqqqroAwAAqqqqqgAAAAAAAAAAAAAAAAAABAA=\");\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\":109,\"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 connect_on_asset_selection_callback: v4,\n ASSET_ID_TRESHOLD: v5,\n init_state: v6,\n add_asset: v7,\n remove_asset: v8,\n on_update_pick: v9,\n on_pointer_down: v10,\n on_pointer_up: v11,\n on_pointer_move: v12,\n on_pointer_leave: v13,\n canvas_render: v14,\n picks_render: v15,\n reset_assets: v16,\n destroy_state: v17,\n import_icons: v18,\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 connect_on_asset_selection_callback,\n v5 as ASSET_ID_TRESHOLD,\n v6 as init_state,\n v7 as add_asset,\n v8 as remove_asset,\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 on_pointer_leave,\n v14 as canvas_render,\n v15 as picks_render,\n v16 as reset_assets,\n v17 as destroy_state,\n v18 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// handles bools, including implicit ones in optional pointers, where an address\n// of zero would be treated as boolean false\n\nvar bool = mixin({\n getAccessorBool(access, member) {\n const { byteSize } = member;\n const bitSize = byteSize * 8;\n const f = this.getAccessor(access, { type: MemberType.Uint, bitSize, byteSize });\n if (access === 'get') {\n return function(offset, littleEndian) {\n return !!f.call(this, offset, littleEndian);\n }\n } else {\n const zero = (bitSize <= 32) ? 0 : 0n;\n const one = (bitSize <= 32) ? 1 : 1n;\n return function(offset, value, littleEndian) {\n f.call(this, offset, value ? one : zero, littleEndian);\n }\n }\n }\n});\n\nexport { bool 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';\n\nvar bool = mixin({\n defineMemberBool(member) {\n return this.defineMemberUsing(member, this.getAccessor);\n },\n});\n\nexport { bool 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","observer","ResizeObserver","entries","entry","target","devicePixelContentBoxSize","inlineSize","contentBoxSize","devicePixelRatio","blockSize","observe","box","clientWidth","clientHeight","getDevice","navigator","gpu","Error","adapter","requestAdapter","requestDevice","lost","then","info","console","error","message","reason","NUM_PIXELS","PickManager","constructor","isPreviousPickDone","this","pickBuffer","createBuffer","size","usage","GPUBufferUsage","MAP_READ","COPY_DST","pickTexture","createTexture","format","GPUTextureUsage","COPY_SRC","RENDER_ATTACHMENT","pickDepthTexture","startPicking","encoder","descriptor","label","colorAttachments","view","createView","loadOp","clearValue","storeOp","pass","beginRenderPass","setViewport","setScissorRect","end","copyTextureToBuffer","texture","origin","x","y","buffer","createMatrix","canvasMatrix","tx","ty","scaling","translation","reduce","accMatrix","rotationMatrix","multiply","asyncPick","mapAsync","GPUMapMode","READ","id","Uint32Array","getMappedRange","i","afterPickEventsQueue","length","requireNewPick","cb","splice","unmap","err","OUTSIDE_CANVAS","pointer","initMouseController","onStartProcessing","updatePointer","e","rect","getBoundingClientRect","clientX","left","clientY","top","addEventListener","update","push","move","bind","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","vertexBuffer","byteLength","VERTEX","queue","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","TEXTURE_BINDING","buffer0","mappedAtCreation","buffer1","blurParamsBuffer","computeConstants","computeBindGroup0","computeBindGroup1","computeBindGroup2","blockDim","computePass","beginComputePass","dispatchWorkgroups","ceil","settings","getCanvasMatrix","ortho","multisampleTexture","depthTexture","getMultisampleTexture","destroy","sampleCount","getCanvasRenderDescriptor","context","canvasTexture","getCurrentTexture","getDepthTexture","resolveTarget","initCreator","onAssetsUpdate","onAssetSelect","onProcessingUpdate","loadingTextures","isMouseEventProcessing","updateProcessing","texLoadings","getContext","getPreferredCanvasFormat","configure","serializedData","serializedAssetsTextureUrl","asset","textureId","texture_id","points","point","u","v","url","flatMap","char","stopCreator","addImage","removeAsset","resetAssets","assets","withSnapshot","serializedAssets","Promise","allSettled","resolve","reject","filter","result","status","value","unconfigure","runCreator","onEmptyEvents","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","numMipLevels","sizes","maxSize","log2","loadingTexture","init","_device","_updateProcessing","_","textureData","Uint8Array","flat","writeTexture","bytesPerRow","textureWidth","getLoadingTexture","add","img","Image","src","onload","source","options","mipLevelCount","mips","flipY","depthOrArrayLayers","copyExternalImageToTexture","copySourceToTexture","createTextureFromSource","onerror","getTexture","getUrl","clamp","getDefaultPoints","texWidth","texHeight","projectWidth","projectHeight","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","s43","s44","s45","s46","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","o49","o50","o51","o52","U","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","r","setTimeout","loadModule","linkVariables","v0","v1","getSpecialExports","connect_web_gpu_programs","v2","connect_on_asset_update_callback","v3","connect_on_asset_selection_callback","v4","ASSET_ID_TRESHOLD","v5","init_state","v6","add_asset","v7","remove_asset","v8","on_update_pick","v9","on_pointer_down","v10","on_pointer_up","v11","on_pointer_move","v12","on_pointer_leave","v13","canvas_render","v14","picks_render","v15","reset_assets","v16","destroy_state","v17","import_icons","v18","accessorCache","Map","getAccessor","access","member","names","unaligned","Int","Uint","Bool","accessorName","join","accessor","DataView","prototype","get","handlerName","pop","getAccessorBool","call","zero","one","getAccessorInt","signMask","valueMask","n","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","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","awaiting","argStruct","startContext","updatePointerTargets","updateShadowTargets","endContext","onError","onReturn","retval","hasCallback","hasOwnProperty","Symbol","toStringTag","promise","finalizeAsyncCall","asyncIterator","pipeContents","defineArgIterator","thisEnv","allocatorTotal","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","defineArrayEntries","defineArrayIterator","getStructEntries","getStructEntriesIterator","getStructIterator","props","defineStructEntries","defineStructIterator","bindSlot","defineMember","applyTransform","defineBase64","dataView","str","defineMemberBool","defineMemberUsing","defineDataView","defineMemberFloat","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","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__","forEach","body","hasAwait","currentDeps","outerResolve","depQueues","Set","rej","deps","dep","obj","ret","wrapDeps","getResult","fnQueue","q","definition","o","prop","scriptUrl","__webpack_exports__"],"sourceRoot":""}
|