UNPKG

@duckdb/duckdb-wasm

Version:
4 lines 4.12 MB
{ "version": 3, "sources": ["../../js-sha256/src/sha256.js", "../../ws/browser.js", "../src/bindings/duckdb-mvp.js", "../src/bindings/duckdb-eh.js", "../src/targets/duckdb-browser-blocking.ts", "../src/bindings/connection.ts", "../src/status.ts", "../src/bindings/udf_runtime.ts", "../src/bindings/runtime.ts", "../src/bindings/file_stats.ts", "../src/json_typedef.ts", "../src/bindings/bindings_base.ts", "../src/bindings/config.ts", "../src/bindings/insert_options.ts", "../src/bindings/tokens.ts", "../src/log.ts", "../../wasm-feature-detect/dist/esm/index.js", "../package.json", "../src/version.ts", "../src/platform.ts", "../src/utils/s3_helper.ts", "../src/bindings/runtime_browser.ts", "../src/bindings/bindings_browser_mvp.ts", "../src/bindings/bindings_browser_base.ts", "../src/bindings/bindings_browser_eh.ts"], "sourcesContent": ["/**\n * [js-sha256]{@link https://github.com/emn178/js-sha256}\n *\n * @version 0.11.1\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2025\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var ERROR = 'input is invalid type';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA256_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node && process.type != 'renderer';\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var EXTRA = [-2147483648, 8388608, 32768, 128];\n var SHIFT = [24, 16, 8, 0];\n var K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ];\n var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];\n\n var blocks = [];\n\n if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (outputType, is224) {\n return function (message) {\n return new Sha256(is224, true).update(message)[outputType]();\n };\n };\n\n var createMethod = function (is224) {\n var method = createOutputMethod('hex', is224);\n if (NODE_JS) {\n method = nodeWrap(method, is224);\n }\n method.create = function () {\n return new Sha256(is224);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createOutputMethod(type, is224);\n }\n return method;\n };\n\n var nodeWrap = function (method, is224) {\n var crypto = require('crypto')\n var Buffer = require('buffer').Buffer;\n var algorithm = is224 ? 'sha224' : 'sha256';\n var bufferFrom;\n if (Buffer.from && !root.JS_SHA256_NO_BUFFER_FROM) {\n bufferFrom = Buffer.from;\n } else {\n bufferFrom = function (message) {\n return new Buffer(message);\n };\n }\n var nodeMethod = function (message) {\n if (typeof message === 'string') {\n return crypto.createHash(algorithm).update(message, 'utf8').digest('hex');\n } else {\n if (message === null || message === undefined) {\n throw new Error(ERROR);\n } else if (message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n }\n }\n if (Array.isArray(message) || ArrayBuffer.isView(message) ||\n message.constructor === Buffer) {\n return crypto.createHash(algorithm).update(bufferFrom(message)).digest('hex');\n } else {\n return method(message);\n }\n };\n return nodeMethod;\n };\n\n var createHmacOutputMethod = function (outputType, is224) {\n return function (key, message) {\n return new HmacSha256(key, is224, true).update(message)[outputType]();\n };\n };\n\n var createHmacMethod = function (is224) {\n var method = createHmacOutputMethod('hex', is224);\n method.create = function (key) {\n return new HmacSha256(key, is224);\n };\n method.update = function (key, message) {\n return method.create(key).update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createHmacOutputMethod(type, is224);\n }\n return method;\n };\n\n function Sha256(is224, sharedMemory) {\n if (sharedMemory) {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n this.blocks = blocks;\n } else {\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n\n if (is224) {\n this.h0 = 0xc1059ed8;\n this.h1 = 0x367cd507;\n this.h2 = 0x3070dd17;\n this.h3 = 0xf70e5939;\n this.h4 = 0xffc00b31;\n this.h5 = 0x68581511;\n this.h6 = 0x64f98fa7;\n this.h7 = 0xbefa4fa4;\n } else { // 256\n this.h0 = 0x6a09e667;\n this.h1 = 0xbb67ae85;\n this.h2 = 0x3c6ef372;\n this.h3 = 0xa54ff53a;\n this.h4 = 0x510e527f;\n this.h5 = 0x9b05688c;\n this.h6 = 0x1f83d9ab;\n this.h7 = 0x5be0cd19;\n }\n\n this.block = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n this.is224 = is224;\n }\n\n Sha256.prototype.update = function (message) {\n if (this.finalized) {\n return;\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n notString = true;\n }\n var code, index = 0, i, length = message.length, blocks = this.blocks;\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks[0] = this.block;\n this.block = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n\n if (notString) {\n for (i = this.start; index < length && i < 64; ++index) {\n blocks[i >>> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >>> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >>> 2] |= (0xc0 | (code >>> 6)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >>> 2] |= (0xe0 | (code >>> 12)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | ((code >>> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >>> 2] |= (0xf0 | (code >>> 18)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | ((code >>> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | ((code >>> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.block = blocks[16];\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n };\n\n Sha256.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex;\n blocks[16] = this.block;\n blocks[i >>> 2] |= EXTRA[i & 3];\n this.block = blocks[16];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n blocks[14] = this.hBytes << 3 | this.bytes >>> 29;\n blocks[15] = this.bytes << 3;\n this.hash();\n };\n\n Sha256.prototype.hash = function () {\n var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6,\n h = this.h7, blocks = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc;\n\n for (j = 16; j < 64; ++j) {\n // rightrotate\n t1 = blocks[j - 15];\n s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3);\n t1 = blocks[j - 2];\n s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ (t1 >>> 10);\n blocks[j] = blocks[j - 16] + s0 + blocks[j - 7] + s1 << 0;\n }\n\n bc = b & c;\n for (j = 0; j < 64; j += 4) {\n if (this.first) {\n if (this.is224) {\n ab = 300032;\n t1 = blocks[0] - 1413257819;\n h = t1 - 150054599 << 0;\n d = t1 + 24177077 << 0;\n } else {\n ab = 704751109;\n t1 = blocks[0] - 210244248;\n h = t1 - 1521486534 << 0;\n d = t1 + 143694565 << 0;\n }\n this.first = false;\n } else {\n s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));\n s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));\n ab = a & b;\n maj = ab ^ (a & c) ^ bc;\n ch = (e & f) ^ (~e & g);\n t1 = h + s1 + ch + K[j] + blocks[j];\n t2 = s0 + maj;\n h = d + t1 << 0;\n d = t1 + t2 << 0;\n }\n s0 = ((d >>> 2) | (d << 30)) ^ ((d >>> 13) | (d << 19)) ^ ((d >>> 22) | (d << 10));\n s1 = ((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7));\n da = d & a;\n maj = da ^ (d & b) ^ ab;\n ch = (h & e) ^ (~h & f);\n t1 = g + s1 + ch + K[j + 1] + blocks[j + 1];\n t2 = s0 + maj;\n g = c + t1 << 0;\n c = t1 + t2 << 0;\n s0 = ((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10));\n s1 = ((g >>> 6) | (g << 26)) ^ ((g >>> 11) | (g << 21)) ^ ((g >>> 25) | (g << 7));\n cd = c & d;\n maj = cd ^ (c & a) ^ da;\n ch = (g & h) ^ (~g & e);\n t1 = f + s1 + ch + K[j + 2] + blocks[j + 2];\n t2 = s0 + maj;\n f = b + t1 << 0;\n b = t1 + t2 << 0;\n s0 = ((b >>> 2) | (b << 30)) ^ ((b >>> 13) | (b << 19)) ^ ((b >>> 22) | (b << 10));\n s1 = ((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7));\n bc = b & c;\n maj = bc ^ (b & d) ^ cd;\n ch = (f & g) ^ (~f & h);\n t1 = e + s1 + ch + K[j + 3] + blocks[j + 3];\n t2 = s0 + maj;\n e = a + t1 << 0;\n a = t1 + t2 << 0;\n this.chromeBugWorkAround = true;\n }\n\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n this.h4 = this.h4 + e << 0;\n this.h5 = this.h5 + f << 0;\n this.h6 = this.h6 + g << 0;\n this.h7 = this.h7 + h << 0;\n };\n\n Sha256.prototype.hex = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var hex = HEX_CHARS[(h0 >>> 28) & 0x0F] + HEX_CHARS[(h0 >>> 24) & 0x0F] +\n HEX_CHARS[(h0 >>> 20) & 0x0F] + HEX_CHARS[(h0 >>> 16) & 0x0F] +\n HEX_CHARS[(h0 >>> 12) & 0x0F] + HEX_CHARS[(h0 >>> 8) & 0x0F] +\n HEX_CHARS[(h0 >>> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n HEX_CHARS[(h1 >>> 28) & 0x0F] + HEX_CHARS[(h1 >>> 24) & 0x0F] +\n HEX_CHARS[(h1 >>> 20) & 0x0F] + HEX_CHARS[(h1 >>> 16) & 0x0F] +\n HEX_CHARS[(h1 >>> 12) & 0x0F] + HEX_CHARS[(h1 >>> 8) & 0x0F] +\n HEX_CHARS[(h1 >>> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n HEX_CHARS[(h2 >>> 28) & 0x0F] + HEX_CHARS[(h2 >>> 24) & 0x0F] +\n HEX_CHARS[(h2 >>> 20) & 0x0F] + HEX_CHARS[(h2 >>> 16) & 0x0F] +\n HEX_CHARS[(h2 >>> 12) & 0x0F] + HEX_CHARS[(h2 >>> 8) & 0x0F] +\n HEX_CHARS[(h2 >>> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n HEX_CHARS[(h3 >>> 28) & 0x0F] + HEX_CHARS[(h3 >>> 24) & 0x0F] +\n HEX_CHARS[(h3 >>> 20) & 0x0F] + HEX_CHARS[(h3 >>> 16) & 0x0F] +\n HEX_CHARS[(h3 >>> 12) & 0x0F] + HEX_CHARS[(h3 >>> 8) & 0x0F] +\n HEX_CHARS[(h3 >>> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n HEX_CHARS[(h4 >>> 28) & 0x0F] + HEX_CHARS[(h4 >>> 24) & 0x0F] +\n HEX_CHARS[(h4 >>> 20) & 0x0F] + HEX_CHARS[(h4 >>> 16) & 0x0F] +\n HEX_CHARS[(h4 >>> 12) & 0x0F] + HEX_CHARS[(h4 >>> 8) & 0x0F] +\n HEX_CHARS[(h4 >>> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F] +\n HEX_CHARS[(h5 >>> 28) & 0x0F] + HEX_CHARS[(h5 >>> 24) & 0x0F] +\n HEX_CHARS[(h5 >>> 20) & 0x0F] + HEX_CHARS[(h5 >>> 16) & 0x0F] +\n HEX_CHARS[(h5 >>> 12) & 0x0F] + HEX_CHARS[(h5 >>> 8) & 0x0F] +\n HEX_CHARS[(h5 >>> 4) & 0x0F] + HEX_CHARS[h5 & 0x0F] +\n HEX_CHARS[(h6 >>> 28) & 0x0F] + HEX_CHARS[(h6 >>> 24) & 0x0F] +\n HEX_CHARS[(h6 >>> 20) & 0x0F] + HEX_CHARS[(h6 >>> 16) & 0x0F] +\n HEX_CHARS[(h6 >>> 12) & 0x0F] + HEX_CHARS[(h6 >>> 8) & 0x0F] +\n HEX_CHARS[(h6 >>> 4) & 0x0F] + HEX_CHARS[h6 & 0x0F];\n if (!this.is224) {\n hex += HEX_CHARS[(h7 >>> 28) & 0x0F] + HEX_CHARS[(h7 >>> 24) & 0x0F] +\n HEX_CHARS[(h7 >>> 20) & 0x0F] + HEX_CHARS[(h7 >>> 16) & 0x0F] +\n HEX_CHARS[(h7 >>> 12) & 0x0F] + HEX_CHARS[(h7 >>> 8) & 0x0F] +\n HEX_CHARS[(h7 >>> 4) & 0x0F] + HEX_CHARS[h7 & 0x0F];\n }\n return hex;\n };\n\n Sha256.prototype.toString = Sha256.prototype.hex;\n\n Sha256.prototype.digest = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var arr = [\n (h0 >>> 24) & 0xFF, (h0 >>> 16) & 0xFF, (h0 >>> 8) & 0xFF, h0 & 0xFF,\n (h1 >>> 24) & 0xFF, (h1 >>> 16) & 0xFF, (h1 >>> 8) & 0xFF, h1 & 0xFF,\n (h2 >>> 24) & 0xFF, (h2 >>> 16) & 0xFF, (h2 >>> 8) & 0xFF, h2 & 0xFF,\n (h3 >>> 24) & 0xFF, (h3 >>> 16) & 0xFF, (h3 >>> 8) & 0xFF, h3 & 0xFF,\n (h4 >>> 24) & 0xFF, (h4 >>> 16) & 0xFF, (h4 >>> 8) & 0xFF, h4 & 0xFF,\n (h5 >>> 24) & 0xFF, (h5 >>> 16) & 0xFF, (h5 >>> 8) & 0xFF, h5 & 0xFF,\n (h6 >>> 24) & 0xFF, (h6 >>> 16) & 0xFF, (h6 >>> 8) & 0xFF, h6 & 0xFF\n ];\n if (!this.is224) {\n arr.push((h7 >>> 24) & 0xFF, (h7 >>> 16) & 0xFF, (h7 >>> 8) & 0xFF, h7 & 0xFF);\n }\n return arr;\n };\n\n Sha256.prototype.array = Sha256.prototype.digest;\n\n Sha256.prototype.arrayBuffer = function () {\n this.finalize();\n\n var buffer = new ArrayBuffer(this.is224 ? 28 : 32);\n var dataView = new DataView(buffer);\n dataView.setUint32(0, this.h0);\n dataView.setUint32(4, this.h1);\n dataView.setUint32(8, this.h2);\n dataView.setUint32(12, this.h3);\n dataView.setUint32(16, this.h4);\n dataView.setUint32(20, this.h5);\n dataView.setUint32(24, this.h6);\n if (!this.is224) {\n dataView.setUint32(28, this.h7);\n }\n return buffer;\n };\n\n function HmacSha256(key, is224, sharedMemory) {\n var i, type = typeof key;\n if (type === 'string') {\n var bytes = [], length = key.length, index = 0, code;\n for (i = 0; i < length; ++i) {\n code = key.charCodeAt(i);\n if (code < 0x80) {\n bytes[index++] = code;\n } else if (code < 0x800) {\n bytes[index++] = (0xc0 | (code >>> 6));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes[index++] = (0xe0 | (code >>> 12));\n bytes[index++] = (0x80 | ((code >>> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (key.charCodeAt(++i) & 0x3ff));\n bytes[index++] = (0xf0 | (code >>> 18));\n bytes[index++] = (0x80 | ((code >>> 12) & 0x3f));\n bytes[index++] = (0x80 | ((code >>> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n }\n }\n key = bytes;\n } else {\n if (type === 'object') {\n if (key === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) {\n key = new Uint8Array(key);\n } else if (!Array.isArray(key)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n }\n\n if (key.length > 64) {\n key = (new Sha256(is224, true)).update(key).array();\n }\n\n var oKeyPad = [], iKeyPad = [];\n for (i = 0; i < 64; ++i) {\n var b = key[i] || 0;\n oKeyPad[i] = 0x5c ^ b;\n iKeyPad[i] = 0x36 ^ b;\n }\n\n Sha256.call(this, is224, sharedMemory);\n\n this.update(iKeyPad);\n this.oKeyPad = oKeyPad;\n this.inner = true;\n this.sharedMemory = sharedMemory;\n }\n HmacSha256.prototype = new Sha256();\n\n HmacSha256.prototype.finalize = function () {\n Sha256.prototype.finalize.call(this);\n if (this.inner) {\n this.inner = false;\n var innerHash = this.array();\n Sha256.call(this, this.is224, this.sharedMemory);\n this.update(this.oKeyPad);\n this.update(innerHash);\n Sha256.prototype.finalize.call(this);\n }\n };\n\n var exports = createMethod();\n exports.sha256 = exports;\n exports.sha224 = createMethod(true);\n exports.sha256.hmac = createHmacMethod();\n exports.sha224.hmac = createHmacMethod(true);\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.sha256 = exports.sha256;\n root.sha224 = exports.sha224;\n if (AMD) {\n define(function () {\n return exports;\n });\n }\n }\n})();\n", "'use strict';\n\nmodule.exports = function () {\n throw new Error(\n 'ws does not work in the browser. Browser clients must use the native ' +\n 'WebSocket object'\n );\n};\n", "var DuckDB = (() => {\n var _scriptName = typeof document != 'undefined' ? document.currentScript?.src : undefined;\n if (typeof __filename != 'undefined') _scriptName = _scriptName || __filename;\n return (\n function(moduleArg = {}) {\n var moduleRtn;\n\n var Module = moduleArg;\n var readyPromiseResolve, readyPromiseReject;\n var readyPromise = new Promise((resolve, reject) => {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject\n });\n var ENVIRONMENT_IS_WEB = typeof window == \"object\";\n var ENVIRONMENT_IS_WORKER = typeof WorkerGlobalScope != \"undefined\";\n var ENVIRONMENT_IS_NODE = typeof process == \"object\" && typeof process.versions == \"object\" && typeof process.versions.node == \"string\" && process.type != \"renderer\";\n var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;\n if (ENVIRONMENT_IS_NODE) {}\n var moduleOverrides = Object.assign({}, Module);\n var arguments_ = [];\n var thisProgram = \"./this.program\";\n var quit_ = (status, toThrow) => {\n throw toThrow\n };\n var scriptDirectory = \"\";\n\n function locateFile(path) {\n if (Module[\"locateFile\"]) {\n return Module[\"locateFile\"](path, scriptDirectory)\n }\n return scriptDirectory + path\n }\n var readAsync, readBinary;\n if (ENVIRONMENT_IS_NODE) {\n var fs = require(\"fs\");\n var nodePath = require(\"path\");\n scriptDirectory = __dirname + \"/\";\n readBinary = filename => {\n filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename);\n var ret = fs.readFileSync(filename);\n return ret\n };\n readAsync = (filename, binary = true) => {\n filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename);\n return new Promise((resolve, reject) => {\n fs.readFile(filename, binary ? undefined : \"utf8\", (err, data) => {\n if (err) reject(err);\n else resolve(binary ? data.buffer : data)\n })\n })\n };\n if (!Module[\"thisProgram\"] && process.argv.length > 1) {\n thisProgram = process.argv[1].replace(/\\\\/g, \"/\")\n }\n arguments_ = process.argv.slice(2);\n quit_ = (status, toThrow) => {\n process.exitCode = status;\n throw toThrow\n }\n } else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) {\n scriptDirectory = self.location.href\n } else if (typeof document != \"undefined\" && document.currentScript) {\n scriptDirectory = document.currentScript.src\n }\n if (_scriptName) {\n scriptDirectory = _scriptName\n }\n if (scriptDirectory.startsWith(\"blob:\")) {\n scriptDirectory = \"\"\n } else {\n scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1)\n } {\n if (ENVIRONMENT_IS_WORKER) {\n readBinary = url => {\n var xhr = new XMLHttpRequest;\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response)\n }\n }\n readAsync = url => fetch(url, {\n credentials: \"same-origin\"\n }).then(response => {\n if (response.ok) {\n return response.arrayBuffer()\n }\n return Promise.reject(new Error(response.status + \" : \" + response.url))\n })\n }\n } else {}\n var out = Module[\"print\"] || console.log.bind(console);\n var err = Module[\"printErr\"] || console.error.bind(console);\n Object.assign(Module, moduleOverrides);\n moduleOverrides = null;\n if (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n if (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n var dynamicLibraries = Module[\"dynamicLibraries\"] || [];\n var wasmBinary = Module[\"wasmBinary\"];\n var wasmMemory;\n var ABORT = false;\n var EXITSTATUS;\n\n function assert(condition, text) {\n if (!condition) {\n abort(text)\n }\n }\n var HEAP, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n\n function updateMemoryViews() {\n var b = wasmMemory.buffer;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(b)\n }\n if (Module[\"wasmMemory\"]) {\n wasmMemory = Module[\"wasmMemory\"]\n } else {\n var INITIAL_MEMORY = Module[\"INITIAL_MEMORY\"] || 16777216;\n wasmMemory = new WebAssembly.Memory({\n initial: INITIAL_MEMORY / 65536,\n maximum: 65536\n })\n }\n updateMemoryViews();\n var __ATPRERUN__ = [];\n var __ATINIT__ = [];\n var __ATMAIN__ = [];\n var __ATEXIT__ = [];\n var __ATPOSTRUN__ = [];\n var __RELOC_FUNCS__ = [];\n var runtimeInitialized = false;\n\n function preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [Module[\"preRun\"]];\n while (Module[\"preRun\"].length) {\n addOnPreRun(Module[\"preRun\"].shift())\n }\n }\n callRuntimeCallbacks(__ATPRERUN__)\n }\n\n function initRuntime() {\n runtimeInitialized = true;\n callRuntimeCallbacks(__RELOC_FUNCS__);\n if (!Module[\"noFSInit\"] && !FS.initialized) FS.init();\n FS.ignorePermissions = false;\n TTY.init();\n SOCKFS.root = FS.mount(SOCKFS, {}, null);\n PIPEFS.root = FS.mount(PIPEFS, {}, null);\n callRuntimeCallbacks(__ATINIT__)\n }\n\n function preMain() {\n callRuntimeCallbacks(__ATMAIN__)\n }\n\n function postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [Module[\"postRun\"]];\n while (Module[\"postRun\"].length) {\n addOnPostRun(Module[\"postRun\"].shift())\n }\n }\n callRuntimeCallbacks(__ATPOSTRUN__)\n }\n\n function addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb)\n }\n\n function addOnInit(cb) {\n __ATINIT__.unshift(cb)\n }\n\n function addOnPreMain(cb) {\n __ATMAIN__.unshift(cb)\n }\n\n function addOnExit(cb) {}\n\n function addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb)\n }\n var runDependencies = 0;\n var runDependencyWatcher = null;\n var dependenciesFulfilled = null;\n\n function getUniqueRunDependency(id) {\n return id\n }\n\n function addRunDependency(id) {\n runDependencies++;\n Module[\"monitorRunDependencies\"]?.(runDependencies)\n }\n\n function removeRunDependency(id) {\n runDependencies--;\n Module[\"monitorRunDependencies\"]?.(runDependencies);\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback()\n }\n }\n }\n\n function abort(what) {\n Module[\"onAbort\"]?.(what);\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject(e);\n throw e\n }\n var dataURIPrefix = \"data:application/octet-stream;base64,\";\n var isDataURI = filename => filename.startsWith(dataURIPrefix);\n var isFileURI = filename => filename.startsWith(\"file://\");\n\n function findWasmBinary() {\n var f = \"./duckdb-mvp.wasm\";\n if (!isDataURI(f)) {\n return locateFile(f)\n }\n return f\n }\n var wasmBinaryFile;\n\n function getBinarySync(file) {\n if (file == wasmBinaryFile && wasmBinary) {\n return new Uint8Array(wasmBinary)\n }\n if (readBinary) {\n return readBinary(file)\n }\n throw \"both async and sync fetching of the wasm failed\"\n }\n\n function getBinaryPromise(binaryFile) {\n if (!wasmBinary) {\n return readAsync(binaryFile).then(response => new Uint8Array(response), () => getBinarySync(binaryFile))\n }\n return Promise.resolve().then(() => getBinarySync(binaryFile))\n }\n\n function instantiateArrayBuffer(binaryFile, imports, receiver) {\n return getBinaryPromise(binaryFile).then(binary => WebAssembly.instantiate(binary, imports)).then(receiver, reason => {\n err(`failed to asynchronously prepare wasm: ${reason}`);\n abort(reason)\n })\n }\n\n function instantiateAsync(binary, binaryFile, imports, callback) {\n if (!binary && typeof WebAssembly.instantiateStreaming == \"function\" && !isDataURI(binaryFile) && !ENVIRONMENT_IS_NODE && typeof fetch == \"function\") {\n return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(response => {\n var result = WebAssembly.instantiateStreaming(response, imports);\n return result.then(callback, function(reason) {\n err(`wasm streaming compile failed: ${reason}`);\n err(\"falling back to ArrayBuffer instantiation\");\n return instantiateArrayBuffer(binaryFile, imports, callback)\n })\n })\n }\n return instantiateArrayBuffer(binaryFile, imports, callback)\n }\n\n function getWasmImports() {\n return {\n env: wasmImports,\n wasi_snapshot_preview1: wasmImports,\n \"GOT.mem\": new Proxy(wasmImports, GOTHandler),\n \"GOT.func\": new Proxy(wasmImports, GOTHandler)\n }\n }\n\n function createWasm() {\n var info = getWasmImports();\n\n function receiveInstance(instance, module) {\n wasmExports = instance.exports;\n wasmExports = relocateExports(wasmExports, 1024);\n var metadata = getDylinkMetadata(module);\n if (metadata.neededDynlibs) {\n dynamicLibraries = metadata.neededDynlibs.concat(dynamicLibraries)\n }\n mergeLibSymbols(wasmExports, \"main\");\n LDSO.init();\n loadDylibs();\n wasmExports = applySignatureConversions(wasmExports);\n addOnInit(wasmExports[\"__wasm_call_ctors\"]);\n __RELOC_FUNCS__.push(wasmExports[\"__wasm_apply_data_relocs\"]);\n removeRunDependency(\"wasm-instantiate\");\n return wasmExports\n }\n addRunDependency(\"wasm-instantiate\");\n\n function receiveInstantiationResult(result) {\n receiveInstance(result[\"instance\"], result[\"module\"])\n }\n if (Module[\"instantiateWasm\"]) {\n try {\n return Module[\"instantiateWasm\"](info, receiveInstance)\n } catch (e) {\n err(`Module.instantiateWasm callback failed with error: ${e}`);\n readyPromiseReject(e)\n }\n }\n wasmBinaryFile ??= findWasmBinary();\n instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);\n return {}\n }\n var tempDouble;\n var tempI64;\n var ASM_CONSTS = {\n 2507640: ($0, $1, $2, $3) => {\n var url = UTF8ToString($0);\n if (typeof XMLHttpRequest === \"undefined\") {\n return 0\n }\n const xhr = new XMLHttpRequest;\n if (false && url.startsWith(\"http://\")) {\n url = \"https://\" + url.substr(7)\n }\n xhr.open(UTF8ToString($3), url, false);\n xhr.responseType = \"arraybuffer\";\n var i = 0;\n var len = $1;\n while (i < len * 2) {\n var ptr1 = HEAP32[$2 / 4 + i >>> 0];\n var ptr2 = HEAP32[$2 / 4 + i + 1 >>> 0];\n try {\n var z = encodeURI(UTF8ToString(ptr1));\n if (z === \"Host\") z = \"X-Host-Override\";\n if (z === \"User-Agent\") z = \"X-user-agent\";\n if (z === \"Authorization\") {\n xhr.setRequestHeader(z, UTF8ToString(ptr2))\n } else {\n xhr.setRequestHeader(z, encodeURI(UTF8ToString(ptr2)))\n }\n } catch (error) {\n console.warn(\"Error while performing XMLHttpRequest.setRequestHeader()\", error)\n }\n i += 2\n }\n try {\n xhr.send(null)\n } catch {\n return 0\n }\n if (xhr.status >= 400) return 0;\n var uInt8Array = xhr.response;\n var len = uInt8Array.byteLength;\n var fileOnWasmHeap = _malloc(len + 4);\n var properArray = new Uint8Array(uInt8Array);\n for (var iii = 0; iii < len; iii++) {\n Module.HEAPU8[iii + fileOnWasmHeap + 4] = properArray[iii]\n }\n var LEN123 = new Uint8Array(4);\n LEN123[0] = len % 256;\n len -= LEN123[0];\n len /= 256;\n LEN123[1] = len % 256;\n len -= LEN123[1];\n len /= 256;\n LEN123[2] = len % 256;\n len -= LEN123[2];\n len /= 256;\n LEN123[3] = len % 256;\n len -= LEN123[3];\n len /= 256;\n Module.HEAPU8.set(LEN123, fileOnWasmHeap);\n return fileOnWasmHeap\n },\n 2509047: ($0, $1, $2, $3, $4, $5) => {\n var url = UTF8ToString($0);\n if (typeof XMLHttpRequest === \"undefined\") {\n return 0\n }\n const xhr = new XMLHttpRequest;\n if (false && url.startsWith(\"http://\")) {\n url = \"https://\" + url.substr(7)\n }\n xhr.open(UTF8ToString($3), url, false);\n xhr.responseType = \"arraybuffer\";\n var i = 0;\n var len = $1;\n while (i < len * 2) {\n var ptr1 = HEAP32[$2 / 4 + i >>> 0];\n var ptr2 = HEAP32[$2 / 4 + i + 1 >>> 0];\n try {\n var z = encodeURI(UTF8ToString(ptr1));\n if (z === \"Host\") z = \"X-Host-Override\";\n if (z === \"User-Agent\") z = \"X-user-agent\";\n if (z === \"Authorization\") {\n xhr.setRequestHeader(z, UTF8ToString(ptr2))\n } else {\n xhr.setRequestHeader(z, encodeURI(UTF8ToString(ptr2)))\n }\n } catch (error) {\n console.warn(\"Error while performing XMLHttpRequest.setRequestHeader()\", error)\n }\n i += 2\n }\n try {\n var post_payload = new Uint8Array($5);\n for (var iii = 0; iii < $5; iii++) {\n post_payload[iii] = Module.HEAPU8[iii + $4]\n }\n xhr.send(post_payload)\n } catch {\n return 0\n }\n if (xhr.status >= 400) return 0;\n var uInt8Array = Uint8Array.from(Array.from(xhr.getResponseHeader(\"Etag\")).map(letter => letter.charCodeAt(0)));\n var len = uInt8Array.byteLength;\n var fileOnWasmHeap = _malloc(len + 4);\n var properArray = new Uint8Array(uInt8Array);\n for (var iii = 0; iii < len; iii++) {\n Module.HEAPU8[iii + fileOnWasmHeap + 4] = properArray[iii]\n }\n var LEN123 = new Uint8Array(4);\n LEN123[0] = len % 256;\n len -= LEN123[0];\n len /= 256;\n LEN123[1] = len % 256;\n len -= LEN123[1];\n len /= 256;\n LEN123[2] = len % 256;\n len -= LEN123[2];\n len /= 256;\n LEN123[3] = len % 256;\n len -= LEN123[3];\n len /= 256;\n Module.HEAPU8.set(LEN123, fileOnWasmHeap);\n return fileOnWasmHeap\n },\n 2510667: ($0, $1, $2, $3) => {\n var url = UTF8ToString($0);\n if (typeof XMLHttpRequest === \"undefined\") {\n return 0\n }\n const xhr = new XMLHttpRequest;\n if (false && url.startsWith(\"http://\")) {\n url = \"https://\" + url.substr(7)\n }\n xhr.open(UTF8ToString($3), url, false);\n xhr.responseType = \"arraybuffer\";\n var i = 0;\n var len = $1;\n while (i < len * 2) {\n var ptr1 = HEAP32[$2 / 4 + i >>> 0];\n var ptr2 = HEAP32[$2 / 4 + i + 1 >>> 0];\n console.log(\"HEAD\", UTF8ToString(ptr1), UTF8ToString(ptr2));\n try {\n var z = encodeURI(UTF8ToString(ptr1));\n if (z === \"Host\") z = \"X-Host-Override\";\n if (z === \"User-Agent\") z = \"X-user-agent\";\n if (z === \"Authorization\") {\n xhr.setRequestHeader(z, UTF8ToString(ptr2))\n } else {\n xhr.setRequestHeader(z, encodeURI(UTF8ToString(ptr2)))\n }\n } catch (error) {\n console.warn(\"Error while performing XMLHttpRequest.setRequestHeader()\", error)\n }\n i += 2\n }\n try {\n xhr.send(null)\n } catch {\n return 0\n }\n if (xhr.status >= 400) return 0;\n var uInt8Array = xhr.response;\n var len = uInt8Array.byteLength;\n var fileOnWasmHeap = _malloc(len + 8);\n var properArray = new Uint8Array(uInt8Array);\n for (var iii = 0; iii < len; iii++) {\n Module.HEAPU8[iii + fileOnWasmHeap + 8] = properArray[iii]\n }\n var LEN123 = new Uint8Array(4);\n LEN123[0] = len % 256;\n len -= LEN123[0];\n len /= 256;\n LEN123[1] = len % 256;\n len -= LEN123[1];\n len /= 256;\n LEN123[2] = len % 256;\n len -= LEN123[2];\n len /= 256;\n LEN123[3] = len % 256;\n len -= LEN123[3];\n len /= 256;\n Module.HEAPU8.set(LEN123, fileOnWasmHeap + 4);\n var headers = Uint8Array.from(Array.from(xhr.getAllResponseHeaders()).map(letter => letter.charCodeAt(0)));\n len = headers.byteLength;\n var headersOnWasmHeap = _malloc(len + 8);\n for (var iii = 0; iii < len; iii++) {\n Module.HEAPU8[iii + headersOnWasmHeap + 8] = headers[iii]\n }\n LEN123 = new Uint8Array(4);\n LEN123[0] = len % 256;\n len -= LEN123[0];\n len /= 256;\n LEN123[1] = len % 256;\n len -= LEN123[1];\n len /= 256;\n LEN123[2] = len % 256;\n len -= LEN123[2];\n len /= 256;\n LEN123[3] = len % 256;\n len -= LEN123[3];\n len /= 256;\n Module.HEAPU8.set(LEN123, headersOnWasmHeap + 4);\n len = headersOnWasmHeap;\n LEN123 = new Uint8Array(4);\n LEN123[0] = len % 256;\n len -= LEN123[0];\n len /= 256;\n LEN123[1] = len % 256;\n len -= LEN123[1];\n len /= 256;\n LEN123[2] = len % 256;\n len -= LEN123[2];\n len /= 256;\n LEN123[3] = len % 256;\n len -= LEN123[3];\n len /= 256;\n Module.HEAPU8.set(LEN123, fileOnWasmHeap);\n return fileOnWasmHeap\n },\n 2513012: ($0, $1, $2, $3) => {\n var url = UTF8ToString($0);\n if (typeof XMLHttpRequest === \"undefined\") {\n return 0\n }\n const xhr = new XMLHttpRequest;\n if (false && url.startsWith(\"http://\")) {\n url = \"https://\" + url.substr(7)\n }\n xhr.open(UTF8ToString($3), url, false);\n xhr.responseType = \"arraybuffer\";\n var i = 0;\n var len = $1;\n while (i < len * 2) {\n var ptr1 = HEAP32[$2 / 4 + i >>> 0];\n var ptr2 = HEAP32[$2 / 4 + i + 1 >>> 0];\n try {\n var z = encodeURI(UTF8ToString(ptr1));\n if (z === \"Host\") z = \"X-Host-Override\";\n if (z === \"User-Agent\") z = \"X-user-agent\";\n if (z === \"Authorization\") {\n xhr.setRequestHeader(z, UTF8ToString(ptr2))\n } else {\n xhr.setRequestHeader(z, encodeURI(UTF8ToString(ptr2)))\n }\n } catch (error) {\n console.warn(\"Error while performing XMLHttpRequest.setRequestHeader()\", error)\n }\n i += 2\n }\n try {\n xhr.send(null)\n } catch {\n return 0\n }\n if (xhr.status >= 400) return 0;\n var uInt8Array = xhr.response;\n var len = uInt8Array.byteLength;\n var fileOnWasmHeap = _malloc(len + 4);\n var properArray = new Uint8Array(uInt8Array);\n for (var iii = 0; iii < len; iii++) {\n Module.HEAPU8[iii + fileOnWasmHeap + 4] = properArray[iii]\n }\n var LEN123 = new Uint8Array(4);\n LEN123[0] = len % 256;\n len -= LEN123[0];\n len /= 256;\n LEN123[1] = len % 256;\n len -= LEN123[1];\n len /= 256;\n LEN123[2] = len % 256;\n len -= LEN123[2];\n len /= 256;\n LEN123[3] = len % 256;\n len -= LEN123[3];\n len /= 256;\n Module.HEAPU8.set(LEN123, fileOnWasmHeap);\n return fileOnWasmHeap\n },\n 2514419: ($0, $1, $2, $3, $4, $5) => {\n var url = UTF8ToString($0);\n if (typeof XMLHttpRequest === \"undefined\") {\n return 0\n }\n const xhr = new XMLHttpRequest;\n if (false && url.startsWith(\"http://\")) {\n url = \"https://\" + url.substr(7)\n }\n xhr.open(UTF8ToString($3), url, false);\n xhr.responseType = \"arraybuffer\";\n var i = 0;\n var len = $1;\n while (i < len * 2) {\n var ptr1 = HEAP32[$2 / 4 + i >>> 0];\n var ptr2 = HEAP32[$2 / 4 + i + 1 >>> 0];\n try {\n var z = encodeURI(UTF8ToString(ptr1));\n if (z === \"Host\") z = \"X-Host-Override\";\n if (z === \"User-Agent\") z = \"X-user-agent\";\n if (z === \"Authorization\") {\n xhr.setRequestHeader(z, UTF8ToString(ptr2))\n } else {\n xhr.setRequestHeader(z, encodeURI(UTF8ToString(ptr2)))\n }\n } catch (error) {\n console.warn(\"Error while performing XMLHttpRequest.setRequestHeader()\", error)\n }\n i += 2\n }\n