@kreuzberg/wasm 4.0.0-rc.10 → 4.0.0-rc.12
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/README.md +49 -0
- package/dist/index.cjs +25 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +0 -43
- package/dist/index.d.ts +0 -43
- package/dist/index.js +25 -1
- package/dist/index.js.map +1 -1
- package/package.json +139 -138
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/.pnpm/tesseract-wasm@0.11.0/node_modules/tesseract-wasm/dist/lib.js","../typescript/index.ts","../typescript/adapters/wasm-adapter.ts","../typescript/ocr/registry.ts","../typescript/ocr/tesseract-wasm-backend.ts","../typescript/runtime.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nconst proxyMarker = Symbol(\"Comlink.proxy\");\nconst createEndpoint = Symbol(\"Comlink.endpoint\");\nconst releaseProxy = Symbol(\"Comlink.releaseProxy\");\nconst finalizer = Symbol(\"Comlink.finalizer\");\nconst throwMarker = Symbol(\"Comlink.thrown\");\nconst isObject = (val) => (typeof val === \"object\" && val !== null) || typeof val === \"function\";\n/**\n * Internal transfer handle to handle objects marked to proxy.\n */\nconst proxyTransferHandler = {\n canHandle: (val) => isObject(val) && val[proxyMarker],\n serialize(obj) {\n const { port1, port2 } = new MessageChannel();\n expose(obj, port1);\n return [port2, [port2]];\n },\n deserialize(port) {\n port.start();\n return wrap(port);\n },\n};\n/**\n * Internal transfer handler to handle thrown exceptions.\n */\nconst throwTransferHandler = {\n canHandle: (value) => isObject(value) && throwMarker in value,\n serialize({ value }) {\n let serialized;\n if (value instanceof Error) {\n serialized = {\n isError: true,\n value: {\n message: value.message,\n name: value.name,\n stack: value.stack,\n },\n };\n }\n else {\n serialized = { isError: false, value };\n }\n return [serialized, []];\n },\n deserialize(serialized) {\n if (serialized.isError) {\n throw Object.assign(new Error(serialized.value.message), serialized.value);\n }\n throw serialized.value;\n },\n};\n/**\n * Allows customizing the serialization of certain values.\n */\nconst transferHandlers = new Map([\n [\"proxy\", proxyTransferHandler],\n [\"throw\", throwTransferHandler],\n]);\nfunction isAllowedOrigin(allowedOrigins, origin) {\n for (const allowedOrigin of allowedOrigins) {\n if (origin === allowedOrigin || allowedOrigin === \"*\") {\n return true;\n }\n if (allowedOrigin instanceof RegExp && allowedOrigin.test(origin)) {\n return true;\n }\n }\n return false;\n}\nfunction expose(obj, ep = globalThis, allowedOrigins = [\"*\"]) {\n ep.addEventListener(\"message\", function callback(ev) {\n if (!ev || !ev.data) {\n return;\n }\n if (!isAllowedOrigin(allowedOrigins, ev.origin)) {\n console.warn(`Invalid origin '${ev.origin}' for comlink proxy`);\n return;\n }\n const { id, type, path } = Object.assign({ path: [] }, ev.data);\n const argumentList = (ev.data.argumentList || []).map(fromWireValue);\n let returnValue;\n try {\n const parent = path.slice(0, -1).reduce((obj, prop) => obj[prop], obj);\n const rawValue = path.reduce((obj, prop) => obj[prop], obj);\n switch (type) {\n case \"GET\" /* MessageType.GET */:\n {\n returnValue = rawValue;\n }\n break;\n case \"SET\" /* MessageType.SET */:\n {\n parent[path.slice(-1)[0]] = fromWireValue(ev.data.value);\n returnValue = true;\n }\n break;\n case \"APPLY\" /* MessageType.APPLY */:\n {\n returnValue = rawValue.apply(parent, argumentList);\n }\n break;\n case \"CONSTRUCT\" /* MessageType.CONSTRUCT */:\n {\n const value = new rawValue(...argumentList);\n returnValue = proxy(value);\n }\n break;\n case \"ENDPOINT\" /* MessageType.ENDPOINT */:\n {\n const { port1, port2 } = new MessageChannel();\n expose(obj, port2);\n returnValue = transfer(port1, [port1]);\n }\n break;\n case \"RELEASE\" /* MessageType.RELEASE */:\n {\n returnValue = undefined;\n }\n break;\n default:\n return;\n }\n }\n catch (value) {\n returnValue = { value, [throwMarker]: 0 };\n }\n Promise.resolve(returnValue)\n .catch((value) => {\n return { value, [throwMarker]: 0 };\n })\n .then((returnValue) => {\n const [wireValue, transferables] = toWireValue(returnValue);\n ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);\n if (type === \"RELEASE\" /* MessageType.RELEASE */) {\n // detach and deactive after sending release response above.\n ep.removeEventListener(\"message\", callback);\n closeEndPoint(ep);\n if (finalizer in obj && typeof obj[finalizer] === \"function\") {\n obj[finalizer]();\n }\n }\n })\n .catch((error) => {\n // Send Serialization Error To Caller\n const [wireValue, transferables] = toWireValue({\n value: new TypeError(\"Unserializable return value\"),\n [throwMarker]: 0,\n });\n ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);\n });\n });\n if (ep.start) {\n ep.start();\n }\n}\nfunction isMessagePort(endpoint) {\n return endpoint.constructor.name === \"MessagePort\";\n}\nfunction closeEndPoint(endpoint) {\n if (isMessagePort(endpoint))\n endpoint.close();\n}\nfunction wrap(ep, target) {\n return createProxy(ep, [], target);\n}\nfunction throwIfProxyReleased(isReleased) {\n if (isReleased) {\n throw new Error(\"Proxy has been released and is not useable\");\n }\n}\nfunction releaseEndpoint(ep) {\n return requestResponseMessage(ep, {\n type: \"RELEASE\" /* MessageType.RELEASE */,\n }).then(() => {\n closeEndPoint(ep);\n });\n}\nconst proxyCounter = new WeakMap();\nconst proxyFinalizers = \"FinalizationRegistry\" in globalThis &&\n new FinalizationRegistry((ep) => {\n const newCount = (proxyCounter.get(ep) || 0) - 1;\n proxyCounter.set(ep, newCount);\n if (newCount === 0) {\n releaseEndpoint(ep);\n }\n });\nfunction registerProxy(proxy, ep) {\n const newCount = (proxyCounter.get(ep) || 0) + 1;\n proxyCounter.set(ep, newCount);\n if (proxyFinalizers) {\n proxyFinalizers.register(proxy, ep, proxy);\n }\n}\nfunction unregisterProxy(proxy) {\n if (proxyFinalizers) {\n proxyFinalizers.unregister(proxy);\n }\n}\nfunction createProxy(ep, path = [], target = function () { }) {\n let isProxyReleased = false;\n const proxy = new Proxy(target, {\n get(_target, prop) {\n throwIfProxyReleased(isProxyReleased);\n if (prop === releaseProxy) {\n return () => {\n unregisterProxy(proxy);\n releaseEndpoint(ep);\n isProxyReleased = true;\n };\n }\n if (prop === \"then\") {\n if (path.length === 0) {\n return { then: () => proxy };\n }\n const r = requestResponseMessage(ep, {\n type: \"GET\" /* MessageType.GET */,\n path: path.map((p) => p.toString()),\n }).then(fromWireValue);\n return r.then.bind(r);\n }\n return createProxy(ep, [...path, prop]);\n },\n set(_target, prop, rawValue) {\n throwIfProxyReleased(isProxyReleased);\n // FIXME: ES6 Proxy Handler `set` methods are supposed to return a\n // boolean. To show good will, we return true asynchronously ¯\\_(ツ)_/¯\n const [value, transferables] = toWireValue(rawValue);\n return requestResponseMessage(ep, {\n type: \"SET\" /* MessageType.SET */,\n path: [...path, prop].map((p) => p.toString()),\n value,\n }, transferables).then(fromWireValue);\n },\n apply(_target, _thisArg, rawArgumentList) {\n throwIfProxyReleased(isProxyReleased);\n const last = path[path.length - 1];\n if (last === createEndpoint) {\n return requestResponseMessage(ep, {\n type: \"ENDPOINT\" /* MessageType.ENDPOINT */,\n }).then(fromWireValue);\n }\n // We just pretend that `bind()` didn’t happen.\n if (last === \"bind\") {\n return createProxy(ep, path.slice(0, -1));\n }\n const [argumentList, transferables] = processArguments(rawArgumentList);\n return requestResponseMessage(ep, {\n type: \"APPLY\" /* MessageType.APPLY */,\n path: path.map((p) => p.toString()),\n argumentList,\n }, transferables).then(fromWireValue);\n },\n construct(_target, rawArgumentList) {\n throwIfProxyReleased(isProxyReleased);\n const [argumentList, transferables] = processArguments(rawArgumentList);\n return requestResponseMessage(ep, {\n type: \"CONSTRUCT\" /* MessageType.CONSTRUCT */,\n path: path.map((p) => p.toString()),\n argumentList,\n }, transferables).then(fromWireValue);\n },\n });\n registerProxy(proxy, ep);\n return proxy;\n}\nfunction myFlat(arr) {\n return Array.prototype.concat.apply([], arr);\n}\nfunction processArguments(argumentList) {\n const processed = argumentList.map(toWireValue);\n return [processed.map((v) => v[0]), myFlat(processed.map((v) => v[1]))];\n}\nconst transferCache = new WeakMap();\nfunction transfer(obj, transfers) {\n transferCache.set(obj, transfers);\n return obj;\n}\nfunction proxy(obj) {\n return Object.assign(obj, { [proxyMarker]: true });\n}\nfunction toWireValue(value) {\n for (const [name, handler] of transferHandlers) {\n if (handler.canHandle(value)) {\n const [serializedValue, transferables] = handler.serialize(value);\n return [\n {\n type: \"HANDLER\" /* WireValueType.HANDLER */,\n name,\n value: serializedValue,\n },\n transferables,\n ];\n }\n }\n return [\n {\n type: \"RAW\" /* WireValueType.RAW */,\n value,\n },\n transferCache.get(value) || [],\n ];\n}\nfunction fromWireValue(value) {\n switch (value.type) {\n case \"HANDLER\" /* WireValueType.HANDLER */:\n return transferHandlers.get(value.name).deserialize(value.value);\n case \"RAW\" /* WireValueType.RAW */:\n return value.value;\n }\n}\nfunction requestResponseMessage(ep, msg, transfers) {\n return new Promise((resolve) => {\n const id = generateUUID();\n ep.addEventListener(\"message\", function l(ev) {\n if (!ev.data || !ev.data.id || ev.data.id !== id) {\n return;\n }\n ep.removeEventListener(\"message\", l);\n resolve(ev.data);\n });\n if (ep.start) {\n ep.start();\n }\n ep.postMessage(Object.assign({ id }, msg), transfers);\n });\n}\nfunction generateUUID() {\n return new Array(4)\n .fill(0)\n .map(() => Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString(16))\n .join(\"-\");\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nfunction nodeEndpoint(nep) {\n const listeners = new WeakMap();\n return {\n postMessage: nep.postMessage.bind(nep),\n addEventListener: (_, eh) => {\n const l = (data) => {\n if (\"handleEvent\" in eh) {\n eh.handleEvent({ data });\n }\n else {\n eh({ data });\n }\n };\n nep.on(\"message\", l);\n listeners.set(eh, l);\n },\n removeEventListener: (_, eh) => {\n const l = listeners.get(eh);\n if (!l) {\n return;\n }\n nep.off(\"message\", l);\n listeners.delete(eh);\n },\n start: nep.start && nep.start.bind(nep),\n };\n}\n\n/**\n * Extract the pixel data from an ImageBitmap.\n */\nfunction imageDataFromBitmap(bitmap) {\n let canvas;\n if (typeof OffscreenCanvas !== \"undefined\") {\n // @ts-expect-error - OffscreenCanvas API is missing\n canvas = new OffscreenCanvas(bitmap.width, bitmap.height);\n }\n else if (typeof HTMLCanvasElement !== \"undefined\") {\n const canvasEl = document.createElement(\"canvas\");\n canvasEl.width = bitmap.width;\n canvasEl.height = bitmap.height;\n canvas = canvasEl;\n }\n else {\n throw new Error(\"No canvas implementation available\");\n }\n const context = canvas.getContext(\"2d\");\n context.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height);\n return context.getImageData(0, 0, bitmap.width, bitmap.height);\n}\n\nfunction defaultWorkerURL() {\n return new URL(\"./tesseract-worker.js\", import.meta.url).href;\n}\nfunction createWebWorker(url) {\n return new Worker(url);\n}\n/**\n * High-level async API for performing document image layout analysis and\n * OCR.\n *\n * In the browser, this class can be constructed directly. In Node, use the\n * `createOCRClient` helper from `node-worker.js`.\n */\nclass OCRClient {\n /**\n * Initialize an OCR engine.\n *\n * This will start a Worker in which the OCR operations will actually be\n * performed.\n *\n */\n constructor({ createWorker = createWebWorker, wasmBinary, workerURL = defaultWorkerURL(), } = {}) {\n const worker = createWorker(workerURL);\n this._worker = worker;\n this._progressListeners = [];\n const endpoint = \"addEventListener\" in worker ? worker : nodeEndpoint(worker);\n const remote = wrap(endpoint);\n // Create a channel for the worker to send us progress updates during\n // operations. We use a separate channel instead of following comlink's\n // recommended recipe for callback arguments for two reasons:\n //\n // 1. If using `comlink.proxy(callback)`, event listeners get added to the\n // MessagePort each time the callback is invoked and removed when the\n // MessagePort receives a \"message\" response. If the callback is triggered\n // many times in one event loop turn, this will trigger warnings from\n // Node about having too many listeners. It is also quite inefficient.\n //\n // 2. Firefox has an issue where messages sent on a newly received port are\n // not dispatched until the next event loop turn. This means that we\n // need to send the port to the worker ahead of time.\n // I think https://bugzilla.mozilla.org/show_bug.cgi?id=1752287 is\n // relevant.\n const { port1, port2 } = new MessageChannel();\n this._progressChannel = port1;\n this._progressChannel.onmessage = (e) => {\n // We ought to have some mechanism to dispatch an update only to\n // applicable listeners. In typical usage there will only be one expensive\n // operation happening at a time for an OCRClient instance (OCR of the\n // currently loaded image), so we can get away with just notifying all\n // registered listeners.\n const { progress } = e.data;\n for (let listener of this._progressListeners) {\n listener(progress);\n }\n };\n this._ocrEngine = remote.createOCREngine({\n wasmBinary,\n }, transfer(port2, [port2]));\n }\n async destroy() {\n this._worker.terminate();\n this._progressChannel.close();\n }\n /**\n * Load a trained model for a specific language. This can be specified either\n * as a URL to fetch or a buffer containing an already-loaded model.\n */\n async loadModel(model) {\n const engine = await this._ocrEngine;\n if (typeof model === \"string\") {\n const response = await fetch(model);\n model = await response.arrayBuffer();\n }\n return engine.loadModel(model);\n }\n /**\n * Load an image into the OCR engine for processing.\n */\n async loadImage(image) {\n // Convert ImageBitmap to ImageData. In browsers that don't support\n // OffscreenCanvas (Firefox and Safari as of 2022-06) we have to do this\n // on the main thread using a canvas. In Chrome, we still do this on the\n // main thread but using OffscreenCanvas, to work around an issue with\n // rotation information being lost. See\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1332947.\n if (typeof ImageBitmap !== \"undefined\" && image instanceof ImageBitmap) {\n image = imageDataFromBitmap(image);\n }\n const engine = await this._ocrEngine;\n return engine.loadImage(image);\n }\n /**\n * Clear the current image and text recognition results.\n *\n * This will clear the loaded image data internally, but keep the text\n * recognition model loaded.\n *\n * At present there is no way to shrink WebAssembly memory, so this will not\n * return the memory used by the image to the OS/browser. To release memory,\n * the web worker needs to be shut down via {@link destroy}.\n */\n async clearImage() {\n const engine = await this._ocrEngine;\n return engine.clearImage();\n }\n /**\n * Perform layout analysis on the current image, if not already done, and\n * return bounding boxes for a given unit of text.\n *\n * This operation is relatively cheap compared to text recognition, so can\n * provide much faster results if only the location of lines/words etc. on\n * the page is required, not the text content.\n */\n async getBoundingBoxes(unit) {\n const engine = await this._ocrEngine;\n return engine.getBoundingBoxes(unit);\n }\n /**\n * Perform layout analysis and text recognition on the current image, if\n * not already done, and return bounding boxes and text content for a given\n * unit of text.\n */\n async getTextBoxes(unit, onProgress) {\n const engine = await this._ocrEngine;\n if (onProgress) {\n this._addProgressListener(onProgress);\n }\n try {\n return await engine.getTextBoxes(unit);\n }\n finally {\n if (onProgress) {\n this._removeProgressListener(onProgress);\n }\n }\n }\n /**\n * Perform layout analysis and text recognition on the current image, if\n * not already done, and return the image's text as a string.\n */\n async getText(onProgress) {\n const engine = await this._ocrEngine;\n if (onProgress) {\n this._addProgressListener(onProgress);\n }\n try {\n return await engine.getText();\n }\n finally {\n if (onProgress) {\n this._removeProgressListener(onProgress);\n }\n }\n }\n /**\n * Perform layout analysis and text recognition on the current image, if\n * not already done, and return the image's text in hOCR format (see\n * https://en.wikipedia.org/wiki/HOCR).\n */\n async getHOCR(onProgress) {\n const engine = await this._ocrEngine;\n if (onProgress) {\n this._addProgressListener(onProgress);\n }\n try {\n return await engine.getHOCR();\n }\n finally {\n if (onProgress) {\n this._removeProgressListener(onProgress);\n }\n }\n }\n /**\n * Attempt to determine the orientation of the image.\n *\n * This currently uses a simplistic algorithm [1] which is designed for\n * non-uppercase Latin text. It will likely perform badly for other scripts or\n * if the text is all uppercase.\n *\n * [1] See http://www.leptonica.org/papers/skew-measurement.pdf\n */\n async getOrientation() {\n const engine = await this._ocrEngine;\n return engine.getOrientation();\n }\n _addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n _removeProgressListener(listener) {\n this._progressListeners = this._progressListeners.filter((l) => l !== listener);\n }\n}\n\nvar Module = (() => {\n var _scriptDir = import.meta.url;\n \n return (\nfunction(Module = {}) {\n\nvar Module=typeof Module!=\"undefined\"?Module:{};var readyPromiseResolve,readyPromiseReject;Module[\"ready\"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject;});var moduleOverrides=Object.assign({},Module);var thisProgram=\"./this.program\";var ENVIRONMENT_IS_WEB=true;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var readBinary;{if(typeof document!=\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src;}if(_scriptDir){scriptDirectory=_scriptDir;}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1);}else {scriptDirectory=\"\";}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module[\"arguments\"])Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];Module[\"noExitRuntime\"]||true;if(typeof WebAssembly!=\"object\"){abort(\"no native wasm support detected\");}var wasmMemory;var ABORT=false;function assert(condition,text){if(!condition){abort(text);}}var UTF8Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder(\"utf8\"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str=\"\";while(idx<endPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2;}else {u0=(u0&7)<<18|u1<<12|u2<<6|heapOrArray[idx++]&63;}if(u0<65536){str+=String.fromCharCode(u0);}else {var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023);}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023;}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u;}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63;}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;}else {if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var c=str.charCodeAt(i);if(c<=127){len++;}else if(c<=2047){len+=2;}else if(c>=55296&&c<=57343){len+=4;++i;}else {len+=3;}}return len}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module[\"HEAP8\"]=HEAP8=new Int8Array(b);Module[\"HEAP16\"]=HEAP16=new Int16Array(b);Module[\"HEAP32\"]=HEAP32=new Int32Array(b);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(b);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(b);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(b);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(b);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(b);}var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift());}}callRuntimeCallbacks(__ATPRERUN__);}function initRuntime(){callRuntimeCallbacks(__ATINIT__);}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift());}}callRuntimeCallbacks(__ATPOSTRUN__);}function addOnPreRun(cb){__ATPRERUN__.unshift(cb);}function addOnInit(cb){__ATINIT__.unshift(cb);}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb);}var runDependencies=0;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies);}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies);}if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback();}}}function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what);}what=\"Aborted(\"+what+\")\";err(what);ABORT=true;what+=\". Build with -sASSERTIONS for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}var wasmBinaryFile;if(Module[\"locateFile\"]){wasmBinaryFile=\"tesseract-core.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile);}}else {wasmBinaryFile=new URL(\"tesseract-core.wasm\",import.meta.url).href;}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary);throw \"both async and sync fetching of the wasm failed\"}catch(err){abort(err);}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB)){if(typeof fetch==\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw \"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary(wasmBinaryFile)})}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={\"a\":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=Module[\"asm\"][\"U\"];updateMemoryViews();wasmTable=Module[\"asm\"][\"X\"];addOnInit(Module[\"asm\"][\"V\"]);removeRunDependency();}addRunDependency();function receiveInstantiationResult(result){receiveInstance(result[\"instance\"]);}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason);})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==\"function\"&&!isDataURI(wasmBinaryFile)&&typeof fetch==\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiationResult)})})}else {return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);readyPromiseReject(e);}}instantiateAsync().catch(readyPromiseReject);return {}}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module);}}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type;};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor;};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount;};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught;};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown;};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false);};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1;};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr;};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr};}function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);throw ptr}function ___syscall_fcntl64(fd,cmd,varargs){return 0}function ___syscall_getcwd(buf,size){}function ___syscall_ioctl(fd,op,varargs){return 0}function ___syscall_openat(dirfd,path,flags,varargs){}function ___syscall_rmdir(path){}function ___syscall_unlinkat(dirfd,path,flags){}var structRegistrations={};function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr);}}function simpleReadValueFromPointer(pointer){return this[\"fromWireType\"](HEAP32[pointer>>2])}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return \"_unknown\"}name=name.replace(/[^a-zA-Z0-9_]/g,\"$\");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return \"_\"+name}return name}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return function(){return body.apply(this,arguments)}}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+\"\\n\"+stack.replace(/^Error(:[^\\n]*)?\\n/,\"\");}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else {return this.name+\": \"+this.message}};return errorClass}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes;});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError(\"Mismatched type converter count\");}for(var i=0;i<myTypes.length;++i){registerType(myTypes[i],myTypeConverters[i]);}}var typeConverters=new Array(dependentTypes.length);var unregisteredTypes=[];var registered=0;dependentTypes.forEach((dt,i)=>{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt];}else {unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[];}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters);}});}});if(0===unregisteredTypes.length){onComplete(typeConverters);}}function __embind_finalize_value_object(structType){var reg=structRegistrations[structType];delete structRegistrations[structType];var rawConstructor=reg.rawConstructor;var rawDestructor=reg.rawDestructor;var fieldRecords=reg.fields;var fieldTypes=fieldRecords.map(field=>field.getterReturnType).concat(fieldRecords.map(field=>field.setterArgumentType));whenDependentTypesAreResolved([structType],fieldTypes,fieldTypes=>{var fields={};fieldRecords.forEach((field,i)=>{var fieldName=field.fieldName;var getterReturnType=fieldTypes[i];var getter=field.getter;var getterContext=field.getterContext;var setterArgumentType=fieldTypes[i+fieldRecords.length];var setter=field.setter;var setterContext=field.setterContext;fields[fieldName]={read:ptr=>{return getterReturnType[\"fromWireType\"](getter(getterContext,ptr))},write:(ptr,o)=>{var destructors=[];setter(setterContext,ptr,setterArgumentType[\"toWireType\"](destructors,o));runDestructors(destructors);}};});return [{name:reg.name,\"fromWireType\":function(ptr){var rv={};for(var i in fields){rv[i]=fields[i].read(ptr);}rawDestructor(ptr);return rv},\"toWireType\":function(destructors,o){for(var fieldName in fields){if(!(fieldName in o)){throw new TypeError('Missing field: \"'+fieldName+'\"')}}var ptr=rawConstructor();for(fieldName in fields){fields[fieldName].write(ptr,o[fieldName]);}if(destructors!==null){destructors.push(rawDestructor,ptr);}return ptr},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:rawDestructor}]});}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(\"Unknown type size: \"+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i);}embind_charCodes=codes;}var embind_charCodes=undefined;function readLatin1String(ptr){var ret=\"\";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]];}return ret}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}function registerType(rawType,registeredInstance,options={}){if(!(\"argPackAdvance\"in registeredInstance)){throw new TypeError(\"registerType registeredInstance requires argPackAdvance\")}var name=registeredInstance.name;if(!rawType){throwBindingError('type \"'+name+'\" must have a positive integer typeid pointer');}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else {throwBindingError(\"Cannot register type '\"+name+\"' twice\");}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb());}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(wt){return !!wt},\"toWireType\":function(destructors,o){return o?trueValue:falseValue},\"argPackAdvance\":8,\"readValueFromPointer\":function(pointer){var heap;if(size===1){heap=HEAP8;}else if(size===2){heap=HEAP16;}else if(size===4){heap=HEAP32;}else {throw new TypeError(\"Unknown boolean type size: \"+name)}return this[\"fromWireType\"](heap[pointer>>shift])},destructorFunction:null});}function ClassHandle_isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass;}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass;}return leftClass===rightClass&&left===right}function shallowCopyInternalPointer(o){return {count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType}}function throwInstanceAlreadyDeleted(obj){function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+\" instance already deleted\");}var finalizationRegistry=false;function detachFinalizer(handle){}function runDestructor($$){if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr);}else {$$.ptrType.registeredClass.rawDestructor($$.ptr);}}function releaseClassHandle($$){$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$);}}function downcastPointer(ptr,ptrClass,desiredClass){if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)}var registeredPointers={};function getInheritedInstanceCount(){return Object.keys(registeredInstances).length}function getLiveInheritedInstances(){var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k]);}}return rv}var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj[\"delete\"]();}}var delayFunction=undefined;function setDelayFunction(fn){delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes);}}function init_embind(){Module[\"getInheritedInstanceCount\"]=getInheritedInstanceCount;Module[\"getLiveInheritedInstances\"]=getLiveInheritedInstances;Module[\"flushPendingDeletes\"]=flushPendingDeletes;Module[\"setDelayFunction\"]=setDelayFunction;}var registeredInstances={};function getBasestPointer(class_,ptr){if(ptr===undefined){throwBindingError(\"ptr should not be undefined\");}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass;}return ptr}function getInheritedInstance(class_,ptr){ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]}function makeClassHandle(prototype,record){if(!record.ptrType||!record.ptr){throwInternalError(\"makeClassHandle requires ptr and ptrType\");}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError(\"Both smartPtrType and smartPtr must be specified\");}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record}}))}function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance[\"clone\"]()}else {var rv=registeredInstance[\"clone\"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else {return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType;}else {toType=registeredPointerRecord.pointerType;}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else {return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}function attachFinalizer(handle){if(\"undefined\"===typeof FinalizationRegistry){attachFinalizer=handle=>handle;return handle}finalizationRegistry=new FinalizationRegistry(info=>{releaseClassHandle(info.$$);});attachFinalizer=handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$:$$};finalizationRegistry.register(handle,info,handle);}return handle};detachFinalizer=handle=>finalizationRegistry.unregister(handle);return attachFinalizer(handle)}function ClassHandle_clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this);}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else {var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}}function ClassHandle_delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this);}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\");}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined;}}function ClassHandle_isDeleted(){return !this.$$.ptr}function ClassHandle_deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this);}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\");}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes);}this.$$.deleteScheduled=true;return this}function init_ClassHandle(){ClassHandle.prototype[\"isAliasOf\"]=ClassHandle_isAliasOf;ClassHandle.prototype[\"clone\"]=ClassHandle_clone;ClassHandle.prototype[\"delete\"]=ClassHandle_delete;ClassHandle.prototype[\"isDeleted\"]=ClassHandle_isDeleted;ClassHandle.prototype[\"deleteLater\"]=ClassHandle_deleteLater;}function ClassHandle(){}function ensureOverloadTable(proto,methodName,humanName){if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError(\"Function '\"+humanName+\"' called with an invalid number of arguments (\"+arguments.length+\") - expects one of (\"+proto[methodName].overloadTable+\")!\");}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc;}}function exposePublicSymbol(name,value,numArguments){if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(\"Cannot register public name '\"+name+\"' twice\");}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(\"Cannot register multiple overloads of a function with the same number of arguments (\"+numArguments+\")!\");}Module[name].overloadTable[numArguments]=value;}else {Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments;}}}function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[];}function upcastPointer(ptr,ptrClass,desiredClass){while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError(\"Expected null or instance of \"+desiredClass.name+\", got an instance of \"+ptrClass.name);}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass;}return ptr}function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(\"null is not a valid \"+this.name);}return 0}if(!handle.$$){throwBindingError('Cannot pass \"'+embindRepr(handle)+'\" as a '+this.name);}if(!handle.$$.ptr){throwBindingError(\"Cannot pass deleted object as a pointer of type \"+this.name);}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError(\"null is not a valid \"+this.name);}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr);}return ptr}else {return 0}}if(!handle.$$){throwBindingError('Cannot pass \"'+embindRepr(handle)+'\" as a '+this.name);}if(!handle.$$.ptr){throwBindingError(\"Cannot pass deleted object as a pointer of type \"+this.name);}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError(\"Cannot convert argument of type \"+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+\" to parameter type \"+this.name);}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError(\"Passing raw pointer to smart pointer is illegal\");}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr;}else {throwBindingError(\"Cannot convert argument of type \"+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+\" to parameter type \"+this.name);}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr;}else {var clonedHandle=handle[\"clone\"]();ptr=this.rawShare(ptr,Emval.toHandle(function(){clonedHandle[\"delete\"]();}));if(destructors!==null){destructors.push(this.rawDestructor,ptr);}}break;default:throwBindingError(\"Unsupporting sharing policy\");}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(\"null is not a valid \"+this.name);}return 0}if(!handle.$$){throwBindingError('Cannot pass \"'+embindRepr(handle)+'\" as a '+this.name);}if(!handle.$$.ptr){throwBindingError(\"Cannot pass deleted object as a pointer of type \"+this.name);}if(handle.$$.ptrType.isConst){throwBindingError(\"Cannot convert argument of type \"+handle.$$.ptrType.name+\" to parameter type \"+this.name);}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function RegisteredPointer_getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr);}return ptr}function RegisteredPointer_destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr);}}function RegisteredPointer_deleteObject(handle){if(handle!==null){handle[\"delete\"]();}}function init_RegisteredPointer(){RegisteredPointer.prototype.getPointee=RegisteredPointer_getPointee;RegisteredPointer.prototype.destructor=RegisteredPointer_destructor;RegisteredPointer.prototype[\"argPackAdvance\"]=8;RegisteredPointer.prototype[\"readValueFromPointer\"]=simpleReadValueFromPointer;RegisteredPointer.prototype[\"deleteObject\"]=RegisteredPointer_deleteObject;RegisteredPointer.prototype[\"fromWireType\"]=RegisteredPointer_fromWireType;}function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this[\"toWireType\"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null;}else {this[\"toWireType\"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null;}}else {this[\"toWireType\"]=genericPointerToWireType;}}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError(\"Replacing nonexistant public symbol\");}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value;}else {Module[name]=value;Module[name].argCount=numArguments;}}function dynCallLegacy(sig,ptr,args){var f=Module[\"dynCall_\"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function getWasmTableEntry(funcPtr){return wasmTable.get(funcPtr)}function dynCall(sig,ptr,args){if(sig.includes(\"j\")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr).apply(null,args);return rtn}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes(\"j\")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!=\"function\"){throwBindingError(\"unknown function pointer with signature \"+signature+\": \"+rawFunction);}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true;}types.forEach(visit);throw new UnboundTypeError(message+\": \"+unboundTypes.map(getTypeName).join([\", \"]))}function __embind_register_class(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor){name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);if(upcast){upcast=embind__requireFunction(upcastSignature,upcast);}if(downcast){downcast=embind__requireFunction(downcastSignature,downcast);}rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError(\"Cannot construct \"+name+\" due to unbound types\",[baseClassRawType]);});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],function(base){base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype;}else {basePrototype=ClassHandle.prototype;}var constructor=createNamedFunction(legalFunctionName,function(){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError(\"Use 'new' to construct \"+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+\" has no accessible constructor\")}var body=registeredClass.constructor_body[arguments.length];if(undefined===body){throw new BindingError(\"Tried to invoke ctor of \"+name+\" with invalid number of parameters (\"+arguments.length+\") - expected (\"+Object.keys(registeredClass.constructor_body).toString()+\") parameters instead!\")}return body.apply(this,arguments)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+\"*\",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+\" const*\",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return [referenceConverter,pointerConverter,constPointerConverter]});}function heap32VectorToArray(count,firstElement){var array=[];for(var i=0;i<count;i++){array.push(HEAPU32[firstElement+i*4>>2]);}return array}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError(\"argTypes array size mismatch! Must at least get return value and 'this' types!\");}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i<argTypes.length;++i){if(argTypes[i]!==null&&argTypes[i].destructorFunction===undefined){needsDestructorStack=true;break}}var returns=argTypes[0].name!==\"void\";var expectedArgCount=argCount-2;var argsWired=new Array(expectedArgCount);var invokerFuncArgs=[];var destructors=[];return function(){if(arguments.length!==expectedArgCount){throwBindingError(\"function \"+humanName+\" called with \"+arguments.length+\" arguments, expected \"+expectedArgCount+\" args!\");}destructors.length=0;var thisWired;invokerFuncArgs.length=isClassMethodFunc?2:1;invokerFuncArgs[0]=cppTargetFunc;if(isClassMethodFunc){thisWired=argTypes[1][\"toWireType\"](destructors,this);invokerFuncArgs[1]=thisWired;}for(var i=0;i<expectedArgCount;++i){argsWired[i]=argTypes[i+2][\"toWireType\"](destructors,arguments[i]);invokerFuncArgs.push(argsWired[i]);}var rv=cppInvokerFunc.apply(null,invokerFuncArgs);function onDone(rv){if(needsDestructorStack){runDestructors(destructors);}else {for(var i=isClassMethodFunc?1:2;i<argTypes.length;i++){var param=i===1?thisWired:argsWired[i-2];if(argTypes[i].destructorFunction!==null){argTypes[i].destructorFunction(param);}}}if(returns){return argTypes[0][\"fromWireType\"](rv)}}return onDone(rv)}}function __embind_register_class_constructor(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor){assert(argCount>0);var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=\"constructor \"+classType.name;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[];}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError(\"Cannot register multiple constructors with identical number of parameters (\"+(argCount-1)+\") for class '\"+classType.name+\"'! Overload resolution is currently only performed using the parameter count, not actual type info!\")}classType.registeredClass.constructor_body[argCount-1]=()=>{throwUnboundTypeError(\"Cannot construct \"+classType.name+\" due to unbound types\",rawArgTypes);};whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return []});return []});}function __embind_register_class_function(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual){var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=classType.name+\".\"+methodName;if(methodName.startsWith(\"@@\")){methodName=Symbol[methodName.substring(2)];}if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName);}function unboundTypesHandler(){throwUnboundTypeError(\"Cannot call \"+humanName+\" due to unbound types\",rawArgTypes);}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler;}else {ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler;}whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction;}else {proto[methodName].overloadTable[argCount-2]=memberFunction;}return []});return []});}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle);}}function count_emval_handles(){var count=0;for(var i=5;i<emval_handle_array.length;++i){if(emval_handle_array[i]!==undefined){++count;}}return count}function get_first_emval(){for(var i=5;i<emval_handle_array.length;++i){if(emval_handle_array[i]!==undefined){return emval_handle_array[i]}}return null}function init_emval(){Module[\"count_emval_handles\"]=count_emval_handles;Module[\"get_first_emval\"]=get_first_emval;}var Emval={toValue:handle=>{if(!handle){throwBindingError(\"Cannot use deleted val. handle = \"+handle);}return emval_handle_array[handle].value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{var handle=emval_free_list.length?emval_free_list.pop():emval_handle_array.length;emval_handle_array[handle]={refcount:1,value:value};return handle}}}};function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},\"toWireType\":function(destructors,value){return Emval.toHandle(value)},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:null});}function enumReadValueFromPointer(name,shift,signed){switch(shift){case 0:return function(pointer){var heap=signed?HEAP8:HEAPU8;return this[\"fromWireType\"](heap[pointer])};case 1:return function(pointer){var heap=signed?HEAP16:HEAPU16;return this[\"fromWireType\"](heap[pointer>>1])};case 2:return function(pointer){var heap=signed?HEAP32:HEAPU32;return this[\"fromWireType\"](heap[pointer>>2])};default:throw new TypeError(\"Unknown integer type: \"+name)}}function __embind_register_enum(rawType,name,size,isSigned){var shift=getShiftFromSize(size);name=readLatin1String(name);function ctor(){}ctor.values={};registerType(rawType,{name:name,constructor:ctor,\"fromWireType\":function(c){return this.constructor.values[c]},\"toWireType\":function(destructors,c){return c.value},\"argPackAdvance\":8,\"readValueFromPointer\":enumReadValueFromPointer(name,shift,isSigned),destructorFunction:null});exposePublicSymbol(name,ctor);}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+\" has unknown type \"+getTypeName(rawType));}return impl}function __embind_register_enum_value(rawEnumType,name,enumValue){var enumType=requireRegisteredType(rawEnumType,\"enum\");name=readLatin1String(name);var Enum=enumType.constructor;var Value=Object.create(enumType.constructor.prototype,{value:{value:enumValue},constructor:{value:createNamedFunction(enumType.name+\"_\"+name,function(){})}});Enum.values[enumValue]=Value;Enum[name]=Value;}function embindRepr(v){if(v===null){return \"null\"}var t=typeof v;if(t===\"object\"||t===\"array\"||t===\"function\"){return v.toString()}else {return \"\"+v}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this[\"fromWireType\"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this[\"fromWireType\"](HEAPF64[pointer>>3])};default:throw new TypeError(\"Unknown float type: \"+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(value){return value},\"toWireType\":function(destructors,value){return value},\"argPackAdvance\":8,\"readValueFromPointer\":floatReadValueFromPointer(name,shift),destructorFunction:null});}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError(\"Unknown integer type: \"+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<<bitshift>>>bitshift;}var isUnsignedType=name.includes(\"unsigned\");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0};}else {toWireType=function(destructors,value){checkAssertions(value,this.name);return value};}registerType(primitiveType,{name:name,\"fromWireType\":fromWireType,\"toWireType\":toWireType,\"argPackAdvance\":8,\"readValueFromPointer\":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null});}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(heap.buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":decodeMemoryView,\"argPackAdvance\":8,\"readValueFromPointer\":decodeMemoryView},{ignoreDuplicateRegistrations:true});}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name===\"std::string\";registerType(rawType,{name:name,\"fromWireType\":function(value){var length=HEAPU32[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment;}else {str+=String.fromCharCode(0);str+=stringSegment;}decodeStartPtr=currentBytePtr+1;}}}else {var a=new Array(length);for(var i=0;i<length;++i){a[i]=String.fromCharCode(HEAPU8[payload+i]);}str=a.join(\"\");}_free(value);return str},\"toWireType\":function(destructors,value){if(value instanceof ArrayBuffer){value=new Uint8Array(value);}var length;var valueIsOfTypeString=typeof value==\"string\";if(!(valueIsOfTypeString||value instanceof Uint8Array||value instanceof Uint8ClampedArray||value instanceof Int8Array)){throwBindingError(\"Cannot pass non-string to std::string\");}if(stdStringIsUTF8&&valueIsOfTypeString){length=lengthBytesUTF8(value);}else {length=value.length;}var base=_malloc(4+length+1);var ptr=base+4;HEAPU32[base>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1);}else {if(valueIsOfTypeString){for(var i=0;i<length;++i){var charCode=value.charCodeAt(i);if(charCode>255){_free(ptr);throwBindingError(\"String has UTF-16 code units that do not fit in 8 bits\");}HEAPU8[ptr+i]=charCode;}}else {for(var i=0;i<length;++i){HEAPU8[ptr+i]=value[i];}}}if(destructors!==null){destructors.push(_free,base);}return base},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr);}});}var UTF16Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr));var str=\"\";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit);}return str}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647;}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite<str.length*2?maxBytesToWrite/2:str.length;for(var i=0;i<numCharsToWrite;++i){var codeUnit=str.charCodeAt(i);HEAP16[outPtr>>1]=codeUnit;outPtr+=2;}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str=\"\";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023);}else {str+=String.fromCharCode(utf32);}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647;}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i<str.length;++i){var codeUnit=str.charCodeAt(i);if(codeUnit>=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023;}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i<str.length;++i){var codeUnit=str.charCodeAt(i);if(codeUnit>=55296&&codeUnit<=57343)++i;len+=4;}return len}function __embind_register_std_wstring(rawType,charSize,name){name=readLatin1String(name);var decodeString,encodeString,getHeap,lengthBytesUTF,shift;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;getHeap=()=>HEAPU16;shift=1;}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=()=>HEAPU32;shift=2;}registerType(rawType,{name:name,\"fromWireType\":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment;}else {str+=String.fromCharCode(0);str+=stringSegment;}decodeStartPtr=currentBytePtr+charSize;}}_free(value);return str},\"toWireType\":function(destructors,value){if(!(typeof value==\"string\")){throwBindingError(\"Cannot pass non-string to C++ string type \"+name);}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr);}return ptr},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr);}});}function __embind_register_value_object(rawType,name,constructorSignature,rawConstructor,destructorSignature,rawDestructor){structRegistrations[rawType]={name:readLatin1String(name),rawConstructor:embind__requireFunction(constructorSignature,rawConstructor),rawDestructor:embind__requireFunction(destructorSignature,rawDestructor),fields:[]};}function __embind_register_value_object_field(structType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext){structRegistrations[structType].fields.push({fieldName:readLatin1String(fieldName),getterReturnType:getterReturnType,getter:embind__requireFunction(getterSignature,getter),getterContext:getterContext,setterArgumentType:setterArgumentType,setter:embind__requireFunction(setterSignature,setter),setterContext:setterContext});}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,\"argPackAdvance\":0,\"fromWireType\":function(){return undefined},\"toWireType\":function(destructors,o){return undefined}});}var nowIsMonotonic=true;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function emval_lookupTypes(argCount,argTypes){var a=new Array(argCount);for(var i=0;i<argCount;++i){a[i]=requireRegisteredType(HEAPU32[argTypes+i*4>>2],\"parameter \"+i);}return a}function __emval_call(handle,argCount,argTypes,argv){handle=Emval.toValue(handle);var types=emval_lookupTypes(argCount,argTypes);var args=new Array(argCount);for(var i=0;i<argCount;++i){var type=types[i];args[i]=type[\"readValueFromPointer\"](argv);argv+=type[\"argPackAdvance\"];}var rv=handle.apply(undefined,args);return Emval.toHandle(rv)}function __emval_incref(handle){if(handle>4){emval_handle_array[handle].refcount+=1;}}function __emval_take_value(type,arg){type=requireRegisteredType(type,\"_emval_take_value\");var v=type[\"readValueFromPointer\"](arg);return Emval.toHandle(v)}function readI53FromI64(ptr){return HEAPU32[ptr>>2]+HEAP32[ptr+4>>2]*4294967296}function __gmtime_js(time,tmPtr){var date=new Date(readI53FromI64(time)*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}var __MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335];var __MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];function __yday_from_date(date){var isLeapYear=__isLeapYear(date.getFullYear());var monthDaysCumulative=isLeapYear?__MONTH_DAYS_LEAP_CUMULATIVE:__MONTH_DAYS_REGULAR_CUMULATIVE;var yday=monthDaysCumulative[date.getMonth()]+date.getDate()-1;return yday}function __localtime_js(time,tmPtr){var date=new Date(readI53FromI64(time)*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var yday=__yday_from_date(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst;}function __mktime_js(tmPtr){var date=new Date(HEAP32[tmPtr+20>>2]+1900,HEAP32[tmPtr+16>>2],HEAP32[tmPtr+12>>2],HEAP32[tmPtr+8>>2],HEAP32[tmPtr+4>>2],HEAP32[tmPtr>>2],0);var dst=HEAP32[tmPtr+32>>2];var guessedOffset=date.getTimezoneOffset();var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dstOffset=Math.min(winterOffset,summerOffset);if(dst<0){HEAP32[tmPtr+32>>2]=Number(summerOffset!=winterOffset&&dstOffset==guessedOffset);}else if(dst>0!=(dstOffset==guessedOffset)){var nonDstOffset=Math.max(winterOffset,summerOffset);var trueOffset=dst>0?dstOffset:nonDstOffset;date.setTime(date.getTime()+(trueOffset-guessedOffset)*6e4);}HEAP32[tmPtr+24>>2]=date.getDay();var yday=__yday_from_date(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getYear();return date.getTime()/1e3|0}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function __tzset_js(timezone,daylight,tzname){var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);function extractZone(date){var match=date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);return match?match[1]:\"GMT\"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocateUTF8(winterName);var summerNamePtr=allocateUTF8(summerName);if(summerOffset<winterOffset){HEAPU32[tzname>>2]=winterNamePtr;HEAPU32[tzname+4>>2]=summerNamePtr;}else {HEAPU32[tzname>>2]=summerNamePtr;HEAPU32[tzname+4>>2]=winterNamePtr;}}function _abort(){abort(\"\");}function _emscripten_date_now(){return Date.now()}var _emscripten_get_now;_emscripten_get_now=()=>performance.now();function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num);}function getHeapMax(){return 1073741824}function emscripten_realloc_buffer(size){var b=wasmMemory.buffer;try{wasmMemory.grow(size-b.byteLength+65535>>>16);updateMemoryViews();return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var ENV={};function getExecutableName(){return thisProgram||\"./this.program\"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\";var env={\"USER\":\"web_user\",\"LOGNAME\":\"web_user\",\"PATH\":\"/\",\"PWD\":\"/\",\"HOME\":\"/home/web_user\",\"LANG\":lang,\"_\":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x];}var strings=[];for(var x in env){strings.push(x+\"=\"+env[x]);}getEnvStrings.strings=strings;}return getEnvStrings.strings}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i<str.length;++i){HEAP8[buffer++>>0]=str.charCodeAt(i);}if(!dontAddNull)HEAP8[buffer>>0]=0;}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1;});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1;});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){return 52}function _fd_read(fd,iov,iovcnt,pnum){return 52}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){return 70}var printCharBuffers=[null,[],[]];function printChar(stream,curr){var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0;}else {buffer.push(curr);}}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i<iovcnt;i++){var ptr=HEAPU32[iov>>2];var len=HEAPU32[iov+4>>2];iov+=8;for(var j=0;j<len;j++){printChar(fd,HEAPU8[ptr+j]);}num+=len;}HEAPU32[pnum>>2]=num;return 0}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1);}else {newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1);}}else {newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer);}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):\"\"};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={\"%c\":\"%a %b %d %H:%M:%S %Y\",\"%D\":\"%m/%d/%y\",\"%F\":\"%Y-%m-%d\",\"%h\":\"%b\",\"%r\":\"%I:%M:%S %p\",\"%R\":\"%H:%M\",\"%T\":\"%H:%M:%S\",\"%x\":\"%m/%d/%y\",\"%X\":\"%H:%M:%S\",\"%Ec\":\"%c\",\"%EC\":\"%C\",\"%Ex\":\"%m/%d/%y\",\"%EX\":\"%H:%M:%S\",\"%Ey\":\"%y\",\"%EY\":\"%Y\",\"%Od\":\"%d\",\"%Oe\":\"%e\",\"%OH\":\"%H\",\"%OI\":\"%I\",\"%Om\":\"%m\",\"%OM\":\"%M\",\"%OS\":\"%S\",\"%Ou\":\"%u\",\"%OU\":\"%U\",\"%OV\":\"%V\",\"%Ow\":\"%w\",\"%OW\":\"%W\",\"%Oy\":\"%y\"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,\"g\"),EXPANSION_RULES_1[rule]);}var WEEKDAYS=[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"];var MONTHS=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];function leadingSomething(value,digits,character){var str=typeof value==\"number\"?value.toString():value||\"\";while(str.length<digits){str=character[0]+str;}return str}function leadingNulls(value,digits){return leadingSomething(value,digits,\"0\")}function compareByDay(date1,date2){function sgn(value){return value<0?-1:value>0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate());}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={\"%a\":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},\"%A\":function(date){return WEEKDAYS[date.tm_wday]},\"%b\":function(date){return MONTHS[date.tm_mon].substring(0,3)},\"%B\":function(date){return MONTHS[date.tm_mon]},\"%C\":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},\"%d\":function(date){return leadingNulls(date.tm_mday,2)},\"%e\":function(date){return leadingSomething(date.tm_mday,2,\" \")},\"%g\":function(date){return getWeekBasedYear(date).toString().substring(2)},\"%G\":function(date){return getWeekBasedYear(date)},\"%H\":function(date){return leadingNulls(date.tm_hour,2)},\"%I\":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},\"%j\":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},\"%m\":function(date){return leadingNulls(date.tm_mon+1,2)},\"%M\":function(date){return leadingNulls(date.tm_min,2)},\"%n\":function(){return \"\\n\"},\"%p\":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return \"AM\"}return \"PM\"},\"%S\":function(date){return leadingNulls(date.tm_sec,2)},\"%t\":function(){return \"\\t\"},\"%u\":function(date){return date.tm_wday||7},\"%U\":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},\"%V\":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++;}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&__isLeapYear(date.tm_year%400-1)){val++;}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!__isLeapYear(date.tm_year)))val=1;}return leadingNulls(val,2)},\"%w\":function(date){return date.tm_wday},\"%W\":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},\"%y\":function(date){return (date.tm_year+1900).toString().substring(2)},\"%Y\":function(date){return date.tm_year+1900},\"%z\":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return (ahead?\"+\":\"-\")+String(\"0000\"+off).slice(-4)},\"%Z\":function(date){return date.tm_zone},\"%%\":function(){return \"%\"}};pattern=pattern.replace(/%%/g,\"\\0\\0\");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,\"g\"),EXPANSION_RULES_2[rule](date));}}pattern=pattern.replace(/\\0\\0/g,\"%\");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm,loc){return _strftime(s,maxsize,format,tm)}InternalError=Module[\"InternalError\"]=extendError(Error,\"InternalError\");embind_init_charCodes();BindingError=Module[\"BindingError\"]=extendError(Error,\"BindingError\");init_ClassHandle();init_embind();init_RegisteredPointer();UnboundTypeError=Module[\"UnboundTypeError\"]=extendError(Error,\"UnboundTypeError\");init_emval();var wasmImports={\"e\":___cxa_throw,\"s\":___syscall_fcntl64,\"F\":___syscall_getcwd,\"H\":___syscall_ioctl,\"t\":___syscall_openat,\"B\":___syscall_rmdir,\"C\":___syscall_unlinkat,\"g\":__embind_finalize_value_object,\"y\":__embind_register_bigint,\"Q\":__embind_register_bool,\"k\":__embind_register_class,\"j\":__embind_register_class_constructor,\"a\":__embind_register_class_function,\"P\":__embind_register_emval,\"w\":__embind_register_enum,\"q\":__embind_register_enum_value,\"v\":__embind_register_float,\"d\":__embind_register_integer,\"b\":__embind_register_memory_view,\"u\":__embind_register_std_string,\"o\":__embind_register_std_wstring,\"i\":__embind_register_value_object,\"c\":__embind_register_value_object_field,\"R\":__embind_register_void,\"J\":__emscripten_get_now_is_monotonic,\"T\":__emval_call,\"f\":__emval_decref,\"p\":__emval_incref,\"m\":__emval_take_value,\"K\":__gmtime_js,\"L\":__localtime_js,\"M\":__mktime_js,\"N\":__tzset_js,\"h\":_abort,\"l\":_emscripten_date_now,\"I\":_emscripten_get_now,\"O\":_emscripten_memcpy_big,\"A\":_emscripten_resize_heap,\"D\":_environ_get,\"E\":_environ_sizes_get,\"n\":_fd_close,\"G\":_fd_read,\"x\":_fd_seek,\"r\":_fd_write,\"S\":_strftime,\"z\":_strftime_l};createWasm();var _malloc=function(){return (_malloc=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _free=function(){return (_free=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var ___getTypeName=Module[\"___getTypeName\"]=function(){return (___getTypeName=Module[\"___getTypeName\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};Module[\"__embind_initialize_bindings\"]=function(){return (Module[\"__embind_initialize_bindings\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var ___cxa_is_pointer_type=function(){return (___cxa_is_pointer_type=Module[\"asm\"][\"$\"]).apply(null,arguments)};Module[\"dynCall_jiji\"]=function(){return (Module[\"dynCall_jiji\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};Module[\"dynCall_viijii\"]=function(){return (Module[\"dynCall_viijii\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};Module[\"dynCall_iiiiij\"]=function(){return (Module[\"dynCall_iiiiij\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};Module[\"dynCall_iiiiijj\"]=function(){return (Module[\"dynCall_iiiiijj\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};Module[\"dynCall_iiiiiijj\"]=function(){return (Module[\"dynCall_iiiiiijj\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};Module[\"dynCall_jijii\"]=function(){return (Module[\"dynCall_jijii\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};Module[\"dynCall_vijii\"]=function(){return (Module[\"dynCall_vijii\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};Module[\"dynCall_jij\"]=function(){return (Module[\"dynCall_jij\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};Module[\"dynCall_iij\"]=function(){return (Module[\"dynCall_iij\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};Module[\"dynCall_viji\"]=function(){return (Module[\"dynCall_viji\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};Module[\"dynCall_jii\"]=function(){return (Module[\"dynCall_jii\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller;};function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun();}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\");},1);doRun();},1);}else {doRun();}}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()();}}run();function wasmSIMDSupported(){const simdTest=Uint8Array.from([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]);return WebAssembly.validate(simdTest)}if(wasmSIMDSupported()){ENV.DOTPRODUCT=\"sse\";}\n\n\n return Module.ready\n}\n);\n})();\n\n// @ts-ignore - Don't error if library hasn't been built yet.\n/**\n * Create a JS array from a std::vector wrapper created by Embind.\n */\nfunction jsArrayFromStdVector(vec) {\n const size = vec.size();\n const result = [];\n for (let i = 0; i < size; i++) {\n result.push(vec.get(i));\n }\n return result;\n}\n/**\n * Flags indicating position of a text item.\n *\n * Keep this in sync with `LayoutFlags` in lib.cpp.\n */\nconst layoutFlags = {\n StartOfLine: 1,\n EndOfLine: 2,\n};\n/**\n * Low-level synchronous API for performing OCR.\n *\n * Instances are constructed using {@link createOCREngine}.\n */\nclass OCREngine {\n /**\n * Initialize the OCREngine.\n *\n * Use {@link createOCREngine} rather than calling this directly.\n *\n * @param tessLib - Emscripten entry point for the compiled WebAssembly module.\n * @param progressChannel - Channel used to report progress\n * updates when OCREngine is run on a background thread\n */\n constructor(tessLib, progressChannel) {\n this._tesseractLib = tessLib;\n this._engine = new tessLib.OCREngine();\n this._modelLoaded = false;\n this._imageLoaded = false;\n this._progressChannel = progressChannel;\n }\n /**\n * Shut down the OCR engine and free up resources.\n */\n destroy() {\n this._engine.delete();\n this._engine = null;\n }\n /**\n * Get the value, represented as a string, of a Tesseract configuration variable.\n *\n * See {@link setVariable} for available variables.\n */\n getVariable(name) {\n const result = this._engine.getVariable(name);\n if (!result.success) {\n throw new Error(`Unable to get variable ${name}`);\n }\n return result.value;\n }\n /**\n * Set the value of a Tesseract configuration variable.\n *\n * For a list of configuration variables, see\n * https://github.com/tesseract-ocr/tesseract/blob/677f5822f247ccb12b4e026265e88b959059fb59/src/ccmain/tesseractclass.cpp#L53\n *\n * If you have Tesseract installed locally, executing `tesseract --print-parameters`\n * will also display a list of configuration variables.\n */\n setVariable(name, value) {\n const result = this._engine.setVariable(name, value);\n if (result.error) {\n throw new Error(`Unable to set variable ${name}`);\n }\n }\n /**\n * Load a trained text recognition model.\n */\n loadModel(model) {\n const modelArray = model instanceof ArrayBuffer ? new Uint8Array(model) : model;\n const result = this._engine.loadModel(modelArray);\n if (result.error) {\n throw new Error(\"Text recognition model failed to load\");\n }\n this._modelLoaded = true;\n }\n /**\n * Load a document image for processing by subsequent operations.\n *\n * This is a cheap operation as expensive processing is deferred until\n * bounding boxes or text content is requested.\n */\n loadImage(image) {\n let imageData;\n if (typeof ImageBitmap !== \"undefined\" && image instanceof ImageBitmap) {\n imageData = imageDataFromBitmap(image);\n }\n else {\n imageData = image;\n }\n if (imageData.data.length < imageData.width * imageData.height * 4) {\n throw new Error(\"Image data length does not match width/height\");\n }\n if (imageData.width <= 0 || imageData.height <= 0) {\n throw new Error(\"Image width or height is zero\");\n }\n // Free up resources used by the previous image, if any. Doing this before\n // creating the buffer for the new image reduces peak memory usage.\n this._engine.clearImage();\n // Allocate a temporary internal image for transfering the image data into\n // Tesseract\n const engineImage = new this._tesseractLib.Image(imageData.width, imageData.height);\n const engineImageBuf = engineImage.data();\n engineImageBuf.set(new Uint32Array(imageData.data.buffer));\n // Load the image. This will take a copy of the image within Tesseract, so\n // we can release the original afterwards.\n const result = this._engine.loadImage(engineImage);\n engineImage.delete();\n if (result.error) {\n throw new Error(\"Failed to load image\");\n }\n this._imageLoaded = true;\n }\n /**\n * Clear the current image and text recognition results.\n *\n * This will clear the loaded image data internally, but keep the text\n * recognition model loaded.\n *\n * At present there is no way to shrink WebAssembly memory, so this will not\n * return the memory used by the image to the OS/browser. To release memory,\n * the `OCREngine` instance needs to be destroyed via {@link destroy}.\n */\n clearImage() {\n this._engine.clearImage();\n this._imageLoaded = false;\n }\n /**\n * Perform layout analysis on the current image, if not already done, and\n * return bounding boxes for a given unit of text.\n *\n * This operation is relatively cheap compared to text recognition, so can\n * provide much faster results if only the location of lines/words etc. on\n * the page is required, not the text content. This operation can also be\n * performed before a text recognition model is loaded.\n *\n * This method may return a different number/positions of words on a line\n * compared to {@link getTextBoxes} due to the simpler analysis. After full\n * OCR has been performed by {@link getTextBoxes} or {@link getText}, this\n * method should return the same results.\n */\n getBoundingBoxes(unit) {\n this._checkImageLoaded();\n const textUnit = this._textUnitForUnit(unit);\n return jsArrayFromStdVector(this._engine.getBoundingBoxes(textUnit));\n }\n /**\n * Perform layout analysis and text recognition on the current image, if\n * not already done, and return bounding boxes and text content for a given\n * unit of text.\n *\n * A text recognition model must be loaded with {@link loadModel} before this\n * is called.\n */\n getTextBoxes(unit, onProgress) {\n this._checkImageLoaded();\n this._checkModelLoaded();\n const textUnit = this._textUnitForUnit(unit);\n return jsArrayFromStdVector(this._engine.getTextBoxes(textUnit, (progress) => {\n var _a;\n onProgress === null || onProgress === void 0 ? void 0 : onProgress(progress);\n (_a = this._progressChannel) === null || _a === void 0 ? void 0 : _a.postMessage({ progress });\n }));\n }\n /**\n * Perform layout analysis and text recognition on the current image, if\n * not already done, and return the page text as a string.\n *\n * A text recognition model must be loaded with {@link loadModel} before this\n * is called.\n */\n getText(onProgress) {\n this._checkImageLoaded();\n this._checkModelLoaded();\n return this._engine.getText((progress) => {\n var _a;\n onProgress === null || onProgress === void 0 ? void 0 : onProgress(progress);\n (_a = this._progressChannel) === null || _a === void 0 ? void 0 : _a.postMessage({ progress });\n });\n }\n /**\n * Perform layout analysis and text recognition on the current image, if\n * not already done, and return the page text in hOCR format.\n *\n * A text recognition model must be loaded with {@link loadModel} before this\n * is called.\n */\n getHOCR(onProgress) {\n this._checkImageLoaded();\n this._checkModelLoaded();\n return this._engine.getHOCR((progress) => {\n var _a;\n onProgress === null || onProgress === void 0 ? void 0 : onProgress(progress);\n (_a = this._progressChannel) === null || _a === void 0 ? void 0 : _a.postMessage({ progress });\n });\n }\n /**\n * Attempt to determine the orientation of the document image in degrees.\n *\n * This currently uses a simplistic algorithm [1] which is designed for\n * non-uppercase Latin text. It will likely perform badly for other scripts or\n * if the text is all uppercase.\n *\n * [1] See http://www.leptonica.org/papers/skew-measurement.pdf\n */\n getOrientation() {\n this._checkImageLoaded();\n return this._engine.getOrientation();\n }\n _checkModelLoaded() {\n if (!this._modelLoaded) {\n throw new Error(\"No text recognition model loaded\");\n }\n }\n _checkImageLoaded() {\n if (!this._imageLoaded) {\n throw new Error(\"No image loaded\");\n }\n }\n _textUnitForUnit(unit) {\n const { TextUnit } = this._tesseractLib;\n switch (unit) {\n case \"word\":\n return TextUnit.Word;\n case \"line\":\n return TextUnit.Line;\n default:\n throw new Error(\"Invalid text unit\");\n }\n }\n}\nfunction wasmSIMDSupported() {\n // Tiny WebAssembly file generated from the following source using `wat2wasm`:\n //\n // (module\n // (func (result v128)\n // i32.const 0\n // i8x16.splat\n // i8x16.popcnt\n // )\n // )\n const simdTest = Uint8Array.from([\n 0, 97, 115, 109, 1, 0, 0, 0, 1, 5, 1, 96, 0, 1, 123, 3, 2, 1, 0, 10, 10, 1,\n 8, 0, 65, 0, 253, 15, 253, 98, 11,\n ]);\n return WebAssembly.validate(simdTest);\n}\nfunction resolve(path, baseURL) {\n return new URL(path, baseURL).href;\n}\n/**\n * Return true if the current JS runtime supports all the WebAssembly features\n * needed for the \"fast\" WebAssembly build. If not, the \"fallback\" version must\n * be used.\n */\nfunction supportsFastBuild() {\n return wasmSIMDSupported();\n}\n/**\n * Initialize the OCR library and return a new {@link OCREngine}.\n */\nasync function createOCREngine({ wasmBinary, progressChannel, } = {}) {\n if (!wasmBinary) {\n const wasmPath = supportsFastBuild()\n ? \"./tesseract-core.wasm\"\n : \"./tesseract-core-fallback.wasm\";\n // nb. If this code is included in a non-ESM bundle, Rollup will replace\n // `import.meta.url` with code that uses `document.currentScript` /\n // `location.href`.\n const wasmURL = resolve(wasmPath, import.meta.url);\n const wasmBinaryResponse = await fetch(wasmURL);\n wasmBinary = await wasmBinaryResponse.arrayBuffer();\n }\n const tessLib = await Module({ wasmBinary });\n return new OCREngine(tessLib, progressChannel);\n}\n\nexport { OCRClient, createOCREngine, layoutFlags, supportsFastBuild };\n","/**\n * Kreuzberg - WebAssembly Bindings for Browser and Runtime Environments\n *\n * This module provides WebAssembly bindings for Kreuzberg document intelligence,\n * enabling high-performance document extraction in browser and JavaScript runtime environments.\n *\n * ## Features\n *\n * - Extract text, metadata, and tables from documents\n * - Support for multiple document formats (PDF, Office, images, etc.)\n * - Browser and runtime-compatible WASM bindings\n * - Type-safe TypeScript interfaces\n * - Runtime detection and feature capability checking\n * - Automatic type conversion and error handling\n *\n * ## Installation\n *\n * ```bash\n * npm install @kreuzberg/wasm\n * ```\n *\n * ## Basic Usage\n *\n * ```typescript\n * import { extractBytes, initWasm } from '@kreuzberg/wasm';\n *\n * // Initialize WASM module once at app startup\n * await initWasm();\n *\n * // Extract from bytes\n * const bytes = new Uint8Array(buffer);\n * const result = await extractBytes(bytes, 'application/pdf');\n * console.log(result.content);\n * ```\n *\n * ## Browser Usage with File Input\n *\n * ```typescript\n * import { extractBytes, initWasm } from '@kreuzberg/wasm';\n * import { fileToUint8Array } from '@kreuzberg/wasm/adapters/wasm-adapter';\n *\n * // Initialize once at app startup\n * await initWasm();\n *\n * // Handle file input\n * const fileInput = document.getElementById('file');\n * fileInput.addEventListener('change', async (e) => {\n * const file = e.target.files?.[0];\n * if (file) {\n * const bytes = await fileToUint8Array(file);\n * const result = await extractBytes(bytes, file.type);\n * console.log(result.content);\n * }\n * });\n * ```\n *\n * ## Runtime Detection\n *\n * ```typescript\n * import { detectRuntime, getWasmCapabilities } from '@kreuzberg/wasm/runtime';\n *\n * const runtime = detectRuntime();\n * const caps = getWasmCapabilities();\n *\n * if (caps.hasWorkers) {\n * // Can use Web Workers for parallel processing\n * }\n * ```\n *\n * ## Configuration\n *\n * ```typescript\n * import { extractBytes, initWasm } from '@kreuzberg/wasm';\n * import type { ExtractionConfig } from '@kreuzberg/wasm';\n *\n * await initWasm();\n *\n * const config: ExtractionConfig = {\n * ocr: {\n * backend: 'tesseract',\n * language: 'eng'\n * },\n * chunking: {\n * maxChars: 1000,\n * chunkOverlap: 100\n * },\n * images: {\n * extractImages: true,\n * targetDpi: 150\n * }\n * };\n *\n * const result = await extractBytes(bytes, 'application/pdf', config);\n * ```\n */\n\nimport { configToJS, fileToUint8Array, jsToExtractionResult, wrapWasmError } from \"./adapters/wasm-adapter.js\";\nimport { registerOcrBackend } from \"./ocr/registry.js\";\nimport { TesseractWasmBackend } from \"./ocr/tesseract-wasm-backend.js\";\nimport { detectRuntime, hasWasm, isBrowser } from \"./runtime.js\";\nimport type { ExtractionConfig as ExtractionConfigType, ExtractionResult } from \"./types.js\";\n\n// Re-export adapter utilities for convenient access\nexport {\n\tconfigToJS,\n\tfileToUint8Array,\n\tisValidExtractionResult,\n\tjsToExtractionResult,\n\twrapWasmError,\n} from \"./adapters/wasm-adapter.js\";\n// Re-export OCR registry\nexport {\n\tclearOcrBackends,\n\tgetOcrBackend,\n\tlistOcrBackends,\n\tregisterOcrBackend,\n\tunregisterOcrBackend,\n} from \"./ocr/registry.js\";\n// Re-export OCR backends\nexport { TesseractWasmBackend } from \"./ocr/tesseract-wasm-backend.js\";\n// Re-export runtime utilities\nexport {\n\tdetectRuntime,\n\tgetRuntimeInfo,\n\tgetRuntimeVersion,\n\tgetWasmCapabilities,\n\thasBigInt,\n\thasBlob,\n\thasFileApi,\n\thasModuleWorkers,\n\thasSharedArrayBuffer,\n\thasWasm,\n\thasWasmStreaming,\n\thasWorkers,\n\tisBrowser,\n\tisBun,\n\tisDeno,\n\tisNode,\n\tisServerEnvironment,\n\tisWebEnvironment,\n\ttype RuntimeType,\n\ttype WasmCapabilities,\n} from \"./runtime.js\";\nexport type * from \"./types.js\";\nexport type {\n\tChunk,\n\tChunkingConfig,\n\tChunkMetadata,\n\tExtractedImage,\n\tExtractionConfig,\n\tExtractionResult,\n\tImageExtractionConfig,\n\tLanguageDetectionConfig,\n\tMetadata,\n\tOcrBackendProtocol,\n\tOcrConfig,\n\tPageContent,\n\tPageExtractionConfig,\n\tPdfConfig,\n\tPostProcessorConfig,\n\tTable,\n\tTesseractConfig,\n\tTokenReductionConfig,\n} from \"./types.js\";\n\n// WASM binding imports (to be populated during build)\n// Type definition for the WASM module interface\ntype WasmModule = {\n\t// Extraction functions\n\textractBytes: (data: Uint8Array, mimeType: string, config: Record<string, unknown> | null) => Promise<unknown>;\n\textractBytesSync: (data: Uint8Array, mimeType: string, config: Record<string, unknown> | null) => unknown;\n\tbatchExtractBytes: (\n\t\tdataList: Uint8Array[],\n\t\tmimeTypes: string[],\n\t\tconfig: Record<string, unknown> | null,\n\t) => Promise<unknown>;\n\tbatchExtractBytesSync: (\n\t\tdataList: Uint8Array[],\n\t\tmimeTypes: string[],\n\t\tconfig: Record<string, unknown> | null,\n\t) => unknown;\n\textractFile: (file: File, mimeType: string | null, config: Record<string, unknown> | null) => Promise<unknown>;\n\tbatchExtractFiles: (files: File[], config: Record<string, unknown> | null) => Promise<unknown>;\n\n\t// MIME and file type utilities\n\tdetectMimeFromBytes: (data: Uint8Array) => string;\n\tnormalizeMimeType: (mimeType: string) => string;\n\tgetMimeFromExtension: (extension: string) => string | null;\n\tgetExtensionsForMime: (mimeType: string) => string[];\n\n\t// Configuration\n\tloadConfigFromString: (content: string, format: string) => Record<string, unknown>;\n\tdiscoverConfig: () => Record<string, unknown>;\n\n\t// Module information\n\tversion: () => string;\n\tget_module_info: () => ModuleInfo;\n\n\t// OCR backend management\n\tregister_ocr_backend: (backend: unknown) => void;\n\tunregister_ocr_backend: (name: string) => void;\n\tlist_ocr_backends: () => string[];\n\tclear_ocr_backends: () => void;\n\n\t// Post-processor management\n\tregister_post_processor: (processor: unknown) => void;\n\tunregister_post_processor: (name: string) => void;\n\tlist_post_processors: () => string[];\n\tclear_post_processors: () => void;\n\n\t// Validator management\n\tregister_validator: (validator: unknown) => void;\n\tunregister_validator: (name: string) => void;\n\tlist_validators: () => string[];\n\tclear_validators: () => void;\n\n\t// PDF/WASM utilities\n\tinitialize_pdfium_render: (pdfiumWasmModule: unknown, localWasmModule: unknown, debug: boolean) => boolean;\n\tread_block_from_callback_wasm: (param: number, position: number, pBuf: number, size: number) => number;\n\twrite_block_from_callback_wasm: (param: number, buf: number, size: number) => number;\n\n\t// Initialization\n\tdefault?: () => Promise<void>;\n};\n\n// ModuleInfo type definition\ntype ModuleInfo = {\n\tname: () => string;\n\tversion: () => string;\n\tfree: () => void;\n};\n\nlet wasm: WasmModule | null = null;\n\n/** Initialize flag */\nlet initialized = false;\n\n/** Initialization error (if any) */\nlet initializationError: Error | null = null;\n\n/** Initialization promise for handling concurrent init calls */\nlet initializationPromise: Promise<void> | null = null;\n\n/**\n * Initialize the WASM module\n *\n * This function must be called once before using any extraction functions.\n * It loads and initializes the WASM module in the current runtime environment,\n * automatically selecting the appropriate WASM variant for the detected runtime.\n *\n * Multiple calls to initWasm() are safe and will return immediately if already initialized.\n *\n * @throws {Error} If WASM module fails to load or is not supported in the current environment\n *\n * @example Basic Usage\n * ```typescript\n * import { initWasm } from '@kreuzberg/wasm';\n *\n * async function main() {\n * await initWasm();\n * // Now you can use extraction functions\n * }\n *\n * main().catch(console.error);\n * ```\n *\n * @example With Error Handling\n * ```typescript\n * import { initWasm, getWasmCapabilities } from '@kreuzberg/wasm';\n *\n * async function initializeKreuzberg() {\n * const caps = getWasmCapabilities();\n * if (!caps.hasWasm) {\n * throw new Error('WebAssembly is not supported in this environment');\n * }\n *\n * try {\n * await initWasm();\n * console.log('Kreuzberg initialized successfully');\n * } catch (error) {\n * console.error('Failed to initialize Kreuzberg:', error);\n * throw error;\n * }\n * }\n * ```\n */\nexport async function initWasm(): Promise<void> {\n\tif (initialized) {\n\t\treturn;\n\t}\n\n\t// Handle concurrent init calls\n\tif (initializationPromise) {\n\t\treturn initializationPromise;\n\t}\n\n\tinitializationPromise = (async () => {\n\t\ttry {\n\t\t\t// Check WASM support\n\t\t\tif (!hasWasm()) {\n\t\t\t\tthrow new Error(\"WebAssembly is not supported in this environment\");\n\t\t\t}\n\n\t\t\t// Dynamic WASM import and initialization\n\t\t\tlet wasmModule: unknown;\n\t\t\ttry {\n\t\t\t\t// Try importing from wasm-pack output (pkg/) shipped with the published package.\n\t\t\t\twasmModule = await import(\"../pkg/kreuzberg_wasm.js\");\n\t\t\t} catch {\n\t\t\t\t// Fallback to dist-relative path (legacy builds which copy wasm-pack outputs into dist/)\n\t\t\t\t// @ts-expect-error - Dynamic import path\n\t\t\t\twasmModule = await import(\"./kreuzberg_wasm.js\");\n\t\t\t}\n\t\t\twasm = wasmModule as unknown as WasmModule;\n\n\t\t\t// Call default initialization if available (for some wasm-pack targets)\n\t\t\tif (wasm && typeof wasm.default === \"function\") {\n\t\t\t\tawait wasm.default();\n\t\t\t}\n\n\t\t\tinitialized = true;\n\t\t\tinitializationError = null;\n\t\t} catch (error) {\n\t\t\tinitializationError = error instanceof Error ? error : new Error(String(error));\n\t\t\tthrow wrapWasmError(error, \"initializing Kreuzberg WASM module\");\n\t\t}\n\t})();\n\n\treturn initializationPromise;\n}\n\n/**\n * Check if WASM module is initialized\n *\n * @returns True if WASM module is initialized, false otherwise\n *\n * @example\n * ```typescript\n * if (!isInitialized()) {\n * await initWasm();\n * }\n * ```\n */\nexport function isInitialized(): boolean {\n\treturn initialized;\n}\n\n/**\n * Get WASM module version\n *\n * @throws {Error} If WASM module is not initialized\n * @returns The version string of the WASM module\n *\n * @example\n * ```typescript\n * const version = getVersion();\n * console.log(`Using Kreuzberg ${version}`);\n * ```\n */\nexport function getVersion(): string {\n\tif (!initialized) {\n\t\tthrow new Error(\"WASM module not initialized. Call initWasm() first.\");\n\t}\n\n\tif (!wasm) {\n\t\tthrow new Error(\"WASM module not loaded. Call initWasm() first.\");\n\t}\n\n\treturn wasm.version();\n}\n\n/**\n * Get initialization error if module failed to load\n *\n * @returns The error that occurred during initialization, or null if no error\n *\n * @internal\n */\nexport function getInitializationError(): Error | null {\n\treturn initializationError;\n}\n\n/**\n * Extract content from bytes (document data)\n *\n * Extracts text, metadata, tables, images, and other content from document bytes.\n * Automatically detects document type from MIME type and applies appropriate extraction logic.\n *\n * @param data - The document bytes to extract from\n * @param mimeType - MIME type of the document (e.g., 'application/pdf', 'image/jpeg')\n * @param config - Optional extraction configuration\n * @returns Promise resolving to the extraction result\n * @throws {Error} If WASM module is not initialized or extraction fails\n *\n * @example Extract PDF\n * ```typescript\n * const bytes = new Uint8Array(buffer);\n * const result = await extractBytes(bytes, 'application/pdf');\n * console.log(result.content);\n * console.log(result.tables);\n * ```\n *\n * @example Extract with Configuration\n * ```typescript\n * const result = await extractBytes(bytes, 'application/pdf', {\n * ocr: {\n * backend: 'tesseract',\n * language: 'deu' // German\n * },\n * images: {\n * extractImages: true,\n * targetDpi: 200\n * }\n * });\n * ```\n *\n * @example Extract from File\n * ```typescript\n * const file = inputEvent.target.files[0];\n * const bytes = await fileToUint8Array(file);\n * const result = await extractBytes(bytes, file.type);\n * ```\n */\nexport async function extractBytes(\n\tdata: Uint8Array,\n\tmimeType: string,\n\tconfig?: ExtractionConfigType | null,\n): Promise<ExtractionResult> {\n\tif (!initialized) {\n\t\tthrow new Error(\"WASM module not initialized. Call initWasm() first.\");\n\t}\n\n\tif (!wasm) {\n\t\tthrow new Error(\"WASM module not loaded. Call initWasm() first.\");\n\t}\n\n\ttry {\n\t\t// Validate input\n\t\tif (!data || data.length === 0) {\n\t\t\tthrow new Error(\"Document data cannot be empty\");\n\t\t}\n\n\t\tif (!mimeType) {\n\t\t\tthrow new Error(\"MIME type is required\");\n\t\t}\n\n\t\t// Normalize config for WASM\n\t\tconst normalizedConfig = configToJS(config ?? null);\n\n\t\t// Call WASM function\n\t\tconst result = await wasm.extractBytes(data, mimeType, normalizedConfig);\n\n\t\t// Validate result\n\t\tif (!result) {\n\t\t\tthrow new Error(\"Invalid extraction result: no result from WASM module\");\n\t\t}\n\n\t\t// Convert and return result\n\t\treturn jsToExtractionResult(result);\n\t} catch (error) {\n\t\tthrow wrapWasmError(error, \"extracting from bytes\");\n\t}\n}\n\n/**\n * Extract content from a file on the file system\n *\n * Node.js and Deno specific function that reads a file from the file system\n * and extracts content from it. Automatically detects MIME type if not provided.\n *\n * @param path - Path to the file to extract from\n * @param mimeType - Optional MIME type of the file. If not provided, will attempt to detect\n * @param config - Optional extraction configuration\n * @returns Promise resolving to the extraction result\n * @throws {Error} If WASM module is not initialized, file doesn't exist, or extraction fails\n *\n * @example Extract with auto-detection\n * ```typescript\n * const result = await extractFile('./document.pdf');\n * console.log(result.content);\n * ```\n *\n * @example Extract with explicit MIME type\n * ```typescript\n * const result = await extractFile('./document.docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document');\n * ```\n *\n * @example Extract from Node.js with config\n * ```typescript\n * import { extractFile } from '@kreuzberg/wasm';\n * import { readFile } from 'fs/promises';\n *\n * const result = await extractFile('./report.xlsx', null, {\n * chunking: {\n * maxChars: 1000\n * }\n * });\n * ```\n */\nexport async function extractFile(\n\tpath: string,\n\tmimeType?: string | null,\n\tconfig?: ExtractionConfigType | null,\n): Promise<ExtractionResult> {\n\tif (!initialized) {\n\t\tthrow new Error(\"WASM module not initialized. Call initWasm() first.\");\n\t}\n\n\tif (!wasm) {\n\t\tthrow new Error(\"WASM module not loaded. Call initWasm() first.\");\n\t}\n\n\ttry {\n\t\tif (!path) {\n\t\t\tthrow new Error(\"File path is required\");\n\t\t}\n\n\t\t// This function is only suitable for Node.js/Deno/Bun environments\n\t\t// Browser environments should use extractBytes with fileToUint8Array\n\t\tconst runtime = detectRuntime();\n\t\tif (runtime === \"browser\") {\n\t\t\tthrow new Error(\"Use extractBytes with fileToUint8Array for browser environments\");\n\t\t}\n\n\t\t// Read file based on runtime\n\t\tlet fileData: Uint8Array;\n\n\t\tif (runtime === \"node\") {\n\t\t\t// Node.js: use dynamic import to avoid issues in non-Node.js environments\n\t\t\tconst { readFile } = await import(\"node:fs/promises\");\n\t\t\tconst buffer = await readFile(path);\n\t\t\tfileData = new Uint8Array(buffer);\n\t\t} else if (runtime === \"deno\") {\n\t\t\t// Deno: use Deno.readFile\n\t\t\tconst deno = (globalThis as Record<string, unknown>).Deno as {\n\t\t\t\treadFile: (path: string) => Promise<Uint8Array>;\n\t\t\t};\n\t\t\tfileData = await deno.readFile(path);\n\t\t} else if (runtime === \"bun\") {\n\t\t\t// Bun: use dynamic import for fs/promises (compatible with Node.js API)\n\t\t\tconst { readFile } = await import(\"node:fs/promises\");\n\t\t\tconst buffer = await readFile(path);\n\t\t\tfileData = new Uint8Array(buffer);\n\t\t} else {\n\t\t\tthrow new Error(`Unsupported runtime for file extraction: ${runtime}`);\n\t\t}\n\n\t\t// Detect MIME type if not provided\n\t\tlet detectedMimeType = mimeType;\n\t\tif (!detectedMimeType) {\n\t\t\tdetectedMimeType = wasm.detectMimeFromBytes(fileData);\n\t\t}\n\n\t\tif (!detectedMimeType) {\n\t\t\tthrow new Error(\"Could not detect MIME type for file. Please provide mimeType parameter.\");\n\t\t}\n\n\t\t// Normalize MIME type\n\t\tdetectedMimeType = wasm.normalizeMimeType(detectedMimeType);\n\n\t\t// Call extractBytes with the file contents\n\t\treturn await extractBytes(fileData, detectedMimeType, config);\n\t} catch (error) {\n\t\tthrow wrapWasmError(error, `extracting from file: ${path}`);\n\t}\n}\n\n/**\n * Extract content from a File or Blob (browser-friendly wrapper)\n *\n * Convenience function that wraps fileToUint8Array and extractBytes,\n * providing a streamlined API for browser applications handling file inputs.\n *\n * @param file - The File or Blob to extract from\n * @param mimeType - Optional MIME type. If not provided, uses file.type if available\n * @param config - Optional extraction configuration\n * @returns Promise resolving to the extraction result\n * @throws {Error} If WASM module is not initialized or extraction fails\n *\n * @example Simple file extraction\n * ```typescript\n * const fileInput = document.getElementById('file');\n * fileInput.addEventListener('change', async (e) => {\n * const file = e.target.files?.[0];\n * if (file) {\n * const result = await extractFromFile(file);\n * console.log(result.content);\n * }\n * });\n * ```\n *\n * @example With configuration\n * ```typescript\n * const result = await extractFromFile(file, file.type, {\n * chunking: { maxChars: 1000 },\n * images: { extractImages: true }\n * });\n * ```\n */\nexport async function extractFromFile(\n\tfile: File | Blob,\n\tmimeType?: string | null,\n\tconfig?: ExtractionConfigType | null,\n): Promise<ExtractionResult> {\n\tif (!initialized) {\n\t\tthrow new Error(\"WASM module not initialized. Call initWasm() first.\");\n\t}\n\n\tif (!wasm) {\n\t\tthrow new Error(\"WASM module not loaded. Call initWasm() first.\");\n\t}\n\n\ttry {\n\t\tconst bytes = await fileToUint8Array(file);\n\t\tlet type = mimeType ?? (file instanceof File ? file.type : \"application/octet-stream\");\n\n\t\t// Normalize MIME type\n\t\ttype = wasm.normalizeMimeType(type);\n\n\t\treturn await extractBytes(bytes, type, config);\n\t} catch (error) {\n\t\tthrow wrapWasmError(error, `extracting from ${file instanceof File ? \"file\" : \"blob\"}`);\n\t}\n}\n\n/**\n * Extract content from bytes synchronously\n *\n * Synchronous version of extractBytes. Performs extraction without async operations.\n * Note: Some extraction features may still be async internally, but the wrapper is synchronous.\n *\n * @param data - The document bytes to extract from\n * @param mimeType - MIME type of the document\n * @param config - Optional extraction configuration\n * @returns The extraction result\n * @throws {Error} If WASM module is not initialized or extraction fails\n *\n * @example\n * ```typescript\n * const bytes = new Uint8Array(buffer);\n * const result = extractBytesSync(bytes, 'application/pdf');\n * console.log(result.content);\n * ```\n */\nexport function extractBytesSync(\n\tdata: Uint8Array,\n\tmimeType: string,\n\tconfig?: ExtractionConfigType | null,\n): ExtractionResult {\n\tif (!initialized) {\n\t\tthrow new Error(\"WASM module not initialized. Call initWasm() first.\");\n\t}\n\n\tif (!wasm) {\n\t\tthrow new Error(\"WASM module not loaded. Call initWasm() first.\");\n\t}\n\n\ttry {\n\t\t// Validate input\n\t\tif (!data || data.length === 0) {\n\t\t\tthrow new Error(\"Document data cannot be empty\");\n\t\t}\n\n\t\tif (!mimeType) {\n\t\t\tthrow new Error(\"MIME type is required\");\n\t\t}\n\n\t\t// Normalize config for WASM\n\t\tconst normalizedConfig = configToJS(config ?? null);\n\n\t\t// Call WASM function\n\t\tconst result = wasm.extractBytesSync(data, mimeType, normalizedConfig);\n\n\t\t// Validate result\n\t\tif (!result) {\n\t\t\tthrow new Error(\"Invalid extraction result: no result from WASM module\");\n\t\t}\n\n\t\t// Convert and return result\n\t\treturn jsToExtractionResult(result);\n\t} catch (error) {\n\t\tthrow wrapWasmError(error, \"extracting from bytes (sync)\");\n\t}\n}\n\n/**\n * Batch extract content from multiple byte arrays asynchronously\n *\n * Extracts content from multiple documents in a single batch operation,\n * allowing for more efficient processing of multiple files.\n *\n * @param files - Array of objects containing data (Uint8Array) and mimeType (string)\n * @param config - Optional extraction configuration applied to all files\n * @returns Promise resolving to array of extraction results\n * @throws {Error} If WASM module is not initialized or extraction fails\n *\n * @example\n * ```typescript\n * const files = [\n * { data: pdfBytes, mimeType: 'application/pdf' },\n * { data: docxBytes, mimeType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' }\n * ];\n * const results = await batchExtractBytes(files);\n * results.forEach((result) => console.log(result.content));\n * ```\n */\nexport async function batchExtractBytes(\n\tfiles: Array<{ data: Uint8Array; mimeType: string }>,\n\tconfig?: ExtractionConfigType | null,\n): Promise<ExtractionResult[]> {\n\tif (!initialized) {\n\t\tthrow new Error(\"WASM module not initialized. Call initWasm() first.\");\n\t}\n\n\tif (!wasm) {\n\t\tthrow new Error(\"WASM module not loaded. Call initWasm() first.\");\n\t}\n\n\ttry {\n\t\t// Validate input\n\t\tif (!Array.isArray(files)) {\n\t\t\tthrow new Error(\"Files parameter must be an array\");\n\t\t}\n\n\t\tif (files.length === 0) {\n\t\t\tthrow new Error(\"Files array cannot be empty\");\n\t\t}\n\n\t\t// Extract data arrays and MIME types\n\t\tconst dataList: Uint8Array[] = [];\n\t\tconst mimeTypes: string[] = [];\n\n\t\tfor (let i = 0; i < files.length; i += 1) {\n\t\t\tconst file = files[i];\n\t\t\tif (!file || typeof file !== \"object\") {\n\t\t\t\tthrow new Error(`Invalid file at index ${i}: must be an object with data and mimeType`);\n\t\t\t}\n\n\t\t\tconst f = file as Record<string, unknown>;\n\n\t\t\tif (!(f.data instanceof Uint8Array)) {\n\t\t\t\tthrow new Error(`Invalid file at index ${i}: data must be Uint8Array`);\n\t\t\t}\n\n\t\t\tif (typeof f.mimeType !== \"string\") {\n\t\t\t\tthrow new Error(`Invalid file at index ${i}: mimeType must be a string`);\n\t\t\t}\n\n\t\t\tif (f.data.length === 0) {\n\t\t\t\tthrow new Error(`Invalid file at index ${i}: data cannot be empty`);\n\t\t\t}\n\n\t\t\tdataList.push(f.data);\n\t\t\tmimeTypes.push(f.mimeType);\n\t\t}\n\n\t\t// Normalize config for WASM\n\t\tconst normalizedConfig = configToJS(config ?? null);\n\n\t\t// Call WASM function\n\t\tconst results = await wasm.batchExtractBytes(dataList, mimeTypes, normalizedConfig);\n\n\t\t// Validate results\n\t\tif (!Array.isArray(results)) {\n\t\t\tthrow new Error(\"Invalid batch extraction result: expected array\");\n\t\t}\n\n\t\t// Convert each result\n\t\treturn results.map((result, index) => {\n\t\t\tif (!result) {\n\t\t\t\tthrow new Error(`Invalid extraction result at index ${index}: no result from WASM module`);\n\t\t\t}\n\n\t\t\treturn jsToExtractionResult(result);\n\t\t});\n\t} catch (error) {\n\t\tthrow wrapWasmError(error, \"batch extracting from bytes\");\n\t}\n}\n\n/**\n * Batch extract content from multiple byte arrays synchronously\n *\n * Synchronous version of batchExtractBytes. Extracts content from multiple documents\n * in a single batch operation without async operations.\n *\n * @param files - Array of objects containing data (Uint8Array) and mimeType (string)\n * @param config - Optional extraction configuration applied to all files\n * @returns Array of extraction results\n * @throws {Error} If WASM module is not initialized or extraction fails\n *\n * @example\n * ```typescript\n * const files = [\n * { data: pdfBytes, mimeType: 'application/pdf' },\n * { data: docxBytes, mimeType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' }\n * ];\n * const results = batchExtractBytesSync(files);\n * results.forEach((result) => console.log(result.content));\n * ```\n */\nexport function batchExtractBytesSync(\n\tfiles: Array<{ data: Uint8Array; mimeType: string }>,\n\tconfig?: ExtractionConfigType | null,\n): ExtractionResult[] {\n\tif (!initialized) {\n\t\tthrow new Error(\"WASM module not initialized. Call initWasm() first.\");\n\t}\n\n\tif (!wasm) {\n\t\tthrow new Error(\"WASM module not loaded. Call initWasm() first.\");\n\t}\n\n\ttry {\n\t\t// Validate input\n\t\tif (!Array.isArray(files)) {\n\t\t\tthrow new Error(\"Files parameter must be an array\");\n\t\t}\n\n\t\tif (files.length === 0) {\n\t\t\tthrow new Error(\"Files array cannot be empty\");\n\t\t}\n\n\t\t// Extract data arrays and MIME types\n\t\tconst dataList: Uint8Array[] = [];\n\t\tconst mimeTypes: string[] = [];\n\n\t\tfor (let i = 0; i < files.length; i += 1) {\n\t\t\tconst file = files[i];\n\t\t\tif (!file || typeof file !== \"object\") {\n\t\t\t\tthrow new Error(`Invalid file at index ${i}: must be an object with data and mimeType`);\n\t\t\t}\n\n\t\t\tconst f = file as Record<string, unknown>;\n\n\t\t\tif (!(f.data instanceof Uint8Array)) {\n\t\t\t\tthrow new Error(`Invalid file at index ${i}: data must be Uint8Array`);\n\t\t\t}\n\n\t\t\tif (typeof f.mimeType !== \"string\") {\n\t\t\t\tthrow new Error(`Invalid file at index ${i}: mimeType must be a string`);\n\t\t\t}\n\n\t\t\tif (f.data.length === 0) {\n\t\t\t\tthrow new Error(`Invalid file at index ${i}: data cannot be empty`);\n\t\t\t}\n\n\t\t\tdataList.push(f.data);\n\t\t\tmimeTypes.push(f.mimeType);\n\t\t}\n\n\t\t// Normalize config for WASM\n\t\tconst normalizedConfig = configToJS(config ?? null);\n\n\t\t// Call WASM function\n\t\tconst results = wasm.batchExtractBytesSync(dataList, mimeTypes, normalizedConfig);\n\n\t\t// Validate results\n\t\tif (!Array.isArray(results)) {\n\t\t\tthrow new Error(\"Invalid batch extraction result: expected array\");\n\t\t}\n\n\t\t// Convert each result\n\t\treturn results.map((result, index) => {\n\t\t\tif (!result) {\n\t\t\t\tthrow new Error(`Invalid extraction result at index ${index}: no result from WASM module`);\n\t\t\t}\n\n\t\t\treturn jsToExtractionResult(result);\n\t\t});\n\t} catch (error) {\n\t\tthrow wrapWasmError(error, \"batch extracting from bytes (sync)\");\n\t}\n}\n\n/**\n * Batch extract content from multiple File objects asynchronously\n *\n * Convenience function that converts File objects to Uint8Array and calls batchExtractBytes.\n * Automatically uses the file.type as MIME type if available.\n *\n * @param files - Array of File objects to extract from\n * @param config - Optional extraction configuration applied to all files\n * @returns Promise resolving to array of extraction results\n * @throws {Error} If WASM module is not initialized, files cannot be read, or extraction fails\n *\n * @example\n * ```typescript\n * const fileInput = document.getElementById('files');\n * const files = Array.from(fileInput.files ?? []);\n * const results = await batchExtractFiles(files);\n * results.forEach((result, index) => {\n * console.log(`File ${index}: ${result.content.substring(0, 50)}...`);\n * });\n * ```\n */\nexport async function batchExtractFiles(\n\tfiles: File[],\n\tconfig?: ExtractionConfigType | null,\n): Promise<ExtractionResult[]> {\n\tif (!initialized) {\n\t\tthrow new Error(\"WASM module not initialized. Call initWasm() first.\");\n\t}\n\n\ttry {\n\t\t// Validate input\n\t\tif (!Array.isArray(files)) {\n\t\t\tthrow new Error(\"Files parameter must be an array\");\n\t\t}\n\n\t\tif (files.length === 0) {\n\t\t\tthrow new Error(\"Files array cannot be empty\");\n\t\t}\n\n\t\t// Convert all files to Uint8Array and collect MIME types\n\t\tconst byteFiles: Array<{ data: Uint8Array; mimeType: string }> = [];\n\n\t\tfor (let i = 0; i < files.length; i += 1) {\n\t\t\tconst file = files[i];\n\t\t\tif (!(file instanceof File)) {\n\t\t\t\tthrow new Error(`Invalid file at index ${i}: must be a File object`);\n\t\t\t}\n\n\t\t\tconst bytes = await fileToUint8Array(file);\n\t\t\tbyteFiles.push({\n\t\t\t\tdata: bytes,\n\t\t\t\tmimeType: file.type || \"application/octet-stream\",\n\t\t\t});\n\t\t}\n\n\t\t// Call batchExtractBytes with converted files\n\t\treturn await batchExtractBytes(byteFiles, config);\n\t} catch (error) {\n\t\tthrow wrapWasmError(error, \"batch extracting from files\");\n\t}\n}\n\n/**\n * Enable OCR functionality with tesseract-wasm backend\n *\n * Convenience function that automatically initializes and registers the Tesseract WASM backend.\n * This is the recommended approach for enabling OCR in WASM-based applications.\n *\n * ## Browser Requirement\n *\n * This function requires a browser environment with support for:\n * - WebWorkers (for Tesseract processing)\n * - createImageBitmap (for image conversion)\n * - Blob API\n *\n * ## Network Requirement\n *\n * Training data will be loaded from jsDelivr CDN on first use of each language.\n * Ensure network access to cdn.jsdelivr.net is available.\n *\n * @throws {Error} If not in browser environment or tesseract-wasm is not available\n *\n * @example Basic Usage\n * ```typescript\n * import { enableOcr, extractBytes, initWasm } from '@kreuzberg/wasm';\n *\n * async function main() {\n * // Initialize WASM module\n * await initWasm();\n *\n * // Enable OCR with tesseract-wasm\n * await enableOcr();\n *\n * // Now you can use OCR in extraction\n * const imageBytes = new Uint8Array(buffer);\n * const result = await extractBytes(imageBytes, 'image/png', {\n * ocr: { backend: 'tesseract-wasm', language: 'eng' }\n * });\n *\n * console.log(result.content); // Extracted text\n * }\n *\n * main().catch(console.error);\n * ```\n *\n * @example With Progress Tracking\n * ```typescript\n * import { enableOcr, TesseractWasmBackend } from '@kreuzberg/wasm';\n *\n * async function setupOcrWithProgress() {\n * const backend = new TesseractWasmBackend();\n * backend.setProgressCallback((progress) => {\n * console.log(`OCR Progress: ${progress}%`);\n * updateProgressBar(progress);\n * });\n *\n * await backend.initialize();\n * registerOcrBackend(backend);\n * }\n *\n * setupOcrWithProgress().catch(console.error);\n * ```\n *\n * @example Multiple Languages\n * ```typescript\n * import { enableOcr, extractBytes, initWasm } from '@kreuzberg/wasm';\n *\n * await initWasm();\n * await enableOcr();\n *\n * // Extract English text\n * const englishResult = await extractBytes(engImageBytes, 'image/png', {\n * ocr: { backend: 'tesseract-wasm', language: 'eng' }\n * });\n *\n * // Extract German text - model is cached after first use\n * const germanResult = await extractBytes(deImageBytes, 'image/png', {\n * ocr: { backend: 'tesseract-wasm', language: 'deu' }\n * });\n * ```\n */\nexport async function enableOcr(): Promise<void> {\n\t// Check if WASM module is initialized\n\tif (!initialized) {\n\t\tthrow new Error(\"WASM module not initialized. Call initWasm() first.\");\n\t}\n\n\t// Check if in browser environment\n\tif (!isBrowser()) {\n\t\tthrow new Error(\n\t\t\t\"OCR is only available in browser environments. TesseractWasmBackend requires Web Workers and createImageBitmap.\",\n\t\t);\n\t}\n\n\ttry {\n\t\t// Create and initialize backend\n\t\tconst backend = new TesseractWasmBackend();\n\t\tawait backend.initialize();\n\n\t\t// Register the backend\n\t\tregisterOcrBackend(backend);\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tthrow new Error(`Failed to enable OCR: ${message}`);\n\t}\n}\n","/**\n * WASM Type Adapter\n *\n * This module provides type adapters for converting between JavaScript/TypeScript\n * types and WASM-compatible types, handling File/Blob conversions, config normalization,\n * and result parsing.\n *\n * @example File Conversion\n * ```typescript\n * import { fileToUint8Array } from '@kreuzberg/wasm/adapters/wasm-adapter';\n *\n * const file = event.target.files[0];\n * const bytes = await fileToUint8Array(file);\n * const result = await extractBytes(bytes, file.type);\n * ```\n *\n * @example Config Normalization\n * ```typescript\n * import { configToJS } from '@kreuzberg/wasm/adapters/wasm-adapter';\n *\n * const config = {\n * ocr: { backend: 'tesseract', language: 'eng' },\n * chunking: { maxChars: 1000 }\n * };\n * const normalized = configToJS(config);\n * ```\n */\n\nimport type { Chunk, ExtractedImage, ExtractionConfig, ExtractionResult, Metadata, Table } from \"../types.js\";\n\n/**\n * Maximum file size for processing (512 MB)\n *\n * @internal\n */\nconst MAX_FILE_SIZE = 512 * 1024 * 1024;\n\n/**\n * Type predicate to validate numeric value or null\n *\n * @internal\n */\nfunction isNumberOrNull(value: unknown): value is number | null {\n\treturn typeof value === \"number\" || value === null;\n}\n\n/**\n * Type predicate to validate string value or null\n *\n * @internal\n */\nfunction isStringOrNull(value: unknown): value is string | null {\n\treturn typeof value === \"string\" || value === null;\n}\n\n/**\n * Type predicate to validate boolean value\n *\n * @internal\n */\nfunction isBoolean(value: unknown): value is boolean {\n\treturn typeof value === \"boolean\";\n}\n\n/**\n * Convert a File or Blob to Uint8Array\n *\n * Handles both browser File API and server-side Blob-like objects,\n * providing a unified interface for reading binary data.\n *\n * @param file - The File or Blob to convert\n * @returns Promise resolving to the byte array\n * @throws {Error} If the file cannot be read or exceeds size limit\n *\n * @example\n * ```typescript\n * const file = document.getElementById('input').files[0];\n * const bytes = await fileToUint8Array(file);\n * const result = await extractBytes(bytes, 'application/pdf');\n * ```\n */\nexport async function fileToUint8Array(file: File | Blob): Promise<Uint8Array> {\n\ttry {\n\t\tif (file.size > MAX_FILE_SIZE) {\n\t\t\tthrow new Error(\n\t\t\t\t`File size (${file.size} bytes) exceeds maximum (${MAX_FILE_SIZE} bytes). Maximum file size is 512 MB.`,\n\t\t\t);\n\t\t}\n\n\t\tconst arrayBuffer = await file.arrayBuffer();\n\t\treturn new Uint8Array(arrayBuffer);\n\t} catch (error) {\n\t\tthrow new Error(`Failed to read file: ${error instanceof Error ? error.message : String(error)}`);\n\t}\n}\n\n/**\n * Normalize ExtractionConfig for WASM processing\n *\n * Converts TypeScript configuration objects to a WASM-compatible format,\n * handling null values, undefined properties, and nested structures.\n *\n * @param config - The extraction configuration or null\n * @returns Normalized configuration object suitable for WASM\n *\n * @example\n * ```typescript\n * const config: ExtractionConfig = {\n * ocr: { backend: 'tesseract' },\n * chunking: { maxChars: 1000 }\n * };\n * const wasmConfig = configToJS(config);\n * ```\n */\nexport function configToJS(config: ExtractionConfig | null): Record<string, unknown> {\n\tif (!config) {\n\t\treturn {};\n\t}\n\n\tconst normalized: Record<string, unknown> = {};\n\n\t// Recursively normalize nested objects\n\tconst normalizeValue = (value: unknown): unknown => {\n\t\tif (value === null || value === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\tif (typeof value === \"object\") {\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\treturn value.map(normalizeValue);\n\t\t\t}\n\t\t\tconst obj = value as Record<string, unknown>;\n\t\t\tconst normalized: Record<string, unknown> = {};\n\t\t\tfor (const [key, val] of Object.entries(obj)) {\n\t\t\t\tconst normalizedVal = normalizeValue(val);\n\t\t\t\tif (normalizedVal !== null && normalizedVal !== undefined) {\n\t\t\t\t\tnormalized[key] = normalizedVal;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn Object.keys(normalized).length > 0 ? normalized : null;\n\t\t}\n\t\treturn value;\n\t};\n\n\tfor (const [key, value] of Object.entries(config)) {\n\t\tconst normalizedValue = normalizeValue(value);\n\t\tif (normalizedValue !== null && normalizedValue !== undefined) {\n\t\t\tnormalized[key] = normalizedValue;\n\t\t}\n\t}\n\n\treturn normalized;\n}\n\n/**\n * Parse WASM extraction result and convert to TypeScript type\n *\n * Handles conversion of WASM-returned objects to proper ExtractionResult types,\n * including proper array conversions and type assertions for tables, chunks, and images.\n *\n * @param jsValue - The raw WASM result value\n * @returns Properly typed ExtractionResult\n * @throws {Error} If the result structure is invalid\n *\n * @example\n * ```typescript\n * const wasmResult = await wasmExtract(bytes, mimeType, config);\n * const result = jsToExtractionResult(wasmResult);\n * console.log(result.content);\n * ```\n */\nexport function jsToExtractionResult(jsValue: unknown): ExtractionResult {\n\tif (!jsValue || typeof jsValue !== \"object\") {\n\t\tthrow new Error(\"Invalid extraction result: value is not an object\");\n\t}\n\n\tconst result = jsValue as Record<string, unknown>;\n\tconst mimeType =\n\t\ttypeof result.mimeType === \"string\"\n\t\t\t? result.mimeType\n\t\t\t: typeof result.mime_type === \"string\"\n\t\t\t\t? result.mime_type\n\t\t\t\t: null;\n\n\t// Validate required fields\n\tif (typeof result.content !== \"string\") {\n\t\tthrow new Error(\"Invalid extraction result: missing or invalid content\");\n\t}\n\tif (typeof mimeType !== \"string\") {\n\t\tthrow new Error(\"Invalid extraction result: missing or invalid mimeType\");\n\t}\n\tif (!result.metadata || typeof result.metadata !== \"object\") {\n\t\tthrow new Error(\"Invalid extraction result: missing or invalid metadata\");\n\t}\n\n\t// Parse tables\n\tconst tables: Table[] = [];\n\tif (Array.isArray(result.tables)) {\n\t\tfor (const table of result.tables) {\n\t\t\tif (table && typeof table === \"object\") {\n\t\t\t\tconst t = table as Record<string, unknown>;\n\t\t\t\t// Validate table structure before type casting\n\t\t\t\tif (\n\t\t\t\t\tArray.isArray(t.cells) &&\n\t\t\t\t\tt.cells.every((row) => Array.isArray(row) && row.every((cell) => typeof cell === \"string\")) &&\n\t\t\t\t\ttypeof t.markdown === \"string\" &&\n\t\t\t\t\ttypeof t.pageNumber === \"number\"\n\t\t\t\t) {\n\t\t\t\t\ttables.push({\n\t\t\t\t\t\tcells: t.cells as string[][],\n\t\t\t\t\t\tmarkdown: t.markdown,\n\t\t\t\t\t\tpageNumber: t.pageNumber,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Parse chunks\n\tconst chunks: Chunk[] | null = Array.isArray(result.chunks)\n\t\t? result.chunks.map((chunk) => {\n\t\t\t\tif (!chunk || typeof chunk !== \"object\") {\n\t\t\t\t\tthrow new Error(\"Invalid chunk structure\");\n\t\t\t\t}\n\t\t\t\tconst c = chunk as Record<string, unknown>;\n\t\t\t\tif (typeof c.content !== \"string\") {\n\t\t\t\t\tthrow new Error(\"Invalid chunk: missing content\");\n\t\t\t\t}\n\t\t\t\tif (!c.metadata || typeof c.metadata !== \"object\") {\n\t\t\t\t\tthrow new Error(\"Invalid chunk: missing metadata\");\n\t\t\t\t}\n\t\t\t\tconst metadata = c.metadata as Record<string, unknown>;\n\n\t\t\t\t// Validate embedding array contains only numbers\n\t\t\t\tlet embedding: number[] | null = null;\n\t\t\t\tif (Array.isArray(c.embedding)) {\n\t\t\t\t\tif (!c.embedding.every((item) => typeof item === \"number\")) {\n\t\t\t\t\t\tthrow new Error(\"Invalid chunk: embedding must contain only numbers\");\n\t\t\t\t\t}\n\t\t\t\t\tembedding = c.embedding;\n\t\t\t\t}\n\n\t\t\t\t// Validate metadata fields\n\t\t\t\tif (typeof metadata.charStart !== \"number\") {\n\t\t\t\t\tthrow new Error(\"Invalid chunk metadata: charStart must be a number\");\n\t\t\t\t}\n\t\t\t\tif (typeof metadata.charEnd !== \"number\") {\n\t\t\t\t\tthrow new Error(\"Invalid chunk metadata: charEnd must be a number\");\n\t\t\t\t}\n\t\t\t\tif (!isNumberOrNull(metadata.tokenCount)) {\n\t\t\t\t\tthrow new Error(\"Invalid chunk metadata: tokenCount must be a number or null\");\n\t\t\t\t}\n\t\t\t\tif (typeof metadata.chunkIndex !== \"number\") {\n\t\t\t\t\tthrow new Error(\"Invalid chunk metadata: chunkIndex must be a number\");\n\t\t\t\t}\n\t\t\t\tif (typeof metadata.totalChunks !== \"number\") {\n\t\t\t\t\tthrow new Error(\"Invalid chunk metadata: totalChunks must be a number\");\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tcontent: c.content,\n\t\t\t\t\tembedding,\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tcharStart: metadata.charStart,\n\t\t\t\t\t\tcharEnd: metadata.charEnd,\n\t\t\t\t\t\ttokenCount: metadata.tokenCount,\n\t\t\t\t\t\tchunkIndex: metadata.chunkIndex,\n\t\t\t\t\t\ttotalChunks: metadata.totalChunks,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t})\n\t\t: null;\n\n\t// Parse images\n\tconst images: ExtractedImage[] | null = Array.isArray(result.images)\n\t\t? result.images.map((image) => {\n\t\t\t\tif (!image || typeof image !== \"object\") {\n\t\t\t\t\tthrow new Error(\"Invalid image structure\");\n\t\t\t\t}\n\t\t\t\tconst img = image as Record<string, unknown>;\n\t\t\t\tif (!(img.data instanceof Uint8Array)) {\n\t\t\t\t\tthrow new Error(\"Invalid image: data must be Uint8Array\");\n\t\t\t\t}\n\t\t\t\tif (typeof img.format !== \"string\") {\n\t\t\t\t\tthrow new Error(\"Invalid image: missing format\");\n\t\t\t\t}\n\n\t\t\t\t// Validate numeric fields\n\t\t\t\tif (typeof img.imageIndex !== \"number\") {\n\t\t\t\t\tthrow new Error(\"Invalid image: imageIndex must be a number\");\n\t\t\t\t}\n\t\t\t\tif (!isNumberOrNull(img.pageNumber)) {\n\t\t\t\t\tthrow new Error(\"Invalid image: pageNumber must be a number or null\");\n\t\t\t\t}\n\t\t\t\tif (!isNumberOrNull(img.width)) {\n\t\t\t\t\tthrow new Error(\"Invalid image: width must be a number or null\");\n\t\t\t\t}\n\t\t\t\tif (!isNumberOrNull(img.height)) {\n\t\t\t\t\tthrow new Error(\"Invalid image: height must be a number or null\");\n\t\t\t\t}\n\t\t\t\tif (!isNumberOrNull(img.bitsPerComponent)) {\n\t\t\t\t\tthrow new Error(\"Invalid image: bitsPerComponent must be a number or null\");\n\t\t\t\t}\n\n\t\t\t\t// Validate boolean field\n\t\t\t\tif (!isBoolean(img.isMask)) {\n\t\t\t\t\tthrow new Error(\"Invalid image: isMask must be a boolean\");\n\t\t\t\t}\n\n\t\t\t\t// Validate string fields\n\t\t\t\tif (!isStringOrNull(img.colorspace)) {\n\t\t\t\t\tthrow new Error(\"Invalid image: colorspace must be a string or null\");\n\t\t\t\t}\n\t\t\t\tif (!isStringOrNull(img.description)) {\n\t\t\t\t\tthrow new Error(\"Invalid image: description must be a string or null\");\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tdata: img.data,\n\t\t\t\t\tformat: img.format,\n\t\t\t\t\timageIndex: img.imageIndex,\n\t\t\t\t\tpageNumber: img.pageNumber,\n\t\t\t\t\twidth: img.width,\n\t\t\t\t\theight: img.height,\n\t\t\t\t\tcolorspace: img.colorspace,\n\t\t\t\t\tbitsPerComponent: img.bitsPerComponent,\n\t\t\t\t\tisMask: img.isMask,\n\t\t\t\t\tdescription: img.description,\n\t\t\t\t\tocrResult: img.ocrResult ? jsToExtractionResult(img.ocrResult) : null,\n\t\t\t\t};\n\t\t\t})\n\t\t: null;\n\n\t// Validate detectedLanguages array\n\tlet detectedLanguages: string[] | null = null;\n\tconst detectedLanguagesRaw = Array.isArray(result.detectedLanguages)\n\t\t? result.detectedLanguages\n\t\t: result.detected_languages;\n\tif (Array.isArray(detectedLanguagesRaw)) {\n\t\tif (!detectedLanguagesRaw.every((lang) => typeof lang === \"string\")) {\n\t\t\tthrow new Error(\"Invalid result: detectedLanguages must contain only strings\");\n\t\t}\n\t\tdetectedLanguages = detectedLanguagesRaw;\n\t}\n\n\treturn {\n\t\tcontent: result.content,\n\t\tmimeType,\n\t\tmetadata: (result.metadata ?? {}) as Metadata,\n\t\ttables,\n\t\tdetectedLanguages,\n\t\tchunks,\n\t\timages,\n\t};\n}\n\n/**\n * Wrap and format WASM errors with context\n *\n * Converts WASM error messages to JavaScript Error objects with proper context\n * and stack trace information when available.\n *\n * @param error - The error from WASM\n * @param context - Additional context about what operation failed\n * @returns A formatted Error object\n *\n * @internal\n *\n * @example\n * ```typescript\n * try {\n * await wasmExtract(bytes, mimeType);\n * } catch (error) {\n * throw wrapWasmError(error, 'extracting document');\n * }\n * ```\n */\nexport function wrapWasmError(error: unknown, context: string): Error {\n\tif (error instanceof Error) {\n\t\treturn new Error(`Error ${context}: ${error.message}`, {\n\t\t\tcause: error,\n\t\t});\n\t}\n\n\tconst message = String(error);\n\treturn new Error(`Error ${context}: ${message}`);\n}\n\n/**\n * Validate that a WASM-returned value conforms to ExtractionResult structure\n *\n * Performs structural validation without full type checking,\n * useful for runtime validation of WASM output.\n *\n * @param value - The value to validate\n * @returns True if value appears to be a valid ExtractionResult\n *\n * @internal\n */\nexport function isValidExtractionResult(value: unknown): value is ExtractionResult {\n\tif (!value || typeof value !== \"object\") {\n\t\treturn false;\n\t}\n\n\tconst obj = value as Record<string, unknown>;\n\treturn (\n\t\ttypeof obj.content === \"string\" &&\n\t\t(typeof obj.mimeType === \"string\" || typeof obj.mime_type === \"string\") &&\n\t\tobj.metadata !== null &&\n\t\ttypeof obj.metadata === \"object\" &&\n\t\tArray.isArray(obj.tables)\n\t);\n}\n","/**\n * OCR Backend Registry\n *\n * Provides a registry for OCR backends in the WASM environment.\n * This enables auto-registration and management of OCR backends.\n *\n * Note: The WASM package provides a lightweight registry in the browser.\n * For more advanced features like Rust integration, use @kreuzberg/node or @kreuzberg/deno.\n *\n * @example\n * ```typescript\n * import { TesseractWasmBackend } from '@kreuzberg/wasm/ocr/tesseract-wasm-backend';\n * import { enableOcr } from '@kreuzberg/wasm';\n *\n * // Simple auto-registration\n * await enableOcr();\n * ```\n */\n\nimport type { OcrBackendProtocol } from \"../types.js\";\n\n/** Global registry of OCR backends */\nconst ocrBackendRegistry = new Map<string, OcrBackendProtocol>();\n\n/**\n * Register an OCR backend\n *\n * Registers an OCR backend with the WASM extraction pipeline.\n * If a backend with the same name is already registered, it will be replaced.\n *\n * @param backend - OCR backend implementing OcrBackendProtocol\n * @throws {Error} If backend validation fails\n *\n * @example\n * ```typescript\n * import { TesseractWasmBackend } from '@kreuzberg/wasm/ocr/tesseract-wasm-backend';\n * import { registerOcrBackend } from '@kreuzberg/wasm/ocr/registry';\n *\n * const backend = new TesseractWasmBackend();\n * await backend.initialize();\n * registerOcrBackend(backend);\n * ```\n */\nexport function registerOcrBackend(backend: OcrBackendProtocol): void {\n\t// Validate backend\n\tif (!backend) {\n\t\tthrow new Error(\"Backend cannot be null or undefined\");\n\t}\n\n\tif (typeof backend.name !== \"function\") {\n\t\tthrow new Error(\"Backend must implement name() method\");\n\t}\n\n\tif (typeof backend.supportedLanguages !== \"function\") {\n\t\tthrow new Error(\"Backend must implement supportedLanguages() method\");\n\t}\n\n\tif (typeof backend.processImage !== \"function\") {\n\t\tthrow new Error(\"Backend must implement processImage() method\");\n\t}\n\n\tconst backendName = backend.name();\n\n\tif (!backendName || typeof backendName !== \"string\") {\n\t\tthrow new Error(\"Backend name must be a non-empty string\");\n\t}\n\n\t// Check for duplicate registration (allow overwriting with warning)\n\tif (ocrBackendRegistry.has(backendName)) {\n\t\tconsole.warn(`OCR backend \"${backendName}\" is already registered and will be replaced`);\n\t}\n\n\t// Register the backend\n\tocrBackendRegistry.set(backendName, backend);\n}\n\n/**\n * Get a registered OCR backend by name\n *\n * @param name - Backend name\n * @returns The OCR backend or undefined if not found\n *\n * @example\n * ```typescript\n * import { getOcrBackend } from '@kreuzberg/wasm/ocr/registry';\n *\n * const backend = getOcrBackend('tesseract-wasm');\n * if (backend) {\n * console.log('Available languages:', backend.supportedLanguages());\n * }\n * ```\n */\nexport function getOcrBackend(name: string): OcrBackendProtocol | undefined {\n\treturn ocrBackendRegistry.get(name);\n}\n\n/**\n * List all registered OCR backends\n *\n * @returns Array of registered backend names\n *\n * @example\n * ```typescript\n * import { listOcrBackends } from '@kreuzberg/wasm/ocr/registry';\n *\n * const backends = listOcrBackends();\n * console.log('Available OCR backends:', backends);\n * ```\n */\nexport function listOcrBackends(): string[] {\n\treturn Array.from(ocrBackendRegistry.keys());\n}\n\n/**\n * Unregister an OCR backend\n *\n * @param name - Backend name to unregister\n * @throws {Error} If backend is not found\n *\n * @example\n * ```typescript\n * import { unregisterOcrBackend } from '@kreuzberg/wasm/ocr/registry';\n *\n * unregisterOcrBackend('tesseract-wasm');\n * ```\n */\nexport async function unregisterOcrBackend(name: string): Promise<void> {\n\tconst backend = ocrBackendRegistry.get(name);\n\n\tif (!backend) {\n\t\tthrow new Error(\n\t\t\t`OCR backend \"${name}\" is not registered. Available backends: ${Array.from(ocrBackendRegistry.keys()).join(\", \")}`,\n\t\t);\n\t}\n\n\t// Call shutdown if available\n\tif (typeof backend.shutdown === \"function\") {\n\t\ttry {\n\t\t\tawait backend.shutdown();\n\t\t} catch (error) {\n\t\t\tconsole.warn(\n\t\t\t\t`Error shutting down OCR backend \"${name}\": ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t);\n\t\t}\n\t}\n\n\tocrBackendRegistry.delete(name);\n}\n\n/**\n * Clear all registered OCR backends\n *\n * Unregisters all OCR backends and calls their shutdown methods.\n *\n * @example\n * ```typescript\n * import { clearOcrBackends } from '@kreuzberg/wasm/ocr/registry';\n *\n * // Clean up all backends when shutting down\n * await clearOcrBackends();\n * ```\n */\nexport async function clearOcrBackends(): Promise<void> {\n\tconst backends = Array.from(ocrBackendRegistry.entries());\n\n\tfor (const [name, backend] of backends) {\n\t\tif (typeof backend.shutdown === \"function\") {\n\t\t\ttry {\n\t\t\t\tawait backend.shutdown();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`Error shutting down OCR backend \"${name}\": ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tocrBackendRegistry.clear();\n}\n","/**\n * Tesseract WASM OCR Backend\n *\n * Provides OCR capabilities using tesseract-wasm library for browser environments.\n * Loads training data on-demand from jsDelivr CDN and implements the OcrBackendProtocol.\n *\n * ## Browser-Only Requirement\n *\n * This backend requires browser APIs like createImageBitmap and Web Workers.\n * It will NOT work in Node.js environments without additional canvas polyfills.\n *\n * ## Supported Languages\n *\n * Common ISO 639-1 and ISO 639-2 codes:\n * - English: \"eng\"\n * - German: \"deu\"\n * - French: \"fra\"\n * - Spanish: \"spa\"\n * - Italian: \"ita\"\n * - Portuguese: \"por\"\n * - Dutch: \"nld\"\n * - Russian: \"rus\"\n * - Chinese (Simplified): \"chi_sim\"\n * - Chinese (Traditional): \"chi_tra\"\n * - Japanese: \"jpn\"\n * - Korean: \"kor\"\n * - Arabic: \"ara\"\n * - Hindi: \"hin\"\n *\n * For complete language list, see: https://github.com/naptha/tesseract.js\n *\n * @example Basic Usage\n * ```typescript\n * import { TesseractWasmBackend } from '@kreuzberg/wasm/ocr/tesseract-wasm-backend';\n * import { registerOcrBackend, extractBytes, initWasm } from '@kreuzberg/wasm';\n *\n * // Initialize\n * await initWasm();\n * const backend = new TesseractWasmBackend();\n * await backend.initialize();\n * registerOcrBackend(backend);\n *\n * // Use in extraction\n * const imageBytes = new Uint8Array(buffer);\n * const result = await extractBytes(imageBytes, 'image/png', {\n * ocr: { backend: 'tesseract-wasm', language: 'eng' }\n * });\n * console.log(result.content); // Extracted text\n * ```\n *\n * @example With Language Auto-Detection\n * ```typescript\n * const backend = new TesseractWasmBackend();\n * await backend.initialize();\n * registerOcrBackend(backend);\n *\n * // Extract without specifying language - backend will auto-detect\n * const result = await extractBytes(imageBytes, 'image/png', {\n * ocr: { backend: 'tesseract-wasm' } // language will auto-detect\n * });\n * ```\n */\n\nimport type { OcrBackendProtocol } from \"../types.js\";\n\n/**\n * Tesseract WASM Client interface\n * Type definition for tesseract-wasm's OCRClient class\n */\ninterface TesseractClient {\n\tloadModel(modelPath: string): Promise<void>;\n\tloadImage(image: ImageBitmap | Blob): Promise<void>;\n\tgetText(): Promise<string>;\n\tgetConfidence(): Promise<number>;\n\tgetPageMetadata(): Promise<Record<string, unknown>>;\n\tdestroy(): void;\n\tterminate(): void;\n}\n\n/**\n * TesseractWasmBackend - OCR backend using tesseract-wasm library\n *\n * Implements the OcrBackendProtocol for Kreuzberg document extraction pipeline.\n * Provides comprehensive OCR support with model caching, error handling, and progress reporting.\n */\nexport class TesseractWasmBackend implements OcrBackendProtocol {\n\t/** Tesseract WASM client instance */\n\tprivate client: TesseractClient | null = null;\n\n\t/** Track which models are currently loaded to avoid redundant loads */\n\tprivate loadedLanguages: Set<string> = new Set();\n\n\t/** Cache for language availability validation */\n\tprivate supportedLangsCache: string[] | null = null;\n\n\t/** Progress callback for UI updates */\n\tprivate progressCallback: ((progress: number) => void) | null = null;\n\n\t/** Base URL for training data CDN */\n\tprivate readonly CDN_BASE_URL = \"https://cdn.jsdelivr.net/npm/tesseract-wasm@0.11.0/dist\";\n\n\t/**\n\t * Return the unique name of this OCR backend\n\t *\n\t * @returns Backend identifier \"tesseract-wasm\"\n\t */\n\tname(): string {\n\t\treturn \"tesseract-wasm\";\n\t}\n\n\t/**\n\t * Return list of supported language codes\n\t *\n\t * Returns a curated list of commonly available Tesseract language models.\n\t * Tesseract supports many more languages through custom models.\n\t *\n\t * @returns Array of ISO 639-1/2/3 language codes\n\t */\n\tsupportedLanguages(): string[] {\n\t\t// Return cached list if already computed\n\t\tif (this.supportedLangsCache) {\n\t\t\treturn this.supportedLangsCache;\n\t\t}\n\n\t\t// Comprehensive list of languages supported by tesseract-wasm\n\t\t// Includes both 3-letter (ISO 639-2) and 2-letter (ISO 639-1) codes where applicable\n\t\tthis.supportedLangsCache = [\n\t\t\t// Major languages\n\t\t\t\"eng\", // English\n\t\t\t\"deu\", // German\n\t\t\t\"fra\", // French\n\t\t\t\"spa\", // Spanish\n\t\t\t\"ita\", // Italian\n\t\t\t\"por\", // Portuguese\n\t\t\t\"nld\", // Dutch\n\t\t\t\"rus\", // Russian\n\t\t\t\"jpn\", // Japanese\n\t\t\t\"kor\", // Korean\n\t\t\t\"chi_sim\", // Chinese (Simplified)\n\t\t\t\"chi_tra\", // Chinese (Traditional)\n\n\t\t\t// Additional European languages\n\t\t\t\"pol\", // Polish\n\t\t\t\"tur\", // Turkish\n\t\t\t\"swe\", // Swedish\n\t\t\t\"dan\", // Danish\n\t\t\t\"fin\", // Finnish\n\t\t\t\"nor\", // Norwegian\n\t\t\t\"ces\", // Czech\n\t\t\t\"slk\", // Slovak\n\t\t\t\"ron\", // Romanian\n\t\t\t\"hun\", // Hungarian\n\t\t\t\"hrv\", // Croatian\n\t\t\t\"srp\", // Serbian\n\t\t\t\"bul\", // Bulgarian\n\t\t\t\"ukr\", // Ukrainian\n\t\t\t\"ell\", // Greek\n\n\t\t\t// Asian languages\n\t\t\t\"ara\", // Arabic\n\t\t\t\"heb\", // Hebrew\n\t\t\t\"hin\", // Hindi\n\t\t\t\"tha\", // Thai\n\t\t\t\"vie\", // Vietnamese\n\t\t\t\"mkd\", // Macedonian\n\t\t\t\"ben\", // Bengali\n\t\t\t\"tam\", // Tamil\n\t\t\t\"tel\", // Telugu\n\t\t\t\"kan\", // Kannada\n\t\t\t\"mal\", // Malayalam\n\t\t\t\"mya\", // Burmese\n\t\t\t\"khm\", // Khmer\n\t\t\t\"lao\", // Lao\n\t\t\t\"sin\", // Sinhala\n\t\t];\n\n\t\treturn this.supportedLangsCache;\n\t}\n\n\t/**\n\t * Initialize the OCR backend\n\t *\n\t * Creates the Tesseract WASM client instance. This is called once when\n\t * the backend is registered with the extraction pipeline.\n\t *\n\t * The actual model loading happens in processImage() on-demand to avoid\n\t * loading all models upfront.\n\t *\n\t * @throws {Error} If tesseract-wasm is not available or initialization fails\n\t *\n\t * @example\n\t * ```typescript\n\t * const backend = new TesseractWasmBackend();\n\t * try {\n\t * await backend.initialize();\n\t * } catch (error) {\n\t * console.error('Failed to initialize OCR:', error);\n\t * }\n\t * ```\n\t */\n\tasync initialize(): Promise<void> {\n\t\tif (this.client) {\n\t\t\treturn; // Already initialized\n\t\t}\n\n\t\ttry {\n\t\t\t// Dynamically import tesseract-wasm\n\t\t\tconst tesseractModule = await this.loadTesseractWasm();\n\n\t\t\t// @ts-expect-error - tesseract-wasm types are not fully typed\n\t\t\tif (!tesseractModule || typeof tesseractModule.OCRClient !== \"function\") {\n\t\t\t\tthrow new Error(\"tesseract-wasm OCRClient not found. Ensure tesseract-wasm is installed and available.\");\n\t\t\t}\n\n\t\t\t// Create client instance\n\t\t\t// @ts-expect-error - tesseract-wasm types are not fully typed\n\t\t\tthis.client = new tesseractModule.OCRClient();\n\n\t\t\t// Initialize tracking\n\t\t\tthis.loadedLanguages.clear();\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tthrow new Error(`Failed to initialize TesseractWasmBackend: ${message}`);\n\t\t}\n\t}\n\n\t/**\n\t * Process image bytes and extract text via OCR\n\t *\n\t * Handles image loading, model loading, OCR processing, and result formatting.\n\t * Automatically loads the language model on first use and caches it for subsequent calls.\n\t *\n\t * @param imageBytes - Raw image data (Uint8Array) or Base64-encoded string\n\t * @param language - ISO 639-2/3 language code (e.g., \"eng\", \"deu\")\n\t * @returns Promise resolving to OCR result with content and metadata\n\t * @throws {Error} If image processing fails, model loading fails, or language is unsupported\n\t *\n\t * @example\n\t * ```typescript\n\t * const backend = new TesseractWasmBackend();\n\t * await backend.initialize();\n\t *\n\t * const imageBuffer = fs.readFileSync('scanned.png');\n\t * const result = await backend.processImage(\n\t * new Uint8Array(imageBuffer),\n\t * 'eng'\n\t * );\n\t *\n\t * console.log(result.content); // Extracted text\n\t * console.log(result.metadata.confidence); // OCR confidence score\n\t * ```\n\t */\n\tasync processImage(\n\t\timageBytes: Uint8Array | string,\n\t\tlanguage: string,\n\t): Promise<{\n\t\tcontent: string;\n\t\tmime_type: string;\n\t\tmetadata: Record<string, unknown>;\n\t\ttables: unknown[];\n\t}> {\n\t\tif (!this.client) {\n\t\t\tthrow new Error(\"TesseractWasmBackend not initialized. Call initialize() first.\");\n\t\t}\n\n\t\t// Validate language support\n\t\tconst supported = this.supportedLanguages();\n\t\t// Normalize language code for comparison\n\t\tconst normalizedLang = language.toLowerCase();\n\t\tconst isSupported = supported.some((lang) => lang.toLowerCase() === normalizedLang);\n\n\t\tif (!isSupported) {\n\t\t\tthrow new Error(`Language \"${language}\" is not supported. Supported languages: ${supported.join(\", \")}`);\n\t\t}\n\n\t\ttry {\n\t\t\t// Load language model if not already loaded\n\t\t\tif (!this.loadedLanguages.has(normalizedLang)) {\n\t\t\t\tthis.reportProgress(10); // Progress: loading model\n\t\t\t\tawait this.loadLanguageModel(normalizedLang);\n\t\t\t\tthis.loadedLanguages.add(normalizedLang);\n\t\t\t\tthis.reportProgress(30); // Progress: model loaded\n\t\t\t}\n\n\t\t\t// Convert image bytes to ImageBitmap\n\t\t\tthis.reportProgress(40); // Progress: processing image\n\t\t\tconst imageBitmap = await this.convertToImageBitmap(imageBytes);\n\n\t\t\t// Load image into Tesseract\n\t\t\tthis.reportProgress(50); // Progress: loading image\n\t\t\tawait this.client.loadImage(imageBitmap);\n\n\t\t\t// Perform OCR\n\t\t\tthis.reportProgress(70); // Progress: performing OCR\n\t\t\tconst text = await this.client.getText();\n\n\t\t\t// Get confidence and metadata\n\t\t\tconst confidence = await this.getConfidenceScore();\n\t\t\tconst pageMetadata = await this.getPageMetadata();\n\n\t\t\tthis.reportProgress(90); // Progress: nearly complete\n\n\t\t\t// Return result in Kreuzberg format\n\t\t\treturn {\n\t\t\t\tcontent: text,\n\t\t\t\tmime_type: \"text/plain\",\n\t\t\t\tmetadata: {\n\t\t\t\t\tlanguage: normalizedLang,\n\t\t\t\t\tconfidence,\n\t\t\t\t\t...pageMetadata,\n\t\t\t\t},\n\t\t\t\ttables: [], // Tesseract-wasm doesn't provide structured table detection\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tthrow new Error(`OCR processing failed for language \"${language}\": ${message}`);\n\t\t} finally {\n\t\t\tthis.reportProgress(100); // Progress: complete\n\t\t}\n\t}\n\n\t/**\n\t * Shutdown the OCR backend and release resources\n\t *\n\t * Properly cleans up the Tesseract WASM client, freeing memory and Web Workers.\n\t * Called when the backend is unregistered or the application shuts down.\n\t *\n\t * @throws {Error} If cleanup fails (errors are logged but not critical)\n\t *\n\t * @example\n\t * ```typescript\n\t * const backend = new TesseractWasmBackend();\n\t * await backend.initialize();\n\t * // ... use backend ...\n\t * await backend.shutdown(); // Clean up resources\n\t * ```\n\t */\n\tasync shutdown(): Promise<void> {\n\t\ttry {\n\t\t\tif (this.client) {\n\t\t\t\t// Try both destroy and terminate for compatibility\n\t\t\t\tif (typeof this.client.destroy === \"function\") {\n\t\t\t\t\tthis.client.destroy();\n\t\t\t\t}\n\t\t\t\tif (typeof this.client.terminate === \"function\") {\n\t\t\t\t\tthis.client.terminate();\n\t\t\t\t}\n\t\t\t\tthis.client = null;\n\t\t\t}\n\n\t\t\t// Clear cached state\n\t\t\tthis.loadedLanguages.clear();\n\t\t\tthis.supportedLangsCache = null;\n\t\t\tthis.progressCallback = null;\n\t\t} catch (error) {\n\t\t\t// Log error but don't throw - shutdown is best-effort\n\t\t\tconsole.warn(\n\t\t\t\t`Warning during TesseractWasmBackend shutdown: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Set a progress callback for UI updates\n\t *\n\t * Allows the UI to display progress during OCR processing.\n\t * The callback will be called with values from 0 to 100.\n\t *\n\t * @param callback - Function to call with progress percentage\n\t *\n\t * @example\n\t * ```typescript\n\t * const backend = new TesseractWasmBackend();\n\t * backend.setProgressCallback((progress) => {\n\t * console.log(`OCR Progress: ${progress}%`);\n\t * document.getElementById('progress-bar').style.width = `${progress}%`;\n\t * });\n\t * ```\n\t */\n\tsetProgressCallback(callback: (progress: number) => void): void {\n\t\tthis.progressCallback = callback;\n\t}\n\n\t/**\n\t * Load language model from CDN\n\t *\n\t * Fetches the training data for a specific language from jsDelivr CDN.\n\t * This is an MVP approach - models are cached by the browser.\n\t *\n\t * @param language - ISO 639-2/3 language code\n\t * @throws {Error} If model download fails or language is not available\n\t *\n\t * @internal\n\t */\n\tprivate async loadLanguageModel(language: string): Promise<void> {\n\t\tif (!this.client) {\n\t\t\tthrow new Error(\"Client not initialized\");\n\t\t}\n\n\t\t// Construct model URL - models are named with their language code\n\t\tconst modelFilename = `${language}.traineddata`;\n\t\tconst modelUrl = `${this.CDN_BASE_URL}/${modelFilename}`;\n\n\t\ttry {\n\t\t\tawait this.client.loadModel(modelUrl);\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tthrow new Error(`Failed to load model for language \"${language}\" from ${modelUrl}: ${message}`);\n\t\t}\n\t}\n\n\t/**\n\t * Convert image bytes or Base64 string to ImageBitmap\n\t *\n\t * Handles both Uint8Array and Base64-encoded image data, converting to\n\t * ImageBitmap format required by Tesseract WASM.\n\t *\n\t * @param imageBytes - Image data as Uint8Array or Base64 string\n\t * @returns Promise resolving to ImageBitmap\n\t * @throws {Error} If conversion fails (browser API not available or invalid image data)\n\t *\n\t * @internal\n\t */\n\tprivate async convertToImageBitmap(imageBytes: Uint8Array | string): Promise<ImageBitmap> {\n\t\t// Check if createImageBitmap is available (browser only)\n\t\tif (typeof createImageBitmap === \"undefined\") {\n\t\t\tthrow new Error(\"createImageBitmap is not available. TesseractWasmBackend requires a browser environment.\");\n\t\t}\n\n\t\ttry {\n\t\t\t// Convert to Uint8Array if string (Base64)\n\t\t\tlet bytes = imageBytes;\n\t\t\tif (typeof imageBytes === \"string\") {\n\t\t\t\t// Decode Base64 to binary\n\t\t\t\tconst binaryString = atob(imageBytes);\n\t\t\t\tbytes = new Uint8Array(binaryString.length);\n\t\t\t\tfor (let i = 0; i < binaryString.length; i++) {\n\t\t\t\t\t(bytes as Uint8Array)[i] = binaryString.charCodeAt(i);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Create Blob from bytes\n\t\t\tconst blob = new Blob([bytes as Uint8Array] as BlobPart[]);\n\n\t\t\t// Convert Blob to ImageBitmap\n\t\t\tconst imageBitmap = await createImageBitmap(blob);\n\t\t\treturn imageBitmap;\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tthrow new Error(`Failed to convert image bytes to ImageBitmap: ${message}`);\n\t\t}\n\t}\n\n\t/**\n\t * Get confidence score from OCR result\n\t *\n\t * Attempts to retrieve confidence score from Tesseract.\n\t * Returns a safe default if unavailable.\n\t *\n\t * @returns Confidence score between 0 and 1\n\t *\n\t * @internal\n\t */\n\tprivate async getConfidenceScore(): Promise<number> {\n\t\ttry {\n\t\t\tif (this.client && typeof this.client.getConfidence === \"function\") {\n\t\t\t\tconst confidence = await this.client.getConfidence();\n\t\t\t\t// Normalize to 0-1 range if needed (some versions return 0-100)\n\t\t\t\treturn confidence > 1 ? confidence / 100 : confidence;\n\t\t\t}\n\t\t} catch {\n\t\t\t// Silently fail - confidence is optional\n\t\t}\n\t\treturn 0.9; // Default reasonable confidence\n\t}\n\n\t/**\n\t * Get page metadata from OCR result\n\t *\n\t * Retrieves additional metadata like image dimensions and processing info.\n\t *\n\t * @returns Metadata object (may be empty if unavailable)\n\t *\n\t * @internal\n\t */\n\tprivate async getPageMetadata(): Promise<Record<string, unknown>> {\n\t\ttry {\n\t\t\tif (this.client && typeof this.client.getPageMetadata === \"function\") {\n\t\t\t\treturn await this.client.getPageMetadata();\n\t\t\t}\n\t\t} catch {\n\t\t\t// Silently fail - metadata is optional\n\t\t}\n\t\treturn {};\n\t}\n\n\t/**\n\t * Dynamically load tesseract-wasm module\n\t *\n\t * Uses dynamic import to load tesseract-wasm only when needed,\n\t * avoiding hard dependency in browser environments where it may not be bundled.\n\t *\n\t * @returns tesseract-wasm module object\n\t * @throws {Error} If module cannot be imported\n\t *\n\t * @internal\n\t */\n\tprivate async loadTesseractWasm(): Promise<unknown> {\n\t\ttry {\n\t\t\t// Use dynamic import to handle both ESM and CJS\n\t\t\t// @ts-expect-error - tesseract-wasm has package.json exports issues with TypeScript\n\t\t\tconst module = await import(\"tesseract-wasm\");\n\t\t\treturn module;\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to import tesseract-wasm. Ensure it is installed via: npm install tesseract-wasm. Error: ${message}`,\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Report progress to progress callback\n\t *\n\t * Internal helper for notifying progress updates during OCR processing.\n\t *\n\t * @param progress - Progress percentage (0-100)\n\t *\n\t * @internal\n\t */\n\tprivate reportProgress(progress: number): void {\n\t\tif (this.progressCallback) {\n\t\t\ttry {\n\t\t\t\tthis.progressCallback(Math.min(100, Math.max(0, progress)));\n\t\t\t} catch {\n\t\t\t\t// Ignore callback errors to prevent blocking OCR processing\n\t\t\t}\n\t\t}\n\t}\n}\n","/**\n * Runtime detection and environment-specific utilities\n *\n * This module provides utilities for detecting the JavaScript runtime environment,\n * checking for feature availability, and enabling environment-specific WASM loading strategies.\n *\n * @example Basic Runtime Detection\n * ```typescript\n * import { detectRuntime, isBrowser, isNode } from '@kreuzberg/wasm/runtime';\n *\n * if (isBrowser()) {\n * console.log('Running in browser');\n * } else if (isNode()) {\n * console.log('Running in Node.js');\n * }\n * ```\n *\n * @example Feature Detection\n * ```typescript\n * import { hasFileApi, hasWorkers } from '@kreuzberg/wasm/runtime';\n *\n * if (hasFileApi()) {\n * // Can use File API for browser file uploads\n * }\n *\n * if (hasWorkers()) {\n * // Can use Web Workers for parallel processing\n * }\n * ```\n */\n\nexport type RuntimeType = \"browser\" | \"node\" | \"deno\" | \"bun\" | \"unknown\";\n\n/**\n * WebAssembly capabilities available in the runtime\n */\nexport interface WasmCapabilities {\n\t/** Runtime environment type */\n\truntime: RuntimeType;\n\t/** WebAssembly support available */\n\thasWasm: boolean;\n\t/** Streaming WebAssembly instantiation available */\n\thasWasmStreaming: boolean;\n\t/** File API available (browser) */\n\thasFileApi: boolean;\n\t/** Blob API available */\n\thasBlob: boolean;\n\t/** Worker support available */\n\thasWorkers: boolean;\n\t/** SharedArrayBuffer available (may be restricted) */\n\thasSharedArrayBuffer: boolean;\n\t/** Module Workers available */\n\thasModuleWorkers: boolean;\n\t/** BigInt support */\n\thasBigInt: boolean;\n\t/** Specific runtime version if available */\n\truntimeVersion?: string;\n}\n\n/**\n * Detect the current JavaScript runtime\n *\n * Checks for various global objects and properties to determine\n * which JavaScript runtime environment is currently executing.\n *\n * @returns The detected runtime type\n *\n * @example\n * ```typescript\n * import { detectRuntime } from '@kreuzberg/wasm/runtime';\n *\n * const runtime = detectRuntime();\n * switch (runtime) {\n * case 'browser':\n * console.log('Running in browser');\n * break;\n * case 'node':\n * console.log('Running in Node.js');\n * break;\n * case 'deno':\n * console.log('Running in Deno');\n * break;\n * case 'bun':\n * console.log('Running in Bun');\n * break;\n * }\n * ```\n */\nexport function detectRuntime(): RuntimeType {\n\t// Check for Deno\n\tif (typeof (globalThis as unknown as Record<string, unknown>).Deno !== \"undefined\") {\n\t\treturn \"deno\";\n\t}\n\n\t// Check for Bun\n\tif (typeof (globalThis as unknown as Record<string, unknown>).Bun !== \"undefined\") {\n\t\treturn \"bun\";\n\t}\n\n\t// Check for Node.js\n\tif (typeof process !== \"undefined\" && process.versions && process.versions.node) {\n\t\treturn \"node\";\n\t}\n\n\t// Check for browser\n\tif (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\n\t\treturn \"browser\";\n\t}\n\n\treturn \"unknown\";\n}\n\n/**\n * Check if running in a browser environment\n *\n * @returns True if running in a browser, false otherwise\n */\nexport function isBrowser(): boolean {\n\treturn detectRuntime() === \"browser\";\n}\n\n/**\n * Check if running in Node.js\n *\n * @returns True if running in Node.js, false otherwise\n */\nexport function isNode(): boolean {\n\treturn detectRuntime() === \"node\";\n}\n\n/**\n * Check if running in Deno\n *\n * @returns True if running in Deno, false otherwise\n */\nexport function isDeno(): boolean {\n\treturn detectRuntime() === \"deno\";\n}\n\n/**\n * Check if running in Bun\n *\n * @returns True if running in Bun, false otherwise\n */\nexport function isBun(): boolean {\n\treturn detectRuntime() === \"bun\";\n}\n\n/**\n * Check if running in a web environment (browser or similar)\n *\n * @returns True if running in a web browser, false otherwise\n */\nexport function isWebEnvironment(): boolean {\n\tconst runtime = detectRuntime();\n\treturn runtime === \"browser\";\n}\n\n/**\n * Check if running in a server-like environment (Node.js, Deno, Bun)\n *\n * @returns True if running on a server runtime, false otherwise\n */\nexport function isServerEnvironment(): boolean {\n\tconst runtime = detectRuntime();\n\treturn runtime === \"node\" || runtime === \"deno\" || runtime === \"bun\";\n}\n\n/**\n * Check if File API is available\n *\n * The File API is required for handling browser file uploads.\n *\n * @returns True if File API is available, false otherwise\n *\n * @example\n * ```typescript\n * if (hasFileApi()) {\n * const fileInput = document.getElementById('file');\n * fileInput.addEventListener('change', (e) => {\n * const file = e.target.files?.[0];\n * // Handle file\n * });\n * }\n * ```\n */\nexport function hasFileApi(): boolean {\n\treturn typeof window !== \"undefined\" && typeof File !== \"undefined\" && typeof Blob !== \"undefined\";\n}\n\n/**\n * Check if Blob API is available\n *\n * @returns True if Blob API is available, false otherwise\n */\nexport function hasBlob(): boolean {\n\treturn typeof Blob !== \"undefined\";\n}\n\n/**\n * Check if Web Workers are available\n *\n * @returns True if Web Workers can be created, false otherwise\n */\nexport function hasWorkers(): boolean {\n\treturn typeof Worker !== \"undefined\";\n}\n\n/**\n * Check if SharedArrayBuffer is available\n *\n * Note: SharedArrayBuffer is restricted in some browser contexts\n * due to security considerations (Spectre/Meltdown mitigations).\n *\n * @returns True if SharedArrayBuffer is available, false otherwise\n */\nexport function hasSharedArrayBuffer(): boolean {\n\treturn typeof SharedArrayBuffer !== \"undefined\";\n}\n\n/**\n * Check if module workers are available\n *\n * Module workers allow importing ES modules in worker threads.\n *\n * @returns True if module workers are supported, false otherwise\n */\nexport function hasModuleWorkers(): boolean {\n\tif (!hasWorkers()) {\n\t\treturn false;\n\t}\n\n\ttry {\n\t\t// Try to detect module worker support\n\t\tconst blob = new Blob(['console.log(\"test\")'], {\n\t\t\ttype: \"application/javascript\",\n\t\t});\n\t\tconst workerUrl = URL.createObjectURL(blob);\n\t\ttry {\n\t\t\t// Module workers require type: 'module' option\n\t\t\t// We can't actually instantiate without issues, so we check the API exists\n\t\t\treturn true;\n\t\t} finally {\n\t\t\tURL.revokeObjectURL(workerUrl);\n\t\t}\n\t} catch {\n\t\treturn false;\n\t}\n}\n\n/**\n * Check if WebAssembly is available\n *\n * @returns True if WebAssembly is supported, false otherwise\n */\nexport function hasWasm(): boolean {\n\treturn typeof WebAssembly !== \"undefined\" && WebAssembly.instantiate !== undefined;\n}\n\n/**\n * Check if WebAssembly.instantiateStreaming is available\n *\n * Streaming instantiation is more efficient than buffering the entire WASM module.\n *\n * @returns True if streaming WebAssembly is supported, false otherwise\n */\nexport function hasWasmStreaming(): boolean {\n\treturn typeof WebAssembly !== \"undefined\" && WebAssembly.instantiateStreaming !== undefined;\n}\n\n/**\n * Check if BigInt is available\n *\n * @returns True if BigInt type is supported, false otherwise\n */\nexport function hasBigInt(): boolean {\n\ttry {\n\t\tconst test = BigInt(\"1\");\n\t\treturn typeof test === \"bigint\";\n\t} catch {\n\t\treturn false;\n\t}\n}\n\n/**\n * Get runtime version information\n *\n * @returns Version string if available, undefined otherwise\n *\n * @example\n * ```typescript\n * const version = getRuntimeVersion();\n * console.log(`Running on Node ${version}`); // \"Running on Node 18.12.0\"\n * ```\n */\nexport function getRuntimeVersion(): string | undefined {\n\tconst runtime = detectRuntime();\n\n\tswitch (runtime) {\n\t\tcase \"node\":\n\t\t\treturn process.version?.substring(1); // Remove 'v' prefix\n\t\tcase \"deno\": {\n\t\t\tconst deno = (globalThis as unknown as Record<string, unknown>).Deno as Record<string, unknown> | undefined;\n\t\t\tconst version = deno?.version as Record<string, unknown> | undefined;\n\t\t\treturn version?.deno as string | undefined;\n\t\t}\n\t\tcase \"bun\": {\n\t\t\tconst bun = (globalThis as unknown as Record<string, unknown>).Bun as Record<string, unknown> | undefined;\n\t\t\treturn bun?.version as string | undefined;\n\t\t}\n\t\tdefault:\n\t\t\treturn undefined;\n\t}\n}\n\n/**\n * Get comprehensive WebAssembly capabilities for current runtime\n *\n * Returns detailed information about WASM and related APIs available\n * in the current runtime environment.\n *\n * @returns Object describing available WASM capabilities\n *\n * @example\n * ```typescript\n * import { getWasmCapabilities } from '@kreuzberg/wasm/runtime';\n *\n * const caps = getWasmCapabilities();\n * console.log(`WASM available: ${caps.hasWasm}`);\n * console.log(`Streaming WASM: ${caps.hasWasmStreaming}`);\n * console.log(`Workers available: ${caps.hasWorkers}`);\n *\n * if (caps.hasWasm && caps.hasWorkers) {\n * // Can offload WASM processing to workers\n * }\n * ```\n */\nexport function getWasmCapabilities(): WasmCapabilities {\n\tconst runtime = detectRuntime();\n\tconst version = getRuntimeVersion();\n\tconst capabilities: WasmCapabilities = {\n\t\truntime,\n\t\thasWasm: hasWasm(),\n\t\thasWasmStreaming: hasWasmStreaming(),\n\t\thasFileApi: hasFileApi(),\n\t\thasBlob: hasBlob(),\n\t\thasWorkers: hasWorkers(),\n\t\thasSharedArrayBuffer: hasSharedArrayBuffer(),\n\t\thasModuleWorkers: hasModuleWorkers(),\n\t\thasBigInt: hasBigInt(),\n\t\t...(version !== undefined ? { runtimeVersion: version } : {}),\n\t};\n\treturn capabilities;\n}\n\n/**\n * Get comprehensive runtime information\n *\n * Returns detailed information about the current runtime environment,\n * capabilities, and identifying information.\n *\n * @returns Object with runtime details and capabilities\n *\n * @example\n * ```typescript\n * const info = getRuntimeInfo();\n * console.log(info.runtime); // 'browser' | 'node' | 'deno' | 'bun'\n * console.log(info.isBrowser); // true/false\n * console.log(info.userAgent); // Browser user agent string\n * console.log(info.capabilities); // Detailed capability information\n * ```\n */\nexport function getRuntimeInfo() {\n\tconst runtime = detectRuntime();\n\tconst capabilities = getWasmCapabilities();\n\n\treturn {\n\t\truntime,\n\t\tisBrowser: isBrowser(),\n\t\tisNode: isNode(),\n\t\tisDeno: isDeno(),\n\t\tisBun: isBun(),\n\t\tisWeb: isWebEnvironment(),\n\t\tisServer: isServerEnvironment(),\n\t\truntimeVersion: getRuntimeVersion(),\n\t\tuserAgent: typeof navigator !== \"undefined\" ? navigator.userAgent : \"N/A\",\n\t\tcapabilities,\n\t};\n}\n"],"mappings":"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","names":["obj","returnValue","proxy","resolve","Module","err","module","exports","typeConverters","fieldTypes","handle","i","rv","date","wasmSIMDSupported","normalized","module"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/tesseract-wasm@0.11.0/node_modules/tesseract-wasm/dist/lib.js","../typescript/index.ts","../typescript/adapters/wasm-adapter.ts","../typescript/ocr/registry.ts","../typescript/ocr/tesseract-wasm-backend.ts","../typescript/runtime.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nconst proxyMarker = Symbol(\"Comlink.proxy\");\nconst createEndpoint = Symbol(\"Comlink.endpoint\");\nconst releaseProxy = Symbol(\"Comlink.releaseProxy\");\nconst finalizer = Symbol(\"Comlink.finalizer\");\nconst throwMarker = Symbol(\"Comlink.thrown\");\nconst isObject = (val) => (typeof val === \"object\" && val !== null) || typeof val === \"function\";\n/**\n * Internal transfer handle to handle objects marked to proxy.\n */\nconst proxyTransferHandler = {\n canHandle: (val) => isObject(val) && val[proxyMarker],\n serialize(obj) {\n const { port1, port2 } = new MessageChannel();\n expose(obj, port1);\n return [port2, [port2]];\n },\n deserialize(port) {\n port.start();\n return wrap(port);\n },\n};\n/**\n * Internal transfer handler to handle thrown exceptions.\n */\nconst throwTransferHandler = {\n canHandle: (value) => isObject(value) && throwMarker in value,\n serialize({ value }) {\n let serialized;\n if (value instanceof Error) {\n serialized = {\n isError: true,\n value: {\n message: value.message,\n name: value.name,\n stack: value.stack,\n },\n };\n }\n else {\n serialized = { isError: false, value };\n }\n return [serialized, []];\n },\n deserialize(serialized) {\n if (serialized.isError) {\n throw Object.assign(new Error(serialized.value.message), serialized.value);\n }\n throw serialized.value;\n },\n};\n/**\n * Allows customizing the serialization of certain values.\n */\nconst transferHandlers = new Map([\n [\"proxy\", proxyTransferHandler],\n [\"throw\", throwTransferHandler],\n]);\nfunction isAllowedOrigin(allowedOrigins, origin) {\n for (const allowedOrigin of allowedOrigins) {\n if (origin === allowedOrigin || allowedOrigin === \"*\") {\n return true;\n }\n if (allowedOrigin instanceof RegExp && allowedOrigin.test(origin)) {\n return true;\n }\n }\n return false;\n}\nfunction expose(obj, ep = globalThis, allowedOrigins = [\"*\"]) {\n ep.addEventListener(\"message\", function callback(ev) {\n if (!ev || !ev.data) {\n return;\n }\n if (!isAllowedOrigin(allowedOrigins, ev.origin)) {\n console.warn(`Invalid origin '${ev.origin}' for comlink proxy`);\n return;\n }\n const { id, type, path } = Object.assign({ path: [] }, ev.data);\n const argumentList = (ev.data.argumentList || []).map(fromWireValue);\n let returnValue;\n try {\n const parent = path.slice(0, -1).reduce((obj, prop) => obj[prop], obj);\n const rawValue = path.reduce((obj, prop) => obj[prop], obj);\n switch (type) {\n case \"GET\" /* MessageType.GET */:\n {\n returnValue = rawValue;\n }\n break;\n case \"SET\" /* MessageType.SET */:\n {\n parent[path.slice(-1)[0]] = fromWireValue(ev.data.value);\n returnValue = true;\n }\n break;\n case \"APPLY\" /* MessageType.APPLY */:\n {\n returnValue = rawValue.apply(parent, argumentList);\n }\n break;\n case \"CONSTRUCT\" /* MessageType.CONSTRUCT */:\n {\n const value = new rawValue(...argumentList);\n returnValue = proxy(value);\n }\n break;\n case \"ENDPOINT\" /* MessageType.ENDPOINT */:\n {\n const { port1, port2 } = new MessageChannel();\n expose(obj, port2);\n returnValue = transfer(port1, [port1]);\n }\n break;\n case \"RELEASE\" /* MessageType.RELEASE */:\n {\n returnValue = undefined;\n }\n break;\n default:\n return;\n }\n }\n catch (value) {\n returnValue = { value, [throwMarker]: 0 };\n }\n Promise.resolve(returnValue)\n .catch((value) => {\n return { value, [throwMarker]: 0 };\n })\n .then((returnValue) => {\n const [wireValue, transferables] = toWireValue(returnValue);\n ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);\n if (type === \"RELEASE\" /* MessageType.RELEASE */) {\n // detach and deactive after sending release response above.\n ep.removeEventListener(\"message\", callback);\n closeEndPoint(ep);\n if (finalizer in obj && typeof obj[finalizer] === \"function\") {\n obj[finalizer]();\n }\n }\n })\n .catch((error) => {\n // Send Serialization Error To Caller\n const [wireValue, transferables] = toWireValue({\n value: new TypeError(\"Unserializable return value\"),\n [throwMarker]: 0,\n });\n ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);\n });\n });\n if (ep.start) {\n ep.start();\n }\n}\nfunction isMessagePort(endpoint) {\n return endpoint.constructor.name === \"MessagePort\";\n}\nfunction closeEndPoint(endpoint) {\n if (isMessagePort(endpoint))\n endpoint.close();\n}\nfunction wrap(ep, target) {\n return createProxy(ep, [], target);\n}\nfunction throwIfProxyReleased(isReleased) {\n if (isReleased) {\n throw new Error(\"Proxy has been released and is not useable\");\n }\n}\nfunction releaseEndpoint(ep) {\n return requestResponseMessage(ep, {\n type: \"RELEASE\" /* MessageType.RELEASE */,\n }).then(() => {\n closeEndPoint(ep);\n });\n}\nconst proxyCounter = new WeakMap();\nconst proxyFinalizers = \"FinalizationRegistry\" in globalThis &&\n new FinalizationRegistry((ep) => {\n const newCount = (proxyCounter.get(ep) || 0) - 1;\n proxyCounter.set(ep, newCount);\n if (newCount === 0) {\n releaseEndpoint(ep);\n }\n });\nfunction registerProxy(proxy, ep) {\n const newCount = (proxyCounter.get(ep) || 0) + 1;\n proxyCounter.set(ep, newCount);\n if (proxyFinalizers) {\n proxyFinalizers.register(proxy, ep, proxy);\n }\n}\nfunction unregisterProxy(proxy) {\n if (proxyFinalizers) {\n proxyFinalizers.unregister(proxy);\n }\n}\nfunction createProxy(ep, path = [], target = function () { }) {\n let isProxyReleased = false;\n const proxy = new Proxy(target, {\n get(_target, prop) {\n throwIfProxyReleased(isProxyReleased);\n if (prop === releaseProxy) {\n return () => {\n unregisterProxy(proxy);\n releaseEndpoint(ep);\n isProxyReleased = true;\n };\n }\n if (prop === \"then\") {\n if (path.length === 0) {\n return { then: () => proxy };\n }\n const r = requestResponseMessage(ep, {\n type: \"GET\" /* MessageType.GET */,\n path: path.map((p) => p.toString()),\n }).then(fromWireValue);\n return r.then.bind(r);\n }\n return createProxy(ep, [...path, prop]);\n },\n set(_target, prop, rawValue) {\n throwIfProxyReleased(isProxyReleased);\n // FIXME: ES6 Proxy Handler `set` methods are supposed to return a\n // boolean. To show good will, we return true asynchronously ¯\\_(ツ)_/¯\n const [value, transferables] = toWireValue(rawValue);\n return requestResponseMessage(ep, {\n type: \"SET\" /* MessageType.SET */,\n path: [...path, prop].map((p) => p.toString()),\n value,\n }, transferables).then(fromWireValue);\n },\n apply(_target, _thisArg, rawArgumentList) {\n throwIfProxyReleased(isProxyReleased);\n const last = path[path.length - 1];\n if (last === createEndpoint) {\n return requestResponseMessage(ep, {\n type: \"ENDPOINT\" /* MessageType.ENDPOINT */,\n }).then(fromWireValue);\n }\n // We just pretend that `bind()` didn’t happen.\n if (last === \"bind\") {\n return createProxy(ep, path.slice(0, -1));\n }\n const [argumentList, transferables] = processArguments(rawArgumentList);\n return requestResponseMessage(ep, {\n type: \"APPLY\" /* MessageType.APPLY */,\n path: path.map((p) => p.toString()),\n argumentList,\n }, transferables).then(fromWireValue);\n },\n construct(_target, rawArgumentList) {\n throwIfProxyReleased(isProxyReleased);\n const [argumentList, transferables] = processArguments(rawArgumentList);\n return requestResponseMessage(ep, {\n type: \"CONSTRUCT\" /* MessageType.CONSTRUCT */,\n path: path.map((p) => p.toString()),\n argumentList,\n }, transferables).then(fromWireValue);\n },\n });\n registerProxy(proxy, ep);\n return proxy;\n}\nfunction myFlat(arr) {\n return Array.prototype.concat.apply([], arr);\n}\nfunction processArguments(argumentList) {\n const processed = argumentList.map(toWireValue);\n return [processed.map((v) => v[0]), myFlat(processed.map((v) => v[1]))];\n}\nconst transferCache = new WeakMap();\nfunction transfer(obj, transfers) {\n transferCache.set(obj, transfers);\n return obj;\n}\nfunction proxy(obj) {\n return Object.assign(obj, { [proxyMarker]: true });\n}\nfunction toWireValue(value) {\n for (const [name, handler] of transferHandlers) {\n if (handler.canHandle(value)) {\n const [serializedValue, transferables] = handler.serialize(value);\n return [\n {\n type: \"HANDLER\" /* WireValueType.HANDLER */,\n name,\n value: serializedValue,\n },\n transferables,\n ];\n }\n }\n return [\n {\n type: \"RAW\" /* WireValueType.RAW */,\n value,\n },\n transferCache.get(value) || [],\n ];\n}\nfunction fromWireValue(value) {\n switch (value.type) {\n case \"HANDLER\" /* WireValueType.HANDLER */:\n return transferHandlers.get(value.name).deserialize(value.value);\n case \"RAW\" /* WireValueType.RAW */:\n return value.value;\n }\n}\nfunction requestResponseMessage(ep, msg, transfers) {\n return new Promise((resolve) => {\n const id = generateUUID();\n ep.addEventListener(\"message\", function l(ev) {\n if (!ev.data || !ev.data.id || ev.data.id !== id) {\n return;\n }\n ep.removeEventListener(\"message\", l);\n resolve(ev.data);\n });\n if (ep.start) {\n ep.start();\n }\n ep.postMessage(Object.assign({ id }, msg), transfers);\n });\n}\nfunction generateUUID() {\n return new Array(4)\n .fill(0)\n .map(() => Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString(16))\n .join(\"-\");\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nfunction nodeEndpoint(nep) {\n const listeners = new WeakMap();\n return {\n postMessage: nep.postMessage.bind(nep),\n addEventListener: (_, eh) => {\n const l = (data) => {\n if (\"handleEvent\" in eh) {\n eh.handleEvent({ data });\n }\n else {\n eh({ data });\n }\n };\n nep.on(\"message\", l);\n listeners.set(eh, l);\n },\n removeEventListener: (_, eh) => {\n const l = listeners.get(eh);\n if (!l) {\n return;\n }\n nep.off(\"message\", l);\n listeners.delete(eh);\n },\n start: nep.start && nep.start.bind(nep),\n };\n}\n\n/**\n * Extract the pixel data from an ImageBitmap.\n */\nfunction imageDataFromBitmap(bitmap) {\n let canvas;\n if (typeof OffscreenCanvas !== \"undefined\") {\n // @ts-expect-error - OffscreenCanvas API is missing\n canvas = new OffscreenCanvas(bitmap.width, bitmap.height);\n }\n else if (typeof HTMLCanvasElement !== \"undefined\") {\n const canvasEl = document.createElement(\"canvas\");\n canvasEl.width = bitmap.width;\n canvasEl.height = bitmap.height;\n canvas = canvasEl;\n }\n else {\n throw new Error(\"No canvas implementation available\");\n }\n const context = canvas.getContext(\"2d\");\n context.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height);\n return context.getImageData(0, 0, bitmap.width, bitmap.height);\n}\n\nfunction defaultWorkerURL() {\n return new URL(\"./tesseract-worker.js\", import.meta.url).href;\n}\nfunction createWebWorker(url) {\n return new Worker(url);\n}\n/**\n * High-level async API for performing document image layout analysis and\n * OCR.\n *\n * In the browser, this class can be constructed directly. In Node, use the\n * `createOCRClient` helper from `node-worker.js`.\n */\nclass OCRClient {\n /**\n * Initialize an OCR engine.\n *\n * This will start a Worker in which the OCR operations will actually be\n * performed.\n *\n */\n constructor({ createWorker = createWebWorker, wasmBinary, workerURL = defaultWorkerURL(), } = {}) {\n const worker = createWorker(workerURL);\n this._worker = worker;\n this._progressListeners = [];\n const endpoint = \"addEventListener\" in worker ? worker : nodeEndpoint(worker);\n const remote = wrap(endpoint);\n // Create a channel for the worker to send us progress updates during\n // operations. We use a separate channel instead of following comlink's\n // recommended recipe for callback arguments for two reasons:\n //\n // 1. If using `comlink.proxy(callback)`, event listeners get added to the\n // MessagePort each time the callback is invoked and removed when the\n // MessagePort receives a \"message\" response. If the callback is triggered\n // many times in one event loop turn, this will trigger warnings from\n // Node about having too many listeners. It is also quite inefficient.\n //\n // 2. Firefox has an issue where messages sent on a newly received port are\n // not dispatched until the next event loop turn. This means that we\n // need to send the port to the worker ahead of time.\n // I think https://bugzilla.mozilla.org/show_bug.cgi?id=1752287 is\n // relevant.\n const { port1, port2 } = new MessageChannel();\n this._progressChannel = port1;\n this._progressChannel.onmessage = (e) => {\n // We ought to have some mechanism to dispatch an update only to\n // applicable listeners. In typical usage there will only be one expensive\n // operation happening at a time for an OCRClient instance (OCR of the\n // currently loaded image), so we can get away with just notifying all\n // registered listeners.\n const { progress } = e.data;\n for (let listener of this._progressListeners) {\n listener(progress);\n }\n };\n this._ocrEngine = remote.createOCREngine({\n wasmBinary,\n }, transfer(port2, [port2]));\n }\n async destroy() {\n this._worker.terminate();\n this._progressChannel.close();\n }\n /**\n * Load a trained model for a specific language. This can be specified either\n * as a URL to fetch or a buffer containing an already-loaded model.\n */\n async loadModel(model) {\n const engine = await this._ocrEngine;\n if (typeof model === \"string\") {\n const response = await fetch(model);\n model = await response.arrayBuffer();\n }\n return engine.loadModel(model);\n }\n /**\n * Load an image into the OCR engine for processing.\n */\n async loadImage(image) {\n // Convert ImageBitmap to ImageData. In browsers that don't support\n // OffscreenCanvas (Firefox and Safari as of 2022-06) we have to do this\n // on the main thread using a canvas. In Chrome, we still do this on the\n // main thread but using OffscreenCanvas, to work around an issue with\n // rotation information being lost. See\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1332947.\n if (typeof ImageBitmap !== \"undefined\" && image instanceof ImageBitmap) {\n image = imageDataFromBitmap(image);\n }\n const engine = await this._ocrEngine;\n return engine.loadImage(image);\n }\n /**\n * Clear the current image and text recognition results.\n *\n * This will clear the loaded image data internally, but keep the text\n * recognition model loaded.\n *\n * At present there is no way to shrink WebAssembly memory, so this will not\n * return the memory used by the image to the OS/browser. To release memory,\n * the web worker needs to be shut down via {@link destroy}.\n */\n async clearImage() {\n const engine = await this._ocrEngine;\n return engine.clearImage();\n }\n /**\n * Perform layout analysis on the current image, if not already done, and\n * return bounding boxes for a given unit of text.\n *\n * This operation is relatively cheap compared to text recognition, so can\n * provide much faster results if only the location of lines/words etc. on\n * the page is required, not the text content.\n */\n async getBoundingBoxes(unit) {\n const engine = await this._ocrEngine;\n return engine.getBoundingBoxes(unit);\n }\n /**\n * Perform layout analysis and text recognition on the current image, if\n * not already done, and return bounding boxes and text content for a given\n * unit of text.\n */\n async getTextBoxes(unit, onProgress) {\n const engine = await this._ocrEngine;\n if (onProgress) {\n this._addProgressListener(onProgress);\n }\n try {\n return await engine.getTextBoxes(unit);\n }\n finally {\n if (onProgress) {\n this._removeProgressListener(onProgress);\n }\n }\n }\n /**\n * Perform layout analysis and text recognition on the current image, if\n * not already done, and return the image's text as a string.\n */\n async getText(onProgress) {\n const engine = await this._ocrEngine;\n if (onProgress) {\n this._addProgressListener(onProgress);\n }\n try {\n return await engine.getText();\n }\n finally {\n if (onProgress) {\n this._removeProgressListener(onProgress);\n }\n }\n }\n /**\n * Perform layout analysis and text recognition on the current image, if\n * not already done, and return the image's text in hOCR format (see\n * https://en.wikipedia.org/wiki/HOCR).\n */\n async getHOCR(onProgress) {\n const engine = await this._ocrEngine;\n if (onProgress) {\n this._addProgressListener(onProgress);\n }\n try {\n return await engine.getHOCR();\n }\n finally {\n if (onProgress) {\n this._removeProgressListener(onProgress);\n }\n }\n }\n /**\n * Attempt to determine the orientation of the image.\n *\n * This currently uses a simplistic algorithm [1] which is designed for\n * non-uppercase Latin text. It will likely perform badly for other scripts or\n * if the text is all uppercase.\n *\n * [1] See http://www.leptonica.org/papers/skew-measurement.pdf\n */\n async getOrientation() {\n const engine = await this._ocrEngine;\n return engine.getOrientation();\n }\n _addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n _removeProgressListener(listener) {\n this._progressListeners = this._progressListeners.filter((l) => l !== listener);\n }\n}\n\nvar Module = (() => {\n var _scriptDir = import.meta.url;\n \n return (\nfunction(Module = {}) {\n\nvar Module=typeof Module!=\"undefined\"?Module:{};var readyPromiseResolve,readyPromiseReject;Module[\"ready\"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject;});var moduleOverrides=Object.assign({},Module);var thisProgram=\"./this.program\";var ENVIRONMENT_IS_WEB=true;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var readBinary;{if(typeof document!=\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src;}if(_scriptDir){scriptDirectory=_scriptDir;}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1);}else {scriptDirectory=\"\";}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module[\"arguments\"])Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];Module[\"noExitRuntime\"]||true;if(typeof WebAssembly!=\"object\"){abort(\"no native wasm support detected\");}var wasmMemory;var ABORT=false;function assert(condition,text){if(!condition){abort(text);}}var UTF8Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder(\"utf8\"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str=\"\";while(idx<endPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2;}else {u0=(u0&7)<<18|u1<<12|u2<<6|heapOrArray[idx++]&63;}if(u0<65536){str+=String.fromCharCode(u0);}else {var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023);}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023;}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u;}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63;}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;}else {if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var c=str.charCodeAt(i);if(c<=127){len++;}else if(c<=2047){len+=2;}else if(c>=55296&&c<=57343){len+=4;++i;}else {len+=3;}}return len}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module[\"HEAP8\"]=HEAP8=new Int8Array(b);Module[\"HEAP16\"]=HEAP16=new Int16Array(b);Module[\"HEAP32\"]=HEAP32=new Int32Array(b);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(b);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(b);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(b);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(b);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(b);}var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift());}}callRuntimeCallbacks(__ATPRERUN__);}function initRuntime(){callRuntimeCallbacks(__ATINIT__);}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift());}}callRuntimeCallbacks(__ATPOSTRUN__);}function addOnPreRun(cb){__ATPRERUN__.unshift(cb);}function addOnInit(cb){__ATINIT__.unshift(cb);}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb);}var runDependencies=0;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies);}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies);}if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback();}}}function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what);}what=\"Aborted(\"+what+\")\";err(what);ABORT=true;what+=\". Build with -sASSERTIONS for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}var wasmBinaryFile;if(Module[\"locateFile\"]){wasmBinaryFile=\"tesseract-core.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile);}}else {wasmBinaryFile=new URL(\"tesseract-core.wasm\",import.meta.url).href;}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary);throw \"both async and sync fetching of the wasm failed\"}catch(err){abort(err);}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB)){if(typeof fetch==\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw \"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary(wasmBinaryFile)})}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={\"a\":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=Module[\"asm\"][\"U\"];updateMemoryViews();wasmTable=Module[\"asm\"][\"X\"];addOnInit(Module[\"asm\"][\"V\"]);removeRunDependency();}addRunDependency();function receiveInstantiationResult(result){receiveInstance(result[\"instance\"]);}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason);})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==\"function\"&&!isDataURI(wasmBinaryFile)&&typeof fetch==\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiationResult)})})}else {return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);readyPromiseReject(e);}}instantiateAsync().catch(readyPromiseReject);return {}}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module);}}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type;};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor;};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount;};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught;};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown;};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false);};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1;};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr;};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr};}function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);throw ptr}function ___syscall_fcntl64(fd,cmd,varargs){return 0}function ___syscall_getcwd(buf,size){}function ___syscall_ioctl(fd,op,varargs){return 0}function ___syscall_openat(dirfd,path,flags,varargs){}function ___syscall_rmdir(path){}function ___syscall_unlinkat(dirfd,path,flags){}var structRegistrations={};function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr);}}function simpleReadValueFromPointer(pointer){return this[\"fromWireType\"](HEAP32[pointer>>2])}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return \"_unknown\"}name=name.replace(/[^a-zA-Z0-9_]/g,\"$\");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return \"_\"+name}return name}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return function(){return body.apply(this,arguments)}}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+\"\\n\"+stack.replace(/^Error(:[^\\n]*)?\\n/,\"\");}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else {return this.name+\": \"+this.message}};return errorClass}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes;});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError(\"Mismatched type converter count\");}for(var i=0;i<myTypes.length;++i){registerType(myTypes[i],myTypeConverters[i]);}}var typeConverters=new Array(dependentTypes.length);var unregisteredTypes=[];var registered=0;dependentTypes.forEach((dt,i)=>{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt];}else {unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[];}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters);}});}});if(0===unregisteredTypes.length){onComplete(typeConverters);}}function __embind_finalize_value_object(structType){var reg=structRegistrations[structType];delete structRegistrations[structType];var rawConstructor=reg.rawConstructor;var rawDestructor=reg.rawDestructor;var fieldRecords=reg.fields;var fieldTypes=fieldRecords.map(field=>field.getterReturnType).concat(fieldRecords.map(field=>field.setterArgumentType));whenDependentTypesAreResolved([structType],fieldTypes,fieldTypes=>{var fields={};fieldRecords.forEach((field,i)=>{var fieldName=field.fieldName;var getterReturnType=fieldTypes[i];var getter=field.getter;var getterContext=field.getterContext;var setterArgumentType=fieldTypes[i+fieldRecords.length];var setter=field.setter;var setterContext=field.setterContext;fields[fieldName]={read:ptr=>{return getterReturnType[\"fromWireType\"](getter(getterContext,ptr))},write:(ptr,o)=>{var destructors=[];setter(setterContext,ptr,setterArgumentType[\"toWireType\"](destructors,o));runDestructors(destructors);}};});return [{name:reg.name,\"fromWireType\":function(ptr){var rv={};for(var i in fields){rv[i]=fields[i].read(ptr);}rawDestructor(ptr);return rv},\"toWireType\":function(destructors,o){for(var fieldName in fields){if(!(fieldName in o)){throw new TypeError('Missing field: \"'+fieldName+'\"')}}var ptr=rawConstructor();for(fieldName in fields){fields[fieldName].write(ptr,o[fieldName]);}if(destructors!==null){destructors.push(rawDestructor,ptr);}return ptr},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:rawDestructor}]});}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(\"Unknown type size: \"+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i);}embind_charCodes=codes;}var embind_charCodes=undefined;function readLatin1String(ptr){var ret=\"\";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]];}return ret}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}function registerType(rawType,registeredInstance,options={}){if(!(\"argPackAdvance\"in registeredInstance)){throw new TypeError(\"registerType registeredInstance requires argPackAdvance\")}var name=registeredInstance.name;if(!rawType){throwBindingError('type \"'+name+'\" must have a positive integer typeid pointer');}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else {throwBindingError(\"Cannot register type '\"+name+\"' twice\");}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb());}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(wt){return !!wt},\"toWireType\":function(destructors,o){return o?trueValue:falseValue},\"argPackAdvance\":8,\"readValueFromPointer\":function(pointer){var heap;if(size===1){heap=HEAP8;}else if(size===2){heap=HEAP16;}else if(size===4){heap=HEAP32;}else {throw new TypeError(\"Unknown boolean type size: \"+name)}return this[\"fromWireType\"](heap[pointer>>shift])},destructorFunction:null});}function ClassHandle_isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass;}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass;}return leftClass===rightClass&&left===right}function shallowCopyInternalPointer(o){return {count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType}}function throwInstanceAlreadyDeleted(obj){function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+\" instance already deleted\");}var finalizationRegistry=false;function detachFinalizer(handle){}function runDestructor($$){if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr);}else {$$.ptrType.registeredClass.rawDestructor($$.ptr);}}function releaseClassHandle($$){$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$);}}function downcastPointer(ptr,ptrClass,desiredClass){if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)}var registeredPointers={};function getInheritedInstanceCount(){return Object.keys(registeredInstances).length}function getLiveInheritedInstances(){var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k]);}}return rv}var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj[\"delete\"]();}}var delayFunction=undefined;function setDelayFunction(fn){delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes);}}function init_embind(){Module[\"getInheritedInstanceCount\"]=getInheritedInstanceCount;Module[\"getLiveInheritedInstances\"]=getLiveInheritedInstances;Module[\"flushPendingDeletes\"]=flushPendingDeletes;Module[\"setDelayFunction\"]=setDelayFunction;}var registeredInstances={};function getBasestPointer(class_,ptr){if(ptr===undefined){throwBindingError(\"ptr should not be undefined\");}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass;}return ptr}function getInheritedInstance(class_,ptr){ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]}function makeClassHandle(prototype,record){if(!record.ptrType||!record.ptr){throwInternalError(\"makeClassHandle requires ptr and ptrType\");}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError(\"Both smartPtrType and smartPtr must be specified\");}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record}}))}function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance[\"clone\"]()}else {var rv=registeredInstance[\"clone\"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else {return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType;}else {toType=registeredPointerRecord.pointerType;}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else {return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}function attachFinalizer(handle){if(\"undefined\"===typeof FinalizationRegistry){attachFinalizer=handle=>handle;return handle}finalizationRegistry=new FinalizationRegistry(info=>{releaseClassHandle(info.$$);});attachFinalizer=handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$:$$};finalizationRegistry.register(handle,info,handle);}return handle};detachFinalizer=handle=>finalizationRegistry.unregister(handle);return attachFinalizer(handle)}function ClassHandle_clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this);}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else {var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}}function ClassHandle_delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this);}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\");}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined;}}function ClassHandle_isDeleted(){return !this.$$.ptr}function ClassHandle_deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this);}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\");}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes);}this.$$.deleteScheduled=true;return this}function init_ClassHandle(){ClassHandle.prototype[\"isAliasOf\"]=ClassHandle_isAliasOf;ClassHandle.prototype[\"clone\"]=ClassHandle_clone;ClassHandle.prototype[\"delete\"]=ClassHandle_delete;ClassHandle.prototype[\"isDeleted\"]=ClassHandle_isDeleted;ClassHandle.prototype[\"deleteLater\"]=ClassHandle_deleteLater;}function ClassHandle(){}function ensureOverloadTable(proto,methodName,humanName){if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError(\"Function '\"+humanName+\"' called with an invalid number of arguments (\"+arguments.length+\") - expects one of (\"+proto[methodName].overloadTable+\")!\");}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc;}}function exposePublicSymbol(name,value,numArguments){if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(\"Cannot register public name '\"+name+\"' twice\");}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(\"Cannot register multiple overloads of a function with the same number of arguments (\"+numArguments+\")!\");}Module[name].overloadTable[numArguments]=value;}else {Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments;}}}function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[];}function upcastPointer(ptr,ptrClass,desiredClass){while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError(\"Expected null or instance of \"+desiredClass.name+\", got an instance of \"+ptrClass.name);}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass;}return ptr}function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(\"null is not a valid \"+this.name);}return 0}if(!handle.$$){throwBindingError('Cannot pass \"'+embindRepr(handle)+'\" as a '+this.name);}if(!handle.$$.ptr){throwBindingError(\"Cannot pass deleted object as a pointer of type \"+this.name);}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError(\"null is not a valid \"+this.name);}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr);}return ptr}else {return 0}}if(!handle.$$){throwBindingError('Cannot pass \"'+embindRepr(handle)+'\" as a '+this.name);}if(!handle.$$.ptr){throwBindingError(\"Cannot pass deleted object as a pointer of type \"+this.name);}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError(\"Cannot convert argument of type \"+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+\" to parameter type \"+this.name);}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError(\"Passing raw pointer to smart pointer is illegal\");}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr;}else {throwBindingError(\"Cannot convert argument of type \"+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+\" to parameter type \"+this.name);}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr;}else {var clonedHandle=handle[\"clone\"]();ptr=this.rawShare(ptr,Emval.toHandle(function(){clonedHandle[\"delete\"]();}));if(destructors!==null){destructors.push(this.rawDestructor,ptr);}}break;default:throwBindingError(\"Unsupporting sharing policy\");}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(\"null is not a valid \"+this.name);}return 0}if(!handle.$$){throwBindingError('Cannot pass \"'+embindRepr(handle)+'\" as a '+this.name);}if(!handle.$$.ptr){throwBindingError(\"Cannot pass deleted object as a pointer of type \"+this.name);}if(handle.$$.ptrType.isConst){throwBindingError(\"Cannot convert argument of type \"+handle.$$.ptrType.name+\" to parameter type \"+this.name);}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function RegisteredPointer_getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr);}return ptr}function RegisteredPointer_destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr);}}function RegisteredPointer_deleteObject(handle){if(handle!==null){handle[\"delete\"]();}}function init_RegisteredPointer(){RegisteredPointer.prototype.getPointee=RegisteredPointer_getPointee;RegisteredPointer.prototype.destructor=RegisteredPointer_destructor;RegisteredPointer.prototype[\"argPackAdvance\"]=8;RegisteredPointer.prototype[\"readValueFromPointer\"]=simpleReadValueFromPointer;RegisteredPointer.prototype[\"deleteObject\"]=RegisteredPointer_deleteObject;RegisteredPointer.prototype[\"fromWireType\"]=RegisteredPointer_fromWireType;}function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this[\"toWireType\"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null;}else {this[\"toWireType\"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null;}}else {this[\"toWireType\"]=genericPointerToWireType;}}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError(\"Replacing nonexistant public symbol\");}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value;}else {Module[name]=value;Module[name].argCount=numArguments;}}function dynCallLegacy(sig,ptr,args){var f=Module[\"dynCall_\"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function getWasmTableEntry(funcPtr){return wasmTable.get(funcPtr)}function dynCall(sig,ptr,args){if(sig.includes(\"j\")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr).apply(null,args);return rtn}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes(\"j\")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!=\"function\"){throwBindingError(\"unknown function pointer with signature \"+signature+\": \"+rawFunction);}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true;}types.forEach(visit);throw new UnboundTypeError(message+\": \"+unboundTypes.map(getTypeName).join([\", \"]))}function __embind_register_class(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor){name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);if(upcast){upcast=embind__requireFunction(upcastSignature,upcast);}if(downcast){downcast=embind__requireFunction(downcastSignature,downcast);}rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError(\"Cannot construct \"+name+\" due to unbound types\",[baseClassRawType]);});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],function(base){base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype;}else {basePrototype=ClassHandle.prototype;}var constructor=createNamedFunction(legalFunctionName,function(){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError(\"Use 'new' to construct \"+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+\" has no accessible constructor\")}var body=registeredClass.constructor_body[arguments.length];if(undefined===body){throw new BindingError(\"Tried to invoke ctor of \"+name+\" with invalid number of parameters (\"+arguments.length+\") - expected (\"+Object.keys(registeredClass.constructor_body).toString()+\") parameters instead!\")}return body.apply(this,arguments)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+\"*\",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+\" const*\",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return [referenceConverter,pointerConverter,constPointerConverter]});}function heap32VectorToArray(count,firstElement){var array=[];for(var i=0;i<count;i++){array.push(HEAPU32[firstElement+i*4>>2]);}return array}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError(\"argTypes array size mismatch! Must at least get return value and 'this' types!\");}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i<argTypes.length;++i){if(argTypes[i]!==null&&argTypes[i].destructorFunction===undefined){needsDestructorStack=true;break}}var returns=argTypes[0].name!==\"void\";var expectedArgCount=argCount-2;var argsWired=new Array(expectedArgCount);var invokerFuncArgs=[];var destructors=[];return function(){if(arguments.length!==expectedArgCount){throwBindingError(\"function \"+humanName+\" called with \"+arguments.length+\" arguments, expected \"+expectedArgCount+\" args!\");}destructors.length=0;var thisWired;invokerFuncArgs.length=isClassMethodFunc?2:1;invokerFuncArgs[0]=cppTargetFunc;if(isClassMethodFunc){thisWired=argTypes[1][\"toWireType\"](destructors,this);invokerFuncArgs[1]=thisWired;}for(var i=0;i<expectedArgCount;++i){argsWired[i]=argTypes[i+2][\"toWireType\"](destructors,arguments[i]);invokerFuncArgs.push(argsWired[i]);}var rv=cppInvokerFunc.apply(null,invokerFuncArgs);function onDone(rv){if(needsDestructorStack){runDestructors(destructors);}else {for(var i=isClassMethodFunc?1:2;i<argTypes.length;i++){var param=i===1?thisWired:argsWired[i-2];if(argTypes[i].destructorFunction!==null){argTypes[i].destructorFunction(param);}}}if(returns){return argTypes[0][\"fromWireType\"](rv)}}return onDone(rv)}}function __embind_register_class_constructor(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor){assert(argCount>0);var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=\"constructor \"+classType.name;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[];}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError(\"Cannot register multiple constructors with identical number of parameters (\"+(argCount-1)+\") for class '\"+classType.name+\"'! Overload resolution is currently only performed using the parameter count, not actual type info!\")}classType.registeredClass.constructor_body[argCount-1]=()=>{throwUnboundTypeError(\"Cannot construct \"+classType.name+\" due to unbound types\",rawArgTypes);};whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return []});return []});}function __embind_register_class_function(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual){var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=classType.name+\".\"+methodName;if(methodName.startsWith(\"@@\")){methodName=Symbol[methodName.substring(2)];}if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName);}function unboundTypesHandler(){throwUnboundTypeError(\"Cannot call \"+humanName+\" due to unbound types\",rawArgTypes);}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler;}else {ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler;}whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction;}else {proto[methodName].overloadTable[argCount-2]=memberFunction;}return []});return []});}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle);}}function count_emval_handles(){var count=0;for(var i=5;i<emval_handle_array.length;++i){if(emval_handle_array[i]!==undefined){++count;}}return count}function get_first_emval(){for(var i=5;i<emval_handle_array.length;++i){if(emval_handle_array[i]!==undefined){return emval_handle_array[i]}}return null}function init_emval(){Module[\"count_emval_handles\"]=count_emval_handles;Module[\"get_first_emval\"]=get_first_emval;}var Emval={toValue:handle=>{if(!handle){throwBindingError(\"Cannot use deleted val. handle = \"+handle);}return emval_handle_array[handle].value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{var handle=emval_free_list.length?emval_free_list.pop():emval_handle_array.length;emval_handle_array[handle]={refcount:1,value:value};return handle}}}};function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},\"toWireType\":function(destructors,value){return Emval.toHandle(value)},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:null});}function enumReadValueFromPointer(name,shift,signed){switch(shift){case 0:return function(pointer){var heap=signed?HEAP8:HEAPU8;return this[\"fromWireType\"](heap[pointer])};case 1:return function(pointer){var heap=signed?HEAP16:HEAPU16;return this[\"fromWireType\"](heap[pointer>>1])};case 2:return function(pointer){var heap=signed?HEAP32:HEAPU32;return this[\"fromWireType\"](heap[pointer>>2])};default:throw new TypeError(\"Unknown integer type: \"+name)}}function __embind_register_enum(rawType,name,size,isSigned){var shift=getShiftFromSize(size);name=readLatin1String(name);function ctor(){}ctor.values={};registerType(rawType,{name:name,constructor:ctor,\"fromWireType\":function(c){return this.constructor.values[c]},\"toWireType\":function(destructors,c){return c.value},\"argPackAdvance\":8,\"readValueFromPointer\":enumReadValueFromPointer(name,shift,isSigned),destructorFunction:null});exposePublicSymbol(name,ctor);}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+\" has unknown type \"+getTypeName(rawType));}return impl}function __embind_register_enum_value(rawEnumType,name,enumValue){var enumType=requireRegisteredType(rawEnumType,\"enum\");name=readLatin1String(name);var Enum=enumType.constructor;var Value=Object.create(enumType.constructor.prototype,{value:{value:enumValue},constructor:{value:createNamedFunction(enumType.name+\"_\"+name,function(){})}});Enum.values[enumValue]=Value;Enum[name]=Value;}function embindRepr(v){if(v===null){return \"null\"}var t=typeof v;if(t===\"object\"||t===\"array\"||t===\"function\"){return v.toString()}else {return \"\"+v}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this[\"fromWireType\"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this[\"fromWireType\"](HEAPF64[pointer>>3])};default:throw new TypeError(\"Unknown float type: \"+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(value){return value},\"toWireType\":function(destructors,value){return value},\"argPackAdvance\":8,\"readValueFromPointer\":floatReadValueFromPointer(name,shift),destructorFunction:null});}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError(\"Unknown integer type: \"+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<<bitshift>>>bitshift;}var isUnsignedType=name.includes(\"unsigned\");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0};}else {toWireType=function(destructors,value){checkAssertions(value,this.name);return value};}registerType(primitiveType,{name:name,\"fromWireType\":fromWireType,\"toWireType\":toWireType,\"argPackAdvance\":8,\"readValueFromPointer\":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null});}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(heap.buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":decodeMemoryView,\"argPackAdvance\":8,\"readValueFromPointer\":decodeMemoryView},{ignoreDuplicateRegistrations:true});}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name===\"std::string\";registerType(rawType,{name:name,\"fromWireType\":function(value){var length=HEAPU32[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment;}else {str+=String.fromCharCode(0);str+=stringSegment;}decodeStartPtr=currentBytePtr+1;}}}else {var a=new Array(length);for(var i=0;i<length;++i){a[i]=String.fromCharCode(HEAPU8[payload+i]);}str=a.join(\"\");}_free(value);return str},\"toWireType\":function(destructors,value){if(value instanceof ArrayBuffer){value=new Uint8Array(value);}var length;var valueIsOfTypeString=typeof value==\"string\";if(!(valueIsOfTypeString||value instanceof Uint8Array||value instanceof Uint8ClampedArray||value instanceof Int8Array)){throwBindingError(\"Cannot pass non-string to std::string\");}if(stdStringIsUTF8&&valueIsOfTypeString){length=lengthBytesUTF8(value);}else {length=value.length;}var base=_malloc(4+length+1);var ptr=base+4;HEAPU32[base>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1);}else {if(valueIsOfTypeString){for(var i=0;i<length;++i){var charCode=value.charCodeAt(i);if(charCode>255){_free(ptr);throwBindingError(\"String has UTF-16 code units that do not fit in 8 bits\");}HEAPU8[ptr+i]=charCode;}}else {for(var i=0;i<length;++i){HEAPU8[ptr+i]=value[i];}}}if(destructors!==null){destructors.push(_free,base);}return base},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr);}});}var UTF16Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr));var str=\"\";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit);}return str}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647;}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite<str.length*2?maxBytesToWrite/2:str.length;for(var i=0;i<numCharsToWrite;++i){var codeUnit=str.charCodeAt(i);HEAP16[outPtr>>1]=codeUnit;outPtr+=2;}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str=\"\";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023);}else {str+=String.fromCharCode(utf32);}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647;}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i<str.length;++i){var codeUnit=str.charCodeAt(i);if(codeUnit>=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023;}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i<str.length;++i){var codeUnit=str.charCodeAt(i);if(codeUnit>=55296&&codeUnit<=57343)++i;len+=4;}return len}function __embind_register_std_wstring(rawType,charSize,name){name=readLatin1String(name);var decodeString,encodeString,getHeap,lengthBytesUTF,shift;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;getHeap=()=>HEAPU16;shift=1;}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=()=>HEAPU32;shift=2;}registerType(rawType,{name:name,\"fromWireType\":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment;}else {str+=String.fromCharCode(0);str+=stringSegment;}decodeStartPtr=currentBytePtr+charSize;}}_free(value);return str},\"toWireType\":function(destructors,value){if(!(typeof value==\"string\")){throwBindingError(\"Cannot pass non-string to C++ string type \"+name);}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr);}return ptr},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr);}});}function __embind_register_value_object(rawType,name,constructorSignature,rawConstructor,destructorSignature,rawDestructor){structRegistrations[rawType]={name:readLatin1String(name),rawConstructor:embind__requireFunction(constructorSignature,rawConstructor),rawDestructor:embind__requireFunction(destructorSignature,rawDestructor),fields:[]};}function __embind_register_value_object_field(structType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext){structRegistrations[structType].fields.push({fieldName:readLatin1String(fieldName),getterReturnType:getterReturnType,getter:embind__requireFunction(getterSignature,getter),getterContext:getterContext,setterArgumentType:setterArgumentType,setter:embind__requireFunction(setterSignature,setter),setterContext:setterContext});}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,\"argPackAdvance\":0,\"fromWireType\":function(){return undefined},\"toWireType\":function(destructors,o){return undefined}});}var nowIsMonotonic=true;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function emval_lookupTypes(argCount,argTypes){var a=new Array(argCount);for(var i=0;i<argCount;++i){a[i]=requireRegisteredType(HEAPU32[argTypes+i*4>>2],\"parameter \"+i);}return a}function __emval_call(handle,argCount,argTypes,argv){handle=Emval.toValue(handle);var types=emval_lookupTypes(argCount,argTypes);var args=new Array(argCount);for(var i=0;i<argCount;++i){var type=types[i];args[i]=type[\"readValueFromPointer\"](argv);argv+=type[\"argPackAdvance\"];}var rv=handle.apply(undefined,args);return Emval.toHandle(rv)}function __emval_incref(handle){if(handle>4){emval_handle_array[handle].refcount+=1;}}function __emval_take_value(type,arg){type=requireRegisteredType(type,\"_emval_take_value\");var v=type[\"readValueFromPointer\"](arg);return Emval.toHandle(v)}function readI53FromI64(ptr){return HEAPU32[ptr>>2]+HEAP32[ptr+4>>2]*4294967296}function __gmtime_js(time,tmPtr){var date=new Date(readI53FromI64(time)*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}var __MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335];var __MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];function __yday_from_date(date){var isLeapYear=__isLeapYear(date.getFullYear());var monthDaysCumulative=isLeapYear?__MONTH_DAYS_LEAP_CUMULATIVE:__MONTH_DAYS_REGULAR_CUMULATIVE;var yday=monthDaysCumulative[date.getMonth()]+date.getDate()-1;return yday}function __localtime_js(time,tmPtr){var date=new Date(readI53FromI64(time)*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var yday=__yday_from_date(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst;}function __mktime_js(tmPtr){var date=new Date(HEAP32[tmPtr+20>>2]+1900,HEAP32[tmPtr+16>>2],HEAP32[tmPtr+12>>2],HEAP32[tmPtr+8>>2],HEAP32[tmPtr+4>>2],HEAP32[tmPtr>>2],0);var dst=HEAP32[tmPtr+32>>2];var guessedOffset=date.getTimezoneOffset();var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dstOffset=Math.min(winterOffset,summerOffset);if(dst<0){HEAP32[tmPtr+32>>2]=Number(summerOffset!=winterOffset&&dstOffset==guessedOffset);}else if(dst>0!=(dstOffset==guessedOffset)){var nonDstOffset=Math.max(winterOffset,summerOffset);var trueOffset=dst>0?dstOffset:nonDstOffset;date.setTime(date.getTime()+(trueOffset-guessedOffset)*6e4);}HEAP32[tmPtr+24>>2]=date.getDay();var yday=__yday_from_date(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getYear();return date.getTime()/1e3|0}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function __tzset_js(timezone,daylight,tzname){var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);function extractZone(date){var match=date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);return match?match[1]:\"GMT\"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocateUTF8(winterName);var summerNamePtr=allocateUTF8(summerName);if(summerOffset<winterOffset){HEAPU32[tzname>>2]=winterNamePtr;HEAPU32[tzname+4>>2]=summerNamePtr;}else {HEAPU32[tzname>>2]=summerNamePtr;HEAPU32[tzname+4>>2]=winterNamePtr;}}function _abort(){abort(\"\");}function _emscripten_date_now(){return Date.now()}var _emscripten_get_now;_emscripten_get_now=()=>performance.now();function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num);}function getHeapMax(){return 1073741824}function emscripten_realloc_buffer(size){var b=wasmMemory.buffer;try{wasmMemory.grow(size-b.byteLength+65535>>>16);updateMemoryViews();return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var ENV={};function getExecutableName(){return thisProgram||\"./this.program\"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\";var env={\"USER\":\"web_user\",\"LOGNAME\":\"web_user\",\"PATH\":\"/\",\"PWD\":\"/\",\"HOME\":\"/home/web_user\",\"LANG\":lang,\"_\":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x];}var strings=[];for(var x in env){strings.push(x+\"=\"+env[x]);}getEnvStrings.strings=strings;}return getEnvStrings.strings}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i<str.length;++i){HEAP8[buffer++>>0]=str.charCodeAt(i);}if(!dontAddNull)HEAP8[buffer>>0]=0;}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1;});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1;});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){return 52}function _fd_read(fd,iov,iovcnt,pnum){return 52}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){return 70}var printCharBuffers=[null,[],[]];function printChar(stream,curr){var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0;}else {buffer.push(curr);}}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i<iovcnt;i++){var ptr=HEAPU32[iov>>2];var len=HEAPU32[iov+4>>2];iov+=8;for(var j=0;j<len;j++){printChar(fd,HEAPU8[ptr+j]);}num+=len;}HEAPU32[pnum>>2]=num;return 0}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1);}else {newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1);}}else {newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer);}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):\"\"};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={\"%c\":\"%a %b %d %H:%M:%S %Y\",\"%D\":\"%m/%d/%y\",\"%F\":\"%Y-%m-%d\",\"%h\":\"%b\",\"%r\":\"%I:%M:%S %p\",\"%R\":\"%H:%M\",\"%T\":\"%H:%M:%S\",\"%x\":\"%m/%d/%y\",\"%X\":\"%H:%M:%S\",\"%Ec\":\"%c\",\"%EC\":\"%C\",\"%Ex\":\"%m/%d/%y\",\"%EX\":\"%H:%M:%S\",\"%Ey\":\"%y\",\"%EY\":\"%Y\",\"%Od\":\"%d\",\"%Oe\":\"%e\",\"%OH\":\"%H\",\"%OI\":\"%I\",\"%Om\":\"%m\",\"%OM\":\"%M\",\"%OS\":\"%S\",\"%Ou\":\"%u\",\"%OU\":\"%U\",\"%OV\":\"%V\",\"%Ow\":\"%w\",\"%OW\":\"%W\",\"%Oy\":\"%y\"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,\"g\"),EXPANSION_RULES_1[rule]);}var WEEKDAYS=[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"];var MONTHS=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];function leadingSomething(value,digits,character){var str=typeof value==\"number\"?value.toString():value||\"\";while(str.length<digits){str=character[0]+str;}return str}function leadingNulls(value,digits){return leadingSomething(value,digits,\"0\")}function compareByDay(date1,date2){function sgn(value){return value<0?-1:value>0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate());}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={\"%a\":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},\"%A\":function(date){return WEEKDAYS[date.tm_wday]},\"%b\":function(date){return MONTHS[date.tm_mon].substring(0,3)},\"%B\":function(date){return MONTHS[date.tm_mon]},\"%C\":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},\"%d\":function(date){return leadingNulls(date.tm_mday,2)},\"%e\":function(date){return leadingSomething(date.tm_mday,2,\" \")},\"%g\":function(date){return getWeekBasedYear(date).toString().substring(2)},\"%G\":function(date){return getWeekBasedYear(date)},\"%H\":function(date){return leadingNulls(date.tm_hour,2)},\"%I\":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},\"%j\":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},\"%m\":function(date){return leadingNulls(date.tm_mon+1,2)},\"%M\":function(date){return leadingNulls(date.tm_min,2)},\"%n\":function(){return \"\\n\"},\"%p\":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return \"AM\"}return \"PM\"},\"%S\":function(date){return leadingNulls(date.tm_sec,2)},\"%t\":function(){return \"\\t\"},\"%u\":function(date){return date.tm_wday||7},\"%U\":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},\"%V\":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++;}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&__isLeapYear(date.tm_year%400-1)){val++;}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!__isLeapYear(date.tm_year)))val=1;}return leadingNulls(val,2)},\"%w\":function(date){return date.tm_wday},\"%W\":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},\"%y\":function(date){return (date.tm_year+1900).toString().substring(2)},\"%Y\":function(date){return date.tm_year+1900},\"%z\":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return (ahead?\"+\":\"-\")+String(\"0000\"+off).slice(-4)},\"%Z\":function(date){return date.tm_zone},\"%%\":function(){return \"%\"}};pattern=pattern.replace(/%%/g,\"\\0\\0\");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,\"g\"),EXPANSION_RULES_2[rule](date));}}pattern=pattern.replace(/\\0\\0/g,\"%\");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm,loc){return _strftime(s,maxsize,format,tm)}InternalError=Module[\"InternalError\"]=extendError(Error,\"InternalError\");embind_init_charCodes();BindingError=Module[\"BindingError\"]=extendError(Error,\"BindingError\");init_ClassHandle();init_embind();init_RegisteredPointer();UnboundTypeError=Module[\"UnboundTypeError\"]=extendError(Error,\"UnboundTypeError\");init_emval();var wasmImports={\"e\":___cxa_throw,\"s\":___syscall_fcntl64,\"F\":___syscall_getcwd,\"H\":___syscall_ioctl,\"t\":___syscall_openat,\"B\":___syscall_rmdir,\"C\":___syscall_unlinkat,\"g\":__embind_finalize_value_object,\"y\":__embind_register_bigint,\"Q\":__embind_register_bool,\"k\":__embind_register_class,\"j\":__embind_register_class_constructor,\"a\":__embind_register_class_function,\"P\":__embind_register_emval,\"w\":__embind_register_enum,\"q\":__embind_register_enum_value,\"v\":__embind_register_float,\"d\":__embind_register_integer,\"b\":__embind_register_memory_view,\"u\":__embind_register_std_string,\"o\":__embind_register_std_wstring,\"i\":__embind_register_value_object,\"c\":__embind_register_value_object_field,\"R\":__embind_register_void,\"J\":__emscripten_get_now_is_monotonic,\"T\":__emval_call,\"f\":__emval_decref,\"p\":__emval_incref,\"m\":__emval_take_value,\"K\":__gmtime_js,\"L\":__localtime_js,\"M\":__mktime_js,\"N\":__tzset_js,\"h\":_abort,\"l\":_emscripten_date_now,\"I\":_emscripten_get_now,\"O\":_emscripten_memcpy_big,\"A\":_emscripten_resize_heap,\"D\":_environ_get,\"E\":_environ_sizes_get,\"n\":_fd_close,\"G\":_fd_read,\"x\":_fd_seek,\"r\":_fd_write,\"S\":_strftime,\"z\":_strftime_l};createWasm();var _malloc=function(){return (_malloc=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _free=function(){return (_free=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var ___getTypeName=Module[\"___getTypeName\"]=function(){return (___getTypeName=Module[\"___getTypeName\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};Module[\"__embind_initialize_bindings\"]=function(){return (Module[\"__embind_initialize_bindings\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var ___cxa_is_pointer_type=function(){return (___cxa_is_pointer_type=Module[\"asm\"][\"$\"]).apply(null,arguments)};Module[\"dynCall_jiji\"]=function(){return (Module[\"dynCall_jiji\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};Module[\"dynCall_viijii\"]=function(){return (Module[\"dynCall_viijii\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};Module[\"dynCall_iiiiij\"]=function(){return (Module[\"dynCall_iiiiij\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};Module[\"dynCall_iiiiijj\"]=function(){return (Module[\"dynCall_iiiiijj\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};Module[\"dynCall_iiiiiijj\"]=function(){return (Module[\"dynCall_iiiiiijj\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};Module[\"dynCall_jijii\"]=function(){return (Module[\"dynCall_jijii\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};Module[\"dynCall_vijii\"]=function(){return (Module[\"dynCall_vijii\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};Module[\"dynCall_jij\"]=function(){return (Module[\"dynCall_jij\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};Module[\"dynCall_iij\"]=function(){return (Module[\"dynCall_iij\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};Module[\"dynCall_viji\"]=function(){return (Module[\"dynCall_viji\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};Module[\"dynCall_jii\"]=function(){return (Module[\"dynCall_jii\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller;};function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun();}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\");},1);doRun();},1);}else {doRun();}}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()();}}run();function wasmSIMDSupported(){const simdTest=Uint8Array.from([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]);return WebAssembly.validate(simdTest)}if(wasmSIMDSupported()){ENV.DOTPRODUCT=\"sse\";}\n\n\n return Module.ready\n}\n);\n})();\n\n// @ts-ignore - Don't error if library hasn't been built yet.\n/**\n * Create a JS array from a std::vector wrapper created by Embind.\n */\nfunction jsArrayFromStdVector(vec) {\n const size = vec.size();\n const result = [];\n for (let i = 0; i < size; i++) {\n result.push(vec.get(i));\n }\n return result;\n}\n/**\n * Flags indicating position of a text item.\n *\n * Keep this in sync with `LayoutFlags` in lib.cpp.\n */\nconst layoutFlags = {\n StartOfLine: 1,\n EndOfLine: 2,\n};\n/**\n * Low-level synchronous API for performing OCR.\n *\n * Instances are constructed using {@link createOCREngine}.\n */\nclass OCREngine {\n /**\n * Initialize the OCREngine.\n *\n * Use {@link createOCREngine} rather than calling this directly.\n *\n * @param tessLib - Emscripten entry point for the compiled WebAssembly module.\n * @param progressChannel - Channel used to report progress\n * updates when OCREngine is run on a background thread\n */\n constructor(tessLib, progressChannel) {\n this._tesseractLib = tessLib;\n this._engine = new tessLib.OCREngine();\n this._modelLoaded = false;\n this._imageLoaded = false;\n this._progressChannel = progressChannel;\n }\n /**\n * Shut down the OCR engine and free up resources.\n */\n destroy() {\n this._engine.delete();\n this._engine = null;\n }\n /**\n * Get the value, represented as a string, of a Tesseract configuration variable.\n *\n * See {@link setVariable} for available variables.\n */\n getVariable(name) {\n const result = this._engine.getVariable(name);\n if (!result.success) {\n throw new Error(`Unable to get variable ${name}`);\n }\n return result.value;\n }\n /**\n * Set the value of a Tesseract configuration variable.\n *\n * For a list of configuration variables, see\n * https://github.com/tesseract-ocr/tesseract/blob/677f5822f247ccb12b4e026265e88b959059fb59/src/ccmain/tesseractclass.cpp#L53\n *\n * If you have Tesseract installed locally, executing `tesseract --print-parameters`\n * will also display a list of configuration variables.\n */\n setVariable(name, value) {\n const result = this._engine.setVariable(name, value);\n if (result.error) {\n throw new Error(`Unable to set variable ${name}`);\n }\n }\n /**\n * Load a trained text recognition model.\n */\n loadModel(model) {\n const modelArray = model instanceof ArrayBuffer ? new Uint8Array(model) : model;\n const result = this._engine.loadModel(modelArray);\n if (result.error) {\n throw new Error(\"Text recognition model failed to load\");\n }\n this._modelLoaded = true;\n }\n /**\n * Load a document image for processing by subsequent operations.\n *\n * This is a cheap operation as expensive processing is deferred until\n * bounding boxes or text content is requested.\n */\n loadImage(image) {\n let imageData;\n if (typeof ImageBitmap !== \"undefined\" && image instanceof ImageBitmap) {\n imageData = imageDataFromBitmap(image);\n }\n else {\n imageData = image;\n }\n if (imageData.data.length < imageData.width * imageData.height * 4) {\n throw new Error(\"Image data length does not match width/height\");\n }\n if (imageData.width <= 0 || imageData.height <= 0) {\n throw new Error(\"Image width or height is zero\");\n }\n // Free up resources used by the previous image, if any. Doing this before\n // creating the buffer for the new image reduces peak memory usage.\n this._engine.clearImage();\n // Allocate a temporary internal image for transfering the image data into\n // Tesseract\n const engineImage = new this._tesseractLib.Image(imageData.width, imageData.height);\n const engineImageBuf = engineImage.data();\n engineImageBuf.set(new Uint32Array(imageData.data.buffer));\n // Load the image. This will take a copy of the image within Tesseract, so\n // we can release the original afterwards.\n const result = this._engine.loadImage(engineImage);\n engineImage.delete();\n if (result.error) {\n throw new Error(\"Failed to load image\");\n }\n this._imageLoaded = true;\n }\n /**\n * Clear the current image and text recognition results.\n *\n * This will clear the loaded image data internally, but keep the text\n * recognition model loaded.\n *\n * At present there is no way to shrink WebAssembly memory, so this will not\n * return the memory used by the image to the OS/browser. To release memory,\n * the `OCREngine` instance needs to be destroyed via {@link destroy}.\n */\n clearImage() {\n this._engine.clearImage();\n this._imageLoaded = false;\n }\n /**\n * Perform layout analysis on the current image, if not already done, and\n * return bounding boxes for a given unit of text.\n *\n * This operation is relatively cheap compared to text recognition, so can\n * provide much faster results if only the location of lines/words etc. on\n * the page is required, not the text content. This operation can also be\n * performed before a text recognition model is loaded.\n *\n * This method may return a different number/positions of words on a line\n * compared to {@link getTextBoxes} due to the simpler analysis. After full\n * OCR has been performed by {@link getTextBoxes} or {@link getText}, this\n * method should return the same results.\n */\n getBoundingBoxes(unit) {\n this._checkImageLoaded();\n const textUnit = this._textUnitForUnit(unit);\n return jsArrayFromStdVector(this._engine.getBoundingBoxes(textUnit));\n }\n /**\n * Perform layout analysis and text recognition on the current image, if\n * not already done, and return bounding boxes and text content for a given\n * unit of text.\n *\n * A text recognition model must be loaded with {@link loadModel} before this\n * is called.\n */\n getTextBoxes(unit, onProgress) {\n this._checkImageLoaded();\n this._checkModelLoaded();\n const textUnit = this._textUnitForUnit(unit);\n return jsArrayFromStdVector(this._engine.getTextBoxes(textUnit, (progress) => {\n var _a;\n onProgress === null || onProgress === void 0 ? void 0 : onProgress(progress);\n (_a = this._progressChannel) === null || _a === void 0 ? void 0 : _a.postMessage({ progress });\n }));\n }\n /**\n * Perform layout analysis and text recognition on the current image, if\n * not already done, and return the page text as a string.\n *\n * A text recognition model must be loaded with {@link loadModel} before this\n * is called.\n */\n getText(onProgress) {\n this._checkImageLoaded();\n this._checkModelLoaded();\n return this._engine.getText((progress) => {\n var _a;\n onProgress === null || onProgress === void 0 ? void 0 : onProgress(progress);\n (_a = this._progressChannel) === null || _a === void 0 ? void 0 : _a.postMessage({ progress });\n });\n }\n /**\n * Perform layout analysis and text recognition on the current image, if\n * not already done, and return the page text in hOCR format.\n *\n * A text recognition model must be loaded with {@link loadModel} before this\n * is called.\n */\n getHOCR(onProgress) {\n this._checkImageLoaded();\n this._checkModelLoaded();\n return this._engine.getHOCR((progress) => {\n var _a;\n onProgress === null || onProgress === void 0 ? void 0 : onProgress(progress);\n (_a = this._progressChannel) === null || _a === void 0 ? void 0 : _a.postMessage({ progress });\n });\n }\n /**\n * Attempt to determine the orientation of the document image in degrees.\n *\n * This currently uses a simplistic algorithm [1] which is designed for\n * non-uppercase Latin text. It will likely perform badly for other scripts or\n * if the text is all uppercase.\n *\n * [1] See http://www.leptonica.org/papers/skew-measurement.pdf\n */\n getOrientation() {\n this._checkImageLoaded();\n return this._engine.getOrientation();\n }\n _checkModelLoaded() {\n if (!this._modelLoaded) {\n throw new Error(\"No text recognition model loaded\");\n }\n }\n _checkImageLoaded() {\n if (!this._imageLoaded) {\n throw new Error(\"No image loaded\");\n }\n }\n _textUnitForUnit(unit) {\n const { TextUnit } = this._tesseractLib;\n switch (unit) {\n case \"word\":\n return TextUnit.Word;\n case \"line\":\n return TextUnit.Line;\n default:\n throw new Error(\"Invalid text unit\");\n }\n }\n}\nfunction wasmSIMDSupported() {\n // Tiny WebAssembly file generated from the following source using `wat2wasm`:\n //\n // (module\n // (func (result v128)\n // i32.const 0\n // i8x16.splat\n // i8x16.popcnt\n // )\n // )\n const simdTest = Uint8Array.from([\n 0, 97, 115, 109, 1, 0, 0, 0, 1, 5, 1, 96, 0, 1, 123, 3, 2, 1, 0, 10, 10, 1,\n 8, 0, 65, 0, 253, 15, 253, 98, 11,\n ]);\n return WebAssembly.validate(simdTest);\n}\nfunction resolve(path, baseURL) {\n return new URL(path, baseURL).href;\n}\n/**\n * Return true if the current JS runtime supports all the WebAssembly features\n * needed for the \"fast\" WebAssembly build. If not, the \"fallback\" version must\n * be used.\n */\nfunction supportsFastBuild() {\n return wasmSIMDSupported();\n}\n/**\n * Initialize the OCR library and return a new {@link OCREngine}.\n */\nasync function createOCREngine({ wasmBinary, progressChannel, } = {}) {\n if (!wasmBinary) {\n const wasmPath = supportsFastBuild()\n ? \"./tesseract-core.wasm\"\n : \"./tesseract-core-fallback.wasm\";\n // nb. If this code is included in a non-ESM bundle, Rollup will replace\n // `import.meta.url` with code that uses `document.currentScript` /\n // `location.href`.\n const wasmURL = resolve(wasmPath, import.meta.url);\n const wasmBinaryResponse = await fetch(wasmURL);\n wasmBinary = await wasmBinaryResponse.arrayBuffer();\n }\n const tessLib = await Module({ wasmBinary });\n return new OCREngine(tessLib, progressChannel);\n}\n\nexport { OCRClient, createOCREngine, layoutFlags, supportsFastBuild };\n","/**\n * Kreuzberg - WebAssembly Bindings for Browser and Runtime Environments\n *\n * This module provides WebAssembly bindings for Kreuzberg document intelligence,\n * enabling high-performance document extraction in browser and JavaScript runtime environments.\n *\n * ## Features\n *\n * - Extract text, metadata, and tables from documents\n * - Support for multiple document formats (PDF, Office, images, etc.)\n * - Browser and runtime-compatible WASM bindings\n * - Type-safe TypeScript interfaces\n * - Runtime detection and feature capability checking\n * - Automatic type conversion and error handling\n *\n * ## Installation\n *\n * ```bash\n * npm install @kreuzberg/wasm\n * ```\n *\n * ## Basic Usage\n *\n * ```typescript\n * import { extractBytes, initWasm } from '@kreuzberg/wasm';\n *\n * // Initialize WASM module once at app startup\n * await initWasm();\n *\n * // Extract from bytes\n * const bytes = new Uint8Array(buffer);\n * const result = await extractBytes(bytes, 'application/pdf');\n * console.log(result.content);\n * ```\n *\n * ## Browser Usage with File Input\n *\n * ```typescript\n * import { extractBytes, initWasm } from '@kreuzberg/wasm';\n * import { fileToUint8Array } from '@kreuzberg/wasm/adapters/wasm-adapter';\n *\n * // Initialize once at app startup\n * await initWasm();\n *\n * // Handle file input\n * const fileInput = document.getElementById('file');\n * fileInput.addEventListener('change', async (e) => {\n * const file = e.target.files?.[0];\n * if (file) {\n * const bytes = await fileToUint8Array(file);\n * const result = await extractBytes(bytes, file.type);\n * console.log(result.content);\n * }\n * });\n * ```\n *\n * ## Runtime Detection\n *\n * ```typescript\n * import { detectRuntime, getWasmCapabilities } from '@kreuzberg/wasm/runtime';\n *\n * const runtime = detectRuntime();\n * const caps = getWasmCapabilities();\n *\n * if (caps.hasWorkers) {\n * // Can use Web Workers for parallel processing\n * }\n * ```\n *\n * ## Configuration\n *\n * ```typescript\n * import { extractBytes, initWasm } from '@kreuzberg/wasm';\n * import type { ExtractionConfig } from '@kreuzberg/wasm';\n *\n * await initWasm();\n *\n * const config: ExtractionConfig = {\n * ocr: {\n * backend: 'tesseract',\n * language: 'eng'\n * },\n * chunking: {\n * maxChars: 1000,\n * chunkOverlap: 100\n * },\n * images: {\n * extractImages: true,\n * targetDpi: 150\n * }\n * };\n *\n * const result = await extractBytes(bytes, 'application/pdf', config);\n * ```\n */\n\nimport { configToJS, fileToUint8Array, jsToExtractionResult, wrapWasmError } from \"./adapters/wasm-adapter.js\";\nimport { registerOcrBackend } from \"./ocr/registry.js\";\nimport { TesseractWasmBackend } from \"./ocr/tesseract-wasm-backend.js\";\nimport { detectRuntime, hasWasm, isBrowser } from \"./runtime.js\";\nimport type { ExtractionConfig as ExtractionConfigType, ExtractionResult } from \"./types.js\";\n\n// Re-export adapter utilities for convenient access\nexport {\n\tconfigToJS,\n\tfileToUint8Array,\n\tisValidExtractionResult,\n\tjsToExtractionResult,\n\twrapWasmError,\n} from \"./adapters/wasm-adapter.js\";\n// Re-export OCR registry\nexport {\n\tclearOcrBackends,\n\tgetOcrBackend,\n\tlistOcrBackends,\n\tregisterOcrBackend,\n\tunregisterOcrBackend,\n} from \"./ocr/registry.js\";\n// Re-export OCR backends\nexport { TesseractWasmBackend } from \"./ocr/tesseract-wasm-backend.js\";\n// Re-export runtime utilities\nexport {\n\tdetectRuntime,\n\tgetRuntimeInfo,\n\tgetRuntimeVersion,\n\tgetWasmCapabilities,\n\thasBigInt,\n\thasBlob,\n\thasFileApi,\n\thasModuleWorkers,\n\thasSharedArrayBuffer,\n\thasWasm,\n\thasWasmStreaming,\n\thasWorkers,\n\tisBrowser,\n\tisBun,\n\tisDeno,\n\tisNode,\n\tisServerEnvironment,\n\tisWebEnvironment,\n\ttype RuntimeType,\n\ttype WasmCapabilities,\n} from \"./runtime.js\";\nexport type * from \"./types.js\";\nexport type {\n\tChunk,\n\tChunkingConfig,\n\tChunkMetadata,\n\tExtractedImage,\n\tExtractionConfig,\n\tExtractionResult,\n\tImageExtractionConfig,\n\tLanguageDetectionConfig,\n\tMetadata,\n\tOcrBackendProtocol,\n\tOcrConfig,\n\tPageContent,\n\tPageExtractionConfig,\n\tPdfConfig,\n\tPostProcessorConfig,\n\tTable,\n\tTesseractConfig,\n\tTokenReductionConfig,\n} from \"./types.js\";\n\n// WASM binding imports (to be populated during build)\n// Type definition for the WASM module interface\ntype WasmModule = {\n\t// Extraction functions\n\textractBytes: (data: Uint8Array, mimeType: string, config: Record<string, unknown> | null) => Promise<unknown>;\n\textractBytesSync: (data: Uint8Array, mimeType: string, config: Record<string, unknown> | null) => unknown;\n\tbatchExtractBytes: (\n\t\tdataList: Uint8Array[],\n\t\tmimeTypes: string[],\n\t\tconfig: Record<string, unknown> | null,\n\t) => Promise<unknown>;\n\tbatchExtractBytesSync: (\n\t\tdataList: Uint8Array[],\n\t\tmimeTypes: string[],\n\t\tconfig: Record<string, unknown> | null,\n\t) => unknown;\n\textractFile: (file: File, mimeType: string | null, config: Record<string, unknown> | null) => Promise<unknown>;\n\tbatchExtractFiles: (files: File[], config: Record<string, unknown> | null) => Promise<unknown>;\n\n\t// MIME and file type utilities\n\tdetectMimeFromBytes: (data: Uint8Array) => string;\n\tnormalizeMimeType: (mimeType: string) => string;\n\tgetMimeFromExtension: (extension: string) => string | null;\n\tgetExtensionsForMime: (mimeType: string) => string[];\n\n\t// Configuration\n\tloadConfigFromString: (content: string, format: string) => Record<string, unknown>;\n\tdiscoverConfig: () => Record<string, unknown>;\n\n\t// Module information\n\tversion: () => string;\n\tget_module_info: () => ModuleInfo;\n\n\t// OCR backend management\n\tregister_ocr_backend: (backend: unknown) => void;\n\tunregister_ocr_backend: (name: string) => void;\n\tlist_ocr_backends: () => string[];\n\tclear_ocr_backends: () => void;\n\n\t// Post-processor management\n\tregister_post_processor: (processor: unknown) => void;\n\tunregister_post_processor: (name: string) => void;\n\tlist_post_processors: () => string[];\n\tclear_post_processors: () => void;\n\n\t// Validator management\n\tregister_validator: (validator: unknown) => void;\n\tunregister_validator: (name: string) => void;\n\tlist_validators: () => string[];\n\tclear_validators: () => void;\n\n\t// PDF/WASM utilities\n\tinitialize_pdfium_render: (pdfiumWasmModule: unknown, localWasmModule: unknown, debug: boolean) => boolean;\n\tread_block_from_callback_wasm: (param: number, position: number, pBuf: number, size: number) => number;\n\twrite_block_from_callback_wasm: (param: number, buf: number, size: number) => number;\n\n\t// Initialization\n\tdefault?: () => Promise<void>;\n};\n\n// ModuleInfo type definition\ntype ModuleInfo = {\n\tname: () => string;\n\tversion: () => string;\n\tfree: () => void;\n};\n\nlet wasm: WasmModule | null = null;\n\n/** Initialize flag */\nlet initialized = false;\n\n/** Initialization error (if any) */\nlet initializationError: Error | null = null;\n\n/** Initialization promise for handling concurrent init calls */\nlet initializationPromise: Promise<void> | null = null;\n\n/**\n * Initialize the WASM module\n *\n * This function must be called once before using any extraction functions.\n * It loads and initializes the WASM module in the current runtime environment,\n * automatically selecting the appropriate WASM variant for the detected runtime.\n *\n * Multiple calls to initWasm() are safe and will return immediately if already initialized.\n *\n * @throws {Error} If WASM module fails to load or is not supported in the current environment\n *\n * @example Basic Usage\n * ```typescript\n * import { initWasm } from '@kreuzberg/wasm';\n *\n * async function main() {\n * await initWasm();\n * // Now you can use extraction functions\n * }\n *\n * main().catch(console.error);\n * ```\n *\n * @example With Error Handling\n * ```typescript\n * import { initWasm, getWasmCapabilities } from '@kreuzberg/wasm';\n *\n * async function initializeKreuzberg() {\n * const caps = getWasmCapabilities();\n * if (!caps.hasWasm) {\n * throw new Error('WebAssembly is not supported in this environment');\n * }\n *\n * try {\n * await initWasm();\n * console.log('Kreuzberg initialized successfully');\n * } catch (error) {\n * console.error('Failed to initialize Kreuzberg:', error);\n * throw error;\n * }\n * }\n * ```\n */\n\n/**\n * Initialize PDFium WASM module asynchronously (internal use)\n * Loads and binds the PDFium WASM module for PDF extraction\n */\nasync function initializePdfiumAsync(wasmModule: WasmModule): Promise<void> {\n\tif (!wasmModule || typeof wasmModule.initialize_pdfium_render !== \"function\") {\n\t\treturn;\n\t}\n\n\t// Skip PDFium initialization for non-browser environments (Deno, Node.js)\n\t// Browser environments will load pdfium.js from the package\n\tif (!isBrowser()) {\n\t\tconsole.debug(\"PDFium initialization skipped (non-browser environment)\");\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// For browser environments, load PDFium from the package distribution\n\t\t// @ts-expect-error - Dynamic module loading\n\t\tconst pdfiumModule = await import(\"./pdfium.js\");\n\t\tconst pdfium = typeof pdfiumModule.default === \"function\" ? await pdfiumModule.default() : pdfiumModule;\n\n\t\t// Bind PDFium to the Rust module\n\t\tconst success = wasmModule.initialize_pdfium_render(pdfium, wasmModule, false);\n\t\tif (!success) {\n\t\t\tconsole.warn(\"PDFium initialization returned false\");\n\t\t}\n\t} catch (error) {\n\t\t// Don't throw - PDF extraction will fail gracefully if PDFium isn't available\n\t\tconsole.debug(\"PDFium initialization error:\", error);\n\t}\n}\n\nexport async function initWasm(): Promise<void> {\n\tif (initialized) {\n\t\treturn;\n\t}\n\n\t// Handle concurrent init calls\n\tif (initializationPromise) {\n\t\treturn initializationPromise;\n\t}\n\n\tinitializationPromise = (async () => {\n\t\ttry {\n\t\t\t// Check WASM support\n\t\t\tif (!hasWasm()) {\n\t\t\t\tthrow new Error(\"WebAssembly is not supported in this environment\");\n\t\t\t}\n\n\t\t\t// Dynamic WASM import and initialization\n\t\t\tlet wasmModule: unknown;\n\t\t\ttry {\n\t\t\t\t// Try importing from wasm-pack output (pkg/) shipped with the published package.\n\t\t\t\twasmModule = await import(\"../pkg/kreuzberg_wasm.js\");\n\t\t\t} catch {\n\t\t\t\t// Fallback to dist-relative path (legacy builds which copy wasm-pack outputs into dist/)\n\t\t\t\t// @ts-expect-error - Dynamic import path\n\t\t\t\twasmModule = await import(\"./kreuzberg_wasm.js\");\n\t\t\t}\n\t\t\twasm = wasmModule as unknown as WasmModule;\n\n\t\t\t// Call default initialization if available (for some wasm-pack targets)\n\t\t\tif (wasm && typeof wasm.default === \"function\") {\n\t\t\t\tawait wasm.default();\n\t\t\t}\n\n\t\t\t// Auto-initialize PDFium for browser environments\n\t\t\t// PDFium is required for PDF extraction in WASM\n\t\t\tif (isBrowser() && wasm && typeof wasm.initialize_pdfium_render === \"function\") {\n\t\t\t\tinitializePdfiumAsync(wasm).catch((error) => {\n\t\t\t\t\tconsole.warn(\"PDFium auto-initialization failed (PDF extraction disabled):\", error);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tinitialized = true;\n\t\t\tinitializationError = null;\n\t\t} catch (error) {\n\t\t\tinitializationError = error instanceof Error ? error : new Error(String(error));\n\t\t\tthrow wrapWasmError(error, \"initializing Kreuzberg WASM module\");\n\t\t}\n\t})();\n\n\treturn initializationPromise;\n}\n\n/**\n * Check if WASM module is initialized\n *\n * @returns True if WASM module is initialized, false otherwise\n *\n * @example\n * ```typescript\n * if (!isInitialized()) {\n * await initWasm();\n * }\n * ```\n */\nexport function isInitialized(): boolean {\n\treturn initialized;\n}\n\n/**\n * Get WASM module version\n *\n * @throws {Error} If WASM module is not initialized\n * @returns The version string of the WASM module\n *\n * @example\n * ```typescript\n * const version = getVersion();\n * console.log(`Using Kreuzberg ${version}`);\n * ```\n */\nexport function getVersion(): string {\n\tif (!initialized) {\n\t\tthrow new Error(\"WASM module not initialized. Call initWasm() first.\");\n\t}\n\n\tif (!wasm) {\n\t\tthrow new Error(\"WASM module not loaded. Call initWasm() first.\");\n\t}\n\n\treturn wasm.version();\n}\n\n/**\n * Get initialization error if module failed to load\n *\n * @returns The error that occurred during initialization, or null if no error\n *\n * @internal\n */\nexport function getInitializationError(): Error | null {\n\treturn initializationError;\n}\n\n/**\n * Extract content from bytes (document data)\n *\n * Extracts text, metadata, tables, images, and other content from document bytes.\n * Automatically detects document type from MIME type and applies appropriate extraction logic.\n *\n * @param data - The document bytes to extract from\n * @param mimeType - MIME type of the document (e.g., 'application/pdf', 'image/jpeg')\n * @param config - Optional extraction configuration\n * @returns Promise resolving to the extraction result\n * @throws {Error} If WASM module is not initialized or extraction fails\n *\n * @example Extract PDF\n * ```typescript\n * const bytes = new Uint8Array(buffer);\n * const result = await extractBytes(bytes, 'application/pdf');\n * console.log(result.content);\n * console.log(result.tables);\n * ```\n *\n * @example Extract with Configuration\n * ```typescript\n * const result = await extractBytes(bytes, 'application/pdf', {\n * ocr: {\n * backend: 'tesseract',\n * language: 'deu' // German\n * },\n * images: {\n * extractImages: true,\n * targetDpi: 200\n * }\n * });\n * ```\n *\n * @example Extract from File\n * ```typescript\n * const file = inputEvent.target.files[0];\n * const bytes = await fileToUint8Array(file);\n * const result = await extractBytes(bytes, file.type);\n * ```\n */\nexport async function extractBytes(\n\tdata: Uint8Array,\n\tmimeType: string,\n\tconfig?: ExtractionConfigType | null,\n): Promise<ExtractionResult> {\n\tif (!initialized) {\n\t\tthrow new Error(\"WASM module not initialized. Call initWasm() first.\");\n\t}\n\n\tif (!wasm) {\n\t\tthrow new Error(\"WASM module not loaded. Call initWasm() first.\");\n\t}\n\n\ttry {\n\t\t// Validate input\n\t\tif (!data || data.length === 0) {\n\t\t\tthrow new Error(\"Document data cannot be empty\");\n\t\t}\n\n\t\tif (!mimeType) {\n\t\t\tthrow new Error(\"MIME type is required\");\n\t\t}\n\n\t\t// Normalize config for WASM\n\t\tconst normalizedConfig = configToJS(config ?? null);\n\n\t\t// Call WASM function\n\t\tconst result = await wasm.extractBytes(data, mimeType, normalizedConfig);\n\n\t\t// Validate result\n\t\tif (!result) {\n\t\t\tthrow new Error(\"Invalid extraction result: no result from WASM module\");\n\t\t}\n\n\t\t// Convert and return result\n\t\treturn jsToExtractionResult(result);\n\t} catch (error) {\n\t\tthrow wrapWasmError(error, \"extracting from bytes\");\n\t}\n}\n\n/**\n * Extract content from a file on the file system\n *\n * Node.js and Deno specific function that reads a file from the file system\n * and extracts content from it. Automatically detects MIME type if not provided.\n *\n * @param path - Path to the file to extract from\n * @param mimeType - Optional MIME type of the file. If not provided, will attempt to detect\n * @param config - Optional extraction configuration\n * @returns Promise resolving to the extraction result\n * @throws {Error} If WASM module is not initialized, file doesn't exist, or extraction fails\n *\n * @example Extract with auto-detection\n * ```typescript\n * const result = await extractFile('./document.pdf');\n * console.log(result.content);\n * ```\n *\n * @example Extract with explicit MIME type\n * ```typescript\n * const result = await extractFile('./document.docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document');\n * ```\n *\n * @example Extract from Node.js with config\n * ```typescript\n * import { extractFile } from '@kreuzberg/wasm';\n * import { readFile } from 'fs/promises';\n *\n * const result = await extractFile('./report.xlsx', null, {\n * chunking: {\n * maxChars: 1000\n * }\n * });\n * ```\n */\nexport async function extractFile(\n\tpath: string,\n\tmimeType?: string | null,\n\tconfig?: ExtractionConfigType | null,\n): Promise<ExtractionResult> {\n\tif (!initialized) {\n\t\tthrow new Error(\"WASM module not initialized. Call initWasm() first.\");\n\t}\n\n\tif (!wasm) {\n\t\tthrow new Error(\"WASM module not loaded. Call initWasm() first.\");\n\t}\n\n\ttry {\n\t\tif (!path) {\n\t\t\tthrow new Error(\"File path is required\");\n\t\t}\n\n\t\t// This function is only suitable for Node.js/Deno/Bun environments\n\t\t// Browser environments should use extractBytes with fileToUint8Array\n\t\tconst runtime = detectRuntime();\n\t\tif (runtime === \"browser\") {\n\t\t\tthrow new Error(\"Use extractBytes with fileToUint8Array for browser environments\");\n\t\t}\n\n\t\t// Read file based on runtime\n\t\tlet fileData: Uint8Array;\n\n\t\tif (runtime === \"node\") {\n\t\t\t// Node.js: use dynamic import to avoid issues in non-Node.js environments\n\t\t\tconst { readFile } = await import(\"node:fs/promises\");\n\t\t\tconst buffer = await readFile(path);\n\t\t\tfileData = new Uint8Array(buffer);\n\t\t} else if (runtime === \"deno\") {\n\t\t\t// Deno: use Deno.readFile\n\t\t\tconst deno = (globalThis as Record<string, unknown>).Deno as {\n\t\t\t\treadFile: (path: string) => Promise<Uint8Array>;\n\t\t\t};\n\t\t\tfileData = await deno.readFile(path);\n\t\t} else if (runtime === \"bun\") {\n\t\t\t// Bun: use dynamic import for fs/promises (compatible with Node.js API)\n\t\t\tconst { readFile } = await import(\"node:fs/promises\");\n\t\t\tconst buffer = await readFile(path);\n\t\t\tfileData = new Uint8Array(buffer);\n\t\t} else {\n\t\t\tthrow new Error(`Unsupported runtime for file extraction: ${runtime}`);\n\t\t}\n\n\t\t// Detect MIME type if not provided\n\t\tlet detectedMimeType = mimeType;\n\t\tif (!detectedMimeType) {\n\t\t\tdetectedMimeType = wasm.detectMimeFromBytes(fileData);\n\t\t}\n\n\t\tif (!detectedMimeType) {\n\t\t\tthrow new Error(\"Could not detect MIME type for file. Please provide mimeType parameter.\");\n\t\t}\n\n\t\t// Normalize MIME type\n\t\tdetectedMimeType = wasm.normalizeMimeType(detectedMimeType);\n\n\t\t// Call extractBytes with the file contents\n\t\treturn await extractBytes(fileData, detectedMimeType, config);\n\t} catch (error) {\n\t\tthrow wrapWasmError(error, `extracting from file: ${path}`);\n\t}\n}\n\n/**\n * Extract content from a File or Blob (browser-friendly wrapper)\n *\n * Convenience function that wraps fileToUint8Array and extractBytes,\n * providing a streamlined API for browser applications handling file inputs.\n *\n * @param file - The File or Blob to extract from\n * @param mimeType - Optional MIME type. If not provided, uses file.type if available\n * @param config - Optional extraction configuration\n * @returns Promise resolving to the extraction result\n * @throws {Error} If WASM module is not initialized or extraction fails\n *\n * @example Simple file extraction\n * ```typescript\n * const fileInput = document.getElementById('file');\n * fileInput.addEventListener('change', async (e) => {\n * const file = e.target.files?.[0];\n * if (file) {\n * const result = await extractFromFile(file);\n * console.log(result.content);\n * }\n * });\n * ```\n *\n * @example With configuration\n * ```typescript\n * const result = await extractFromFile(file, file.type, {\n * chunking: { maxChars: 1000 },\n * images: { extractImages: true }\n * });\n * ```\n */\nexport async function extractFromFile(\n\tfile: File | Blob,\n\tmimeType?: string | null,\n\tconfig?: ExtractionConfigType | null,\n): Promise<ExtractionResult> {\n\tif (!initialized) {\n\t\tthrow new Error(\"WASM module not initialized. Call initWasm() first.\");\n\t}\n\n\tif (!wasm) {\n\t\tthrow new Error(\"WASM module not loaded. Call initWasm() first.\");\n\t}\n\n\ttry {\n\t\tconst bytes = await fileToUint8Array(file);\n\t\tlet type = mimeType ?? (file instanceof File ? file.type : \"application/octet-stream\");\n\n\t\t// Normalize MIME type\n\t\ttype = wasm.normalizeMimeType(type);\n\n\t\treturn await extractBytes(bytes, type, config);\n\t} catch (error) {\n\t\tthrow wrapWasmError(error, `extracting from ${file instanceof File ? \"file\" : \"blob\"}`);\n\t}\n}\n\n/**\n * Extract content from bytes synchronously\n *\n * Synchronous version of extractBytes. Performs extraction without async operations.\n * Note: Some extraction features may still be async internally, but the wrapper is synchronous.\n *\n * @param data - The document bytes to extract from\n * @param mimeType - MIME type of the document\n * @param config - Optional extraction configuration\n * @returns The extraction result\n * @throws {Error} If WASM module is not initialized or extraction fails\n *\n * @example\n * ```typescript\n * const bytes = new Uint8Array(buffer);\n * const result = extractBytesSync(bytes, 'application/pdf');\n * console.log(result.content);\n * ```\n */\nexport function extractBytesSync(\n\tdata: Uint8Array,\n\tmimeType: string,\n\tconfig?: ExtractionConfigType | null,\n): ExtractionResult {\n\tif (!initialized) {\n\t\tthrow new Error(\"WASM module not initialized. Call initWasm() first.\");\n\t}\n\n\tif (!wasm) {\n\t\tthrow new Error(\"WASM module not loaded. Call initWasm() first.\");\n\t}\n\n\ttry {\n\t\t// Validate input\n\t\tif (!data || data.length === 0) {\n\t\t\tthrow new Error(\"Document data cannot be empty\");\n\t\t}\n\n\t\tif (!mimeType) {\n\t\t\tthrow new Error(\"MIME type is required\");\n\t\t}\n\n\t\t// Normalize config for WASM\n\t\tconst normalizedConfig = configToJS(config ?? null);\n\n\t\t// Call WASM function\n\t\tconst result = wasm.extractBytesSync(data, mimeType, normalizedConfig);\n\n\t\t// Validate result\n\t\tif (!result) {\n\t\t\tthrow new Error(\"Invalid extraction result: no result from WASM module\");\n\t\t}\n\n\t\t// Convert and return result\n\t\treturn jsToExtractionResult(result);\n\t} catch (error) {\n\t\tthrow wrapWasmError(error, \"extracting from bytes (sync)\");\n\t}\n}\n\n/**\n * Batch extract content from multiple byte arrays asynchronously\n *\n * Extracts content from multiple documents in a single batch operation,\n * allowing for more efficient processing of multiple files.\n *\n * @param files - Array of objects containing data (Uint8Array) and mimeType (string)\n * @param config - Optional extraction configuration applied to all files\n * @returns Promise resolving to array of extraction results\n * @throws {Error} If WASM module is not initialized or extraction fails\n *\n * @example\n * ```typescript\n * const files = [\n * { data: pdfBytes, mimeType: 'application/pdf' },\n * { data: docxBytes, mimeType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' }\n * ];\n * const results = await batchExtractBytes(files);\n * results.forEach((result) => console.log(result.content));\n * ```\n */\nexport async function batchExtractBytes(\n\tfiles: Array<{ data: Uint8Array; mimeType: string }>,\n\tconfig?: ExtractionConfigType | null,\n): Promise<ExtractionResult[]> {\n\tif (!initialized) {\n\t\tthrow new Error(\"WASM module not initialized. Call initWasm() first.\");\n\t}\n\n\tif (!wasm) {\n\t\tthrow new Error(\"WASM module not loaded. Call initWasm() first.\");\n\t}\n\n\ttry {\n\t\t// Validate input\n\t\tif (!Array.isArray(files)) {\n\t\t\tthrow new Error(\"Files parameter must be an array\");\n\t\t}\n\n\t\tif (files.length === 0) {\n\t\t\tthrow new Error(\"Files array cannot be empty\");\n\t\t}\n\n\t\t// Extract data arrays and MIME types\n\t\tconst dataList: Uint8Array[] = [];\n\t\tconst mimeTypes: string[] = [];\n\n\t\tfor (let i = 0; i < files.length; i += 1) {\n\t\t\tconst file = files[i];\n\t\t\tif (!file || typeof file !== \"object\") {\n\t\t\t\tthrow new Error(`Invalid file at index ${i}: must be an object with data and mimeType`);\n\t\t\t}\n\n\t\t\tconst f = file as Record<string, unknown>;\n\n\t\t\tif (!(f.data instanceof Uint8Array)) {\n\t\t\t\tthrow new Error(`Invalid file at index ${i}: data must be Uint8Array`);\n\t\t\t}\n\n\t\t\tif (typeof f.mimeType !== \"string\") {\n\t\t\t\tthrow new Error(`Invalid file at index ${i}: mimeType must be a string`);\n\t\t\t}\n\n\t\t\tif (f.data.length === 0) {\n\t\t\t\tthrow new Error(`Invalid file at index ${i}: data cannot be empty`);\n\t\t\t}\n\n\t\t\tdataList.push(f.data);\n\t\t\tmimeTypes.push(f.mimeType);\n\t\t}\n\n\t\t// Normalize config for WASM\n\t\tconst normalizedConfig = configToJS(config ?? null);\n\n\t\t// Call WASM function\n\t\tconst results = await wasm.batchExtractBytes(dataList, mimeTypes, normalizedConfig);\n\n\t\t// Validate results\n\t\tif (!Array.isArray(results)) {\n\t\t\tthrow new Error(\"Invalid batch extraction result: expected array\");\n\t\t}\n\n\t\t// Convert each result\n\t\treturn results.map((result, index) => {\n\t\t\tif (!result) {\n\t\t\t\tthrow new Error(`Invalid extraction result at index ${index}: no result from WASM module`);\n\t\t\t}\n\n\t\t\treturn jsToExtractionResult(result);\n\t\t});\n\t} catch (error) {\n\t\tthrow wrapWasmError(error, \"batch extracting from bytes\");\n\t}\n}\n\n/**\n * Batch extract content from multiple byte arrays synchronously\n *\n * Synchronous version of batchExtractBytes. Extracts content from multiple documents\n * in a single batch operation without async operations.\n *\n * @param files - Array of objects containing data (Uint8Array) and mimeType (string)\n * @param config - Optional extraction configuration applied to all files\n * @returns Array of extraction results\n * @throws {Error} If WASM module is not initialized or extraction fails\n *\n * @example\n * ```typescript\n * const files = [\n * { data: pdfBytes, mimeType: 'application/pdf' },\n * { data: docxBytes, mimeType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' }\n * ];\n * const results = batchExtractBytesSync(files);\n * results.forEach((result) => console.log(result.content));\n * ```\n */\nexport function batchExtractBytesSync(\n\tfiles: Array<{ data: Uint8Array; mimeType: string }>,\n\tconfig?: ExtractionConfigType | null,\n): ExtractionResult[] {\n\tif (!initialized) {\n\t\tthrow new Error(\"WASM module not initialized. Call initWasm() first.\");\n\t}\n\n\tif (!wasm) {\n\t\tthrow new Error(\"WASM module not loaded. Call initWasm() first.\");\n\t}\n\n\ttry {\n\t\t// Validate input\n\t\tif (!Array.isArray(files)) {\n\t\t\tthrow new Error(\"Files parameter must be an array\");\n\t\t}\n\n\t\tif (files.length === 0) {\n\t\t\tthrow new Error(\"Files array cannot be empty\");\n\t\t}\n\n\t\t// Extract data arrays and MIME types\n\t\tconst dataList: Uint8Array[] = [];\n\t\tconst mimeTypes: string[] = [];\n\n\t\tfor (let i = 0; i < files.length; i += 1) {\n\t\t\tconst file = files[i];\n\t\t\tif (!file || typeof file !== \"object\") {\n\t\t\t\tthrow new Error(`Invalid file at index ${i}: must be an object with data and mimeType`);\n\t\t\t}\n\n\t\t\tconst f = file as Record<string, unknown>;\n\n\t\t\tif (!(f.data instanceof Uint8Array)) {\n\t\t\t\tthrow new Error(`Invalid file at index ${i}: data must be Uint8Array`);\n\t\t\t}\n\n\t\t\tif (typeof f.mimeType !== \"string\") {\n\t\t\t\tthrow new Error(`Invalid file at index ${i}: mimeType must be a string`);\n\t\t\t}\n\n\t\t\tif (f.data.length === 0) {\n\t\t\t\tthrow new Error(`Invalid file at index ${i}: data cannot be empty`);\n\t\t\t}\n\n\t\t\tdataList.push(f.data);\n\t\t\tmimeTypes.push(f.mimeType);\n\t\t}\n\n\t\t// Normalize config for WASM\n\t\tconst normalizedConfig = configToJS(config ?? null);\n\n\t\t// Call WASM function\n\t\tconst results = wasm.batchExtractBytesSync(dataList, mimeTypes, normalizedConfig);\n\n\t\t// Validate results\n\t\tif (!Array.isArray(results)) {\n\t\t\tthrow new Error(\"Invalid batch extraction result: expected array\");\n\t\t}\n\n\t\t// Convert each result\n\t\treturn results.map((result, index) => {\n\t\t\tif (!result) {\n\t\t\t\tthrow new Error(`Invalid extraction result at index ${index}: no result from WASM module`);\n\t\t\t}\n\n\t\t\treturn jsToExtractionResult(result);\n\t\t});\n\t} catch (error) {\n\t\tthrow wrapWasmError(error, \"batch extracting from bytes (sync)\");\n\t}\n}\n\n/**\n * Batch extract content from multiple File objects asynchronously\n *\n * Convenience function that converts File objects to Uint8Array and calls batchExtractBytes.\n * Automatically uses the file.type as MIME type if available.\n *\n * @param files - Array of File objects to extract from\n * @param config - Optional extraction configuration applied to all files\n * @returns Promise resolving to array of extraction results\n * @throws {Error} If WASM module is not initialized, files cannot be read, or extraction fails\n *\n * @example\n * ```typescript\n * const fileInput = document.getElementById('files');\n * const files = Array.from(fileInput.files ?? []);\n * const results = await batchExtractFiles(files);\n * results.forEach((result, index) => {\n * console.log(`File ${index}: ${result.content.substring(0, 50)}...`);\n * });\n * ```\n */\nexport async function batchExtractFiles(\n\tfiles: File[],\n\tconfig?: ExtractionConfigType | null,\n): Promise<ExtractionResult[]> {\n\tif (!initialized) {\n\t\tthrow new Error(\"WASM module not initialized. Call initWasm() first.\");\n\t}\n\n\ttry {\n\t\t// Validate input\n\t\tif (!Array.isArray(files)) {\n\t\t\tthrow new Error(\"Files parameter must be an array\");\n\t\t}\n\n\t\tif (files.length === 0) {\n\t\t\tthrow new Error(\"Files array cannot be empty\");\n\t\t}\n\n\t\t// Convert all files to Uint8Array and collect MIME types\n\t\tconst byteFiles: Array<{ data: Uint8Array; mimeType: string }> = [];\n\n\t\tfor (let i = 0; i < files.length; i += 1) {\n\t\t\tconst file = files[i];\n\t\t\tif (!(file instanceof File)) {\n\t\t\t\tthrow new Error(`Invalid file at index ${i}: must be a File object`);\n\t\t\t}\n\n\t\t\tconst bytes = await fileToUint8Array(file);\n\t\t\tbyteFiles.push({\n\t\t\t\tdata: bytes,\n\t\t\t\tmimeType: file.type || \"application/octet-stream\",\n\t\t\t});\n\t\t}\n\n\t\t// Call batchExtractBytes with converted files\n\t\treturn await batchExtractBytes(byteFiles, config);\n\t} catch (error) {\n\t\tthrow wrapWasmError(error, \"batch extracting from files\");\n\t}\n}\n\n/**\n * Enable OCR functionality with tesseract-wasm backend\n *\n * Convenience function that automatically initializes and registers the Tesseract WASM backend.\n * This is the recommended approach for enabling OCR in WASM-based applications.\n *\n * ## Browser Requirement\n *\n * This function requires a browser environment with support for:\n * - WebWorkers (for Tesseract processing)\n * - createImageBitmap (for image conversion)\n * - Blob API\n *\n * ## Network Requirement\n *\n * Training data will be loaded from jsDelivr CDN on first use of each language.\n * Ensure network access to cdn.jsdelivr.net is available.\n *\n * @throws {Error} If not in browser environment or tesseract-wasm is not available\n *\n * @example Basic Usage\n * ```typescript\n * import { enableOcr, extractBytes, initWasm } from '@kreuzberg/wasm';\n *\n * async function main() {\n * // Initialize WASM module\n * await initWasm();\n *\n * // Enable OCR with tesseract-wasm\n * await enableOcr();\n *\n * // Now you can use OCR in extraction\n * const imageBytes = new Uint8Array(buffer);\n * const result = await extractBytes(imageBytes, 'image/png', {\n * ocr: { backend: 'tesseract-wasm', language: 'eng' }\n * });\n *\n * console.log(result.content); // Extracted text\n * }\n *\n * main().catch(console.error);\n * ```\n *\n * @example With Progress Tracking\n * ```typescript\n * import { enableOcr, TesseractWasmBackend } from '@kreuzberg/wasm';\n *\n * async function setupOcrWithProgress() {\n * const backend = new TesseractWasmBackend();\n * backend.setProgressCallback((progress) => {\n * console.log(`OCR Progress: ${progress}%`);\n * updateProgressBar(progress);\n * });\n *\n * await backend.initialize();\n * registerOcrBackend(backend);\n * }\n *\n * setupOcrWithProgress().catch(console.error);\n * ```\n *\n * @example Multiple Languages\n * ```typescript\n * import { enableOcr, extractBytes, initWasm } from '@kreuzberg/wasm';\n *\n * await initWasm();\n * await enableOcr();\n *\n * // Extract English text\n * const englishResult = await extractBytes(engImageBytes, 'image/png', {\n * ocr: { backend: 'tesseract-wasm', language: 'eng' }\n * });\n *\n * // Extract German text - model is cached after first use\n * const germanResult = await extractBytes(deImageBytes, 'image/png', {\n * ocr: { backend: 'tesseract-wasm', language: 'deu' }\n * });\n * ```\n */\nexport async function enableOcr(): Promise<void> {\n\t// Check if WASM module is initialized\n\tif (!initialized) {\n\t\tthrow new Error(\"WASM module not initialized. Call initWasm() first.\");\n\t}\n\n\t// Check if in browser environment\n\tif (!isBrowser()) {\n\t\tthrow new Error(\n\t\t\t\"OCR is only available in browser environments. TesseractWasmBackend requires Web Workers and createImageBitmap.\",\n\t\t);\n\t}\n\n\ttry {\n\t\t// Create and initialize backend\n\t\tconst backend = new TesseractWasmBackend();\n\t\tawait backend.initialize();\n\n\t\t// Register the backend\n\t\tregisterOcrBackend(backend);\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tthrow new Error(`Failed to enable OCR: ${message}`);\n\t}\n}\n","/**\n * WASM Type Adapter\n *\n * This module provides type adapters for converting between JavaScript/TypeScript\n * types and WASM-compatible types, handling File/Blob conversions, config normalization,\n * and result parsing.\n *\n * @example File Conversion\n * ```typescript\n * import { fileToUint8Array } from '@kreuzberg/wasm/adapters/wasm-adapter';\n *\n * const file = event.target.files[0];\n * const bytes = await fileToUint8Array(file);\n * const result = await extractBytes(bytes, file.type);\n * ```\n *\n * @example Config Normalization\n * ```typescript\n * import { configToJS } from '@kreuzberg/wasm/adapters/wasm-adapter';\n *\n * const config = {\n * ocr: { backend: 'tesseract', language: 'eng' },\n * chunking: { maxChars: 1000 }\n * };\n * const normalized = configToJS(config);\n * ```\n */\n\nimport type { Chunk, ExtractedImage, ExtractionConfig, ExtractionResult, Metadata, Table } from \"../types.js\";\n\n/**\n * Maximum file size for processing (512 MB)\n *\n * @internal\n */\nconst MAX_FILE_SIZE = 512 * 1024 * 1024;\n\n/**\n * Type predicate to validate numeric value or null\n *\n * @internal\n */\nfunction isNumberOrNull(value: unknown): value is number | null {\n\treturn typeof value === \"number\" || value === null;\n}\n\n/**\n * Type predicate to validate string value or null\n *\n * @internal\n */\nfunction isStringOrNull(value: unknown): value is string | null {\n\treturn typeof value === \"string\" || value === null;\n}\n\n/**\n * Type predicate to validate boolean value\n *\n * @internal\n */\nfunction isBoolean(value: unknown): value is boolean {\n\treturn typeof value === \"boolean\";\n}\n\n/**\n * Convert a File or Blob to Uint8Array\n *\n * Handles both browser File API and server-side Blob-like objects,\n * providing a unified interface for reading binary data.\n *\n * @param file - The File or Blob to convert\n * @returns Promise resolving to the byte array\n * @throws {Error} If the file cannot be read or exceeds size limit\n *\n * @example\n * ```typescript\n * const file = document.getElementById('input').files[0];\n * const bytes = await fileToUint8Array(file);\n * const result = await extractBytes(bytes, 'application/pdf');\n * ```\n */\nexport async function fileToUint8Array(file: File | Blob): Promise<Uint8Array> {\n\ttry {\n\t\tif (file.size > MAX_FILE_SIZE) {\n\t\t\tthrow new Error(\n\t\t\t\t`File size (${file.size} bytes) exceeds maximum (${MAX_FILE_SIZE} bytes). Maximum file size is 512 MB.`,\n\t\t\t);\n\t\t}\n\n\t\tconst arrayBuffer = await file.arrayBuffer();\n\t\treturn new Uint8Array(arrayBuffer);\n\t} catch (error) {\n\t\tthrow new Error(`Failed to read file: ${error instanceof Error ? error.message : String(error)}`);\n\t}\n}\n\n/**\n * Normalize ExtractionConfig for WASM processing\n *\n * Converts TypeScript configuration objects to a WASM-compatible format,\n * handling null values, undefined properties, and nested structures.\n *\n * @param config - The extraction configuration or null\n * @returns Normalized configuration object suitable for WASM\n *\n * @example\n * ```typescript\n * const config: ExtractionConfig = {\n * ocr: { backend: 'tesseract' },\n * chunking: { maxChars: 1000 }\n * };\n * const wasmConfig = configToJS(config);\n * ```\n */\nexport function configToJS(config: ExtractionConfig | null): Record<string, unknown> {\n\tif (!config) {\n\t\treturn {};\n\t}\n\n\tconst normalized: Record<string, unknown> = {};\n\n\t// Recursively normalize nested objects\n\tconst normalizeValue = (value: unknown): unknown => {\n\t\tif (value === null || value === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\tif (typeof value === \"object\") {\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\treturn value.map(normalizeValue);\n\t\t\t}\n\t\t\tconst obj = value as Record<string, unknown>;\n\t\t\tconst normalized: Record<string, unknown> = {};\n\t\t\tfor (const [key, val] of Object.entries(obj)) {\n\t\t\t\tconst normalizedVal = normalizeValue(val);\n\t\t\t\tif (normalizedVal !== null && normalizedVal !== undefined) {\n\t\t\t\t\tnormalized[key] = normalizedVal;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn Object.keys(normalized).length > 0 ? normalized : null;\n\t\t}\n\t\treturn value;\n\t};\n\n\tfor (const [key, value] of Object.entries(config)) {\n\t\tconst normalizedValue = normalizeValue(value);\n\t\tif (normalizedValue !== null && normalizedValue !== undefined) {\n\t\t\tnormalized[key] = normalizedValue;\n\t\t}\n\t}\n\n\treturn normalized;\n}\n\n/**\n * Parse WASM extraction result and convert to TypeScript type\n *\n * Handles conversion of WASM-returned objects to proper ExtractionResult types,\n * including proper array conversions and type assertions for tables, chunks, and images.\n *\n * @param jsValue - The raw WASM result value\n * @returns Properly typed ExtractionResult\n * @throws {Error} If the result structure is invalid\n *\n * @example\n * ```typescript\n * const wasmResult = await wasmExtract(bytes, mimeType, config);\n * const result = jsToExtractionResult(wasmResult);\n * console.log(result.content);\n * ```\n */\nexport function jsToExtractionResult(jsValue: unknown): ExtractionResult {\n\tif (!jsValue || typeof jsValue !== \"object\") {\n\t\tthrow new Error(\"Invalid extraction result: value is not an object\");\n\t}\n\n\tconst result = jsValue as Record<string, unknown>;\n\tconst mimeType =\n\t\ttypeof result.mimeType === \"string\"\n\t\t\t? result.mimeType\n\t\t\t: typeof result.mime_type === \"string\"\n\t\t\t\t? result.mime_type\n\t\t\t\t: null;\n\n\t// Validate required fields\n\tif (typeof result.content !== \"string\") {\n\t\tthrow new Error(\"Invalid extraction result: missing or invalid content\");\n\t}\n\tif (typeof mimeType !== \"string\") {\n\t\tthrow new Error(\"Invalid extraction result: missing or invalid mimeType\");\n\t}\n\tif (!result.metadata || typeof result.metadata !== \"object\") {\n\t\tthrow new Error(\"Invalid extraction result: missing or invalid metadata\");\n\t}\n\n\t// Parse tables\n\tconst tables: Table[] = [];\n\tif (Array.isArray(result.tables)) {\n\t\tfor (const table of result.tables) {\n\t\t\tif (table && typeof table === \"object\") {\n\t\t\t\tconst t = table as Record<string, unknown>;\n\t\t\t\t// Validate table structure before type casting\n\t\t\t\tif (\n\t\t\t\t\tArray.isArray(t.cells) &&\n\t\t\t\t\tt.cells.every((row) => Array.isArray(row) && row.every((cell) => typeof cell === \"string\")) &&\n\t\t\t\t\ttypeof t.markdown === \"string\" &&\n\t\t\t\t\ttypeof t.pageNumber === \"number\"\n\t\t\t\t) {\n\t\t\t\t\ttables.push({\n\t\t\t\t\t\tcells: t.cells as string[][],\n\t\t\t\t\t\tmarkdown: t.markdown,\n\t\t\t\t\t\tpageNumber: t.pageNumber,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Parse chunks\n\tconst chunks: Chunk[] | null = Array.isArray(result.chunks)\n\t\t? result.chunks.map((chunk) => {\n\t\t\t\tif (!chunk || typeof chunk !== \"object\") {\n\t\t\t\t\tthrow new Error(\"Invalid chunk structure\");\n\t\t\t\t}\n\t\t\t\tconst c = chunk as Record<string, unknown>;\n\t\t\t\tif (typeof c.content !== \"string\") {\n\t\t\t\t\tthrow new Error(\"Invalid chunk: missing content\");\n\t\t\t\t}\n\t\t\t\tif (!c.metadata || typeof c.metadata !== \"object\") {\n\t\t\t\t\tthrow new Error(\"Invalid chunk: missing metadata\");\n\t\t\t\t}\n\t\t\t\tconst metadata = c.metadata as Record<string, unknown>;\n\n\t\t\t\t// Validate embedding array contains only numbers\n\t\t\t\tlet embedding: number[] | null = null;\n\t\t\t\tif (Array.isArray(c.embedding)) {\n\t\t\t\t\tif (!c.embedding.every((item) => typeof item === \"number\")) {\n\t\t\t\t\t\tthrow new Error(\"Invalid chunk: embedding must contain only numbers\");\n\t\t\t\t\t}\n\t\t\t\t\tembedding = c.embedding;\n\t\t\t\t}\n\n\t\t\t\t// Validate metadata fields\n\t\t\t\tif (typeof metadata.charStart !== \"number\") {\n\t\t\t\t\tthrow new Error(\"Invalid chunk metadata: charStart must be a number\");\n\t\t\t\t}\n\t\t\t\tif (typeof metadata.charEnd !== \"number\") {\n\t\t\t\t\tthrow new Error(\"Invalid chunk metadata: charEnd must be a number\");\n\t\t\t\t}\n\t\t\t\tif (!isNumberOrNull(metadata.tokenCount)) {\n\t\t\t\t\tthrow new Error(\"Invalid chunk metadata: tokenCount must be a number or null\");\n\t\t\t\t}\n\t\t\t\tif (typeof metadata.chunkIndex !== \"number\") {\n\t\t\t\t\tthrow new Error(\"Invalid chunk metadata: chunkIndex must be a number\");\n\t\t\t\t}\n\t\t\t\tif (typeof metadata.totalChunks !== \"number\") {\n\t\t\t\t\tthrow new Error(\"Invalid chunk metadata: totalChunks must be a number\");\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tcontent: c.content,\n\t\t\t\t\tembedding,\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tcharStart: metadata.charStart,\n\t\t\t\t\t\tcharEnd: metadata.charEnd,\n\t\t\t\t\t\ttokenCount: metadata.tokenCount,\n\t\t\t\t\t\tchunkIndex: metadata.chunkIndex,\n\t\t\t\t\t\ttotalChunks: metadata.totalChunks,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t})\n\t\t: null;\n\n\t// Parse images\n\tconst images: ExtractedImage[] | null = Array.isArray(result.images)\n\t\t? result.images.map((image) => {\n\t\t\t\tif (!image || typeof image !== \"object\") {\n\t\t\t\t\tthrow new Error(\"Invalid image structure\");\n\t\t\t\t}\n\t\t\t\tconst img = image as Record<string, unknown>;\n\t\t\t\tif (!(img.data instanceof Uint8Array)) {\n\t\t\t\t\tthrow new Error(\"Invalid image: data must be Uint8Array\");\n\t\t\t\t}\n\t\t\t\tif (typeof img.format !== \"string\") {\n\t\t\t\t\tthrow new Error(\"Invalid image: missing format\");\n\t\t\t\t}\n\n\t\t\t\t// Validate numeric fields\n\t\t\t\tif (typeof img.imageIndex !== \"number\") {\n\t\t\t\t\tthrow new Error(\"Invalid image: imageIndex must be a number\");\n\t\t\t\t}\n\t\t\t\tif (!isNumberOrNull(img.pageNumber)) {\n\t\t\t\t\tthrow new Error(\"Invalid image: pageNumber must be a number or null\");\n\t\t\t\t}\n\t\t\t\tif (!isNumberOrNull(img.width)) {\n\t\t\t\t\tthrow new Error(\"Invalid image: width must be a number or null\");\n\t\t\t\t}\n\t\t\t\tif (!isNumberOrNull(img.height)) {\n\t\t\t\t\tthrow new Error(\"Invalid image: height must be a number or null\");\n\t\t\t\t}\n\t\t\t\tif (!isNumberOrNull(img.bitsPerComponent)) {\n\t\t\t\t\tthrow new Error(\"Invalid image: bitsPerComponent must be a number or null\");\n\t\t\t\t}\n\n\t\t\t\t// Validate boolean field\n\t\t\t\tif (!isBoolean(img.isMask)) {\n\t\t\t\t\tthrow new Error(\"Invalid image: isMask must be a boolean\");\n\t\t\t\t}\n\n\t\t\t\t// Validate string fields\n\t\t\t\tif (!isStringOrNull(img.colorspace)) {\n\t\t\t\t\tthrow new Error(\"Invalid image: colorspace must be a string or null\");\n\t\t\t\t}\n\t\t\t\tif (!isStringOrNull(img.description)) {\n\t\t\t\t\tthrow new Error(\"Invalid image: description must be a string or null\");\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tdata: img.data,\n\t\t\t\t\tformat: img.format,\n\t\t\t\t\timageIndex: img.imageIndex,\n\t\t\t\t\tpageNumber: img.pageNumber,\n\t\t\t\t\twidth: img.width,\n\t\t\t\t\theight: img.height,\n\t\t\t\t\tcolorspace: img.colorspace,\n\t\t\t\t\tbitsPerComponent: img.bitsPerComponent,\n\t\t\t\t\tisMask: img.isMask,\n\t\t\t\t\tdescription: img.description,\n\t\t\t\t\tocrResult: img.ocrResult ? jsToExtractionResult(img.ocrResult) : null,\n\t\t\t\t};\n\t\t\t})\n\t\t: null;\n\n\t// Validate detectedLanguages array\n\tlet detectedLanguages: string[] | null = null;\n\tconst detectedLanguagesRaw = Array.isArray(result.detectedLanguages)\n\t\t? result.detectedLanguages\n\t\t: result.detected_languages;\n\tif (Array.isArray(detectedLanguagesRaw)) {\n\t\tif (!detectedLanguagesRaw.every((lang) => typeof lang === \"string\")) {\n\t\t\tthrow new Error(\"Invalid result: detectedLanguages must contain only strings\");\n\t\t}\n\t\tdetectedLanguages = detectedLanguagesRaw;\n\t}\n\n\treturn {\n\t\tcontent: result.content,\n\t\tmimeType,\n\t\tmetadata: (result.metadata ?? {}) as Metadata,\n\t\ttables,\n\t\tdetectedLanguages,\n\t\tchunks,\n\t\timages,\n\t};\n}\n\n/**\n * Wrap and format WASM errors with context\n *\n * Converts WASM error messages to JavaScript Error objects with proper context\n * and stack trace information when available.\n *\n * @param error - The error from WASM\n * @param context - Additional context about what operation failed\n * @returns A formatted Error object\n *\n * @internal\n *\n * @example\n * ```typescript\n * try {\n * await wasmExtract(bytes, mimeType);\n * } catch (error) {\n * throw wrapWasmError(error, 'extracting document');\n * }\n * ```\n */\nexport function wrapWasmError(error: unknown, context: string): Error {\n\tif (error instanceof Error) {\n\t\treturn new Error(`Error ${context}: ${error.message}`, {\n\t\t\tcause: error,\n\t\t});\n\t}\n\n\tconst message = String(error);\n\treturn new Error(`Error ${context}: ${message}`);\n}\n\n/**\n * Validate that a WASM-returned value conforms to ExtractionResult structure\n *\n * Performs structural validation without full type checking,\n * useful for runtime validation of WASM output.\n *\n * @param value - The value to validate\n * @returns True if value appears to be a valid ExtractionResult\n *\n * @internal\n */\nexport function isValidExtractionResult(value: unknown): value is ExtractionResult {\n\tif (!value || typeof value !== \"object\") {\n\t\treturn false;\n\t}\n\n\tconst obj = value as Record<string, unknown>;\n\treturn (\n\t\ttypeof obj.content === \"string\" &&\n\t\t(typeof obj.mimeType === \"string\" || typeof obj.mime_type === \"string\") &&\n\t\tobj.metadata !== null &&\n\t\ttypeof obj.metadata === \"object\" &&\n\t\tArray.isArray(obj.tables)\n\t);\n}\n","/**\n * OCR Backend Registry\n *\n * Provides a registry for OCR backends in the WASM environment.\n * This enables auto-registration and management of OCR backends.\n *\n * Note: The WASM package provides a lightweight registry in the browser.\n * For more advanced features like Rust integration, use @kreuzberg/node or @kreuzberg/deno.\n *\n * @example\n * ```typescript\n * import { TesseractWasmBackend } from '@kreuzberg/wasm/ocr/tesseract-wasm-backend';\n * import { enableOcr } from '@kreuzberg/wasm';\n *\n * // Simple auto-registration\n * await enableOcr();\n * ```\n */\n\nimport type { OcrBackendProtocol } from \"../types.js\";\n\n/** Global registry of OCR backends */\nconst ocrBackendRegistry = new Map<string, OcrBackendProtocol>();\n\n/**\n * Register an OCR backend\n *\n * Registers an OCR backend with the WASM extraction pipeline.\n * If a backend with the same name is already registered, it will be replaced.\n *\n * @param backend - OCR backend implementing OcrBackendProtocol\n * @throws {Error} If backend validation fails\n *\n * @example\n * ```typescript\n * import { TesseractWasmBackend } from '@kreuzberg/wasm/ocr/tesseract-wasm-backend';\n * import { registerOcrBackend } from '@kreuzberg/wasm/ocr/registry';\n *\n * const backend = new TesseractWasmBackend();\n * await backend.initialize();\n * registerOcrBackend(backend);\n * ```\n */\nexport function registerOcrBackend(backend: OcrBackendProtocol): void {\n\t// Validate backend\n\tif (!backend) {\n\t\tthrow new Error(\"Backend cannot be null or undefined\");\n\t}\n\n\tif (typeof backend.name !== \"function\") {\n\t\tthrow new Error(\"Backend must implement name() method\");\n\t}\n\n\tif (typeof backend.supportedLanguages !== \"function\") {\n\t\tthrow new Error(\"Backend must implement supportedLanguages() method\");\n\t}\n\n\tif (typeof backend.processImage !== \"function\") {\n\t\tthrow new Error(\"Backend must implement processImage() method\");\n\t}\n\n\tconst backendName = backend.name();\n\n\tif (!backendName || typeof backendName !== \"string\") {\n\t\tthrow new Error(\"Backend name must be a non-empty string\");\n\t}\n\n\t// Check for duplicate registration (allow overwriting with warning)\n\tif (ocrBackendRegistry.has(backendName)) {\n\t\tconsole.warn(`OCR backend \"${backendName}\" is already registered and will be replaced`);\n\t}\n\n\t// Register the backend\n\tocrBackendRegistry.set(backendName, backend);\n}\n\n/**\n * Get a registered OCR backend by name\n *\n * @param name - Backend name\n * @returns The OCR backend or undefined if not found\n *\n * @example\n * ```typescript\n * import { getOcrBackend } from '@kreuzberg/wasm/ocr/registry';\n *\n * const backend = getOcrBackend('tesseract-wasm');\n * if (backend) {\n * console.log('Available languages:', backend.supportedLanguages());\n * }\n * ```\n */\nexport function getOcrBackend(name: string): OcrBackendProtocol | undefined {\n\treturn ocrBackendRegistry.get(name);\n}\n\n/**\n * List all registered OCR backends\n *\n * @returns Array of registered backend names\n *\n * @example\n * ```typescript\n * import { listOcrBackends } from '@kreuzberg/wasm/ocr/registry';\n *\n * const backends = listOcrBackends();\n * console.log('Available OCR backends:', backends);\n * ```\n */\nexport function listOcrBackends(): string[] {\n\treturn Array.from(ocrBackendRegistry.keys());\n}\n\n/**\n * Unregister an OCR backend\n *\n * @param name - Backend name to unregister\n * @throws {Error} If backend is not found\n *\n * @example\n * ```typescript\n * import { unregisterOcrBackend } from '@kreuzberg/wasm/ocr/registry';\n *\n * unregisterOcrBackend('tesseract-wasm');\n * ```\n */\nexport async function unregisterOcrBackend(name: string): Promise<void> {\n\tconst backend = ocrBackendRegistry.get(name);\n\n\tif (!backend) {\n\t\tthrow new Error(\n\t\t\t`OCR backend \"${name}\" is not registered. Available backends: ${Array.from(ocrBackendRegistry.keys()).join(\", \")}`,\n\t\t);\n\t}\n\n\t// Call shutdown if available\n\tif (typeof backend.shutdown === \"function\") {\n\t\ttry {\n\t\t\tawait backend.shutdown();\n\t\t} catch (error) {\n\t\t\tconsole.warn(\n\t\t\t\t`Error shutting down OCR backend \"${name}\": ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t);\n\t\t}\n\t}\n\n\tocrBackendRegistry.delete(name);\n}\n\n/**\n * Clear all registered OCR backends\n *\n * Unregisters all OCR backends and calls their shutdown methods.\n *\n * @example\n * ```typescript\n * import { clearOcrBackends } from '@kreuzberg/wasm/ocr/registry';\n *\n * // Clean up all backends when shutting down\n * await clearOcrBackends();\n * ```\n */\nexport async function clearOcrBackends(): Promise<void> {\n\tconst backends = Array.from(ocrBackendRegistry.entries());\n\n\tfor (const [name, backend] of backends) {\n\t\tif (typeof backend.shutdown === \"function\") {\n\t\t\ttry {\n\t\t\t\tawait backend.shutdown();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`Error shutting down OCR backend \"${name}\": ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tocrBackendRegistry.clear();\n}\n","/**\n * Tesseract WASM OCR Backend\n *\n * Provides OCR capabilities using tesseract-wasm library for browser environments.\n * Loads training data on-demand from jsDelivr CDN and implements the OcrBackendProtocol.\n *\n * ## Browser-Only Requirement\n *\n * This backend requires browser APIs like createImageBitmap and Web Workers.\n * It will NOT work in Node.js environments without additional canvas polyfills.\n *\n * ## Supported Languages\n *\n * Common ISO 639-1 and ISO 639-2 codes:\n * - English: \"eng\"\n * - German: \"deu\"\n * - French: \"fra\"\n * - Spanish: \"spa\"\n * - Italian: \"ita\"\n * - Portuguese: \"por\"\n * - Dutch: \"nld\"\n * - Russian: \"rus\"\n * - Chinese (Simplified): \"chi_sim\"\n * - Chinese (Traditional): \"chi_tra\"\n * - Japanese: \"jpn\"\n * - Korean: \"kor\"\n * - Arabic: \"ara\"\n * - Hindi: \"hin\"\n *\n * For complete language list, see: https://github.com/naptha/tesseract.js\n *\n * @example Basic Usage\n * ```typescript\n * import { TesseractWasmBackend } from '@kreuzberg/wasm/ocr/tesseract-wasm-backend';\n * import { registerOcrBackend, extractBytes, initWasm } from '@kreuzberg/wasm';\n *\n * // Initialize\n * await initWasm();\n * const backend = new TesseractWasmBackend();\n * await backend.initialize();\n * registerOcrBackend(backend);\n *\n * // Use in extraction\n * const imageBytes = new Uint8Array(buffer);\n * const result = await extractBytes(imageBytes, 'image/png', {\n * ocr: { backend: 'tesseract-wasm', language: 'eng' }\n * });\n * console.log(result.content); // Extracted text\n * ```\n *\n * @example With Language Auto-Detection\n * ```typescript\n * const backend = new TesseractWasmBackend();\n * await backend.initialize();\n * registerOcrBackend(backend);\n *\n * // Extract without specifying language - backend will auto-detect\n * const result = await extractBytes(imageBytes, 'image/png', {\n * ocr: { backend: 'tesseract-wasm' } // language will auto-detect\n * });\n * ```\n */\n\nimport type { OcrBackendProtocol } from \"../types.js\";\n\n/**\n * Tesseract WASM Client interface\n * Type definition for tesseract-wasm's OCRClient class\n */\ninterface TesseractClient {\n\tloadModel(modelPath: string): Promise<void>;\n\tloadImage(image: ImageBitmap | Blob): Promise<void>;\n\tgetText(): Promise<string>;\n\tgetConfidence(): Promise<number>;\n\tgetPageMetadata(): Promise<Record<string, unknown>>;\n\tdestroy(): void;\n\tterminate(): void;\n}\n\n/**\n * TesseractWasmBackend - OCR backend using tesseract-wasm library\n *\n * Implements the OcrBackendProtocol for Kreuzberg document extraction pipeline.\n * Provides comprehensive OCR support with model caching, error handling, and progress reporting.\n */\nexport class TesseractWasmBackend implements OcrBackendProtocol {\n\t/** Tesseract WASM client instance */\n\tprivate client: TesseractClient | null = null;\n\n\t/** Track which models are currently loaded to avoid redundant loads */\n\tprivate loadedLanguages: Set<string> = new Set();\n\n\t/** Cache for language availability validation */\n\tprivate supportedLangsCache: string[] | null = null;\n\n\t/** Progress callback for UI updates */\n\tprivate progressCallback: ((progress: number) => void) | null = null;\n\n\t/** Base URL for training data CDN */\n\tprivate readonly CDN_BASE_URL = \"https://cdn.jsdelivr.net/npm/tesseract-wasm@0.11.0/dist\";\n\n\t/**\n\t * Return the unique name of this OCR backend\n\t *\n\t * @returns Backend identifier \"tesseract-wasm\"\n\t */\n\tname(): string {\n\t\treturn \"tesseract-wasm\";\n\t}\n\n\t/**\n\t * Return list of supported language codes\n\t *\n\t * Returns a curated list of commonly available Tesseract language models.\n\t * Tesseract supports many more languages through custom models.\n\t *\n\t * @returns Array of ISO 639-1/2/3 language codes\n\t */\n\tsupportedLanguages(): string[] {\n\t\t// Return cached list if already computed\n\t\tif (this.supportedLangsCache) {\n\t\t\treturn this.supportedLangsCache;\n\t\t}\n\n\t\t// Comprehensive list of languages supported by tesseract-wasm\n\t\t// Includes both 3-letter (ISO 639-2) and 2-letter (ISO 639-1) codes where applicable\n\t\tthis.supportedLangsCache = [\n\t\t\t// Major languages\n\t\t\t\"eng\", // English\n\t\t\t\"deu\", // German\n\t\t\t\"fra\", // French\n\t\t\t\"spa\", // Spanish\n\t\t\t\"ita\", // Italian\n\t\t\t\"por\", // Portuguese\n\t\t\t\"nld\", // Dutch\n\t\t\t\"rus\", // Russian\n\t\t\t\"jpn\", // Japanese\n\t\t\t\"kor\", // Korean\n\t\t\t\"chi_sim\", // Chinese (Simplified)\n\t\t\t\"chi_tra\", // Chinese (Traditional)\n\n\t\t\t// Additional European languages\n\t\t\t\"pol\", // Polish\n\t\t\t\"tur\", // Turkish\n\t\t\t\"swe\", // Swedish\n\t\t\t\"dan\", // Danish\n\t\t\t\"fin\", // Finnish\n\t\t\t\"nor\", // Norwegian\n\t\t\t\"ces\", // Czech\n\t\t\t\"slk\", // Slovak\n\t\t\t\"ron\", // Romanian\n\t\t\t\"hun\", // Hungarian\n\t\t\t\"hrv\", // Croatian\n\t\t\t\"srp\", // Serbian\n\t\t\t\"bul\", // Bulgarian\n\t\t\t\"ukr\", // Ukrainian\n\t\t\t\"ell\", // Greek\n\n\t\t\t// Asian languages\n\t\t\t\"ara\", // Arabic\n\t\t\t\"heb\", // Hebrew\n\t\t\t\"hin\", // Hindi\n\t\t\t\"tha\", // Thai\n\t\t\t\"vie\", // Vietnamese\n\t\t\t\"mkd\", // Macedonian\n\t\t\t\"ben\", // Bengali\n\t\t\t\"tam\", // Tamil\n\t\t\t\"tel\", // Telugu\n\t\t\t\"kan\", // Kannada\n\t\t\t\"mal\", // Malayalam\n\t\t\t\"mya\", // Burmese\n\t\t\t\"khm\", // Khmer\n\t\t\t\"lao\", // Lao\n\t\t\t\"sin\", // Sinhala\n\t\t];\n\n\t\treturn this.supportedLangsCache;\n\t}\n\n\t/**\n\t * Initialize the OCR backend\n\t *\n\t * Creates the Tesseract WASM client instance. This is called once when\n\t * the backend is registered with the extraction pipeline.\n\t *\n\t * The actual model loading happens in processImage() on-demand to avoid\n\t * loading all models upfront.\n\t *\n\t * @throws {Error} If tesseract-wasm is not available or initialization fails\n\t *\n\t * @example\n\t * ```typescript\n\t * const backend = new TesseractWasmBackend();\n\t * try {\n\t * await backend.initialize();\n\t * } catch (error) {\n\t * console.error('Failed to initialize OCR:', error);\n\t * }\n\t * ```\n\t */\n\tasync initialize(): Promise<void> {\n\t\tif (this.client) {\n\t\t\treturn; // Already initialized\n\t\t}\n\n\t\ttry {\n\t\t\t// Dynamically import tesseract-wasm\n\t\t\tconst tesseractModule = await this.loadTesseractWasm();\n\n\t\t\t// @ts-expect-error - tesseract-wasm types are not fully typed\n\t\t\tif (!tesseractModule || typeof tesseractModule.OCRClient !== \"function\") {\n\t\t\t\tthrow new Error(\"tesseract-wasm OCRClient not found. Ensure tesseract-wasm is installed and available.\");\n\t\t\t}\n\n\t\t\t// Create client instance\n\t\t\t// @ts-expect-error - tesseract-wasm types are not fully typed\n\t\t\tthis.client = new tesseractModule.OCRClient();\n\n\t\t\t// Initialize tracking\n\t\t\tthis.loadedLanguages.clear();\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tthrow new Error(`Failed to initialize TesseractWasmBackend: ${message}`);\n\t\t}\n\t}\n\n\t/**\n\t * Process image bytes and extract text via OCR\n\t *\n\t * Handles image loading, model loading, OCR processing, and result formatting.\n\t * Automatically loads the language model on first use and caches it for subsequent calls.\n\t *\n\t * @param imageBytes - Raw image data (Uint8Array) or Base64-encoded string\n\t * @param language - ISO 639-2/3 language code (e.g., \"eng\", \"deu\")\n\t * @returns Promise resolving to OCR result with content and metadata\n\t * @throws {Error} If image processing fails, model loading fails, or language is unsupported\n\t *\n\t * @example\n\t * ```typescript\n\t * const backend = new TesseractWasmBackend();\n\t * await backend.initialize();\n\t *\n\t * const imageBuffer = fs.readFileSync('scanned.png');\n\t * const result = await backend.processImage(\n\t * new Uint8Array(imageBuffer),\n\t * 'eng'\n\t * );\n\t *\n\t * console.log(result.content); // Extracted text\n\t * console.log(result.metadata.confidence); // OCR confidence score\n\t * ```\n\t */\n\tasync processImage(\n\t\timageBytes: Uint8Array | string,\n\t\tlanguage: string,\n\t): Promise<{\n\t\tcontent: string;\n\t\tmime_type: string;\n\t\tmetadata: Record<string, unknown>;\n\t\ttables: unknown[];\n\t}> {\n\t\tif (!this.client) {\n\t\t\tthrow new Error(\"TesseractWasmBackend not initialized. Call initialize() first.\");\n\t\t}\n\n\t\t// Validate language support\n\t\tconst supported = this.supportedLanguages();\n\t\t// Normalize language code for comparison\n\t\tconst normalizedLang = language.toLowerCase();\n\t\tconst isSupported = supported.some((lang) => lang.toLowerCase() === normalizedLang);\n\n\t\tif (!isSupported) {\n\t\t\tthrow new Error(`Language \"${language}\" is not supported. Supported languages: ${supported.join(\", \")}`);\n\t\t}\n\n\t\ttry {\n\t\t\t// Load language model if not already loaded\n\t\t\tif (!this.loadedLanguages.has(normalizedLang)) {\n\t\t\t\tthis.reportProgress(10); // Progress: loading model\n\t\t\t\tawait this.loadLanguageModel(normalizedLang);\n\t\t\t\tthis.loadedLanguages.add(normalizedLang);\n\t\t\t\tthis.reportProgress(30); // Progress: model loaded\n\t\t\t}\n\n\t\t\t// Convert image bytes to ImageBitmap\n\t\t\tthis.reportProgress(40); // Progress: processing image\n\t\t\tconst imageBitmap = await this.convertToImageBitmap(imageBytes);\n\n\t\t\t// Load image into Tesseract\n\t\t\tthis.reportProgress(50); // Progress: loading image\n\t\t\tawait this.client.loadImage(imageBitmap);\n\n\t\t\t// Perform OCR\n\t\t\tthis.reportProgress(70); // Progress: performing OCR\n\t\t\tconst text = await this.client.getText();\n\n\t\t\t// Get confidence and metadata\n\t\t\tconst confidence = await this.getConfidenceScore();\n\t\t\tconst pageMetadata = await this.getPageMetadata();\n\n\t\t\tthis.reportProgress(90); // Progress: nearly complete\n\n\t\t\t// Return result in Kreuzberg format\n\t\t\treturn {\n\t\t\t\tcontent: text,\n\t\t\t\tmime_type: \"text/plain\",\n\t\t\t\tmetadata: {\n\t\t\t\t\tlanguage: normalizedLang,\n\t\t\t\t\tconfidence,\n\t\t\t\t\t...pageMetadata,\n\t\t\t\t},\n\t\t\t\ttables: [], // Tesseract-wasm doesn't provide structured table detection\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tthrow new Error(`OCR processing failed for language \"${language}\": ${message}`);\n\t\t} finally {\n\t\t\tthis.reportProgress(100); // Progress: complete\n\t\t}\n\t}\n\n\t/**\n\t * Shutdown the OCR backend and release resources\n\t *\n\t * Properly cleans up the Tesseract WASM client, freeing memory and Web Workers.\n\t * Called when the backend is unregistered or the application shuts down.\n\t *\n\t * @throws {Error} If cleanup fails (errors are logged but not critical)\n\t *\n\t * @example\n\t * ```typescript\n\t * const backend = new TesseractWasmBackend();\n\t * await backend.initialize();\n\t * // ... use backend ...\n\t * await backend.shutdown(); // Clean up resources\n\t * ```\n\t */\n\tasync shutdown(): Promise<void> {\n\t\ttry {\n\t\t\tif (this.client) {\n\t\t\t\t// Try both destroy and terminate for compatibility\n\t\t\t\tif (typeof this.client.destroy === \"function\") {\n\t\t\t\t\tthis.client.destroy();\n\t\t\t\t}\n\t\t\t\tif (typeof this.client.terminate === \"function\") {\n\t\t\t\t\tthis.client.terminate();\n\t\t\t\t}\n\t\t\t\tthis.client = null;\n\t\t\t}\n\n\t\t\t// Clear cached state\n\t\t\tthis.loadedLanguages.clear();\n\t\t\tthis.supportedLangsCache = null;\n\t\t\tthis.progressCallback = null;\n\t\t} catch (error) {\n\t\t\t// Log error but don't throw - shutdown is best-effort\n\t\t\tconsole.warn(\n\t\t\t\t`Warning during TesseractWasmBackend shutdown: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Set a progress callback for UI updates\n\t *\n\t * Allows the UI to display progress during OCR processing.\n\t * The callback will be called with values from 0 to 100.\n\t *\n\t * @param callback - Function to call with progress percentage\n\t *\n\t * @example\n\t * ```typescript\n\t * const backend = new TesseractWasmBackend();\n\t * backend.setProgressCallback((progress) => {\n\t * console.log(`OCR Progress: ${progress}%`);\n\t * document.getElementById('progress-bar').style.width = `${progress}%`;\n\t * });\n\t * ```\n\t */\n\tsetProgressCallback(callback: (progress: number) => void): void {\n\t\tthis.progressCallback = callback;\n\t}\n\n\t/**\n\t * Load language model from CDN\n\t *\n\t * Fetches the training data for a specific language from jsDelivr CDN.\n\t * This is an MVP approach - models are cached by the browser.\n\t *\n\t * @param language - ISO 639-2/3 language code\n\t * @throws {Error} If model download fails or language is not available\n\t *\n\t * @internal\n\t */\n\tprivate async loadLanguageModel(language: string): Promise<void> {\n\t\tif (!this.client) {\n\t\t\tthrow new Error(\"Client not initialized\");\n\t\t}\n\n\t\t// Construct model URL - models are named with their language code\n\t\tconst modelFilename = `${language}.traineddata`;\n\t\tconst modelUrl = `${this.CDN_BASE_URL}/${modelFilename}`;\n\n\t\ttry {\n\t\t\tawait this.client.loadModel(modelUrl);\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tthrow new Error(`Failed to load model for language \"${language}\" from ${modelUrl}: ${message}`);\n\t\t}\n\t}\n\n\t/**\n\t * Convert image bytes or Base64 string to ImageBitmap\n\t *\n\t * Handles both Uint8Array and Base64-encoded image data, converting to\n\t * ImageBitmap format required by Tesseract WASM.\n\t *\n\t * @param imageBytes - Image data as Uint8Array or Base64 string\n\t * @returns Promise resolving to ImageBitmap\n\t * @throws {Error} If conversion fails (browser API not available or invalid image data)\n\t *\n\t * @internal\n\t */\n\tprivate async convertToImageBitmap(imageBytes: Uint8Array | string): Promise<ImageBitmap> {\n\t\t// Check if createImageBitmap is available (browser only)\n\t\tif (typeof createImageBitmap === \"undefined\") {\n\t\t\tthrow new Error(\"createImageBitmap is not available. TesseractWasmBackend requires a browser environment.\");\n\t\t}\n\n\t\ttry {\n\t\t\t// Convert to Uint8Array if string (Base64)\n\t\t\tlet bytes = imageBytes;\n\t\t\tif (typeof imageBytes === \"string\") {\n\t\t\t\t// Decode Base64 to binary\n\t\t\t\tconst binaryString = atob(imageBytes);\n\t\t\t\tbytes = new Uint8Array(binaryString.length);\n\t\t\t\tfor (let i = 0; i < binaryString.length; i++) {\n\t\t\t\t\t(bytes as Uint8Array)[i] = binaryString.charCodeAt(i);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Create Blob from bytes\n\t\t\tconst blob = new Blob([bytes as Uint8Array] as BlobPart[]);\n\n\t\t\t// Convert Blob to ImageBitmap\n\t\t\tconst imageBitmap = await createImageBitmap(blob);\n\t\t\treturn imageBitmap;\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tthrow new Error(`Failed to convert image bytes to ImageBitmap: ${message}`);\n\t\t}\n\t}\n\n\t/**\n\t * Get confidence score from OCR result\n\t *\n\t * Attempts to retrieve confidence score from Tesseract.\n\t * Returns a safe default if unavailable.\n\t *\n\t * @returns Confidence score between 0 and 1\n\t *\n\t * @internal\n\t */\n\tprivate async getConfidenceScore(): Promise<number> {\n\t\ttry {\n\t\t\tif (this.client && typeof this.client.getConfidence === \"function\") {\n\t\t\t\tconst confidence = await this.client.getConfidence();\n\t\t\t\t// Normalize to 0-1 range if needed (some versions return 0-100)\n\t\t\t\treturn confidence > 1 ? confidence / 100 : confidence;\n\t\t\t}\n\t\t} catch {\n\t\t\t// Silently fail - confidence is optional\n\t\t}\n\t\treturn 0.9; // Default reasonable confidence\n\t}\n\n\t/**\n\t * Get page metadata from OCR result\n\t *\n\t * Retrieves additional metadata like image dimensions and processing info.\n\t *\n\t * @returns Metadata object (may be empty if unavailable)\n\t *\n\t * @internal\n\t */\n\tprivate async getPageMetadata(): Promise<Record<string, unknown>> {\n\t\ttry {\n\t\t\tif (this.client && typeof this.client.getPageMetadata === \"function\") {\n\t\t\t\treturn await this.client.getPageMetadata();\n\t\t\t}\n\t\t} catch {\n\t\t\t// Silently fail - metadata is optional\n\t\t}\n\t\treturn {};\n\t}\n\n\t/**\n\t * Dynamically load tesseract-wasm module\n\t *\n\t * Uses dynamic import to load tesseract-wasm only when needed,\n\t * avoiding hard dependency in browser environments where it may not be bundled.\n\t *\n\t * @returns tesseract-wasm module object\n\t * @throws {Error} If module cannot be imported\n\t *\n\t * @internal\n\t */\n\tprivate async loadTesseractWasm(): Promise<unknown> {\n\t\ttry {\n\t\t\t// Use dynamic import to handle both ESM and CJS\n\t\t\t// @ts-expect-error - tesseract-wasm has package.json exports issues with TypeScript\n\t\t\tconst module = await import(\"tesseract-wasm\");\n\t\t\treturn module;\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to import tesseract-wasm. Ensure it is installed via: npm install tesseract-wasm. Error: ${message}`,\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Report progress to progress callback\n\t *\n\t * Internal helper for notifying progress updates during OCR processing.\n\t *\n\t * @param progress - Progress percentage (0-100)\n\t *\n\t * @internal\n\t */\n\tprivate reportProgress(progress: number): void {\n\t\tif (this.progressCallback) {\n\t\t\ttry {\n\t\t\t\tthis.progressCallback(Math.min(100, Math.max(0, progress)));\n\t\t\t} catch {\n\t\t\t\t// Ignore callback errors to prevent blocking OCR processing\n\t\t\t}\n\t\t}\n\t}\n}\n","/**\n * Runtime detection and environment-specific utilities\n *\n * This module provides utilities for detecting the JavaScript runtime environment,\n * checking for feature availability, and enabling environment-specific WASM loading strategies.\n *\n * @example Basic Runtime Detection\n * ```typescript\n * import { detectRuntime, isBrowser, isNode } from '@kreuzberg/wasm/runtime';\n *\n * if (isBrowser()) {\n * console.log('Running in browser');\n * } else if (isNode()) {\n * console.log('Running in Node.js');\n * }\n * ```\n *\n * @example Feature Detection\n * ```typescript\n * import { hasFileApi, hasWorkers } from '@kreuzberg/wasm/runtime';\n *\n * if (hasFileApi()) {\n * // Can use File API for browser file uploads\n * }\n *\n * if (hasWorkers()) {\n * // Can use Web Workers for parallel processing\n * }\n * ```\n */\n\nexport type RuntimeType = \"browser\" | \"node\" | \"deno\" | \"bun\" | \"unknown\";\n\n/**\n * WebAssembly capabilities available in the runtime\n */\nexport interface WasmCapabilities {\n\t/** Runtime environment type */\n\truntime: RuntimeType;\n\t/** WebAssembly support available */\n\thasWasm: boolean;\n\t/** Streaming WebAssembly instantiation available */\n\thasWasmStreaming: boolean;\n\t/** File API available (browser) */\n\thasFileApi: boolean;\n\t/** Blob API available */\n\thasBlob: boolean;\n\t/** Worker support available */\n\thasWorkers: boolean;\n\t/** SharedArrayBuffer available (may be restricted) */\n\thasSharedArrayBuffer: boolean;\n\t/** Module Workers available */\n\thasModuleWorkers: boolean;\n\t/** BigInt support */\n\thasBigInt: boolean;\n\t/** Specific runtime version if available */\n\truntimeVersion?: string;\n}\n\n/**\n * Detect the current JavaScript runtime\n *\n * Checks for various global objects and properties to determine\n * which JavaScript runtime environment is currently executing.\n *\n * @returns The detected runtime type\n *\n * @example\n * ```typescript\n * import { detectRuntime } from '@kreuzberg/wasm/runtime';\n *\n * const runtime = detectRuntime();\n * switch (runtime) {\n * case 'browser':\n * console.log('Running in browser');\n * break;\n * case 'node':\n * console.log('Running in Node.js');\n * break;\n * case 'deno':\n * console.log('Running in Deno');\n * break;\n * case 'bun':\n * console.log('Running in Bun');\n * break;\n * }\n * ```\n */\nexport function detectRuntime(): RuntimeType {\n\t// Check for Deno\n\tif (typeof (globalThis as unknown as Record<string, unknown>).Deno !== \"undefined\") {\n\t\treturn \"deno\";\n\t}\n\n\t// Check for Bun\n\tif (typeof (globalThis as unknown as Record<string, unknown>).Bun !== \"undefined\") {\n\t\treturn \"bun\";\n\t}\n\n\t// Check for Node.js\n\tif (typeof process !== \"undefined\" && process.versions && process.versions.node) {\n\t\treturn \"node\";\n\t}\n\n\t// Check for browser\n\tif (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\n\t\treturn \"browser\";\n\t}\n\n\treturn \"unknown\";\n}\n\n/**\n * Check if running in a browser environment\n *\n * @returns True if running in a browser, false otherwise\n */\nexport function isBrowser(): boolean {\n\treturn detectRuntime() === \"browser\";\n}\n\n/**\n * Check if running in Node.js\n *\n * @returns True if running in Node.js, false otherwise\n */\nexport function isNode(): boolean {\n\treturn detectRuntime() === \"node\";\n}\n\n/**\n * Check if running in Deno\n *\n * @returns True if running in Deno, false otherwise\n */\nexport function isDeno(): boolean {\n\treturn detectRuntime() === \"deno\";\n}\n\n/**\n * Check if running in Bun\n *\n * @returns True if running in Bun, false otherwise\n */\nexport function isBun(): boolean {\n\treturn detectRuntime() === \"bun\";\n}\n\n/**\n * Check if running in a web environment (browser or similar)\n *\n * @returns True if running in a web browser, false otherwise\n */\nexport function isWebEnvironment(): boolean {\n\tconst runtime = detectRuntime();\n\treturn runtime === \"browser\";\n}\n\n/**\n * Check if running in a server-like environment (Node.js, Deno, Bun)\n *\n * @returns True if running on a server runtime, false otherwise\n */\nexport function isServerEnvironment(): boolean {\n\tconst runtime = detectRuntime();\n\treturn runtime === \"node\" || runtime === \"deno\" || runtime === \"bun\";\n}\n\n/**\n * Check if File API is available\n *\n * The File API is required for handling browser file uploads.\n *\n * @returns True if File API is available, false otherwise\n *\n * @example\n * ```typescript\n * if (hasFileApi()) {\n * const fileInput = document.getElementById('file');\n * fileInput.addEventListener('change', (e) => {\n * const file = e.target.files?.[0];\n * // Handle file\n * });\n * }\n * ```\n */\nexport function hasFileApi(): boolean {\n\treturn typeof window !== \"undefined\" && typeof File !== \"undefined\" && typeof Blob !== \"undefined\";\n}\n\n/**\n * Check if Blob API is available\n *\n * @returns True if Blob API is available, false otherwise\n */\nexport function hasBlob(): boolean {\n\treturn typeof Blob !== \"undefined\";\n}\n\n/**\n * Check if Web Workers are available\n *\n * @returns True if Web Workers can be created, false otherwise\n */\nexport function hasWorkers(): boolean {\n\treturn typeof Worker !== \"undefined\";\n}\n\n/**\n * Check if SharedArrayBuffer is available\n *\n * Note: SharedArrayBuffer is restricted in some browser contexts\n * due to security considerations (Spectre/Meltdown mitigations).\n *\n * @returns True if SharedArrayBuffer is available, false otherwise\n */\nexport function hasSharedArrayBuffer(): boolean {\n\treturn typeof SharedArrayBuffer !== \"undefined\";\n}\n\n/**\n * Check if module workers are available\n *\n * Module workers allow importing ES modules in worker threads.\n *\n * @returns True if module workers are supported, false otherwise\n */\nexport function hasModuleWorkers(): boolean {\n\tif (!hasWorkers()) {\n\t\treturn false;\n\t}\n\n\ttry {\n\t\t// Try to detect module worker support\n\t\tconst blob = new Blob(['console.log(\"test\")'], {\n\t\t\ttype: \"application/javascript\",\n\t\t});\n\t\tconst workerUrl = URL.createObjectURL(blob);\n\t\ttry {\n\t\t\t// Module workers require type: 'module' option\n\t\t\t// We can't actually instantiate without issues, so we check the API exists\n\t\t\treturn true;\n\t\t} finally {\n\t\t\tURL.revokeObjectURL(workerUrl);\n\t\t}\n\t} catch {\n\t\treturn false;\n\t}\n}\n\n/**\n * Check if WebAssembly is available\n *\n * @returns True if WebAssembly is supported, false otherwise\n */\nexport function hasWasm(): boolean {\n\treturn typeof WebAssembly !== \"undefined\" && WebAssembly.instantiate !== undefined;\n}\n\n/**\n * Check if WebAssembly.instantiateStreaming is available\n *\n * Streaming instantiation is more efficient than buffering the entire WASM module.\n *\n * @returns True if streaming WebAssembly is supported, false otherwise\n */\nexport function hasWasmStreaming(): boolean {\n\treturn typeof WebAssembly !== \"undefined\" && WebAssembly.instantiateStreaming !== undefined;\n}\n\n/**\n * Check if BigInt is available\n *\n * @returns True if BigInt type is supported, false otherwise\n */\nexport function hasBigInt(): boolean {\n\ttry {\n\t\tconst test = BigInt(\"1\");\n\t\treturn typeof test === \"bigint\";\n\t} catch {\n\t\treturn false;\n\t}\n}\n\n/**\n * Get runtime version information\n *\n * @returns Version string if available, undefined otherwise\n *\n * @example\n * ```typescript\n * const version = getRuntimeVersion();\n * console.log(`Running on Node ${version}`); // \"Running on Node 18.12.0\"\n * ```\n */\nexport function getRuntimeVersion(): string | undefined {\n\tconst runtime = detectRuntime();\n\n\tswitch (runtime) {\n\t\tcase \"node\":\n\t\t\treturn process.version?.substring(1); // Remove 'v' prefix\n\t\tcase \"deno\": {\n\t\t\tconst deno = (globalThis as unknown as Record<string, unknown>).Deno as Record<string, unknown> | undefined;\n\t\t\tconst version = deno?.version as Record<string, unknown> | undefined;\n\t\t\treturn version?.deno as string | undefined;\n\t\t}\n\t\tcase \"bun\": {\n\t\t\tconst bun = (globalThis as unknown as Record<string, unknown>).Bun as Record<string, unknown> | undefined;\n\t\t\treturn bun?.version as string | undefined;\n\t\t}\n\t\tdefault:\n\t\t\treturn undefined;\n\t}\n}\n\n/**\n * Get comprehensive WebAssembly capabilities for current runtime\n *\n * Returns detailed information about WASM and related APIs available\n * in the current runtime environment.\n *\n * @returns Object describing available WASM capabilities\n *\n * @example\n * ```typescript\n * import { getWasmCapabilities } from '@kreuzberg/wasm/runtime';\n *\n * const caps = getWasmCapabilities();\n * console.log(`WASM available: ${caps.hasWasm}`);\n * console.log(`Streaming WASM: ${caps.hasWasmStreaming}`);\n * console.log(`Workers available: ${caps.hasWorkers}`);\n *\n * if (caps.hasWasm && caps.hasWorkers) {\n * // Can offload WASM processing to workers\n * }\n * ```\n */\nexport function getWasmCapabilities(): WasmCapabilities {\n\tconst runtime = detectRuntime();\n\tconst version = getRuntimeVersion();\n\tconst capabilities: WasmCapabilities = {\n\t\truntime,\n\t\thasWasm: hasWasm(),\n\t\thasWasmStreaming: hasWasmStreaming(),\n\t\thasFileApi: hasFileApi(),\n\t\thasBlob: hasBlob(),\n\t\thasWorkers: hasWorkers(),\n\t\thasSharedArrayBuffer: hasSharedArrayBuffer(),\n\t\thasModuleWorkers: hasModuleWorkers(),\n\t\thasBigInt: hasBigInt(),\n\t\t...(version !== undefined ? { runtimeVersion: version } : {}),\n\t};\n\treturn capabilities;\n}\n\n/**\n * Get comprehensive runtime information\n *\n * Returns detailed information about the current runtime environment,\n * capabilities, and identifying information.\n *\n * @returns Object with runtime details and capabilities\n *\n * @example\n * ```typescript\n * const info = getRuntimeInfo();\n * console.log(info.runtime); // 'browser' | 'node' | 'deno' | 'bun'\n * console.log(info.isBrowser); // true/false\n * console.log(info.userAgent); // Browser user agent string\n * console.log(info.capabilities); // Detailed capability information\n * ```\n */\nexport function getRuntimeInfo() {\n\tconst runtime = detectRuntime();\n\tconst capabilities = getWasmCapabilities();\n\n\treturn {\n\t\truntime,\n\t\tisBrowser: isBrowser(),\n\t\tisNode: isNode(),\n\t\tisDeno: isDeno(),\n\t\tisBun: isBun(),\n\t\tisWeb: isWebEnvironment(),\n\t\tisServer: isServerEnvironment(),\n\t\truntimeVersion: getRuntimeVersion(),\n\t\tuserAgent: typeof navigator !== \"undefined\" ? navigator.userAgent : \"N/A\",\n\t\tcapabilities,\n\t};\n}\n"],"mappings":"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","names":["obj","returnValue","proxy","resolve","Module","err","module","exports","typeConverters","fieldTypes","handle","i","rv","date","wasmSIMDSupported","normalized","module"]}
|