{"version":3,"file":"413.a34b7c2590a9b327dc23.js","mappings":"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","sources":["webpack://telegram-t/./node_modules/@cryptography/aes/dist/es/aes.js","webpack://telegram-t/./node_modules/async-mutex/lib/Mutex.js","webpack://telegram-t/./node_modules/async-mutex/lib/Semaphore.js","webpack://telegram-t/./node_modules/async-mutex/lib/errors.js","webpack://telegram-t/./node_modules/async-mutex/lib/index.js","webpack://telegram-t/./node_modules/async-mutex/lib/tryAcquire.js","webpack://telegram-t/./node_modules/async-mutex/lib/withTimeout.js","webpack://telegram-t/./node_modules/base64-js/index.js","webpack://telegram-t/./node_modules/big-integer/BigInteger.js","webpack://telegram-t/./node_modules/buffer/index.js","webpack://telegram-t/./node_modules/es5-ext/global.js","webpack://telegram-t/./node_modules/idb-keyval/dist/cjs/index.js","webpack://telegram-t/./node_modules/ieee754/index.js","webpack://telegram-t/./node_modules/os-browserify/browser.js","webpack://telegram-t/./node_modules/safari-14-idb-fix/dist/cjs/index.js","webpack://telegram-t/./node_modules/tslib/tslib.es6.js","webpack://telegram-t/./node_modules/websocket/lib/browser.js","webpack://telegram-t/./node_modules/websocket/lib/version.js"],"sourcesContent":["var S = new Uint8Array(256);\nvar Si = new Uint8Array(256);\nvar T1 = new Uint32Array(256);\nvar T2 = new Uint32Array(256);\nvar T3 = new Uint32Array(256);\nvar T4 = new Uint32Array(256);\nvar T5 = new Uint32Array(256);\nvar T6 = new Uint32Array(256);\nvar T7 = new Uint32Array(256);\nvar T8 = new Uint32Array(256);\nfunction computeTables() {\n var d = new Uint8Array(256);\n var t = new Uint8Array(256);\n var x2;\n var x4;\n var x8;\n var s;\n var tEnc;\n var tDec;\n var x = 0;\n var xInv = 0;\n // Compute double and third tables\n for (var i = 0; i < 256; i++) {\n d[i] = i << 1 ^ (i >> 7) * 283;\n t[d[i] ^ i] = i;\n }\n for (; !S[x]; x ^= x2 || 1) {\n // Compute sbox\n s = xInv ^ xInv << 1 ^ xInv << 2 ^ xInv << 3 ^ xInv << 4;\n s = s >> 8 ^ s & 255 ^ 99;\n S[x] = s;\n Si[s] = x;\n // Compute MixColumns\n x8 = d[x4 = d[x2 = d[x]]];\n tDec = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100;\n tEnc = d[s] * 0x101 ^ s * 0x1010100;\n T1[x] = tEnc = tEnc << 24 ^ tEnc >>> 8;\n T2[x] = tEnc = tEnc << 24 ^ tEnc >>> 8;\n T3[x] = tEnc = tEnc << 24 ^ tEnc >>> 8;\n T4[x] = tEnc = tEnc << 24 ^ tEnc >>> 8;\n T5[s] = tDec = tDec << 24 ^ tDec >>> 8;\n T6[s] = tDec = tDec << 24 ^ tDec >>> 8;\n T7[s] = tDec = tDec << 24 ^ tDec >>> 8;\n T8[s] = tDec = tDec << 24 ^ tDec >>> 8;\n xInv = t[xInv] || 1;\n }\n}\n\n/**\n * Gets a uint32 from string in big-endian order order\n */\nfunction s2i(str, pos) {\n return (str.charCodeAt(pos) << 24\n ^ str.charCodeAt(pos + 1) << 16\n ^ str.charCodeAt(pos + 2) << 8\n ^ str.charCodeAt(pos + 3));\n}\n\n/* eslint-disable import/prefer-default-export */\n/**\n * Helper function for transforming string key to Uint32Array\n */\nfunction getWords(key) {\n if (key instanceof Uint32Array) {\n return key;\n }\n if (typeof key === 'string') {\n if (key.length % 4 !== 0)\n for (var i = key.length % 4; i <= 4; i++)\n key += '\\0x00';\n var buf = new Uint32Array(key.length / 4);\n for (var i = 0; i < key.length; i += 4)\n buf[i / 4] = s2i(key, i);\n return buf;\n }\n if (key instanceof Uint8Array) {\n var buf = new Uint32Array(key.length / 4);\n for (var i = 0; i < key.length; i += 4) {\n buf[i / 4] = (key[i] << 24\n ^ key[i + 1] << 16\n ^ key[i + 2] << 8\n ^ key[i + 3]);\n }\n return buf;\n }\n throw new Error('Unable to create 32-bit words');\n}\nfunction xor(left, right, to) {\n if (to === void 0) { to = left; }\n for (var i = 0; i < left.length; i++)\n to[i] = left[i] ^ right[i];\n}\n\ncomputeTables();\n/**\n * Low-level AES Cipher\n */\nvar AES = /** @class */ (function () {\n function AES(_key) {\n var key = getWords(_key);\n if (key.length !== 4 && key.length !== 6 && key.length !== 8) {\n throw new Error('Invalid key size');\n }\n this.encKey = new Uint32Array(4 * key.length + 28);\n this.decKey = new Uint32Array(4 * key.length + 28);\n this.encKey.set(key);\n var rcon = 1;\n var i = key.length;\n var tmp;\n // schedule encryption keys\n for (; i < 4 * key.length + 28; i++) {\n tmp = this.encKey[i - 1];\n // apply sbox\n if (i % key.length === 0 || (key.length === 8 && i % key.length === 4)) {\n tmp = S[tmp >>> 24] << 24 ^ S[(tmp >> 16) & 255] << 16 ^ S[(tmp >> 8) & 255] << 8 ^ S[tmp & 255];\n // shift rows and add rcon\n if (i % key.length === 0) {\n tmp = tmp << 8 ^ tmp >>> 24 ^ (rcon << 24);\n rcon = rcon << 1 ^ (rcon >> 7) * 283;\n }\n }\n this.encKey[i] = this.encKey[i - key.length] ^ tmp;\n }\n // schedule decryption keys\n for (var j = 0; i; j++, i--) {\n tmp = this.encKey[j & 3 ? i : i - 4];\n if (i <= 4 || j < 4) {\n this.decKey[j] = tmp;\n }\n else {\n this.decKey[j] = (T5[S[tmp >>> 24]]\n ^ T6[S[(tmp >> 16) & 255]]\n ^ T7[S[(tmp >> 8) & 255]]\n ^ T8[S[tmp & 255]]);\n }\n }\n }\n AES.prototype.encrypt = function (_message) {\n var message = getWords(_message);\n var out = new Uint32Array(4);\n var a = message[0] ^ this.encKey[0];\n var b = message[1] ^ this.encKey[1];\n var c = message[2] ^ this.encKey[2];\n var d = message[3] ^ this.encKey[3];\n var rounds = this.encKey.length / 4 - 2;\n var k = 4;\n var a2;\n var b2;\n var c2;\n // Inner rounds. Cribbed from OpenSSL.\n for (var i = 0; i < rounds; i++) {\n a2 = T1[a >>> 24] ^ T2[(b >> 16) & 255] ^ T3[(c >> 8) & 255] ^ T4[d & 255] ^ this.encKey[k];\n b2 = T1[b >>> 24] ^ T2[(c >> 16) & 255] ^ T3[(d >> 8) & 255] ^ T4[a & 255] ^ this.encKey[k + 1];\n c2 = T1[c >>> 24] ^ T2[(d >> 16) & 255] ^ T3[(a >> 8) & 255] ^ T4[b & 255] ^ this.encKey[k + 2];\n d = T1[d >>> 24] ^ T2[(a >> 16) & 255] ^ T3[(b >> 8) & 255] ^ T4[c & 255] ^ this.encKey[k + 3];\n a = a2;\n b = b2;\n c = c2;\n k += 4;\n // console.log(a, b, c, d);\n }\n // Last round.\n for (var i = 0; i < 4; i++) {\n out[i] = (S[a >>> 24] << 24\n ^ S[(b >> 16) & 255] << 16\n ^ S[(c >> 8) & 255] << 8\n ^ S[d & 255]\n ^ this.encKey[k++]);\n a2 = a;\n a = b;\n b = c;\n c = d;\n d = a2;\n }\n return out;\n };\n AES.prototype.decrypt = function (_message) {\n var message = getWords(_message);\n var out = new Uint32Array(4);\n var a = message[0] ^ this.decKey[0];\n var b = message[3] ^ this.decKey[1];\n var c = message[2] ^ this.decKey[2];\n var d = message[1] ^ this.decKey[3];\n var rounds = this.decKey.length / 4 - 2;\n var a2;\n var b2;\n var c2;\n var k = 4;\n // Inner rounds. Cribbed from OpenSSL.\n for (var i = 0; i < rounds; i++) {\n a2 = T5[a >>> 24] ^ T6[(b >> 16) & 255] ^ T7[(c >> 8) & 255] ^ T8[d & 255] ^ this.decKey[k];\n b2 = T5[b >>> 24] ^ T6[(c >> 16) & 255] ^ T7[(d >> 8) & 255] ^ T8[a & 255] ^ this.decKey[k + 1];\n c2 = T5[c >>> 24] ^ T6[(d >> 16) & 255] ^ T7[(a >> 8) & 255] ^ T8[b & 255] ^ this.decKey[k + 2];\n d = T5[d >>> 24] ^ T6[(a >> 16) & 255] ^ T7[(b >> 8) & 255] ^ T8[c & 255] ^ this.decKey[k + 3];\n a = a2;\n b = b2;\n c = c2;\n k += 4;\n }\n // Last round.\n for (var i = 0; i < 4; i++) {\n out[3 & -i] = (Si[a >>> 24] << 24\n ^ Si[(b >> 16) & 255] << 16\n ^ Si[(c >> 8) & 255] << 8\n ^ Si[d & 255]\n ^ this.decKey[k++]);\n a2 = a;\n a = b;\n b = c;\n c = d;\n d = a2;\n }\n return out;\n };\n return AES;\n}());\n\n/**\n * AES-IGE mode.\n */\nvar AES_IGE = /** @class */ (function () {\n function AES_IGE(key, iv, blockSize) {\n if (blockSize === void 0) { blockSize = 16; }\n this.key = getWords(key);\n this.iv = getWords(iv);\n this.cipher = new AES(key);\n this.blockSize = blockSize / 4;\n }\n /**\n * Encrypts plain text with AES-IGE mode.\n */\n AES_IGE.prototype.encrypt = function (message, buf) {\n var text = getWords(message);\n var cipherText = buf || new Uint32Array(text.length);\n var prevX = this.iv.subarray(this.blockSize, this.iv.length);\n var prevY = this.iv.subarray(0, this.blockSize);\n var yXOR = new Uint32Array(this.blockSize);\n for (var i = 0; i < text.length; i += this.blockSize) {\n var x = text.subarray(i, i + this.blockSize);\n xor(x, prevY, yXOR);\n var y = this.cipher.encrypt(yXOR);\n xor(y, prevX);\n prevX = x;\n prevY = y;\n for (var j = i, k = 0; j < text.length && k < 4; j++, k++)\n cipherText[j] = y[k];\n }\n return cipherText;\n };\n /**\n * Decrypts cipher text with AES-IGE mode.\n */\n AES_IGE.prototype.decrypt = function (message, buf) {\n var cipherText = getWords(message);\n var text = buf || new Uint32Array(cipherText.length);\n var prevY = this.iv.subarray(this.blockSize, this.iv.length);\n var prevX = this.iv.subarray(0, this.blockSize);\n var yXOR = new Uint32Array(this.blockSize);\n for (var i = 0; i < text.length; i += this.blockSize) {\n var x = cipherText.subarray(i, i + this.blockSize);\n xor(x, prevY, yXOR);\n var y = this.cipher.decrypt(yXOR);\n xor(y, prevX);\n prevX = x;\n prevY = y;\n for (var j = i, k = 0; j < text.length && k < 4; j++, k++)\n text[j] = y[k];\n }\n return text;\n };\n return AES_IGE;\n}());\n\n/**\n * AES-IGE mode.\n */\nvar AES_IGE$1 = /** @class */ (function () {\n function AES_IGE(key, counter, blockSize) {\n if (blockSize === void 0) { blockSize = 16; }\n this.offset = 0;\n this.key = getWords(key);\n this.counter = getWords(counter);\n this.cipher = new AES(key);\n this.blockSize = blockSize / 4;\n if (this.counter.length !== 4) {\n throw new Error('AES-CTR mode counter must be 16 bytes length');\n }\n }\n /**\n * Encrypts plain text with AES-IGE mode.\n */\n AES_IGE.prototype.encrypt = function (message, buf) {\n var text = getWords(message);\n var cipherText = buf || new Uint32Array(text.length);\n var offset = this.offset;\n for (var i = 0; i < text.length; i += this.blockSize) {\n var x = this.cipher.encrypt(this.counter);\n for (var j = i, k = offset; j < text.length && k < this.blockSize; j++, k++)\n cipherText[j] = x[k] ^ text[j];\n if (text.length - i >= this.blockSize)\n this.incrementCounter();\n if (offset) {\n i -= offset;\n offset = 0;\n }\n }\n this.offset = (this.offset + (text.length % 4)) % 4;\n return cipherText;\n };\n /**\n * Decrypts cipher text with AES-IGE mode.\n */\n AES_IGE.prototype.decrypt = function (message, buf) {\n return this.encrypt(message, buf);\n };\n AES_IGE.prototype.incrementCounter = function () {\n // increment counter\n for (var carry = this.counter.length - 1; carry >= 0; carry--) {\n if (++this.counter[carry] < 0xFFFFFFFF)\n break; // If overflowing, it'll be 0 and we'll have to continue propagating the carry\n }\n };\n return AES_IGE;\n}());\n\nexport default AES;\nexport { AES_IGE$1 as CTR, AES_IGE as IGE };\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar Semaphore_1 = require(\"./Semaphore\");\nvar Mutex = /** @class */ (function () {\n function Mutex(cancelError) {\n this._semaphore = new Semaphore_1.default(1, cancelError);\n }\n Mutex.prototype.acquire = function () {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var _a, releaser;\n return tslib_1.__generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this._semaphore.acquire()];\n case 1:\n _a = _b.sent(), releaser = _a[1];\n return [2 /*return*/, releaser];\n }\n });\n });\n };\n Mutex.prototype.runExclusive = function (callback) {\n return this._semaphore.runExclusive(function () { return callback(); });\n };\n Mutex.prototype.isLocked = function () {\n return this._semaphore.isLocked();\n };\n /** @deprecated Deprecated in 0.3.0, will be removed in 0.4.0. Use runExclusive instead. */\n Mutex.prototype.release = function () {\n this._semaphore.release();\n };\n Mutex.prototype.cancel = function () {\n return this._semaphore.cancel();\n };\n return Mutex;\n}());\nexports.default = Mutex;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar errors_1 = require(\"./errors\");\nvar Semaphore = /** @class */ (function () {\n function Semaphore(_maxConcurrency, _cancelError) {\n if (_cancelError === void 0) { _cancelError = errors_1.E_CANCELED; }\n this._maxConcurrency = _maxConcurrency;\n this._cancelError = _cancelError;\n this._queue = [];\n if (_maxConcurrency <= 0) {\n throw new Error('semaphore must be initialized to a positive value');\n }\n this._value = _maxConcurrency;\n }\n Semaphore.prototype.acquire = function () {\n var _this = this;\n var locked = this.isLocked();\n var ticketPromise = new Promise(function (resolve, reject) {\n return _this._queue.push({ resolve: resolve, reject: reject });\n });\n if (!locked)\n this._dispatch();\n return ticketPromise;\n };\n Semaphore.prototype.runExclusive = function (callback) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var _a, value, release;\n return tslib_1.__generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.acquire()];\n case 1:\n _a = _b.sent(), value = _a[0], release = _a[1];\n _b.label = 2;\n case 2:\n _b.trys.push([2, , 4, 5]);\n return [4 /*yield*/, callback(value)];\n case 3: return [2 /*return*/, _b.sent()];\n case 4:\n release();\n return [7 /*endfinally*/];\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n Semaphore.prototype.isLocked = function () {\n return this._value <= 0;\n };\n /** @deprecated Deprecated in 0.3.0, will be removed in 0.4.0. Use runExclusive instead. */\n Semaphore.prototype.release = function () {\n if (this._maxConcurrency > 1) {\n throw new Error('this method is unavailable on semaphores with concurrency > 1; use the scoped release returned by acquire instead');\n }\n if (this._currentReleaser) {\n var releaser = this._currentReleaser;\n this._currentReleaser = undefined;\n releaser();\n }\n };\n Semaphore.prototype.cancel = function () {\n var _this = this;\n this._queue.forEach(function (ticket) { return ticket.reject(_this._cancelError); });\n this._queue = [];\n };\n Semaphore.prototype._dispatch = function () {\n var _this = this;\n var nextTicket = this._queue.shift();\n if (!nextTicket)\n return;\n var released = false;\n this._currentReleaser = function () {\n if (released)\n return;\n released = true;\n _this._value++;\n _this._dispatch();\n };\n nextTicket.resolve([this._value--, this._currentReleaser]);\n };\n return Semaphore;\n}());\nexports.default = Semaphore;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.E_CANCELED = exports.E_ALREADY_LOCKED = exports.E_TIMEOUT = void 0;\nexports.E_TIMEOUT = new Error('timeout while waiting for mutex to become available');\nexports.E_ALREADY_LOCKED = new Error('mutex already locked');\nexports.E_CANCELED = new Error('request for lock canceled');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tryAcquire = exports.withTimeout = exports.Semaphore = exports.Mutex = void 0;\nvar tslib_1 = require(\"tslib\");\nvar Mutex_1 = require(\"./Mutex\");\nObject.defineProperty(exports, \"Mutex\", { enumerable: true, get: function () { return Mutex_1.default; } });\nvar Semaphore_1 = require(\"./Semaphore\");\nObject.defineProperty(exports, \"Semaphore\", { enumerable: true, get: function () { return Semaphore_1.default; } });\nvar withTimeout_1 = require(\"./withTimeout\");\nObject.defineProperty(exports, \"withTimeout\", { enumerable: true, get: function () { return withTimeout_1.withTimeout; } });\nvar tryAcquire_1 = require(\"./tryAcquire\");\nObject.defineProperty(exports, \"tryAcquire\", { enumerable: true, get: function () { return tryAcquire_1.tryAcquire; } });\ntslib_1.__exportStar(require(\"./errors\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tryAcquire = void 0;\nvar errors_1 = require(\"./errors\");\nvar withTimeout_1 = require(\"./withTimeout\");\n// eslint-disable-next-lisne @typescript-eslint/explicit-module-boundary-types\nfunction tryAcquire(sync, alreadyAcquiredError) {\n if (alreadyAcquiredError === void 0) { alreadyAcquiredError = errors_1.E_ALREADY_LOCKED; }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return withTimeout_1.withTimeout(sync, 0, alreadyAcquiredError);\n}\nexports.tryAcquire = tryAcquire;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.withTimeout = void 0;\nvar tslib_1 = require(\"tslib\");\nvar errors_1 = require(\"./errors\");\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nfunction withTimeout(sync, timeout, timeoutError) {\n var _this = this;\n if (timeoutError === void 0) { timeoutError = errors_1.E_TIMEOUT; }\n return {\n acquire: function () {\n return new Promise(function (resolve, reject) { return tslib_1.__awaiter(_this, void 0, void 0, function () {\n var isTimeout, handle, ticket, release, e_1;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n isTimeout = false;\n handle = setTimeout(function () {\n isTimeout = true;\n reject(timeoutError);\n }, timeout);\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, sync.acquire()];\n case 2:\n ticket = _a.sent();\n if (isTimeout) {\n release = Array.isArray(ticket) ? ticket[1] : ticket;\n release();\n }\n else {\n clearTimeout(handle);\n resolve(ticket);\n }\n return [3 /*break*/, 4];\n case 3:\n e_1 = _a.sent();\n if (!isTimeout) {\n clearTimeout(handle);\n reject(e_1);\n }\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n }); });\n },\n runExclusive: function (callback) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var release, ticket;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n release = function () { return undefined; };\n _a.label = 1;\n case 1:\n _a.trys.push([1, , 7, 8]);\n return [4 /*yield*/, this.acquire()];\n case 2:\n ticket = _a.sent();\n if (!Array.isArray(ticket)) return [3 /*break*/, 4];\n release = ticket[1];\n return [4 /*yield*/, callback(ticket[0])];\n case 3: return [2 /*return*/, _a.sent()];\n case 4:\n release = ticket;\n return [4 /*yield*/, callback()];\n case 5: return [2 /*return*/, _a.sent()];\n case 6: return [3 /*break*/, 8];\n case 7:\n release();\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n },\n /** @deprecated Deprecated in 0.3.0, will be removed in 0.4.0. Use runExclusive instead. */\n release: function () {\n sync.release();\n },\n cancel: function () {\n return sync.cancel();\n },\n isLocked: function () { return sync.isLocked(); },\n };\n}\nexports.withTimeout = withTimeout;\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","var bigInt = (function (undefined) {\r\n \"use strict\";\r\n\r\n var BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_INT = 9007199254740992,\r\n MAX_INT_ARR = smallToArray(MAX_INT),\r\n DEFAULT_ALPHABET = \"0123456789abcdefghijklmnopqrstuvwxyz\";\r\n\r\n var supportsNativeBigInt = typeof BigInt === \"function\";\r\n\r\n function Integer(v, radix, alphabet, caseSensitive) {\r\n if (typeof v === \"undefined\") return Integer[0];\r\n if (typeof radix !== \"undefined\") return +radix === 10 && !alphabet ? parseValue(v) : parseBase(v, radix, alphabet, caseSensitive);\r\n return parseValue(v);\r\n }\r\n\r\n function BigInteger(value, sign) {\r\n this.value = value;\r\n this.sign = sign;\r\n this.isSmall = false;\r\n }\r\n BigInteger.prototype = Object.create(Integer.prototype);\r\n\r\n function SmallInteger(value) {\r\n this.value = value;\r\n this.sign = value < 0;\r\n this.isSmall = true;\r\n }\r\n SmallInteger.prototype = Object.create(Integer.prototype);\r\n\r\n function NativeBigInt(value) {\r\n this.value = value;\r\n }\r\n NativeBigInt.prototype = Object.create(Integer.prototype);\r\n\r\n function isPrecise(n) {\r\n return -MAX_INT < n && n < MAX_INT;\r\n }\r\n\r\n function smallToArray(n) { // For performance reasons doesn't reference BASE, need to change this function if BASE changes\r\n if (n < 1e7)\r\n return [n];\r\n if (n < 1e14)\r\n return [n % 1e7, Math.floor(n / 1e7)];\r\n return [n % 1e7, Math.floor(n / 1e7) % 1e7, Math.floor(n / 1e14)];\r\n }\r\n\r\n function arrayToSmall(arr) { // If BASE changes this function may need to change\r\n trim(arr);\r\n var length = arr.length;\r\n if (length < 4 && compareAbs(arr, MAX_INT_ARR) < 0) {\r\n switch (length) {\r\n case 0: return 0;\r\n case 1: return arr[0];\r\n case 2: return arr[0] + arr[1] * BASE;\r\n default: return arr[0] + (arr[1] + arr[2] * BASE) * BASE;\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n function trim(v) {\r\n var i = v.length;\r\n while (v[--i] === 0);\r\n v.length = i + 1;\r\n }\r\n\r\n function createArray(length) { // function shamelessly stolen from Yaffle's library https://github.com/Yaffle/BigInteger\r\n var x = new Array(length);\r\n var i = -1;\r\n while (++i < length) {\r\n x[i] = 0;\r\n }\r\n return x;\r\n }\r\n\r\n function truncate(n) {\r\n if (n > 0) return Math.floor(n);\r\n return Math.ceil(n);\r\n }\r\n\r\n function add(a, b) { // assumes a and b are arrays with a.length >= b.length\r\n var l_a = a.length,\r\n l_b = b.length,\r\n r = new Array(l_a),\r\n carry = 0,\r\n base = BASE,\r\n sum, i;\r\n for (i = 0; i < l_b; i++) {\r\n sum = a[i] + b[i] + carry;\r\n carry = sum >= base ? 1 : 0;\r\n r[i] = sum - carry * base;\r\n }\r\n while (i < l_a) {\r\n sum = a[i] + carry;\r\n carry = sum === base ? 1 : 0;\r\n r[i++] = sum - carry * base;\r\n }\r\n if (carry > 0) r.push(carry);\r\n return r;\r\n }\r\n\r\n function addAny(a, b) {\r\n if (a.length >= b.length) return add(a, b);\r\n return add(b, a);\r\n }\r\n\r\n function addSmall(a, carry) { // assumes a is array, carry is number with 0 <= carry < MAX_INT\r\n var l = a.length,\r\n r = new Array(l),\r\n base = BASE,\r\n sum, i;\r\n for (i = 0; i < l; i++) {\r\n sum = a[i] - base + carry;\r\n carry = Math.floor(sum / base);\r\n r[i] = sum - carry * base;\r\n carry += 1;\r\n }\r\n while (carry > 0) {\r\n r[i++] = carry % base;\r\n carry = Math.floor(carry / base);\r\n }\r\n return r;\r\n }\r\n\r\n BigInteger.prototype.add = function (v) {\r\n var n = parseValue(v);\r\n if (this.sign !== n.sign) {\r\n return this.subtract(n.negate());\r\n }\r\n var a = this.value, b = n.value;\r\n if (n.isSmall) {\r\n return new BigInteger(addSmall(a, Math.abs(b)), this.sign);\r\n }\r\n return new BigInteger(addAny(a, b), this.sign);\r\n };\r\n BigInteger.prototype.plus = BigInteger.prototype.add;\r\n\r\n SmallInteger.prototype.add = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value;\r\n if (a < 0 !== n.sign) {\r\n return this.subtract(n.negate());\r\n }\r\n var b = n.value;\r\n if (n.isSmall) {\r\n if (isPrecise(a + b)) return new SmallInteger(a + b);\r\n b = smallToArray(Math.abs(b));\r\n }\r\n return new BigInteger(addSmall(b, Math.abs(a)), a < 0);\r\n };\r\n SmallInteger.prototype.plus = SmallInteger.prototype.add;\r\n\r\n NativeBigInt.prototype.add = function (v) {\r\n return new NativeBigInt(this.value + parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.plus = NativeBigInt.prototype.add;\r\n\r\n function subtract(a, b) { // assumes a and b are arrays with a >= b\r\n var a_l = a.length,\r\n b_l = b.length,\r\n r = new Array(a_l),\r\n borrow = 0,\r\n base = BASE,\r\n i, difference;\r\n for (i = 0; i < b_l; i++) {\r\n difference = a[i] - borrow - b[i];\r\n if (difference < 0) {\r\n difference += base;\r\n borrow = 1;\r\n } else borrow = 0;\r\n r[i] = difference;\r\n }\r\n for (i = b_l; i < a_l; i++) {\r\n difference = a[i] - borrow;\r\n if (difference < 0) difference += base;\r\n else {\r\n r[i++] = difference;\r\n break;\r\n }\r\n r[i] = difference;\r\n }\r\n for (; i < a_l; i++) {\r\n r[i] = a[i];\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n function subtractAny(a, b, sign) {\r\n var value;\r\n if (compareAbs(a, b) >= 0) {\r\n value = subtract(a, b);\r\n } else {\r\n value = subtract(b, a);\r\n sign = !sign;\r\n }\r\n value = arrayToSmall(value);\r\n if (typeof value === \"number\") {\r\n if (sign) value = -value;\r\n return new SmallInteger(value);\r\n }\r\n return new BigInteger(value, sign);\r\n }\r\n\r\n function subtractSmall(a, b, sign) { // assumes a is array, b is number with 0 <= b < MAX_INT\r\n var l = a.length,\r\n r = new Array(l),\r\n carry = -b,\r\n base = BASE,\r\n i, difference;\r\n for (i = 0; i < l; i++) {\r\n difference = a[i] + carry;\r\n carry = Math.floor(difference / base);\r\n difference %= base;\r\n r[i] = difference < 0 ? difference + base : difference;\r\n }\r\n r = arrayToSmall(r);\r\n if (typeof r === \"number\") {\r\n if (sign) r = -r;\r\n return new SmallInteger(r);\r\n } return new BigInteger(r, sign);\r\n }\r\n\r\n BigInteger.prototype.subtract = function (v) {\r\n var n = parseValue(v);\r\n if (this.sign !== n.sign) {\r\n return this.add(n.negate());\r\n }\r\n var a = this.value, b = n.value;\r\n if (n.isSmall)\r\n return subtractSmall(a, Math.abs(b), this.sign);\r\n return subtractAny(a, b, this.sign);\r\n };\r\n BigInteger.prototype.minus = BigInteger.prototype.subtract;\r\n\r\n SmallInteger.prototype.subtract = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value;\r\n if (a < 0 !== n.sign) {\r\n return this.add(n.negate());\r\n }\r\n var b = n.value;\r\n if (n.isSmall) {\r\n return new SmallInteger(a - b);\r\n }\r\n return subtractSmall(b, Math.abs(a), a >= 0);\r\n };\r\n SmallInteger.prototype.minus = SmallInteger.prototype.subtract;\r\n\r\n NativeBigInt.prototype.subtract = function (v) {\r\n return new NativeBigInt(this.value - parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.minus = NativeBigInt.prototype.subtract;\r\n\r\n BigInteger.prototype.negate = function () {\r\n return new BigInteger(this.value, !this.sign);\r\n };\r\n SmallInteger.prototype.negate = function () {\r\n var sign = this.sign;\r\n var small = new SmallInteger(-this.value);\r\n small.sign = !sign;\r\n return small;\r\n };\r\n NativeBigInt.prototype.negate = function () {\r\n return new NativeBigInt(-this.value);\r\n }\r\n\r\n BigInteger.prototype.abs = function () {\r\n return new BigInteger(this.value, false);\r\n };\r\n SmallInteger.prototype.abs = function () {\r\n return new SmallInteger(Math.abs(this.value));\r\n };\r\n NativeBigInt.prototype.abs = function () {\r\n return new NativeBigInt(this.value >= 0 ? this.value : -this.value);\r\n }\r\n\r\n\r\n function multiplyLong(a, b) {\r\n var a_l = a.length,\r\n b_l = b.length,\r\n l = a_l + b_l,\r\n r = createArray(l),\r\n base = BASE,\r\n product, carry, i, a_i, b_j;\r\n for (i = 0; i < a_l; ++i) {\r\n a_i = a[i];\r\n for (var j = 0; j < b_l; ++j) {\r\n b_j = b[j];\r\n product = a_i * b_j + r[i + j];\r\n carry = Math.floor(product / base);\r\n r[i + j] = product - carry * base;\r\n r[i + j + 1] += carry;\r\n }\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n function multiplySmall(a, b) { // assumes a is array, b is number with |b| < BASE\r\n var l = a.length,\r\n r = new Array(l),\r\n base = BASE,\r\n carry = 0,\r\n product, i;\r\n for (i = 0; i < l; i++) {\r\n product = a[i] * b + carry;\r\n carry = Math.floor(product / base);\r\n r[i] = product - carry * base;\r\n }\r\n while (carry > 0) {\r\n r[i++] = carry % base;\r\n carry = Math.floor(carry / base);\r\n }\r\n return r;\r\n }\r\n\r\n function shiftLeft(x, n) {\r\n var r = [];\r\n while (n-- > 0) r.push(0);\r\n return r.concat(x);\r\n }\r\n\r\n function multiplyKaratsuba(x, y) {\r\n var n = Math.max(x.length, y.length);\r\n\r\n if (n <= 30) return multiplyLong(x, y);\r\n n = Math.ceil(n / 2);\r\n\r\n var b = x.slice(n),\r\n a = x.slice(0, n),\r\n d = y.slice(n),\r\n c = y.slice(0, n);\r\n\r\n var ac = multiplyKaratsuba(a, c),\r\n bd = multiplyKaratsuba(b, d),\r\n abcd = multiplyKaratsuba(addAny(a, b), addAny(c, d));\r\n\r\n var product = addAny(addAny(ac, shiftLeft(subtract(subtract(abcd, ac), bd), n)), shiftLeft(bd, 2 * n));\r\n trim(product);\r\n return product;\r\n }\r\n\r\n // The following function is derived from a surface fit of a graph plotting the performance difference\r\n // between long multiplication and karatsuba multiplication versus the lengths of the two arrays.\r\n function useKaratsuba(l1, l2) {\r\n return -0.012 * l1 - 0.012 * l2 + 0.000015 * l1 * l2 > 0;\r\n }\r\n\r\n BigInteger.prototype.multiply = function (v) {\r\n var n = parseValue(v),\r\n a = this.value, b = n.value,\r\n sign = this.sign !== n.sign,\r\n abs;\r\n if (n.isSmall) {\r\n if (b === 0) return Integer[0];\r\n if (b === 1) return this;\r\n if (b === -1) return this.negate();\r\n abs = Math.abs(b);\r\n if (abs < BASE) {\r\n return new BigInteger(multiplySmall(a, abs), sign);\r\n }\r\n b = smallToArray(abs);\r\n }\r\n if (useKaratsuba(a.length, b.length)) // Karatsuba is only faster for certain array sizes\r\n return new BigInteger(multiplyKaratsuba(a, b), sign);\r\n return new BigInteger(multiplyLong(a, b), sign);\r\n };\r\n\r\n BigInteger.prototype.times = BigInteger.prototype.multiply;\r\n\r\n function multiplySmallAndArray(a, b, sign) { // a >= 0\r\n if (a < BASE) {\r\n return new BigInteger(multiplySmall(b, a), sign);\r\n }\r\n return new BigInteger(multiplyLong(b, smallToArray(a)), sign);\r\n }\r\n SmallInteger.prototype._multiplyBySmall = function (a) {\r\n if (isPrecise(a.value * this.value)) {\r\n return new SmallInteger(a.value * this.value);\r\n }\r\n return multiplySmallAndArray(Math.abs(a.value), smallToArray(Math.abs(this.value)), this.sign !== a.sign);\r\n };\r\n BigInteger.prototype._multiplyBySmall = function (a) {\r\n if (a.value === 0) return Integer[0];\r\n if (a.value === 1) return this;\r\n if (a.value === -1) return this.negate();\r\n return multiplySmallAndArray(Math.abs(a.value), this.value, this.sign !== a.sign);\r\n };\r\n SmallInteger.prototype.multiply = function (v) {\r\n return parseValue(v)._multiplyBySmall(this);\r\n };\r\n SmallInteger.prototype.times = SmallInteger.prototype.multiply;\r\n\r\n NativeBigInt.prototype.multiply = function (v) {\r\n return new NativeBigInt(this.value * parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.times = NativeBigInt.prototype.multiply;\r\n\r\n function square(a) {\r\n //console.assert(2 * BASE * BASE < MAX_INT);\r\n var l = a.length,\r\n r = createArray(l + l),\r\n base = BASE,\r\n product, carry, i, a_i, a_j;\r\n for (i = 0; i < l; i++) {\r\n a_i = a[i];\r\n carry = 0 - a_i * a_i;\r\n for (var j = i; j < l; j++) {\r\n a_j = a[j];\r\n product = 2 * (a_i * a_j) + r[i + j] + carry;\r\n carry = Math.floor(product / base);\r\n r[i + j] = product - carry * base;\r\n }\r\n r[i + l] = carry;\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n BigInteger.prototype.square = function () {\r\n return new BigInteger(square(this.value), false);\r\n };\r\n\r\n SmallInteger.prototype.square = function () {\r\n var value = this.value * this.value;\r\n if (isPrecise(value)) return new SmallInteger(value);\r\n return new BigInteger(square(smallToArray(Math.abs(this.value))), false);\r\n };\r\n\r\n NativeBigInt.prototype.square = function (v) {\r\n return new NativeBigInt(this.value * this.value);\r\n }\r\n\r\n function divMod1(a, b) { // Left over from previous version. Performs faster than divMod2 on smaller input sizes.\r\n var a_l = a.length,\r\n b_l = b.length,\r\n base = BASE,\r\n result = createArray(b.length),\r\n divisorMostSignificantDigit = b[b_l - 1],\r\n // normalization\r\n lambda = Math.ceil(base / (2 * divisorMostSignificantDigit)),\r\n remainder = multiplySmall(a, lambda),\r\n divisor = multiplySmall(b, lambda),\r\n quotientDigit, shift, carry, borrow, i, l, q;\r\n if (remainder.length <= a_l) remainder.push(0);\r\n divisor.push(0);\r\n divisorMostSignificantDigit = divisor[b_l - 1];\r\n for (shift = a_l - b_l; shift >= 0; shift--) {\r\n quotientDigit = base - 1;\r\n if (remainder[shift + b_l] !== divisorMostSignificantDigit) {\r\n quotientDigit = Math.floor((remainder[shift + b_l] * base + remainder[shift + b_l - 1]) / divisorMostSignificantDigit);\r\n }\r\n // quotientDigit <= base - 1\r\n carry = 0;\r\n borrow = 0;\r\n l = divisor.length;\r\n for (i = 0; i < l; i++) {\r\n carry += quotientDigit * divisor[i];\r\n q = Math.floor(carry / base);\r\n borrow += remainder[shift + i] - (carry - q * base);\r\n carry = q;\r\n if (borrow < 0) {\r\n remainder[shift + i] = borrow + base;\r\n borrow = -1;\r\n } else {\r\n remainder[shift + i] = borrow;\r\n borrow = 0;\r\n }\r\n }\r\n while (borrow !== 0) {\r\n quotientDigit -= 1;\r\n carry = 0;\r\n for (i = 0; i < l; i++) {\r\n carry += remainder[shift + i] - base + divisor[i];\r\n if (carry < 0) {\r\n remainder[shift + i] = carry + base;\r\n carry = 0;\r\n } else {\r\n remainder[shift + i] = carry;\r\n carry = 1;\r\n }\r\n }\r\n borrow += carry;\r\n }\r\n result[shift] = quotientDigit;\r\n }\r\n // denormalization\r\n remainder = divModSmall(remainder, lambda)[0];\r\n return [arrayToSmall(result), arrayToSmall(remainder)];\r\n }\r\n\r\n function divMod2(a, b) { // Implementation idea shamelessly stolen from Silent Matt's library http://silentmatt.com/biginteger/\r\n // Performs faster than divMod1 on larger input sizes.\r\n var a_l = a.length,\r\n b_l = b.length,\r\n result = [],\r\n part = [],\r\n base = BASE,\r\n guess, xlen, highx, highy, check;\r\n while (a_l) {\r\n part.unshift(a[--a_l]);\r\n trim(part);\r\n if (compareAbs(part, b) < 0) {\r\n result.push(0);\r\n continue;\r\n }\r\n xlen = part.length;\r\n highx = part[xlen - 1] * base + part[xlen - 2];\r\n highy = b[b_l - 1] * base + b[b_l - 2];\r\n if (xlen > b_l) {\r\n highx = (highx + 1) * base;\r\n }\r\n guess = Math.ceil(highx / highy);\r\n do {\r\n check = multiplySmall(b, guess);\r\n if (compareAbs(check, part) <= 0) break;\r\n guess--;\r\n } while (guess);\r\n result.push(guess);\r\n part = subtract(part, check);\r\n }\r\n result.reverse();\r\n return [arrayToSmall(result), arrayToSmall(part)];\r\n }\r\n\r\n function divModSmall(value, lambda) {\r\n var length = value.length,\r\n quotient = createArray(length),\r\n base = BASE,\r\n i, q, remainder, divisor;\r\n remainder = 0;\r\n for (i = length - 1; i >= 0; --i) {\r\n divisor = remainder * base + value[i];\r\n q = truncate(divisor / lambda);\r\n remainder = divisor - q * lambda;\r\n quotient[i] = q | 0;\r\n }\r\n return [quotient, remainder | 0];\r\n }\r\n\r\n function divModAny(self, v) {\r\n var value, n = parseValue(v);\r\n if (supportsNativeBigInt) {\r\n return [new NativeBigInt(self.value / n.value), new NativeBigInt(self.value % n.value)];\r\n }\r\n var a = self.value, b = n.value;\r\n var quotient;\r\n if (b === 0) throw new Error(\"Cannot divide by zero\");\r\n if (self.isSmall) {\r\n if (n.isSmall) {\r\n return [new SmallInteger(truncate(a / b)), new SmallInteger(a % b)];\r\n }\r\n return [Integer[0], self];\r\n }\r\n if (n.isSmall) {\r\n if (b === 1) return [self, Integer[0]];\r\n if (b == -1) return [self.negate(), Integer[0]];\r\n var abs = Math.abs(b);\r\n if (abs < BASE) {\r\n value = divModSmall(a, abs);\r\n quotient = arrayToSmall(value[0]);\r\n var remainder = value[1];\r\n if (self.sign) remainder = -remainder;\r\n if (typeof quotient === \"number\") {\r\n if (self.sign !== n.sign) quotient = -quotient;\r\n return [new SmallInteger(quotient), new SmallInteger(remainder)];\r\n }\r\n return [new BigInteger(quotient, self.sign !== n.sign), new SmallInteger(remainder)];\r\n }\r\n b = smallToArray(abs);\r\n }\r\n var comparison = compareAbs(a, b);\r\n if (comparison === -1) return [Integer[0], self];\r\n if (comparison === 0) return [Integer[self.sign === n.sign ? 1 : -1], Integer[0]];\r\n\r\n // divMod1 is faster on smaller input sizes\r\n if (a.length + b.length <= 200)\r\n value = divMod1(a, b);\r\n else value = divMod2(a, b);\r\n\r\n quotient = value[0];\r\n var qSign = self.sign !== n.sign,\r\n mod = value[1],\r\n mSign = self.sign;\r\n if (typeof quotient === \"number\") {\r\n if (qSign) quotient = -quotient;\r\n quotient = new SmallInteger(quotient);\r\n } else quotient = new BigInteger(quotient, qSign);\r\n if (typeof mod === \"number\") {\r\n if (mSign) mod = -mod;\r\n mod = new SmallInteger(mod);\r\n } else mod = new BigInteger(mod, mSign);\r\n return [quotient, mod];\r\n }\r\n\r\n BigInteger.prototype.divmod = function (v) {\r\n var result = divModAny(this, v);\r\n return {\r\n quotient: result[0],\r\n remainder: result[1]\r\n };\r\n };\r\n NativeBigInt.prototype.divmod = SmallInteger.prototype.divmod = BigInteger.prototype.divmod;\r\n\r\n\r\n BigInteger.prototype.divide = function (v) {\r\n return divModAny(this, v)[0];\r\n };\r\n NativeBigInt.prototype.over = NativeBigInt.prototype.divide = function (v) {\r\n return new NativeBigInt(this.value / parseValue(v).value);\r\n };\r\n SmallInteger.prototype.over = SmallInteger.prototype.divide = BigInteger.prototype.over = BigInteger.prototype.divide;\r\n\r\n BigInteger.prototype.mod = function (v) {\r\n return divModAny(this, v)[1];\r\n };\r\n NativeBigInt.prototype.mod = NativeBigInt.prototype.remainder = function (v) {\r\n return new NativeBigInt(this.value % parseValue(v).value);\r\n };\r\n SmallInteger.prototype.remainder = SmallInteger.prototype.mod = BigInteger.prototype.remainder = BigInteger.prototype.mod;\r\n\r\n BigInteger.prototype.pow = function (v) {\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value,\r\n value, x, y;\r\n if (b === 0) return Integer[1];\r\n if (a === 0) return Integer[0];\r\n if (a === 1) return Integer[1];\r\n if (a === -1) return n.isEven() ? Integer[1] : Integer[-1];\r\n if (n.sign) {\r\n return Integer[0];\r\n }\r\n if (!n.isSmall) throw new Error(\"The exponent \" + n.toString() + \" is too large.\");\r\n if (this.isSmall) {\r\n if (isPrecise(value = Math.pow(a, b)))\r\n return new SmallInteger(truncate(value));\r\n }\r\n x = this;\r\n y = Integer[1];\r\n while (true) {\r\n if (b & 1 === 1) {\r\n y = y.times(x);\r\n --b;\r\n }\r\n if (b === 0) break;\r\n b /= 2;\r\n x = x.square();\r\n }\r\n return y;\r\n };\r\n SmallInteger.prototype.pow = BigInteger.prototype.pow;\r\n\r\n NativeBigInt.prototype.pow = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value, b = n.value;\r\n var _0 = BigInt(0), _1 = BigInt(1), _2 = BigInt(2);\r\n if (b === _0) return Integer[1];\r\n if (a === _0) return Integer[0];\r\n if (a === _1) return Integer[1];\r\n if (a === BigInt(-1)) return n.isEven() ? Integer[1] : Integer[-1];\r\n if (n.isNegative()) return new NativeBigInt(_0);\r\n var x = this;\r\n var y = Integer[1];\r\n while (true) {\r\n if ((b & _1) === _1) {\r\n y = y.times(x);\r\n --b;\r\n }\r\n if (b === _0) break;\r\n b /= _2;\r\n x = x.square();\r\n }\r\n return y;\r\n }\r\n\r\n BigInteger.prototype.modPow = function (exp, mod) {\r\n exp = parseValue(exp);\r\n mod = parseValue(mod);\r\n if (mod.isZero()) throw new Error(\"Cannot take modPow with modulus 0\");\r\n var r = Integer[1],\r\n base = this.mod(mod);\r\n if (exp.isNegative()) {\r\n exp = exp.multiply(Integer[-1]);\r\n base = base.modInv(mod);\r\n }\r\n while (exp.isPositive()) {\r\n if (base.isZero()) return Integer[0];\r\n if (exp.isOdd()) r = r.multiply(base).mod(mod);\r\n exp = exp.divide(2);\r\n base = base.square().mod(mod);\r\n }\r\n return r;\r\n };\r\n NativeBigInt.prototype.modPow = SmallInteger.prototype.modPow = BigInteger.prototype.modPow;\r\n\r\n function compareAbs(a, b) {\r\n if (a.length !== b.length) {\r\n return a.length > b.length ? 1 : -1;\r\n }\r\n for (var i = a.length - 1; i >= 0; i--) {\r\n if (a[i] !== b[i]) return a[i] > b[i] ? 1 : -1;\r\n }\r\n return 0;\r\n }\r\n\r\n BigInteger.prototype.compareAbs = function (v) {\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (n.isSmall) return 1;\r\n return compareAbs(a, b);\r\n };\r\n SmallInteger.prototype.compareAbs = function (v) {\r\n var n = parseValue(v),\r\n a = Math.abs(this.value),\r\n b = n.value;\r\n if (n.isSmall) {\r\n b = Math.abs(b);\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n return -1;\r\n };\r\n NativeBigInt.prototype.compareAbs = function (v) {\r\n var a = this.value;\r\n var b = parseValue(v).value;\r\n a = a >= 0 ? a : -a;\r\n b = b >= 0 ? b : -b;\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n\r\n BigInteger.prototype.compare = function (v) {\r\n // See discussion about comparison with Infinity:\r\n // https://github.com/peterolson/BigInteger.js/issues/61\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (this.sign !== n.sign) {\r\n return n.sign ? 1 : -1;\r\n }\r\n if (n.isSmall) {\r\n return this.sign ? -1 : 1;\r\n }\r\n return compareAbs(a, b) * (this.sign ? -1 : 1);\r\n };\r\n BigInteger.prototype.compareTo = BigInteger.prototype.compare;\r\n\r\n SmallInteger.prototype.compare = function (v) {\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (n.isSmall) {\r\n return a == b ? 0 : a > b ? 1 : -1;\r\n }\r\n if (a < 0 !== n.sign) {\r\n return a < 0 ? -1 : 1;\r\n }\r\n return a < 0 ? 1 : -1;\r\n };\r\n SmallInteger.prototype.compareTo = SmallInteger.prototype.compare;\r\n\r\n NativeBigInt.prototype.compare = function (v) {\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n var a = this.value;\r\n var b = parseValue(v).value;\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n NativeBigInt.prototype.compareTo = NativeBigInt.prototype.compare;\r\n\r\n BigInteger.prototype.equals = function (v) {\r\n return this.compare(v) === 0;\r\n };\r\n NativeBigInt.prototype.eq = NativeBigInt.prototype.equals = SmallInteger.prototype.eq = SmallInteger.prototype.equals = BigInteger.prototype.eq = BigInteger.prototype.equals;\r\n\r\n BigInteger.prototype.notEquals = function (v) {\r\n return this.compare(v) !== 0;\r\n };\r\n NativeBigInt.prototype.neq = NativeBigInt.prototype.notEquals = SmallInteger.prototype.neq = SmallInteger.prototype.notEquals = BigInteger.prototype.neq = BigInteger.prototype.notEquals;\r\n\r\n BigInteger.prototype.greater = function (v) {\r\n return this.compare(v) > 0;\r\n };\r\n NativeBigInt.prototype.gt = NativeBigInt.prototype.greater = SmallInteger.prototype.gt = SmallInteger.prototype.greater = BigInteger.prototype.gt = BigInteger.prototype.greater;\r\n\r\n BigInteger.prototype.lesser = function (v) {\r\n return this.compare(v) < 0;\r\n };\r\n NativeBigInt.prototype.lt = NativeBigInt.prototype.lesser = SmallInteger.prototype.lt = SmallInteger.prototype.lesser = BigInteger.prototype.lt = BigInteger.prototype.lesser;\r\n\r\n BigInteger.prototype.greaterOrEquals = function (v) {\r\n return this.compare(v) >= 0;\r\n };\r\n NativeBigInt.prototype.geq = NativeBigInt.prototype.greaterOrEquals = SmallInteger.prototype.geq = SmallInteger.prototype.greaterOrEquals = BigInteger.prototype.geq = BigInteger.prototype.greaterOrEquals;\r\n\r\n BigInteger.prototype.lesserOrEquals = function (v) {\r\n return this.compare(v) <= 0;\r\n };\r\n NativeBigInt.prototype.leq = NativeBigInt.prototype.lesserOrEquals = SmallInteger.prototype.leq = SmallInteger.prototype.lesserOrEquals = BigInteger.prototype.leq = BigInteger.prototype.lesserOrEquals;\r\n\r\n BigInteger.prototype.isEven = function () {\r\n return (this.value[0] & 1) === 0;\r\n };\r\n SmallInteger.prototype.isEven = function () {\r\n return (this.value & 1) === 0;\r\n };\r\n NativeBigInt.prototype.isEven = function () {\r\n return (this.value & BigInt(1)) === BigInt(0);\r\n }\r\n\r\n BigInteger.prototype.isOdd = function () {\r\n return (this.value[0] & 1) === 1;\r\n };\r\n SmallInteger.prototype.isOdd = function () {\r\n return (this.value & 1) === 1;\r\n };\r\n NativeBigInt.prototype.isOdd = function () {\r\n return (this.value & BigInt(1)) === BigInt(1);\r\n }\r\n\r\n BigInteger.prototype.isPositive = function () {\r\n return !this.sign;\r\n };\r\n SmallInteger.prototype.isPositive = function () {\r\n return this.value > 0;\r\n };\r\n NativeBigInt.prototype.isPositive = SmallInteger.prototype.isPositive;\r\n\r\n BigInteger.prototype.isNegative = function () {\r\n return this.sign;\r\n };\r\n SmallInteger.prototype.isNegative = function () {\r\n return this.value < 0;\r\n };\r\n NativeBigInt.prototype.isNegative = SmallInteger.prototype.isNegative;\r\n\r\n BigInteger.prototype.isUnit = function () {\r\n return false;\r\n };\r\n SmallInteger.prototype.isUnit = function () {\r\n return Math.abs(this.value) === 1;\r\n };\r\n NativeBigInt.prototype.isUnit = function () {\r\n return this.abs().value === BigInt(1);\r\n }\r\n\r\n BigInteger.prototype.isZero = function () {\r\n return false;\r\n };\r\n SmallInteger.prototype.isZero = function () {\r\n return this.value === 0;\r\n };\r\n NativeBigInt.prototype.isZero = function () {\r\n return this.value === BigInt(0);\r\n }\r\n\r\n BigInteger.prototype.isDivisibleBy = function (v) {\r\n var n = parseValue(v);\r\n if (n.isZero()) return false;\r\n if (n.isUnit()) return true;\r\n if (n.compareAbs(2) === 0) return this.isEven();\r\n return this.mod(n).isZero();\r\n };\r\n NativeBigInt.prototype.isDivisibleBy = SmallInteger.prototype.isDivisibleBy = BigInteger.prototype.isDivisibleBy;\r\n\r\n function isBasicPrime(v) {\r\n var n = v.abs();\r\n if (n.isUnit()) return false;\r\n if (n.equals(2) || n.equals(3) || n.equals(5)) return true;\r\n if (n.isEven() || n.isDivisibleBy(3) || n.isDivisibleBy(5)) return false;\r\n if (n.lesser(49)) return true;\r\n // we don't know if it's prime: let the other functions figure it out\r\n }\r\n\r\n function millerRabinTest(n, a) {\r\n var nPrev = n.prev(),\r\n b = nPrev,\r\n r = 0,\r\n d, t, i, x;\r\n while (b.isEven()) b = b.divide(2), r++;\r\n next: for (i = 0; i < a.length; i++) {\r\n if (n.lesser(a[i])) continue;\r\n x = bigInt(a[i]).modPow(b, n);\r\n if (x.isUnit() || x.equals(nPrev)) continue;\r\n for (d = r - 1; d != 0; d--) {\r\n x = x.square().mod(n);\r\n if (x.isUnit()) return false;\r\n if (x.equals(nPrev)) continue next;\r\n }\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n // Set \"strict\" to true to force GRH-supported lower bound of 2*log(N)^2\r\n BigInteger.prototype.isPrime = function (strict) {\r\n var isPrime = isBasicPrime(this);\r\n if (isPrime !== undefined) return isPrime;\r\n var n = this.abs();\r\n var bits = n.bitLength();\r\n if (bits <= 64)\r\n return millerRabinTest(n, [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]);\r\n var logN = Math.log(2) * bits.toJSNumber();\r\n var t = Math.ceil((strict === true) ? (2 * Math.pow(logN, 2)) : logN);\r\n for (var a = [], i = 0; i < t; i++) {\r\n a.push(bigInt(i + 2));\r\n }\r\n return millerRabinTest(n, a);\r\n };\r\n NativeBigInt.prototype.isPrime = SmallInteger.prototype.isPrime = BigInteger.prototype.isPrime;\r\n\r\n BigInteger.prototype.isProbablePrime = function (iterations, rng) {\r\n var isPrime = isBasicPrime(this);\r\n if (isPrime !== undefined) return isPrime;\r\n var n = this.abs();\r\n var t = iterations === undefined ? 5 : iterations;\r\n for (var a = [], i = 0; i < t; i++) {\r\n a.push(bigInt.randBetween(2, n.minus(2), rng));\r\n }\r\n return millerRabinTest(n, a);\r\n };\r\n NativeBigInt.prototype.isProbablePrime = SmallInteger.prototype.isProbablePrime = BigInteger.prototype.isProbablePrime;\r\n\r\n BigInteger.prototype.modInv = function (n) {\r\n var t = bigInt.zero, newT = bigInt.one, r = parseValue(n), newR = this.abs(), q, lastT, lastR;\r\n while (!newR.isZero()) {\r\n q = r.divide(newR);\r\n lastT = t;\r\n lastR = r;\r\n t = newT;\r\n r = newR;\r\n newT = lastT.subtract(q.multiply(newT));\r\n newR = lastR.subtract(q.multiply(newR));\r\n }\r\n if (!r.isUnit()) throw new Error(this.toString() + \" and \" + n.toString() + \" are not co-prime\");\r\n if (t.compare(0) === -1) {\r\n t = t.add(n);\r\n }\r\n if (this.isNegative()) {\r\n return t.negate();\r\n }\r\n return t;\r\n };\r\n\r\n NativeBigInt.prototype.modInv = SmallInteger.prototype.modInv = BigInteger.prototype.modInv;\r\n\r\n BigInteger.prototype.next = function () {\r\n var value = this.value;\r\n if (this.sign) {\r\n return subtractSmall(value, 1, this.sign);\r\n }\r\n return new BigInteger(addSmall(value, 1), this.sign);\r\n };\r\n SmallInteger.prototype.next = function () {\r\n var value = this.value;\r\n if (value + 1 < MAX_INT) return new SmallInteger(value + 1);\r\n return new BigInteger(MAX_INT_ARR, false);\r\n };\r\n NativeBigInt.prototype.next = function () {\r\n return new NativeBigInt(this.value + BigInt(1));\r\n }\r\n\r\n BigInteger.prototype.prev = function () {\r\n var value = this.value;\r\n if (this.sign) {\r\n return new BigInteger(addSmall(value, 1), true);\r\n }\r\n return subtractSmall(value, 1, this.sign);\r\n };\r\n SmallInteger.prototype.prev = function () {\r\n var value = this.value;\r\n if (value - 1 > -MAX_INT) return new SmallInteger(value - 1);\r\n return new BigInteger(MAX_INT_ARR, true);\r\n };\r\n NativeBigInt.prototype.prev = function () {\r\n return new NativeBigInt(this.value - BigInt(1));\r\n }\r\n\r\n var powersOfTwo = [1];\r\n while (2 * powersOfTwo[powersOfTwo.length - 1] <= BASE) powersOfTwo.push(2 * powersOfTwo[powersOfTwo.length - 1]);\r\n var powers2Length = powersOfTwo.length, highestPower2 = powersOfTwo[powers2Length - 1];\r\n\r\n function shift_isSmall(n) {\r\n return Math.abs(n) <= BASE;\r\n }\r\n\r\n BigInteger.prototype.shiftLeft = function (v) {\r\n var n = parseValue(v).toJSNumber();\r\n if (!shift_isSmall(n)) {\r\n throw new Error(String(n) + \" is too large for shifting.\");\r\n }\r\n if (n < 0) return this.shiftRight(-n);\r\n var result = this;\r\n if (result.isZero()) return result;\r\n while (n >= powers2Length) {\r\n result = result.multiply(highestPower2);\r\n n -= powers2Length - 1;\r\n }\r\n return result.multiply(powersOfTwo[n]);\r\n };\r\n NativeBigInt.prototype.shiftLeft = function(v){\r\n v = parseValue(v)\r\n return new NativeBigInt(this.value << v.value)\r\n }\r\n SmallInteger.prototype.shiftLeft = BigInteger.prototype.shiftLeft;\r\n\r\n BigInteger.prototype.shiftRight = function (v) {\r\n var remQuo;\r\n var n = parseValue(v).toJSNumber();\r\n if (!shift_isSmall(n)) {\r\n throw new Error(String(n) + \" is too large for shifting.\");\r\n }\r\n if (n < 0) return this.shiftLeft(-n);\r\n var result = this;\r\n while (n >= powers2Length) {\r\n if (result.isZero() || (result.isNegative() && result.isUnit())) return result;\r\n remQuo = divModAny(result, highestPower2);\r\n result = remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0];\r\n n -= powers2Length - 1;\r\n }\r\n remQuo = divModAny(result, powersOfTwo[n]);\r\n return remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0];\r\n };\r\n NativeBigInt.prototype.shiftRight = function (v){\r\n v = parseValue(v)\r\n return new NativeBigInt(this.value >> v.value)\r\n }\r\n SmallInteger.prototype.shiftRight = BigInteger.prototype.shiftRight;\r\n\r\n function bitwise(x, y, fn) {\r\n y = parseValue(y);\r\n var xSign = x.isNegative(), ySign = y.isNegative();\r\n var xRem = xSign ? x.not() : x,\r\n yRem = ySign ? y.not() : y;\r\n var xDigit = 0, yDigit = 0;\r\n var xDivMod = null, yDivMod = null;\r\n var result = [];\r\n while (!xRem.isZero() || !yRem.isZero()) {\r\n xDivMod = divModAny(xRem, highestPower2);\r\n xDigit = xDivMod[1].toJSNumber();\r\n if (xSign) {\r\n xDigit = highestPower2 - 1 - xDigit; // two's complement for negative numbers\r\n }\r\n\r\n yDivMod = divModAny(yRem, highestPower2);\r\n yDigit = yDivMod[1].toJSNumber();\r\n if (ySign) {\r\n yDigit = highestPower2 - 1 - yDigit; // two's complement for negative numbers\r\n }\r\n\r\n xRem = xDivMod[0];\r\n yRem = yDivMod[0];\r\n result.push(fn(xDigit, yDigit));\r\n }\r\n var sum = fn(xSign ? 1 : 0, ySign ? 1 : 0) !== 0 ? bigInt(-1) : bigInt(0);\r\n for (var i = result.length - 1; i >= 0; i -= 1) {\r\n sum = sum.multiply(highestPower2).add(bigInt(result[i]));\r\n }\r\n return sum;\r\n }\r\n\r\n BigInteger.prototype.not = function () {\r\n return this.negate().prev();\r\n };\r\n NativeBigInt.prototype.not = SmallInteger.prototype.not = BigInteger.prototype.not;\r\n\r\n BigInteger.prototype.and = function (n) {\r\n return bitwise(this, n, function (a, b) { return a & b; });\r\n };\r\n NativeBigInt.prototype.and = SmallInteger.prototype.and = BigInteger.prototype.and;\r\n\r\n BigInteger.prototype.or = function (n) {\r\n return bitwise(this, n, function (a, b) { return a | b; });\r\n };\r\n NativeBigInt.prototype.or = SmallInteger.prototype.or = BigInteger.prototype.or;\r\n\r\n BigInteger.prototype.xor = function (n) {\r\n return bitwise(this, n, function (a, b) { return a ^ b; });\r\n };\r\n NativeBigInt.prototype.xor = SmallInteger.prototype.xor = BigInteger.prototype.xor;\r\n\r\n var LOBMASK_I = 1 << 30, LOBMASK_BI = (BASE & -BASE) * (BASE & -BASE) | LOBMASK_I;\r\n function roughLOB(n) { // get lowestOneBit (rough)\r\n // SmallInteger: return Min(lowestOneBit(n), 1 << 30)\r\n // BigInteger: return Min(lowestOneBit(n), 1 << 14) [BASE=1e7]\r\n var v = n.value,\r\n x = typeof v === \"number\" ? v | LOBMASK_I :\r\n typeof v === \"bigint\" ? v | BigInt(LOBMASK_I) :\r\n v[0] + v[1] * BASE | LOBMASK_BI;\r\n return x & -x;\r\n }\r\n\r\n function integerLogarithm(value, base) {\r\n if (base.compareTo(value) <= 0) {\r\n var tmp = integerLogarithm(value, base.square(base));\r\n var p = tmp.p;\r\n var e = tmp.e;\r\n var t = p.multiply(base);\r\n return t.compareTo(value) <= 0 ? { p: t, e: e * 2 + 1 } : { p: p, e: e * 2 };\r\n }\r\n return { p: bigInt(1), e: 0 };\r\n }\r\n\r\n BigInteger.prototype.bitLength = function () {\r\n var n = this;\r\n if (n.compareTo(bigInt(0)) < 0) {\r\n n = n.negate().subtract(bigInt(1));\r\n }\r\n if (n.compareTo(bigInt(0)) === 0) {\r\n return bigInt(0);\r\n }\r\n return bigInt(integerLogarithm(n, bigInt(2)).e).add(bigInt(1));\r\n }\r\n NativeBigInt.prototype.bitLength = SmallInteger.prototype.bitLength = BigInteger.prototype.bitLength;\r\n\r\n function max(a, b) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n return a.greater(b) ? a : b;\r\n }\r\n function min(a, b) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n return a.lesser(b) ? a : b;\r\n }\r\n function gcd(a, b) {\r\n a = parseValue(a).abs();\r\n b = parseValue(b).abs();\r\n if (a.equals(b)) return a;\r\n if (a.isZero()) return b;\r\n if (b.isZero()) return a;\r\n var c = Integer[1], d, t;\r\n while (a.isEven() && b.isEven()) {\r\n d = min(roughLOB(a), roughLOB(b));\r\n a = a.divide(d);\r\n b = b.divide(d);\r\n c = c.multiply(d);\r\n }\r\n while (a.isEven()) {\r\n a = a.divide(roughLOB(a));\r\n }\r\n do {\r\n while (b.isEven()) {\r\n b = b.divide(roughLOB(b));\r\n }\r\n if (a.greater(b)) {\r\n t = b; b = a; a = t;\r\n }\r\n b = b.subtract(a);\r\n } while (!b.isZero());\r\n return c.isUnit() ? a : a.multiply(c);\r\n }\r\n function lcm(a, b) {\r\n a = parseValue(a).abs();\r\n b = parseValue(b).abs();\r\n return a.divide(gcd(a, b)).multiply(b);\r\n }\r\n function randBetween(a, b, rng) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n var usedRNG = rng || Math.random;\r\n var low = min(a, b), high = max(a, b);\r\n var range = high.subtract(low).add(1);\r\n if (range.isSmall) return low.add(Math.floor(usedRNG() * range));\r\n var digits = toBase(range, BASE).value;\r\n var result = [], restricted = true;\r\n for (var i = 0; i < digits.length; i++) {\r\n var top = restricted ? digits[i] : BASE;\r\n var digit = truncate(usedRNG() * top);\r\n result.push(digit);\r\n if (digit < top) restricted = false;\r\n }\r\n return low.add(Integer.fromArray(result, BASE, false));\r\n }\r\n\r\n var parseBase = function (text, base, alphabet, caseSensitive) {\r\n alphabet = alphabet || DEFAULT_ALPHABET;\r\n text = String(text);\r\n if (!caseSensitive) {\r\n text = text.toLowerCase();\r\n alphabet = alphabet.toLowerCase();\r\n }\r\n var length = text.length;\r\n var i;\r\n var absBase = Math.abs(base);\r\n var alphabetValues = {};\r\n for (i = 0; i < alphabet.length; i++) {\r\n alphabetValues[alphabet[i]] = i;\r\n }\r\n for (i = 0; i < length; i++) {\r\n var c = text[i];\r\n if (c === \"-\") continue;\r\n if (c in alphabetValues) {\r\n if (alphabetValues[c] >= absBase) {\r\n if (c === \"1\" && absBase === 1) continue;\r\n throw new Error(c + \" is not a valid digit in base \" + base + \".\");\r\n }\r\n }\r\n }\r\n base = parseValue(base);\r\n var digits = [];\r\n var isNegative = text[0] === \"-\";\r\n for (i = isNegative ? 1 : 0; i < text.length; i++) {\r\n var c = text[i];\r\n if (c in alphabetValues) digits.push(parseValue(alphabetValues[c]));\r\n else if (c === \"<\") {\r\n var start = i;\r\n do { i++; } while (text[i] !== \">\" && i < text.length);\r\n digits.push(parseValue(text.slice(start + 1, i)));\r\n }\r\n else throw new Error(c + \" is not a valid character\");\r\n }\r\n return parseBaseFromArray(digits, base, isNegative);\r\n };\r\n\r\n function parseBaseFromArray(digits, base, isNegative) {\r\n var val = Integer[0], pow = Integer[1], i;\r\n for (i = digits.length - 1; i >= 0; i--) {\r\n val = val.add(digits[i].times(pow));\r\n pow = pow.times(base);\r\n }\r\n return isNegative ? val.negate() : val;\r\n }\r\n\r\n function stringify(digit, alphabet) {\r\n alphabet = alphabet || DEFAULT_ALPHABET;\r\n if (digit < alphabet.length) {\r\n return alphabet[digit];\r\n }\r\n return \"<\" + digit + \">\";\r\n }\r\n\r\n function toBase(n, base) {\r\n base = bigInt(base);\r\n if (base.isZero()) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n throw new Error(\"Cannot convert nonzero numbers to base 0.\");\r\n }\r\n if (base.equals(-1)) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n if (n.isNegative())\r\n return {\r\n value: [].concat.apply([], Array.apply(null, Array(-n.toJSNumber()))\r\n .map(Array.prototype.valueOf, [1, 0])\r\n ),\r\n isNegative: false\r\n };\r\n\r\n var arr = Array.apply(null, Array(n.toJSNumber() - 1))\r\n .map(Array.prototype.valueOf, [0, 1]);\r\n arr.unshift([1]);\r\n return {\r\n value: [].concat.apply([], arr),\r\n isNegative: false\r\n };\r\n }\r\n\r\n var neg = false;\r\n if (n.isNegative() && base.isPositive()) {\r\n neg = true;\r\n n = n.abs();\r\n }\r\n if (base.isUnit()) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n\r\n return {\r\n value: Array.apply(null, Array(n.toJSNumber()))\r\n .map(Number.prototype.valueOf, 1),\r\n isNegative: neg\r\n };\r\n }\r\n var out = [];\r\n var left = n, divmod;\r\n while (left.isNegative() || left.compareAbs(base) >= 0) {\r\n divmod = left.divmod(base);\r\n left = divmod.quotient;\r\n var digit = divmod.remainder;\r\n if (digit.isNegative()) {\r\n digit = base.minus(digit).abs();\r\n left = left.next();\r\n }\r\n out.push(digit.toJSNumber());\r\n }\r\n out.push(left.toJSNumber());\r\n return { value: out.reverse(), isNegative: neg };\r\n }\r\n\r\n function toBaseString(n, base, alphabet) {\r\n var arr = toBase(n, base);\r\n return (arr.isNegative ? \"-\" : \"\") + arr.value.map(function (x) {\r\n return stringify(x, alphabet);\r\n }).join('');\r\n }\r\n\r\n BigInteger.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n SmallInteger.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n NativeBigInt.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n BigInteger.prototype.toString = function (radix, alphabet) {\r\n if (radix === undefined) radix = 10;\r\n if (radix !== 10) return toBaseString(this, radix, alphabet);\r\n var v = this.value, l = v.length, str = String(v[--l]), zeros = \"0000000\", digit;\r\n while (--l >= 0) {\r\n digit = String(v[l]);\r\n str += zeros.slice(digit.length) + digit;\r\n }\r\n var sign = this.sign ? \"-\" : \"\";\r\n return sign + str;\r\n };\r\n\r\n SmallInteger.prototype.toString = function (radix, alphabet) {\r\n if (radix === undefined) radix = 10;\r\n if (radix != 10) return toBaseString(this, radix, alphabet);\r\n return String(this.value);\r\n };\r\n\r\n NativeBigInt.prototype.toString = SmallInteger.prototype.toString;\r\n\r\n NativeBigInt.prototype.toJSON = BigInteger.prototype.toJSON = SmallInteger.prototype.toJSON = function () { return this.toString(); }\r\n\r\n BigInteger.prototype.valueOf = function () {\r\n return parseInt(this.toString(), 10);\r\n };\r\n BigInteger.prototype.toJSNumber = BigInteger.prototype.valueOf;\r\n\r\n SmallInteger.prototype.valueOf = function () {\r\n return this.value;\r\n };\r\n SmallInteger.prototype.toJSNumber = SmallInteger.prototype.valueOf;\r\n NativeBigInt.prototype.valueOf = NativeBigInt.prototype.toJSNumber = function () {\r\n return parseInt(this.toString(), 10);\r\n }\r\n\r\n function parseStringValue(v) {\r\n if (isPrecise(+v)) {\r\n var x = +v;\r\n if (x === truncate(x))\r\n return supportsNativeBigInt ? new NativeBigInt(BigInt(x)) : new SmallInteger(x);\r\n throw new Error(\"Invalid integer: \" + v);\r\n }\r\n var sign = v[0] === \"-\";\r\n if (sign) v = v.slice(1);\r\n var split = v.split(/e/i);\r\n if (split.length > 2) throw new Error(\"Invalid integer: \" + split.join(\"e\"));\r\n if (split.length === 2) {\r\n var exp = split[1];\r\n if (exp[0] === \"+\") exp = exp.slice(1);\r\n exp = +exp;\r\n if (exp !== truncate(exp) || !isPrecise(exp)) throw new Error(\"Invalid integer: \" + exp + \" is not a valid exponent.\");\r\n var text = split[0];\r\n var decimalPlace = text.indexOf(\".\");\r\n if (decimalPlace >= 0) {\r\n exp -= text.length - decimalPlace - 1;\r\n text = text.slice(0, decimalPlace) + text.slice(decimalPlace + 1);\r\n }\r\n if (exp < 0) throw new Error(\"Cannot include negative exponent part for integers\");\r\n text += (new Array(exp + 1)).join(\"0\");\r\n v = text;\r\n }\r\n var isValid = /^([0-9][0-9]*)$/.test(v);\r\n if (!isValid) throw new Error(\"Invalid integer: \" + v);\r\n if (supportsNativeBigInt) {\r\n return new NativeBigInt(BigInt(sign ? \"-\" + v : v));\r\n }\r\n var r = [], max = v.length, l = LOG_BASE, min = max - l;\r\n while (max > 0) {\r\n r.push(+v.slice(min, max));\r\n min -= l;\r\n if (min < 0) min = 0;\r\n max -= l;\r\n }\r\n trim(r);\r\n return new BigInteger(r, sign);\r\n }\r\n\r\n function parseNumberValue(v) {\r\n if (supportsNativeBigInt) {\r\n return new NativeBigInt(BigInt(v));\r\n }\r\n if (isPrecise(v)) {\r\n if (v !== truncate(v)) throw new Error(v + \" is not an integer.\");\r\n return new SmallInteger(v);\r\n }\r\n return parseStringValue(v.toString());\r\n }\r\n\r\n function parseValue(v) {\r\n if (typeof v === \"number\") {\r\n return parseNumberValue(v);\r\n }\r\n if (typeof v === \"string\") {\r\n return parseStringValue(v);\r\n }\r\n if (typeof v === \"bigint\") {\r\n return new NativeBigInt(v);\r\n }\r\n return v;\r\n }\r\n // Pre-define numbers in range [-999,999]\r\n for (var i = 0; i < 1000; i++) {\r\n Integer[i] = parseValue(i);\r\n if (i > 0) Integer[-i] = parseValue(-i);\r\n }\r\n // Backwards compatibility\r\n Integer.one = Integer[1];\r\n Integer.zero = Integer[0];\r\n Integer.minusOne = Integer[-1];\r\n Integer.max = max;\r\n Integer.min = min;\r\n Integer.gcd = gcd;\r\n Integer.lcm = lcm;\r\n Integer.isInstance = function (x) { return x instanceof BigInteger || x instanceof SmallInteger || x instanceof NativeBigInt; };\r\n Integer.randBetween = randBetween;\r\n\r\n Integer.fromArray = function (digits, base, isNegative) {\r\n return parseBaseFromArray(digits.map(parseValue), parseValue(base || 10), isNegative);\r\n };\r\n\r\n return Integer;\r\n})();\r\n\r\n// Node.js check\r\nif (typeof module !== \"undefined\" && module.hasOwnProperty(\"exports\")) {\r\n module.exports = bigInt;\r\n}\r\n\r\n//amd check\r\nif (typeof define === \"function\" && define.amd) {\r\n define( function () {\r\n return bigInt;\r\n });\r\n}\r\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","var naiveFallback = function () {\n\tif (typeof self === \"object\" && self) return self;\n\tif (typeof window === \"object\" && window) return window;\n\tthrow new Error(\"Unable to resolve global `this`\");\n};\n\nmodule.exports = (function () {\n\tif (this) return this;\n\n\t// Unexpected strict mode (may happen if e.g. bundled into ESM module)\n\n\t// Fallback to standard globalThis if available\n\tif (typeof globalThis === \"object\" && globalThis) return globalThis;\n\n\t// Thanks @mathiasbynens -> https://mathiasbynens.be/notes/globalthis\n\t// In all ES5+ engines global object inherits from Object.prototype\n\t// (if you approached one that doesn't please report)\n\ttry {\n\t\tObject.defineProperty(Object.prototype, \"__global__\", {\n\t\t\tget: function () { return this; },\n\t\t\tconfigurable: true\n\t\t});\n\t} catch (error) {\n\t\t// Unfortunate case of updates to Object.prototype being restricted\n\t\t// via preventExtensions, seal or freeze\n\t\treturn naiveFallback();\n\t}\n\ttry {\n\t\t// Safari case (window.__global__ works, but __global__ does not)\n\t\tif (!__global__) return naiveFallback();\n\t\treturn __global__;\n\t} finally {\n\t\tdelete Object.prototype.__global__;\n\t}\n})();\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar safariFix = require('safari-14-idb-fix');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar safariFix__default = /*#__PURE__*/_interopDefaultLegacy(safariFix);\n\nfunction promisifyRequest(request) {\n return new Promise((resolve, reject) => {\n // @ts-ignore - file size hacks\n request.oncomplete = request.onsuccess = () => resolve(request.result);\n // @ts-ignore - file size hacks\n request.onabort = request.onerror = () => reject(request.error);\n });\n}\nfunction createStore(dbName, storeName) {\n const dbp = safariFix__default['default']().then(() => {\n const request = indexedDB.open(dbName);\n request.onupgradeneeded = () => request.result.createObjectStore(storeName);\n return promisifyRequest(request);\n });\n return (txMode, callback) => dbp.then((db) => callback(db.transaction(storeName, txMode).objectStore(storeName)));\n}\nlet defaultGetStoreFunc;\nfunction defaultGetStore() {\n if (!defaultGetStoreFunc) {\n defaultGetStoreFunc = createStore('keyval-store', 'keyval');\n }\n return defaultGetStoreFunc;\n}\n/**\n * Get a value by its key.\n *\n * @param key\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction get(key, customStore = defaultGetStore()) {\n return customStore('readonly', (store) => promisifyRequest(store.get(key)));\n}\n/**\n * Set a value with a key.\n *\n * @param key\n * @param value\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction set(key, value, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.put(value, key);\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Set multiple values at once. This is faster than calling set() multiple times.\n * It's also atomic – if one of the pairs can't be added, none will be added.\n *\n * @param entries Array of entries, where each entry is an array of `[key, value]`.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction setMany(entries, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n entries.forEach((entry) => store.put(entry[1], entry[0]));\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Get multiple values by their keys\n *\n * @param keys\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction getMany(keys, customStore = defaultGetStore()) {\n return customStore('readonly', (store) => Promise.all(keys.map((key) => promisifyRequest(store.get(key)))));\n}\n/**\n * Update a value. This lets you see the old value and update it as an atomic operation.\n *\n * @param key\n * @param updater A callback that takes the old value and returns a new value.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction update(key, updater, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => \n // Need to create the promise manually.\n // If I try to chain promises, the transaction closes in browsers\n // that use a promise polyfill (IE10/11).\n new Promise((resolve, reject) => {\n store.get(key).onsuccess = function () {\n try {\n store.put(updater(this.result), key);\n resolve(promisifyRequest(store.transaction));\n }\n catch (err) {\n reject(err);\n }\n };\n }));\n}\n/**\n * Delete a particular key from the store.\n *\n * @param key\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction del(key, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.delete(key);\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Clear all values in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction clear(customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.clear();\n return promisifyRequest(store.transaction);\n });\n}\nfunction eachCursor(customStore, callback) {\n return customStore('readonly', (store) => {\n // This would be store.getAllKeys(), but it isn't supported by Edge or Safari.\n // And openKeyCursor isn't supported by Safari.\n store.openCursor().onsuccess = function () {\n if (!this.result)\n return;\n callback(this.result);\n this.result.continue();\n };\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Get all keys in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction keys(customStore = defaultGetStore()) {\n const items = [];\n return eachCursor(customStore, (cursor) => items.push(cursor.key)).then(() => items);\n}\n/**\n * Get all values in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction values(customStore = defaultGetStore()) {\n const items = [];\n return eachCursor(customStore, (cursor) => items.push(cursor.value)).then(() => items);\n}\n/**\n * Get all entries in the store. Each entry is an array of `[key, value]`.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction entries(customStore = defaultGetStore()) {\n const items = [];\n return eachCursor(customStore, (cursor) => items.push([cursor.key, cursor.value])).then(() => items);\n}\n\nexports.clear = clear;\nexports.createStore = createStore;\nexports.del = del;\nexports.entries = entries;\nexports.get = get;\nexports.getMany = getMany;\nexports.keys = keys;\nexports.promisifyRequest = promisifyRequest;\nexports.set = set;\nexports.setMany = setMany;\nexports.update = update;\nexports.values = values;\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","exports.endianness = function () { return 'LE' };\n\nexports.hostname = function () {\n if (typeof location !== 'undefined') {\n return location.hostname\n }\n else return '';\n};\n\nexports.loadavg = function () { return [] };\n\nexports.uptime = function () { return 0 };\n\nexports.freemem = function () {\n return Number.MAX_VALUE;\n};\n\nexports.totalmem = function () {\n return Number.MAX_VALUE;\n};\n\nexports.cpus = function () { return [] };\n\nexports.type = function () { return 'Browser' };\n\nexports.release = function () {\n if (typeof navigator !== 'undefined') {\n return navigator.appVersion;\n }\n return '';\n};\n\nexports.networkInterfaces\n= exports.getNetworkInterfaces\n= function () { return {} };\n\nexports.arch = function () { return 'javascript' };\n\nexports.platform = function () { return 'browser' };\n\nexports.tmpdir = exports.tmpDir = function () {\n return '/tmp';\n};\n\nexports.EOL = '\\n';\n\nexports.homedir = function () {\n\treturn '/'\n};\n","'use strict';\n\n/**\n * https://bugs.webkit.org/show_bug.cgi?id=226547\n * Safari has a horrible bug where IDB requests can hang while the browser is starting up.\n * The only solution is to keep nudging it until it's awake.\n * This probably creates garbage, but garbage is better than totally failing.\n */\nfunction idbReady() {\n const isSafari = !navigator.userAgentData &&\n /Safari\\//.test(navigator.userAgent) &&\n !/Chrom(e|ium)\\//.test(navigator.userAgent);\n // No point putting other browsers or older versions of Safari through this mess.\n if (!isSafari || !indexedDB.databases)\n return Promise.resolve();\n let intervalId;\n return new Promise((resolve) => {\n const tryIdb = () => indexedDB.databases().finally(resolve);\n intervalId = setInterval(tryIdb, 100);\n tryIdb();\n }).finally(() => clearInterval(intervalId));\n}\n\nmodule.exports = idbReady;\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","var _globalThis;\nif (typeof globalThis === 'object') {\n\t_globalThis = globalThis;\n} else {\n\ttry {\n\t\t_globalThis = require('es5-ext/global');\n\t} catch (error) {\n\t} finally {\n\t\tif (!_globalThis && typeof window !== 'undefined') { _globalThis = window; }\n\t\tif (!_globalThis) { throw new Error('Could not determine global this'); }\n\t}\n}\n\nvar NativeWebSocket = _globalThis.WebSocket || _globalThis.MozWebSocket;\nvar websocket_version = require('./version');\n\n\n/**\n * Expose a W3C WebSocket class with just one or two arguments.\n */\nfunction W3CWebSocket(uri, protocols) {\n\tvar native_instance;\n\n\tif (protocols) {\n\t\tnative_instance = new NativeWebSocket(uri, protocols);\n\t}\n\telse {\n\t\tnative_instance = new NativeWebSocket(uri);\n\t}\n\n\t/**\n\t * 'native_instance' is an instance of nativeWebSocket (the browser's WebSocket\n\t * class). Since it is an Object it will be returned as it is when creating an\n\t * instance of W3CWebSocket via 'new W3CWebSocket()'.\n\t *\n\t * ECMAScript 5: http://bclary.com/2004/11/07/#a-13.2.2\n\t */\n\treturn native_instance;\n}\nif (NativeWebSocket) {\n\t['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'].forEach(function(prop) {\n\t\tObject.defineProperty(W3CWebSocket, prop, {\n\t\t\tget: function() { return NativeWebSocket[prop]; }\n\t\t});\n\t});\n}\n\n/**\n * Module exports.\n */\nmodule.exports = {\n 'w3cwebsocket' : NativeWebSocket ? W3CWebSocket : null,\n 'version' : websocket_version\n};\n","module.exports = require('../package.json').version;\n"],"names":["S","Uint8Array","Si","T1","Uint32Array","T2","T3","T4","T5","T6","T7","T8","getWords","key","length","i","buf","pos","str","charCodeAt","Error","xor","left","right","to","x2","x4","s","tEnc","tDec","d","t","x","xInv","computeTables","AES","_key","this","encKey","decKey","set","tmp","rcon","j","prototype","encrypt","_message","a2","b2","c2","message","out","a","b","c","rounds","k","decrypt","AES_IGE","iv","blockSize","cipher","text","cipherText","prevX","subarray","prevY","yXOR","y","AES_IGE$1","counter","offset","incrementCounter","carry","Object","defineProperty","exports","value","tslib_1","Semaphore_1","Mutex","cancelError","_semaphore","default","acquire","__awaiter","__generator","_b","label","sent","runExclusive","callback","isLocked","release","cancel","errors_1","Semaphore","_maxConcurrency","_cancelError","E_CANCELED","_queue","_value","_this","locked","ticketPromise","Promise","resolve","reject","push","_dispatch","_a","trys","_currentReleaser","releaser","undefined","forEach","ticket","nextTicket","shift","released","E_ALREADY_LOCKED","E_TIMEOUT","tryAcquire","withTimeout","Mutex_1","enumerable","get","withTimeout_1","tryAcquire_1","__exportStar","sync","alreadyAcquiredError","timeout","timeoutError","isTimeout","handle","e_1","setTimeout","Array","isArray","clearTimeout","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","arr","Arr","_byteLength","curByte","len","revLookup","fromByteArray","uint8","extraBytes","parts","maxChunkLength","len2","encodeChunk","lookup","join","code","indexOf","start","end","num","output","BASE","MAX_INT","MAX_INT_ARR","smallToArray","DEFAULT_ALPHABET","supportsNativeBigInt","BigInt","Integer","v","radix","alphabet","caseSensitive","parseValue","parseBase","BigInteger","sign","isSmall","SmallInteger","NativeBigInt","isPrecise","n","Math","floor","arrayToSmall","trim","compareAbs","createArray","truncate","ceil","add","sum","l_a","l_b","r","base","addAny","addSmall","l","subtract","difference","a_l","b_l","borrow","subtractSmall","multiplyLong","product","a_i","multiplySmall","shiftLeft","concat","multiplyKaratsuba","max","slice","ac","bd","abcd","multiplySmallAndArray","square","divModSmall","lambda","q","remainder","divisor","quotient","divModAny","self","negate","abs","comparison","quotientDigit","result","divisorMostSignificantDigit","divMod1","guess","xlen","highx","highy","check","part","unshift","reverse","divMod2","qSign","mod","mSign","isBasicPrime","isUnit","equals","isEven","isDivisibleBy","lesser","millerRabinTest","nPrev","prev","divide","next","bigInt","modPow","create","plus","subtractAny","minus","small","multiply","l1","l2","times","_multiplyBySmall","divmod","over","pow","toString","_0","_1","_2","isNegative","exp","isZero","modInv","isPositive","isOdd","compare","Infinity","compareTo","eq","notEquals","neq","greater","gt","lt","greaterOrEquals","geq","lesserOrEquals","leq","isPrime","strict","bits","bitLength","logN","log","toJSNumber","isProbablePrime","iterations","rng","randBetween","lastT","lastR","zero","newT","one","newR","powersOfTwo","powers2Length","highestPower2","shift_isSmall","bitwise","fn","xSign","ySign","xRem","not","yRem","xDigit","yDigit","xDivMod","yDivMod","String","shiftRight","remQuo","and","or","LOBMASK_I","roughLOB","integerLogarithm","p","e","min","gcd","toLowerCase","absBase","alphabetValues","digits","parseBaseFromArray","val","toBase","apply","map","valueOf","neg","Number","digit","toBaseString","stringify","parseStringValue","split","decimalPlace","test","parseNumberValue","toArray","toJSON","parseInt","minusOne","lcm","isInstance","usedRNG","random","low","range","restricted","top","fromArray","module","hasOwnProperty","base64","ieee754","customInspectSymbol","Symbol","Buffer","SlowBuffer","alloc","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","RangeError","setPrototypeOf","arg","encodingOrOffset","TypeError","allocUnsafe","from","string","encoding","isEncoding","actual","write","fromString","ArrayBuffer","isView","arrayView","copy","fromArrayBuffer","buffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","obj","isBuffer","checked","numberIsNaN","type","data","fromObject","toPrimitive","assertSize","size","array","mustMatch","arguments","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","m","bidirectionalIndexOf","dir","arrayIndexOf","call","lastIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","parsed","substr","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","console","error","poolSize","fill","allocUnsafeSlow","_isBuffer","list","swap16","swap32","swap64","toLocaleString","inspect","replace","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","_arr","ret","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","last","boundsError","readBigUInt64BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","errors","E","sym","getMessage","Base","constructor","super","writable","configurable","name","stack","addNumericalSeparator","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","input","msg","received","isInteger","INVALID_BASE64_RE","leadSurrogate","base64clean","src","dst","table","i16","BufferBigIntNotDefined","naiveFallback","window","globalThis","__global__","_interopDefaultLegacy","safariFix__default","promisifyRequest","request","oncomplete","onsuccess","onabort","onerror","createStore","dbName","storeName","dbp","then","indexedDB","open","onupgradeneeded","createObjectStore","txMode","db","transaction","objectStore","defaultGetStoreFunc","defaultGetStore","eachCursor","customStore","store","openCursor","continue","clear","del","delete","entries","items","cursor","getMany","keys","all","put","setMany","entry","update","updater","err","values","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","isNaN","LN2","endianness","hostname","location","loadavg","uptime","freemem","MAX_VALUE","totalmem","cpus","navigator","appVersion","networkInterfaces","getNetworkInterfaces","arch","platform","tmpdir","tmpDir","EOL","homedir","userAgentData","userAgent","databases","intervalId","tryIdb","finally","setInterval","clearInterval","extendStatics","__proto__","__extends","__","__assign","assign","__rest","getOwnPropertySymbols","propertyIsEnumerable","__decorate","decorators","desc","getOwnPropertyDescriptor","Reflect","decorate","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","thisArg","_arguments","P","generator","fulfilled","step","rejected","done","body","f","g","_","ops","verb","iterator","op","pop","__createBinding","o","k2","__values","__read","ar","__spread","__spreadArrays","il","jl","__spreadArray","pack","__await","__asyncGenerator","asyncIterator","resume","fulfill","settle","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","raw","__setModuleDefault","__importStar","__esModule","__importDefault","__classPrivateFieldGet","receiver","state","kind","has","__classPrivateFieldSet","_globalThis","NativeWebSocket","WebSocket","MozWebSocket","websocket_version","W3CWebSocket","uri","protocols","prop"],"sourceRoot":""}