UNPKG

mldsa-wasm

Version:

ML-DSA-65 implementation using WebAssembly in a single JS file based on PQClean

452 lines (451 loc) 64.9 kB
// src/build/wasm-module.js async function MLDSA65Module(moduleArg = {}) { var moduleRtn; var Module = moduleArg; var ENVIRONMENT_IS_WEB = typeof window == "object"; var ENVIRONMENT_IS_WORKER = typeof WorkerGlobalScope != "undefined"; var ENVIRONMENT_IS_NODE = typeof process == "object" && process.versions?.node && process.type != "renderer"; var quit_ = (status, toThrow) => { throw toThrow; }; var _scriptName = import.meta.url; var scriptDirectory = ""; var readAsync, readBinary; if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { try { scriptDirectory = new URL(".", _scriptName).href; } catch { } { if (ENVIRONMENT_IS_WORKER) { readBinary = (url) => { var xhr = new XMLHttpRequest(); xhr.open("GET", url, false); xhr.responseType = "arraybuffer"; xhr.send(null); return new Uint8Array(xhr.response); }; } readAsync = async (url) => { if (isFileURI(url)) { return new Promise((resolve, reject) => { var xhr = new XMLHttpRequest(); xhr.open("GET", url, true); xhr.responseType = "arraybuffer"; xhr.onload = () => { if (xhr.status == 200 || xhr.status == 0 && xhr.response) { resolve(xhr.response); return; } reject(xhr.status); }; xhr.onerror = reject; xhr.send(null); }); } var response = await fetch(url, { credentials: "same-origin" }); if (response.ok) { return response.arrayBuffer(); } throw new Error(response.status + " : " + response.url); }; } } else { } var out = console.log.bind(console); var err = console.error.bind(console); var wasmBinary; var ABORT = false; var EXITSTATUS; var isFileURI = (filename) => filename.startsWith("file://"); var readyPromiseResolve, readyPromiseReject; var wasmMemory; var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; var HEAP64, HEAPU64; var runtimeInitialized = false; function updateMemoryViews() { var b = wasmMemory.buffer; Module["HEAP8"] = HEAP8 = new Int8Array(b); HEAP16 = new Int16Array(b); Module["HEAPU8"] = HEAPU8 = new Uint8Array(b); HEAPU16 = new Uint16Array(b); HEAP32 = new Int32Array(b); HEAPU32 = new Uint32Array(b); HEAPF32 = new Float32Array(b); HEAPF64 = new Float64Array(b); HEAP64 = new BigInt64Array(b); HEAPU64 = new BigUint64Array(b); } function preRun() { } function initRuntime() { runtimeInitialized = true; wasmExports["d"](); } function postRun() { } var runDependencies = 0; var dependenciesFulfilled = null; function addRunDependency(id) { runDependencies++; } function removeRunDependency(id) { runDependencies--; if (runDependencies == 0) { if (dependenciesFulfilled) { var callback = dependenciesFulfilled; dependenciesFulfilled = null; callback(); } } } function abort(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 wasmBinaryFile; function findWasmBinary() { return base64Decode("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IAEgAiADajYCACABIAEoAgQiAiAGIAE0AkR+IgcgB0KAgICAkICIwAN+QiCHQv+/gHx+fEIgiKciA2s2AkQgASACIANqNgIEIAEgASgCCCICIAYgATQCSH4iByAHQoCAgICQgIjAA35CIIdC/7+AfH58QiCIpyIDazYCSCABIAIgA2o2AgggASABKAIMIgIgBiABNAJMfiIHIAdCgICAgJCAiMADfkIgh0L/v4B8fnxCIIinIgNrNgJMIAEgAiADajYCDCABIAEoAhAiAiAGIAE0AlB+IgcgB0KAgICAkICIwAN+QiCHQv+/gHx+fEIgiKciA2s2AlAgASACIANqNgIQIAEgASgCFCICIAYgATQCVH4iByAHQoCAgICQgIjAA35CIIdC/7+AfH58QiCIpyIDazYCVCABIAIgA2o2AhQgASABKAIYIgIgBiABNAJYfiIHIAdCgICAgJCAiMADfkIgh0L/v4B8fnxCIIinIgNrNgJYIAEgAiADajYCGCABIAEoAhwiAiAGIAE0Alx+IgcgB0KAgICAkICIwAN+QiCHQv+/gHx+fEIgiKciA2s2AlwgASACIANqNgIcIAEgASgCICICIAYgATQCYH4iByAHQoCAgICQgIjAA35CIIdC/7+AfH58QiCIpyIDazYCYCABIAIgA2o2AiAgASABKAIkIgIgBiABNAJkfiIHIAdCgICAgJCAiMADfkIgh0L/v4B8fnxCIIinIgNrNgJkIAEgAiADajYCJCABIAEoAigiAiAGIAE0Amh+IgcgB0KAgICAkICIwAN+QiCHQv+/gHx+fEIgiKciA2s2AmggASACIANqNgIoIAEgASgCLCICIAYgATQCbH4iByAHQoCAgICQgIjAA35CIIdC/7+AfH58QiCIpyIDazYCbCABIAIgA2o2AiwgASABKAIwIgIgBiABNAJwfiIHIAdCgICAgJCAiMADfkIgh0L/v4B8fnxCIIinIgNrNgJwIAEgAiADajYCMCABIAEoAjQiAiAGIAE0AnR+IgcgB0KAgICAkICIwAN+QiCHQv+/gHx+fEIgiKciA2s2AnQgASACIANqNgI0IAEgASgCOCICIAYgATQCeH4iByAHQoCAgICQgIjAA35CIIdC/7+AfH58QiCIpyIDazYCeCABIAIgA2o2AjggASABKAI8IgIgBiABNAJ8fiIGIAZCgICAgJCAiMADfkIgh0L/v4B8fnxCIIinIgNrNgJ8IAEgAiADajYCPCAEQeABSSAEQSBqIQQNAAtBACEEA0AgBUEBaiIFQQJ0NALACSIGIAAgBEECdGoiATQCIH4iByAHQoCAgICQgIjAA35CIIdC/7+AfH58QiCIpyECIAEgASgCACIDIAJrNgIgIAEgAiADajYCACABIAEoAgQiAiAGIAE0AiR+IgcgB0KAgICAkICIwAN+QiCHQv+/gHx+fEIgiKciA2s2AiQgASACIANqNgIEIAEgASgCCCICIAYgATQCKH4iByAHQoCAgICQgIjAA35CIIdC/7+AfH58QiCIpyIDazYCKCABIAIgA2o2AgggASABKAIMIgIgBiABNAIsfiIHIAdCgICAgJCAiMADfkIgh0L/v4B8fnxCIIinIgNrNgIsIAEgAiADajYCDCABIAEoAhAiAiAGIAE0AjB+IgcgB0KAgICAkICIwAN+QiCHQv+/gHx+fEIgiKciA2s2AjAgASACIANqNgIQIAEgASgCFCICIAYgATQCNH4iByAHQoCAgICQgIjAA35CIIdC/7+AfH58QiCIpyIDazYCNCABIAIgA2o2AhQgASABKAIYIgIgBiABNAI4fiIHIAdCgICAgJCAiMADfkIgh0L/v4B8fnxCIIinIgNrNgI4IAEgAiADajYCGCABIAEoAhwiAiAGIAE0Ajx+IgYgBkKAgICAkICIwAN+QiCHQv+/gHx+fEIgiKciA2s2AjwgASACIANqNgIcIARB8AFJIARBEGohBA0AC0EAIQQDQCAFQQFqIgVBAnQ0AsAJIgYgACAEQQJ0aiIBNAIQfiIHIAdCgICAgJCAiMADfkIgh0L/v4B8fnxCIIinIQIgASABKAIAIgMgAms2AhAgASACIANqNgIAIAEgASgCBCICIAYgATQCFH4iByAHQoCAgICQgIjAA35CIIdC/7+AfH58QiCIpyIDazYCFCABIAIgA2o2AgQgASABKAIIIgIgBiABNAIYfiIHIAdCgICAgJCAiMADfkIgh0L/v4B8fnxCIIinIgNrNgIYIAEgAiADajYCCCABIAEoAgwiAiAGIAE0Ahx+IgYgBkKAgICAkICIwAN+QiCHQv+/gHx+fEIgiKciA2s2AhwgASACIANqNgIMIARB+AFJIARBCGohBA0AC0EAIQQDQCAFQQFqIgVBAnQ0AsAJIgYgACAEQQJ0aiIBNAIIfiIHIAdCgICAgJCAiMADfkIgh0L/v4B8fnxCIIinIQIgASABKAIAIgMgAms2AgggASACIANqNgIAIAEgASgCBCICIAYgATQCDH4iBiAGQoCAgICQgIjAA35CIIdC/7+AfH58QiCIpyIDazYCDCABIAIgA2o2AgQgBEH8AUkgBEEEaiEEDQALQQAhAQNAIAAgAUECdGoiBDQCBCAFQQFqIgVBAnQ0AsAJfiIGIAZCgICAgJCAiMADfkIgh0L/v4B8fnxCIIinIQIgBCAEKAIAIgMgAms2AgQgBCACIANqNgIAIAFB/gFJIAFBAmohAQ0ACwtOAQR/A0AgACACQQN0aiIEIAEgAmoiAy0AAEEPcSIFNgIAIAMtAAAhAyAEQQQgBWs2AgAgBEEEIANBBHZrNgIEIAJBAWoiAkGAAUcNAAsLYwECfwNAIAAgAmpBwAAgASACQQN0aiIDKAIEQQR0a0EEIAMoAgBrcjoAACAAIAJBAXIiA2pBwAAgASADQQN0aiIDKAIEQQR0a0EEIAMoAgBrcjoAACACQQJqIgJBgAFHDQALC+wCAQZ/IwBBoAJrIgQkACAEQQxqIgMgASACEC4gBEEQakGQAiADEA1BACEDQQAhAgNAIARBEGogAmotAAAiAUEPcSIFQQhNBEAgACADQQJ0akEEIAVrNgIAIANBAWohAwsCQCABQY8BSw0AIANB/wFLDQAgACADQQJ0akEEIAFBBHZrNgIAIANBAWohAwsgA0H/AU0EQCACQY8CSSACQQFqIQINAQsLIANB/wFNBEADQCAEQRBqQYgBIARBDGoQDUGAAiADayEFIAAgA0ECdGohB0EAIQJBACEBA0AgBEEQaiABai0AACIGQQ9xIghBCE0EQCAHIAJBAnRqQQQgCGs2AgAgAkEBaiECCwJAIAZBjwFLDQAgAiAFTw0AIAcgAkECdGpBBCAGQQR2azYCACACQQFqIQILIAIgBUkEQCABQYcBSSABQQFqIQENAQsLIAIgA2oiA0GAAkkNAAsLIARBDGoQDiAEQaACaiQAC2EBA38gAUGA+D9KBEBBAQ8LAkADQCAAIANBAnRqIgQoAgAiAiACIAJBH3VxQQF0ayABTg0BIAQoAgQiAiACIAJBH3VxQQF0ayABTg0BIANBAmoiA0GAAkcNAAtBAA8LQQELOgECfwNAIAAgAkECdGoiASABKAIAIgEgAUGAgIACakEXdUH/v4B8bGo2AgAgAkEBaiICQYACRw0ACwupGgIHfwJ+QYACIQUDQCAAIAZBAnRqIgMgAygCACICIAMoAgQiBGsiBzYCBCADIAIgBGo2AgAgAyAHrEEAIAVBAWsiBUECdCgCwAlrrH4iCSAJQoCAgICQgIjAA35CIIdC/7+AfH58QiCIPgIEIAZB/gFJIAZBAmohBg0ACwNAIAAgAUECdGoiAyADKAIAIgYgAygCCCICayIENgIIIAMgAiAGajYCAEEAIQYgA0EAIAVBAWsiBUECdCgCwAlrrCIJIASsfiIIIAhCgICAgJCAiMADfkIgh0L/v4B8fnxCIIg+AgggAyADKAIMIgIgAygCBCIEajYCBCADIAQgAmsiAjYCDCADIAKsIAl+IgkgCUKAgICAkICIwAN+QiCHQv+/gHx+fEIgiD4CDCABQfwBSSABQQRqIQENAAsDQCAAIAZBAnRqIgMgAygCACIBIAMoAhAiAmsiBDYCECADIAEgAmo2AgBBACEBIANBACAFQQFrIgVBAnQoAsAJa6wiCSAErH4iCCAIQoCAgICQgIjAA35CIIdC/7+AfH58QiCIPgIQIAMgAygCFCICIAMoAgQiBGo2AgQgAyAEIAJrIgI2AhQgAyACrCAJfiIIIAhCgICAgJCAiMADfkIgh0L/v4B8fnxCIIg+AhQgAyADKAIYIgIgAygCCCIEajYCCCADIAQgAmsiAjYCGCADIAKsIAl+IgggCEKAgICAkICIwAN+QiCHQv+/gHx+fEIgiD4CGCADIAMoAhwiAiADKAIMIgRqNgIMIAMgBCACayICNgIcIAMgAqwgCX4iCSAJQoCAgICQgIjAA35CIIdC/7+AfH58QiCIPgIcIAZB+AFJIAZBCGohBg0ACwNAIAAgAUECdGoiAyADKAIAIgYgAygCICICayIENgIgIAMgAiAGajYCAEEAIQYgA0EAIAVBAWsiBUECdCgCwAlrrCIJIASsfiIIIAhCgICAgJCAiMADfkIgh0L/v4B8fnxCIIg+AiAgAyADKAIkIgIgAygCBCIEajYCBCADIAQgAmsiAjYCJCADIAKsIAl+IgggCEKAgICAkICIwAN+QiCHQv+/gHx+fEIgiD4CJCADIAMoAigiAiADKAIIIgRqNgIIIAMgBCACayICNgIoIAMgAqwgCX4iCCAIQoCAgICQgIjAA35CIIdC/7+AfH58QiCIPgIoIAMgAygCLCICIAMoAgwiBGo2AgwgAyAEIAJrIgI2AiwgAyACrCAJfiIIIAhCgICAgJCAiMADfkIgh0L/v4B8fnxCIIg+AiwgAyADKAIwIgIgAygCECIEajYCECADIAQgAmsiAjYCMCADIAKsIAl+IgggCEKAgICAkICIwAN+QiCHQv+/gHx+fEIgiD4CMCADIAMoAjQiAiADKAIUIgRqNgIUIAMgBCACayICNgI0IAMgAqwgCX4iCCAIQoCAgICQgIjAA35CIIdC/7+AfH58QiCIPgI0IAMgAygCOCICIAMoAhgiBGo2AhggAyAEIAJrIgI2AjggAyACrCAJfiIIIAhCgICAgJCAiMADfkIgh0L/v4B8fnxCIIg+AjggAyADKAI8IgIgAygCHCIEajYCHCADIAQgAmsiAjYCPCADIAKsIAl+IgkgCUKAgICAkICIwAN+QiCHQv+/gHx+fEIgiD4CPCABQfABSSABQRBqIQENAAsDQCAAIAZBAnRqIgEgASgCACIDIAEoAkAiAmsiBDYCQCABIAIgA2o2AgAgAUEAIAUiA0EBayIFQQJ0KALACWusIgkgBKx+IgggCEKAgICAkICIwAN+QiCHQv+/gHx+fEIgiD4CQCABIAEoAkQiAiABKAIEIgRqNgIEIAEgBCACayICNgJEIAEgAqwgCX4iCCAIQoCAgICQgIjAA35CIIdC/7+AfH58QiCIPgJEIAEgASgCSCICIAEoAggiBGo2AgggASAEIAJrIgI2AkggASACrCAJfiIIIAhCgICAgJCAiMADfkIgh0L/v4B8fnxCIIg+AkggASABKAJMIgIgASgCDCIEajYCDCABIAQgAmsiAjYCTCABIAKsIAl+IgggCEKAgICAkICIwAN+QiCHQv+/gHx+fEIgiD4CTCABIAEoAlAiAiABKAIQIgRqNgIQIAEgBCACayICNgJQIAEgAqwgCX4iCCAIQoCAgICQgIjAA35CIIdC/7+AfH58QiCIPgJQIAEgASgCVCICIAEoAhQiBGo2AhQgASAEIAJrIgI2AlQgASACrCAJfiIIIAhCgICAgJCAiMADfkIgh0L/v4B8fnxCIIg+AlQgASABKAJYIgIgASgCGCIEajYCGCABIAQgAmsiAjYCWCABIAKsIAl+IgggCEKAgICAkICIwAN+QiCHQv+/gHx+fEIgiD4CWCABIAEoAlwiAiABKAIcIgRqNgIcIAEgBCACayICNgJcIAEgAqwgCX4iCCAIQoCAgICQgIjAA35CIIdC/7+AfH58QiCIPgJcIAEgASgCYCICIAEoAiAiBGo2AiAgASAEIAJrIgI2AmAgASACrCAJfiIIIAhCgICAgJCAiMADfkIgh0L/v4B8fnxCIIg+AmAgASABKAJkIgIgASgCJCIEajYCJCABIAQgAmsiAjYCZCABIAKsIAl+IgggCEKAgICAkICIwAN+QiCHQv+/gHx+fEIgiD4CZCABIAEoAmgiAiABKAIoIgRqNgIoIAEgBCACayICNgJoIAEgAqwgCX4iCCAIQoCAgICQgIjAA35CIIdC/7+AfH58QiCIPgJoIAEgASgCbCICIAEoAiwiBGo2AiwgASAEIAJrIgI2AmwgASACrCAJfiIIIAhCgICAgJCAiMADfkIgh0L/v4B8fnxCIIg+AmwgASABKAJwIgIgASgCMCIEajYCMCABIAQgAmsiAjYCcCABIAKsIAl+IgggCEKAgICAkICIwAN+QiCHQv+/gHx+fEIgiD4CcCABIAEoAnQiAiABKAI0IgRqNgI0IAEgBCACayICNgJ0IAEgAqwgCX4iCCAIQoCAgICQgIjAA35CIIdC/7+AfH58QiCIPgJ0IAEgASgCeCICIAEoAjgiBGo2AjggASAEIAJrIgI2AnggASACrCAJfiIIIAhCgICAgJCAiMADfkIgh0L/v4B8fnxCIIg+AnggASABKAJ8IgIgASgCPCIEajYCPCABIAQgAmsiAjYCfCABIAKsIAl+IgkgCUKAgICAkICIwAN+QiCHQv+/gHx+fEIgiD4CfCAGQeABSSAGQSBqIQYNAAtBACEFQQAgA0ECdEG4CWooAgBrrCEJA0AgACAFQQJ0aiIBIAEoAgAiBiABKAKAASICayIENgKAASABIAIgBmo2AgAgASAErCAJfiIIIAhCgICAgJCAiMADfkIgh0L/v4B8fnxCIIg+AoABIAVBH0cgBUEBaiEFDQALQQAgA0ECdEG0CWooAgBrrCEJQcAAIQUDQCAAIAVBAnRqIgEgASgCACIGIAEoAoABIgJrIgQ2AoABIAEgAiAGajYCACABIASsIAl+IgggCEKAgICAkICIwAN+QiCHQv+/gHx+fEIgiD4CgAEgBUHfAEcgBUEBaiEFDQALQQAgA0ECdEGwCWooAgBrrCEJQYABIQUDQCAAIAVBAnRqIgEgASgCACIGIAEoAoABIgJrIgQ2AoABIAEgAiAGajYCACABIASsIAl+IgggCEKAgICAkICIwAN+QiCHQv+/gHx+fEIgiD4CgAEgBUGfAUcgBUEBaiEFDQALQQAgA0ECdEGsCWooAgBrrCEJQcABIQUDQCAAIAVBAnRqIgEgASgCACIGIAEoAoABIgJrIgQ2AoABIAEgAiAGajYCACABIASsIAl+IgggCEKAgICAkICIwAN+QiCHQv+/gHx+fEIgiD4CgAEgBUHfAUcgBUEBaiEFDQALQQAhBUEAIANBAnRBqAlqKAIAa6whCQNAIAAgBUECdGoiASABKAIAIgYgASgCgAIiAmsiBDYCgAIgASACIAZqNgIAIAEgBKwgCX4iCCAIQoCAgICQgIjAA35CIIdC/7+AfH58QiCIPgKAAiAFQT9HIAVBAWohBQ0AC0EAIANBAnRBpAlqKAIAa6whCUGAASEFA0AgACAFQQJ0aiIBIAEoAgAiBiABKAKAAiICayIENgKAAiABIAIgBmo2AgAgASAErCAJfiIIIAhCgICAgJCAiMADfkIgh0L/v4B8fnxCIIg+AoACIAVBvwFHIAVBAWohBQ0AC0EAIQVBACADQQJ0QaAJaigCAGusIQlBACEGA0AgACAGQQJ0aiIDIAMoAgAiASADKAKABCICayIENgKABCADIAEgAmo2AgAgAyAErCAJfiIIIAhCgICAgJCAiMADfkIgh0L/v4B8fnxCIIg+AoAEIAZBAWoiBkGAAUcNAAsDQCAAIAVBAnRqIgMgAzQCAEL6xwJ+IgkgCUKAgICAkICIwAN+QiCHQv+/gHx+fEIgiD4CACAFQQFqIgVBgAJHDQALC8UCAgd/A34gAigCACEDAn9BACABRQ0AGiABrSEMA0AgCqciAiAKIAMpA8gBIgtaDQEaIAAgAmogAyAKIAt9IgunQYgBakF4cWopAwAgC0IDhog8AAAgCkIBfCIKIAxSDQALIAELIQIgAyADKQPIASACrX03A8gBIAEgAmsiBARAIAAgAmohAANAIAMQEUGIASAEIARBiAFPGyIFQQFxQQAhAiAEQQFHBEAgBUH+AXEhB0EAIQEDQCAAIAJqIAMgAkF4cWoiCCkDACACQQN0QTBxrYg8AAAgACACQQFyIglqIAgpAwAgCUEDdEE4ca2IPAAAIAJBAmohAiABQQJqIgEgB0cNAAsLBEAgACACaiADIAJBeHFqKQMAIAJBA3RBOHGtiDwAAAsgA0GIASAFa603A8gBIAAgBWohACAEIAVrIgQNAAsLCwkAIAAoAgAQJQskACAAQdABECciADYCACAABEAgAEEAQdAB/AsADwtB7wAQAAALTQIBfgF/IAAoAgAiACAAKQPIASIBp0F4cWoiAiACKQMAQh8gAUIDhoaFNwMAIABCADcDyAEgACAAKQOAAUKAgICAgICAgIB/hTcDgAEL2wwCLn4CfyAAKQPAASEXIAApA7gBIRggACkDsAEhDiAAKQOoASEIIAApA6ABIQ8gACkDmAEhCSAAKQOQASEQIAApA4gBIREgACkDgAEhCiAAKQN4IRIgACkDcCETIAApA2ghBCAAKQNgIRQgACkDWCEFIAApA1AhCyAAKQNIIRkgACkDQCENIAApAzghASAAKQMwIQIgACkDKCEHIAApAyAhGyAAKQMYIQwgACkDECEGIAApAwghAyAAKQMAIRUDQCAQIBiFIASFIA2FIAyFIh8gDyAShSALhSAHhSAVhSIaQgGJhSIcIBuFQhuJIhYgGiAOIBGFIBSFIAGFIAaFIh5CAYmFIhogBYVCCokiHSAJIBeFIBOFIBmFIBuFIiAgCCAKhSAFhSAChSADhSIhQgGJhSIFIAeFQiSJIgdCf4WDhSIiIAMgGoVCAYkiGyAEIB4gIEIBiYUiBIVCGYkiAyABICEgH0IBiYUiAYVCBokiH0J/hYOFIiGFIAQgDIVCHIkiDCAFIAuFQgOJIgsgGSAchUIUiSIeQn+Fg4UiI4UgASAGhUI+iSIGIBMgHIVCJ4kiEyAEIA2FQjeJIiBCf4WDhSIkhSAFIBWFIhUgL0EDdCIwKQOACCABIBSFQiuJIhQgAiAahUIsiSICQn+Fg4WFIiWFIg1CAYkgASARhUIPiSIRIBYgBCAYhUI4iSIYQn+Fg4UiJiAEIBCFQhWJIhAgFSAXIByFQg6JIhdCf4WDhSInIAUgEoVCKYkiEiAGIAggGoVCAokiCEJ/hYOFIgQgCSAchUIIiSIJIBsgBSAPhUISiSIPQn+Fg4UiKCAKIBqFQi2JIgogDCABIA6FQj2JIg5Cf4WDhSIFhYWFhSIphSIZIAggICAGQn+Fg4UiAYVCDokiHCANIA8gCUJ/hYMgA4UiKiAXIBBCf4WDIBSFIgYgEyAIIBJCf4WDhSIrIA4gCkJ/hYMgC4UiLCAdIBggEUJ/hYOFIi2FhYWFIghCAYmFIg0gHiAKIAtCf4WDhSIKhUIsiSIaICUgByAWQn+FgyAYhSIWIB4gDEJ/hYMgDoUiHiAfIBtCf4WDIA+FIgsgFyACIBVCf4WDhSIuIAGFhYWFIhcgEiATQn+FgyAghSIYIAkgA0J/hYMgH4UiAyARIB1Cf4WDIAeFIh0gCiACIBAgFEJ/hYOFIgKFhYWFIglCAYmFIgGFIhVCf4WDhSEbIA0gGIVCAokiDiAXQgGJIAiFIgwgBYVCN4kiDyAGIClCAYkgCYUiBoVCPokiCUJ/hYOFIRcgASAihUIpiSIIIAkgDkJ/hYOFIRggCyAZhUIniSIQIA4gCEJ/hYOFIQ4gCCAQQn+FgyAPhSEIIBAgD0J/hYMgCYUhDyAEIAyFQjiJIhEgASAjhUIkiSISIBkgLoVCG4kiE0J/hYOFIQkgBiAthUIPiSIKIBMgEUJ/hYOFIRAgAyANhUIKiSIEIBEgCkJ/hYOFIREgCiAEQn+FgyAShSEKIBMgBCASQn+Fg4UhEiABICSFQhKJIhQgBiAshUIGiSILIAIgDYVCAYkiAkJ/hYOFIRMgFiAZhUIIiSIFIAIgFEJ/hYOFIQQgDCAohUIZiSIHIBQgBUJ/hYOFIRQgBSAHQn+FgyALhSEFIAIgByALQn+Fg4UhCyAGICuFQj2JIgIgGSAehUIUiSIHIAwgJ4VCHIkiA0J/hYOFIRkgDSAdhUItiSIWIAMgAkJ/hYOFIQ0gASAhhUIDiSIdIAIgFkJ/hYOFIQEgByAWIB1Cf4WDhSECIB0gB0J/hYMgA4UhByAMICaFQhWJIgMgFSAcQn+Fg4UhDCAGICqFQiuJIhYgHCADQn+Fg4UhBiAaIAMgFkJ/hYOFIQMgMEGICGopAwAgFiAaQn+Fg4UgFYUhFSAvQRZJIC9BAmohLw0ACyAAIBc3A8ABIAAgGDcDuAEgACAONwOwASAAIAg3A6gBIAAgDzcDoAEgACAJNwOYASAAIBA3A5ABIAAgETcDiAEgACAKNwOAASAAIBI3A3ggACATNwNwIAAgBDcDaCAAIBQ3A2AgACAFNwNYIAAgCzcDUCAAIBk3A0ggACANNwNAIAAgATcDOCAAIAI3AzAgACAHNwMoIAAgGzcDICAAIAw3AxggACAGNwMQIAAgAzcDCCAAIBU3AwALVQECfwNAIAAgAmogASACQQN0aiIDKAIEQQR0IAMoAgByOgAAIAAgAkEBciIDaiABIANBA3RqIgMoAgRBBHQgAygCAHI6AAAgAkECaiICQYABRw0ACwvfAwELfwNAIAAgCEEFdGoiAiABIAhBDWxqIgMtAAAiCTYCACACIAkgAy0AAUEIdEGAPnFyIgk2AgAgAiADLQABQQV2IgQ2AgQgAiADLQACQQN0IARyIgQ2AgQgAiADLQADQQt0QYAwcSAEciIENgIEIAIgAy0AA0ECdiIKNgIIIAIgAy0ABEEGdEHAP3EgCnIiCjYCCCACIAMtAARBB3YiBTYCDCACIAMtAAVBAXQgBXIiBTYCDCACIAMtAAZBCXRBgDxxIAVyIgU2AgwgAiADLQAGQQR2IgY2AhAgAiADLQAHQQR0IAZyIgY2AhAgAiADLQAIQQx0QYAgcSAGciIGNgIQIAIgAy0ACEEBdiILNgIUIAIgAy0ACUEHdEGAP3EgC3IiCzYCFCACIAMtAAlBBnYiBzYCGCACIAMtAApBAnQgB3IiBzYCGCACIAMtAAtBCnRBgDhxIAdyIgc2AhggAiADLQALQQN2Igw2AhwgAy0ADCEDIAJBgCAgBGs2AgQgAkGAICAJazYCACACQYAgIAprNgIIIAJBgCAgBWs2AgwgAkGAICAGazYCECACQYAgIAtrNgIUIAJBgCAgB2s2AhggAkGAICADQQV0IAxyazYCHCAIQQFqIghBIEcNAAsLsAIBC38DQCABIARBBXRqIgIoAgghCSACKAIUIQogAigCBCEFIAIoAgwhBiACKAIQIQcgAigCGCELIAIoAhwhCCAAIARBDWxqIgNBgCAgAigCAGsiDDoAACADQYAgIAhrIghBBXY6AAwgA0GAICALayICQQJ2OgAKIANBgCAgB2siB0EEdjoAByADQYAgIAZrIgZBAXY6AAUgA0GAICAFayIFQQN2OgACIAMgCEEDdCACQQp2cjoACyADIAJBBnRBgCAgCmsiAkEHdnI6AAkgAyACQQF0IAdBDHZyOgAIIAMgB0EEdCAGQQl2cjoABiADIAZBB3RBgCAgCWsiAkEGdnI6AAQgAyACQQJ0IAVBC3ZyOgADIAMgBUEFdCAMQQh2cjoAASAEQQFqIgRBIEcNAAsLhQEBA38DQCAAIANBBHRqIgQgASADQQVsaiICLQABQQh0QYAGcSACLQAAcjYCACAEIAItAAJBBnRBwAdxIAItAAFBAnZyNgIEIAQgAi0AA0EEdEHwB3EgAi0AAkEEdnI2AgggBCACLQAEQQJ0IAItAANBBnZyNgIMIANBAWoiA0HAAEcNAAsLfQEDfwNAIAAgA0EFbGoiBCABIANBBHRqIgIoAgA6AAAgBCACKAIEQQJ0IAIoAgBBCHZyOgABIAQgAigCCEEEdCACKAIEQQZ2cjoAAiAEIAIoAgxBBnQgAigCCEEEdnI6AAMgBCACKAIMQQJ2OgAEIANBAWoiA0HAAEcNAAsLigEBBX8DQCAAIARBAnQiA2oCfyABIANqKAIAIgdB/wBqQQd1QYEIbEGAgIABakEWdiIFQQ9xIQYgAiADaigCAAR/IAVBAWpBD3FB/7+AfEEAIAZBgIRgbCAHaiIDQYDg/wFKGyADakEASg0BGiAFQQFrQQ9xBSAGCws2AgAgBEEBaiIEQYACRw0ACwtUAQR/A0AgACAEQQJ0IgNqIAEgA2ooAgAiBkGAgnBGIAIgA2ooAgBBAEdxIAZBgf4Pa0H/g2BJciIDNgIAIAMgBWohBSAEQQFqIgRBgAJHDQALIAULaQEEfwNAIAAgBEECdCIDaiABIANqQf+/gHxBACACIANqKAIAIgMgA0H/AGpBB3VBgQhsQYCAgAFqQRZ2QQ9xIgNBgIRgbGoiBUGA4P8BShsgBWo2AgAgAzYCACAEQQFqIgRBgAJHDQALC0UBA38DQCAAIARBAnQiA2ogASADaiACIANqKAIAIgMgA0H/H2oiA0GAQHFrNgIAIANBDXU2AgAgBEEBaiIEQYACRw0ACwtQAQJ/A0AgACACQQJ0aiIBIAEoAgBBDXQ2AgAgASABKAIEQQ10NgIEIAEgASgCCEENdDYCCCABIAEoAgxBDXQ2AgwgAkEEaiICQYACRw0ACwtQAQJ/A0AgACAEQQJ0IgNqIAEgA2ooAgAgAiADaigCAGs2AgAgACADQQRyIgNqIAEgA2ooAgAgAiADaigCAGs2AgAgBEECaiIEQYACRw0ACws0AQJ/A0AgACACQQJ0aiIBIAEoAgAiASABQR91QYHA/wNxajYCACACQQFqIgJBgAJHDQALCy4AIAAQDCAAQYAIahAMIABBgBBqEAwgAEGAGGoQDCAAQYAgahAMIABBgChqEAwLLgAgABALIABBgAhqEAsgAEGAEGoQCyAAQYAYahALIABBgCBqEAsgAEGAKGoQCwtxAQR/A0AgASACQQN0aiIDKAIEIQQgACACQQVsaiIFQYCAICADKAIAayIDOgAAIAUgA0EIdjoAASAFQYCAICAEayIEQQx2OgAEIAUgBEEEdjoAAyAFIARBBHQgA0EQdnI6AAIgAkEBaiICQYABRw0ACwufAQEFfwNAIAAgBUEDdGoiAyABIAVBBWxqIgItAAAiBDYCACADIAQgAi0AAUEIdHIiBDYCACADIAItAAJBEHRBgIA8cSAEciIENgIAIAMgAi0AAkEEdiIGNgIEIAMgAi0AA0EEdCAGciIGNgIEIAItAAQhAiADQYCAICAEazYCACADQYCAICACQQx0IAZyazYCBCAFQQFqIgVBgAFHDQALC54BAQR/IwBBwAVrIgMkACADQQxqIgQgASACEC4gA0EQakGoBSAEEA0gBBAOQQAhAgNAIANBEGogAkEFbGoiAS8AACEEIAAgAkEDdGoiBUGAgCAgAS0AA0EEdCABLQACIgZBBHZyIAEtAARBDHRyazYCBCAFQYCAICAEIAZBEHRBgIA8cXJrNgIAIAJBAWoiAkGAAUcNAAsgA0HABWokAAsmACAAEAYgAEGACGoQBiAAQYAQahAGIABBgBhqEAYgAEGAIGoQBgvsDAEIfyMAQaABayIHJAAgAiEGIwBB0AFrIgQkAEHIARAnIgIEQCACQQA6AAAgAkHIAWoiBUEBa0EAOgAAIAJBADoAAiACQQA6AAEgBUEDa0EAOgAAIAVBAmtBADoAACACQQA6AAMgBUEEa0EAOgAAIAJBACACa0EDcSIIaiIFQQA2AgAgBUHIASAIa0F8cSIJaiIIQQRrQQA2AgACQCAJQQlJDQAgBUEANgIIIAVBADYCBCAIQQhrQQA2AgAgCEEMa0EANgIAIAlBGUkNACAFQQA2AhggBUEANgIUIAVBADYCECAFQQA2AgwgCEEQa0EANgIAIAhBFGtBADYCACAIQRhrQQA2AgAgCEEca0EANgIAIAkgBUEEcUEYciIJayIIQSBJDQAgBSAJaiEFA0AgBUIANwMYIAVCADcDECAFQgA3AwggBUIANwMAIAVBIGohBSAIQSBrIghBH0sNAAsLCyAHIAI2AgwCQCACBEAgA0GIAU8EQANAIAIgAikDACAGKQAAhTcDACACIAIpAwggBikACIU3AwggAiACKQMQIAYpABCFNwMQIAIgAikDGCAGKQAYhTcDGCACIAIpAyAgBikAIIU3AyAgAiACKQMoIAYpACiFNwMoIAIgAikDMCAGKQAwhTcDMCACIAIpAzggBikAOIU3AzggAiACKQNAIAYpAECFNwNAIAIgAikDSCAGKQBIhTcDSCACIAIpA1AgBikAUIU3A1AgAiACKQNYIAYpAFiFNwNYIAIgAikDYCAGKQBghTcDYCACIAIpA2ggBikAaIU3A2ggAiACKQNwIAYpAHCFNwNwIAIgAikDeCAGKQB4hTcDeCACIAIpA4ABIAYpAIABhTcDgAEgAhARIAZBiAFqIQYgA0GIAWsiA0GHAUsNAAsLIARBAEGIAfwLAAJAIANFDQBBACEFIANBBE8EQCADQfwBcSEIA0AgBCAFaiAFIAZqLQAAOgAAIAQgBUEBciIJaiAGIAlqLQAAOgAAIAQgBUECciIJaiAGIAlqLQAAOgAAIAQgBUEDciIJaiAGIAlqLQAAOgAAIAVBBGohBSAKQQRqIgogCEcNAAsLIANBA3EiCEUNAANAIAQgBWogBSAGai0AADoAACAFQQFqIQUgC0EBaiILIAhHDQALCyADIARqQR86AAAgBCAELQCHAUGAAXI6AIcBIAIgAikDACAEKQMAhTcDACACIAIpAwggBCkDCIU3AwggAiACKQMQIAQpAxCFNwMQIAIgAikDGCAEKQMYhTcDGCACIAIpAyAgBCkDIIU3AyAgAiACKQMoIAQpAyiFNwMoIAIgAikDMCAEKQMwhTcDMCACIAIpAzggBCkDOIU3AzggAiACKQNAIAQpA0CFNwNAIAIgAikDSCAEKQNIhTcDSCACIAIpA1AgBCkDUIU3A1AgAiACKQNYIAQpA1iFNwNYIAIgAikDYCAEKQNghTcDYCACIAIpA2ggBCkDaIU3A2ggAiACKQNwIAQpA3CFNwNwIAIgAikDeCAEKQN4hTcDeCACIAIpA4ABIAQpA4ABhTcDgAEgBEHQAWokAAwBC0HvABAAAAsgAUGIAW4hAiAHKAIMIQQgAUGIAU8EQCAAIQMgAiEGA0AgBBARIAMgBCkDADcAACADIAQpAwg3AAggAyAEKQMQNwAQIAMgBCkDGDcAGCADIAQpAyA3ACAgAyAEKQMoNwAoIAMgBCkDMDcAMCADIAQpAzg3ADggAyAEKQNANwBAIAMgBCkDSDcASCADIAQpA1A3AFAgAyAEKQNYNwBYIAMgBCkDYDcAYCADIAQpA2g3AGggAyAEKQNwNwBwIAMgBCkDeDcAeCADIAQpA4ABNwCAASADQYgBaiEDIAZBAWsiBg0ACwsCQCABIAJBiAFsIgJGDQAgBBARIAcgBCkDADcDECAHIAQpAwg3AxggByAEKQMQNwMgIAcgBCkDGDcDKCAHIAQpAyA3AzAgByAEKQMoNwM4IAcgBCkDMDcDQCAHIAQpAzg3A0ggByAEKQNANwNQIAcgBCkDSDcDWCAHIAQpA1A3A2AgByAEKQNYNwNoIAcgBCkDYDcDcCAHIAQpA2g3A3ggByAEKQNwNwOAASAHIAQpA3g3A4gBIAcgBCkDgAE3A5ABIAEgAmsiAUUNACAAIAJqIAdBEGogAfwKAAALIAQQJSAHQaABaiQAC8wCAQV/IAAEQCAAQQRrIgMoAgAiBCEBIAMhAiAAQQhrKAIAIgAgAEF+cSIARwRAIAIgAGsiAigCBCIBIAIoAggiBTYCCCAFIAE2AgQgACAEaiEBCyADIARqIgAoAgAiAyAAIANqQQRrKAIARwRAIAAoAgQiBCAAKAIIIgA2AgggACAENgIEIAEgA2ohAQsgAiABNgIAIAIgAUF8cWpBBGsgAUEBcjYCACACAn8gAigCAEEIayIAQf8ATQRAIABBA3ZBAWsMAQsgAGchAyAAQR0gA2t2QQRzIANBAnRrQe4AaiAAQf8fTQ0AGkE/IABBHiADa3ZBAnMgA0EBdGtBxwBqIgAgAEE/TxsLIgFBBHQiAEHwEWo2AgQgAiAAQfgRaiIAKAIANgIIIAAgAjYCACACKAIIIAI2AgRB+BlB+BkpAwBCASABrYaENwMACwuZAwEEfyABIABBBGoiBGpBAWtBACABa3EiBSACaiAAIAAoAgAiAWpBBGtNBH8gACgCBCIDIAAoAggiBjYCCCAGIAM2AgQgBCAFRwRAIAAgAEEEaygCAEF+cWsiAyAFIARrIgQgAygCAGoiBTYCACADIAVBfHFqQQRrIAU2AgAgACAEaiIAIAEgBGsiATYCAAsCfyABIAJBGGpPBEAgACACaiIEIAEgAmtBCGsiATYCCCAEQQhqIgUgAUF8cWpBBGsgAUEBcjYCACAEAn8gBCgCCEEIayIBQf8ATQRAIAFBA3ZBAWsMAQsgAWchAyABQR0gA2t2QQRzIANBAnRrQe4AaiABQf8fTQ0AGkE/IAFBHiADa3ZBAnMgA0EBdGtBxwBqIgEgAUE/TxsLIgNBBHQiAUHwEWo2AgwgBCABQfgRaiIBKAIANgIQIAEgBTYCACAEKAIQIAU2AgRB+BlB+BkpAwBCASADrYaENwMAIAAgAkEIaiIBNgIAIAAgAUF8cWoMAQsgACABagtBBGsgATYCACAAQQRqBUEACwuMBAIHfwJ+QQghBAJAAkADQCAEIARBAWtxDQEgAEFHSw0BIARBCCAEQQhLIgcbIQRB+BkpAwAiCAJ/QQggAEEDakF8cSAAQQhNGyIAQf8ATQRAIABBA3ZBAWsMAQsgAEEdIABnIgFrdkEEcyABQQJ0a0HuAGogAEH/H00NABpBPyAAQR4gAWt2QQJzIAFBAXRrQccAaiIBIAFBP08bCyICrYgiCUIAUgRAA0AgCSAJeiIJiCEIAn4gAiAJp2oiAkEEdCIDQfgRaigCACIBIANB8BFqIgVHBEAgASAEIAAQJiIDDQYgASgCBCIDIAEoAggiBjYCCCAGIAM2AgQgASAFNgIIIAEgBSgCBDYCBCAFIAE2AgQgASgCBCABNgIIIAJBAWohAiAIQgGIDAELQfgZQfgZKQMAQn4gAq2JgzcDACAIQgGFCyIJQgBSDQALQfgZKQMAIQgLQT8gCHmnayEFAkAgCFAEQEEAIQEMAQsgBUEEdCIDQfgRaigCACEBIAhCgICAgARUDQBB4wAhAiABIANB8BFqIgZGDQADQCACRQ0BIAEgBCAAECYiAw0EIAJBAWshAiABKAIIIgEgBkcNAAsLIAAgBEEwakEwIAcbahAtDQALIAFFDQAgASAFQQR0QfARaiICRg0AA0AgASAEIAAQJiIDDQIgASgCCCIBIAJHDQALC0EAIQMLIAMLWgAgACABIAIQAiAAQYAIaiABIAJBgAhqEAIgAEGAEGogASACQYAQahACIABBgBhqIAEgAkGAGGoQAiAAQYAgaiABIAJBgCBqEAIgAEGAKGogASACQYAoahACCy4AIAAQBiAAQYAIahAGIABBgBBqEAYgAEGAGGoQBiAAQYAgahAGIABBgChqEAYLLgAgABAdIABBgAhqEB0gAEGAEGoQHSAAQYAYahAdIABBgCBqEB0gAEGAKGoQHQuFBQEGfyMAQYAIayIDJAAgACABIAIQAiADIAFBgAhqIAJBgAhqIgUQAiAAIAAgAxADIAMgAUGAEGogAkGAEGoiBhACIAAgACADEAMgAyABQYAYaiACQYAYaiIHEAIgACAAIAMQAyADIAFBgCBqIAJBgCBqIggQAiAAIAAgAxADIABBgAhqIgQgAUGAKGogAhACIAMgAUGAMGogBRACIAQgBCADEAMgAyABQYA4aiAGEAIgBCAEIAMQAyADIAFBgEBrIAcQAiAEIAQgAxADIAMgAUGAyABqIAgQAiAEIAQgAxADIABBgBBqIgQgAUGA0ABqIAIQAiADIAFBgNgAaiAFEAIgBCAEIAMQAyADIAFBgOAAaiAGEAIgBCAEIAMQAyADIAFBgOgAaiAHEAIgBCAEIAMQAyADIAFBgPAAaiAIEAIgBCAEIAMQAyAAQYAYaiIEIAFBgPgAaiACEAIgAyABQYCAAWogBRACIAQgBCADEAMgAyABQYCIAWogBhACIAQgBCADEAMgAyABQYCQAWogBxACIAQgBCADEAMgAyABQYCYAWogCBACIAQgBCADEAMgAEGAIGoiBCABQYCgAWogAhACIAMgAUGAqAFqIAUQAiAEIAQgAxADIAMgAUGAsAFqIAYQAiAEIAQgAxADIAMgAUGAuAFqIAcQAiAEIAQgAxADIAMgAUGAwAFqIAgQAiAEIAQgAxADIABBgChqIgAgAUGAyAFqIAIQAiADIAFBgNABaiAFEAIgACAAIAMQAyADIAFBgNgBaiAGEAIgACAAIAMQAyADIAFBgOABaiAHEAIgACAAIAMQAyADIAFBgOgBaiAIEAIgACAAIAMQAyADQYAIaiQAC5QDACAAIAFBABAEIABBgAhqIAFBARAEIABBgBBqIAFBAhAEIABBgBhqIAFBAxAEIABBgCBqIAFBBBAEIABBgChqIAFBgAIQBCAAQYAwaiABQYECEAQgAEGAOGogAUGCAhAEIABBgEBrIAFBgwIQBCAAQYDIAGogAUGEAhAEIABBgNAAaiABQYAEEAQgAEGA2ABqIAFBgQQQBCAAQYDgAGogAUGCBBAEIABBgOgAaiABQYMEEAQgAEGA8ABqIAFBhAQQBCAAQYD4AGogAUGABhAEIABBgIABaiABQYEGEAQgAEGAiAFqIAFBggYQBCAAQYCQAWogAUGDBhAEIABBgJgBaiABQYQGEAQgAEGAoAFqIAFBgAgQBCAAQYCoAWogAUGBCBAEIABBgLABaiABQYIIEAQgAEGAuAFqIAFBgwgQBCAAQYDAAWogAUGECBAEIABBgMgBaiABQYAKEAQgAEGA0AFqIAFBgQoQBCAAQYDYAWogAUGCChAEIABBgOABaiABQYMKEAQgAEGA6AFqIAFBhAoQBAv+AwEHfwJ/QcARKAIAIgIgAEEHakF4cSIDQQdqQXhxIgFqIQACQCABQQAgACACTRtFBEAgAD8AQRB0TQ0BIAAQAQ0BC0HgEUEwNgIAQX8MAQtBwBEgADYCACACCyICQX9HBEAgAiADaiIAQQRrQRA2AgAgAEEQayIEQRA2AgACQAJ/QfAZKAIAIgEEfyABKAIIBUEACyACRgRAIAIgAkEEaygCAEF+cSIGayIFQQRrKAIAIQcgASAANgIIIAUgB0F+cSIBayIAIAAoAgBqQQRrLQAAQQFxBEAgACgCBCIEIAAoAggiBTYCCCAFIAQ2AgQgACADIAZqIAFqQRBrIgE2AgAMAwsgAkEQawwBCyACQRA2AgAgAiAANgIIIAIgATYCBCACQRA2AgxB8BkgAjYCACACQRBqCyIAIAQgAGsiATYCAAsgACABQXxxakEEayABQQFyNgIAIAACfyAAKAIAQQhrIgFB/wBNBEAgAUEDdkEBawwBCyABQR0gAWciA2t2QQRzIANBAnRrQe4AaiABQf8fTQ0AGkE/IAFBHiADa3ZBAnMgA0EBdGtBxwBqIgEgAUE/TxsLIgFBBHQiA0HwEWo2AgQgACADQfgRaiIDKAIANgIIIAMgADYCACAAKAIIIAA2AgRB+BlB+BkpAwBCASABrYaENwMACyACQX9HCzcBAX8jAEEQayIDJAAgAyACOwAOIAAQDyAAIAFBwAAQBSAAIANBDmpBAhAFIAAQECADQRBqJAALxQICB38DfiACKAIAIQMCf0EAIAFFDQAaIAGtIQwDQCAKpyICIAogAykDyAEiC1oNARogACACaiADIAogC30iC6dBqAFqQXhxaikDACALQgOGiDwAACAKQgF8IgogDFINAAsgAQshAiADIAMpA8gBIAKtfTcDyAEgASACayIEBEAgACACaiEAA0AgAxARQagBIAQgBEGoAU8bIgVBAXFBACECIARBAUcEQCAFQf4BcSEHQQAhAQNAIAAgAmogAyACQXhxaiIIKQMAIAJBA3RBMHGtiDwAACAAIAJBAXIiCWogCCkDACAJQQN0QThxrYg8AAAgAkECaiECIAFBAmoiASAHRw0ACwsEQCAAIAJqIAMgAkF4cWopAwAgAkEDdEE4ca2IPAAACyADQagBIAVrrTcDyAEgACAFaiEAIAQgBWsiBA0ACwsLTgAgACABEBIgAEGAAWogAUGACGoQEiAAQYACaiABQYAQahASIABBgANqIAFBgBhqEBIgAEGABGogAUGAIGoQEiAAQYAFaiABQYAoahASC1QBAX9BASECAkAgACABEAoNACAAQYAIaiABEAoNACAAQYAQaiABEAoNACAAQYAYaiABEAoNACAAQYAgaiABEAoNACAAQYAoaiABEApBAEchAgsgAgtuACAAIAEgAhAcIABBgAhqIAFBgAhqIAJBgAhqEBwgAEGAEGogAUGAEGogAkGAEGoQHCAAQYAYaiABQYAYaiACQYAYahAcIABBgCBqIAFBgCBqIAJBgCBqEBwgAEGAKGogAUGAKGogAkGAKGoQHAtuACAAIAEgAhADIABBgAhqIAFBgAhqIAJBgAhqEAMgAEGAEGogAUGAEGogAkGAEGoQAyAAQYAYaiABQYAYaiACQYAYahADIABBgCBqIAFBgCBqIAJBgCBqEAMgAEGAKGogAUGAKGogAkGAKGoQAwtSAQF/QQEhAQJAIABBvP4fEAoNACAAQYAIakG8/h8QCg0AIABBgBBqQbz+HxAKDQAgAEGAGGpBvP4fEAoNACAAQYAgakG8/h8QCkEARyEBCyABC/0CAgd+AX8gAa0iBiAAKQPIASIEIAOtIgh8WARAA0BBACELQgAhBSAEpyABRwRAA0AgACAEIAV8IgSnQXhxaiILIAspAwAgAiAFp2oxAAAgBEIDhoaFNwMAIAVCAXwiBSABIAApA8gBIgSnayILrVQNAAsLIABCADcDyAEgABARIAIgC2ohAiAAKQPIASIEIAMgC2siA60iCHwgBloNAAsLIAAgAwR+IAOtIgRCAYNCACEFIANBAUcEQCAEQv7///8PgyEJQgAhBANAIAAgACkDyAEgBXwiB6dBeHFqIgEgASkDACACIAWnajEAACAHQgOGhoU3AwAgACAFQgGEIgcgACkDyAF8IgqnQXhxaiIBIAEpAwAgAiAHp2oxAAAgCkIDhoaFNwMAIAVCAnwhBSAEQgJ8IgQgCVINAAsLpwRAIAAgACkDyAEgBXwiBKdBeHFqIgEgASkDACACIAWnajEAACAEQgOGhoU3AwALIAApA8gBBSAECyAIfDcDyAEL0wECA38BfiMAQaABayIDJAAgA0EMaiICEA8gAiABQTAQBSACEBAgA0EQakGIASACEA0gAykDECEFIABBAEGACPwLAEHPASEEQQghAQNAIAFBiAFPBEAgA0EQakGIASADQQxqEA1BACEBCyADQRBqIAFqIQIgAUEBaiEBIAQgAi0AACICSQ0AIAAgBEECdGogACACQQJ0aiICKAIANgIAIAJBASAFp0EBdEECcWs2AgAgBUIBiCEFIARBAWoiBEGAAkcNAAsgA0EMahAOIANBoAFqJAALEAAgACgCAEGoASABIAIQNQsGACAAECcLtRMBDH8jAEHQtwNrIgkkAAJAAkAgAUHtGUcNACAFQf8BSw0AIAlBsLEDaiIRIgEgBi0AADoAACABIAYtAAE6AAEgASAGLQACOgACIAEgBi0AAzoAAyABIAYtAAQ6AAQgASAGLQAFOgAFIAEgBi0ABjoABiABIAYtAAc6AAcgASAGLQAIOgAIIAEgBi0ACToACSABIAYtAAo6AAogASAGLQALOgALIAEgBi0ADDoADCABIAYtAA06AA0gASAGLQAOOgAOIAEgBi0ADzoADyABIAYtABA6ABAgASAGLQAROgARIAEgBi0AEjoAEiABIAYtABM6ABMgASAGLQAUOgAUIAEgBi0AFToAFSABIAYtABY6ABYgASAGLQAXOgAXIAEgBi0AGDoAGCABIAYtABk6ABkgASAGLQAaOgAaIAEgBi0AGzoAGyABIAYtABw6ABwgASAGLQAdOgAdIAEgBi0AHjoAHiABIAYtAB86AB8gCUGQ4ABqIg0iASAGQSBqEBUgAUGACGogBkHgAmoQFSABQYAQaiAGQaAFahAVIAFBgBhqIAZB4AdqEBUgAUGAIGogBkGgCmoQFSABQYAoaiAGQeAMahAVIAlBwLADaiISIgEgAC0AADoAACABIAAtAAE6AAEgASAALQACOgACIAEgAC0AAzoAAyABIAAtAAQ6AAQgASAALQAFOgAFIAEgAC0ABjoABiABIAAtAAc6AAcgASAALQAIOgAIIAEgAC0ACToACSABIAAtAAo6AAogASAALQALOgALIAEgAC0ADDoADCABIAAtAA06AA0gASAALQAOOgAOIAEgAC0ADzoADyABIAAtABA6ABAgASAALQAROgARIAEgAC0AEjoAEiABIAAtABM6ABMgASAALQAUOgAUIAEgAC0AFToAFSABIAAtABY6ABYgASAALQAXOgAXIAEgAC0AGDoAGCABIAAtABk6ABkgASAALQAaOgAaIAEgAC0AGzoAGyABIAAtABw6ABwgASAALQAdOgAdIAEgAC0AHjoAHiABIAAtAB86AB8gASAALQAgOgAgIAEgAC0AIToAISABIAAtACI6ACIgASAALQAjOgAjIAEgAC0AJDoAJCABIAAtACU6ACUgASAALQAmOgAmIAEgAC0AJzoAJyABIAAtACg6ACggASAALQApOgApIAEgAC0AKjoAKiABIAAtACs6ACsgASAALQAsOgAsIAEgAC0ALToALSABIAAtAC46AC4gASAALQAvOgAvIAlBkJABaiIQIgEgAEEwahAhIAFBgAhqIABBsAVqECEgAUGAEGogAEGwCmoQISABQYAYaiAAQbAPahAhIAFBgCBqIABBsBRqECEgCUEQaiILQQBBgAj8CwBBASEPAkAgAC0A5xkiB0E3Sw0AIABBsBlqIQwCQAJAIAdFDQBBASEBIAsgAC0AsBlBAnRqQQE2AgAgAC0A5xkiB0ECSQ0AA0AgASAMaiIHLQAAIgggB0EBay0AAE0NAiALIAhBAnRqQQE2AgAgAUEBaiIBIAAtAOcZIgdJDQALCyALQYAIaiIKQQBBgAj8CwAgAC0A6BkiCEE3Sw0BIAcgCEsNAQJAIAcgCE8NACAHIAxqLQAAQQJ0IApqQQE2AgAgB0EBaiIBIAAtAOgZIghPDQADQCABIAxqIg4tAAAhCCABIAdLBEAgCCAOQQFrLQAATQ0DCyAKIAhBAnRqQQE2AgAgAUEBaiIBIAAtAOgZIghJDQALCyALQYAQaiIKQQBB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IgUgBEHg0ANqIgNBABAJIAVBgAhqIANBARAJIAVBgBBqIANBAhAJIAVBgBhqIANBAxAJIAVBgCBqIANBBBAJIARBgOAAaiIFIANBBRAJIAVBgAhqIANBBhAJIAVBgBBqIANBBxAJIAVBgBhqIANBCBAJIAVBgCBqIANBCRAJIAVBgChqIANBChAJIARBgJABaiIGIAdBgCj8CgAAIAYQIyAEQYAwaiIDIAggBhArIAMQHyADEB4gAyADIAUQMyADECogAyAEIAMQGiADQYAIaiIGIARBgAhqIAYQGiADQYAQaiIIIARBgBBqIAgQGiADQYAYaiIJIARBgBhqIAkQGiADQYAgaiIKIARBgCBqIAoQGiADQYAoaiILIARBgChqIAsQGiAAIAItAAA6AAAgACACLQABOgABIAAgAi0AAjoAAiAAIAItAAM6AAMgACACLQAEOgAEIAAgAi0ABToABSAAIAItAAY6AAYgACACLQAHOgAHIAAgAi0ACDoACCAAIAItAAk6AAkgACACLQAKOgAKIAAgAi0ACzoACyAAIAItAAw6AAwgACACLQANOgANIAAgAi0ADjoADiAAIAItAA86AA8gACACLQAQOgAQIAAgAi0AEToAESAAIAItABI6ABIgACACLQATOgATIAAgAi0AFDoAFCAAIAItABU6ABUgACACLQAWOgAWIAAgAi0AFzoAFyAAIAItABg6ABggACACLQAZOgAZIAAgAi0AGjoAGiAAIAItABs6ABsgACACLQAcOgAcIAAgAi0AHToAHSAAIAItAB46AB4gACACLQAfOgAfIABBIGogAxAWIABB4AJqIAYQFiAAQaAFaiAIEBYgAEHgB2ogCRAWIABBoApqIAoQFiAAQeAMaiALEBYgBEGA0ANqIgNBwAAgAEGgDxAkIAEgAi0AADoAACABIAItAAE6AAEgASACLQACOgACIAEgAi0AAzoAAyABIAItAAQ6AAQgASACLQAFOgAFIAEgAi0ABjoABiABIAItAAc6AAcgASACLQAIOgAIIAEgAi0ACToACSABIAItAAo6AAogASACLQALOgALIAEgAi0ADDoADCABIAItAA06AA0gASACLQAOOgAOIAEgAi0ADzoADyABIAItABA6ABAgASACLQAROgARIAEgAi0AEjoAEiABIAItABM6ABMgASACLQAUOgAUIAEgAi0AFToAFSABIAItABY6ABYgASACLQAXOgAXIAEgAi0AGDoAGCABIAItABk6ABkgASACLQAaOgAaIAEgAi0AGzoAGyABIAItABw6ABwgASACLQAdOgAdIAEgAi0AHjoAHiABIAItAB86AB8gASAEQaDRA2oiAC0AADoAICABIAAtAAE6ACEgASAALQACOgAiIAEgAC0AAzoAIyABIAAtAAQ6ACQgASAALQAFOgAlIAEgAC0ABjoAJiABIAAtAAc6ACcgASAALQAIOgAoIAEgAC0ACToAKSABIAAtAAo6ACogASAALQALOgArIAEgAC0ADDoALCABIAAtAA06AC0gASAALQAOOgAuIAEgAC0ADzoALyABIAAtABA6ADAgASAALQAROgAxIAEgAC0AEjoAMiABIAAtABM6ADMgASAALQAUOgA0IAEgAC0AFToANSABIAAtABY6ADYgASAALQAXOgA3IAEgAC0AGDoAOCABIAAtABk6ADkgASAALQAaOgA6IAEgAC0AGzoAOyABIAAtABw6ADwgASAALQAdOgA9IAEgAC0AHjoAPiABIAAtAB86AD8gAUFAayECQQAhAANAIAAgAmogACADai0AADoAACACIABBAXIiBmogAyAGai0AADoAACACIABBAnIiBmogAyAGai0AADoAACACIABBA3IiBmogAyAGai0AADoAACAAQQRqIgBBwABHDQALIAFBgAFqIAcQCCABQYACaiAHQYAIahAIIAFBgANqIAdBgBBqEAggAUGABGogB0GAGGoQCCABQYAFaiAHQYAgahAIIAFBgAZqIAUQCCABQYAHaiAFQYAIahAIIAFBgAhqIAVBgBBqEAggAUGACWogBUGAGGoQCCABQYAKaiAFQYAgahAIIAFBgAtqIAVBgChqEAggAUGADGogBBAUIAFBoA9qIARBgAhqEBQgAUHAEmogBEGAEGoQFCABQeAVaiAEQYAYahAUIAFBgBlqIARBgCBqEBQgAUGgHGogBEGAKGoQFCAEQcDRA2okAEEACzQBA38DQCAAQQR0IgEgAUHwEWoiAjYC9BEgASACNgL4ESAAQQFqIgBBwABHDQALQTAQLRoLC88JAgBBgAgLvwkBAAAAAAAAAIKAAAAAAAAAioAAAAAAAIAAgACAAAAAgIuAAAAAAAAAAQAAgAAAAACBgACAAAAAgAmAAAAAAACAigAAAAAAAACIAAAAAAAAAAmAAIAAAAAACgAAgAAAAACLgACAAAAAAIsAAAAAAACAiYAAAAAAAIADgAAAAAAAgAKAAAAAAACAgAAAAAAAAIAKgAAAAAAAAAoAAIAAAACAgYAAgAAAAICAgAAAAAAAgAEAAIAAAAAACIAAgAAAAIAAAAAA92QAAAIx2P8DFfj/RJ4DABgh9P8oofL/JB4HACveGwAr6SMArYT6/38U4P91mi8ACfvT/0l6LwAn5SgAWJYpAHCgDwCkhe//iLc2AJCd9/+g6u7/aPknAHvT3//Wrd//5xrF//ek6v+Y/M3/NdAaACK0//8BMj0AxUUEAGdKKQAgdgEAzfQuAMXeNQADpeb/LDDJ/9RH2f+vvjsAhRXF/3yO0f+WijYAQT7U/wAENgBNavv/nNYjAF3F9/89Eub/1urm/x5+NQBZr8X/P4Q1ABdW3/9clOf/jHM4AKhjDACaGwgAdo8OAFM4OwA0hTsAMPzY/1SdHwAtT9X/5QbE/4Gs6P/P4cf/GZjR/13W6f/uCTUAxzUhALvP5/91z+z/cpcdAHKwwf/2vPD/gFLP/67Sz//gkMj/yu8BAPIQNACF/vD/OMYgAJ9uKQCjt9L/S6TH/226+f8JNNr/gsL1/xNB7f87pv//9wns/90r+v/UlRQAY0UcAGIs6v/p+8z/8AoEABfEBwCIRS8AAK0AAL427/9EzQ0AWmc8AMorx/9+3v//SDkZAMBpzv9sdSQA38f8/6GYCwAI6Ov/bOQCAAjIyf/CNjAA9r/j/5M82//gSv3/BRMUAJJ3FAAlnhMA4NDn/0SZ8/8CCOr/ou7R/5zHxP9XoMj/2Zc6AJPqHwBa/zMA1FgjAPhBOgBy/8z/+z0iAJ+r2v8ipMn/9RIEAIclJQDwJO3/XZs1AKBIyv/8osb/Vrvt/95Fz/9evg0AGl4cAObgDQBafwwAg48HAIpi5/8EV////Ab4/yEA9v/2WtD/hAAfAIbvMAB9ucn/1vz3/5JF9P/CIcn/GTkFAAxhBABBzdr/G7A+AOdyNAA7AM3/x3waACQZAwDlXisAmREpADp62P9xTRMAHOE9AIQJEwBR8CUARloYABiFxv++FBMAkTgoAJDbyf+JUNL/P4UcAEsLHQCm9u//vqjr/xvhEgA+Xs3/Ly3q/+Qd+f/HBhQAg3IyAG4N4v9Teez/mUAdAHgl2f+tBev/BeQWAOfbCwDoHSIAz/gzADS59/8MytT/+H/m/1fR4/8bkdj/EizH/9gQCQAfXsb/WEbh/4sdJQC3cyUAj3z9/5jdHQCYaDMAu9QCAKeT7f++bM//HHwCAAiqGABx/S0ApVwMAJo3GQBnocf/PYzk/zyh0f85xTUAFQE7AMAdBAD3xCEA9Bvx/+c1GgAONAcARX35/9BMGgCufOT/aCYdAJiO5v8zJu//2gX8/9t/xf9kJ9P/r+Hd/92T+f8JHd3/k8wCAAUY8f8qnBgAqeXJ/1CK9/8szzsATkP//9826//KFTwAaF4VALYW8//OKR4AQcERCwINBA=="); } function getBinarySync(file) { if (ArrayBuffer.isView(file)) { return file; } if (readBinary) { return readBinary(file); } throw "both async and sync fetching of the wasm failed"; } async function getWasmBinary(binaryFile) { return getBinarySync(binaryFile); } async function instantiateArrayBuffer(binaryFile, imports) { try { var binary = await getWasmBinary(binaryFile); var instance = await WebAssembly.instantiate(binary, imports); return instance; } catch (reason) { err(`failed to asynchronously prepare wasm: ${reason}`); abort(reason); } } async function instantiateAsync(binary, binaryFile, imports) { return instantiateArrayBuffer(binaryFile, imports); } function getWasmImports() { return { a: wasmImports }; } async function createWasm() { function receiveInstance(instance, module) { wasmExports = instance.exports; wasmMemory = wasmExports["c"]; updateMemoryViews(); assignWasmExports(wasmExports); removeRunDependency("wasm-instantiate"); return wasmExports; } addRunDependency("wasm-instantiate"); function receiveInstantiationResult(result2) { return receiveInstance(result2["instance"]); } var info = getWasmImports(); wasmBinaryFile ??= findWasmBinary(); var result = await instantiateAsync(wasmBinary, wasmBinaryFile, info); var exports = receiveInstantiationResult(result); return exports; } class ExitStatus { name = "ExitStatus"; constructor(status) { this.message = `Program terminated with exit(${status})`; this.status = status; } } var base64Decode = (b64) => { var b1, b2, i2 = 0, j = 0, bLength = b64.length; var output = new Uint8Array((bLength * 3 >> 2) - (b64[bLength - 2] == "=") - (b64[bLength - 1] == "=")); for (; i2 < bLength; i2 += 4, j += 3) { b1 = base64ReverseLookup[b64.charCodeAt(i2 + 1)]; b2 = base64ReverseLookup[b64.charCodeAt(i2 + 2)]; output[j] = base64ReverseLookup[b64.charCodeAt(i2)] << 2 | b1 >> 4; output[j + 1] = b1 << 4 | b2 >> 2; output[j + 2] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i2 + 3)]; } return output; }; function getValue(ptr, type = "i8") { if (type.endsWith("*")) type = "*"; switch (type) { case "i1": return HEAP8[ptr]; case "i8": return HEAP8[ptr]; case "i16": return HEAP16[ptr >> 1]; case "i32": return HEAP32[ptr >> 2]; case "i64": return HEAP64[ptr >> 3]; case "float": return HEAPF32[ptr >> 2]; case "double": return HEAPF64[ptr >> 3]; case "*": return HEAPU32[ptr >> 2]; default: abort(`invalid type for getValue: ${type}`); } } function setValue(ptr, value, type = "i8") { if (type.endsWith("*")) type = "*"; switch (type) { case "i1": HEAP8[ptr] = value; break; case "i8": HEAP8[ptr] = value; break; case "i16": HEAP16[ptr >> 1] = value; break; case "i32": HEAP32[ptr >> 2] = value; break; case "i64": HEAP64[ptr >> 3] = BigInt(value); break; case "float": HEAPF32[ptr >> 2] = value; break; case "double": HEAPF64[ptr >> 3] = value; break; case "*": HEAPU32[ptr >> 2] = value; break; default: abort(`invalid type for setValue: ${type}`); } } var getHeapMax = () => 2147483648; var alignMemory = (size, alignment) => Math.ceil(size / alignment) * alignment; var growMemory = (size) => { var oldHeapSize = wasmMemory.buffer.byteLength; var pages = (size - oldHeapSize + 65535) / 65536 | 0; try { wasmMemory.grow(pages); updateMemoryViews(); return 1; } catch (e) { } }; var _emscripten_resize_heap = (requestedSize) => { var oldSize = HEAPU8.length; requestedSize >>>= 0; var maxHeapSize = getHeapMax(); if (requestedSize > maxHeapSize) { return false; } for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown); overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296); var newSize = Math.min(maxHeapSize, alignMemory(Math.max(requestedSize, overGrownHeapSize), 65536)); var replacement = growMemory(newSize); if (replacement) { return true; } } return false; }; var keepRuntimeAlive = () => true; var _proc_exit = (code) => { EXITSTATUS = code; if (!keepRuntimeAlive()) { ABORT = true; } quit_(code, new ExitStatus(code)); }; var exitJS = (status, implicit) => { EXITSTATUS = status; _proc_exit(status); }; var _exit = exitJS; for (var base64ReverseLookup = new Uint8Array(123), i = 25; i >= 0; --i) { base64ReverseLookup[48 + i] = 52 + i; base64ReverseLookup[65 + i] = i; base64ReverseLookup[97 + i] = 26 + i; } base64ReverseLookup[43] = 62; base64ReverseLookup[47] = 63; { } Module["setValue"] = setValue; Module["getValue"] = getValue; var _malloc, _free, _mldsa65_keypair, _mldsa65_sign, _mldsa65_verify; function assignWasmExports(wasmExports2) { Module["_malloc"] = _malloc = wasmExports2["e"]; Module["_free"] = _free = wasmExports2["f"]; Module["_mldsa65_keypair"] = _mldsa65_keypair = wasmExports2["g"]; Module["_mldsa65_sign"] = _mldsa65_sign = wasmExports2["h"]; Module["_mldsa65_verify"] = _mldsa65_verify = wasmExports2["i"]; } var wasmImports = { b: _emscripten_resize_heap, a: _exit }; var wasmExports = await createWasm(); function run() { if (runDependencies > 0) { dependenciesFulfilled = run; return; } preRun(); if (runDependencies > 0) { dependenciesFulfilled = run; return; } function doRun() { Module["calledRun"] = true; if (ABORT) return; initRuntime(); readyPromiseResolve?.(Module); postRun(); } { doRun(); } } function preInit() { } preInit(); run(); if (runtimeInitialized) { moduleRtn = Module; } else { moduleRtn = new Promise((resolve, reject) => { readyPromiseResolve = resolve; readyPromiseReject = reject; }); } ; return moduleRtn; } var wasm_module_default = MLDSA65Module; // src/mldsa.ts var ALGORITHM_NAME = "ML-DSA-65"; var JWK_ALG = "ML-DSA-65"; var KEY_USAGES = ["sign", "verify"]; var MlDsaOperationError = class extends Error { constructor(message) { super(message); this.name = "OperationError"; } }; var MlDsaInvalidAccessError = class extends Error { constructor(message) { super(message); this.name = "InvalidAccessError"; } }; var MlDsaNotSupportedError = class extends Error { constructor(message) { super(message); this.name = "NotSupportedError"; } }; var MlDsaDataError = class extends Error { constructor(message) { super(message); this.name = "DataError"; } }; var internalKeyData = /* @__PURE__ */ new WeakMap(); function getInternalKeyData(key) { const keyData = internalKeyData.get(key); if (!keyData) { throw new TypeError("Unknown key object"); } return keyData; } var cleanupRegistry = new FinalizationRegistry((keyData) => { keyData.publicKeyData.fill(0); keyData.privateSeedData?.fill(0); keyData.privateSecretKeyData?.fill(0); }); function getPublicKeyDataRef(key) { const keyData = getInternalKeyData(key); if (!keyData.publicKeyData) { throw new MlDsaOperationError("Failed to get public key data"); } return keyData.publicKeyData; } function getPrivateKeyDataRef(key) { const keyData = getInternalKeyData(key); if (!keyData.privateSeedData || !keyData.privateSecretKeyData) { throw new MlDsaOperationError("Failed to get private key data"); } return keyData; } var noClone = Symbol("CryptoKey created by mldsa-wasm cannot be cloned"); var keyIdKey = "_mldsa_wasm"; var emptyToJSON = () => ({}); function createKeyObject(type, extractable, usages, keyData) { const key = { type, extractable, algorithm: Object.freeze({ name: ALGORITHM_NAME }), usages: Object.freeze(Array.from(usages)), [keyIdKey]: noClone // to prevent structured cloning }; Object.defineProperty(key, "toJSON", { value: emptyToJSON, writable: false, enumerable: false, configurable: false }); Object.setPrototypeOf(key, CryptoKey.prototype); internalKeyData.set(key, keyData); cleanupRegistry.register(key, keyData); return Object.freeze(key); } function createPublicKey(publicKeyData, usages) { return createKeyObject("public", true, usages, { publicKeyData }); } function createPrivateKey(publicKeyData, privateSeedData, privateSecretKeyData, extractable, usages) { return createKeyObject("private", extractable, usages, { publicKeyData, privateSeedData, privateSecretKeyData }); } function _isSupportedCryptoKey(key) { return key instanceof CryptoKey && keyIdKey in key && key[keyIdKey] == noClone && internalKeyData.has(key); } function toBase64url(data) { return btoa(String.fromCharCode(...data)).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, ""); } function fromBase64url(base64url) { const base64 = base64url.replace(/-/g, "+").replace(/_/g, "/"); const binary = atob(base64 + "===".slice((base64.length + 3) % 4)); return Uint8Array.from(binary, (c) => c.charCodeAt(0)); } var PUBLICKEY_BYTES = 1952; var SECRETKEY_BYTES = 4032; var SIGNATURE_BYTES = 3309; var KEYPAIR_SEED_BYTES = 32; var SIGN_RANDOM_BYTES = 32; var _module; async function getModule() { if (!_module) { _module = await wasm_module_default(); } return _module; } var getRandomValues = crypto.getRandomValues.bind(crypto); function normalizeAlgorithm(algorithm) { const name = typeof algorithm === "string" ? algorithm.toUpperCase() : typeof algorithm === "object" && algorithm !== null && "name" in algorithm && typeof algorithm.name === "string" ? algorithm.name.toUpperCase() : null; if (name !== ALGORITHM_NAME) { throw new TypeError("Unsuppo