@bonfida/spl-name-service 2.3.3-alpha.2 → 2.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/buffer/index.js","../node_modules/@solana/spl-token/lib/esm/constants.js","../node_modules/@solana/buffer-layout/lib/Layout.js","../node_modules/@solana/buffer-layout-utils/lib/esm/base.mjs","../node_modules/bigint-buffer/dist/browser.js","../node_modules/@solana/buffer-layout-utils/lib/esm/bigint.mjs","../node_modules/@solana/buffer-layout-utils/lib/esm/native.mjs","../node_modules/@solana/buffer-layout-utils/lib/esm/web3.mjs","../node_modules/@solana/spl-token/lib/esm/errors.js","../node_modules/@solana/spl-token/lib/esm/extensions/accountType.js","../node_modules/@solana/spl-token/lib/esm/state/multisig.js","../node_modules/@solana/spl-token/lib/esm/state/account.js","../node_modules/@solana/spl-token/lib/esm/state/mint.js","../node_modules/@solana/spl-token/lib/esm/instructions/associatedTokenAccount.js","../src/error.ts","../src/int.ts","../node_modules/bn.js/lib/bn.js","../node_modules/safe-buffer/index.js","../node_modules/base-x/src/index.js","../node_modules/borsh/node_modules/bs58/index.js","../node_modules/text-encoding-utf-8/lib/encoding.lib.mjs","../node_modules/borsh/lib/index.js","../src/instructions.ts","../src/nft/name-tokenizer.ts","../src/nft/index.ts","../src/state.ts","../node_modules/@noble/hashes/esm/_assert.js","../node_modules/@noble/hashes/esm/crypto.js","../node_modules/@noble/hashes/esm/utils.js","../node_modules/@noble/hashes/esm/_sha2.js","../node_modules/@noble/hashes/esm/sha256.js","../src/constants.ts","../src/deprecated/utils.ts","../node_modules/@bonfida/sns-records/dist/index.mjs","../src/types/record.ts","../node_modules/graphemesplit/types.js","../node_modules/tiny-inflate/index.js","../node_modules/unicode-trie/swap.js","../node_modules/unicode-trie/index.js","../node_modules/js-base64/base64.js","../node_modules/graphemesplit/index.js","../src/utils.ts","../node_modules/bs58/node_modules/base-x/src/index.js","../node_modules/bs58/index.js","../node_modules/ipaddr.js/lib/ipaddr.js","../node_modules/punycode/punycode.es6.js","../node_modules/@noble/hashes/esm/_u64.js","../node_modules/@noble/hashes/esm/sha512.js","../node_modules/@noble/curves/esm/abstract/utils.js","../node_modules/@noble/curves/esm/abstract/modular.js","../node_modules/@noble/curves/esm/abstract/curve.js","../node_modules/@noble/curves/esm/abstract/edwards.js","../node_modules/@noble/curves/esm/ed25519.js","../node_modules/@scure/base/lib/esm/index.js","../src/record.ts","../src/record_v2/index.ts","../src/bindings.ts","../src/twitter_bindings.ts","../src/resolve.ts","../src/favorite-domain.ts","../src/types/custom-bg.ts","../src/custom-bg.ts","../src/record_v2/utils.ts","../src/devnet.ts"],"sourcesContent":["'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","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\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","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\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 '<Buffer ' + str + '>'\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","import { PublicKey } from '@solana/web3.js';\n/** Address of the SPL Token program */\nexport const TOKEN_PROGRAM_ID = new PublicKey('TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA');\n/** Address of the SPL Token 2022 program */\nexport const TOKEN_2022_PROGRAM_ID = new PublicKey('TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb');\n/** Address of the SPL Associated Token Account program */\nexport const ASSOCIATED_TOKEN_PROGRAM_ID = new PublicKey('ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL');\n/** Address of the special mint for wrapped native SOL in spl-token */\nexport const NATIVE_MINT = new PublicKey('So11111111111111111111111111111111111111112');\n/** Address of the special mint for wrapped native SOL in spl-token-2022 */\nexport const NATIVE_MINT_2022 = new PublicKey('9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP');\n/** Check that the token program provided is not `Tokenkeg...`, useful when using extensions */\nexport function programSupportsExtensions(programId) {\n if (programId === TOKEN_PROGRAM_ID) {\n return false;\n }\n else {\n return true;\n }\n}\n//# sourceMappingURL=constants.js.map","/* The MIT License (MIT)\n *\n * Copyright 2015-2018 Peter A. Bigot\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n/**\n * Support for translating between Uint8Array instances and JavaScript\n * native types.\n *\n * {@link module:Layout~Layout|Layout} is the basis of a class\n * hierarchy that associates property names with sequences of encoded\n * bytes.\n *\n * Layouts are supported for these scalar (numeric) types:\n * * {@link module:Layout~UInt|Unsigned integers in little-endian\n * format} with {@link module:Layout.u8|8-bit}, {@link\n * module:Layout.u16|16-bit}, {@link module:Layout.u24|24-bit},\n * {@link module:Layout.u32|32-bit}, {@link\n * module:Layout.u40|40-bit}, and {@link module:Layout.u48|48-bit}\n * representation ranges;\n * * {@link module:Layout~UIntBE|Unsigned integers in big-endian\n * format} with {@link module:Layout.u16be|16-bit}, {@link\n * module:Layout.u24be|24-bit}, {@link module:Layout.u32be|32-bit},\n * {@link module:Layout.u40be|40-bit}, and {@link\n * module:Layout.u48be|48-bit} representation ranges;\n * * {@link module:Layout~Int|Signed integers in little-endian\n * format} with {@link module:Layout.s8|8-bit}, {@link\n * module:Layout.s16|16-bit}, {@link module:Layout.s24|24-bit},\n * {@link module:Layout.s32|32-bit}, {@link\n * module:Layout.s40|40-bit}, and {@link module:Layout.s48|48-bit}\n * representation ranges;\n * * {@link module:Layout~IntBE|Signed integers in big-endian format}\n * with {@link module:Layout.s16be|16-bit}, {@link\n * module:Layout.s24be|24-bit}, {@link module:Layout.s32be|32-bit},\n * {@link module:Layout.s40be|40-bit}, and {@link\n * module:Layout.s48be|48-bit} representation ranges;\n * * 64-bit integral values that decode to an exact (if magnitude is\n * less than 2^53) or nearby integral Number in {@link\n * module:Layout.nu64|unsigned little-endian}, {@link\n * module:Layout.nu64be|unsigned big-endian}, {@link\n * module:Layout.ns64|signed little-endian}, and {@link\n * module:Layout.ns64be|unsigned big-endian} encodings;\n * * 32-bit floating point values with {@link\n * module:Layout.f32|little-endian} and {@link\n * module:Layout.f32be|big-endian} representations;\n * * 64-bit floating point values with {@link\n * module:Layout.f64|little-endian} and {@link\n * module:Layout.f64be|big-endian} representations;\n * * {@link module:Layout.const|Constants} that take no space in the\n * encoded expression.\n *\n * and for these aggregate types:\n * * {@link module:Layout.seq|Sequence}s of instances of a {@link\n * module:Layout~Layout|Layout}, with JavaScript representation as\n * an Array and constant or data-dependent {@link\n * module:Layout~Sequence#count|length};\n * * {@link module:Layout.struct|Structure}s that aggregate a\n * heterogeneous sequence of {@link module:Layout~Layout|Layout}\n * instances, with JavaScript representation as an Object;\n * * {@link module:Layout.union|Union}s that support multiple {@link\n * module:Layout~VariantLayout|variant layouts} over a fixed\n * (padded) or variable (not padded) span of bytes, using an\n * unsigned integer at the start of the data or a separate {@link\n * module:Layout.unionLayoutDiscriminator|layout element} to\n * determine which layout to use when interpreting the buffer\n * contents;\n * * {@link module:Layout.bits|BitStructure}s that contain a sequence\n * of individual {@link\n * module:Layout~BitStructure#addField|BitField}s packed into an 8,\n * 16, 24, or 32-bit unsigned integer starting at the least- or\n * most-significant bit;\n * * {@link module:Layout.cstr|C strings} of varying length;\n * * {@link module:Layout.blob|Blobs} of fixed- or variable-{@link\n * module:Layout~Blob#length|length} raw data.\n *\n * All {@link module:Layout~Layout|Layout} instances are immutable\n * after construction, to prevent internal state from becoming\n * inconsistent.\n *\n * @local Layout\n * @local ExternalLayout\n * @local GreedyCount\n * @local OffsetLayout\n * @local UInt\n * @local UIntBE\n * @local Int\n * @local IntBE\n * @local NearUInt64\n * @local NearUInt64BE\n * @local NearInt64\n * @local NearInt64BE\n * @local Float\n * @local FloatBE\n * @local Double\n * @local DoubleBE\n * @local Sequence\n * @local Structure\n * @local UnionDiscriminator\n * @local UnionLayoutDiscriminator\n * @local Union\n * @local VariantLayout\n * @local BitStructure\n * @local BitField\n * @local Boolean\n * @local Blob\n * @local CString\n * @local Constant\n * @local bindConstructorLayout\n * @module Layout\n * @license MIT\n * @author Peter A. Bigot\n * @see {@link https://github.com/pabigot/buffer-layout|buffer-layout on GitHub}\n */\n'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.s16 = exports.s8 = exports.nu64be = exports.u48be = exports.u40be = exports.u32be = exports.u24be = exports.u16be = exports.nu64 = exports.u48 = exports.u40 = exports.u32 = exports.u24 = exports.u16 = exports.u8 = exports.offset = exports.greedy = exports.Constant = exports.UTF8 = exports.CString = exports.Blob = exports.Boolean = exports.BitField = exports.BitStructure = exports.VariantLayout = exports.Union = exports.UnionLayoutDiscriminator = exports.UnionDiscriminator = exports.Structure = exports.Sequence = exports.DoubleBE = exports.Double = exports.FloatBE = exports.Float = exports.NearInt64BE = exports.NearInt64 = exports.NearUInt64BE = exports.NearUInt64 = exports.IntBE = exports.Int = exports.UIntBE = exports.UInt = exports.OffsetLayout = exports.GreedyCount = exports.ExternalLayout = exports.bindConstructorLayout = exports.nameWithProperty = exports.Layout = exports.uint8ArrayToBuffer = exports.checkUint8Array = void 0;\nexports.constant = exports.utf8 = exports.cstr = exports.blob = exports.unionLayoutDiscriminator = exports.union = exports.seq = exports.bits = exports.struct = exports.f64be = exports.f64 = exports.f32be = exports.f32 = exports.ns64be = exports.s48be = exports.s40be = exports.s32be = exports.s24be = exports.s16be = exports.ns64 = exports.s48 = exports.s40 = exports.s32 = exports.s24 = void 0;\nconst buffer_1 = require(\"buffer\");\n/* Check if a value is a Uint8Array.\n *\n * @ignore */\nfunction checkUint8Array(b) {\n if (!(b instanceof Uint8Array)) {\n throw new TypeError('b must be a Uint8Array');\n }\n}\nexports.checkUint8Array = checkUint8Array;\n/* Create a Buffer instance from a Uint8Array.\n *\n * @ignore */\nfunction uint8ArrayToBuffer(b) {\n checkUint8Array(b);\n return buffer_1.Buffer.from(b.buffer, b.byteOffset, b.length);\n}\nexports.uint8ArrayToBuffer = uint8ArrayToBuffer;\n/**\n * Base class for layout objects.\n *\n * **NOTE** This is an abstract base class; you can create instances\n * if it amuses you, but they won't support the {@link\n * Layout#encode|encode} or {@link Layout#decode|decode} functions.\n *\n * @param {Number} span - Initializer for {@link Layout#span|span}. The\n * parameter must be an integer; a negative value signifies that the\n * span is {@link Layout#getSpan|value-specific}.\n *\n * @param {string} [property] - Initializer for {@link\n * Layout#property|property}.\n *\n * @abstract\n */\nclass Layout {\n constructor(span, property) {\n if (!Number.isInteger(span)) {\n throw new TypeError('span must be an integer');\n }\n /** The span of the layout in bytes.\n *\n * Positive values are generally expected.\n *\n * Zero will only appear in {@link Constant}s and in {@link\n * Sequence}s where the {@link Sequence#count|count} is zero.\n *\n * A negative value indicates that the span is value-specific, and\n * must be obtained using {@link Layout#getSpan|getSpan}. */\n this.span = span;\n /** The property name used when this layout is represented in an\n * Object.\n *\n * Used only for layouts that {@link Layout#decode|decode} to Object\n * instances. If left undefined the span of the unnamed layout will\n * be treated as padding: it will not be mutated by {@link\n * Layout#encode|encode} nor represented as a property in the\n * decoded Object. */\n this.property = property;\n }\n /** Function to create an Object into which decoded properties will\n * be written.\n *\n * Used only for layouts that {@link Layout#decode|decode} to Object\n * instances, which means:\n * * {@link Structure}\n * * {@link Union}\n * * {@link VariantLayout}\n * * {@link BitStructure}\n *\n * If left undefined the JavaScript representation of these layouts\n * will be Object instances.\n *\n * See {@link bindConstructorLayout}.\n */\n makeDestinationObject() {\n return {};\n }\n /**\n * Calculate the span of a specific instance of a layout.\n *\n * @param {Uint8Array} b - the buffer that contains an encoded instance.\n *\n * @param {Number} [offset] - the offset at which the encoded instance\n * starts. If absent a zero offset is inferred.\n *\n * @return {Number} - the number of bytes covered by the layout\n * instance. If this method is not overridden in a subclass the\n * definition-time constant {@link Layout#span|span} will be\n * returned.\n *\n * @throws {RangeError} - if the length of the value cannot be\n * determined.\n */\n getSpan(b, offset) {\n if (0 > this.span) {\n throw new RangeError('indeterminate span');\n }\n return this.span;\n }\n /**\n * Replicate the layout using a new property.\n *\n * This function must be used to get a structurally-equivalent layout\n * with a different name since all {@link Layout} instances are\n * immutable.\n *\n * **NOTE** This is a shallow copy. All fields except {@link\n * Layout#property|property} are strictly equal to the origin layout.\n *\n * @param {String} property - the value for {@link\n * Layout#property|property} in the replica.\n *\n * @returns {Layout} - the copy with {@link Layout#property|property}\n * set to `property`.\n */\n replicate(property) {\n const rv = Object.create(this.constructor.prototype);\n Object.assign(rv, this);\n rv.property = property;\n return rv;\n }\n /**\n * Create an object from layout properties and an array of values.\n *\n * **NOTE** This function returns `undefined` if invoked on a layout\n * that does not return its value as an Object. Objects are\n * returned for things that are a {@link Structure}, which includes\n * {@link VariantLayout|variant layouts} if they are structures, and\n * excludes {@link Union}s. If you want this feature for a union\n * you must use {@link Union.getVariant|getVariant} to select the\n * desired layout.\n *\n * @param {Array} values - an array of values that correspond to the\n * default order for properties. As with {@link Layout#decode|decode}\n * layout elements that have no property name are skipped when\n * iterating over the array values. Only the top-level properties are\n * assigned; arguments are not assigned to properties of contained\n * layouts. Any unused values are ignored.\n *\n * @return {(Object|undefined)}\n */\n fromArray(values) {\n return undefined;\n }\n}\nexports.Layout = Layout;\n/* Provide text that carries a name (such as for a function that will\n * be throwing an error) annotated with the property of a given layout\n * (such as one for which the value was unacceptable).\n *\n * @ignore */\nfunction nameWithProperty(name, lo) {\n if (lo.property) {\n return name + '[' + lo.property + ']';\n }\n return name;\n}\nexports.nameWithProperty = nameWithProperty;\n/**\n * Augment a class so that instances can be encoded/decoded using a\n * given layout.\n *\n * Calling this function couples `Class` with `layout` in several ways:\n *\n * * `Class.layout_` becomes a static member property equal to `layout`;\n * * `layout.boundConstructor_` becomes a static member property equal\n * to `Class`;\n * * The {@link Layout#makeDestinationObject|makeDestinationObject()}\n * property of `layout` is set to a function that returns a `new\n * Class()`;\n * * `Class.decode(b, offset)` becomes a static member function that\n * delegates to {@link Layout#decode|layout.decode}. The\n * synthesized function may be captured and extended.\n * * `Class.prototype.encode(b, offset)` provides an instance member\n * function that delegates to {@link Layout#encode|layout.encode}\n * with `src` set to `this`. The synthesized function may be\n * captured and extended, but when the extension is invoked `this`\n * must be explicitly bound to the instance.\n *\n * @param {class} Class - a JavaScript class with a nullary\n * constructor.\n *\n * @param {Layout} layout - the {@link Layout} instance used to encode\n * instances of `Class`.\n */\n// `Class` must be a constructor Function, but the assignment of a `layout_` property to it makes it difficult to type\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nfunction bindConstructorLayout(Class, layout) {\n if ('function' !== typeof Class) {\n throw new TypeError('Class must be constructor');\n }\n if (Object.prototype.hasOwnProperty.call(Class, 'layout_')) {\n throw new Error('Class is already bound to a layout');\n }\n if (!(layout && (layout instanceof Layout))) {\n throw new TypeError('layout must be a Layout');\n }\n if (Object.prototype.hasOwnProperty.call(layout, 'boundConstructor_')) {\n throw new Error('layout is already bound to a constructor');\n }\n Class.layout_ = layout;\n layout.boundConstructor_ = Class;\n layout.makeDestinationObject = (() => new Class());\n Object.defineProperty(Class.prototype, 'encode', {\n value(b, offset) {\n return layout.encode(this, b, offset);\n },\n writable: true,\n });\n Object.defineProperty(Class, 'decode', {\n value(b, offset) {\n return layout.decode(b, offset);\n },\n writable: true,\n });\n}\nexports.bindConstructorLayout = bindConstructorLayout;\n/**\n * An object that behaves like a layout but does not consume space\n * within its containing layout.\n *\n * This is primarily used to obtain metadata about a member, such as a\n * {@link OffsetLayout} that can provide data about a {@link\n * Layout#getSpan|value-specific span}.\n *\n * **NOTE** This is an abstract base class; you can create instances\n * if it amuses you, but they won't support {@link\n * ExternalLayout#isCount|isCount} or other {@link Layout} functions.\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @abstract\n * @augments {Layout}\n */\nclass ExternalLayout extends Layout {\n /**\n * Return `true` iff the external layout decodes to an unsigned\n * integer layout.\n *\n * In that case it can be used as the source of {@link\n * Sequence#count|Sequence counts}, {@link Blob#length|Blob lengths},\n * or as {@link UnionLayoutDiscriminator#layout|external union\n * discriminators}.\n *\n * @abstract\n */\n isCount() {\n throw new Error('ExternalLayout is abstract');\n }\n}\nexports.ExternalLayout = ExternalLayout;\n/**\n * An {@link ExternalLayout} that determines its {@link\n * Layout#decode|value} based on offset into and length of the buffer\n * on which it is invoked.\n *\n * *Factory*: {@link module:Layout.greedy|greedy}\n *\n * @param {Number} [elementSpan] - initializer for {@link\n * GreedyCount#elementSpan|elementSpan}.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {ExternalLayout}\n */\nclass GreedyCount extends ExternalLayout {\n constructor(elementSpan = 1, property) {\n if ((!Number.isInteger(elementSpan)) || (0 >= elementSpan)) {\n throw new TypeError('elementSpan must be a (positive) integer');\n }\n super(-1, property);\n /** The layout for individual elements of the sequence. The value\n * must be a positive integer. If not provided, the value will be\n * 1. */\n this.elementSpan = elementSpan;\n }\n /** @override */\n isCount() {\n return true;\n }\n /** @override */\n decode(b, offset = 0) {\n checkUint8Array(b);\n const rem = b.length - offset;\n return Math.floor(rem / this.elementSpan);\n }\n /** @override */\n encode(src, b, offset) {\n return 0;\n }\n}\nexports.GreedyCount = GreedyCount;\n/**\n * An {@link ExternalLayout} that supports accessing a {@link Layout}\n * at a fixed offset from the start of another Layout. The offset may\n * be before, within, or after the base layout.\n *\n * *Factory*: {@link module:Layout.offset|offset}\n *\n * @param {Layout} layout - initializer for {@link\n * OffsetLayout#layout|layout}, modulo `property`.\n *\n * @param {Number} [offset] - Initializes {@link\n * OffsetLayout#offset|offset}. Defaults to zero.\n *\n * @param {string} [property] - Optional new property name for a\n * {@link Layout#replicate| replica} of `layout` to be used as {@link\n * OffsetLayout#layout|layout}. If not provided the `layout` is used\n * unchanged.\n *\n * @augments {Layout}\n */\nclass OffsetLayout extends ExternalLayout {\n constructor(layout, offset = 0, property) {\n if (!(layout instanceof Layout)) {\n throw new TypeError('layout must be a Layout');\n }\n if (!Number.isInteger(offset)) {\n throw new TypeError('offset must be integer or undefined');\n }\n super(layout.span, property || layout.property);\n /** The subordinated layout. */\n this.layout = layout;\n /** The location of {@link OffsetLayout#layout} relative to the\n * start of another layout.\n *\n * The value may be positive or negative, but an error will thrown\n * if at the point of use it goes outside the span of the Uint8Array\n * being accessed. */\n this.offset = offset;\n }\n /** @override */\n isCount() {\n return ((this.layout instanceof UInt)\n || (this.layout instanceof UIntBE));\n }\n /** @override */\n decode(b, offset = 0) {\n return this.layout.decode(b, offset + this.offset);\n }\n /** @override */\n encode(src, b, offset = 0) {\n return this.layout.encode(src, b, offset + this.offset);\n }\n}\nexports.OffsetLayout = OffsetLayout;\n/**\n * Represent an unsigned integer in little-endian format.\n *\n * *Factory*: {@link module:Layout.u8|u8}, {@link\n * module:Layout.u16|u16}, {@link module:Layout.u24|u24}, {@link\n * module:Layout.u32|u32}, {@link module:Layout.u40|u40}, {@link\n * module:Layout.u48|u48}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass UInt extends Layout {\n constructor(span, property) {\n super(span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n /** @override */\n decode(b, offset = 0) {\n return uint8ArrayToBuffer(b).readUIntLE(offset, this.span);\n }\n /** @override */\n encode(src, b, offset = 0) {\n uint8ArrayToBuffer(b).writeUIntLE(src, offset, this.span);\n return this.span;\n }\n}\nexports.UInt = UInt;\n/**\n * Represent an unsigned integer in big-endian format.\n *\n * *Factory*: {@link module:Layout.u8be|u8be}, {@link\n * module:Layout.u16be|u16be}, {@link module:Layout.u24be|u24be},\n * {@link module:Layout.u32be|u32be}, {@link\n * module:Layout.u40be|u40be}, {@link module:Layout.u48be|u48be}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass UIntBE extends Layout {\n constructor(span, property) {\n super(span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n /** @override */\n decode(b, offset = 0) {\n return uint8ArrayToBuffer(b).readUIntBE(offset, this.span);\n }\n /** @override */\n encode(src, b, offset = 0) {\n uint8ArrayToBuffer(b).writeUIntBE(src, offset, this.span);\n return this.span;\n }\n}\nexports.UIntBE = UIntBE;\n/**\n * Represent a signed integer in little-endian format.\n *\n * *Factory*: {@link module:Layout.s8|s8}, {@link\n * module:Layout.s16|s16}, {@link module:Layout.s24|s24}, {@link\n * module:Layout.s32|s32}, {@link module:Layout.s40|s40}, {@link\n * module:Layout.s48|s48}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Int extends Layout {\n constructor(span, property) {\n super(span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n /** @override */\n decode(b, offset = 0) {\n return uint8ArrayToBuffer(b).readIntLE(offset, this.span);\n }\n /** @override */\n encode(src, b, offset = 0) {\n uint8ArrayToBuffer(b).writeIntLE(src, offset, this.span);\n return this.span;\n }\n}\nexports.Int = Int;\n/**\n * Represent a signed integer in big-endian format.\n *\n * *Factory*: {@link module:Layout.s8be|s8be}, {@link\n * module:Layout.s16be|s16be}, {@link module:Layout.s24be|s24be},\n * {@link module:Layout.s32be|s32be}, {@link\n * module:Layout.s40be|s40be}, {@link module:Layout.s48be|s48be}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass IntBE extends Layout {\n constructor(span, property) {\n super(span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n /** @override */\n decode(b, offset = 0) {\n return uint8ArrayToBuffer(b).readIntBE(offset, this.span);\n }\n /** @override */\n encode(src, b, offset = 0) {\n uint8ArrayToBuffer(b).writeIntBE(src, offset, this.span);\n return this.span;\n }\n}\nexports.IntBE = IntBE;\nconst V2E32 = Math.pow(2, 32);\n/* True modulus high and low 32-bit words, where low word is always\n * non-negative. */\nfunction divmodInt64(src) {\n const hi32 = Math.floor(src / V2E32);\n const lo32 = src - (hi32 * V2E32);\n return { hi32, lo32 };\n}\n/* Reconstruct Number from quotient and non-negative remainder */\nfunction roundedInt64(hi32, lo32) {\n return hi32 * V2E32 + lo32;\n}\n/**\n * Represent an unsigned 64-bit integer in little-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.nu64|nu64}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearUInt64 extends Layout {\n constructor(property) {\n super(8, property);\n }\n /** @override */\n decode(b, offset = 0) {\n const buffer = uint8ArrayToBuffer(b);\n const lo32 = buffer.readUInt32LE(offset);\n const hi32 = buffer.readUInt32LE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n /** @override */\n encode(src, b, offset = 0) {\n const split = divmodInt64(src);\n const buffer = uint8ArrayToBuffer(b);\n buffer.writeUInt32LE(split.lo32, offset);\n buffer.writeUInt32LE(split.hi32, offset + 4);\n return 8;\n }\n}\nexports.NearUInt64 = NearUInt64;\n/**\n * Represent an unsigned 64-bit integer in big-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.nu64be|nu64be}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearUInt64BE extends Layout {\n constructor(property) {\n super(8, property);\n }\n /** @override */\n decode(b, offset = 0) {\n const buffer = uint8ArrayToBuffer(b);\n const hi32 = buffer.readUInt32BE(offset);\n const lo32 = buffer.readUInt32BE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n /** @override */\n encode(src, b, offset = 0) {\n const split = divmodInt64(src);\n const buffer = uint8ArrayToBuffer(b);\n buffer.writeUInt32BE(split.hi32, offset);\n buffer.writeUInt32BE(split.lo32, offset + 4);\n return 8;\n }\n}\nexports.NearUInt64BE = NearUInt64BE;\n/**\n * Represent a signed 64-bit integer in little-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.ns64|ns64}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearInt64 extends Layout {\n constructor(property) {\n super(8, property);\n }\n /** @override */\n decode(b, offset = 0) {\n const buffer = uint8ArrayToBuffer(b);\n const lo32 = buffer.readUInt32LE(offset);\n const hi32 = buffer.readInt32LE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n /** @override */\n encode(src, b, offset = 0) {\n const split = divmodInt64(src);\n const buffer = uint8ArrayToBuffer(b);\n buffer.writeUInt32LE(split.lo32, offset);\n buffer.writeInt32LE(split.hi32, offset + 4);\n return 8;\n }\n}\nexports.NearInt64 = NearInt64;\n/**\n * Represent a signed 64-bit integer in big-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.ns64be|ns64be}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearInt64BE extends Layout {\n constructor(property) {\n super(8, property);\n }\n /** @override */\n decode(b, offset = 0) {\n const buffer = uint8ArrayToBuffer(b);\n const hi32 = buffer.readInt32BE(offset);\n const lo32 = buffer.readUInt32BE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n /** @override */\n encode(src, b, offset = 0) {\n const split = divmodInt64(src);\n const buffer = uint8ArrayToBuffer(b);\n buffer.writeInt32BE(split.hi32, offset);\n buffer.writeUInt32BE(split.lo32, offset + 4);\n return 8;\n }\n}\nexports.NearInt64BE = NearInt64BE;\n/**\n * Represent a 32-bit floating point number in little-endian format.\n *\n * *Factory*: {@link module:Layout.f32|f32}\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Float extends Layout {\n constructor(property) {\n super(4, property);\n }\n /** @override */\n decode(b, offset = 0) {\n return uint8ArrayToBuffer(b).readFloatLE(offset);\n }\n /** @override */\n encode(src, b, offset = 0) {\n uint8ArrayToBuffer(b).writeFloatLE(src, offset);\n return 4;\n }\n}\nexports.Float = Float;\n/**\n * Represent a 32-bit floating point number in big-endian format.\n *\n * *Factory*: {@link module:Layout.f32be|f32be}\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass FloatBE extends Layout {\n constructor(property) {\n super(4, property);\n }\n /** @override */\n decode(b, offset = 0) {\n return uint8ArrayToBuffer(b).readFloatBE(offset);\n }\n /** @override */\n encode(src, b, offset = 0) {\n uint8ArrayToBuffer(b).writeFloatBE(src, offset);\n return 4;\n }\n}\nexports.FloatBE = FloatBE;\n/**\n * Represent a 64-bit floating point number in little-endian format.\n *\n * *Factory*: {@link module:Layout.f64|f64}\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Double extends Layout {\n constructor(property) {\n super(8, property);\n }\n /** @override */\n decode(b, offset = 0) {\n return uint8ArrayToBuffer(b).readDoubleLE(offset);\n }\n /** @override */\n encode(src, b, offset = 0) {\n uint8ArrayToBuffer(b).writeDoubleLE(src, offset);\n return 8;\n }\n}\nexports.Double = Double;\n/**\n * Represent a 64-bit floating point number in big-endian format.\n *\n * *Factory*: {@link module:Layout.f64be|f64be}\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass DoubleBE extends Layout {\n constructor(property) {\n super(8, property);\n }\n /** @override */\n decode(b, offset = 0) {\n return uint8ArrayToBuffer(b).readDoubleBE(offset);\n }\n /** @override */\n encode(src, b, offset = 0) {\n uint8ArrayToBuffer(b).writeDoubleBE(src, offset);\n return 8;\n }\n}\nexports.DoubleBE = DoubleBE;\n/**\n * Represent a contiguous sequence of a specific layout as an Array.\n *\n * *Factory*: {@link module:Layout.seq|seq}\n *\n * @param {Layout} elementLayout - initializer for {@link\n * Sequence#elementLayout|elementLayout}.\n *\n * @param {(Number|ExternalLayout)} count - initializer for {@link\n * Sequence#count|count}. The parameter must be either a positive\n * integer or an instance of {@link ExternalLayout}.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Sequence extends Layout {\n constructor(elementLayout, count, property) {\n if (!(elementLayout instanceof Layout)) {\n throw new TypeError('elementLayout must be a Layout');\n }\n if (!(((count instanceof ExternalLayout) && count.isCount())\n || (Number.isInteger(count) && (0 <= count)))) {\n throw new TypeError('count must be non-negative integer '\n + 'or an unsigned integer ExternalLayout');\n }\n let span = -1;\n if ((!(count instanceof ExternalLayout))\n && (0 < elementLayout.span)) {\n span = count * elementLayout.span;\n }\n super(span, property);\n /** The layout for individual elements of the sequence. */\n this.elementLayout = elementLayout;\n /** The number of elements in the sequence.\n *\n * This will be either a non-negative integer or an instance of\n * {@link ExternalLayout} for which {@link\n * ExternalLayout#isCount|isCount()} is `true`. */\n this.count = count;\n }\n /** @override */\n getSpan(b, offset = 0) {\n if (0 <= this.span) {\n return this.span;\n }\n let span = 0;\n let count = this.count;\n if (count instanceof ExternalLayout) {\n count = count.decode(b, offset);\n }\n if (0 < this.elementLayout.span) {\n span = count * this.elementLayout.span;\n }\n else {\n let idx = 0;\n while (idx < count) {\n span += this.elementLayout.getSpan(b, offset + span);\n ++idx;\n }\n }\n return span;\n }\n /** @override */\n decode(b, offset = 0) {\n const rv = [];\n let i = 0;\n let count = this.count;\n if (count instanceof ExternalLayout) {\n count = count.decode(b, offset);\n }\n while (i < count) {\n rv.push(this.elementLayout.decode(b, offset));\n offset += this.elementLayout.getSpan(b, offset);\n i += 1;\n }\n return rv;\n }\n /** Implement {@link Layout#encode|encode} for {@link Sequence}.\n *\n * **NOTE** If `src` is shorter than {@link Sequence#count|count} then\n * the unused space in the buffer is left unchanged. If `src` is\n * longer than {@link Sequence#count|count} the unneeded elements are\n * ignored.\n *\n * **NOTE** If {@link Layout#count|count} is an instance of {@link\n * ExternalLayout} then the length of `src` will be encoded as the\n * count after `src` is encoded. */\n encode(src, b, offset = 0) {\n const elo = this.elementLayout;\n const span = src.reduce((span, v) => {\n return span + elo.encode(v, b, offset + span);\n }, 0);\n if (this.count instanceof ExternalLayout) {\n this.count.encode(src.length, b, offset);\n }\n return span;\n }\n}\nexports.Sequence = Sequence;\n/**\n * Represent a contiguous sequence of arbitrary layout elements as an\n * Object.\n *\n * *Factory*: {@link module:Layout.struct|struct}\n *\n * **NOTE** The {@link Layout#span|span} of the structure is variable\n * if any layout in {@link Structure#fields|fields} has a variable\n * span. When {@link Layout#encode|encoding} we must have a value for\n * all variable-length fields, or we wouldn't be able to figure out\n * how much space to use for storage. We can only identify the value\n * for a field when it has a {@link Layout#property|property}. As\n * such, although a structure may contain both unnamed fields and\n * variable-length fields, it cannot contain an unnamed\n * variable-length field.\n *\n * @param {Layout[]} fields - initializer for {@link\n * Structure#fields|fields}. An error is raised if this contains a\n * variable-length field for which a {@link Layout#property|property}\n * is not defined.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @param {Boolean} [decodePrefixes] - initializer for {@link\n * Structure#decodePrefixes|property}.\n *\n * @throws {Error} - if `fields` contains an unnamed variable-length\n * layout.\n *\n * @augments {Layout}\n */\nclass Structure extends Layout {\n constructor(fields, property, decodePrefixes) {\n if (!(Array.isArray(fields)\n && fields.reduce((acc, v) => acc && (v instanceof Layout), true))) {\n throw new TypeError('fields must be array of Layout instances');\n }\n if (('boolean' === typeof property)\n && (undefined === decodePrefixes)) {\n decodePrefixes = property;\n property = undefined;\n }\n /* Verify absence of unnamed variable-length fields. */\n for (const fd of fields) {\n if ((0 > fd.span)\n && (undefined === fd.property)) {\n throw new Error('fields cannot contain unnamed variable-length layout');\n }\n }\n let span = -1;\n try {\n span = fields.reduce((span, fd) => span + fd.getSpan(), 0);\n }\n catch (e) {\n // ignore error\n }\n super(span, property);\n /** The sequence of {@link Layout} values that comprise the\n * structure.\n *\n * The individual elements need not be the same type, and may be\n * either scalar or aggregate layouts. If a member layout leaves\n * its {@link Layout#property|property} undefined the\n * corresponding region of the buffer associated with the element\n * will not be mutated.\n *\n * @type {Layout[]} */\n this.fields = fields;\n /** Control behavior of {@link Layout#decode|decode()} given short\n * buffers.\n *\n * In some situations a structure many be extended with additional\n * fields over time, with older installations providing only a\n * prefix of the full structure. If this property is `true`\n * decoding will accept those buffers and leave subsequent fields\n * undefined, as long as the buffer ends at a field boundary.\n * Defaults to `false`. */\n this.decodePrefixes = !!decodePrefixes;\n }\n /** @override */\n getSpan(b, offset = 0) {\n if (0 <= this.span) {\n return this.span;\n }\n let span = 0;\n try {\n span = this.fields.reduce((span, fd) => {\n const fsp = fd.getSpan(b, offset);\n offset += fsp;\n return span + fsp;\n }, 0);\n }\n catch (e) {\n throw new RangeError('indeterminate span');\n }\n return span;\n }\n /** @override */\n decode(b, offset = 0) {\n checkUint8Array(b);\n const dest = this.makeDestinationObject();\n for (const fd of this.fields) {\n if (undefined !== fd.property) {\n dest[fd.property] = fd.decode(b, offset);\n }\n offset += fd.getSpan(b, offset);\n if (this.decodePrefixes\n && (b.length === offset)) {\n break;\n }\n }\n return dest;\n }\n /** Implement {@link Layout#encode|encode} for {@link Structure}.\n *\n * If `src` is missing a property for a member with a defined {@link\n * Layout#property|property} the corresponding region of the buffer is\n * left unmodified. */\n encode(src, b, offset = 0) {\n const firstOffset = offset;\n let lastOffset = 0;\n let lastWrote = 0;\n for (const fd of this.fields) {\n let span = fd.span;\n lastWrote = (0 < span) ? span : 0;\n if (undefined !== fd.property) {\n const fv = src[fd.property];\n if (undefined !== fv) {\n lastWrote = fd.encode(fv, b, offset);\n if (0 > span) {\n /* Read the as-encoded span, which is not necessarily the\n * same as what we wrote. */\n span = fd.getSpan(b, offset);\n }\n }\n }\n lastOffset = offset;\n offset += span;\n }\n /* Use (lastOffset + lastWrote) instead of offset because the last\n * item may have had a dynamic length and we don't want to include\n * the padding between it and the end of the space reserved for\n * it. */\n return (lastOffset + lastWrote) - firstOffset;\n }\n /** @override */\n fromArray(values) {\n const dest = this.makeDestinationObject();\n for (const fd of this.fields) {\n if ((undefined !== fd.property)\n && (0 < values.length)) {\n dest[fd.property] = values.shift();\n }\n }\n return dest;\n }\n /**\n * Get access to the layout of a given property.\n *\n * @param {String} property - the structure member of interest.\n *\n * @return {Layout} - the layout associated with `property`, or\n * undefined if there is no such property.\n */\n layoutFor(property) {\n if ('string' !== typeof property) {\n throw new TypeError('property must be string');\n }\n for (const fd of this.fields) {\n if (fd.property === property) {\n return fd;\n }\n }\n return undefined;\n }\n /**\n * Get the offset of a structure member.\n *\n * @param {String} property - the structure member of interest.\n *\n * @return {Number} - the offset in bytes to the start of `property`\n * within the structure, or undefined if `property` is not a field\n * within the structure. If the property is a member but follows a\n * variable-length structure member a negative number will be\n * returned.\n */\n offsetOf(property) {\n if ('string' !== typeof property) {\n throw new TypeError('property must be string');\n }\n let offset = 0;\n for (const fd of this.fields) {\n if (fd.property === property) {\n return offset;\n }\n if (0 > fd.span) {\n offset = -1;\n }\n else if (0 <= offset) {\n offset += fd.span;\n }\n }\n return undefined;\n }\n}\nexports.Structure = Structure;\n/**\n * An object that can provide a {@link\n * Union#discriminator|discriminator} API for {@link Union}.\n *\n * **NOTE** This is an abstract base class; you can create instances\n * if it amuses you, but they won't support the {@link\n * UnionDiscriminator#encode|encode} or {@link\n * UnionDiscriminator#decode|decode} functions.\n *\n * @param {string} [property] - Default for {@link\n * UnionDiscriminator#property|property}.\n *\n * @abstract\n */\nclass UnionDiscriminator {\n constructor(property) {\n /** The {@link Layout#property|property} to be used when the\n * discriminator is referenced in isolation (generally when {@link\n * Union#decode|Union decode} cannot delegate to a specific\n * variant). */\n this.property = property;\n }\n /** Analog to {@link Layout#decode|Layout decode} for union discriminators.\n *\n * The implementation of this method need not reference the buffer if\n * variant information is available through other means. */\n decode(b, offset) {\n throw new Error('UnionDiscriminator is abstract');\n }\n /** Analog to {@link Layout#decode|Layout encode} for union discriminators.\n *\n * The implementation of this method need not store the value if\n * variant information is maintained through other means. */\n encode(src, b, offset) {\n throw new Error('UnionDiscriminator is abstract');\n }\n}\nexports.UnionDiscriminator = UnionDiscriminator;\n/**\n * An object that can provide a {@link\n * UnionDiscriminator|discriminator API} for {@link Union} using an\n * unsigned integral {@link Layout} instance located either inside or\n * outside the union.\n *\n * @param {ExternalLayout} layout - initializes {@link\n * UnionLayoutDiscriminator#layout|layout}. Must satisfy {@link\n * ExternalLayout#isCount|isCount()}.\n *\n * @param {string} [property] - Default for {@link\n * UnionDiscriminator#property|property}, superseding the property\n * from `layout`, but defaulting to `variant` if neither `property`\n * nor layout provide a property name.\n *\n * @augments {UnionDiscriminator}\n */\nclass UnionLayoutDiscriminator extends UnionDiscriminator {\n constructor(layout, property) {\n if (!((layout instanceof ExternalLayout)\n && layout.isCount())) {\n throw new TypeError('layout must be an unsigned integer ExternalLayout');\n }\n super(property || layout.property || 'variant');\n /** The {@link ExternalLayout} used to access the discriminator\n * value. */\n this.layout = layout;\n }\n /** Delegate decoding to {@link UnionLayoutDiscriminator#layout|layout}. */\n decode(b, offset) {\n return this.layout.decode(b, offset);\n }\n /** Delegate encoding to {@link UnionLayoutDiscriminator#layout|layout}. */\n encode(src, b, offset) {\n return this.layout.encode(src, b, offset);\n }\n}\nexports.UnionLayoutDiscriminator = UnionLayoutDiscriminator;\n/**\n * Represent any number of span-compatible layouts.\n *\n * *Factory*: {@link module:Layout.union|union}\n *\n * If the union has a {@link Union#defaultLayout|default layout} that\n * layout must have a non-negative {@link Layout#span|span}. The span\n * of a fixed-span union includes its {@link\n * Union#discriminator|discriminator} if the variant is a {@link\n * Union#usesPrefixDiscriminator|prefix of the union}, plus the span\n * of its {@link Union#defaultLayout|default layout}.\n *\n * If the union does not have a default layout then the encoded span\n * of the union depends on the encoded span of its variant (which may\n * be fixed or variable).\n *\n * {@link VariantLayout#layout|Variant layout}s are added through\n * {@link Union#addVariant|addVariant}. If the union has a default\n * layout, the span of the {@link VariantLayout#layout|layout\n * contained by the variant} must not exceed the span of the {@link\n * Union#defaultLayout|default layout} (minus the span of a {@link\n * Union#usesPrefixDiscriminator|prefix disriminator}, if used). The\n * span of the variant will equal the span of the union itself.\n *\n * The variant for a buffer can only be identified from the {@link\n * Union#discriminator|discriminator} {@link\n * UnionDiscriminator#property|property} (in the case of the {@link\n * Union#defaultLayout|default layout}), or by using {@link\n * Union#getVariant|getVariant} and examining the resulting {@link\n * VariantLayout} instance.\n *\n * A variant compatible with a JavaScript object can be identified\n * using {@link Union#getSourceVariant|getSourceVariant}.\n *\n * @param {(UnionDiscriminator|ExternalLayout|Layout)} discr - How to\n * identify the layout used to interpret the union contents. The\n * parameter must be an instance of {@link UnionDiscriminator}, an\n * {@link ExternalLayout} that satisfies {@link\n * ExternalLayout#isCount|isCount()}, or {@link UInt} (or {@link\n * UIntBE}). When a non-external layout element is passed the layout\n * appears at the start of the union. In all cases the (synthesized)\n * {@link UnionDiscriminator} instance is recorded as {@link\n * Union#discriminator|discriminator}.\n *\n * @param {(Layout|null)} defaultLayout - initializer for {@link\n * Union#defaultLayout|defaultLayout}. If absent defaults to `null`.\n * If `null` there is no default layout: the union has data-dependent\n * length and attempts to decode or encode unrecognized variants will\n * throw an exception. A {@link Layout} instance must have a\n * non-negative {@link Layout#span|span}, and if it lacks a {@link\n * Layout#property|property} the {@link\n * Union#defaultLayout|defaultLayout} will be a {@link\n * Layout#replicate|replica} with property `content`.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Union extends Layout {\n constructor(discr, defaultLayout, property) {\n let discriminator;\n if ((discr instanceof UInt)\n || (discr instanceof UIntBE)) {\n discriminator = new UnionLayoutDiscriminator(new OffsetLayout(discr));\n }\n else if ((discr instanceof ExternalLayout)\n && discr.isCount()) {\n discriminator = new UnionLayoutDiscriminator(discr);\n }\n else if (!(discr instanceof UnionDiscriminator)) {\n throw new TypeError('discr must be a UnionDiscriminator '\n + 'or an unsigned integer layout');\n }\n else {\n discriminator = discr;\n }\n if (undefined === defaultLayout) {\n defaultLayout = null;\n }\n if (!((null === defaultLayout)\n || (defaultLayout instanceof Layout))) {\n throw new TypeError('defaultLayout must be null or a Layout');\n }\n if (null !== defaultLayout) {\n if (0 > defaultLayout.span) {\n throw new Error('defaultLayout must have constant span');\n }\n if (undefined === defaultLayout.property) {\n defaultLayout = defaultLayout.replicate('content');\n }\n }\n /* The union span can be estimated only if there's a default\n * layout. The union spans its default layout, plus any prefix\n * variant layout. By construction both layouts, if present, have\n * non-negative span. */\n let span = -1;\n if (defaultLayout) {\n span = defaultLayout.span;\n if ((0 <= span) && ((discr instanceof UInt)\n || (discr instanceof UIntBE))) {\n span += discriminator.layout.span;\n }\n }\n super(span, property);\n /** The interface for the discriminator value in isolation.\n *\n * This a {@link UnionDiscriminator} either passed to the\n * constructor or synthesized from the `discr` constructor\n * argument. {@link\n * Union#usesPrefixDiscriminator|usesPrefixDiscriminator} will be\n * `true` iff the `discr` parameter was a non-offset {@link\n * Layout} instance. */\n this.discriminator = discriminator;\n /** `true` if the {@link Union#discriminator|discriminator} is the\n * first field in the union.\n *\n * If `false` the discriminator is obtained from somewhere\n * else. */\n this.usesPrefixDiscriminator = (discr instanceof UInt)\n || (discr instanceof UIntBE);\n /** The layout for non-discriminator content when the value of the\n * discriminator is not recognized.\n *\n * This is the value passed to the constructor. It is\n * structurally equivalent to the second component of {@link\n * Union#layout|layout} but may have a different property\n * name. */\n this.defaultLayout = defaultLayout;\n /** A registry of allowed variants.\n *\n * The keys are unsigned integers which should be compatible with\n * {@link Union.discriminator|discriminator}. The property value\n * is the corresponding {@link VariantLayout} instances assigned\n * to this union by {@link Union#addVariant|addVariant}.\n *\n * **NOTE** The registry remains mutable so that variants can be\n * {@link Union#addVariant|added} at any time. Users should not\n * manipulate the content of this property. */\n this.registry = {};\n /* Private variable used when invoking getSourceVariant */\n let boundGetSourceVariant = this.defaultGetSourceVariant.bind(this);\n /** Function to infer the variant selected by a source object.\n *\n * Defaults to {@link\n * Union#defaultGetSourceVariant|defaultGetSourceVariant} but may\n * be overridden using {@link\n * Union#configGetSourceVariant|configGetSourceVariant}.\n *\n * @param {Object} src - as with {@link\n * Union#defaultGetSourceVariant|defaultGetSourceVariant}.\n *\n * @returns {(undefined|VariantLayout)} The default variant\n * (`undefined`) or first registered variant that uses a property\n * available in `src`. */\n this.getSourceVariant = function (src) {\n return boundGetSourceVariant(src);\n };\n /** Function to override the implementation of {@link\n * Union#getSourceVariant|getSourceVariant}.\n *\n * Use this if the desired variant cannot be identified using the\n * algorithm of {@link\n * Union#defaultGetSourceVariant|defaultGetSourceVariant}.\n *\n * **NOTE** The provided function will be invoked bound to this\n * Union instance, providing local access to {@link\n * Union#registry|registry}.\n *\n * @param {Function} gsv - a function that follows the API of\n * {@link Union#defaultGetSourceVariant|defaultGetSourceVariant}. */\n this.configGetSourceVariant = function (gsv) {\n boundGetSourceVariant = gsv.bind(this);\n };\n }\n /** @override */\n getSpan(b, offset = 0) {\n if (0 <= this.span) {\n return this.span;\n }\n /* Default layouts always have non-negative span, so we don't have\n * one and we have to recognize the variant which will in turn\n * determine the span. */\n const vlo = this.getVariant(b, offset);\n if (!vlo) {\n throw new Error('unable to determine span for unrecognized variant');\n }\n return vlo.getSpan(b, offset);\n }\n /**\n * Method to infer a registered Union variant compatible with `src`.\n *\n * The first satisfied rule in the following sequence defines the\n * return value:\n * * If `src` has properties matching the Union discriminator and\n * the default layout, `undefined` is returned regardless of the\n * value of the discriminator property (this ensures the default\n * layout will be used);\n * * If `src` has a property matching the Union discriminator, the\n * value of the discriminator identifies a registered variant, and\n * either (a) the variant has no layout, or (b) `src` has the\n * variant's property, then the variant is returned (because the\n * source satisfies the constraints of the variant it identifies);\n * * If `src` does not have a property matching the Union\n * discriminator, but does have a property matching a registered\n * variant, then the variant is returned (because the source\n * matches a variant without an explicit conflict);\n * * An error is thrown (because we either can't identify a variant,\n * or we were explicitly told the variant but can't satisfy it).\n *\n * @param {Object} src - an object presumed to be compatible with\n * the content of the Union.\n *\n * @return {(undefined|VariantLayout)} - as described above.\n *\n * @throws {Error} - if `src` cannot be associated with a default or\n * registered variant.\n */\n defaultGetSourceVariant(src) {\n if (Object.prototype.hasOwnProperty.call(src, this.discriminator.property)) {\n if (this.defaultLayout && this.defaultLayout.property\n && Object.prototype.hasOwnProperty.call(src, this.defaultLayout.property)) {\n return undefined;\n }\n const vlo = this.registry[src[this.discriminator.property]];\n if (vlo\n && ((!vlo.layout)\n || (vlo.property && Object.prototype.hasOwnProperty.call(src, vlo.property)))) {\n return vlo;\n }\n }\n else {\n for (const tag in this.registry) {\n const vlo = this.registry[tag];\n if (vlo.property && Object.prototype.hasOwnProperty.call(src, vlo.property)) {\n return vlo;\n }\n }\n }\n throw new Error('unable to infer src variant');\n }\n /** Implement {@link Layout#decode|decode} for {@link Union}.\n *\n * If the variant is {@link Union#addVariant|registered} the return\n * value is an instance of that variant, with no explicit\n * discriminator. Otherwise the {@link Union#defaultLayout|default\n * layout} is used to decode the content. */\n decode(b, offset = 0) {\n let dest;\n const dlo = this.discriminator;\n const discr = dlo.decode(b, offset);\n const clo = this.registry[discr];\n if (undefined === clo) {\n const defaultLayout = this.defaultLayout;\n let contentOffset = 0;\n if (this.usesPrefixDiscriminator) {\n contentOffset = dlo.layout.span;\n }\n dest = this.makeDestinationObject();\n dest[dlo.property] = discr;\n // defaultLayout.property can be undefined, but this is allowed by buffer-layout\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n dest[defaultLayout.property] = defaultLayout.decode(b, offset + contentOffset);\n }\n else {\n dest = clo.decode(b, offset);\n }\n return dest;\n }\n /** Implement {@link Layout#encode|encode} for {@link Union}.\n *\n * This API assumes the `src` object is consistent with the union's\n * {@link Union#defaultLayout|default layout}. To encode variants\n * use the appropriate variant-specific {@link VariantLayout#encode}\n * method. */\n encode(src, b, offset = 0) {\n const vlo = this.getSourceVariant(src);\n if (undefined === vlo) {\n const dlo = this.discriminator;\n // this.defaultLayout is not undefined when vlo is undefined\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const clo = this.defaultLayout;\n let contentOffset = 0;\n if (this.usesPrefixDiscriminator) {\n contentOffset = dlo.layout.span;\n }\n dlo.encode(src[dlo.property], b, offset);\n // clo.property is not undefined when vlo is undefined\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return contentOffset + clo.encode(src[clo.property], b, offset + contentOffset);\n }\n return vlo.encode(src, b, offset);\n }\n /** Register a new variant structure within a union. The newly\n * created variant is returned.\n *\n * @param {Number} variant - initializer for {@link\n * VariantLayout#variant|variant}.\n *\n * @param {Layout} layout - initializer for {@link\n * VariantLayout#layout|layout}.\n *\n * @param {String} property - initializer for {@link\n * Layout#property|property}.\n *\n * @return {VariantLayout} */\n addVariant(variant, layout, property) {\n const rv = new VariantLayout(this, variant, layout, property);\n this.registry[variant] = rv;\n return rv;\n }\n /**\n * Get the layout associated with a registered variant.\n *\n * If `vb` does not produce a registered variant the function returns\n * `undefined`.\n *\n * @param {(Number|Uint8Array)} vb - either the variant number, or a\n * buffer from which the discriminator is to be read.\n *\n * @param {Number} offset - offset into `vb` for the start of the\n * union. Used only when `vb` is an instance of {Uint8Array}.\n *\n * @return {({VariantLayout}|undefined)}\n */\n getVariant(vb, offset = 0) {\n let variant;\n if (vb instanceof Uint8Array) {\n variant = this.discriminator.decode(vb, offset);\n }\n else {\n variant = vb;\n }\n return this.registry[variant];\n }\n}\nexports.Union = Union;\n/**\n * Represent a specific variant within a containing union.\n *\n * **NOTE** The {@link Layout#span|span} of the variant may include\n * the span of the {@link Union#discriminator|discriminator} used to\n * identify it, but values read and written using the variant strictly\n * conform to the content of {@link VariantLayout#layout|layout}.\n *\n * **NOTE** User code should not invoke this constructor directly. Use\n * the union {@link Union#addVariant|addVariant} helper method.\n *\n * @param {Union} union - initializer for {@link\n * VariantLayout#union|union}.\n *\n * @param {Number} variant - initializer for {@link\n * VariantLayout#variant|variant}.\n *\n * @param {Layout} [layout] - initializer for {@link\n * VariantLayout#layout|layout}. If absent the variant carries no\n * data.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}. Unlike many other layouts, variant\n * layouts normally include a property name so they can be identified\n * within their containing {@link Union}. The property identifier may\n * be absent only if `layout` is is absent.\n *\n * @augments {Layout}\n */\nclass VariantLayout extends Layout {\n constructor(union, variant, layout, property) {\n if (!(union instanceof Union)) {\n throw new TypeError('union must be a Union');\n }\n if ((!Number.isInteger(variant)) || (0 > variant)) {\n throw new TypeError('variant must be a (non-negative) integer');\n }\n if (('string' === typeof layout)\n && (undefined === property)) {\n property = layout;\n layout = null;\n }\n if (layout) {\n if (!(layout instanceof Layout)) {\n throw new TypeError('layout must be a Layout');\n }\n if ((null !== union.defaultLayout)\n && (0 <= layout.span)\n && (layout.span > union.defaultLayout.span)) {\n throw new Error('variant span exceeds span of containing union');\n }\n if ('string' !== typeof property) {\n throw new TypeError('variant must have a String property');\n }\n }\n let span = union.span;\n if (0 > union.span) {\n span = layout ? layout.span : 0;\n if ((0 <= span) && union.usesPrefixDiscriminator) {\n span += union.discriminator.layout.span;\n }\n }\n super(span, property);\n /** The {@link Union} to which this variant belongs. */\n this.union = union;\n /** The unsigned integral value identifying this variant within\n * the {@link Union#discriminator|discriminator} of the containing\n * union. */\n this.variant = variant;\n /** The {@link Layout} to be used when reading/writing the\n * non-discriminator part of the {@link\n * VariantLayout#union|union}. If `null` the variant carries no\n * data. */\n this.layout = layout || null;\n }\n /** @override */\n getSpan(b, offset = 0) {\n if (0 <= this.span) {\n /* Will be equal to the containing union span if that is not\n * variable. */\n return this.span;\n }\n let contentOffset = 0;\n if (this.union.usesPrefixDiscriminator) {\n contentOffset = this.union.discriminator.layout.span;\n }\n /* Span is defined solely by the variant (and prefix discriminator) */\n let span = 0;\n if (this.layout) {\n span = this.layout.getSpan(b, offset + contentOffset);\n }\n return contentOffset + span;\n }\n /** @override */\n decode(b, offset = 0) {\n const dest = this.makeDestinationObject();\n if (this !== this.union.getVariant(b, offset)) {\n throw new Error('variant mismatch');\n }\n let contentOffset = 0;\n if (this.union.usesPrefixDiscriminator) {\n contentOffset = this.union.discriminator.layout.span;\n }\n if (this.layout) {\n dest[this.property] = this.layout.decode(b, offset + contentOffset);\n }\n else if (this.property) {\n dest[this.property] = true;\n }\n else if (this.union.usesPrefixDiscriminator) {\n dest[this.union.discriminator.property] = this.variant;\n }\n return dest;\n }\n /** @override */\n encode(src, b, offset = 0) {\n let contentOffset = 0;\n if (this.union.usesPrefixDiscriminator) {\n contentOffset = this.union.discriminator.layout.span;\n }\n if (this.layout\n && (!Object.prototype.hasOwnProperty.call(src, this.property))) {\n throw new TypeError('variant lacks property ' + this.property);\n }\n this.union.discriminator.encode(this.variant, b, offset);\n let span = contentOffset;\n if (this.layout) {\n this.layout.encode(src[this.property], b, offset + contentOffset);\n span += this.layout.getSpan(b, offset + contentOffset);\n if ((0 <= this.union.span)\n && (span > this.union.span)) {\n throw new Error('encoded variant overruns containing union');\n }\n }\n return span;\n }\n /** Delegate {@link Layout#fromArray|fromArray} to {@link\n * VariantLayout#layout|layout}. */\n fromArray(values) {\n if (this.layout) {\n return this.layout.fromArray(values);\n }\n return undefined;\n }\n}\nexports.VariantLayout = VariantLayout;\n/** JavaScript chose to define bitwise operations as operating on\n * signed 32-bit values in 2's complement form, meaning any integer\n * with bit 31 set is going to look negative. For right shifts that's\n * not a problem, because `>>>` is a logical shift, but for every\n * other bitwise operator we have to compensate for possible negative\n * results. */\nfunction fixBitwiseResult(v) {\n if (0 > v) {\n v += 0x100000000;\n }\n return v;\n}\n/**\n * Contain a sequence of bit fields as an unsigned integer.\n *\n * *Factory*: {@link module:Layout.bits|bits}\n *\n * This is a container element; within it there are {@link BitField}\n * instances that provide the extracted properties. The container\n * simply defines the aggregate representation and its bit ordering.\n * The representation is an object containing properties with numeric\n * or {@link Boolean} values.\n *\n * {@link BitField}s are added with the {@link\n * BitStructure#addField|addField} and {@link\n * BitStructure#addBoolean|addBoolean} methods.\n\n * @param {Layout} word - initializer for {@link\n * BitStructure#word|word}. The parameter must be an instance of\n * {@link UInt} (or {@link UIntBE}) that is no more than 4 bytes wide.\n *\n * @param {bool} [msb] - `true` if the bit numbering starts at the\n * most significant bit of the containing word; `false` (default) if\n * it starts at the least significant bit of the containing word. If\n * the parameter at this position is a string and `property` is\n * `undefined` the value of this argument will instead be used as the\n * value of `property`.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass BitStructure extends Layout {\n constructor(word, msb, property) {\n if (!((word instanceof UInt)\n || (word instanceof UIntBE))) {\n throw new TypeError('word must be a UInt or UIntBE layout');\n }\n if (('string' === typeof msb)\n && (undefined === property)) {\n property = msb;\n msb = false;\n }\n if (4 < word.span) {\n throw new RangeError('word cannot exceed 32 bits');\n }\n super(word.span, property);\n /** The layout used for the packed value. {@link BitField}\n * instances are packed sequentially depending on {@link\n * BitStructure#msb|msb}. */\n this.word = word;\n /** Whether the bit sequences are packed starting at the most\n * significant bit growing down (`true`), or the least significant\n * bit growing up (`false`).\n *\n * **NOTE** Regardless of this value, the least significant bit of\n * any {@link BitField} value is the least significant bit of the\n * corresponding section of the packed value. */\n this.msb = !!msb;\n /** The sequence of {@link BitField} layouts that comprise the\n * packed structure.\n *\n * **NOTE** The array remains mutable to allow fields to be {@link\n * BitStructure#addField|added} after construction. Users should\n * not manipulate the content of this property.*/\n this.fields = [];\n /* Storage for the value. Capture a variable instead of using an\n * instance property because we don't want anything to change the\n * value without going through the mutator. */\n let value = 0;\n this._packedSetValue = function (v) {\n value = fixBitwiseResult(v);\n return this;\n };\n this._packedGetValue = function () {\n return value;\n };\n }\n /** @override */\n decode(b, offset = 0) {\n const dest = this.makeDestinationObject();\n const value = this.word.decode(b, offset);\n this._packedSetValue(value);\n for (const fd of this.fields) {\n if (undefined !== fd.property) {\n dest[fd.property] = fd.decode(b);\n }\n }\n return dest;\n }\n /** Implement {@link Layout#encode|encode} for {@link BitStructure}.\n *\n * If `src` is missing a property for a member with a defined {@link\n * Layout#property|property} the corresponding region of the packed\n * value is left unmodified. Unused bits are also left unmodified. */\n encode(src, b, offset = 0) {\n const value = this.word.decode(b, offset);\n this._packedSetValue(value);\n for (const fd of this.fields) {\n if (undefined !== fd.property) {\n const fv = src[fd.property];\n if (undefined !== fv) {\n fd.encode(fv);\n }\n }\n }\n return this.word.encode(this._packedGetValue(), b, offset);\n }\n /** Register a new bitfield with a containing bit structure. The\n * resulting bitfield is returned.\n *\n * @param {Number} bits - initializer for {@link BitField#bits|bits}.\n *\n * @param {string} property - initializer for {@link\n * Layout#property|property}.\n *\n * @return {BitField} */\n addField(bits, property) {\n const bf = new BitField(this, bits, property);\n this.fields.push(bf);\n return bf;\n }\n /** As with {@link BitStructure#addField|addField} for single-bit\n * fields with `boolean` value representation.\n *\n * @param {string} property - initializer for {@link\n * Layout#property|property}.\n *\n * @return {Boolean} */\n // `Boolean` conflicts with the native primitive type\n // eslint-disable-next-line @typescript-eslint/ban-types\n addBoolean(property) {\n // This is my Boolean, not the Javascript one.\n const bf = new Boolean(this, property);\n this.fields.push(bf);\n return bf;\n }\n /**\n * Get access to the bit field for a given property.\n *\n * @param {String} property - the bit field of interest.\n *\n * @return {BitField} - the field associated with `property`, or\n * undefined if there is no such property.\n */\n fieldFor(property) {\n if ('string' !== typeof property) {\n throw new TypeError('property must be string');\n }\n for (const fd of this.fields) {\n if (fd.property === property) {\n return fd;\n }\n }\n return undefined;\n }\n}\nexports.BitStructure = BitStructure;\n/**\n * Represent a sequence of bits within a {@link BitStructure}.\n *\n * All bit field values are represented as unsigned integers.\n *\n * **NOTE** User code should not invoke this constructor directly.\n * Use the container {@link BitStructure#addField|addField} helper\n * method.\n *\n * **NOTE** BitField instances are not instances of {@link Layout}\n * since {@link Layout#span|span} measures 8-bit units.\n *\n * @param {BitStructure} container - initializer for {@link\n * BitField#container|container}.\n *\n * @param {Number} bits - initializer for {@link BitField#bits|bits}.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n */\nclass BitField {\n constructor(container, bits, property) {\n if (!(container instanceof BitStructure)) {\n throw new TypeError('container must be a BitStructure');\n }\n if ((!Number.isInteger(bits)) || (0 >= bits)) {\n throw new TypeError('bits must be positive integer');\n }\n const totalBits = 8 * container.span;\n const usedBits = container.fields.reduce((sum, fd) => sum + fd.bits, 0);\n if ((bits + usedBits) > totalBits) {\n throw new Error('bits too long for span remainder ('\n + (totalBits - usedBits) + ' of '\n + totalBits + ' remain)');\n }\n /** The {@link BitStructure} instance to which this bit field\n * belongs. */\n this.container = container;\n /** The span of this value in bits. */\n this.bits = bits;\n /** A mask of {@link BitField#bits|bits} bits isolating value bits\n * that fit within the field.\n *\n * That is, it masks a value that has not yet been shifted into\n * position within its containing packed integer. */\n this.valueMask = (1 << bits) - 1;\n if (32 === bits) { // shifted value out of range\n this.valueMask = 0xFFFFFFFF;\n }\n /** The offset of the value within the containing packed unsigned\n * integer. The least significant bit of the packed value is at\n * offset zero, regardless of bit ordering used. */\n this.start = usedBits;\n if (this.container.msb) {\n this.start = totalBits - usedBits - bits;\n }\n /** A mask of {@link BitField#bits|bits} isolating the field value\n * within the containing packed unsigned integer. */\n this.wordMask = fixBitwiseResult(this.valueMask << this.start);\n /** The property name used when this bitfield is represented in an\n * Object.\n *\n * Intended to be functionally equivalent to {@link\n * Layout#property}.\n *\n * If left undefined the corresponding span of bits will be\n * treated as padding: it will not be mutated by {@link\n * Layout#encode|encode} nor represented as a property in the\n * decoded Object. */\n this.property = property;\n }\n /** Store a value into the corresponding subsequence of the containing\n * bit field. */\n decode(b, offset) {\n const word = this.container._packedGetValue();\n const wordValue = fixBitwiseResult(word & this.wordMask);\n const value = wordValue >>> this.start;\n return value;\n }\n /** Store a value into the corresponding subsequence of the containing\n * bit field.\n *\n * **NOTE** This is not a specialization of {@link\n * Layout#encode|Layout.encode} and there is no return value. */\n encode(value) {\n if ('number' !== typeof value\n || !Number.isInteger(value)\n || (value !== fixBitwiseResult(value & this.valueMask))) {\n throw new TypeError(nameWithProperty('BitField.encode', this)\n + ' value must be integer not exceeding ' + this.valueMask);\n }\n const word = this.container._packedGetValue();\n const wordValue = fixBitwiseResult(value << this.start);\n this.container._packedSetValue(fixBitwiseResult(word & ~this.wordMask)\n | wordValue);\n }\n}\nexports.BitField = BitField;\n/**\n * Represent a single bit within a {@link BitStructure} as a\n * JavaScript boolean.\n *\n * **NOTE** User code should not invoke this constructor directly.\n * Use the container {@link BitStructure#addBoolean|addBoolean} helper\n * method.\n *\n * @param {BitStructure} container - initializer for {@link\n * BitField#container|container}.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {BitField}\n */\n/* eslint-disable no-extend-native */\nclass Boolean extends BitField {\n constructor(container, property) {\n super(container, 1, property);\n }\n /** Override {@link BitField#decode|decode} for {@link Boolean|Boolean}.\n *\n * @returns {boolean} */\n decode(b, offset) {\n return !!super.decode(b, offset);\n }\n /** @override */\n encode(value) {\n if ('boolean' === typeof value) {\n // BitField requires integer values\n value = +value;\n }\n super.encode(value);\n }\n}\nexports.Boolean = Boolean;\n/* eslint-enable no-extend-native */\n/**\n * Contain a fixed-length block of arbitrary data, represented as a\n * Uint8Array.\n *\n * *Factory*: {@link module:Layout.blob|blob}\n *\n * @param {(Number|ExternalLayout)} length - initializes {@link\n * Blob#length|length}.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Blob extends Layout {\n constructor(length, property) {\n if (!(((length instanceof ExternalLayout) && length.isCount())\n || (Number.isInteger(length) && (0 <= length)))) {\n throw new TypeError('length must be positive integer '\n + 'or an unsigned integer ExternalLayout');\n }\n let span = -1;\n if (!(length instanceof ExternalLayout)) {\n span = length;\n }\n super(span, property);\n /** The number of bytes in the blob.\n *\n * This may be a non-negative integer, or an instance of {@link\n * ExternalLayout} that satisfies {@link\n * ExternalLayout#isCount|isCount()}. */\n this.length = length;\n }\n /** @override */\n getSpan(b, offset) {\n let span = this.span;\n if (0 > span) {\n span = this.length.decode(b, offset);\n }\n return span;\n }\n /** @override */\n decode(b, offset = 0) {\n let span = this.span;\n if (0 > span) {\n span = this.length.decode(b, offset);\n }\n return uint8ArrayToBuffer(b).slice(offset, offset + span);\n }\n /** Implement {@link Layout#encode|encode} for {@link Blob}.\n *\n * **NOTE** If {@link Layout#count|count} is an instance of {@link\n * ExternalLayout} then the length of `src` will be encoded as the\n * count after `src` is encoded. */\n encode(src, b, offset) {\n let span = this.length;\n if (this.length instanceof ExternalLayout) {\n span = src.length;\n }\n if (!(src instanceof Uint8Array && span === src.length)) {\n throw new TypeError(nameWithProperty('Blob.encode', this)\n + ' requires (length ' + span + ') Uint8Array as src');\n }\n if ((offset + span) > b.length) {\n throw new RangeError('encoding overruns Uint8Array');\n }\n const srcBuffer = uint8ArrayToBuffer(src);\n uint8ArrayToBuffer(b).write(srcBuffer.toString('hex'), offset, span, 'hex');\n if (this.length instanceof ExternalLayout) {\n this.length.encode(span, b, offset);\n }\n return span;\n }\n}\nexports.Blob = Blob;\n/**\n * Contain a `NUL`-terminated UTF8 string.\n *\n * *Factory*: {@link module:Layout.cstr|cstr}\n *\n * **NOTE** Any UTF8 string that incorporates a zero-valued byte will\n * not be correctly decoded by this layout.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass CString extends Layout {\n constructor(property) {\n super(-1, property);\n }\n /** @override */\n getSpan(b, offset = 0) {\n checkUint8Array(b);\n let idx = offset;\n while ((idx < b.length) && (0 !== b[idx])) {\n idx += 1;\n }\n return 1 + idx - offset;\n }\n /** @override */\n decode(b, offset = 0) {\n const span = this.getSpan(b, offset);\n return uint8ArrayToBuffer(b).slice(offset, offset + span - 1).toString('utf-8');\n }\n /** @override */\n encode(src, b, offset = 0) {\n /* Must force this to a string, lest it be a number and the\n * \"utf8-encoding\" below actually allocate a buffer of length\n * src */\n if ('string' !== typeof src) {\n src = String(src);\n }\n const srcb = buffer_1.Buffer.from(src, 'utf8');\n const span = srcb.length;\n if ((offset + span) > b.length) {\n throw new RangeError('encoding overruns Buffer');\n }\n const buffer = uint8ArrayToBuffer(b);\n srcb.copy(buffer, offset);\n buffer[offset + span] = 0;\n return span + 1;\n }\n}\nexports.CString = CString;\n/**\n * Contain a UTF8 string with implicit length.\n *\n * *Factory*: {@link module:Layout.utf8|utf8}\n *\n * **NOTE** Because the length is implicit in the size of the buffer\n * this layout should be used only in isolation, or in a situation\n * where the length can be expressed by operating on a slice of the\n * containing buffer.\n *\n * @param {Number} [maxSpan] - the maximum length allowed for encoded\n * string content. If not provided there is no bound on the allowed\n * content.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass UTF8 extends Layout {\n constructor(maxSpan, property) {\n if (('string' === typeof maxSpan) && (undefined === property)) {\n property = maxSpan;\n maxSpan = undefined;\n }\n if (undefined === maxSpan) {\n maxSpan = -1;\n }\n else if (!Number.isInteger(maxSpan)) {\n throw new TypeError('maxSpan must be an integer');\n }\n super(-1, property);\n /** The maximum span of the layout in bytes.\n *\n * Positive values are generally expected. Zero is abnormal.\n * Attempts to encode or decode a value that exceeds this length\n * will throw a `RangeError`.\n *\n * A negative value indicates that there is no bound on the length\n * of the content. */\n this.maxSpan = maxSpan;\n }\n /** @override */\n getSpan(b, offset = 0) {\n checkUint8Array(b);\n return b.length - offset;\n }\n /** @override */\n decode(b, offset = 0) {\n const span = this.getSpan(b, offset);\n if ((0 <= this.maxSpan)\n && (this.maxSpan < span)) {\n throw new RangeError('text length exceeds maxSpan');\n }\n return uint8ArrayToBuffer(b).slice(offset, offset + span).toString('utf-8');\n }\n /** @override */\n encode(src, b, offset = 0) {\n /* Must force this to a string, lest it be a number and the\n * \"utf8-encoding\" below actually allocate a buffer of length\n * src */\n if ('string' !== typeof src) {\n src = String(src);\n }\n const srcb = buffer_1.Buffer.from(src, 'utf8');\n const span = srcb.length;\n if ((0 <= this.maxSpan)\n && (this.maxSpan < span)) {\n throw new RangeError('text length exceeds maxSpan');\n }\n if ((offset + span) > b.length) {\n throw new RangeError('encoding overruns Buffer');\n }\n srcb.copy(uint8ArrayToBuffer(b), offset);\n return span;\n }\n}\nexports.UTF8 = UTF8;\n/**\n * Contain a constant value.\n *\n * This layout may be used in cases where a JavaScript value can be\n * inferred without an expression in the binary encoding. An example\n * would be a {@link VariantLayout|variant layout} where the content\n * is implied by the union {@link Union#discriminator|discriminator}.\n *\n * @param {Object|Number|String} value - initializer for {@link\n * Constant#value|value}. If the value is an object (or array) and\n * the application intends the object to remain unchanged regardless\n * of what is done to values decoded by this layout, the value should\n * be frozen prior passing it to this constructor.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Constant extends Layout {\n constructor(value, property) {\n super(0, property);\n /** The value produced by this constant when the layout is {@link\n * Constant#decode|decoded}.\n *\n * Any JavaScript value including `null` and `undefined` is\n * permitted.\n *\n * **WARNING** If `value` passed in the constructor was not\n * frozen, it is possible for users of decoded values to change\n * the content of the value. */\n this.value = value;\n }\n /** @override */\n decode(b, offset) {\n return this.value;\n }\n /** @override */\n encode(src, b, offset) {\n /* Constants take no space */\n return 0;\n }\n}\nexports.Constant = Constant;\n/** Factory for {@link GreedyCount}. */\nexports.greedy = ((elementSpan, property) => new GreedyCount(elementSpan, property));\n/** Factory for {@link OffsetLayout}. */\nexports.offset = ((layout, offset, property) => new OffsetLayout(layout, offset, property));\n/** Factory for {@link UInt|unsigned int layouts} spanning one\n * byte. */\nexports.u8 = ((property) => new UInt(1, property));\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning two bytes. */\nexports.u16 = ((property) => new UInt(2, property));\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning three bytes. */\nexports.u24 = ((property) => new UInt(3, property));\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning four bytes. */\nexports.u32 = ((property) => new UInt(4, property));\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning five bytes. */\nexports.u40 = ((property) => new UInt(5, property));\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning six bytes. */\nexports.u48 = ((property) => new UInt(6, property));\n/** Factory for {@link NearUInt64|little-endian unsigned int\n * layouts} interpreted as Numbers. */\nexports.nu64 = ((property) => new NearUInt64(property));\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning two bytes. */\nexports.u16be = ((property) => new UIntBE(2, property));\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning three bytes. */\nexports.u24be = ((property) => new UIntBE(3, property));\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning four bytes. */\nexports.u32be = ((property) => new UIntBE(4, property));\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning five bytes. */\nexports.u40be = ((property) => new UIntBE(5, property));\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning six bytes. */\nexports.u48be = ((property) => new UIntBE(6, property));\n/** Factory for {@link NearUInt64BE|big-endian unsigned int\n * layouts} interpreted as Numbers. */\nexports.nu64be = ((property) => new NearUInt64BE(property));\n/** Factory for {@link Int|signed int layouts} spanning one\n * byte. */\nexports.s8 = ((property) => new Int(1, property));\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning two bytes. */\nexports.s16 = ((property) => new Int(2, property));\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning three bytes. */\nexports.s24 = ((property) => new Int(3, property));\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning four bytes. */\nexports.s32 = ((property) => new Int(4, property));\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning five bytes. */\nexports.s40 = ((property) => new Int(5, property));\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning six bytes. */\nexports.s48 = ((property) => new Int(6, property));\n/** Factory for {@link NearInt64|little-endian signed int layouts}\n * interpreted as Numbers. */\nexports.ns64 = ((property) => new NearInt64(property));\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning two bytes. */\nexports.s16be = ((property) => new IntBE(2, property));\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning three bytes. */\nexports.s24be = ((property) => new IntBE(3, property));\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning four bytes. */\nexports.s32be = ((property) => new IntBE(4, property));\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning five bytes. */\nexports.s40be = ((property) => new IntBE(5, property));\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning six bytes. */\nexports.s48be = ((property) => new IntBE(6, property));\n/** Factory for {@link NearInt64BE|big-endian signed int layouts}\n * interpreted as Numbers. */\nexports.ns64be = ((property) => new NearInt64BE(property));\n/** Factory for {@link Float|little-endian 32-bit floating point} values. */\nexports.f32 = ((property) => new Float(property));\n/** Factory for {@link FloatBE|big-endian 32-bit floating point} values. */\nexports.f32be = ((property) => new FloatBE(property));\n/** Factory for {@link Double|little-endian 64-bit floating point} values. */\nexports.f64 = ((property) => new Double(property));\n/** Factory for {@link DoubleBE|big-endian 64-bit floating point} values. */\nexports.f64be = ((property) => new DoubleBE(property));\n/** Factory for {@link Structure} values. */\nexports.struct = ((fields, property, decodePrefixes) => new Structure(fields, property, decodePrefixes));\n/** Factory for {@link BitStructure} values. */\nexports.bits = ((word, msb, property) => new BitStructure(word, msb, property));\n/** Factory for {@link Sequence} values. */\nexports.seq = ((elementLayout, count, property) => new Sequence(elementLayout, count, property));\n/** Factory for {@link Union} values. */\nexports.union = ((discr, defaultLayout, property) => new Union(discr, defaultLayout, property));\n/** Factory for {@link UnionLayoutDiscriminator} values. */\nexports.unionLayoutDiscriminator = ((layout, property) => new UnionLayoutDiscriminator(layout, property));\n/** Factory for {@link Blob} values. */\nexports.blob = ((length, property) => new Blob(length, property));\n/** Factory for {@link CString} values. */\nexports.cstr = ((property) => new CString(property));\n/** Factory for {@link UTF8} values. */\nexports.utf8 = ((maxSpan, property) => new UTF8(maxSpan, property));\n/** Factory for {@link Constant} values. */\nexports.constant = ((value, property) => new Constant(value, property));\n//# sourceMappingURL=Layout.js.map","export const encodeDecode = (layout) => {\n const decode = layout.decode.bind(layout);\n const encode = layout.encode.bind(layout);\n return { decode, encode };\n};\n//# sourceMappingURL=base.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nlet converter;\n/**\n * Convert a little-endian buffer into a BigInt.\n * @param buf The little-endian buffer to convert\n * @returns A BigInt with the little-endian representation of buf.\n */\nfunction toBigIntLE(buf) {\n {\n const reversed = Buffer.from(buf);\n reversed.reverse();\n const hex = reversed.toString('hex');\n if (hex.length === 0) {\n return BigInt(0);\n }\n return BigInt(`0x${hex}`);\n }\n return converter.toBigInt(buf, false);\n}\nexports.toBigIntLE = toBigIntLE;\n/**\n * Convert a big-endian buffer into a BigInt\n * @param buf The big-endian buffer to convert.\n * @returns A BigInt with the big-endian representation of buf.\n */\nfunction toBigIntBE(buf) {\n {\n const hex = buf.toString('hex');\n if (hex.length === 0) {\n return BigInt(0);\n }\n return BigInt(`0x${hex}`);\n }\n return converter.toBigInt(buf, true);\n}\nexports.toBigIntBE = toBigIntBE;\n/**\n * Convert a BigInt to a little-endian buffer.\n * @param num The BigInt to convert.\n * @param width The number of bytes that the resulting buffer should be.\n * @returns A little-endian buffer representation of num.\n */\nfunction toBufferLE(num, width) {\n {\n const hex = num.toString(16);\n const buffer = Buffer.from(hex.padStart(width * 2, '0').slice(0, width * 2), 'hex');\n buffer.reverse();\n return buffer;\n }\n // Allocation is done here, since it is slower using napi in C\n return converter.fromBigInt(num, Buffer.allocUnsafe(width), false);\n}\nexports.toBufferLE = toBufferLE;\n/**\n * Convert a BigInt to a big-endian buffer.\n * @param num The BigInt to convert.\n * @param width The number of bytes that the resulting buffer should be.\n * @returns A big-endian buffer representation of num.\n */\nfunction toBufferBE(num, width) {\n {\n const hex = num.toString(16);\n return Buffer.from(hex.padStart(width * 2, '0').slice(0, width * 2), 'hex');\n }\n return converter.fromBigInt(num, Buffer.allocUnsafe(width), true);\n}\nexports.toBufferBE = toBufferBE;\n","import { blob } from '@solana/buffer-layout';\nimport { toBigIntBE, toBigIntLE, toBufferBE, toBufferLE } from 'bigint-buffer';\nimport { encodeDecode } from './base.mjs';\nexport const bigInt = (length) => (property) => {\n const layout = blob(length, property);\n const { encode, decode } = encodeDecode(layout);\n const bigIntLayout = layout;\n bigIntLayout.decode = (buffer, offset) => {\n const src = decode(buffer, offset);\n return toBigIntLE(Buffer.from(src));\n };\n bigIntLayout.encode = (bigInt, buffer, offset) => {\n const src = toBufferLE(bigInt, length);\n return encode(src, buffer, offset);\n };\n return bigIntLayout;\n};\nexport const bigIntBE = (length) => (property) => {\n const layout = blob(length, property);\n const { encode, decode } = encodeDecode(layout);\n const bigIntLayout = layout;\n bigIntLayout.decode = (buffer, offset) => {\n const src = decode(buffer, offset);\n return toBigIntBE(Buffer.from(src));\n };\n bigIntLayout.encode = (bigInt, buffer, offset) => {\n const src = toBufferBE(bigInt, length);\n return encode(src, buffer, offset);\n };\n return bigIntLayout;\n};\nexport const u64 = bigInt(8);\nexport const u64be = bigIntBE(8);\nexport const u128 = bigInt(16);\nexport const u128be = bigIntBE(16);\nexport const u192 = bigInt(24);\nexport const u192be = bigIntBE(24);\nexport const u256 = bigInt(32);\nexport const u256be = bigIntBE(32);\n//# sourceMappingURL=bigint.js.map","import { u8 } from '@solana/buffer-layout';\nimport { encodeDecode } from './base.mjs';\nexport const bool = (property) => {\n const layout = u8(property);\n const { encode, decode } = encodeDecode(layout);\n const boolLayout = layout;\n boolLayout.decode = (buffer, offset) => {\n const src = decode(buffer, offset);\n return !!src;\n };\n boolLayout.encode = (bool, buffer, offset) => {\n const src = Number(bool);\n return encode(src, buffer, offset);\n };\n return boolLayout;\n};\n//# sourceMappingURL=native.js.map","import { blob } from '@solana/buffer-layout';\nimport { PublicKey } from '@solana/web3.js';\nimport { encodeDecode } from './base.mjs';\nexport const publicKey = (property) => {\n const layout = blob(32, property);\n const { encode, decode } = encodeDecode(layout);\n const publicKeyLayout = layout;\n publicKeyLayout.decode = (buffer, offset) => {\n const src = decode(buffer, offset);\n return new PublicKey(src);\n };\n publicKeyLayout.encode = (publicKey, buffer, offset) => {\n const src = publicKey.toBuffer();\n return encode(src, buffer, offset);\n };\n return publicKeyLayout;\n};\n//# sourceMappingURL=web3.js.map","/** Base class for errors */\nexport class TokenError extends Error {\n constructor(message) {\n super(message);\n }\n}\n/** Thrown if an account is not found at the expected address */\nexport class TokenAccountNotFoundError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenAccountNotFoundError';\n }\n}\n/** Thrown if a program state account is not a valid Account */\nexport class TokenInvalidAccountError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenInvalidAccountError';\n }\n}\n/** Thrown if a program state account does not contain valid data */\nexport class TokenInvalidAccountDataError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenInvalidAccountDataError';\n }\n}\n/** Thrown if a program state account is not owned by the expected token program */\nexport class TokenInvalidAccountOwnerError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenInvalidAccountOwnerError';\n }\n}\n/** Thrown if the byte length of an program state account doesn't match the expected size */\nexport class TokenInvalidAccountSizeError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenInvalidAccountSizeError';\n }\n}\n/** Thrown if the mint of a token account doesn't match the expected mint */\nexport class TokenInvalidMintError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenInvalidMintError';\n }\n}\n/** Thrown if the owner of a token account doesn't match the expected owner */\nexport class TokenInvalidOwnerError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenInvalidOwnerError';\n }\n}\n/** Thrown if the owner of a token account is a PDA (Program Derived Address) */\nexport class TokenOwnerOffCurveError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenOwnerOffCurveError';\n }\n}\n/** Thrown if an instruction's program is invalid */\nexport class TokenInvalidInstructionProgramError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenInvalidInstructionProgramError';\n }\n}\n/** Thrown if an instruction's keys are invalid */\nexport class TokenInvalidInstructionKeysError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenInvalidInstructionKeysError';\n }\n}\n/** Thrown if an instruction's data is invalid */\nexport class TokenInvalidInstructionDataError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenInvalidInstructionDataError';\n }\n}\n/** Thrown if an instruction's type is invalid */\nexport class TokenInvalidInstructionTypeError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenInvalidInstructionTypeError';\n }\n}\n/** Thrown if the program does not support the desired instruction */\nexport class TokenUnsupportedInstructionError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenUnsupportedInstructionError';\n }\n}\n/** Thrown if the transfer hook extra accounts contains an invalid account index */\nexport class TokenTransferHookAccountNotFound extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenTransferHookAccountNotFound';\n }\n}\n/** Thrown if the transfer hook extra accounts contains an invalid seed */\nexport class TokenTransferHookInvalidSeed extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenTransferHookInvalidSeed';\n }\n}\n/** Thrown if account data required by an extra account meta seed config could not be fetched */\nexport class TokenTransferHookAccountDataNotFound extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenTransferHookAccountDataNotFound';\n }\n}\n//# sourceMappingURL=errors.js.map","export var AccountType;\n(function (AccountType) {\n AccountType[AccountType[\"Uninitialized\"] = 0] = \"Uninitialized\";\n AccountType[AccountType[\"Mint\"] = 1] = \"Mint\";\n AccountType[AccountType[\"Account\"] = 2] = \"Account\";\n})(AccountType || (AccountType = {}));\nexport const ACCOUNT_TYPE_SIZE = 1;\n//# sourceMappingURL=accountType.js.map","import { struct, u8 } from '@solana/buffer-layout';\nimport { bool, publicKey } from '@solana/buffer-layout-utils';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { TokenAccountNotFoundError, TokenInvalidAccountOwnerError, TokenInvalidAccountSizeError } from '../errors.js';\n/** Buffer layout for de/serializing a multisig */\nexport const MultisigLayout = struct([\n u8('m'),\n u8('n'),\n bool('isInitialized'),\n publicKey('signer1'),\n publicKey('signer2'),\n publicKey('signer3'),\n publicKey('signer4'),\n publicKey('signer5'),\n publicKey('signer6'),\n publicKey('signer7'),\n publicKey('signer8'),\n publicKey('signer9'),\n publicKey('signer10'),\n publicKey('signer11'),\n]);\n/** Byte length of a multisig */\nexport const MULTISIG_SIZE = MultisigLayout.span;\n/**\n * Retrieve information about a multisig\n *\n * @param connection Connection to use\n * @param address Multisig account\n * @param commitment Desired level of commitment for querying the state\n * @param programId SPL Token program account\n *\n * @return Multisig information\n */\nexport async function getMultisig(connection, address, commitment, programId = TOKEN_PROGRAM_ID) {\n const info = await connection.getAccountInfo(address, commitment);\n return unpackMultisig(address, info, programId);\n}\n/**\n * Unpack a multisig\n *\n * @param address Multisig account\n * @param info Multisig account data\n * @param programId SPL Token program account\n *\n * @return Unpacked multisig\n */\nexport function unpackMultisig(address, info, programId = TOKEN_PROGRAM_ID) {\n if (!info)\n throw new TokenAccountNotFoundError();\n if (!info.owner.equals(programId))\n throw new TokenInvalidAccountOwnerError();\n if (info.data.length != MULTISIG_SIZE)\n throw new TokenInvalidAccountSizeError();\n const multisig = MultisigLayout.decode(info.data);\n return { address, ...multisig };\n}\n/** Get the minimum lamport balance for a multisig to be rent exempt\n *\n * @param connection Connection to use\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Amount of lamports required\n */\nexport async function getMinimumBalanceForRentExemptMultisig(connection, commitment) {\n return await connection.getMinimumBalanceForRentExemption(MULTISIG_SIZE, commitment);\n}\n//# sourceMappingURL=multisig.js.map","import { struct, u32, u8 } from '@solana/buffer-layout';\nimport { publicKey, u64 } from '@solana/buffer-layout-utils';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { TokenAccountNotFoundError, TokenInvalidAccountError, TokenInvalidAccountOwnerError, TokenInvalidAccountSizeError, } from '../errors.js';\nimport { ACCOUNT_TYPE_SIZE, AccountType } from '../extensions/accountType.js';\nimport { getAccountLen } from '../extensions/extensionType.js';\nimport { MULTISIG_SIZE } from './multisig.js';\n/** Token account state as stored by the program */\nexport var AccountState;\n(function (AccountState) {\n AccountState[AccountState[\"Uninitialized\"] = 0] = \"Uninitialized\";\n AccountState[AccountState[\"Initialized\"] = 1] = \"Initialized\";\n AccountState[AccountState[\"Frozen\"] = 2] = \"Frozen\";\n})(AccountState || (AccountState = {}));\n/** Buffer layout for de/serializing a token account */\nexport const AccountLayout = struct([\n publicKey('mint'),\n publicKey('owner'),\n u64('amount'),\n u32('delegateOption'),\n publicKey('delegate'),\n u8('state'),\n u32('isNativeOption'),\n u64('isNative'),\n u64('delegatedAmount'),\n u32('closeAuthorityOption'),\n publicKey('closeAuthority'),\n]);\n/** Byte length of a token account */\nexport const ACCOUNT_SIZE = AccountLayout.span;\n/**\n * Retrieve information about a token account\n *\n * @param connection Connection to use\n * @param address Token account\n * @param commitment Desired level of commitment for querying the state\n * @param programId SPL Token program account\n *\n * @return Token account information\n */\nexport async function getAccount(connection, address, commitment, programId = TOKEN_PROGRAM_ID) {\n const info = await connection.getAccountInfo(address, commitment);\n return unpackAccount(address, info, programId);\n}\n/**\n * Retrieve information about multiple token accounts in a single RPC call\n *\n * @param connection Connection to use\n * @param addresses Token accounts\n * @param commitment Desired level of commitment for querying the state\n * @param programId SPL Token program account\n *\n * @return Token account information\n */\nexport async function getMultipleAccounts(connection, addresses, commitment, programId = TOKEN_PROGRAM_ID) {\n const infos = await connection.getMultipleAccountsInfo(addresses, commitment);\n return addresses.map((address, i) => unpackAccount(address, infos[i], programId));\n}\n/** Get the minimum lamport balance for a base token account to be rent exempt\n *\n * @param connection Connection to use\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Amount of lamports required\n */\nexport async function getMinimumBalanceForRentExemptAccount(connection, commitment) {\n return await getMinimumBalanceForRentExemptAccountWithExtensions(connection, [], commitment);\n}\n/** Get the minimum lamport balance for a rent-exempt token account with extensions\n *\n * @param connection Connection to use\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Amount of lamports required\n */\nexport async function getMinimumBalanceForRentExemptAccountWithExtensions(connection, extensions, commitment) {\n const accountLen = getAccountLen(extensions);\n return await connection.getMinimumBalanceForRentExemption(accountLen, commitment);\n}\n/**\n * Unpack a token account\n *\n * @param address Token account\n * @param info Token account data\n * @param programId SPL Token program account\n *\n * @return Unpacked token account\n */\nexport function unpackAccount(address, info, programId = TOKEN_PROGRAM_ID) {\n if (!info)\n throw new TokenAccountNotFoundError();\n if (!info.owner.equals(programId))\n throw new TokenInvalidAccountOwnerError();\n if (info.data.length < ACCOUNT_SIZE)\n throw new TokenInvalidAccountSizeError();\n const rawAccount = AccountLayout.decode(info.data.slice(0, ACCOUNT_SIZE));\n let tlvData = Buffer.alloc(0);\n if (info.data.length > ACCOUNT_SIZE) {\n if (info.data.length === MULTISIG_SIZE)\n throw new TokenInvalidAccountSizeError();\n if (info.data[ACCOUNT_SIZE] != AccountType.Account)\n throw new TokenInvalidAccountError();\n tlvData = info.data.slice(ACCOUNT_SIZE + ACCOUNT_TYPE_SIZE);\n }\n return {\n address,\n mint: rawAccount.mint,\n owner: rawAccount.owner,\n amount: rawAccount.amount,\n delegate: rawAccount.delegateOption ? rawAccount.delegate : null,\n delegatedAmount: rawAccount.delegatedAmount,\n isInitialized: rawAccount.state !== AccountState.Uninitialized,\n isFrozen: rawAccount.state === AccountState.Frozen,\n isNative: !!rawAccount.isNativeOption,\n rentExemptReserve: rawAccount.isNativeOption ? rawAccount.isNative : null,\n closeAuthority: rawAccount.closeAuthorityOption ? rawAccount.closeAuthority : null,\n tlvData,\n };\n}\n//# sourceMappingURL=account.js.map","import { struct, u32, u8 } from '@solana/buffer-layout';\nimport { bool, publicKey, u64 } from '@solana/buffer-layout-utils';\nimport { PublicKey } from '@solana/web3.js';\nimport { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from '../constants.js';\nimport { TokenAccountNotFoundError, TokenInvalidAccountOwnerError, TokenInvalidAccountSizeError, TokenInvalidMintError, TokenOwnerOffCurveError, } from '../errors.js';\nimport { ACCOUNT_TYPE_SIZE, AccountType } from '../extensions/accountType.js';\nimport { getMintLen } from '../extensions/extensionType.js';\nimport { ACCOUNT_SIZE } from './account.js';\nimport { MULTISIG_SIZE } from './multisig.js';\n/** Buffer layout for de/serializing a mint */\nexport const MintLayout = struct([\n u32('mintAuthorityOption'),\n publicKey('mintAuthority'),\n u64('supply'),\n u8('decimals'),\n bool('isInitialized'),\n u32('freezeAuthorityOption'),\n publicKey('freezeAuthority'),\n]);\n/** Byte length of a mint */\nexport const MINT_SIZE = MintLayout.span;\n/**\n * Retrieve information about a mint\n *\n * @param connection Connection to use\n * @param address Mint account\n * @param commitment Desired level of commitment for querying the state\n * @param programId SPL Token program account\n *\n * @return Mint information\n */\nexport async function getMint(connection, address, commitment, programId = TOKEN_PROGRAM_ID) {\n const info = await connection.getAccountInfo(address, commitment);\n return unpackMint(address, info, programId);\n}\n/**\n * Unpack a mint\n *\n * @param address Mint account\n * @param info Mint account data\n * @param programId SPL Token program account\n *\n * @return Unpacked mint\n */\nexport function unpackMint(address, info, programId = TOKEN_PROGRAM_ID) {\n if (!info)\n throw new TokenAccountNotFoundError();\n if (!info.owner.equals(programId))\n throw new TokenInvalidAccountOwnerError();\n if (info.data.length < MINT_SIZE)\n throw new TokenInvalidAccountSizeError();\n const rawMint = MintLayout.decode(info.data.slice(0, MINT_SIZE));\n let tlvData = Buffer.alloc(0);\n if (info.data.length > MINT_SIZE) {\n if (info.data.length <= ACCOUNT_SIZE)\n throw new TokenInvalidAccountSizeError();\n if (info.data.length === MULTISIG_SIZE)\n throw new TokenInvalidAccountSizeError();\n if (info.data[ACCOUNT_SIZE] != AccountType.Mint)\n throw new TokenInvalidMintError();\n tlvData = info.data.slice(ACCOUNT_SIZE + ACCOUNT_TYPE_SIZE);\n }\n return {\n address,\n mintAuthority: rawMint.mintAuthorityOption ? rawMint.mintAuthority : null,\n supply: rawMint.supply,\n decimals: rawMint.decimals,\n isInitialized: rawMint.isInitialized,\n freezeAuthority: rawMint.freezeAuthorityOption ? rawMint.freezeAuthority : null,\n tlvData,\n };\n}\n/** Get the minimum lamport balance for a mint to be rent exempt\n *\n * @param connection Connection to use\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Amount of lamports required\n */\nexport async function getMinimumBalanceForRentExemptMint(connection, commitment) {\n return await getMinimumBalanceForRentExemptMintWithExtensions(connection, [], commitment);\n}\n/** Get the minimum lamport balance for a rent-exempt mint with extensions\n *\n * @param connection Connection to use\n * @param extensions Extension types included in the mint\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Amount of lamports required\n */\nexport async function getMinimumBalanceForRentExemptMintWithExtensions(connection, extensions, commitment) {\n const mintLen = getMintLen(extensions);\n return await connection.getMinimumBalanceForRentExemption(mintLen, commitment);\n}\n/**\n * Async version of getAssociatedTokenAddressSync\n * For backwards compatibility\n *\n * @param mint Token mint account\n * @param owner Owner of the new account\n * @param allowOwnerOffCurve Allow the owner account to be a PDA (Program Derived Address)\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Promise containing the address of the associated token account\n */\nexport async function getAssociatedTokenAddress(mint, owner, allowOwnerOffCurve = false, programId = TOKEN_PROGRAM_ID, associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID) {\n if (!allowOwnerOffCurve && !PublicKey.isOnCurve(owner.toBuffer()))\n throw new TokenOwnerOffCurveError();\n const [address] = await PublicKey.findProgramAddress([owner.toBuffer(), programId.toBuffer(), mint.toBuffer()], associatedTokenProgramId);\n return address;\n}\n/**\n * Get the address of the associated token account for a given mint and owner\n *\n * @param mint Token mint account\n * @param owner Owner of the new account\n * @param allowOwnerOffCurve Allow the owner account to be a PDA (Program Derived Address)\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Address of the associated token account\n */\nexport function getAssociatedTokenAddressSync(mint, owner, allowOwnerOffCurve = false, programId = TOKEN_PROGRAM_ID, associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID) {\n if (!allowOwnerOffCurve && !PublicKey.isOnCurve(owner.toBuffer()))\n throw new TokenOwnerOffCurveError();\n const [address] = PublicKey.findProgramAddressSync([owner.toBuffer(), programId.toBuffer(), mint.toBuffer()], associatedTokenProgramId);\n return address;\n}\n//# sourceMappingURL=mint.js.map","import { SystemProgram, TransactionInstruction } from '@solana/web3.js';\nimport { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from '../constants.js';\n/**\n * Construct a CreateAssociatedTokenAccount instruction\n *\n * @param payer Payer of the initialization fees\n * @param associatedToken New associated token account\n * @param owner Owner of the new account\n * @param mint Token mint account\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createAssociatedTokenAccountInstruction(payer, associatedToken, owner, mint, programId = TOKEN_PROGRAM_ID, associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID) {\n return buildAssociatedTokenAccountInstruction(payer, associatedToken, owner, mint, Buffer.alloc(0), programId, associatedTokenProgramId);\n}\n/**\n * Construct a CreateAssociatedTokenAccountIdempotent instruction\n *\n * @param payer Payer of the initialization fees\n * @param associatedToken New associated token account\n * @param owner Owner of the new account\n * @param mint Token mint account\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createAssociatedTokenAccountIdempotentInstruction(payer, associatedToken, owner, mint, programId = TOKEN_PROGRAM_ID, associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID) {\n return buildAssociatedTokenAccountInstruction(payer, associatedToken, owner, mint, Buffer.from([1]), programId, associatedTokenProgramId);\n}\nfunction buildAssociatedTokenAccountInstruction(payer, associatedToken, owner, mint, instructionData, programId = TOKEN_PROGRAM_ID, associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID) {\n const keys = [\n { pubkey: payer, isSigner: true, isWritable: true },\n { pubkey: associatedToken, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: false, isWritable: false },\n { pubkey: mint, isSigner: false, isWritable: false },\n { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\n { pubkey: programId, isSigner: false, isWritable: false },\n ];\n return new TransactionInstruction({\n keys,\n programId: associatedTokenProgramId,\n data: instructionData,\n });\n}\n/**\n * Construct a RecoverNested instruction\n *\n * @param nestedAssociatedToken Nested associated token account (must be owned by `ownerAssociatedToken`)\n * @param nestedMint Token mint for the nested associated token account\n * @param destinationAssociatedToken Wallet's associated token account\n * @param ownerAssociatedToken Owner associated token account address (must be owned by `owner`)\n * @param ownerMint Token mint for the owner associated token account\n * @param owner Wallet address for the owner associated token account\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createRecoverNestedInstruction(nestedAssociatedToken, nestedMint, destinationAssociatedToken, ownerAssociatedToken, ownerMint, owner, programId = TOKEN_PROGRAM_ID, associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID) {\n const keys = [\n { pubkey: nestedAssociatedToken, isSigner: false, isWritable: true },\n { pubkey: nestedMint, isSigner: false, isWritable: false },\n { pubkey: destinationAssociatedToken, isSigner: false, isWritable: true },\n { pubkey: ownerAssociatedToken, isSigner: false, isWritable: true },\n { pubkey: ownerMint, isSigner: false, isWritable: false },\n { pubkey: owner, isSigner: true, isWritable: true },\n { pubkey: programId, isSigner: false, isWritable: false },\n ];\n return new TransactionInstruction({\n keys,\n programId: associatedTokenProgramId,\n data: Buffer.from([2]),\n });\n}\n//# sourceMappingURL=associatedTokenAccount.js.map",null,null,"(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n// @ts-ignore\nvar _Buffer = require('safe-buffer').Buffer\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (Array.isArray(source) || source instanceof Uint8Array) { source = _Buffer.from(source) }\n if (!_Buffer.isBuffer(source)) { throw new TypeError('Expected Buffer') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return _Buffer.alloc(0) }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = _Buffer.allocUnsafe(zeroes + (size - it4))\n vch.fill(0x00, 0, zeroes)\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","var basex = require('base-x')\nvar ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n","'use strict';\n\n// This is free and unencumbered software released into the public domain.\n// See LICENSE.md for more information.\n\n//\n// Utilities\n//\n\n/**\n * @param {number} a The number to test.\n * @param {number} min The minimum value in the range, inclusive.\n * @param {number} max The maximum value in the range, inclusive.\n * @return {boolean} True if a >= min and a <= max.\n */\nfunction inRange(a, min, max) {\n return min <= a && a <= max;\n}\n\n/**\n * @param {*} o\n * @return {Object}\n */\nfunction ToDictionary(o) {\n if (o === undefined) return {};\n if (o === Object(o)) return o;\n throw TypeError('Could not convert argument to dictionary');\n}\n\n/**\n * @param {string} string Input string of UTF-16 code units.\n * @return {!Array.<number>} Code points.\n */\nfunction stringToCodePoints(string) {\n // https://heycam.github.io/webidl/#dfn-obtain-unicode\n\n // 1. Let S be the DOMString value.\n var s = String(string);\n\n // 2. Let n be the length of S.\n var n = s.length;\n\n // 3. Initialize i to 0.\n var i = 0;\n\n // 4. Initialize U to be an empty sequence of Unicode characters.\n var u = [];\n\n // 5. While i < n:\n while (i < n) {\n\n // 1. Let c be the code unit in S at index i.\n var c = s.charCodeAt(i);\n\n // 2. Depending on the value of c:\n\n // c < 0xD800 or c > 0xDFFF\n if (c < 0xD800 || c > 0xDFFF) {\n // Append to U the Unicode character with code point c.\n u.push(c);\n }\n\n // 0xDC00 ≤ c ≤ 0xDFFF\n else if (0xDC00 <= c && c <= 0xDFFF) {\n // Append to U a U+FFFD REPLACEMENT CHARACTER.\n u.push(0xFFFD);\n }\n\n // 0xD800 ≤ c ≤ 0xDBFF\n else if (0xD800 <= c && c <= 0xDBFF) {\n // 1. If i = n−1, then append to U a U+FFFD REPLACEMENT\n // CHARACTER.\n if (i === n - 1) {\n u.push(0xFFFD);\n }\n // 2. Otherwise, i < n−1:\n else {\n // 1. Let d be the code unit in S at index i+1.\n var d = string.charCodeAt(i + 1);\n\n // 2. If 0xDC00 ≤ d ≤ 0xDFFF, then:\n if (0xDC00 <= d && d <= 0xDFFF) {\n // 1. Let a be c & 0x3FF.\n var a = c & 0x3FF;\n\n // 2. Let b be d & 0x3FF.\n var b = d & 0x3FF;\n\n // 3. Append to U the Unicode character with code point\n // 2^16+2^10*a+b.\n u.push(0x10000 + (a << 10) + b);\n\n // 4. Set i to i+1.\n i += 1;\n }\n\n // 3. Otherwise, d < 0xDC00 or d > 0xDFFF. Append to U a\n // U+FFFD REPLACEMENT CHARACTER.\n else {\n u.push(0xFFFD);\n }\n }\n }\n\n // 3. Set i to i+1.\n i += 1;\n }\n\n // 6. Return U.\n return u;\n}\n\n/**\n * @param {!Array.<number>} code_points Array of code points.\n * @return {string} string String of UTF-16 code units.\n */\nfunction codePointsToString(code_points) {\n var s = '';\n for (var i = 0; i < code_points.length; ++i) {\n var cp = code_points[i];\n if (cp <= 0xFFFF) {\n s += String.fromCharCode(cp);\n } else {\n cp -= 0x10000;\n s += String.fromCharCode((cp >> 10) + 0xD800,\n (cp & 0x3FF) + 0xDC00);\n }\n }\n return s;\n}\n\n\n//\n// Implementation of Encoding specification\n// https://encoding.spec.whatwg.org/\n//\n\n//\n// 3. Terminology\n//\n\n/**\n * End-of-stream is a special token that signifies no more tokens\n * are in the stream.\n * @const\n */ var end_of_stream = -1;\n\n/**\n * A stream represents an ordered sequence of tokens.\n *\n * @constructor\n * @param {!(Array.<number>|Uint8Array)} tokens Array of tokens that provide the\n * stream.\n */\nfunction Stream(tokens) {\n /** @type {!Array.<number>} */\n this.tokens = [].slice.call(tokens);\n}\n\nStream.prototype = {\n /**\n * @return {boolean} True if end-of-stream has been hit.\n */\n endOfStream: function() {\n return !this.tokens.length;\n },\n\n /**\n * When a token is read from a stream, the first token in the\n * stream must be returned and subsequently removed, and\n * end-of-stream must be returned otherwise.\n *\n * @return {number} Get the next token from the stream, or\n * end_of_stream.\n */\n read: function() {\n if (!this.tokens.length)\n return end_of_stream;\n return this.tokens.shift();\n },\n\n /**\n * When one or more tokens are prepended to a stream, those tokens\n * must be inserted, in given order, before the first token in the\n * stream.\n *\n * @param {(number|!Array.<number>)} token The token(s) to prepend to the stream.\n */\n prepend: function(token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.<number>}*/(token);\n while (tokens.length)\n this.tokens.unshift(tokens.pop());\n } else {\n this.tokens.unshift(token);\n }\n },\n\n /**\n * When one or more tokens are pushed to a stream, those tokens\n * must be inserted, in given order, after the last token in the\n * stream.\n *\n * @param {(number|!Array.<number>)} token The tokens(s) to prepend to the stream.\n */\n push: function(token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.<number>}*/(token);\n while (tokens.length)\n this.tokens.push(tokens.shift());\n } else {\n this.tokens.push(token);\n }\n }\n};\n\n//\n// 4. Encodings\n//\n\n// 4.1 Encoders and decoders\n\n/** @const */\nvar finished = -1;\n\n/**\n * @param {boolean} fatal If true, decoding errors raise an exception.\n * @param {number=} opt_code_point Override the standard fallback code point.\n * @return {number} The code point to insert on a decoding error.\n */\nfunction decoderError(fatal, opt_code_point) {\n if (fatal)\n throw TypeError('Decoder error');\n return opt_code_point || 0xFFFD;\n}\n\n/** @interface */\nfunction Decoder() {}\nDecoder.prototype = {\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.<number>)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point, or |finished|.\n */\n handler: function(stream, bite) {}\n};\n\n/** @interface */\nfunction Encoder() {}\nEncoder.prototype = {\n /**\n * @param {Stream} stream The stream of code points being encoded.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.<number>)} Byte(s) to emit, or |finished|.\n */\n handler: function(stream, code_point) {}\n};\n\n//\n// 7. API\n//\n\n/** @const */ var DEFAULT_ENCODING = 'utf-8';\n\n// 7.1 Interface TextDecoder\n\n/**\n * @constructor\n * @param {string=} encoding The label of the encoding;\n * defaults to 'utf-8'.\n * @param {Object=} options\n */\nfunction TextDecoder(encoding, options) {\n if (!(this instanceof TextDecoder)) {\n return new TextDecoder(encoding, options);\n }\n encoding = encoding !== undefined ? String(encoding).toLowerCase() : DEFAULT_ENCODING;\n if (encoding !== DEFAULT_ENCODING) {\n throw new Error('Encoding not supported. Only utf-8 is supported');\n }\n options = ToDictionary(options);\n\n /** @private @type {boolean} */\n this._streaming = false;\n /** @private @type {boolean} */\n this._BOMseen = false;\n /** @private @type {?Decoder} */\n this._decoder = null;\n /** @private @type {boolean} */\n this._fatal = Boolean(options['fatal']);\n /** @private @type {boolean} */\n this._ignoreBOM = Boolean(options['ignoreBOM']);\n\n Object.defineProperty(this, 'encoding', {value: 'utf-8'});\n Object.defineProperty(this, 'fatal', {value: this._fatal});\n Object.defineProperty(this, 'ignoreBOM', {value: this._ignoreBOM});\n}\n\nTextDecoder.prototype = {\n /**\n * @param {ArrayBufferView=} input The buffer of bytes to decode.\n * @param {Object=} options\n * @return {string} The decoded string.\n */\n decode: function decode(input, options) {\n var bytes;\n if (typeof input === 'object' && input instanceof ArrayBuffer) {\n bytes = new Uint8Array(input);\n } else if (typeof input === 'object' && 'buffer' in input &&\n input.buffer instanceof ArrayBuffer) {\n bytes = new Uint8Array(input.buffer,\n input.byteOffset,\n input.byteLength);\n } else {\n bytes = new Uint8Array(0);\n }\n\n options = ToDictionary(options);\n\n if (!this._streaming) {\n this._decoder = new UTF8Decoder({fatal: this._fatal});\n this._BOMseen = false;\n }\n this._streaming = Boolean(options['stream']);\n\n var input_stream = new Stream(bytes);\n\n var code_points = [];\n\n /** @type {?(number|!Array.<number>)} */\n var result;\n\n while (!input_stream.endOfStream()) {\n result = this._decoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (result === null)\n continue;\n if (Array.isArray(result))\n code_points.push.apply(code_points, /**@type {!Array.<number>}*/(result));\n else\n code_points.push(result);\n }\n if (!this._streaming) {\n do {\n result = this._decoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (result === null)\n continue;\n if (Array.isArray(result))\n code_points.push.apply(code_points, /**@type {!Array.<number>}*/(result));\n else\n code_points.push(result);\n } while (!input_stream.endOfStream());\n this._decoder = null;\n }\n\n if (code_points.length) {\n // If encoding is one of utf-8, utf-16be, and utf-16le, and\n // ignore BOM flag and BOM seen flag are unset, run these\n // subsubsteps:\n if (['utf-8'].indexOf(this.encoding) !== -1 &&\n !this._ignoreBOM && !this._BOMseen) {\n // If token is U+FEFF, set BOM seen flag.\n if (code_points[0] === 0xFEFF) {\n this._BOMseen = true;\n code_points.shift();\n } else {\n // Otherwise, if token is not end-of-stream, set BOM seen\n // flag and append token to output.\n this._BOMseen = true;\n }\n }\n }\n\n return codePointsToString(code_points);\n }\n};\n\n// 7.2 Interface TextEncoder\n\n/**\n * @constructor\n * @param {string=} encoding The label of the encoding;\n * defaults to 'utf-8'.\n * @param {Object=} options\n */\nfunction TextEncoder(encoding, options) {\n if (!(this instanceof TextEncoder))\n return new TextEncoder(encoding, options);\n encoding = encoding !== undefined ? String(encoding).toLowerCase() : DEFAULT_ENCODING;\n if (encoding !== DEFAULT_ENCODING) {\n throw new Error('Encoding not supported. Only utf-8 is supported');\n }\n options = ToDictionary(options);\n\n /** @private @type {boolean} */\n this._streaming = false;\n /** @private @type {?Encoder} */\n this._encoder = null;\n /** @private @type {{fatal: boolean}} */\n this._options = {fatal: Boolean(options['fatal'])};\n\n Object.defineProperty(this, 'encoding', {value: 'utf-8'});\n}\n\nTextEncoder.prototype = {\n /**\n * @param {string=} opt_string The string to encode.\n * @param {Object=} options\n * @return {Uint8Array} Encoded bytes, as a Uint8Array.\n */\n encode: function encode(opt_string, options) {\n opt_string = opt_string ? String(opt_string) : '';\n options = ToDictionary(options);\n\n // NOTE: This option is nonstandard. None of the encodings\n // permitted for encoding (i.e. UTF-8, UTF-16) are stateful,\n // so streaming is not necessary.\n if (!this._streaming)\n this._encoder = new UTF8Encoder(this._options);\n this._streaming = Boolean(options['stream']);\n\n var bytes = [];\n var input_stream = new Stream(stringToCodePoints(opt_string));\n /** @type {?(number|!Array.<number>)} */\n var result;\n while (!input_stream.endOfStream()) {\n result = this._encoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (Array.isArray(result))\n bytes.push.apply(bytes, /**@type {!Array.<number>}*/(result));\n else\n bytes.push(result);\n }\n if (!this._streaming) {\n while (true) {\n result = this._encoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (Array.isArray(result))\n bytes.push.apply(bytes, /**@type {!Array.<number>}*/(result));\n else\n bytes.push(result);\n }\n this._encoder = null;\n }\n return new Uint8Array(bytes);\n }\n};\n\n//\n// 8. The encoding\n//\n\n// 8.1 utf-8\n\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Decoder(options) {\n var fatal = options.fatal;\n\n // utf-8's decoder's has an associated utf-8 code point, utf-8\n // bytes seen, and utf-8 bytes needed (all initially 0), a utf-8\n // lower boundary (initially 0x80), and a utf-8 upper boundary\n // (initially 0xBF).\n var /** @type {number} */ utf8_code_point = 0,\n /** @type {number} */ utf8_bytes_seen = 0,\n /** @type {number} */ utf8_bytes_needed = 0,\n /** @type {number} */ utf8_lower_boundary = 0x80,\n /** @type {number} */ utf8_upper_boundary = 0xBF;\n\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.<number>)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function(stream, bite) {\n // 1. If byte is end-of-stream and utf-8 bytes needed is not 0,\n // set utf-8 bytes needed to 0 and return error.\n if (bite === end_of_stream && utf8_bytes_needed !== 0) {\n utf8_bytes_needed = 0;\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream, return finished.\n if (bite === end_of_stream)\n return finished;\n\n // 3. If utf-8 bytes needed is 0, based on byte:\n if (utf8_bytes_needed === 0) {\n\n // 0x00 to 0x7F\n if (inRange(bite, 0x00, 0x7F)) {\n // Return a code point whose value is byte.\n return bite;\n }\n\n // 0xC2 to 0xDF\n if (inRange(bite, 0xC2, 0xDF)) {\n // Set utf-8 bytes needed to 1 and utf-8 code point to byte\n // − 0xC0.\n utf8_bytes_needed = 1;\n utf8_code_point = bite - 0xC0;\n }\n\n // 0xE0 to 0xEF\n else if (inRange(bite, 0xE0, 0xEF)) {\n // 1. If byte is 0xE0, set utf-8 lower boundary to 0xA0.\n if (bite === 0xE0)\n utf8_lower_boundary = 0xA0;\n // 2. If byte is 0xED, set utf-8 upper boundary to 0x9F.\n if (bite === 0xED)\n utf8_upper_boundary = 0x9F;\n // 3. Set utf-8 bytes needed to 2 and utf-8 code point to\n // byte − 0xE0.\n utf8_bytes_needed = 2;\n utf8_code_point = bite - 0xE0;\n }\n\n // 0xF0 to 0xF4\n else if (inRange(bite, 0xF0, 0xF4)) {\n // 1. If byte is 0xF0, set utf-8 lower boundary to 0x90.\n if (bite === 0xF0)\n utf8_lower_boundary = 0x90;\n // 2. If byte is 0xF4, set utf-8 upper boundary to 0x8F.\n if (bite === 0xF4)\n utf8_upper_boundary = 0x8F;\n // 3. Set utf-8 bytes needed to 3 and utf-8 code point to\n // byte − 0xF0.\n utf8_bytes_needed = 3;\n utf8_code_point = bite - 0xF0;\n }\n\n // Otherwise\n else {\n // Return error.\n return decoderError(fatal);\n }\n\n // Then (byte is in the range 0xC2 to 0xF4) set utf-8 code\n // point to utf-8 code point << (6 × utf-8 bytes needed) and\n // return continue.\n utf8_code_point = utf8_code_point << (6 * utf8_bytes_needed);\n return null;\n }\n\n // 4. If byte is not in the range utf-8 lower boundary to utf-8\n // upper boundary, run these substeps:\n if (!inRange(bite, utf8_lower_boundary, utf8_upper_boundary)) {\n\n // 1. Set utf-8 code point, utf-8 bytes needed, and utf-8\n // bytes seen to 0, set utf-8 lower boundary to 0x80, and set\n // utf-8 upper boundary to 0xBF.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xBF;\n\n // 2. Prepend byte to stream.\n stream.prepend(bite);\n\n // 3. Return error.\n return decoderError(fatal);\n }\n\n // 5. Set utf-8 lower boundary to 0x80 and utf-8 upper boundary\n // to 0xBF.\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xBF;\n\n // 6. Increase utf-8 bytes seen by one and set utf-8 code point\n // to utf-8 code point + (byte − 0x80) << (6 × (utf-8 bytes\n // needed − utf-8 bytes seen)).\n utf8_bytes_seen += 1;\n utf8_code_point += (bite - 0x80) << (6 * (utf8_bytes_needed - utf8_bytes_seen));\n\n // 7. If utf-8 bytes seen is not equal to utf-8 bytes needed,\n // continue.\n if (utf8_bytes_seen !== utf8_bytes_needed)\n return null;\n\n // 8. Let code point be utf-8 code point.\n var code_point = utf8_code_point;\n\n // 9. Set utf-8 code point, utf-8 bytes needed, and utf-8 bytes\n // seen to 0.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n\n // 10. Return a code point whose value is code point.\n return code_point;\n };\n}\n\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Encoder(options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.<number>)} Byte(s) to emit.\n */\n this.handler = function(stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream)\n return finished;\n\n // 2. If code point is in the range U+0000 to U+007F, return a\n // byte whose value is code point.\n if (inRange(code_point, 0x0000, 0x007f))\n return code_point;\n\n // 3. Set count and offset based on the range code point is in:\n var count, offset;\n // U+0080 to U+07FF: 1 and 0xC0\n if (inRange(code_point, 0x0080, 0x07FF)) {\n count = 1;\n offset = 0xC0;\n }\n // U+0800 to U+FFFF: 2 and 0xE0\n else if (inRange(code_point, 0x0800, 0xFFFF)) {\n count = 2;\n offset = 0xE0;\n }\n // U+10000 to U+10FFFF: 3 and 0xF0\n else if (inRange(code_point, 0x10000, 0x10FFFF)) {\n count = 3;\n offset = 0xF0;\n }\n\n // 4.Let bytes be a byte sequence whose first byte is (code\n // point >> (6 × count)) + offset.\n var bytes = [(code_point >> (6 * count)) + offset];\n\n // 5. Run these substeps while count is greater than 0:\n while (count > 0) {\n\n // 1. Set temp to code point >> (6 × (count − 1)).\n var temp = code_point >> (6 * (count - 1));\n\n // 2. Append to bytes 0x80 | (temp & 0x3F).\n bytes.push(0x80 | (temp & 0x3F));\n\n // 3. Decrease count by one.\n count -= 1;\n }\n\n // 6. Return bytes bytes, in order.\n return bytes;\n };\n}\n\nexport {TextEncoder, TextDecoder};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deserializeUnchecked = exports.deserialize = exports.serialize = exports.BinaryReader = exports.BinaryWriter = exports.BorshError = exports.baseDecode = exports.baseEncode = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst bs58_1 = __importDefault(require(\"bs58\"));\n// TODO: Make sure this polyfill not included when not required\nconst encoding = __importStar(require(\"text-encoding-utf-8\"));\nconst ResolvedTextDecoder = typeof TextDecoder !== \"function\" ? encoding.TextDecoder : TextDecoder;\nconst textDecoder = new ResolvedTextDecoder(\"utf-8\", { fatal: true });\nfunction baseEncode(value) {\n if (typeof value === \"string\") {\n value = Buffer.from(value, \"utf8\");\n }\n return bs58_1.default.encode(Buffer.from(value));\n}\nexports.baseEncode = baseEncode;\nfunction baseDecode(value) {\n return Buffer.from(bs58_1.default.decode(value));\n}\nexports.baseDecode = baseDecode;\nconst INITIAL_LENGTH = 1024;\nclass BorshError extends Error {\n constructor(message) {\n super(message);\n this.fieldPath = [];\n this.originalMessage = message;\n }\n addToFieldPath(fieldName) {\n this.fieldPath.splice(0, 0, fieldName);\n // NOTE: Modifying message directly as jest doesn't use .toString()\n this.message = this.originalMessage + \": \" + this.fieldPath.join(\".\");\n }\n}\nexports.BorshError = BorshError;\n/// Binary encoder.\nclass BinaryWriter {\n constructor() {\n this.buf = Buffer.alloc(INITIAL_LENGTH);\n this.length = 0;\n }\n maybeResize() {\n if (this.buf.length < 16 + this.length) {\n this.buf = Buffer.concat([this.buf, Buffer.alloc(INITIAL_LENGTH)]);\n }\n }\n writeU8(value) {\n this.maybeResize();\n this.buf.writeUInt8(value, this.length);\n this.length += 1;\n }\n writeU16(value) {\n this.maybeResize();\n this.buf.writeUInt16LE(value, this.length);\n this.length += 2;\n }\n writeU32(value) {\n this.maybeResize();\n this.buf.writeUInt32LE(value, this.length);\n this.length += 4;\n }\n writeU64(value) {\n this.maybeResize();\n this.writeBuffer(Buffer.from(new bn_js_1.default(value).toArray(\"le\", 8)));\n }\n writeU128(value) {\n this.maybeResize();\n this.writeBuffer(Buffer.from(new bn_js_1.default(value).toArray(\"le\", 16)));\n }\n writeU256(value) {\n this.maybeResize();\n this.writeBuffer(Buffer.from(new bn_js_1.default(value).toArray(\"le\", 32)));\n }\n writeU512(value) {\n this.maybeResize();\n this.writeBuffer(Buffer.from(new bn_js_1.default(value).toArray(\"le\", 64)));\n }\n writeBuffer(buffer) {\n // Buffer.from is needed as this.buf.subarray can return plain Uint8Array in browser\n this.buf = Buffer.concat([\n Buffer.from(this.buf.subarray(0, this.length)),\n buffer,\n Buffer.alloc(INITIAL_LENGTH),\n ]);\n this.length += buffer.length;\n }\n writeString(str) {\n this.maybeResize();\n const b = Buffer.from(str, \"utf8\");\n this.writeU32(b.length);\n this.writeBuffer(b);\n }\n writeFixedArray(array) {\n this.writeBuffer(Buffer.from(array));\n }\n writeArray(array, fn) {\n this.maybeResize();\n this.writeU32(array.length);\n for (const elem of array) {\n this.maybeResize();\n fn(elem);\n }\n }\n toArray() {\n return this.buf.subarray(0, this.length);\n }\n}\nexports.BinaryWriter = BinaryWriter;\nfunction handlingRangeError(target, propertyKey, propertyDescriptor) {\n const originalMethod = propertyDescriptor.value;\n propertyDescriptor.value = function (...args) {\n try {\n return originalMethod.apply(this, args);\n }\n catch (e) {\n if (e instanceof RangeError) {\n const code = e.code;\n if ([\"ERR_BUFFER_OUT_OF_BOUNDS\", \"ERR_OUT_OF_RANGE\"].indexOf(code) >= 0) {\n throw new BorshError(\"Reached the end of buffer when deserializing\");\n }\n }\n throw e;\n }\n };\n}\nclass BinaryReader {\n constructor(buf) {\n this.buf = buf;\n this.offset = 0;\n }\n readU8() {\n const value = this.buf.readUInt8(this.offset);\n this.offset += 1;\n return value;\n }\n readU16() {\n const value = this.buf.readUInt16LE(this.offset);\n this.offset += 2;\n return value;\n }\n readU32() {\n const value = this.buf.readUInt32LE(this.offset);\n this.offset += 4;\n return value;\n }\n readU64() {\n const buf = this.readBuffer(8);\n return new bn_js_1.default(buf, \"le\");\n }\n readU128() {\n const buf = this.readBuffer(16);\n return new bn_js_1.default(buf, \"le\");\n }\n readU256() {\n const buf = this.readBuffer(32);\n return new bn_js_1.default(buf, \"le\");\n }\n readU512() {\n const buf = this.readBuffer(64);\n return new bn_js_1.default(buf, \"le\");\n }\n readBuffer(len) {\n if (this.offset + len > this.buf.length) {\n throw new BorshError(`Expected buffer length ${len} isn't within bounds`);\n }\n const result = this.buf.slice(this.offset, this.offset + len);\n this.offset += len;\n return result;\n }\n readString() {\n const len = this.readU32();\n const buf = this.readBuffer(len);\n try {\n // NOTE: Using TextDecoder to fail on invalid UTF-8\n return textDecoder.decode(buf);\n }\n catch (e) {\n throw new BorshError(`Error decoding UTF-8 string: ${e}`);\n }\n }\n readFixedArray(len) {\n return new Uint8Array(this.readBuffer(len));\n }\n readArray(fn) {\n const len = this.readU32();\n const result = Array();\n for (let i = 0; i < len; ++i) {\n result.push(fn());\n }\n return result;\n }\n}\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU8\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU16\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU32\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU64\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU128\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU256\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU512\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readString\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readFixedArray\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readArray\", null);\nexports.BinaryReader = BinaryReader;\nfunction capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\nfunction serializeField(schema, fieldName, value, fieldType, writer) {\n try {\n // TODO: Handle missing values properly (make sure they never result in just skipped write)\n if (typeof fieldType === \"string\") {\n writer[`write${capitalizeFirstLetter(fieldType)}`](value);\n }\n else if (fieldType instanceof Array) {\n if (typeof fieldType[0] === \"number\") {\n if (value.length !== fieldType[0]) {\n throw new BorshError(`Expecting byte array of length ${fieldType[0]}, but got ${value.length} bytes`);\n }\n writer.writeFixedArray(value);\n }\n else if (fieldType.length === 2 && typeof fieldType[1] === \"number\") {\n if (value.length !== fieldType[1]) {\n throw new BorshError(`Expecting byte array of length ${fieldType[1]}, but got ${value.length} bytes`);\n }\n for (let i = 0; i < fieldType[1]; i++) {\n serializeField(schema, null, value[i], fieldType[0], writer);\n }\n }\n else {\n writer.writeArray(value, (item) => {\n serializeField(schema, fieldName, item, fieldType[0], writer);\n });\n }\n }\n else if (fieldType.kind !== undefined) {\n switch (fieldType.kind) {\n case \"option\": {\n if (value === null || value === undefined) {\n writer.writeU8(0);\n }\n else {\n writer.writeU8(1);\n serializeField(schema, fieldName, value, fieldType.type, writer);\n }\n break;\n }\n case \"map\": {\n writer.writeU32(value.size);\n value.forEach((val, key) => {\n serializeField(schema, fieldName, key, fieldType.key, writer);\n serializeField(schema, fieldName, val, fieldType.value, writer);\n });\n break;\n }\n default:\n throw new BorshError(`FieldType ${fieldType} unrecognized`);\n }\n }\n else {\n serializeStruct(schema, value, writer);\n }\n }\n catch (error) {\n if (error instanceof BorshError) {\n error.addToFieldPath(fieldName);\n }\n throw error;\n }\n}\nfunction serializeStruct(schema, obj, writer) {\n if (typeof obj.borshSerialize === \"function\") {\n obj.borshSerialize(writer);\n return;\n }\n const structSchema = schema.get(obj.constructor);\n if (!structSchema) {\n throw new BorshError(`Class ${obj.constructor.name} is missing in schema`);\n }\n if (structSchema.kind === \"struct\") {\n structSchema.fields.map(([fieldName, fieldType]) => {\n serializeField(schema, fieldName, obj[fieldName], fieldType, writer);\n });\n }\n else if (structSchema.kind === \"enum\") {\n const name = obj[structSchema.field];\n for (let idx = 0; idx < structSchema.values.length; ++idx) {\n const [fieldName, fieldType] = structSchema.values[idx];\n if (fieldName === name) {\n writer.writeU8(idx);\n serializeField(schema, fieldName, obj[fieldName], fieldType, writer);\n break;\n }\n }\n }\n else {\n throw new BorshError(`Unexpected schema kind: ${structSchema.kind} for ${obj.constructor.name}`);\n }\n}\n/// Serialize given object using schema of the form:\n/// { class_name -> [ [field_name, field_type], .. ], .. }\nfunction serialize(schema, obj, Writer = BinaryWriter) {\n const writer = new Writer();\n serializeStruct(schema, obj, writer);\n return writer.toArray();\n}\nexports.serialize = serialize;\nfunction deserializeField(schema, fieldName, fieldType, reader) {\n try {\n if (typeof fieldType === \"string\") {\n return reader[`read${capitalizeFirstLetter(fieldType)}`]();\n }\n if (fieldType instanceof Array) {\n if (typeof fieldType[0] === \"number\") {\n return reader.readFixedArray(fieldType[0]);\n }\n else if (typeof fieldType[1] === \"number\") {\n const arr = [];\n for (let i = 0; i < fieldType[1]; i++) {\n arr.push(deserializeField(schema, null, fieldType[0], reader));\n }\n return arr;\n }\n else {\n return reader.readArray(() => deserializeField(schema, fieldName, fieldType[0], reader));\n }\n }\n if (fieldType.kind === \"option\") {\n const option = reader.readU8();\n if (option) {\n return deserializeField(schema, fieldName, fieldType.type, reader);\n }\n return undefined;\n }\n if (fieldType.kind === \"map\") {\n let map = new Map();\n const length = reader.readU32();\n for (let i = 0; i < length; i++) {\n const key = deserializeField(schema, fieldName, fieldType.key, reader);\n const val = deserializeField(schema, fieldName, fieldType.value, reader);\n map.set(key, val);\n }\n return map;\n }\n return deserializeStruct(schema, fieldType, reader);\n }\n catch (error) {\n if (error instanceof BorshError) {\n error.addToFieldPath(fieldName);\n }\n throw error;\n }\n}\nfunction deserializeStruct(schema, classType, reader) {\n if (typeof classType.borshDeserialize === \"function\") {\n return classType.borshDeserialize(reader);\n }\n const structSchema = schema.get(classType);\n if (!structSchema) {\n throw new BorshError(`Class ${classType.name} is missing in schema`);\n }\n if (structSchema.kind === \"struct\") {\n const result = {};\n for (const [fieldName, fieldType] of schema.get(classType).fields) {\n result[fieldName] = deserializeField(schema, fieldName, fieldType, reader);\n }\n return new classType(result);\n }\n if (structSchema.kind === \"enum\") {\n const idx = reader.readU8();\n if (idx >= structSchema.values.length) {\n throw new BorshError(`Enum index: ${idx} is out of range`);\n }\n const [fieldName, fieldType] = structSchema.values[idx];\n const fieldValue = deserializeField(schema, fieldName, fieldType, reader);\n return new classType({ [fieldName]: fieldValue });\n }\n throw new BorshError(`Unexpected schema kind: ${structSchema.kind} for ${classType.constructor.name}`);\n}\n/// Deserializes object from bytes using schema.\nfunction deserialize(schema, classType, buffer, Reader = BinaryReader) {\n const reader = new Reader(buffer);\n const result = deserializeStruct(schema, classType, reader);\n if (reader.offset < buffer.length) {\n throw new BorshError(`Unexpected ${buffer.length - reader.offset} bytes after deserialized data`);\n }\n return result;\n}\nexports.deserialize = deserialize;\n/// Deserializes object from bytes using schema, without checking the length read\nfunction deserializeUnchecked(schema, classType, buffer, Reader = BinaryReader) {\n const reader = new Reader(buffer);\n return deserializeStruct(schema, classType, reader);\n}\nexports.deserializeUnchecked = deserializeUnchecked;\n",null,null,null,null,"function number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nfunction bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`Expected boolean, not ${b}`);\n}\n// copied from utils\nfunction isBytes(a) {\n return (a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));\n}\nfunction bytes(b, ...lengths) {\n if (!isBytes(b))\n throw new Error('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\nfunction hash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\nfunction exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nfunction output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nexport { number, bool, bytes, hash, exists, output };\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n//# sourceMappingURL=_assert.js.map","export const crypto = typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n//# sourceMappingURL=crypto.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\nfunction isBytes(a) {\n return (a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));\n}\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\n// Other libraries would silently corrupt the data instead of throwing an error,\n// when they don't support it.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE)\n throw new Error('Non little-endian hardware is not supported');\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n if (!isBytes(bytes))\n throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, _A: 65, _F: 70, _a: 97, _f: 102 };\nfunction asciiToBase16(char) {\n if (char >= asciis._0 && char <= asciis._9)\n return char - asciis._0;\n if (char >= asciis._A && char <= asciis._F)\n return char - (asciis._A - 10);\n if (char >= asciis._a && char <= asciis._f)\n return char - (asciis._a - 10);\n return;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2;\n }\n return array;\n}\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => { };\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!isBytes(data))\n throw new Error(`expected Uint8Array, got ${typeof data}`);\n return data;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n if (!isBytes(a))\n throw new Error('Uint8Array expected');\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\nconst toStr = {}.toString;\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexport function wrapConstructor(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexport function wrapXOFConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","import { exists, output } from './_assert.js';\nimport { Hash, createView, toBytes } from './utils.js';\n// Polyfill for Safari 14\nfunction setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n// Base SHA2 class (RFC 6234)\nexport class SHA2 extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n exists(this);\n const { view, buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n exists(this);\n output(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4)\n throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length)\n throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++)\n oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n}\n//# sourceMappingURL=_sha2.js.map","import { SHA2 } from './_sha2.js';\nimport { rotr, wrapConstructor } from './utils.js';\n// SHA2-256 need to try 2^128 hashes to execute birthday attack.\n// BTC network is doing 2^67 hashes/sec as per early 2023.\n// Choice: a ? b : c\nconst Chi = (a, b, c) => (a & b) ^ (~a & c);\n// Majority function, true if any two inpust is true\nconst Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n// Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n// prettier-ignore\nconst IV = /* @__PURE__ */ new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nclass SHA256 extends SHA2 {\n constructor() {\n super(64, 32, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = IV[0] | 0;\n this.B = IV[1] | 0;\n this.C = IV[2] | 0;\n this.D = IV[3] | 0;\n this.E = IV[4] | 0;\n this.F = IV[5] | 0;\n this.G = IV[6] | 0;\n this.H = IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n// Constants from https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf\nclass SHA224 extends SHA256 {\n constructor() {\n super();\n this.A = 0xc1059ed8 | 0;\n this.B = 0x367cd507 | 0;\n this.C = 0x3070dd17 | 0;\n this.D = 0xf70e5939 | 0;\n this.E = 0xffc00b31 | 0;\n this.F = 0x68581511 | 0;\n this.G = 0x64f98fa7 | 0;\n this.H = 0xbefa4fa4 | 0;\n this.outputLen = 28;\n }\n}\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexport const sha256 = /* @__PURE__ */ wrapConstructor(() => new SHA256());\nexport const sha224 = /* @__PURE__ */ wrapConstructor(() => new SHA224());\n//# sourceMappingURL=sha256.js.map",null,null,"import{TransactionInstruction as e,PublicKey as t,SystemProgram as r}from\"@solana/web3.js\";var i,n=[\"u8\",\"u16\",\"u32\",\"u64\",\"u128\",\"i8\",\"i16\",\"i32\",\"i64\",\"i128\",\"f32\",\"f64\"],s=function(){function e(){this.offset=0,this.buffer_size=256,this.buffer=new ArrayBuffer(this.buffer_size),this.view=new DataView(this.buffer)}return e.prototype.resize_if_necessary=function(e){if(this.buffer_size-this.offset<e){this.buffer_size=Math.max(2*this.buffer_size,this.buffer_size+e);var t=new ArrayBuffer(this.buffer_size);new Uint8Array(t).set(new Uint8Array(this.buffer)),this.buffer=t,this.view=new DataView(t)}},e.prototype.get_used_buffer=function(){return new Uint8Array(this.buffer).slice(0,this.offset)},e.prototype.store_value=function(e,t){var r=t.substring(1),i=parseInt(r)/8;this.resize_if_necessary(i);var n=\"f\"===t[0]?\"setFloat\".concat(r):\"i\"===t[0]?\"setInt\".concat(r):\"setUint\".concat(r);this.view[n](this.offset,e,!0),this.offset+=i},e.prototype.store_bytes=function(e){this.resize_if_necessary(e.length),new Uint8Array(this.buffer).set(new Uint8Array(e),this.offset),this.offset+=e.length},e}(),o=function(){function e(e){this.offset=0,this.buffer_size=e.length,this.buffer=new ArrayBuffer(e.length),new Uint8Array(this.buffer).set(e),this.view=new DataView(this.buffer)}return e.prototype.assert_enough_buffer=function(e){if(this.offset+e>this.buffer.byteLength)throw new Error(\"Error in schema, the buffer is smaller than expected\")},e.prototype.consume_value=function(e){var t=e.substring(1),r=parseInt(t)/8;this.assert_enough_buffer(r);var i=\"f\"===e[0]?\"getFloat\".concat(t):\"i\"===e[0]?\"getInt\".concat(t):\"getUint\".concat(t),n=this.view[i](this.offset,!0);return this.offset+=r,n},e.prototype.consume_bytes=function(e){this.assert_enough_buffer(e);var t=this.buffer.slice(this.offset,this.offset+e);return this.offset+=e,t},e}(),a=(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},i(e,t)},function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Class extends value \"+String(t)+\" is not a constructor or null\");function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});function u(e,t,r){if(typeof e!==t)throw new Error(\"Expected \".concat(t,\" not \").concat(typeof e,\"(\").concat(e,\") at \").concat(r.join(\".\")))}function c(e,t,r){if(e!==t)throw new Error(\"Array length \".concat(e,\" does not match schema length \").concat(t,\" at \").concat(r.join(\".\")))}var h=n.concat([\"bool\",\"string\"]),f=[\"option\",\"enum\",\"array\",\"set\",\"map\",\"struct\"],p=function(e){function t(t,r){var i=\"Invalid schema: \".concat(JSON.stringify(t),\" expected \").concat(r);return e.call(this,i)||this}return a(t,e),t}(Error);function l(e){if(\"string\"!=typeof e||!h.includes(e)){if(e&&\"object\"==typeof e){var t=Object.keys(e);if(1===t.length&&f.includes(t[0])){var r=t[0];if(\"option\"===r)return l(e[r]);if(\"enum\"===r)return function(e){if(!Array.isArray(e))throw new p(e,\"Array\");for(var t=0,r=e;t<r.length;t++){var i=r[t];if(\"object\"!=typeof i||!(\"struct\"in i))throw new Error('Missing \"struct\" key in enum schema');if(\"object\"!=typeof i.struct||1!==Object.keys(i.struct).length)throw new Error('The \"struct\" in each enum must have a single key');l({struct:i.struct})}}(e[r]);if(\"array\"===r)return function(e){if(\"object\"!=typeof e)throw new p(e,\"{ type, len? }\");if(e.len&&\"number\"!=typeof e.len)throw new Error(\"Invalid schema: \".concat(e));if(\"type\"in e)return l(e.type);throw new p(e,\"{ type, len? }\")}(e[r]);if(\"set\"===r)return l(e[r]);if(\"map\"===r)return function(e){if(\"object\"!=typeof e||!(\"key\"in e)||!(\"value\"in e))throw new p(e,\"{ key, value }\");l(e.key),l(e.value)}(e[r]);if(\"struct\"===r)return function(e){if(\"object\"!=typeof e)throw new p(e,\"object\");for(var t in e)l(e[t])}(e[r])}}throw new p(e,f.join(\", \")+\" or \"+h.join(\", \"))}}var d=function(){function e(e){this.encoded=new s,this.fieldPath=[\"value\"],this.checkTypes=e}return e.prototype.encode=function(e,t){return this.encode_value(e,t),this.encoded.get_used_buffer()},e.prototype.encode_value=function(e,t){if(\"string\"==typeof t){if(n.includes(t))return this.encode_integer(e,t);if(\"string\"===t)return this.encode_string(e);if(\"bool\"===t)return this.encode_boolean(e)}if(\"object\"==typeof t){if(\"option\"in t)return this.encode_option(e,t);if(\"enum\"in t)return this.encode_enum(e,t);if(\"array\"in t)return this.encode_array(e,t);if(\"set\"in t)return this.encode_set(e,t);if(\"map\"in t)return this.encode_map(e,t);if(\"struct\"in t)return this.encode_struct(e,t)}},e.prototype.encode_integer=function(e,t){var r=parseInt(t.substring(1));r<=32||\"f64\"==t?(this.checkTypes&&u(e,\"number\",this.fieldPath),this.encoded.store_value(e,t)):(this.checkTypes&&function(e,t){if(!([\"number\",\"string\",\"bigint\",\"boolean\"].includes(typeof e)||\"object\"==typeof e&&null!==e&&\"toString\"in e))throw new Error(\"Expected bigint, number, boolean or string not \".concat(typeof e,\"(\").concat(e,\") at \").concat(t.join(\".\")))}(e,this.fieldPath),this.encode_bigint(BigInt(e),r))},e.prototype.encode_bigint=function(e,t){for(var r=t/8,i=new Uint8Array(r),n=0;n<r;n++)i[n]=Number(e&BigInt(255)),e>>=BigInt(8);this.encoded.store_bytes(new Uint8Array(i))},e.prototype.encode_string=function(e){this.checkTypes&&u(e,\"string\",this.fieldPath);var t=e;this.encoded.store_value(t.length,\"u32\");for(var r=0;r<t.length;r++)this.encoded.store_value(t.charCodeAt(r),\"u8\")},e.prototype.encode_boolean=function(e){this.checkTypes&&u(e,\"boolean\",this.fieldPath),this.encoded.store_value(e?1:0,\"u8\")},e.prototype.encode_option=function(e,t){null==e?this.encoded.store_value(0,\"u8\"):(this.encoded.store_value(1,\"u8\"),this.encode_value(e,t.option))},e.prototype.encode_enum=function(e,t){this.checkTypes&&function(e,t){if(\"object\"!=typeof e||null===e)throw new Error(\"Expected object not \".concat(typeof e,\"(\").concat(e,\") at \").concat(t.join(\".\")))}(e,this.fieldPath);for(var r=Object.keys(e)[0],i=0;i<t.enum.length;i++){var n=t.enum[i];if(r===Object.keys(n.struct)[0])return this.encoded.store_value(i,\"u8\"),this.encode_struct(e,n)}throw new Error(\"Enum key (\".concat(r,\") not found in enum schema: \").concat(JSON.stringify(t),\" at \").concat(this.fieldPath.join(\".\")))},e.prototype.encode_array=function(e,t){if(function(e){return Array.isArray(e)||!!e&&\"object\"==typeof e&&\"length\"in e&&\"number\"==typeof e.length&&(0===e.length||e.length>0&&e.length-1 in e)}(e))return this.encode_arraylike(e,t);if(e instanceof ArrayBuffer)return this.encode_buffer(e,t);throw new Error(\"Expected Array-like not \".concat(typeof e,\"(\").concat(e,\") at \").concat(this.fieldPath.join(\".\")))},e.prototype.encode_arraylike=function(e,t){t.array.len?c(e.length,t.array.len,this.fieldPath):this.encoded.store_value(e.length,\"u32\");for(var r=0;r<e.length;r++)this.encode_value(e[r],t.array.type)},e.prototype.encode_buffer=function(e,t){t.array.len?c(e.byteLength,t.array.len,this.fieldPath):this.encoded.store_value(e.byteLength,\"u32\"),this.encoded.store_bytes(new Uint8Array(e))},e.prototype.encode_set=function(e,t){this.checkTypes&&u(e,\"object\",this.fieldPath);var r=e instanceof Set?Array.from(e.values()):Object.values(e);this.encoded.store_value(r.length,\"u32\");for(var i=0,n=r;i<n.length;i++){var s=n[i];this.encode_value(s,t.set)}},e.prototype.encode_map=function(e,t){this.checkTypes&&u(e,\"object\",this.fieldPath);var r=e instanceof Map,i=r?Array.from(e.keys()):Object.keys(e);this.encoded.store_value(i.length,\"u32\");for(var n=0,s=i;n<s.length;n++){var o=s[n];this.encode_value(o,t.map.key),this.encode_value(r?e.get(o):e[o],t.map.value)}},e.prototype.encode_struct=function(e,t){this.checkTypes&&u(e,\"object\",this.fieldPath);for(var r=0,i=Object.keys(t.struct);r<i.length;r++){var n=i[r];this.fieldPath.push(n),this.encode_value(e[n],t.struct[n]),this.fieldPath.pop()}},e}(),y=function(){function e(e){this.buffer=new o(e)}return e.prototype.decode=function(e){return this.decode_value(e)},e.prototype.decode_value=function(e){if(\"string\"==typeof e){if(n.includes(e))return this.decode_integer(e);if(\"string\"===e)return this.decode_string();if(\"bool\"===e)return this.decode_boolean()}if(\"object\"==typeof e){if(\"option\"in e)return this.decode_option(e);if(\"enum\"in e)return this.decode_enum(e);if(\"array\"in e)return this.decode_array(e);if(\"set\"in e)return this.decode_set(e);if(\"map\"in e)return this.decode_map(e);if(\"struct\"in e)return this.decode_struct(e)}throw new Error(\"Unsupported type: \".concat(e))},e.prototype.decode_integer=function(e){var t=parseInt(e.substring(1));return t<=32||\"f64\"==e?this.buffer.consume_value(e):this.decode_bigint(t,e.startsWith(\"i\"))},e.prototype.decode_bigint=function(e,t){void 0===t&&(t=!1);var r=e/8,i=new Uint8Array(this.buffer.consume_bytes(r)),n=i.reduceRight((function(e,t){return e+t.toString(16).padStart(2,\"0\")}),\"\");return t&&i[r-1]?BigInt.asIntN(e,BigInt(\"0x\".concat(n))):BigInt(\"0x\".concat(n))},e.prototype.decode_string=function(){var e=this.decode_integer(\"u32\"),t=new Uint8Array(this.buffer.consume_bytes(e));return String.fromCharCode.apply(null,t)},e.prototype.decode_boolean=function(){return this.buffer.consume_value(\"u8\")>0},e.prototype.decode_option=function(e){var t=this.buffer.consume_value(\"u8\");if(1===t)return this.decode_value(e.option);if(0!==t)throw new Error(\"Invalid option \".concat(t));return null},e.prototype.decode_enum=function(e){var t,r=this.buffer.consume_value(\"u8\");if(r>e.enum.length)throw new Error(\"Enum option \".concat(r,\" is not available\"));var i=e.enum[r].struct,n=Object.keys(i)[0];return(t={})[n]=this.decode_value(i[n]),t},e.prototype.decode_array=function(e){for(var t=[],r=e.array.len?e.array.len:this.decode_integer(\"u32\"),i=0;i<r;++i)t.push(this.decode_value(e.array.type));return t},e.prototype.decode_set=function(e){for(var t=this.decode_integer(\"u32\"),r=new Set,i=0;i<t;++i)r.add(this.decode_value(e.set));return r},e.prototype.decode_map=function(e){for(var t=this.decode_integer(\"u32\"),r=new Map,i=0;i<t;++i){var n=this.decode_value(e.map.key),s=this.decode_value(e.map.value);r.set(n,s)}return r},e.prototype.decode_struct=function(e){var t={};for(var r in e.struct)t[r]=this.decode_value(e.struct[r]);return t},e}();function b(e,t,r){return void 0===r&&(r=!0),r&&l(e),new d(r).encode(t,e)}class g{constructor(e){this.tag=1,this.record=e.record,this.content=e.content}serialize(){return b(g.schema,this)}getInstruction(t,r,i,n,s,o,a,u){const c=Buffer.from(this.serialize());let h=[];return h.push({pubkey:r,isSigner:!1,isWritable:!1}),h.push({pubkey:i,isSigner:!1,isWritable:!1}),h.push({pubkey:n,isSigner:!0,isWritable:!0}),h.push({pubkey:s,isSigner:!1,isWritable:!0}),h.push({pubkey:o,isSigner:!1,isWritable:!0}),h.push({pubkey:a,isSigner:!0,isWritable:!0}),h.push({pubkey:u,isSigner:!1,isWritable:!1}),new e({keys:h,programId:t,data:c})}}g.schema={struct:{tag:\"u8\",record:\"string\",content:{array:{type:\"u8\"}}}};class _{constructor(e){this.tag=4,this.validation=e.validation,this.signature=e.signature,this.expectedPubkey=e.expectedPubkey}serialize(){return b(_.schema,this)}getInstruction(t,r,i,n,s,o,a,u){const c=Buffer.from(this.serialize());let h=[];return h.push({pubkey:r,isSigner:!1,isWritable:!1}),h.push({pubkey:i,isSigner:!1,isWritable:!1}),h.push({pubkey:n,isSigner:!0,isWritable:!0}),h.push({pubkey:s,isSigner:!1,isWritable:!0}),h.push({pubkey:o,isSigner:!1,isWritable:!0}),h.push({pubkey:a,isSigner:!0,isWritable:!0}),h.push({pubkey:u,isSigner:!1,isWritable:!1}),new e({keys:h,programId:t,data:c})}}_.schema={struct:{tag:\"u8\",validation:\"u8\",signature:{array:{type:\"u8\"}},expectedPubkey:{array:{type:\"u8\"}}}};class v{constructor(e){this.tag=0,this.contentLength=e.contentLength,this.record=e.record}serialize(){return b(v.schema,this)}getInstruction(t,r,i,n,s,o,a,u){const c=Buffer.from(this.serialize());let h=[];return h.push({pubkey:r,isSigner:!1,isWritable:!1}),h.push({pubkey:i,isSigner:!1,isWritable:!1}),h.push({pubkey:n,isSigner:!0,isWritable:!0}),h.push({pubkey:s,isSigner:!1,isWritable:!0}),h.push({pubkey:o,isSigner:!1,isWritable:!0}),h.push({pubkey:a,isSigner:!0,isWritable:!0}),h.push({pubkey:u,isSigner:!1,isWritable:!1}),new e({keys:h,programId:t,data:c})}}v.schema={struct:{tag:\"u8\",contentLength:\"u32\",record:\"string\"}};class m{constructor(e){this.tag=3,this.staleness=e.staleness}serialize(){return b(m.schema,this)}getInstruction(t,r,i,n,s,o,a,u,c){const h=Buffer.from(this.serialize());let f=[];return f.push({pubkey:r,isSigner:!1,isWritable:!1}),f.push({pubkey:i,isSigner:!1,isWritable:!1}),f.push({pubkey:n,isSigner:!0,isWritable:!0}),f.push({pubkey:s,isSigner:!1,isWritable:!0}),f.push({pubkey:o,isSigner:!1,isWritable:!0}),f.push({pubkey:a,isSigner:!1,isWritable:!0}),f.push({pubkey:u,isSigner:!1,isWritable:!1}),f.push({pubkey:c,isSigner:!0,isWritable:!0}),new e({keys:f,programId:t,data:h})}}m.schema={struct:{tag:\"u8\",staleness:\"bool\"}};class w{constructor(e){this.tag=2,this.record=e.record,this.content=e.content}serialize(){return b(w.schema,this)}getInstruction(t,r,i,n,s,o,a,u){const c=Buffer.from(this.serialize());let h=[];return h.push({pubkey:r,isSigner:!1,isWritable:!1}),h.push({pubkey:i,isSigner:!1,isWritable:!1}),h.push({pubkey:n,isSigner:!0,isWritable:!0}),h.push({pubkey:s,isSigner:!1,isWritable:!0}),h.push({pubkey:o,isSigner:!1,isWritable:!0}),h.push({pubkey:a,isSigner:!0,isWritable:!0}),h.push({pubkey:u,isSigner:!1,isWritable:!1}),new e({keys:h,programId:t,data:c})}}w.schema={struct:{tag:\"u8\",record:\"string\",content:{array:{type:\"u8\"}}}};class k{constructor(){this.tag=5}serialize(){return b(k.schema,this)}getInstruction(t,r,i,n,s,o,a,u){const c=Buffer.from(this.serialize());let h=[];return h.push({pubkey:r,isSigner:!1,isWritable:!1}),h.push({pubkey:i,isSigner:!1,isWritable:!1}),h.push({pubkey:n,isSigner:!0,isWritable:!0}),h.push({pubkey:s,isSigner:!1,isWritable:!0}),h.push({pubkey:o,isSigner:!1,isWritable:!0}),h.push({pubkey:a,isSigner:!0,isWritable:!0}),h.push({pubkey:u,isSigner:!1,isWritable:!1}),new e({keys:h,programId:t,data:c})}}k.schema={struct:{tag:\"u8\"}};class S{constructor(e){this.tag=6,this.roaId=e.roaId}serialize(){return b(S.schema,this)}getInstruction(t,r,i,n,s,o,a,u){const c=Buffer.from(this.serialize());let h=[];return h.push({pubkey:r,isSigner:!1,isWritable:!1}),h.push({pubkey:i,isSigner:!1,isWritable:!1}),h.push({pubkey:n,isSigner:!0,isWritable:!0}),h.push({pubkey:s,isSigner:!1,isWritable:!0}),h.push({pubkey:o,isSigner:!1,isWritable:!0}),h.push({pubkey:a,isSigner:!0,isWritable:!0}),h.push({pubkey:u,isSigner:!1,isWritable:!1}),new e({keys:h,programId:t,data:c})}}S.schema={struct:{tag:\"u8\",roaId:{array:{type:\"u8\"}}}};class I{constructor(){this.tag=7}serialize(){return b(I.schema,this)}getInstruction(t,r,i,n,s,o,a,u){const c=Buffer.from(this.serialize());let h=[];return h.push({pubkey:r,isSigner:!1,isWritable:!1}),h.push({pubkey:i,isSigner:!1,isWritable:!1}),h.push({pubkey:n,isSigner:!0,isWritable:!0}),h.push({pubkey:s,isSigner:!1,isWritable:!0}),h.push({pubkey:o,isSigner:!1,isWritable:!0}),h.push({pubkey:a,isSigner:!1,isWritable:!1}),h.push({pubkey:u,isSigner:!0,isWritable:!0}),new e({keys:h,programId:t,data:c})}}I.schema={struct:{tag:\"u8\"}};const W=new t(\"HP3D4D1ZCmohQGFVms2SS4LCANgJyksBf5s1F77FuFjZ\"),[A]=t.findProgramAddressSync([W.toBuffer()],W),j=(e,t,i,n,s,o,a,u)=>new g({record:o,content:Array.from(a)}).getInstruction(u,r.programId,s,e,t,i,n,A),z=(e,t,i,n,s,o,a,u)=>new v({contentLength:a,record:o}).getInstruction(u,r.programId,s,e,t,i,n,A),E=(e,t,i,n,s,o)=>(new k).getInstruction(o,r.programId,s,e,n,t,i,A),P=(e,t,i,n,s,o,a,u)=>new w({record:o,content:Array.from(a)}).getInstruction(u,r.programId,s,e,t,i,n,A),B=(e,t,i,n,s,o,a,u,c)=>new _({validation:o,signature:Array.from(a),expectedPubkey:Array.from(u)}).getInstruction(c,r.programId,s,e,t,i,n,A),O=(e,t,i,n,s,o,a,u)=>new m({staleness:a}).getInstruction(u,r.programId,o,e,t,i,n,A,s),U=(e,t,i,n,s,o,a)=>new S({roaId:Array.from(o.toBuffer())}).getInstruction(a,r.programId,t,e,i,n,s,A),x=(e,t,i,n,s,o)=>(new I).getInstruction(o,r.programId,t,e,i,n,A,s),L=96;var V;!function(e){e[e.None=0]=\"None\",e[e.Solana=1]=\"Solana\",e[e.Ethereum=2]=\"Ethereum\",e[e.UnverifiedSolana=3]=\"UnverifiedSolana\"}(V||(V={}));const N=e=>{switch(e){case V.None:return 0;case V.Ethereum:return 20;case V.Solana:case V.UnverifiedSolana:return 32;default:throw new Error(\"Invalid validation enum\")}};class T{constructor(e){this.stalenessValidation=e.stalenessValidation,this.rightOfAssociationValidation=e.rightOfAssociationValidation,this.contentLength=e.contentLength}static deserialize(e){return new T((t=this.schema,r=e,void 0===(i=!0)&&(i=!0),i&&l(t),new y(r).decode(t)));var t,r,i}static async retrieve(e,t){const r=await e.getAccountInfo(t);if(!r||!r.data)throw new Error(\"Record header account not found\");return this.deserialize(r.data.slice(96,96+this.LEN))}}T.LEN=8,T.schema={struct:{stalenessValidation:\"u16\",rightOfAssociationValidation:\"u16\",contentLength:\"u32\"}};class C{constructor(e,t){this.data=t,this.header=e}static deserialize(e){const t=T.deserialize(e.slice(96,96+T.LEN)),r=e.slice(96+T.LEN);return new C(t,r)}static async retrieve(e,t){const r=await e.getAccountInfo(t);if(!r||!r.data)throw new Error(\"Record header account not found\");return this.deserialize(r.data)}static async retrieveBatch(e,t){return(await e.getMultipleAccountsInfo(t)).map((e=>{if(null==e?void 0:e.data)return this.deserialize(e.data)}))}getContent(){let e=N(this.header.stalenessValidation)+N(this.header.rightOfAssociationValidation);return this.data.slice(e)}getStalenessId(){let e=N(this.header.stalenessValidation);return this.data.slice(0,e)}getRoAId(){let e=N(this.header.stalenessValidation),t=e+N(this.header.rightOfAssociationValidation);return this.data.slice(e,t)}}export{A as CENTRAL_STATE_SNS_RECORDS,L as NAME_REGISTRY_LEN,C as Record,T as RecordHeader,W as SNS_RECORDS_ID,V as Validation,j as allocateAndPostRecord,g as allocateAndPostRecordInstruction,z as allocateRecord,v as allocateRecordInstruction,E as deleteRecord,k as deleteRecordInstruction,P as editRecord,w as editRecordInstruction,N as getValidationLength,x as unverifyRoa,I as unverifyRoaInstruction,B as validateEthSignature,_ as validateEthereumSignatureInstruction,O as validateSolanaSignature,m as validateSolanaSignatureInstruction,U as writeRoa,S as writeRoaInstruction};\n//# sourceMappingURL=index.mjs.map\n",null,"module.exports = {\n Other: 0,\n CR: 1 << 0,\n LF: 1 << 1,\n Control: 1 << 2,\n Extend: 1 << 3,\n ZWJ: 1 << 4,\n Regional_Indicator: 1 << 5,\n Prepend: 1 << 6,\n SpacingMark: 1 << 7,\n L: 1 << 8,\n V: 1 << 9,\n T: 1 << 10,\n LV: 1 << 11,\n LVT: 1 << 12,\n Extended_Pictographic: 1 << 13,\n};\n","var TINF_OK = 0;\nvar TINF_DATA_ERROR = -3;\n\nfunction Tree() {\n this.table = new Uint16Array(16); /* table of code length counts */\n this.trans = new Uint16Array(288); /* code -> symbol translation table */\n}\n\nfunction Data(source, dest) {\n this.source = source;\n this.sourceIndex = 0;\n this.tag = 0;\n this.bitcount = 0;\n \n this.dest = dest;\n this.destLen = 0;\n \n this.ltree = new Tree(); /* dynamic length/symbol tree */\n this.dtree = new Tree(); /* dynamic distance tree */\n}\n\n/* --------------------------------------------------- *\n * -- uninitialized global data (static structures) -- *\n * --------------------------------------------------- */\n\nvar sltree = new Tree();\nvar sdtree = new Tree();\n\n/* extra bits and base tables for length codes */\nvar length_bits = new Uint8Array(30);\nvar length_base = new Uint16Array(30);\n\n/* extra bits and base tables for distance codes */\nvar dist_bits = new Uint8Array(30);\nvar dist_base = new Uint16Array(30);\n\n/* special ordering of code length codes */\nvar clcidx = new Uint8Array([\n 16, 17, 18, 0, 8, 7, 9, 6,\n 10, 5, 11, 4, 12, 3, 13, 2,\n 14, 1, 15\n]);\n\n/* used by tinf_decode_trees, avoids allocations every call */\nvar code_tree = new Tree();\nvar lengths = new Uint8Array(288 + 32);\n\n/* ----------------------- *\n * -- utility functions -- *\n * ----------------------- */\n\n/* build extra bits and base tables */\nfunction tinf_build_bits_base(bits, base, delta, first) {\n var i, sum;\n\n /* build bits table */\n for (i = 0; i < delta; ++i) bits[i] = 0;\n for (i = 0; i < 30 - delta; ++i) bits[i + delta] = i / delta | 0;\n\n /* build base table */\n for (sum = first, i = 0; i < 30; ++i) {\n base[i] = sum;\n sum += 1 << bits[i];\n }\n}\n\n/* build the fixed huffman trees */\nfunction tinf_build_fixed_trees(lt, dt) {\n var i;\n\n /* build fixed length tree */\n for (i = 0; i < 7; ++i) lt.table[i] = 0;\n\n lt.table[7] = 24;\n lt.table[8] = 152;\n lt.table[9] = 112;\n\n for (i = 0; i < 24; ++i) lt.trans[i] = 256 + i;\n for (i = 0; i < 144; ++i) lt.trans[24 + i] = i;\n for (i = 0; i < 8; ++i) lt.trans[24 + 144 + i] = 280 + i;\n for (i = 0; i < 112; ++i) lt.trans[24 + 144 + 8 + i] = 144 + i;\n\n /* build fixed distance tree */\n for (i = 0; i < 5; ++i) dt.table[i] = 0;\n\n dt.table[5] = 32;\n\n for (i = 0; i < 32; ++i) dt.trans[i] = i;\n}\n\n/* given an array of code lengths, build a tree */\nvar offs = new Uint16Array(16);\n\nfunction tinf_build_tree(t, lengths, off, num) {\n var i, sum;\n\n /* clear code length count table */\n for (i = 0; i < 16; ++i) t.table[i] = 0;\n\n /* scan symbol lengths, and sum code length counts */\n for (i = 0; i < num; ++i) t.table[lengths[off + i]]++;\n\n t.table[0] = 0;\n\n /* compute offset table for distribution sort */\n for (sum = 0, i = 0; i < 16; ++i) {\n offs[i] = sum;\n sum += t.table[i];\n }\n\n /* create code->symbol translation table (symbols sorted by code) */\n for (i = 0; i < num; ++i) {\n if (lengths[off + i]) t.trans[offs[lengths[off + i]]++] = i;\n }\n}\n\n/* ---------------------- *\n * -- decode functions -- *\n * ---------------------- */\n\n/* get one bit from source stream */\nfunction tinf_getbit(d) {\n /* check if tag is empty */\n if (!d.bitcount--) {\n /* load next tag */\n d.tag = d.source[d.sourceIndex++];\n d.bitcount = 7;\n }\n\n /* shift bit out of tag */\n var bit = d.tag & 1;\n d.tag >>>= 1;\n\n return bit;\n}\n\n/* read a num bit value from a stream and add base */\nfunction tinf_read_bits(d, num, base) {\n if (!num)\n return base;\n\n while (d.bitcount < 24) {\n d.tag |= d.source[d.sourceIndex++] << d.bitcount;\n d.bitcount += 8;\n }\n\n var val = d.tag & (0xffff >>> (16 - num));\n d.tag >>>= num;\n d.bitcount -= num;\n return val + base;\n}\n\n/* given a data stream and a tree, decode a symbol */\nfunction tinf_decode_symbol(d, t) {\n while (d.bitcount < 24) {\n d.tag |= d.source[d.sourceIndex++] << d.bitcount;\n d.bitcount += 8;\n }\n \n var sum = 0, cur = 0, len = 0;\n var tag = d.tag;\n\n /* get more bits while code value is above sum */\n do {\n cur = 2 * cur + (tag & 1);\n tag >>>= 1;\n ++len;\n\n sum += t.table[len];\n cur -= t.table[len];\n } while (cur >= 0);\n \n d.tag = tag;\n d.bitcount -= len;\n\n return t.trans[sum + cur];\n}\n\n/* given a data stream, decode dynamic trees from it */\nfunction tinf_decode_trees(d, lt, dt) {\n var hlit, hdist, hclen;\n var i, num, length;\n\n /* get 5 bits HLIT (257-286) */\n hlit = tinf_read_bits(d, 5, 257);\n\n /* get 5 bits HDIST (1-32) */\n hdist = tinf_read_bits(d, 5, 1);\n\n /* get 4 bits HCLEN (4-19) */\n hclen = tinf_read_bits(d, 4, 4);\n\n for (i = 0; i < 19; ++i) lengths[i] = 0;\n\n /* read code lengths for code length alphabet */\n for (i = 0; i < hclen; ++i) {\n /* get 3 bits code length (0-7) */\n var clen = tinf_read_bits(d, 3, 0);\n lengths[clcidx[i]] = clen;\n }\n\n /* build code length tree */\n tinf_build_tree(code_tree, lengths, 0, 19);\n\n /* decode code lengths for the dynamic trees */\n for (num = 0; num < hlit + hdist;) {\n var sym = tinf_decode_symbol(d, code_tree);\n\n switch (sym) {\n case 16:\n /* copy previous code length 3-6 times (read 2 bits) */\n var prev = lengths[num - 1];\n for (length = tinf_read_bits(d, 2, 3); length; --length) {\n lengths[num++] = prev;\n }\n break;\n case 17:\n /* repeat code length 0 for 3-10 times (read 3 bits) */\n for (length = tinf_read_bits(d, 3, 3); length; --length) {\n lengths[num++] = 0;\n }\n break;\n case 18:\n /* repeat code length 0 for 11-138 times (read 7 bits) */\n for (length = tinf_read_bits(d, 7, 11); length; --length) {\n lengths[num++] = 0;\n }\n break;\n default:\n /* values 0-15 represent the actual code lengths */\n lengths[num++] = sym;\n break;\n }\n }\n\n /* build dynamic trees */\n tinf_build_tree(lt, lengths, 0, hlit);\n tinf_build_tree(dt, lengths, hlit, hdist);\n}\n\n/* ----------------------------- *\n * -- block inflate functions -- *\n * ----------------------------- */\n\n/* given a stream and two trees, inflate a block of data */\nfunction tinf_inflate_block_data(d, lt, dt) {\n while (1) {\n var sym = tinf_decode_symbol(d, lt);\n\n /* check for end of block */\n if (sym === 256) {\n return TINF_OK;\n }\n\n if (sym < 256) {\n d.dest[d.destLen++] = sym;\n } else {\n var length, dist, offs;\n var i;\n\n sym -= 257;\n\n /* possibly get more bits from length code */\n length = tinf_read_bits(d, length_bits[sym], length_base[sym]);\n\n dist = tinf_decode_symbol(d, dt);\n\n /* possibly get more bits from distance code */\n offs = d.destLen - tinf_read_bits(d, dist_bits[dist], dist_base[dist]);\n\n /* copy match */\n for (i = offs; i < offs + length; ++i) {\n d.dest[d.destLen++] = d.dest[i];\n }\n }\n }\n}\n\n/* inflate an uncompressed block of data */\nfunction tinf_inflate_uncompressed_block(d) {\n var length, invlength;\n var i;\n \n /* unread from bitbuffer */\n while (d.bitcount > 8) {\n d.sourceIndex--;\n d.bitcount -= 8;\n }\n\n /* get length */\n length = d.source[d.sourceIndex + 1];\n length = 256 * length + d.source[d.sourceIndex];\n\n /* get one's complement of length */\n invlength = d.source[d.sourceIndex + 3];\n invlength = 256 * invlength + d.source[d.sourceIndex + 2];\n\n /* check length */\n if (length !== (~invlength & 0x0000ffff))\n return TINF_DATA_ERROR;\n\n d.sourceIndex += 4;\n\n /* copy block */\n for (i = length; i; --i)\n d.dest[d.destLen++] = d.source[d.sourceIndex++];\n\n /* make sure we start next block on a byte boundary */\n d.bitcount = 0;\n\n return TINF_OK;\n}\n\n/* inflate stream from source to dest */\nfunction tinf_uncompress(source, dest) {\n var d = new Data(source, dest);\n var bfinal, btype, res;\n\n do {\n /* read final block flag */\n bfinal = tinf_getbit(d);\n\n /* read block type (2 bits) */\n btype = tinf_read_bits(d, 2, 0);\n\n /* decompress block */\n switch (btype) {\n case 0:\n /* decompress uncompressed block */\n res = tinf_inflate_uncompressed_block(d);\n break;\n case 1:\n /* decompress block with fixed huffman trees */\n res = tinf_inflate_block_data(d, sltree, sdtree);\n break;\n case 2:\n /* decompress block with dynamic huffman trees */\n tinf_decode_trees(d, d.ltree, d.dtree);\n res = tinf_inflate_block_data(d, d.ltree, d.dtree);\n break;\n default:\n res = TINF_DATA_ERROR;\n }\n\n if (res !== TINF_OK)\n throw new Error('Data error');\n\n } while (!bfinal);\n\n if (d.destLen < d.dest.length) {\n if (typeof d.dest.slice === 'function')\n return d.dest.slice(0, d.destLen);\n else\n return d.dest.subarray(0, d.destLen);\n }\n \n return d.dest;\n}\n\n/* -------------------- *\n * -- initialization -- *\n * -------------------- */\n\n/* build fixed huffman trees */\ntinf_build_fixed_trees(sltree, sdtree);\n\n/* build extra bits and base tables */\ntinf_build_bits_base(length_bits, length_base, 4, 3);\ntinf_build_bits_base(dist_bits, dist_base, 2, 1);\n\n/* fix a special case */\nlength_bits[28] = 0;\nlength_base[28] = 258;\n\nmodule.exports = tinf_uncompress;\n","const isBigEndian = (new Uint8Array(new Uint32Array([0x12345678]).buffer)[0] === 0x12);\n\nconst swap = (b, n, m) => {\n let i = b[n];\n b[n] = b[m];\n b[m] = i;\n};\n\nconst swap32 = array => {\n const len = array.length;\n for (let i = 0; i < len; i += 4) {\n swap(array, i, i + 3);\n swap(array, i + 1, i + 2);\n }\n};\n\nconst swap32LE = array => {\n if (isBigEndian) {\n swap32(array);\n }\n};\n\nmodule.exports = {\n swap32LE: swap32LE\n};\n","const inflate = require('tiny-inflate');\nconst { swap32LE } = require('./swap');\n\n// Shift size for getting the index-1 table offset.\nconst SHIFT_1 = 6 + 5;\n\n// Shift size for getting the index-2 table offset.\nconst SHIFT_2 = 5;\n\n// Difference between the two shift sizes,\n// for getting an index-1 offset from an index-2 offset. 6=11-5\nconst SHIFT_1_2 = SHIFT_1 - SHIFT_2;\n\n// Number of index-1 entries for the BMP. 32=0x20\n// This part of the index-1 table is omitted from the serialized form.\nconst OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> SHIFT_1;\n\n// Number of entries in an index-2 block. 64=0x40\nconst INDEX_2_BLOCK_LENGTH = 1 << SHIFT_1_2;\n\n// Mask for getting the lower bits for the in-index-2-block offset. */\nconst INDEX_2_MASK = INDEX_2_BLOCK_LENGTH - 1;\n\n// Shift size for shifting left the index array values.\n// Increases possible data size with 16-bit index values at the cost\n// of compactability.\n// This requires data blocks to be aligned by DATA_GRANULARITY.\nconst INDEX_SHIFT = 2;\n\n// Number of entries in a data block. 32=0x20\nconst DATA_BLOCK_LENGTH = 1 << SHIFT_2;\n\n// Mask for getting the lower bits for the in-data-block offset.\nconst DATA_MASK = DATA_BLOCK_LENGTH - 1;\n\n// The part of the index-2 table for U+D800..U+DBFF stores values for\n// lead surrogate code _units_ not code _points_.\n// Values for lead surrogate code _points_ are indexed with this portion of the table.\n// Length=32=0x20=0x400>>SHIFT_2. (There are 1024=0x400 lead surrogates.)\nconst LSCP_INDEX_2_OFFSET = 0x10000 >> SHIFT_2;\nconst LSCP_INDEX_2_LENGTH = 0x400 >> SHIFT_2;\n\n// Count the lengths of both BMP pieces. 2080=0x820\nconst INDEX_2_BMP_LENGTH = LSCP_INDEX_2_OFFSET + LSCP_INDEX_2_LENGTH;\n\n// The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n// Length 32=0x20 for lead bytes C0..DF, regardless of SHIFT_2.\nconst UTF8_2B_INDEX_2_OFFSET = INDEX_2_BMP_LENGTH;\nconst UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; // U+0800 is the first code point after 2-byte UTF-8\n\n// The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n// Variable length, for code points up to highStart, where the last single-value range starts.\n// Maximum length 512=0x200=0x100000>>SHIFT_1.\n// (For 0x100000 supplementary code points U+10000..U+10ffff.)\n//\n// The part of the index-2 table for supplementary code points starts\n// after this index-1 table.\n//\n// Both the index-1 table and the following part of the index-2 table\n// are omitted completely if there is only BMP data.\nconst INDEX_1_OFFSET = UTF8_2B_INDEX_2_OFFSET + UTF8_2B_INDEX_2_LENGTH;\n\n// The alignment size of a data block. Also the granularity for compaction.\nconst DATA_GRANULARITY = 1 << INDEX_SHIFT;\n\nclass UnicodeTrie {\n constructor(data) {\n const isBuffer = (typeof data.readUInt32BE === 'function') && (typeof data.slice === 'function');\n\n if (isBuffer || data instanceof Uint8Array) {\n // read binary format\n let uncompressedLength;\n if (isBuffer) {\n this.highStart = data.readUInt32LE(0);\n this.errorValue = data.readUInt32LE(4);\n uncompressedLength = data.readUInt32LE(8);\n data = data.slice(12);\n } else {\n const view = new DataView(data.buffer);\n this.highStart = view.getUint32(0, true);\n this.errorValue = view.getUint32(4, true);\n uncompressedLength = view.getUint32(8, true);\n data = data.subarray(12);\n }\n\n // double inflate the actual trie data\n data = inflate(data, new Uint8Array(uncompressedLength));\n data = inflate(data, new Uint8Array(uncompressedLength));\n\n // swap bytes from little-endian\n swap32LE(data);\n\n this.data = new Uint32Array(data.buffer);\n\n } else {\n // pre-parsed data\n ({ data: this.data, highStart: this.highStart, errorValue: this.errorValue } = data);\n }\n }\n\n get(codePoint) {\n let index;\n if ((codePoint < 0) || (codePoint > 0x10ffff)) {\n return this.errorValue;\n }\n\n if ((codePoint < 0xd800) || ((codePoint > 0xdbff) && (codePoint <= 0xffff))) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the index.\n // data is stored in the index array itself.\n index = (this.data[codePoint >> SHIFT_2] << INDEX_SHIFT) + (codePoint & DATA_MASK);\n return this.data[index];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n index = (this.data[LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> SHIFT_2)] << INDEX_SHIFT) + (codePoint & DATA_MASK);\n return this.data[index];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n index = this.data[(INDEX_1_OFFSET - OMITTED_BMP_INDEX_1_LENGTH) + (codePoint >> SHIFT_1)];\n index = this.data[index + ((codePoint >> SHIFT_2) & INDEX_2_MASK)];\n index = (index << INDEX_SHIFT) + (codePoint & DATA_MASK);\n return this.data[index];\n }\n\n return this.data[this.data.length - DATA_GRANULARITY];\n }\n}\n\nmodule.exports = UnicodeTrie;","//\n// THIS FILE IS AUTOMATICALLY GENERATED! DO NOT EDIT BY HAND!\n//\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n ? module.exports = factory()\n : typeof define === 'function' && define.amd\n ? define(factory) :\n // cf. https://github.com/dankogai/js-base64/issues/119\n (function () {\n // existing version for noConflict()\n var _Base64 = global.Base64;\n var gBase64 = factory();\n gBase64.noConflict = function () {\n global.Base64 = _Base64;\n return gBase64;\n };\n if (global.Meteor) { // Meteor.js\n Base64 = gBase64;\n }\n global.Base64 = gBase64;\n })();\n}((typeof self !== 'undefined' ? self\n : typeof window !== 'undefined' ? window\n : typeof global !== 'undefined' ? global\n : this), function () {\n 'use strict';\n /**\n * base64.ts\n *\n * Licensed under the BSD 3-Clause License.\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * References:\n * http://en.wikipedia.org/wiki/Base64\n *\n * @author Dan Kogai (https://github.com/dankogai)\n */\n var version = '3.7.5';\n /**\n * @deprecated use lowercase `version`.\n */\n var VERSION = version;\n var _hasatob = typeof atob === 'function';\n var _hasbtoa = typeof btoa === 'function';\n var _hasBuffer = typeof Buffer === 'function';\n var _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined;\n var _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined;\n var b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var b64chs = Array.prototype.slice.call(b64ch);\n var b64tab = (function (a) {\n var tab = {};\n a.forEach(function (c, i) { return tab[c] = i; });\n return tab;\n })(b64chs);\n var b64re = /^(?:[A-Za-z\\d+\\/]{4})*?(?:[A-Za-z\\d+\\/]{2}(?:==)?|[A-Za-z\\d+\\/]{3}=?)?$/;\n var _fromCC = String.fromCharCode.bind(String);\n var _U8Afrom = typeof Uint8Array.from === 'function'\n ? Uint8Array.from.bind(Uint8Array)\n : function (it) { return new Uint8Array(Array.prototype.slice.call(it, 0)); };\n var _mkUriSafe = function (src) { return src\n .replace(/=/g, '').replace(/[+\\/]/g, function (m0) { return m0 == '+' ? '-' : '_'; }); };\n var _tidyB64 = function (s) { return s.replace(/[^A-Za-z0-9\\+\\/]/g, ''); };\n /**\n * polyfill version of `btoa`\n */\n var btoaPolyfill = function (bin) {\n // console.log('polyfilled');\n var u32, c0, c1, c2, asc = '';\n var pad = bin.length % 3;\n for (var i = 0; i < bin.length;) {\n if ((c0 = bin.charCodeAt(i++)) > 255 ||\n (c1 = bin.charCodeAt(i++)) > 255 ||\n (c2 = bin.charCodeAt(i++)) > 255)\n throw new TypeError('invalid character found');\n u32 = (c0 << 16) | (c1 << 8) | c2;\n asc += b64chs[u32 >> 18 & 63]\n + b64chs[u32 >> 12 & 63]\n + b64chs[u32 >> 6 & 63]\n + b64chs[u32 & 63];\n }\n return pad ? asc.slice(0, pad - 3) + \"===\".substring(pad) : asc;\n };\n /**\n * does what `window.btoa` of web browsers do.\n * @param {String} bin binary string\n * @returns {string} Base64-encoded string\n */\n var _btoa = _hasbtoa ? function (bin) { return btoa(bin); }\n : _hasBuffer ? function (bin) { return Buffer.from(bin, 'binary').toString('base64'); }\n : btoaPolyfill;\n var _fromUint8Array = _hasBuffer\n ? function (u8a) { return Buffer.from(u8a).toString('base64'); }\n : function (u8a) {\n // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326\n var maxargs = 0x1000;\n var strs = [];\n for (var i = 0, l = u8a.length; i < l; i += maxargs) {\n strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));\n }\n return _btoa(strs.join(''));\n };\n /**\n * converts a Uint8Array to a Base64 string.\n * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5\n * @returns {string} Base64 string\n */\n var fromUint8Array = function (u8a, urlsafe) {\n if (urlsafe === void 0) { urlsafe = false; }\n return urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);\n };\n // This trick is found broken https://github.com/dankogai/js-base64/issues/130\n // const utob = (src: string) => unescape(encodeURIComponent(src));\n // reverting good old fationed regexp\n var cb_utob = function (c) {\n if (c.length < 2) {\n var cc = c.charCodeAt(0);\n return cc < 0x80 ? c\n : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6))\n + _fromCC(0x80 | (cc & 0x3f)))\n : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n else {\n var cc = 0x10000\n + (c.charCodeAt(0) - 0xD800) * 0x400\n + (c.charCodeAt(1) - 0xDC00);\n return (_fromCC(0xf0 | ((cc >>> 18) & 0x07))\n + _fromCC(0x80 | ((cc >>> 12) & 0x3f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n };\n var re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n /**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-8 string\n * @returns {string} UTF-16 string\n */\n var utob = function (u) { return u.replace(re_utob, cb_utob); };\n //\n var _encode = _hasBuffer\n ? function (s) { return Buffer.from(s, 'utf8').toString('base64'); }\n : _TE\n ? function (s) { return _fromUint8Array(_TE.encode(s)); }\n : function (s) { return _btoa(utob(s)); };\n /**\n * converts a UTF-8-encoded string to a Base64 string.\n * @param {boolean} [urlsafe] if `true` make the result URL-safe\n * @returns {string} Base64 string\n */\n var encode = function (src, urlsafe) {\n if (urlsafe === void 0) { urlsafe = false; }\n return urlsafe\n ? _mkUriSafe(_encode(src))\n : _encode(src);\n };\n /**\n * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5.\n * @returns {string} Base64 string\n */\n var encodeURI = function (src) { return encode(src, true); };\n // This trick is found broken https://github.com/dankogai/js-base64/issues/130\n // const btou = (src: string) => decodeURIComponent(escape(src));\n // reverting good old fationed regexp\n var re_btou = /[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}/g;\n var cb_btou = function (cccc) {\n switch (cccc.length) {\n case 4:\n var cp = ((0x07 & cccc.charCodeAt(0)) << 18)\n | ((0x3f & cccc.charCodeAt(1)) << 12)\n | ((0x3f & cccc.charCodeAt(2)) << 6)\n | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000;\n return (_fromCC((offset >>> 10) + 0xD800)\n + _fromCC((offset & 0x3FF) + 0xDC00));\n case 3:\n return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12)\n | ((0x3f & cccc.charCodeAt(1)) << 6)\n | (0x3f & cccc.charCodeAt(2)));\n default:\n return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6)\n | (0x3f & cccc.charCodeAt(1)));\n }\n };\n /**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-16 string\n * @returns {string} UTF-8 string\n */\n var btou = function (b) { return b.replace(re_btou, cb_btou); };\n /**\n * polyfill version of `atob`\n */\n var atobPolyfill = function (asc) {\n // console.log('polyfilled');\n asc = asc.replace(/\\s+/g, '');\n if (!b64re.test(asc))\n throw new TypeError('malformed base64.');\n asc += '=='.slice(2 - (asc.length & 3));\n var u24, bin = '', r1, r2;\n for (var i = 0; i < asc.length;) {\n u24 = b64tab[asc.charAt(i++)] << 18\n | b64tab[asc.charAt(i++)] << 12\n | (r1 = b64tab[asc.charAt(i++)]) << 6\n | (r2 = b64tab[asc.charAt(i++)]);\n bin += r1 === 64 ? _fromCC(u24 >> 16 & 255)\n : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255)\n : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);\n }\n return bin;\n };\n /**\n * does what `window.atob` of web browsers do.\n * @param {String} asc Base64-encoded string\n * @returns {string} binary string\n */\n var _atob = _hasatob ? function (asc) { return atob(_tidyB64(asc)); }\n : _hasBuffer ? function (asc) { return Buffer.from(asc, 'base64').toString('binary'); }\n : atobPolyfill;\n //\n var _toUint8Array = _hasBuffer\n ? function (a) { return _U8Afrom(Buffer.from(a, 'base64')); }\n : function (a) { return _U8Afrom(_atob(a).split('').map(function (c) { return c.charCodeAt(0); })); };\n /**\n * converts a Base64 string to a Uint8Array.\n */\n var toUint8Array = function (a) { return _toUint8Array(_unURI(a)); };\n //\n var _decode = _hasBuffer\n ? function (a) { return Buffer.from(a, 'base64').toString('utf8'); }\n : _TD\n ? function (a) { return _TD.decode(_toUint8Array(a)); }\n : function (a) { return btou(_atob(a)); };\n var _unURI = function (a) { return _tidyB64(a.replace(/[-_]/g, function (m0) { return m0 == '-' ? '+' : '/'; })); };\n /**\n * converts a Base64 string to a UTF-8 string.\n * @param {String} src Base64 string. Both normal and URL-safe are supported\n * @returns {string} UTF-8 string\n */\n var decode = function (src) { return _decode(_unURI(src)); };\n /**\n * check if a value is a valid Base64 string\n * @param {String} src a value to check\n */\n var isValid = function (src) {\n if (typeof src !== 'string')\n return false;\n var s = src.replace(/\\s+/g, '').replace(/={0,2}$/, '');\n return !/[^\\s0-9a-zA-Z\\+/]/.test(s) || !/[^\\s0-9a-zA-Z\\-_]/.test(s);\n };\n //\n var _noEnum = function (v) {\n return {\n value: v, enumerable: false, writable: true, configurable: true\n };\n };\n /**\n * extend String.prototype with relevant methods\n */\n var extendString = function () {\n var _add = function (name, body) { return Object.defineProperty(String.prototype, name, _noEnum(body)); };\n _add('fromBase64', function () { return decode(this); });\n _add('toBase64', function (urlsafe) { return encode(this, urlsafe); });\n _add('toBase64URI', function () { return encode(this, true); });\n _add('toBase64URL', function () { return encode(this, true); });\n _add('toUint8Array', function () { return toUint8Array(this); });\n };\n /**\n * extend Uint8Array.prototype with relevant methods\n */\n var extendUint8Array = function () {\n var _add = function (name, body) { return Object.defineProperty(Uint8Array.prototype, name, _noEnum(body)); };\n _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); });\n _add('toBase64URI', function () { return fromUint8Array(this, true); });\n _add('toBase64URL', function () { return fromUint8Array(this, true); });\n };\n /**\n * extend Builtin prototypes with relevant methods\n */\n var extendBuiltins = function () {\n extendString();\n extendUint8Array();\n };\n var gBase64 = {\n version: version,\n VERSION: VERSION,\n atob: _atob,\n atobPolyfill: atobPolyfill,\n btoa: _btoa,\n btoaPolyfill: btoaPolyfill,\n fromBase64: decode,\n toBase64: encode,\n encode: encode,\n encodeURI: encodeURI,\n encodeURL: encodeURI,\n utob: utob,\n btou: btou,\n decode: decode,\n isValid: isValid,\n fromUint8Array: fromUint8Array,\n toUint8Array: toUint8Array,\n extendString: extendString,\n extendUint8Array: extendUint8Array,\n extendBuiltins: extendBuiltins\n };\n //\n // export Base64 to the namespace\n //\n // ES5 is yet to have Object.assign() that may make transpilers unhappy.\n // gBase64.Base64 = Object.assign({}, gBase64);\n gBase64.Base64 = {};\n Object.keys(gBase64).forEach(function (k) { return gBase64.Base64[k] = gBase64[k]; });\n return gBase64;\n}));\n","const types = require(\"./types\");\nconst typeTrieData = require(\"./typeTrie.json\").data;\nconst extPictData = require(\"./extPict.json\").data;\n\nconst UnicodeTrie = require(\"unicode-trie\");\nconst Base64 = require(\"js-base64\").Base64;\n\nconst typeTrie = new UnicodeTrie(Base64.toUint8Array(typeTrieData));\nconst extPict = new UnicodeTrie(Base64.toUint8Array(extPictData));\n\nfunction is(type, bit) {\n return (type & bit) !== 0;\n}\n\nconst GB11State = {\n Initial: 0,\n ExtendOrZWJ: 1,\n NotBoundary: 2,\n};\n\nfunction nextGraphemeClusterSize(ts, start) {\n const L = ts.length;\n\n let ri = 0;\n let gb11State = GB11State.Initial;\n\n // GB1: sot ÷ Any\n for (let i = start; i + 1 < L; i++) {\n const curr = ts[i + 0];\n const next = ts[i + 1];\n\n // for GB12, GB13\n if (!is(curr, types.Regional_Indicator)) {\n ri = 0;\n }\n\n // for GB11: \\p{Extended_Pictographic} Extend* ZWJ x \\p{Extended_Pictographic}\n switch (gb11State) {\n case GB11State.NotBoundary:\n case GB11State.Initial:\n if (is(curr, types.Extended_Pictographic)) {\n gb11State = GB11State.ExtendOrZWJ;\n } else {\n gb11State = GB11State.Initial;\n }\n break;\n case GB11State.ExtendOrZWJ:\n if (is(curr, types.Extend)) {\n gb11State = GB11State.ExtendOrZWJ;\n } else if (\n is(curr, types.ZWJ) &&\n is(next, types.Extended_Pictographic)\n ) {\n gb11State = GB11State.NotBoundary;\n } else {\n gb11State = GB11State.Initial;\n }\n break;\n }\n\n // GB3: CR x LF\n if (is(curr, types.CR) && is(next, types.LF)) {\n continue;\n }\n // GB4: (Control | CR | LF) ÷\n if (is(curr, types.Control | types.CR | types.LF)) {\n return i + 1 - start;\n }\n // GB5: ÷ (Control | CR | LF)\n if (is(next, types.Control | types.CR | types.LF)) {\n return i + 1 - start;\n }\n // GB6: L x (L | V | LV | LVT)\n if (\n is(curr, types.L) &&\n is(next, types.L | types.V | types.LV | types.LVT)\n ) {\n continue;\n }\n // GB7: (LV | V) x (V | T)\n if (is(curr, types.LV | types.V) && is(next, types.V | types.T)) {\n continue;\n }\n // GB8: (LVT | T) x T\n if (is(curr, types.LVT | types.T) && is(next, types.T)) {\n continue;\n }\n // GB9: x (Extend | ZWJ)\n if (is(next, types.Extend | types.ZWJ)) {\n continue;\n }\n // GB9a: x SpacingMark\n if (is(next, types.SpacingMark)) {\n continue;\n }\n // GB9b: Prepend x\n if (is(curr, types.Prepend)) {\n continue;\n }\n // GB11: \\p{Extended_Pictographic} Extend* ZWJ x \\p{Extended_Pictographic}\n if (gb11State === GB11State.NotBoundary) {\n continue;\n }\n // GB12: sot (RI RI)* RI x RI\n // GB13: [^RI] (RI RI)* RI x RI\n if (\n is(curr, types.Regional_Indicator) &&\n is(next, types.Regional_Indicator) &&\n ri % 2 === 0\n ) {\n ri++;\n continue;\n }\n // GB999: Any ÷ Any\n return i + 1 - start;\n }\n // GB2: Any ÷ eot\n return L - start;\n}\n\nmodule.exports = function split(str) {\n const graphemeClusters = [];\n\n const map = [0];\n const ts = [];\n for (let i = 0; i < str.length; ) {\n const code = str.codePointAt(i);\n ts.push(typeTrie.get(code) | extPict.get(code));\n i += code > 65535 ? 2 : 1;\n map.push(i);\n }\n\n for (let offset = 0; offset < ts.length; ) {\n const size = nextGraphemeClusterSize(ts, offset);\n const start = map[offset];\n const end = map[offset + size];\n graphemeClusters.push(str.slice(start, end));\n offset += size;\n }\n\n return graphemeClusters;\n};\n",null,"'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (source instanceof Uint8Array) {\n } else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength)\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source)\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = new Uint8Array(zeroes + (size - it4))\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","const basex = require('base-x')\nconst ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n","(function (root) {\n 'use strict';\n // A list of regular expressions that match arbitrary IPv4 addresses,\n // for which a number of weird notations exist.\n // Note that an address like 0010.0xa5.1.1 is considered legal.\n const ipv4Part = '(0?\\\\d+|0x[a-f0-9]+)';\n const ipv4Regexes = {\n fourOctet: new RegExp(`^${ipv4Part}\\\\.${ipv4Part}\\\\.${ipv4Part}\\\\.${ipv4Part}$`, 'i'),\n threeOctet: new RegExp(`^${ipv4Part}\\\\.${ipv4Part}\\\\.${ipv4Part}$`, 'i'),\n twoOctet: new RegExp(`^${ipv4Part}\\\\.${ipv4Part}$`, 'i'),\n longValue: new RegExp(`^${ipv4Part}$`, 'i')\n };\n\n // Regular Expression for checking Octal numbers\n const octalRegex = new RegExp(`^0[0-7]+$`, 'i');\n const hexRegex = new RegExp(`^0x[a-f0-9]+$`, 'i');\n\n const zoneIndex = '%[0-9a-z]{1,}';\n\n // IPv6-matching regular expressions.\n // For IPv6, the task is simpler: it is enough to match the colon-delimited\n // hexadecimal IPv6 and a transitional variant with dotted-decimal IPv4 at\n // the end.\n const ipv6Part = '(?:[0-9a-f]+::?)+';\n const ipv6Regexes = {\n zoneIndex: new RegExp(zoneIndex, 'i'),\n 'native': new RegExp(`^(::)?(${ipv6Part})?([0-9a-f]+)?(::)?(${zoneIndex})?$`, 'i'),\n deprecatedTransitional: new RegExp(`^(?:::)(${ipv4Part}\\\\.${ipv4Part}\\\\.${ipv4Part}\\\\.${ipv4Part}(${zoneIndex})?)$`, 'i'),\n transitional: new RegExp(`^((?:${ipv6Part})|(?:::)(?:${ipv6Part})?)${ipv4Part}\\\\.${ipv4Part}\\\\.${ipv4Part}\\\\.${ipv4Part}(${zoneIndex})?$`, 'i')\n };\n\n // Expand :: in an IPv6 address or address part consisting of `parts` groups.\n function expandIPv6 (string, parts) {\n // More than one '::' means invalid adddress\n if (string.indexOf('::') !== string.lastIndexOf('::')) {\n return null;\n }\n\n let colonCount = 0;\n let lastColon = -1;\n let zoneId = (string.match(ipv6Regexes.zoneIndex) || [])[0];\n let replacement, replacementCount;\n\n // Remove zone index and save it for later\n if (zoneId) {\n zoneId = zoneId.substring(1);\n string = string.replace(/%.+$/, '');\n }\n\n // How many parts do we already have?\n while ((lastColon = string.indexOf(':', lastColon + 1)) >= 0) {\n colonCount++;\n }\n\n // 0::0 is two parts more than ::\n if (string.substr(0, 2) === '::') {\n colonCount--;\n }\n\n if (string.substr(-2, 2) === '::') {\n colonCount--;\n }\n\n // The following loop would hang if colonCount > parts\n if (colonCount > parts) {\n return null;\n }\n\n // replacement = ':' + '0:' * (parts - colonCount)\n replacementCount = parts - colonCount;\n replacement = ':';\n while (replacementCount--) {\n replacement += '0:';\n }\n\n // Insert the missing zeroes\n string = string.replace('::', replacement);\n\n // Trim any garbage which may be hanging around if :: was at the edge in\n // the source strin\n if (string[0] === ':') {\n string = string.slice(1);\n }\n\n if (string[string.length - 1] === ':') {\n string = string.slice(0, -1);\n }\n\n parts = (function () {\n const ref = string.split(':');\n const results = [];\n\n for (let i = 0; i < ref.length; i++) {\n results.push(parseInt(ref[i], 16));\n }\n\n return results;\n })();\n\n return {\n parts: parts,\n zoneId: zoneId\n };\n }\n\n // A generic CIDR (Classless Inter-Domain Routing) RFC1518 range matcher.\n function matchCIDR (first, second, partSize, cidrBits) {\n if (first.length !== second.length) {\n throw new Error('ipaddr: cannot match CIDR for objects with different lengths');\n }\n\n let part = 0;\n let shift;\n\n while (cidrBits > 0) {\n shift = partSize - cidrBits;\n if (shift < 0) {\n shift = 0;\n }\n\n if (first[part] >> shift !== second[part] >> shift) {\n return false;\n }\n\n cidrBits -= partSize;\n part += 1;\n }\n\n return true;\n }\n\n function parseIntAuto (string) {\n // Hexadedimal base 16 (0x#)\n if (hexRegex.test(string)) {\n return parseInt(string, 16);\n }\n // While octal representation is discouraged by ECMAScript 3\n // and forbidden by ECMAScript 5, we silently allow it to\n // work only if the rest of the string has numbers less than 8.\n if (string[0] === '0' && !isNaN(parseInt(string[1], 10))) {\n if (octalRegex.test(string)) {\n return parseInt(string, 8);\n }\n throw new Error(`ipaddr: cannot parse ${string} as octal`);\n }\n // Always include the base 10 radix!\n return parseInt(string, 10);\n }\n\n function padPart (part, length) {\n while (part.length < length) {\n part = `0${part}`;\n }\n\n return part;\n }\n\n const ipaddr = {};\n\n // An IPv4 address (RFC791).\n ipaddr.IPv4 = (function () {\n // Constructs a new IPv4 address from an array of four octets\n // in network order (MSB first)\n // Verifies the input.\n function IPv4 (octets) {\n if (octets.length !== 4) {\n throw new Error('ipaddr: ipv4 octet count should be 4');\n }\n\n let i, octet;\n\n for (i = 0; i < octets.length; i++) {\n octet = octets[i];\n if (!((0 <= octet && octet <= 255))) {\n throw new Error('ipaddr: ipv4 octet should fit in 8 bits');\n }\n }\n\n this.octets = octets;\n }\n\n // Special IPv4 address ranges.\n // See also https://en.wikipedia.org/wiki/Reserved_IP_addresses\n IPv4.prototype.SpecialRanges = {\n unspecified: [[new IPv4([0, 0, 0, 0]), 8]],\n broadcast: [[new IPv4([255, 255, 255, 255]), 32]],\n // RFC3171\n multicast: [[new IPv4([224, 0, 0, 0]), 4]],\n // RFC3927\n linkLocal: [[new IPv4([169, 254, 0, 0]), 16]],\n // RFC5735\n loopback: [[new IPv4([127, 0, 0, 0]), 8]],\n // RFC6598\n carrierGradeNat: [[new IPv4([100, 64, 0, 0]), 10]],\n // RFC1918\n 'private': [\n [new IPv4([10, 0, 0, 0]), 8],\n [new IPv4([172, 16, 0, 0]), 12],\n [new IPv4([192, 168, 0, 0]), 16]\n ],\n // Reserved and testing-only ranges; RFCs 5735, 5737, 2544, 1700\n reserved: [\n [new IPv4([192, 0, 0, 0]), 24],\n [new IPv4([192, 0, 2, 0]), 24],\n [new IPv4([192, 88, 99, 0]), 24],\n [new IPv4([198, 18, 0, 0]), 15],\n [new IPv4([198, 51, 100, 0]), 24],\n [new IPv4([203, 0, 113, 0]), 24],\n [new IPv4([240, 0, 0, 0]), 4]\n ]\n };\n\n // The 'kind' method exists on both IPv4 and IPv6 classes.\n IPv4.prototype.kind = function () {\n return 'ipv4';\n };\n\n // Checks if this address matches other one within given CIDR range.\n IPv4.prototype.match = function (other, cidrRange) {\n let ref;\n if (cidrRange === undefined) {\n ref = other;\n other = ref[0];\n cidrRange = ref[1];\n }\n\n if (other.kind() !== 'ipv4') {\n throw new Error('ipaddr: cannot match ipv4 address with non-ipv4 one');\n }\n\n return matchCIDR(this.octets, other.octets, 8, cidrRange);\n };\n\n // returns a number of leading ones in IPv4 address, making sure that\n // the rest is a solid sequence of 0's (valid netmask)\n // returns either the CIDR length or null if mask is not valid\n IPv4.prototype.prefixLengthFromSubnetMask = function () {\n let cidr = 0;\n // non-zero encountered stop scanning for zeroes\n let stop = false;\n // number of zeroes in octet\n const zerotable = {\n 0: 8,\n 128: 7,\n 192: 6,\n 224: 5,\n 240: 4,\n 248: 3,\n 252: 2,\n 254: 1,\n 255: 0\n };\n let i, octet, zeros;\n\n for (i = 3; i >= 0; i -= 1) {\n octet = this.octets[i];\n if (octet in zerotable) {\n zeros = zerotable[octet];\n if (stop && zeros !== 0) {\n return null;\n }\n\n if (zeros !== 8) {\n stop = true;\n }\n\n cidr += zeros;\n } else {\n return null;\n }\n }\n\n return 32 - cidr;\n };\n\n // Checks if the address corresponds to one of the special ranges.\n IPv4.prototype.range = function () {\n return ipaddr.subnetMatch(this, this.SpecialRanges);\n };\n\n // Returns an array of byte-sized values in network order (MSB first)\n IPv4.prototype.toByteArray = function () {\n return this.octets.slice(0);\n };\n\n // Converts this IPv4 address to an IPv4-mapped IPv6 address.\n IPv4.prototype.toIPv4MappedAddress = function () {\n return ipaddr.IPv6.parse(`::ffff:${this.toString()}`);\n };\n\n // Symmetrical method strictly for aligning with the IPv6 methods.\n IPv4.prototype.toNormalizedString = function () {\n return this.toString();\n };\n\n // Returns the address in convenient, decimal-dotted format.\n IPv4.prototype.toString = function () {\n return this.octets.join('.');\n };\n\n return IPv4;\n })();\n\n // A utility function to return broadcast address given the IPv4 interface and prefix length in CIDR notation\n ipaddr.IPv4.broadcastAddressFromCIDR = function (string) {\n\n try {\n const cidr = this.parseCIDR(string);\n const ipInterfaceOctets = cidr[0].toByteArray();\n const subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray();\n const octets = [];\n let i = 0;\n while (i < 4) {\n // Broadcast address is bitwise OR between ip interface and inverted mask\n octets.push(parseInt(ipInterfaceOctets[i], 10) | parseInt(subnetMaskOctets[i], 10) ^ 255);\n i++;\n }\n\n return new this(octets);\n } catch (e) {\n throw new Error('ipaddr: the address does not have IPv4 CIDR format');\n }\n };\n\n // Checks if a given string is formatted like IPv4 address.\n ipaddr.IPv4.isIPv4 = function (string) {\n return this.parser(string) !== null;\n };\n\n // Checks if a given string is a valid IPv4 address.\n ipaddr.IPv4.isValid = function (string) {\n try {\n new this(this.parser(string));\n return true;\n } catch (e) {\n return false;\n }\n };\n\n // Checks if a given string is a full four-part IPv4 Address.\n ipaddr.IPv4.isValidFourPartDecimal = function (string) {\n if (ipaddr.IPv4.isValid(string) && string.match(/^(0|[1-9]\\d*)(\\.(0|[1-9]\\d*)){3}$/)) {\n return true;\n } else {\n return false;\n }\n };\n\n // A utility function to return network address given the IPv4 interface and prefix length in CIDR notation\n ipaddr.IPv4.networkAddressFromCIDR = function (string) {\n let cidr, i, ipInterfaceOctets, octets, subnetMaskOctets;\n\n try {\n cidr = this.parseCIDR(string);\n ipInterfaceOctets = cidr[0].toByteArray();\n subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray();\n octets = [];\n i = 0;\n while (i < 4) {\n // Network address is bitwise AND between ip interface and mask\n octets.push(parseInt(ipInterfaceOctets[i], 10) & parseInt(subnetMaskOctets[i], 10));\n i++;\n }\n\n return new this(octets);\n } catch (e) {\n throw new Error('ipaddr: the address does not have IPv4 CIDR format');\n }\n };\n\n // Tries to parse and validate a string with IPv4 address.\n // Throws an error if it fails.\n ipaddr.IPv4.parse = function (string) {\n const parts = this.parser(string);\n\n if (parts === null) {\n throw new Error('ipaddr: string is not formatted like an IPv4 Address');\n }\n\n return new this(parts);\n };\n\n // Parses the string as an IPv4 Address with CIDR Notation.\n ipaddr.IPv4.parseCIDR = function (string) {\n let match;\n\n if ((match = string.match(/^(.+)\\/(\\d+)$/))) {\n const maskLength = parseInt(match[2]);\n if (maskLength >= 0 && maskLength <= 32) {\n const parsed = [this.parse(match[1]), maskLength];\n Object.defineProperty(parsed, 'toString', {\n value: function () {\n return this.join('/');\n }\n });\n return parsed;\n }\n }\n\n throw new Error('ipaddr: string is not formatted like an IPv4 CIDR range');\n };\n\n // Classful variants (like a.b, where a is an octet, and b is a 24-bit\n // value representing last three octets; this corresponds to a class C\n // address) are omitted due to classless nature of modern Internet.\n ipaddr.IPv4.parser = function (string) {\n let match, part, value;\n\n // parseInt recognizes all that octal & hexadecimal weirdness for us\n if ((match = string.match(ipv4Regexes.fourOctet))) {\n return (function () {\n const ref = match.slice(1, 6);\n const results = [];\n\n for (let i = 0; i < ref.length; i++) {\n part = ref[i];\n results.push(parseIntAuto(part));\n }\n\n return results;\n })();\n } else if ((match = string.match(ipv4Regexes.longValue))) {\n value = parseIntAuto(match[1]);\n if (value > 0xffffffff || value < 0) {\n throw new Error('ipaddr: address outside defined range');\n }\n\n return ((function () {\n const results = [];\n let shift;\n\n for (shift = 0; shift <= 24; shift += 8) {\n results.push((value >> shift) & 0xff);\n }\n\n return results;\n })()).reverse();\n } else if ((match = string.match(ipv4Regexes.twoOctet))) {\n return (function () {\n const ref = match.slice(1, 4);\n const results = [];\n\n value = parseIntAuto(ref[1]);\n if (value > 0xffffff || value < 0) {\n throw new Error('ipaddr: address outside defined range');\n }\n\n results.push(parseIntAuto(ref[0]));\n results.push((value >> 16) & 0xff);\n results.push((value >> 8) & 0xff);\n results.push( value & 0xff);\n\n return results;\n })();\n } else if ((match = string.match(ipv4Regexes.threeOctet))) {\n return (function () {\n const ref = match.slice(1, 5);\n const results = [];\n\n value = parseIntAuto(ref[2]);\n if (value > 0xffff || value < 0) {\n throw new Error('ipaddr: address outside defined range');\n }\n\n results.push(parseIntAuto(ref[0]));\n results.push(parseIntAuto(ref[1]));\n results.push((value >> 8) & 0xff);\n results.push( value & 0xff);\n\n return results;\n })();\n } else {\n return null;\n }\n };\n\n // A utility function to return subnet mask in IPv4 format given the prefix length\n ipaddr.IPv4.subnetMaskFromPrefixLength = function (prefix) {\n prefix = parseInt(prefix);\n if (prefix < 0 || prefix > 32) {\n throw new Error('ipaddr: invalid IPv4 prefix length');\n }\n\n const octets = [0, 0, 0, 0];\n let j = 0;\n const filledOctetCount = Math.floor(prefix / 8);\n\n while (j < filledOctetCount) {\n octets[j] = 255;\n j++;\n }\n\n if (filledOctetCount < 4) {\n octets[filledOctetCount] = Math.pow(2, prefix % 8) - 1 << 8 - (prefix % 8);\n }\n\n return new this(octets);\n };\n\n // An IPv6 address (RFC2460)\n ipaddr.IPv6 = (function () {\n // Constructs an IPv6 address from an array of eight 16 - bit parts\n // or sixteen 8 - bit parts in network order(MSB first).\n // Throws an error if the input is invalid.\n function IPv6 (parts, zoneId) {\n let i, part;\n\n if (parts.length === 16) {\n this.parts = [];\n for (i = 0; i <= 14; i += 2) {\n this.parts.push((parts[i] << 8) | parts[i + 1]);\n }\n } else if (parts.length === 8) {\n this.parts = parts;\n } else {\n throw new Error('ipaddr: ipv6 part count should be 8 or 16');\n }\n\n for (i = 0; i < this.parts.length; i++) {\n part = this.parts[i];\n if (!((0 <= part && part <= 0xffff))) {\n throw new Error('ipaddr: ipv6 part should fit in 16 bits');\n }\n }\n\n if (zoneId) {\n this.zoneId = zoneId;\n }\n }\n\n // Special IPv6 ranges\n IPv6.prototype.SpecialRanges = {\n // RFC4291, here and after\n unspecified: [new IPv6([0, 0, 0, 0, 0, 0, 0, 0]), 128],\n linkLocal: [new IPv6([0xfe80, 0, 0, 0, 0, 0, 0, 0]), 10],\n multicast: [new IPv6([0xff00, 0, 0, 0, 0, 0, 0, 0]), 8],\n loopback: [new IPv6([0, 0, 0, 0, 0, 0, 0, 1]), 128],\n uniqueLocal: [new IPv6([0xfc00, 0, 0, 0, 0, 0, 0, 0]), 7],\n ipv4Mapped: [new IPv6([0, 0, 0, 0, 0, 0xffff, 0, 0]), 96],\n // RFC6145\n rfc6145: [new IPv6([0, 0, 0, 0, 0xffff, 0, 0, 0]), 96],\n // RFC6052\n rfc6052: [new IPv6([0x64, 0xff9b, 0, 0, 0, 0, 0, 0]), 96],\n // RFC3056\n '6to4': [new IPv6([0x2002, 0, 0, 0, 0, 0, 0, 0]), 16],\n // RFC6052, RFC6146\n teredo: [new IPv6([0x2001, 0, 0, 0, 0, 0, 0, 0]), 32],\n // RFC4291\n reserved: [[new IPv6([0x2001, 0xdb8, 0, 0, 0, 0, 0, 0]), 32]],\n benchmarking: [new IPv6([0x2001, 0x2, 0, 0, 0, 0, 0, 0]), 48],\n amt: [new IPv6([0x2001, 0x3, 0, 0, 0, 0, 0, 0]), 32],\n as112v6: [new IPv6([0x2001, 0x4, 0x112, 0, 0, 0, 0, 0]), 48],\n deprecated: [new IPv6([0x2001, 0x10, 0, 0, 0, 0, 0, 0]), 28],\n orchid2: [new IPv6([0x2001, 0x20, 0, 0, 0, 0, 0, 0]), 28]\n };\n\n // Checks if this address is an IPv4-mapped IPv6 address.\n IPv6.prototype.isIPv4MappedAddress = function () {\n return this.range() === 'ipv4Mapped';\n };\n\n // The 'kind' method exists on both IPv4 and IPv6 classes.\n IPv6.prototype.kind = function () {\n return 'ipv6';\n };\n\n // Checks if this address matches other one within given CIDR range.\n IPv6.prototype.match = function (other, cidrRange) {\n let ref;\n\n if (cidrRange === undefined) {\n ref = other;\n other = ref[0];\n cidrRange = ref[1];\n }\n\n if (other.kind() !== 'ipv6') {\n throw new Error('ipaddr: cannot match ipv6 address with non-ipv6 one');\n }\n\n return matchCIDR(this.parts, other.parts, 16, cidrRange);\n };\n\n // returns a number of leading ones in IPv6 address, making sure that\n // the rest is a solid sequence of 0's (valid netmask)\n // returns either the CIDR length or null if mask is not valid\n IPv6.prototype.prefixLengthFromSubnetMask = function () {\n let cidr = 0;\n // non-zero encountered stop scanning for zeroes\n let stop = false;\n // number of zeroes in octet\n const zerotable = {\n 0: 16,\n 32768: 15,\n 49152: 14,\n 57344: 13,\n 61440: 12,\n 63488: 11,\n 64512: 10,\n 65024: 9,\n 65280: 8,\n 65408: 7,\n 65472: 6,\n 65504: 5,\n 65520: 4,\n 65528: 3,\n 65532: 2,\n 65534: 1,\n 65535: 0\n };\n let part, zeros;\n\n for (let i = 7; i >= 0; i -= 1) {\n part = this.parts[i];\n if (part in zerotable) {\n zeros = zerotable[part];\n if (stop && zeros !== 0) {\n return null;\n }\n\n if (zeros !== 16) {\n stop = true;\n }\n\n cidr += zeros;\n } else {\n return null;\n }\n }\n\n return 128 - cidr;\n };\n\n\n // Checks if the address corresponds to one of the special ranges.\n IPv6.prototype.range = function () {\n return ipaddr.subnetMatch(this, this.SpecialRanges);\n };\n\n // Returns an array of byte-sized values in network order (MSB first)\n IPv6.prototype.toByteArray = function () {\n let part;\n const bytes = [];\n const ref = this.parts;\n for (let i = 0; i < ref.length; i++) {\n part = ref[i];\n bytes.push(part >> 8);\n bytes.push(part & 0xff);\n }\n\n return bytes;\n };\n\n // Returns the address in expanded format with all zeroes included, like\n // 2001:0db8:0008:0066:0000:0000:0000:0001\n IPv6.prototype.toFixedLengthString = function () {\n const addr = ((function () {\n const results = [];\n for (let i = 0; i < this.parts.length; i++) {\n results.push(padPart(this.parts[i].toString(16), 4));\n }\n\n return results;\n }).call(this)).join(':');\n\n let suffix = '';\n\n if (this.zoneId) {\n suffix = `%${this.zoneId}`;\n }\n\n return addr + suffix;\n };\n\n // Converts this address to IPv4 address if it is an IPv4-mapped IPv6 address.\n // Throws an error otherwise.\n IPv6.prototype.toIPv4Address = function () {\n if (!this.isIPv4MappedAddress()) {\n throw new Error('ipaddr: trying to convert a generic ipv6 address to ipv4');\n }\n\n const ref = this.parts.slice(-2);\n const high = ref[0];\n const low = ref[1];\n\n return new ipaddr.IPv4([high >> 8, high & 0xff, low >> 8, low & 0xff]);\n };\n\n // Returns the address in expanded format with all zeroes included, like\n // 2001:db8:8:66:0:0:0:1\n //\n // Deprecated: use toFixedLengthString() instead.\n IPv6.prototype.toNormalizedString = function () {\n const addr = ((function () {\n const results = [];\n\n for (let i = 0; i < this.parts.length; i++) {\n results.push(this.parts[i].toString(16));\n }\n\n return results;\n }).call(this)).join(':');\n\n let suffix = '';\n\n if (this.zoneId) {\n suffix = `%${this.zoneId}`;\n }\n\n return addr + suffix;\n };\n\n // Returns the address in compact, human-readable format like\n // 2001:db8:8:66::1\n // in line with RFC 5952 (see https://tools.ietf.org/html/rfc5952#section-4)\n IPv6.prototype.toRFC5952String = function () {\n const regex = /((^|:)(0(:|$)){2,})/g;\n const string = this.toNormalizedString();\n let bestMatchIndex = 0;\n let bestMatchLength = -1;\n let match;\n\n while ((match = regex.exec(string))) {\n if (match[0].length > bestMatchLength) {\n bestMatchIndex = match.index;\n bestMatchLength = match[0].length;\n }\n }\n\n if (bestMatchLength < 0) {\n return string;\n }\n\n return `${string.substring(0, bestMatchIndex)}::${string.substring(bestMatchIndex + bestMatchLength)}`;\n };\n\n // Returns the address in compact, human-readable format like\n // 2001:db8:8:66::1\n // Calls toRFC5952String under the hood.\n IPv6.prototype.toString = function () {\n return this.toRFC5952String();\n };\n\n return IPv6;\n\n })();\n\n // A utility function to return broadcast address given the IPv6 interface and prefix length in CIDR notation\n ipaddr.IPv6.broadcastAddressFromCIDR = function (string) {\n try {\n const cidr = this.parseCIDR(string);\n const ipInterfaceOctets = cidr[0].toByteArray();\n const subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray();\n const octets = [];\n let i = 0;\n while (i < 16) {\n // Broadcast address is bitwise OR between ip interface and inverted mask\n octets.push(parseInt(ipInterfaceOctets[i], 10) | parseInt(subnetMaskOctets[i], 10) ^ 255);\n i++;\n }\n\n return new this(octets);\n } catch (e) {\n throw new Error(`ipaddr: the address does not have IPv6 CIDR format (${e})`);\n }\n };\n\n // Checks if a given string is formatted like IPv6 address.\n ipaddr.IPv6.isIPv6 = function (string) {\n return this.parser(string) !== null;\n };\n\n // Checks to see if string is a valid IPv6 Address\n ipaddr.IPv6.isValid = function (string) {\n\n // Since IPv6.isValid is always called first, this shortcut\n // provides a substantial performance gain.\n if (typeof string === 'string' && string.indexOf(':') === -1) {\n return false;\n }\n\n try {\n const addr = this.parser(string);\n new this(addr.parts, addr.zoneId);\n return true;\n } catch (e) {\n return false;\n }\n };\n\n // A utility function to return network address given the IPv6 interface and prefix length in CIDR notation\n ipaddr.IPv6.networkAddressFromCIDR = function (string) {\n let cidr, i, ipInterfaceOctets, octets, subnetMaskOctets;\n\n try {\n cidr = this.parseCIDR(string);\n ipInterfaceOctets = cidr[0].toByteArray();\n subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray();\n octets = [];\n i = 0;\n while (i < 16) {\n // Network address is bitwise AND between ip interface and mask\n octets.push(parseInt(ipInterfaceOctets[i], 10) & parseInt(subnetMaskOctets[i], 10));\n i++;\n }\n\n return new this(octets);\n } catch (e) {\n throw new Error(`ipaddr: the address does not have IPv6 CIDR format (${e})`);\n }\n };\n\n // Tries to parse and validate a string with IPv6 address.\n // Throws an error if it fails.\n ipaddr.IPv6.parse = function (string) {\n const addr = this.parser(string);\n\n if (addr.parts === null) {\n throw new Error('ipaddr: string is not formatted like an IPv6 Address');\n }\n\n return new this(addr.parts, addr.zoneId);\n };\n\n ipaddr.IPv6.parseCIDR = function (string) {\n let maskLength, match, parsed;\n\n if ((match = string.match(/^(.+)\\/(\\d+)$/))) {\n maskLength = parseInt(match[2]);\n if (maskLength >= 0 && maskLength <= 128) {\n parsed = [this.parse(match[1]), maskLength];\n Object.defineProperty(parsed, 'toString', {\n value: function () {\n return this.join('/');\n }\n });\n return parsed;\n }\n }\n\n throw new Error('ipaddr: string is not formatted like an IPv6 CIDR range');\n };\n\n // Parse an IPv6 address.\n ipaddr.IPv6.parser = function (string) {\n let addr, i, match, octet, octets, zoneId;\n\n if ((match = string.match(ipv6Regexes.deprecatedTransitional))) {\n return this.parser(`::ffff:${match[1]}`);\n }\n if (ipv6Regexes.native.test(string)) {\n return expandIPv6(string, 8);\n }\n if ((match = string.match(ipv6Regexes.transitional))) {\n zoneId = match[6] || '';\n addr = expandIPv6(match[1].slice(0, -1) + zoneId, 6);\n if (addr.parts) {\n octets = [\n parseInt(match[2]),\n parseInt(match[3]),\n parseInt(match[4]),\n parseInt(match[5])\n ];\n for (i = 0; i < octets.length; i++) {\n octet = octets[i];\n if (!((0 <= octet && octet <= 255))) {\n return null;\n }\n }\n\n addr.parts.push(octets[0] << 8 | octets[1]);\n addr.parts.push(octets[2] << 8 | octets[3]);\n return {\n parts: addr.parts,\n zoneId: addr.zoneId\n };\n }\n }\n\n return null;\n };\n\n // A utility function to return subnet mask in IPv6 format given the prefix length\n ipaddr.IPv6.subnetMaskFromPrefixLength = function (prefix) {\n prefix = parseInt(prefix);\n if (prefix < 0 || prefix > 128) {\n throw new Error('ipaddr: invalid IPv6 prefix length');\n }\n\n const octets = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n let j = 0;\n const filledOctetCount = Math.floor(prefix / 8);\n\n while (j < filledOctetCount) {\n octets[j] = 255;\n j++;\n }\n\n if (filledOctetCount < 16) {\n octets[filledOctetCount] = Math.pow(2, prefix % 8) - 1 << 8 - (prefix % 8);\n }\n\n return new this(octets);\n };\n\n // Try to parse an array in network order (MSB first) for IPv4 and IPv6\n ipaddr.fromByteArray = function (bytes) {\n const length = bytes.length;\n\n if (length === 4) {\n return new ipaddr.IPv4(bytes);\n } else if (length === 16) {\n return new ipaddr.IPv6(bytes);\n } else {\n throw new Error('ipaddr: the binary input is neither an IPv6 nor IPv4 address');\n }\n };\n\n // Checks if the address is valid IP address\n ipaddr.isValid = function (string) {\n return ipaddr.IPv6.isValid(string) || ipaddr.IPv4.isValid(string);\n };\n\n\n // Attempts to parse an IP Address, first through IPv6 then IPv4.\n // Throws an error if it could not be parsed.\n ipaddr.parse = function (string) {\n if (ipaddr.IPv6.isValid(string)) {\n return ipaddr.IPv6.parse(string);\n } else if (ipaddr.IPv4.isValid(string)) {\n return ipaddr.IPv4.parse(string);\n } else {\n throw new Error('ipaddr: the address has neither IPv6 nor IPv4 format');\n }\n };\n\n // Attempt to parse CIDR notation, first through IPv6 then IPv4.\n // Throws an error if it could not be parsed.\n ipaddr.parseCIDR = function (string) {\n try {\n return ipaddr.IPv6.parseCIDR(string);\n } catch (e) {\n try {\n return ipaddr.IPv4.parseCIDR(string);\n } catch (e2) {\n throw new Error('ipaddr: the address has neither IPv6 nor IPv4 CIDR format');\n }\n }\n };\n\n // Parse an address and return plain IPv4 address if it is an IPv4-mapped address\n ipaddr.process = function (string) {\n const addr = this.parse(string);\n\n if (addr.kind() === 'ipv6' && addr.isIPv4MappedAddress()) {\n return addr.toIPv4Address();\n } else {\n return addr;\n }\n };\n\n // An utility function to ease named range matching. See examples below.\n // rangeList can contain both IPv4 and IPv6 subnet entries and will not throw errors\n // on matching IPv4 addresses to IPv6 ranges or vice versa.\n ipaddr.subnetMatch = function (address, rangeList, defaultName) {\n let i, rangeName, rangeSubnets, subnet;\n\n if (defaultName === undefined || defaultName === null) {\n defaultName = 'unicast';\n }\n\n for (rangeName in rangeList) {\n if (Object.prototype.hasOwnProperty.call(rangeList, rangeName)) {\n rangeSubnets = rangeList[rangeName];\n // ECMA5 Array.isArray isn't available everywhere\n if (rangeSubnets[0] && !(rangeSubnets[0] instanceof Array)) {\n rangeSubnets = [rangeSubnets];\n }\n\n for (i = 0; i < rangeSubnets.length; i++) {\n subnet = rangeSubnets[i];\n if (address.kind() === subnet[0].kind() && address.match.apply(address, subnet)) {\n return rangeName;\n }\n }\n }\n }\n\n return defaultName;\n };\n\n // Export for both the CommonJS and browser-like environment\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = ipaddr;\n\n } else {\n root.ipaddr = ipaddr;\n }\n\n}(this));\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7F]/; // Note: U+007F DEL is excluded too.\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, callback) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = callback(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {String} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(domain, callback) {\n\tconst parts = domain.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tdomain = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tdomain = domain.replace(regexSeparators, '\\x2E');\n\tconst labels = domain.split('.');\n\tconst encoded = map(labels, callback).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = codePoints => String.fromCodePoint(...codePoints);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint >= 0x30 && codePoint < 0x3A) {\n\t\treturn 26 + (codePoint - 0x30);\n\t}\n\tif (codePoint >= 0x41 && codePoint < 0x5B) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint >= 0x61 && codePoint < 0x7B) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tconst oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\t\t\tif (digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tconst inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tconst basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue === n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.3.1',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport { ucs2decode, ucs2encode, decode, encode, toASCII, toUnicode };\nexport default punycode;\n","const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nconst rotr32L = (h, _l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nexport { fromBig, split, toBig, shrSH, shrSL, rotrSH, rotrSL, rotrBH, rotrBL, rotr32H, rotr32L, rotlSH, rotlSL, rotlBH, rotlBL, add, add3L, add3H, add4L, add4H, add5H, add5L, };\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","import { SHA2 } from './_sha2.js';\nimport u64 from './_u64.js';\nimport { wrapConstructor } from './utils.js';\n// Round contants (first 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409):\n// prettier-ignore\nconst [SHA512_Kh, SHA512_Kl] = /* @__PURE__ */ (() => u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\n// Temporary buffer, not used to store anything between runs\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\nexport class SHA512 extends SHA2 {\n constructor() {\n super(128, 64, 16, false);\n // We cannot use array here since array allows indexing by variable which means optimizer/compiler cannot use registers.\n // Also looks cleaner and easier to verify with spec.\n // Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x6a09e667 | 0;\n this.Al = 0xf3bcc908 | 0;\n this.Bh = 0xbb67ae85 | 0;\n this.Bl = 0x84caa73b | 0;\n this.Ch = 0x3c6ef372 | 0;\n this.Cl = 0xfe94f82b | 0;\n this.Dh = 0xa54ff53a | 0;\n this.Dl = 0x5f1d36f1 | 0;\n this.Eh = 0x510e527f | 0;\n this.El = 0xade682d1 | 0;\n this.Fh = 0x9b05688c | 0;\n this.Fl = 0x2b3e6c1f | 0;\n this.Gh = 0x1f83d9ab | 0;\n this.Gl = 0xfb41bd6b | 0;\n this.Hh = 0x5be0cd19 | 0;\n this.Hl = 0x137e2179 | 0;\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n SHA512_W_H.fill(0);\n SHA512_W_L.fill(0);\n }\n destroy() {\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\nclass SHA512_224 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x8c3d37c8 | 0;\n this.Al = 0x19544da2 | 0;\n this.Bh = 0x73e19966 | 0;\n this.Bl = 0x89dcd4d6 | 0;\n this.Ch = 0x1dfab7ae | 0;\n this.Cl = 0x32ff9c82 | 0;\n this.Dh = 0x679dd514 | 0;\n this.Dl = 0x582f9fcf | 0;\n this.Eh = 0x0f6d2b69 | 0;\n this.El = 0x7bd44da8 | 0;\n this.Fh = 0x77e36f73 | 0;\n this.Fl = 0x04c48942 | 0;\n this.Gh = 0x3f9d85a8 | 0;\n this.Gl = 0x6a1d36c8 | 0;\n this.Hh = 0x1112e6ad | 0;\n this.Hl = 0x91d692a1 | 0;\n this.outputLen = 28;\n }\n}\nclass SHA512_256 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x22312194 | 0;\n this.Al = 0xfc2bf72c | 0;\n this.Bh = 0x9f555fa3 | 0;\n this.Bl = 0xc84c64c2 | 0;\n this.Ch = 0x2393b86b | 0;\n this.Cl = 0x6f53b151 | 0;\n this.Dh = 0x96387719 | 0;\n this.Dl = 0x5940eabd | 0;\n this.Eh = 0x96283ee2 | 0;\n this.El = 0xa88effe3 | 0;\n this.Fh = 0xbe5e1e25 | 0;\n this.Fl = 0x53863992 | 0;\n this.Gh = 0x2b0199fc | 0;\n this.Gl = 0x2c85b8aa | 0;\n this.Hh = 0x0eb72ddc | 0;\n this.Hl = 0x81c52ca2 | 0;\n this.outputLen = 32;\n }\n}\nclass SHA384 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0xcbbb9d5d | 0;\n this.Al = 0xc1059ed8 | 0;\n this.Bh = 0x629a292a | 0;\n this.Bl = 0x367cd507 | 0;\n this.Ch = 0x9159015a | 0;\n this.Cl = 0x3070dd17 | 0;\n this.Dh = 0x152fecd8 | 0;\n this.Dl = 0xf70e5939 | 0;\n this.Eh = 0x67332667 | 0;\n this.El = 0xffc00b31 | 0;\n this.Fh = 0x8eb44a87 | 0;\n this.Fl = 0x68581511 | 0;\n this.Gh = 0xdb0c2e0d | 0;\n this.Gl = 0x64f98fa7 | 0;\n this.Hh = 0x47b5481d | 0;\n this.Hl = 0xbefa4fa4 | 0;\n this.outputLen = 48;\n }\n}\nexport const sha512 = /* @__PURE__ */ wrapConstructor(() => new SHA512());\nexport const sha512_224 = /* @__PURE__ */ wrapConstructor(() => new SHA512_224());\nexport const sha512_256 = /* @__PURE__ */ wrapConstructor(() => new SHA512_256());\nexport const sha384 = /* @__PURE__ */ wrapConstructor(() => new SHA384());\n//# sourceMappingURL=sha512.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// 100 lines of code in the file are duplicated from noble-hashes (utils).\n// This is OK: `abstract` directory does not use noble-hashes.\n// User may opt-in into using different hashing library. This way, noble-hashes\n// won't be included into their bundle.\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nexport function isBytes(a) {\n return (a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));\n}\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n if (!isBytes(bytes))\n throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\nexport function numberToHexUnpadded(num) {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n}\nexport function hexToNumber(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n // Big Endian\n return BigInt(hex === '' ? '0' : `0x${hex}`);\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, _A: 65, _F: 70, _a: 97, _f: 102 };\nfunction asciiToBase16(char) {\n if (char >= asciis._0 && char <= asciis._9)\n return char - asciis._0;\n if (char >= asciis._A && char <= asciis._F)\n return char - (asciis._A - 10);\n if (char >= asciis._a && char <= asciis._f)\n return char - (asciis._a - 10);\n return;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2;\n }\n return array;\n}\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\nexport function bytesToNumberLE(bytes) {\n if (!isBytes(bytes))\n throw new Error('Uint8Array expected');\n return hexToNumber(bytesToHex(Uint8Array.from(bytes).reverse()));\n}\nexport function numberToBytesBE(n, len) {\n return hexToBytes(n.toString(16).padStart(len * 2, '0'));\n}\nexport function numberToBytesLE(n, len) {\n return numberToBytesBE(n, len).reverse();\n}\n// Unpadded, rarely used\nexport function numberToVarBytesBE(n) {\n return hexToBytes(numberToHexUnpadded(n));\n}\n/**\n * Takes hex string or Uint8Array, converts to Uint8Array.\n * Validates output length.\n * Will throw error for other types.\n * @param title descriptive title for an error e.g. 'private key'\n * @param hex hex string or Uint8Array\n * @param expectedLength optional, will compare to result array's length\n * @returns\n */\nexport function ensureBytes(title, hex, expectedLength) {\n let res;\n if (typeof hex === 'string') {\n try {\n res = hexToBytes(hex);\n }\n catch (e) {\n throw new Error(`${title} must be valid hex string, got \"${hex}\". Cause: ${e}`);\n }\n }\n else if (isBytes(hex)) {\n // Uint8Array.from() instead of hash.slice() because node.js Buffer\n // is instance of Uint8Array, and its slice() creates **mutable** copy\n res = Uint8Array.from(hex);\n }\n else {\n throw new Error(`${title} must be hex string or Uint8Array`);\n }\n const len = res.length;\n if (typeof expectedLength === 'number' && len !== expectedLength)\n throw new Error(`${title} expected ${expectedLength} bytes, got ${len}`);\n return res;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n if (!isBytes(a))\n throw new Error('Uint8Array expected');\n sum += a.length;\n }\n let res = new Uint8Array(sum);\n let pad = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n// Compares 2 u8a-s in kinda constant time\nexport function equalBytes(a, b) {\n if (a.length !== b.length)\n return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++)\n diff |= a[i] ^ b[i];\n return diff === 0;\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n// Bit operations\n/**\n * Calculates amount of bits in a bigint.\n * Same as `n.toString(2).length`\n */\nexport function bitLen(n) {\n let len;\n for (len = 0; n > _0n; n >>= _1n, len += 1)\n ;\n return len;\n}\n/**\n * Gets single bit at position.\n * NOTE: first bit position is 0 (same as arrays)\n * Same as `!!+Array.from(n.toString(2)).reverse()[pos]`\n */\nexport function bitGet(n, pos) {\n return (n >> BigInt(pos)) & _1n;\n}\n/**\n * Sets single bit at position.\n */\nexport const bitSet = (n, pos, value) => {\n return n | ((value ? _1n : _0n) << BigInt(pos));\n};\n/**\n * Calculate mask for N bits. Not using ** operator with bigints because of old engines.\n * Same as BigInt(`0b${Array(i).fill('1').join('')}`)\n */\nexport const bitMask = (n) => (_2n << BigInt(n - 1)) - _1n;\n// DRBG\nconst u8n = (data) => new Uint8Array(data); // creates Uint8Array\nconst u8fr = (arr) => Uint8Array.from(arr); // another shortcut\n/**\n * Minimal HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n * @returns function that will call DRBG until 2nd arg returns something meaningful\n * @example\n * const drbg = createHmacDRBG<Key>(32, 32, hmac);\n * drbg(seed, bytesToKey); // bytesToKey must return Key or undefined\n */\nexport function createHmacDrbg(hashLen, qByteLen, hmacFn) {\n if (typeof hashLen !== 'number' || hashLen < 2)\n throw new Error('hashLen must be a number');\n if (typeof qByteLen !== 'number' || qByteLen < 2)\n throw new Error('qByteLen must be a number');\n if (typeof hmacFn !== 'function')\n throw new Error('hmacFn must be a function');\n // Step B, Step C: set hashLen to 8*ceil(hlen/8)\n let v = u8n(hashLen); // Minimal non-full-spec HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n let k = u8n(hashLen); // Steps B and C of RFC6979 3.2: set hashLen, in our case always same\n let i = 0; // Iterations counter, will throw when over 1000\n const reset = () => {\n v.fill(1);\n k.fill(0);\n i = 0;\n };\n const h = (...b) => hmacFn(k, v, ...b); // hmac(k)(v, ...values)\n const reseed = (seed = u8n()) => {\n // HMAC-DRBG reseed() function. Steps D-G\n k = h(u8fr([0x00]), seed); // k = hmac(k || v || 0x00 || seed)\n v = h(); // v = hmac(k || v)\n if (seed.length === 0)\n return;\n k = h(u8fr([0x01]), seed); // k = hmac(k || v || 0x01 || seed)\n v = h(); // v = hmac(k || v)\n };\n const gen = () => {\n // HMAC-DRBG generate() function\n if (i++ >= 1000)\n throw new Error('drbg: tried 1000 values');\n let len = 0;\n const out = [];\n while (len < qByteLen) {\n v = h();\n const sl = v.slice();\n out.push(sl);\n len += v.length;\n }\n return concatBytes(...out);\n };\n const genUntil = (seed, pred) => {\n reset();\n reseed(seed); // Steps D-G\n let res = undefined; // Step H: grind until k is in [1..n-1]\n while (!(res = pred(gen())))\n reseed();\n reset();\n return res;\n };\n return genUntil;\n}\n// Validating curves and fields\nconst validatorFns = {\n bigint: (val) => typeof val === 'bigint',\n function: (val) => typeof val === 'function',\n boolean: (val) => typeof val === 'boolean',\n string: (val) => typeof val === 'string',\n stringOrUint8Array: (val) => typeof val === 'string' || isBytes(val),\n isSafeInteger: (val) => Number.isSafeInteger(val),\n array: (val) => Array.isArray(val),\n field: (val, object) => object.Fp.isValid(val),\n hash: (val) => typeof val === 'function' && Number.isSafeInteger(val.outputLen),\n};\n// type Record<K extends string | number | symbol, T> = { [P in K]: T; }\nexport function validateObject(object, validators, optValidators = {}) {\n const checkField = (fieldName, type, isOptional) => {\n const checkVal = validatorFns[type];\n if (typeof checkVal !== 'function')\n throw new Error(`Invalid validator \"${type}\", expected function`);\n const val = object[fieldName];\n if (isOptional && val === undefined)\n return;\n if (!checkVal(val, object)) {\n throw new Error(`Invalid param ${String(fieldName)}=${val} (${typeof val}), expected ${type}`);\n }\n };\n for (const [fieldName, type] of Object.entries(validators))\n checkField(fieldName, type, false);\n for (const [fieldName, type] of Object.entries(optValidators))\n checkField(fieldName, type, true);\n return object;\n}\n// validate type tests\n// const o: { a: number; b: number; c: number } = { a: 1, b: 5, c: 6 };\n// const z0 = validateObject(o, { a: 'isSafeInteger' }, { c: 'bigint' }); // Ok!\n// // Should fail type-check\n// const z1 = validateObject(o, { a: 'tmp' }, { c: 'zz' });\n// const z2 = validateObject(o, { a: 'isSafeInteger' }, { c: 'zz' });\n// const z3 = validateObject(o, { test: 'boolean', z: 'bug' });\n// const z4 = validateObject(o, { a: 'boolean', z: 'bug' });\n//# sourceMappingURL=utils.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Utilities for modular arithmetics and finite fields\nimport { bitMask, numberToBytesBE, numberToBytesLE, bytesToNumberBE, bytesToNumberLE, ensureBytes, validateObject, } from './utils.js';\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3);\n// prettier-ignore\nconst _4n = BigInt(4), _5n = BigInt(5), _8n = BigInt(8);\n// prettier-ignore\nconst _9n = BigInt(9), _16n = BigInt(16);\n// Calculates a modulo b\nexport function mod(a, b) {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\n/**\n * Efficiently raise num to power and do modular division.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n * @example\n * pow(2n, 6n, 11n) // 64n % 11n == 9n\n */\n// TODO: use field version && remove\nexport function pow(num, power, modulo) {\n if (modulo <= _0n || power < _0n)\n throw new Error('Expected power/modulo > 0');\n if (modulo === _1n)\n return _0n;\n let res = _1n;\n while (power > _0n) {\n if (power & _1n)\n res = (res * num) % modulo;\n num = (num * num) % modulo;\n power >>= _1n;\n }\n return res;\n}\n// Does x ^ (2 ^ power) mod p. pow2(30, 4) == 30 ^ (2 ^ 4)\nexport function pow2(x, power, modulo) {\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= modulo;\n }\n return res;\n}\n// Inverses number over modulo\nexport function invert(number, modulo) {\n if (number === _0n || modulo <= _0n) {\n throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n }\n // Euclidean GCD https://brilliant.org/wiki/extended-euclidean-algorithm/\n // Fermat's little theorem \"CT-like\" version inv(n) = n^(m-2) mod m is 30x slower.\n let a = mod(number, modulo);\n let b = modulo;\n // prettier-ignore\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n // JIT applies optimization if those two lines follow each other\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n // prettier-ignore\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n)\n throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\n/**\n * Tonelli-Shanks square root search algorithm.\n * 1. https://eprint.iacr.org/2012/685.pdf (page 12)\n * 2. Square Roots from 1; 24, 51, 10 to Dan Shanks\n * Will start an infinite loop if field order P is not prime.\n * @param P field order\n * @returns function that takes field Fp (created from P) and number n\n */\nexport function tonelliShanks(P) {\n // Legendre constant: used to calculate Legendre symbol (a | p),\n // which denotes the value of a^((p-1)/2) (mod p).\n // (a | p) ≡ 1 if a is a square (mod p)\n // (a | p) ≡ -1 if a is not a square (mod p)\n // (a | p) ≡ 0 if a ≡ 0 (mod p)\n const legendreC = (P - _1n) / _2n;\n let Q, S, Z;\n // Step 1: By factoring out powers of 2 from p - 1,\n // find q and s such that p - 1 = q*(2^s) with q odd\n for (Q = P - _1n, S = 0; Q % _2n === _0n; Q /= _2n, S++)\n ;\n // Step 2: Select a non-square z such that (z | p) ≡ -1 and set c ≡ zq\n for (Z = _2n; Z < P && pow(Z, legendreC, P) !== P - _1n; Z++)\n ;\n // Fast-path\n if (S === 1) {\n const p1div4 = (P + _1n) / _4n;\n return function tonelliFast(Fp, n) {\n const root = Fp.pow(n, p1div4);\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n return root;\n };\n }\n // Slow-path\n const Q1div2 = (Q + _1n) / _2n;\n return function tonelliSlow(Fp, n) {\n // Step 0: Check that n is indeed a square: (n | p) should not be ≡ -1\n if (Fp.pow(n, legendreC) === Fp.neg(Fp.ONE))\n throw new Error('Cannot find square root');\n let r = S;\n // TODO: will fail at Fp2/etc\n let g = Fp.pow(Fp.mul(Fp.ONE, Z), Q); // will update both x and b\n let x = Fp.pow(n, Q1div2); // first guess at the square root\n let b = Fp.pow(n, Q); // first guess at the fudge factor\n while (!Fp.eql(b, Fp.ONE)) {\n if (Fp.eql(b, Fp.ZERO))\n return Fp.ZERO; // https://en.wikipedia.org/wiki/Tonelli%E2%80%93Shanks_algorithm (4. If t = 0, return r = 0)\n // Find m such b^(2^m)==1\n let m = 1;\n for (let t2 = Fp.sqr(b); m < r; m++) {\n if (Fp.eql(t2, Fp.ONE))\n break;\n t2 = Fp.sqr(t2); // t2 *= t2\n }\n // NOTE: r-m-1 can be bigger than 32, need to convert to bigint before shift, otherwise there will be overflow\n const ge = Fp.pow(g, _1n << BigInt(r - m - 1)); // ge = 2^(r-m-1)\n g = Fp.sqr(ge); // g = ge * ge\n x = Fp.mul(x, ge); // x *= ge\n b = Fp.mul(b, g); // b *= g\n r = m;\n }\n return x;\n };\n}\nexport function FpSqrt(P) {\n // NOTE: different algorithms can give different roots, it is up to user to decide which one they want.\n // For example there is FpSqrtOdd/FpSqrtEven to choice root based on oddness (used for hash-to-curve).\n // P ≡ 3 (mod 4)\n // √n = n^((P+1)/4)\n if (P % _4n === _3n) {\n // Not all roots possible!\n // const ORDER =\n // 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaabn;\n // const NUM = 72057594037927816n;\n const p1div4 = (P + _1n) / _4n;\n return function sqrt3mod4(Fp, n) {\n const root = Fp.pow(n, p1div4);\n // Throw if root**2 != n\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n return root;\n };\n }\n // Atkin algorithm for q ≡ 5 (mod 8), https://eprint.iacr.org/2012/685.pdf (page 10)\n if (P % _8n === _5n) {\n const c1 = (P - _5n) / _8n;\n return function sqrt5mod8(Fp, n) {\n const n2 = Fp.mul(n, _2n);\n const v = Fp.pow(n2, c1);\n const nv = Fp.mul(n, v);\n const i = Fp.mul(Fp.mul(nv, _2n), v);\n const root = Fp.mul(nv, Fp.sub(i, Fp.ONE));\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n return root;\n };\n }\n // P ≡ 9 (mod 16)\n if (P % _16n === _9n) {\n // NOTE: tonelli is too slow for bls-Fp2 calculations even on start\n // Means we cannot use sqrt for constants at all!\n //\n // const c1 = Fp.sqrt(Fp.negate(Fp.ONE)); // 1. c1 = sqrt(-1) in F, i.e., (c1^2) == -1 in F\n // const c2 = Fp.sqrt(c1); // 2. c2 = sqrt(c1) in F, i.e., (c2^2) == c1 in F\n // const c3 = Fp.sqrt(Fp.negate(c1)); // 3. c3 = sqrt(-c1) in F, i.e., (c3^2) == -c1 in F\n // const c4 = (P + _7n) / _16n; // 4. c4 = (q + 7) / 16 # Integer arithmetic\n // sqrt = (x) => {\n // let tv1 = Fp.pow(x, c4); // 1. tv1 = x^c4\n // let tv2 = Fp.mul(c1, tv1); // 2. tv2 = c1 * tv1\n // const tv3 = Fp.mul(c2, tv1); // 3. tv3 = c2 * tv1\n // let tv4 = Fp.mul(c3, tv1); // 4. tv4 = c3 * tv1\n // const e1 = Fp.equals(Fp.square(tv2), x); // 5. e1 = (tv2^2) == x\n // const e2 = Fp.equals(Fp.square(tv3), x); // 6. e2 = (tv3^2) == x\n // tv1 = Fp.cmov(tv1, tv2, e1); // 7. tv1 = CMOV(tv1, tv2, e1) # Select tv2 if (tv2^2) == x\n // tv2 = Fp.cmov(tv4, tv3, e2); // 8. tv2 = CMOV(tv4, tv3, e2) # Select tv3 if (tv3^2) == x\n // const e3 = Fp.equals(Fp.square(tv2), x); // 9. e3 = (tv2^2) == x\n // return Fp.cmov(tv1, tv2, e3); // 10. z = CMOV(tv1, tv2, e3) # Select the sqrt from tv1 and tv2\n // }\n }\n // Other cases: Tonelli-Shanks algorithm\n return tonelliShanks(P);\n}\n// Little-endian check for first LE bit (last BE bit);\nexport const isNegativeLE = (num, modulo) => (mod(num, modulo) & _1n) === _1n;\n// prettier-ignore\nconst FIELD_FIELDS = [\n 'create', 'isValid', 'is0', 'neg', 'inv', 'sqrt', 'sqr',\n 'eql', 'add', 'sub', 'mul', 'pow', 'div',\n 'addN', 'subN', 'mulN', 'sqrN'\n];\nexport function validateField(field) {\n const initial = {\n ORDER: 'bigint',\n MASK: 'bigint',\n BYTES: 'isSafeInteger',\n BITS: 'isSafeInteger',\n };\n const opts = FIELD_FIELDS.reduce((map, val) => {\n map[val] = 'function';\n return map;\n }, initial);\n return validateObject(field, opts);\n}\n// Generic field functions\n/**\n * Same as `pow` but for Fp: non-constant-time.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n */\nexport function FpPow(f, num, power) {\n // Should have same speed as pow for bigints\n // TODO: benchmark!\n if (power < _0n)\n throw new Error('Expected power > 0');\n if (power === _0n)\n return f.ONE;\n if (power === _1n)\n return num;\n let p = f.ONE;\n let d = num;\n while (power > _0n) {\n if (power & _1n)\n p = f.mul(p, d);\n d = f.sqr(d);\n power >>= _1n;\n }\n return p;\n}\n/**\n * Efficiently invert an array of Field elements.\n * `inv(0)` will return `undefined` here: make sure to throw an error.\n */\nexport function FpInvertBatch(f, nums) {\n const tmp = new Array(nums.length);\n // Walk from first to last, multiply them by each other MOD p\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (f.is0(num))\n return acc;\n tmp[i] = acc;\n return f.mul(acc, num);\n }, f.ONE);\n // Invert last element\n const inverted = f.inv(lastMultiplied);\n // Walk from last to first, multiply them by inverted each other MOD p\n nums.reduceRight((acc, num, i) => {\n if (f.is0(num))\n return acc;\n tmp[i] = f.mul(acc, tmp[i]);\n return f.mul(acc, num);\n }, inverted);\n return tmp;\n}\nexport function FpDiv(f, lhs, rhs) {\n return f.mul(lhs, typeof rhs === 'bigint' ? invert(rhs, f.ORDER) : f.inv(rhs));\n}\n// This function returns True whenever the value x is a square in the field F.\nexport function FpIsSquare(f) {\n const legendreConst = (f.ORDER - _1n) / _2n; // Integer arithmetic\n return (x) => {\n const p = f.pow(x, legendreConst);\n return f.eql(p, f.ZERO) || f.eql(p, f.ONE);\n };\n}\n// CURVE.n lengths\nexport function nLength(n, nBitLength) {\n // Bit size, byte size of CURVE.n\n const _nBitLength = nBitLength !== undefined ? nBitLength : n.toString(2).length;\n const nByteLength = Math.ceil(_nBitLength / 8);\n return { nBitLength: _nBitLength, nByteLength };\n}\n/**\n * Initializes a finite field over prime. **Non-primes are not supported.**\n * Do not init in loop: slow. Very fragile: always run a benchmark on a change.\n * Major performance optimizations:\n * * a) denormalized operations like mulN instead of mul\n * * b) same object shape: never add or remove keys\n * * c) Object.freeze\n * @param ORDER prime positive bigint\n * @param bitLen how many bits the field consumes\n * @param isLE (def: false) if encoding / decoding should be in little-endian\n * @param redef optional faster redefinitions of sqrt and other methods\n */\nexport function Field(ORDER, bitLen, isLE = false, redef = {}) {\n if (ORDER <= _0n)\n throw new Error(`Expected Field ORDER > 0, got ${ORDER}`);\n const { nBitLength: BITS, nByteLength: BYTES } = nLength(ORDER, bitLen);\n if (BYTES > 2048)\n throw new Error('Field lengths over 2048 bytes are not supported');\n const sqrtP = FpSqrt(ORDER);\n const f = Object.freeze({\n ORDER,\n BITS,\n BYTES,\n MASK: bitMask(BITS),\n ZERO: _0n,\n ONE: _1n,\n create: (num) => mod(num, ORDER),\n isValid: (num) => {\n if (typeof num !== 'bigint')\n throw new Error(`Invalid field element: expected bigint, got ${typeof num}`);\n return _0n <= num && num < ORDER; // 0 is valid element, but it's not invertible\n },\n is0: (num) => num === _0n,\n isOdd: (num) => (num & _1n) === _1n,\n neg: (num) => mod(-num, ORDER),\n eql: (lhs, rhs) => lhs === rhs,\n sqr: (num) => mod(num * num, ORDER),\n add: (lhs, rhs) => mod(lhs + rhs, ORDER),\n sub: (lhs, rhs) => mod(lhs - rhs, ORDER),\n mul: (lhs, rhs) => mod(lhs * rhs, ORDER),\n pow: (num, power) => FpPow(f, num, power),\n div: (lhs, rhs) => mod(lhs * invert(rhs, ORDER), ORDER),\n // Same as above, but doesn't normalize\n sqrN: (num) => num * num,\n addN: (lhs, rhs) => lhs + rhs,\n subN: (lhs, rhs) => lhs - rhs,\n mulN: (lhs, rhs) => lhs * rhs,\n inv: (num) => invert(num, ORDER),\n sqrt: redef.sqrt || ((n) => sqrtP(f, n)),\n invertBatch: (lst) => FpInvertBatch(f, lst),\n // TODO: do we really need constant cmov?\n // We don't have const-time bigints anyway, so probably will be not very useful\n cmov: (a, b, c) => (c ? b : a),\n toBytes: (num) => (isLE ? numberToBytesLE(num, BYTES) : numberToBytesBE(num, BYTES)),\n fromBytes: (bytes) => {\n if (bytes.length !== BYTES)\n throw new Error(`Fp.fromBytes: expected ${BYTES}, got ${bytes.length}`);\n return isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n },\n });\n return Object.freeze(f);\n}\nexport function FpSqrtOdd(Fp, elm) {\n if (!Fp.isOdd)\n throw new Error(`Field doesn't have isOdd`);\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? root : Fp.neg(root);\n}\nexport function FpSqrtEven(Fp, elm) {\n if (!Fp.isOdd)\n throw new Error(`Field doesn't have isOdd`);\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? Fp.neg(root) : root;\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Same as mapKeyToField, but accepts less bytes (40 instead of 48 for 32-byte field).\n * Which makes it slightly more biased, less secure.\n * @deprecated use mapKeyToField instead\n */\nexport function hashToPrivateScalar(hash, groupOrder, isLE = false) {\n hash = ensureBytes('privateHash', hash);\n const hashLen = hash.length;\n const minLen = nLength(groupOrder).nByteLength + 8;\n if (minLen < 24 || hashLen < minLen || hashLen > 1024)\n throw new Error(`hashToPrivateScalar: expected ${minLen}-1024 bytes of input, got ${hashLen}`);\n const num = isLE ? bytesToNumberLE(hash) : bytesToNumberBE(hash);\n return mod(num, groupOrder - _1n) + _1n;\n}\n/**\n * Returns total number of bytes consumed by the field element.\n * For example, 32 bytes for usual 256-bit weierstrass curve.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of field\n */\nexport function getFieldBytesLength(fieldOrder) {\n if (typeof fieldOrder !== 'bigint')\n throw new Error('field order must be bigint');\n const bitLength = fieldOrder.toString(2).length;\n return Math.ceil(bitLength / 8);\n}\n/**\n * Returns minimal amount of bytes that can be safely reduced\n * by field order.\n * Should be 2^-128 for 128-bit curve such as P256.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of target hash\n */\nexport function getMinHashLength(fieldOrder) {\n const length = getFieldBytesLength(fieldOrder);\n return length + Math.ceil(length / 2);\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Can take (n + n/2) or more bytes of uniform input e.g. from CSPRNG or KDF\n * and convert them into private scalar, with the modulo bias being negligible.\n * Needs at least 48 bytes of input for 32-byte private key.\n * https://research.kudelskisecurity.com/2020/07/28/the-definitive-guide-to-modulo-bias-and-how-to-avoid-it/\n * FIPS 186-5, A.2 https://csrc.nist.gov/publications/detail/fips/186/5/final\n * RFC 9380, https://www.rfc-editor.org/rfc/rfc9380#section-5\n * @param hash hash output from SHA3 or a similar function\n * @param groupOrder size of subgroup - (e.g. secp256k1.CURVE.n)\n * @param isLE interpret hash bytes as LE num\n * @returns valid private scalar\n */\nexport function mapHashToField(key, fieldOrder, isLE = false) {\n const len = key.length;\n const fieldLen = getFieldBytesLength(fieldOrder);\n const minLen = getMinHashLength(fieldOrder);\n // No small numbers: need to understand bias story. No huge numbers: easier to detect JS timings.\n if (len < 16 || len < minLen || len > 1024)\n throw new Error(`expected ${minLen}-1024 bytes of input, got ${len}`);\n const num = isLE ? bytesToNumberBE(key) : bytesToNumberLE(key);\n // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n const reduced = mod(num, fieldOrder - _1n) + _1n;\n return isLE ? numberToBytesLE(reduced, fieldLen) : numberToBytesBE(reduced, fieldLen);\n}\n//# sourceMappingURL=modular.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Abelian group utilities\nimport { validateField, nLength } from './modular.js';\nimport { validateObject } from './utils.js';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\n// Elliptic curve multiplication of Point by scalar. Fragile.\n// Scalars should always be less than curve order: this should be checked inside of a curve itself.\n// Creates precomputation tables for fast multiplication:\n// - private scalar is split by fixed size windows of W bits\n// - every window point is collected from window's table & added to accumulator\n// - since windows are different, same point inside tables won't be accessed more than once per calc\n// - each multiplication is 'Math.ceil(CURVE_ORDER / 𝑊) + 1' point additions (fixed for any scalar)\n// - +1 window is neccessary for wNAF\n// - wNAF reduces table size: 2x less memory + 2x faster generation, but 10% slower multiplication\n// TODO: Research returning 2d JS array of windows, instead of a single window. This would allow\n// windows to be in different memory locations\nexport function wNAF(c, bits) {\n const constTimeNegate = (condition, item) => {\n const neg = item.negate();\n return condition ? neg : item;\n };\n const opts = (W) => {\n const windows = Math.ceil(bits / W) + 1; // +1, because\n const windowSize = 2 ** (W - 1); // -1 because we skip zero\n return { windows, windowSize };\n };\n return {\n constTimeNegate,\n // non-const time multiplication ladder\n unsafeLadder(elm, n) {\n let p = c.ZERO;\n let d = elm;\n while (n > _0n) {\n if (n & _1n)\n p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n },\n /**\n * Creates a wNAF precomputation window. Used for caching.\n * Default window size is set by `utils.precompute()` and is equal to 8.\n * Number of precomputed points depends on the curve size:\n * 2^(𝑊−1) * (Math.ceil(𝑛 / 𝑊) + 1), where:\n * - 𝑊 is the window size\n * - 𝑛 is the bitlength of the curve order.\n * For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.\n * @returns precomputed point tables flattened to a single array\n */\n precomputeWindow(elm, W) {\n const { windows, windowSize } = opts(W);\n const points = [];\n let p = elm;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n // =1, because we skip zero\n for (let i = 1; i < windowSize; i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n },\n /**\n * Implements ec multiplication using precomputed tables and w-ary non-adjacent form.\n * @param W window size\n * @param precomputes precomputed tables\n * @param n scalar (we don't check here, but should be less than curve order)\n * @returns real and fake (for const-time) points\n */\n wNAF(W, precomputes, n) {\n // TODO: maybe check that scalar is less than group order? wNAF behavious is undefined otherwise\n // But need to carefully remove other checks before wNAF. ORDER == bits here\n const { windows, windowSize } = opts(W);\n let p = c.ZERO;\n let f = c.BASE;\n const mask = BigInt(2 ** W - 1); // Create mask with W ones: 0b1111 for W=4 etc.\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n // Extract W bits.\n let wbits = Number(n & mask);\n // Shift number by W bits.\n n >>= shiftBy;\n // If the bits are bigger than max size, we'll split those.\n // +224 => 256 - 32\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n // This code was first written with assumption that 'f' and 'p' will never be infinity point:\n // since each addition is multiplied by 2 ** W, it cannot cancel each other. However,\n // there is negate now: it is possible that negated element from low value\n // would be the same as high element, which will create carry into next window.\n // It's not obvious how this can fail, but still worth investigating later.\n // Check if we're onto Zero point.\n // Add random point inside current window to f.\n const offset1 = offset;\n const offset2 = offset + Math.abs(wbits) - 1; // -1 because we skip zero\n const cond1 = window % 2 !== 0;\n const cond2 = wbits < 0;\n if (wbits === 0) {\n // The most important part for const-time getPublicKey\n f = f.add(constTimeNegate(cond1, precomputes[offset1]));\n }\n else {\n p = p.add(constTimeNegate(cond2, precomputes[offset2]));\n }\n }\n // JIT-compiler should not eliminate f here, since it will later be used in normalizeZ()\n // Even if the variable is still unused, there are some checks which will\n // throw an exception, so compiler needs to prove they won't happen, which is hard.\n // At this point there is a way to F be infinity-point even if p is not,\n // which makes it less const-time: around 1 bigint multiply.\n return { p, f };\n },\n wNAFCached(P, precomputesMap, n, transform) {\n // @ts-ignore\n const W = P._WINDOW_SIZE || 1;\n // Calculate precomputes on a first run, reuse them after\n let comp = precomputesMap.get(P);\n if (!comp) {\n comp = this.precomputeWindow(P, W);\n if (W !== 1) {\n precomputesMap.set(P, transform(comp));\n }\n }\n return this.wNAF(W, comp, n);\n },\n };\n}\nexport function validateBasic(curve) {\n validateField(curve.Fp);\n validateObject(curve, {\n n: 'bigint',\n h: 'bigint',\n Gx: 'field',\n Gy: 'field',\n }, {\n nBitLength: 'isSafeInteger',\n nByteLength: 'isSafeInteger',\n });\n // Set defaults\n return Object.freeze({\n ...nLength(curve.n, curve.nBitLength),\n ...curve,\n ...{ p: curve.Fp.ORDER },\n });\n}\n//# sourceMappingURL=curve.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Twisted Edwards curve. The formula is: ax² + y² = 1 + dx²y²\nimport { mod } from './modular.js';\nimport * as ut from './utils.js';\nimport { ensureBytes } from './utils.js';\nimport { wNAF, validateBasic } from './curve.js';\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _8n = BigInt(8);\n// verification rule is either zip215 or rfc8032 / nist186-5. Consult fromHex:\nconst VERIFY_DEFAULT = { zip215: true };\nfunction validateOpts(curve) {\n const opts = validateBasic(curve);\n ut.validateObject(curve, {\n hash: 'function',\n a: 'bigint',\n d: 'bigint',\n randomBytes: 'function',\n }, {\n adjustScalarBytes: 'function',\n domain: 'function',\n uvRatio: 'function',\n mapToCurve: 'function',\n });\n // Set defaults\n return Object.freeze({ ...opts });\n}\n// It is not generic twisted curve for now, but ed25519/ed448 generic implementation\nexport function twistedEdwards(curveDef) {\n const CURVE = validateOpts(curveDef);\n const { Fp, n: CURVE_ORDER, prehash: prehash, hash: cHash, randomBytes, nByteLength, h: cofactor, } = CURVE;\n const MASK = _2n << (BigInt(nByteLength * 8) - _1n);\n const modP = Fp.create; // Function overrides\n // sqrt(u/v)\n const uvRatio = CURVE.uvRatio ||\n ((u, v) => {\n try {\n return { isValid: true, value: Fp.sqrt(u * Fp.inv(v)) };\n }\n catch (e) {\n return { isValid: false, value: _0n };\n }\n });\n const adjustScalarBytes = CURVE.adjustScalarBytes || ((bytes) => bytes); // NOOP\n const domain = CURVE.domain ||\n ((data, ctx, phflag) => {\n if (ctx.length || phflag)\n throw new Error('Contexts/pre-hash are not supported');\n return data;\n }); // NOOP\n const inBig = (n) => typeof n === 'bigint' && _0n < n; // n in [1..]\n const inRange = (n, max) => inBig(n) && inBig(max) && n < max; // n in [1..max-1]\n const in0MaskRange = (n) => n === _0n || inRange(n, MASK); // n in [0..MASK-1]\n function assertInRange(n, max) {\n // n in [1..max-1]\n if (inRange(n, max))\n return n;\n throw new Error(`Expected valid scalar < ${max}, got ${typeof n} ${n}`);\n }\n function assertGE0(n) {\n // n in [0..CURVE_ORDER-1]\n return n === _0n ? n : assertInRange(n, CURVE_ORDER); // GE = prime subgroup, not full group\n }\n const pointPrecomputes = new Map();\n function isPoint(other) {\n if (!(other instanceof Point))\n throw new Error('ExtendedPoint expected');\n }\n // Extended Point works in extended coordinates: (x, y, z, t) ∋ (x=x/z, y=y/z, t=xy).\n // https://en.wikipedia.org/wiki/Twisted_Edwards_curve#Extended_coordinates\n class Point {\n constructor(ex, ey, ez, et) {\n this.ex = ex;\n this.ey = ey;\n this.ez = ez;\n this.et = et;\n if (!in0MaskRange(ex))\n throw new Error('x required');\n if (!in0MaskRange(ey))\n throw new Error('y required');\n if (!in0MaskRange(ez))\n throw new Error('z required');\n if (!in0MaskRange(et))\n throw new Error('t required');\n }\n get x() {\n return this.toAffine().x;\n }\n get y() {\n return this.toAffine().y;\n }\n static fromAffine(p) {\n if (p instanceof Point)\n throw new Error('extended point not allowed');\n const { x, y } = p || {};\n if (!in0MaskRange(x) || !in0MaskRange(y))\n throw new Error('invalid affine point');\n return new Point(x, y, _1n, modP(x * y));\n }\n static normalizeZ(points) {\n const toInv = Fp.invertBatch(points.map((p) => p.ez));\n return points.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n }\n // \"Private method\", don't use it directly\n _setWindowSize(windowSize) {\n this._WINDOW_SIZE = windowSize;\n pointPrecomputes.delete(this);\n }\n // Not required for fromHex(), which always creates valid points.\n // Could be useful for fromAffine().\n assertValidity() {\n const { a, d } = CURVE;\n if (this.is0())\n throw new Error('bad point: ZERO'); // TODO: optimize, with vars below?\n // Equation in affine coordinates: ax² + y² = 1 + dx²y²\n // Equation in projective coordinates (X/Z, Y/Z, Z): (aX² + Y²)Z² = Z⁴ + dX²Y²\n const { ex: X, ey: Y, ez: Z, et: T } = this;\n const X2 = modP(X * X); // X²\n const Y2 = modP(Y * Y); // Y²\n const Z2 = modP(Z * Z); // Z²\n const Z4 = modP(Z2 * Z2); // Z⁴\n const aX2 = modP(X2 * a); // aX²\n const left = modP(Z2 * modP(aX2 + Y2)); // (aX² + Y²)Z²\n const right = modP(Z4 + modP(d * modP(X2 * Y2))); // Z⁴ + dX²Y²\n if (left !== right)\n throw new Error('bad point: equation left != right (1)');\n // In Extended coordinates we also have T, which is x*y=T/Z: check X*Y == Z*T\n const XY = modP(X * Y);\n const ZT = modP(Z * T);\n if (XY !== ZT)\n throw new Error('bad point: equation left != right (2)');\n }\n // Compare one point to another.\n equals(other) {\n isPoint(other);\n const { ex: X1, ey: Y1, ez: Z1 } = this;\n const { ex: X2, ey: Y2, ez: Z2 } = other;\n const X1Z2 = modP(X1 * Z2);\n const X2Z1 = modP(X2 * Z1);\n const Y1Z2 = modP(Y1 * Z2);\n const Y2Z1 = modP(Y2 * Z1);\n return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n }\n is0() {\n return this.equals(Point.ZERO);\n }\n negate() {\n // Flips point sign to a negative one (-x, y in affine coords)\n return new Point(modP(-this.ex), this.ey, this.ez, modP(-this.et));\n }\n // Fast algo for doubling Extended Point.\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd\n // Cost: 4M + 4S + 1*a + 6add + 1*2.\n double() {\n const { a } = CURVE;\n const { ex: X1, ey: Y1, ez: Z1 } = this;\n const A = modP(X1 * X1); // A = X12\n const B = modP(Y1 * Y1); // B = Y12\n const C = modP(_2n * modP(Z1 * Z1)); // C = 2*Z12\n const D = modP(a * A); // D = a*A\n const x1y1 = X1 + Y1;\n const E = modP(modP(x1y1 * x1y1) - A - B); // E = (X1+Y1)2-A-B\n const G = D + B; // G = D+B\n const F = G - C; // F = G-C\n const H = D - B; // H = D-B\n const X3 = modP(E * F); // X3 = E*F\n const Y3 = modP(G * H); // Y3 = G*H\n const T3 = modP(E * H); // T3 = E*H\n const Z3 = modP(F * G); // Z3 = F*G\n return new Point(X3, Y3, Z3, T3);\n }\n // Fast algo for adding 2 Extended Points.\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#addition-add-2008-hwcd\n // Cost: 9M + 1*a + 1*d + 7add.\n add(other) {\n isPoint(other);\n const { a, d } = CURVE;\n const { ex: X1, ey: Y1, ez: Z1, et: T1 } = this;\n const { ex: X2, ey: Y2, ez: Z2, et: T2 } = other;\n // Faster algo for adding 2 Extended Points when curve's a=-1.\n // http://hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html#addition-add-2008-hwcd-4\n // Cost: 8M + 8add + 2*2.\n // Note: It does not check whether the `other` point is valid.\n if (a === BigInt(-1)) {\n const A = modP((Y1 - X1) * (Y2 + X2));\n const B = modP((Y1 + X1) * (Y2 - X2));\n const F = modP(B - A);\n if (F === _0n)\n return this.double(); // Same point. Tests say it doesn't affect timing\n const C = modP(Z1 * _2n * T2);\n const D = modP(T1 * _2n * Z2);\n const E = D + C;\n const G = B + A;\n const H = D - C;\n const X3 = modP(E * F);\n const Y3 = modP(G * H);\n const T3 = modP(E * H);\n const Z3 = modP(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n const A = modP(X1 * X2); // A = X1*X2\n const B = modP(Y1 * Y2); // B = Y1*Y2\n const C = modP(T1 * d * T2); // C = T1*d*T2\n const D = modP(Z1 * Z2); // D = Z1*Z2\n const E = modP((X1 + Y1) * (X2 + Y2) - A - B); // E = (X1+Y1)*(X2+Y2)-A-B\n const F = D - C; // F = D-C\n const G = D + C; // G = D+C\n const H = modP(B - a * A); // H = B-a*A\n const X3 = modP(E * F); // X3 = E*F\n const Y3 = modP(G * H); // Y3 = G*H\n const T3 = modP(E * H); // T3 = E*H\n const Z3 = modP(F * G); // Z3 = F*G\n return new Point(X3, Y3, Z3, T3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n wNAF(n) {\n return wnaf.wNAFCached(this, pointPrecomputes, n, Point.normalizeZ);\n }\n // Constant-time multiplication.\n multiply(scalar) {\n const { p, f } = this.wNAF(assertInRange(scalar, CURVE_ORDER));\n return Point.normalizeZ([p, f])[0];\n }\n // Non-constant-time multiplication. Uses double-and-add algorithm.\n // It's faster, but should only be used when you don't care about\n // an exposed private key e.g. sig verification.\n // Does NOT allow scalars higher than CURVE.n.\n multiplyUnsafe(scalar) {\n let n = assertGE0(scalar); // 0 <= scalar < CURVE.n\n if (n === _0n)\n return I;\n if (this.equals(I) || n === _1n)\n return this;\n if (this.equals(G))\n return this.wNAF(n).p;\n return wnaf.unsafeLadder(this, n);\n }\n // Checks if point is of small order.\n // If you add something to small order point, you will have \"dirty\"\n // point with torsion component.\n // Multiplies point by cofactor and checks if the result is 0.\n isSmallOrder() {\n return this.multiplyUnsafe(cofactor).is0();\n }\n // Multiplies point by curve order and checks if the result is 0.\n // Returns `false` is the point is dirty.\n isTorsionFree() {\n return wnaf.unsafeLadder(this, CURVE_ORDER).is0();\n }\n // Converts Extended point to default (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n toAffine(iz) {\n const { ex: x, ey: y, ez: z } = this;\n const is0 = this.is0();\n if (iz == null)\n iz = is0 ? _8n : Fp.inv(z); // 8 was chosen arbitrarily\n const ax = modP(x * iz);\n const ay = modP(y * iz);\n const zz = modP(z * iz);\n if (is0)\n return { x: _0n, y: _1n };\n if (zz !== _1n)\n throw new Error('invZ was invalid');\n return { x: ax, y: ay };\n }\n clearCofactor() {\n const { h: cofactor } = CURVE;\n if (cofactor === _1n)\n return this;\n return this.multiplyUnsafe(cofactor);\n }\n // Converts hash string or Uint8Array to Point.\n // Uses algo from RFC8032 5.1.3.\n static fromHex(hex, zip215 = false) {\n const { d, a } = CURVE;\n const len = Fp.BYTES;\n hex = ensureBytes('pointHex', hex, len); // copy hex to a new array\n const normed = hex.slice(); // copy again, we'll manipulate it\n const lastByte = hex[len - 1]; // select last byte\n normed[len - 1] = lastByte & ~0x80; // clear last bit\n const y = ut.bytesToNumberLE(normed);\n if (y === _0n) {\n // y=0 is allowed\n }\n else {\n // RFC8032 prohibits >= p, but ZIP215 doesn't\n if (zip215)\n assertInRange(y, MASK); // zip215=true [1..P-1] (2^255-19-1 for ed25519)\n else\n assertInRange(y, Fp.ORDER); // zip215=false [1..MASK-1] (2^256-1 for ed25519)\n }\n // Ed25519: x² = (y²-1)/(dy²+1) mod p. Ed448: x² = (y²-1)/(dy²-1) mod p. Generic case:\n // ax²+y²=1+dx²y² => y²-1=dx²y²-ax² => y²-1=x²(dy²-a) => x²=(y²-1)/(dy²-a)\n const y2 = modP(y * y); // denominator is always non-0 mod p.\n const u = modP(y2 - _1n); // u = y² - 1\n const v = modP(d * y2 - a); // v = d y² + 1.\n let { isValid, value: x } = uvRatio(u, v); // √(u/v)\n if (!isValid)\n throw new Error('Point.fromHex: invalid y coordinate');\n const isXOdd = (x & _1n) === _1n; // There are 2 square roots. Use x_0 bit to select proper\n const isLastByteOdd = (lastByte & 0x80) !== 0; // x_0, last bit\n if (!zip215 && x === _0n && isLastByteOdd)\n // if x=0 and x_0 = 1, fail\n throw new Error('Point.fromHex: x=0 and x_0=1');\n if (isLastByteOdd !== isXOdd)\n x = modP(-x); // if x_0 != x mod 2, set x = p-x\n return Point.fromAffine({ x, y });\n }\n static fromPrivateKey(privKey) {\n return getExtendedPublicKey(privKey).point;\n }\n toRawBytes() {\n const { x, y } = this.toAffine();\n const bytes = ut.numberToBytesLE(y, Fp.BYTES); // each y has 2 x values (x, -y)\n bytes[bytes.length - 1] |= x & _1n ? 0x80 : 0; // when compressing, it's enough to store y\n return bytes; // and use the last byte to encode sign of x\n }\n toHex() {\n return ut.bytesToHex(this.toRawBytes()); // Same as toRawBytes, but returns string.\n }\n }\n Point.BASE = new Point(CURVE.Gx, CURVE.Gy, _1n, modP(CURVE.Gx * CURVE.Gy));\n Point.ZERO = new Point(_0n, _1n, _1n, _0n); // 0, 1, 1, 0\n const { BASE: G, ZERO: I } = Point;\n const wnaf = wNAF(Point, nByteLength * 8);\n function modN(a) {\n return mod(a, CURVE_ORDER);\n }\n // Little-endian SHA512 with modulo n\n function modN_LE(hash) {\n return modN(ut.bytesToNumberLE(hash));\n }\n /** Convenience method that creates public key and other stuff. RFC8032 5.1.5 */\n function getExtendedPublicKey(key) {\n const len = nByteLength;\n key = ensureBytes('private key', key, len);\n // Hash private key with curve's hash function to produce uniformingly random input\n // Check byte lengths: ensure(64, h(ensure(32, key)))\n const hashed = ensureBytes('hashed private key', cHash(key), 2 * len);\n const head = adjustScalarBytes(hashed.slice(0, len)); // clear first half bits, produce FE\n const prefix = hashed.slice(len, 2 * len); // second half is called key prefix (5.1.6)\n const scalar = modN_LE(head); // The actual private scalar\n const point = G.multiply(scalar); // Point on Edwards curve aka public key\n const pointBytes = point.toRawBytes(); // Uint8Array representation\n return { head, prefix, scalar, point, pointBytes };\n }\n // Calculates EdDSA pub key. RFC8032 5.1.5. Privkey is hashed. Use first half with 3 bits cleared\n function getPublicKey(privKey) {\n return getExtendedPublicKey(privKey).pointBytes;\n }\n // int('LE', SHA512(dom2(F, C) || msgs)) mod N\n function hashDomainToScalar(context = new Uint8Array(), ...msgs) {\n const msg = ut.concatBytes(...msgs);\n return modN_LE(cHash(domain(msg, ensureBytes('context', context), !!prehash)));\n }\n /** Signs message with privateKey. RFC8032 5.1.6 */\n function sign(msg, privKey, options = {}) {\n msg = ensureBytes('message', msg);\n if (prehash)\n msg = prehash(msg); // for ed25519ph etc.\n const { prefix, scalar, pointBytes } = getExtendedPublicKey(privKey);\n const r = hashDomainToScalar(options.context, prefix, msg); // r = dom2(F, C) || prefix || PH(M)\n const R = G.multiply(r).toRawBytes(); // R = rG\n const k = hashDomainToScalar(options.context, R, pointBytes, msg); // R || A || PH(M)\n const s = modN(r + k * scalar); // S = (r + k * s) mod L\n assertGE0(s); // 0 <= s < l\n const res = ut.concatBytes(R, ut.numberToBytesLE(s, Fp.BYTES));\n return ensureBytes('result', res, nByteLength * 2); // 64-byte signature\n }\n const verifyOpts = VERIFY_DEFAULT;\n function verify(sig, msg, publicKey, options = verifyOpts) {\n const { context, zip215 } = options;\n const len = Fp.BYTES; // Verifies EdDSA signature against message and public key. RFC8032 5.1.7.\n sig = ensureBytes('signature', sig, 2 * len); // An extended group equation is checked.\n msg = ensureBytes('message', msg);\n if (prehash)\n msg = prehash(msg); // for ed25519ph, etc\n const s = ut.bytesToNumberLE(sig.slice(len, 2 * len));\n // zip215: true is good for consensus-critical apps and allows points < 2^256\n // zip215: false follows RFC8032 / NIST186-5 and restricts points to CURVE.p\n let A, R, SB;\n try {\n A = Point.fromHex(publicKey, zip215);\n R = Point.fromHex(sig.slice(0, len), zip215);\n SB = G.multiplyUnsafe(s); // 0 <= s < l is done inside\n }\n catch (error) {\n return false;\n }\n if (!zip215 && A.isSmallOrder())\n return false;\n const k = hashDomainToScalar(context, R.toRawBytes(), A.toRawBytes(), msg);\n const RkA = R.add(A.multiplyUnsafe(k));\n // [8][S]B = [8]R + [8][k]A'\n return RkA.subtract(SB).clearCofactor().equals(Point.ZERO);\n }\n G._setWindowSize(8); // Enable precomputes. Slows down first publicKey computation by 20ms.\n const utils = {\n getExtendedPublicKey,\n // ed25519 private keys are uniform 32b. No need to check for modulo bias, like in secp256k1.\n randomPrivateKey: () => randomBytes(Fp.BYTES),\n /**\n * We're doing scalar multiplication (used in getPublicKey etc) with precomputed BASE_POINT\n * values. This slows down first getPublicKey() by milliseconds (see Speed section),\n * but allows to speed-up subsequent getPublicKey() calls up to 20x.\n * @param windowSize 2, 4, 8, 16\n */\n precompute(windowSize = 8, point = Point.BASE) {\n point._setWindowSize(windowSize);\n point.multiply(BigInt(3));\n return point;\n },\n };\n return {\n CURVE,\n getPublicKey,\n sign,\n verify,\n ExtendedPoint: Point,\n utils,\n };\n}\n//# sourceMappingURL=edwards.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha512 } from '@noble/hashes/sha512';\nimport { concatBytes, randomBytes, utf8ToBytes } from '@noble/hashes/utils';\nimport { twistedEdwards } from './abstract/edwards.js';\nimport { montgomery } from './abstract/montgomery.js';\nimport { Field, FpSqrtEven, isNegativeLE, mod, pow2 } from './abstract/modular.js';\nimport { bytesToHex, bytesToNumberLE, ensureBytes, equalBytes, numberToBytesLE, } from './abstract/utils.js';\nimport { createHasher, expand_message_xmd } from './abstract/hash-to-curve.js';\n/**\n * ed25519 Twisted Edwards curve with following addons:\n * - X25519 ECDH\n * - Ristretto cofactor elimination\n * - Elligator hash-to-group / point indistinguishability\n */\nconst ED25519_P = BigInt('57896044618658097711785492504343953926634992332820282019728792003956564819949');\n// √(-1) aka √(a) aka 2^((p-1)/4)\nconst ED25519_SQRT_M1 = BigInt('19681161376707505956807079304988542015446066515923890162744021073123829784752');\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _5n = BigInt(5);\n// prettier-ignore\nconst _10n = BigInt(10), _20n = BigInt(20), _40n = BigInt(40), _80n = BigInt(80);\nfunction ed25519_pow_2_252_3(x) {\n const P = ED25519_P;\n const x2 = (x * x) % P;\n const b2 = (x2 * x) % P; // x^3, 11\n const b4 = (pow2(b2, _2n, P) * b2) % P; // x^15, 1111\n const b5 = (pow2(b4, _1n, P) * x) % P; // x^31\n const b10 = (pow2(b5, _5n, P) * b5) % P;\n const b20 = (pow2(b10, _10n, P) * b10) % P;\n const b40 = (pow2(b20, _20n, P) * b20) % P;\n const b80 = (pow2(b40, _40n, P) * b40) % P;\n const b160 = (pow2(b80, _80n, P) * b80) % P;\n const b240 = (pow2(b160, _80n, P) * b80) % P;\n const b250 = (pow2(b240, _10n, P) * b10) % P;\n const pow_p_5_8 = (pow2(b250, _2n, P) * x) % P;\n // ^ To pow to (p+3)/8, multiply it by x.\n return { pow_p_5_8, b2 };\n}\nfunction adjustScalarBytes(bytes) {\n // Section 5: For X25519, in order to decode 32 random bytes as an integer scalar,\n // set the three least significant bits of the first byte\n bytes[0] &= 248; // 0b1111_1000\n // and the most significant bit of the last to zero,\n bytes[31] &= 127; // 0b0111_1111\n // set the second most significant bit of the last byte to 1\n bytes[31] |= 64; // 0b0100_0000\n return bytes;\n}\n// sqrt(u/v)\nfunction uvRatio(u, v) {\n const P = ED25519_P;\n const v3 = mod(v * v * v, P); // v³\n const v7 = mod(v3 * v3 * v, P); // v⁷\n // (p+3)/8 and (p-5)/8\n const pow = ed25519_pow_2_252_3(u * v7).pow_p_5_8;\n let x = mod(u * v3 * pow, P); // (uv³)(uv⁷)^(p-5)/8\n const vx2 = mod(v * x * x, P); // vx²\n const root1 = x; // First root candidate\n const root2 = mod(x * ED25519_SQRT_M1, P); // Second root candidate\n const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root\n const useRoot2 = vx2 === mod(-u, P); // If vx² = -u, set x <-- x * 2^((p-1)/4)\n const noRoot = vx2 === mod(-u * ED25519_SQRT_M1, P); // There is no valid root, vx² = -u√(-1)\n if (useRoot1)\n x = root1;\n if (useRoot2 || noRoot)\n x = root2; // We return root2 anyway, for const-time\n if (isNegativeLE(x, P))\n x = mod(-x, P);\n return { isValid: useRoot1 || useRoot2, value: x };\n}\n// Just in case\nexport const ED25519_TORSION_SUBGROUP = [\n '0100000000000000000000000000000000000000000000000000000000000000',\n 'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a',\n '0000000000000000000000000000000000000000000000000000000000000080',\n '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05',\n 'ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f',\n '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc85',\n '0000000000000000000000000000000000000000000000000000000000000000',\n 'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac03fa',\n];\nconst Fp = Field(ED25519_P, undefined, true);\nconst ed25519Defaults = {\n // Param: a\n a: BigInt(-1), // Fp.create(-1) is proper; our way still works and is faster\n // d is equal to -121665/121666 over finite field.\n // Negative number is P - number, and division is invert(number, P)\n d: BigInt('37095705934669439343138083508754565189542113879843219016388785533085940283555'),\n // Finite field 𝔽p over which we'll do calculations; 2n**255n - 19n\n Fp,\n // Subgroup order: how many points curve has\n // 2n**252n + 27742317777372353535851937790883648493n;\n n: BigInt('7237005577332262213973186563042994240857116359379907606001950938285454250989'),\n // Cofactor\n h: BigInt(8),\n // Base point (x, y) aka generator point\n Gx: BigInt('15112221349535400772501151409588531511454012693041857206046113283949847762202'),\n Gy: BigInt('46316835694926478169428394003475163141307993866256225615783033603165251855960'),\n hash: sha512,\n randomBytes,\n adjustScalarBytes,\n // dom2\n // Ratio of u to v. Allows us to combine inversion and square root. Uses algo from RFC8032 5.1.3.\n // Constant-time, u/√v\n uvRatio,\n};\nexport const ed25519 = /* @__PURE__ */ twistedEdwards(ed25519Defaults);\nfunction ed25519_domain(data, ctx, phflag) {\n if (ctx.length > 255)\n throw new Error('Context is too big');\n return concatBytes(utf8ToBytes('SigEd25519 no Ed25519 collisions'), new Uint8Array([phflag ? 1 : 0, ctx.length]), ctx, data);\n}\nexport const ed25519ctx = /* @__PURE__ */ twistedEdwards({\n ...ed25519Defaults,\n domain: ed25519_domain,\n});\nexport const ed25519ph = /* @__PURE__ */ twistedEdwards({\n ...ed25519Defaults,\n domain: ed25519_domain,\n prehash: sha512,\n});\nexport const x25519 = /* @__PURE__ */ (() => montgomery({\n P: ED25519_P,\n a: BigInt(486662),\n montgomeryBits: 255, // n is 253 bits\n nByteLength: 32,\n Gu: BigInt(9),\n powPminus2: (x) => {\n const P = ED25519_P;\n // x^(p-2) aka x^(2^255-21)\n const { pow_p_5_8, b2 } = ed25519_pow_2_252_3(x);\n return mod(pow2(pow_p_5_8, BigInt(3), P) * b2, P);\n },\n adjustScalarBytes,\n randomBytes,\n}))();\n/**\n * Converts ed25519 public key to x25519 public key. Uses formula:\n * * `(u, v) = ((1+y)/(1-y), sqrt(-486664)*u/x)`\n * * `(x, y) = (sqrt(-486664)*u/v, (u-1)/(u+1))`\n * @example\n * const someonesPub = ed25519.getPublicKey(ed25519.utils.randomPrivateKey());\n * const aPriv = x25519.utils.randomPrivateKey();\n * x25519.getSharedSecret(aPriv, edwardsToMontgomeryPub(someonesPub))\n */\nexport function edwardsToMontgomeryPub(edwardsPub) {\n const { y } = ed25519.ExtendedPoint.fromHex(edwardsPub);\n const _1n = BigInt(1);\n return Fp.toBytes(Fp.create((_1n + y) * Fp.inv(_1n - y)));\n}\nexport const edwardsToMontgomery = edwardsToMontgomeryPub; // deprecated\n/**\n * Converts ed25519 secret key to x25519 secret key.\n * @example\n * const someonesPub = x25519.getPublicKey(x25519.utils.randomPrivateKey());\n * const aPriv = ed25519.utils.randomPrivateKey();\n * x25519.getSharedSecret(edwardsToMontgomeryPriv(aPriv), someonesPub)\n */\nexport function edwardsToMontgomeryPriv(edwardsPriv) {\n const hashed = ed25519Defaults.hash(edwardsPriv.subarray(0, 32));\n return ed25519Defaults.adjustScalarBytes(hashed).subarray(0, 32);\n}\n// Hash To Curve Elligator2 Map (NOTE: different from ristretto255 elligator)\n// NOTE: very important part is usage of FpSqrtEven for ELL2_C1_EDWARDS, since\n// SageMath returns different root first and everything falls apart\nconst ELL2_C1 = (Fp.ORDER + BigInt(3)) / BigInt(8); // 1. c1 = (q + 3) / 8 # Integer arithmetic\nconst ELL2_C2 = Fp.pow(_2n, ELL2_C1); // 2. c2 = 2^c1\nconst ELL2_C3 = Fp.sqrt(Fp.neg(Fp.ONE)); // 3. c3 = sqrt(-1)\nconst ELL2_C4 = (Fp.ORDER - BigInt(5)) / BigInt(8); // 4. c4 = (q - 5) / 8 # Integer arithmetic\nconst ELL2_J = BigInt(486662);\n// prettier-ignore\nfunction map_to_curve_elligator2_curve25519(u) {\n let tv1 = Fp.sqr(u); // 1. tv1 = u^2\n tv1 = Fp.mul(tv1, _2n); // 2. tv1 = 2 * tv1\n let xd = Fp.add(tv1, Fp.ONE); // 3. xd = tv1 + 1 # Nonzero: -1 is square (mod p), tv1 is not\n let x1n = Fp.neg(ELL2_J); // 4. x1n = -J # x1 = x1n / xd = -J / (1 + 2 * u^2)\n let tv2 = Fp.sqr(xd); // 5. tv2 = xd^2\n let gxd = Fp.mul(tv2, xd); // 6. gxd = tv2 * xd # gxd = xd^3\n let gx1 = Fp.mul(tv1, ELL2_J); // 7. gx1 = J * tv1 # x1n + J * xd\n gx1 = Fp.mul(gx1, x1n); // 8. gx1 = gx1 * x1n # x1n^2 + J * x1n * xd\n gx1 = Fp.add(gx1, tv2); // 9. gx1 = gx1 + tv2 # x1n^2 + J * x1n * xd + xd^2\n gx1 = Fp.mul(gx1, x1n); // 10. gx1 = gx1 * x1n # x1n^3 + J * x1n^2 * xd + x1n * xd^2\n let tv3 = Fp.sqr(gxd); // 11. tv3 = gxd^2\n tv2 = Fp.sqr(tv3); // 12. tv2 = tv3^2 # gxd^4\n tv3 = Fp.mul(tv3, gxd); // 13. tv3 = tv3 * gxd # gxd^3\n tv3 = Fp.mul(tv3, gx1); // 14. tv3 = tv3 * gx1 # gx1 * gxd^3\n tv2 = Fp.mul(tv2, tv3); // 15. tv2 = tv2 * tv3 # gx1 * gxd^7\n let y11 = Fp.pow(tv2, ELL2_C4); // 16. y11 = tv2^c4 # (gx1 * gxd^7)^((p - 5) / 8)\n y11 = Fp.mul(y11, tv3); // 17. y11 = y11 * tv3 # gx1*gxd^3*(gx1*gxd^7)^((p-5)/8)\n let y12 = Fp.mul(y11, ELL2_C3); // 18. y12 = y11 * c3\n tv2 = Fp.sqr(y11); // 19. tv2 = y11^2\n tv2 = Fp.mul(tv2, gxd); // 20. tv2 = tv2 * gxd\n let e1 = Fp.eql(tv2, gx1); // 21. e1 = tv2 == gx1\n let y1 = Fp.cmov(y12, y11, e1); // 22. y1 = CMOV(y12, y11, e1) # If g(x1) is square, this is its sqrt\n let x2n = Fp.mul(x1n, tv1); // 23. x2n = x1n * tv1 # x2 = x2n / xd = 2 * u^2 * x1n / xd\n let y21 = Fp.mul(y11, u); // 24. y21 = y11 * u\n y21 = Fp.mul(y21, ELL2_C2); // 25. y21 = y21 * c2\n let y22 = Fp.mul(y21, ELL2_C3); // 26. y22 = y21 * c3\n let gx2 = Fp.mul(gx1, tv1); // 27. gx2 = gx1 * tv1 # g(x2) = gx2 / gxd = 2 * u^2 * g(x1)\n tv2 = Fp.sqr(y21); // 28. tv2 = y21^2\n tv2 = Fp.mul(tv2, gxd); // 29. tv2 = tv2 * gxd\n let e2 = Fp.eql(tv2, gx2); // 30. e2 = tv2 == gx2\n let y2 = Fp.cmov(y22, y21, e2); // 31. y2 = CMOV(y22, y21, e2) # If g(x2) is square, this is its sqrt\n tv2 = Fp.sqr(y1); // 32. tv2 = y1^2\n tv2 = Fp.mul(tv2, gxd); // 33. tv2 = tv2 * gxd\n let e3 = Fp.eql(tv2, gx1); // 34. e3 = tv2 == gx1\n let xn = Fp.cmov(x2n, x1n, e3); // 35. xn = CMOV(x2n, x1n, e3) # If e3, x = x1, else x = x2\n let y = Fp.cmov(y2, y1, e3); // 36. y = CMOV(y2, y1, e3) # If e3, y = y1, else y = y2\n let e4 = Fp.isOdd(y); // 37. e4 = sgn0(y) == 1 # Fix sign of y\n y = Fp.cmov(y, Fp.neg(y), e3 !== e4); // 38. y = CMOV(y, -y, e3 XOR e4)\n return { xMn: xn, xMd: xd, yMn: y, yMd: _1n }; // 39. return (xn, xd, y, 1)\n}\nconst ELL2_C1_EDWARDS = FpSqrtEven(Fp, Fp.neg(BigInt(486664))); // sgn0(c1) MUST equal 0\nfunction map_to_curve_elligator2_edwards25519(u) {\n const { xMn, xMd, yMn, yMd } = map_to_curve_elligator2_curve25519(u); // 1. (xMn, xMd, yMn, yMd) =\n // map_to_curve_elligator2_curve25519(u)\n let xn = Fp.mul(xMn, yMd); // 2. xn = xMn * yMd\n xn = Fp.mul(xn, ELL2_C1_EDWARDS); // 3. xn = xn * c1\n let xd = Fp.mul(xMd, yMn); // 4. xd = xMd * yMn # xn / xd = c1 * xM / yM\n let yn = Fp.sub(xMn, xMd); // 5. yn = xMn - xMd\n let yd = Fp.add(xMn, xMd); // 6. yd = xMn + xMd # (n / d - 1) / (n / d + 1) = (n - d) / (n + d)\n let tv1 = Fp.mul(xd, yd); // 7. tv1 = xd * yd\n let e = Fp.eql(tv1, Fp.ZERO); // 8. e = tv1 == 0\n xn = Fp.cmov(xn, Fp.ZERO, e); // 9. xn = CMOV(xn, 0, e)\n xd = Fp.cmov(xd, Fp.ONE, e); // 10. xd = CMOV(xd, 1, e)\n yn = Fp.cmov(yn, Fp.ONE, e); // 11. yn = CMOV(yn, 1, e)\n yd = Fp.cmov(yd, Fp.ONE, e); // 12. yd = CMOV(yd, 1, e)\n const inv = Fp.invertBatch([xd, yd]); // batch division\n return { x: Fp.mul(xn, inv[0]), y: Fp.mul(yn, inv[1]) }; // 13. return (xn, xd, yn, yd)\n}\nconst htf = /* @__PURE__ */ (() => createHasher(ed25519.ExtendedPoint, (scalars) => map_to_curve_elligator2_edwards25519(scalars[0]), {\n DST: 'edwards25519_XMD:SHA-512_ELL2_RO_',\n encodeDST: 'edwards25519_XMD:SHA-512_ELL2_NU_',\n p: Fp.ORDER,\n m: 1,\n k: 128,\n expand: 'xmd',\n hash: sha512,\n}))();\nexport const hashToCurve = /* @__PURE__ */ (() => htf.hashToCurve)();\nexport const encodeToCurve = /* @__PURE__ */ (() => htf.encodeToCurve)();\nfunction assertRstPoint(other) {\n if (!(other instanceof RistPoint))\n throw new Error('RistrettoPoint expected');\n}\n// √(-1) aka √(a) aka 2^((p-1)/4)\nconst SQRT_M1 = ED25519_SQRT_M1;\n// √(ad - 1)\nconst SQRT_AD_MINUS_ONE = BigInt('25063068953384623474111414158702152701244531502492656460079210482610430750235');\n// 1 / √(a-d)\nconst INVSQRT_A_MINUS_D = BigInt('54469307008909316920995813868745141605393597292927456921205312896311721017578');\n// 1-d²\nconst ONE_MINUS_D_SQ = BigInt('1159843021668779879193775521855586647937357759715417654439879720876111806838');\n// (d-1)²\nconst D_MINUS_ONE_SQ = BigInt('40440834346308536858101042469323190826248399146238708352240133220865137265952');\n// Calculates 1/√(number)\nconst invertSqrt = (number) => uvRatio(_1n, number);\nconst MAX_255B = BigInt('0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff');\nconst bytes255ToNumberLE = (bytes) => ed25519.CURVE.Fp.create(bytesToNumberLE(bytes) & MAX_255B);\n// Computes Elligator map for Ristretto\n// https://ristretto.group/formulas/elligator.html\nfunction calcElligatorRistrettoMap(r0) {\n const { d } = ed25519.CURVE;\n const P = ed25519.CURVE.Fp.ORDER;\n const mod = ed25519.CURVE.Fp.create;\n const r = mod(SQRT_M1 * r0 * r0); // 1\n const Ns = mod((r + _1n) * ONE_MINUS_D_SQ); // 2\n let c = BigInt(-1); // 3\n const D = mod((c - d * r) * mod(r + d)); // 4\n let { isValid: Ns_D_is_sq, value: s } = uvRatio(Ns, D); // 5\n let s_ = mod(s * r0); // 6\n if (!isNegativeLE(s_, P))\n s_ = mod(-s_);\n if (!Ns_D_is_sq)\n s = s_; // 7\n if (!Ns_D_is_sq)\n c = r; // 8\n const Nt = mod(c * (r - _1n) * D_MINUS_ONE_SQ - D); // 9\n const s2 = s * s;\n const W0 = mod((s + s) * D); // 10\n const W1 = mod(Nt * SQRT_AD_MINUS_ONE); // 11\n const W2 = mod(_1n - s2); // 12\n const W3 = mod(_1n + s2); // 13\n return new ed25519.ExtendedPoint(mod(W0 * W3), mod(W2 * W1), mod(W1 * W3), mod(W0 * W2));\n}\n/**\n * Each ed25519/ExtendedPoint has 8 different equivalent points. This can be\n * a source of bugs for protocols like ring signatures. Ristretto was created to solve this.\n * Ristretto point operates in X:Y:Z:T extended coordinates like ExtendedPoint,\n * but it should work in its own namespace: do not combine those two.\n * https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-ristretto255-decaf448\n */\nclass RistPoint {\n // Private property to discourage combining ExtendedPoint + RistrettoPoint\n // Always use Ristretto encoding/decoding instead.\n constructor(ep) {\n this.ep = ep;\n }\n static fromAffine(ap) {\n return new RistPoint(ed25519.ExtendedPoint.fromAffine(ap));\n }\n /**\n * Takes uniform output of 64-byte hash function like sha512 and converts it to `RistrettoPoint`.\n * The hash-to-group operation applies Elligator twice and adds the results.\n * **Note:** this is one-way map, there is no conversion from point to hash.\n * https://ristretto.group/formulas/elligator.html\n * @param hex 64-byte output of a hash function\n */\n static hashToCurve(hex) {\n hex = ensureBytes('ristrettoHash', hex, 64);\n const r1 = bytes255ToNumberLE(hex.slice(0, 32));\n const R1 = calcElligatorRistrettoMap(r1);\n const r2 = bytes255ToNumberLE(hex.slice(32, 64));\n const R2 = calcElligatorRistrettoMap(r2);\n return new RistPoint(R1.add(R2));\n }\n /**\n * Converts ristretto-encoded string to ristretto point.\n * https://ristretto.group/formulas/decoding.html\n * @param hex Ristretto-encoded 32 bytes. Not every 32-byte string is valid ristretto encoding\n */\n static fromHex(hex) {\n hex = ensureBytes('ristrettoHex', hex, 32);\n const { a, d } = ed25519.CURVE;\n const P = ed25519.CURVE.Fp.ORDER;\n const mod = ed25519.CURVE.Fp.create;\n const emsg = 'RistrettoPoint.fromHex: the hex is not valid encoding of RistrettoPoint';\n const s = bytes255ToNumberLE(hex);\n // 1. Check that s_bytes is the canonical encoding of a field element, or else abort.\n // 3. Check that s is non-negative, or else abort\n if (!equalBytes(numberToBytesLE(s, 32), hex) || isNegativeLE(s, P))\n throw new Error(emsg);\n const s2 = mod(s * s);\n const u1 = mod(_1n + a * s2); // 4 (a is -1)\n const u2 = mod(_1n - a * s2); // 5\n const u1_2 = mod(u1 * u1);\n const u2_2 = mod(u2 * u2);\n const v = mod(a * d * u1_2 - u2_2); // 6\n const { isValid, value: I } = invertSqrt(mod(v * u2_2)); // 7\n const Dx = mod(I * u2); // 8\n const Dy = mod(I * Dx * v); // 9\n let x = mod((s + s) * Dx); // 10\n if (isNegativeLE(x, P))\n x = mod(-x); // 10\n const y = mod(u1 * Dy); // 11\n const t = mod(x * y); // 12\n if (!isValid || isNegativeLE(t, P) || y === _0n)\n throw new Error(emsg);\n return new RistPoint(new ed25519.ExtendedPoint(x, y, _1n, t));\n }\n /**\n * Encodes ristretto point to Uint8Array.\n * https://ristretto.group/formulas/encoding.html\n */\n toRawBytes() {\n let { ex: x, ey: y, ez: z, et: t } = this.ep;\n const P = ed25519.CURVE.Fp.ORDER;\n const mod = ed25519.CURVE.Fp.create;\n const u1 = mod(mod(z + y) * mod(z - y)); // 1\n const u2 = mod(x * y); // 2\n // Square root always exists\n const u2sq = mod(u2 * u2);\n const { value: invsqrt } = invertSqrt(mod(u1 * u2sq)); // 3\n const D1 = mod(invsqrt * u1); // 4\n const D2 = mod(invsqrt * u2); // 5\n const zInv = mod(D1 * D2 * t); // 6\n let D; // 7\n if (isNegativeLE(t * zInv, P)) {\n let _x = mod(y * SQRT_M1);\n let _y = mod(x * SQRT_M1);\n x = _x;\n y = _y;\n D = mod(D1 * INVSQRT_A_MINUS_D);\n }\n else {\n D = D2; // 8\n }\n if (isNegativeLE(x * zInv, P))\n y = mod(-y); // 9\n let s = mod((z - y) * D); // 10 (check footer's note, no sqrt(-a))\n if (isNegativeLE(s, P))\n s = mod(-s);\n return numberToBytesLE(s, 32); // 11\n }\n toHex() {\n return bytesToHex(this.toRawBytes());\n }\n toString() {\n return this.toHex();\n }\n // Compare one point to another.\n equals(other) {\n assertRstPoint(other);\n const { ex: X1, ey: Y1 } = this.ep;\n const { ex: X2, ey: Y2 } = other.ep;\n const mod = ed25519.CURVE.Fp.create;\n // (x1 * y2 == y1 * x2) | (y1 * y2 == x1 * x2)\n const one = mod(X1 * Y2) === mod(Y1 * X2);\n const two = mod(Y1 * Y2) === mod(X1 * X2);\n return one || two;\n }\n add(other) {\n assertRstPoint(other);\n return new RistPoint(this.ep.add(other.ep));\n }\n subtract(other) {\n assertRstPoint(other);\n return new RistPoint(this.ep.subtract(other.ep));\n }\n multiply(scalar) {\n return new RistPoint(this.ep.multiply(scalar));\n }\n multiplyUnsafe(scalar) {\n return new RistPoint(this.ep.multiplyUnsafe(scalar));\n }\n double() {\n return new RistPoint(this.ep.double());\n }\n negate() {\n return new RistPoint(this.ep.negate());\n }\n}\nexport const RistrettoPoint = /* @__PURE__ */ (() => {\n if (!RistPoint.BASE)\n RistPoint.BASE = new RistPoint(ed25519.ExtendedPoint.BASE);\n if (!RistPoint.ZERO)\n RistPoint.ZERO = new RistPoint(ed25519.ExtendedPoint.ZERO);\n return RistPoint;\n})();\n// Hashing to ristretto255. https://www.rfc-editor.org/rfc/rfc9380#appendix-B\nexport const hashToRistretto255 = (msg, options) => {\n const d = options.DST;\n const DST = typeof d === 'string' ? utf8ToBytes(d) : d;\n const uniform_bytes = expand_message_xmd(msg, DST, 64, sha512);\n const P = RistPoint.hashToCurve(uniform_bytes);\n return P;\n};\nexport const hash_to_ristretto255 = hashToRistretto255; // legacy\n//# sourceMappingURL=ed25519.js.map","/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Utilities\n/**\n * @__NO_SIDE_EFFECTS__\n */\nexport function assertNumber(n) {\n if (!Number.isSafeInteger(n))\n throw new Error(`Wrong integer: ${n}`);\n}\nfunction isBytes(a) {\n return (a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction chain(...args) {\n const id = (a) => a;\n // Wrap call in closure so JIT can inline calls\n const wrap = (a, b) => (c) => a(b(c));\n // Construct chain of args[-1].encode(args[-2].encode([...]))\n const encode = args.map((x) => x.encode).reduceRight(wrap, id);\n // Construct chain of args[0].decode(args[1].decode(...))\n const decode = args.map((x) => x.decode).reduce(wrap, id);\n return { encode, decode };\n}\n/**\n * Encodes integer radix representation to array of strings using alphabet and back\n * @__NO_SIDE_EFFECTS__\n */\nfunction alphabet(alphabet) {\n return {\n encode: (digits) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('alphabet.encode input should be an array of numbers');\n return digits.map((i) => {\n assertNumber(i);\n if (i < 0 || i >= alphabet.length)\n throw new Error(`Digit index outside alphabet: ${i} (alphabet: ${alphabet.length})`);\n return alphabet[i];\n });\n },\n decode: (input) => {\n if (!Array.isArray(input) || (input.length && typeof input[0] !== 'string'))\n throw new Error('alphabet.decode input should be array of strings');\n return input.map((letter) => {\n if (typeof letter !== 'string')\n throw new Error(`alphabet.decode: not string element=${letter}`);\n const index = alphabet.indexOf(letter);\n if (index === -1)\n throw new Error(`Unknown letter: \"${letter}\". Allowed: ${alphabet}`);\n return index;\n });\n },\n };\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction join(separator = '') {\n if (typeof separator !== 'string')\n throw new Error('join separator should be string');\n return {\n encode: (from) => {\n if (!Array.isArray(from) || (from.length && typeof from[0] !== 'string'))\n throw new Error('join.encode input should be array of strings');\n for (let i of from)\n if (typeof i !== 'string')\n throw new Error(`join.encode: non-string input=${i}`);\n return from.join(separator);\n },\n decode: (to) => {\n if (typeof to !== 'string')\n throw new Error('join.decode input should be string');\n return to.split(separator);\n },\n };\n}\n/**\n * Pad strings array so it has integer number of bits\n * @__NO_SIDE_EFFECTS__\n */\nfunction padding(bits, chr = '=') {\n assertNumber(bits);\n if (typeof chr !== 'string')\n throw new Error('padding chr should be string');\n return {\n encode(data) {\n if (!Array.isArray(data) || (data.length && typeof data[0] !== 'string'))\n throw new Error('padding.encode input should be array of strings');\n for (let i of data)\n if (typeof i !== 'string')\n throw new Error(`padding.encode: non-string input=${i}`);\n while ((data.length * bits) % 8)\n data.push(chr);\n return data;\n },\n decode(input) {\n if (!Array.isArray(input) || (input.length && typeof input[0] !== 'string'))\n throw new Error('padding.encode input should be array of strings');\n for (let i of input)\n if (typeof i !== 'string')\n throw new Error(`padding.decode: non-string input=${i}`);\n let end = input.length;\n if ((end * bits) % 8)\n throw new Error('Invalid padding: string should have whole number of bytes');\n for (; end > 0 && input[end - 1] === chr; end--) {\n if (!(((end - 1) * bits) % 8))\n throw new Error('Invalid padding: string has too much padding');\n }\n return input.slice(0, end);\n },\n };\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction normalize(fn) {\n if (typeof fn !== 'function')\n throw new Error('normalize fn should be function');\n return { encode: (from) => from, decode: (to) => fn(to) };\n}\n/**\n * Slow: O(n^2) time complexity\n * @__NO_SIDE_EFFECTS__\n */\nfunction convertRadix(data, from, to) {\n // base 1 is impossible\n if (from < 2)\n throw new Error(`convertRadix: wrong from=${from}, base cannot be less than 2`);\n if (to < 2)\n throw new Error(`convertRadix: wrong to=${to}, base cannot be less than 2`);\n if (!Array.isArray(data))\n throw new Error('convertRadix: data should be array');\n if (!data.length)\n return [];\n let pos = 0;\n const res = [];\n const digits = Array.from(data);\n digits.forEach((d) => {\n assertNumber(d);\n if (d < 0 || d >= from)\n throw new Error(`Wrong integer: ${d}`);\n });\n while (true) {\n let carry = 0;\n let done = true;\n for (let i = pos; i < digits.length; i++) {\n const digit = digits[i];\n const digitBase = from * carry + digit;\n if (!Number.isSafeInteger(digitBase) ||\n (from * carry) / from !== carry ||\n digitBase - digit !== from * carry) {\n throw new Error('convertRadix: carry overflow');\n }\n carry = digitBase % to;\n const rounded = Math.floor(digitBase / to);\n digits[i] = rounded;\n if (!Number.isSafeInteger(rounded) || rounded * to + carry !== digitBase)\n throw new Error('convertRadix: carry overflow');\n if (!done)\n continue;\n else if (!rounded)\n pos = i;\n else\n done = false;\n }\n res.push(carry);\n if (done)\n break;\n }\n for (let i = 0; i < data.length - 1 && data[i] === 0; i++)\n res.push(0);\n return res.reverse();\n}\nconst gcd = /* @__NO_SIDE_EFFECTS__ */ (a, b) => (!b ? a : gcd(b, a % b));\nconst radix2carry = /*@__NO_SIDE_EFFECTS__ */ (from, to) => from + (to - gcd(from, to));\n/**\n * Implemented with numbers, because BigInt is 5x slower\n * @__NO_SIDE_EFFECTS__\n */\nfunction convertRadix2(data, from, to, padding) {\n if (!Array.isArray(data))\n throw new Error('convertRadix2: data should be array');\n if (from <= 0 || from > 32)\n throw new Error(`convertRadix2: wrong from=${from}`);\n if (to <= 0 || to > 32)\n throw new Error(`convertRadix2: wrong to=${to}`);\n if (radix2carry(from, to) > 32) {\n throw new Error(`convertRadix2: carry overflow from=${from} to=${to} carryBits=${radix2carry(from, to)}`);\n }\n let carry = 0;\n let pos = 0; // bitwise position in current element\n const mask = 2 ** to - 1;\n const res = [];\n for (const n of data) {\n assertNumber(n);\n if (n >= 2 ** from)\n throw new Error(`convertRadix2: invalid data word=${n} from=${from}`);\n carry = (carry << from) | n;\n if (pos + from > 32)\n throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`);\n pos += from;\n for (; pos >= to; pos -= to)\n res.push(((carry >> (pos - to)) & mask) >>> 0);\n carry &= 2 ** pos - 1; // clean carry, otherwise it will cause overflow\n }\n carry = (carry << (to - pos)) & mask;\n if (!padding && pos >= from)\n throw new Error('Excess padding');\n if (!padding && carry)\n throw new Error(`Non-zero padding: ${carry}`);\n if (padding && pos > 0)\n res.push(carry >>> 0);\n return res;\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix(num) {\n assertNumber(num);\n return {\n encode: (bytes) => {\n if (!isBytes(bytes))\n throw new Error('radix.encode input should be Uint8Array');\n return convertRadix(Array.from(bytes), 2 ** 8, num);\n },\n decode: (digits) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('radix.decode input should be array of numbers');\n return Uint8Array.from(convertRadix(digits, num, 2 ** 8));\n },\n };\n}\n/**\n * If both bases are power of same number (like `2**8 <-> 2**64`),\n * there is a linear algorithm. For now we have implementation for power-of-two bases only.\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix2(bits, revPadding = false) {\n assertNumber(bits);\n if (bits <= 0 || bits > 32)\n throw new Error('radix2: bits should be in (0..32]');\n if (radix2carry(8, bits) > 32 || radix2carry(bits, 8) > 32)\n throw new Error('radix2: carry overflow');\n return {\n encode: (bytes) => {\n if (!isBytes(bytes))\n throw new Error('radix2.encode input should be Uint8Array');\n return convertRadix2(Array.from(bytes), 8, bits, !revPadding);\n },\n decode: (digits) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('radix2.decode input should be array of numbers');\n return Uint8Array.from(convertRadix2(digits, bits, 8, revPadding));\n },\n };\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction unsafeWrapper(fn) {\n if (typeof fn !== 'function')\n throw new Error('unsafeWrapper fn should be function');\n return function (...args) {\n try {\n return fn.apply(null, args);\n }\n catch (e) { }\n };\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction checksum(len, fn) {\n assertNumber(len);\n if (typeof fn !== 'function')\n throw new Error('checksum fn should be function');\n return {\n encode(data) {\n if (!isBytes(data))\n throw new Error('checksum.encode: input should be Uint8Array');\n const checksum = fn(data).slice(0, len);\n const res = new Uint8Array(data.length + len);\n res.set(data);\n res.set(checksum, data.length);\n return res;\n },\n decode(data) {\n if (!isBytes(data))\n throw new Error('checksum.decode: input should be Uint8Array');\n const payload = data.slice(0, -len);\n const newChecksum = fn(payload).slice(0, len);\n const oldChecksum = data.slice(-len);\n for (let i = 0; i < len; i++)\n if (newChecksum[i] !== oldChecksum[i])\n throw new Error('Invalid checksum');\n return payload;\n },\n };\n}\n// prettier-ignore\nexport const utils = {\n alphabet, chain, checksum, convertRadix, convertRadix2, radix, radix2, join, padding,\n};\n// RFC 4648 aka RFC 3548\n// ---------------------\nexport const base16 = /* @__PURE__ */ chain(radix2(4), alphabet('0123456789ABCDEF'), join(''));\nexport const base32 = /* @__PURE__ */ chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), padding(5), join(''));\nexport const base32hex = /* @__PURE__ */ chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), padding(5), join(''));\nexport const base32crockford = /* @__PURE__ */ chain(radix2(5), alphabet('0123456789ABCDEFGHJKMNPQRSTVWXYZ'), join(''), normalize((s) => s.toUpperCase().replace(/O/g, '0').replace(/[IL]/g, '1')));\nexport const base64 = /* @__PURE__ */ chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), padding(6), join(''));\nexport const base64url = /* @__PURE__ */ chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), padding(6), join(''));\nexport const base64urlnopad = /* @__PURE__ */ chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), join(''));\n// base58 code\n// -----------\nconst genBase58 = (abc) => chain(radix(58), alphabet(abc), join(''));\nexport const base58 = /* @__PURE__ */ genBase58('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz');\nexport const base58flickr = /* @__PURE__ */ genBase58('123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ');\nexport const base58xrp = /* @__PURE__ */ genBase58('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz');\n// xmr ver is done in 8-byte blocks (which equals 11 chars in decoding). Last (non-full) block padded with '1' to size in XMR_BLOCK_LEN.\n// Block encoding significantly reduces quadratic complexity of base58.\n// Data len (index) -> encoded block len\nconst XMR_BLOCK_LEN = [0, 2, 3, 5, 6, 7, 9, 10, 11];\nexport const base58xmr = {\n encode(data) {\n let res = '';\n for (let i = 0; i < data.length; i += 8) {\n const block = data.subarray(i, i + 8);\n res += base58.encode(block).padStart(XMR_BLOCK_LEN[block.length], '1');\n }\n return res;\n },\n decode(str) {\n let res = [];\n for (let i = 0; i < str.length; i += 11) {\n const slice = str.slice(i, i + 11);\n const blockLen = XMR_BLOCK_LEN.indexOf(slice.length);\n const block = base58.decode(slice);\n for (let j = 0; j < block.length - blockLen; j++) {\n if (block[j] !== 0)\n throw new Error('base58xmr: wrong padding');\n }\n res = res.concat(Array.from(block.slice(block.length - blockLen)));\n }\n return Uint8Array.from(res);\n },\n};\nexport const createBase58check = /* @__PURE__ */ (sha256) => chain(checksum(4, (data) => sha256(sha256(data))), base58);\n// legacy export, bad name\nexport const base58check = createBase58check;\nconst BECH_ALPHABET = /* @__PURE__ */ chain(alphabet('qpzry9x8gf2tvdw0s3jn54khce6mua7l'), join(''));\nconst POLYMOD_GENERATORS = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction bech32Polymod(pre) {\n const b = pre >> 25;\n let chk = (pre & 0x1ffffff) << 5;\n for (let i = 0; i < POLYMOD_GENERATORS.length; i++) {\n if (((b >> i) & 1) === 1)\n chk ^= POLYMOD_GENERATORS[i];\n }\n return chk;\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction bechChecksum(prefix, words, encodingConst = 1) {\n const len = prefix.length;\n let chk = 1;\n for (let i = 0; i < len; i++) {\n const c = prefix.charCodeAt(i);\n if (c < 33 || c > 126)\n throw new Error(`Invalid prefix (${prefix})`);\n chk = bech32Polymod(chk) ^ (c >> 5);\n }\n chk = bech32Polymod(chk);\n for (let i = 0; i < len; i++)\n chk = bech32Polymod(chk) ^ (prefix.charCodeAt(i) & 0x1f);\n for (let v of words)\n chk = bech32Polymod(chk) ^ v;\n for (let i = 0; i < 6; i++)\n chk = bech32Polymod(chk);\n chk ^= encodingConst;\n return BECH_ALPHABET.encode(convertRadix2([chk % 2 ** 30], 30, 5, false));\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction genBech32(encoding) {\n const ENCODING_CONST = encoding === 'bech32' ? 1 : 0x2bc830a3;\n const _words = radix2(5);\n const fromWords = _words.decode;\n const toWords = _words.encode;\n const fromWordsUnsafe = unsafeWrapper(fromWords);\n function encode(prefix, words, limit = 90) {\n if (typeof prefix !== 'string')\n throw new Error(`bech32.encode prefix should be string, not ${typeof prefix}`);\n if (!Array.isArray(words) || (words.length && typeof words[0] !== 'number'))\n throw new Error(`bech32.encode words should be array of numbers, not ${typeof words}`);\n const actualLength = prefix.length + 7 + words.length;\n if (limit !== false && actualLength > limit)\n throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`);\n const lowered = prefix.toLowerCase();\n const sum = bechChecksum(lowered, words, ENCODING_CONST);\n return `${lowered}1${BECH_ALPHABET.encode(words)}${sum}`;\n }\n function decode(str, limit = 90) {\n if (typeof str !== 'string')\n throw new Error(`bech32.decode input should be string, not ${typeof str}`);\n if (str.length < 8 || (limit !== false && str.length > limit))\n throw new TypeError(`Wrong string length: ${str.length} (${str}). Expected (8..${limit})`);\n // don't allow mixed case\n const lowered = str.toLowerCase();\n if (str !== lowered && str !== str.toUpperCase())\n throw new Error(`String must be lowercase or uppercase`);\n str = lowered;\n const sepIndex = str.lastIndexOf('1');\n if (sepIndex === 0 || sepIndex === -1)\n throw new Error(`Letter \"1\" must be present between prefix and data only`);\n const prefix = str.slice(0, sepIndex);\n const _words = str.slice(sepIndex + 1);\n if (_words.length < 6)\n throw new Error('Data must be at least 6 characters long');\n const words = BECH_ALPHABET.decode(_words).slice(0, -6);\n const sum = bechChecksum(prefix, words, ENCODING_CONST);\n if (!_words.endsWith(sum))\n throw new Error(`Invalid checksum in ${str}: expected \"${sum}\"`);\n return { prefix, words };\n }\n const decodeUnsafe = unsafeWrapper(decode);\n function decodeToBytes(str) {\n const { prefix, words } = decode(str, false);\n return { prefix, words, bytes: fromWords(words) };\n }\n return { encode, decode, decodeToBytes, decodeUnsafe, fromWords, fromWordsUnsafe, toWords };\n}\nexport const bech32 = /* @__PURE__ */ genBech32('bech32');\nexport const bech32m = /* @__PURE__ */ genBech32('bech32m');\nexport const utf8 = {\n encode: (data) => new TextDecoder().decode(data),\n decode: (str) => new TextEncoder().encode(str),\n};\nexport const hex = /* @__PURE__ */ chain(radix2(4), alphabet('0123456789abcdef'), join(''), normalize((s) => {\n if (typeof s !== 'string' || s.length % 2)\n throw new TypeError(`hex.decode: expected string, got ${typeof s} with length ${s.length}`);\n return s.toLowerCase();\n}));\n// prettier-ignore\nconst CODERS = {\n utf8, hex, base16, base32, base64, base64url, base58, base58xmr\n};\nconst coderTypeError = 'Invalid encoding type. Available types: utf8, hex, base16, base32, base64, base64url, base58, base58xmr';\nexport const bytesToString = (type, bytes) => {\n if (typeof type !== 'string' || !CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (!isBytes(bytes))\n throw new TypeError('bytesToString() expects Uint8Array');\n return CODERS[type].encode(bytes);\n};\nexport const str = bytesToString; // as in python, but for bytes only\nexport const stringToBytes = (type, str) => {\n if (!CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (typeof str !== 'string')\n throw new TypeError('stringToBytes() expects string');\n return CODERS[type].decode(str);\n};\nexport const bytes = stringToBytes;\n",null,null,null,null,null,null,null,null,null,null],"names":["base64Js","b64","lens","getLens","validLen","placeHoldersLen","tmp","i","arr","Arr","_byteLength","curByte","len","revLookup","charCodeAt","uint8","length","extraBytes","parts","maxChunkLength","len2","push","encodeChunk","lookup","join","Uint8Array","Array","code","Error","indexOf","start","end","num","output","ieee754","buffer","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","d","s","NaN","Infinity","Math","pow","value","c","rt","abs","isNaN","floor","log","LN2","base64","require$$0","require$$1","customInspectSymbol","Symbol","exports","Buffer","SlowBuffer","alloc","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","RangeError","buf","Object","setPrototypeOf","prototype","arg","encodingOrOffset","TypeError","allocUnsafe","from","string","encoding","isEncoding","byteLength","actual","write","slice","fromString","ArrayBuffer","isView","arrayView","isInstance","copy","fromArrayBuffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","valueOf","b","obj","isBuffer","checked","undefined","numberIsNaN","type","isArray","data","fromObject","toPrimitive","assertSize","size","array","toString","mustMatch","arguments","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","this","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","bidirectionalIndexOf","val","dir","arrayIndexOf","call","lastIndexOf","indexSize","arrLength","valLength","String","read","readUInt16BE","foundIndex","found","j","hexWrite","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","min","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","apply","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","console","error","defineProperty","enumerable","get","poolSize","fill","allocUnsafeSlow","_isBuffer","compare","a","x","y","concat","list","pos","set","swap16","swap32","swap64","toLocaleString","equals","inspect","max","replace","trim","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","ret","out","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","BigInt","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","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","message","addNumericalSeparator","range","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","input","msg","received","isInteger","INVALID_BASE64_RE","leadSurrogate","toByteArray","split","base64clean","src","dst","alphabet","table","i16","fn","BufferBigIntNotDefined","TOKEN_PROGRAM_ID","PublicKey","ASSOCIATED_TOKEN_PROGRAM_ID","Layout_1","constant","utf8","cstr","blob","unionLayoutDiscriminator","union","seq","bits","struct","f64be","f64","f32be","f32","ns64be","s48be","s40be","s32be","s24be","s16be","ns64","s48","s40","s32","s24","buffer_1","checkUint8Array","uint8ArrayToBuffer","Layout","span","property","replicate","rv","create","assign","fromArray","values","nameWithProperty","bindConstructorLayout","Class","layout","hasOwnProperty","layout_","boundConstructor_","makeDestinationObject","encode","decode","isCount","GreedyCount","ExternalLayout","elementSpan","rem","OffsetLayout","UInt","UIntBE","IntBE","V2E32","divmodInt64","hi32","lo32","NearUInt64","roundedInt64","NearUInt64BE","NearInt64","NearInt64BE","Float","FloatBE","Double","DoubleBE","Sequence","elementLayout","count","idx","getSpan","elo","reduce","v","Structure","fields","decodePrefixes","acc","fd","fsp","dest","firstOffset","lastOffset","lastWrote","fv","shift","layoutFor","offsetOf","UnionLayoutDiscriminator","UnionDiscriminator","discr","defaultLayout","discriminator","configGetSourceVariant","gsv","boundGetSourceVariant","bind","vlo","getVariant","defaultGetSourceVariant","registry","tag","dlo","clo","usesPrefixDiscriminator","contentOffset","getSourceVariant","addVariant","variant","VariantLayout","vb","Union","fixBitwiseResult","BitStructure","word","msb","_packedSetValue","_packedGetValue","addField","bf","BitField","addBoolean","Boolean","fieldFor","container","usedBits","sum","totalBits","valueMask","wordMask","wordValue","srcBuffer","CString","srcb","maxSpan","encodeDecode","browser","toBigIntLE_1","toBigIntLE","reversed","reverse","hex","toBigIntBE","toBufferLE_1","toBufferLE","width","padStart","toBufferBE","u64","bigIntLayout","bigInt","bool","u8","boolLayout","publicKey","publicKeyLayout","toBuffer","TokenError","TokenAccountNotFoundError","TokenInvalidAccountOwnerError","TokenInvalidAccountSizeError","TokenInvalidMintError","TokenOwnerOffCurveError","AccountType","ACCOUNT_TYPE_SIZE","MULTISIG_SIZE","AccountState","AccountLayout","u32","ACCOUNT_SIZE","MintLayout","MINT_SIZE","async","getMint","connection","address","commitment","programId","info","owner","rawMint","tlvData","Mint","mintAuthority","mintAuthorityOption","supply","decimals","isInitialized","freezeAuthority","freezeAuthorityOption","unpackMint","getAccountInfo","getAssociatedTokenAddressSync","mint","allowOwnerOffCurve","associatedTokenProgramId","isOnCurve","findProgramAddressSync","createAssociatedTokenAccountIdempotentInstruction","payer","associatedToken","instructionData","keys","pubkey","isSigner","isWritable","SystemProgram","TransactionInstruction","buildAssociatedTokenAccountInstruction","ErrorType","SNSError","captureStackTrace","Numberu32","fromBuffer","InvalidBufferLength","toNumber","Numberu64","U64Overflow","module","assert","inherits","ctor","superCtor","super_","TempCtor","BN","number","base","endian","isBN","negative","words","red","_init","wordSize","window","parseHex4Bits","index","parseHexByte","lowerBound","r","parseBase","move","left","right","cmp","_initNumber","_initArray","_parseHex","_parseBase","toArray","ceil","w","off","_strip","limbLen","limbPow","total","mod","imuln","_iaddn","_move","clone","_expand","_normSign","for","zeros","groupSizes","groupBases","smallMulTo","self","carry","k","ncarry","rword","maxJ","padding","groupSize","groupBase","isZero","modrn","idivn","toArrayLike","ArrayType","reqLength","allocate","_toArrayLikeLE","position","_toArrayLikeBE","clz32","_countBits","t","_zeroBits","bitLength","zeroBits","toTwos","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","bit","wbit","iadd","isub","add","comb10MulTo","mid","o","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","imul","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","bigMulTo","hncarry","jumboMulTo","mulTo","mulf","isNegNum","muln","sqr","isqr","toBitArray","q","iushln","carryMask","newCarry","ishln","iushrn","hint","extended","h","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","_wordDiv","mode","bhi","diff","qj","div","divmod","positive","divn","umod","divRound","dm","half","r2","andln","p","modn","egcd","A","B","C","D","g","isEven","yp","xp","im","isOdd","jm","gcd","_invmp","x1","x2","delta","cmpn","invm","bincn","ucmp","gtn","gt","gten","gte","ltn","lt","lten","lte","eqn","eq","Red","toRed","ctx","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","sqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","_tmp","K256","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","imulK","strip","outLen","prev","next","mod3","one","nOne","lpow","z","inv","wnd","current","currentLen","mont","u","copyProps","key","SafeBuffer","_Buffer","ALPHABET","BASE_MAP","charAt","xc","BASE","LEADER","FACTOR","iFACTOR","decodeUnsafe","source","psz","zeroes","b256","it3","it4","vch","pbegin","pend","b58","it1","it2","repeat","bs58","inRange","ToDictionary","Stream","tokens","endOfStream","prepend","token","unshift","pop","finished","decoderError","fatal","opt_code_point","DEFAULT_ENCODING","TextDecoder","options","_streaming","_BOMseen","_decoder","_fatal","_ignoreBOM","TextEncoder","_encoder","_options","UTF8Decoder","utf8_code_point","utf8_bytes_seen","utf8_bytes_needed","utf8_lower_boundary","utf8_upper_boundary","handler","stream","bite","code_point","UTF8Encoder","temp","result","input_stream","code_points","cp","codePointsToString","opt_string","stringToCodePoints","__createBinding","k2","__setModuleDefault","__decorate","decorators","desc","getOwnPropertyDescriptor","Reflect","decorate","__importStar","__esModule","__importDefault","default","lib","deserializeUnchecked_1","deserializeUnchecked","deserialize_1","deserialize","serialize_1","serialize","BinaryWriter","BorshError","baseDecode","bn_js_1","bs58_1","require$$2","textDecoder","baseEncode","INITIAL_LENGTH","fieldPath","originalMessage","addToFieldPath","fieldName","splice","maybeResize","writeU8","writeU16","writeU32","writeU64","writeBuffer","writeU128","writeU256","writeU512","writeString","writeFixedArray","writeArray","elem","handlingRangeError","propertyKey","propertyDescriptor","originalMethod","args","BinaryReader","readU8","readU16","readU32","readU64","readBuffer","readU128","readU256","readU512","readString","readFixedArray","readArray","capitalizeFirstLetter","toUpperCase","serializeField","schema","fieldType","writer","item","kind","forEach","serializeStruct","borshSerialize","structSchema","map","field","Writer","deserializeField","reader","Map","deserializeStruct","classType","borshDeserialize","Reader","createInstruction","nameProgramId","systemProgramId","nameKey","nameOwnerKey","payerKey","hashed_name","lamports","space","nameClassKey","nameParent","nameParentOwner","buffers","Int8Array","updateInstruction","nameAccountKey","input_data","nameUpdateSigner","transferInstruction","newOwnerKey","currentNameOwnerKey","parentOwner","deleteInstruction","refundTargetKey","createV2Instruction","getInstruction","rentSysvarAccount","rootDomain","nameAccount","reverseLookupAccount","centralState","buyer","buyerTokenAccount","usdcVault","state","createReverseInstruction","namingServiceProgram","reverseLookup","systemProgram","feePayer","rentSysvar","parentName","parentNameOwner","createInstructionV3","referrerIdxOpt","buyerTokenSource","pythMappingAcc","pythProductAcc","pythPriceAcc","vault","splTokenProgram","referrerAccountOpt","createWithNftInstruction","nftSource","nftMetadata","nftMint","masterEdition","collection","mplTokenMetadata","burnInstruction","nameServiceId","domain","resellingState","reallocInstruction","NAME_TOKENIZER_ID","MINT_PREFIX","Tag","NftRecord","nonce","retrieve","accountInfo","findKey","findProgramAddress","retrieveNftOwner","filters","memcmp","toBase58","dataSize","getProgramAccounts","account","retrieveNfts","getFilter","closure","record","getRecordFromMint","retrieveRecords","promises","Promise","all","filter","NameRegistryState","class","HEADER_LEN","AccountDoesNotExist","_a","nftOwner","_retrieveBatch","nameAccountKeys","nameAccounts","getMultipleAccountsInfo","retrieveBatch","lengths","isBytes","exists","instance","checkFinished","destroyed","crypto","globalThis","createView","DataView","rotr","Uint32Array","toBytes","Hash","_cloneInto","wrapConstructor","hashCons","hashC","update","digest","outputLen","blockLen","SHA2","padOffset","view","take","process","dataView","roundClean","digestInto","setBigUint64","_32n","_u32_max","wh","wl","l","setUint32","oview","destroy","to","Chi","Maj","SHA256_K","IV","SHA256_W","SHA256","F","G","H","getUint32","W15","W2","s0","s1","T1","T2","sha256","NAME_PROGRAM_ID","HASH_PREFIX","ROOT_DOMAIN_ACCOUNT","REGISTER_PROGRAM_ID","PYTH_FIDA_PRICE_ACC","BONFIDA_FIDA_BNB","REVERSE_LOOKUP_CLASS","TWITTER_VERIFICATION_AUTHORITY","TWITTER_ROOT_PARENT_REGISTRY_KEY","SOL_RECORD_SIG_LEN","BONFIDA_USDC_BNB","USDC_MINT","REFERRERS","TOKENS_SYM_MINT","PYTH_FEEDS","price","product","PYTH_MAPPING_ACC","VAULT_OWNER","CUSTOM_BG_TLD","WOLVES_COLLECTION_METADATA","METAPLEX_ID","getNameOwner","getHashedName","hashed","getNameAccountKey","nameClass","seeds","performReverseLookup","hashedReverseLookup","NoAccountData","nameLength","performReverseLookupBatch","reverseLookupAccounts","_derive","parent","getDomainKey","endsWith","splitted","parentKey","isSub","subKey","recordPrefix","isSubRecord","InvalidInput","getReverseKey","Record","RECORD_V1_SIZE","SOL","ETH","BSC","Injective","AAAA","Background","RecordVersion","TINF_OK","TINF_DATA_ERROR","Tree","Uint16Array","trans","Data","sourceIndex","bitcount","destLen","ltree","dtree","sltree","sdtree","length_bits","length_base","dist_bits","dist_base","clcidx","code_tree","tinf_build_bits_base","offs","tinf_build_tree","tinf_getbit","tinf_read_bits","tinf_decode_symbol","cur","tinf_decode_trees","dt","hlit","hdist","hclen","clen","tinf_inflate_block_data","dist","tinf_inflate_uncompressed_block","tinf_build_fixed_trees","tinyInflate","bfinal","isBigEndian","swap_1","swap32LE","inflate","unicodeTrie","uncompressedLength","highStart","errorValue","DATA_BLOCK_LENGTH","INDEX_1_OFFSET","INDEX_2_BLOCK_LENGTH","version","VERSION","_hasatob","atob","_hasbtoa","btoa","_hasBuffer","_TD","_TE","b64ch","b64chs","b64tab","tab","b64re","_fromCC","_U8Afrom","it","_mkUriSafe","m0","_tidyB64","btoaPolyfill","bin","c0","c1","c2","asc","pad","substring","_btoa","_fromUint8Array","u8a","maxargs","strs","fromUint8Array","urlsafe","cb_utob","cc","re_utob","utob","_encode","encodeURI","re_btou","cb_btou","cccc","btou","atobPolyfill","test","u24","r1","_atob","_toUint8Array","toUint8Array","_unURI","_decode","isValid","_noEnum","extendString","_add","body","extendUint8Array","extendBuiltins","gBase64","fromBase64","toBase64","encodeURL","Base64","factory","types","Other","CR","LF","Control","Extend","ZWJ","Regional_Indicator","Prepend","SpacingMark","L","V","T","LV","LVT","Extended_Pictographic","typeTrieData","extPictData","UnicodeTrie","require$$3","typeTrie","extPict","is","GB11State","nextGraphemeClusterSize","ts","ri","gb11State","curr","graphemesplit","graphemeClusters","codePointAt","getHashedNameSync","getNameAccountKeySync","deserializeReverse","reverseLookupBatch","findSubdomains","filtersRevs","reverses","filtersSubs","subs","dataSlice","revKey","getReverseKeyFromDomainKey","rev","_deriveSync","classKey","getDomainKeySync","recordClass","V2","CENTRAL_STATE_SNS_RECORDS","getAllDomains","wallet","getDomainKeysWithReverses","encodedNameArr","names","pubKey","getAllRegisteredDomains","getReverseKeySync","domainKey","check","errorType","getTokenizedDomains","nftRecords","getDomainPriceFromName","splitGraphemes","root","ipv4Part","ipv4Regexes","fourOctet","RegExp","threeOctet","twoOctet","longValue","octalRegex","hexRegex","zoneIndex","ipv6Part","ipv6Regexes","native","deprecatedTransitional","transitional","expandIPv6","replacement","replacementCount","colonCount","lastColon","zoneId","match","ref","results","matchCIDR","second","partSize","cidrBits","part","parseIntAuto","padPart","ipaddr","IPv4","octets","octet","SpecialRanges","unspecified","broadcast","multicast","linkLocal","loopback","carrierGradeNat","private","reserved","other","cidrRange","prefixLengthFromSubnetMask","cidr","stop","zerotable","subnetMatch","toIPv4MappedAddress","IPv6","parse","toNormalizedString","broadcastAddressFromCIDR","parseCIDR","ipInterfaceOctets","subnetMaskOctets","subnetMaskFromPrefixLength","isIPv4","parser","isValidFourPartDecimal","networkAddressFromCIDR","maskLength","prefix","filledOctetCount","uniqueLocal","ipv4Mapped","rfc6145","rfc6052","teredo","benchmarking","amt","as112v6","deprecated","orchid2","isIPv4MappedAddress","toFixedLengthString","addr","suffix","toIPv4Address","high","low","toRFC5952String","regex","bestMatchIndex","bestMatchLength","exec","isIPv6","e2","rangeList","defaultName","rangeName","rangeSubnets","subnet","maxInt","overflow","stringFromCharCode","digitToBasic","digit","flag","adapt","numPoints","firstTime","baseMinusTMin","counter","extra","ucs2decode","inputLength","bias","currentValue","basicLength","handledCPCount","handledCPCountPlusOne","qMinusT","baseMinusT","U32_MASK64","fromBig","le","lst","Ah","Al","toBig","shrSH","_l","shrSL","rotrSH","rotrSL","rotrBH","rotrBL","rotr32H","_h","rotr32L","rotlSH","rotlSL","rotlBH","rotlBL","Bh","Bl","add3L","Cl","add3H","Ch","add4L","Dl","add4H","Dh","add5H","Eh","add5L","El","u64$1","SHA512_Kh","SHA512_Kl","SHA512_W_H","SHA512_W_L","SHA512","Fh","Fl","Gh","Gl","Hh","Hl","W15h","W15l","s0h","s0l","W2h","W2l","s1h","s1l","SUMl","SUMh","sigma1h","sigma1l","CHIh","CHIl","T1ll","T1h","T1l","sigma0h","sigma0l","MAJh","MAJl","All","sha512","_1n","_2n","hexes","_","bytesToHex","hexToNumber","asciis","_0","_9","_A","_F","_f","asciiToBase16","char","hexToBytes","hl","al","ai","n1","n2","bytesToNumberLE","numberToBytesBE","numberToBytesLE","ensureBytes","title","expectedLength","concatBytes","arrays","bitMask","validatorFns","bigint","function","boolean","stringOrUint8Array","isSafeInteger","object","Fp","hash","validateObject","validators","optValidators","checkField","isOptional","checkVal","entries","_0n","_3n","_4n","_5n","_8n","power","modulo","pow2","invert","FpSqrt","P","p1div4","eql","nv","ONE","legendreC","Q","S","Z","Q1div2","ZERO","t2","ge","tonelliShanks","FIELD_FIELDS","nLength","nBitLength","_nBitLength","nByteLength","validateBasic","curve","ORDER","MASK","BYTES","BITS","Gx","Gy","freeze","VERIFY_DEFAULT","zip215","twistedEdwards","curveDef","CURVE","opts","ut","randomBytes","adjustScalarBytes","uvRatio","mapToCurve","validateOpts","CURVE_ORDER","prehash","cHash","cofactor","modP","phflag","inBig","in0MaskRange","assertInRange","assertGE0","pointPrecomputes","isPoint","Point","ex","ey","ez","et","toAffine","fromAffine","normalizeZ","points","toInv","invertBatch","_setWindowSize","windowSize","_WINDOW_SIZE","delete","assertValidity","is0","X","Y","X2","Y2","Z2","Z4","aX2","X1","Y1","Z1","X1Z2","X2Z1","Y1Z2","Y2Z1","negate","double","x1y1","X3","Y3","T3","Z3","subtract","wNAF","wnaf","wNAFCached","multiply","scalar","f","multiplyUnsafe","I","unsafeLadder","isSmallOrder","isTorsionFree","iz","ax","ay","zz","clearCofactor","fromHex","normed","lastByte","y2","isXOdd","isLastByteOdd","fromPrivateKey","privKey","getExtendedPublicKey","point","toRawBytes","toHex","constTimeNegate","condition","W","windows","elm","precomputeWindow","precomputes","maxNumber","shiftBy","wbits","offset1","offset2","cond1","cond2","precomputesMap","transform","comp","modN","modN_LE","head","pointBytes","hashDomainToScalar","context","msgs","verifyOpts","getPublicKey","sign","R","verify","sig","SB","ExtendedPoint","utils","randomPrivateKey","precompute","ED25519_P","ED25519_SQRT_M1","_10n","_20n","_40n","_80n","bitLen","redef","sqrtP","lhs","rhs","FpPow","sqrN","addN","subN","mulN","nums","lastMultiplied","inverted","reduceRight","FpInvertBatch","cmov","fromBytes","bytesToNumberBE","Field","ed25519Defaults","bytesLength","getRandomValues","v3","b10","b20","b40","b80","b160","b240","b250","pow_p_5_8","ed25519_pow_2_252_3","vx2","root1","root2","useRoot1","useRoot2","noRoot","ed25519","ELL2_C1","assertNumber","chain","id","wrap","digits","letter","separator","chr","normalize","FpSqrtEven","radix2carry","convertRadix2","radix2","revPadding","unsafeWrapper","BECH_ALPHABET","POLYMOD_GENERATORS","bech32Polymod","pre","chk","bechChecksum","encodingConst","genBech32","ENCODING_CONST","_words","fromWords","toWords","fromWordsUnsafe","lowered","sepIndex","actualLength","decodeToBytes","bech32","checkSolRecord","signedRecord","getRecordKeySync","V1","getRecord","NoRecordData","deserializeRecord","recordSize","getRecords","records","pubkeys","registries","getIpfsRecord","IPFS","getArweaveRecord","ARWV","getEthRecord","getBtcRecord","BTC","getLtcRecord","LTC","getDogeRecord","DOGE","getEmailRecord","Email","getUrlRecord","Url","getDiscordRecord","Discord","getGithubRecord","Github","getRedditRecord","Reddit","getTwitterRecord","Twitter","getTelegramRecord","Telegram","getPicRecord","Pic","getShdwRecord","SHDW","getSolRecord","getPointRecord","POINT","getBscRecord","getInjectiveRecord","getBackpackRecord","Backpack","getBackgroundRecord","recordKey","findIndex","byte","trimNullPaddingIdx","encoder","expectedBuffer","expected","base58","decoded","isValidIp","InvalidRecordData","ipFromByteArray","serializeRecord","CNAME","TXT","encodePunycode","UnsupportedRecord","InvalidEvmAddress","InvalidInjectiveAddress","parseIp","InvalidARecord","InvalidAAAARecord","InvalidRecordInput","serializeSolRecord","content","signer","signature","encodedMessage","valid","InvalidSignature","GUARDIANS","ETH_ROA_RECORDS","Set","verifyRightOfAssociation","verifier","getRecordV2Key","recordObj","SnsRecord","roaId","getRoAId","validation","has","Validation","Ethereum","Solana","MissingVerifier","header","rightOfAssociationValidation","UTF8_ENCODED","SELF_SIGNED","deserializeRecordV2Content","basic","oldi","fromCodePoint","decodePunnycode","serializeRecordV2Content","getRecordV2","retrievedRecord","deserializedContent","getContent","getMultipleRecordsV2","retrievedRecords","createNameRegistry","nameOwner","balance","getMinimumBalanceForRentExemption","parentAccount","updateNameRegistryData","transferNameOwnership","newOwner","curentNameOwner","deleteNameRegistry","registerDomainName","referrerKey","InvalidDomain","cs","derived_state","refIdx","refTokenAccount","ixs","ix","pythFeed","PythFeedNotFound","SYSVAR_RENT_PUBKEY","createReverseName","createSubdomain","subdomain","InvalidSubdomain","ix_create","reverseKey","ix_reverse","createRecordInstruction","createRecordV2Instruction","allocateAndPostRecord","SNS_RECORDS_ID","updateRecordInstruction","serialized","updateRecordV2Instruction","editRecord","deleteRecordV2","deleteRecord","validateRecordV2Content","staleness","validateSolanaSignature","writRoaRecordV2","writeRoa","ethValidateRecordV2Content","expectedPubkey","validateEthSignature","createSolRecordInstruction","updateSolRecordInstruction","burnDomain","registerWithNft","transferSubdomain","isParentOwnerSigner","createVerifiedTwitterRegistry","twitterHandle","verifiedPubkey","hashedTwitterHandle","twitterHandleRegistryKey","instructions","createReverseTwitterRegistry","changeTwitterRegistryData","changeVerifiedPubkey","currentVerifiedPubkey","newVerifiedPubkey","deleteTwitterRegistry","hashedVerifiedPubkey","reverseRegistryKey","getTwitterRegistryKey","twitter_handle","getTwitterRegistry","getHandleAndRegistryKey","reverseRegistryState","ReverseTwitterRegistryState","twitterRegistryKey","getTwitterHandleandRegistryKeyViaFilters","filteredAccounts","getTwitterRegistryData","MultipleRegistries","reverseTwitterAccountKey","reverseTwitterAccount","InvalidReverseTwitter","reverseTwitterRegistryStateBuff","resolve","solV2Owner","resolveSolRecordV2","resolveSolRecordV1","err","solRecord","recordV2Key","solV2Record","stalenessId","getStalenessId","stalenessValidation","NAME_OFFERS_ID","FavouriteDomain","FavouriteDomainNotFound","getKey","getKeySync","getFavoriteDomain","favKey","favorite","domainOwner","stale","getMultipleFavoriteDomains","wallets","favKeys","favDomains","revKeys","atas","getDomainMint","domainInfos","revs","tokenAccs","domainInfo","tokenAcc","amount","CustomBg","DEGEN_POET_KEY","RBG_0x00_KEY","getCustomBgKeys","customBg","hashedBg","hashedDomain","bgKey","getArtistPubkey","bg","DegenPoet1","Rgb0x001","InvalidCustomBg","verifyStaleness","constants","devnet","bindings"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/buffer/index.js","../node_modules/@solana/spl-token/lib/esm/constants.js","../node_modules/@solana/buffer-layout/lib/Layout.js","../node_modules/@solana/buffer-layout-utils/lib/esm/base.mjs","../node_modules/bigint-buffer/dist/browser.js","../node_modules/@solana/buffer-layout-utils/lib/esm/bigint.mjs","../node_modules/@solana/buffer-layout-utils/lib/esm/native.mjs","../node_modules/@solana/buffer-layout-utils/lib/esm/web3.mjs","../node_modules/@solana/spl-token/lib/esm/errors.js","../node_modules/@solana/spl-token/lib/esm/extensions/accountType.js","../node_modules/@solana/spl-token/lib/esm/state/multisig.js","../node_modules/@solana/spl-token/lib/esm/state/account.js","../node_modules/@solana/spl-token/lib/esm/state/mint.js","../node_modules/@solana/spl-token/lib/esm/instructions/associatedTokenAccount.js","../src/error.ts","../src/int.ts","../node_modules/borsh/lib/esm/types.js","../node_modules/borsh/lib/esm/utils.js","../node_modules/borsh/lib/esm/buffer.js","../node_modules/borsh/lib/esm/serialize.js","../node_modules/borsh/lib/esm/deserialize.js","../node_modules/borsh/lib/esm/index.js","../src/instructions.ts","../src/nft/name-tokenizer.ts","../src/nft/index.ts","../src/state.ts","../node_modules/@noble/hashes/esm/_assert.js","../node_modules/@noble/hashes/esm/crypto.js","../node_modules/@noble/hashes/esm/utils.js","../node_modules/@noble/hashes/esm/_sha2.js","../node_modules/@noble/hashes/esm/sha256.js","../src/constants.ts","../src/deprecated/utils.ts","../node_modules/@bonfida/sns-records/dist/index.mjs","../src/types/record.ts","../node_modules/graphemesplit/types.js","../node_modules/tiny-inflate/index.js","../node_modules/unicode-trie/swap.js","../node_modules/unicode-trie/index.js","../node_modules/js-base64/base64.js","../node_modules/graphemesplit/index.js","../src/utils.ts","../node_modules/bs58/node_modules/base-x/src/index.js","../node_modules/bs58/index.js","../node_modules/ipaddr.js/lib/ipaddr.js","../node_modules/punycode/punycode.es6.js","../node_modules/@noble/hashes/esm/_u64.js","../node_modules/@noble/hashes/esm/sha512.js","../node_modules/@noble/curves/esm/abstract/utils.js","../node_modules/@noble/curves/esm/abstract/modular.js","../node_modules/@noble/curves/esm/abstract/curve.js","../node_modules/@noble/curves/esm/abstract/edwards.js","../node_modules/@noble/curves/esm/ed25519.js","../node_modules/@scure/base/lib/esm/index.js","../src/record.ts","../src/record_v2/index.ts","../src/bindings.ts","../src/twitter_bindings.ts","../src/resolve.ts","../src/favorite-domain.ts","../src/types/custom-bg.ts","../src/custom-bg.ts","../src/record_v2/utils.ts","../src/devnet.ts"],"sourcesContent":["'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","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\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","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\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 '<Buffer ' + str + '>'\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","import { PublicKey } from '@solana/web3.js';\n/** Address of the SPL Token program */\nexport const TOKEN_PROGRAM_ID = new PublicKey('TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA');\n/** Address of the SPL Token 2022 program */\nexport const TOKEN_2022_PROGRAM_ID = new PublicKey('TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb');\n/** Address of the SPL Associated Token Account program */\nexport const ASSOCIATED_TOKEN_PROGRAM_ID = new PublicKey('ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL');\n/** Address of the special mint for wrapped native SOL in spl-token */\nexport const NATIVE_MINT = new PublicKey('So11111111111111111111111111111111111111112');\n/** Address of the special mint for wrapped native SOL in spl-token-2022 */\nexport const NATIVE_MINT_2022 = new PublicKey('9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP');\n/** Check that the token program provided is not `Tokenkeg...`, useful when using extensions */\nexport function programSupportsExtensions(programId) {\n if (programId === TOKEN_PROGRAM_ID) {\n return false;\n }\n else {\n return true;\n }\n}\n//# sourceMappingURL=constants.js.map","/* The MIT License (MIT)\n *\n * Copyright 2015-2018 Peter A. Bigot\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n/**\n * Support for translating between Uint8Array instances and JavaScript\n * native types.\n *\n * {@link module:Layout~Layout|Layout} is the basis of a class\n * hierarchy that associates property names with sequences of encoded\n * bytes.\n *\n * Layouts are supported for these scalar (numeric) types:\n * * {@link module:Layout~UInt|Unsigned integers in little-endian\n * format} with {@link module:Layout.u8|8-bit}, {@link\n * module:Layout.u16|16-bit}, {@link module:Layout.u24|24-bit},\n * {@link module:Layout.u32|32-bit}, {@link\n * module:Layout.u40|40-bit}, and {@link module:Layout.u48|48-bit}\n * representation ranges;\n * * {@link module:Layout~UIntBE|Unsigned integers in big-endian\n * format} with {@link module:Layout.u16be|16-bit}, {@link\n * module:Layout.u24be|24-bit}, {@link module:Layout.u32be|32-bit},\n * {@link module:Layout.u40be|40-bit}, and {@link\n * module:Layout.u48be|48-bit} representation ranges;\n * * {@link module:Layout~Int|Signed integers in little-endian\n * format} with {@link module:Layout.s8|8-bit}, {@link\n * module:Layout.s16|16-bit}, {@link module:Layout.s24|24-bit},\n * {@link module:Layout.s32|32-bit}, {@link\n * module:Layout.s40|40-bit}, and {@link module:Layout.s48|48-bit}\n * representation ranges;\n * * {@link module:Layout~IntBE|Signed integers in big-endian format}\n * with {@link module:Layout.s16be|16-bit}, {@link\n * module:Layout.s24be|24-bit}, {@link module:Layout.s32be|32-bit},\n * {@link module:Layout.s40be|40-bit}, and {@link\n * module:Layout.s48be|48-bit} representation ranges;\n * * 64-bit integral values that decode to an exact (if magnitude is\n * less than 2^53) or nearby integral Number in {@link\n * module:Layout.nu64|unsigned little-endian}, {@link\n * module:Layout.nu64be|unsigned big-endian}, {@link\n * module:Layout.ns64|signed little-endian}, and {@link\n * module:Layout.ns64be|unsigned big-endian} encodings;\n * * 32-bit floating point values with {@link\n * module:Layout.f32|little-endian} and {@link\n * module:Layout.f32be|big-endian} representations;\n * * 64-bit floating point values with {@link\n * module:Layout.f64|little-endian} and {@link\n * module:Layout.f64be|big-endian} representations;\n * * {@link module:Layout.const|Constants} that take no space in the\n * encoded expression.\n *\n * and for these aggregate types:\n * * {@link module:Layout.seq|Sequence}s of instances of a {@link\n * module:Layout~Layout|Layout}, with JavaScript representation as\n * an Array and constant or data-dependent {@link\n * module:Layout~Sequence#count|length};\n * * {@link module:Layout.struct|Structure}s that aggregate a\n * heterogeneous sequence of {@link module:Layout~Layout|Layout}\n * instances, with JavaScript representation as an Object;\n * * {@link module:Layout.union|Union}s that support multiple {@link\n * module:Layout~VariantLayout|variant layouts} over a fixed\n * (padded) or variable (not padded) span of bytes, using an\n * unsigned integer at the start of the data or a separate {@link\n * module:Layout.unionLayoutDiscriminator|layout element} to\n * determine which layout to use when interpreting the buffer\n * contents;\n * * {@link module:Layout.bits|BitStructure}s that contain a sequence\n * of individual {@link\n * module:Layout~BitStructure#addField|BitField}s packed into an 8,\n * 16, 24, or 32-bit unsigned integer starting at the least- or\n * most-significant bit;\n * * {@link module:Layout.cstr|C strings} of varying length;\n * * {@link module:Layout.blob|Blobs} of fixed- or variable-{@link\n * module:Layout~Blob#length|length} raw data.\n *\n * All {@link module:Layout~Layout|Layout} instances are immutable\n * after construction, to prevent internal state from becoming\n * inconsistent.\n *\n * @local Layout\n * @local ExternalLayout\n * @local GreedyCount\n * @local OffsetLayout\n * @local UInt\n * @local UIntBE\n * @local Int\n * @local IntBE\n * @local NearUInt64\n * @local NearUInt64BE\n * @local NearInt64\n * @local NearInt64BE\n * @local Float\n * @local FloatBE\n * @local Double\n * @local DoubleBE\n * @local Sequence\n * @local Structure\n * @local UnionDiscriminator\n * @local UnionLayoutDiscriminator\n * @local Union\n * @local VariantLayout\n * @local BitStructure\n * @local BitField\n * @local Boolean\n * @local Blob\n * @local CString\n * @local Constant\n * @local bindConstructorLayout\n * @module Layout\n * @license MIT\n * @author Peter A. Bigot\n * @see {@link https://github.com/pabigot/buffer-layout|buffer-layout on GitHub}\n */\n'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.s16 = exports.s8 = exports.nu64be = exports.u48be = exports.u40be = exports.u32be = exports.u24be = exports.u16be = exports.nu64 = exports.u48 = exports.u40 = exports.u32 = exports.u24 = exports.u16 = exports.u8 = exports.offset = exports.greedy = exports.Constant = exports.UTF8 = exports.CString = exports.Blob = exports.Boolean = exports.BitField = exports.BitStructure = exports.VariantLayout = exports.Union = exports.UnionLayoutDiscriminator = exports.UnionDiscriminator = exports.Structure = exports.Sequence = exports.DoubleBE = exports.Double = exports.FloatBE = exports.Float = exports.NearInt64BE = exports.NearInt64 = exports.NearUInt64BE = exports.NearUInt64 = exports.IntBE = exports.Int = exports.UIntBE = exports.UInt = exports.OffsetLayout = exports.GreedyCount = exports.ExternalLayout = exports.bindConstructorLayout = exports.nameWithProperty = exports.Layout = exports.uint8ArrayToBuffer = exports.checkUint8Array = void 0;\nexports.constant = exports.utf8 = exports.cstr = exports.blob = exports.unionLayoutDiscriminator = exports.union = exports.seq = exports.bits = exports.struct = exports.f64be = exports.f64 = exports.f32be = exports.f32 = exports.ns64be = exports.s48be = exports.s40be = exports.s32be = exports.s24be = exports.s16be = exports.ns64 = exports.s48 = exports.s40 = exports.s32 = exports.s24 = void 0;\nconst buffer_1 = require(\"buffer\");\n/* Check if a value is a Uint8Array.\n *\n * @ignore */\nfunction checkUint8Array(b) {\n if (!(b instanceof Uint8Array)) {\n throw new TypeError('b must be a Uint8Array');\n }\n}\nexports.checkUint8Array = checkUint8Array;\n/* Create a Buffer instance from a Uint8Array.\n *\n * @ignore */\nfunction uint8ArrayToBuffer(b) {\n checkUint8Array(b);\n return buffer_1.Buffer.from(b.buffer, b.byteOffset, b.length);\n}\nexports.uint8ArrayToBuffer = uint8ArrayToBuffer;\n/**\n * Base class for layout objects.\n *\n * **NOTE** This is an abstract base class; you can create instances\n * if it amuses you, but they won't support the {@link\n * Layout#encode|encode} or {@link Layout#decode|decode} functions.\n *\n * @param {Number} span - Initializer for {@link Layout#span|span}. The\n * parameter must be an integer; a negative value signifies that the\n * span is {@link Layout#getSpan|value-specific}.\n *\n * @param {string} [property] - Initializer for {@link\n * Layout#property|property}.\n *\n * @abstract\n */\nclass Layout {\n constructor(span, property) {\n if (!Number.isInteger(span)) {\n throw new TypeError('span must be an integer');\n }\n /** The span of the layout in bytes.\n *\n * Positive values are generally expected.\n *\n * Zero will only appear in {@link Constant}s and in {@link\n * Sequence}s where the {@link Sequence#count|count} is zero.\n *\n * A negative value indicates that the span is value-specific, and\n * must be obtained using {@link Layout#getSpan|getSpan}. */\n this.span = span;\n /** The property name used when this layout is represented in an\n * Object.\n *\n * Used only for layouts that {@link Layout#decode|decode} to Object\n * instances. If left undefined the span of the unnamed layout will\n * be treated as padding: it will not be mutated by {@link\n * Layout#encode|encode} nor represented as a property in the\n * decoded Object. */\n this.property = property;\n }\n /** Function to create an Object into which decoded properties will\n * be written.\n *\n * Used only for layouts that {@link Layout#decode|decode} to Object\n * instances, which means:\n * * {@link Structure}\n * * {@link Union}\n * * {@link VariantLayout}\n * * {@link BitStructure}\n *\n * If left undefined the JavaScript representation of these layouts\n * will be Object instances.\n *\n * See {@link bindConstructorLayout}.\n */\n makeDestinationObject() {\n return {};\n }\n /**\n * Calculate the span of a specific instance of a layout.\n *\n * @param {Uint8Array} b - the buffer that contains an encoded instance.\n *\n * @param {Number} [offset] - the offset at which the encoded instance\n * starts. If absent a zero offset is inferred.\n *\n * @return {Number} - the number of bytes covered by the layout\n * instance. If this method is not overridden in a subclass the\n * definition-time constant {@link Layout#span|span} will be\n * returned.\n *\n * @throws {RangeError} - if the length of the value cannot be\n * determined.\n */\n getSpan(b, offset) {\n if (0 > this.span) {\n throw new RangeError('indeterminate span');\n }\n return this.span;\n }\n /**\n * Replicate the layout using a new property.\n *\n * This function must be used to get a structurally-equivalent layout\n * with a different name since all {@link Layout} instances are\n * immutable.\n *\n * **NOTE** This is a shallow copy. All fields except {@link\n * Layout#property|property} are strictly equal to the origin layout.\n *\n * @param {String} property - the value for {@link\n * Layout#property|property} in the replica.\n *\n * @returns {Layout} - the copy with {@link Layout#property|property}\n * set to `property`.\n */\n replicate(property) {\n const rv = Object.create(this.constructor.prototype);\n Object.assign(rv, this);\n rv.property = property;\n return rv;\n }\n /**\n * Create an object from layout properties and an array of values.\n *\n * **NOTE** This function returns `undefined` if invoked on a layout\n * that does not return its value as an Object. Objects are\n * returned for things that are a {@link Structure}, which includes\n * {@link VariantLayout|variant layouts} if they are structures, and\n * excludes {@link Union}s. If you want this feature for a union\n * you must use {@link Union.getVariant|getVariant} to select the\n * desired layout.\n *\n * @param {Array} values - an array of values that correspond to the\n * default order for properties. As with {@link Layout#decode|decode}\n * layout elements that have no property name are skipped when\n * iterating over the array values. Only the top-level properties are\n * assigned; arguments are not assigned to properties of contained\n * layouts. Any unused values are ignored.\n *\n * @return {(Object|undefined)}\n */\n fromArray(values) {\n return undefined;\n }\n}\nexports.Layout = Layout;\n/* Provide text that carries a name (such as for a function that will\n * be throwing an error) annotated with the property of a given layout\n * (such as one for which the value was unacceptable).\n *\n * @ignore */\nfunction nameWithProperty(name, lo) {\n if (lo.property) {\n return name + '[' + lo.property + ']';\n }\n return name;\n}\nexports.nameWithProperty = nameWithProperty;\n/**\n * Augment a class so that instances can be encoded/decoded using a\n * given layout.\n *\n * Calling this function couples `Class` with `layout` in several ways:\n *\n * * `Class.layout_` becomes a static member property equal to `layout`;\n * * `layout.boundConstructor_` becomes a static member property equal\n * to `Class`;\n * * The {@link Layout#makeDestinationObject|makeDestinationObject()}\n * property of `layout` is set to a function that returns a `new\n * Class()`;\n * * `Class.decode(b, offset)` becomes a static member function that\n * delegates to {@link Layout#decode|layout.decode}. The\n * synthesized function may be captured and extended.\n * * `Class.prototype.encode(b, offset)` provides an instance member\n * function that delegates to {@link Layout#encode|layout.encode}\n * with `src` set to `this`. The synthesized function may be\n * captured and extended, but when the extension is invoked `this`\n * must be explicitly bound to the instance.\n *\n * @param {class} Class - a JavaScript class with a nullary\n * constructor.\n *\n * @param {Layout} layout - the {@link Layout} instance used to encode\n * instances of `Class`.\n */\n// `Class` must be a constructor Function, but the assignment of a `layout_` property to it makes it difficult to type\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nfunction bindConstructorLayout(Class, layout) {\n if ('function' !== typeof Class) {\n throw new TypeError('Class must be constructor');\n }\n if (Object.prototype.hasOwnProperty.call(Class, 'layout_')) {\n throw new Error('Class is already bound to a layout');\n }\n if (!(layout && (layout instanceof Layout))) {\n throw new TypeError('layout must be a Layout');\n }\n if (Object.prototype.hasOwnProperty.call(layout, 'boundConstructor_')) {\n throw new Error('layout is already bound to a constructor');\n }\n Class.layout_ = layout;\n layout.boundConstructor_ = Class;\n layout.makeDestinationObject = (() => new Class());\n Object.defineProperty(Class.prototype, 'encode', {\n value(b, offset) {\n return layout.encode(this, b, offset);\n },\n writable: true,\n });\n Object.defineProperty(Class, 'decode', {\n value(b, offset) {\n return layout.decode(b, offset);\n },\n writable: true,\n });\n}\nexports.bindConstructorLayout = bindConstructorLayout;\n/**\n * An object that behaves like a layout but does not consume space\n * within its containing layout.\n *\n * This is primarily used to obtain metadata about a member, such as a\n * {@link OffsetLayout} that can provide data about a {@link\n * Layout#getSpan|value-specific span}.\n *\n * **NOTE** This is an abstract base class; you can create instances\n * if it amuses you, but they won't support {@link\n * ExternalLayout#isCount|isCount} or other {@link Layout} functions.\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @abstract\n * @augments {Layout}\n */\nclass ExternalLayout extends Layout {\n /**\n * Return `true` iff the external layout decodes to an unsigned\n * integer layout.\n *\n * In that case it can be used as the source of {@link\n * Sequence#count|Sequence counts}, {@link Blob#length|Blob lengths},\n * or as {@link UnionLayoutDiscriminator#layout|external union\n * discriminators}.\n *\n * @abstract\n */\n isCount() {\n throw new Error('ExternalLayout is abstract');\n }\n}\nexports.ExternalLayout = ExternalLayout;\n/**\n * An {@link ExternalLayout} that determines its {@link\n * Layout#decode|value} based on offset into and length of the buffer\n * on which it is invoked.\n *\n * *Factory*: {@link module:Layout.greedy|greedy}\n *\n * @param {Number} [elementSpan] - initializer for {@link\n * GreedyCount#elementSpan|elementSpan}.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {ExternalLayout}\n */\nclass GreedyCount extends ExternalLayout {\n constructor(elementSpan = 1, property) {\n if ((!Number.isInteger(elementSpan)) || (0 >= elementSpan)) {\n throw new TypeError('elementSpan must be a (positive) integer');\n }\n super(-1, property);\n /** The layout for individual elements of the sequence. The value\n * must be a positive integer. If not provided, the value will be\n * 1. */\n this.elementSpan = elementSpan;\n }\n /** @override */\n isCount() {\n return true;\n }\n /** @override */\n decode(b, offset = 0) {\n checkUint8Array(b);\n const rem = b.length - offset;\n return Math.floor(rem / this.elementSpan);\n }\n /** @override */\n encode(src, b, offset) {\n return 0;\n }\n}\nexports.GreedyCount = GreedyCount;\n/**\n * An {@link ExternalLayout} that supports accessing a {@link Layout}\n * at a fixed offset from the start of another Layout. The offset may\n * be before, within, or after the base layout.\n *\n * *Factory*: {@link module:Layout.offset|offset}\n *\n * @param {Layout} layout - initializer for {@link\n * OffsetLayout#layout|layout}, modulo `property`.\n *\n * @param {Number} [offset] - Initializes {@link\n * OffsetLayout#offset|offset}. Defaults to zero.\n *\n * @param {string} [property] - Optional new property name for a\n * {@link Layout#replicate| replica} of `layout` to be used as {@link\n * OffsetLayout#layout|layout}. If not provided the `layout` is used\n * unchanged.\n *\n * @augments {Layout}\n */\nclass OffsetLayout extends ExternalLayout {\n constructor(layout, offset = 0, property) {\n if (!(layout instanceof Layout)) {\n throw new TypeError('layout must be a Layout');\n }\n if (!Number.isInteger(offset)) {\n throw new TypeError('offset must be integer or undefined');\n }\n super(layout.span, property || layout.property);\n /** The subordinated layout. */\n this.layout = layout;\n /** The location of {@link OffsetLayout#layout} relative to the\n * start of another layout.\n *\n * The value may be positive or negative, but an error will thrown\n * if at the point of use it goes outside the span of the Uint8Array\n * being accessed. */\n this.offset = offset;\n }\n /** @override */\n isCount() {\n return ((this.layout instanceof UInt)\n || (this.layout instanceof UIntBE));\n }\n /** @override */\n decode(b, offset = 0) {\n return this.layout.decode(b, offset + this.offset);\n }\n /** @override */\n encode(src, b, offset = 0) {\n return this.layout.encode(src, b, offset + this.offset);\n }\n}\nexports.OffsetLayout = OffsetLayout;\n/**\n * Represent an unsigned integer in little-endian format.\n *\n * *Factory*: {@link module:Layout.u8|u8}, {@link\n * module:Layout.u16|u16}, {@link module:Layout.u24|u24}, {@link\n * module:Layout.u32|u32}, {@link module:Layout.u40|u40}, {@link\n * module:Layout.u48|u48}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass UInt extends Layout {\n constructor(span, property) {\n super(span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n /** @override */\n decode(b, offset = 0) {\n return uint8ArrayToBuffer(b).readUIntLE(offset, this.span);\n }\n /** @override */\n encode(src, b, offset = 0) {\n uint8ArrayToBuffer(b).writeUIntLE(src, offset, this.span);\n return this.span;\n }\n}\nexports.UInt = UInt;\n/**\n * Represent an unsigned integer in big-endian format.\n *\n * *Factory*: {@link module:Layout.u8be|u8be}, {@link\n * module:Layout.u16be|u16be}, {@link module:Layout.u24be|u24be},\n * {@link module:Layout.u32be|u32be}, {@link\n * module:Layout.u40be|u40be}, {@link module:Layout.u48be|u48be}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass UIntBE extends Layout {\n constructor(span, property) {\n super(span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n /** @override */\n decode(b, offset = 0) {\n return uint8ArrayToBuffer(b).readUIntBE(offset, this.span);\n }\n /** @override */\n encode(src, b, offset = 0) {\n uint8ArrayToBuffer(b).writeUIntBE(src, offset, this.span);\n return this.span;\n }\n}\nexports.UIntBE = UIntBE;\n/**\n * Represent a signed integer in little-endian format.\n *\n * *Factory*: {@link module:Layout.s8|s8}, {@link\n * module:Layout.s16|s16}, {@link module:Layout.s24|s24}, {@link\n * module:Layout.s32|s32}, {@link module:Layout.s40|s40}, {@link\n * module:Layout.s48|s48}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Int extends Layout {\n constructor(span, property) {\n super(span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n /** @override */\n decode(b, offset = 0) {\n return uint8ArrayToBuffer(b).readIntLE(offset, this.span);\n }\n /** @override */\n encode(src, b, offset = 0) {\n uint8ArrayToBuffer(b).writeIntLE(src, offset, this.span);\n return this.span;\n }\n}\nexports.Int = Int;\n/**\n * Represent a signed integer in big-endian format.\n *\n * *Factory*: {@link module:Layout.s8be|s8be}, {@link\n * module:Layout.s16be|s16be}, {@link module:Layout.s24be|s24be},\n * {@link module:Layout.s32be|s32be}, {@link\n * module:Layout.s40be|s40be}, {@link module:Layout.s48be|s48be}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass IntBE extends Layout {\n constructor(span, property) {\n super(span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n /** @override */\n decode(b, offset = 0) {\n return uint8ArrayToBuffer(b).readIntBE(offset, this.span);\n }\n /** @override */\n encode(src, b, offset = 0) {\n uint8ArrayToBuffer(b).writeIntBE(src, offset, this.span);\n return this.span;\n }\n}\nexports.IntBE = IntBE;\nconst V2E32 = Math.pow(2, 32);\n/* True modulus high and low 32-bit words, where low word is always\n * non-negative. */\nfunction divmodInt64(src) {\n const hi32 = Math.floor(src / V2E32);\n const lo32 = src - (hi32 * V2E32);\n return { hi32, lo32 };\n}\n/* Reconstruct Number from quotient and non-negative remainder */\nfunction roundedInt64(hi32, lo32) {\n return hi32 * V2E32 + lo32;\n}\n/**\n * Represent an unsigned 64-bit integer in little-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.nu64|nu64}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearUInt64 extends Layout {\n constructor(property) {\n super(8, property);\n }\n /** @override */\n decode(b, offset = 0) {\n const buffer = uint8ArrayToBuffer(b);\n const lo32 = buffer.readUInt32LE(offset);\n const hi32 = buffer.readUInt32LE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n /** @override */\n encode(src, b, offset = 0) {\n const split = divmodInt64(src);\n const buffer = uint8ArrayToBuffer(b);\n buffer.writeUInt32LE(split.lo32, offset);\n buffer.writeUInt32LE(split.hi32, offset + 4);\n return 8;\n }\n}\nexports.NearUInt64 = NearUInt64;\n/**\n * Represent an unsigned 64-bit integer in big-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.nu64be|nu64be}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearUInt64BE extends Layout {\n constructor(property) {\n super(8, property);\n }\n /** @override */\n decode(b, offset = 0) {\n const buffer = uint8ArrayToBuffer(b);\n const hi32 = buffer.readUInt32BE(offset);\n const lo32 = buffer.readUInt32BE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n /** @override */\n encode(src, b, offset = 0) {\n const split = divmodInt64(src);\n const buffer = uint8ArrayToBuffer(b);\n buffer.writeUInt32BE(split.hi32, offset);\n buffer.writeUInt32BE(split.lo32, offset + 4);\n return 8;\n }\n}\nexports.NearUInt64BE = NearUInt64BE;\n/**\n * Represent a signed 64-bit integer in little-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.ns64|ns64}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearInt64 extends Layout {\n constructor(property) {\n super(8, property);\n }\n /** @override */\n decode(b, offset = 0) {\n const buffer = uint8ArrayToBuffer(b);\n const lo32 = buffer.readUInt32LE(offset);\n const hi32 = buffer.readInt32LE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n /** @override */\n encode(src, b, offset = 0) {\n const split = divmodInt64(src);\n const buffer = uint8ArrayToBuffer(b);\n buffer.writeUInt32LE(split.lo32, offset);\n buffer.writeInt32LE(split.hi32, offset + 4);\n return 8;\n }\n}\nexports.NearInt64 = NearInt64;\n/**\n * Represent a signed 64-bit integer in big-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.ns64be|ns64be}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearInt64BE extends Layout {\n constructor(property) {\n super(8, property);\n }\n /** @override */\n decode(b, offset = 0) {\n const buffer = uint8ArrayToBuffer(b);\n const hi32 = buffer.readInt32BE(offset);\n const lo32 = buffer.readUInt32BE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n /** @override */\n encode(src, b, offset = 0) {\n const split = divmodInt64(src);\n const buffer = uint8ArrayToBuffer(b);\n buffer.writeInt32BE(split.hi32, offset);\n buffer.writeUInt32BE(split.lo32, offset + 4);\n return 8;\n }\n}\nexports.NearInt64BE = NearInt64BE;\n/**\n * Represent a 32-bit floating point number in little-endian format.\n *\n * *Factory*: {@link module:Layout.f32|f32}\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Float extends Layout {\n constructor(property) {\n super(4, property);\n }\n /** @override */\n decode(b, offset = 0) {\n return uint8ArrayToBuffer(b).readFloatLE(offset);\n }\n /** @override */\n encode(src, b, offset = 0) {\n uint8ArrayToBuffer(b).writeFloatLE(src, offset);\n return 4;\n }\n}\nexports.Float = Float;\n/**\n * Represent a 32-bit floating point number in big-endian format.\n *\n * *Factory*: {@link module:Layout.f32be|f32be}\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass FloatBE extends Layout {\n constructor(property) {\n super(4, property);\n }\n /** @override */\n decode(b, offset = 0) {\n return uint8ArrayToBuffer(b).readFloatBE(offset);\n }\n /** @override */\n encode(src, b, offset = 0) {\n uint8ArrayToBuffer(b).writeFloatBE(src, offset);\n return 4;\n }\n}\nexports.FloatBE = FloatBE;\n/**\n * Represent a 64-bit floating point number in little-endian format.\n *\n * *Factory*: {@link module:Layout.f64|f64}\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Double extends Layout {\n constructor(property) {\n super(8, property);\n }\n /** @override */\n decode(b, offset = 0) {\n return uint8ArrayToBuffer(b).readDoubleLE(offset);\n }\n /** @override */\n encode(src, b, offset = 0) {\n uint8ArrayToBuffer(b).writeDoubleLE(src, offset);\n return 8;\n }\n}\nexports.Double = Double;\n/**\n * Represent a 64-bit floating point number in big-endian format.\n *\n * *Factory*: {@link module:Layout.f64be|f64be}\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass DoubleBE extends Layout {\n constructor(property) {\n super(8, property);\n }\n /** @override */\n decode(b, offset = 0) {\n return uint8ArrayToBuffer(b).readDoubleBE(offset);\n }\n /** @override */\n encode(src, b, offset = 0) {\n uint8ArrayToBuffer(b).writeDoubleBE(src, offset);\n return 8;\n }\n}\nexports.DoubleBE = DoubleBE;\n/**\n * Represent a contiguous sequence of a specific layout as an Array.\n *\n * *Factory*: {@link module:Layout.seq|seq}\n *\n * @param {Layout} elementLayout - initializer for {@link\n * Sequence#elementLayout|elementLayout}.\n *\n * @param {(Number|ExternalLayout)} count - initializer for {@link\n * Sequence#count|count}. The parameter must be either a positive\n * integer or an instance of {@link ExternalLayout}.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Sequence extends Layout {\n constructor(elementLayout, count, property) {\n if (!(elementLayout instanceof Layout)) {\n throw new TypeError('elementLayout must be a Layout');\n }\n if (!(((count instanceof ExternalLayout) && count.isCount())\n || (Number.isInteger(count) && (0 <= count)))) {\n throw new TypeError('count must be non-negative integer '\n + 'or an unsigned integer ExternalLayout');\n }\n let span = -1;\n if ((!(count instanceof ExternalLayout))\n && (0 < elementLayout.span)) {\n span = count * elementLayout.span;\n }\n super(span, property);\n /** The layout for individual elements of the sequence. */\n this.elementLayout = elementLayout;\n /** The number of elements in the sequence.\n *\n * This will be either a non-negative integer or an instance of\n * {@link ExternalLayout} for which {@link\n * ExternalLayout#isCount|isCount()} is `true`. */\n this.count = count;\n }\n /** @override */\n getSpan(b, offset = 0) {\n if (0 <= this.span) {\n return this.span;\n }\n let span = 0;\n let count = this.count;\n if (count instanceof ExternalLayout) {\n count = count.decode(b, offset);\n }\n if (0 < this.elementLayout.span) {\n span = count * this.elementLayout.span;\n }\n else {\n let idx = 0;\n while (idx < count) {\n span += this.elementLayout.getSpan(b, offset + span);\n ++idx;\n }\n }\n return span;\n }\n /** @override */\n decode(b, offset = 0) {\n const rv = [];\n let i = 0;\n let count = this.count;\n if (count instanceof ExternalLayout) {\n count = count.decode(b, offset);\n }\n while (i < count) {\n rv.push(this.elementLayout.decode(b, offset));\n offset += this.elementLayout.getSpan(b, offset);\n i += 1;\n }\n return rv;\n }\n /** Implement {@link Layout#encode|encode} for {@link Sequence}.\n *\n * **NOTE** If `src` is shorter than {@link Sequence#count|count} then\n * the unused space in the buffer is left unchanged. If `src` is\n * longer than {@link Sequence#count|count} the unneeded elements are\n * ignored.\n *\n * **NOTE** If {@link Layout#count|count} is an instance of {@link\n * ExternalLayout} then the length of `src` will be encoded as the\n * count after `src` is encoded. */\n encode(src, b, offset = 0) {\n const elo = this.elementLayout;\n const span = src.reduce((span, v) => {\n return span + elo.encode(v, b, offset + span);\n }, 0);\n if (this.count instanceof ExternalLayout) {\n this.count.encode(src.length, b, offset);\n }\n return span;\n }\n}\nexports.Sequence = Sequence;\n/**\n * Represent a contiguous sequence of arbitrary layout elements as an\n * Object.\n *\n * *Factory*: {@link module:Layout.struct|struct}\n *\n * **NOTE** The {@link Layout#span|span} of the structure is variable\n * if any layout in {@link Structure#fields|fields} has a variable\n * span. When {@link Layout#encode|encoding} we must have a value for\n * all variable-length fields, or we wouldn't be able to figure out\n * how much space to use for storage. We can only identify the value\n * for a field when it has a {@link Layout#property|property}. As\n * such, although a structure may contain both unnamed fields and\n * variable-length fields, it cannot contain an unnamed\n * variable-length field.\n *\n * @param {Layout[]} fields - initializer for {@link\n * Structure#fields|fields}. An error is raised if this contains a\n * variable-length field for which a {@link Layout#property|property}\n * is not defined.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @param {Boolean} [decodePrefixes] - initializer for {@link\n * Structure#decodePrefixes|property}.\n *\n * @throws {Error} - if `fields` contains an unnamed variable-length\n * layout.\n *\n * @augments {Layout}\n */\nclass Structure extends Layout {\n constructor(fields, property, decodePrefixes) {\n if (!(Array.isArray(fields)\n && fields.reduce((acc, v) => acc && (v instanceof Layout), true))) {\n throw new TypeError('fields must be array of Layout instances');\n }\n if (('boolean' === typeof property)\n && (undefined === decodePrefixes)) {\n decodePrefixes = property;\n property = undefined;\n }\n /* Verify absence of unnamed variable-length fields. */\n for (const fd of fields) {\n if ((0 > fd.span)\n && (undefined === fd.property)) {\n throw new Error('fields cannot contain unnamed variable-length layout');\n }\n }\n let span = -1;\n try {\n span = fields.reduce((span, fd) => span + fd.getSpan(), 0);\n }\n catch (e) {\n // ignore error\n }\n super(span, property);\n /** The sequence of {@link Layout} values that comprise the\n * structure.\n *\n * The individual elements need not be the same type, and may be\n * either scalar or aggregate layouts. If a member layout leaves\n * its {@link Layout#property|property} undefined the\n * corresponding region of the buffer associated with the element\n * will not be mutated.\n *\n * @type {Layout[]} */\n this.fields = fields;\n /** Control behavior of {@link Layout#decode|decode()} given short\n * buffers.\n *\n * In some situations a structure many be extended with additional\n * fields over time, with older installations providing only a\n * prefix of the full structure. If this property is `true`\n * decoding will accept those buffers and leave subsequent fields\n * undefined, as long as the buffer ends at a field boundary.\n * Defaults to `false`. */\n this.decodePrefixes = !!decodePrefixes;\n }\n /** @override */\n getSpan(b, offset = 0) {\n if (0 <= this.span) {\n return this.span;\n }\n let span = 0;\n try {\n span = this.fields.reduce((span, fd) => {\n const fsp = fd.getSpan(b, offset);\n offset += fsp;\n return span + fsp;\n }, 0);\n }\n catch (e) {\n throw new RangeError('indeterminate span');\n }\n return span;\n }\n /** @override */\n decode(b, offset = 0) {\n checkUint8Array(b);\n const dest = this.makeDestinationObject();\n for (const fd of this.fields) {\n if (undefined !== fd.property) {\n dest[fd.property] = fd.decode(b, offset);\n }\n offset += fd.getSpan(b, offset);\n if (this.decodePrefixes\n && (b.length === offset)) {\n break;\n }\n }\n return dest;\n }\n /** Implement {@link Layout#encode|encode} for {@link Structure}.\n *\n * If `src` is missing a property for a member with a defined {@link\n * Layout#property|property} the corresponding region of the buffer is\n * left unmodified. */\n encode(src, b, offset = 0) {\n const firstOffset = offset;\n let lastOffset = 0;\n let lastWrote = 0;\n for (const fd of this.fields) {\n let span = fd.span;\n lastWrote = (0 < span) ? span : 0;\n if (undefined !== fd.property) {\n const fv = src[fd.property];\n if (undefined !== fv) {\n lastWrote = fd.encode(fv, b, offset);\n if (0 > span) {\n /* Read the as-encoded span, which is not necessarily the\n * same as what we wrote. */\n span = fd.getSpan(b, offset);\n }\n }\n }\n lastOffset = offset;\n offset += span;\n }\n /* Use (lastOffset + lastWrote) instead of offset because the last\n * item may have had a dynamic length and we don't want to include\n * the padding between it and the end of the space reserved for\n * it. */\n return (lastOffset + lastWrote) - firstOffset;\n }\n /** @override */\n fromArray(values) {\n const dest = this.makeDestinationObject();\n for (const fd of this.fields) {\n if ((undefined !== fd.property)\n && (0 < values.length)) {\n dest[fd.property] = values.shift();\n }\n }\n return dest;\n }\n /**\n * Get access to the layout of a given property.\n *\n * @param {String} property - the structure member of interest.\n *\n * @return {Layout} - the layout associated with `property`, or\n * undefined if there is no such property.\n */\n layoutFor(property) {\n if ('string' !== typeof property) {\n throw new TypeError('property must be string');\n }\n for (const fd of this.fields) {\n if (fd.property === property) {\n return fd;\n }\n }\n return undefined;\n }\n /**\n * Get the offset of a structure member.\n *\n * @param {String} property - the structure member of interest.\n *\n * @return {Number} - the offset in bytes to the start of `property`\n * within the structure, or undefined if `property` is not a field\n * within the structure. If the property is a member but follows a\n * variable-length structure member a negative number will be\n * returned.\n */\n offsetOf(property) {\n if ('string' !== typeof property) {\n throw new TypeError('property must be string');\n }\n let offset = 0;\n for (const fd of this.fields) {\n if (fd.property === property) {\n return offset;\n }\n if (0 > fd.span) {\n offset = -1;\n }\n else if (0 <= offset) {\n offset += fd.span;\n }\n }\n return undefined;\n }\n}\nexports.Structure = Structure;\n/**\n * An object that can provide a {@link\n * Union#discriminator|discriminator} API for {@link Union}.\n *\n * **NOTE** This is an abstract base class; you can create instances\n * if it amuses you, but they won't support the {@link\n * UnionDiscriminator#encode|encode} or {@link\n * UnionDiscriminator#decode|decode} functions.\n *\n * @param {string} [property] - Default for {@link\n * UnionDiscriminator#property|property}.\n *\n * @abstract\n */\nclass UnionDiscriminator {\n constructor(property) {\n /** The {@link Layout#property|property} to be used when the\n * discriminator is referenced in isolation (generally when {@link\n * Union#decode|Union decode} cannot delegate to a specific\n * variant). */\n this.property = property;\n }\n /** Analog to {@link Layout#decode|Layout decode} for union discriminators.\n *\n * The implementation of this method need not reference the buffer if\n * variant information is available through other means. */\n decode(b, offset) {\n throw new Error('UnionDiscriminator is abstract');\n }\n /** Analog to {@link Layout#decode|Layout encode} for union discriminators.\n *\n * The implementation of this method need not store the value if\n * variant information is maintained through other means. */\n encode(src, b, offset) {\n throw new Error('UnionDiscriminator is abstract');\n }\n}\nexports.UnionDiscriminator = UnionDiscriminator;\n/**\n * An object that can provide a {@link\n * UnionDiscriminator|discriminator API} for {@link Union} using an\n * unsigned integral {@link Layout} instance located either inside or\n * outside the union.\n *\n * @param {ExternalLayout} layout - initializes {@link\n * UnionLayoutDiscriminator#layout|layout}. Must satisfy {@link\n * ExternalLayout#isCount|isCount()}.\n *\n * @param {string} [property] - Default for {@link\n * UnionDiscriminator#property|property}, superseding the property\n * from `layout`, but defaulting to `variant` if neither `property`\n * nor layout provide a property name.\n *\n * @augments {UnionDiscriminator}\n */\nclass UnionLayoutDiscriminator extends UnionDiscriminator {\n constructor(layout, property) {\n if (!((layout instanceof ExternalLayout)\n && layout.isCount())) {\n throw new TypeError('layout must be an unsigned integer ExternalLayout');\n }\n super(property || layout.property || 'variant');\n /** The {@link ExternalLayout} used to access the discriminator\n * value. */\n this.layout = layout;\n }\n /** Delegate decoding to {@link UnionLayoutDiscriminator#layout|layout}. */\n decode(b, offset) {\n return this.layout.decode(b, offset);\n }\n /** Delegate encoding to {@link UnionLayoutDiscriminator#layout|layout}. */\n encode(src, b, offset) {\n return this.layout.encode(src, b, offset);\n }\n}\nexports.UnionLayoutDiscriminator = UnionLayoutDiscriminator;\n/**\n * Represent any number of span-compatible layouts.\n *\n * *Factory*: {@link module:Layout.union|union}\n *\n * If the union has a {@link Union#defaultLayout|default layout} that\n * layout must have a non-negative {@link Layout#span|span}. The span\n * of a fixed-span union includes its {@link\n * Union#discriminator|discriminator} if the variant is a {@link\n * Union#usesPrefixDiscriminator|prefix of the union}, plus the span\n * of its {@link Union#defaultLayout|default layout}.\n *\n * If the union does not have a default layout then the encoded span\n * of the union depends on the encoded span of its variant (which may\n * be fixed or variable).\n *\n * {@link VariantLayout#layout|Variant layout}s are added through\n * {@link Union#addVariant|addVariant}. If the union has a default\n * layout, the span of the {@link VariantLayout#layout|layout\n * contained by the variant} must not exceed the span of the {@link\n * Union#defaultLayout|default layout} (minus the span of a {@link\n * Union#usesPrefixDiscriminator|prefix disriminator}, if used). The\n * span of the variant will equal the span of the union itself.\n *\n * The variant for a buffer can only be identified from the {@link\n * Union#discriminator|discriminator} {@link\n * UnionDiscriminator#property|property} (in the case of the {@link\n * Union#defaultLayout|default layout}), or by using {@link\n * Union#getVariant|getVariant} and examining the resulting {@link\n * VariantLayout} instance.\n *\n * A variant compatible with a JavaScript object can be identified\n * using {@link Union#getSourceVariant|getSourceVariant}.\n *\n * @param {(UnionDiscriminator|ExternalLayout|Layout)} discr - How to\n * identify the layout used to interpret the union contents. The\n * parameter must be an instance of {@link UnionDiscriminator}, an\n * {@link ExternalLayout} that satisfies {@link\n * ExternalLayout#isCount|isCount()}, or {@link UInt} (or {@link\n * UIntBE}). When a non-external layout element is passed the layout\n * appears at the start of the union. In all cases the (synthesized)\n * {@link UnionDiscriminator} instance is recorded as {@link\n * Union#discriminator|discriminator}.\n *\n * @param {(Layout|null)} defaultLayout - initializer for {@link\n * Union#defaultLayout|defaultLayout}. If absent defaults to `null`.\n * If `null` there is no default layout: the union has data-dependent\n * length and attempts to decode or encode unrecognized variants will\n * throw an exception. A {@link Layout} instance must have a\n * non-negative {@link Layout#span|span}, and if it lacks a {@link\n * Layout#property|property} the {@link\n * Union#defaultLayout|defaultLayout} will be a {@link\n * Layout#replicate|replica} with property `content`.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Union extends Layout {\n constructor(discr, defaultLayout, property) {\n let discriminator;\n if ((discr instanceof UInt)\n || (discr instanceof UIntBE)) {\n discriminator = new UnionLayoutDiscriminator(new OffsetLayout(discr));\n }\n else if ((discr instanceof ExternalLayout)\n && discr.isCount()) {\n discriminator = new UnionLayoutDiscriminator(discr);\n }\n else if (!(discr instanceof UnionDiscriminator)) {\n throw new TypeError('discr must be a UnionDiscriminator '\n + 'or an unsigned integer layout');\n }\n else {\n discriminator = discr;\n }\n if (undefined === defaultLayout) {\n defaultLayout = null;\n }\n if (!((null === defaultLayout)\n || (defaultLayout instanceof Layout))) {\n throw new TypeError('defaultLayout must be null or a Layout');\n }\n if (null !== defaultLayout) {\n if (0 > defaultLayout.span) {\n throw new Error('defaultLayout must have constant span');\n }\n if (undefined === defaultLayout.property) {\n defaultLayout = defaultLayout.replicate('content');\n }\n }\n /* The union span can be estimated only if there's a default\n * layout. The union spans its default layout, plus any prefix\n * variant layout. By construction both layouts, if present, have\n * non-negative span. */\n let span = -1;\n if (defaultLayout) {\n span = defaultLayout.span;\n if ((0 <= span) && ((discr instanceof UInt)\n || (discr instanceof UIntBE))) {\n span += discriminator.layout.span;\n }\n }\n super(span, property);\n /** The interface for the discriminator value in isolation.\n *\n * This a {@link UnionDiscriminator} either passed to the\n * constructor or synthesized from the `discr` constructor\n * argument. {@link\n * Union#usesPrefixDiscriminator|usesPrefixDiscriminator} will be\n * `true` iff the `discr` parameter was a non-offset {@link\n * Layout} instance. */\n this.discriminator = discriminator;\n /** `true` if the {@link Union#discriminator|discriminator} is the\n * first field in the union.\n *\n * If `false` the discriminator is obtained from somewhere\n * else. */\n this.usesPrefixDiscriminator = (discr instanceof UInt)\n || (discr instanceof UIntBE);\n /** The layout for non-discriminator content when the value of the\n * discriminator is not recognized.\n *\n * This is the value passed to the constructor. It is\n * structurally equivalent to the second component of {@link\n * Union#layout|layout} but may have a different property\n * name. */\n this.defaultLayout = defaultLayout;\n /** A registry of allowed variants.\n *\n * The keys are unsigned integers which should be compatible with\n * {@link Union.discriminator|discriminator}. The property value\n * is the corresponding {@link VariantLayout} instances assigned\n * to this union by {@link Union#addVariant|addVariant}.\n *\n * **NOTE** The registry remains mutable so that variants can be\n * {@link Union#addVariant|added} at any time. Users should not\n * manipulate the content of this property. */\n this.registry = {};\n /* Private variable used when invoking getSourceVariant */\n let boundGetSourceVariant = this.defaultGetSourceVariant.bind(this);\n /** Function to infer the variant selected by a source object.\n *\n * Defaults to {@link\n * Union#defaultGetSourceVariant|defaultGetSourceVariant} but may\n * be overridden using {@link\n * Union#configGetSourceVariant|configGetSourceVariant}.\n *\n * @param {Object} src - as with {@link\n * Union#defaultGetSourceVariant|defaultGetSourceVariant}.\n *\n * @returns {(undefined|VariantLayout)} The default variant\n * (`undefined`) or first registered variant that uses a property\n * available in `src`. */\n this.getSourceVariant = function (src) {\n return boundGetSourceVariant(src);\n };\n /** Function to override the implementation of {@link\n * Union#getSourceVariant|getSourceVariant}.\n *\n * Use this if the desired variant cannot be identified using the\n * algorithm of {@link\n * Union#defaultGetSourceVariant|defaultGetSourceVariant}.\n *\n * **NOTE** The provided function will be invoked bound to this\n * Union instance, providing local access to {@link\n * Union#registry|registry}.\n *\n * @param {Function} gsv - a function that follows the API of\n * {@link Union#defaultGetSourceVariant|defaultGetSourceVariant}. */\n this.configGetSourceVariant = function (gsv) {\n boundGetSourceVariant = gsv.bind(this);\n };\n }\n /** @override */\n getSpan(b, offset = 0) {\n if (0 <= this.span) {\n return this.span;\n }\n /* Default layouts always have non-negative span, so we don't have\n * one and we have to recognize the variant which will in turn\n * determine the span. */\n const vlo = this.getVariant(b, offset);\n if (!vlo) {\n throw new Error('unable to determine span for unrecognized variant');\n }\n return vlo.getSpan(b, offset);\n }\n /**\n * Method to infer a registered Union variant compatible with `src`.\n *\n * The first satisfied rule in the following sequence defines the\n * return value:\n * * If `src` has properties matching the Union discriminator and\n * the default layout, `undefined` is returned regardless of the\n * value of the discriminator property (this ensures the default\n * layout will be used);\n * * If `src` has a property matching the Union discriminator, the\n * value of the discriminator identifies a registered variant, and\n * either (a) the variant has no layout, or (b) `src` has the\n * variant's property, then the variant is returned (because the\n * source satisfies the constraints of the variant it identifies);\n * * If `src` does not have a property matching the Union\n * discriminator, but does have a property matching a registered\n * variant, then the variant is returned (because the source\n * matches a variant without an explicit conflict);\n * * An error is thrown (because we either can't identify a variant,\n * or we were explicitly told the variant but can't satisfy it).\n *\n * @param {Object} src - an object presumed to be compatible with\n * the content of the Union.\n *\n * @return {(undefined|VariantLayout)} - as described above.\n *\n * @throws {Error} - if `src` cannot be associated with a default or\n * registered variant.\n */\n defaultGetSourceVariant(src) {\n if (Object.prototype.hasOwnProperty.call(src, this.discriminator.property)) {\n if (this.defaultLayout && this.defaultLayout.property\n && Object.prototype.hasOwnProperty.call(src, this.defaultLayout.property)) {\n return undefined;\n }\n const vlo = this.registry[src[this.discriminator.property]];\n if (vlo\n && ((!vlo.layout)\n || (vlo.property && Object.prototype.hasOwnProperty.call(src, vlo.property)))) {\n return vlo;\n }\n }\n else {\n for (const tag in this.registry) {\n const vlo = this.registry[tag];\n if (vlo.property && Object.prototype.hasOwnProperty.call(src, vlo.property)) {\n return vlo;\n }\n }\n }\n throw new Error('unable to infer src variant');\n }\n /** Implement {@link Layout#decode|decode} for {@link Union}.\n *\n * If the variant is {@link Union#addVariant|registered} the return\n * value is an instance of that variant, with no explicit\n * discriminator. Otherwise the {@link Union#defaultLayout|default\n * layout} is used to decode the content. */\n decode(b, offset = 0) {\n let dest;\n const dlo = this.discriminator;\n const discr = dlo.decode(b, offset);\n const clo = this.registry[discr];\n if (undefined === clo) {\n const defaultLayout = this.defaultLayout;\n let contentOffset = 0;\n if (this.usesPrefixDiscriminator) {\n contentOffset = dlo.layout.span;\n }\n dest = this.makeDestinationObject();\n dest[dlo.property] = discr;\n // defaultLayout.property can be undefined, but this is allowed by buffer-layout\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n dest[defaultLayout.property] = defaultLayout.decode(b, offset + contentOffset);\n }\n else {\n dest = clo.decode(b, offset);\n }\n return dest;\n }\n /** Implement {@link Layout#encode|encode} for {@link Union}.\n *\n * This API assumes the `src` object is consistent with the union's\n * {@link Union#defaultLayout|default layout}. To encode variants\n * use the appropriate variant-specific {@link VariantLayout#encode}\n * method. */\n encode(src, b, offset = 0) {\n const vlo = this.getSourceVariant(src);\n if (undefined === vlo) {\n const dlo = this.discriminator;\n // this.defaultLayout is not undefined when vlo is undefined\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const clo = this.defaultLayout;\n let contentOffset = 0;\n if (this.usesPrefixDiscriminator) {\n contentOffset = dlo.layout.span;\n }\n dlo.encode(src[dlo.property], b, offset);\n // clo.property is not undefined when vlo is undefined\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return contentOffset + clo.encode(src[clo.property], b, offset + contentOffset);\n }\n return vlo.encode(src, b, offset);\n }\n /** Register a new variant structure within a union. The newly\n * created variant is returned.\n *\n * @param {Number} variant - initializer for {@link\n * VariantLayout#variant|variant}.\n *\n * @param {Layout} layout - initializer for {@link\n * VariantLayout#layout|layout}.\n *\n * @param {String} property - initializer for {@link\n * Layout#property|property}.\n *\n * @return {VariantLayout} */\n addVariant(variant, layout, property) {\n const rv = new VariantLayout(this, variant, layout, property);\n this.registry[variant] = rv;\n return rv;\n }\n /**\n * Get the layout associated with a registered variant.\n *\n * If `vb` does not produce a registered variant the function returns\n * `undefined`.\n *\n * @param {(Number|Uint8Array)} vb - either the variant number, or a\n * buffer from which the discriminator is to be read.\n *\n * @param {Number} offset - offset into `vb` for the start of the\n * union. Used only when `vb` is an instance of {Uint8Array}.\n *\n * @return {({VariantLayout}|undefined)}\n */\n getVariant(vb, offset = 0) {\n let variant;\n if (vb instanceof Uint8Array) {\n variant = this.discriminator.decode(vb, offset);\n }\n else {\n variant = vb;\n }\n return this.registry[variant];\n }\n}\nexports.Union = Union;\n/**\n * Represent a specific variant within a containing union.\n *\n * **NOTE** The {@link Layout#span|span} of the variant may include\n * the span of the {@link Union#discriminator|discriminator} used to\n * identify it, but values read and written using the variant strictly\n * conform to the content of {@link VariantLayout#layout|layout}.\n *\n * **NOTE** User code should not invoke this constructor directly. Use\n * the union {@link Union#addVariant|addVariant} helper method.\n *\n * @param {Union} union - initializer for {@link\n * VariantLayout#union|union}.\n *\n * @param {Number} variant - initializer for {@link\n * VariantLayout#variant|variant}.\n *\n * @param {Layout} [layout] - initializer for {@link\n * VariantLayout#layout|layout}. If absent the variant carries no\n * data.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}. Unlike many other layouts, variant\n * layouts normally include a property name so they can be identified\n * within their containing {@link Union}. The property identifier may\n * be absent only if `layout` is is absent.\n *\n * @augments {Layout}\n */\nclass VariantLayout extends Layout {\n constructor(union, variant, layout, property) {\n if (!(union instanceof Union)) {\n throw new TypeError('union must be a Union');\n }\n if ((!Number.isInteger(variant)) || (0 > variant)) {\n throw new TypeError('variant must be a (non-negative) integer');\n }\n if (('string' === typeof layout)\n && (undefined === property)) {\n property = layout;\n layout = null;\n }\n if (layout) {\n if (!(layout instanceof Layout)) {\n throw new TypeError('layout must be a Layout');\n }\n if ((null !== union.defaultLayout)\n && (0 <= layout.span)\n && (layout.span > union.defaultLayout.span)) {\n throw new Error('variant span exceeds span of containing union');\n }\n if ('string' !== typeof property) {\n throw new TypeError('variant must have a String property');\n }\n }\n let span = union.span;\n if (0 > union.span) {\n span = layout ? layout.span : 0;\n if ((0 <= span) && union.usesPrefixDiscriminator) {\n span += union.discriminator.layout.span;\n }\n }\n super(span, property);\n /** The {@link Union} to which this variant belongs. */\n this.union = union;\n /** The unsigned integral value identifying this variant within\n * the {@link Union#discriminator|discriminator} of the containing\n * union. */\n this.variant = variant;\n /** The {@link Layout} to be used when reading/writing the\n * non-discriminator part of the {@link\n * VariantLayout#union|union}. If `null` the variant carries no\n * data. */\n this.layout = layout || null;\n }\n /** @override */\n getSpan(b, offset = 0) {\n if (0 <= this.span) {\n /* Will be equal to the containing union span if that is not\n * variable. */\n return this.span;\n }\n let contentOffset = 0;\n if (this.union.usesPrefixDiscriminator) {\n contentOffset = this.union.discriminator.layout.span;\n }\n /* Span is defined solely by the variant (and prefix discriminator) */\n let span = 0;\n if (this.layout) {\n span = this.layout.getSpan(b, offset + contentOffset);\n }\n return contentOffset + span;\n }\n /** @override */\n decode(b, offset = 0) {\n const dest = this.makeDestinationObject();\n if (this !== this.union.getVariant(b, offset)) {\n throw new Error('variant mismatch');\n }\n let contentOffset = 0;\n if (this.union.usesPrefixDiscriminator) {\n contentOffset = this.union.discriminator.layout.span;\n }\n if (this.layout) {\n dest[this.property] = this.layout.decode(b, offset + contentOffset);\n }\n else if (this.property) {\n dest[this.property] = true;\n }\n else if (this.union.usesPrefixDiscriminator) {\n dest[this.union.discriminator.property] = this.variant;\n }\n return dest;\n }\n /** @override */\n encode(src, b, offset = 0) {\n let contentOffset = 0;\n if (this.union.usesPrefixDiscriminator) {\n contentOffset = this.union.discriminator.layout.span;\n }\n if (this.layout\n && (!Object.prototype.hasOwnProperty.call(src, this.property))) {\n throw new TypeError('variant lacks property ' + this.property);\n }\n this.union.discriminator.encode(this.variant, b, offset);\n let span = contentOffset;\n if (this.layout) {\n this.layout.encode(src[this.property], b, offset + contentOffset);\n span += this.layout.getSpan(b, offset + contentOffset);\n if ((0 <= this.union.span)\n && (span > this.union.span)) {\n throw new Error('encoded variant overruns containing union');\n }\n }\n return span;\n }\n /** Delegate {@link Layout#fromArray|fromArray} to {@link\n * VariantLayout#layout|layout}. */\n fromArray(values) {\n if (this.layout) {\n return this.layout.fromArray(values);\n }\n return undefined;\n }\n}\nexports.VariantLayout = VariantLayout;\n/** JavaScript chose to define bitwise operations as operating on\n * signed 32-bit values in 2's complement form, meaning any integer\n * with bit 31 set is going to look negative. For right shifts that's\n * not a problem, because `>>>` is a logical shift, but for every\n * other bitwise operator we have to compensate for possible negative\n * results. */\nfunction fixBitwiseResult(v) {\n if (0 > v) {\n v += 0x100000000;\n }\n return v;\n}\n/**\n * Contain a sequence of bit fields as an unsigned integer.\n *\n * *Factory*: {@link module:Layout.bits|bits}\n *\n * This is a container element; within it there are {@link BitField}\n * instances that provide the extracted properties. The container\n * simply defines the aggregate representation and its bit ordering.\n * The representation is an object containing properties with numeric\n * or {@link Boolean} values.\n *\n * {@link BitField}s are added with the {@link\n * BitStructure#addField|addField} and {@link\n * BitStructure#addBoolean|addBoolean} methods.\n\n * @param {Layout} word - initializer for {@link\n * BitStructure#word|word}. The parameter must be an instance of\n * {@link UInt} (or {@link UIntBE}) that is no more than 4 bytes wide.\n *\n * @param {bool} [msb] - `true` if the bit numbering starts at the\n * most significant bit of the containing word; `false` (default) if\n * it starts at the least significant bit of the containing word. If\n * the parameter at this position is a string and `property` is\n * `undefined` the value of this argument will instead be used as the\n * value of `property`.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass BitStructure extends Layout {\n constructor(word, msb, property) {\n if (!((word instanceof UInt)\n || (word instanceof UIntBE))) {\n throw new TypeError('word must be a UInt or UIntBE layout');\n }\n if (('string' === typeof msb)\n && (undefined === property)) {\n property = msb;\n msb = false;\n }\n if (4 < word.span) {\n throw new RangeError('word cannot exceed 32 bits');\n }\n super(word.span, property);\n /** The layout used for the packed value. {@link BitField}\n * instances are packed sequentially depending on {@link\n * BitStructure#msb|msb}. */\n this.word = word;\n /** Whether the bit sequences are packed starting at the most\n * significant bit growing down (`true`), or the least significant\n * bit growing up (`false`).\n *\n * **NOTE** Regardless of this value, the least significant bit of\n * any {@link BitField} value is the least significant bit of the\n * corresponding section of the packed value. */\n this.msb = !!msb;\n /** The sequence of {@link BitField} layouts that comprise the\n * packed structure.\n *\n * **NOTE** The array remains mutable to allow fields to be {@link\n * BitStructure#addField|added} after construction. Users should\n * not manipulate the content of this property.*/\n this.fields = [];\n /* Storage for the value. Capture a variable instead of using an\n * instance property because we don't want anything to change the\n * value without going through the mutator. */\n let value = 0;\n this._packedSetValue = function (v) {\n value = fixBitwiseResult(v);\n return this;\n };\n this._packedGetValue = function () {\n return value;\n };\n }\n /** @override */\n decode(b, offset = 0) {\n const dest = this.makeDestinationObject();\n const value = this.word.decode(b, offset);\n this._packedSetValue(value);\n for (const fd of this.fields) {\n if (undefined !== fd.property) {\n dest[fd.property] = fd.decode(b);\n }\n }\n return dest;\n }\n /** Implement {@link Layout#encode|encode} for {@link BitStructure}.\n *\n * If `src` is missing a property for a member with a defined {@link\n * Layout#property|property} the corresponding region of the packed\n * value is left unmodified. Unused bits are also left unmodified. */\n encode(src, b, offset = 0) {\n const value = this.word.decode(b, offset);\n this._packedSetValue(value);\n for (const fd of this.fields) {\n if (undefined !== fd.property) {\n const fv = src[fd.property];\n if (undefined !== fv) {\n fd.encode(fv);\n }\n }\n }\n return this.word.encode(this._packedGetValue(), b, offset);\n }\n /** Register a new bitfield with a containing bit structure. The\n * resulting bitfield is returned.\n *\n * @param {Number} bits - initializer for {@link BitField#bits|bits}.\n *\n * @param {string} property - initializer for {@link\n * Layout#property|property}.\n *\n * @return {BitField} */\n addField(bits, property) {\n const bf = new BitField(this, bits, property);\n this.fields.push(bf);\n return bf;\n }\n /** As with {@link BitStructure#addField|addField} for single-bit\n * fields with `boolean` value representation.\n *\n * @param {string} property - initializer for {@link\n * Layout#property|property}.\n *\n * @return {Boolean} */\n // `Boolean` conflicts with the native primitive type\n // eslint-disable-next-line @typescript-eslint/ban-types\n addBoolean(property) {\n // This is my Boolean, not the Javascript one.\n const bf = new Boolean(this, property);\n this.fields.push(bf);\n return bf;\n }\n /**\n * Get access to the bit field for a given property.\n *\n * @param {String} property - the bit field of interest.\n *\n * @return {BitField} - the field associated with `property`, or\n * undefined if there is no such property.\n */\n fieldFor(property) {\n if ('string' !== typeof property) {\n throw new TypeError('property must be string');\n }\n for (const fd of this.fields) {\n if (fd.property === property) {\n return fd;\n }\n }\n return undefined;\n }\n}\nexports.BitStructure = BitStructure;\n/**\n * Represent a sequence of bits within a {@link BitStructure}.\n *\n * All bit field values are represented as unsigned integers.\n *\n * **NOTE** User code should not invoke this constructor directly.\n * Use the container {@link BitStructure#addField|addField} helper\n * method.\n *\n * **NOTE** BitField instances are not instances of {@link Layout}\n * since {@link Layout#span|span} measures 8-bit units.\n *\n * @param {BitStructure} container - initializer for {@link\n * BitField#container|container}.\n *\n * @param {Number} bits - initializer for {@link BitField#bits|bits}.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n */\nclass BitField {\n constructor(container, bits, property) {\n if (!(container instanceof BitStructure)) {\n throw new TypeError('container must be a BitStructure');\n }\n if ((!Number.isInteger(bits)) || (0 >= bits)) {\n throw new TypeError('bits must be positive integer');\n }\n const totalBits = 8 * container.span;\n const usedBits = container.fields.reduce((sum, fd) => sum + fd.bits, 0);\n if ((bits + usedBits) > totalBits) {\n throw new Error('bits too long for span remainder ('\n + (totalBits - usedBits) + ' of '\n + totalBits + ' remain)');\n }\n /** The {@link BitStructure} instance to which this bit field\n * belongs. */\n this.container = container;\n /** The span of this value in bits. */\n this.bits = bits;\n /** A mask of {@link BitField#bits|bits} bits isolating value bits\n * that fit within the field.\n *\n * That is, it masks a value that has not yet been shifted into\n * position within its containing packed integer. */\n this.valueMask = (1 << bits) - 1;\n if (32 === bits) { // shifted value out of range\n this.valueMask = 0xFFFFFFFF;\n }\n /** The offset of the value within the containing packed unsigned\n * integer. The least significant bit of the packed value is at\n * offset zero, regardless of bit ordering used. */\n this.start = usedBits;\n if (this.container.msb) {\n this.start = totalBits - usedBits - bits;\n }\n /** A mask of {@link BitField#bits|bits} isolating the field value\n * within the containing packed unsigned integer. */\n this.wordMask = fixBitwiseResult(this.valueMask << this.start);\n /** The property name used when this bitfield is represented in an\n * Object.\n *\n * Intended to be functionally equivalent to {@link\n * Layout#property}.\n *\n * If left undefined the corresponding span of bits will be\n * treated as padding: it will not be mutated by {@link\n * Layout#encode|encode} nor represented as a property in the\n * decoded Object. */\n this.property = property;\n }\n /** Store a value into the corresponding subsequence of the containing\n * bit field. */\n decode(b, offset) {\n const word = this.container._packedGetValue();\n const wordValue = fixBitwiseResult(word & this.wordMask);\n const value = wordValue >>> this.start;\n return value;\n }\n /** Store a value into the corresponding subsequence of the containing\n * bit field.\n *\n * **NOTE** This is not a specialization of {@link\n * Layout#encode|Layout.encode} and there is no return value. */\n encode(value) {\n if ('number' !== typeof value\n || !Number.isInteger(value)\n || (value !== fixBitwiseResult(value & this.valueMask))) {\n throw new TypeError(nameWithProperty('BitField.encode', this)\n + ' value must be integer not exceeding ' + this.valueMask);\n }\n const word = this.container._packedGetValue();\n const wordValue = fixBitwiseResult(value << this.start);\n this.container._packedSetValue(fixBitwiseResult(word & ~this.wordMask)\n | wordValue);\n }\n}\nexports.BitField = BitField;\n/**\n * Represent a single bit within a {@link BitStructure} as a\n * JavaScript boolean.\n *\n * **NOTE** User code should not invoke this constructor directly.\n * Use the container {@link BitStructure#addBoolean|addBoolean} helper\n * method.\n *\n * @param {BitStructure} container - initializer for {@link\n * BitField#container|container}.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {BitField}\n */\n/* eslint-disable no-extend-native */\nclass Boolean extends BitField {\n constructor(container, property) {\n super(container, 1, property);\n }\n /** Override {@link BitField#decode|decode} for {@link Boolean|Boolean}.\n *\n * @returns {boolean} */\n decode(b, offset) {\n return !!super.decode(b, offset);\n }\n /** @override */\n encode(value) {\n if ('boolean' === typeof value) {\n // BitField requires integer values\n value = +value;\n }\n super.encode(value);\n }\n}\nexports.Boolean = Boolean;\n/* eslint-enable no-extend-native */\n/**\n * Contain a fixed-length block of arbitrary data, represented as a\n * Uint8Array.\n *\n * *Factory*: {@link module:Layout.blob|blob}\n *\n * @param {(Number|ExternalLayout)} length - initializes {@link\n * Blob#length|length}.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Blob extends Layout {\n constructor(length, property) {\n if (!(((length instanceof ExternalLayout) && length.isCount())\n || (Number.isInteger(length) && (0 <= length)))) {\n throw new TypeError('length must be positive integer '\n + 'or an unsigned integer ExternalLayout');\n }\n let span = -1;\n if (!(length instanceof ExternalLayout)) {\n span = length;\n }\n super(span, property);\n /** The number of bytes in the blob.\n *\n * This may be a non-negative integer, or an instance of {@link\n * ExternalLayout} that satisfies {@link\n * ExternalLayout#isCount|isCount()}. */\n this.length = length;\n }\n /** @override */\n getSpan(b, offset) {\n let span = this.span;\n if (0 > span) {\n span = this.length.decode(b, offset);\n }\n return span;\n }\n /** @override */\n decode(b, offset = 0) {\n let span = this.span;\n if (0 > span) {\n span = this.length.decode(b, offset);\n }\n return uint8ArrayToBuffer(b).slice(offset, offset + span);\n }\n /** Implement {@link Layout#encode|encode} for {@link Blob}.\n *\n * **NOTE** If {@link Layout#count|count} is an instance of {@link\n * ExternalLayout} then the length of `src` will be encoded as the\n * count after `src` is encoded. */\n encode(src, b, offset) {\n let span = this.length;\n if (this.length instanceof ExternalLayout) {\n span = src.length;\n }\n if (!(src instanceof Uint8Array && span === src.length)) {\n throw new TypeError(nameWithProperty('Blob.encode', this)\n + ' requires (length ' + span + ') Uint8Array as src');\n }\n if ((offset + span) > b.length) {\n throw new RangeError('encoding overruns Uint8Array');\n }\n const srcBuffer = uint8ArrayToBuffer(src);\n uint8ArrayToBuffer(b).write(srcBuffer.toString('hex'), offset, span, 'hex');\n if (this.length instanceof ExternalLayout) {\n this.length.encode(span, b, offset);\n }\n return span;\n }\n}\nexports.Blob = Blob;\n/**\n * Contain a `NUL`-terminated UTF8 string.\n *\n * *Factory*: {@link module:Layout.cstr|cstr}\n *\n * **NOTE** Any UTF8 string that incorporates a zero-valued byte will\n * not be correctly decoded by this layout.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass CString extends Layout {\n constructor(property) {\n super(-1, property);\n }\n /** @override */\n getSpan(b, offset = 0) {\n checkUint8Array(b);\n let idx = offset;\n while ((idx < b.length) && (0 !== b[idx])) {\n idx += 1;\n }\n return 1 + idx - offset;\n }\n /** @override */\n decode(b, offset = 0) {\n const span = this.getSpan(b, offset);\n return uint8ArrayToBuffer(b).slice(offset, offset + span - 1).toString('utf-8');\n }\n /** @override */\n encode(src, b, offset = 0) {\n /* Must force this to a string, lest it be a number and the\n * \"utf8-encoding\" below actually allocate a buffer of length\n * src */\n if ('string' !== typeof src) {\n src = String(src);\n }\n const srcb = buffer_1.Buffer.from(src, 'utf8');\n const span = srcb.length;\n if ((offset + span) > b.length) {\n throw new RangeError('encoding overruns Buffer');\n }\n const buffer = uint8ArrayToBuffer(b);\n srcb.copy(buffer, offset);\n buffer[offset + span] = 0;\n return span + 1;\n }\n}\nexports.CString = CString;\n/**\n * Contain a UTF8 string with implicit length.\n *\n * *Factory*: {@link module:Layout.utf8|utf8}\n *\n * **NOTE** Because the length is implicit in the size of the buffer\n * this layout should be used only in isolation, or in a situation\n * where the length can be expressed by operating on a slice of the\n * containing buffer.\n *\n * @param {Number} [maxSpan] - the maximum length allowed for encoded\n * string content. If not provided there is no bound on the allowed\n * content.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass UTF8 extends Layout {\n constructor(maxSpan, property) {\n if (('string' === typeof maxSpan) && (undefined === property)) {\n property = maxSpan;\n maxSpan = undefined;\n }\n if (undefined === maxSpan) {\n maxSpan = -1;\n }\n else if (!Number.isInteger(maxSpan)) {\n throw new TypeError('maxSpan must be an integer');\n }\n super(-1, property);\n /** The maximum span of the layout in bytes.\n *\n * Positive values are generally expected. Zero is abnormal.\n * Attempts to encode or decode a value that exceeds this length\n * will throw a `RangeError`.\n *\n * A negative value indicates that there is no bound on the length\n * of the content. */\n this.maxSpan = maxSpan;\n }\n /** @override */\n getSpan(b, offset = 0) {\n checkUint8Array(b);\n return b.length - offset;\n }\n /** @override */\n decode(b, offset = 0) {\n const span = this.getSpan(b, offset);\n if ((0 <= this.maxSpan)\n && (this.maxSpan < span)) {\n throw new RangeError('text length exceeds maxSpan');\n }\n return uint8ArrayToBuffer(b).slice(offset, offset + span).toString('utf-8');\n }\n /** @override */\n encode(src, b, offset = 0) {\n /* Must force this to a string, lest it be a number and the\n * \"utf8-encoding\" below actually allocate a buffer of length\n * src */\n if ('string' !== typeof src) {\n src = String(src);\n }\n const srcb = buffer_1.Buffer.from(src, 'utf8');\n const span = srcb.length;\n if ((0 <= this.maxSpan)\n && (this.maxSpan < span)) {\n throw new RangeError('text length exceeds maxSpan');\n }\n if ((offset + span) > b.length) {\n throw new RangeError('encoding overruns Buffer');\n }\n srcb.copy(uint8ArrayToBuffer(b), offset);\n return span;\n }\n}\nexports.UTF8 = UTF8;\n/**\n * Contain a constant value.\n *\n * This layout may be used in cases where a JavaScript value can be\n * inferred without an expression in the binary encoding. An example\n * would be a {@link VariantLayout|variant layout} where the content\n * is implied by the union {@link Union#discriminator|discriminator}.\n *\n * @param {Object|Number|String} value - initializer for {@link\n * Constant#value|value}. If the value is an object (or array) and\n * the application intends the object to remain unchanged regardless\n * of what is done to values decoded by this layout, the value should\n * be frozen prior passing it to this constructor.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Constant extends Layout {\n constructor(value, property) {\n super(0, property);\n /** The value produced by this constant when the layout is {@link\n * Constant#decode|decoded}.\n *\n * Any JavaScript value including `null` and `undefined` is\n * permitted.\n *\n * **WARNING** If `value` passed in the constructor was not\n * frozen, it is possible for users of decoded values to change\n * the content of the value. */\n this.value = value;\n }\n /** @override */\n decode(b, offset) {\n return this.value;\n }\n /** @override */\n encode(src, b, offset) {\n /* Constants take no space */\n return 0;\n }\n}\nexports.Constant = Constant;\n/** Factory for {@link GreedyCount}. */\nexports.greedy = ((elementSpan, property) => new GreedyCount(elementSpan, property));\n/** Factory for {@link OffsetLayout}. */\nexports.offset = ((layout, offset, property) => new OffsetLayout(layout, offset, property));\n/** Factory for {@link UInt|unsigned int layouts} spanning one\n * byte. */\nexports.u8 = ((property) => new UInt(1, property));\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning two bytes. */\nexports.u16 = ((property) => new UInt(2, property));\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning three bytes. */\nexports.u24 = ((property) => new UInt(3, property));\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning four bytes. */\nexports.u32 = ((property) => new UInt(4, property));\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning five bytes. */\nexports.u40 = ((property) => new UInt(5, property));\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning six bytes. */\nexports.u48 = ((property) => new UInt(6, property));\n/** Factory for {@link NearUInt64|little-endian unsigned int\n * layouts} interpreted as Numbers. */\nexports.nu64 = ((property) => new NearUInt64(property));\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning two bytes. */\nexports.u16be = ((property) => new UIntBE(2, property));\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning three bytes. */\nexports.u24be = ((property) => new UIntBE(3, property));\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning four bytes. */\nexports.u32be = ((property) => new UIntBE(4, property));\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning five bytes. */\nexports.u40be = ((property) => new UIntBE(5, property));\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning six bytes. */\nexports.u48be = ((property) => new UIntBE(6, property));\n/** Factory for {@link NearUInt64BE|big-endian unsigned int\n * layouts} interpreted as Numbers. */\nexports.nu64be = ((property) => new NearUInt64BE(property));\n/** Factory for {@link Int|signed int layouts} spanning one\n * byte. */\nexports.s8 = ((property) => new Int(1, property));\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning two bytes. */\nexports.s16 = ((property) => new Int(2, property));\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning three bytes. */\nexports.s24 = ((property) => new Int(3, property));\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning four bytes. */\nexports.s32 = ((property) => new Int(4, property));\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning five bytes. */\nexports.s40 = ((property) => new Int(5, property));\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning six bytes. */\nexports.s48 = ((property) => new Int(6, property));\n/** Factory for {@link NearInt64|little-endian signed int layouts}\n * interpreted as Numbers. */\nexports.ns64 = ((property) => new NearInt64(property));\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning two bytes. */\nexports.s16be = ((property) => new IntBE(2, property));\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning three bytes. */\nexports.s24be = ((property) => new IntBE(3, property));\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning four bytes. */\nexports.s32be = ((property) => new IntBE(4, property));\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning five bytes. */\nexports.s40be = ((property) => new IntBE(5, property));\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning six bytes. */\nexports.s48be = ((property) => new IntBE(6, property));\n/** Factory for {@link NearInt64BE|big-endian signed int layouts}\n * interpreted as Numbers. */\nexports.ns64be = ((property) => new NearInt64BE(property));\n/** Factory for {@link Float|little-endian 32-bit floating point} values. */\nexports.f32 = ((property) => new Float(property));\n/** Factory for {@link FloatBE|big-endian 32-bit floating point} values. */\nexports.f32be = ((property) => new FloatBE(property));\n/** Factory for {@link Double|little-endian 64-bit floating point} values. */\nexports.f64 = ((property) => new Double(property));\n/** Factory for {@link DoubleBE|big-endian 64-bit floating point} values. */\nexports.f64be = ((property) => new DoubleBE(property));\n/** Factory for {@link Structure} values. */\nexports.struct = ((fields, property, decodePrefixes) => new Structure(fields, property, decodePrefixes));\n/** Factory for {@link BitStructure} values. */\nexports.bits = ((word, msb, property) => new BitStructure(word, msb, property));\n/** Factory for {@link Sequence} values. */\nexports.seq = ((elementLayout, count, property) => new Sequence(elementLayout, count, property));\n/** Factory for {@link Union} values. */\nexports.union = ((discr, defaultLayout, property) => new Union(discr, defaultLayout, property));\n/** Factory for {@link UnionLayoutDiscriminator} values. */\nexports.unionLayoutDiscriminator = ((layout, property) => new UnionLayoutDiscriminator(layout, property));\n/** Factory for {@link Blob} values. */\nexports.blob = ((length, property) => new Blob(length, property));\n/** Factory for {@link CString} values. */\nexports.cstr = ((property) => new CString(property));\n/** Factory for {@link UTF8} values. */\nexports.utf8 = ((maxSpan, property) => new UTF8(maxSpan, property));\n/** Factory for {@link Constant} values. */\nexports.constant = ((value, property) => new Constant(value, property));\n//# sourceMappingURL=Layout.js.map","export const encodeDecode = (layout) => {\n const decode = layout.decode.bind(layout);\n const encode = layout.encode.bind(layout);\n return { decode, encode };\n};\n//# sourceMappingURL=base.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nlet converter;\n/**\n * Convert a little-endian buffer into a BigInt.\n * @param buf The little-endian buffer to convert\n * @returns A BigInt with the little-endian representation of buf.\n */\nfunction toBigIntLE(buf) {\n {\n const reversed = Buffer.from(buf);\n reversed.reverse();\n const hex = reversed.toString('hex');\n if (hex.length === 0) {\n return BigInt(0);\n }\n return BigInt(`0x${hex}`);\n }\n return converter.toBigInt(buf, false);\n}\nexports.toBigIntLE = toBigIntLE;\n/**\n * Convert a big-endian buffer into a BigInt\n * @param buf The big-endian buffer to convert.\n * @returns A BigInt with the big-endian representation of buf.\n */\nfunction toBigIntBE(buf) {\n {\n const hex = buf.toString('hex');\n if (hex.length === 0) {\n return BigInt(0);\n }\n return BigInt(`0x${hex}`);\n }\n return converter.toBigInt(buf, true);\n}\nexports.toBigIntBE = toBigIntBE;\n/**\n * Convert a BigInt to a little-endian buffer.\n * @param num The BigInt to convert.\n * @param width The number of bytes that the resulting buffer should be.\n * @returns A little-endian buffer representation of num.\n */\nfunction toBufferLE(num, width) {\n {\n const hex = num.toString(16);\n const buffer = Buffer.from(hex.padStart(width * 2, '0').slice(0, width * 2), 'hex');\n buffer.reverse();\n return buffer;\n }\n // Allocation is done here, since it is slower using napi in C\n return converter.fromBigInt(num, Buffer.allocUnsafe(width), false);\n}\nexports.toBufferLE = toBufferLE;\n/**\n * Convert a BigInt to a big-endian buffer.\n * @param num The BigInt to convert.\n * @param width The number of bytes that the resulting buffer should be.\n * @returns A big-endian buffer representation of num.\n */\nfunction toBufferBE(num, width) {\n {\n const hex = num.toString(16);\n return Buffer.from(hex.padStart(width * 2, '0').slice(0, width * 2), 'hex');\n }\n return converter.fromBigInt(num, Buffer.allocUnsafe(width), true);\n}\nexports.toBufferBE = toBufferBE;\n","import { blob } from '@solana/buffer-layout';\nimport { toBigIntBE, toBigIntLE, toBufferBE, toBufferLE } from 'bigint-buffer';\nimport { encodeDecode } from './base.mjs';\nexport const bigInt = (length) => (property) => {\n const layout = blob(length, property);\n const { encode, decode } = encodeDecode(layout);\n const bigIntLayout = layout;\n bigIntLayout.decode = (buffer, offset) => {\n const src = decode(buffer, offset);\n return toBigIntLE(Buffer.from(src));\n };\n bigIntLayout.encode = (bigInt, buffer, offset) => {\n const src = toBufferLE(bigInt, length);\n return encode(src, buffer, offset);\n };\n return bigIntLayout;\n};\nexport const bigIntBE = (length) => (property) => {\n const layout = blob(length, property);\n const { encode, decode } = encodeDecode(layout);\n const bigIntLayout = layout;\n bigIntLayout.decode = (buffer, offset) => {\n const src = decode(buffer, offset);\n return toBigIntBE(Buffer.from(src));\n };\n bigIntLayout.encode = (bigInt, buffer, offset) => {\n const src = toBufferBE(bigInt, length);\n return encode(src, buffer, offset);\n };\n return bigIntLayout;\n};\nexport const u64 = bigInt(8);\nexport const u64be = bigIntBE(8);\nexport const u128 = bigInt(16);\nexport const u128be = bigIntBE(16);\nexport const u192 = bigInt(24);\nexport const u192be = bigIntBE(24);\nexport const u256 = bigInt(32);\nexport const u256be = bigIntBE(32);\n//# sourceMappingURL=bigint.js.map","import { u8 } from '@solana/buffer-layout';\nimport { encodeDecode } from './base.mjs';\nexport const bool = (property) => {\n const layout = u8(property);\n const { encode, decode } = encodeDecode(layout);\n const boolLayout = layout;\n boolLayout.decode = (buffer, offset) => {\n const src = decode(buffer, offset);\n return !!src;\n };\n boolLayout.encode = (bool, buffer, offset) => {\n const src = Number(bool);\n return encode(src, buffer, offset);\n };\n return boolLayout;\n};\n//# sourceMappingURL=native.js.map","import { blob } from '@solana/buffer-layout';\nimport { PublicKey } from '@solana/web3.js';\nimport { encodeDecode } from './base.mjs';\nexport const publicKey = (property) => {\n const layout = blob(32, property);\n const { encode, decode } = encodeDecode(layout);\n const publicKeyLayout = layout;\n publicKeyLayout.decode = (buffer, offset) => {\n const src = decode(buffer, offset);\n return new PublicKey(src);\n };\n publicKeyLayout.encode = (publicKey, buffer, offset) => {\n const src = publicKey.toBuffer();\n return encode(src, buffer, offset);\n };\n return publicKeyLayout;\n};\n//# sourceMappingURL=web3.js.map","/** Base class for errors */\nexport class TokenError extends Error {\n constructor(message) {\n super(message);\n }\n}\n/** Thrown if an account is not found at the expected address */\nexport class TokenAccountNotFoundError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenAccountNotFoundError';\n }\n}\n/** Thrown if a program state account is not a valid Account */\nexport class TokenInvalidAccountError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenInvalidAccountError';\n }\n}\n/** Thrown if a program state account does not contain valid data */\nexport class TokenInvalidAccountDataError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenInvalidAccountDataError';\n }\n}\n/** Thrown if a program state account is not owned by the expected token program */\nexport class TokenInvalidAccountOwnerError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenInvalidAccountOwnerError';\n }\n}\n/** Thrown if the byte length of an program state account doesn't match the expected size */\nexport class TokenInvalidAccountSizeError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenInvalidAccountSizeError';\n }\n}\n/** Thrown if the mint of a token account doesn't match the expected mint */\nexport class TokenInvalidMintError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenInvalidMintError';\n }\n}\n/** Thrown if the owner of a token account doesn't match the expected owner */\nexport class TokenInvalidOwnerError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenInvalidOwnerError';\n }\n}\n/** Thrown if the owner of a token account is a PDA (Program Derived Address) */\nexport class TokenOwnerOffCurveError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenOwnerOffCurveError';\n }\n}\n/** Thrown if an instruction's program is invalid */\nexport class TokenInvalidInstructionProgramError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenInvalidInstructionProgramError';\n }\n}\n/** Thrown if an instruction's keys are invalid */\nexport class TokenInvalidInstructionKeysError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenInvalidInstructionKeysError';\n }\n}\n/** Thrown if an instruction's data is invalid */\nexport class TokenInvalidInstructionDataError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenInvalidInstructionDataError';\n }\n}\n/** Thrown if an instruction's type is invalid */\nexport class TokenInvalidInstructionTypeError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenInvalidInstructionTypeError';\n }\n}\n/** Thrown if the program does not support the desired instruction */\nexport class TokenUnsupportedInstructionError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenUnsupportedInstructionError';\n }\n}\n/** Thrown if the transfer hook extra accounts contains an invalid account index */\nexport class TokenTransferHookAccountNotFound extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenTransferHookAccountNotFound';\n }\n}\n/** Thrown if the transfer hook extra accounts contains an invalid seed */\nexport class TokenTransferHookInvalidSeed extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenTransferHookInvalidSeed';\n }\n}\n/** Thrown if account data required by an extra account meta seed config could not be fetched */\nexport class TokenTransferHookAccountDataNotFound extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenTransferHookAccountDataNotFound';\n }\n}\n//# sourceMappingURL=errors.js.map","export var AccountType;\n(function (AccountType) {\n AccountType[AccountType[\"Uninitialized\"] = 0] = \"Uninitialized\";\n AccountType[AccountType[\"Mint\"] = 1] = \"Mint\";\n AccountType[AccountType[\"Account\"] = 2] = \"Account\";\n})(AccountType || (AccountType = {}));\nexport const ACCOUNT_TYPE_SIZE = 1;\n//# sourceMappingURL=accountType.js.map","import { struct, u8 } from '@solana/buffer-layout';\nimport { bool, publicKey } from '@solana/buffer-layout-utils';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { TokenAccountNotFoundError, TokenInvalidAccountOwnerError, TokenInvalidAccountSizeError } from '../errors.js';\n/** Buffer layout for de/serializing a multisig */\nexport const MultisigLayout = struct([\n u8('m'),\n u8('n'),\n bool('isInitialized'),\n publicKey('signer1'),\n publicKey('signer2'),\n publicKey('signer3'),\n publicKey('signer4'),\n publicKey('signer5'),\n publicKey('signer6'),\n publicKey('signer7'),\n publicKey('signer8'),\n publicKey('signer9'),\n publicKey('signer10'),\n publicKey('signer11'),\n]);\n/** Byte length of a multisig */\nexport const MULTISIG_SIZE = MultisigLayout.span;\n/**\n * Retrieve information about a multisig\n *\n * @param connection Connection to use\n * @param address Multisig account\n * @param commitment Desired level of commitment for querying the state\n * @param programId SPL Token program account\n *\n * @return Multisig information\n */\nexport async function getMultisig(connection, address, commitment, programId = TOKEN_PROGRAM_ID) {\n const info = await connection.getAccountInfo(address, commitment);\n return unpackMultisig(address, info, programId);\n}\n/**\n * Unpack a multisig\n *\n * @param address Multisig account\n * @param info Multisig account data\n * @param programId SPL Token program account\n *\n * @return Unpacked multisig\n */\nexport function unpackMultisig(address, info, programId = TOKEN_PROGRAM_ID) {\n if (!info)\n throw new TokenAccountNotFoundError();\n if (!info.owner.equals(programId))\n throw new TokenInvalidAccountOwnerError();\n if (info.data.length != MULTISIG_SIZE)\n throw new TokenInvalidAccountSizeError();\n const multisig = MultisigLayout.decode(info.data);\n return { address, ...multisig };\n}\n/** Get the minimum lamport balance for a multisig to be rent exempt\n *\n * @param connection Connection to use\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Amount of lamports required\n */\nexport async function getMinimumBalanceForRentExemptMultisig(connection, commitment) {\n return await connection.getMinimumBalanceForRentExemption(MULTISIG_SIZE, commitment);\n}\n//# sourceMappingURL=multisig.js.map","import { struct, u32, u8 } from '@solana/buffer-layout';\nimport { publicKey, u64 } from '@solana/buffer-layout-utils';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { TokenAccountNotFoundError, TokenInvalidAccountError, TokenInvalidAccountOwnerError, TokenInvalidAccountSizeError, } from '../errors.js';\nimport { ACCOUNT_TYPE_SIZE, AccountType } from '../extensions/accountType.js';\nimport { getAccountLen } from '../extensions/extensionType.js';\nimport { MULTISIG_SIZE } from './multisig.js';\n/** Token account state as stored by the program */\nexport var AccountState;\n(function (AccountState) {\n AccountState[AccountState[\"Uninitialized\"] = 0] = \"Uninitialized\";\n AccountState[AccountState[\"Initialized\"] = 1] = \"Initialized\";\n AccountState[AccountState[\"Frozen\"] = 2] = \"Frozen\";\n})(AccountState || (AccountState = {}));\n/** Buffer layout for de/serializing a token account */\nexport const AccountLayout = struct([\n publicKey('mint'),\n publicKey('owner'),\n u64('amount'),\n u32('delegateOption'),\n publicKey('delegate'),\n u8('state'),\n u32('isNativeOption'),\n u64('isNative'),\n u64('delegatedAmount'),\n u32('closeAuthorityOption'),\n publicKey('closeAuthority'),\n]);\n/** Byte length of a token account */\nexport const ACCOUNT_SIZE = AccountLayout.span;\n/**\n * Retrieve information about a token account\n *\n * @param connection Connection to use\n * @param address Token account\n * @param commitment Desired level of commitment for querying the state\n * @param programId SPL Token program account\n *\n * @return Token account information\n */\nexport async function getAccount(connection, address, commitment, programId = TOKEN_PROGRAM_ID) {\n const info = await connection.getAccountInfo(address, commitment);\n return unpackAccount(address, info, programId);\n}\n/**\n * Retrieve information about multiple token accounts in a single RPC call\n *\n * @param connection Connection to use\n * @param addresses Token accounts\n * @param commitment Desired level of commitment for querying the state\n * @param programId SPL Token program account\n *\n * @return Token account information\n */\nexport async function getMultipleAccounts(connection, addresses, commitment, programId = TOKEN_PROGRAM_ID) {\n const infos = await connection.getMultipleAccountsInfo(addresses, commitment);\n return addresses.map((address, i) => unpackAccount(address, infos[i], programId));\n}\n/** Get the minimum lamport balance for a base token account to be rent exempt\n *\n * @param connection Connection to use\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Amount of lamports required\n */\nexport async function getMinimumBalanceForRentExemptAccount(connection, commitment) {\n return await getMinimumBalanceForRentExemptAccountWithExtensions(connection, [], commitment);\n}\n/** Get the minimum lamport balance for a rent-exempt token account with extensions\n *\n * @param connection Connection to use\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Amount of lamports required\n */\nexport async function getMinimumBalanceForRentExemptAccountWithExtensions(connection, extensions, commitment) {\n const accountLen = getAccountLen(extensions);\n return await connection.getMinimumBalanceForRentExemption(accountLen, commitment);\n}\n/**\n * Unpack a token account\n *\n * @param address Token account\n * @param info Token account data\n * @param programId SPL Token program account\n *\n * @return Unpacked token account\n */\nexport function unpackAccount(address, info, programId = TOKEN_PROGRAM_ID) {\n if (!info)\n throw new TokenAccountNotFoundError();\n if (!info.owner.equals(programId))\n throw new TokenInvalidAccountOwnerError();\n if (info.data.length < ACCOUNT_SIZE)\n throw new TokenInvalidAccountSizeError();\n const rawAccount = AccountLayout.decode(info.data.slice(0, ACCOUNT_SIZE));\n let tlvData = Buffer.alloc(0);\n if (info.data.length > ACCOUNT_SIZE) {\n if (info.data.length === MULTISIG_SIZE)\n throw new TokenInvalidAccountSizeError();\n if (info.data[ACCOUNT_SIZE] != AccountType.Account)\n throw new TokenInvalidAccountError();\n tlvData = info.data.slice(ACCOUNT_SIZE + ACCOUNT_TYPE_SIZE);\n }\n return {\n address,\n mint: rawAccount.mint,\n owner: rawAccount.owner,\n amount: rawAccount.amount,\n delegate: rawAccount.delegateOption ? rawAccount.delegate : null,\n delegatedAmount: rawAccount.delegatedAmount,\n isInitialized: rawAccount.state !== AccountState.Uninitialized,\n isFrozen: rawAccount.state === AccountState.Frozen,\n isNative: !!rawAccount.isNativeOption,\n rentExemptReserve: rawAccount.isNativeOption ? rawAccount.isNative : null,\n closeAuthority: rawAccount.closeAuthorityOption ? rawAccount.closeAuthority : null,\n tlvData,\n };\n}\n//# sourceMappingURL=account.js.map","import { struct, u32, u8 } from '@solana/buffer-layout';\nimport { bool, publicKey, u64 } from '@solana/buffer-layout-utils';\nimport { PublicKey } from '@solana/web3.js';\nimport { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from '../constants.js';\nimport { TokenAccountNotFoundError, TokenInvalidAccountOwnerError, TokenInvalidAccountSizeError, TokenInvalidMintError, TokenOwnerOffCurveError, } from '../errors.js';\nimport { ACCOUNT_TYPE_SIZE, AccountType } from '../extensions/accountType.js';\nimport { getMintLen } from '../extensions/extensionType.js';\nimport { ACCOUNT_SIZE } from './account.js';\nimport { MULTISIG_SIZE } from './multisig.js';\n/** Buffer layout for de/serializing a mint */\nexport const MintLayout = struct([\n u32('mintAuthorityOption'),\n publicKey('mintAuthority'),\n u64('supply'),\n u8('decimals'),\n bool('isInitialized'),\n u32('freezeAuthorityOption'),\n publicKey('freezeAuthority'),\n]);\n/** Byte length of a mint */\nexport const MINT_SIZE = MintLayout.span;\n/**\n * Retrieve information about a mint\n *\n * @param connection Connection to use\n * @param address Mint account\n * @param commitment Desired level of commitment for querying the state\n * @param programId SPL Token program account\n *\n * @return Mint information\n */\nexport async function getMint(connection, address, commitment, programId = TOKEN_PROGRAM_ID) {\n const info = await connection.getAccountInfo(address, commitment);\n return unpackMint(address, info, programId);\n}\n/**\n * Unpack a mint\n *\n * @param address Mint account\n * @param info Mint account data\n * @param programId SPL Token program account\n *\n * @return Unpacked mint\n */\nexport function unpackMint(address, info, programId = TOKEN_PROGRAM_ID) {\n if (!info)\n throw new TokenAccountNotFoundError();\n if (!info.owner.equals(programId))\n throw new TokenInvalidAccountOwnerError();\n if (info.data.length < MINT_SIZE)\n throw new TokenInvalidAccountSizeError();\n const rawMint = MintLayout.decode(info.data.slice(0, MINT_SIZE));\n let tlvData = Buffer.alloc(0);\n if (info.data.length > MINT_SIZE) {\n if (info.data.length <= ACCOUNT_SIZE)\n throw new TokenInvalidAccountSizeError();\n if (info.data.length === MULTISIG_SIZE)\n throw new TokenInvalidAccountSizeError();\n if (info.data[ACCOUNT_SIZE] != AccountType.Mint)\n throw new TokenInvalidMintError();\n tlvData = info.data.slice(ACCOUNT_SIZE + ACCOUNT_TYPE_SIZE);\n }\n return {\n address,\n mintAuthority: rawMint.mintAuthorityOption ? rawMint.mintAuthority : null,\n supply: rawMint.supply,\n decimals: rawMint.decimals,\n isInitialized: rawMint.isInitialized,\n freezeAuthority: rawMint.freezeAuthorityOption ? rawMint.freezeAuthority : null,\n tlvData,\n };\n}\n/** Get the minimum lamport balance for a mint to be rent exempt\n *\n * @param connection Connection to use\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Amount of lamports required\n */\nexport async function getMinimumBalanceForRentExemptMint(connection, commitment) {\n return await getMinimumBalanceForRentExemptMintWithExtensions(connection, [], commitment);\n}\n/** Get the minimum lamport balance for a rent-exempt mint with extensions\n *\n * @param connection Connection to use\n * @param extensions Extension types included in the mint\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Amount of lamports required\n */\nexport async function getMinimumBalanceForRentExemptMintWithExtensions(connection, extensions, commitment) {\n const mintLen = getMintLen(extensions);\n return await connection.getMinimumBalanceForRentExemption(mintLen, commitment);\n}\n/**\n * Async version of getAssociatedTokenAddressSync\n * For backwards compatibility\n *\n * @param mint Token mint account\n * @param owner Owner of the new account\n * @param allowOwnerOffCurve Allow the owner account to be a PDA (Program Derived Address)\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Promise containing the address of the associated token account\n */\nexport async function getAssociatedTokenAddress(mint, owner, allowOwnerOffCurve = false, programId = TOKEN_PROGRAM_ID, associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID) {\n if (!allowOwnerOffCurve && !PublicKey.isOnCurve(owner.toBuffer()))\n throw new TokenOwnerOffCurveError();\n const [address] = await PublicKey.findProgramAddress([owner.toBuffer(), programId.toBuffer(), mint.toBuffer()], associatedTokenProgramId);\n return address;\n}\n/**\n * Get the address of the associated token account for a given mint and owner\n *\n * @param mint Token mint account\n * @param owner Owner of the new account\n * @param allowOwnerOffCurve Allow the owner account to be a PDA (Program Derived Address)\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Address of the associated token account\n */\nexport function getAssociatedTokenAddressSync(mint, owner, allowOwnerOffCurve = false, programId = TOKEN_PROGRAM_ID, associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID) {\n if (!allowOwnerOffCurve && !PublicKey.isOnCurve(owner.toBuffer()))\n throw new TokenOwnerOffCurveError();\n const [address] = PublicKey.findProgramAddressSync([owner.toBuffer(), programId.toBuffer(), mint.toBuffer()], associatedTokenProgramId);\n return address;\n}\n//# sourceMappingURL=mint.js.map","import { SystemProgram, TransactionInstruction } from '@solana/web3.js';\nimport { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from '../constants.js';\n/**\n * Construct a CreateAssociatedTokenAccount instruction\n *\n * @param payer Payer of the initialization fees\n * @param associatedToken New associated token account\n * @param owner Owner of the new account\n * @param mint Token mint account\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createAssociatedTokenAccountInstruction(payer, associatedToken, owner, mint, programId = TOKEN_PROGRAM_ID, associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID) {\n return buildAssociatedTokenAccountInstruction(payer, associatedToken, owner, mint, Buffer.alloc(0), programId, associatedTokenProgramId);\n}\n/**\n * Construct a CreateAssociatedTokenAccountIdempotent instruction\n *\n * @param payer Payer of the initialization fees\n * @param associatedToken New associated token account\n * @param owner Owner of the new account\n * @param mint Token mint account\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createAssociatedTokenAccountIdempotentInstruction(payer, associatedToken, owner, mint, programId = TOKEN_PROGRAM_ID, associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID) {\n return buildAssociatedTokenAccountInstruction(payer, associatedToken, owner, mint, Buffer.from([1]), programId, associatedTokenProgramId);\n}\nfunction buildAssociatedTokenAccountInstruction(payer, associatedToken, owner, mint, instructionData, programId = TOKEN_PROGRAM_ID, associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID) {\n const keys = [\n { pubkey: payer, isSigner: true, isWritable: true },\n { pubkey: associatedToken, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: false, isWritable: false },\n { pubkey: mint, isSigner: false, isWritable: false },\n { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\n { pubkey: programId, isSigner: false, isWritable: false },\n ];\n return new TransactionInstruction({\n keys,\n programId: associatedTokenProgramId,\n data: instructionData,\n });\n}\n/**\n * Construct a RecoverNested instruction\n *\n * @param nestedAssociatedToken Nested associated token account (must be owned by `ownerAssociatedToken`)\n * @param nestedMint Token mint for the nested associated token account\n * @param destinationAssociatedToken Wallet's associated token account\n * @param ownerAssociatedToken Owner associated token account address (must be owned by `owner`)\n * @param ownerMint Token mint for the owner associated token account\n * @param owner Wallet address for the owner associated token account\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createRecoverNestedInstruction(nestedAssociatedToken, nestedMint, destinationAssociatedToken, ownerAssociatedToken, ownerMint, owner, programId = TOKEN_PROGRAM_ID, associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID) {\n const keys = [\n { pubkey: nestedAssociatedToken, isSigner: false, isWritable: true },\n { pubkey: nestedMint, isSigner: false, isWritable: false },\n { pubkey: destinationAssociatedToken, isSigner: false, isWritable: true },\n { pubkey: ownerAssociatedToken, isSigner: false, isWritable: true },\n { pubkey: ownerMint, isSigner: false, isWritable: false },\n { pubkey: owner, isSigner: true, isWritable: true },\n { pubkey: programId, isSigner: false, isWritable: false },\n ];\n return new TransactionInstruction({\n keys,\n programId: associatedTokenProgramId,\n data: Buffer.from([2]),\n });\n}\n//# sourceMappingURL=associatedTokenAccount.js.map",null,null,"export var integers = ['u8', 'u16', 'u32', 'u64', 'u128', 'i8', 'i16', 'i32', 'i64', 'i128', 'f32', 'f64'];\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { integers } from './types.js';\nexport function isArrayLike(value) {\n // source: https://stackoverflow.com/questions/24048547/checking-if-an-object-is-array-like\n return (Array.isArray(value) ||\n (!!value &&\n typeof value === 'object' &&\n 'length' in value &&\n typeof (value.length) === 'number' &&\n (value.length === 0 ||\n (value.length > 0 &&\n (value.length - 1) in value))));\n}\nexport function expect_type(value, type, fieldPath) {\n if (typeof (value) !== type) {\n throw new Error(\"Expected \".concat(type, \" not \").concat(typeof (value), \"(\").concat(value, \") at \").concat(fieldPath.join('.')));\n }\n}\nexport function expect_bigint(value, fieldPath) {\n var basicType = ['number', 'string', 'bigint', 'boolean'].includes(typeof (value));\n var strObject = typeof (value) === 'object' && value !== null && 'toString' in value;\n if (!basicType && !strObject) {\n throw new Error(\"Expected bigint, number, boolean or string not \".concat(typeof (value), \"(\").concat(value, \") at \").concat(fieldPath.join('.')));\n }\n}\nexport function expect_same_size(length, expected, fieldPath) {\n if (length !== expected) {\n throw new Error(\"Array length \".concat(length, \" does not match schema length \").concat(expected, \" at \").concat(fieldPath.join('.')));\n }\n}\nexport function expect_enum(value, fieldPath) {\n if (typeof (value) !== 'object' || value === null) {\n throw new Error(\"Expected object not \".concat(typeof (value), \"(\").concat(value, \") at \").concat(fieldPath.join('.')));\n }\n}\n// Validate Schema\nvar VALID_STRING_TYPES = integers.concat(['bool', 'string']);\nvar VALID_OBJECT_KEYS = ['option', 'enum', 'array', 'set', 'map', 'struct'];\nvar ErrorSchema = /** @class */ (function (_super) {\n __extends(ErrorSchema, _super);\n function ErrorSchema(schema, expected) {\n var message = \"Invalid schema: \".concat(JSON.stringify(schema), \" expected \").concat(expected);\n return _super.call(this, message) || this;\n }\n return ErrorSchema;\n}(Error));\nexport { ErrorSchema };\nexport function validate_schema(schema) {\n if (typeof (schema) === 'string' && VALID_STRING_TYPES.includes(schema)) {\n return;\n }\n if (schema && typeof (schema) === 'object') {\n var keys = Object.keys(schema);\n if (keys.length === 1 && VALID_OBJECT_KEYS.includes(keys[0])) {\n var key = keys[0];\n if (key === 'option')\n return validate_schema(schema[key]);\n if (key === 'enum')\n return validate_enum_schema(schema[key]);\n if (key === 'array')\n return validate_array_schema(schema[key]);\n if (key === 'set')\n return validate_schema(schema[key]);\n if (key === 'map')\n return validate_map_schema(schema[key]);\n if (key === 'struct')\n return validate_struct_schema(schema[key]);\n }\n }\n throw new ErrorSchema(schema, VALID_OBJECT_KEYS.join(', ') + ' or ' + VALID_STRING_TYPES.join(', '));\n}\nfunction validate_enum_schema(schema) {\n if (!Array.isArray(schema))\n throw new ErrorSchema(schema, 'Array');\n for (var _i = 0, schema_1 = schema; _i < schema_1.length; _i++) {\n var sch = schema_1[_i];\n if (typeof sch !== 'object' || !('struct' in sch)) {\n throw new Error('Missing \"struct\" key in enum schema');\n }\n if (typeof sch.struct !== 'object' || Object.keys(sch.struct).length !== 1) {\n throw new Error('The \"struct\" in each enum must have a single key');\n }\n validate_schema({ struct: sch.struct });\n }\n}\nfunction validate_array_schema(schema) {\n if (typeof schema !== 'object')\n throw new ErrorSchema(schema, '{ type, len? }');\n if (schema.len && typeof schema.len !== 'number') {\n throw new Error(\"Invalid schema: \".concat(schema));\n }\n if ('type' in schema)\n return validate_schema(schema.type);\n throw new ErrorSchema(schema, '{ type, len? }');\n}\nfunction validate_map_schema(schema) {\n if (typeof schema === 'object' && 'key' in schema && 'value' in schema) {\n validate_schema(schema.key);\n validate_schema(schema.value);\n }\n else {\n throw new ErrorSchema(schema, '{ key, value }');\n }\n}\nfunction validate_struct_schema(schema) {\n if (typeof schema !== 'object')\n throw new ErrorSchema(schema, 'object');\n for (var key in schema) {\n validate_schema(schema[key]);\n }\n}\n","var EncodeBuffer = /** @class */ (function () {\n function EncodeBuffer() {\n this.offset = 0;\n this.buffer_size = 256;\n this.buffer = new ArrayBuffer(this.buffer_size);\n this.view = new DataView(this.buffer);\n }\n EncodeBuffer.prototype.resize_if_necessary = function (needed_space) {\n if (this.buffer_size - this.offset < needed_space) {\n this.buffer_size = Math.max(this.buffer_size * 2, this.buffer_size + needed_space);\n var new_buffer = new ArrayBuffer(this.buffer_size);\n new Uint8Array(new_buffer).set(new Uint8Array(this.buffer));\n this.buffer = new_buffer;\n this.view = new DataView(new_buffer);\n }\n };\n EncodeBuffer.prototype.get_used_buffer = function () {\n return new Uint8Array(this.buffer).slice(0, this.offset);\n };\n EncodeBuffer.prototype.store_value = function (value, type) {\n var bSize = type.substring(1);\n var size = parseInt(bSize) / 8;\n this.resize_if_necessary(size);\n var toCall = type[0] === 'f' ? \"setFloat\".concat(bSize) : type[0] === 'i' ? \"setInt\".concat(bSize) : \"setUint\".concat(bSize);\n this.view[toCall](this.offset, value, true);\n this.offset += size;\n };\n EncodeBuffer.prototype.store_bytes = function (from) {\n this.resize_if_necessary(from.length);\n new Uint8Array(this.buffer).set(new Uint8Array(from), this.offset);\n this.offset += from.length;\n };\n return EncodeBuffer;\n}());\nexport { EncodeBuffer };\nvar DecodeBuffer = /** @class */ (function () {\n function DecodeBuffer(buf) {\n this.offset = 0;\n this.buffer_size = buf.length;\n this.buffer = new ArrayBuffer(buf.length);\n new Uint8Array(this.buffer).set(buf);\n this.view = new DataView(this.buffer);\n }\n DecodeBuffer.prototype.assert_enough_buffer = function (size) {\n if (this.offset + size > this.buffer.byteLength) {\n throw new Error('Error in schema, the buffer is smaller than expected');\n }\n };\n DecodeBuffer.prototype.consume_value = function (type) {\n var bSize = type.substring(1);\n var size = parseInt(bSize) / 8;\n this.assert_enough_buffer(size);\n var toCall = type[0] === 'f' ? \"getFloat\".concat(bSize) : type[0] === 'i' ? \"getInt\".concat(bSize) : \"getUint\".concat(bSize);\n var ret = this.view[toCall](this.offset, true);\n this.offset += size;\n return ret;\n };\n DecodeBuffer.prototype.consume_bytes = function (size) {\n this.assert_enough_buffer(size);\n var ret = this.buffer.slice(this.offset, this.offset + size);\n this.offset += size;\n return ret;\n };\n return DecodeBuffer;\n}());\nexport { DecodeBuffer };\n","import { integers } from './types.js';\nimport { EncodeBuffer } from './buffer.js';\nimport * as utils from './utils.js';\nvar BorshSerializer = /** @class */ (function () {\n function BorshSerializer(checkTypes) {\n this.encoded = new EncodeBuffer();\n this.fieldPath = ['value'];\n this.checkTypes = checkTypes;\n }\n BorshSerializer.prototype.encode = function (value, schema) {\n this.encode_value(value, schema);\n return this.encoded.get_used_buffer();\n };\n BorshSerializer.prototype.encode_value = function (value, schema) {\n if (typeof schema === 'string') {\n if (integers.includes(schema))\n return this.encode_integer(value, schema);\n if (schema === 'string')\n return this.encode_string(value);\n if (schema === 'bool')\n return this.encode_boolean(value);\n }\n if (typeof schema === 'object') {\n if ('option' in schema)\n return this.encode_option(value, schema);\n if ('enum' in schema)\n return this.encode_enum(value, schema);\n if ('array' in schema)\n return this.encode_array(value, schema);\n if ('set' in schema)\n return this.encode_set(value, schema);\n if ('map' in schema)\n return this.encode_map(value, schema);\n if ('struct' in schema)\n return this.encode_struct(value, schema);\n }\n };\n BorshSerializer.prototype.encode_integer = function (value, schema) {\n var size = parseInt(schema.substring(1));\n if (size <= 32 || schema == 'f64') {\n this.checkTypes && utils.expect_type(value, 'number', this.fieldPath);\n this.encoded.store_value(value, schema);\n }\n else {\n this.checkTypes && utils.expect_bigint(value, this.fieldPath);\n this.encode_bigint(BigInt(value), size);\n }\n };\n BorshSerializer.prototype.encode_bigint = function (value, size) {\n var buffer_len = size / 8;\n var buffer = new Uint8Array(buffer_len);\n for (var i = 0; i < buffer_len; i++) {\n buffer[i] = Number(value & BigInt(0xff));\n value = value >> BigInt(8);\n }\n this.encoded.store_bytes(new Uint8Array(buffer));\n };\n BorshSerializer.prototype.encode_string = function (value) {\n this.checkTypes && utils.expect_type(value, 'string', this.fieldPath);\n var _value = value;\n // encode to utf8 bytes without using TextEncoder\n var utf8Bytes = [];\n for (var i = 0; i < _value.length; i++) {\n var charCode = _value.charCodeAt(i);\n if (charCode < 0x80) {\n utf8Bytes.push(charCode);\n }\n else if (charCode < 0x800) {\n utf8Bytes.push(0xc0 | (charCode >> 6), 0x80 | (charCode & 0x3f));\n }\n else if (charCode < 0xd800 || charCode >= 0xe000) {\n utf8Bytes.push(0xe0 | (charCode >> 12), 0x80 | ((charCode >> 6) & 0x3f), 0x80 | (charCode & 0x3f));\n }\n else {\n i++;\n charCode = 0x10000 + (((charCode & 0x3ff) << 10) | (_value.charCodeAt(i) & 0x3ff));\n utf8Bytes.push(0xf0 | (charCode >> 18), 0x80 | ((charCode >> 12) & 0x3f), 0x80 | ((charCode >> 6) & 0x3f), 0x80 | (charCode & 0x3f));\n }\n }\n // 4 bytes for length + string bytes\n this.encoded.store_value(utf8Bytes.length, 'u32');\n this.encoded.store_bytes(new Uint8Array(utf8Bytes));\n };\n BorshSerializer.prototype.encode_boolean = function (value) {\n this.checkTypes && utils.expect_type(value, 'boolean', this.fieldPath);\n this.encoded.store_value(value ? 1 : 0, 'u8');\n };\n BorshSerializer.prototype.encode_option = function (value, schema) {\n if (value === null || value === undefined) {\n this.encoded.store_value(0, 'u8');\n }\n else {\n this.encoded.store_value(1, 'u8');\n this.encode_value(value, schema.option);\n }\n };\n BorshSerializer.prototype.encode_enum = function (value, schema) {\n this.checkTypes && utils.expect_enum(value, this.fieldPath);\n var valueKey = Object.keys(value)[0];\n for (var i = 0; i < schema[\"enum\"].length; i++) {\n var valueSchema = schema[\"enum\"][i];\n if (valueKey === Object.keys(valueSchema.struct)[0]) {\n this.encoded.store_value(i, 'u8');\n return this.encode_struct(value, valueSchema);\n }\n }\n throw new Error(\"Enum key (\".concat(valueKey, \") not found in enum schema: \").concat(JSON.stringify(schema), \" at \").concat(this.fieldPath.join('.')));\n };\n BorshSerializer.prototype.encode_array = function (value, schema) {\n if (utils.isArrayLike(value))\n return this.encode_arraylike(value, schema);\n if (value instanceof ArrayBuffer)\n return this.encode_buffer(value, schema);\n throw new Error(\"Expected Array-like not \".concat(typeof (value), \"(\").concat(value, \") at \").concat(this.fieldPath.join('.')));\n };\n BorshSerializer.prototype.encode_arraylike = function (value, schema) {\n if (schema.array.len) {\n utils.expect_same_size(value.length, schema.array.len, this.fieldPath);\n }\n else {\n // 4 bytes for length\n this.encoded.store_value(value.length, 'u32');\n }\n // array values\n for (var i = 0; i < value.length; i++) {\n this.encode_value(value[i], schema.array.type);\n }\n };\n BorshSerializer.prototype.encode_buffer = function (value, schema) {\n if (schema.array.len) {\n utils.expect_same_size(value.byteLength, schema.array.len, this.fieldPath);\n }\n else {\n // 4 bytes for length\n this.encoded.store_value(value.byteLength, 'u32');\n }\n // array values\n this.encoded.store_bytes(new Uint8Array(value));\n };\n BorshSerializer.prototype.encode_set = function (value, schema) {\n this.checkTypes && utils.expect_type(value, 'object', this.fieldPath);\n var isSet = value instanceof Set;\n var values = isSet ? Array.from(value.values()) : Object.values(value);\n // 4 bytes for length\n this.encoded.store_value(values.length, 'u32');\n // set values\n for (var _i = 0, values_1 = values; _i < values_1.length; _i++) {\n var value_1 = values_1[_i];\n this.encode_value(value_1, schema.set);\n }\n };\n BorshSerializer.prototype.encode_map = function (value, schema) {\n this.checkTypes && utils.expect_type(value, 'object', this.fieldPath);\n var isMap = value instanceof Map;\n var keys = isMap ? Array.from(value.keys()) : Object.keys(value);\n // 4 bytes for length\n this.encoded.store_value(keys.length, 'u32');\n // store key/values\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n this.encode_value(key, schema.map.key);\n this.encode_value(isMap ? value.get(key) : value[key], schema.map.value);\n }\n };\n BorshSerializer.prototype.encode_struct = function (value, schema) {\n this.checkTypes && utils.expect_type(value, 'object', this.fieldPath);\n for (var _i = 0, _a = Object.keys(schema.struct); _i < _a.length; _i++) {\n var key = _a[_i];\n this.fieldPath.push(key);\n this.encode_value(value[key], schema.struct[key]);\n this.fieldPath.pop();\n }\n };\n return BorshSerializer;\n}());\nexport { BorshSerializer };\n","import { integers } from './types.js';\nimport { DecodeBuffer } from './buffer.js';\nvar BorshDeserializer = /** @class */ (function () {\n function BorshDeserializer(bufferArray) {\n this.buffer = new DecodeBuffer(bufferArray);\n }\n BorshDeserializer.prototype.decode = function (schema) {\n return this.decode_value(schema);\n };\n BorshDeserializer.prototype.decode_value = function (schema) {\n if (typeof schema === 'string') {\n if (integers.includes(schema))\n return this.decode_integer(schema);\n if (schema === 'string')\n return this.decode_string();\n if (schema === 'bool')\n return this.decode_boolean();\n }\n if (typeof schema === 'object') {\n if ('option' in schema)\n return this.decode_option(schema);\n if ('enum' in schema)\n return this.decode_enum(schema);\n if ('array' in schema)\n return this.decode_array(schema);\n if ('set' in schema)\n return this.decode_set(schema);\n if ('map' in schema)\n return this.decode_map(schema);\n if ('struct' in schema)\n return this.decode_struct(schema);\n }\n throw new Error(\"Unsupported type: \".concat(schema));\n };\n BorshDeserializer.prototype.decode_integer = function (schema) {\n var size = parseInt(schema.substring(1));\n if (size <= 32 || schema == 'f64') {\n return this.buffer.consume_value(schema);\n }\n return this.decode_bigint(size, schema.startsWith('i'));\n };\n BorshDeserializer.prototype.decode_bigint = function (size, signed) {\n if (signed === void 0) { signed = false; }\n var buffer_len = size / 8;\n var buffer = new Uint8Array(this.buffer.consume_bytes(buffer_len));\n var bits = buffer.reduceRight(function (r, x) { return r + x.toString(16).padStart(2, '0'); }, '');\n if (signed && buffer[buffer_len - 1]) {\n return BigInt.asIntN(size, BigInt(\"0x\".concat(bits)));\n }\n return BigInt(\"0x\".concat(bits));\n };\n BorshDeserializer.prototype.decode_string = function () {\n var len = this.decode_integer('u32');\n var buffer = new Uint8Array(this.buffer.consume_bytes(len));\n // decode utf-8 string without using TextDecoder\n // first get all bytes to single byte code points\n var codePoints = [];\n for (var i = 0; i < len; ++i) {\n var byte = buffer[i];\n if (byte < 0x80) {\n codePoints.push(byte);\n }\n else if (byte < 0xE0) {\n codePoints.push(((byte & 0x1F) << 6) | (buffer[++i] & 0x3F));\n }\n else if (byte < 0xF0) {\n codePoints.push(((byte & 0x0F) << 12) | ((buffer[++i] & 0x3F) << 6) | (buffer[++i] & 0x3F));\n }\n else {\n var codePoint = ((byte & 0x07) << 18) | ((buffer[++i] & 0x3F) << 12) | ((buffer[++i] & 0x3F) << 6) | (buffer[++i] & 0x3F);\n codePoints.push(codePoint);\n }\n }\n // then decode code points to utf-8\n return String.fromCodePoint.apply(String, codePoints);\n };\n BorshDeserializer.prototype.decode_boolean = function () {\n return this.buffer.consume_value('u8') > 0;\n };\n BorshDeserializer.prototype.decode_option = function (schema) {\n var option = this.buffer.consume_value('u8');\n if (option === 1) {\n return this.decode_value(schema.option);\n }\n if (option !== 0) {\n throw new Error(\"Invalid option \".concat(option));\n }\n return null;\n };\n BorshDeserializer.prototype.decode_enum = function (schema) {\n var _a;\n var valueIndex = this.buffer.consume_value('u8');\n if (valueIndex > schema[\"enum\"].length) {\n throw new Error(\"Enum option \".concat(valueIndex, \" is not available\"));\n }\n var struct = schema[\"enum\"][valueIndex].struct;\n var key = Object.keys(struct)[0];\n return _a = {}, _a[key] = this.decode_value(struct[key]), _a;\n };\n BorshDeserializer.prototype.decode_array = function (schema) {\n var result = [];\n var len = schema.array.len ? schema.array.len : this.decode_integer('u32');\n for (var i = 0; i < len; ++i) {\n result.push(this.decode_value(schema.array.type));\n }\n return result;\n };\n BorshDeserializer.prototype.decode_set = function (schema) {\n var len = this.decode_integer('u32');\n var result = new Set();\n for (var i = 0; i < len; ++i) {\n result.add(this.decode_value(schema.set));\n }\n return result;\n };\n BorshDeserializer.prototype.decode_map = function (schema) {\n var len = this.decode_integer('u32');\n var result = new Map();\n for (var i = 0; i < len; ++i) {\n var key = this.decode_value(schema.map.key);\n var value = this.decode_value(schema.map.value);\n result.set(key, value);\n }\n return result;\n };\n BorshDeserializer.prototype.decode_struct = function (schema) {\n var result = {};\n for (var key in schema.struct) {\n result[key] = this.decode_value(schema.struct[key]);\n }\n return result;\n };\n return BorshDeserializer;\n}());\nexport { BorshDeserializer };\n","import { BorshSerializer } from './serialize.js';\nimport { BorshDeserializer } from './deserialize.js';\nimport * as utils from './utils.js';\nexport function serialize(schema, value, validate) {\n if (validate === void 0) { validate = true; }\n if (validate)\n utils.validate_schema(schema);\n var serializer = new BorshSerializer(validate);\n return serializer.encode(value, schema);\n}\nexport function deserialize(schema, buffer, validate) {\n if (validate === void 0) { validate = true; }\n if (validate)\n utils.validate_schema(schema);\n var deserializer = new BorshDeserializer(buffer);\n return deserializer.decode(schema);\n}\n",null,null,null,null,"function number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nfunction bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`Expected boolean, not ${b}`);\n}\n// copied from utils\nfunction isBytes(a) {\n return (a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));\n}\nfunction bytes(b, ...lengths) {\n if (!isBytes(b))\n throw new Error('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\nfunction hash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\nfunction exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nfunction output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nexport { number, bool, bytes, hash, exists, output };\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n//# sourceMappingURL=_assert.js.map","export const crypto = typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n//# sourceMappingURL=crypto.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\nfunction isBytes(a) {\n return (a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));\n}\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\n// Other libraries would silently corrupt the data instead of throwing an error,\n// when they don't support it.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE)\n throw new Error('Non little-endian hardware is not supported');\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n if (!isBytes(bytes))\n throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, _A: 65, _F: 70, _a: 97, _f: 102 };\nfunction asciiToBase16(char) {\n if (char >= asciis._0 && char <= asciis._9)\n return char - asciis._0;\n if (char >= asciis._A && char <= asciis._F)\n return char - (asciis._A - 10);\n if (char >= asciis._a && char <= asciis._f)\n return char - (asciis._a - 10);\n return;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2;\n }\n return array;\n}\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => { };\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!isBytes(data))\n throw new Error(`expected Uint8Array, got ${typeof data}`);\n return data;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n if (!isBytes(a))\n throw new Error('Uint8Array expected');\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\nconst toStr = {}.toString;\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexport function wrapConstructor(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexport function wrapXOFConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","import { exists, output } from './_assert.js';\nimport { Hash, createView, toBytes } from './utils.js';\n// Polyfill for Safari 14\nfunction setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n// Base SHA2 class (RFC 6234)\nexport class SHA2 extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n exists(this);\n const { view, buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n exists(this);\n output(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4)\n throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length)\n throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++)\n oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n}\n//# sourceMappingURL=_sha2.js.map","import { SHA2 } from './_sha2.js';\nimport { rotr, wrapConstructor } from './utils.js';\n// SHA2-256 need to try 2^128 hashes to execute birthday attack.\n// BTC network is doing 2^67 hashes/sec as per early 2023.\n// Choice: a ? b : c\nconst Chi = (a, b, c) => (a & b) ^ (~a & c);\n// Majority function, true if any two inpust is true\nconst Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n// Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n// prettier-ignore\nconst IV = /* @__PURE__ */ new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nclass SHA256 extends SHA2 {\n constructor() {\n super(64, 32, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = IV[0] | 0;\n this.B = IV[1] | 0;\n this.C = IV[2] | 0;\n this.D = IV[3] | 0;\n this.E = IV[4] | 0;\n this.F = IV[5] | 0;\n this.G = IV[6] | 0;\n this.H = IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n// Constants from https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf\nclass SHA224 extends SHA256 {\n constructor() {\n super();\n this.A = 0xc1059ed8 | 0;\n this.B = 0x367cd507 | 0;\n this.C = 0x3070dd17 | 0;\n this.D = 0xf70e5939 | 0;\n this.E = 0xffc00b31 | 0;\n this.F = 0x68581511 | 0;\n this.G = 0x64f98fa7 | 0;\n this.H = 0xbefa4fa4 | 0;\n this.outputLen = 28;\n }\n}\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexport const sha256 = /* @__PURE__ */ wrapConstructor(() => new SHA256());\nexport const sha224 = /* @__PURE__ */ wrapConstructor(() => new SHA224());\n//# sourceMappingURL=sha256.js.map",null,null,"import{TransactionInstruction as e,PublicKey as t,SystemProgram as r}from\"@solana/web3.js\";var i,n=[\"u8\",\"u16\",\"u32\",\"u64\",\"u128\",\"i8\",\"i16\",\"i32\",\"i64\",\"i128\",\"f32\",\"f64\"],s=function(){function e(){this.offset=0,this.buffer_size=256,this.buffer=new ArrayBuffer(this.buffer_size),this.view=new DataView(this.buffer)}return e.prototype.resize_if_necessary=function(e){if(this.buffer_size-this.offset<e){this.buffer_size=Math.max(2*this.buffer_size,this.buffer_size+e);var t=new ArrayBuffer(this.buffer_size);new Uint8Array(t).set(new Uint8Array(this.buffer)),this.buffer=t,this.view=new DataView(t)}},e.prototype.get_used_buffer=function(){return new Uint8Array(this.buffer).slice(0,this.offset)},e.prototype.store_value=function(e,t){var r=t.substring(1),i=parseInt(r)/8;this.resize_if_necessary(i);var n=\"f\"===t[0]?\"setFloat\".concat(r):\"i\"===t[0]?\"setInt\".concat(r):\"setUint\".concat(r);this.view[n](this.offset,e,!0),this.offset+=i},e.prototype.store_bytes=function(e){this.resize_if_necessary(e.length),new Uint8Array(this.buffer).set(new Uint8Array(e),this.offset),this.offset+=e.length},e}(),o=function(){function e(e){this.offset=0,this.buffer_size=e.length,this.buffer=new ArrayBuffer(e.length),new Uint8Array(this.buffer).set(e),this.view=new DataView(this.buffer)}return e.prototype.assert_enough_buffer=function(e){if(this.offset+e>this.buffer.byteLength)throw new Error(\"Error in schema, the buffer is smaller than expected\")},e.prototype.consume_value=function(e){var t=e.substring(1),r=parseInt(t)/8;this.assert_enough_buffer(r);var i=\"f\"===e[0]?\"getFloat\".concat(t):\"i\"===e[0]?\"getInt\".concat(t):\"getUint\".concat(t),n=this.view[i](this.offset,!0);return this.offset+=r,n},e.prototype.consume_bytes=function(e){this.assert_enough_buffer(e);var t=this.buffer.slice(this.offset,this.offset+e);return this.offset+=e,t},e}(),a=(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},i(e,t)},function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Class extends value \"+String(t)+\" is not a constructor or null\");function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});function u(e,t,r){if(typeof e!==t)throw new Error(\"Expected \".concat(t,\" not \").concat(typeof e,\"(\").concat(e,\") at \").concat(r.join(\".\")))}function c(e,t,r){if(e!==t)throw new Error(\"Array length \".concat(e,\" does not match schema length \").concat(t,\" at \").concat(r.join(\".\")))}var h=n.concat([\"bool\",\"string\"]),f=[\"option\",\"enum\",\"array\",\"set\",\"map\",\"struct\"],p=function(e){function t(t,r){var i=\"Invalid schema: \".concat(JSON.stringify(t),\" expected \").concat(r);return e.call(this,i)||this}return a(t,e),t}(Error);function l(e){if(\"string\"!=typeof e||!h.includes(e)){if(e&&\"object\"==typeof e){var t=Object.keys(e);if(1===t.length&&f.includes(t[0])){var r=t[0];if(\"option\"===r)return l(e[r]);if(\"enum\"===r)return function(e){if(!Array.isArray(e))throw new p(e,\"Array\");for(var t=0,r=e;t<r.length;t++){var i=r[t];if(\"object\"!=typeof i||!(\"struct\"in i))throw new Error('Missing \"struct\" key in enum schema');if(\"object\"!=typeof i.struct||1!==Object.keys(i.struct).length)throw new Error('The \"struct\" in each enum must have a single key');l({struct:i.struct})}}(e[r]);if(\"array\"===r)return function(e){if(\"object\"!=typeof e)throw new p(e,\"{ type, len? }\");if(e.len&&\"number\"!=typeof e.len)throw new Error(\"Invalid schema: \".concat(e));if(\"type\"in e)return l(e.type);throw new p(e,\"{ type, len? }\")}(e[r]);if(\"set\"===r)return l(e[r]);if(\"map\"===r)return function(e){if(\"object\"!=typeof e||!(\"key\"in e)||!(\"value\"in e))throw new p(e,\"{ key, value }\");l(e.key),l(e.value)}(e[r]);if(\"struct\"===r)return function(e){if(\"object\"!=typeof e)throw new p(e,\"object\");for(var t in e)l(e[t])}(e[r])}}throw new p(e,f.join(\", \")+\" or \"+h.join(\", \"))}}var d=function(){function e(e){this.encoded=new s,this.fieldPath=[\"value\"],this.checkTypes=e}return e.prototype.encode=function(e,t){return this.encode_value(e,t),this.encoded.get_used_buffer()},e.prototype.encode_value=function(e,t){if(\"string\"==typeof t){if(n.includes(t))return this.encode_integer(e,t);if(\"string\"===t)return this.encode_string(e);if(\"bool\"===t)return this.encode_boolean(e)}if(\"object\"==typeof t){if(\"option\"in t)return this.encode_option(e,t);if(\"enum\"in t)return this.encode_enum(e,t);if(\"array\"in t)return this.encode_array(e,t);if(\"set\"in t)return this.encode_set(e,t);if(\"map\"in t)return this.encode_map(e,t);if(\"struct\"in t)return this.encode_struct(e,t)}},e.prototype.encode_integer=function(e,t){var r=parseInt(t.substring(1));r<=32||\"f64\"==t?(this.checkTypes&&u(e,\"number\",this.fieldPath),this.encoded.store_value(e,t)):(this.checkTypes&&function(e,t){if(!([\"number\",\"string\",\"bigint\",\"boolean\"].includes(typeof e)||\"object\"==typeof e&&null!==e&&\"toString\"in e))throw new Error(\"Expected bigint, number, boolean or string not \".concat(typeof e,\"(\").concat(e,\") at \").concat(t.join(\".\")))}(e,this.fieldPath),this.encode_bigint(BigInt(e),r))},e.prototype.encode_bigint=function(e,t){for(var r=t/8,i=new Uint8Array(r),n=0;n<r;n++)i[n]=Number(e&BigInt(255)),e>>=BigInt(8);this.encoded.store_bytes(new Uint8Array(i))},e.prototype.encode_string=function(e){this.checkTypes&&u(e,\"string\",this.fieldPath);var t=e;this.encoded.store_value(t.length,\"u32\");for(var r=0;r<t.length;r++)this.encoded.store_value(t.charCodeAt(r),\"u8\")},e.prototype.encode_boolean=function(e){this.checkTypes&&u(e,\"boolean\",this.fieldPath),this.encoded.store_value(e?1:0,\"u8\")},e.prototype.encode_option=function(e,t){null==e?this.encoded.store_value(0,\"u8\"):(this.encoded.store_value(1,\"u8\"),this.encode_value(e,t.option))},e.prototype.encode_enum=function(e,t){this.checkTypes&&function(e,t){if(\"object\"!=typeof e||null===e)throw new Error(\"Expected object not \".concat(typeof e,\"(\").concat(e,\") at \").concat(t.join(\".\")))}(e,this.fieldPath);for(var r=Object.keys(e)[0],i=0;i<t.enum.length;i++){var n=t.enum[i];if(r===Object.keys(n.struct)[0])return this.encoded.store_value(i,\"u8\"),this.encode_struct(e,n)}throw new Error(\"Enum key (\".concat(r,\") not found in enum schema: \").concat(JSON.stringify(t),\" at \").concat(this.fieldPath.join(\".\")))},e.prototype.encode_array=function(e,t){if(function(e){return Array.isArray(e)||!!e&&\"object\"==typeof e&&\"length\"in e&&\"number\"==typeof e.length&&(0===e.length||e.length>0&&e.length-1 in e)}(e))return this.encode_arraylike(e,t);if(e instanceof ArrayBuffer)return this.encode_buffer(e,t);throw new Error(\"Expected Array-like not \".concat(typeof e,\"(\").concat(e,\") at \").concat(this.fieldPath.join(\".\")))},e.prototype.encode_arraylike=function(e,t){t.array.len?c(e.length,t.array.len,this.fieldPath):this.encoded.store_value(e.length,\"u32\");for(var r=0;r<e.length;r++)this.encode_value(e[r],t.array.type)},e.prototype.encode_buffer=function(e,t){t.array.len?c(e.byteLength,t.array.len,this.fieldPath):this.encoded.store_value(e.byteLength,\"u32\"),this.encoded.store_bytes(new Uint8Array(e))},e.prototype.encode_set=function(e,t){this.checkTypes&&u(e,\"object\",this.fieldPath);var r=e instanceof Set?Array.from(e.values()):Object.values(e);this.encoded.store_value(r.length,\"u32\");for(var i=0,n=r;i<n.length;i++){var s=n[i];this.encode_value(s,t.set)}},e.prototype.encode_map=function(e,t){this.checkTypes&&u(e,\"object\",this.fieldPath);var r=e instanceof Map,i=r?Array.from(e.keys()):Object.keys(e);this.encoded.store_value(i.length,\"u32\");for(var n=0,s=i;n<s.length;n++){var o=s[n];this.encode_value(o,t.map.key),this.encode_value(r?e.get(o):e[o],t.map.value)}},e.prototype.encode_struct=function(e,t){this.checkTypes&&u(e,\"object\",this.fieldPath);for(var r=0,i=Object.keys(t.struct);r<i.length;r++){var n=i[r];this.fieldPath.push(n),this.encode_value(e[n],t.struct[n]),this.fieldPath.pop()}},e}(),y=function(){function e(e){this.buffer=new o(e)}return e.prototype.decode=function(e){return this.decode_value(e)},e.prototype.decode_value=function(e){if(\"string\"==typeof e){if(n.includes(e))return this.decode_integer(e);if(\"string\"===e)return this.decode_string();if(\"bool\"===e)return this.decode_boolean()}if(\"object\"==typeof e){if(\"option\"in e)return this.decode_option(e);if(\"enum\"in e)return this.decode_enum(e);if(\"array\"in e)return this.decode_array(e);if(\"set\"in e)return this.decode_set(e);if(\"map\"in e)return this.decode_map(e);if(\"struct\"in e)return this.decode_struct(e)}throw new Error(\"Unsupported type: \".concat(e))},e.prototype.decode_integer=function(e){var t=parseInt(e.substring(1));return t<=32||\"f64\"==e?this.buffer.consume_value(e):this.decode_bigint(t,e.startsWith(\"i\"))},e.prototype.decode_bigint=function(e,t){void 0===t&&(t=!1);var r=e/8,i=new Uint8Array(this.buffer.consume_bytes(r)),n=i.reduceRight((function(e,t){return e+t.toString(16).padStart(2,\"0\")}),\"\");return t&&i[r-1]?BigInt.asIntN(e,BigInt(\"0x\".concat(n))):BigInt(\"0x\".concat(n))},e.prototype.decode_string=function(){var e=this.decode_integer(\"u32\"),t=new Uint8Array(this.buffer.consume_bytes(e));return String.fromCharCode.apply(null,t)},e.prototype.decode_boolean=function(){return this.buffer.consume_value(\"u8\")>0},e.prototype.decode_option=function(e){var t=this.buffer.consume_value(\"u8\");if(1===t)return this.decode_value(e.option);if(0!==t)throw new Error(\"Invalid option \".concat(t));return null},e.prototype.decode_enum=function(e){var t,r=this.buffer.consume_value(\"u8\");if(r>e.enum.length)throw new Error(\"Enum option \".concat(r,\" is not available\"));var i=e.enum[r].struct,n=Object.keys(i)[0];return(t={})[n]=this.decode_value(i[n]),t},e.prototype.decode_array=function(e){for(var t=[],r=e.array.len?e.array.len:this.decode_integer(\"u32\"),i=0;i<r;++i)t.push(this.decode_value(e.array.type));return t},e.prototype.decode_set=function(e){for(var t=this.decode_integer(\"u32\"),r=new Set,i=0;i<t;++i)r.add(this.decode_value(e.set));return r},e.prototype.decode_map=function(e){for(var t=this.decode_integer(\"u32\"),r=new Map,i=0;i<t;++i){var n=this.decode_value(e.map.key),s=this.decode_value(e.map.value);r.set(n,s)}return r},e.prototype.decode_struct=function(e){var t={};for(var r in e.struct)t[r]=this.decode_value(e.struct[r]);return t},e}();function b(e,t,r){return void 0===r&&(r=!0),r&&l(e),new d(r).encode(t,e)}class g{constructor(e){this.tag=1,this.record=e.record,this.content=e.content}serialize(){return b(g.schema,this)}getInstruction(t,r,i,n,s,o,a,u){const c=Buffer.from(this.serialize());let h=[];return h.push({pubkey:r,isSigner:!1,isWritable:!1}),h.push({pubkey:i,isSigner:!1,isWritable:!1}),h.push({pubkey:n,isSigner:!0,isWritable:!0}),h.push({pubkey:s,isSigner:!1,isWritable:!0}),h.push({pubkey:o,isSigner:!1,isWritable:!0}),h.push({pubkey:a,isSigner:!0,isWritable:!0}),h.push({pubkey:u,isSigner:!1,isWritable:!1}),new e({keys:h,programId:t,data:c})}}g.schema={struct:{tag:\"u8\",record:\"string\",content:{array:{type:\"u8\"}}}};class _{constructor(e){this.tag=4,this.validation=e.validation,this.signature=e.signature,this.expectedPubkey=e.expectedPubkey}serialize(){return b(_.schema,this)}getInstruction(t,r,i,n,s,o,a,u){const c=Buffer.from(this.serialize());let h=[];return h.push({pubkey:r,isSigner:!1,isWritable:!1}),h.push({pubkey:i,isSigner:!1,isWritable:!1}),h.push({pubkey:n,isSigner:!0,isWritable:!0}),h.push({pubkey:s,isSigner:!1,isWritable:!0}),h.push({pubkey:o,isSigner:!1,isWritable:!0}),h.push({pubkey:a,isSigner:!0,isWritable:!0}),h.push({pubkey:u,isSigner:!1,isWritable:!1}),new e({keys:h,programId:t,data:c})}}_.schema={struct:{tag:\"u8\",validation:\"u8\",signature:{array:{type:\"u8\"}},expectedPubkey:{array:{type:\"u8\"}}}};class v{constructor(e){this.tag=0,this.contentLength=e.contentLength,this.record=e.record}serialize(){return b(v.schema,this)}getInstruction(t,r,i,n,s,o,a,u){const c=Buffer.from(this.serialize());let h=[];return h.push({pubkey:r,isSigner:!1,isWritable:!1}),h.push({pubkey:i,isSigner:!1,isWritable:!1}),h.push({pubkey:n,isSigner:!0,isWritable:!0}),h.push({pubkey:s,isSigner:!1,isWritable:!0}),h.push({pubkey:o,isSigner:!1,isWritable:!0}),h.push({pubkey:a,isSigner:!0,isWritable:!0}),h.push({pubkey:u,isSigner:!1,isWritable:!1}),new e({keys:h,programId:t,data:c})}}v.schema={struct:{tag:\"u8\",contentLength:\"u32\",record:\"string\"}};class m{constructor(e){this.tag=3,this.staleness=e.staleness}serialize(){return b(m.schema,this)}getInstruction(t,r,i,n,s,o,a,u,c){const h=Buffer.from(this.serialize());let f=[];return f.push({pubkey:r,isSigner:!1,isWritable:!1}),f.push({pubkey:i,isSigner:!1,isWritable:!1}),f.push({pubkey:n,isSigner:!0,isWritable:!0}),f.push({pubkey:s,isSigner:!1,isWritable:!0}),f.push({pubkey:o,isSigner:!1,isWritable:!0}),f.push({pubkey:a,isSigner:!1,isWritable:!0}),f.push({pubkey:u,isSigner:!1,isWritable:!1}),f.push({pubkey:c,isSigner:!0,isWritable:!0}),new e({keys:f,programId:t,data:h})}}m.schema={struct:{tag:\"u8\",staleness:\"bool\"}};class w{constructor(e){this.tag=2,this.record=e.record,this.content=e.content}serialize(){return b(w.schema,this)}getInstruction(t,r,i,n,s,o,a,u){const c=Buffer.from(this.serialize());let h=[];return h.push({pubkey:r,isSigner:!1,isWritable:!1}),h.push({pubkey:i,isSigner:!1,isWritable:!1}),h.push({pubkey:n,isSigner:!0,isWritable:!0}),h.push({pubkey:s,isSigner:!1,isWritable:!0}),h.push({pubkey:o,isSigner:!1,isWritable:!0}),h.push({pubkey:a,isSigner:!0,isWritable:!0}),h.push({pubkey:u,isSigner:!1,isWritable:!1}),new e({keys:h,programId:t,data:c})}}w.schema={struct:{tag:\"u8\",record:\"string\",content:{array:{type:\"u8\"}}}};class k{constructor(){this.tag=5}serialize(){return b(k.schema,this)}getInstruction(t,r,i,n,s,o,a,u){const c=Buffer.from(this.serialize());let h=[];return h.push({pubkey:r,isSigner:!1,isWritable:!1}),h.push({pubkey:i,isSigner:!1,isWritable:!1}),h.push({pubkey:n,isSigner:!0,isWritable:!0}),h.push({pubkey:s,isSigner:!1,isWritable:!0}),h.push({pubkey:o,isSigner:!1,isWritable:!0}),h.push({pubkey:a,isSigner:!0,isWritable:!0}),h.push({pubkey:u,isSigner:!1,isWritable:!1}),new e({keys:h,programId:t,data:c})}}k.schema={struct:{tag:\"u8\"}};class S{constructor(e){this.tag=6,this.roaId=e.roaId}serialize(){return b(S.schema,this)}getInstruction(t,r,i,n,s,o,a,u){const c=Buffer.from(this.serialize());let h=[];return h.push({pubkey:r,isSigner:!1,isWritable:!1}),h.push({pubkey:i,isSigner:!1,isWritable:!1}),h.push({pubkey:n,isSigner:!0,isWritable:!0}),h.push({pubkey:s,isSigner:!1,isWritable:!0}),h.push({pubkey:o,isSigner:!1,isWritable:!0}),h.push({pubkey:a,isSigner:!0,isWritable:!0}),h.push({pubkey:u,isSigner:!1,isWritable:!1}),new e({keys:h,programId:t,data:c})}}S.schema={struct:{tag:\"u8\",roaId:{array:{type:\"u8\"}}}};class I{constructor(){this.tag=7}serialize(){return b(I.schema,this)}getInstruction(t,r,i,n,s,o,a,u){const c=Buffer.from(this.serialize());let h=[];return h.push({pubkey:r,isSigner:!1,isWritable:!1}),h.push({pubkey:i,isSigner:!1,isWritable:!1}),h.push({pubkey:n,isSigner:!0,isWritable:!0}),h.push({pubkey:s,isSigner:!1,isWritable:!0}),h.push({pubkey:o,isSigner:!1,isWritable:!0}),h.push({pubkey:a,isSigner:!1,isWritable:!1}),h.push({pubkey:u,isSigner:!0,isWritable:!0}),new e({keys:h,programId:t,data:c})}}I.schema={struct:{tag:\"u8\"}};const W=new t(\"HP3D4D1ZCmohQGFVms2SS4LCANgJyksBf5s1F77FuFjZ\"),[A]=t.findProgramAddressSync([W.toBuffer()],W),j=(e,t,i,n,s,o,a,u)=>new g({record:o,content:Array.from(a)}).getInstruction(u,r.programId,s,e,t,i,n,A),z=(e,t,i,n,s,o,a,u)=>new v({contentLength:a,record:o}).getInstruction(u,r.programId,s,e,t,i,n,A),E=(e,t,i,n,s,o)=>(new k).getInstruction(o,r.programId,s,e,n,t,i,A),P=(e,t,i,n,s,o,a,u)=>new w({record:o,content:Array.from(a)}).getInstruction(u,r.programId,s,e,t,i,n,A),B=(e,t,i,n,s,o,a,u,c)=>new _({validation:o,signature:Array.from(a),expectedPubkey:Array.from(u)}).getInstruction(c,r.programId,s,e,t,i,n,A),O=(e,t,i,n,s,o,a,u)=>new m({staleness:a}).getInstruction(u,r.programId,o,e,t,i,n,A,s),U=(e,t,i,n,s,o,a)=>new S({roaId:Array.from(o.toBuffer())}).getInstruction(a,r.programId,t,e,i,n,s,A),x=(e,t,i,n,s,o)=>(new I).getInstruction(o,r.programId,t,e,i,n,A,s),L=96;var V;!function(e){e[e.None=0]=\"None\",e[e.Solana=1]=\"Solana\",e[e.Ethereum=2]=\"Ethereum\",e[e.UnverifiedSolana=3]=\"UnverifiedSolana\"}(V||(V={}));const N=e=>{switch(e){case V.None:return 0;case V.Ethereum:return 20;case V.Solana:case V.UnverifiedSolana:return 32;default:throw new Error(\"Invalid validation enum\")}};class T{constructor(e){this.stalenessValidation=e.stalenessValidation,this.rightOfAssociationValidation=e.rightOfAssociationValidation,this.contentLength=e.contentLength}static deserialize(e){return new T((t=this.schema,r=e,void 0===(i=!0)&&(i=!0),i&&l(t),new y(r).decode(t)));var t,r,i}static async retrieve(e,t){const r=await e.getAccountInfo(t);if(!r||!r.data)throw new Error(\"Record header account not found\");return this.deserialize(r.data.slice(96,96+this.LEN))}}T.LEN=8,T.schema={struct:{stalenessValidation:\"u16\",rightOfAssociationValidation:\"u16\",contentLength:\"u32\"}};class C{constructor(e,t){this.data=t,this.header=e}static deserialize(e){const t=T.deserialize(e.slice(96,96+T.LEN)),r=e.slice(96+T.LEN);return new C(t,r)}static async retrieve(e,t){const r=await e.getAccountInfo(t);if(!r||!r.data)throw new Error(\"Record header account not found\");return this.deserialize(r.data)}static async retrieveBatch(e,t){return(await e.getMultipleAccountsInfo(t)).map((e=>{if(null==e?void 0:e.data)return this.deserialize(e.data)}))}getContent(){let e=N(this.header.stalenessValidation)+N(this.header.rightOfAssociationValidation);return this.data.slice(e)}getStalenessId(){let e=N(this.header.stalenessValidation);return this.data.slice(0,e)}getRoAId(){let e=N(this.header.stalenessValidation),t=e+N(this.header.rightOfAssociationValidation);return this.data.slice(e,t)}}export{A as CENTRAL_STATE_SNS_RECORDS,L as NAME_REGISTRY_LEN,C as Record,T as RecordHeader,W as SNS_RECORDS_ID,V as Validation,j as allocateAndPostRecord,g as allocateAndPostRecordInstruction,z as allocateRecord,v as allocateRecordInstruction,E as deleteRecord,k as deleteRecordInstruction,P as editRecord,w as editRecordInstruction,N as getValidationLength,x as unverifyRoa,I as unverifyRoaInstruction,B as validateEthSignature,_ as validateEthereumSignatureInstruction,O as validateSolanaSignature,m as validateSolanaSignatureInstruction,U as writeRoa,S as writeRoaInstruction};\n//# sourceMappingURL=index.mjs.map\n",null,"module.exports = {\n Other: 0,\n CR: 1 << 0,\n LF: 1 << 1,\n Control: 1 << 2,\n Extend: 1 << 3,\n ZWJ: 1 << 4,\n Regional_Indicator: 1 << 5,\n Prepend: 1 << 6,\n SpacingMark: 1 << 7,\n L: 1 << 8,\n V: 1 << 9,\n T: 1 << 10,\n LV: 1 << 11,\n LVT: 1 << 12,\n Extended_Pictographic: 1 << 13,\n};\n","var TINF_OK = 0;\nvar TINF_DATA_ERROR = -3;\n\nfunction Tree() {\n this.table = new Uint16Array(16); /* table of code length counts */\n this.trans = new Uint16Array(288); /* code -> symbol translation table */\n}\n\nfunction Data(source, dest) {\n this.source = source;\n this.sourceIndex = 0;\n this.tag = 0;\n this.bitcount = 0;\n \n this.dest = dest;\n this.destLen = 0;\n \n this.ltree = new Tree(); /* dynamic length/symbol tree */\n this.dtree = new Tree(); /* dynamic distance tree */\n}\n\n/* --------------------------------------------------- *\n * -- uninitialized global data (static structures) -- *\n * --------------------------------------------------- */\n\nvar sltree = new Tree();\nvar sdtree = new Tree();\n\n/* extra bits and base tables for length codes */\nvar length_bits = new Uint8Array(30);\nvar length_base = new Uint16Array(30);\n\n/* extra bits and base tables for distance codes */\nvar dist_bits = new Uint8Array(30);\nvar dist_base = new Uint16Array(30);\n\n/* special ordering of code length codes */\nvar clcidx = new Uint8Array([\n 16, 17, 18, 0, 8, 7, 9, 6,\n 10, 5, 11, 4, 12, 3, 13, 2,\n 14, 1, 15\n]);\n\n/* used by tinf_decode_trees, avoids allocations every call */\nvar code_tree = new Tree();\nvar lengths = new Uint8Array(288 + 32);\n\n/* ----------------------- *\n * -- utility functions -- *\n * ----------------------- */\n\n/* build extra bits and base tables */\nfunction tinf_build_bits_base(bits, base, delta, first) {\n var i, sum;\n\n /* build bits table */\n for (i = 0; i < delta; ++i) bits[i] = 0;\n for (i = 0; i < 30 - delta; ++i) bits[i + delta] = i / delta | 0;\n\n /* build base table */\n for (sum = first, i = 0; i < 30; ++i) {\n base[i] = sum;\n sum += 1 << bits[i];\n }\n}\n\n/* build the fixed huffman trees */\nfunction tinf_build_fixed_trees(lt, dt) {\n var i;\n\n /* build fixed length tree */\n for (i = 0; i < 7; ++i) lt.table[i] = 0;\n\n lt.table[7] = 24;\n lt.table[8] = 152;\n lt.table[9] = 112;\n\n for (i = 0; i < 24; ++i) lt.trans[i] = 256 + i;\n for (i = 0; i < 144; ++i) lt.trans[24 + i] = i;\n for (i = 0; i < 8; ++i) lt.trans[24 + 144 + i] = 280 + i;\n for (i = 0; i < 112; ++i) lt.trans[24 + 144 + 8 + i] = 144 + i;\n\n /* build fixed distance tree */\n for (i = 0; i < 5; ++i) dt.table[i] = 0;\n\n dt.table[5] = 32;\n\n for (i = 0; i < 32; ++i) dt.trans[i] = i;\n}\n\n/* given an array of code lengths, build a tree */\nvar offs = new Uint16Array(16);\n\nfunction tinf_build_tree(t, lengths, off, num) {\n var i, sum;\n\n /* clear code length count table */\n for (i = 0; i < 16; ++i) t.table[i] = 0;\n\n /* scan symbol lengths, and sum code length counts */\n for (i = 0; i < num; ++i) t.table[lengths[off + i]]++;\n\n t.table[0] = 0;\n\n /* compute offset table for distribution sort */\n for (sum = 0, i = 0; i < 16; ++i) {\n offs[i] = sum;\n sum += t.table[i];\n }\n\n /* create code->symbol translation table (symbols sorted by code) */\n for (i = 0; i < num; ++i) {\n if (lengths[off + i]) t.trans[offs[lengths[off + i]]++] = i;\n }\n}\n\n/* ---------------------- *\n * -- decode functions -- *\n * ---------------------- */\n\n/* get one bit from source stream */\nfunction tinf_getbit(d) {\n /* check if tag is empty */\n if (!d.bitcount--) {\n /* load next tag */\n d.tag = d.source[d.sourceIndex++];\n d.bitcount = 7;\n }\n\n /* shift bit out of tag */\n var bit = d.tag & 1;\n d.tag >>>= 1;\n\n return bit;\n}\n\n/* read a num bit value from a stream and add base */\nfunction tinf_read_bits(d, num, base) {\n if (!num)\n return base;\n\n while (d.bitcount < 24) {\n d.tag |= d.source[d.sourceIndex++] << d.bitcount;\n d.bitcount += 8;\n }\n\n var val = d.tag & (0xffff >>> (16 - num));\n d.tag >>>= num;\n d.bitcount -= num;\n return val + base;\n}\n\n/* given a data stream and a tree, decode a symbol */\nfunction tinf_decode_symbol(d, t) {\n while (d.bitcount < 24) {\n d.tag |= d.source[d.sourceIndex++] << d.bitcount;\n d.bitcount += 8;\n }\n \n var sum = 0, cur = 0, len = 0;\n var tag = d.tag;\n\n /* get more bits while code value is above sum */\n do {\n cur = 2 * cur + (tag & 1);\n tag >>>= 1;\n ++len;\n\n sum += t.table[len];\n cur -= t.table[len];\n } while (cur >= 0);\n \n d.tag = tag;\n d.bitcount -= len;\n\n return t.trans[sum + cur];\n}\n\n/* given a data stream, decode dynamic trees from it */\nfunction tinf_decode_trees(d, lt, dt) {\n var hlit, hdist, hclen;\n var i, num, length;\n\n /* get 5 bits HLIT (257-286) */\n hlit = tinf_read_bits(d, 5, 257);\n\n /* get 5 bits HDIST (1-32) */\n hdist = tinf_read_bits(d, 5, 1);\n\n /* get 4 bits HCLEN (4-19) */\n hclen = tinf_read_bits(d, 4, 4);\n\n for (i = 0; i < 19; ++i) lengths[i] = 0;\n\n /* read code lengths for code length alphabet */\n for (i = 0; i < hclen; ++i) {\n /* get 3 bits code length (0-7) */\n var clen = tinf_read_bits(d, 3, 0);\n lengths[clcidx[i]] = clen;\n }\n\n /* build code length tree */\n tinf_build_tree(code_tree, lengths, 0, 19);\n\n /* decode code lengths for the dynamic trees */\n for (num = 0; num < hlit + hdist;) {\n var sym = tinf_decode_symbol(d, code_tree);\n\n switch (sym) {\n case 16:\n /* copy previous code length 3-6 times (read 2 bits) */\n var prev = lengths[num - 1];\n for (length = tinf_read_bits(d, 2, 3); length; --length) {\n lengths[num++] = prev;\n }\n break;\n case 17:\n /* repeat code length 0 for 3-10 times (read 3 bits) */\n for (length = tinf_read_bits(d, 3, 3); length; --length) {\n lengths[num++] = 0;\n }\n break;\n case 18:\n /* repeat code length 0 for 11-138 times (read 7 bits) */\n for (length = tinf_read_bits(d, 7, 11); length; --length) {\n lengths[num++] = 0;\n }\n break;\n default:\n /* values 0-15 represent the actual code lengths */\n lengths[num++] = sym;\n break;\n }\n }\n\n /* build dynamic trees */\n tinf_build_tree(lt, lengths, 0, hlit);\n tinf_build_tree(dt, lengths, hlit, hdist);\n}\n\n/* ----------------------------- *\n * -- block inflate functions -- *\n * ----------------------------- */\n\n/* given a stream and two trees, inflate a block of data */\nfunction tinf_inflate_block_data(d, lt, dt) {\n while (1) {\n var sym = tinf_decode_symbol(d, lt);\n\n /* check for end of block */\n if (sym === 256) {\n return TINF_OK;\n }\n\n if (sym < 256) {\n d.dest[d.destLen++] = sym;\n } else {\n var length, dist, offs;\n var i;\n\n sym -= 257;\n\n /* possibly get more bits from length code */\n length = tinf_read_bits(d, length_bits[sym], length_base[sym]);\n\n dist = tinf_decode_symbol(d, dt);\n\n /* possibly get more bits from distance code */\n offs = d.destLen - tinf_read_bits(d, dist_bits[dist], dist_base[dist]);\n\n /* copy match */\n for (i = offs; i < offs + length; ++i) {\n d.dest[d.destLen++] = d.dest[i];\n }\n }\n }\n}\n\n/* inflate an uncompressed block of data */\nfunction tinf_inflate_uncompressed_block(d) {\n var length, invlength;\n var i;\n \n /* unread from bitbuffer */\n while (d.bitcount > 8) {\n d.sourceIndex--;\n d.bitcount -= 8;\n }\n\n /* get length */\n length = d.source[d.sourceIndex + 1];\n length = 256 * length + d.source[d.sourceIndex];\n\n /* get one's complement of length */\n invlength = d.source[d.sourceIndex + 3];\n invlength = 256 * invlength + d.source[d.sourceIndex + 2];\n\n /* check length */\n if (length !== (~invlength & 0x0000ffff))\n return TINF_DATA_ERROR;\n\n d.sourceIndex += 4;\n\n /* copy block */\n for (i = length; i; --i)\n d.dest[d.destLen++] = d.source[d.sourceIndex++];\n\n /* make sure we start next block on a byte boundary */\n d.bitcount = 0;\n\n return TINF_OK;\n}\n\n/* inflate stream from source to dest */\nfunction tinf_uncompress(source, dest) {\n var d = new Data(source, dest);\n var bfinal, btype, res;\n\n do {\n /* read final block flag */\n bfinal = tinf_getbit(d);\n\n /* read block type (2 bits) */\n btype = tinf_read_bits(d, 2, 0);\n\n /* decompress block */\n switch (btype) {\n case 0:\n /* decompress uncompressed block */\n res = tinf_inflate_uncompressed_block(d);\n break;\n case 1:\n /* decompress block with fixed huffman trees */\n res = tinf_inflate_block_data(d, sltree, sdtree);\n break;\n case 2:\n /* decompress block with dynamic huffman trees */\n tinf_decode_trees(d, d.ltree, d.dtree);\n res = tinf_inflate_block_data(d, d.ltree, d.dtree);\n break;\n default:\n res = TINF_DATA_ERROR;\n }\n\n if (res !== TINF_OK)\n throw new Error('Data error');\n\n } while (!bfinal);\n\n if (d.destLen < d.dest.length) {\n if (typeof d.dest.slice === 'function')\n return d.dest.slice(0, d.destLen);\n else\n return d.dest.subarray(0, d.destLen);\n }\n \n return d.dest;\n}\n\n/* -------------------- *\n * -- initialization -- *\n * -------------------- */\n\n/* build fixed huffman trees */\ntinf_build_fixed_trees(sltree, sdtree);\n\n/* build extra bits and base tables */\ntinf_build_bits_base(length_bits, length_base, 4, 3);\ntinf_build_bits_base(dist_bits, dist_base, 2, 1);\n\n/* fix a special case */\nlength_bits[28] = 0;\nlength_base[28] = 258;\n\nmodule.exports = tinf_uncompress;\n","const isBigEndian = (new Uint8Array(new Uint32Array([0x12345678]).buffer)[0] === 0x12);\n\nconst swap = (b, n, m) => {\n let i = b[n];\n b[n] = b[m];\n b[m] = i;\n};\n\nconst swap32 = array => {\n const len = array.length;\n for (let i = 0; i < len; i += 4) {\n swap(array, i, i + 3);\n swap(array, i + 1, i + 2);\n }\n};\n\nconst swap32LE = array => {\n if (isBigEndian) {\n swap32(array);\n }\n};\n\nmodule.exports = {\n swap32LE: swap32LE\n};\n","const inflate = require('tiny-inflate');\nconst { swap32LE } = require('./swap');\n\n// Shift size for getting the index-1 table offset.\nconst SHIFT_1 = 6 + 5;\n\n// Shift size for getting the index-2 table offset.\nconst SHIFT_2 = 5;\n\n// Difference between the two shift sizes,\n// for getting an index-1 offset from an index-2 offset. 6=11-5\nconst SHIFT_1_2 = SHIFT_1 - SHIFT_2;\n\n// Number of index-1 entries for the BMP. 32=0x20\n// This part of the index-1 table is omitted from the serialized form.\nconst OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> SHIFT_1;\n\n// Number of entries in an index-2 block. 64=0x40\nconst INDEX_2_BLOCK_LENGTH = 1 << SHIFT_1_2;\n\n// Mask for getting the lower bits for the in-index-2-block offset. */\nconst INDEX_2_MASK = INDEX_2_BLOCK_LENGTH - 1;\n\n// Shift size for shifting left the index array values.\n// Increases possible data size with 16-bit index values at the cost\n// of compactability.\n// This requires data blocks to be aligned by DATA_GRANULARITY.\nconst INDEX_SHIFT = 2;\n\n// Number of entries in a data block. 32=0x20\nconst DATA_BLOCK_LENGTH = 1 << SHIFT_2;\n\n// Mask for getting the lower bits for the in-data-block offset.\nconst DATA_MASK = DATA_BLOCK_LENGTH - 1;\n\n// The part of the index-2 table for U+D800..U+DBFF stores values for\n// lead surrogate code _units_ not code _points_.\n// Values for lead surrogate code _points_ are indexed with this portion of the table.\n// Length=32=0x20=0x400>>SHIFT_2. (There are 1024=0x400 lead surrogates.)\nconst LSCP_INDEX_2_OFFSET = 0x10000 >> SHIFT_2;\nconst LSCP_INDEX_2_LENGTH = 0x400 >> SHIFT_2;\n\n// Count the lengths of both BMP pieces. 2080=0x820\nconst INDEX_2_BMP_LENGTH = LSCP_INDEX_2_OFFSET + LSCP_INDEX_2_LENGTH;\n\n// The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n// Length 32=0x20 for lead bytes C0..DF, regardless of SHIFT_2.\nconst UTF8_2B_INDEX_2_OFFSET = INDEX_2_BMP_LENGTH;\nconst UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; // U+0800 is the first code point after 2-byte UTF-8\n\n// The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n// Variable length, for code points up to highStart, where the last single-value range starts.\n// Maximum length 512=0x200=0x100000>>SHIFT_1.\n// (For 0x100000 supplementary code points U+10000..U+10ffff.)\n//\n// The part of the index-2 table for supplementary code points starts\n// after this index-1 table.\n//\n// Both the index-1 table and the following part of the index-2 table\n// are omitted completely if there is only BMP data.\nconst INDEX_1_OFFSET = UTF8_2B_INDEX_2_OFFSET + UTF8_2B_INDEX_2_LENGTH;\n\n// The alignment size of a data block. Also the granularity for compaction.\nconst DATA_GRANULARITY = 1 << INDEX_SHIFT;\n\nclass UnicodeTrie {\n constructor(data) {\n const isBuffer = (typeof data.readUInt32BE === 'function') && (typeof data.slice === 'function');\n\n if (isBuffer || data instanceof Uint8Array) {\n // read binary format\n let uncompressedLength;\n if (isBuffer) {\n this.highStart = data.readUInt32LE(0);\n this.errorValue = data.readUInt32LE(4);\n uncompressedLength = data.readUInt32LE(8);\n data = data.slice(12);\n } else {\n const view = new DataView(data.buffer);\n this.highStart = view.getUint32(0, true);\n this.errorValue = view.getUint32(4, true);\n uncompressedLength = view.getUint32(8, true);\n data = data.subarray(12);\n }\n\n // double inflate the actual trie data\n data = inflate(data, new Uint8Array(uncompressedLength));\n data = inflate(data, new Uint8Array(uncompressedLength));\n\n // swap bytes from little-endian\n swap32LE(data);\n\n this.data = new Uint32Array(data.buffer);\n\n } else {\n // pre-parsed data\n ({ data: this.data, highStart: this.highStart, errorValue: this.errorValue } = data);\n }\n }\n\n get(codePoint) {\n let index;\n if ((codePoint < 0) || (codePoint > 0x10ffff)) {\n return this.errorValue;\n }\n\n if ((codePoint < 0xd800) || ((codePoint > 0xdbff) && (codePoint <= 0xffff))) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the index.\n // data is stored in the index array itself.\n index = (this.data[codePoint >> SHIFT_2] << INDEX_SHIFT) + (codePoint & DATA_MASK);\n return this.data[index];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n index = (this.data[LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> SHIFT_2)] << INDEX_SHIFT) + (codePoint & DATA_MASK);\n return this.data[index];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n index = this.data[(INDEX_1_OFFSET - OMITTED_BMP_INDEX_1_LENGTH) + (codePoint >> SHIFT_1)];\n index = this.data[index + ((codePoint >> SHIFT_2) & INDEX_2_MASK)];\n index = (index << INDEX_SHIFT) + (codePoint & DATA_MASK);\n return this.data[index];\n }\n\n return this.data[this.data.length - DATA_GRANULARITY];\n }\n}\n\nmodule.exports = UnicodeTrie;","//\n// THIS FILE IS AUTOMATICALLY GENERATED! DO NOT EDIT BY HAND!\n//\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n ? module.exports = factory()\n : typeof define === 'function' && define.amd\n ? define(factory) :\n // cf. https://github.com/dankogai/js-base64/issues/119\n (function () {\n // existing version for noConflict()\n var _Base64 = global.Base64;\n var gBase64 = factory();\n gBase64.noConflict = function () {\n global.Base64 = _Base64;\n return gBase64;\n };\n if (global.Meteor) { // Meteor.js\n Base64 = gBase64;\n }\n global.Base64 = gBase64;\n })();\n}((typeof self !== 'undefined' ? self\n : typeof window !== 'undefined' ? window\n : typeof global !== 'undefined' ? global\n : this), function () {\n 'use strict';\n /**\n * base64.ts\n *\n * Licensed under the BSD 3-Clause License.\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * References:\n * http://en.wikipedia.org/wiki/Base64\n *\n * @author Dan Kogai (https://github.com/dankogai)\n */\n var version = '3.7.5';\n /**\n * @deprecated use lowercase `version`.\n */\n var VERSION = version;\n var _hasatob = typeof atob === 'function';\n var _hasbtoa = typeof btoa === 'function';\n var _hasBuffer = typeof Buffer === 'function';\n var _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined;\n var _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined;\n var b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var b64chs = Array.prototype.slice.call(b64ch);\n var b64tab = (function (a) {\n var tab = {};\n a.forEach(function (c, i) { return tab[c] = i; });\n return tab;\n })(b64chs);\n var b64re = /^(?:[A-Za-z\\d+\\/]{4})*?(?:[A-Za-z\\d+\\/]{2}(?:==)?|[A-Za-z\\d+\\/]{3}=?)?$/;\n var _fromCC = String.fromCharCode.bind(String);\n var _U8Afrom = typeof Uint8Array.from === 'function'\n ? Uint8Array.from.bind(Uint8Array)\n : function (it) { return new Uint8Array(Array.prototype.slice.call(it, 0)); };\n var _mkUriSafe = function (src) { return src\n .replace(/=/g, '').replace(/[+\\/]/g, function (m0) { return m0 == '+' ? '-' : '_'; }); };\n var _tidyB64 = function (s) { return s.replace(/[^A-Za-z0-9\\+\\/]/g, ''); };\n /**\n * polyfill version of `btoa`\n */\n var btoaPolyfill = function (bin) {\n // console.log('polyfilled');\n var u32, c0, c1, c2, asc = '';\n var pad = bin.length % 3;\n for (var i = 0; i < bin.length;) {\n if ((c0 = bin.charCodeAt(i++)) > 255 ||\n (c1 = bin.charCodeAt(i++)) > 255 ||\n (c2 = bin.charCodeAt(i++)) > 255)\n throw new TypeError('invalid character found');\n u32 = (c0 << 16) | (c1 << 8) | c2;\n asc += b64chs[u32 >> 18 & 63]\n + b64chs[u32 >> 12 & 63]\n + b64chs[u32 >> 6 & 63]\n + b64chs[u32 & 63];\n }\n return pad ? asc.slice(0, pad - 3) + \"===\".substring(pad) : asc;\n };\n /**\n * does what `window.btoa` of web browsers do.\n * @param {String} bin binary string\n * @returns {string} Base64-encoded string\n */\n var _btoa = _hasbtoa ? function (bin) { return btoa(bin); }\n : _hasBuffer ? function (bin) { return Buffer.from(bin, 'binary').toString('base64'); }\n : btoaPolyfill;\n var _fromUint8Array = _hasBuffer\n ? function (u8a) { return Buffer.from(u8a).toString('base64'); }\n : function (u8a) {\n // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326\n var maxargs = 0x1000;\n var strs = [];\n for (var i = 0, l = u8a.length; i < l; i += maxargs) {\n strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));\n }\n return _btoa(strs.join(''));\n };\n /**\n * converts a Uint8Array to a Base64 string.\n * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5\n * @returns {string} Base64 string\n */\n var fromUint8Array = function (u8a, urlsafe) {\n if (urlsafe === void 0) { urlsafe = false; }\n return urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);\n };\n // This trick is found broken https://github.com/dankogai/js-base64/issues/130\n // const utob = (src: string) => unescape(encodeURIComponent(src));\n // reverting good old fationed regexp\n var cb_utob = function (c) {\n if (c.length < 2) {\n var cc = c.charCodeAt(0);\n return cc < 0x80 ? c\n : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6))\n + _fromCC(0x80 | (cc & 0x3f)))\n : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n else {\n var cc = 0x10000\n + (c.charCodeAt(0) - 0xD800) * 0x400\n + (c.charCodeAt(1) - 0xDC00);\n return (_fromCC(0xf0 | ((cc >>> 18) & 0x07))\n + _fromCC(0x80 | ((cc >>> 12) & 0x3f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n };\n var re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n /**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-8 string\n * @returns {string} UTF-16 string\n */\n var utob = function (u) { return u.replace(re_utob, cb_utob); };\n //\n var _encode = _hasBuffer\n ? function (s) { return Buffer.from(s, 'utf8').toString('base64'); }\n : _TE\n ? function (s) { return _fromUint8Array(_TE.encode(s)); }\n : function (s) { return _btoa(utob(s)); };\n /**\n * converts a UTF-8-encoded string to a Base64 string.\n * @param {boolean} [urlsafe] if `true` make the result URL-safe\n * @returns {string} Base64 string\n */\n var encode = function (src, urlsafe) {\n if (urlsafe === void 0) { urlsafe = false; }\n return urlsafe\n ? _mkUriSafe(_encode(src))\n : _encode(src);\n };\n /**\n * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5.\n * @returns {string} Base64 string\n */\n var encodeURI = function (src) { return encode(src, true); };\n // This trick is found broken https://github.com/dankogai/js-base64/issues/130\n // const btou = (src: string) => decodeURIComponent(escape(src));\n // reverting good old fationed regexp\n var re_btou = /[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}/g;\n var cb_btou = function (cccc) {\n switch (cccc.length) {\n case 4:\n var cp = ((0x07 & cccc.charCodeAt(0)) << 18)\n | ((0x3f & cccc.charCodeAt(1)) << 12)\n | ((0x3f & cccc.charCodeAt(2)) << 6)\n | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000;\n return (_fromCC((offset >>> 10) + 0xD800)\n + _fromCC((offset & 0x3FF) + 0xDC00));\n case 3:\n return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12)\n | ((0x3f & cccc.charCodeAt(1)) << 6)\n | (0x3f & cccc.charCodeAt(2)));\n default:\n return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6)\n | (0x3f & cccc.charCodeAt(1)));\n }\n };\n /**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-16 string\n * @returns {string} UTF-8 string\n */\n var btou = function (b) { return b.replace(re_btou, cb_btou); };\n /**\n * polyfill version of `atob`\n */\n var atobPolyfill = function (asc) {\n // console.log('polyfilled');\n asc = asc.replace(/\\s+/g, '');\n if (!b64re.test(asc))\n throw new TypeError('malformed base64.');\n asc += '=='.slice(2 - (asc.length & 3));\n var u24, bin = '', r1, r2;\n for (var i = 0; i < asc.length;) {\n u24 = b64tab[asc.charAt(i++)] << 18\n | b64tab[asc.charAt(i++)] << 12\n | (r1 = b64tab[asc.charAt(i++)]) << 6\n | (r2 = b64tab[asc.charAt(i++)]);\n bin += r1 === 64 ? _fromCC(u24 >> 16 & 255)\n : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255)\n : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);\n }\n return bin;\n };\n /**\n * does what `window.atob` of web browsers do.\n * @param {String} asc Base64-encoded string\n * @returns {string} binary string\n */\n var _atob = _hasatob ? function (asc) { return atob(_tidyB64(asc)); }\n : _hasBuffer ? function (asc) { return Buffer.from(asc, 'base64').toString('binary'); }\n : atobPolyfill;\n //\n var _toUint8Array = _hasBuffer\n ? function (a) { return _U8Afrom(Buffer.from(a, 'base64')); }\n : function (a) { return _U8Afrom(_atob(a).split('').map(function (c) { return c.charCodeAt(0); })); };\n /**\n * converts a Base64 string to a Uint8Array.\n */\n var toUint8Array = function (a) { return _toUint8Array(_unURI(a)); };\n //\n var _decode = _hasBuffer\n ? function (a) { return Buffer.from(a, 'base64').toString('utf8'); }\n : _TD\n ? function (a) { return _TD.decode(_toUint8Array(a)); }\n : function (a) { return btou(_atob(a)); };\n var _unURI = function (a) { return _tidyB64(a.replace(/[-_]/g, function (m0) { return m0 == '-' ? '+' : '/'; })); };\n /**\n * converts a Base64 string to a UTF-8 string.\n * @param {String} src Base64 string. Both normal and URL-safe are supported\n * @returns {string} UTF-8 string\n */\n var decode = function (src) { return _decode(_unURI(src)); };\n /**\n * check if a value is a valid Base64 string\n * @param {String} src a value to check\n */\n var isValid = function (src) {\n if (typeof src !== 'string')\n return false;\n var s = src.replace(/\\s+/g, '').replace(/={0,2}$/, '');\n return !/[^\\s0-9a-zA-Z\\+/]/.test(s) || !/[^\\s0-9a-zA-Z\\-_]/.test(s);\n };\n //\n var _noEnum = function (v) {\n return {\n value: v, enumerable: false, writable: true, configurable: true\n };\n };\n /**\n * extend String.prototype with relevant methods\n */\n var extendString = function () {\n var _add = function (name, body) { return Object.defineProperty(String.prototype, name, _noEnum(body)); };\n _add('fromBase64', function () { return decode(this); });\n _add('toBase64', function (urlsafe) { return encode(this, urlsafe); });\n _add('toBase64URI', function () { return encode(this, true); });\n _add('toBase64URL', function () { return encode(this, true); });\n _add('toUint8Array', function () { return toUint8Array(this); });\n };\n /**\n * extend Uint8Array.prototype with relevant methods\n */\n var extendUint8Array = function () {\n var _add = function (name, body) { return Object.defineProperty(Uint8Array.prototype, name, _noEnum(body)); };\n _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); });\n _add('toBase64URI', function () { return fromUint8Array(this, true); });\n _add('toBase64URL', function () { return fromUint8Array(this, true); });\n };\n /**\n * extend Builtin prototypes with relevant methods\n */\n var extendBuiltins = function () {\n extendString();\n extendUint8Array();\n };\n var gBase64 = {\n version: version,\n VERSION: VERSION,\n atob: _atob,\n atobPolyfill: atobPolyfill,\n btoa: _btoa,\n btoaPolyfill: btoaPolyfill,\n fromBase64: decode,\n toBase64: encode,\n encode: encode,\n encodeURI: encodeURI,\n encodeURL: encodeURI,\n utob: utob,\n btou: btou,\n decode: decode,\n isValid: isValid,\n fromUint8Array: fromUint8Array,\n toUint8Array: toUint8Array,\n extendString: extendString,\n extendUint8Array: extendUint8Array,\n extendBuiltins: extendBuiltins\n };\n //\n // export Base64 to the namespace\n //\n // ES5 is yet to have Object.assign() that may make transpilers unhappy.\n // gBase64.Base64 = Object.assign({}, gBase64);\n gBase64.Base64 = {};\n Object.keys(gBase64).forEach(function (k) { return gBase64.Base64[k] = gBase64[k]; });\n return gBase64;\n}));\n","const types = require(\"./types\");\nconst typeTrieData = require(\"./typeTrie.json\").data;\nconst extPictData = require(\"./extPict.json\").data;\n\nconst UnicodeTrie = require(\"unicode-trie\");\nconst Base64 = require(\"js-base64\").Base64;\n\nconst typeTrie = new UnicodeTrie(Base64.toUint8Array(typeTrieData));\nconst extPict = new UnicodeTrie(Base64.toUint8Array(extPictData));\n\nfunction is(type, bit) {\n return (type & bit) !== 0;\n}\n\nconst GB11State = {\n Initial: 0,\n ExtendOrZWJ: 1,\n NotBoundary: 2,\n};\n\nfunction nextGraphemeClusterSize(ts, start) {\n const L = ts.length;\n\n let ri = 0;\n let gb11State = GB11State.Initial;\n\n // GB1: sot ÷ Any\n for (let i = start; i + 1 < L; i++) {\n const curr = ts[i + 0];\n const next = ts[i + 1];\n\n // for GB12, GB13\n if (!is(curr, types.Regional_Indicator)) {\n ri = 0;\n }\n\n // for GB11: \\p{Extended_Pictographic} Extend* ZWJ x \\p{Extended_Pictographic}\n switch (gb11State) {\n case GB11State.NotBoundary:\n case GB11State.Initial:\n if (is(curr, types.Extended_Pictographic)) {\n gb11State = GB11State.ExtendOrZWJ;\n } else {\n gb11State = GB11State.Initial;\n }\n break;\n case GB11State.ExtendOrZWJ:\n if (is(curr, types.Extend)) {\n gb11State = GB11State.ExtendOrZWJ;\n } else if (\n is(curr, types.ZWJ) &&\n is(next, types.Extended_Pictographic)\n ) {\n gb11State = GB11State.NotBoundary;\n } else {\n gb11State = GB11State.Initial;\n }\n break;\n }\n\n // GB3: CR x LF\n if (is(curr, types.CR) && is(next, types.LF)) {\n continue;\n }\n // GB4: (Control | CR | LF) ÷\n if (is(curr, types.Control | types.CR | types.LF)) {\n return i + 1 - start;\n }\n // GB5: ÷ (Control | CR | LF)\n if (is(next, types.Control | types.CR | types.LF)) {\n return i + 1 - start;\n }\n // GB6: L x (L | V | LV | LVT)\n if (\n is(curr, types.L) &&\n is(next, types.L | types.V | types.LV | types.LVT)\n ) {\n continue;\n }\n // GB7: (LV | V) x (V | T)\n if (is(curr, types.LV | types.V) && is(next, types.V | types.T)) {\n continue;\n }\n // GB8: (LVT | T) x T\n if (is(curr, types.LVT | types.T) && is(next, types.T)) {\n continue;\n }\n // GB9: x (Extend | ZWJ)\n if (is(next, types.Extend | types.ZWJ)) {\n continue;\n }\n // GB9a: x SpacingMark\n if (is(next, types.SpacingMark)) {\n continue;\n }\n // GB9b: Prepend x\n if (is(curr, types.Prepend)) {\n continue;\n }\n // GB11: \\p{Extended_Pictographic} Extend* ZWJ x \\p{Extended_Pictographic}\n if (gb11State === GB11State.NotBoundary) {\n continue;\n }\n // GB12: sot (RI RI)* RI x RI\n // GB13: [^RI] (RI RI)* RI x RI\n if (\n is(curr, types.Regional_Indicator) &&\n is(next, types.Regional_Indicator) &&\n ri % 2 === 0\n ) {\n ri++;\n continue;\n }\n // GB999: Any ÷ Any\n return i + 1 - start;\n }\n // GB2: Any ÷ eot\n return L - start;\n}\n\nmodule.exports = function split(str) {\n const graphemeClusters = [];\n\n const map = [0];\n const ts = [];\n for (let i = 0; i < str.length; ) {\n const code = str.codePointAt(i);\n ts.push(typeTrie.get(code) | extPict.get(code));\n i += code > 65535 ? 2 : 1;\n map.push(i);\n }\n\n for (let offset = 0; offset < ts.length; ) {\n const size = nextGraphemeClusterSize(ts, offset);\n const start = map[offset];\n const end = map[offset + size];\n graphemeClusters.push(str.slice(start, end));\n offset += size;\n }\n\n return graphemeClusters;\n};\n",null,"'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (source instanceof Uint8Array) {\n } else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength)\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source)\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = new Uint8Array(zeroes + (size - it4))\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","const basex = require('base-x')\nconst ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n","(function (root) {\n 'use strict';\n // A list of regular expressions that match arbitrary IPv4 addresses,\n // for which a number of weird notations exist.\n // Note that an address like 0010.0xa5.1.1 is considered legal.\n const ipv4Part = '(0?\\\\d+|0x[a-f0-9]+)';\n const ipv4Regexes = {\n fourOctet: new RegExp(`^${ipv4Part}\\\\.${ipv4Part}\\\\.${ipv4Part}\\\\.${ipv4Part}$`, 'i'),\n threeOctet: new RegExp(`^${ipv4Part}\\\\.${ipv4Part}\\\\.${ipv4Part}$`, 'i'),\n twoOctet: new RegExp(`^${ipv4Part}\\\\.${ipv4Part}$`, 'i'),\n longValue: new RegExp(`^${ipv4Part}$`, 'i')\n };\n\n // Regular Expression for checking Octal numbers\n const octalRegex = new RegExp(`^0[0-7]+$`, 'i');\n const hexRegex = new RegExp(`^0x[a-f0-9]+$`, 'i');\n\n const zoneIndex = '%[0-9a-z]{1,}';\n\n // IPv6-matching regular expressions.\n // For IPv6, the task is simpler: it is enough to match the colon-delimited\n // hexadecimal IPv6 and a transitional variant with dotted-decimal IPv4 at\n // the end.\n const ipv6Part = '(?:[0-9a-f]+::?)+';\n const ipv6Regexes = {\n zoneIndex: new RegExp(zoneIndex, 'i'),\n 'native': new RegExp(`^(::)?(${ipv6Part})?([0-9a-f]+)?(::)?(${zoneIndex})?$`, 'i'),\n deprecatedTransitional: new RegExp(`^(?:::)(${ipv4Part}\\\\.${ipv4Part}\\\\.${ipv4Part}\\\\.${ipv4Part}(${zoneIndex})?)$`, 'i'),\n transitional: new RegExp(`^((?:${ipv6Part})|(?:::)(?:${ipv6Part})?)${ipv4Part}\\\\.${ipv4Part}\\\\.${ipv4Part}\\\\.${ipv4Part}(${zoneIndex})?$`, 'i')\n };\n\n // Expand :: in an IPv6 address or address part consisting of `parts` groups.\n function expandIPv6 (string, parts) {\n // More than one '::' means invalid adddress\n if (string.indexOf('::') !== string.lastIndexOf('::')) {\n return null;\n }\n\n let colonCount = 0;\n let lastColon = -1;\n let zoneId = (string.match(ipv6Regexes.zoneIndex) || [])[0];\n let replacement, replacementCount;\n\n // Remove zone index and save it for later\n if (zoneId) {\n zoneId = zoneId.substring(1);\n string = string.replace(/%.+$/, '');\n }\n\n // How many parts do we already have?\n while ((lastColon = string.indexOf(':', lastColon + 1)) >= 0) {\n colonCount++;\n }\n\n // 0::0 is two parts more than ::\n if (string.substr(0, 2) === '::') {\n colonCount--;\n }\n\n if (string.substr(-2, 2) === '::') {\n colonCount--;\n }\n\n // The following loop would hang if colonCount > parts\n if (colonCount > parts) {\n return null;\n }\n\n // replacement = ':' + '0:' * (parts - colonCount)\n replacementCount = parts - colonCount;\n replacement = ':';\n while (replacementCount--) {\n replacement += '0:';\n }\n\n // Insert the missing zeroes\n string = string.replace('::', replacement);\n\n // Trim any garbage which may be hanging around if :: was at the edge in\n // the source strin\n if (string[0] === ':') {\n string = string.slice(1);\n }\n\n if (string[string.length - 1] === ':') {\n string = string.slice(0, -1);\n }\n\n parts = (function () {\n const ref = string.split(':');\n const results = [];\n\n for (let i = 0; i < ref.length; i++) {\n results.push(parseInt(ref[i], 16));\n }\n\n return results;\n })();\n\n return {\n parts: parts,\n zoneId: zoneId\n };\n }\n\n // A generic CIDR (Classless Inter-Domain Routing) RFC1518 range matcher.\n function matchCIDR (first, second, partSize, cidrBits) {\n if (first.length !== second.length) {\n throw new Error('ipaddr: cannot match CIDR for objects with different lengths');\n }\n\n let part = 0;\n let shift;\n\n while (cidrBits > 0) {\n shift = partSize - cidrBits;\n if (shift < 0) {\n shift = 0;\n }\n\n if (first[part] >> shift !== second[part] >> shift) {\n return false;\n }\n\n cidrBits -= partSize;\n part += 1;\n }\n\n return true;\n }\n\n function parseIntAuto (string) {\n // Hexadedimal base 16 (0x#)\n if (hexRegex.test(string)) {\n return parseInt(string, 16);\n }\n // While octal representation is discouraged by ECMAScript 3\n // and forbidden by ECMAScript 5, we silently allow it to\n // work only if the rest of the string has numbers less than 8.\n if (string[0] === '0' && !isNaN(parseInt(string[1], 10))) {\n if (octalRegex.test(string)) {\n return parseInt(string, 8);\n }\n throw new Error(`ipaddr: cannot parse ${string} as octal`);\n }\n // Always include the base 10 radix!\n return parseInt(string, 10);\n }\n\n function padPart (part, length) {\n while (part.length < length) {\n part = `0${part}`;\n }\n\n return part;\n }\n\n const ipaddr = {};\n\n // An IPv4 address (RFC791).\n ipaddr.IPv4 = (function () {\n // Constructs a new IPv4 address from an array of four octets\n // in network order (MSB first)\n // Verifies the input.\n function IPv4 (octets) {\n if (octets.length !== 4) {\n throw new Error('ipaddr: ipv4 octet count should be 4');\n }\n\n let i, octet;\n\n for (i = 0; i < octets.length; i++) {\n octet = octets[i];\n if (!((0 <= octet && octet <= 255))) {\n throw new Error('ipaddr: ipv4 octet should fit in 8 bits');\n }\n }\n\n this.octets = octets;\n }\n\n // Special IPv4 address ranges.\n // See also https://en.wikipedia.org/wiki/Reserved_IP_addresses\n IPv4.prototype.SpecialRanges = {\n unspecified: [[new IPv4([0, 0, 0, 0]), 8]],\n broadcast: [[new IPv4([255, 255, 255, 255]), 32]],\n // RFC3171\n multicast: [[new IPv4([224, 0, 0, 0]), 4]],\n // RFC3927\n linkLocal: [[new IPv4([169, 254, 0, 0]), 16]],\n // RFC5735\n loopback: [[new IPv4([127, 0, 0, 0]), 8]],\n // RFC6598\n carrierGradeNat: [[new IPv4([100, 64, 0, 0]), 10]],\n // RFC1918\n 'private': [\n [new IPv4([10, 0, 0, 0]), 8],\n [new IPv4([172, 16, 0, 0]), 12],\n [new IPv4([192, 168, 0, 0]), 16]\n ],\n // Reserved and testing-only ranges; RFCs 5735, 5737, 2544, 1700\n reserved: [\n [new IPv4([192, 0, 0, 0]), 24],\n [new IPv4([192, 0, 2, 0]), 24],\n [new IPv4([192, 88, 99, 0]), 24],\n [new IPv4([198, 18, 0, 0]), 15],\n [new IPv4([198, 51, 100, 0]), 24],\n [new IPv4([203, 0, 113, 0]), 24],\n [new IPv4([240, 0, 0, 0]), 4]\n ]\n };\n\n // The 'kind' method exists on both IPv4 and IPv6 classes.\n IPv4.prototype.kind = function () {\n return 'ipv4';\n };\n\n // Checks if this address matches other one within given CIDR range.\n IPv4.prototype.match = function (other, cidrRange) {\n let ref;\n if (cidrRange === undefined) {\n ref = other;\n other = ref[0];\n cidrRange = ref[1];\n }\n\n if (other.kind() !== 'ipv4') {\n throw new Error('ipaddr: cannot match ipv4 address with non-ipv4 one');\n }\n\n return matchCIDR(this.octets, other.octets, 8, cidrRange);\n };\n\n // returns a number of leading ones in IPv4 address, making sure that\n // the rest is a solid sequence of 0's (valid netmask)\n // returns either the CIDR length or null if mask is not valid\n IPv4.prototype.prefixLengthFromSubnetMask = function () {\n let cidr = 0;\n // non-zero encountered stop scanning for zeroes\n let stop = false;\n // number of zeroes in octet\n const zerotable = {\n 0: 8,\n 128: 7,\n 192: 6,\n 224: 5,\n 240: 4,\n 248: 3,\n 252: 2,\n 254: 1,\n 255: 0\n };\n let i, octet, zeros;\n\n for (i = 3; i >= 0; i -= 1) {\n octet = this.octets[i];\n if (octet in zerotable) {\n zeros = zerotable[octet];\n if (stop && zeros !== 0) {\n return null;\n }\n\n if (zeros !== 8) {\n stop = true;\n }\n\n cidr += zeros;\n } else {\n return null;\n }\n }\n\n return 32 - cidr;\n };\n\n // Checks if the address corresponds to one of the special ranges.\n IPv4.prototype.range = function () {\n return ipaddr.subnetMatch(this, this.SpecialRanges);\n };\n\n // Returns an array of byte-sized values in network order (MSB first)\n IPv4.prototype.toByteArray = function () {\n return this.octets.slice(0);\n };\n\n // Converts this IPv4 address to an IPv4-mapped IPv6 address.\n IPv4.prototype.toIPv4MappedAddress = function () {\n return ipaddr.IPv6.parse(`::ffff:${this.toString()}`);\n };\n\n // Symmetrical method strictly for aligning with the IPv6 methods.\n IPv4.prototype.toNormalizedString = function () {\n return this.toString();\n };\n\n // Returns the address in convenient, decimal-dotted format.\n IPv4.prototype.toString = function () {\n return this.octets.join('.');\n };\n\n return IPv4;\n })();\n\n // A utility function to return broadcast address given the IPv4 interface and prefix length in CIDR notation\n ipaddr.IPv4.broadcastAddressFromCIDR = function (string) {\n\n try {\n const cidr = this.parseCIDR(string);\n const ipInterfaceOctets = cidr[0].toByteArray();\n const subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray();\n const octets = [];\n let i = 0;\n while (i < 4) {\n // Broadcast address is bitwise OR between ip interface and inverted mask\n octets.push(parseInt(ipInterfaceOctets[i], 10) | parseInt(subnetMaskOctets[i], 10) ^ 255);\n i++;\n }\n\n return new this(octets);\n } catch (e) {\n throw new Error('ipaddr: the address does not have IPv4 CIDR format');\n }\n };\n\n // Checks if a given string is formatted like IPv4 address.\n ipaddr.IPv4.isIPv4 = function (string) {\n return this.parser(string) !== null;\n };\n\n // Checks if a given string is a valid IPv4 address.\n ipaddr.IPv4.isValid = function (string) {\n try {\n new this(this.parser(string));\n return true;\n } catch (e) {\n return false;\n }\n };\n\n // Checks if a given string is a full four-part IPv4 Address.\n ipaddr.IPv4.isValidFourPartDecimal = function (string) {\n if (ipaddr.IPv4.isValid(string) && string.match(/^(0|[1-9]\\d*)(\\.(0|[1-9]\\d*)){3}$/)) {\n return true;\n } else {\n return false;\n }\n };\n\n // A utility function to return network address given the IPv4 interface and prefix length in CIDR notation\n ipaddr.IPv4.networkAddressFromCIDR = function (string) {\n let cidr, i, ipInterfaceOctets, octets, subnetMaskOctets;\n\n try {\n cidr = this.parseCIDR(string);\n ipInterfaceOctets = cidr[0].toByteArray();\n subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray();\n octets = [];\n i = 0;\n while (i < 4) {\n // Network address is bitwise AND between ip interface and mask\n octets.push(parseInt(ipInterfaceOctets[i], 10) & parseInt(subnetMaskOctets[i], 10));\n i++;\n }\n\n return new this(octets);\n } catch (e) {\n throw new Error('ipaddr: the address does not have IPv4 CIDR format');\n }\n };\n\n // Tries to parse and validate a string with IPv4 address.\n // Throws an error if it fails.\n ipaddr.IPv4.parse = function (string) {\n const parts = this.parser(string);\n\n if (parts === null) {\n throw new Error('ipaddr: string is not formatted like an IPv4 Address');\n }\n\n return new this(parts);\n };\n\n // Parses the string as an IPv4 Address with CIDR Notation.\n ipaddr.IPv4.parseCIDR = function (string) {\n let match;\n\n if ((match = string.match(/^(.+)\\/(\\d+)$/))) {\n const maskLength = parseInt(match[2]);\n if (maskLength >= 0 && maskLength <= 32) {\n const parsed = [this.parse(match[1]), maskLength];\n Object.defineProperty(parsed, 'toString', {\n value: function () {\n return this.join('/');\n }\n });\n return parsed;\n }\n }\n\n throw new Error('ipaddr: string is not formatted like an IPv4 CIDR range');\n };\n\n // Classful variants (like a.b, where a is an octet, and b is a 24-bit\n // value representing last three octets; this corresponds to a class C\n // address) are omitted due to classless nature of modern Internet.\n ipaddr.IPv4.parser = function (string) {\n let match, part, value;\n\n // parseInt recognizes all that octal & hexadecimal weirdness for us\n if ((match = string.match(ipv4Regexes.fourOctet))) {\n return (function () {\n const ref = match.slice(1, 6);\n const results = [];\n\n for (let i = 0; i < ref.length; i++) {\n part = ref[i];\n results.push(parseIntAuto(part));\n }\n\n return results;\n })();\n } else if ((match = string.match(ipv4Regexes.longValue))) {\n value = parseIntAuto(match[1]);\n if (value > 0xffffffff || value < 0) {\n throw new Error('ipaddr: address outside defined range');\n }\n\n return ((function () {\n const results = [];\n let shift;\n\n for (shift = 0; shift <= 24; shift += 8) {\n results.push((value >> shift) & 0xff);\n }\n\n return results;\n })()).reverse();\n } else if ((match = string.match(ipv4Regexes.twoOctet))) {\n return (function () {\n const ref = match.slice(1, 4);\n const results = [];\n\n value = parseIntAuto(ref[1]);\n if (value > 0xffffff || value < 0) {\n throw new Error('ipaddr: address outside defined range');\n }\n\n results.push(parseIntAuto(ref[0]));\n results.push((value >> 16) & 0xff);\n results.push((value >> 8) & 0xff);\n results.push( value & 0xff);\n\n return results;\n })();\n } else if ((match = string.match(ipv4Regexes.threeOctet))) {\n return (function () {\n const ref = match.slice(1, 5);\n const results = [];\n\n value = parseIntAuto(ref[2]);\n if (value > 0xffff || value < 0) {\n throw new Error('ipaddr: address outside defined range');\n }\n\n results.push(parseIntAuto(ref[0]));\n results.push(parseIntAuto(ref[1]));\n results.push((value >> 8) & 0xff);\n results.push( value & 0xff);\n\n return results;\n })();\n } else {\n return null;\n }\n };\n\n // A utility function to return subnet mask in IPv4 format given the prefix length\n ipaddr.IPv4.subnetMaskFromPrefixLength = function (prefix) {\n prefix = parseInt(prefix);\n if (prefix < 0 || prefix > 32) {\n throw new Error('ipaddr: invalid IPv4 prefix length');\n }\n\n const octets = [0, 0, 0, 0];\n let j = 0;\n const filledOctetCount = Math.floor(prefix / 8);\n\n while (j < filledOctetCount) {\n octets[j] = 255;\n j++;\n }\n\n if (filledOctetCount < 4) {\n octets[filledOctetCount] = Math.pow(2, prefix % 8) - 1 << 8 - (prefix % 8);\n }\n\n return new this(octets);\n };\n\n // An IPv6 address (RFC2460)\n ipaddr.IPv6 = (function () {\n // Constructs an IPv6 address from an array of eight 16 - bit parts\n // or sixteen 8 - bit parts in network order(MSB first).\n // Throws an error if the input is invalid.\n function IPv6 (parts, zoneId) {\n let i, part;\n\n if (parts.length === 16) {\n this.parts = [];\n for (i = 0; i <= 14; i += 2) {\n this.parts.push((parts[i] << 8) | parts[i + 1]);\n }\n } else if (parts.length === 8) {\n this.parts = parts;\n } else {\n throw new Error('ipaddr: ipv6 part count should be 8 or 16');\n }\n\n for (i = 0; i < this.parts.length; i++) {\n part = this.parts[i];\n if (!((0 <= part && part <= 0xffff))) {\n throw new Error('ipaddr: ipv6 part should fit in 16 bits');\n }\n }\n\n if (zoneId) {\n this.zoneId = zoneId;\n }\n }\n\n // Special IPv6 ranges\n IPv6.prototype.SpecialRanges = {\n // RFC4291, here and after\n unspecified: [new IPv6([0, 0, 0, 0, 0, 0, 0, 0]), 128],\n linkLocal: [new IPv6([0xfe80, 0, 0, 0, 0, 0, 0, 0]), 10],\n multicast: [new IPv6([0xff00, 0, 0, 0, 0, 0, 0, 0]), 8],\n loopback: [new IPv6([0, 0, 0, 0, 0, 0, 0, 1]), 128],\n uniqueLocal: [new IPv6([0xfc00, 0, 0, 0, 0, 0, 0, 0]), 7],\n ipv4Mapped: [new IPv6([0, 0, 0, 0, 0, 0xffff, 0, 0]), 96],\n // RFC6145\n rfc6145: [new IPv6([0, 0, 0, 0, 0xffff, 0, 0, 0]), 96],\n // RFC6052\n rfc6052: [new IPv6([0x64, 0xff9b, 0, 0, 0, 0, 0, 0]), 96],\n // RFC3056\n '6to4': [new IPv6([0x2002, 0, 0, 0, 0, 0, 0, 0]), 16],\n // RFC6052, RFC6146\n teredo: [new IPv6([0x2001, 0, 0, 0, 0, 0, 0, 0]), 32],\n // RFC4291\n reserved: [[new IPv6([0x2001, 0xdb8, 0, 0, 0, 0, 0, 0]), 32]],\n benchmarking: [new IPv6([0x2001, 0x2, 0, 0, 0, 0, 0, 0]), 48],\n amt: [new IPv6([0x2001, 0x3, 0, 0, 0, 0, 0, 0]), 32],\n as112v6: [new IPv6([0x2001, 0x4, 0x112, 0, 0, 0, 0, 0]), 48],\n deprecated: [new IPv6([0x2001, 0x10, 0, 0, 0, 0, 0, 0]), 28],\n orchid2: [new IPv6([0x2001, 0x20, 0, 0, 0, 0, 0, 0]), 28]\n };\n\n // Checks if this address is an IPv4-mapped IPv6 address.\n IPv6.prototype.isIPv4MappedAddress = function () {\n return this.range() === 'ipv4Mapped';\n };\n\n // The 'kind' method exists on both IPv4 and IPv6 classes.\n IPv6.prototype.kind = function () {\n return 'ipv6';\n };\n\n // Checks if this address matches other one within given CIDR range.\n IPv6.prototype.match = function (other, cidrRange) {\n let ref;\n\n if (cidrRange === undefined) {\n ref = other;\n other = ref[0];\n cidrRange = ref[1];\n }\n\n if (other.kind() !== 'ipv6') {\n throw new Error('ipaddr: cannot match ipv6 address with non-ipv6 one');\n }\n\n return matchCIDR(this.parts, other.parts, 16, cidrRange);\n };\n\n // returns a number of leading ones in IPv6 address, making sure that\n // the rest is a solid sequence of 0's (valid netmask)\n // returns either the CIDR length or null if mask is not valid\n IPv6.prototype.prefixLengthFromSubnetMask = function () {\n let cidr = 0;\n // non-zero encountered stop scanning for zeroes\n let stop = false;\n // number of zeroes in octet\n const zerotable = {\n 0: 16,\n 32768: 15,\n 49152: 14,\n 57344: 13,\n 61440: 12,\n 63488: 11,\n 64512: 10,\n 65024: 9,\n 65280: 8,\n 65408: 7,\n 65472: 6,\n 65504: 5,\n 65520: 4,\n 65528: 3,\n 65532: 2,\n 65534: 1,\n 65535: 0\n };\n let part, zeros;\n\n for (let i = 7; i >= 0; i -= 1) {\n part = this.parts[i];\n if (part in zerotable) {\n zeros = zerotable[part];\n if (stop && zeros !== 0) {\n return null;\n }\n\n if (zeros !== 16) {\n stop = true;\n }\n\n cidr += zeros;\n } else {\n return null;\n }\n }\n\n return 128 - cidr;\n };\n\n\n // Checks if the address corresponds to one of the special ranges.\n IPv6.prototype.range = function () {\n return ipaddr.subnetMatch(this, this.SpecialRanges);\n };\n\n // Returns an array of byte-sized values in network order (MSB first)\n IPv6.prototype.toByteArray = function () {\n let part;\n const bytes = [];\n const ref = this.parts;\n for (let i = 0; i < ref.length; i++) {\n part = ref[i];\n bytes.push(part >> 8);\n bytes.push(part & 0xff);\n }\n\n return bytes;\n };\n\n // Returns the address in expanded format with all zeroes included, like\n // 2001:0db8:0008:0066:0000:0000:0000:0001\n IPv6.prototype.toFixedLengthString = function () {\n const addr = ((function () {\n const results = [];\n for (let i = 0; i < this.parts.length; i++) {\n results.push(padPart(this.parts[i].toString(16), 4));\n }\n\n return results;\n }).call(this)).join(':');\n\n let suffix = '';\n\n if (this.zoneId) {\n suffix = `%${this.zoneId}`;\n }\n\n return addr + suffix;\n };\n\n // Converts this address to IPv4 address if it is an IPv4-mapped IPv6 address.\n // Throws an error otherwise.\n IPv6.prototype.toIPv4Address = function () {\n if (!this.isIPv4MappedAddress()) {\n throw new Error('ipaddr: trying to convert a generic ipv6 address to ipv4');\n }\n\n const ref = this.parts.slice(-2);\n const high = ref[0];\n const low = ref[1];\n\n return new ipaddr.IPv4([high >> 8, high & 0xff, low >> 8, low & 0xff]);\n };\n\n // Returns the address in expanded format with all zeroes included, like\n // 2001:db8:8:66:0:0:0:1\n //\n // Deprecated: use toFixedLengthString() instead.\n IPv6.prototype.toNormalizedString = function () {\n const addr = ((function () {\n const results = [];\n\n for (let i = 0; i < this.parts.length; i++) {\n results.push(this.parts[i].toString(16));\n }\n\n return results;\n }).call(this)).join(':');\n\n let suffix = '';\n\n if (this.zoneId) {\n suffix = `%${this.zoneId}`;\n }\n\n return addr + suffix;\n };\n\n // Returns the address in compact, human-readable format like\n // 2001:db8:8:66::1\n // in line with RFC 5952 (see https://tools.ietf.org/html/rfc5952#section-4)\n IPv6.prototype.toRFC5952String = function () {\n const regex = /((^|:)(0(:|$)){2,})/g;\n const string = this.toNormalizedString();\n let bestMatchIndex = 0;\n let bestMatchLength = -1;\n let match;\n\n while ((match = regex.exec(string))) {\n if (match[0].length > bestMatchLength) {\n bestMatchIndex = match.index;\n bestMatchLength = match[0].length;\n }\n }\n\n if (bestMatchLength < 0) {\n return string;\n }\n\n return `${string.substring(0, bestMatchIndex)}::${string.substring(bestMatchIndex + bestMatchLength)}`;\n };\n\n // Returns the address in compact, human-readable format like\n // 2001:db8:8:66::1\n // Calls toRFC5952String under the hood.\n IPv6.prototype.toString = function () {\n return this.toRFC5952String();\n };\n\n return IPv6;\n\n })();\n\n // A utility function to return broadcast address given the IPv6 interface and prefix length in CIDR notation\n ipaddr.IPv6.broadcastAddressFromCIDR = function (string) {\n try {\n const cidr = this.parseCIDR(string);\n const ipInterfaceOctets = cidr[0].toByteArray();\n const subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray();\n const octets = [];\n let i = 0;\n while (i < 16) {\n // Broadcast address is bitwise OR between ip interface and inverted mask\n octets.push(parseInt(ipInterfaceOctets[i], 10) | parseInt(subnetMaskOctets[i], 10) ^ 255);\n i++;\n }\n\n return new this(octets);\n } catch (e) {\n throw new Error(`ipaddr: the address does not have IPv6 CIDR format (${e})`);\n }\n };\n\n // Checks if a given string is formatted like IPv6 address.\n ipaddr.IPv6.isIPv6 = function (string) {\n return this.parser(string) !== null;\n };\n\n // Checks to see if string is a valid IPv6 Address\n ipaddr.IPv6.isValid = function (string) {\n\n // Since IPv6.isValid is always called first, this shortcut\n // provides a substantial performance gain.\n if (typeof string === 'string' && string.indexOf(':') === -1) {\n return false;\n }\n\n try {\n const addr = this.parser(string);\n new this(addr.parts, addr.zoneId);\n return true;\n } catch (e) {\n return false;\n }\n };\n\n // A utility function to return network address given the IPv6 interface and prefix length in CIDR notation\n ipaddr.IPv6.networkAddressFromCIDR = function (string) {\n let cidr, i, ipInterfaceOctets, octets, subnetMaskOctets;\n\n try {\n cidr = this.parseCIDR(string);\n ipInterfaceOctets = cidr[0].toByteArray();\n subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray();\n octets = [];\n i = 0;\n while (i < 16) {\n // Network address is bitwise AND between ip interface and mask\n octets.push(parseInt(ipInterfaceOctets[i], 10) & parseInt(subnetMaskOctets[i], 10));\n i++;\n }\n\n return new this(octets);\n } catch (e) {\n throw new Error(`ipaddr: the address does not have IPv6 CIDR format (${e})`);\n }\n };\n\n // Tries to parse and validate a string with IPv6 address.\n // Throws an error if it fails.\n ipaddr.IPv6.parse = function (string) {\n const addr = this.parser(string);\n\n if (addr.parts === null) {\n throw new Error('ipaddr: string is not formatted like an IPv6 Address');\n }\n\n return new this(addr.parts, addr.zoneId);\n };\n\n ipaddr.IPv6.parseCIDR = function (string) {\n let maskLength, match, parsed;\n\n if ((match = string.match(/^(.+)\\/(\\d+)$/))) {\n maskLength = parseInt(match[2]);\n if (maskLength >= 0 && maskLength <= 128) {\n parsed = [this.parse(match[1]), maskLength];\n Object.defineProperty(parsed, 'toString', {\n value: function () {\n return this.join('/');\n }\n });\n return parsed;\n }\n }\n\n throw new Error('ipaddr: string is not formatted like an IPv6 CIDR range');\n };\n\n // Parse an IPv6 address.\n ipaddr.IPv6.parser = function (string) {\n let addr, i, match, octet, octets, zoneId;\n\n if ((match = string.match(ipv6Regexes.deprecatedTransitional))) {\n return this.parser(`::ffff:${match[1]}`);\n }\n if (ipv6Regexes.native.test(string)) {\n return expandIPv6(string, 8);\n }\n if ((match = string.match(ipv6Regexes.transitional))) {\n zoneId = match[6] || '';\n addr = expandIPv6(match[1].slice(0, -1) + zoneId, 6);\n if (addr.parts) {\n octets = [\n parseInt(match[2]),\n parseInt(match[3]),\n parseInt(match[4]),\n parseInt(match[5])\n ];\n for (i = 0; i < octets.length; i++) {\n octet = octets[i];\n if (!((0 <= octet && octet <= 255))) {\n return null;\n }\n }\n\n addr.parts.push(octets[0] << 8 | octets[1]);\n addr.parts.push(octets[2] << 8 | octets[3]);\n return {\n parts: addr.parts,\n zoneId: addr.zoneId\n };\n }\n }\n\n return null;\n };\n\n // A utility function to return subnet mask in IPv6 format given the prefix length\n ipaddr.IPv6.subnetMaskFromPrefixLength = function (prefix) {\n prefix = parseInt(prefix);\n if (prefix < 0 || prefix > 128) {\n throw new Error('ipaddr: invalid IPv6 prefix length');\n }\n\n const octets = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n let j = 0;\n const filledOctetCount = Math.floor(prefix / 8);\n\n while (j < filledOctetCount) {\n octets[j] = 255;\n j++;\n }\n\n if (filledOctetCount < 16) {\n octets[filledOctetCount] = Math.pow(2, prefix % 8) - 1 << 8 - (prefix % 8);\n }\n\n return new this(octets);\n };\n\n // Try to parse an array in network order (MSB first) for IPv4 and IPv6\n ipaddr.fromByteArray = function (bytes) {\n const length = bytes.length;\n\n if (length === 4) {\n return new ipaddr.IPv4(bytes);\n } else if (length === 16) {\n return new ipaddr.IPv6(bytes);\n } else {\n throw new Error('ipaddr: the binary input is neither an IPv6 nor IPv4 address');\n }\n };\n\n // Checks if the address is valid IP address\n ipaddr.isValid = function (string) {\n return ipaddr.IPv6.isValid(string) || ipaddr.IPv4.isValid(string);\n };\n\n\n // Attempts to parse an IP Address, first through IPv6 then IPv4.\n // Throws an error if it could not be parsed.\n ipaddr.parse = function (string) {\n if (ipaddr.IPv6.isValid(string)) {\n return ipaddr.IPv6.parse(string);\n } else if (ipaddr.IPv4.isValid(string)) {\n return ipaddr.IPv4.parse(string);\n } else {\n throw new Error('ipaddr: the address has neither IPv6 nor IPv4 format');\n }\n };\n\n // Attempt to parse CIDR notation, first through IPv6 then IPv4.\n // Throws an error if it could not be parsed.\n ipaddr.parseCIDR = function (string) {\n try {\n return ipaddr.IPv6.parseCIDR(string);\n } catch (e) {\n try {\n return ipaddr.IPv4.parseCIDR(string);\n } catch (e2) {\n throw new Error('ipaddr: the address has neither IPv6 nor IPv4 CIDR format');\n }\n }\n };\n\n // Parse an address and return plain IPv4 address if it is an IPv4-mapped address\n ipaddr.process = function (string) {\n const addr = this.parse(string);\n\n if (addr.kind() === 'ipv6' && addr.isIPv4MappedAddress()) {\n return addr.toIPv4Address();\n } else {\n return addr;\n }\n };\n\n // An utility function to ease named range matching. See examples below.\n // rangeList can contain both IPv4 and IPv6 subnet entries and will not throw errors\n // on matching IPv4 addresses to IPv6 ranges or vice versa.\n ipaddr.subnetMatch = function (address, rangeList, defaultName) {\n let i, rangeName, rangeSubnets, subnet;\n\n if (defaultName === undefined || defaultName === null) {\n defaultName = 'unicast';\n }\n\n for (rangeName in rangeList) {\n if (Object.prototype.hasOwnProperty.call(rangeList, rangeName)) {\n rangeSubnets = rangeList[rangeName];\n // ECMA5 Array.isArray isn't available everywhere\n if (rangeSubnets[0] && !(rangeSubnets[0] instanceof Array)) {\n rangeSubnets = [rangeSubnets];\n }\n\n for (i = 0; i < rangeSubnets.length; i++) {\n subnet = rangeSubnets[i];\n if (address.kind() === subnet[0].kind() && address.match.apply(address, subnet)) {\n return rangeName;\n }\n }\n }\n }\n\n return defaultName;\n };\n\n // Export for both the CommonJS and browser-like environment\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = ipaddr;\n\n } else {\n root.ipaddr = ipaddr;\n }\n\n}(this));\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7F]/; // Note: U+007F DEL is excluded too.\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, callback) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = callback(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {String} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(domain, callback) {\n\tconst parts = domain.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tdomain = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tdomain = domain.replace(regexSeparators, '\\x2E');\n\tconst labels = domain.split('.');\n\tconst encoded = map(labels, callback).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = codePoints => String.fromCodePoint(...codePoints);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint >= 0x30 && codePoint < 0x3A) {\n\t\treturn 26 + (codePoint - 0x30);\n\t}\n\tif (codePoint >= 0x41 && codePoint < 0x5B) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint >= 0x61 && codePoint < 0x7B) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tconst oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\t\t\tif (digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tconst inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tconst basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue === n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.3.1',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport { ucs2decode, ucs2encode, decode, encode, toASCII, toUnicode };\nexport default punycode;\n","const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nconst rotr32L = (h, _l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nexport { fromBig, split, toBig, shrSH, shrSL, rotrSH, rotrSL, rotrBH, rotrBL, rotr32H, rotr32L, rotlSH, rotlSL, rotlBH, rotlBL, add, add3L, add3H, add4L, add4H, add5H, add5L, };\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","import { SHA2 } from './_sha2.js';\nimport u64 from './_u64.js';\nimport { wrapConstructor } from './utils.js';\n// Round contants (first 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409):\n// prettier-ignore\nconst [SHA512_Kh, SHA512_Kl] = /* @__PURE__ */ (() => u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\n// Temporary buffer, not used to store anything between runs\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\nexport class SHA512 extends SHA2 {\n constructor() {\n super(128, 64, 16, false);\n // We cannot use array here since array allows indexing by variable which means optimizer/compiler cannot use registers.\n // Also looks cleaner and easier to verify with spec.\n // Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x6a09e667 | 0;\n this.Al = 0xf3bcc908 | 0;\n this.Bh = 0xbb67ae85 | 0;\n this.Bl = 0x84caa73b | 0;\n this.Ch = 0x3c6ef372 | 0;\n this.Cl = 0xfe94f82b | 0;\n this.Dh = 0xa54ff53a | 0;\n this.Dl = 0x5f1d36f1 | 0;\n this.Eh = 0x510e527f | 0;\n this.El = 0xade682d1 | 0;\n this.Fh = 0x9b05688c | 0;\n this.Fl = 0x2b3e6c1f | 0;\n this.Gh = 0x1f83d9ab | 0;\n this.Gl = 0xfb41bd6b | 0;\n this.Hh = 0x5be0cd19 | 0;\n this.Hl = 0x137e2179 | 0;\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n SHA512_W_H.fill(0);\n SHA512_W_L.fill(0);\n }\n destroy() {\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\nclass SHA512_224 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x8c3d37c8 | 0;\n this.Al = 0x19544da2 | 0;\n this.Bh = 0x73e19966 | 0;\n this.Bl = 0x89dcd4d6 | 0;\n this.Ch = 0x1dfab7ae | 0;\n this.Cl = 0x32ff9c82 | 0;\n this.Dh = 0x679dd514 | 0;\n this.Dl = 0x582f9fcf | 0;\n this.Eh = 0x0f6d2b69 | 0;\n this.El = 0x7bd44da8 | 0;\n this.Fh = 0x77e36f73 | 0;\n this.Fl = 0x04c48942 | 0;\n this.Gh = 0x3f9d85a8 | 0;\n this.Gl = 0x6a1d36c8 | 0;\n this.Hh = 0x1112e6ad | 0;\n this.Hl = 0x91d692a1 | 0;\n this.outputLen = 28;\n }\n}\nclass SHA512_256 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x22312194 | 0;\n this.Al = 0xfc2bf72c | 0;\n this.Bh = 0x9f555fa3 | 0;\n this.Bl = 0xc84c64c2 | 0;\n this.Ch = 0x2393b86b | 0;\n this.Cl = 0x6f53b151 | 0;\n this.Dh = 0x96387719 | 0;\n this.Dl = 0x5940eabd | 0;\n this.Eh = 0x96283ee2 | 0;\n this.El = 0xa88effe3 | 0;\n this.Fh = 0xbe5e1e25 | 0;\n this.Fl = 0x53863992 | 0;\n this.Gh = 0x2b0199fc | 0;\n this.Gl = 0x2c85b8aa | 0;\n this.Hh = 0x0eb72ddc | 0;\n this.Hl = 0x81c52ca2 | 0;\n this.outputLen = 32;\n }\n}\nclass SHA384 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0xcbbb9d5d | 0;\n this.Al = 0xc1059ed8 | 0;\n this.Bh = 0x629a292a | 0;\n this.Bl = 0x367cd507 | 0;\n this.Ch = 0x9159015a | 0;\n this.Cl = 0x3070dd17 | 0;\n this.Dh = 0x152fecd8 | 0;\n this.Dl = 0xf70e5939 | 0;\n this.Eh = 0x67332667 | 0;\n this.El = 0xffc00b31 | 0;\n this.Fh = 0x8eb44a87 | 0;\n this.Fl = 0x68581511 | 0;\n this.Gh = 0xdb0c2e0d | 0;\n this.Gl = 0x64f98fa7 | 0;\n this.Hh = 0x47b5481d | 0;\n this.Hl = 0xbefa4fa4 | 0;\n this.outputLen = 48;\n }\n}\nexport const sha512 = /* @__PURE__ */ wrapConstructor(() => new SHA512());\nexport const sha512_224 = /* @__PURE__ */ wrapConstructor(() => new SHA512_224());\nexport const sha512_256 = /* @__PURE__ */ wrapConstructor(() => new SHA512_256());\nexport const sha384 = /* @__PURE__ */ wrapConstructor(() => new SHA384());\n//# sourceMappingURL=sha512.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// 100 lines of code in the file are duplicated from noble-hashes (utils).\n// This is OK: `abstract` directory does not use noble-hashes.\n// User may opt-in into using different hashing library. This way, noble-hashes\n// won't be included into their bundle.\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nexport function isBytes(a) {\n return (a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));\n}\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n if (!isBytes(bytes))\n throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\nexport function numberToHexUnpadded(num) {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n}\nexport function hexToNumber(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n // Big Endian\n return BigInt(hex === '' ? '0' : `0x${hex}`);\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, _A: 65, _F: 70, _a: 97, _f: 102 };\nfunction asciiToBase16(char) {\n if (char >= asciis._0 && char <= asciis._9)\n return char - asciis._0;\n if (char >= asciis._A && char <= asciis._F)\n return char - (asciis._A - 10);\n if (char >= asciis._a && char <= asciis._f)\n return char - (asciis._a - 10);\n return;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2;\n }\n return array;\n}\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\nexport function bytesToNumberLE(bytes) {\n if (!isBytes(bytes))\n throw new Error('Uint8Array expected');\n return hexToNumber(bytesToHex(Uint8Array.from(bytes).reverse()));\n}\nexport function numberToBytesBE(n, len) {\n return hexToBytes(n.toString(16).padStart(len * 2, '0'));\n}\nexport function numberToBytesLE(n, len) {\n return numberToBytesBE(n, len).reverse();\n}\n// Unpadded, rarely used\nexport function numberToVarBytesBE(n) {\n return hexToBytes(numberToHexUnpadded(n));\n}\n/**\n * Takes hex string or Uint8Array, converts to Uint8Array.\n * Validates output length.\n * Will throw error for other types.\n * @param title descriptive title for an error e.g. 'private key'\n * @param hex hex string or Uint8Array\n * @param expectedLength optional, will compare to result array's length\n * @returns\n */\nexport function ensureBytes(title, hex, expectedLength) {\n let res;\n if (typeof hex === 'string') {\n try {\n res = hexToBytes(hex);\n }\n catch (e) {\n throw new Error(`${title} must be valid hex string, got \"${hex}\". Cause: ${e}`);\n }\n }\n else if (isBytes(hex)) {\n // Uint8Array.from() instead of hash.slice() because node.js Buffer\n // is instance of Uint8Array, and its slice() creates **mutable** copy\n res = Uint8Array.from(hex);\n }\n else {\n throw new Error(`${title} must be hex string or Uint8Array`);\n }\n const len = res.length;\n if (typeof expectedLength === 'number' && len !== expectedLength)\n throw new Error(`${title} expected ${expectedLength} bytes, got ${len}`);\n return res;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n if (!isBytes(a))\n throw new Error('Uint8Array expected');\n sum += a.length;\n }\n let res = new Uint8Array(sum);\n let pad = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n// Compares 2 u8a-s in kinda constant time\nexport function equalBytes(a, b) {\n if (a.length !== b.length)\n return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++)\n diff |= a[i] ^ b[i];\n return diff === 0;\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n// Bit operations\n/**\n * Calculates amount of bits in a bigint.\n * Same as `n.toString(2).length`\n */\nexport function bitLen(n) {\n let len;\n for (len = 0; n > _0n; n >>= _1n, len += 1)\n ;\n return len;\n}\n/**\n * Gets single bit at position.\n * NOTE: first bit position is 0 (same as arrays)\n * Same as `!!+Array.from(n.toString(2)).reverse()[pos]`\n */\nexport function bitGet(n, pos) {\n return (n >> BigInt(pos)) & _1n;\n}\n/**\n * Sets single bit at position.\n */\nexport const bitSet = (n, pos, value) => {\n return n | ((value ? _1n : _0n) << BigInt(pos));\n};\n/**\n * Calculate mask for N bits. Not using ** operator with bigints because of old engines.\n * Same as BigInt(`0b${Array(i).fill('1').join('')}`)\n */\nexport const bitMask = (n) => (_2n << BigInt(n - 1)) - _1n;\n// DRBG\nconst u8n = (data) => new Uint8Array(data); // creates Uint8Array\nconst u8fr = (arr) => Uint8Array.from(arr); // another shortcut\n/**\n * Minimal HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n * @returns function that will call DRBG until 2nd arg returns something meaningful\n * @example\n * const drbg = createHmacDRBG<Key>(32, 32, hmac);\n * drbg(seed, bytesToKey); // bytesToKey must return Key or undefined\n */\nexport function createHmacDrbg(hashLen, qByteLen, hmacFn) {\n if (typeof hashLen !== 'number' || hashLen < 2)\n throw new Error('hashLen must be a number');\n if (typeof qByteLen !== 'number' || qByteLen < 2)\n throw new Error('qByteLen must be a number');\n if (typeof hmacFn !== 'function')\n throw new Error('hmacFn must be a function');\n // Step B, Step C: set hashLen to 8*ceil(hlen/8)\n let v = u8n(hashLen); // Minimal non-full-spec HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n let k = u8n(hashLen); // Steps B and C of RFC6979 3.2: set hashLen, in our case always same\n let i = 0; // Iterations counter, will throw when over 1000\n const reset = () => {\n v.fill(1);\n k.fill(0);\n i = 0;\n };\n const h = (...b) => hmacFn(k, v, ...b); // hmac(k)(v, ...values)\n const reseed = (seed = u8n()) => {\n // HMAC-DRBG reseed() function. Steps D-G\n k = h(u8fr([0x00]), seed); // k = hmac(k || v || 0x00 || seed)\n v = h(); // v = hmac(k || v)\n if (seed.length === 0)\n return;\n k = h(u8fr([0x01]), seed); // k = hmac(k || v || 0x01 || seed)\n v = h(); // v = hmac(k || v)\n };\n const gen = () => {\n // HMAC-DRBG generate() function\n if (i++ >= 1000)\n throw new Error('drbg: tried 1000 values');\n let len = 0;\n const out = [];\n while (len < qByteLen) {\n v = h();\n const sl = v.slice();\n out.push(sl);\n len += v.length;\n }\n return concatBytes(...out);\n };\n const genUntil = (seed, pred) => {\n reset();\n reseed(seed); // Steps D-G\n let res = undefined; // Step H: grind until k is in [1..n-1]\n while (!(res = pred(gen())))\n reseed();\n reset();\n return res;\n };\n return genUntil;\n}\n// Validating curves and fields\nconst validatorFns = {\n bigint: (val) => typeof val === 'bigint',\n function: (val) => typeof val === 'function',\n boolean: (val) => typeof val === 'boolean',\n string: (val) => typeof val === 'string',\n stringOrUint8Array: (val) => typeof val === 'string' || isBytes(val),\n isSafeInteger: (val) => Number.isSafeInteger(val),\n array: (val) => Array.isArray(val),\n field: (val, object) => object.Fp.isValid(val),\n hash: (val) => typeof val === 'function' && Number.isSafeInteger(val.outputLen),\n};\n// type Record<K extends string | number | symbol, T> = { [P in K]: T; }\nexport function validateObject(object, validators, optValidators = {}) {\n const checkField = (fieldName, type, isOptional) => {\n const checkVal = validatorFns[type];\n if (typeof checkVal !== 'function')\n throw new Error(`Invalid validator \"${type}\", expected function`);\n const val = object[fieldName];\n if (isOptional && val === undefined)\n return;\n if (!checkVal(val, object)) {\n throw new Error(`Invalid param ${String(fieldName)}=${val} (${typeof val}), expected ${type}`);\n }\n };\n for (const [fieldName, type] of Object.entries(validators))\n checkField(fieldName, type, false);\n for (const [fieldName, type] of Object.entries(optValidators))\n checkField(fieldName, type, true);\n return object;\n}\n// validate type tests\n// const o: { a: number; b: number; c: number } = { a: 1, b: 5, c: 6 };\n// const z0 = validateObject(o, { a: 'isSafeInteger' }, { c: 'bigint' }); // Ok!\n// // Should fail type-check\n// const z1 = validateObject(o, { a: 'tmp' }, { c: 'zz' });\n// const z2 = validateObject(o, { a: 'isSafeInteger' }, { c: 'zz' });\n// const z3 = validateObject(o, { test: 'boolean', z: 'bug' });\n// const z4 = validateObject(o, { a: 'boolean', z: 'bug' });\n//# sourceMappingURL=utils.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Utilities for modular arithmetics and finite fields\nimport { bitMask, numberToBytesBE, numberToBytesLE, bytesToNumberBE, bytesToNumberLE, ensureBytes, validateObject, } from './utils.js';\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3);\n// prettier-ignore\nconst _4n = BigInt(4), _5n = BigInt(5), _8n = BigInt(8);\n// prettier-ignore\nconst _9n = BigInt(9), _16n = BigInt(16);\n// Calculates a modulo b\nexport function mod(a, b) {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\n/**\n * Efficiently raise num to power and do modular division.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n * @example\n * pow(2n, 6n, 11n) // 64n % 11n == 9n\n */\n// TODO: use field version && remove\nexport function pow(num, power, modulo) {\n if (modulo <= _0n || power < _0n)\n throw new Error('Expected power/modulo > 0');\n if (modulo === _1n)\n return _0n;\n let res = _1n;\n while (power > _0n) {\n if (power & _1n)\n res = (res * num) % modulo;\n num = (num * num) % modulo;\n power >>= _1n;\n }\n return res;\n}\n// Does x ^ (2 ^ power) mod p. pow2(30, 4) == 30 ^ (2 ^ 4)\nexport function pow2(x, power, modulo) {\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= modulo;\n }\n return res;\n}\n// Inverses number over modulo\nexport function invert(number, modulo) {\n if (number === _0n || modulo <= _0n) {\n throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n }\n // Euclidean GCD https://brilliant.org/wiki/extended-euclidean-algorithm/\n // Fermat's little theorem \"CT-like\" version inv(n) = n^(m-2) mod m is 30x slower.\n let a = mod(number, modulo);\n let b = modulo;\n // prettier-ignore\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n // JIT applies optimization if those two lines follow each other\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n // prettier-ignore\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n)\n throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\n/**\n * Tonelli-Shanks square root search algorithm.\n * 1. https://eprint.iacr.org/2012/685.pdf (page 12)\n * 2. Square Roots from 1; 24, 51, 10 to Dan Shanks\n * Will start an infinite loop if field order P is not prime.\n * @param P field order\n * @returns function that takes field Fp (created from P) and number n\n */\nexport function tonelliShanks(P) {\n // Legendre constant: used to calculate Legendre symbol (a | p),\n // which denotes the value of a^((p-1)/2) (mod p).\n // (a | p) ≡ 1 if a is a square (mod p)\n // (a | p) ≡ -1 if a is not a square (mod p)\n // (a | p) ≡ 0 if a ≡ 0 (mod p)\n const legendreC = (P - _1n) / _2n;\n let Q, S, Z;\n // Step 1: By factoring out powers of 2 from p - 1,\n // find q and s such that p - 1 = q*(2^s) with q odd\n for (Q = P - _1n, S = 0; Q % _2n === _0n; Q /= _2n, S++)\n ;\n // Step 2: Select a non-square z such that (z | p) ≡ -1 and set c ≡ zq\n for (Z = _2n; Z < P && pow(Z, legendreC, P) !== P - _1n; Z++)\n ;\n // Fast-path\n if (S === 1) {\n const p1div4 = (P + _1n) / _4n;\n return function tonelliFast(Fp, n) {\n const root = Fp.pow(n, p1div4);\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n return root;\n };\n }\n // Slow-path\n const Q1div2 = (Q + _1n) / _2n;\n return function tonelliSlow(Fp, n) {\n // Step 0: Check that n is indeed a square: (n | p) should not be ≡ -1\n if (Fp.pow(n, legendreC) === Fp.neg(Fp.ONE))\n throw new Error('Cannot find square root');\n let r = S;\n // TODO: will fail at Fp2/etc\n let g = Fp.pow(Fp.mul(Fp.ONE, Z), Q); // will update both x and b\n let x = Fp.pow(n, Q1div2); // first guess at the square root\n let b = Fp.pow(n, Q); // first guess at the fudge factor\n while (!Fp.eql(b, Fp.ONE)) {\n if (Fp.eql(b, Fp.ZERO))\n return Fp.ZERO; // https://en.wikipedia.org/wiki/Tonelli%E2%80%93Shanks_algorithm (4. If t = 0, return r = 0)\n // Find m such b^(2^m)==1\n let m = 1;\n for (let t2 = Fp.sqr(b); m < r; m++) {\n if (Fp.eql(t2, Fp.ONE))\n break;\n t2 = Fp.sqr(t2); // t2 *= t2\n }\n // NOTE: r-m-1 can be bigger than 32, need to convert to bigint before shift, otherwise there will be overflow\n const ge = Fp.pow(g, _1n << BigInt(r - m - 1)); // ge = 2^(r-m-1)\n g = Fp.sqr(ge); // g = ge * ge\n x = Fp.mul(x, ge); // x *= ge\n b = Fp.mul(b, g); // b *= g\n r = m;\n }\n return x;\n };\n}\nexport function FpSqrt(P) {\n // NOTE: different algorithms can give different roots, it is up to user to decide which one they want.\n // For example there is FpSqrtOdd/FpSqrtEven to choice root based on oddness (used for hash-to-curve).\n // P ≡ 3 (mod 4)\n // √n = n^((P+1)/4)\n if (P % _4n === _3n) {\n // Not all roots possible!\n // const ORDER =\n // 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaabn;\n // const NUM = 72057594037927816n;\n const p1div4 = (P + _1n) / _4n;\n return function sqrt3mod4(Fp, n) {\n const root = Fp.pow(n, p1div4);\n // Throw if root**2 != n\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n return root;\n };\n }\n // Atkin algorithm for q ≡ 5 (mod 8), https://eprint.iacr.org/2012/685.pdf (page 10)\n if (P % _8n === _5n) {\n const c1 = (P - _5n) / _8n;\n return function sqrt5mod8(Fp, n) {\n const n2 = Fp.mul(n, _2n);\n const v = Fp.pow(n2, c1);\n const nv = Fp.mul(n, v);\n const i = Fp.mul(Fp.mul(nv, _2n), v);\n const root = Fp.mul(nv, Fp.sub(i, Fp.ONE));\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n return root;\n };\n }\n // P ≡ 9 (mod 16)\n if (P % _16n === _9n) {\n // NOTE: tonelli is too slow for bls-Fp2 calculations even on start\n // Means we cannot use sqrt for constants at all!\n //\n // const c1 = Fp.sqrt(Fp.negate(Fp.ONE)); // 1. c1 = sqrt(-1) in F, i.e., (c1^2) == -1 in F\n // const c2 = Fp.sqrt(c1); // 2. c2 = sqrt(c1) in F, i.e., (c2^2) == c1 in F\n // const c3 = Fp.sqrt(Fp.negate(c1)); // 3. c3 = sqrt(-c1) in F, i.e., (c3^2) == -c1 in F\n // const c4 = (P + _7n) / _16n; // 4. c4 = (q + 7) / 16 # Integer arithmetic\n // sqrt = (x) => {\n // let tv1 = Fp.pow(x, c4); // 1. tv1 = x^c4\n // let tv2 = Fp.mul(c1, tv1); // 2. tv2 = c1 * tv1\n // const tv3 = Fp.mul(c2, tv1); // 3. tv3 = c2 * tv1\n // let tv4 = Fp.mul(c3, tv1); // 4. tv4 = c3 * tv1\n // const e1 = Fp.equals(Fp.square(tv2), x); // 5. e1 = (tv2^2) == x\n // const e2 = Fp.equals(Fp.square(tv3), x); // 6. e2 = (tv3^2) == x\n // tv1 = Fp.cmov(tv1, tv2, e1); // 7. tv1 = CMOV(tv1, tv2, e1) # Select tv2 if (tv2^2) == x\n // tv2 = Fp.cmov(tv4, tv3, e2); // 8. tv2 = CMOV(tv4, tv3, e2) # Select tv3 if (tv3^2) == x\n // const e3 = Fp.equals(Fp.square(tv2), x); // 9. e3 = (tv2^2) == x\n // return Fp.cmov(tv1, tv2, e3); // 10. z = CMOV(tv1, tv2, e3) # Select the sqrt from tv1 and tv2\n // }\n }\n // Other cases: Tonelli-Shanks algorithm\n return tonelliShanks(P);\n}\n// Little-endian check for first LE bit (last BE bit);\nexport const isNegativeLE = (num, modulo) => (mod(num, modulo) & _1n) === _1n;\n// prettier-ignore\nconst FIELD_FIELDS = [\n 'create', 'isValid', 'is0', 'neg', 'inv', 'sqrt', 'sqr',\n 'eql', 'add', 'sub', 'mul', 'pow', 'div',\n 'addN', 'subN', 'mulN', 'sqrN'\n];\nexport function validateField(field) {\n const initial = {\n ORDER: 'bigint',\n MASK: 'bigint',\n BYTES: 'isSafeInteger',\n BITS: 'isSafeInteger',\n };\n const opts = FIELD_FIELDS.reduce((map, val) => {\n map[val] = 'function';\n return map;\n }, initial);\n return validateObject(field, opts);\n}\n// Generic field functions\n/**\n * Same as `pow` but for Fp: non-constant-time.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n */\nexport function FpPow(f, num, power) {\n // Should have same speed as pow for bigints\n // TODO: benchmark!\n if (power < _0n)\n throw new Error('Expected power > 0');\n if (power === _0n)\n return f.ONE;\n if (power === _1n)\n return num;\n let p = f.ONE;\n let d = num;\n while (power > _0n) {\n if (power & _1n)\n p = f.mul(p, d);\n d = f.sqr(d);\n power >>= _1n;\n }\n return p;\n}\n/**\n * Efficiently invert an array of Field elements.\n * `inv(0)` will return `undefined` here: make sure to throw an error.\n */\nexport function FpInvertBatch(f, nums) {\n const tmp = new Array(nums.length);\n // Walk from first to last, multiply them by each other MOD p\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (f.is0(num))\n return acc;\n tmp[i] = acc;\n return f.mul(acc, num);\n }, f.ONE);\n // Invert last element\n const inverted = f.inv(lastMultiplied);\n // Walk from last to first, multiply them by inverted each other MOD p\n nums.reduceRight((acc, num, i) => {\n if (f.is0(num))\n return acc;\n tmp[i] = f.mul(acc, tmp[i]);\n return f.mul(acc, num);\n }, inverted);\n return tmp;\n}\nexport function FpDiv(f, lhs, rhs) {\n return f.mul(lhs, typeof rhs === 'bigint' ? invert(rhs, f.ORDER) : f.inv(rhs));\n}\n// This function returns True whenever the value x is a square in the field F.\nexport function FpIsSquare(f) {\n const legendreConst = (f.ORDER - _1n) / _2n; // Integer arithmetic\n return (x) => {\n const p = f.pow(x, legendreConst);\n return f.eql(p, f.ZERO) || f.eql(p, f.ONE);\n };\n}\n// CURVE.n lengths\nexport function nLength(n, nBitLength) {\n // Bit size, byte size of CURVE.n\n const _nBitLength = nBitLength !== undefined ? nBitLength : n.toString(2).length;\n const nByteLength = Math.ceil(_nBitLength / 8);\n return { nBitLength: _nBitLength, nByteLength };\n}\n/**\n * Initializes a finite field over prime. **Non-primes are not supported.**\n * Do not init in loop: slow. Very fragile: always run a benchmark on a change.\n * Major performance optimizations:\n * * a) denormalized operations like mulN instead of mul\n * * b) same object shape: never add or remove keys\n * * c) Object.freeze\n * @param ORDER prime positive bigint\n * @param bitLen how many bits the field consumes\n * @param isLE (def: false) if encoding / decoding should be in little-endian\n * @param redef optional faster redefinitions of sqrt and other methods\n */\nexport function Field(ORDER, bitLen, isLE = false, redef = {}) {\n if (ORDER <= _0n)\n throw new Error(`Expected Field ORDER > 0, got ${ORDER}`);\n const { nBitLength: BITS, nByteLength: BYTES } = nLength(ORDER, bitLen);\n if (BYTES > 2048)\n throw new Error('Field lengths over 2048 bytes are not supported');\n const sqrtP = FpSqrt(ORDER);\n const f = Object.freeze({\n ORDER,\n BITS,\n BYTES,\n MASK: bitMask(BITS),\n ZERO: _0n,\n ONE: _1n,\n create: (num) => mod(num, ORDER),\n isValid: (num) => {\n if (typeof num !== 'bigint')\n throw new Error(`Invalid field element: expected bigint, got ${typeof num}`);\n return _0n <= num && num < ORDER; // 0 is valid element, but it's not invertible\n },\n is0: (num) => num === _0n,\n isOdd: (num) => (num & _1n) === _1n,\n neg: (num) => mod(-num, ORDER),\n eql: (lhs, rhs) => lhs === rhs,\n sqr: (num) => mod(num * num, ORDER),\n add: (lhs, rhs) => mod(lhs + rhs, ORDER),\n sub: (lhs, rhs) => mod(lhs - rhs, ORDER),\n mul: (lhs, rhs) => mod(lhs * rhs, ORDER),\n pow: (num, power) => FpPow(f, num, power),\n div: (lhs, rhs) => mod(lhs * invert(rhs, ORDER), ORDER),\n // Same as above, but doesn't normalize\n sqrN: (num) => num * num,\n addN: (lhs, rhs) => lhs + rhs,\n subN: (lhs, rhs) => lhs - rhs,\n mulN: (lhs, rhs) => lhs * rhs,\n inv: (num) => invert(num, ORDER),\n sqrt: redef.sqrt || ((n) => sqrtP(f, n)),\n invertBatch: (lst) => FpInvertBatch(f, lst),\n // TODO: do we really need constant cmov?\n // We don't have const-time bigints anyway, so probably will be not very useful\n cmov: (a, b, c) => (c ? b : a),\n toBytes: (num) => (isLE ? numberToBytesLE(num, BYTES) : numberToBytesBE(num, BYTES)),\n fromBytes: (bytes) => {\n if (bytes.length !== BYTES)\n throw new Error(`Fp.fromBytes: expected ${BYTES}, got ${bytes.length}`);\n return isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n },\n });\n return Object.freeze(f);\n}\nexport function FpSqrtOdd(Fp, elm) {\n if (!Fp.isOdd)\n throw new Error(`Field doesn't have isOdd`);\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? root : Fp.neg(root);\n}\nexport function FpSqrtEven(Fp, elm) {\n if (!Fp.isOdd)\n throw new Error(`Field doesn't have isOdd`);\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? Fp.neg(root) : root;\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Same as mapKeyToField, but accepts less bytes (40 instead of 48 for 32-byte field).\n * Which makes it slightly more biased, less secure.\n * @deprecated use mapKeyToField instead\n */\nexport function hashToPrivateScalar(hash, groupOrder, isLE = false) {\n hash = ensureBytes('privateHash', hash);\n const hashLen = hash.length;\n const minLen = nLength(groupOrder).nByteLength + 8;\n if (minLen < 24 || hashLen < minLen || hashLen > 1024)\n throw new Error(`hashToPrivateScalar: expected ${minLen}-1024 bytes of input, got ${hashLen}`);\n const num = isLE ? bytesToNumberLE(hash) : bytesToNumberBE(hash);\n return mod(num, groupOrder - _1n) + _1n;\n}\n/**\n * Returns total number of bytes consumed by the field element.\n * For example, 32 bytes for usual 256-bit weierstrass curve.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of field\n */\nexport function getFieldBytesLength(fieldOrder) {\n if (typeof fieldOrder !== 'bigint')\n throw new Error('field order must be bigint');\n const bitLength = fieldOrder.toString(2).length;\n return Math.ceil(bitLength / 8);\n}\n/**\n * Returns minimal amount of bytes that can be safely reduced\n * by field order.\n * Should be 2^-128 for 128-bit curve such as P256.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of target hash\n */\nexport function getMinHashLength(fieldOrder) {\n const length = getFieldBytesLength(fieldOrder);\n return length + Math.ceil(length / 2);\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Can take (n + n/2) or more bytes of uniform input e.g. from CSPRNG or KDF\n * and convert them into private scalar, with the modulo bias being negligible.\n * Needs at least 48 bytes of input for 32-byte private key.\n * https://research.kudelskisecurity.com/2020/07/28/the-definitive-guide-to-modulo-bias-and-how-to-avoid-it/\n * FIPS 186-5, A.2 https://csrc.nist.gov/publications/detail/fips/186/5/final\n * RFC 9380, https://www.rfc-editor.org/rfc/rfc9380#section-5\n * @param hash hash output from SHA3 or a similar function\n * @param groupOrder size of subgroup - (e.g. secp256k1.CURVE.n)\n * @param isLE interpret hash bytes as LE num\n * @returns valid private scalar\n */\nexport function mapHashToField(key, fieldOrder, isLE = false) {\n const len = key.length;\n const fieldLen = getFieldBytesLength(fieldOrder);\n const minLen = getMinHashLength(fieldOrder);\n // No small numbers: need to understand bias story. No huge numbers: easier to detect JS timings.\n if (len < 16 || len < minLen || len > 1024)\n throw new Error(`expected ${minLen}-1024 bytes of input, got ${len}`);\n const num = isLE ? bytesToNumberBE(key) : bytesToNumberLE(key);\n // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n const reduced = mod(num, fieldOrder - _1n) + _1n;\n return isLE ? numberToBytesLE(reduced, fieldLen) : numberToBytesBE(reduced, fieldLen);\n}\n//# sourceMappingURL=modular.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Abelian group utilities\nimport { validateField, nLength } from './modular.js';\nimport { validateObject } from './utils.js';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\n// Elliptic curve multiplication of Point by scalar. Fragile.\n// Scalars should always be less than curve order: this should be checked inside of a curve itself.\n// Creates precomputation tables for fast multiplication:\n// - private scalar is split by fixed size windows of W bits\n// - every window point is collected from window's table & added to accumulator\n// - since windows are different, same point inside tables won't be accessed more than once per calc\n// - each multiplication is 'Math.ceil(CURVE_ORDER / 𝑊) + 1' point additions (fixed for any scalar)\n// - +1 window is neccessary for wNAF\n// - wNAF reduces table size: 2x less memory + 2x faster generation, but 10% slower multiplication\n// TODO: Research returning 2d JS array of windows, instead of a single window. This would allow\n// windows to be in different memory locations\nexport function wNAF(c, bits) {\n const constTimeNegate = (condition, item) => {\n const neg = item.negate();\n return condition ? neg : item;\n };\n const opts = (W) => {\n const windows = Math.ceil(bits / W) + 1; // +1, because\n const windowSize = 2 ** (W - 1); // -1 because we skip zero\n return { windows, windowSize };\n };\n return {\n constTimeNegate,\n // non-const time multiplication ladder\n unsafeLadder(elm, n) {\n let p = c.ZERO;\n let d = elm;\n while (n > _0n) {\n if (n & _1n)\n p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n },\n /**\n * Creates a wNAF precomputation window. Used for caching.\n * Default window size is set by `utils.precompute()` and is equal to 8.\n * Number of precomputed points depends on the curve size:\n * 2^(𝑊−1) * (Math.ceil(𝑛 / 𝑊) + 1), where:\n * - 𝑊 is the window size\n * - 𝑛 is the bitlength of the curve order.\n * For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.\n * @returns precomputed point tables flattened to a single array\n */\n precomputeWindow(elm, W) {\n const { windows, windowSize } = opts(W);\n const points = [];\n let p = elm;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n // =1, because we skip zero\n for (let i = 1; i < windowSize; i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n },\n /**\n * Implements ec multiplication using precomputed tables and w-ary non-adjacent form.\n * @param W window size\n * @param precomputes precomputed tables\n * @param n scalar (we don't check here, but should be less than curve order)\n * @returns real and fake (for const-time) points\n */\n wNAF(W, precomputes, n) {\n // TODO: maybe check that scalar is less than group order? wNAF behavious is undefined otherwise\n // But need to carefully remove other checks before wNAF. ORDER == bits here\n const { windows, windowSize } = opts(W);\n let p = c.ZERO;\n let f = c.BASE;\n const mask = BigInt(2 ** W - 1); // Create mask with W ones: 0b1111 for W=4 etc.\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n // Extract W bits.\n let wbits = Number(n & mask);\n // Shift number by W bits.\n n >>= shiftBy;\n // If the bits are bigger than max size, we'll split those.\n // +224 => 256 - 32\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n // This code was first written with assumption that 'f' and 'p' will never be infinity point:\n // since each addition is multiplied by 2 ** W, it cannot cancel each other. However,\n // there is negate now: it is possible that negated element from low value\n // would be the same as high element, which will create carry into next window.\n // It's not obvious how this can fail, but still worth investigating later.\n // Check if we're onto Zero point.\n // Add random point inside current window to f.\n const offset1 = offset;\n const offset2 = offset + Math.abs(wbits) - 1; // -1 because we skip zero\n const cond1 = window % 2 !== 0;\n const cond2 = wbits < 0;\n if (wbits === 0) {\n // The most important part for const-time getPublicKey\n f = f.add(constTimeNegate(cond1, precomputes[offset1]));\n }\n else {\n p = p.add(constTimeNegate(cond2, precomputes[offset2]));\n }\n }\n // JIT-compiler should not eliminate f here, since it will later be used in normalizeZ()\n // Even if the variable is still unused, there are some checks which will\n // throw an exception, so compiler needs to prove they won't happen, which is hard.\n // At this point there is a way to F be infinity-point even if p is not,\n // which makes it less const-time: around 1 bigint multiply.\n return { p, f };\n },\n wNAFCached(P, precomputesMap, n, transform) {\n // @ts-ignore\n const W = P._WINDOW_SIZE || 1;\n // Calculate precomputes on a first run, reuse them after\n let comp = precomputesMap.get(P);\n if (!comp) {\n comp = this.precomputeWindow(P, W);\n if (W !== 1) {\n precomputesMap.set(P, transform(comp));\n }\n }\n return this.wNAF(W, comp, n);\n },\n };\n}\nexport function validateBasic(curve) {\n validateField(curve.Fp);\n validateObject(curve, {\n n: 'bigint',\n h: 'bigint',\n Gx: 'field',\n Gy: 'field',\n }, {\n nBitLength: 'isSafeInteger',\n nByteLength: 'isSafeInteger',\n });\n // Set defaults\n return Object.freeze({\n ...nLength(curve.n, curve.nBitLength),\n ...curve,\n ...{ p: curve.Fp.ORDER },\n });\n}\n//# sourceMappingURL=curve.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Twisted Edwards curve. The formula is: ax² + y² = 1 + dx²y²\nimport { mod } from './modular.js';\nimport * as ut from './utils.js';\nimport { ensureBytes } from './utils.js';\nimport { wNAF, validateBasic } from './curve.js';\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _8n = BigInt(8);\n// verification rule is either zip215 or rfc8032 / nist186-5. Consult fromHex:\nconst VERIFY_DEFAULT = { zip215: true };\nfunction validateOpts(curve) {\n const opts = validateBasic(curve);\n ut.validateObject(curve, {\n hash: 'function',\n a: 'bigint',\n d: 'bigint',\n randomBytes: 'function',\n }, {\n adjustScalarBytes: 'function',\n domain: 'function',\n uvRatio: 'function',\n mapToCurve: 'function',\n });\n // Set defaults\n return Object.freeze({ ...opts });\n}\n// It is not generic twisted curve for now, but ed25519/ed448 generic implementation\nexport function twistedEdwards(curveDef) {\n const CURVE = validateOpts(curveDef);\n const { Fp, n: CURVE_ORDER, prehash: prehash, hash: cHash, randomBytes, nByteLength, h: cofactor, } = CURVE;\n const MASK = _2n << (BigInt(nByteLength * 8) - _1n);\n const modP = Fp.create; // Function overrides\n // sqrt(u/v)\n const uvRatio = CURVE.uvRatio ||\n ((u, v) => {\n try {\n return { isValid: true, value: Fp.sqrt(u * Fp.inv(v)) };\n }\n catch (e) {\n return { isValid: false, value: _0n };\n }\n });\n const adjustScalarBytes = CURVE.adjustScalarBytes || ((bytes) => bytes); // NOOP\n const domain = CURVE.domain ||\n ((data, ctx, phflag) => {\n if (ctx.length || phflag)\n throw new Error('Contexts/pre-hash are not supported');\n return data;\n }); // NOOP\n const inBig = (n) => typeof n === 'bigint' && _0n < n; // n in [1..]\n const inRange = (n, max) => inBig(n) && inBig(max) && n < max; // n in [1..max-1]\n const in0MaskRange = (n) => n === _0n || inRange(n, MASK); // n in [0..MASK-1]\n function assertInRange(n, max) {\n // n in [1..max-1]\n if (inRange(n, max))\n return n;\n throw new Error(`Expected valid scalar < ${max}, got ${typeof n} ${n}`);\n }\n function assertGE0(n) {\n // n in [0..CURVE_ORDER-1]\n return n === _0n ? n : assertInRange(n, CURVE_ORDER); // GE = prime subgroup, not full group\n }\n const pointPrecomputes = new Map();\n function isPoint(other) {\n if (!(other instanceof Point))\n throw new Error('ExtendedPoint expected');\n }\n // Extended Point works in extended coordinates: (x, y, z, t) ∋ (x=x/z, y=y/z, t=xy).\n // https://en.wikipedia.org/wiki/Twisted_Edwards_curve#Extended_coordinates\n class Point {\n constructor(ex, ey, ez, et) {\n this.ex = ex;\n this.ey = ey;\n this.ez = ez;\n this.et = et;\n if (!in0MaskRange(ex))\n throw new Error('x required');\n if (!in0MaskRange(ey))\n throw new Error('y required');\n if (!in0MaskRange(ez))\n throw new Error('z required');\n if (!in0MaskRange(et))\n throw new Error('t required');\n }\n get x() {\n return this.toAffine().x;\n }\n get y() {\n return this.toAffine().y;\n }\n static fromAffine(p) {\n if (p instanceof Point)\n throw new Error('extended point not allowed');\n const { x, y } = p || {};\n if (!in0MaskRange(x) || !in0MaskRange(y))\n throw new Error('invalid affine point');\n return new Point(x, y, _1n, modP(x * y));\n }\n static normalizeZ(points) {\n const toInv = Fp.invertBatch(points.map((p) => p.ez));\n return points.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n }\n // \"Private method\", don't use it directly\n _setWindowSize(windowSize) {\n this._WINDOW_SIZE = windowSize;\n pointPrecomputes.delete(this);\n }\n // Not required for fromHex(), which always creates valid points.\n // Could be useful for fromAffine().\n assertValidity() {\n const { a, d } = CURVE;\n if (this.is0())\n throw new Error('bad point: ZERO'); // TODO: optimize, with vars below?\n // Equation in affine coordinates: ax² + y² = 1 + dx²y²\n // Equation in projective coordinates (X/Z, Y/Z, Z): (aX² + Y²)Z² = Z⁴ + dX²Y²\n const { ex: X, ey: Y, ez: Z, et: T } = this;\n const X2 = modP(X * X); // X²\n const Y2 = modP(Y * Y); // Y²\n const Z2 = modP(Z * Z); // Z²\n const Z4 = modP(Z2 * Z2); // Z⁴\n const aX2 = modP(X2 * a); // aX²\n const left = modP(Z2 * modP(aX2 + Y2)); // (aX² + Y²)Z²\n const right = modP(Z4 + modP(d * modP(X2 * Y2))); // Z⁴ + dX²Y²\n if (left !== right)\n throw new Error('bad point: equation left != right (1)');\n // In Extended coordinates we also have T, which is x*y=T/Z: check X*Y == Z*T\n const XY = modP(X * Y);\n const ZT = modP(Z * T);\n if (XY !== ZT)\n throw new Error('bad point: equation left != right (2)');\n }\n // Compare one point to another.\n equals(other) {\n isPoint(other);\n const { ex: X1, ey: Y1, ez: Z1 } = this;\n const { ex: X2, ey: Y2, ez: Z2 } = other;\n const X1Z2 = modP(X1 * Z2);\n const X2Z1 = modP(X2 * Z1);\n const Y1Z2 = modP(Y1 * Z2);\n const Y2Z1 = modP(Y2 * Z1);\n return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n }\n is0() {\n return this.equals(Point.ZERO);\n }\n negate() {\n // Flips point sign to a negative one (-x, y in affine coords)\n return new Point(modP(-this.ex), this.ey, this.ez, modP(-this.et));\n }\n // Fast algo for doubling Extended Point.\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd\n // Cost: 4M + 4S + 1*a + 6add + 1*2.\n double() {\n const { a } = CURVE;\n const { ex: X1, ey: Y1, ez: Z1 } = this;\n const A = modP(X1 * X1); // A = X12\n const B = modP(Y1 * Y1); // B = Y12\n const C = modP(_2n * modP(Z1 * Z1)); // C = 2*Z12\n const D = modP(a * A); // D = a*A\n const x1y1 = X1 + Y1;\n const E = modP(modP(x1y1 * x1y1) - A - B); // E = (X1+Y1)2-A-B\n const G = D + B; // G = D+B\n const F = G - C; // F = G-C\n const H = D - B; // H = D-B\n const X3 = modP(E * F); // X3 = E*F\n const Y3 = modP(G * H); // Y3 = G*H\n const T3 = modP(E * H); // T3 = E*H\n const Z3 = modP(F * G); // Z3 = F*G\n return new Point(X3, Y3, Z3, T3);\n }\n // Fast algo for adding 2 Extended Points.\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#addition-add-2008-hwcd\n // Cost: 9M + 1*a + 1*d + 7add.\n add(other) {\n isPoint(other);\n const { a, d } = CURVE;\n const { ex: X1, ey: Y1, ez: Z1, et: T1 } = this;\n const { ex: X2, ey: Y2, ez: Z2, et: T2 } = other;\n // Faster algo for adding 2 Extended Points when curve's a=-1.\n // http://hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html#addition-add-2008-hwcd-4\n // Cost: 8M + 8add + 2*2.\n // Note: It does not check whether the `other` point is valid.\n if (a === BigInt(-1)) {\n const A = modP((Y1 - X1) * (Y2 + X2));\n const B = modP((Y1 + X1) * (Y2 - X2));\n const F = modP(B - A);\n if (F === _0n)\n return this.double(); // Same point. Tests say it doesn't affect timing\n const C = modP(Z1 * _2n * T2);\n const D = modP(T1 * _2n * Z2);\n const E = D + C;\n const G = B + A;\n const H = D - C;\n const X3 = modP(E * F);\n const Y3 = modP(G * H);\n const T3 = modP(E * H);\n const Z3 = modP(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n const A = modP(X1 * X2); // A = X1*X2\n const B = modP(Y1 * Y2); // B = Y1*Y2\n const C = modP(T1 * d * T2); // C = T1*d*T2\n const D = modP(Z1 * Z2); // D = Z1*Z2\n const E = modP((X1 + Y1) * (X2 + Y2) - A - B); // E = (X1+Y1)*(X2+Y2)-A-B\n const F = D - C; // F = D-C\n const G = D + C; // G = D+C\n const H = modP(B - a * A); // H = B-a*A\n const X3 = modP(E * F); // X3 = E*F\n const Y3 = modP(G * H); // Y3 = G*H\n const T3 = modP(E * H); // T3 = E*H\n const Z3 = modP(F * G); // Z3 = F*G\n return new Point(X3, Y3, Z3, T3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n wNAF(n) {\n return wnaf.wNAFCached(this, pointPrecomputes, n, Point.normalizeZ);\n }\n // Constant-time multiplication.\n multiply(scalar) {\n const { p, f } = this.wNAF(assertInRange(scalar, CURVE_ORDER));\n return Point.normalizeZ([p, f])[0];\n }\n // Non-constant-time multiplication. Uses double-and-add algorithm.\n // It's faster, but should only be used when you don't care about\n // an exposed private key e.g. sig verification.\n // Does NOT allow scalars higher than CURVE.n.\n multiplyUnsafe(scalar) {\n let n = assertGE0(scalar); // 0 <= scalar < CURVE.n\n if (n === _0n)\n return I;\n if (this.equals(I) || n === _1n)\n return this;\n if (this.equals(G))\n return this.wNAF(n).p;\n return wnaf.unsafeLadder(this, n);\n }\n // Checks if point is of small order.\n // If you add something to small order point, you will have \"dirty\"\n // point with torsion component.\n // Multiplies point by cofactor and checks if the result is 0.\n isSmallOrder() {\n return this.multiplyUnsafe(cofactor).is0();\n }\n // Multiplies point by curve order and checks if the result is 0.\n // Returns `false` is the point is dirty.\n isTorsionFree() {\n return wnaf.unsafeLadder(this, CURVE_ORDER).is0();\n }\n // Converts Extended point to default (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n toAffine(iz) {\n const { ex: x, ey: y, ez: z } = this;\n const is0 = this.is0();\n if (iz == null)\n iz = is0 ? _8n : Fp.inv(z); // 8 was chosen arbitrarily\n const ax = modP(x * iz);\n const ay = modP(y * iz);\n const zz = modP(z * iz);\n if (is0)\n return { x: _0n, y: _1n };\n if (zz !== _1n)\n throw new Error('invZ was invalid');\n return { x: ax, y: ay };\n }\n clearCofactor() {\n const { h: cofactor } = CURVE;\n if (cofactor === _1n)\n return this;\n return this.multiplyUnsafe(cofactor);\n }\n // Converts hash string or Uint8Array to Point.\n // Uses algo from RFC8032 5.1.3.\n static fromHex(hex, zip215 = false) {\n const { d, a } = CURVE;\n const len = Fp.BYTES;\n hex = ensureBytes('pointHex', hex, len); // copy hex to a new array\n const normed = hex.slice(); // copy again, we'll manipulate it\n const lastByte = hex[len - 1]; // select last byte\n normed[len - 1] = lastByte & ~0x80; // clear last bit\n const y = ut.bytesToNumberLE(normed);\n if (y === _0n) {\n // y=0 is allowed\n }\n else {\n // RFC8032 prohibits >= p, but ZIP215 doesn't\n if (zip215)\n assertInRange(y, MASK); // zip215=true [1..P-1] (2^255-19-1 for ed25519)\n else\n assertInRange(y, Fp.ORDER); // zip215=false [1..MASK-1] (2^256-1 for ed25519)\n }\n // Ed25519: x² = (y²-1)/(dy²+1) mod p. Ed448: x² = (y²-1)/(dy²-1) mod p. Generic case:\n // ax²+y²=1+dx²y² => y²-1=dx²y²-ax² => y²-1=x²(dy²-a) => x²=(y²-1)/(dy²-a)\n const y2 = modP(y * y); // denominator is always non-0 mod p.\n const u = modP(y2 - _1n); // u = y² - 1\n const v = modP(d * y2 - a); // v = d y² + 1.\n let { isValid, value: x } = uvRatio(u, v); // √(u/v)\n if (!isValid)\n throw new Error('Point.fromHex: invalid y coordinate');\n const isXOdd = (x & _1n) === _1n; // There are 2 square roots. Use x_0 bit to select proper\n const isLastByteOdd = (lastByte & 0x80) !== 0; // x_0, last bit\n if (!zip215 && x === _0n && isLastByteOdd)\n // if x=0 and x_0 = 1, fail\n throw new Error('Point.fromHex: x=0 and x_0=1');\n if (isLastByteOdd !== isXOdd)\n x = modP(-x); // if x_0 != x mod 2, set x = p-x\n return Point.fromAffine({ x, y });\n }\n static fromPrivateKey(privKey) {\n return getExtendedPublicKey(privKey).point;\n }\n toRawBytes() {\n const { x, y } = this.toAffine();\n const bytes = ut.numberToBytesLE(y, Fp.BYTES); // each y has 2 x values (x, -y)\n bytes[bytes.length - 1] |= x & _1n ? 0x80 : 0; // when compressing, it's enough to store y\n return bytes; // and use the last byte to encode sign of x\n }\n toHex() {\n return ut.bytesToHex(this.toRawBytes()); // Same as toRawBytes, but returns string.\n }\n }\n Point.BASE = new Point(CURVE.Gx, CURVE.Gy, _1n, modP(CURVE.Gx * CURVE.Gy));\n Point.ZERO = new Point(_0n, _1n, _1n, _0n); // 0, 1, 1, 0\n const { BASE: G, ZERO: I } = Point;\n const wnaf = wNAF(Point, nByteLength * 8);\n function modN(a) {\n return mod(a, CURVE_ORDER);\n }\n // Little-endian SHA512 with modulo n\n function modN_LE(hash) {\n return modN(ut.bytesToNumberLE(hash));\n }\n /** Convenience method that creates public key and other stuff. RFC8032 5.1.5 */\n function getExtendedPublicKey(key) {\n const len = nByteLength;\n key = ensureBytes('private key', key, len);\n // Hash private key with curve's hash function to produce uniformingly random input\n // Check byte lengths: ensure(64, h(ensure(32, key)))\n const hashed = ensureBytes('hashed private key', cHash(key), 2 * len);\n const head = adjustScalarBytes(hashed.slice(0, len)); // clear first half bits, produce FE\n const prefix = hashed.slice(len, 2 * len); // second half is called key prefix (5.1.6)\n const scalar = modN_LE(head); // The actual private scalar\n const point = G.multiply(scalar); // Point on Edwards curve aka public key\n const pointBytes = point.toRawBytes(); // Uint8Array representation\n return { head, prefix, scalar, point, pointBytes };\n }\n // Calculates EdDSA pub key. RFC8032 5.1.5. Privkey is hashed. Use first half with 3 bits cleared\n function getPublicKey(privKey) {\n return getExtendedPublicKey(privKey).pointBytes;\n }\n // int('LE', SHA512(dom2(F, C) || msgs)) mod N\n function hashDomainToScalar(context = new Uint8Array(), ...msgs) {\n const msg = ut.concatBytes(...msgs);\n return modN_LE(cHash(domain(msg, ensureBytes('context', context), !!prehash)));\n }\n /** Signs message with privateKey. RFC8032 5.1.6 */\n function sign(msg, privKey, options = {}) {\n msg = ensureBytes('message', msg);\n if (prehash)\n msg = prehash(msg); // for ed25519ph etc.\n const { prefix, scalar, pointBytes } = getExtendedPublicKey(privKey);\n const r = hashDomainToScalar(options.context, prefix, msg); // r = dom2(F, C) || prefix || PH(M)\n const R = G.multiply(r).toRawBytes(); // R = rG\n const k = hashDomainToScalar(options.context, R, pointBytes, msg); // R || A || PH(M)\n const s = modN(r + k * scalar); // S = (r + k * s) mod L\n assertGE0(s); // 0 <= s < l\n const res = ut.concatBytes(R, ut.numberToBytesLE(s, Fp.BYTES));\n return ensureBytes('result', res, nByteLength * 2); // 64-byte signature\n }\n const verifyOpts = VERIFY_DEFAULT;\n function verify(sig, msg, publicKey, options = verifyOpts) {\n const { context, zip215 } = options;\n const len = Fp.BYTES; // Verifies EdDSA signature against message and public key. RFC8032 5.1.7.\n sig = ensureBytes('signature', sig, 2 * len); // An extended group equation is checked.\n msg = ensureBytes('message', msg);\n if (prehash)\n msg = prehash(msg); // for ed25519ph, etc\n const s = ut.bytesToNumberLE(sig.slice(len, 2 * len));\n // zip215: true is good for consensus-critical apps and allows points < 2^256\n // zip215: false follows RFC8032 / NIST186-5 and restricts points to CURVE.p\n let A, R, SB;\n try {\n A = Point.fromHex(publicKey, zip215);\n R = Point.fromHex(sig.slice(0, len), zip215);\n SB = G.multiplyUnsafe(s); // 0 <= s < l is done inside\n }\n catch (error) {\n return false;\n }\n if (!zip215 && A.isSmallOrder())\n return false;\n const k = hashDomainToScalar(context, R.toRawBytes(), A.toRawBytes(), msg);\n const RkA = R.add(A.multiplyUnsafe(k));\n // [8][S]B = [8]R + [8][k]A'\n return RkA.subtract(SB).clearCofactor().equals(Point.ZERO);\n }\n G._setWindowSize(8); // Enable precomputes. Slows down first publicKey computation by 20ms.\n const utils = {\n getExtendedPublicKey,\n // ed25519 private keys are uniform 32b. No need to check for modulo bias, like in secp256k1.\n randomPrivateKey: () => randomBytes(Fp.BYTES),\n /**\n * We're doing scalar multiplication (used in getPublicKey etc) with precomputed BASE_POINT\n * values. This slows down first getPublicKey() by milliseconds (see Speed section),\n * but allows to speed-up subsequent getPublicKey() calls up to 20x.\n * @param windowSize 2, 4, 8, 16\n */\n precompute(windowSize = 8, point = Point.BASE) {\n point._setWindowSize(windowSize);\n point.multiply(BigInt(3));\n return point;\n },\n };\n return {\n CURVE,\n getPublicKey,\n sign,\n verify,\n ExtendedPoint: Point,\n utils,\n };\n}\n//# sourceMappingURL=edwards.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha512 } from '@noble/hashes/sha512';\nimport { concatBytes, randomBytes, utf8ToBytes } from '@noble/hashes/utils';\nimport { twistedEdwards } from './abstract/edwards.js';\nimport { montgomery } from './abstract/montgomery.js';\nimport { Field, FpSqrtEven, isNegativeLE, mod, pow2 } from './abstract/modular.js';\nimport { bytesToHex, bytesToNumberLE, ensureBytes, equalBytes, numberToBytesLE, } from './abstract/utils.js';\nimport { createHasher, expand_message_xmd } from './abstract/hash-to-curve.js';\n/**\n * ed25519 Twisted Edwards curve with following addons:\n * - X25519 ECDH\n * - Ristretto cofactor elimination\n * - Elligator hash-to-group / point indistinguishability\n */\nconst ED25519_P = BigInt('57896044618658097711785492504343953926634992332820282019728792003956564819949');\n// √(-1) aka √(a) aka 2^((p-1)/4)\nconst ED25519_SQRT_M1 = BigInt('19681161376707505956807079304988542015446066515923890162744021073123829784752');\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _5n = BigInt(5);\n// prettier-ignore\nconst _10n = BigInt(10), _20n = BigInt(20), _40n = BigInt(40), _80n = BigInt(80);\nfunction ed25519_pow_2_252_3(x) {\n const P = ED25519_P;\n const x2 = (x * x) % P;\n const b2 = (x2 * x) % P; // x^3, 11\n const b4 = (pow2(b2, _2n, P) * b2) % P; // x^15, 1111\n const b5 = (pow2(b4, _1n, P) * x) % P; // x^31\n const b10 = (pow2(b5, _5n, P) * b5) % P;\n const b20 = (pow2(b10, _10n, P) * b10) % P;\n const b40 = (pow2(b20, _20n, P) * b20) % P;\n const b80 = (pow2(b40, _40n, P) * b40) % P;\n const b160 = (pow2(b80, _80n, P) * b80) % P;\n const b240 = (pow2(b160, _80n, P) * b80) % P;\n const b250 = (pow2(b240, _10n, P) * b10) % P;\n const pow_p_5_8 = (pow2(b250, _2n, P) * x) % P;\n // ^ To pow to (p+3)/8, multiply it by x.\n return { pow_p_5_8, b2 };\n}\nfunction adjustScalarBytes(bytes) {\n // Section 5: For X25519, in order to decode 32 random bytes as an integer scalar,\n // set the three least significant bits of the first byte\n bytes[0] &= 248; // 0b1111_1000\n // and the most significant bit of the last to zero,\n bytes[31] &= 127; // 0b0111_1111\n // set the second most significant bit of the last byte to 1\n bytes[31] |= 64; // 0b0100_0000\n return bytes;\n}\n// sqrt(u/v)\nfunction uvRatio(u, v) {\n const P = ED25519_P;\n const v3 = mod(v * v * v, P); // v³\n const v7 = mod(v3 * v3 * v, P); // v⁷\n // (p+3)/8 and (p-5)/8\n const pow = ed25519_pow_2_252_3(u * v7).pow_p_5_8;\n let x = mod(u * v3 * pow, P); // (uv³)(uv⁷)^(p-5)/8\n const vx2 = mod(v * x * x, P); // vx²\n const root1 = x; // First root candidate\n const root2 = mod(x * ED25519_SQRT_M1, P); // Second root candidate\n const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root\n const useRoot2 = vx2 === mod(-u, P); // If vx² = -u, set x <-- x * 2^((p-1)/4)\n const noRoot = vx2 === mod(-u * ED25519_SQRT_M1, P); // There is no valid root, vx² = -u√(-1)\n if (useRoot1)\n x = root1;\n if (useRoot2 || noRoot)\n x = root2; // We return root2 anyway, for const-time\n if (isNegativeLE(x, P))\n x = mod(-x, P);\n return { isValid: useRoot1 || useRoot2, value: x };\n}\n// Just in case\nexport const ED25519_TORSION_SUBGROUP = [\n '0100000000000000000000000000000000000000000000000000000000000000',\n 'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a',\n '0000000000000000000000000000000000000000000000000000000000000080',\n '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05',\n 'ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f',\n '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc85',\n '0000000000000000000000000000000000000000000000000000000000000000',\n 'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac03fa',\n];\nconst Fp = Field(ED25519_P, undefined, true);\nconst ed25519Defaults = {\n // Param: a\n a: BigInt(-1), // Fp.create(-1) is proper; our way still works and is faster\n // d is equal to -121665/121666 over finite field.\n // Negative number is P - number, and division is invert(number, P)\n d: BigInt('37095705934669439343138083508754565189542113879843219016388785533085940283555'),\n // Finite field 𝔽p over which we'll do calculations; 2n**255n - 19n\n Fp,\n // Subgroup order: how many points curve has\n // 2n**252n + 27742317777372353535851937790883648493n;\n n: BigInt('7237005577332262213973186563042994240857116359379907606001950938285454250989'),\n // Cofactor\n h: BigInt(8),\n // Base point (x, y) aka generator point\n Gx: BigInt('15112221349535400772501151409588531511454012693041857206046113283949847762202'),\n Gy: BigInt('46316835694926478169428394003475163141307993866256225615783033603165251855960'),\n hash: sha512,\n randomBytes,\n adjustScalarBytes,\n // dom2\n // Ratio of u to v. Allows us to combine inversion and square root. Uses algo from RFC8032 5.1.3.\n // Constant-time, u/√v\n uvRatio,\n};\nexport const ed25519 = /* @__PURE__ */ twistedEdwards(ed25519Defaults);\nfunction ed25519_domain(data, ctx, phflag) {\n if (ctx.length > 255)\n throw new Error('Context is too big');\n return concatBytes(utf8ToBytes('SigEd25519 no Ed25519 collisions'), new Uint8Array([phflag ? 1 : 0, ctx.length]), ctx, data);\n}\nexport const ed25519ctx = /* @__PURE__ */ twistedEdwards({\n ...ed25519Defaults,\n domain: ed25519_domain,\n});\nexport const ed25519ph = /* @__PURE__ */ twistedEdwards({\n ...ed25519Defaults,\n domain: ed25519_domain,\n prehash: sha512,\n});\nexport const x25519 = /* @__PURE__ */ (() => montgomery({\n P: ED25519_P,\n a: BigInt(486662),\n montgomeryBits: 255, // n is 253 bits\n nByteLength: 32,\n Gu: BigInt(9),\n powPminus2: (x) => {\n const P = ED25519_P;\n // x^(p-2) aka x^(2^255-21)\n const { pow_p_5_8, b2 } = ed25519_pow_2_252_3(x);\n return mod(pow2(pow_p_5_8, BigInt(3), P) * b2, P);\n },\n adjustScalarBytes,\n randomBytes,\n}))();\n/**\n * Converts ed25519 public key to x25519 public key. Uses formula:\n * * `(u, v) = ((1+y)/(1-y), sqrt(-486664)*u/x)`\n * * `(x, y) = (sqrt(-486664)*u/v, (u-1)/(u+1))`\n * @example\n * const someonesPub = ed25519.getPublicKey(ed25519.utils.randomPrivateKey());\n * const aPriv = x25519.utils.randomPrivateKey();\n * x25519.getSharedSecret(aPriv, edwardsToMontgomeryPub(someonesPub))\n */\nexport function edwardsToMontgomeryPub(edwardsPub) {\n const { y } = ed25519.ExtendedPoint.fromHex(edwardsPub);\n const _1n = BigInt(1);\n return Fp.toBytes(Fp.create((_1n + y) * Fp.inv(_1n - y)));\n}\nexport const edwardsToMontgomery = edwardsToMontgomeryPub; // deprecated\n/**\n * Converts ed25519 secret key to x25519 secret key.\n * @example\n * const someonesPub = x25519.getPublicKey(x25519.utils.randomPrivateKey());\n * const aPriv = ed25519.utils.randomPrivateKey();\n * x25519.getSharedSecret(edwardsToMontgomeryPriv(aPriv), someonesPub)\n */\nexport function edwardsToMontgomeryPriv(edwardsPriv) {\n const hashed = ed25519Defaults.hash(edwardsPriv.subarray(0, 32));\n return ed25519Defaults.adjustScalarBytes(hashed).subarray(0, 32);\n}\n// Hash To Curve Elligator2 Map (NOTE: different from ristretto255 elligator)\n// NOTE: very important part is usage of FpSqrtEven for ELL2_C1_EDWARDS, since\n// SageMath returns different root first and everything falls apart\nconst ELL2_C1 = (Fp.ORDER + BigInt(3)) / BigInt(8); // 1. c1 = (q + 3) / 8 # Integer arithmetic\nconst ELL2_C2 = Fp.pow(_2n, ELL2_C1); // 2. c2 = 2^c1\nconst ELL2_C3 = Fp.sqrt(Fp.neg(Fp.ONE)); // 3. c3 = sqrt(-1)\nconst ELL2_C4 = (Fp.ORDER - BigInt(5)) / BigInt(8); // 4. c4 = (q - 5) / 8 # Integer arithmetic\nconst ELL2_J = BigInt(486662);\n// prettier-ignore\nfunction map_to_curve_elligator2_curve25519(u) {\n let tv1 = Fp.sqr(u); // 1. tv1 = u^2\n tv1 = Fp.mul(tv1, _2n); // 2. tv1 = 2 * tv1\n let xd = Fp.add(tv1, Fp.ONE); // 3. xd = tv1 + 1 # Nonzero: -1 is square (mod p), tv1 is not\n let x1n = Fp.neg(ELL2_J); // 4. x1n = -J # x1 = x1n / xd = -J / (1 + 2 * u^2)\n let tv2 = Fp.sqr(xd); // 5. tv2 = xd^2\n let gxd = Fp.mul(tv2, xd); // 6. gxd = tv2 * xd # gxd = xd^3\n let gx1 = Fp.mul(tv1, ELL2_J); // 7. gx1 = J * tv1 # x1n + J * xd\n gx1 = Fp.mul(gx1, x1n); // 8. gx1 = gx1 * x1n # x1n^2 + J * x1n * xd\n gx1 = Fp.add(gx1, tv2); // 9. gx1 = gx1 + tv2 # x1n^2 + J * x1n * xd + xd^2\n gx1 = Fp.mul(gx1, x1n); // 10. gx1 = gx1 * x1n # x1n^3 + J * x1n^2 * xd + x1n * xd^2\n let tv3 = Fp.sqr(gxd); // 11. tv3 = gxd^2\n tv2 = Fp.sqr(tv3); // 12. tv2 = tv3^2 # gxd^4\n tv3 = Fp.mul(tv3, gxd); // 13. tv3 = tv3 * gxd # gxd^3\n tv3 = Fp.mul(tv3, gx1); // 14. tv3 = tv3 * gx1 # gx1 * gxd^3\n tv2 = Fp.mul(tv2, tv3); // 15. tv2 = tv2 * tv3 # gx1 * gxd^7\n let y11 = Fp.pow(tv2, ELL2_C4); // 16. y11 = tv2^c4 # (gx1 * gxd^7)^((p - 5) / 8)\n y11 = Fp.mul(y11, tv3); // 17. y11 = y11 * tv3 # gx1*gxd^3*(gx1*gxd^7)^((p-5)/8)\n let y12 = Fp.mul(y11, ELL2_C3); // 18. y12 = y11 * c3\n tv2 = Fp.sqr(y11); // 19. tv2 = y11^2\n tv2 = Fp.mul(tv2, gxd); // 20. tv2 = tv2 * gxd\n let e1 = Fp.eql(tv2, gx1); // 21. e1 = tv2 == gx1\n let y1 = Fp.cmov(y12, y11, e1); // 22. y1 = CMOV(y12, y11, e1) # If g(x1) is square, this is its sqrt\n let x2n = Fp.mul(x1n, tv1); // 23. x2n = x1n * tv1 # x2 = x2n / xd = 2 * u^2 * x1n / xd\n let y21 = Fp.mul(y11, u); // 24. y21 = y11 * u\n y21 = Fp.mul(y21, ELL2_C2); // 25. y21 = y21 * c2\n let y22 = Fp.mul(y21, ELL2_C3); // 26. y22 = y21 * c3\n let gx2 = Fp.mul(gx1, tv1); // 27. gx2 = gx1 * tv1 # g(x2) = gx2 / gxd = 2 * u^2 * g(x1)\n tv2 = Fp.sqr(y21); // 28. tv2 = y21^2\n tv2 = Fp.mul(tv2, gxd); // 29. tv2 = tv2 * gxd\n let e2 = Fp.eql(tv2, gx2); // 30. e2 = tv2 == gx2\n let y2 = Fp.cmov(y22, y21, e2); // 31. y2 = CMOV(y22, y21, e2) # If g(x2) is square, this is its sqrt\n tv2 = Fp.sqr(y1); // 32. tv2 = y1^2\n tv2 = Fp.mul(tv2, gxd); // 33. tv2 = tv2 * gxd\n let e3 = Fp.eql(tv2, gx1); // 34. e3 = tv2 == gx1\n let xn = Fp.cmov(x2n, x1n, e3); // 35. xn = CMOV(x2n, x1n, e3) # If e3, x = x1, else x = x2\n let y = Fp.cmov(y2, y1, e3); // 36. y = CMOV(y2, y1, e3) # If e3, y = y1, else y = y2\n let e4 = Fp.isOdd(y); // 37. e4 = sgn0(y) == 1 # Fix sign of y\n y = Fp.cmov(y, Fp.neg(y), e3 !== e4); // 38. y = CMOV(y, -y, e3 XOR e4)\n return { xMn: xn, xMd: xd, yMn: y, yMd: _1n }; // 39. return (xn, xd, y, 1)\n}\nconst ELL2_C1_EDWARDS = FpSqrtEven(Fp, Fp.neg(BigInt(486664))); // sgn0(c1) MUST equal 0\nfunction map_to_curve_elligator2_edwards25519(u) {\n const { xMn, xMd, yMn, yMd } = map_to_curve_elligator2_curve25519(u); // 1. (xMn, xMd, yMn, yMd) =\n // map_to_curve_elligator2_curve25519(u)\n let xn = Fp.mul(xMn, yMd); // 2. xn = xMn * yMd\n xn = Fp.mul(xn, ELL2_C1_EDWARDS); // 3. xn = xn * c1\n let xd = Fp.mul(xMd, yMn); // 4. xd = xMd * yMn # xn / xd = c1 * xM / yM\n let yn = Fp.sub(xMn, xMd); // 5. yn = xMn - xMd\n let yd = Fp.add(xMn, xMd); // 6. yd = xMn + xMd # (n / d - 1) / (n / d + 1) = (n - d) / (n + d)\n let tv1 = Fp.mul(xd, yd); // 7. tv1 = xd * yd\n let e = Fp.eql(tv1, Fp.ZERO); // 8. e = tv1 == 0\n xn = Fp.cmov(xn, Fp.ZERO, e); // 9. xn = CMOV(xn, 0, e)\n xd = Fp.cmov(xd, Fp.ONE, e); // 10. xd = CMOV(xd, 1, e)\n yn = Fp.cmov(yn, Fp.ONE, e); // 11. yn = CMOV(yn, 1, e)\n yd = Fp.cmov(yd, Fp.ONE, e); // 12. yd = CMOV(yd, 1, e)\n const inv = Fp.invertBatch([xd, yd]); // batch division\n return { x: Fp.mul(xn, inv[0]), y: Fp.mul(yn, inv[1]) }; // 13. return (xn, xd, yn, yd)\n}\nconst htf = /* @__PURE__ */ (() => createHasher(ed25519.ExtendedPoint, (scalars) => map_to_curve_elligator2_edwards25519(scalars[0]), {\n DST: 'edwards25519_XMD:SHA-512_ELL2_RO_',\n encodeDST: 'edwards25519_XMD:SHA-512_ELL2_NU_',\n p: Fp.ORDER,\n m: 1,\n k: 128,\n expand: 'xmd',\n hash: sha512,\n}))();\nexport const hashToCurve = /* @__PURE__ */ (() => htf.hashToCurve)();\nexport const encodeToCurve = /* @__PURE__ */ (() => htf.encodeToCurve)();\nfunction assertRstPoint(other) {\n if (!(other instanceof RistPoint))\n throw new Error('RistrettoPoint expected');\n}\n// √(-1) aka √(a) aka 2^((p-1)/4)\nconst SQRT_M1 = ED25519_SQRT_M1;\n// √(ad - 1)\nconst SQRT_AD_MINUS_ONE = BigInt('25063068953384623474111414158702152701244531502492656460079210482610430750235');\n// 1 / √(a-d)\nconst INVSQRT_A_MINUS_D = BigInt('54469307008909316920995813868745141605393597292927456921205312896311721017578');\n// 1-d²\nconst ONE_MINUS_D_SQ = BigInt('1159843021668779879193775521855586647937357759715417654439879720876111806838');\n// (d-1)²\nconst D_MINUS_ONE_SQ = BigInt('40440834346308536858101042469323190826248399146238708352240133220865137265952');\n// Calculates 1/√(number)\nconst invertSqrt = (number) => uvRatio(_1n, number);\nconst MAX_255B = BigInt('0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff');\nconst bytes255ToNumberLE = (bytes) => ed25519.CURVE.Fp.create(bytesToNumberLE(bytes) & MAX_255B);\n// Computes Elligator map for Ristretto\n// https://ristretto.group/formulas/elligator.html\nfunction calcElligatorRistrettoMap(r0) {\n const { d } = ed25519.CURVE;\n const P = ed25519.CURVE.Fp.ORDER;\n const mod = ed25519.CURVE.Fp.create;\n const r = mod(SQRT_M1 * r0 * r0); // 1\n const Ns = mod((r + _1n) * ONE_MINUS_D_SQ); // 2\n let c = BigInt(-1); // 3\n const D = mod((c - d * r) * mod(r + d)); // 4\n let { isValid: Ns_D_is_sq, value: s } = uvRatio(Ns, D); // 5\n let s_ = mod(s * r0); // 6\n if (!isNegativeLE(s_, P))\n s_ = mod(-s_);\n if (!Ns_D_is_sq)\n s = s_; // 7\n if (!Ns_D_is_sq)\n c = r; // 8\n const Nt = mod(c * (r - _1n) * D_MINUS_ONE_SQ - D); // 9\n const s2 = s * s;\n const W0 = mod((s + s) * D); // 10\n const W1 = mod(Nt * SQRT_AD_MINUS_ONE); // 11\n const W2 = mod(_1n - s2); // 12\n const W3 = mod(_1n + s2); // 13\n return new ed25519.ExtendedPoint(mod(W0 * W3), mod(W2 * W1), mod(W1 * W3), mod(W0 * W2));\n}\n/**\n * Each ed25519/ExtendedPoint has 8 different equivalent points. This can be\n * a source of bugs for protocols like ring signatures. Ristretto was created to solve this.\n * Ristretto point operates in X:Y:Z:T extended coordinates like ExtendedPoint,\n * but it should work in its own namespace: do not combine those two.\n * https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-ristretto255-decaf448\n */\nclass RistPoint {\n // Private property to discourage combining ExtendedPoint + RistrettoPoint\n // Always use Ristretto encoding/decoding instead.\n constructor(ep) {\n this.ep = ep;\n }\n static fromAffine(ap) {\n return new RistPoint(ed25519.ExtendedPoint.fromAffine(ap));\n }\n /**\n * Takes uniform output of 64-byte hash function like sha512 and converts it to `RistrettoPoint`.\n * The hash-to-group operation applies Elligator twice and adds the results.\n * **Note:** this is one-way map, there is no conversion from point to hash.\n * https://ristretto.group/formulas/elligator.html\n * @param hex 64-byte output of a hash function\n */\n static hashToCurve(hex) {\n hex = ensureBytes('ristrettoHash', hex, 64);\n const r1 = bytes255ToNumberLE(hex.slice(0, 32));\n const R1 = calcElligatorRistrettoMap(r1);\n const r2 = bytes255ToNumberLE(hex.slice(32, 64));\n const R2 = calcElligatorRistrettoMap(r2);\n return new RistPoint(R1.add(R2));\n }\n /**\n * Converts ristretto-encoded string to ristretto point.\n * https://ristretto.group/formulas/decoding.html\n * @param hex Ristretto-encoded 32 bytes. Not every 32-byte string is valid ristretto encoding\n */\n static fromHex(hex) {\n hex = ensureBytes('ristrettoHex', hex, 32);\n const { a, d } = ed25519.CURVE;\n const P = ed25519.CURVE.Fp.ORDER;\n const mod = ed25519.CURVE.Fp.create;\n const emsg = 'RistrettoPoint.fromHex: the hex is not valid encoding of RistrettoPoint';\n const s = bytes255ToNumberLE(hex);\n // 1. Check that s_bytes is the canonical encoding of a field element, or else abort.\n // 3. Check that s is non-negative, or else abort\n if (!equalBytes(numberToBytesLE(s, 32), hex) || isNegativeLE(s, P))\n throw new Error(emsg);\n const s2 = mod(s * s);\n const u1 = mod(_1n + a * s2); // 4 (a is -1)\n const u2 = mod(_1n - a * s2); // 5\n const u1_2 = mod(u1 * u1);\n const u2_2 = mod(u2 * u2);\n const v = mod(a * d * u1_2 - u2_2); // 6\n const { isValid, value: I } = invertSqrt(mod(v * u2_2)); // 7\n const Dx = mod(I * u2); // 8\n const Dy = mod(I * Dx * v); // 9\n let x = mod((s + s) * Dx); // 10\n if (isNegativeLE(x, P))\n x = mod(-x); // 10\n const y = mod(u1 * Dy); // 11\n const t = mod(x * y); // 12\n if (!isValid || isNegativeLE(t, P) || y === _0n)\n throw new Error(emsg);\n return new RistPoint(new ed25519.ExtendedPoint(x, y, _1n, t));\n }\n /**\n * Encodes ristretto point to Uint8Array.\n * https://ristretto.group/formulas/encoding.html\n */\n toRawBytes() {\n let { ex: x, ey: y, ez: z, et: t } = this.ep;\n const P = ed25519.CURVE.Fp.ORDER;\n const mod = ed25519.CURVE.Fp.create;\n const u1 = mod(mod(z + y) * mod(z - y)); // 1\n const u2 = mod(x * y); // 2\n // Square root always exists\n const u2sq = mod(u2 * u2);\n const { value: invsqrt } = invertSqrt(mod(u1 * u2sq)); // 3\n const D1 = mod(invsqrt * u1); // 4\n const D2 = mod(invsqrt * u2); // 5\n const zInv = mod(D1 * D2 * t); // 6\n let D; // 7\n if (isNegativeLE(t * zInv, P)) {\n let _x = mod(y * SQRT_M1);\n let _y = mod(x * SQRT_M1);\n x = _x;\n y = _y;\n D = mod(D1 * INVSQRT_A_MINUS_D);\n }\n else {\n D = D2; // 8\n }\n if (isNegativeLE(x * zInv, P))\n y = mod(-y); // 9\n let s = mod((z - y) * D); // 10 (check footer's note, no sqrt(-a))\n if (isNegativeLE(s, P))\n s = mod(-s);\n return numberToBytesLE(s, 32); // 11\n }\n toHex() {\n return bytesToHex(this.toRawBytes());\n }\n toString() {\n return this.toHex();\n }\n // Compare one point to another.\n equals(other) {\n assertRstPoint(other);\n const { ex: X1, ey: Y1 } = this.ep;\n const { ex: X2, ey: Y2 } = other.ep;\n const mod = ed25519.CURVE.Fp.create;\n // (x1 * y2 == y1 * x2) | (y1 * y2 == x1 * x2)\n const one = mod(X1 * Y2) === mod(Y1 * X2);\n const two = mod(Y1 * Y2) === mod(X1 * X2);\n return one || two;\n }\n add(other) {\n assertRstPoint(other);\n return new RistPoint(this.ep.add(other.ep));\n }\n subtract(other) {\n assertRstPoint(other);\n return new RistPoint(this.ep.subtract(other.ep));\n }\n multiply(scalar) {\n return new RistPoint(this.ep.multiply(scalar));\n }\n multiplyUnsafe(scalar) {\n return new RistPoint(this.ep.multiplyUnsafe(scalar));\n }\n double() {\n return new RistPoint(this.ep.double());\n }\n negate() {\n return new RistPoint(this.ep.negate());\n }\n}\nexport const RistrettoPoint = /* @__PURE__ */ (() => {\n if (!RistPoint.BASE)\n RistPoint.BASE = new RistPoint(ed25519.ExtendedPoint.BASE);\n if (!RistPoint.ZERO)\n RistPoint.ZERO = new RistPoint(ed25519.ExtendedPoint.ZERO);\n return RistPoint;\n})();\n// Hashing to ristretto255. https://www.rfc-editor.org/rfc/rfc9380#appendix-B\nexport const hashToRistretto255 = (msg, options) => {\n const d = options.DST;\n const DST = typeof d === 'string' ? utf8ToBytes(d) : d;\n const uniform_bytes = expand_message_xmd(msg, DST, 64, sha512);\n const P = RistPoint.hashToCurve(uniform_bytes);\n return P;\n};\nexport const hash_to_ristretto255 = hashToRistretto255; // legacy\n//# sourceMappingURL=ed25519.js.map","/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Utilities\n/**\n * @__NO_SIDE_EFFECTS__\n */\nexport function assertNumber(n) {\n if (!Number.isSafeInteger(n))\n throw new Error(`Wrong integer: ${n}`);\n}\nfunction isBytes(a) {\n return (a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction chain(...args) {\n const id = (a) => a;\n // Wrap call in closure so JIT can inline calls\n const wrap = (a, b) => (c) => a(b(c));\n // Construct chain of args[-1].encode(args[-2].encode([...]))\n const encode = args.map((x) => x.encode).reduceRight(wrap, id);\n // Construct chain of args[0].decode(args[1].decode(...))\n const decode = args.map((x) => x.decode).reduce(wrap, id);\n return { encode, decode };\n}\n/**\n * Encodes integer radix representation to array of strings using alphabet and back\n * @__NO_SIDE_EFFECTS__\n */\nfunction alphabet(alphabet) {\n return {\n encode: (digits) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('alphabet.encode input should be an array of numbers');\n return digits.map((i) => {\n assertNumber(i);\n if (i < 0 || i >= alphabet.length)\n throw new Error(`Digit index outside alphabet: ${i} (alphabet: ${alphabet.length})`);\n return alphabet[i];\n });\n },\n decode: (input) => {\n if (!Array.isArray(input) || (input.length && typeof input[0] !== 'string'))\n throw new Error('alphabet.decode input should be array of strings');\n return input.map((letter) => {\n if (typeof letter !== 'string')\n throw new Error(`alphabet.decode: not string element=${letter}`);\n const index = alphabet.indexOf(letter);\n if (index === -1)\n throw new Error(`Unknown letter: \"${letter}\". Allowed: ${alphabet}`);\n return index;\n });\n },\n };\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction join(separator = '') {\n if (typeof separator !== 'string')\n throw new Error('join separator should be string');\n return {\n encode: (from) => {\n if (!Array.isArray(from) || (from.length && typeof from[0] !== 'string'))\n throw new Error('join.encode input should be array of strings');\n for (let i of from)\n if (typeof i !== 'string')\n throw new Error(`join.encode: non-string input=${i}`);\n return from.join(separator);\n },\n decode: (to) => {\n if (typeof to !== 'string')\n throw new Error('join.decode input should be string');\n return to.split(separator);\n },\n };\n}\n/**\n * Pad strings array so it has integer number of bits\n * @__NO_SIDE_EFFECTS__\n */\nfunction padding(bits, chr = '=') {\n assertNumber(bits);\n if (typeof chr !== 'string')\n throw new Error('padding chr should be string');\n return {\n encode(data) {\n if (!Array.isArray(data) || (data.length && typeof data[0] !== 'string'))\n throw new Error('padding.encode input should be array of strings');\n for (let i of data)\n if (typeof i !== 'string')\n throw new Error(`padding.encode: non-string input=${i}`);\n while ((data.length * bits) % 8)\n data.push(chr);\n return data;\n },\n decode(input) {\n if (!Array.isArray(input) || (input.length && typeof input[0] !== 'string'))\n throw new Error('padding.encode input should be array of strings');\n for (let i of input)\n if (typeof i !== 'string')\n throw new Error(`padding.decode: non-string input=${i}`);\n let end = input.length;\n if ((end * bits) % 8)\n throw new Error('Invalid padding: string should have whole number of bytes');\n for (; end > 0 && input[end - 1] === chr; end--) {\n if (!(((end - 1) * bits) % 8))\n throw new Error('Invalid padding: string has too much padding');\n }\n return input.slice(0, end);\n },\n };\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction normalize(fn) {\n if (typeof fn !== 'function')\n throw new Error('normalize fn should be function');\n return { encode: (from) => from, decode: (to) => fn(to) };\n}\n/**\n * Slow: O(n^2) time complexity\n * @__NO_SIDE_EFFECTS__\n */\nfunction convertRadix(data, from, to) {\n // base 1 is impossible\n if (from < 2)\n throw new Error(`convertRadix: wrong from=${from}, base cannot be less than 2`);\n if (to < 2)\n throw new Error(`convertRadix: wrong to=${to}, base cannot be less than 2`);\n if (!Array.isArray(data))\n throw new Error('convertRadix: data should be array');\n if (!data.length)\n return [];\n let pos = 0;\n const res = [];\n const digits = Array.from(data);\n digits.forEach((d) => {\n assertNumber(d);\n if (d < 0 || d >= from)\n throw new Error(`Wrong integer: ${d}`);\n });\n while (true) {\n let carry = 0;\n let done = true;\n for (let i = pos; i < digits.length; i++) {\n const digit = digits[i];\n const digitBase = from * carry + digit;\n if (!Number.isSafeInteger(digitBase) ||\n (from * carry) / from !== carry ||\n digitBase - digit !== from * carry) {\n throw new Error('convertRadix: carry overflow');\n }\n carry = digitBase % to;\n const rounded = Math.floor(digitBase / to);\n digits[i] = rounded;\n if (!Number.isSafeInteger(rounded) || rounded * to + carry !== digitBase)\n throw new Error('convertRadix: carry overflow');\n if (!done)\n continue;\n else if (!rounded)\n pos = i;\n else\n done = false;\n }\n res.push(carry);\n if (done)\n break;\n }\n for (let i = 0; i < data.length - 1 && data[i] === 0; i++)\n res.push(0);\n return res.reverse();\n}\nconst gcd = /* @__NO_SIDE_EFFECTS__ */ (a, b) => (!b ? a : gcd(b, a % b));\nconst radix2carry = /*@__NO_SIDE_EFFECTS__ */ (from, to) => from + (to - gcd(from, to));\n/**\n * Implemented with numbers, because BigInt is 5x slower\n * @__NO_SIDE_EFFECTS__\n */\nfunction convertRadix2(data, from, to, padding) {\n if (!Array.isArray(data))\n throw new Error('convertRadix2: data should be array');\n if (from <= 0 || from > 32)\n throw new Error(`convertRadix2: wrong from=${from}`);\n if (to <= 0 || to > 32)\n throw new Error(`convertRadix2: wrong to=${to}`);\n if (radix2carry(from, to) > 32) {\n throw new Error(`convertRadix2: carry overflow from=${from} to=${to} carryBits=${radix2carry(from, to)}`);\n }\n let carry = 0;\n let pos = 0; // bitwise position in current element\n const mask = 2 ** to - 1;\n const res = [];\n for (const n of data) {\n assertNumber(n);\n if (n >= 2 ** from)\n throw new Error(`convertRadix2: invalid data word=${n} from=${from}`);\n carry = (carry << from) | n;\n if (pos + from > 32)\n throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`);\n pos += from;\n for (; pos >= to; pos -= to)\n res.push(((carry >> (pos - to)) & mask) >>> 0);\n carry &= 2 ** pos - 1; // clean carry, otherwise it will cause overflow\n }\n carry = (carry << (to - pos)) & mask;\n if (!padding && pos >= from)\n throw new Error('Excess padding');\n if (!padding && carry)\n throw new Error(`Non-zero padding: ${carry}`);\n if (padding && pos > 0)\n res.push(carry >>> 0);\n return res;\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix(num) {\n assertNumber(num);\n return {\n encode: (bytes) => {\n if (!isBytes(bytes))\n throw new Error('radix.encode input should be Uint8Array');\n return convertRadix(Array.from(bytes), 2 ** 8, num);\n },\n decode: (digits) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('radix.decode input should be array of numbers');\n return Uint8Array.from(convertRadix(digits, num, 2 ** 8));\n },\n };\n}\n/**\n * If both bases are power of same number (like `2**8 <-> 2**64`),\n * there is a linear algorithm. For now we have implementation for power-of-two bases only.\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix2(bits, revPadding = false) {\n assertNumber(bits);\n if (bits <= 0 || bits > 32)\n throw new Error('radix2: bits should be in (0..32]');\n if (radix2carry(8, bits) > 32 || radix2carry(bits, 8) > 32)\n throw new Error('radix2: carry overflow');\n return {\n encode: (bytes) => {\n if (!isBytes(bytes))\n throw new Error('radix2.encode input should be Uint8Array');\n return convertRadix2(Array.from(bytes), 8, bits, !revPadding);\n },\n decode: (digits) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('radix2.decode input should be array of numbers');\n return Uint8Array.from(convertRadix2(digits, bits, 8, revPadding));\n },\n };\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction unsafeWrapper(fn) {\n if (typeof fn !== 'function')\n throw new Error('unsafeWrapper fn should be function');\n return function (...args) {\n try {\n return fn.apply(null, args);\n }\n catch (e) { }\n };\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction checksum(len, fn) {\n assertNumber(len);\n if (typeof fn !== 'function')\n throw new Error('checksum fn should be function');\n return {\n encode(data) {\n if (!isBytes(data))\n throw new Error('checksum.encode: input should be Uint8Array');\n const checksum = fn(data).slice(0, len);\n const res = new Uint8Array(data.length + len);\n res.set(data);\n res.set(checksum, data.length);\n return res;\n },\n decode(data) {\n if (!isBytes(data))\n throw new Error('checksum.decode: input should be Uint8Array');\n const payload = data.slice(0, -len);\n const newChecksum = fn(payload).slice(0, len);\n const oldChecksum = data.slice(-len);\n for (let i = 0; i < len; i++)\n if (newChecksum[i] !== oldChecksum[i])\n throw new Error('Invalid checksum');\n return payload;\n },\n };\n}\n// prettier-ignore\nexport const utils = {\n alphabet, chain, checksum, convertRadix, convertRadix2, radix, radix2, join, padding,\n};\n// RFC 4648 aka RFC 3548\n// ---------------------\nexport const base16 = /* @__PURE__ */ chain(radix2(4), alphabet('0123456789ABCDEF'), join(''));\nexport const base32 = /* @__PURE__ */ chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), padding(5), join(''));\nexport const base32hex = /* @__PURE__ */ chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), padding(5), join(''));\nexport const base32crockford = /* @__PURE__ */ chain(radix2(5), alphabet('0123456789ABCDEFGHJKMNPQRSTVWXYZ'), join(''), normalize((s) => s.toUpperCase().replace(/O/g, '0').replace(/[IL]/g, '1')));\nexport const base64 = /* @__PURE__ */ chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), padding(6), join(''));\nexport const base64url = /* @__PURE__ */ chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), padding(6), join(''));\nexport const base64urlnopad = /* @__PURE__ */ chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), join(''));\n// base58 code\n// -----------\nconst genBase58 = (abc) => chain(radix(58), alphabet(abc), join(''));\nexport const base58 = /* @__PURE__ */ genBase58('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz');\nexport const base58flickr = /* @__PURE__ */ genBase58('123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ');\nexport const base58xrp = /* @__PURE__ */ genBase58('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz');\n// xmr ver is done in 8-byte blocks (which equals 11 chars in decoding). Last (non-full) block padded with '1' to size in XMR_BLOCK_LEN.\n// Block encoding significantly reduces quadratic complexity of base58.\n// Data len (index) -> encoded block len\nconst XMR_BLOCK_LEN = [0, 2, 3, 5, 6, 7, 9, 10, 11];\nexport const base58xmr = {\n encode(data) {\n let res = '';\n for (let i = 0; i < data.length; i += 8) {\n const block = data.subarray(i, i + 8);\n res += base58.encode(block).padStart(XMR_BLOCK_LEN[block.length], '1');\n }\n return res;\n },\n decode(str) {\n let res = [];\n for (let i = 0; i < str.length; i += 11) {\n const slice = str.slice(i, i + 11);\n const blockLen = XMR_BLOCK_LEN.indexOf(slice.length);\n const block = base58.decode(slice);\n for (let j = 0; j < block.length - blockLen; j++) {\n if (block[j] !== 0)\n throw new Error('base58xmr: wrong padding');\n }\n res = res.concat(Array.from(block.slice(block.length - blockLen)));\n }\n return Uint8Array.from(res);\n },\n};\nexport const createBase58check = /* @__PURE__ */ (sha256) => chain(checksum(4, (data) => sha256(sha256(data))), base58);\n// legacy export, bad name\nexport const base58check = createBase58check;\nconst BECH_ALPHABET = /* @__PURE__ */ chain(alphabet('qpzry9x8gf2tvdw0s3jn54khce6mua7l'), join(''));\nconst POLYMOD_GENERATORS = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction bech32Polymod(pre) {\n const b = pre >> 25;\n let chk = (pre & 0x1ffffff) << 5;\n for (let i = 0; i < POLYMOD_GENERATORS.length; i++) {\n if (((b >> i) & 1) === 1)\n chk ^= POLYMOD_GENERATORS[i];\n }\n return chk;\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction bechChecksum(prefix, words, encodingConst = 1) {\n const len = prefix.length;\n let chk = 1;\n for (let i = 0; i < len; i++) {\n const c = prefix.charCodeAt(i);\n if (c < 33 || c > 126)\n throw new Error(`Invalid prefix (${prefix})`);\n chk = bech32Polymod(chk) ^ (c >> 5);\n }\n chk = bech32Polymod(chk);\n for (let i = 0; i < len; i++)\n chk = bech32Polymod(chk) ^ (prefix.charCodeAt(i) & 0x1f);\n for (let v of words)\n chk = bech32Polymod(chk) ^ v;\n for (let i = 0; i < 6; i++)\n chk = bech32Polymod(chk);\n chk ^= encodingConst;\n return BECH_ALPHABET.encode(convertRadix2([chk % 2 ** 30], 30, 5, false));\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction genBech32(encoding) {\n const ENCODING_CONST = encoding === 'bech32' ? 1 : 0x2bc830a3;\n const _words = radix2(5);\n const fromWords = _words.decode;\n const toWords = _words.encode;\n const fromWordsUnsafe = unsafeWrapper(fromWords);\n function encode(prefix, words, limit = 90) {\n if (typeof prefix !== 'string')\n throw new Error(`bech32.encode prefix should be string, not ${typeof prefix}`);\n if (!Array.isArray(words) || (words.length && typeof words[0] !== 'number'))\n throw new Error(`bech32.encode words should be array of numbers, not ${typeof words}`);\n const actualLength = prefix.length + 7 + words.length;\n if (limit !== false && actualLength > limit)\n throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`);\n const lowered = prefix.toLowerCase();\n const sum = bechChecksum(lowered, words, ENCODING_CONST);\n return `${lowered}1${BECH_ALPHABET.encode(words)}${sum}`;\n }\n function decode(str, limit = 90) {\n if (typeof str !== 'string')\n throw new Error(`bech32.decode input should be string, not ${typeof str}`);\n if (str.length < 8 || (limit !== false && str.length > limit))\n throw new TypeError(`Wrong string length: ${str.length} (${str}). Expected (8..${limit})`);\n // don't allow mixed case\n const lowered = str.toLowerCase();\n if (str !== lowered && str !== str.toUpperCase())\n throw new Error(`String must be lowercase or uppercase`);\n str = lowered;\n const sepIndex = str.lastIndexOf('1');\n if (sepIndex === 0 || sepIndex === -1)\n throw new Error(`Letter \"1\" must be present between prefix and data only`);\n const prefix = str.slice(0, sepIndex);\n const _words = str.slice(sepIndex + 1);\n if (_words.length < 6)\n throw new Error('Data must be at least 6 characters long');\n const words = BECH_ALPHABET.decode(_words).slice(0, -6);\n const sum = bechChecksum(prefix, words, ENCODING_CONST);\n if (!_words.endsWith(sum))\n throw new Error(`Invalid checksum in ${str}: expected \"${sum}\"`);\n return { prefix, words };\n }\n const decodeUnsafe = unsafeWrapper(decode);\n function decodeToBytes(str) {\n const { prefix, words } = decode(str, false);\n return { prefix, words, bytes: fromWords(words) };\n }\n return { encode, decode, decodeToBytes, decodeUnsafe, fromWords, fromWordsUnsafe, toWords };\n}\nexport const bech32 = /* @__PURE__ */ genBech32('bech32');\nexport const bech32m = /* @__PURE__ */ genBech32('bech32m');\nexport const utf8 = {\n encode: (data) => new TextDecoder().decode(data),\n decode: (str) => new TextEncoder().encode(str),\n};\nexport const hex = /* @__PURE__ */ chain(radix2(4), alphabet('0123456789abcdef'), join(''), normalize((s) => {\n if (typeof s !== 'string' || s.length % 2)\n throw new TypeError(`hex.decode: expected string, got ${typeof s} with length ${s.length}`);\n return s.toLowerCase();\n}));\n// prettier-ignore\nconst CODERS = {\n utf8, hex, base16, base32, base64, base64url, base58, base58xmr\n};\nconst coderTypeError = 'Invalid encoding type. Available types: utf8, hex, base16, base32, base64, base64url, base58, base58xmr';\nexport const bytesToString = (type, bytes) => {\n if (typeof type !== 'string' || !CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (!isBytes(bytes))\n throw new TypeError('bytesToString() expects Uint8Array');\n return CODERS[type].encode(bytes);\n};\nexport const str = bytesToString; // as in python, but for bytes only\nexport const stringToBytes = (type, str) => {\n if (!CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (typeof str !== 'string')\n throw new TypeError('stringToBytes() expects string');\n return CODERS[type].decode(str);\n};\nexport const bytes = stringToBytes;\n",null,null,null,null,null,null,null,null,null,null],"names":["base64Js","b64","lens","getLens","validLen","placeHoldersLen","tmp","i","arr","Arr","_byteLength","curByte","len","revLookup","charCodeAt","uint8","length","extraBytes","parts","maxChunkLength","len2","push","encodeChunk","lookup","join","Uint8Array","Array","code","Error","indexOf","start","end","num","output","ieee754","buffer","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","d","s","NaN","Infinity","Math","pow","value","c","rt","abs","isNaN","floor","log","LN2","base64","require$$0","require$$1","customInspectSymbol","Symbol","exports","Buffer","SlowBuffer","alloc","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","RangeError","buf","Object","setPrototypeOf","prototype","arg","encodingOrOffset","TypeError","allocUnsafe","from","string","encoding","isEncoding","byteLength","actual","write","slice","fromString","ArrayBuffer","isView","arrayView","isInstance","copy","fromArrayBuffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","valueOf","b","obj","isBuffer","checked","undefined","numberIsNaN","type","isArray","data","fromObject","toPrimitive","assertSize","size","array","toString","mustMatch","arguments","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","this","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","bidirectionalIndexOf","val","dir","arrayIndexOf","call","lastIndexOf","indexSize","arrLength","valLength","String","read","readUInt16BE","foundIndex","found","j","hexWrite","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","min","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","apply","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","console","error","defineProperty","enumerable","get","poolSize","fill","allocUnsafeSlow","_isBuffer","compare","a","x","y","concat","list","pos","set","swap16","swap32","swap64","toLocaleString","equals","inspect","max","replace","trim","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","ret","out","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","BigInt","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","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","message","addNumericalSeparator","range","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","input","msg","received","isInteger","INVALID_BASE64_RE","leadSurrogate","toByteArray","split","base64clean","src","dst","alphabet","table","i16","fn","BufferBigIntNotDefined","TOKEN_PROGRAM_ID","PublicKey","ASSOCIATED_TOKEN_PROGRAM_ID","Layout_1","constant","utf8","cstr","blob","unionLayoutDiscriminator","union","seq","bits","struct","f64be","f64","f32be","f32","ns64be","s48be","s40be","s32be","s24be","s16be","ns64","s48","s40","s32","s24","buffer_1","checkUint8Array","uint8ArrayToBuffer","Layout","span","property","replicate","rv","create","assign","fromArray","values","nameWithProperty","bindConstructorLayout","Class","layout","hasOwnProperty","layout_","boundConstructor_","makeDestinationObject","encode","decode","isCount","GreedyCount","ExternalLayout","elementSpan","rem","OffsetLayout","UInt","UIntBE","IntBE","V2E32","divmodInt64","hi32","lo32","NearUInt64","roundedInt64","NearUInt64BE","NearInt64","NearInt64BE","Float","FloatBE","Double","DoubleBE","Sequence","elementLayout","count","idx","getSpan","elo","reduce","v","Structure","fields","decodePrefixes","acc","fd","fsp","dest","firstOffset","lastOffset","lastWrote","fv","shift","layoutFor","offsetOf","UnionLayoutDiscriminator","UnionDiscriminator","discr","defaultLayout","discriminator","configGetSourceVariant","gsv","boundGetSourceVariant","bind","vlo","getVariant","defaultGetSourceVariant","registry","tag","dlo","clo","usesPrefixDiscriminator","contentOffset","getSourceVariant","addVariant","variant","VariantLayout","vb","Union","fixBitwiseResult","BitStructure","word","msb","_packedSetValue","_packedGetValue","addField","bf","BitField","addBoolean","Boolean","fieldFor","container","usedBits","sum","totalBits","valueMask","wordMask","wordValue","srcBuffer","CString","srcb","maxSpan","encodeDecode","browser","toBigIntLE_1","toBigIntLE","reversed","reverse","hex","toBigIntBE","toBufferLE_1","toBufferLE","width","padStart","toBufferBE","u64","bigIntLayout","bigInt","bool","u8","boolLayout","publicKey","publicKeyLayout","toBuffer","TokenError","TokenAccountNotFoundError","TokenInvalidAccountOwnerError","TokenInvalidAccountSizeError","TokenInvalidMintError","TokenOwnerOffCurveError","AccountType","ACCOUNT_TYPE_SIZE","MULTISIG_SIZE","AccountState","AccountLayout","u32","ACCOUNT_SIZE","MintLayout","MINT_SIZE","async","getMint","connection","address","commitment","programId","info","owner","rawMint","tlvData","Mint","mintAuthority","mintAuthorityOption","supply","decimals","isInitialized","freezeAuthority","freezeAuthorityOption","unpackMint","getAccountInfo","getAssociatedTokenAddressSync","mint","allowOwnerOffCurve","associatedTokenProgramId","isOnCurve","findProgramAddressSync","createAssociatedTokenAccountIdempotentInstruction","payer","associatedToken","instructionData","keys","pubkey","isSigner","isWritable","SystemProgram","TransactionInstruction","buildAssociatedTokenAccountInstruction","ErrorType","SNSError","captureStackTrace","Numberu32","fromBuffer","InvalidBufferLength","toNumber","Numberu64","U64Overflow","extendStatics","integers","EncodeBuffer","buffer_size","view","DataView","resize_if_necessary","needed_space","new_buffer","get_used_buffer","store_value","bSize","substring","toCall","store_bytes","DecodeBuffer","assert_enough_buffer","consume_value","consume_bytes","__extends","__proto__","p","__","expect_type","fieldPath","expect_same_size","expected","VALID_STRING_TYPES","VALID_OBJECT_KEYS","ErrorSchema","_super","schema","JSON","stringify","validate_schema","key","_i","schema_1","sch","validate_enum_schema","validate_array_schema","validate_map_schema","validate_struct_schema","BorshSerializer","checkTypes","encoded","encode_value","encode_integer","encode_string","encode_boolean","encode_option","encode_enum","encode_array","encode_set","encode_map","encode_struct","utils","encode_bigint","buffer_len","_value","utf8Bytes","charCode","option","valueKey","valueSchema","encode_arraylike","encode_buffer","Set","values_1","value_1","isMap","Map","keys_1","map","_a","pop","BorshDeserializer","bufferArray","decode_value","decode_integer","decode_string","decode_boolean","decode_option","decode_enum","decode_array","decode_set","decode_map","decode_struct","decode_bigint","startsWith","signed","reduceRight","r","asIntN","byte","fromCodePoint","valueIndex","result","add","serialize","validate","deserialize","createInstruction","nameProgramId","systemProgramId","nameKey","nameOwnerKey","payerKey","hashed_name","lamports","space","nameClassKey","nameParent","nameParentOwner","buffers","Int8Array","updateInstruction","nameAccountKey","input_data","nameUpdateSigner","transferInstruction","newOwnerKey","currentNameOwnerKey","parentOwner","default","deleteInstruction","refundTargetKey","createV2Instruction","getInstruction","rentSysvarAccount","rootDomain","nameAccount","reverseLookupAccount","centralState","buyer","buyerTokenAccount","usdcVault","state","createReverseInstruction","namingServiceProgram","reverseLookup","systemProgram","feePayer","rentSysvar","parentName","parentNameOwner","createInstructionV3","referrerIdxOpt","buyerTokenSource","pythMappingAcc","pythProductAcc","pythPriceAcc","vault","splTokenProgram","referrerAccountOpt","createWithNftInstruction","nftSource","nftMetadata","nftMint","masterEdition","collection","mplTokenMetadata","burnInstruction","nameServiceId","domain","resellingState","reallocInstruction","NAME_TOKENIZER_ID","MINT_PREFIX","getDomainMint","Tag","NftRecord","nonce","retrieve","accountInfo","findKey","findProgramAddress","retrieveNftOwner","filters","memcmp","toBase58","dataSize","getProgramAccounts","account","retrieveNfts","getFilter","closure","record","getRecordFromMint","retrieveRecords","promises","Promise","all","filter","NameRegistryState","class","HEADER_LEN","AccountDoesNotExist","nftOwner","_retrieveBatch","nameAccountKeys","nameAccounts","getMultipleAccountsInfo","retrieveBatch","splice","lengths","isBytes","exists","instance","checkFinished","destroyed","finished","crypto","globalThis","createView","rotr","Uint32Array","TextEncoder","toBytes","Hash","clone","_cloneInto","wrapConstructor","hashCons","hashC","update","digest","outputLen","blockLen","SHA2","padOffset","take","process","dataView","roundClean","digestInto","setBigUint64","_32n","_u32_max","wh","wl","h","l","setUint32","oview","outLen","destroy","to","Chi","Maj","SHA256_K","IV","SHA256_W","SHA256","A","B","C","D","F","G","H","getUint32","W15","W2","s0","s1","T1","T2","sha256","NAME_PROGRAM_ID","HASH_PREFIX","ROOT_DOMAIN_ACCOUNT","REGISTER_PROGRAM_ID","PYTH_FIDA_PRICE_ACC","BONFIDA_FIDA_BNB","REVERSE_LOOKUP_CLASS","TWITTER_VERIFICATION_AUTHORITY","TWITTER_ROOT_PARENT_REGISTRY_KEY","SOL_RECORD_SIG_LEN","BONFIDA_USDC_BNB","USDC_MINT","REFERRERS","TOKENS_SYM_MINT","PYTH_FEEDS","price","product","PYTH_MAPPING_ACC","VAULT_OWNER","CUSTOM_BG_TLD","WOLVES_COLLECTION_METADATA","METAPLEX_ID","getNameOwner","getHashedName","hashed","getNameAccountKey","nameClass","seeds","performReverseLookup","hashedReverseLookup","NoAccountData","nameLength","performReverseLookupBatch","reverseLookupAccounts","_derive","parent","getDomainKey","endsWith","splitted","parentKey","isSub","subKey","recordPrefix","isSubRecord","InvalidInput","getReverseKey","Record","RECORD_V1_SIZE","SOL","ETH","BSC","Injective","AAAA","Background","RecordVersion","TINF_OK","TINF_DATA_ERROR","Tree","Uint16Array","trans","Data","source","sourceIndex","bitcount","destLen","ltree","dtree","sltree","sdtree","length_bits","length_base","dist_bits","dist_base","clcidx","code_tree","tinf_build_bits_base","base","delta","offs","tinf_build_tree","t","off","tinf_getbit","bit","tinf_read_bits","tinf_decode_symbol","cur","tinf_decode_trees","lt","dt","hlit","hdist","hclen","clen","prev","tinf_inflate_block_data","dist","tinf_inflate_uncompressed_block","tinf_build_fixed_trees","tinyInflate","bfinal","isBigEndian","swap_1","swap32LE","inflate","unicodeTrie","uncompressedLength","highStart","errorValue","index","DATA_BLOCK_LENGTH","INDEX_1_OFFSET","INDEX_2_BLOCK_LENGTH","self","window","version","VERSION","_hasatob","atob","_hasbtoa","btoa","_hasBuffer","_TD","TextDecoder","_TE","b64ch","b64chs","b64tab","tab","forEach","b64re","_fromCC","_U8Afrom","it","_mkUriSafe","m0","_tidyB64","btoaPolyfill","bin","c0","c1","c2","asc","pad","_btoa","_fromUint8Array","u8a","maxargs","strs","fromUint8Array","urlsafe","cb_utob","cc","re_utob","utob","u","_encode","encodeURI","re_btou","cb_btou","cccc","btou","atobPolyfill","test","u24","r1","r2","charAt","_atob","_toUint8Array","toUint8Array","_unURI","_decode","isValid","_noEnum","extendString","_add","body","extendUint8Array","extendBuiltins","gBase64","fromBase64","toBase64","encodeURL","k","Base64","factory","types","Other","CR","LF","Control","Extend","ZWJ","Regional_Indicator","Prepend","SpacingMark","L","V","T","LV","LVT","Extended_Pictographic","typeTrieData","extPictData","require$$2","UnicodeTrie","require$$3","typeTrie","extPict","is","GB11State","nextGraphemeClusterSize","ts","ri","gb11State","curr","next","graphemesplit","graphemeClusters","codePointAt","getHashedNameSync","getNameAccountKeySync","deserializeReverse","reverseLookupBatch","findSubdomains","filtersRevs","reverses","filtersSubs","subs","dataSlice","revKey","getReverseKeyFromDomainKey","rev","_deriveSync","classKey","getDomainKeySync","recordClass","V2","CENTRAL_STATE_SNS_RECORDS","getAllDomains","wallet","getDomainKeysWithReverses","encodedNameArr","names","pubKey","getAllRegisteredDomains","getReverseKeySync","domainKey","check","errorType","getTokenizedDomains","nftRecords","getDomainPriceFromName","splitGraphemes","ALPHABET","BASE_MAP","xc","BASE","LEADER","FACTOR","iFACTOR","decodeUnsafe","psz","zeroes","b256","carry","it3","it4","vch","pbegin","pend","b58","it1","it2","repeat","bs58","root","ipv4Part","ipv4Regexes","fourOctet","RegExp","threeOctet","twoOctet","longValue","octalRegex","hexRegex","zoneIndex","ipv6Part","ipv6Regexes","native","deprecatedTransitional","transitional","expandIPv6","replacement","replacementCount","colonCount","lastColon","zoneId","match","ref","results","matchCIDR","second","partSize","cidrBits","part","parseIntAuto","padPart","ipaddr","IPv4","octets","octet","SpecialRanges","unspecified","broadcast","multicast","linkLocal","loopback","carrierGradeNat","private","reserved","kind","other","cidrRange","prefixLengthFromSubnetMask","cidr","stop","zerotable","zeros","subnetMatch","toIPv4MappedAddress","IPv6","parse","toNormalizedString","broadcastAddressFromCIDR","parseCIDR","ipInterfaceOctets","subnetMaskOctets","subnetMaskFromPrefixLength","isIPv4","parser","isValidFourPartDecimal","networkAddressFromCIDR","maskLength","prefix","filledOctetCount","uniqueLocal","ipv4Mapped","rfc6145","rfc6052","teredo","benchmarking","amt","as112v6","deprecated","orchid2","isIPv4MappedAddress","toFixedLengthString","addr","suffix","toIPv4Address","high","low","toRFC5952String","regex","bestMatchIndex","bestMatchLength","exec","isIPv6","e2","rangeList","defaultName","rangeName","rangeSubnets","subnet","module","maxInt","overflow","stringFromCharCode","digitToBasic","digit","flag","adapt","numPoints","firstTime","baseMinusTMin","counter","extra","ucs2decode","inputLength","bias","currentValue","basicLength","handledCPCount","handledCPCountPlusOne","q","qMinusT","baseMinusT","U32_MASK64","fromBig","le","lst","Ah","Al","toBig","shrSH","_l","shrSL","rotrSH","rotrSL","rotrBH","rotrBL","rotr32H","_h","rotr32L","rotlSH","rotlSL","rotlBH","rotlBL","Bh","Bl","add3L","Cl","add3H","Ch","add4L","Dl","add4H","Dh","add5H","Eh","add5L","El","u64$1","SHA512_Kh","SHA512_Kl","SHA512_W_H","SHA512_W_L","SHA512","Fh","Fl","Gh","Gl","Hh","Hl","W15h","W15l","s0h","s0l","W2h","W2l","s1h","s1l","SUMl","SUMh","sigma1h","sigma1l","CHIh","CHIl","T1ll","T1h","T1l","sigma0h","sigma0l","MAJh","MAJl","All","sha512","_1n","_2n","hexes","_","bytesToHex","hexToNumber","asciis","_0","_9","_A","_F","_f","asciiToBase16","char","hexToBytes","hl","al","ai","n1","n2","bytesToNumberLE","numberToBytesBE","numberToBytesLE","ensureBytes","title","expectedLength","concatBytes","arrays","bitMask","validatorFns","bigint","function","boolean","stringOrUint8Array","isSafeInteger","field","object","Fp","hash","validateObject","validators","optValidators","checkField","fieldName","isOptional","checkVal","entries","_0n","_3n","_4n","_5n","_8n","mod","power","modulo","pow2","invert","number","FpSqrt","P","p1div4","eql","sqr","nv","ONE","legendreC","Q","S","Z","Q1div2","neg","g","ZERO","t2","ge","tonelliShanks","FIELD_FIELDS","nLength","nBitLength","_nBitLength","nByteLength","ceil","validateBasic","curve","ORDER","MASK","BYTES","BITS","Gx","Gy","freeze","VERIFY_DEFAULT","zip215","twistedEdwards","curveDef","CURVE","opts","ut","randomBytes","adjustScalarBytes","uvRatio","mapToCurve","validateOpts","CURVE_ORDER","prehash","cHash","cofactor","modP","sqrt","inv","ctx","phflag","inBig","inRange","in0MaskRange","assertInRange","assertGE0","pointPrecomputes","isPoint","Point","ex","ey","ez","et","toAffine","fromAffine","normalizeZ","points","toInv","invertBatch","_setWindowSize","windowSize","_WINDOW_SIZE","delete","assertValidity","is0","X","Y","X2","Y2","Z2","Z4","aX2","X1","Y1","Z1","X1Z2","X2Z1","Y1Z2","Y2Z1","negate","double","x1y1","X3","Y3","T3","Z3","subtract","wNAF","wnaf","wNAFCached","multiply","scalar","f","multiplyUnsafe","I","unsafeLadder","isSmallOrder","isTorsionFree","iz","z","ax","ay","zz","clearCofactor","fromHex","normed","lastByte","y2","isXOdd","isLastByteOdd","fromPrivateKey","privKey","getExtendedPublicKey","point","toRawBytes","toHex","constTimeNegate","condition","item","W","windows","elm","precomputeWindow","precomputes","mask","maxNumber","shiftBy","wbits","offset1","offset2","cond1","cond2","precomputesMap","transform","comp","modN","modN_LE","head","pointBytes","hashDomainToScalar","context","msgs","verifyOpts","getPublicKey","sign","options","R","verify","sig","SB","ExtendedPoint","randomPrivateKey","precompute","ED25519_P","ED25519_SQRT_M1","_10n","_20n","_40n","_80n","bitLen","redef","sqrtP","isOdd","lhs","rhs","FpPow","div","sqrN","addN","subN","mulN","nums","lastMultiplied","inverted","FpInvertBatch","cmov","fromBytes","bytesToNumberBE","Field","ed25519Defaults","bytesLength","getRandomValues","v3","b2","b4","b5","b10","b20","b40","b80","b160","b240","b250","pow_p_5_8","ed25519_pow_2_252_3","vx2","root1","root2","useRoot1","useRoot2","noRoot","ed25519","ELL2_C1","assertNumber","chain","args","id","wrap","digits","letter","separator","padding","chr","normalize","FpSqrtEven","gcd","radix2carry","convertRadix2","radix2","revPadding","unsafeWrapper","toUpperCase","BECH_ALPHABET","POLYMOD_GENERATORS","bech32Polymod","pre","chk","bechChecksum","words","encodingConst","genBech32","ENCODING_CONST","_words","fromWords","toWords","fromWordsUnsafe","lowered","sepIndex","actualLength","decodeToBytes","bech32","checkSolRecord","signedRecord","getRecordKeySync","V1","getRecord","NoRecordData","deserializeRecord","recordSize","getRecords","records","pubkeys","registries","getIpfsRecord","IPFS","getArweaveRecord","ARWV","getEthRecord","getBtcRecord","BTC","getLtcRecord","LTC","getDogeRecord","DOGE","getEmailRecord","Email","getUrlRecord","Url","getDiscordRecord","Discord","getGithubRecord","Github","getRedditRecord","Reddit","getTwitterRecord","Twitter","getTelegramRecord","Telegram","getPicRecord","Pic","getShdwRecord","SHDW","getSolRecord","getPointRecord","POINT","getBscRecord","getInjectiveRecord","getBackpackRecord","Backpack","getBackgroundRecord","recordKey","findIndex","trimNullPaddingIdx","encoder","expectedBuffer","bs58Encode","decoded","isValidIp","InvalidRecordData","ipFromByteArray","serializeRecord","CNAME","TXT","encodePunycode","UnsupportedRecord","InvalidEvmAddress","InvalidInjectiveAddress","parseIp","InvalidARecord","InvalidAAAARecord","InvalidRecordInput","serializeSolRecord","content","signer","signature","encodedMessage","valid","InvalidSignature","GUARDIANS","ETH_ROA_RECORDS","verifyRightOfAssociation","verifier","getRecordV2Key","recordObj","SnsRecord","roaId","getRoAId","validation","has","Validation","Ethereum","Solana","MissingVerifier","header","rightOfAssociationValidation","UTF8_ENCODED","SELF_SIGNED","deserializeRecordV2Content","basic","oldi","w","decodePunnycode","serializeRecordV2Content","getRecordV2","retrievedRecord","deserializedContent","getContent","getMultipleRecordsV2","retrievedRecords","createNameRegistry","nameOwner","balance","getMinimumBalanceForRentExemption","parentAccount","updateNameRegistryData","transferNameOwnership","newOwner","curentNameOwner","deleteNameRegistry","registerDomainName","referrerKey","InvalidDomain","cs","derived_state","refIdx","refTokenAccount","ixs","ix","pythFeed","PythFeedNotFound","SYSVAR_RENT_PUBKEY","createReverseName","createSubdomain","subdomain","InvalidSubdomain","ix_create","reverseKey","ix_reverse","createRecordInstruction","createRecordV2Instruction","allocateAndPostRecord","SNS_RECORDS_ID","updateRecordInstruction","serialized","updateRecordV2Instruction","editRecord","deleteRecordV2","deleteRecord","validateRecordV2Content","staleness","validateSolanaSignature","writRoaRecordV2","writeRoa","ethValidateRecordV2Content","expectedPubkey","validateEthSignature","createSolRecordInstruction","updateSolRecordInstruction","burnDomain","registerWithNft","transferSubdomain","isParentOwnerSigner","createVerifiedTwitterRegistry","twitterHandle","verifiedPubkey","hashedTwitterHandle","twitterHandleRegistryKey","instructions","createReverseTwitterRegistry","changeTwitterRegistryData","changeVerifiedPubkey","currentVerifiedPubkey","newVerifiedPubkey","deleteTwitterRegistry","hashedVerifiedPubkey","reverseRegistryKey","getTwitterRegistryKey","twitter_handle","getTwitterRegistry","getHandleAndRegistryKey","reverseRegistryState","ReverseTwitterRegistryState","twitterRegistryKey","getTwitterHandleandRegistryKeyViaFilters","filteredAccounts","getTwitterRegistryData","MultipleRegistries","reverseTwitterAccountKey","reverseTwitterAccount","InvalidReverseTwitter","reverseTwitterRegistryStateBuff","resolve","solV2Owner","resolveSolRecordV2","resolveSolRecordV1","err","solRecord","recordV2Key","solV2Record","stalenessId","getStalenessId","stalenessValidation","NAME_OFFERS_ID","FavouriteDomain","FavouriteDomainNotFound","getKey","getKeySync","getFavoriteDomain","favKey","favorite","domainOwner","stale","getMultipleFavoriteDomains","wallets","favKeys","favDomains","revKeys","atas","domainInfos","revs","tokenAccs","domainInfo","tokenAcc","amount","CustomBg","DEGEN_POET_KEY","RBG_0x00_KEY","getCustomBgKeys","customBg","hashedBg","hashedDomain","bgKey","getArtistPubkey","bg","DegenPoet1","Rgb0x001","InvalidCustomBg","verifyStaleness","constants","devnet","bindings"],"mappings":"4WAWA,gBATAA,WAuCA,SAAqBC,GACnB,IAAIC,EAAOC,EAAQF,GACfG,EAAWF,EAAK,GAChBG,EAAkBH,EAAK,GAC3B,OAAuC,GAA9BE,EAAWC,GAAuB,EAAKA,CAClD,EA3CAL,YAiDA,SAAsBC,GACpB,IAAIK,EAcAC,EAbAL,EAAOC,EAAQF,GACfG,EAAWF,EAAK,GAChBG,EAAkBH,EAAK,GAEvBM,EAAM,IAAIC,EAVhB,SAAsBR,EAAKG,EAAUC,GACnC,OAAuC,GAA9BD,EAAWC,GAAuB,EAAKA,CAClD,CAQoBK,CAAYT,EAAKG,EAAUC,IAEzCM,EAAU,EAGVC,EAAMP,EAAkB,EACxBD,EAAW,EACXA,EAGJ,IAAKG,EAAI,EAAGA,EAAIK,EAAKL,GAAK,EACxBD,EACGO,EAAUZ,EAAIa,WAAWP,KAAO,GAChCM,EAAUZ,EAAIa,WAAWP,EAAI,KAAO,GACpCM,EAAUZ,EAAIa,WAAWP,EAAI,KAAO,EACrCM,EAAUZ,EAAIa,WAAWP,EAAI,IAC/BC,EAAIG,KAAcL,GAAO,GAAM,IAC/BE,EAAIG,KAAcL,GAAO,EAAK,IAC9BE,EAAIG,KAAmB,IAANL,EAGK,IAApBD,IACFC,EACGO,EAAUZ,EAAIa,WAAWP,KAAO,EAChCM,EAAUZ,EAAIa,WAAWP,EAAI,KAAO,EACvCC,EAAIG,KAAmB,IAANL,GAGK,IAApBD,IACFC,EACGO,EAAUZ,EAAIa,WAAWP,KAAO,GAChCM,EAAUZ,EAAIa,WAAWP,EAAI,KAAO,EACpCM,EAAUZ,EAAIa,WAAWP,EAAI,KAAO,EACvCC,EAAIG,KAAcL,GAAO,EAAK,IAC9BE,EAAIG,KAAmB,IAANL,GAGnB,OAAOE,CACT,EA5FAR,cAkHA,SAAwBe,GAQtB,IAPA,IAAIT,EACAM,EAAMG,EAAMC,OACZC,EAAaL,EAAM,EACnBM,EAAQ,GACRC,EAAiB,MAGZZ,EAAI,EAAGa,EAAOR,EAAMK,EAAYV,EAAIa,EAAMb,GAAKY,EACtDD,EAAMG,KAAKC,EAAYP,EAAOR,EAAIA,EAAIY,EAAkBC,EAAOA,EAAQb,EAAIY,IAI1D,IAAfF,GACFX,EAAMS,EAAMH,EAAM,GAClBM,EAAMG,KACJE,EAAOjB,GAAO,GACdiB,EAAQjB,GAAO,EAAK,IACpB,OAEsB,IAAfW,IACTX,GAAOS,EAAMH,EAAM,IAAM,GAAKG,EAAMH,EAAM,GAC1CM,EAAMG,KACJE,EAAOjB,GAAO,IACdiB,EAAQjB,GAAO,EAAK,IACpBiB,EAAQjB,GAAO,EAAK,IACpB,MAIJ,OAAOY,EAAMM,KAAK,GACpB,GA/IID,EAAS,GACTV,EAAY,GACZJ,EAA4B,oBAAfgB,WAA6BA,WAAaC,MAEvDC,EAAO,mEACFpB,EAAI,EAAsBA,EAAboB,KAAwBpB,EAC5CgB,EAAOhB,GAAKoB,EAAKpB,GACjBM,EAAUc,EAAKb,WAAWP,IAAMA,EAQlC,SAASJ,EAASF,GAChB,IAAIW,EAAMX,EAAIe,OAEd,GAAIJ,EAAM,EAAI,EACZ,MAAM,IAAIgB,MAAM,kDAKlB,IAAIxB,EAAWH,EAAI4B,QAAQ,KAO3B,OANkB,IAAdzB,IAAiBA,EAAWQ,GAMzB,CAACR,EAJcA,IAAaQ,EAC/B,EACA,EAAKR,EAAW,EAGtB,CAmEA,SAASkB,EAAaP,EAAOe,EAAOC,GAGlC,IAFA,IAAIzB,EARoB0B,EASpBC,EAAS,GACJ1B,EAAIuB,EAAOvB,EAAIwB,EAAKxB,GAAK,EAChCD,GACIS,EAAMR,IAAM,GAAM,WAClBQ,EAAMR,EAAI,IAAM,EAAK,QACP,IAAfQ,EAAMR,EAAI,IACb0B,EAAOZ,KAdFE,GADiBS,EAeM1B,IAdT,GAAK,IACxBiB,EAAOS,GAAO,GAAK,IACnBT,EAAOS,GAAO,EAAI,IAClBT,EAAa,GAANS,IAaT,OAAOC,EAAOT,KAAK,GACrB,CAlGAX,EAAU,IAAIC,WAAW,IAAM,GAC/BD,EAAU,IAAIC,WAAW,IAAM;;AClBnBoB,KAAG,SAAUC,EAAQC,EAAQC,EAAMC,EAAMC,GACnD,IAAIC,EAAGC,EACHC,EAAiB,EAATH,EAAcD,EAAO,EAC7BK,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBE,GAAS,EACTtC,EAAI8B,EAAQE,EAAS,EAAK,EAC1BO,EAAIT,GAAQ,EAAI,EAChBU,EAAIZ,EAAOC,EAAS7B,GAOxB,IALAA,GAAKuC,EAELN,EAAIO,GAAM,IAAOF,GAAU,EAC3BE,KAAQF,EACRA,GAASH,EACFG,EAAQ,EAAGL,EAAS,IAAJA,EAAWL,EAAOC,EAAS7B,GAAIA,GAAKuC,EAAGD,GAAS,GAKvE,IAHAJ,EAAID,GAAM,IAAOK,GAAU,EAC3BL,KAAQK,EACRA,GAASP,EACFO,EAAQ,EAAGJ,EAAS,IAAJA,EAAWN,EAAOC,EAAS7B,GAAIA,GAAKuC,EAAGD,GAAS,GAEvE,GAAU,IAANL,EACFA,EAAI,EAAII,MACH,IAAIJ,IAAMG,EACf,OAAOF,EAAIO,IAAsBC,KAAdF,GAAK,EAAI,GAE5BN,GAAQS,KAAKC,IAAI,EAAGb,GACpBE,GAAQI,CACT,CACD,OAAQG,GAAK,EAAI,GAAKN,EAAIS,KAAKC,IAAI,EAAGX,EAAIF,EAC5C,EAEAJ,MAAgB,SAAUC,EAAQiB,EAAOhB,EAAQC,EAAMC,EAAMC,GAC3D,IAAIC,EAAGC,EAAGY,EACNX,EAAiB,EAATH,EAAcD,EAAO,EAC7BK,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBW,EAAe,KAAThB,EAAcY,KAAKC,IAAI,GAAI,IAAMD,KAAKC,IAAI,GAAI,IAAM,EAC1D5C,EAAI8B,EAAO,EAAKE,EAAS,EACzBO,EAAIT,EAAO,GAAK,EAChBU,EAAIK,EAAQ,GAAgB,IAAVA,GAAe,EAAIA,EAAQ,EAAK,EAAI,EAmC1D,IAjCAA,EAAQF,KAAKK,IAAIH,GAEbI,MAAMJ,IAAUA,IAAUH,KAC5BR,EAAIe,MAAMJ,GAAS,EAAI,EACvBZ,EAAIG,IAEJH,EAAIU,KAAKO,MAAMP,KAAKQ,IAAIN,GAASF,KAAKS,KAClCP,GAASC,EAAIH,KAAKC,IAAI,GAAIX,IAAM,IAClCA,IACAa,GAAK,IAGLD,GADEZ,EAAII,GAAS,EACNU,EAAKD,EAELC,EAAKJ,KAAKC,IAAI,EAAG,EAAIP,IAEpBS,GAAK,IACfb,IACAa,GAAK,GAGHb,EAAII,GAASD,GACfF,EAAI,EACJD,EAAIG,GACKH,EAAII,GAAS,GACtBH,GAAMW,EAAQC,EAAK,GAAKH,KAAKC,IAAI,EAAGb,GACpCE,GAAQI,IAERH,EAAIW,EAAQF,KAAKC,IAAI,EAAGP,EAAQ,GAAKM,KAAKC,IAAI,EAAGb,GACjDE,EAAI,IAIDF,GAAQ,EAAGH,EAAOC,EAAS7B,GAAS,IAAJkC,EAAUlC,GAAKuC,EAAGL,GAAK,IAAKH,GAAQ,GAI3E,IAFAE,EAAKA,GAAKF,EAAQG,EAClBC,GAAQJ,EACDI,EAAO,EAAGP,EAAOC,EAAS7B,GAAS,IAAJiC,EAAUjC,GAAKuC,EAAGN,GAAK,IAAKE,GAAQ,GAE1EP,EAAOC,EAAS7B,EAAIuC,IAAU,IAAJC,CAC5B;;;;;;;aC1EA,MAAMa,EAASC,EACT3B,EAAU4B,EACVC,EACe,mBAAXC,QAAkD,mBAAlBA,OAAY,IAChDA,OAAY,IAAE,8BACd,KAENC,EAAAC,OAAiBA,EACjBD,EAAAE,WAyTA,SAAqBnD,IACdA,GAAUA,IACbA,EAAS,GAEX,OAAOkD,EAAOE,OAAOpD,EACvB,EA7TAiD,EAAAI,kBAA4B,GAE5B,MAAMC,EAAe,WAwDrB,SAASC,EAAcvD,GACrB,GAAIA,EAASsD,EACX,MAAM,IAAIE,WAAW,cAAgBxD,EAAS,kCAGhD,MAAMyD,EAAM,IAAIhD,WAAWT,GAE3B,OADA0D,OAAOC,eAAeF,EAAKP,EAAOU,WAC3BH,CACT,CAYA,SAASP,EAAQW,EAAKC,EAAkB9D,GAEtC,GAAmB,iBAAR6D,EAAkB,CAC3B,GAAgC,iBAArBC,EACT,MAAM,IAAIC,UACR,sEAGJ,OAAOC,EAAYH,EACpB,CACD,OAAOI,EAAKJ,EAAKC,EAAkB9D,EACrC,CAIA,SAASiE,EAAM7B,EAAO0B,EAAkB9D,GACtC,GAAqB,iBAAVoC,EACT,OAqHJ,SAAqB8B,EAAQC,GACH,iBAAbA,GAAsC,KAAbA,IAClCA,EAAW,QAGb,IAAKjB,EAAOkB,WAAWD,GACrB,MAAM,IAAIJ,UAAU,qBAAuBI,GAG7C,MAAMnE,EAAwC,EAA/BqE,EAAWH,EAAQC,GAClC,IAAIV,EAAMF,EAAavD,GAEvB,MAAMsE,EAASb,EAAIc,MAAML,EAAQC,GAE7BG,IAAWtE,IAIbyD,EAAMA,EAAIe,MAAM,EAAGF,IAGrB,OAAOb,CACT,CA3IWgB,CAAWrC,EAAO0B,GAG3B,GAAIY,YAAYC,OAAOvC,GACrB,OAkJJ,SAAwBwC,GACtB,GAAIC,EAAWD,EAAWnE,YAAa,CACrC,MAAMqE,EAAO,IAAIrE,WAAWmE,GAC5B,OAAOG,EAAgBD,EAAK3D,OAAQ2D,EAAKE,WAAYF,EAAKT,WAC3D,CACD,OAAOY,EAAcL,EACvB,CAxJWM,CAAc9C,GAGvB,GAAa,MAATA,EACF,MAAM,IAAI2B,UACR,yHACiD3B,GAIrD,GAAIyC,EAAWzC,EAAOsC,cACjBtC,GAASyC,EAAWzC,EAAMjB,OAAQuD,aACrC,OAAOK,EAAgB3C,EAAO0B,EAAkB9D,GAGlD,GAAiC,oBAAtBmF,oBACNN,EAAWzC,EAAO+C,oBAClB/C,GAASyC,EAAWzC,EAAMjB,OAAQgE,oBACrC,OAAOJ,EAAgB3C,EAAO0B,EAAkB9D,GAGlD,GAAqB,iBAAVoC,EACT,MAAM,IAAI2B,UACR,yEAIJ,MAAMqB,EAAUhD,EAAMgD,SAAWhD,EAAMgD,UACvC,GAAe,MAAXA,GAAmBA,IAAYhD,EACjC,OAAOc,EAAOe,KAAKmB,EAAStB,EAAkB9D,GAGhD,MAAMqF,EAkJR,SAAqBC,GACnB,GAAIpC,EAAOqC,SAASD,GAAM,CACxB,MAAM1F,EAA4B,EAAtB4F,EAAQF,EAAItF,QAClByD,EAAMF,EAAa3D,GAEzB,OAAmB,IAAf6D,EAAIzD,QAIRsF,EAAIR,KAAKrB,EAAK,EAAG,EAAG7D,GAHX6D,CAKV,CAED,QAAmBgC,IAAfH,EAAItF,OACN,MAA0B,iBAAfsF,EAAItF,QAAuB0F,EAAYJ,EAAItF,QAC7CuD,EAAa,GAEf0B,EAAcK,GAGvB,GAAiB,WAAbA,EAAIK,MAAqBjF,MAAMkF,QAAQN,EAAIO,MAC7C,OAAOZ,EAAcK,EAAIO,KAE7B,CAzKYC,CAAW1D,GACrB,GAAIiD,EAAG,OAAOA,EAEd,GAAsB,oBAAXrC,QAAgD,MAAtBA,OAAO+C,aACH,mBAA9B3D,EAAMY,OAAO+C,aACtB,OAAO7C,EAAOe,KAAK7B,EAAMY,OAAO+C,aAAa,UAAWjC,EAAkB9D,GAG5E,MAAM,IAAI+D,UACR,yHACiD3B,EAErD,CAmBA,SAAS4D,EAAYC,GACnB,GAAoB,iBAATA,EACT,MAAM,IAAIlC,UAAU,0CACf,GAAIkC,EAAO,EAChB,MAAM,IAAIzC,WAAW,cAAgByC,EAAO,iCAEhD,CA0BA,SAASjC,EAAaiC,GAEpB,OADAD,EAAWC,GACJ1C,EAAa0C,EAAO,EAAI,EAAoB,EAAhBT,EAAQS,GAC7C,CAuCA,SAAShB,EAAeiB,GACtB,MAAMlG,EAASkG,EAAMlG,OAAS,EAAI,EAA4B,EAAxBwF,EAAQU,EAAMlG,QAC9CyD,EAAMF,EAAavD,GACzB,IAAK,IAAIT,EAAI,EAAGA,EAAIS,EAAQT,GAAK,EAC/BkE,EAAIlE,GAAgB,IAAX2G,EAAM3G,GAEjB,OAAOkE,CACT,CAUA,SAASsB,EAAiBmB,EAAOlB,EAAYhF,GAC3C,GAAIgF,EAAa,GAAKkB,EAAM7B,WAAaW,EACvC,MAAM,IAAIxB,WAAW,wCAGvB,GAAI0C,EAAM7B,WAAaW,GAAchF,GAAU,GAC7C,MAAM,IAAIwD,WAAW,wCAGvB,IAAIC,EAYJ,OAVEA,OADiBgC,IAAfT,QAAuCS,IAAXzF,EACxB,IAAIS,WAAWyF,QACDT,IAAXzF,EACH,IAAIS,WAAWyF,EAAOlB,GAEtB,IAAIvE,WAAWyF,EAAOlB,EAAYhF,GAI1C0D,OAAOC,eAAeF,EAAKP,EAAOU,WAE3BH,CACT,CA2BA,SAAS+B,EAASxF,GAGhB,GAAIA,GAAUsD,EACZ,MAAM,IAAIE,WAAW,0DACaF,EAAa6C,SAAS,IAAM,UAEhE,OAAgB,EAATnG,CACT,CAsGA,SAASqE,EAAYH,EAAQC,GAC3B,GAAIjB,EAAOqC,SAASrB,GAClB,OAAOA,EAAOlE,OAEhB,GAAI0E,YAAYC,OAAOT,IAAWW,EAAWX,EAAQQ,aACnD,OAAOR,EAAOG,WAEhB,GAAsB,iBAAXH,EACT,MAAM,IAAIH,UACR,kGAC0BG,GAI9B,MAAMtE,EAAMsE,EAAOlE,OACboG,EAAaC,UAAUrG,OAAS,IAAsB,IAAjBqG,UAAU,GACrD,IAAKD,GAAqB,IAARxG,EAAW,OAAO,EAGpC,IAAI0G,GAAc,EAClB,OACE,OAAQnC,GACN,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAOvE,EACT,IAAK,OACL,IAAK,QACH,OAAO2G,EAAYrC,GAAQlE,OAC7B,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAa,EAANJ,EACT,IAAK,MACH,OAAOA,IAAQ,EACjB,IAAK,SACH,OAAO4G,EAActC,GAAQlE,OAC/B,QACE,GAAIsG,EACF,OAAOF,GAAa,EAAIG,EAAYrC,GAAQlE,OAE9CmE,GAAY,GAAKA,GAAUsC,cAC3BH,GAAc,EAGtB,CAGA,SAASI,EAAcvC,EAAUrD,EAAOC,GACtC,IAAIuF,GAAc,EAclB,SALcb,IAAV3E,GAAuBA,EAAQ,KACjCA,EAAQ,GAINA,EAAQ6F,KAAK3G,OACf,MAAO,GAOT,SAJYyF,IAAR1E,GAAqBA,EAAM4F,KAAK3G,UAClCe,EAAM4F,KAAK3G,QAGTe,GAAO,EACT,MAAO,GAOT,IAHAA,KAAS,KACTD,KAAW,GAGT,MAAO,GAKT,IAFKqD,IAAUA,EAAW,UAGxB,OAAQA,GACN,IAAK,MACH,OAAOyC,EAASD,KAAM7F,EAAOC,GAE/B,IAAK,OACL,IAAK,QACH,OAAO8F,EAAUF,KAAM7F,EAAOC,GAEhC,IAAK,QACH,OAAO+F,EAAWH,KAAM7F,EAAOC,GAEjC,IAAK,SACL,IAAK,SACH,OAAOgG,EAAYJ,KAAM7F,EAAOC,GAElC,IAAK,SACH,OAAOiG,EAAYL,KAAM7F,EAAOC,GAElC,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOkG,EAAaN,KAAM7F,EAAOC,GAEnC,QACE,GAAIuF,EAAa,MAAM,IAAIvC,UAAU,qBAAuBI,GAC5DA,GAAYA,EAAW,IAAIsC,cAC3BH,GAAc,EAGtB,CAUA,SAASY,EAAM7B,EAAG8B,EAAG1F,GACnB,MAAMlC,EAAI8F,EAAE8B,GACZ9B,EAAE8B,GAAK9B,EAAE5D,GACT4D,EAAE5D,GAAKlC,CACT,CA2IA,SAAS6H,EAAsBjG,EAAQkG,EAAKrC,EAAYb,EAAUmD,GAEhE,GAAsB,IAAlBnG,EAAOnB,OAAc,OAAQ,EAmBjC,GAhB0B,iBAAfgF,GACTb,EAAWa,EACXA,EAAa,GACJA,EAAa,WACtBA,EAAa,WACJA,GAAc,aACvBA,GAAc,YAGZU,EADJV,GAAcA,KAGZA,EAAasC,EAAM,EAAKnG,EAAOnB,OAAS,GAItCgF,EAAa,IAAGA,EAAa7D,EAAOnB,OAASgF,GAC7CA,GAAc7D,EAAOnB,OAAQ,CAC/B,GAAIsH,EAAK,OAAQ,EACZtC,EAAa7D,EAAOnB,OAAS,CACtC,MAAS,GAAIgF,EAAa,EAAG,CACzB,IAAIsC,EACC,OAAQ,EADJtC,EAAa,CAEvB,CAQD,GALmB,iBAARqC,IACTA,EAAMnE,EAAOe,KAAKoD,EAAKlD,IAIrBjB,EAAOqC,SAAS8B,GAElB,OAAmB,IAAfA,EAAIrH,QACE,EAEHuH,EAAapG,EAAQkG,EAAKrC,EAAYb,EAAUmD,GAClD,GAAmB,iBAARD,EAEhB,OADAA,GAAY,IACgC,mBAAjC5G,WAAWmD,UAAU/C,QAC1ByG,EACK7G,WAAWmD,UAAU/C,QAAQ2G,KAAKrG,EAAQkG,EAAKrC,GAE/CvE,WAAWmD,UAAU6D,YAAYD,KAAKrG,EAAQkG,EAAKrC,GAGvDuC,EAAapG,EAAQ,CAACkG,GAAMrC,EAAYb,EAAUmD,GAG3D,MAAM,IAAIvD,UAAU,uCACtB,CAEA,SAASwD,EAAc/H,EAAK6H,EAAKrC,EAAYb,EAAUmD,GACrD,IA0BI/H,EA1BAmI,EAAY,EACZC,EAAYnI,EAAIQ,OAChB4H,EAAYP,EAAIrH,OAEpB,QAAiByF,IAAbtB,IAEe,UADjBA,EAAW0D,OAAO1D,GAAUsC,gBACY,UAAbtC,GACV,YAAbA,GAAuC,aAAbA,GAAyB,CACrD,GAAI3E,EAAIQ,OAAS,GAAKqH,EAAIrH,OAAS,EACjC,OAAQ,EAEV0H,EAAY,EACZC,GAAa,EACbC,GAAa,EACb5C,GAAc,CACf,CAGH,SAAS8C,EAAMrE,EAAKlE,GAClB,OAAkB,IAAdmI,EACKjE,EAAIlE,GAEJkE,EAAIsE,aAAaxI,EAAImI,EAE/B,CAGD,GAAIJ,EAAK,CACP,IAAIU,GAAc,EAClB,IAAKzI,EAAIyF,EAAYzF,EAAIoI,EAAWpI,IAClC,GAAIuI,EAAKtI,EAAKD,KAAOuI,EAAKT,GAAqB,IAAhBW,EAAoB,EAAIzI,EAAIyI,IAEzD,IADoB,IAAhBA,IAAmBA,EAAazI,GAChCA,EAAIyI,EAAa,IAAMJ,EAAW,OAAOI,EAAaN,OAEtC,IAAhBM,IAAmBzI,GAAKA,EAAIyI,GAChCA,GAAc,CAGtB,MAEI,IADIhD,EAAa4C,EAAYD,IAAW3C,EAAa2C,EAAYC,GAC5DrI,EAAIyF,EAAYzF,GAAK,EAAGA,IAAK,CAChC,IAAI0I,GAAQ,EACZ,IAAK,IAAIC,EAAI,EAAGA,EAAIN,EAAWM,IAC7B,GAAIJ,EAAKtI,EAAKD,EAAI2I,KAAOJ,EAAKT,EAAKa,GAAI,CACrCD,GAAQ,EACR,KACD,CAEH,GAAIA,EAAO,OAAO1I,CACnB,CAGH,OAAQ,CACV,CAcA,SAAS4I,EAAU1E,EAAKS,EAAQ9C,EAAQpB,GACtCoB,EAASgH,OAAOhH,IAAW,EAC3B,MAAMiH,EAAY5E,EAAIzD,OAASoB,EAC1BpB,GAGHA,EAASoI,OAAOpI,IACHqI,IACXrI,EAASqI,GAJXrI,EAASqI,EAQX,MAAMC,EAASpE,EAAOlE,OAKtB,IAAIT,EACJ,IAJIS,EAASsI,EAAS,IACpBtI,EAASsI,EAAS,GAGf/I,EAAI,EAAGA,EAAIS,IAAUT,EAAG,CAC3B,MAAMgJ,EAASC,SAAStE,EAAOuE,OAAW,EAAJlJ,EAAO,GAAI,IACjD,GAAImG,EAAY6C,GAAS,OAAOhJ,EAChCkE,EAAIrC,EAAS7B,GAAKgJ,CACnB,CACD,OAAOhJ,CACT,CAEA,SAASmJ,EAAWjF,EAAKS,EAAQ9C,EAAQpB,GACvC,OAAO2I,EAAWpC,EAAYrC,EAAQT,EAAIzD,OAASoB,GAASqC,EAAKrC,EAAQpB,EAC3E,CAEA,SAAS4I,EAAYnF,EAAKS,EAAQ9C,EAAQpB,GACxC,OAAO2I,EAypCT,SAAuBE,GACrB,MAAMC,EAAY,GAClB,IAAK,IAAIvJ,EAAI,EAAGA,EAAIsJ,EAAI7I,SAAUT,EAEhCuJ,EAAUzI,KAAyB,IAApBwI,EAAI/I,WAAWP,IAEhC,OAAOuJ,CACT,CAhqCoBC,CAAa7E,GAAST,EAAKrC,EAAQpB,EACvD,CAEA,SAASgJ,EAAavF,EAAKS,EAAQ9C,EAAQpB,GACzC,OAAO2I,EAAWnC,EAActC,GAAST,EAAKrC,EAAQpB,EACxD,CAEA,SAASiJ,EAAWxF,EAAKS,EAAQ9C,EAAQpB,GACvC,OAAO2I,EA0pCT,SAAyBE,EAAKK,GAC5B,IAAI7G,EAAG8G,EAAIC,EACX,MAAMN,EAAY,GAClB,IAAK,IAAIvJ,EAAI,EAAGA,EAAIsJ,EAAI7I,WACjBkJ,GAAS,GAAK,KADa3J,EAGhC8C,EAAIwG,EAAI/I,WAAWP,GACnB4J,EAAK9G,GAAK,EACV+G,EAAK/G,EAAI,IACTyG,EAAUzI,KAAK+I,GACfN,EAAUzI,KAAK8I,GAGjB,OAAOL,CACT,CAxqCoBO,CAAenF,EAAQT,EAAIzD,OAASoB,GAASqC,EAAKrC,EAAQpB,EAC9E,CA8EA,SAASgH,EAAavD,EAAK3C,EAAOC,GAChC,OAAc,IAAVD,GAAeC,IAAQ0C,EAAIzD,OACtB4C,EAAO0G,cAAc7F,GAErBb,EAAO0G,cAAc7F,EAAIe,MAAM1D,EAAOC,GAEjD,CAEA,SAAS8F,EAAWpD,EAAK3C,EAAOC,GAC9BA,EAAMmB,KAAKqH,IAAI9F,EAAIzD,OAAQe,GAC3B,MAAMyI,EAAM,GAEZ,IAAIjK,EAAIuB,EACR,KAAOvB,EAAIwB,GAAK,CACd,MAAM0I,EAAYhG,EAAIlE,GACtB,IAAImK,EAAY,KACZC,EAAoBF,EAAY,IAChC,EACCA,EAAY,IACT,EACCA,EAAY,IACT,EACA,EAEZ,GAAIlK,EAAIoK,GAAoB5I,EAAK,CAC/B,IAAI6I,EAAYC,EAAWC,EAAYC,EAEvC,OAAQJ,GACN,KAAK,EACCF,EAAY,MACdC,EAAYD,GAEd,MACF,KAAK,EACHG,EAAanG,EAAIlE,EAAI,GACO,MAAV,IAAbqK,KACHG,GAA6B,GAAZN,IAAqB,EAAoB,GAAbG,EACzCG,EAAgB,MAClBL,EAAYK,IAGhB,MACF,KAAK,EACHH,EAAanG,EAAIlE,EAAI,GACrBsK,EAAYpG,EAAIlE,EAAI,GACQ,MAAV,IAAbqK,IAAsD,MAAV,IAAZC,KACnCE,GAA6B,GAAZN,IAAoB,IAAoB,GAAbG,IAAsB,EAAmB,GAAZC,EACrEE,EAAgB,OAAUA,EAAgB,OAAUA,EAAgB,SACtEL,EAAYK,IAGhB,MACF,KAAK,EACHH,EAAanG,EAAIlE,EAAI,GACrBsK,EAAYpG,EAAIlE,EAAI,GACpBuK,EAAarG,EAAIlE,EAAI,GACO,MAAV,IAAbqK,IAAsD,MAAV,IAAZC,IAAsD,MAAV,IAAbC,KAClEC,GAA6B,GAAZN,IAAoB,IAAqB,GAAbG,IAAsB,IAAmB,GAAZC,IAAqB,EAAoB,GAAbC,EAClGC,EAAgB,OAAUA,EAAgB,UAC5CL,EAAYK,IAIrB,CAEiB,OAAdL,GAGFA,EAAY,MACZC,EAAmB,GACVD,EAAY,QAErBA,GAAa,MACbF,EAAInJ,KAAKqJ,IAAc,GAAK,KAAQ,OACpCA,EAAY,MAAqB,KAAZA,GAGvBF,EAAInJ,KAAKqJ,GACTnK,GAAKoK,CACN,CAED,OAQF,SAAgCK,GAC9B,MAAMpK,EAAMoK,EAAWhK,OACvB,GAAIJ,GAAOqK,EACT,OAAOpC,OAAOqC,aAAaC,MAAMtC,OAAQmC,GAI3C,IAAIR,EAAM,GACNjK,EAAI,EACR,KAAOA,EAAIK,GACT4J,GAAO3B,OAAOqC,aAAaC,MACzBtC,OACAmC,EAAWxF,MAAMjF,EAAGA,GAAK0K,IAG7B,OAAOT,CACT,CAxBSY,CAAsBZ,EAC/B,CA3+BAvG,EAAAoH,WAAqB/G,EAgBrBJ,EAAOoH,oBAUP,WAEE,IACE,MAAM9K,EAAM,IAAIiB,WAAW,GACrB8J,EAAQ,CAAEC,IAAK,WAAc,OAAO,EAAE,GAG5C,OAFA9G,OAAOC,eAAe4G,EAAO9J,WAAWmD,WACxCF,OAAOC,eAAenE,EAAK+K,GACN,KAAd/K,EAAIgL,KACZ,CAAC,MAAOhJ,GACP,OAAO,CACR,CACH,CArB6BiJ,GAExBvH,EAAOoH,qBAA0C,oBAAZI,SACb,mBAAlBA,QAAQC,OACjBD,QAAQC,MACN,iJAkBJjH,OAAOkH,eAAe1H,EAAOU,UAAW,SAAU,CAChDiH,YAAY,EACZC,IAAK,WACH,GAAK5H,EAAOqC,SAASoB,MACrB,OAAOA,KAAKxF,MACb,IAGHuC,OAAOkH,eAAe1H,EAAOU,UAAW,SAAU,CAChDiH,YAAY,EACZC,IAAK,WACH,GAAK5H,EAAOqC,SAASoB,MACrB,OAAOA,KAAK3B,UACb,IAoCH9B,EAAO6H,SAAW,KA8DlB7H,EAAOe,KAAO,SAAU7B,EAAO0B,EAAkB9D,GAC/C,OAAOiE,EAAK7B,EAAO0B,EAAkB9D,IAKvC0D,OAAOC,eAAeT,EAAOU,UAAWnD,WAAWmD,WACnDF,OAAOC,eAAeT,EAAQzC,YA8B9ByC,EAAOE,MAAQ,SAAU6C,EAAM+E,EAAM7G,GACnC,OArBF,SAAgB8B,EAAM+E,EAAM7G,GAE1B,OADA6B,EAAWC,GACPA,GAAQ,EACH1C,EAAa0C,QAETR,IAATuF,EAIyB,iBAAb7G,EACVZ,EAAa0C,GAAM+E,KAAKA,EAAM7G,GAC9BZ,EAAa0C,GAAM+E,KAAKA,GAEvBzH,EAAa0C,EACtB,CAOS7C,CAAM6C,EAAM+E,EAAM7G,IAW3BjB,EAAOc,YAAc,SAAUiC,GAC7B,OAAOjC,EAAYiC,IAKrB/C,EAAO+H,gBAAkB,SAAUhF,GACjC,OAAOjC,EAAYiC,IA8GrB/C,EAAOqC,SAAW,SAAmBF,GACnC,OAAY,MAALA,IAA6B,IAAhBA,EAAE6F,WACpB7F,IAAMnC,EAAOU,WAGjBV,EAAOiI,QAAU,SAAkBC,EAAG/F,GAGpC,GAFIR,EAAWuG,EAAG3K,cAAa2K,EAAIlI,EAAOe,KAAKmH,EAAGA,EAAEhK,OAAQgK,EAAE/G,aAC1DQ,EAAWQ,EAAG5E,cAAa4E,EAAInC,EAAOe,KAAKoB,EAAGA,EAAEjE,OAAQiE,EAAEhB,cACzDnB,EAAOqC,SAAS6F,KAAOlI,EAAOqC,SAASF,GAC1C,MAAM,IAAItB,UACR,yEAIJ,GAAIqH,IAAM/F,EAAG,OAAO,EAEpB,IAAIgG,EAAID,EAAEpL,OACNsL,EAAIjG,EAAErF,OAEV,IAAK,IAAIT,EAAI,EAAGK,EAAMsC,KAAKqH,IAAI8B,EAAGC,GAAI/L,EAAIK,IAAOL,EAC/C,GAAI6L,EAAE7L,KAAO8F,EAAE9F,GAAI,CACjB8L,EAAID,EAAE7L,GACN+L,EAAIjG,EAAE9F,GACN,KACD,CAGH,OAAI8L,EAAIC,GAAW,EACfA,EAAID,EAAU,EACX,GAGTnI,EAAOkB,WAAa,SAAqBD,GACvC,OAAQ0D,OAAO1D,GAAUsC,eACvB,IAAK,MACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO,EACT,QACE,OAAO,IAIbvD,EAAOqI,OAAS,SAAiBC,EAAMxL,GACrC,IAAKU,MAAMkF,QAAQ4F,GACjB,MAAM,IAAIzH,UAAU,+CAGtB,GAAoB,IAAhByH,EAAKxL,OACP,OAAOkD,EAAOE,MAAM,GAGtB,IAAI7D,EACJ,QAAekG,IAAXzF,EAEF,IADAA,EAAS,EACJT,EAAI,EAAGA,EAAIiM,EAAKxL,SAAUT,EAC7BS,GAAUwL,EAAKjM,GAAGS,OAItB,MAAMmB,EAAS+B,EAAOc,YAAYhE,GAClC,IAAIyL,EAAM,EACV,IAAKlM,EAAI,EAAGA,EAAIiM,EAAKxL,SAAUT,EAAG,CAChC,IAAIkE,EAAM+H,EAAKjM,GACf,GAAIsF,EAAWpB,EAAKhD,YACdgL,EAAMhI,EAAIzD,OAASmB,EAAOnB,QACvBkD,EAAOqC,SAAS9B,KAAMA,EAAMP,EAAOe,KAAKR,IAC7CA,EAAIqB,KAAK3D,EAAQsK,IAEjBhL,WAAWmD,UAAU8H,IAAIlE,KACvBrG,EACAsC,EACAgI,OAGC,KAAKvI,EAAOqC,SAAS9B,GAC1B,MAAM,IAAIM,UAAU,+CAEpBN,EAAIqB,KAAK3D,EAAQsK,EAClB,CACDA,GAAOhI,EAAIzD,MACZ,CACD,OAAOmB,GAkDT+B,EAAOmB,WAAaA,EA8EpBnB,EAAOU,UAAUsH,WAAY,EAQ7BhI,EAAOU,UAAU+H,OAAS,WACxB,MAAM/L,EAAM+G,KAAK3G,OACjB,GAAIJ,EAAM,GAAM,EACd,MAAM,IAAI4D,WAAW,6CAEvB,IAAK,IAAIjE,EAAI,EAAGA,EAAIK,EAAKL,GAAK,EAC5B2H,EAAKP,KAAMpH,EAAGA,EAAI,GAEpB,OAAOoH,MAGTzD,EAAOU,UAAUgI,OAAS,WACxB,MAAMhM,EAAM+G,KAAK3G,OACjB,GAAIJ,EAAM,GAAM,EACd,MAAM,IAAI4D,WAAW,6CAEvB,IAAK,IAAIjE,EAAI,EAAGA,EAAIK,EAAKL,GAAK,EAC5B2H,EAAKP,KAAMpH,EAAGA,EAAI,GAClB2H,EAAKP,KAAMpH,EAAI,EAAGA,EAAI,GAExB,OAAOoH,MAGTzD,EAAOU,UAAUiI,OAAS,WACxB,MAAMjM,EAAM+G,KAAK3G,OACjB,GAAIJ,EAAM,GAAM,EACd,MAAM,IAAI4D,WAAW,6CAEvB,IAAK,IAAIjE,EAAI,EAAGA,EAAIK,EAAKL,GAAK,EAC5B2H,EAAKP,KAAMpH,EAAGA,EAAI,GAClB2H,EAAKP,KAAMpH,EAAI,EAAGA,EAAI,GACtB2H,EAAKP,KAAMpH,EAAI,EAAGA,EAAI,GACtB2H,EAAKP,KAAMpH,EAAI,EAAGA,EAAI,GAExB,OAAOoH,MAGTzD,EAAOU,UAAUuC,SAAW,WAC1B,MAAMnG,EAAS2G,KAAK3G,OACpB,OAAe,IAAXA,EAAqB,GACA,IAArBqG,UAAUrG,OAAqB6G,EAAUF,KAAM,EAAG3G,GAC/C0G,EAAayD,MAAMxD,KAAMN,YAGlCnD,EAAOU,UAAUkI,eAAiB5I,EAAOU,UAAUuC,SAEnDjD,EAAOU,UAAUmI,OAAS,SAAiB1G,GACzC,IAAKnC,EAAOqC,SAASF,GAAI,MAAM,IAAItB,UAAU,6BAC7C,OAAI4C,OAAStB,GACsB,IAA5BnC,EAAOiI,QAAQxE,KAAMtB,IAG9BnC,EAAOU,UAAUoI,QAAU,WACzB,IAAInD,EAAM,GACV,MAAMoD,EAAMhJ,EAAQI,kBAGpB,OAFAwF,EAAMlC,KAAKR,SAAS,MAAO,EAAG8F,GAAKC,QAAQ,UAAW,OAAOC,OACzDxF,KAAK3G,OAASiM,IAAKpD,GAAO,SACvB,WAAaA,EAAM,KAExB9F,IACFG,EAAOU,UAAUb,GAAuBG,EAAOU,UAAUoI,SAG3D9I,EAAOU,UAAUuH,QAAU,SAAkBiB,EAAQtL,EAAOC,EAAKsL,EAAWC,GAI1E,GAHIzH,EAAWuH,EAAQ3L,cACrB2L,EAASlJ,EAAOe,KAAKmI,EAAQA,EAAOhL,OAAQgL,EAAO/H,cAEhDnB,EAAOqC,SAAS6G,GACnB,MAAM,IAAIrI,UACR,wFAC2BqI,GAiB/B,QAbc3G,IAAV3E,IACFA,EAAQ,QAEE2E,IAAR1E,IACFA,EAAMqL,EAASA,EAAOpM,OAAS,QAEfyF,IAAd4G,IACFA,EAAY,QAEE5G,IAAZ6G,IACFA,EAAU3F,KAAK3G,QAGbc,EAAQ,GAAKC,EAAMqL,EAAOpM,QAAUqM,EAAY,GAAKC,EAAU3F,KAAK3G,OACtE,MAAM,IAAIwD,WAAW,sBAGvB,GAAI6I,GAAaC,GAAWxL,GAASC,EACnC,OAAO,EAET,GAAIsL,GAAaC,EACf,OAAQ,EAEV,GAAIxL,GAASC,EACX,OAAO,EAQT,GAAI4F,OAASyF,EAAQ,OAAO,EAE5B,IAAIf,GAJJiB,KAAa,IADbD,KAAe,GAMXf,GAPJvK,KAAS,IADTD,KAAW,GASX,MAAMlB,EAAMsC,KAAKqH,IAAI8B,EAAGC,GAElBiB,EAAW5F,KAAKnC,MAAM6H,EAAWC,GACjCE,EAAaJ,EAAO5H,MAAM1D,EAAOC,GAEvC,IAAK,IAAIxB,EAAI,EAAGA,EAAIK,IAAOL,EACzB,GAAIgN,EAAShN,KAAOiN,EAAWjN,GAAI,CACjC8L,EAAIkB,EAAShN,GACb+L,EAAIkB,EAAWjN,GACf,KACD,CAGH,OAAI8L,EAAIC,GAAW,EACfA,EAAID,EAAU,EACX,GA4HTnI,EAAOU,UAAU6I,SAAW,SAAmBpF,EAAKrC,EAAYb,GAC9D,OAAoD,IAA7CwC,KAAK9F,QAAQwG,EAAKrC,EAAYb,IAGvCjB,EAAOU,UAAU/C,QAAU,SAAkBwG,EAAKrC,EAAYb,GAC5D,OAAOiD,EAAqBT,KAAMU,EAAKrC,EAAYb,GAAU,IAG/DjB,EAAOU,UAAU6D,YAAc,SAAsBJ,EAAKrC,EAAYb,GACpE,OAAOiD,EAAqBT,KAAMU,EAAKrC,EAAYb,GAAU,IA6C/DjB,EAAOU,UAAUW,MAAQ,SAAgBL,EAAQ9C,EAAQpB,EAAQmE,GAE/D,QAAesB,IAAXrE,EACF+C,EAAW,OACXnE,EAAS2G,KAAK3G,OACdoB,EAAS,OAEJ,QAAeqE,IAAXzF,GAA0C,iBAAXoB,EACxC+C,EAAW/C,EACXpB,EAAS2G,KAAK3G,OACdoB,EAAS,MAEJ,KAAIsL,SAAStL,GAUlB,MAAM,IAAIR,MACR,2EAVFQ,KAAoB,EAChBsL,SAAS1M,IACXA,KAAoB,OACHyF,IAAbtB,IAAwBA,EAAW,UAEvCA,EAAWnE,EACXA,OAASyF,EAMZ,CAED,MAAM4C,EAAY1B,KAAK3G,OAASoB,EAGhC,SAFeqE,IAAXzF,GAAwBA,EAASqI,KAAWrI,EAASqI,GAEpDnE,EAAOlE,OAAS,IAAMA,EAAS,GAAKoB,EAAS,IAAOA,EAASuF,KAAK3G,OACrE,MAAM,IAAIwD,WAAW,0CAGlBW,IAAUA,EAAW,QAE1B,IAAImC,GAAc,EAClB,OACE,OAAQnC,GACN,IAAK,MACH,OAAOgE,EAASxB,KAAMzC,EAAQ9C,EAAQpB,GAExC,IAAK,OACL,IAAK,QACH,OAAO0I,EAAU/B,KAAMzC,EAAQ9C,EAAQpB,GAEzC,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAO4I,EAAWjC,KAAMzC,EAAQ9C,EAAQpB,GAE1C,IAAK,SAEH,OAAOgJ,EAAYrC,KAAMzC,EAAQ9C,EAAQpB,GAE3C,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOiJ,EAAUtC,KAAMzC,EAAQ9C,EAAQpB,GAEzC,QACE,GAAIsG,EAAa,MAAM,IAAIvC,UAAU,qBAAuBI,GAC5DA,GAAY,GAAKA,GAAUsC,cAC3BH,GAAc,IAKtBpD,EAAOU,UAAU+I,OAAS,WACxB,MAAO,CACLhH,KAAM,SACNE,KAAMnF,MAAMkD,UAAUY,MAAMgD,KAAKb,KAAKiG,MAAQjG,KAAM,KA2FxD,MAAMsD,EAAuB,KAoB7B,SAASnD,EAAYrD,EAAK3C,EAAOC,GAC/B,IAAI8L,EAAM,GACV9L,EAAMmB,KAAKqH,IAAI9F,EAAIzD,OAAQe,GAE3B,IAAK,IAAIxB,EAAIuB,EAAOvB,EAAIwB,IAAOxB,EAC7BsN,GAAOhF,OAAOqC,aAAsB,IAATzG,EAAIlE,IAEjC,OAAOsN,CACT,CAEA,SAAS9F,EAAatD,EAAK3C,EAAOC,GAChC,IAAI8L,EAAM,GACV9L,EAAMmB,KAAKqH,IAAI9F,EAAIzD,OAAQe,GAE3B,IAAK,IAAIxB,EAAIuB,EAAOvB,EAAIwB,IAAOxB,EAC7BsN,GAAOhF,OAAOqC,aAAazG,EAAIlE,IAEjC,OAAOsN,CACT,CAEA,SAASjG,EAAUnD,EAAK3C,EAAOC,GAC7B,MAAMnB,EAAM6D,EAAIzD,SAEXc,GAASA,EAAQ,KAAGA,EAAQ,KAC5BC,GAAOA,EAAM,GAAKA,EAAMnB,KAAKmB,EAAMnB,GAExC,IAAIkN,EAAM,GACV,IAAK,IAAIvN,EAAIuB,EAAOvB,EAAIwB,IAAOxB,EAC7BuN,GAAOC,EAAoBtJ,EAAIlE,IAEjC,OAAOuN,CACT,CAEA,SAAS7F,EAAcxD,EAAK3C,EAAOC,GACjC,MAAMiM,EAAQvJ,EAAIe,MAAM1D,EAAOC,GAC/B,IAAIyI,EAAM,GAEV,IAAK,IAAIjK,EAAI,EAAGA,EAAIyN,EAAMhN,OAAS,EAAGT,GAAK,EACzCiK,GAAO3B,OAAOqC,aAAa8C,EAAMzN,GAAqB,IAAfyN,EAAMzN,EAAI,IAEnD,OAAOiK,CACT,CAiCA,SAASyD,EAAa7L,EAAQ8L,EAAKlN,GACjC,GAAKoB,EAAS,GAAO,GAAKA,EAAS,EAAG,MAAM,IAAIoC,WAAW,sBAC3D,GAAIpC,EAAS8L,EAAMlN,EAAQ,MAAM,IAAIwD,WAAW,wCAClD,CAyQA,SAAS2J,EAAU1J,EAAKrB,EAAOhB,EAAQ8L,EAAKjB,EAAK1C,GAC/C,IAAKrG,EAAOqC,SAAS9B,GAAM,MAAM,IAAIM,UAAU,+CAC/C,GAAI3B,EAAQ6J,GAAO7J,EAAQmH,EAAK,MAAM,IAAI/F,WAAW,qCACrD,GAAIpC,EAAS8L,EAAMzJ,EAAIzD,OAAQ,MAAM,IAAIwD,WAAW,qBACtD,CA+FA,SAAS4J,EAAgB3J,EAAKrB,EAAOhB,EAAQmI,EAAK0C,GAChDoB,EAAWjL,EAAOmH,EAAK0C,EAAKxI,EAAKrC,EAAQ,GAEzC,IAAIgI,EAAKhB,OAAOhG,EAAQkL,OAAO,aAC/B7J,EAAIrC,KAAYgI,EAChBA,IAAW,EACX3F,EAAIrC,KAAYgI,EAChBA,IAAW,EACX3F,EAAIrC,KAAYgI,EAChBA,IAAW,EACX3F,EAAIrC,KAAYgI,EAChB,IAAID,EAAKf,OAAOhG,GAASkL,OAAO,IAAMA,OAAO,aAQ7C,OAPA7J,EAAIrC,KAAY+H,EAChBA,IAAW,EACX1F,EAAIrC,KAAY+H,EAChBA,IAAW,EACX1F,EAAIrC,KAAY+H,EAChBA,IAAW,EACX1F,EAAIrC,KAAY+H,EACT/H,CACT,CAEA,SAASmM,EAAgB9J,EAAKrB,EAAOhB,EAAQmI,EAAK0C,GAChDoB,EAAWjL,EAAOmH,EAAK0C,EAAKxI,EAAKrC,EAAQ,GAEzC,IAAIgI,EAAKhB,OAAOhG,EAAQkL,OAAO,aAC/B7J,EAAIrC,EAAS,GAAKgI,EAClBA,IAAW,EACX3F,EAAIrC,EAAS,GAAKgI,EAClBA,IAAW,EACX3F,EAAIrC,EAAS,GAAKgI,EAClBA,IAAW,EACX3F,EAAIrC,EAAS,GAAKgI,EAClB,IAAID,EAAKf,OAAOhG,GAASkL,OAAO,IAAMA,OAAO,aAQ7C,OAPA7J,EAAIrC,EAAS,GAAK+H,EAClBA,IAAW,EACX1F,EAAIrC,EAAS,GAAK+H,EAClBA,IAAW,EACX1F,EAAIrC,EAAS,GAAK+H,EAClBA,IAAW,EACX1F,EAAIrC,GAAU+H,EACP/H,EAAS,CAClB,CAkHA,SAASoM,EAAc/J,EAAKrB,EAAOhB,EAAQ8L,EAAKjB,EAAK1C,GACnD,GAAInI,EAAS8L,EAAMzJ,EAAIzD,OAAQ,MAAM,IAAIwD,WAAW,sBACpD,GAAIpC,EAAS,EAAG,MAAM,IAAIoC,WAAW,qBACvC,CAEA,SAASiK,EAAYhK,EAAKrB,EAAOhB,EAAQsM,EAAcC,GAOrD,OANAvL,GAASA,EACThB,KAAoB,EACfuM,GACHH,EAAa/J,EAAKrB,EAAOhB,EAAQ,GAEnCF,EAAQqD,MAAMd,EAAKrB,EAAOhB,EAAQsM,EAAc,GAAI,GAC7CtM,EAAS,CAClB,CAUA,SAASwM,EAAanK,EAAKrB,EAAOhB,EAAQsM,EAAcC,GAOtD,OANAvL,GAASA,EACThB,KAAoB,EACfuM,GACHH,EAAa/J,EAAKrB,EAAOhB,EAAQ,GAEnCF,EAAQqD,MAAMd,EAAKrB,EAAOhB,EAAQsM,EAAc,GAAI,GAC7CtM,EAAS,CAClB,CAzkBA8B,EAAOU,UAAUY,MAAQ,SAAgB1D,EAAOC,GAC9C,MAAMnB,EAAM+G,KAAK3G,QACjBc,IAAUA,GAGE,GACVA,GAASlB,GACG,IAAGkB,EAAQ,GACdA,EAAQlB,IACjBkB,EAAQlB,IANVmB,OAAc0E,IAAR1E,EAAoBnB,IAAQmB,GASxB,GACRA,GAAOnB,GACG,IAAGmB,EAAM,GACVA,EAAMnB,IACfmB,EAAMnB,GAGJmB,EAAMD,IAAOC,EAAMD,GAEvB,MAAM+M,EAASlH,KAAKmH,SAAShN,EAAOC,GAIpC,OAFA2C,OAAOC,eAAekK,EAAQ3K,EAAOU,WAE9BiK,GAWT3K,EAAOU,UAAUmK,WACjB7K,EAAOU,UAAUoK,WAAa,SAAqB5M,EAAQiD,EAAYsJ,GACrEvM,KAAoB,EACpBiD,KAA4B,EACvBsJ,GAAUV,EAAY7L,EAAQiD,EAAYsC,KAAK3G,QAEpD,IAAIqH,EAAMV,KAAKvF,GACX6M,EAAM,EACN1O,EAAI,EACR,OAASA,EAAI8E,IAAe4J,GAAO,MACjC5G,GAAOV,KAAKvF,EAAS7B,GAAK0O,EAG5B,OAAO5G,GAGTnE,EAAOU,UAAUsK,WACjBhL,EAAOU,UAAUuK,WAAa,SAAqB/M,EAAQiD,EAAYsJ,GACrEvM,KAAoB,EACpBiD,KAA4B,EACvBsJ,GACHV,EAAY7L,EAAQiD,EAAYsC,KAAK3G,QAGvC,IAAIqH,EAAMV,KAAKvF,IAAWiD,GACtB4J,EAAM,EACV,KAAO5J,EAAa,IAAM4J,GAAO,MAC/B5G,GAAOV,KAAKvF,IAAWiD,GAAc4J,EAGvC,OAAO5G,GAGTnE,EAAOU,UAAUwK,UACjBlL,EAAOU,UAAUyK,UAAY,SAAoBjN,EAAQuM,GAGvD,OAFAvM,KAAoB,EACfuM,GAAUV,EAAY7L,EAAQ,EAAGuF,KAAK3G,QACpC2G,KAAKvF,IAGd8B,EAAOU,UAAU0K,aACjBpL,EAAOU,UAAU2K,aAAe,SAAuBnN,EAAQuM,GAG7D,OAFAvM,KAAoB,EACfuM,GAAUV,EAAY7L,EAAQ,EAAGuF,KAAK3G,QACpC2G,KAAKvF,GAAWuF,KAAKvF,EAAS,IAAM,GAG7C8B,EAAOU,UAAU4K,aACjBtL,EAAOU,UAAUmE,aAAe,SAAuB3G,EAAQuM,GAG7D,OAFAvM,KAAoB,EACfuM,GAAUV,EAAY7L,EAAQ,EAAGuF,KAAK3G,QACnC2G,KAAKvF,IAAW,EAAKuF,KAAKvF,EAAS,IAG7C8B,EAAOU,UAAU6K,aACjBvL,EAAOU,UAAU8K,aAAe,SAAuBtN,EAAQuM,GAI7D,OAHAvM,KAAoB,EACfuM,GAAUV,EAAY7L,EAAQ,EAAGuF,KAAK3G,SAElC2G,KAAKvF,GACTuF,KAAKvF,EAAS,IAAM,EACpBuF,KAAKvF,EAAS,IAAM,IACD,SAAnBuF,KAAKvF,EAAS,IAGrB8B,EAAOU,UAAU+K,aACjBzL,EAAOU,UAAUgL,aAAe,SAAuBxN,EAAQuM,GAI7D,OAHAvM,KAAoB,EACfuM,GAAUV,EAAY7L,EAAQ,EAAGuF,KAAK3G,QAEpB,SAAf2G,KAAKvF,IACTuF,KAAKvF,EAAS,IAAM,GACrBuF,KAAKvF,EAAS,IAAM,EACrBuF,KAAKvF,EAAS,KAGlB8B,EAAOU,UAAUiL,gBAAkBC,GAAmB,SAA0B1N,GAE9E2N,EADA3N,KAAoB,EACG,UACvB,MAAM4N,EAAQrI,KAAKvF,GACb6N,EAAOtI,KAAKvF,EAAS,QACbqE,IAAVuJ,QAAgCvJ,IAATwJ,GACzBC,EAAY9N,EAAQuF,KAAK3G,OAAS,GAGpC,MAAMoJ,EAAK4F,EACQ,IAAjBrI,OAAOvF,GACU,MAAjBuF,OAAOvF,GACPuF,OAAOvF,GAAU,GAAK,GAElB+H,EAAKxC,OAAOvF,GACC,IAAjBuF,OAAOvF,GACU,MAAjBuF,OAAOvF,GACP6N,EAAO,GAAK,GAEd,OAAO3B,OAAOlE,IAAOkE,OAAOnE,IAAOmE,OAAO,IAC5C,IAEApK,EAAOU,UAAUuL,gBAAkBL,GAAmB,SAA0B1N,GAE9E2N,EADA3N,KAAoB,EACG,UACvB,MAAM4N,EAAQrI,KAAKvF,GACb6N,EAAOtI,KAAKvF,EAAS,QACbqE,IAAVuJ,QAAgCvJ,IAATwJ,GACzBC,EAAY9N,EAAQuF,KAAK3G,OAAS,GAGpC,MAAMmJ,EAAK6F,EAAQ,GAAK,GACL,MAAjBrI,OAAOvF,GACU,IAAjBuF,OAAOvF,GACPuF,OAAOvF,GAEHgI,EAAKzC,OAAOvF,GAAU,GAAK,GACd,MAAjBuF,OAAOvF,GACU,IAAjBuF,OAAOvF,GACP6N,EAEF,OAAQ3B,OAAOnE,IAAOmE,OAAO,KAAOA,OAAOlE,EAC7C,IAEAlG,EAAOU,UAAUwL,UAAY,SAAoBhO,EAAQiD,EAAYsJ,GACnEvM,KAAoB,EACpBiD,KAA4B,EACvBsJ,GAAUV,EAAY7L,EAAQiD,EAAYsC,KAAK3G,QAEpD,IAAIqH,EAAMV,KAAKvF,GACX6M,EAAM,EACN1O,EAAI,EACR,OAASA,EAAI8E,IAAe4J,GAAO,MACjC5G,GAAOV,KAAKvF,EAAS7B,GAAK0O,EAM5B,OAJAA,GAAO,IAEH5G,GAAO4G,IAAK5G,GAAOnF,KAAKC,IAAI,EAAG,EAAIkC,IAEhCgD,GAGTnE,EAAOU,UAAUyL,UAAY,SAAoBjO,EAAQiD,EAAYsJ,GACnEvM,KAAoB,EACpBiD,KAA4B,EACvBsJ,GAAUV,EAAY7L,EAAQiD,EAAYsC,KAAK3G,QAEpD,IAAIT,EAAI8E,EACJ4J,EAAM,EACN5G,EAAMV,KAAKvF,IAAW7B,GAC1B,KAAOA,EAAI,IAAM0O,GAAO,MACtB5G,GAAOV,KAAKvF,IAAW7B,GAAK0O,EAM9B,OAJAA,GAAO,IAEH5G,GAAO4G,IAAK5G,GAAOnF,KAAKC,IAAI,EAAG,EAAIkC,IAEhCgD,GAGTnE,EAAOU,UAAU0L,SAAW,SAAmBlO,EAAQuM,GAGrD,OAFAvM,KAAoB,EACfuM,GAAUV,EAAY7L,EAAQ,EAAGuF,KAAK3G,QACtB,IAAf2G,KAAKvF,IAC0B,GAA5B,IAAOuF,KAAKvF,GAAU,GADKuF,KAAKvF,IAI3C8B,EAAOU,UAAU2L,YAAc,SAAsBnO,EAAQuM,GAC3DvM,KAAoB,EACfuM,GAAUV,EAAY7L,EAAQ,EAAGuF,KAAK3G,QAC3C,MAAMqH,EAAMV,KAAKvF,GAAWuF,KAAKvF,EAAS,IAAM,EAChD,OAAc,MAANiG,EAAsB,WAANA,EAAmBA,GAG7CnE,EAAOU,UAAU4L,YAAc,SAAsBpO,EAAQuM,GAC3DvM,KAAoB,EACfuM,GAAUV,EAAY7L,EAAQ,EAAGuF,KAAK3G,QAC3C,MAAMqH,EAAMV,KAAKvF,EAAS,GAAMuF,KAAKvF,IAAW,EAChD,OAAc,MAANiG,EAAsB,WAANA,EAAmBA,GAG7CnE,EAAOU,UAAU6L,YAAc,SAAsBrO,EAAQuM,GAI3D,OAHAvM,KAAoB,EACfuM,GAAUV,EAAY7L,EAAQ,EAAGuF,KAAK3G,QAEnC2G,KAAKvF,GACVuF,KAAKvF,EAAS,IAAM,EACpBuF,KAAKvF,EAAS,IAAM,GACpBuF,KAAKvF,EAAS,IAAM,IAGzB8B,EAAOU,UAAU8L,YAAc,SAAsBtO,EAAQuM,GAI3D,OAHAvM,KAAoB,EACfuM,GAAUV,EAAY7L,EAAQ,EAAGuF,KAAK3G,QAEnC2G,KAAKvF,IAAW,GACrBuF,KAAKvF,EAAS,IAAM,GACpBuF,KAAKvF,EAAS,IAAM,EACpBuF,KAAKvF,EAAS,IAGnB8B,EAAOU,UAAU+L,eAAiBb,GAAmB,SAAyB1N,GAE5E2N,EADA3N,KAAoB,EACG,UACvB,MAAM4N,EAAQrI,KAAKvF,GACb6N,EAAOtI,KAAKvF,EAAS,QACbqE,IAAVuJ,QAAgCvJ,IAATwJ,GACzBC,EAAY9N,EAAQuF,KAAK3G,OAAS,GAGpC,MAAMqH,EAAMV,KAAKvF,EAAS,GACL,IAAnBuF,KAAKvF,EAAS,GACK,MAAnBuF,KAAKvF,EAAS,IACb6N,GAAQ,IAEX,OAAQ3B,OAAOjG,IAAQiG,OAAO,KAC5BA,OAAO0B,EACU,IAAjBrI,OAAOvF,GACU,MAAjBuF,OAAOvF,GACPuF,OAAOvF,GAAU,GAAK,GAC1B,IAEA8B,EAAOU,UAAUgM,eAAiBd,GAAmB,SAAyB1N,GAE5E2N,EADA3N,KAAoB,EACG,UACvB,MAAM4N,EAAQrI,KAAKvF,GACb6N,EAAOtI,KAAKvF,EAAS,QACbqE,IAAVuJ,QAAgCvJ,IAATwJ,GACzBC,EAAY9N,EAAQuF,KAAK3G,OAAS,GAGpC,MAAMqH,GAAO2H,GAAS,IACH,MAAjBrI,OAAOvF,GACU,IAAjBuF,OAAOvF,GACPuF,OAAOvF,GAET,OAAQkM,OAAOjG,IAAQiG,OAAO,KAC5BA,OAAO3G,OAAOvF,GAAU,GAAK,GACZ,MAAjBuF,OAAOvF,GACU,IAAjBuF,OAAOvF,GACP6N,EACJ,IAEA/L,EAAOU,UAAUiM,YAAc,SAAsBzO,EAAQuM,GAG3D,OAFAvM,KAAoB,EACfuM,GAAUV,EAAY7L,EAAQ,EAAGuF,KAAK3G,QACpCkB,EAAQ4G,KAAKnB,KAAMvF,GAAQ,EAAM,GAAI,IAG9C8B,EAAOU,UAAUkM,YAAc,SAAsB1O,EAAQuM,GAG3D,OAFAvM,KAAoB,EACfuM,GAAUV,EAAY7L,EAAQ,EAAGuF,KAAK3G,QACpCkB,EAAQ4G,KAAKnB,KAAMvF,GAAQ,EAAO,GAAI,IAG/C8B,EAAOU,UAAUmM,aAAe,SAAuB3O,EAAQuM,GAG7D,OAFAvM,KAAoB,EACfuM,GAAUV,EAAY7L,EAAQ,EAAGuF,KAAK3G,QACpCkB,EAAQ4G,KAAKnB,KAAMvF,GAAQ,EAAM,GAAI,IAG9C8B,EAAOU,UAAUoM,aAAe,SAAuB5O,EAAQuM,GAG7D,OAFAvM,KAAoB,EACfuM,GAAUV,EAAY7L,EAAQ,EAAGuF,KAAK3G,QACpCkB,EAAQ4G,KAAKnB,KAAMvF,GAAQ,EAAO,GAAI,IAS/C8B,EAAOU,UAAUqM,YACjB/M,EAAOU,UAAUsM,YAAc,SAAsB9N,EAAOhB,EAAQiD,EAAYsJ,GAI9E,GAHAvL,GAASA,EACThB,KAAoB,EACpBiD,KAA4B,GACvBsJ,EAAU,CAEbR,EAASxG,KAAMvE,EAAOhB,EAAQiD,EADbnC,KAAKC,IAAI,EAAG,EAAIkC,GAAc,EACK,EACrD,CAED,IAAI4J,EAAM,EACN1O,EAAI,EAER,IADAoH,KAAKvF,GAAkB,IAARgB,IACN7C,EAAI8E,IAAe4J,GAAO,MACjCtH,KAAKvF,EAAS7B,GAAM6C,EAAQ6L,EAAO,IAGrC,OAAO7M,EAASiD,GAGlBnB,EAAOU,UAAUuM,YACjBjN,EAAOU,UAAUwM,YAAc,SAAsBhO,EAAOhB,EAAQiD,EAAYsJ,GAI9E,GAHAvL,GAASA,EACThB,KAAoB,EACpBiD,KAA4B,GACvBsJ,EAAU,CAEbR,EAASxG,KAAMvE,EAAOhB,EAAQiD,EADbnC,KAAKC,IAAI,EAAG,EAAIkC,GAAc,EACK,EACrD,CAED,IAAI9E,EAAI8E,EAAa,EACjB4J,EAAM,EAEV,IADAtH,KAAKvF,EAAS7B,GAAa,IAAR6C,IACV7C,GAAK,IAAM0O,GAAO,MACzBtH,KAAKvF,EAAS7B,GAAM6C,EAAQ6L,EAAO,IAGrC,OAAO7M,EAASiD,GAGlBnB,EAAOU,UAAUyM,WACjBnN,EAAOU,UAAU0M,WAAa,SAAqBlO,EAAOhB,EAAQuM,GAKhE,OAJAvL,GAASA,EACThB,KAAoB,EACfuM,GAAUR,EAASxG,KAAMvE,EAAOhB,EAAQ,EAAG,IAAM,GACtDuF,KAAKvF,GAAmB,IAARgB,EACThB,EAAS,GAGlB8B,EAAOU,UAAU2M,cACjBrN,EAAOU,UAAU4M,cAAgB,SAAwBpO,EAAOhB,EAAQuM,GAMtE,OALAvL,GAASA,EACThB,KAAoB,EACfuM,GAAUR,EAASxG,KAAMvE,EAAOhB,EAAQ,EAAG,MAAQ,GACxDuF,KAAKvF,GAAmB,IAARgB,EAChBuE,KAAKvF,EAAS,GAAMgB,IAAU,EACvBhB,EAAS,GAGlB8B,EAAOU,UAAU6M,cACjBvN,EAAOU,UAAU8M,cAAgB,SAAwBtO,EAAOhB,EAAQuM,GAMtE,OALAvL,GAASA,EACThB,KAAoB,EACfuM,GAAUR,EAASxG,KAAMvE,EAAOhB,EAAQ,EAAG,MAAQ,GACxDuF,KAAKvF,GAAWgB,IAAU,EAC1BuE,KAAKvF,EAAS,GAAc,IAARgB,EACbhB,EAAS,GAGlB8B,EAAOU,UAAU+M,cACjBzN,EAAOU,UAAUgN,cAAgB,SAAwBxO,EAAOhB,EAAQuM,GAQtE,OAPAvL,GAASA,EACThB,KAAoB,EACfuM,GAAUR,EAASxG,KAAMvE,EAAOhB,EAAQ,EAAG,WAAY,GAC5DuF,KAAKvF,EAAS,GAAMgB,IAAU,GAC9BuE,KAAKvF,EAAS,GAAMgB,IAAU,GAC9BuE,KAAKvF,EAAS,GAAMgB,IAAU,EAC9BuE,KAAKvF,GAAmB,IAARgB,EACThB,EAAS,GAGlB8B,EAAOU,UAAUiN,cACjB3N,EAAOU,UAAUkN,cAAgB,SAAwB1O,EAAOhB,EAAQuM,GAQtE,OAPAvL,GAASA,EACThB,KAAoB,EACfuM,GAAUR,EAASxG,KAAMvE,EAAOhB,EAAQ,EAAG,WAAY,GAC5DuF,KAAKvF,GAAWgB,IAAU,GAC1BuE,KAAKvF,EAAS,GAAMgB,IAAU,GAC9BuE,KAAKvF,EAAS,GAAMgB,IAAU,EAC9BuE,KAAKvF,EAAS,GAAc,IAARgB,EACbhB,EAAS,GA+ClB8B,EAAOU,UAAUmN,iBAAmBjC,GAAmB,SAA2B1M,EAAOhB,EAAS,GAChG,OAAOgM,EAAezG,KAAMvE,EAAOhB,EAAQkM,OAAO,GAAIA,OAAO,sBAC/D,IAEApK,EAAOU,UAAUoN,iBAAmBlC,GAAmB,SAA2B1M,EAAOhB,EAAS,GAChG,OAAOmM,EAAe5G,KAAMvE,EAAOhB,EAAQkM,OAAO,GAAIA,OAAO,sBAC/D,IAEApK,EAAOU,UAAUqN,WAAa,SAAqB7O,EAAOhB,EAAQiD,EAAYsJ,GAG5E,GAFAvL,GAASA,EACThB,KAAoB,GACfuM,EAAU,CACb,MAAMuD,EAAQhP,KAAKC,IAAI,EAAI,EAAIkC,EAAc,GAE7C8I,EAASxG,KAAMvE,EAAOhB,EAAQiD,EAAY6M,EAAQ,GAAIA,EACvD,CAED,IAAI3R,EAAI,EACJ0O,EAAM,EACNkD,EAAM,EAEV,IADAxK,KAAKvF,GAAkB,IAARgB,IACN7C,EAAI8E,IAAe4J,GAAO,MAC7B7L,EAAQ,GAAa,IAAR+O,GAAsC,IAAzBxK,KAAKvF,EAAS7B,EAAI,KAC9C4R,EAAM,GAERxK,KAAKvF,EAAS7B,IAAO6C,EAAQ6L,GAAQ,GAAKkD,EAAM,IAGlD,OAAO/P,EAASiD,GAGlBnB,EAAOU,UAAUwN,WAAa,SAAqBhP,EAAOhB,EAAQiD,EAAYsJ,GAG5E,GAFAvL,GAASA,EACThB,KAAoB,GACfuM,EAAU,CACb,MAAMuD,EAAQhP,KAAKC,IAAI,EAAI,EAAIkC,EAAc,GAE7C8I,EAASxG,KAAMvE,EAAOhB,EAAQiD,EAAY6M,EAAQ,GAAIA,EACvD,CAED,IAAI3R,EAAI8E,EAAa,EACjB4J,EAAM,EACNkD,EAAM,EAEV,IADAxK,KAAKvF,EAAS7B,GAAa,IAAR6C,IACV7C,GAAK,IAAM0O,GAAO,MACrB7L,EAAQ,GAAa,IAAR+O,GAAsC,IAAzBxK,KAAKvF,EAAS7B,EAAI,KAC9C4R,EAAM,GAERxK,KAAKvF,EAAS7B,IAAO6C,EAAQ6L,GAAQ,GAAKkD,EAAM,IAGlD,OAAO/P,EAASiD,GAGlBnB,EAAOU,UAAUyN,UAAY,SAAoBjP,EAAOhB,EAAQuM,GAM9D,OALAvL,GAASA,EACThB,KAAoB,EACfuM,GAAUR,EAASxG,KAAMvE,EAAOhB,EAAQ,EAAG,KAAO,KACnDgB,EAAQ,IAAGA,EAAQ,IAAOA,EAAQ,GACtCuE,KAAKvF,GAAmB,IAARgB,EACThB,EAAS,GAGlB8B,EAAOU,UAAU0N,aAAe,SAAuBlP,EAAOhB,EAAQuM,GAMpE,OALAvL,GAASA,EACThB,KAAoB,EACfuM,GAAUR,EAASxG,KAAMvE,EAAOhB,EAAQ,EAAG,OAAS,OACzDuF,KAAKvF,GAAmB,IAARgB,EAChBuE,KAAKvF,EAAS,GAAMgB,IAAU,EACvBhB,EAAS,GAGlB8B,EAAOU,UAAU2N,aAAe,SAAuBnP,EAAOhB,EAAQuM,GAMpE,OALAvL,GAASA,EACThB,KAAoB,EACfuM,GAAUR,EAASxG,KAAMvE,EAAOhB,EAAQ,EAAG,OAAS,OACzDuF,KAAKvF,GAAWgB,IAAU,EAC1BuE,KAAKvF,EAAS,GAAc,IAARgB,EACbhB,EAAS,GAGlB8B,EAAOU,UAAU4N,aAAe,SAAuBpP,EAAOhB,EAAQuM,GAQpE,OAPAvL,GAASA,EACThB,KAAoB,EACfuM,GAAUR,EAASxG,KAAMvE,EAAOhB,EAAQ,EAAG,YAAa,YAC7DuF,KAAKvF,GAAmB,IAARgB,EAChBuE,KAAKvF,EAAS,GAAMgB,IAAU,EAC9BuE,KAAKvF,EAAS,GAAMgB,IAAU,GAC9BuE,KAAKvF,EAAS,GAAMgB,IAAU,GACvBhB,EAAS,GAGlB8B,EAAOU,UAAU6N,aAAe,SAAuBrP,EAAOhB,EAAQuM,GASpE,OARAvL,GAASA,EACThB,KAAoB,EACfuM,GAAUR,EAASxG,KAAMvE,EAAOhB,EAAQ,EAAG,YAAa,YACzDgB,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GAC5CuE,KAAKvF,GAAWgB,IAAU,GAC1BuE,KAAKvF,EAAS,GAAMgB,IAAU,GAC9BuE,KAAKvF,EAAS,GAAMgB,IAAU,EAC9BuE,KAAKvF,EAAS,GAAc,IAARgB,EACbhB,EAAS,GAGlB8B,EAAOU,UAAU8N,gBAAkB5C,GAAmB,SAA0B1M,EAAOhB,EAAS,GAC9F,OAAOgM,EAAezG,KAAMvE,EAAOhB,GAASkM,OAAO,sBAAuBA,OAAO,sBACnF,IAEApK,EAAOU,UAAU+N,gBAAkB7C,GAAmB,SAA0B1M,EAAOhB,EAAS,GAC9F,OAAOmM,EAAe5G,KAAMvE,EAAOhB,GAASkM,OAAO,sBAAuBA,OAAO,sBACnF,IAiBApK,EAAOU,UAAUgO,aAAe,SAAuBxP,EAAOhB,EAAQuM,GACpE,OAAOF,EAAW9G,KAAMvE,EAAOhB,GAAQ,EAAMuM,IAG/CzK,EAAOU,UAAUiO,aAAe,SAAuBzP,EAAOhB,EAAQuM,GACpE,OAAOF,EAAW9G,KAAMvE,EAAOhB,GAAQ,EAAOuM,IAahDzK,EAAOU,UAAUkO,cAAgB,SAAwB1P,EAAOhB,EAAQuM,GACtE,OAAOC,EAAYjH,KAAMvE,EAAOhB,GAAQ,EAAMuM,IAGhDzK,EAAOU,UAAUmO,cAAgB,SAAwB3P,EAAOhB,EAAQuM,GACtE,OAAOC,EAAYjH,KAAMvE,EAAOhB,GAAQ,EAAOuM,IAIjDzK,EAAOU,UAAUkB,KAAO,SAAesH,EAAQ4F,EAAalR,EAAOC,GACjE,IAAKmC,EAAOqC,SAAS6G,GAAS,MAAM,IAAIrI,UAAU,+BAQlD,GAPKjD,IAAOA,EAAQ,GACfC,GAAe,IAARA,IAAWA,EAAM4F,KAAK3G,QAC9BgS,GAAe5F,EAAOpM,SAAQgS,EAAc5F,EAAOpM,QAClDgS,IAAaA,EAAc,GAC5BjR,EAAM,GAAKA,EAAMD,IAAOC,EAAMD,GAG9BC,IAAQD,EAAO,OAAO,EAC1B,GAAsB,IAAlBsL,EAAOpM,QAAgC,IAAhB2G,KAAK3G,OAAc,OAAO,EAGrD,GAAIgS,EAAc,EAChB,MAAM,IAAIxO,WAAW,6BAEvB,GAAI1C,EAAQ,GAAKA,GAAS6F,KAAK3G,OAAQ,MAAM,IAAIwD,WAAW,sBAC5D,GAAIzC,EAAM,EAAG,MAAM,IAAIyC,WAAW,2BAG9BzC,EAAM4F,KAAK3G,SAAQe,EAAM4F,KAAK3G,QAC9BoM,EAAOpM,OAASgS,EAAcjR,EAAMD,IACtCC,EAAMqL,EAAOpM,OAASgS,EAAclR,GAGtC,MAAMlB,EAAMmB,EAAMD,EAalB,OAXI6F,OAASyF,GAAqD,mBAApC3L,WAAWmD,UAAUqO,WAEjDtL,KAAKsL,WAAWD,EAAalR,EAAOC,GAEpCN,WAAWmD,UAAU8H,IAAIlE,KACvB4E,EACAzF,KAAKmH,SAAShN,EAAOC,GACrBiR,GAIGpS,GAOTsD,EAAOU,UAAUoH,KAAO,SAAe3D,EAAKvG,EAAOC,EAAKoD,GAEtD,GAAmB,iBAARkD,EAAkB,CAS3B,GARqB,iBAAVvG,GACTqD,EAAWrD,EACXA,EAAQ,EACRC,EAAM4F,KAAK3G,QACa,iBAARe,IAChBoD,EAAWpD,EACXA,EAAM4F,KAAK3G,aAEIyF,IAAbtB,GAA8C,iBAAbA,EACnC,MAAM,IAAIJ,UAAU,6BAEtB,GAAwB,iBAAbI,IAA0BjB,EAAOkB,WAAWD,GACrD,MAAM,IAAIJ,UAAU,qBAAuBI,GAE7C,GAAmB,IAAfkD,EAAIrH,OAAc,CACpB,MAAMW,EAAO0G,EAAIvH,WAAW,IACV,SAAbqE,GAAuBxD,EAAO,KAClB,WAAbwD,KAEFkD,EAAM1G,EAET,CACL,KAA4B,iBAAR0G,EAChBA,GAAY,IACY,kBAARA,IAChBA,EAAMe,OAAOf,IAIf,GAAIvG,EAAQ,GAAK6F,KAAK3G,OAASc,GAAS6F,KAAK3G,OAASe,EACpD,MAAM,IAAIyC,WAAW,sBAGvB,GAAIzC,GAAOD,EACT,OAAO6F,KAQT,IAAIpH,EACJ,GANAuB,KAAkB,EAClBC,OAAc0E,IAAR1E,EAAoB4F,KAAK3G,OAASe,IAAQ,EAE3CsG,IAAKA,EAAM,GAGG,iBAARA,EACT,IAAK9H,EAAIuB,EAAOvB,EAAIwB,IAAOxB,EACzBoH,KAAKpH,GAAK8H,MAEP,CACL,MAAM2F,EAAQ9J,EAAOqC,SAAS8B,GAC1BA,EACAnE,EAAOe,KAAKoD,EAAKlD,GACfvE,EAAMoN,EAAMhN,OAClB,GAAY,IAARJ,EACF,MAAM,IAAImE,UAAU,cAAgBsD,EAClC,qCAEJ,IAAK9H,EAAI,EAAGA,EAAIwB,EAAMD,IAASvB,EAC7BoH,KAAKpH,EAAIuB,GAASkM,EAAMzN,EAAIK,EAE/B,CAED,OAAO+G,MAOT,MAAMuL,EAAS,CAAA,EACf,SAASC,EAAGC,EAAKC,EAAYC,GAC3BJ,EAAOE,GAAO,cAAwBE,EACpCC,WAAAA,GACEC,QAEA9O,OAAOkH,eAAejE,KAAM,UAAW,CACrCvE,MAAOiQ,EAAWlI,MAAMxD,KAAMN,WAC9BoM,UAAU,EACVC,cAAc,IAIhB/L,KAAKgM,KAAQ,GAAEhM,KAAKgM,SAASP,KAG7BzL,KAAKiM,aAEEjM,KAAKgM,IACb,CAED,QAAIhS,GACF,OAAOyR,CACR,CAED,QAAIzR,CAAMyB,GACRsB,OAAOkH,eAAejE,KAAM,OAAQ,CAClC+L,cAAc,EACd7H,YAAY,EACZzI,QACAqQ,UAAU,GAEb,CAEDtM,QAAAA,GACE,MAAQ,GAAEQ,KAAKgM,SAASP,OAASzL,KAAKkM,SACvC,EAEL,CA+BA,SAASC,EAAuBzL,GAC9B,IAAImC,EAAM,GACNjK,EAAI8H,EAAIrH,OACZ,MAAMc,EAAmB,MAAXuG,EAAI,GAAa,EAAI,EACnC,KAAO9H,GAAKuB,EAAQ,EAAGvB,GAAK,EAC1BiK,EAAO,IAAGnC,EAAI7C,MAAMjF,EAAI,EAAGA,KAAKiK,IAElC,MAAQ,GAAEnC,EAAI7C,MAAM,EAAGjF,KAAKiK,GAC9B,CAYA,SAAS6D,EAAYjL,EAAOmH,EAAK0C,EAAKxI,EAAKrC,EAAQiD,GACjD,GAAIjC,EAAQ6J,GAAO7J,EAAQmH,EAAK,CAC9B,MAAMpC,EAAmB,iBAARoC,EAAmB,IAAM,GAC1C,IAAIwJ,EAWJ,MARIA,EAFA1O,EAAa,EACH,IAARkF,GAAaA,IAAQ+D,OAAO,GACrB,OAAMnG,YAAYA,QAA2B,GAAlB9C,EAAa,KAAS8C,IAEjD,SAAQA,QAA2B,GAAlB9C,EAAa,GAAS,IAAI8C,iBACtB,GAAlB9C,EAAa,GAAS,IAAI8C,IAG/B,MAAKoC,IAAMpC,YAAY8E,IAAM9E,IAElC,IAAI+K,EAAOc,iBAAiB,QAASD,EAAO3Q,EACnD,EAtBH,SAAsBqB,EAAKrC,EAAQiD,GACjC0K,EAAe3N,EAAQ,eACHqE,IAAhBhC,EAAIrC,SAAsDqE,IAA7BhC,EAAIrC,EAASiD,IAC5C6K,EAAY9N,EAAQqC,EAAIzD,QAAUqE,EAAa,GAEnD,CAkBE4O,CAAYxP,EAAKrC,EAAQiD,EAC3B,CAEA,SAAS0K,EAAgB3M,EAAOuQ,GAC9B,GAAqB,iBAAVvQ,EACT,MAAM,IAAI8P,EAAOgB,qBAAqBP,EAAM,SAAUvQ,EAE1D,CAEA,SAAS8M,EAAa9M,EAAOpC,EAAQ2F,GACnC,GAAIzD,KAAKO,MAAML,KAAWA,EAExB,MADA2M,EAAe3M,EAAOuD,GAChB,IAAIuM,EAAOc,iBAAiBrN,GAAQ,SAAU,aAAcvD,GAGpE,GAAIpC,EAAS,EACX,MAAM,IAAIkS,EAAOiB,yBAGnB,MAAM,IAAIjB,EAAOc,iBAAiBrN,GAAQ,SACP,MAAKA,EAAO,EAAI,YAAY3F,IAC7BoC,EACpC,CAvFA+P,EAAE,4BACA,SAAUQ,GACR,OAAIA,EACM,GAAEA,gCAGL,gDACR,GAAEnP,YACL2O,EAAE,wBACA,SAAUQ,EAAMrO,GACd,MAAQ,QAAOqO,4DAA+DrO,GAC/E,GAAEP,WACLoO,EAAE,oBACA,SAAUtJ,EAAKkK,EAAOK,GACpB,IAAIC,EAAO,iBAAgBxK,sBACvByK,EAAWF,EAWf,OAVIhL,OAAOmL,UAAUH,IAAUlR,KAAKK,IAAI6Q,GAAS,GAAK,GACpDE,EAAWR,EAAsBjL,OAAOuL,IACd,iBAAVA,IAChBE,EAAWzL,OAAOuL,IACdA,EAAQ9F,OAAO,IAAMA,OAAO,KAAO8F,IAAU9F,OAAO,IAAMA,OAAO,QACnEgG,EAAWR,EAAsBQ,IAEnCA,GAAY,KAEdD,GAAQ,eAAcN,eAAmBO,IAClCD,CACR,GAAE7P,YAiEL,MAAMgQ,EAAoB,oBAgB1B,SAASjN,EAAarC,EAAQgF,GAE5B,IAAIQ,EADJR,EAAQA,GAASjH,IAEjB,MAAMjC,EAASkE,EAAOlE,OACtB,IAAIyT,EAAgB,KACpB,MAAMzG,EAAQ,GAEd,IAAK,IAAIzN,EAAI,EAAGA,EAAIS,IAAUT,EAAG,CAI/B,GAHAmK,EAAYxF,EAAOpE,WAAWP,GAG1BmK,EAAY,OAAUA,EAAY,MAAQ,CAE5C,IAAK+J,EAAe,CAElB,GAAI/J,EAAY,MAAQ,EAEjBR,GAAS,IAAM,GAAG8D,EAAM3M,KAAK,IAAM,IAAM,KAC9C,QACV,CAAe,GAAId,EAAI,IAAMS,EAAQ,EAEtBkJ,GAAS,IAAM,GAAG8D,EAAM3M,KAAK,IAAM,IAAM,KAC9C,QACD,CAGDoT,EAAgB/J,EAEhB,QACD,CAGD,GAAIA,EAAY,MAAQ,EACjBR,GAAS,IAAM,GAAG8D,EAAM3M,KAAK,IAAM,IAAM,KAC9CoT,EAAgB/J,EAChB,QACD,CAGDA,EAAkE,OAArD+J,EAAgB,OAAU,GAAK/J,EAAY,MACzD,MAAU+J,IAEJvK,GAAS,IAAM,GAAG8D,EAAM3M,KAAK,IAAM,IAAM,KAMhD,GAHAoT,EAAgB,KAGZ/J,EAAY,IAAM,CACpB,IAAKR,GAAS,GAAK,EAAG,MACtB8D,EAAM3M,KAAKqJ,EACjB,MAAW,GAAIA,EAAY,KAAO,CAC5B,IAAKR,GAAS,GAAK,EAAG,MACtB8D,EAAM3M,KACJqJ,GAAa,EAAM,IACP,GAAZA,EAAmB,IAE3B,MAAW,GAAIA,EAAY,MAAS,CAC9B,IAAKR,GAAS,GAAK,EAAG,MACtB8D,EAAM3M,KACJqJ,GAAa,GAAM,IACnBA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,IAE3B,KAAW,MAAIA,EAAY,SASrB,MAAM,IAAI9I,MAAM,sBARhB,IAAKsI,GAAS,GAAK,EAAG,MACtB8D,EAAM3M,KACJqJ,GAAa,GAAO,IACpBA,GAAa,GAAM,GAAO,IAC1BA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,IAItB,CACF,CAED,OAAOsD,CACT,CA2BA,SAASxG,EAAeqC,GACtB,OAAOjG,EAAO8Q,YAxHhB,SAAsB7K,GAMpB,IAFAA,GAFAA,EAAMA,EAAI8K,MAAM,KAAK,IAEXxH,OAAOD,QAAQsH,EAAmB,KAEpCxT,OAAS,EAAG,MAAO,GAE3B,KAAO6I,EAAI7I,OAAS,GAAM,GACxB6I,GAAY,IAEd,OAAOA,CACT,CA4G4B+K,CAAY/K,GACxC,CAEA,SAASF,EAAYkL,EAAKC,EAAK1S,EAAQpB,GACrC,IAAIT,EACJ,IAAKA,EAAI,EAAGA,EAAIS,KACTT,EAAI6B,GAAU0S,EAAI9T,QAAYT,GAAKsU,EAAI7T,UADpBT,EAExBuU,EAAIvU,EAAI6B,GAAUyS,EAAItU,GAExB,OAAOA,CACT,CAKA,SAASsF,EAAYS,EAAKK,GACxB,OAAOL,aAAeK,GACZ,MAAPL,GAAkC,MAAnBA,EAAIiN,aAA+C,MAAxBjN,EAAIiN,YAAYI,MACzDrN,EAAIiN,YAAYI,OAAShN,EAAKgN,IACpC,CACA,SAASjN,EAAaJ,GAEpB,OAAOA,GAAQA,CACjB,CAIA,MAAMyH,EAAuB,WAC3B,MAAMgH,EAAW,mBACXC,EAAQ,IAAItT,MAAM,KACxB,IAAK,IAAInB,EAAI,EAAGA,EAAI,KAAMA,EAAG,CAC3B,MAAM0U,EAAU,GAAJ1U,EACZ,IAAK,IAAI2I,EAAI,EAAGA,EAAI,KAAMA,EACxB8L,EAAMC,EAAM/L,GAAK6L,EAASxU,GAAKwU,EAAS7L,EAE3C,CACD,OAAO8L,CACT,CAV6B,GAa7B,SAASlF,EAAoBoF,GAC3B,MAAyB,oBAAX5G,OAAyB6G,EAAyBD,CAClE,CAEA,SAASC,IACP,MAAM,IAAIvT,MAAM,uBAClB,MCtjEO,MAAMwT,EAAmB,IAAIC,EAAU,+CAGT,IAAIA,EAAU,+CAG5C,MAAMC,EAA8B,IAAID,EAAU,gDAG9B,IAAIA,EAAU,+CAGT,IAAIA,EAAU,yDC4H9C3Q,OAAAkH,eAAA2J,EAAA,aAAA,CAAAnS,OAAA,kjBAEKmS,EAAAC,SAAAD,EAAAE,KAAAF,EAAAG,KAAAC,GAAAJ,EAAAI,KAAAJ,EAAAK,yBAAAL,EAAAM,MAAAN,EAAAO,IAAAP,EAAAQ,KAAAC,GAAAT,EAAAS,OAAAT,EAAAU,MAAAV,EAAAW,IAAAX,EAAAY,MAAAZ,EAAAa,IAAAb,EAAAc,OAAAd,EAAAe,MAAAf,EAAAgB,MAAAhB,EAAAiB,MAAAjB,EAAAkB,MAAAlB,EAAAmB,MAAAnB,EAAAoB,KAAApB,EAAAqB,IAAArB,EAAAsB,IAAAtB,EAAAuB,IAAAvB,EAAAwB,SAAA,EACL,MAAAC,EAACnT,EAID,SAAAoT,EAAA5Q,GAJA,KAAAA,aAAA5E,YAMA,MAAA,IAAAsD,UAAA,0BAGA,SAAAmS,EAAA7Q,UAKA4Q,EAAA5Q,iDAL0BkP,EAAA0B,gBAAAA,yBA6B1B,MAAAE,cAEAC,EAAAC,+IAmGAhR,EAAAjE,GACA,GAAA,EAAAuF,KAAAyP,KAEA,MAAA,IAAA5S,WAAA,uCAoBA8S,SAAAA,CAAAD,GACA,MAAAE,EAAA7S,OAAA8S,OAAAjE,KAAAA,YAAA3O,kBAEAF,OAAA+S,OAAAF,EAAA5P,qBAvIA+P,SAAAA,CAAAC,cAyKQC,EAAAjE,EAAAvJ,GACR,OAAAA,EAAAiN,SALA1D,EAAA,IAAAvJ,EAAAiN,SAKA,8DAmCAQ,SAAAC,EAAAC,MACA,mBAAAD,EACA,MAAA,IAAA/S,UAAA,gCAEAL,OAAAE,UAAAoT,eAAAxP,KAAAsP,EAAA,WACA,MAAA,IAAAlW,MAAA,sCAEI,KAAAmW,GAAUA,aAAAZ,GACd,MAAA,IAAApS,UAAA,2BAEC,GAAAL,OAAAE,UAAAoT,eAAAxP,KAAAuP,EAAA,qBACqB,MAAA,IAAAnW,oDAEtBqW,QAAAF,EACAA,EAAAG,kBAAAJ,IACAK,8BAAAL,EACApT,OAAAkH,eAAAkM,EAAAlT,UAAA,SAAA,CACAxB,KAAAA,CAAAiD,EAAAjE,GACA,OAAA2V,EAAAK,OAAAzQ,KAAAtB,EAAAjE,EACA,EACAqR,UAAA,WAEA7H,eAAAkM,EAAA,SAAA,CACA1U,MAAAiD,CAAAA,EAAAjE,IACA2V,EAAAM,OAAAhS,EAAAjE,GAEAqR,UAAA,uBAqBA6E,OAAAA,GAiBA,MAAA,IAAA1W,MAAA,kDAqBA,MAAA2W,UAAAC,cACAC,EAAA,EAAApB,GAEA,IAAAjO,OAAAmL,UAAAkE,OAAAA,kEAGAjF,OAAY,EAAA6D,GAKZ1P,KAAA8Q,YAAgBA,CACX,CAGLH,OAAAA,GACK,OAAA,EAGLD,MAAAA,CAAAhS,EAAAjE,EAAA,GAEC6U,EAAA5Q,GACmB,MAAAqS,EAAArS,EAAArF,SACpB,OAAAkC,KAAAO,MAAAiV,OAAAD,YACA,CA9BAL,MAAAA,CAAAvD,EAAAxO,EAAAjE,GAiCA,OAAA,mBA0BA,MAAAuW,UAAAH,EAECjF,WAAAA,CAAAwE,EAAA3V,EAAA,EAAAiV,QACWU,aAAAZ,GACZ,MAAA,IAAApS,UAAA,2BAIA,IAAAqE,OAAAmL,UAAAnS,GACA,MAAA,IAAA2C,UAAA,iFAaA4C,KAAAvF,OAAkBA,EAIbkW,OAAAA,GACL,OAAA3Q,KAAAoQ,kBAAAa,GACWjR,KAASoQ,kBAAMc,CAC1B,CAGIR,MAAAA,CAAAhS,EAAejE,EAAY,GAC/B,OAA0BuF,KAAAoQ,OAAAM,OAAIhS,EAAWjE,EAAIuF,KAAEvF,OAC/C,CAxCAgW,MAAAA,CAAAvD,EAAAxO,EAAAjE,EAAA,GA2CA,OAAA2V,KAAAA,OAAAK,OAAAvD,EAAAxO,EAAAjE,EAAAuF,KAAAvF,0CAoBY+U,cACZC,EAAAC,GAGA,GAFS7D,MAAA4D,EAAAC,GAET,EAAA1P,KAAAyP,KACoB,MAAI,IAAE5S,WAAA,+BAErB,CAGL6T,MAAAA,CAA0BhS,EAAAjE,EAAkB,GAC5C,OAAA8U,EAAyB7Q,GAAA2I,WAAA5M,EAAAuF,KAAAyP,MAGdgB,MAAAA,CAAAvD,EAAAxO,EAAAjE,EAAA,GAEX,OApBA8U,EAkBW7Q,GAAA6K,YAAA2D,EAAAzS,EAAAuF,KAAAyP,MAEXzP,KAAAyP,eAoBS,MAAAyB,UAAA1B,cACJC,EAAAC,GAGL,GAFA7D,MAAA4D,EAAAC,GAEA,EAAA1P,KAAeyP,KACV,MAAA,IAAA5S,WAAA,+BAED,CAGC6T,MAAAA,CAAAhS,EAAAjE,EAAA,GACJ,OAAA8U,EAAA7Q,GAAA8I,WAAA/M,EAAAuF,KAAAyP,MAGDgB,MAAAA,CAAAvD,EAAAxO,EAAAjE,EAAA,GAEA,OApBA8U,EAkBA7Q,GAAA+K,YAAAyD,EAAAzS,EAAAuF,KAAAyP,MAEAzP,KAAAyP,iCAoBMD,cACFC,EAAAC,GAGJ,GAFA7D,MAAA4D,EAAAC,GAEA,EAAA1P,KAAAyP,KACoB,MAAI,IAAE5S,WAAA,+BAElB,CAGH6T,MAAAA,CAAAhS,EAAAjE,EAAA,GACL,OAAA8U,EAAA7Q,GAAA+J,UAAAhO,EAAAuF,KAAAyP,MAGAgB,MAAAA,CAAAvD,EAAAxO,EAAAjE,EAAA,GAEA,OApBA8U,EAkBA7Q,GAAA4L,WAAA4C,EAAAzS,EAAAuF,KAAAyP,MAEAzP,KAAAyP,8BAoBAD,mBAIQ,GAFR3D,MAAA4D,EAAAC,GAEQ,EAAA1P,KAAUyP,KACS,MAAA,eAAO,+BAElC,CAGAiB,MAAAA,GAAoBjW,EAAuB,GACnC,OAAA8U,EAAO7Q,GAAAgK,UAAgCjO,EAAEuF,KAAAyP,MAG5CgB,MAAAA,CAAAvD,EAAAxO,EAAAjE,EAAA,GAEe,OApBpB8U,EAkBK7Q,GAAA+L,WAAAyC,EAAAzS,EAAAuF,KAAAyP,MAEezP,KAAAyP,IAEpB,EAEA7B,EAAAuD,MAAAA,EACAC,MAAAA,EAAA7V,KAAAC,IAAA,EAAA,IAGA,SAAA6V,EAAAnE,GACA,MAAAoE,EAAA/V,KAAAO,MAAAoR,EAAAkE,GAEA,MAAA,CAAAE,OAAAC,KADArE,EAAAoE,EAAAF,EAEA,8BAkBKI,MAAAA,UAAAhC,EACJ5D,WAAAA,CAAA8D,GACgB7D,MAAA,EAAA6D,UAGjBhR,EAAAjE,EAAA,GACA,MAAAD,EAAA+U,EAAA7Q,GAEA6S,EAAA/W,EAAAuN,aAAAtN,GAEA,OAAAgX,EADAjX,EAAAuN,aAAAtN,EAAA,GACA8W,GAGAd,MAAAA,CAAAvD,EAAAxO,EAAAjE,EAAA,GACM,MAAAuS,EAAAqE,EAAAnE,GACF1S,EAAA+U,EAAA7Q,GAGJ,OAFAlE,EAAAyP,cAAA+C,EAAAuE,KAAA9W,GArBAD,EAAAyP,cAAA+C,EAqBAsE,KAAA7W,EAAA,GAEA,kBAgBmBiX,MAAAA,UAAAlC,EACnB5D,WAAAA,CAAA8D,GACA7D,MAAA,EAAA6D,UAGAhR,EAAAjE,EAAA,GACA,MAAAD,EAAA+U,EAAA7Q,GAIA,OAAA+S,EAFAjX,EAAAyN,aAAAxN,GACAD,EAAAyN,aAAAxN,EAAA,IAIAgW,MAAAA,CAAAvD,MAAiB,GACZ,MAAAF,EAAAqE,EAAAnE,GACL1S,EAAA+U,EAAA7Q,GAGA,OAFAlE,EAAA2P,cAAA6C,EAAAsE,KAAA7W,GArBAD,EAAA2P,cAAA6C,EAAAuE,KAqBA9W,EAAA,GAEA,oBAgBAkX,MAAAA,UAAAnC,EACA5D,WAAAA,CAAA8D,GACM7D,MAAA,EAAA6D,UAGDhR,EAAAjE,EAAA,GACL,MAAAD,EAAA+U,EAAA7Q,GAEQ6S,EAAyB/W,EAAAuN,aAAAtN,GAEjC,OAAAgX,EADKjX,EAAAsO,YAAArO,EAAA,GACL8W,GAGQd,MAAAA,CAAAvD,EAAAxO,EAAAjE,EAAS,GACZ,MAAAuS,EAAAqE,EAAAnE,GACJ1S,EAAA+U,EAAA7Q,GAGD,OAFelE,EAAAyP,cAAA+C,EAAAuE,KAAA9W,GArBfD,EAAAqQ,aAAAmC,EAqBesE,KAAA7W,EAAA,GAEf,iBAgBKmX,MAAAA,UAAApC,EACL5D,WAAAA,CAAA8D,GACI7D,MAAM,EAAA6D,UAGLhR,EAAAjE,EAAA,GACJ,MAAAD,EAAA+U,EAAA7Q,GAID,OAAA+S,EAFAjX,EAAAuO,YAAAtO,GACAD,EAAAyN,aAAAxN,EAAA,IAIAgW,MAAAA,CAAAvD,EAAAxO,EAAAjE,EAAA,GACA,MAAAuS,EAAAqE,EAAAnE,GACA1S,EAAA+U,EAAA7Q,GAGA,OAFAlE,EAAAsQ,aAAAkC,EAAAsE,KAAA7W,GArBAD,EAAA2P,cAAA6C,EAqBAuE,KAAA9W,EAAA,GAEA,mBAeAoX,MAAAA,UAAArC,EACA5D,WAAAA,CAAA8D,GACA7D,MAAA,EAAA6D,EACA,CAGAgB,MAAAA,CAAAhS,EAAAjE,EAAA,GACA,OAAA8U,EAAA7Q,GAAAwK,YAAAzO,GAGAgW,MAAAA,CAAAvD,EAAAxO,EAAAjE,EAAA,GAEA,OAjBA8U,EAeA7Q,GAAAuM,aAAAiC,EAAAzS,GAEA,aAeAqX,MAAAA,UAAmBtC,EACnB5D,WAAAA,CAAoB8D,GACpB7D,MAAA,EAAA6D,EACA,CAGAgB,MAAAA,CAAAhS,EAAAjE,EAAA,GACA,OAAA8U,EAA0B7Q,GAAAyK,YAAiB1O,GAG3CgW,MAAAA,CAAAvD,EAAAxO,EAAAjE,EAAA,GAEA,OAjBA8U,EAeA7Q,GAAAwM,aAAAgC,EAAAzS,GAEA,eAeSsX,MAAAA,UAAAvC,EACI5D,WAAAA,CAAA8D,GACb7D,MAAA,EAAA6D,EACA,CAGagB,MAAAA,CAAAhS,EAAAjE,EAAA,GACJ,OAAA8U,EAAA7Q,GAAA0K,aAAA3O,GAGTgW,MAAAA,CAAAvD,EAAAxO,EAAAjE,EAAA,GAEA,OAjBA8U,EAeA7Q,GAAAyM,cAAA+B,EAAAzS,GAEA,cAeAuX,MAAAA,UAAAxC,EACA5D,WAAAA,CAAA8D,GACA7D,MAAA,EAAA6D,EACA,CAGAgB,MAAAA,CAAAhS,EAAAjE,EAAA,GACA,OAAA8U,EAAA7Q,GAAA2K,aAAA5O,GAGQgW,MAAAA,CAAAvD,EAAAxO,EAAAjE,EAAA,GAER,OAjBA8U,EAAA7Q,GAeQ0M,cAAA8B,EAAAzS,GAER,gBAwBA,MAAAwX,UAAAzC,EACA5D,WAAAA,CAAAsG,EAAAC,EAAAzC,GACA,KAAAwC,aAAA1C,GACA,MAAA,IAAApS,UAAA,kCAEA,KAAA+U,aAAAtB,GAAAsB,EAAAxB,WACAlP,OAAAmL,UAAAuF,OAAAA,GACA,MAAA,IAAA/U,UAAA,gFAGAqS,GAAA,IAEA0C,aAAAtB,IAEA,EAAAqB,EAAAzC,OACAA,EAAA0C,EAAAD,EAAAzC,sCAYAzP,KAAAmS,MAAAA,UAGAzT,EAAAjE,EAAA,GACA,GAAA,GAAAuF,KAAgByP,KACH,OAAAzP,KAAAyP,SAEbA,EAAA,EACQ0C,EAAInS,KAAAmS,MAGJ,GAFIA,aAAatB,IAChBsB,EAAAA,EAAAzB,OAAAhS,EAAAjE,IACD,EAAAuF,KAAAkS,cAAUzC,KAClBA,EAAA0C,EAAAnS,KAAAkS,cAAAzC,cAGA2C,EAAA,EACA,KAAAA,EAAAD,GACA1C,GAAAzP,KAAAkS,cAAAG,QAAA3T,EAAAjE,EAAAgV,KACA2C,CAGA,CACA,OAAA3C,SAGA/Q,EAAQjE,EAAK,GACbmV,MAAAA,EAAA,OACAhX,EAAA,EACAuZ,EAAAnS,KAAAmS,MAIAvZ,IAHAuZ,aAAAtB,IACAsB,EAAAA,EAAAzB,OAAAhS,EAAAjE,IAEA7B,EAAAuZ,GACAvC,EAAAlW,KAAAwY,KAAAA,cAAAxB,OAAAhS,EAAAjE,IACAA,QAAAyX,cAAAG,QAAA3T,EAAAjE,GAEK7B,GAAA,WAcG6X,MAAAA,CAAAvD,EAAAxO,EAAAjE,EAAA,GACR,MAAA6X,EAAkBtS,KAAAkS,cACTzC,EAAAvC,EAAAqF,SAAA9C,EAAA+C,IACD/C,EAAA6C,EAAA7B,OAAA+B,EAAA9T,EAAAjE,EAAAgV,IACH,GAIL,OAHA0C,KAAAA,iBAAAtB,GACA7Q,KAAAmS,MAAA1B,OAAAvD,EAAA7T,OAAAqF,EAAAjE,GAEAgV,gBAuCA,MAAAgD,UAAAjD,EACA5D,WAAAA,CAAA8G,EAAAhD,EAAAiD,GACA,IAAA5Y,MAAAkF,QAAAyT,KACAA,EAAAH,QAAAK,CAAAA,EAAAJ,IAAAI,GAAAJ,aAAAhD,IAAA,GACA,MAAA,IAAApS,UAAsC,4CAEtC,kBAAAsS,QAEA5Q,IAAA6T,IACAA,EAAqBjD,EACrBA,OAAiB5Q,OAGJ,MAAA+T,KAAAH,EACJ,GAAAG,EAAAA,EAAApD,WAEJ3Q,IAAA+T,EAAAnD,SACL,MAAA,IAAAzV,MAAA,wDAEA,IAAAwV,GAAA,EACA,IACAA,EAAAiD,EAAAH,QAAA9C,CAAAA,EAAAoD,IAAApD,EAAAoD,EAAAR,WAAA,EACA,CAEA,MAAAxX,6BA0BSmF,KAAA2S,iBAAAA,UAGTjU,EAAAjE,EAAkB,GACF,GAAA,QAAAgV,KACH,OAAAzP,KAAAyP,KAEb,IAAAA,EAAA,MAEAA,EAAAzP,KAAA0S,OAAAH,QAAA9C,CAAAA,EAAAoD,KACA,MAAAC,EAAAD,EAAAR,QAAA3T,EAAAjE,GACa,OADbA,GAAgBqY,EACHrD,EAAAqD,CAAA,GACJ,EACD,CACH,MAAAjY,GAEY,MAAA,IAAAgC,WAAA,qBACjB,CACA,OAAA4S,EAGA,MAAAiB,CAAAhS,EAAAjE,EAAA,GACA6U,EAAA5Q,GACAqU,MAAAA,OAAAvC,4BACA,MAAAqC,KAAA7S,KAAA0S,OAKA,QAJA5T,IAAA+T,EAAAnD,aACAmD,EAAAnD,UAAAmD,EAAAnC,OAAAhS,EAAAjE,IAEAA,GAAAoY,EAAAR,QAAA3T,EAAAjE,GACAuF,KAAA2S,gBACAjU,EAAArF,SAAAoB,EACA,eAWAgW,MAAAA,CAAAvD,EAAAxO,EAAAjE,KACUuY,MAAAA,EAAUvY,EACpBwY,IAAAA,EAAkB,EACbC,EAAA,YACLL,KAAA7S,KAAA0S,OAAA,KACAjD,EAAAoD,EAAApD,UACAA,EAAAA,EAAAA,EAAA,WACAoD,EAAAnD,SAAA,CACW,MAAAyD,EAAAjG,EAAA2F,EAAAnD,yBAENmD,EAAApC,OAAA0C,EAAAzU,EAAAjE,GACJ,EAAAgV,IAGDA,EAAAoD,EAAAR,QAAA3T,EAAAjE,IAGA,UASA,OAAAwY,EAAAC,EAAAF,uBAIMhT,KAAAwQ,4BACS,MAAAqC,UAAAH,YACf5T,IAAA+T,EAAAnD,UACqB,EAAAM,EAAA3W,SACrB0Z,EAAAF,EAAAnD,UAAAM,EAAAoD,kBAcKC,SAAAA,CAAA3D,MACJ,iBAAAA,EAC+B,MAAA,IAAAtS,UAAA,+BAEhC,MAAAyV,UAAAH,OACA,GAAAG,EAAAnD,WAAAA,EACA,OAAAmD,EAiBAS,QAAAA,CAAA5D,GACA,GAAA,iBAAAA,EACA,MAAA,IAAAtS,UAAA,2BAEA,IAAA3C,EAAA,EACA,IAAA,MAAAoY,KAAA7S,KAAA0S,OAAA,IACAG,EAAAnD,WAAAA,EACA,OAAAjV,EACA,EAAAoY,EAAApD,KACAhV,GAAA,KAEAA,IACAA,GAAAoY,EAAApD,KAtLA,yBA6MA,WAAA7D,CAAA8D,iFANAe,MAAAA,CAAAvD,EAAAxO,EAAAjE,GA2BA,MAAA,IAAAR,MAAA,0DAsBgB,MAAAsZ,UAAgBC,cACpBpD,EAAAV,GAEZ,KAAAU,aAAwBS,GAEfT,EAAAO,qBACKvT,UAAA,qDAEdyO,MAAA6D,GAAAU,EAAAV,UAAA,WAIA1P,KAAAoQ,OAAAA,CACA,CAGAM,MAAAA,CAAAhS,EAAAjE,GACA,OAAAuF,KAAAoQ,OAAAM,OAAAhS,EAAAjE,EACA,CAvBAgW,MAAAA,CAAAvD,EAAAxO,EAAAjE,GA0BA,OAAA2V,KAAAA,OAAAK,OAAAvD,EAAAxO,EAAAjE,iDA8EA+U,EACA5D,WAAAA,CAAA6H,EAAAC,EAAAhE,OACAiE,EAAAF,GAAAA,aAAAxC,GACAwC,aAAAvC,EACAyC,EAAA,IAAAJ,EAAA,IAAAvC,EAAAyC,SACA,GAAAA,aAAA5C,GACA4C,EAAA9C,YACA4C,IAAAA,EAAAE,OACA,MAAAA,aAAAD,GACA,MAAApW,IAAAA,8EAIAuW,EAAAF,CACA,CAIA,QAHA3U,IAAA4U,IACAA,EAAA,eAEAA,GACAA,aAAAlE,SACA,IAAApS,UAAA,0CAEA,GAAA,SAA4B,IAChB,EAAAsW,EAASjE,KACrB,MAAA,IAAAxV,MAAA,8CAGA6E,IAAA4U,EAAAhE,8CASgBgE,MAChBA,EAAAjE,KACoBA,GAAAA,IAAAgE,aAAAxC,GACHwC,aAAAvC,KAERzB,GAAAkE,EAAAvD,OAAAX,sOA6ETzP,KAAA4T,gCAAAC,GACAC,EAAAD,EAAAE,KAAA/T,KACA,UAGAtB,EAAAjE,EAAA,oCAOA,MAAAuZ,EAA0BhU,KAAAiU,WAAAvV,EAAAjE,GAC1B,IAAAuZ,EAEa,MAAA,IAAA/Z,MAAA,2EAiCbia,uBAAAA,CAAAhH,aACAjQ,UAAAoT,eAAAxP,KAAAqM,EAAAlN,KAAA2T,cAAAjE,UAAA,CACA,GAAA1P,KAAA0T,eAAA1T,KAAA0T,cAAAhE,UACM3S,OAAAE,UAAAoT,eAAAxP,KAAAqM,EAAAlN,KAAA0T,cAAAhE,uBAGNsE,OAAsBG,SAAAjH,EAAAlN,KAAA2T,cAAAjE,cACbsE,KACTA,EAAA5D,QAAY4D,EAAAtE,UAAA3S,OAAAE,UAAAoT,eAAAxP,KAAAqM,EAAA8G,EAAAtE,WACZ,kBAIY,MAAA0E,UAAAD,SAAA,CACA,MAAAH,EAAAhU,KAAAmU,SAAAC,GACH,GAAAJ,EAAAtE,UAAA3S,OAAAE,UAAAoT,eAAAxP,KAAAqM,EAAA8G,EAAAtE,iBACWsE,CAGP,gDAUbtD,MAAAA,CAAAhS,IAAgB,GAChB,IAAQqU,QACIsB,EAAArU,KAAA2T,cACAF,EAAAY,EAAA3D,OAAmBhS,EAAAjE,GACf6Z,EAAAtU,KAAAmU,SAAAV,GACH,QAAA3U,IAAAwV,EAAA,CACJZ,MAAAA,OAAAA,cACT,MAAkB,EAClB1T,KAAAuU,0BACAC,EAAAH,EAAAjE,OAAAX,MAEAsD,EAAA/S,KAAAwQ,wBACAuC,EAAAsB,EAAA3E,UAAA+D,EAEAV,EAAAW,EAAAhE,UAAAgE,EAAAhD,OAAAhS,EAAAjE,EAAA+Z,QAIAzB,EAAAuB,EAAA5D,OAAAhS,EAAAjE,qBAUAiE,EAAAjE,EAAA,SACYuZ,EAAAhU,KAAAyU,iBAAAvH,GACHpO,QAAAA,IAAAkV,EAAA,CACT,MAAAK,OAAAV,cAGAW,OAAAZ,cACS,IAAAc,EAAA,EAQA,OAPTxU,KAAAuU,0BACKC,EAAAH,EAAAjE,OAAAX,kCAMI+E,EAAAF,EAAA7D,OAAAvD,EAAAoH,EAAA5E,UAAAhR,EAAAjE,EAAA+Z,0BAiBLE,UAAAA,CAAAC,EAAAvE,EAAAV,GAEJ,MAAAE,MAAAgF,EAAA5U,KAAA2U,EAAAvE,EAAAV,0CAkBKmF,EAAApa,EAAA,GAAA,IAAAka,EAOL,OALAA,EADAE,aAAA/a,gBACA6Z,cAAAjD,OAAAmE,EAAApa,GAGYoa,EAEZV,KAAAA,SAAAQ,cAuCA,MAAAC,UAAApF,EACA5D,WAAAA,CAAAsC,EAAAyG,EAAAvE,EAAAV,QACAxB,aAAA4G,GACA,MAAA,IAAA1X,UAAA,yBAEA,IAAAqE,OAAAmL,UAAA+H,IAAA,EAAAA,EACA,MAAA,IAAAvX,UAAA,+CAEM,iBAAAgT,YACUV,IAChBA,EAAYU,IACZ,MAESA,EAAA,CACY,KAAAA,gBACrB,MAAA,IAAyBhT,UAAgB,2BAE7B,GAAA,OAAA8Q,EAAAwF,eACH,GAAAtD,EAAAX,MACDW,EAAYX,KAAAvB,EAAOwF,cAAAjE,KAC3B,MAAA,IAAAxV,MAAA,iDAEQ,GAAA,iBAAiByV,EACzB,MAAA,IAAAtS,UAAA,6CAGQ8Q,EAASuB,OACjBvB,EAAAuB,OACAA,EAAAW,EAAAA,EAAAX,KAAA,EACA,GAAAA,GAAAvB,EAAAqG,0BAEA9E,GAAAvB,EAAAyF,cAAAvD,OAAAX,kBAMAzP,KAAAkO,MAAAA,EAKAlO,KAAA2U,QAAAA,EAMY3U,KAAAoQ,OAAAA,GAAY,aAGZ1R,EAAAjE,EAAA,GACZ,GAAA,GAAAuF,KAAAyP,sBAKA,IAAA+E,EAAA,EACQxU,KAAIkO,MAACqG,0BACLC,OAAatG,MAAAyF,cAAAvD,OAAAX,MAGR,IAAAA,EAAA,EAKb,OAJSzP,KAAAoQ,SAEJX,EAAAzP,KAAAoQ,OAAAiC,QAAA3T,EAAAjE,EAAA+Z,IAELA,EAAA/E,SAGA/Q,EAAAjE,EAAA,GACI,MAAAsY,EAAe/S,KAAAwQ,wBACnB,GAAQxQ,OAAMA,KAAKkO,MAAA+F,WAAAvV,EAAuBjE,GAC1C,MAAAR,IAAAA,MAAa,oBAEb,IAAAua,EAAyB,EAYzB,OAXgBxU,KAAAkO,MAAAqG,0BAChBC,OAAAtG,MAAAyF,cAAAvD,OAAAX,MACAzP,KAAAoQ,OACiB2C,EAAA/S,KAAA0P,UAAA1P,KAAAoQ,OAAAM,OAAAhS,EAAAjE,EAAA+Z,GACJxU,KAAA0P,SACJqD,OAAArD,WAAA,EAEJ1P,KAAAkO,MAAAqG,0BAELxB,EAAA/S,KAAAkO,MAAAyF,cAAAjE,eAAAiF,SAEA5B,EAGAtC,MAAAA,CAAAvD,EAAAxO,EAAAjE,EAAA,GACA,IAAA+Z,EAAA,EAIQ,QAHRtG,MAAAqG,0BACYC,EAAKxU,gCAAYyP,MAErBzP,KAAAoQ,SACArT,OAAOE,UAAGoT,eAAAxP,KAAAqM,OAAAwC,UACb,MAAA,IAAAtS,UAAA,0BAAA4C,KAAA0P,UAEL1P,KAAAkO,MAAAyF,cAAAlD,OAAAzQ,KAAA2U,QAAAjW,EAAAjE,GACAgV,IAAAA,EAAA+E,mBAEAxU,KAAAoQ,OAAAK,OAAAvD,EAAAlN,KAAA0P,UAAAhR,EAAAjE,EAAA+Z,MACApE,KAAAA,OAAAiC,QAAA3T,EAAAjE,EAAA+Z,GACAtG,GAAAA,KAAAA,MAAAuB,MACAA,EAAAvB,KAAAA,MAAAuB,MACA,MAAA,IAAAxV,MAAA,6CAIQ,OAAIwV,EAIZM,SAAAA,CAAAC,GACA,GAAAhQ,KAAAoQ,OACA,OAAApQ,KAAAoQ,OAAAL,UAAAC,IAYa+E,SAAAA,EAAAvC,UACJ,EAAAA,IAETA,GAAA,gCA0CY,MAAAwC,UAAKxF,EACjB5D,WAAAA,CAAAqJ,EAAAC,EAAAxF,GACA,KAAAuF,aAAAhE,GACAgE,aAAA/D,GACA,MAAA,IAAA9T,UAAA,wCAQA,GANQ,iBAAA8X,QACIpW,IAAW4Q,IACvBA,EAAgBwF,EACPA,GAAA,GAGTD,EAAAA,EAAAxF,wDAGY5D,MAAAoJ,EAAAxF,KAAUC,4BAsBd1P,KAAA0S,UAIR,IAAAjX,EAAA,EACAuE,KAAAmV,gBAAA,SAAA3C,GAEA,OADA/W,EAAAsZ,EAAAvC,GACAxS,IACI,EAEJA,KAAAoV,gBAAsB,WACI,OAAA3Z,CACd,EAGJiV,MAAAA,CAAAhS,EAAAjE,WACAsY,EAAA/S,KAAewQ,0BACVxQ,KAASiV,iBACRE,KAAAA,gBAAA1Z,OACT,MAAAoX,UAAAH,YACJ5T,IAAA+T,EAAAnD,WACeqD,EAAAF,EAAAnD,UAAAmD,EAAAnC,OAAAhS,sBAWhBA,EAAAjE,EAAA,WACAuF,KAAAiV,KAAAvE,OAAAhS,EAAAjE,GACAuF,KAAAmV,gBAAA1Z,kBACAuE,KAAA0S,mBACAG,EAAAnD,SAAA,CACA,MAAAyD,EAAAjG,EAAA2F,EAAAnD,eACA5Q,IAAAqU,GACsBN,EAAApC,OAAA0C,EAGjB,qDAaLkC,QAAAA,CAAAjH,EAAAsB,GAEC,MAAA4F,EAAAC,IAAAA,EAAAnH,KAAAA,EAAAsB,gCAaD8F,UAAAA,CAAA9F,GAGA,MAAA4F,EAAA,IAAAG,EAAAzV,KAAA0P,gCAYAgG,QAAAA,OACA,iBAAAhG,EACA,MAAA,IAAAtS,UAAA,+BAEA,MAAAyV,UAAAH,OACA,GAAAG,EAAAnD,WAAAA,EACA,OAAAmD,oBAiCA,MAAA0C,EACS3J,WAAAA,CAAA+J,EAAAvH,EAAAsB,QACTiG,aAA0BX,GAClB,MAAA,IAAA5X,UAAA,oCAER,IAAAqE,OAAAmL,UAAuBwB,IAAe,GAAAA,EAC7B,MAAA,IAAAhR,UAAA,yCAEJuY,EAAAA,EAAAlG,KACJmG,EAAAD,EAAAjD,OAAAH,QAAAsD,CAAAA,EAAAhD,IAAAgD,EAAAhD,EAAAzE,MAAA,MACWA,EAAAwH,EAAAE,EAEZ,MAAA,IAAA7b,8CACA2b,GAAA,OACAE,EAAA,yCAeI9V,KAAA+V,cAAA3H,GAAA,sCAQJpO,KAAA7F,MAAAyb,uBAEQ5V,KAAA7F,MAAU2b,EAAAF,EAAyBxH,+CAiBnCpO,cAA0B0P,SAIjChR,EAAAjE,UAGDsa,EAFe/U,KAAA2V,UAAAP,uBAEfY,iCAUA,GAAA,iBAAAva,IACAgG,OAAAmL,UAAAnR,IACAA,IAAAsZ,EAAAtZ,EAAAuE,KAAA+V,WACA,MAAA,IAAA3Y,UAAA6S,EAAA,wBACA,wCAAAjQ,KAAA+V,WAEA,MAAAd,EAAAjV,KAAA2V,UAAAP,kBACAa,EAAAlB,EAAAtZ,QAAAtB,OA1FA6F,KAAA2V,UAAAR,gBA0FAJ,EAAAE,GAAAjV,KAAAgW,UAEAC,iBAsBAR,MAAAA,UAAAF,6BAE0B7F,EAC1B,CAKAgB,MAAAA,MACA,qBAAqBhS,EAAUjE,GAG/BgW,MAAAA,CAAAhV,GACK,kBAAAA,IAEDA,GAAAA,GACJoQ,MAAA4E,OAAAhV,EAEA,8BAmBA+T,EACA,WAAA5D,CAAAvS,EAAAqW,GACA,KAAArW,aAAAwX,GAAAxX,EAAAsX,WAEAlP,OAAAmL,UAAAvT,OAAAA,GACA,MAAA,IAAA+D,UAAA,yEAGA,IAAAqS,GAAA,EAEApW,aAAAwX,oBAUA7Q,KAAQ3G,OAAOA,UAGfqF,EAAAjE,GACA,IAAAgV,EAAAzP,KAAAyP,KAKA,OAJA,EAAAA,IAEAA,EAAAzP,KAAA3G,OAAAqX,OAAAhS,EAAAjE,IAEAgV,SAGA/Q,EAAAjE,EAAA,GACI,IAAAgV,OAAOA,YACX,EAAAA,IAEAA,OAAApW,OAAAqX,OAAAhS,EAAAjE,sBASAgW,MAAAA,CAAAvD,EAAAxO,EAAAjE,GACA,IAAAgV,EAAAzP,KAAA3G,OAIA,GAHA2G,KAAA3G,kBAAAwX,IACA3D,EAAAA,EAAA7T,UAEA6T,aAAApT,YAAA2V,IAAAvC,EAAA7T,QACA,MAAA,IAAA+D,UAAA6S,gBAAAjQ,MACA,qBAAAyP,EAAA,uBAEA,GAAAhV,EAAAgV,EAAA/Q,EAAArF,OACA,MAAA,IAAAwD,WAAiC,sCAEjCqZ,EAAA3G,EAAArC,GAKA,OAJAqC,EAAA7Q,GAAAd,MAAAsY,EAAA1W,SAAA,OAAA/E,EAAAgV,EAAA,OACApW,KAAAA,kBAAAwX,GACA7Q,KAAA3G,OAAAoX,OAAAhB,EAAA/Q,EAAAjE,GAEAgV,YAkBA0G,MAAAA,UAAA3G,EACA5D,WAAAA,CAAA8D,GACA7D,OAAA,EAAA6D,GAGchR,OAAAA,CAAAA,EAAAjE,EAAA,GACd6U,EAAA5Q,GACA,IAAA0T,EAAA3X,EACA,KAAA2X,EAAA1T,EAAArF,QAAAqF,IAAAA,EAAA0T,IAEAA,GAAA,EAEA,OAAA,EAAAA,EAAA3X,EAIAiW,MAAAA,CAAAhS,EAAAjE,EAAA,GACA,MAAAgV,EAAwBzP,KAASqS,QAAG3T,EAAAjE,GACpC,OAAA8U,EAAA7Q,GAAAb,MAAApD,EAAAA,EAAAgV,EAAA,GAAAjQ,SAAA,SAGAiR,MAAAA,CAAAvD,EAAAxO,EAAAjE,EAAA,GAIA,iBAAAyS,IACYA,EAAAhM,OAAAgM,IAEZkJ,MAAAA,EAAA/G,EAAA9S,OAAAe,KAAA4P,EAAA,QACAuC,EAAA2G,EAAA/c,OACA,GAAAoB,EAAAgV,EAAA/Q,EAAArF,OACA,MAAA,IAAAwD,WAAA,4BAEA,MAAArC,EAAA+U,EAAA7Q,GAGA,OAFA0X,EAAAjY,KAAA3D,EAAAC,GAvCAD,EAAAC,EAAAgV,GAuCA,EAEAA,EAAA,gCAwBAD,cACA6G,EAAA3G,GAIA5Q,GAHA,iBAAAuX,QAAAvX,IAAA4Q,IACAA,EAAA2G,EACAA,OAAAvX,QACAA,IAAAuX,EACYA,GAAA,OAIZ,IAAA5U,OAAAmL,UAAAyJ,4hBAfAD,EAAAjY,KAAAoR,wlCC9zEO,MAAM+G,GAAmBlG,IAGrB,CAAEM,OAFMN,EAAOM,OAAOqD,KAAK3D,GAEjBK,OADFL,EAAOK,OAAOsD,KAAK3D,eCPtCrT,OAAOkH,eAAesS,GAAS,aAAc,CAAE9a,OAAO,IAmBtD,IAAkB+a,GAAAD,GAAAE,WAZlB,SAAoB3Z,GAChB,CACI,MAAM4Z,EAAWna,OAAOe,KAAKR,GAC7B4Z,EAASC,UACT,MAAMC,EAAMF,EAASlX,SAAS,OAC9B,OAAmB,IAAfoX,EAAIvd,OACGsN,OAAO,GAEXA,OAAQ,KAAIiQ,IACtB,CAEL,EAiBkBL,GAAAM,WAVlB,SAAoB/Z,GAChB,CACI,MAAM8Z,EAAM9Z,EAAI0C,SAAS,OACzB,OAAmB,IAAfoX,EAAIvd,OACGsN,OAAO,GAEXA,OAAQ,KAAIiQ,IACtB,CAEL,EAkBA,IAAkBE,GAAAP,GAAAQ,WAVlB,SAAoB1c,EAAK2c,GACrB,CACI,MAAMJ,EAAMvc,EAAImF,SAAS,IACnBhF,EAAS+B,OAAOe,KAAKsZ,EAAIK,SAAiB,EAARD,EAAW,KAAKnZ,MAAM,EAAW,EAARmZ,GAAY,OAE7E,OADAxc,EAAOmc,UACAnc,CACV,CAGL,EAeA+b,GAAAW,WAPA,SAAoB7c,EAAK2c,GACrB,CACI,MAAMJ,EAAMvc,EAAImF,SAAS,IACzB,OAAOjD,OAAOe,KAAKsZ,EAAIK,SAAiB,EAARD,EAAW,KAAKnZ,MAAM,EAAW,EAARmZ,GAAY,MACxE,CAEL,EC/DO,MA0CMG,IAzCR9d,GAyCqB,EAxCrBqW,IACG,MAAMU,EAASpC,GAAK3U,GAAQqW,IACtBe,OAAEA,EAAMC,OAAEA,GAAW4F,GAAalG,GAElCgH,EAAehH,EAYrB,OAVAgH,EAAa1G,OAAS,CAAClW,EAAgBC,KACnC,MAAMyS,EAAMwD,EAAOlW,EAAQC,GAC3B,OAAOgc,GAAWla,OAAOe,KAAK4P,GAAK,EAGvCkK,EAAa3G,OAAS,CAAC4G,EAAgB7c,EAAgBC,KACnD,MAAMyS,EAAM6J,GAAWM,EAAQhe,IAC/B,OAAOoX,EAAOvD,EAAK1S,EAAQC,EAAO,EAG/B2c,CAAY,GAjBtB/d,OCFE,MAAMie,GAAQ5H,IACjB,MAAMU,EAASmH,GAAG7H,IACZe,OAAEA,EAAMC,OAAEA,GAAW4F,GAAalG,GAElCoH,EAAapH,EAYnB,OAVAoH,EAAW9G,OAAS,CAAClW,EAAgBC,MACrBiW,EAAOlW,EAAQC,GAI/B+c,EAAW/G,OAAS,CAAC6G,EAAe9c,EAAgBC,KAChD,MAAMyS,EAAMzL,OAAO6V,GACnB,OAAO7G,EAAOvD,EAAK1S,EAAQC,EAAO,EAG/B+c,CAAU,ECfRC,GAAa/H,IACtB,MAAMU,EAASpC,GAAK,GAAI0B,IAClBe,OAAEA,EAAMC,OAAEA,GAAW4F,GAAalG,GAElCsH,EAAkBtH,EAYxB,OAVAsH,EAAgBhH,OAAS,CAAClW,EAAgBC,KACtC,MAAMyS,EAAMwD,EAAOlW,EAAQC,GAC3B,OAAO,IAAIiT,EAAUR,EAAI,EAG7BwK,EAAgBjH,OAAS,CAACgH,EAAsBjd,EAAgBC,KAC5D,MAAMyS,EAAMuK,EAAUE,WACtB,OAAOlH,EAAOvD,EAAK1S,EAAQC,EAAO,EAG/Bid,CAAe,ECnBpB,MAAgBE,WAAmB3d,MACrC2R,WAAAA,CAAYM,GACRL,MAAMK,EACV,EAIE,MAAO2L,WAAkCD,GAA/ChM,WAAAA,uBACI5L,KAAAgM,KAAO,2BACX,EAaM,MAAO8L,WAAsCF,GAAnDhM,WAAAA,uBACI5L,KAAAgM,KAAO,+BACX,EAGM,MAAO+L,WAAqCH,GAAlDhM,WAAAA,uBACI5L,KAAAgM,KAAO,8BACX,EAGM,MAAOgM,WAA8BJ,GAA3ChM,WAAAA,uBACI5L,KAAAgM,KAAO,uBACX,EAQM,MAAOiM,WAAgCL,GAA7ChM,WAAAA,uBACI5L,KAAAgM,KAAO,yBACX,EC7CA,IAAYkM,IAAZ,SAAYA,GACRA,EAAAA,EAAa,cAAA,GAAA,gBACbA,EAAAA,EAAI,KAAA,GAAA,OACJA,EAAAA,EAAO,QAAA,GAAA,SACV,CAJD,CAAYA,KAAAA,GAAW,CAAA,IAKhB,MAAMC,GAAoB,EC+CpBC,GAlBiB/J,GAAoB,CAC9CkJ,GAAG,KACHA,GAAG,KACHD,GAAK,iBACLG,GAAU,WACVA,GAAU,WACVA,GAAU,WACVA,GAAU,WACVA,GAAU,WACVA,GAAU,WACVA,GAAU,WACVA,GAAU,WACVA,GAAU,WACVA,GAAU,YACVA,GAAU,cAI8BhI,KCN5C,IAAY4I,IAAZ,SAAYA,GACRA,EAAAA,EAAiB,cAAA,GAAA,gBACjBA,EAAAA,EAAe,YAAA,GAAA,cACfA,EAAAA,EAAU,OAAA,GAAA,QACb,CAJD,CAAYA,KAAAA,GAAY,CAAA,IAsBjB,MAAMC,GAAgBjK,GAAmB,CAC5CoJ,GAAU,QACVA,GAAU,SACVN,GAAI,UACJoB,GAAI,kBACJd,GAAU,YACVF,GAAG,SACHgB,GAAI,kBACJpB,GAAI,YACJA,GAAI,mBACJoB,GAAI,wBACJd,GAAU,oBAIDe,GAAeF,GAAc7I,KChC7BgJ,GAAapK,GAAgB,CACtCkK,GAAI,uBACJd,GAAU,iBACVN,GAAI,UACJI,GAAG,YACHD,GAAK,iBACLiB,GAAI,yBACJd,GAAU,qBAIDiB,GAAYD,GAAWhJ,KAY7BkJ,eAAeC,GAClBC,EACAC,EACAC,EACAC,EAAYvL,GAGZ,OAYE,SAAqBqL,EAAoBG,EAAkCD,EAAYvL,GACzF,IAAKwL,EAAM,MAAM,IAAIpB,GACrB,IAAKoB,EAAKC,MAAM9T,OAAO4T,GAAY,MAAM,IAAIlB,GAC7C,GAAImB,EAAK/Z,KAAK7F,OAASqf,GAAW,MAAM,IAAIX,GAE5C,MAAMoB,EAAUV,GAAW/H,OAAOuI,EAAK/Z,KAAKrB,MAAM,EAAG6a,KACrD,IAAIU,EAAU7c,OAAOE,MAAM,GAC3B,GAAIwc,EAAK/Z,KAAK7F,OAASqf,GAAW,CAC9B,GAAIO,EAAK/Z,KAAK7F,QAAUmf,GAAc,MAAM,IAAIT,GAChD,GAAIkB,EAAK/Z,KAAK7F,SAAW+e,GAAe,MAAM,IAAIL,GAClD,GAAIkB,EAAK/Z,KAAKsZ,KAAiBN,GAAYmB,KAAM,MAAM,IAAIrB,GAC3DoB,EAAUH,EAAK/Z,KAAKrB,MAAM2a,GAAeL,IAG7C,MAAO,CACHW,UACAQ,cAAeH,EAAQI,oBAAsBJ,EAAQG,cAAgB,KACrEE,OAAQL,EAAQK,OAChBC,SAAUN,EAAQM,SAClBC,cAAeP,EAAQO,cACvBC,gBAAiBR,EAAQS,sBAAwBT,EAAQQ,gBAAkB,KAC3EP,UAER,CAnCWS,CAAWf,QADCD,EAAWiB,eAAehB,EAASC,GACrBC,EACrC,CA2GM,SAAUe,GACZC,EACAd,EACAe,GAAqB,EACrBjB,EAAYvL,EACZyM,EAA2BvM,GAE3B,IAAKsM,IAAuBvM,EAAUyM,UAAUjB,EAAMvB,YAAa,MAAM,IAAIM,GAE7E,MAAOa,GAAWpL,EAAU0M,uBACxB,CAAClB,EAAMvB,WAAYqB,EAAUrB,WAAYqC,EAAKrC,YAC9CuC,GAGJ,OAAOpB,CACX,CC7JM,SAAUuB,GACZC,EACAC,EACArB,EACAc,EACAhB,EAAYvL,EACZyM,EAA2BvM,GAE3B,OAWJ,SACI2M,EACAC,EACArB,EACAc,EACAQ,EACAxB,EAAYvL,EACZyM,EAA2BvM,GAE3B,MAAM8M,EAAO,CACT,CAAEC,OAAQJ,EAAOK,UAAU,EAAMC,YAAY,GAC7C,CAAEF,OAAQH,EAAiBI,UAAU,EAAOC,YAAY,GACxD,CAAEF,OAAQxB,EAAOyB,UAAU,EAAOC,YAAY,GAC9C,CAAEF,OAAQV,EAAMW,UAAU,EAAOC,YAAY,GAC7C,CAAEF,OAAQG,EAAc7B,UAAW2B,UAAU,EAAOC,YAAY,GAChE,CAAEF,OAAQ1B,EAAW2B,UAAU,EAAOC,YAAY,IAGtD,OAAO,IAAIE,EAAuB,CAC9BL,OACAzB,UAAWkB,EACXhb,KAAMsb,GAEd,CAlCWO,CACHT,EACAC,EACArB,EACAc,EACAzd,OAAOe,KAAK,CAAC,IACb0b,EACAkB,EAER,KChEYc,IAAZ,SAAYA,GACVA,EAAA,eAAA,iBACAA,EAAA,iBAAA,mBACAA,EAAA,wBAAA,0BACAA,EAAA,mBAAA,qBACAA,EAAA,YAAA,cACAA,EAAA,oBAAA,sBACAA,EAAA,YAAA,cACAA,EAAA,aAAA,eACAA,EAAA,kBAAA,oBACAA,EAAA,kBAAA,oBACAA,EAAA,kBAAA,oBACAA,EAAA,wBAAA,0BACAA,EAAA,eAAA,iBACAA,EAAA,kBAAA,oBACAA,EAAA,mBAAA,qBACAA,EAAA,iBAAA,mBACAA,EAAA,oBAAA,sBACAA,EAAA,mBAAA,qBACAA,EAAA,sBAAA,wBACAA,EAAA,cAAA,gBACAA,EAAA,aAAA,eACAA,EAAA,cAAA,gBACAA,EAAA,gBAAA,0BACAA,EAAA,qBAAA,uBACAA,EAAA,iCAAA,mCACAA,EAAA,kBAAA,oBACAA,EAAA,yBAAA,2BACAA,EAAA,mBAAA,qBACAA,EAAA,gBAAA,kBACAA,EAAA,iBAAA,kBACD,CA/BD,CAAYA,KAAAA,GA+BX,CAAA,IAEK,MAAOC,WAAiBhhB,MAG5B,WAAA2R,CAAY5M,EAAiBkN,GAC3BL,MAAMK,GACNlM,KAAKgM,KAAO,WACZhM,KAAKhB,KAAOA,EAER/E,MAAMihB,mBACRjhB,MAAMihB,kBAAkBlb,KAAMib,GAEjC,QC1CUE,GAGX,WAAAvP,CAAYnQ,GACVuE,KAAKvE,MAAQkL,OAAOlL,EACrB,CAKD,QAAAkc,GACE,MAAMlT,EAAIlI,EAAAA,OAAOE,MAAM,GAEvB,OADAgI,EAAEwF,cAAcxI,OAAOzB,KAAKvE,QACrBgJ,CACR,CAKD,iBAAO2W,CAAW5gB,GAChB,GAAsB,IAAlBA,EAAOnB,OACT,MAAM,IAAI4hB,GACRD,GAAUK,oBACV,0BAA0B7gB,EAAOnB,UAIrC,MAAMoC,EAAQkL,OAAOnM,EAAOuN,aAAa,IACzC,OAAO,IAAIoT,GAAU1f,EACtB,CAED,QAAA6f,GACE,OAAO7Z,OAAOzB,KAAKvE,MACpB,CAED,QAAA+D,GACE,OAAO0B,OAAOlB,KAAKvE,MACpB,QAGU8f,GAGX,WAAA3P,CAAYnQ,GACVuE,KAAKvE,MAAQkL,OAAOlL,EACrB,CAKD,QAAAkc,GACE,MAAMlT,EAAIlI,EAAAA,OAAOE,MAAM,GAEvB,OADAgI,EAAE2F,iBAAiBpK,KAAKvE,OACjBgJ,CACR,CAKD,iBAAO2W,CAAW5gB,GAChB,GAAsB,IAAlBA,EAAOnB,OACT,MAAM,IAAI4hB,GACRD,GAAUQ,YACV,0BAA0BhhB,EAAOnB,UAIrC,MAAMoC,EAAQjB,EAAO0N,gBAAgB,GACrC,OAAO,IAAIqT,GAAU9f,EACtB,CAED,QAAA6f,GACE,OAAO7Z,OAAOzB,KAAKvE,MACpB,CAED,QAAA+D,GACE,OAAO0B,OAAOlB,KAAKvE,MACpB,EC/EI,ICCCggB,GDDGC,GAAW,CAAC,KAAM,MAAO,MAAO,MAAO,OAAQ,KAAM,MAAO,MAAO,MAAO,OAAQ,MAAO,OEAhGC,GAA8B,WAC9B,SAASA,IACL3b,KAAKvF,OAAS,EACduF,KAAK4b,YAAc,IACnB5b,KAAKxF,OAAS,IAAIuD,YAAYiC,KAAK4b,aACnC5b,KAAK6b,KAAO,IAAIC,SAAS9b,KAAKxF,OAClC,CA0BA,OAzBAmhB,EAAa1e,UAAU8e,oBAAsB,SAAUC,GACnD,GAAIhc,KAAK4b,YAAc5b,KAAKvF,OAASuhB,EAAc,CAC/Chc,KAAK4b,YAAcrgB,KAAK+J,IAAuB,EAAnBtF,KAAK4b,YAAiB5b,KAAK4b,YAAcI,GACrE,IAAIC,EAAa,IAAIle,YAAYiC,KAAK4b,aACtC,IAAI9hB,WAAWmiB,GAAYlX,IAAI,IAAIjL,WAAWkG,KAAKxF,SACnDwF,KAAKxF,OAASyhB,EACdjc,KAAK6b,KAAO,IAAIC,SAASG,EAC7B,GAEJN,EAAa1e,UAAUif,gBAAkB,WACrC,OAAO,IAAIpiB,WAAWkG,KAAKxF,QAAQqD,MAAM,EAAGmC,KAAKvF,SAErDkhB,EAAa1e,UAAUkf,YAAc,SAAU1gB,EAAOuD,GAClD,IAAIod,EAAQpd,EAAKqd,UAAU,GACvB/c,EAAOuC,SAASua,GAAS,EAC7Bpc,KAAK+b,oBAAoBzc,GACzB,IAAIgd,EAAqB,MAAZtd,EAAK,GAAa,WAAW4F,OAAOwX,GAAqB,MAAZpd,EAAK,GAAa,SAAS4F,OAAOwX,GAAS,UAAUxX,OAAOwX,GACtHpc,KAAK6b,KAAKS,GAAQtc,KAAKvF,OAAQgB,GAAO,GACtCuE,KAAKvF,QAAU6E,GAEnBqc,EAAa1e,UAAUsf,YAAc,SAAUjf,GAC3C0C,KAAK+b,oBAAoBze,EAAKjE,QAC9B,IAAIS,WAAWkG,KAAKxF,QAAQuK,IAAI,IAAIjL,WAAWwD,GAAO0C,KAAKvF,QAC3DuF,KAAKvF,QAAU6C,EAAKjE,QAEjBsiB,CACX,CAjCkC,GAmC9Ba,GAA8B,WAC9B,SAASA,EAAa1f,GAClBkD,KAAKvF,OAAS,EACduF,KAAK4b,YAAc9e,EAAIzD,OACvB2G,KAAKxF,OAAS,IAAIuD,YAAYjB,EAAIzD,QAClC,IAAIS,WAAWkG,KAAKxF,QAAQuK,IAAIjI,GAChCkD,KAAK6b,KAAO,IAAIC,SAAS9b,KAAKxF,OAClC,CAqBA,OApBAgiB,EAAavf,UAAUwf,qBAAuB,SAAUnd,GACpD,GAAIU,KAAKvF,OAAS6E,EAAOU,KAAKxF,OAAOkD,WACjC,MAAM,IAAIzD,MAAM,yDAGxBuiB,EAAavf,UAAUyf,cAAgB,SAAU1d,GAC7C,IAAIod,EAAQpd,EAAKqd,UAAU,GACvB/c,EAAOuC,SAASua,GAAS,EAC7Bpc,KAAKyc,qBAAqBnd,GAC1B,IAAIgd,EAAqB,MAAZtd,EAAK,GAAa,WAAW4F,OAAOwX,GAAqB,MAAZpd,EAAK,GAAa,SAAS4F,OAAOwX,GAAS,UAAUxX,OAAOwX,GAClHlW,EAAMlG,KAAK6b,KAAKS,GAAQtc,KAAKvF,QAAQ,GAEzC,OADAuF,KAAKvF,QAAU6E,EACR4G,GAEXsW,EAAavf,UAAU0f,cAAgB,SAAUrd,GAC7CU,KAAKyc,qBAAqBnd,GAC1B,IAAI4G,EAAMlG,KAAKxF,OAAOqD,MAAMmC,KAAKvF,OAAQuF,KAAKvF,OAAS6E,GAEvD,OADAU,KAAKvF,QAAU6E,EACR4G,GAEJsW,CACX,CA7BkC,GDnC9BI,IACInB,GAAgB,SAAUtgB,EAAGuD,GAI7B,OAHA+c,GAAgB1e,OAAOC,gBAClB,CAAE6f,UAAW,cAAgB9iB,OAAS,SAAUoB,EAAGuD,GAAKvD,EAAE0hB,UAAYne,CAAG,GAC1E,SAAUvD,EAAGuD,GAAK,IAAK,IAAIoe,KAAKpe,EAAO3B,OAAOE,UAAUoT,eAAexP,KAAKnC,EAAGoe,KAAI3hB,EAAE2hB,GAAKpe,EAAEoe,KACzFrB,GAActgB,EAAGuD,IAErB,SAAUvD,EAAGuD,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAItB,UAAU,uBAAyB8D,OAAOxC,GAAK,iCAE7D,SAASqe,IAAO/c,KAAK4L,YAAczQ,CAAG,CADtCsgB,GAActgB,EAAGuD,GAEjBvD,EAAE8B,UAAkB,OAANyB,EAAa3B,OAAO8S,OAAOnR,IAAMqe,EAAG9f,UAAYyB,EAAEzB,UAAW,IAAI8f,KAehF,SAASC,GAAYvhB,EAAOuD,EAAMie,GACrC,UAAYxhB,IAAWuD,EACnB,MAAM,IAAI/E,MAAM,YAAY2K,OAAO5F,EAAM,SAAS4F,cAAenJ,EAAQ,KAAKmJ,OAAOnJ,EAAO,SAASmJ,OAAOqY,EAAUpjB,KAAK,MAEnI,CAQO,SAASqjB,GAAiB7jB,EAAQ8jB,EAAUF,GAC/C,GAAI5jB,IAAW8jB,EACX,MAAM,IAAIljB,MAAM,gBAAgB2K,OAAOvL,EAAQ,kCAAkCuL,OAAOuY,EAAU,QAAQvY,OAAOqY,EAAUpjB,KAAK,MAExI,CAOA,IAAIujB,GAAqB1B,GAAS9W,OAAO,CAAC,OAAQ,WAC9CyY,GAAoB,CAAC,SAAU,OAAQ,QAAS,MAAO,MAAO,UAC9DC,GAA6B,SAAUC,GAEvC,SAASD,EAAYE,EAAQL,GACzB,IAAIjR,EAAU,mBAAmBtH,OAAO6Y,KAAKC,UAAUF,GAAS,cAAc5Y,OAAOuY,GACrF,OAAOI,EAAO1c,KAAKb,KAAMkM,IAAYlM,IACzC,CACA,OALA4c,GAAUU,EAAaC,GAKhBD,CACX,CAPiC,CAO/BrjB,OAEK,SAAS0jB,GAAgBH,GAC5B,GAAwB,iBAAZA,IAAwBJ,GAAmBtX,SAAS0X,GAAhE,CAGA,GAAIA,GAA8B,iBAAZA,EAAsB,CACxC,IAAI/C,EAAO1d,OAAO0d,KAAK+C,GACvB,GAAoB,IAAhB/C,EAAKphB,QAAgBgkB,GAAkBvX,SAAS2U,EAAK,IAAK,CAC1D,IAAImD,EAAMnD,EAAK,GACf,GAAY,WAARmD,EACA,OAAOD,GAAgBH,EAAOI,IAClC,GAAY,SAARA,EACA,OAahB,SAA8BJ,GAC1B,IAAKzjB,MAAMkF,QAAQue,GACf,MAAM,IAAIF,GAAYE,EAAQ,SAClC,IAAK,IAAIK,EAAK,EAAGC,EAAWN,EAAQK,EAAKC,EAASzkB,OAAQwkB,IAAM,CAC5D,IAAIE,EAAMD,EAASD,GACnB,GAAmB,iBAARE,KAAsB,WAAYA,GACzC,MAAM,IAAI9jB,MAAM,uCAEpB,GAA0B,iBAAf8jB,EAAI1P,QAA0D,IAAnCtR,OAAO0d,KAAKsD,EAAI1P,QAAQhV,OAC1D,MAAM,IAAIY,MAAM,oDAEpB0jB,GAAgB,CAAEtP,OAAQ0P,EAAI1P,QAClC,CACJ,CA1BuB2P,CAAqBR,EAAOI,IACvC,GAAY,UAARA,EACA,OAyBhB,SAA+BJ,GAC3B,GAAsB,iBAAXA,EACP,MAAM,IAAIF,GAAYE,EAAQ,kBAClC,GAAIA,EAAOvkB,KAA6B,iBAAfukB,EAAOvkB,IAC5B,MAAM,IAAIgB,MAAM,mBAAmB2K,OAAO4Y,IAE9C,GAAI,SAAUA,EACV,OAAOG,GAAgBH,EAAOxe,MAClC,MAAM,IAAIse,GAAYE,EAAQ,iBAClC,CAlCuBS,CAAsBT,EAAOI,IACxC,GAAY,QAARA,EACA,OAAOD,GAAgBH,EAAOI,IAClC,GAAY,QAARA,EACA,OA+BhB,SAA6BJ,GACzB,GAAsB,iBAAXA,KAAuB,QAASA,MAAU,UAAWA,GAK5D,MAAM,IAAIF,GAAYE,EAAQ,kBAJ9BG,GAAgBH,EAAOI,KACvBD,GAAgBH,EAAO/hB,MAK/B,CAvCuByiB,CAAoBV,EAAOI,IACtC,GAAY,WAARA,EACA,OAsChB,SAAgCJ,GAC5B,GAAsB,iBAAXA,EACP,MAAM,IAAIF,GAAYE,EAAQ,UAClC,IAAK,IAAII,KAAOJ,EACZG,GAAgBH,EAAOI,GAE/B,CA5CuBO,CAAuBX,EAAOI,GAC7C,CACJ,CACA,MAAM,IAAIN,GAAYE,EAAQH,GAAkBxjB,KAAK,MAAQ,OAASujB,GAAmBvjB,KAAK,MAnB9F,CAoBJ,CEjFA,IAAIukB,GAAiC,WACjC,SAASA,EAAgBC,GACrBre,KAAKse,QAAU,IAAI3C,GACnB3b,KAAKid,UAAY,CAAC,SAClBjd,KAAKqe,WAAaA,CACtB,CAqKA,OApKAD,EAAgBnhB,UAAUwT,OAAS,SAAUhV,EAAO+hB,GAEhD,OADAxd,KAAKue,aAAa9iB,EAAO+hB,GAClBxd,KAAKse,QAAQpC,mBAExBkC,EAAgBnhB,UAAUshB,aAAe,SAAU9iB,EAAO+hB,GACtD,GAAsB,iBAAXA,EAAqB,CAC5B,GAAI9B,GAAS5V,SAAS0X,GAClB,OAAOxd,KAAKwe,eAAe/iB,EAAO+hB,GACtC,GAAe,WAAXA,EACA,OAAOxd,KAAKye,cAAchjB,GAC9B,GAAe,SAAX+hB,EACA,OAAOxd,KAAK0e,eAAejjB,EACnC,CACA,GAAsB,iBAAX+hB,EAAqB,CAC5B,GAAI,WAAYA,EACZ,OAAOxd,KAAK2e,cAAcljB,EAAO+hB,GACrC,GAAI,SAAUA,EACV,OAAOxd,KAAK4e,YAAYnjB,EAAO+hB,GACnC,GAAI,UAAWA,EACX,OAAOxd,KAAK6e,aAAapjB,EAAO+hB,GACpC,GAAI,QAASA,EACT,OAAOxd,KAAK8e,WAAWrjB,EAAO+hB,GAClC,GAAI,QAASA,EACT,OAAOxd,KAAK+e,WAAWtjB,EAAO+hB,GAClC,GAAI,WAAYA,EACZ,OAAOxd,KAAKgf,cAAcvjB,EAAO+hB,EACzC,GAEJY,EAAgBnhB,UAAUuhB,eAAiB,SAAU/iB,EAAO+hB,GACxD,IAAIle,EAAOuC,SAAS2b,EAAOnB,UAAU,IACjC/c,GAAQ,IAAgB,OAAVke,GACdxd,KAAKqe,YAAcY,GAAkBxjB,EAAO,SAAUuE,KAAKid,WAC3Djd,KAAKse,QAAQnC,YAAY1gB,EAAO+hB,KAGhCxd,KAAKqe,YFZV,SAAuB5iB,EAAOwhB,GAGjC,KAFgB,CAAC,SAAU,SAAU,SAAU,WAAWnX,gBAAiBrK,IACxC,iBAAXA,GAAiC,OAAVA,GAAkB,aAAcA,GAE3E,MAAM,IAAIxB,MAAM,kDAAkD2K,cAAenJ,EAAQ,KAAKmJ,OAAOnJ,EAAO,SAASmJ,OAAOqY,EAAUpjB,KAAK,MAEnJ,CEM+BolB,CAAoBxjB,EAAOuE,KAAKid,WACnDjd,KAAKkf,cAAcvY,OAAOlL,GAAQ6D,KAG1C8e,EAAgBnhB,UAAUiiB,cAAgB,SAAUzjB,EAAO6D,GAGvD,IAFA,IAAI6f,EAAa7f,EAAO,EACpB9E,EAAS,IAAIV,WAAWqlB,GACnBvmB,EAAI,EAAGA,EAAIumB,EAAYvmB,IAC5B4B,EAAO5B,GAAK6I,OAAOhG,EAAQkL,OAAO,MAClClL,IAAiBkL,OAAO,GAE5B3G,KAAKse,QAAQ/B,YAAY,IAAIziB,WAAWU,KAE5C4jB,EAAgBnhB,UAAUwhB,cAAgB,SAAUhjB,GAChDuE,KAAKqe,YAAcY,GAAkBxjB,EAAO,SAAUuE,KAAKid,WAI3D,IAHA,IAAImC,EAAS3jB,EAET4jB,EAAY,GACPzmB,EAAI,EAAGA,EAAIwmB,EAAO/lB,OAAQT,IAAK,CACpC,IAAI0mB,EAAWF,EAAOjmB,WAAWP,GAC7B0mB,EAAW,IACXD,EAAU3lB,KAAK4lB,GAEVA,EAAW,KAChBD,EAAU3lB,KAAK,IAAQ4lB,GAAY,EAAI,IAAmB,GAAXA,GAE1CA,EAAW,OAAUA,GAAY,MACtCD,EAAU3lB,KAAK,IAAQ4lB,GAAY,GAAK,IAASA,GAAY,EAAK,GAAO,IAAmB,GAAXA,IAGjF1mB,IACA0mB,EAAW,QAAwB,KAAXA,IAAqB,GAA8B,KAAvBF,EAAOjmB,WAAWP,IACtEymB,EAAU3lB,KAAK,IAAQ4lB,GAAY,GAAK,IAASA,GAAY,GAAM,GAAO,IAASA,GAAY,EAAK,GAAO,IAAmB,GAAXA,GAE3H,CAEAtf,KAAKse,QAAQnC,YAAYkD,EAAUhmB,OAAQ,OAC3C2G,KAAKse,QAAQ/B,YAAY,IAAIziB,WAAWulB,KAE5CjB,EAAgBnhB,UAAUyhB,eAAiB,SAAUjjB,GACjDuE,KAAKqe,YAAcY,GAAkBxjB,EAAO,UAAWuE,KAAKid,WAC5Djd,KAAKse,QAAQnC,YAAY1gB,EAAQ,EAAI,EAAG,OAE5C2iB,EAAgBnhB,UAAU0hB,cAAgB,SAAUljB,EAAO+hB,GACnD/hB,QACAuE,KAAKse,QAAQnC,YAAY,EAAG,OAG5Bnc,KAAKse,QAAQnC,YAAY,EAAG,MAC5Bnc,KAAKue,aAAa9iB,EAAO+hB,EAAO+B,UAGxCnB,EAAgBnhB,UAAU2hB,YAAc,SAAUnjB,EAAO+hB,GACrDxd,KAAKqe,YFrDN,SAAqB5iB,EAAOwhB,GAC/B,GAAuB,iBAAXxhB,GAAiC,OAAVA,EAC/B,MAAM,IAAIxB,MAAM,uBAAuB2K,cAAenJ,EAAQ,KAAKmJ,OAAOnJ,EAAO,SAASmJ,OAAOqY,EAAUpjB,KAAK,MAExH,CEiD2BolB,CAAkBxjB,EAAOuE,KAAKid,WAEjD,IADA,IAAIuC,EAAWziB,OAAO0d,KAAKhf,GAAO,GACzB7C,EAAI,EAAGA,EAAI4kB,EAAa,KAAEnkB,OAAQT,IAAK,CAC5C,IAAI6mB,EAAcjC,EAAa,KAAE5kB,GACjC,GAAI4mB,IAAaziB,OAAO0d,KAAKgF,EAAYpR,QAAQ,GAE7C,OADArO,KAAKse,QAAQnC,YAAYvjB,EAAG,MACrBoH,KAAKgf,cAAcvjB,EAAOgkB,EAEzC,CACA,MAAM,IAAIxlB,MAAM,aAAa2K,OAAO4a,EAAU,gCAAgC5a,OAAO6Y,KAAKC,UAAUF,GAAS,QAAQ5Y,OAAO5E,KAAKid,UAAUpjB,KAAK,QAEpJukB,EAAgBnhB,UAAU4hB,aAAe,SAAUpjB,EAAO+hB,GACtD,GF7FD,SAAqB/hB,GAExB,OAAQ1B,MAAMkF,QAAQxD,MACfA,GACkB,iBAAVA,GACP,WAAYA,GACc,iBAAlBA,EAAMpC,SACI,IAAjBoC,EAAMpC,QACFoC,EAAMpC,OAAS,GACXoC,EAAMpC,OAAS,KAAMoC,EAC1C,CEmFYwjB,CAAkBxjB,GAClB,OAAOuE,KAAK0f,iBAAiBjkB,EAAO+hB,GACxC,GAAI/hB,aAAiBsC,YACjB,OAAOiC,KAAK2f,cAAclkB,EAAO+hB,GACrC,MAAM,IAAIvjB,MAAM,2BAA2B2K,cAAenJ,EAAQ,KAAKmJ,OAAOnJ,EAAO,SAASmJ,OAAO5E,KAAKid,UAAUpjB,KAAK,QAE7HukB,EAAgBnhB,UAAUyiB,iBAAmB,SAAUjkB,EAAO+hB,GACtDA,EAAOje,MAAMtG,IACbgmB,GAAuBxjB,EAAMpC,OAAQmkB,EAAOje,MAAMtG,IAAK+G,KAAKid,WAI5Djd,KAAKse,QAAQnC,YAAY1gB,EAAMpC,OAAQ,OAG3C,IAAK,IAAIT,EAAI,EAAGA,EAAI6C,EAAMpC,OAAQT,IAC9BoH,KAAKue,aAAa9iB,EAAM7C,GAAI4kB,EAAOje,MAAMP,OAGjDof,EAAgBnhB,UAAU0iB,cAAgB,SAAUlkB,EAAO+hB,GACnDA,EAAOje,MAAMtG,IACbgmB,GAAuBxjB,EAAMiC,WAAY8f,EAAOje,MAAMtG,IAAK+G,KAAKid,WAIhEjd,KAAKse,QAAQnC,YAAY1gB,EAAMiC,WAAY,OAG/CsC,KAAKse,QAAQ/B,YAAY,IAAIziB,WAAW2B,KAE5C2iB,EAAgBnhB,UAAU6hB,WAAa,SAAUrjB,EAAO+hB,GACpDxd,KAAKqe,YAAcY,GAAkBxjB,EAAO,SAAUuE,KAAKid,WAC3D,IACIjN,EADQvU,aAAiBmkB,IACR7lB,MAAMuD,KAAK7B,EAAMuU,UAAYjT,OAAOiT,OAAOvU,GAEhEuE,KAAKse,QAAQnC,YAAYnM,EAAO3W,OAAQ,OAExC,IAAK,IAAIwkB,EAAK,EAAGgC,EAAW7P,EAAQ6N,EAAKgC,EAASxmB,OAAQwkB,IAAM,CAC5D,IAAIiC,EAAUD,EAAShC,GACvB7d,KAAKue,aAAauB,EAAStC,EAAOzY,IACtC,GAEJqZ,EAAgBnhB,UAAU8hB,WAAa,SAAUtjB,EAAO+hB,GACpDxd,KAAKqe,YAAcY,GAAkBxjB,EAAO,SAAUuE,KAAKid,WAC3D,IAAI8C,EAAQtkB,aAAiBukB,IACzBvF,EAAOsF,EAAQhmB,MAAMuD,KAAK7B,EAAMgf,QAAU1d,OAAO0d,KAAKhf,GAE1DuE,KAAKse,QAAQnC,YAAY1B,EAAKphB,OAAQ,OAEtC,IAAK,IAAIwkB,EAAK,EAAGoC,EAASxF,EAAMoD,EAAKoC,EAAO5mB,OAAQwkB,IAAM,CACtD,IAAID,EAAMqC,EAAOpC,GACjB7d,KAAKue,aAAaX,EAAKJ,EAAO0C,IAAItC,KAClC5d,KAAKue,aAAawB,EAAQtkB,EAAM0I,IAAIyZ,GAAOniB,EAAMmiB,GAAMJ,EAAO0C,IAAIzkB,MACtE,GAEJ2iB,EAAgBnhB,UAAU+hB,cAAgB,SAAUvjB,EAAO+hB,GACvDxd,KAAKqe,YAAcY,GAAkBxjB,EAAO,SAAUuE,KAAKid,WAC3D,IAAK,IAAIY,EAAK,EAAGsC,EAAKpjB,OAAO0d,KAAK+C,EAAOnP,QAASwP,EAAKsC,EAAG9mB,OAAQwkB,IAAM,CACpE,IAAID,EAAMuC,EAAGtC,GACb7d,KAAKid,UAAUvjB,KAAKkkB,GACpB5d,KAAKue,aAAa9iB,EAAMmiB,GAAMJ,EAAOnP,OAAOuP,IAC5C5d,KAAKid,UAAUmD,KACnB,GAEGhC,CACX,CA3KqC,GCDjCiC,GAAmC,WACnC,SAASA,EAAkBC,GACvBtgB,KAAKxF,OAAS,IAAIgiB,GAAa8D,EACnC,CA+HA,OA9HAD,EAAkBpjB,UAAUyT,OAAS,SAAU8M,GAC3C,OAAOxd,KAAKugB,aAAa/C,IAE7B6C,EAAkBpjB,UAAUsjB,aAAe,SAAU/C,GACjD,GAAsB,iBAAXA,EAAqB,CAC5B,GAAI9B,GAAS5V,SAAS0X,GAClB,OAAOxd,KAAKwgB,eAAehD,GAC/B,GAAe,WAAXA,EACA,OAAOxd,KAAKygB,gBAChB,GAAe,SAAXjD,EACA,OAAOxd,KAAK0gB,gBACpB,CACA,GAAsB,iBAAXlD,EAAqB,CAC5B,GAAI,WAAYA,EACZ,OAAOxd,KAAK2gB,cAAcnD,GAC9B,GAAI,SAAUA,EACV,OAAOxd,KAAK4gB,YAAYpD,GAC5B,GAAI,UAAWA,EACX,OAAOxd,KAAK6gB,aAAarD,GAC7B,GAAI,QAASA,EACT,OAAOxd,KAAK8gB,WAAWtD,GAC3B,GAAI,QAASA,EACT,OAAOxd,KAAK+gB,WAAWvD,GAC3B,GAAI,WAAYA,EACZ,OAAOxd,KAAKghB,cAAcxD,EAClC,CACA,MAAM,IAAIvjB,MAAM,qBAAqB2K,OAAO4Y,KAEhD6C,EAAkBpjB,UAAUujB,eAAiB,SAAUhD,GACnD,IAAIle,EAAOuC,SAAS2b,EAAOnB,UAAU,IACrC,OAAI/c,GAAQ,IAAgB,OAAVke,EACPxd,KAAKxF,OAAOkiB,cAAcc,GAE9Bxd,KAAKihB,cAAc3hB,EAAMke,EAAO0D,WAAW,OAEtDb,EAAkBpjB,UAAUgkB,cAAgB,SAAU3hB,EAAM6hB,QACzC,IAAXA,IAAqBA,GAAS,GAClC,IAAIhC,EAAa7f,EAAO,EACpB9E,EAAS,IAAIV,WAAWkG,KAAKxF,OAAOmiB,cAAcwC,IAClD/Q,EAAO5T,EAAO4mB,aAAY,SAAUC,EAAG3c,GAAK,OAAO2c,EAAI3c,EAAElF,SAAS,IAAIyX,SAAS,EAAG,IAAO,GAAE,IAC/F,OAAIkK,GAAU3mB,EAAO2kB,EAAa,GACvBxY,OAAO2a,OAAOhiB,EAAMqH,OAAO,KAAK/B,OAAOwJ,KAE3CzH,OAAO,KAAK/B,OAAOwJ,KAE9BiS,EAAkBpjB,UAAUwjB,cAAgB,WAMxC,IALA,IAAIxnB,EAAM+G,KAAKwgB,eAAe,OAC1BhmB,EAAS,IAAIV,WAAWkG,KAAKxF,OAAOmiB,cAAc1jB,IAGlDoK,EAAa,GACRzK,EAAI,EAAGA,EAAIK,IAAOL,EAAG,CAC1B,IAAI2oB,EAAO/mB,EAAO5B,GAClB,GAAI2oB,EAAO,IACPle,EAAW3J,KAAK6nB,QAEf,GAAIA,EAAO,IACZle,EAAW3J,MAAc,GAAP6nB,IAAgB,EAAoB,GAAd/mB,IAAS5B,SAEhD,GAAI2oB,EAAO,IACZle,EAAW3J,MAAc,GAAP6nB,IAAgB,IAAsB,GAAd/mB,IAAS5B,KAAc,EAAoB,GAAd4B,IAAS5B,QAE/E,CACD,IAAImK,GAAqB,EAAPwe,IAAgB,IAAsB,GAAd/mB,IAAS5B,KAAc,IAAsB,GAAd4B,IAAS5B,KAAc,EAAoB,GAAd4B,IAAS5B,GAC/GyK,EAAW3J,KAAKqJ,EACpB,CACJ,CAEA,OAAO7B,OAAOsgB,cAAche,MAAMtC,OAAQmC,IAE9Cgd,EAAkBpjB,UAAUyjB,eAAiB,WACzC,OAAO1gB,KAAKxF,OAAOkiB,cAAc,MAAQ,GAE7C2D,EAAkBpjB,UAAU0jB,cAAgB,SAAUnD,GAClD,IAAI+B,EAASvf,KAAKxF,OAAOkiB,cAAc,MACvC,GAAe,IAAX6C,EACA,OAAOvf,KAAKugB,aAAa/C,EAAO+B,QAEpC,GAAe,IAAXA,EACA,MAAM,IAAItlB,MAAM,kBAAkB2K,OAAO2a,IAE7C,OAAO,MAEXc,EAAkBpjB,UAAU2jB,YAAc,SAAUpD,GAChD,IAAI2C,EACAsB,EAAazhB,KAAKxF,OAAOkiB,cAAc,MAC3C,GAAI+E,EAAajE,EAAa,KAAEnkB,OAC5B,MAAM,IAAIY,MAAM,eAAe2K,OAAO6c,EAAY,sBAEtD,IAAIpT,EAASmP,EAAa,KAAEiE,GAAYpT,OACpCuP,EAAM7gB,OAAO0d,KAAKpM,GAAQ,GAC9B,OAAO8R,EAAK,CAAA,GAAOvC,GAAO5d,KAAKugB,aAAalS,EAAOuP,IAAOuC,GAE9DE,EAAkBpjB,UAAU4jB,aAAe,SAAUrD,GAGjD,IAFA,IAAIkE,EAAS,GACTzoB,EAAMukB,EAAOje,MAAMtG,IAAMukB,EAAOje,MAAMtG,IAAM+G,KAAKwgB,eAAe,OAC3D5nB,EAAI,EAAGA,EAAIK,IAAOL,EACvB8oB,EAAOhoB,KAAKsG,KAAKugB,aAAa/C,EAAOje,MAAMP,OAE/C,OAAO0iB,GAEXrB,EAAkBpjB,UAAU6jB,WAAa,SAAUtD,GAG/C,IAFA,IAAIvkB,EAAM+G,KAAKwgB,eAAe,OAC1BkB,EAAS,IAAI9B,IACRhnB,EAAI,EAAGA,EAAIK,IAAOL,EACvB8oB,EAAOC,IAAI3hB,KAAKugB,aAAa/C,EAAOzY,MAExC,OAAO2c,GAEXrB,EAAkBpjB,UAAU8jB,WAAa,SAAUvD,GAG/C,IAFA,IAAIvkB,EAAM+G,KAAKwgB,eAAe,OAC1BkB,EAAS,IAAI1B,IACRpnB,EAAI,EAAGA,EAAIK,IAAOL,EAAG,CAC1B,IAAIglB,EAAM5d,KAAKugB,aAAa/C,EAAO0C,IAAItC,KACnCniB,EAAQuE,KAAKugB,aAAa/C,EAAO0C,IAAIzkB,OACzCimB,EAAO3c,IAAI6Y,EAAKniB,EACpB,CACA,OAAOimB,GAEXrB,EAAkBpjB,UAAU+jB,cAAgB,SAAUxD,GAClD,IAAIkE,EAAS,CAAA,EACb,IAAK,IAAI9D,KAAOJ,EAAOnP,OACnBqT,EAAO9D,GAAO5d,KAAKugB,aAAa/C,EAAOnP,OAAOuP,IAElD,OAAO8D,GAEJrB,CACX,CAnIuC,GCChC,SAASuB,GAAUpE,EAAQ/hB,EAAOomB,GAKrC,YAJiB,IAAbA,IAAuBA,GAAW,GAClCA,GACA5C,GAAsBzB,GACT,IAAIY,GAAgByD,GACnBpR,OAAOhV,EAAO+hB,EACpC,CACO,SAASsE,GAAYtE,EAAQhjB,EAAQqnB,GAKxC,YAJiB,IAAbA,IAAuBA,GAAW,GAClCA,GACA5C,GAAsBzB,GACP,IAAI6C,GAAkB7lB,GACrBkW,OAAO8M,EAC/B,CCAM,SAAUuE,GACdC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAEA,MAAMC,EAAU,CACdpmB,EAAMA,OAACe,KAAKslB,UAAUtlB,KAAK,CAAC,KAC5B,IAAI6d,GAAUkH,EAAYhpB,QAAQse,WAClC0K,EACAC,EAAS3K,WACT4K,EAAM5K,YAGFzY,EAAO3C,EAAAA,OAAOqI,OAAO+d,GAErBlI,EAAO,CACX,CACEC,OAAQuH,EACRtH,UAAU,EACVC,YAAY,GAEd,CACEF,OAAQ0H,EACRzH,UAAU,EACVC,YAAY,GAEd,CACEF,OAAQwH,EACRvH,UAAU,EACVC,YAAY,GAEd,CACEF,OAAQyH,EACRxH,UAAU,EACVC,YAAY,IAsChB,OAlCI4H,EACF/H,EAAK/gB,KAAK,CACRghB,OAAQ8H,EACR7H,UAAU,EACVC,YAAY,IAGdH,EAAK/gB,KAAK,CACRghB,OAAQ,IAAIhN,EAAUnR,EAAMA,OAACE,MAAM,KACnCke,UAAU,EACVC,YAAY,IAGZ6H,EACFhI,EAAK/gB,KAAK,CACRghB,OAAQ+H,EACR9H,UAAU,EACVC,YAAY,IAGdH,EAAK/gB,KAAK,CACRghB,OAAQ,IAAIhN,EAAUnR,EAAMA,OAACE,MAAM,KACnCke,UAAU,EACVC,YAAY,IAGZ8H,GACFjI,EAAK/gB,KAAK,CACRghB,OAAQgI,EACR/H,UAAU,EACVC,YAAY,IAIT,IAAIE,EAAuB,CAChCL,OACAzB,UAAWgJ,EACX9iB,QAEJ,CAEM,SAAU2jB,GACdb,EACAc,EACAroB,EACAsoB,EACAC,GAEA,MAAML,EAAU,CACdpmB,EAAMA,OAACe,KAAKslB,UAAUtlB,KAAK,CAAC,KAC5B7C,EAAOkd,WACP,IAAIwD,GAAU4H,EAAW1pB,QAAQse,WACjCoL,GAGI7jB,EAAO3C,EAAAA,OAAOqI,OAAO+d,GAc3B,OAAO,IAAI7H,EAAuB,CAChCL,KAdW,CACX,CACEC,OAAQoI,EACRnI,UAAU,EACVC,YAAY,GAEd,CACEF,OAAQsI,EACRrI,UAAU,EACVC,YAAY,IAMd5B,UAAWgJ,EACX9iB,QAEJ,CAEgB,SAAA+jB,GACdjB,EACAc,EACAI,EACAC,EACAX,EACAC,EACAW,GAEA,MAAMT,EAAU,CAACpmB,SAAOe,KAAKslB,UAAUtlB,KAAK,CAAC,KAAM4lB,EAAYvL,YAEzDzY,EAAO3C,EAAAA,OAAOqI,OAAO+d,GAErBlI,EAAO,CACX,CACEC,OAAQoI,EACRnI,UAAU,EACVC,YAAY,GAEd,CACEF,OAAQ0I,GAA4BD,EACpCxI,UAAU,EACVC,YAAY,IA2BhB,OAvBI4H,GACF/H,EAAK/gB,KAAK,CACRghB,OAAQ8H,EACR7H,UAAU,EACVC,YAAY,IAIZwI,GAAeX,IACZD,GACH/H,EAAK/gB,KAAK,CACRghB,OAAQhN,EAAU2V,QAClB1I,UAAU,EACVC,YAAY,IAGhBH,EAAK/gB,KAAK,CACRghB,OAAQ+H,EACR9H,UAAU,EACVC,YAAY,KAIT,IAAIE,EAAuB,CAChCL,OACAzB,UAAWgJ,EACX9iB,QAEJ,CAEM,SAAUokB,GACdtB,EACAc,EACAS,EACApB,GAEA,MAAMQ,EAAU,CAACpmB,EAAMA,OAACe,KAAKslB,UAAUtlB,KAAK,CAAC,MAEvC4B,EAAO3C,EAAAA,OAAOqI,OAAO+d,GAmB3B,OAAO,IAAI7H,EAAuB,CAChCL,KAnBW,CACX,CACEC,OAAQoI,EACRnI,UAAU,EACVC,YAAY,GAEd,CACEF,OAAQyH,EACRxH,UAAU,EACVC,YAAY,GAEd,CACEF,OAAQ6I,EACR5I,UAAU,EACVC,YAAY,IAMd5B,UAAWgJ,EACX9iB,QAEJ,OAEaskB,GAaX,WAAA5X,CAAYjN,GACVqB,KAAKoU,IAAM,EACXpU,KAAKgM,KAAOrN,EAAIqN,KAChBhM,KAAKuiB,MAAQ5jB,EAAI4jB,KAClB,CAED,SAAAX,GACE,OAAOA,GAAU4B,GAAoBhG,OAAQxd,KAC9C,CAED,cAAAyjB,CACEzK,EACA0K,EACA1B,EACA2B,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAEA,MAAMhlB,EAAO3C,EAAAA,OAAOe,KAAK0C,KAAK4hB,aACxBnH,EAAO,CACX,CACEC,OAAQgJ,EACR/I,UAAU,EACVC,YAAY,GAEd,CACEF,OAAQsH,EACRrH,UAAU,EACVC,YAAY,GAEd,CACEF,OAAQiJ,EACRhJ,UAAU,EACVC,YAAY,GAEd,CACEF,OAAQkJ,EACRjJ,UAAU,EACVC,YAAY,GAEd,CACEF,OAAQmJ,EACRlJ,UAAU,EACVC,YAAY,GAEd,CACEF,OAAQG,EAAc7B,UACtB2B,UAAU,EACVC,YAAY,GAEd,CACEF,OAAQoJ,EACRnJ,UAAU,EACVC,YAAY,GAEd,CACEF,OAAQqJ,EACRpJ,UAAU,EACVC,YAAY,GAEd,CACEF,OAAQsJ,EACRrJ,UAAU,EACVC,YAAY,GAEd,CACEF,OAAQuJ,EACRtJ,UAAU,EACVC,YAAY,GAEd,CACEF,OAAQjN,EACRkN,UAAU,EACVC,YAAY,GAEd,CACEF,OAAQwJ,EACRvJ,UAAU,EACVC,YAAY,IAIhB,OAAO,IAAIE,EAAuB,CAChCL,OACAzB,YACA9Z,QAEH,EApGMskB,GAAAhG,OAAS,CACdnP,OAAQ,CACN+F,IAAK,KACLpI,KAAM,SACNuW,MAAO,cAmGA4B,GAUX,WAAAvY,CAAYjN,GACVqB,KAAKoU,IAAM,GACXpU,KAAKgM,KAAOrN,EAAIqN,IACjB,CACD,SAAA4V,GACE,OAAOA,GAAUuC,GAAyB3G,OAAQxd,KACnD,CACD,cAAAyjB,CACEzK,EACAoL,EACAT,EACAU,EACAC,EACAR,EACAS,EACAC,EACAC,EACAC,GAEA,MAAMxlB,EAAO3C,EAAAA,OAAOe,KAAK0C,KAAK4hB,aAC9B,IAAInH,EAAqB,GAkDzB,OAjDAA,EAAK/gB,KAAK,CACRghB,OAAQ0J,EACRzJ,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQiJ,EACRhJ,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQ2J,EACR1J,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQ4J,EACR3J,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQoJ,EACRnJ,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQ6J,EACR5J,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQ8J,EACR7J,UAAU,EACVC,YAAY,IAER6J,GACJhK,EAAK/gB,KAAK,CACRghB,OAAQ+J,EACR9J,UAAU,EACVC,YAAY,IAGV8J,GACJjK,EAAK/gB,KAAK,CACRghB,OAAQgK,EACR/J,UAAU,EACVC,YAAY,IAGT,IAAIE,EAAuB,CAChCL,OACAzB,YACA9Z,QAEH,EAlFMilB,GAAA3G,OAAS,CACdnP,OAAQ,CACN+F,IAAK,KACLpI,KAAM,iBAiFC2Y,GAcX,WAAA/Y,CAAYjN,GAKVqB,KAAKoU,IAAM,GACXpU,KAAKgM,KAAOrN,EAAIqN,KAChBhM,KAAKuiB,MAAQ5jB,EAAI4jB,MACjBviB,KAAK4kB,eAAiBjmB,EAAIimB,cAC3B,CACD,SAAAhD,GACE,OAAOA,GAAU+C,GAAoBnH,OAAQxd,KAC9C,CACD,cAAAyjB,CACEzK,EACAoL,EACAT,EACA3X,EACAqY,EACAC,EACAR,EACAC,EACAc,EACAC,EACAC,EACAC,EACAC,EACAC,EACAV,EACAN,EACAiB,GAEA,MAAMjmB,EAAO3C,EAAAA,OAAOe,KAAK0C,KAAK4hB,aAC9B,IAAInH,EAAqB,GAmFzB,OAlFAA,EAAK/gB,KAAK,CACRghB,OAAQ0J,EACRzJ,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQiJ,EACRhJ,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQ1O,EACR2O,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQ2J,EACR1J,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQ4J,EACR3J,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQoJ,EACRnJ,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQqJ,EACRpJ,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQmK,EACRlK,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQoK,EACRnK,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQqK,EACRpK,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQsK,EACRrK,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQuK,EACRtK,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQwK,EACRvK,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQ8J,EACR7J,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQwJ,EACRvJ,UAAU,EACVC,YAAY,IAERuK,GACJ1K,EAAK/gB,KAAK,CACRghB,OAAQyK,EACRxK,UAAU,EACVC,YAAY,IAGT,IAAIE,EAAuB,CAChCL,OACAzB,YACA9Z,QAEH,EAlIMylB,GAAAnH,OAAS,CACdnP,OAAQ,CACN+F,IAAK,KACLpI,KAAM,SACNuW,MAAO,MACPqC,eAAgB,CAAErF,OAAQ,eAgInB6F,GAYX,WAAAxZ,CAAYjN,GACVqB,KAAKoU,IAAM,GACXpU,KAAKgM,KAAOrN,EAAIqN,KAChBhM,KAAKuiB,MAAQ5jB,EAAI4jB,KAClB,CACD,SAAAX,GACE,OAAOA,GAAUwD,GAAyB5H,OAAQxd,KACnD,CACD,cAAAyjB,CACEzK,EACAoL,EACAT,EACA3X,EACAqY,EACAC,EACAR,EACAC,EACAsB,EACAC,EACAC,EACAC,EACAC,EACAP,EACAV,EACAN,EACAwB,GAEA,MAAMxmB,EAAO3C,EAAAA,OAAOe,KAAK0C,KAAK4hB,aAC9B,IAAInH,EAAqB,GAiFzB,OAhFAA,EAAK/gB,KAAK,CACRghB,OAAQ0J,EACRzJ,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQiJ,EACRhJ,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQ1O,EACR2O,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQ2J,EACR1J,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQ4J,EACR3J,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQoJ,EACRnJ,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQqJ,EACRpJ,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQ2K,EACR1K,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQ4K,EACR3K,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQ6K,EACR5K,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQ8K,EACR7K,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQ+K,EACR9K,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQwK,EACRvK,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQ8J,EACR7J,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQwJ,EACRvJ,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQgL,EACR/K,UAAU,EACVC,YAAY,IAEP,IAAIE,EAAuB,CAChCL,OACAzB,YACA9Z,QAEH,EA1HMkmB,GAAA5H,OAAS,CACdnP,OAAQ,CACN+F,IAAK,KACLpI,KAAM,SACNuW,MAAO,cAyHAoD,GAQX,WAAA/Z,GACE5L,KAAKoU,IAAM,EACZ,CACD,SAAAwN,GACE,OAAOA,GAAU+D,GAAgBnI,OAAQxd,KAC1C,CACD,cAAAyjB,CACEzK,EACA4M,EACAtB,EACAuB,EACAlP,EACAmP,EACA5B,EACAJ,EACA5K,EACAzT,GAEA,MAAMvG,EAAO3C,EAAAA,OAAOe,KAAK0C,KAAK4hB,aAC9B,IAAInH,EAAqB,GA8CzB,OA7CAA,EAAK/gB,KAAK,CACRghB,OAAQkL,EACRjL,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQ4J,EACR3J,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQmL,EACRlL,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQ/D,EACRgE,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQoL,EACRnL,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQwJ,EACRvJ,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQoJ,EACRnJ,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQxB,EACRyB,UAAU,EACVC,YAAY,IAEdH,EAAK/gB,KAAK,CACRghB,OAAQjV,EACRkV,UAAU,EACVC,YAAY,IAEP,IAAIE,EAAuB,CAChCL,OACAzB,YACA9Z,QAEH,EAGa,SAAA6mB,GACd/D,EACAC,EACAG,EACAU,EACAX,EACAI,GAEA,MAAMI,EAAU,CAACpmB,SAAOe,KAAKslB,UAAUtlB,KAAK,CAAC,KAAMilB,EAAM5K,YAEnDzY,EAAO3C,EAAAA,OAAOqI,OAAO+d,GAwB3B,OAAO,IAAI7H,EAAuB,CAChCL,KAxBW,CACX,CACEC,OAAQuH,EACRtH,UAAU,EACVC,YAAY,GAEd,CACEF,OAAQ0H,EACRzH,UAAU,EACVC,YAAY,GAEd,CACEF,OAAQoI,EACRnI,UAAU,EACVC,YAAY,GAEd,CACEF,OAAQyH,EACRxH,UAAU,EACVC,YAAY,IAMd5B,UAAWgJ,EACX9iB,QAEJ,CAtHSymB,GAAAnI,OAAS,CACdnP,OAAQ,CACN+F,IAAK,OClrBJ,MAAM4R,GAAoB,IAAItY,EACnC,+CAGWuY,GAAc1pB,EAAMA,OAACe,KAAK,kBAE1B4oB,GAAiBL,IAC5B,MAAO7L,GAAQtM,EAAU0M,uBACvB,CAAC6L,GAAaJ,EAAOlO,YACrBqO,IAEF,OAAOhM,CAAI,EAGb,IAAYmM,IAAZ,SAAYA,GACVA,EAAAA,EAAA,cAAA,GAAA,gBACAA,EAAAA,EAAA,aAAA,GAAA,eACAA,EAAAA,EAAA,aAAA,GAAA,eACAA,EAAAA,EAAA,eAAA,GAAA,gBACD,CALD,CAAYA,KAAAA,GAKX,CAAA,UAEYC,GAiBX,WAAAxa,CAAYjN,GAOVqB,KAAKoU,IAAMzV,EAAIyV,IACfpU,KAAKqmB,MAAQ1nB,EAAI0nB,MACjBrmB,KAAK4jB,YAAc,IAAIlW,EAAU/O,EAAIilB,aACrC5jB,KAAKkZ,MAAQ,IAAIxL,EAAU/O,EAAIua,OAC/BlZ,KAAKulB,QAAU,IAAI7X,EAAU/O,EAAI4mB,QAClC,CAED,kBAAOzD,CAAY5iB,GACjB,OAAO,IAAIknB,GAAUtE,GAAY9hB,KAAKwd,OAAQte,GAC/C,CAED,qBAAaonB,CAASzN,EAAwB+E,GAC5C,MAAM2I,QAAoB1N,EAAWiB,eAAe8D,GACpD,IAAK2I,IAAgBA,EAAYrnB,KAC/B,MAAM,IAAIjF,MAAM,wBAElB,OAAO+F,KAAK8hB,YAAYyE,EAAYrnB,KACrC,CACD,oBAAasnB,CAAQ5C,EAAwB5K,GAC3C,aAAatL,EAAU+Y,mBACrB,CAAClqB,EAAMA,OAACe,KAAK,cAAesmB,EAAYjM,YACxCqB,EAEH,EAxCMoN,GAAA5I,OAAS,CACdnP,OAAQ,CACN+F,IAAK,KACLiS,MAAO,KACPzC,YAAa,CAAErkB,MAAO,CAAEP,KAAM,KAAM/F,IAAK,KACzCigB,MAAO,CAAE3Z,MAAO,CAAEP,KAAM,KAAM/F,IAAK,KACnCssB,QAAS,CAAEhmB,MAAO,CAAEP,KAAM,KAAM/F,IAAK,OA4CpC,MCxDMytB,GAAmB/N,MAC9BE,EACA+K,KAEA,IACE,MAAO5J,SAActM,EAAU+Y,mBAC7B,CAACR,GAAarC,EAAYjM,YAC1BqO,IAIF,GAAmC,aADZpN,GAAQC,EAAYmB,IAC9BR,OAAOha,WAClB,OAGF,MAAMmnB,EAAsC,CAC1C,CACEC,OAAQ,CACNnsB,OAAQ,EACR4L,MAAO2T,EAAK6M,aAGhB,CACED,OAAQ,CACNnsB,OAAQ,GACR4L,MAAO,MAGX,CAAEygB,SAAU,MAGRpF,QAAe7I,EAAWkO,mBAAmBtZ,EAAkB,CACnEkZ,YAGF,GAAqB,GAAjBjF,EAAOroB,OACT,OAGF,OAAO,IAAIqU,EAAUgU,EAAO,GAAGsF,QAAQ9nB,KAAKrB,MAAM,GAAI,IACvD,CAAC,MACA,MACD,GASUopB,GAAetO,MAAOE,IACjC,MASM6I,QAAe7I,EAAWkO,mBAAmBf,GAAmB,CACpEW,QAVc,CACd,CACEC,OAAQ,CACNnsB,OAAQ,EACR4L,MAAO,SASb,OAAOqb,EAAOxB,KACXrlB,GAAM,IAAI6S,EAAU7S,EAAEmsB,QAAQ9nB,KAAKrB,MAFvB,GAEqCpD,MACnD,EAGGysB,GAAahO,GACe,CAC9B,CACE0N,OAAQ,CAAEnsB,OAAQ,GAAI4L,MAAO6S,IAE/B,CAAE0N,OAAQ,CAAEnsB,OAAQ,GAAI4L,MAAO,OAK7B8gB,GAAUxO,MAAOE,EAAwBjG,KAC7C,MAAMwU,ODzByBzO,OAC/BE,EACAmB,KAEA,MAAM2M,EAAU,CACd,CACEC,OAAQ,CACNnsB,OAAQ,EACR4L,MAAO,MAGX,CACEugB,OAAQ,CACNnsB,OAAQ,GACR4L,MAAO2T,EAAK6M,cASlB,aAJqBhO,EAAWkO,mBAAmBf,GAAmB,CACpEW,WAGW,ECEQU,CAAkBxO,EAAYjG,EAAIoH,MACvD,GAAsB,IAAlBoN,EAAO/tB,OACT,OAAO+sB,GAAUtE,YAAYsF,EAAO,GAAGJ,QAAQ9nB,KAChD,EAGUooB,GAAkB3O,MAC7BE,EACAK,KAEA,MAAMyN,EAAsC,IACvCO,GAAUhO,EAAM2N,YACnB,CAAEC,SAAU,MAQRS,SANe1O,EAAWkO,mBAAmBtZ,EAAkB,CACnEkZ,aAGuBzG,KAAKrlB,GAAMyd,GAAc5H,OAAO7V,EAAEmsB,QAAQ9nB,QAExCghB,KAAKtN,GAAQuU,GAAQtO,EAAYjG,KAG5D,aAFsB4U,QAAQC,IAAIF,IAEnBG,QAAQ7sB,QAAYiE,IAANjE,GAA+B,QC5HjD8sB,GAeX,WAAA/b,CAAYjN,GAKVqB,KAAKykB,WAAa,IAAI/W,EAAU/O,EAAI8lB,YACpCzkB,KAAKkZ,MAAQ,IAAIxL,EAAU/O,EAAIua,OAC/BlZ,KAAK4nB,MAAQ,IAAIla,EAAU/O,EAAIipB,MAChC,CAED,kBAAO9F,CAAY5iB,GACjB,MAAM2D,EAAM,IAAI8kB,GAAkB7F,GAAY9hB,KAAKwd,OAAQte,IAG3D,OADA2D,EAAI3D,KAAOA,aAAI,EAAJA,EAAMrB,MAAMmC,KAAK6nB,YACrBhlB,CACR,CAEM,qBAAayjB,CAClBzN,EACAiK,SAEA,MAAMc,QAAoB/K,EAAWiB,eAAegJ,GACpD,IAAKc,EACH,MAAM,IAAI3I,GAASD,GAAU8M,qBAG/B,MAAMjlB,EAAM,IAAI8kB,GACd7F,GAAY9hB,KAAKwd,OAAQoG,EAAY1kB,OAEvC2D,EAAI3D,KAAyB,QAAlBihB,EAAAyD,EAAY1kB,YAAM,IAAAihB,OAAA,EAAAA,EAAAtiB,MAAMmC,KAAK6nB,YAIxC,MAAO,CAAE1T,SAAUtR,EAAKklB,eAFDrB,GAAiB7N,EAAYiK,GAGrD,CAED,2BAAakF,CACXnP,EACAoP,GAEA,MAAMC,QACErP,EAAWsP,wBAAwBF,GACrC1a,EAAMrO,IACV,IAAKA,EAAM,OACX,MAAM2D,EAAM,IAAI8kB,GAAkB7F,GAAY9hB,KAAKwd,OAAQte,IAE3D,OADA2D,EAAI3D,KAAOA,aAAI,EAAJA,EAAMrB,MAAMmC,KAAK6nB,YACrBhlB,CAAG,EAEZ,OAAOqlB,EAAahI,KAAKrlB,GAAM0S,EAAG1S,aAAA,EAAAA,EAAGqE,OACtC,CAEM,0BAAakpB,CAClBvP,EACAoP,GAEA,IAAIvG,EAA4C,GAChD,MAAMjH,EAAO,IAAIwN,GACjB,KAAOxN,EAAKphB,OAAS,GACnBqoB,EAAOhoB,cACKsG,KAAKgoB,eAAenP,EAAY4B,EAAK4N,OAAO,EAAG,OAG7D,OAAO3G,CACR,ECpEH,SAASrb,GAAM3H,KAA8B4pB,GAC3C,IARF,SAAiB7jB,GACf,OACEA,aAAa3K,YACP,MAAL2K,GAA0B,iBAANA,GAAyC,eAAvBA,EAAEmH,YAAYI,IAEzD,CAGOuc,CAAQ7pB,GAAI,MAAM,IAAIzE,MAAM,uBACjC,GAAIquB,EAAQjvB,OAAS,IAAMivB,EAAQxiB,SAASpH,EAAErF,QAC5C,MAAM,IAAIY,MAAM,iCAAiCquB,oBAA0B5pB,EAAErF,SACjF,CAeA,SAASmvB,GAAOC,EAAeC,GAAgB,GAC7C,GAAID,EAASE,UAAW,MAAM,IAAI1uB,MAAM,oCACxC,GAAIyuB,GAAiBD,EAASG,SAAU,MAAM,IAAI3uB,MAAM,wCAC1D,CD/BS0tB,GAAUE,WAAG,GAMbF,GAAAnK,OAAS,CACdnP,OAAQ,CACNoW,WAAY,CAAEllB,MAAO,CAAEP,KAAM,KAAM/F,IAAK,KACxCigB,MAAO,CAAE3Z,MAAO,CAAEP,KAAM,KAAM/F,IAAK,KACnC2uB,MAAO,CAAEroB,MAAO,CAAEP,KAAM,KAAM/F,IAAK,OEdlC,MAAM4vB,GACW,iBAAfC,YAA2B,WAAYA,WAAaA,WAAWD,YAAS/pB;sECejF,SAASypB,GAAQ9jB,GACf,OACEA,aAAa3K,YACP,MAAL2K,GAA0B,iBAANA,GAAyC,eAAvBA,EAAEmH,YAAYI,IAEzD,CAGO,MAAM+c,GAAclwB,GACzB,IAAIijB,SAASjjB,EAAI2B,OAAQ3B,EAAIwF,WAAYxF,EAAI6E,YAGlCsrB,GAAOA,CAAC/T,EAAc7B,IAAmB6B,GAAS,GAAK7B,EAAW6B,IAAS7B,EAOxF,KADgF,KAA5D,IAAItZ,WAAW,IAAImvB,YAAY,CAAC,YAAazuB,QAAQ,IAC9D,MAAM,IAAIP,MAAM,+CA0ErB,SAAU2F,GAAYsC,GAC1B,GAAmB,iBAARA,EAAkB,MAAM,IAAIjI,MAAM,2CAA2CiI,GACxF,OAAO,IAAIpI,YAAW,IAAIovB,aAAczY,OAAOvO,GACjD,CAQM,SAAUinB,GAAQjqB,GAEtB,GADoB,iBAATA,IAAmBA,EAAOU,GAAYV,KAC5CqpB,GAAQrpB,GAAO,MAAM,IAAIjF,MAAM,mCAAmCiF,GACvE,OAAOA,CACT,CAsBM,MAAgBkqB,GAsBpBC,KAAAA,GACE,OAAOrpB,KAAKspB,YACd,EA4BI,SAAUC,GAAmCC,GACjD,MAAMC,EAAS/c,GAA2B8c,IAAWE,OAAOP,GAAQzc,IAAMid,SACpEhxB,EAAM6wB,IAIZ,OAHAC,EAAMG,UAAYjxB,EAAIixB,UACtBH,EAAMI,SAAWlxB,EAAIkxB,SACrBJ,EAAM5Z,OAAS,IAAM2Z,IACdC,CACT,CC/LM,MAAgBK,WAAgCV,GAcpDxd,WAAAA,CACWie,EACFD,EACEG,EACArvB,GAETmR,QALS7L,KAAA6pB,SAAAA,EACF7pB,KAAA4pB,UAAAA,EACE5pB,KAAA+pB,UAAAA,EACA/pB,KAAAtF,KAAAA,EATDsF,KAAA4oB,UAAW,EACX5oB,KAAA3G,OAAS,EACT2G,KAAA8E,IAAM,EACN9E,KAAA2oB,WAAY,EASpB3oB,KAAKxF,OAAS,IAAIV,WAAW+vB,GAC7B7pB,KAAK6b,KAAOkN,GAAW/oB,KAAKxF,OAC9B,CACAkvB,MAAAA,CAAOxqB,GACLspB,GAAOxoB,MACP,MAAM6b,KAAEA,EAAIrhB,OAAEA,EAAMqvB,SAAEA,GAAa7pB,KAE7B/G,GADNiG,EAAOiqB,GAAQjqB,IACE7F,OACjB,IAAK,IAAIyL,EAAM,EAAGA,EAAM7L,GAAO,CAC7B,MAAM+wB,EAAOzuB,KAAKqH,IAAIinB,EAAW7pB,KAAK8E,IAAK7L,EAAM6L,GAEjD,GAAIklB,IAASH,EAKbrvB,EAAOuK,IAAI7F,EAAKiI,SAASrC,EAAKA,EAAMklB,GAAOhqB,KAAK8E,KAChD9E,KAAK8E,KAAOklB,EACZllB,GAAOklB,EACHhqB,KAAK8E,MAAQ+kB,IACf7pB,KAAKiqB,QAAQpO,EAAM,GACnB7b,KAAK8E,IAAM,OAVb,CACE,MAAMolB,EAAWnB,GAAW7pB,GAC5B,KAAO2qB,GAAY5wB,EAAM6L,EAAKA,GAAO+kB,EAAU7pB,KAAKiqB,QAAQC,EAAUplB,EAExE,CAQF,CAGA,OAFA9E,KAAK3G,QAAU6F,EAAK7F,OACpB2G,KAAKmqB,aACEnqB,IACT,CACAoqB,UAAAA,CAAWjkB,GACTqiB,GAAOxoB,MH5BX,SAAgBmG,EAAUsiB,GACxBpiB,GAAMF,GACN,MAAMvD,EAAM6lB,EAASmB,UACrB,GAAIzjB,EAAI9M,OAASuJ,EACf,MAAM,IAAI3I,MAAM,yDAAyD2I,IAE7E,CGuBItI,CAAO6L,EAAKnG,MACZA,KAAK4oB,UAAW,EAIhB,MAAMpuB,OAAEA,EAAMqhB,KAAEA,EAAIgO,SAAEA,EAAQnvB,KAAEA,GAASsF,KACzC,IAAI8E,IAAEA,GAAQ9E,KAEdxF,EAAOsK,KAAS,IAChB9E,KAAKxF,OAAO2M,SAASrC,GAAKT,KAAK,GAE3BrE,KAAK+pB,UAAYF,EAAW/kB,IAC9B9E,KAAKiqB,QAAQpO,EAAM,GACnB/W,EAAM,GAGR,IAAK,IAAIlM,EAAIkM,EAAKlM,EAAIixB,EAAUjxB,IAAK4B,EAAO5B,GAAK,GAhFrD,SAAsBijB,EAAgBxd,EAAoB5C,EAAef,GACvE,GAAiC,mBAAtBmhB,EAAKwO,aAA6B,OAAOxO,EAAKwO,aAAahsB,EAAY5C,EAAOf,GACzF,MAAM4vB,EAAO3jB,OAAO,IACd4jB,EAAW5jB,OAAO,YAClB6jB,EAAK/oB,OAAQhG,GAAS6uB,EAAQC,GAC9BE,EAAKhpB,OAAOhG,EAAQ8uB,GACpBG,EAAIhwB,EAAO,EAAI,EACfiwB,EAAIjwB,EAAO,EAAI,EACrBmhB,EAAK+O,UAAUvsB,EAAaqsB,EAAGF,EAAI9vB,GACnCmhB,EAAK+O,UAAUvsB,EAAassB,EAAGF,EAAI/vB,EACrC,CA0EI2vB,CAAaxO,EAAMgO,EAAW,EAAGljB,OAAqB,EAAd3G,KAAK3G,QAAaqB,GAC1DsF,KAAKiqB,QAAQpO,EAAM,GACnB,MAAMgP,EAAQ9B,GAAW5iB,GACnBlN,EAAM+G,KAAK4pB,UAEjB,GAAI3wB,EAAM,EAAG,MAAM,IAAIgB,MAAM,+CAC7B,MAAM6wB,EAAS7xB,EAAM,EACfirB,EAAQlkB,KAAKmE,MACnB,GAAI2mB,EAAS5G,EAAM7qB,OAAQ,MAAM,IAAIY,MAAM,sCAC3C,IAAK,IAAIrB,EAAI,EAAGA,EAAIkyB,EAAQlyB,IAAKiyB,EAAMD,UAAU,EAAIhyB,EAAGsrB,EAAMtrB,GAAI8B,EACpE,CACAivB,MAAAA,GACE,MAAMnvB,OAAEA,EAAMovB,UAAEA,GAAc5pB,KAC9BA,KAAKoqB,WAAW5vB,GAChB,MAAMqI,EAAMrI,EAAOqD,MAAM,EAAG+rB,GAE5B,OADA5pB,KAAK+qB,UACEloB,CACT,CACAymB,UAAAA,CAAW0B,GACTA,IAAAA,EAAO,IAAKhrB,KAAK4L,aACjBof,EAAGjmB,OAAO/E,KAAKmE,OACf,MAAM0lB,SAAEA,EAAQrvB,OAAEA,EAAMnB,OAAEA,EAAMuvB,SAAEA,EAAQD,UAAEA,EAAS7jB,IAAEA,GAAQ9E,KAM/D,OALAgrB,EAAG3xB,OAASA,EACZ2xB,EAAGlmB,IAAMA,EACTkmB,EAAGpC,SAAWA,EACdoC,EAAGrC,UAAYA,EACXtvB,EAASwwB,GAAUmB,EAAGxwB,OAAOuK,IAAIvK,GAC9BwwB,CACT,EC7GF,MAAMC,GAAMA,CAACxmB,EAAW/F,EAAWhD,IAAe+I,EAAI/F,GAAO+F,EAAI/I,EAE3DwvB,GAAMA,CAACzmB,EAAW/F,EAAWhD,IAAe+I,EAAI/F,EAAM+F,EAAI/I,EAAMgD,EAAIhD,EAKpEyvB,GAA0B,IAAIlC,YAAY,CAC9C,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WACpF,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WACpF,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UACpF,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UACpF,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,aAKhFmC,GAAoB,IAAInC,YAAY,CACxC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,aAKhFoC,GAA2B,IAAIpC,YAAY,IACjD,MAAMqC,WAAexB,GAYnBle,WAAAA,GACEC,MAAM,GAAI,GAAI,GAAG,GAVnB7L,KAAAurB,EAAY,EAARH,GAAG,GACPprB,KAAAwrB,EAAY,EAARJ,GAAG,GACPprB,KAAAyrB,EAAY,EAARL,GAAG,GACPprB,KAAA0rB,EAAY,EAARN,GAAG,GACPprB,KAAAwL,EAAY,EAAR4f,GAAG,GACPprB,KAAA2rB,EAAY,EAARP,GAAG,GACPprB,KAAA4rB,EAAY,EAARR,GAAG,GACPprB,KAAA6rB,EAAY,EAART,GAAG,EAIP,CACUjnB,GAAAA,GACR,MAAMonB,EAAEA,EAACC,EAAEA,EAACC,EAAEA,EAACC,EAAEA,EAAClgB,EAAEA,EAACmgB,EAAEA,EAACC,EAAEA,EAACC,EAAEA,GAAM7rB,KACnC,MAAO,CAACurB,EAAGC,EAAGC,EAAGC,EAAGlgB,EAAGmgB,EAAGC,EAAGC,EAC/B,CAEU9mB,GAAAA,CACRwmB,EAAWC,EAAWC,EAAWC,EAAWlgB,EAAWmgB,EAAWC,EAAWC,GAE7E7rB,KAAKurB,EAAQ,EAAJA,EACTvrB,KAAKwrB,EAAQ,EAAJA,EACTxrB,KAAKyrB,EAAQ,EAAJA,EACTzrB,KAAK0rB,EAAQ,EAAJA,EACT1rB,KAAKwL,EAAQ,EAAJA,EACTxL,KAAK2rB,EAAQ,EAAJA,EACT3rB,KAAK4rB,EAAQ,EAAJA,EACT5rB,KAAK6rB,EAAQ,EAAJA,CACX,CACU5B,OAAAA,CAAQpO,EAAgBphB,GAEhC,IAAK,IAAI7B,EAAI,EAAGA,EAAI,GAAIA,IAAK6B,GAAU,EAAG4wB,GAASzyB,GAAKijB,EAAKiQ,UAAUrxB,GAAQ,GAC/E,IAAK,IAAI7B,EAAI,GAAIA,EAAI,GAAIA,IAAK,CAC5B,MAAMmzB,EAAMV,GAASzyB,EAAI,IACnBozB,EAAKX,GAASzyB,EAAI,GAClBqzB,EAAKjD,GAAK+C,EAAK,GAAK/C,GAAK+C,EAAK,IAAOA,IAAQ,EAC7CG,EAAKlD,GAAKgD,EAAI,IAAMhD,GAAKgD,EAAI,IAAOA,IAAO,GACjDX,GAASzyB,GAAMszB,EAAKb,GAASzyB,EAAI,GAAKqzB,EAAKZ,GAASzyB,EAAI,IAAO,CACjE,CAEA,IAAI2yB,EAAEA,EAACC,EAAEA,EAACC,EAAEA,EAACC,EAAEA,EAAClgB,EAAEA,EAACmgB,EAAEA,EAACC,EAAEA,EAACC,EAAEA,GAAM7rB,KACjC,IAAK,IAAIpH,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,MACMuzB,EAAMN,GADG7C,GAAKxd,EAAG,GAAKwd,GAAKxd,EAAG,IAAMwd,GAAKxd,EAAG,KACzByf,GAAIzf,EAAGmgB,EAAGC,GAAKT,GAASvyB,GAAKyyB,GAASzyB,GAAM,EAE/DwzB,GADSpD,GAAKuC,EAAG,GAAKvC,GAAKuC,EAAG,IAAMvC,GAAKuC,EAAG,KAC7BL,GAAIK,EAAGC,EAAGC,GAAM,EACrCI,EAAID,EACJA,EAAID,EACJA,EAAIngB,EACJA,EAAKkgB,EAAIS,EAAM,EACfT,EAAID,EACJA,EAAID,EACJA,EAAID,EACJA,EAAKY,EAAKC,EAAM,CAClB,CAEAb,EAAKA,EAAIvrB,KAAKurB,EAAK,EACnBC,EAAKA,EAAIxrB,KAAKwrB,EAAK,EACnBC,EAAKA,EAAIzrB,KAAKyrB,EAAK,EACnBC,EAAKA,EAAI1rB,KAAK0rB,EAAK,EACnBlgB,EAAKA,EAAIxL,KAAKwL,EAAK,EACnBmgB,EAAKA,EAAI3rB,KAAK2rB,EAAK,EACnBC,EAAKA,EAAI5rB,KAAK4rB,EAAK,EACnBC,EAAKA,EAAI7rB,KAAK6rB,EAAK,EACnB7rB,KAAK+E,IAAIwmB,EAAGC,EAAGC,EAAGC,EAAGlgB,EAAGmgB,EAAGC,EAAGC,EAChC,CACU1B,UAAAA,GACRkB,GAAShnB,KAAK,EAChB,CACA0mB,OAAAA,GACE/qB,KAAK+E,IAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC9B/E,KAAKxF,OAAO6J,KAAK,EACnB,EAsBK,MAAMgoB,GAAyB9C,IAAgB,IAAM,IAAI+B,KC9HnDgB,GAAkB,IAAI5e,EACjC,+CAMW6e,GAAc,mBAKdC,GAAsB,IAAI9e,EACrC,gDAMW+e,GAAsB,IAAI/e,EACrC,+CAMWgf,GAAsB,IAAIhf,EACrC,gDAMWif,GAAmB,IAAIjf,EAClC,gDAMWkf,GAAuB,IAAIlf,EACtC,gDAMWmf,GAAiC,IAAInf,EAChD,gDAMWof,GAAmC,IAAIpf,EAClD,gDAMWqf,GAAqB,GAErBC,GAAmB,IAAItf,EAClC,gDAGWuf,GAAY,IAAIvf,EAC3B,gDAGWwf,GAAyB,CACpC,IAAIxf,EAAU,gDACd,IAAIA,EAAU,gDACd,IAAIA,EAAU,gDACd,IAAIA,EAAU,gDACd,IAAIA,EAAU,gDACd,IAAIA,EAAU,gDACd,IAAIA,EAAU,gDACd,IAAIA,EAAU,gDACd,IAAIA,EAAU,iDAGHyf,GAAkB,IAAInN,IAAoB,CACrD,CAAC,+CAAgD,QACjD,CAAC,+CAAgD,QACjD,CAAC,8CAA+C,OAChD,CAAC,+CAAgD,QACjD,CAAC,8CAA+C,QAChD,CAAC,+CAAgD,QACjD,CAAC,+CAAgD,OACjD,CAAC,+CAAgD,QACjD,CAAC,8CAA+C,QAChD,CAAC,+CAAgD,SAGtCoN,GAAa,IAAIpN,IAAgD,CAC5E,CACE,+CACA,CACEqN,MAAO,+CACPC,QAAS,iDAGb,CACE,+CACA,CACED,MAAO,+CACPC,QAAS,iDAGb,CACE,8CACA,CACED,MAAO,+CACPC,QAAS,iDAGb,CACE,+CACA,CACED,MAAO,+CACPC,QAAS,iDAGb,CACE,8CACA,CACED,MAAO,+CACPC,QAAS,iDAGb,CACE,+CACA,CACED,MAAO,+CACPC,QAAS,iDAGb,CACE,+CACA,CACED,MAAO,+CACPC,QAAS,iDAGb,CACE,+CACA,CACED,MAAO,8CACPC,QAAS,iDAGb,CACE,8CACA,CACED,MAAO,+CACPC,QAAS,iDAGb,CACE,+CACA,CACED,MAAO,+CACPC,QAAS,mDAKFC,GAAmB,IAAI7f,EAClC,gDAGW8f,GAAc,IAAI9f,EAC7B,gDAGW+f,GAAgB,IAAI/f,EAC/B,gDAGWggB,GAA6B,IAAIhgB,EAC5C,gDAGWigB,GAAc,IAAIjgB,EAC7B,+CChLKiL,eAAeiV,GACpB/U,EACAiK,GAGA,UAD0BjK,EAAWiB,eAAegJ,GAElD,MAAM,IAAI7H,GAASD,GAAU8M,qBAE/B,OAAOH,GAAkBrB,SAASzN,EAAYiK,EAChD,CAKOnK,eAAekV,GAAc7hB,GAClC,MAAMS,EAAQ8f,GAAcvgB,EACtB8hB,EAASzB,GAAO9vB,EAAMA,OAACe,KAAKmP,EAAO,SACzC,OAAOlQ,EAAMA,OAACe,KAAKwwB,EACrB,CAKOnV,eAAeoV,GACpB1L,EACA2L,EACAvL,GAEA,MAAMwL,EAAQ,CAAC5L,GACX2L,EACFC,EAAMv0B,KAAKs0B,EAAUrW,YAErBsW,EAAMv0B,KAAK6C,EAAAA,OAAOE,MAAM,KAEtBgmB,EACFwL,EAAMv0B,KAAK+oB,EAAW9K,YAEtBsW,EAAMv0B,KAAK6C,EAAAA,OAAOE,MAAM,KAE1B,MAAOqmB,SAAwBpV,EAAU+Y,mBACvCwH,EACA3B,IAEF,OAAOxJ,CACT,CASOnK,eAAeuV,GACpBrV,EACA+K,GAEA,MAAMuK,QAA4BN,GAAcjK,EAAYiD,YACtDhD,QAA6BkK,GACjCI,EACAvB,KAGIzY,SAAEA,SAAmBwT,GAAkBrB,SAC3CzN,EACAgL,GAEF,IAAK1P,EAASjV,KACZ,MAAM,IAAI+b,GAASD,GAAUoT,eAE/B,MAAMC,EAAala,EAASjV,KAAKrB,MAAM,EAAG,GAAGkK,aAAa,GAC1D,OAAOoM,EAASjV,KAAKrB,MAAM,EAAG,EAAIwwB,GAAY7uB,UAChD,CASOmZ,eAAe2V,GACpBzV,EACAqP,GAEA,IAAIqG,EAAqC,GACzC,IAAK,IAAI3K,KAAesE,EAAc,CACpC,MAAMiG,QAA4BN,GAAcjK,EAAYiD,YACtDhD,QAA6BkK,GACjCI,EACAvB,IAEF2B,EAAsB70B,KAAKmqB,EAC5B,CAOD,aALkB8D,GAAkBS,cAClCvP,EACA0V,IAGWrO,KAAKlU,IAChB,QAAalN,IAATkN,QAAoClN,IAAdkN,EAAK9M,KAC7B,OAEF,MAAMmvB,EAAariB,EAAK9M,KAAKrB,MAAM,EAAG,GAAGkK,aAAa,GACtD,OAAOiE,EAAK9M,KAAKrB,MAAM,EAAG,EAAIwwB,GAAY7uB,UAAU,GAExD,CAEA,MAAMgvB,GAAU7V,MACd3M,EACAyiB,EAAoBjC,MAEpB,IAAIsB,QAAeD,GAAc7hB,GAEjC,MAAO,CAAE0O,aADUqT,GAAkBD,OAAQhvB,EAAW2vB,GACvCX,SAAQ,EAUdY,GAAe/V,MAAOkN,EAAgBuB,GAAS,KACtDvB,EAAO8I,SAAS,UAClB9I,EAASA,EAAOhoB,MAAM,GAAI,IAE5B,MAAM+wB,EAAW/I,EAAO7Y,MAAM,KAC9B,GAAwB,IAApB4hB,EAASv1B,OAAc,CACzB,MACMmR,EADSjO,SAAOe,KAAK,CAAC8pB,EAAS,EAAI,IAAI5nB,WAC1BoF,OAAOgqB,EAAS,KAC3BlU,OAAQmU,SAAoBL,GAAQI,EAAS,IAErD,MAAO,UADcJ,GAAQhkB,EAAKqkB,GACdC,OAAO,EAAML,OAAQI,EAC1C,CAAM,GAAwB,IAApBD,EAASv1B,QAAgB+tB,EAAQ,CAE1C,MAAQ1M,OAAQmU,SAAoBL,GAAQI,EAAS,KAE7ClU,OAAQqU,SAAiBP,GAC/B,KAAK5pB,OAAOgqB,EAAS,IACrBC,GAGIG,EAAezyB,EAAAA,OAAOe,KAAK,CAAC,IAAIkC,WAEtC,MAAO,UADcgvB,GAAQQ,EAAapqB,OAAOgqB,EAAS,IAAKG,GAC3CD,OAAO,EAAML,OAAQI,EAAWI,aAAa,EAClE,CAAM,GAAIL,EAASv1B,QAAU,EAC5B,MAAM,IAAI4hB,GAASD,GAAUkU,cAG/B,MAAO,UADcV,GAAQ3I,EAAQ2G,IACjBsC,OAAO,EAAOL,YAAQ3vB,EAAW,EAU1CqwB,GAAgBxW,MAAOkN,EAAgBiJ,KAClD,MAAMpU,OAAEA,EAAM+T,OAAEA,SAAiBC,GAAa7I,GACxCsI,QAA4BN,GAAcnT,EAAOmM,YAMvD,aALmCkH,GACjCI,EACAvB,GACAkC,EAAQL,OAAS3vB,EAEQ,ECzLtB,OAAI0B,GAAW,CAAC,KAAM,MAAO,MAAO,MAAO,OAAQ,KAAM,MAAO,MAAO,MAAO,OAAQ,MAAO,g2eCGxF4uB,IAAZ,SAAYA,GACVA,EAAA,KAAA,OACAA,EAAA,KAAA,OACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,KAAA,OACAA,EAAA,MAAA,QACAA,EAAA,IAAA,MACAA,EAAA,QAAA,UACAA,EAAA,OAAA,SACAA,EAAA,OAAA,SACAA,EAAA,QAAA,UACAA,EAAA,SAAA,WACAA,EAAA,IAAA,MACAA,EAAA,KAAA,OACAA,EAAA,MAAA,QACAA,EAAA,IAAA,MACAA,EAAA,UAAA,MACAA,EAAA,SAAA,WACAA,EAAA,EAAA,IACAA,EAAA,KAAA,OACAA,EAAA,MAAA,QACAA,EAAA,IAAA,MACAA,EAAA,WAAA,YACD,CA1BD,CAAYA,KAAAA,GA0BX,CAAA,IAEY,MAAAC,GAAsC,IAAIrP,IAAI,CACzD,CAACoP,GAAOE,IAAK,IACb,CAACF,GAAOG,IAAK,IACb,CAACH,GAAOI,IAAK,IACb,CAACJ,GAAOK,UAAW,IACnB,CAACL,GAAO7D,EAAG,GACX,CAAC6D,GAAOM,KAAM,IACd,CAACN,GAAOO,WAAY,UAGVC,IAAZ,SAAYA,GACVA,EAAAA,EAAA,GAAA,GAAA,KACAA,EAAAA,EAAA,GAAA,GAAA,IACD,CAHD,CAAYA,KAAAA,GAGX,CAAA,IC5CD,opGCAIC,GAAU,EACVC,IAAmB,EAEvB,SAASC,KACP/vB,KAAKqN,MAAQ,IAAI2iB,YAAY,IAC7BhwB,KAAKiwB,MAAQ,IAAID,YAAY,IAC/B,CAEA,SAASE,GAAKC,EAAQpd,GACpB/S,KAAKmwB,OAASA,EACdnwB,KAAKowB,YAAc,EACnBpwB,KAAKoU,IAAM,EACXpU,KAAKqwB,SAAW,EAEhBrwB,KAAK+S,KAAOA,EACZ/S,KAAKswB,QAAU,EAEftwB,KAAKuwB,MAAQ,IAAIR,GACjB/vB,KAAKwwB,MAAQ,IAAIT,EACnB,CAMA,IAAIU,GAAS,IAAIV,GACbW,GAAS,IAAIX,GAGbY,GAAc,IAAI72B,WAAW,IAC7B82B,GAAc,IAAIZ,YAAY,IAG9Ba,GAAY,IAAI/2B,WAAW,IAC3Bg3B,GAAY,IAAId,YAAY,IAG5Be,GAAS,IAAIj3B,WAAW,CAC1B,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EACxB,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EACzB,GAAI,EAAG,KAILk3B,GAAY,IAAIjB,GAChBzH,GAAU,IAAIxuB,WAAW,KAO7B,SAASm3B,GAAqB7iB,EAAM8iB,EAAMC,EAAO9oB,GAC/C,IAAIzP,EAAGid,EAGP,IAAKjd,EAAI,EAAGA,EAAIu4B,IAASv4B,EAAGwV,EAAKxV,GAAK,EACtC,IAAKA,EAAI,EAAGA,EAAI,GAAKu4B,IAASv4B,EAAGwV,EAAKxV,EAAIu4B,GAASv4B,EAAIu4B,EAAQ,EAG/D,IAAKtb,EAAMxN,EAAOzP,EAAI,EAAGA,EAAI,KAAMA,EACjCs4B,EAAKt4B,GAAKid,EACVA,GAAO,GAAKzH,EAAKxV,EAErB,CA2BA,IAAIw4B,GAAO,IAAIpB,YAAY,IAE3B,SAASqB,GAAgBC,EAAGhJ,EAASiJ,EAAKl3B,GACxC,IAAIzB,EAAGid,EAGP,IAAKjd,EAAI,EAAGA,EAAI,KAAMA,EAAG04B,EAAEjkB,MAAMzU,GAAK,EAGtC,IAAKA,EAAI,EAAGA,EAAIyB,IAAOzB,EAAG04B,EAAEjkB,MAAMib,EAAQiJ,EAAM34B,MAKhD,IAHA04B,EAAEjkB,MAAM,GAAK,EAGRwI,EAAM,EAAGjd,EAAI,EAAGA,EAAI,KAAMA,EAC7Bw4B,GAAKx4B,GAAKid,EACVA,GAAOyb,EAAEjkB,MAAMzU,GAIjB,IAAKA,EAAI,EAAGA,EAAIyB,IAAOzB,EACjB0vB,EAAQiJ,EAAM34B,KAAI04B,EAAErB,MAAMmB,GAAK9I,EAAQiJ,EAAM34B,OAASA,EAE9D,CAOA,SAAS44B,GAAYr2B,GAEdA,EAAEk1B,aAELl1B,EAAEiZ,IAAMjZ,EAAEg1B,OAAOh1B,EAAEi1B,eACnBj1B,EAAEk1B,SAAW,GAIf,IAAIoB,EAAc,EAARt2B,EAAEiZ,IAGZ,OAFAjZ,EAAEiZ,OAAS,EAEJqd,CACT,CAGA,SAASC,GAAev2B,EAAGd,EAAK62B,GAC9B,IAAK72B,EACH,OAAO62B,EAET,KAAO/1B,EAAEk1B,SAAW,IAClBl1B,EAAEiZ,KAAOjZ,EAAEg1B,OAAOh1B,EAAEi1B,gBAAkBj1B,EAAEk1B,SACxCl1B,EAAEk1B,UAAY,EAGhB,IAAI3vB,EAAMvF,EAAEiZ,IAAO,QAAY,GAAK/Z,EAGpC,OAFAc,EAAEiZ,OAAS/Z,EACXc,EAAEk1B,UAAYh2B,EACPqG,EAAMwwB,CACf,CAGA,SAASS,GAAmBx2B,EAAGm2B,GAC7B,KAAOn2B,EAAEk1B,SAAW,IAClBl1B,EAAEiZ,KAAOjZ,EAAEg1B,OAAOh1B,EAAEi1B,gBAAkBj1B,EAAEk1B,SACxCl1B,EAAEk1B,UAAY,EAGhB,IAAIxa,EAAM,EAAG+b,EAAM,EAAG34B,EAAM,EACxBmb,EAAMjZ,EAAEiZ,IAGZ,GACEwd,EAAM,EAAIA,GAAa,EAANxd,GACjBA,KAAS,IACPnb,EAEF4c,GAAOyb,EAAEjkB,MAAMpU,GACf24B,GAAON,EAAEjkB,MAAMpU,SACR24B,GAAO,GAKhB,OAHAz2B,EAAEiZ,IAAMA,EACRjZ,EAAEk1B,UAAYp3B,EAEPq4B,EAAErB,MAAMpa,EAAM+b,EACvB,CAGA,SAASC,GAAkB12B,EAAG22B,EAAIC,GAChC,IAAIC,EAAMC,EAAOC,EACbt5B,EAAGyB,EAAKhB,EAWZ,IARA24B,EAAON,GAAev2B,EAAG,EAAG,KAG5B82B,EAAQP,GAAev2B,EAAG,EAAG,GAG7B+2B,EAAQR,GAAev2B,EAAG,EAAG,GAExBvC,EAAI,EAAGA,EAAI,KAAMA,EAAG0vB,GAAQ1vB,GAAK,EAGtC,IAAKA,EAAI,EAAGA,EAAIs5B,IAASt5B,EAAG,CAE1B,IAAIu5B,EAAOT,GAAev2B,EAAG,EAAG,GAChCmtB,GAAQyI,GAAOn4B,IAAMu5B,CACtB,CAMD,IAHAd,GAAgBL,GAAW1I,GAAS,EAAG,IAGlCjuB,EAAM,EAAGA,EAAM23B,EAAOC,GAAQ,CACjC,IAAIxmB,EAAMkmB,GAAmBx2B,EAAG61B,IAEhC,OAAQvlB,GACN,KAAK,GAEH,IAAI2mB,EAAO9J,GAAQjuB,EAAM,GACzB,IAAKhB,EAASq4B,GAAev2B,EAAG,EAAG,GAAI9B,IAAUA,EAC/CivB,GAAQjuB,KAAS+3B,EAEnB,MACF,KAAK,GAEH,IAAK/4B,EAASq4B,GAAev2B,EAAG,EAAG,GAAI9B,IAAUA,EAC/CivB,GAAQjuB,KAAS,EAEnB,MACF,KAAK,GAEH,IAAKhB,EAASq4B,GAAev2B,EAAG,EAAG,IAAK9B,IAAUA,EAChDivB,GAAQjuB,KAAS,EAEnB,MACF,QAEEiuB,GAAQjuB,KAASoR,EAGtB,CAGD4lB,GAAgBS,EAAIxJ,GAAS,EAAG0J,GAChCX,GAAgBU,EAAIzJ,GAAS0J,EAAMC,EACrC,CAOA,SAASI,GAAwBl3B,EAAG22B,EAAIC,GACtC,OAAU,CACR,IAUM14B,EAAQi5B,EAAMlB,EACdx4B,EAXF6S,EAAMkmB,GAAmBx2B,EAAG22B,GAGhC,GAAY,MAARrmB,EACF,OAAOokB,GAGT,GAAIpkB,EAAM,IACRtQ,EAAE4X,KAAK5X,EAAEm1B,WAAa7kB,OAgBtB,IARApS,EAASq4B,GAAev2B,EAAGw1B,GAH3BllB,GAAO,KAGsCmlB,GAAYnlB,IAEzD6mB,EAAOX,GAAmBx2B,EAAG42B,GAMxBn5B,EAHLw4B,EAAOj2B,EAAEm1B,QAAUoB,GAAev2B,EAAG01B,GAAUyB,GAAOxB,GAAUwB,IAGjD15B,EAAIw4B,EAAO/3B,IAAUT,EAClCuC,EAAE4X,KAAK5X,EAAEm1B,WAAan1B,EAAE4X,KAAKna,EAGlC,CACH,CAGA,SAAS25B,GAAgCp3B,GAKvC,IAJA,IAAI9B,EACAT,EAGGuC,EAAEk1B,SAAW,GAClBl1B,EAAEi1B,cACFj1B,EAAEk1B,UAAY,EAYhB,IAPAh3B,EAAS,KADTA,EAAS8B,EAAEg1B,OAAOh1B,EAAEi1B,YAAc,IACVj1B,EAAEg1B,OAAOh1B,EAAEi1B,iBAON,QAHjB,IADAj1B,EAAEg1B,OAAOh1B,EAAEi1B,YAAc,GACPj1B,EAAEg1B,OAAOh1B,EAAEi1B,YAAc,KAIrD,OAAON,GAKT,IAHA30B,EAAEi1B,aAAe,EAGZx3B,EAAIS,EAAQT,IAAKA,EACpBuC,EAAE4X,KAAK5X,EAAEm1B,WAAan1B,EAAEg1B,OAAOh1B,EAAEi1B,eAKnC,OAFAj1B,EAAEk1B,SAAW,EAENR,EACT,EApPA,SAAgCiC,EAAIC,GAClC,IAAIn5B,EAGJ,IAAKA,EAAI,EAAGA,EAAI,IAAKA,EAAGk5B,EAAGzkB,MAAMzU,GAAK,EAMtC,IAJAk5B,EAAGzkB,MAAM,GAAK,GACdykB,EAAGzkB,MAAM,GAAK,IACdykB,EAAGzkB,MAAM,GAAK,IAETzU,EAAI,EAAGA,EAAI,KAAMA,EAAGk5B,EAAG7B,MAAMr3B,GAAK,IAAMA,EAC7C,IAAKA,EAAI,EAAGA,EAAI,MAAOA,EAAGk5B,EAAG7B,MAAM,GAAKr3B,GAAKA,EAC7C,IAAKA,EAAI,EAAGA,EAAI,IAAKA,EAAGk5B,EAAG7B,MAAM,IAAWr3B,GAAK,IAAMA,EACvD,IAAKA,EAAI,EAAGA,EAAI,MAAOA,EAAGk5B,EAAG7B,MAAM,IAAer3B,GAAK,IAAMA,EAG7D,IAAKA,EAAI,EAAGA,EAAI,IAAKA,EAAGm5B,EAAG1kB,MAAMzU,GAAK,EAItC,IAFAm5B,EAAG1kB,MAAM,GAAK,GAETzU,EAAI,EAAGA,EAAI,KAAMA,EAAGm5B,EAAG9B,MAAMr3B,GAAKA,CACzC,CAoRA45B,CAAuB/B,GAAQC,IAG/BO,GAAqBN,GAAaC,GAAa,EAAG,GAClDK,GAAqBJ,GAAWC,GAAW,EAAG,GAG9CH,GAAY,IAAM,EAClBC,GAAY,IAAM,IAElB,IAAA6B,GA5DA,SAAyBtC,EAAQpd,GAC/B,IACI2f,EAAe7vB,EADf1H,EAAI,IAAI+0B,GAAKC,EAAQpd,GAGzB,EAAG,CAQD,OANA2f,EAASlB,GAAYr2B,GAGbu2B,GAAev2B,EAAG,EAAG,IAI3B,KAAK,EAEH0H,EAAM0vB,GAAgCp3B,GACtC,MACF,KAAK,EAEH0H,EAAMwvB,GAAwBl3B,EAAGs1B,GAAQC,IACzC,MACF,KAAK,EAEHmB,GAAkB12B,EAAGA,EAAEo1B,MAAOp1B,EAAEq1B,OAChC3tB,EAAMwvB,GAAwBl3B,EAAGA,EAAEo1B,MAAOp1B,EAAEq1B,OAC5C,MACF,QACE3tB,EAAMitB,GAGV,GAAIjtB,IAAQgtB,GACV,MAAM,IAAI51B,MAAM,aAEnB,QAASy4B,GAEV,OAAIv3B,EAAEm1B,QAAUn1B,EAAE4X,KAAK1Z,OACO,mBAAjB8B,EAAE4X,KAAKlV,MACT1C,EAAE4X,KAAKlV,MAAM,EAAG1C,EAAEm1B,SAElBn1B,EAAE4X,KAAK5L,SAAS,EAAGhM,EAAEm1B,SAGzBn1B,EAAE4X,IACX,ECrWA,MAAM4f,GAA2E,KAA5D,IAAI74B,WAAW,IAAImvB,YAAY,CAAC,YAAazuB,QAAQ,GAEpE+F,GAAOA,CAAC7B,EAAG8B,EAAG1F,KAClB,IAAIlC,EAAI8F,EAAE8B,GACV9B,EAAE8B,GAAK9B,EAAE5D,GACT4D,EAAE5D,GAAKlC,CAAC,EAiBV,IAAAg6B,GAAiB,CACfC,SAPetzB,IACXozB,IATSpzB,KACb,MAAMtG,EAAMsG,EAAMlG,OAClB,IAAK,IAAIT,EAAI,EAAGA,EAAIK,EAAKL,GAAK,EAC5B2H,GAAKhB,EAAO3G,EAAGA,EAAI,GACnB2H,GAAKhB,EAAO3G,EAAI,EAAGA,EAAI,EACxB,EAKCqM,CAAO1F,EACR,GCnBH,MAAMuzB,GAAU52B,IACV22B,SAAEA,IAAa12B,GAsIrB,IAAA42B,GAtEA,MACEnnB,WAAAA,CAAY1M,GACV,MAAMN,EAAyC,mBAAtBM,EAAK+I,cAAuD,mBAAf/I,EAAKrB,MAE3E,GAAIe,GAAYM,aAAgBpF,WAAY,CAE1C,IAAIk5B,EACJ,GAAIp0B,EACFoB,KAAKizB,UAAY/zB,EAAK6I,aAAa,GACnC/H,KAAKkzB,WAAah0B,EAAK6I,aAAa,GACpCirB,EAAqB9zB,EAAK6I,aAAa,GACvC7I,EAAOA,EAAKrB,MAAM,QACb,CACL,MAAMge,EAAO,IAAIC,SAAS5c,EAAK1E,QAC/BwF,KAAKizB,UAAYpX,EAAKiQ,UAAU,GAAG,GACnC9rB,KAAKkzB,WAAarX,EAAKiQ,UAAU,GAAG,GACpCkH,EAAqBnX,EAAKiQ,UAAU,GAAG,GACvC5sB,EAAOA,EAAKiI,SAAS,GACtB,CAGDjI,EAAO4zB,GAAQ5zB,EAAM,IAAIpF,WAAWk5B,IACpC9zB,EAAO4zB,GAAQ5zB,EAAM,IAAIpF,WAAWk5B,IAGpCH,GAAS3zB,GAETc,KAAKd,KAAO,IAAI+pB,YAAY/pB,EAAK1E,OAEvC,OAES0E,KAAMc,KAAKd,KAAM+zB,UAAWjzB,KAAKizB,UAAWC,WAAYlzB,KAAKkzB,YAAeh0B,EAElF,CAEDiF,GAAAA,CAAIpB,GACF,IAAIowB,EACJ,OAAKpwB,EAAY,GAAOA,EAAY,QAC3B/C,KAAKkzB,WAGTnwB,EAAY,OAAaA,EAAY,OAAYA,GAAa,OAIjEowB,GAASnzB,KAAKd,KAAK6D,GAvGT,IAoBI,IAMFqwB,GA6EgDrwB,GACrD/C,KAAKd,KAAKi0B,IAGfpwB,GAAa,OAKfowB,GAASnzB,KAAKd,KAhFQ,MAgFqB6D,EAAY,OAhH7C,KAoBI,IAMFqwB,GAsFmFrwB,GACxF/C,KAAKd,KAAKi0B,IAGfpwB,EAAY/C,KAAKizB,WAEnBE,EAAQnzB,KAAKd,KAAMm0B,MAAgDtwB,GAzHzD,KA0HVowB,EAAQnzB,KAAKd,KAAKi0B,GAAUpwB,GAvHlB,EAcKuwB,KA0GfH,GAASA,GApGK,IAMFC,GA8FsBrwB,GAC3B/C,KAAKd,KAAKi0B,IAGZnzB,KAAKd,KAAKc,KAAKd,KAAK7F,OApEN,EAqEtB,mBC7GgB,oBAATk6B,KAAuBA,KACT,oBAAXC,QAAyBA,UAlB5Bl3B,QAoBW,WAajB,IAAIm3B,EAAU,QAIVC,EAAUD,EACVE,EAA2B,mBAATC,KAClBC,EAA2B,mBAATC,KAClBC,EAA+B,mBAAXx3B,OACpBy3B,EAA6B,mBAAhBC,YAA6B,IAAIA,iBAAgBn1B,EAC9Do1B,EAA6B,mBAAhBhL,YAA6B,IAAIA,iBAAgBpqB,EAC9Dq1B,EAAQ,oEACRC,EAASr6B,MAAMkD,UAAUY,MAAMgD,KAAKszB,GACpCE,EAAU,SAAU5vB,GACpB,IAAI6vB,EAAM,CAAA,EAEV,OADA7vB,EAAE8vB,SAAQ,SAAU74B,EAAG9C,GAAK,OAAO07B,EAAI54B,GAAK9C,CAAE,IACvC07B,CACV,CAJa,CAIXF,GACCI,EAAQ,0EACRC,EAAUvzB,OAAOqC,aAAawQ,KAAK7S,QACnCwzB,EAAsC,mBAApB56B,WAAWwD,KAC3BxD,WAAWwD,KAAKyW,KAAKja,YACrB,SAAU66B,GAAM,OAAO,IAAI76B,WAAWC,MAAMkD,UAAUY,MAAMgD,KAAK8zB,EAAI,KACvEC,EAAa,SAAU1nB,GAAO,OAAOA,EACpC3H,QAAQ,KAAM,IAAIA,QAAQ,UAAU,SAAUsvB,GAAM,MAAa,KAANA,EAAY,IAAM,GAAM,KACpFC,EAAW,SAAU15B,GAAK,OAAOA,EAAEmK,QAAQ,oBAAqB,KAIhEwvB,EAAe,SAAUC,GAIzB,IAFA,IAAIzc,EAAK0c,EAAIC,EAAIC,EAAIC,EAAM,GACvBC,EAAML,EAAI37B,OAAS,EACdT,EAAI,EAAGA,EAAIo8B,EAAI37B,QAAS,CAC7B,IAAK47B,EAAKD,EAAI77B,WAAWP,MAAQ,MAC5Bs8B,EAAKF,EAAI77B,WAAWP,MAAQ,MAC5Bu8B,EAAKH,EAAI77B,WAAWP,MAAQ,IAC7B,MAAM,IAAIwE,UAAU,2BAExBg4B,GAAOhB,GADP7b,EAAO0c,GAAM,GAAOC,GAAM,EAAKC,IACV,GAAK,IACpBf,EAAO7b,GAAO,GAAK,IACnB6b,EAAO7b,GAAO,EAAI,IAClB6b,EAAa,GAAN7b,EAChB,CACD,OAAO8c,EAAMD,EAAIv3B,MAAM,EAAGw3B,EAAM,GAAK,MAAMhZ,UAAUgZ,GAAOD,GAO5DE,EAAQzB,EAAW,SAAUmB,GAAO,OAAOlB,KAAKkB,EAAO,EACrDjB,EAAa,SAAUiB,GAAO,OAAOz4B,OAAOe,KAAK03B,EAAK,UAAUx1B,SAAS,SAAY,EACjFu1B,EACNQ,EAAkBxB,EAChB,SAAUyB,GAAO,OAAOj5B,OAAOe,KAAKk4B,GAAKh2B,SAAS,SAAY,EAC9D,SAAUg2B,GAIR,IAFA,IAAIC,EAAU,KACVC,EAAO,GACF98B,EAAI,EAAG+xB,EAAI6K,EAAIn8B,OAAQT,EAAI+xB,EAAG/xB,GAAK68B,EACxCC,EAAKh8B,KAAK+6B,EAAQjxB,MAAM,KAAMgyB,EAAIruB,SAASvO,EAAGA,EAAI68B,KAEtD,OAAOH,EAAMI,EAAK77B,KAAK,MAO3B87B,EAAiB,SAAUH,EAAKI,GAEhC,YADgB,IAAZA,IAAsBA,GAAU,GAC7BA,EAAUhB,EAAWW,EAAgBC,IAAQD,EAAgBC,IAKpEK,EAAU,SAAUn6B,GACpB,GAAIA,EAAErC,OAAS,EAEX,OADIy8B,EAAKp6B,EAAEvC,WAAW,IACV,IAAOuC,EACbo6B,EAAK,KAASrB,EAAQ,IAAQqB,IAAO,GACjCrB,EAAQ,IAAa,GAALqB,GACfrB,EAAQ,IAASqB,IAAO,GAAM,IAC3BrB,EAAQ,IAASqB,IAAO,EAAK,IAC7BrB,EAAQ,IAAa,GAALqB,GAG9B,IAAIA,EAAK,MAC0B,MAA5Bp6B,EAAEvC,WAAW,GAAK,QAClBuC,EAAEvC,WAAW,GAAK,OACzB,OAAQs7B,EAAQ,IAASqB,IAAO,GAAM,GAChCrB,EAAQ,IAASqB,IAAO,GAAM,IAC9BrB,EAAQ,IAASqB,IAAO,EAAK,IAC7BrB,EAAQ,IAAa,GAALqB,IAG1BC,EAAU,gDAMVC,EAAO,SAAUC,GAAK,OAAOA,EAAE1wB,QAAQwwB,EAASF,IAEhDK,EAAUnC,EACR,SAAU34B,GAAK,OAAOmB,OAAOe,KAAKlC,EAAG,QAAQoE,SAAS,SAAY,EAClE00B,EACI,SAAU94B,GAAK,OAAOm6B,EAAgBrB,EAAIzjB,OAAOrV,GAAM,EACvD,SAAUA,GAAK,OAAOk6B,EAAMU,EAAK56B,KAMvCqV,EAAS,SAAUvD,EAAK0oB,GAExB,YADgB,IAAZA,IAAsBA,GAAU,GAC7BA,EACDhB,EAAWsB,EAAQhpB,IACnBgpB,EAAQhpB,IAMdipB,EAAY,SAAUjpB,GAAO,OAAOuD,EAAOvD,GAAK,IAIhDkpB,EAAU,8EACVC,EAAU,SAAUC,GACpB,OAAQA,EAAKj9B,QACT,KAAK,EACD,IAGmCoB,IAHxB,EAAO67B,EAAKn9B,WAAW,KAAO,IACjC,GAAOm9B,EAAKn9B,WAAW,KAAO,IAC9B,GAAOm9B,EAAKn9B,WAAW,KAAO,EAC/B,GAAOm9B,EAAKn9B,WAAW,IAAmB,MACjD,OAAQs7B,EAA0B,OAAjBh6B,IAAW,KACtBg6B,EAA2B,OAAT,KAATh6B,IACnB,KAAK,EACD,OAAOg6B,GAAU,GAAO6B,EAAKn9B,WAAW,KAAO,IACvC,GAAOm9B,EAAKn9B,WAAW,KAAO,EAC/B,GAAOm9B,EAAKn9B,WAAW,IAClC,QACI,OAAOs7B,GAAU,GAAO6B,EAAKn9B,WAAW,KAAO,EACxC,GAAOm9B,EAAKn9B,WAAW,MAQtCo9B,EAAO,SAAU73B,GAAK,OAAOA,EAAE6G,QAAQ6wB,EAASC,IAIhDG,EAAe,SAAUpB,GAGzB,GADAA,EAAMA,EAAI7vB,QAAQ,OAAQ,KACrBivB,EAAMiC,KAAKrB,GACZ,MAAM,IAAIh4B,UAAU,qBACxBg4B,GAAO,KAAKv3B,MAAM,GAAkB,EAAbu3B,EAAI/7B,SAE3B,IADA,IAAIq9B,EAAeC,EAAIC,EAAd5B,EAAM,GACNp8B,EAAI,EAAGA,EAAIw8B,EAAI/7B,QACpBq9B,EAAMrC,EAAOe,EAAIyB,OAAOj+B,OAAS,GAC3By7B,EAAOe,EAAIyB,OAAOj+B,OAAS,IAC1B+9B,EAAKtC,EAAOe,EAAIyB,OAAOj+B,QAAU,GACjCg+B,EAAKvC,EAAOe,EAAIyB,OAAOj+B,OAC9Bo8B,GAAc,KAAP2B,EAAYlC,EAAQiC,GAAO,GAAK,KAC1B,KAAPE,EAAYnC,EAAQiC,GAAO,GAAK,IAAKA,GAAO,EAAI,KAC5CjC,EAAQiC,GAAO,GAAK,IAAKA,GAAO,EAAI,IAAW,IAANA,GAEvD,OAAO1B,GAOP8B,EAAQnD,EAAW,SAAUyB,GAAO,OAAOxB,KAAKkB,EAASM,GAAQ,EAC/DrB,EAAa,SAAUqB,GAAO,OAAO74B,OAAOe,KAAK83B,EAAK,UAAU51B,SAAS,SAAY,EACjFg3B,EAENO,EAAgBhD,EACd,SAAUtvB,GAAK,OAAOiwB,EAASn4B,OAAOe,KAAKmH,EAAG,UAAa,EAC3D,SAAUA,GAAK,OAAOiwB,EAASoC,EAAMryB,GAAGuI,MAAM,IAAIkT,KAAI,SAAUxkB,GAAK,OAAOA,EAAEvC,WAAW,EAAK,MAIhG69B,EAAe,SAAUvyB,GAAK,OAAOsyB,EAAcE,EAAOxyB,KAE1DyyB,EAAUnD,EACR,SAAUtvB,GAAK,OAAOlI,OAAOe,KAAKmH,EAAG,UAAUjF,SAAS,OAAU,EAClEw0B,EACI,SAAUvvB,GAAK,OAAOuvB,EAAItjB,OAAOqmB,EAActyB,GAAM,EACrD,SAAUA,GAAK,OAAO8xB,EAAKO,EAAMryB,KACvCwyB,EAAS,SAAUxyB,GAAK,OAAOqwB,EAASrwB,EAAEc,QAAQ,SAAS,SAAUsvB,GAAM,MAAa,KAANA,EAAY,IAAM,GAAM,MAM1GnkB,EAAS,SAAUxD,GAAO,OAAOgqB,EAAQD,EAAO/pB,KAKhDiqB,EAAU,SAAUjqB,GACpB,GAAmB,iBAARA,EACP,OAAO,EACX,IAAI9R,EAAI8R,EAAI3H,QAAQ,OAAQ,IAAIA,QAAQ,UAAW,IACnD,OAAQ,oBAAoBkxB,KAAKr7B,KAAO,oBAAoBq7B,KAAKr7B,IAGjEg8B,EAAU,SAAU5kB,GACpB,MAAO,CACH/W,MAAO+W,EAAGtO,YAAY,EAAO4H,UAAU,EAAMC,cAAc,IAM/DsrB,EAAe,WACf,IAAIC,EAAO,SAAUtrB,EAAMurB,GAAQ,OAAOx6B,OAAOkH,eAAe/C,OAAOjE,UAAW+O,EAAMorB,EAAQG,KAChGD,EAAK,cAAc,WAAc,OAAO5mB,EAAO1Q,KAAM,IACrDs3B,EAAK,YAAY,SAAU1B,GAAW,OAAOnlB,EAAOzQ,KAAM41B,EAAS,IACnE0B,EAAK,eAAe,WAAc,OAAO7mB,EAAOzQ,MAAM,EAAM,IAC5Ds3B,EAAK,eAAe,WAAc,OAAO7mB,EAAOzQ,MAAM,EAAM,IAC5Ds3B,EAAK,gBAAgB,WAAc,OAAON,EAAah3B,KAAM,KAK7Dw3B,EAAmB,WACnB,IAAIF,EAAO,SAAUtrB,EAAMurB,GAAQ,OAAOx6B,OAAOkH,eAAenK,WAAWmD,UAAW+O,EAAMorB,EAAQG,KACpGD,EAAK,YAAY,SAAU1B,GAAW,OAAOD,EAAe31B,KAAM41B,EAAS,IAC3E0B,EAAK,eAAe,WAAc,OAAO3B,EAAe31B,MAAM,EAAM,IACpEs3B,EAAK,eAAe,WAAc,OAAO3B,EAAe31B,MAAM,EAAM,KAKpEy3B,EAAiB,WACjBJ,IACAG,KAEAE,EAAU,CACVjE,QAASA,EACTC,QAASA,EACTE,KAAMkD,EACNN,aAAcA,EACd1C,KAAMwB,EACNP,aAAcA,EACd4C,WAAYjnB,EACZknB,SAAUnnB,EACVA,OAAQA,EACR0lB,UAAWA,EACX0B,UAAW1B,EACXH,KAAMA,EACNO,KAAMA,EACN7lB,OAAQA,EACRymB,QAASA,EACTxB,eAAgBA,EAChBqB,aAAcA,EACdK,aAAcA,EACdG,iBAAkBA,EAClBC,eAAgBA,EAOpBC,OAAiB,IAEjB,OADA36B,OAAO0d,KAAKid,GAASnD,SAAQ,SAAUuD,GAAK,OAAOJ,EAAQK,OAAOD,GAAKJ,EAAQI,EAAK,IAC7EJ,CACX,CArT2BM,GCN3B,MAAMC,GLAW,CACfC,MAAO,EACPC,GAAI,EACJC,GAAI,EACJC,QAAS,EACTC,OAAQ,EACRC,IAAK,GACLC,mBAAoB,GACpBC,QAAS,GACTC,YAAa,IACbC,EAAG,IACHC,EAAG,IACHC,EAAG,KACHC,GAAI,KACJC,IAAK,KACLC,sBAAuB,MKdnBC,GAAe98B,GACf+8B,GAAcC,GAEdC,GAAcC,GACdtB,cAA8BA,OAE9BuB,GAAW,IAAIF,GAAYrB,GAAOf,aAAaiC,KAC/CM,GAAU,IAAIH,GAAYrB,GAAOf,aAAakC,KAEpD,SAASM,GAAGx6B,EAAMyyB,GAChB,OAAwB,IAAhBzyB,EAAOyyB,EACjB,CAEA,MAAMgI,GACK,EADLA,GAES,EAFTA,GAGS,EAGf,SAASC,GAAwBC,EAAIx/B,GACnC,MAAMw+B,EAAIgB,EAAGtgC,OAEb,IAAIugC,EAAK,EACLC,EAAYJ,GAGhB,IAAK,IAAI7gC,EAAIuB,EAAOvB,EAAI,EAAI+/B,EAAG//B,IAAK,CAClC,MAAMkhC,EAAOH,EAAG/gC,EAAI,GACdmhC,EAAOJ,EAAG/gC,EAAI,GAQpB,OALK4gC,GAAGM,EAAM7B,GAAMO,sBAClBoB,EAAK,GAICC,GACN,KAAKJ,GACL,KAAKA,GAEDI,EADEL,GAAGM,EAAM7B,GAAMe,uBACLS,GAEAA,GAEd,MACF,KAAKA,GAEDI,EADEL,GAAGM,EAAM7B,GAAMK,QACLmB,GAEZD,GAAGM,EAAM7B,GAAMM,MACfiB,GAAGO,EAAM9B,GAAMe,uBAEHS,GAEAA,GAMlB,IAAID,GAAGM,EAAM7B,GAAME,MAAOqB,GAAGO,EAAM9B,GAAMG,IAAzC,CAIA,GAAIoB,GAAGM,EAAM7B,GAAMI,QAAUJ,GAAME,GAAKF,GAAMG,IAC5C,OAAOx/B,EAAI,EAAIuB,EAGjB,GAAIq/B,GAAGO,EAAM9B,GAAMI,QAAUJ,GAAME,GAAKF,GAAMG,IAC5C,OAAOx/B,EAAI,EAAIuB,EAGjB,KACEq/B,GAAGM,EAAM7B,GAAMU,IACfa,GAAGO,EAAM9B,GAAMU,EAAIV,GAAMW,EAAIX,GAAMa,GAAKb,GAAMc,MAK5CS,GAAGM,EAAM7B,GAAMa,GAAKb,GAAMW,IAAMY,GAAGO,EAAM9B,GAAMW,EAAIX,GAAMY,IAIzDW,GAAGM,EAAM7B,GAAMc,IAAMd,GAAMY,IAAMW,GAAGO,EAAM9B,GAAMY,IAIhDW,GAAGO,EAAM9B,GAAMK,OAASL,GAAMM,MAI9BiB,GAAGO,EAAM9B,GAAMS,cAIfc,GAAGM,EAAM7B,GAAMQ,UAIfoB,IAAcJ,IAAlB,CAKA,IACED,GAAGM,EAAM7B,GAAMO,sBACfgB,GAAGO,EAAM9B,GAAMO,qBACfoB,EAAK,GAAM,EAMb,OAAOhhC,EAAI,EAAIuB,EAJby/B,GARD,CAvCA,CAoDF,CAED,OAAOjB,EAAIx+B,CACb,CAEA,IAAA6/B,GAAiB,SAAe93B,GAC9B,MAAM+3B,EAAmB,GAEnB/Z,EAAM,CAAC,GACPyZ,EAAK,GACX,IAAK,IAAI/gC,EAAI,EAAGA,EAAIsJ,EAAI7I,QAAU,CAChC,MAAMW,EAAOkI,EAAIg4B,YAAYthC,GAC7B+gC,EAAGjgC,KAAK4/B,GAASn1B,IAAInK,GAAQu/B,GAAQp1B,IAAInK,IACzCpB,GAAKoB,EAAO,MAAQ,EAAI,EACxBkmB,EAAIxmB,KAAKd,EACV,CAED,IAAK,IAAI6B,EAAS,EAAGA,EAASk/B,EAAGtgC,QAAU,CACzC,MAAMiG,EAAOo6B,GAAwBC,EAAIl/B,GACnCN,EAAQ+lB,EAAIzlB,GACZL,EAAM8lB,EAAIzlB,EAAS6E,GACzB26B,EAAiBvgC,KAAKwI,EAAIrE,MAAM1D,EAAOC,IACvCK,GAAU6E,CACX,CAED,OAAO26B,CACT,WCjIa,MAAAE,GAAqBnuB,IAChC,MAAMS,EAAQ8f,GAAcvgB,EACtB8hB,EAASzB,GAAO9vB,EAAMA,OAACe,KAAKmP,EAAO,SACzC,OAAOlQ,EAAMA,OAACe,KAAKwwB,EAAO,EAGfsM,GAAwB,CACnC/X,EACA2L,EACAvL,KAEA,MAAMwL,EAAQ,CAAC5L,GACX2L,EACFC,EAAMv0B,KAAKs0B,EAAUrW,YAErBsW,EAAMv0B,KAAK6C,EAAAA,OAAOE,MAAM,KAEtBgmB,EACFwL,EAAMv0B,KAAK+oB,EAAW9K,YAEtBsW,EAAMv0B,KAAK6C,EAAAA,OAAOE,MAAM,KAE1B,MAAOqmB,GAAkBpV,EAAU0M,uBACjC6T,EACA3B,IAEF,OAAOxJ,CAAc,EAShBnK,eAAe0L,GACpBxL,EACA+K,GAEA,MAAMuK,EAAsBgM,GAAkBvW,EAAYiD,YACpDhD,EAAuBuW,GAC3BjM,EACAvB,KAGIzY,SAAEA,SAAmBwT,GAAkBrB,SAC3CzN,EACAgL,GAEF,IAAK1P,EAASjV,KACZ,MAAM,IAAI+b,GAASD,GAAUoT,eAG/B,OAAOiM,GAAmBlmB,EAASjV,KACrC,CAQOyZ,eAAe2hB,GACpBzhB,EACAqP,GAEA,IAAIqG,EAAqC,GACzC,IAAK,IAAI3K,KAAesE,EAAc,CACpC,MAAMiG,EAAsBgM,GAAkBvW,EAAYiD,YACpDhD,EAAuBuW,GAC3BjM,EACAvB,IAEF2B,EAAsB70B,KAAKmqB,EAC5B,CAOD,aALkB8D,GAAkBS,cAClCvP,EACA0V,IAGWrO,KAAKlU,IAChB,QAAalN,IAATkN,QAAoClN,IAAdkN,EAAK9M,KAG/B,OAAOm7B,GAAmBruB,EAAK9M,KAAK,GAExC,CAQa,MAAAq7B,GAAiB5hB,MAC5BE,EACAgW,KAGA,MAAM2L,EAA8B,CAClC,CACE5T,OAAQ,CACNnsB,OAAQ,EACR4L,MAAOwoB,EAAUhI,aAGrB,CACED,OAAQ,CACNnsB,OAAQ,GACR4L,MAAOumB,GAAqB/F,cAI5B4T,QAAiB5hB,EAAWkO,mBAAmBuF,GAAiB,CACpE3F,QAAS6T,IAGLE,EAA8B,CAClC,CACE9T,OAAQ,CACNnsB,OAAQ,EACR4L,MAAOwoB,EAAUhI,cAIjB8T,QAAa9hB,EAAWkO,mBAAmBuF,GAAiB,CAChE3F,QAAS+T,EACTE,UAAW,CAAEngC,OAAQ,EAAGpB,OAAQ,KAG5B6mB,EAAM,IAAIF,IACdya,EAASva,KAAKrlB,GAAM,CAClBA,EAAE6f,OAAOmM,WACTwT,GAAmBx/B,EAAEmsB,QAAQ9nB,KAAKrB,MAAM,SAItC6jB,EAAmB,GASzB,OARAiZ,EAAKpG,SAAS15B,IACZ,MAAMggC,EAASC,GAA2BjgC,EAAE6f,OAAQmU,GAAWhI,WACzDkU,EAAM7a,EAAI/b,IAAI02B,GACdE,GACJrZ,EAAOhoB,KAAKqhC,EAAIx1B,QAAQ,KAAM,IAC/B,IAGImc,CAAM,EAGTsZ,GAAc,CAClBhvB,EACAyiB,EAAoBjC,GACpByO,KAEA,IAAInN,EAASqM,GAAkBnuB,GAE/B,MAAO,CAAE0O,OADI0f,GAAsBtM,EAAQmN,EAAUxM,GACpCX,SAAQ,EASdoN,GAAmB,CAACrV,EAAgBuB,KAC3CvB,EAAO8I,SAAS,UAClB9I,EAASA,EAAOhoB,MAAM,GAAI,IAE5B,MAAMs9B,EACJ/T,IAAWwI,GAAcwL,GAAKC,QAA4Bv8B,EACtD8vB,EAAW/I,EAAO7Y,MAAM,KAC9B,GAAwB,IAApB4hB,EAASv1B,OAAc,CACzB,MACMmR,EADSjO,SAAOe,KAAK,CAAC8pB,GAAkB,IAAI5nB,WAC/BoF,OAAOgqB,EAAS,KAC3BlU,OAAQmU,GAAcmM,GAAYpM,EAAS,IAEnD,MAAO,IADQoM,GAAYxwB,EAAKqkB,EAAWsM,GACvBrM,OAAO,EAAML,OAAQI,EAC1C,CAAM,GAAwB,IAApBD,EAASv1B,QAAkB+tB,EAAQ,CAE5C,MAAQ1M,OAAQmU,GAAcmM,GAAYpM,EAAS,KAE3ClU,OAAQqU,GAAWiM,GAAY,KAAKp2B,OAAOgqB,EAAS,IAAKC,GAE3DG,EAAe5H,IAAWwI,GAAcwL,GAAK,IAAS,IAM5D,MAAO,IALQJ,GACbhM,EAAapqB,OAAOgqB,EAAS,IAC7BG,EACAoM,GAEkBrM,OAAO,EAAML,OAAQI,EAAWI,aAAa,EAClE,CAAM,GAAIL,EAASv1B,QAAU,EAC5B,MAAM,IAAI4hB,GAASD,GAAUkU,cAG/B,MAAO,IADQ8L,GAAYnV,EAAQ2G,IACfsC,OAAO,EAAOL,YAAQ3vB,EAAW,EAShD6Z,eAAe2iB,GACpBziB,EACA0iB,GAEA,MAAM5U,EAAU,CACd,CACEC,OAAQ,CACNnsB,OAAQ,GACR4L,MAAOk1B,EAAO1U,aAGlB,CACED,OAAQ,CACNnsB,OAAQ,EACR4L,MAAOmmB,GAAoB3F,cAOjC,aAHuBhO,EAAWkO,mBAAmBuF,GAAiB,CACpE3F,aAEczG,KAAKzb,GAAMA,EAAEiW,QAC/B,CAQO/B,eAAe6iB,GACpB3iB,EACA0iB,GAEA,MAAME,QAAuBH,GAAcziB,EAAY0iB,GACjDG,QAAcpB,GAAmBzhB,EAAY4iB,GAEnD,OAAOA,EAAevb,KAAI,CAACyb,EAAQxI,KAAW,CAC5CwI,SACA9V,OAAQ6V,EAAMvI,MAElB,OAQayI,GAA0BjjB,MAAOE,IAC5C,MAAM8N,EAAU,CACd,CACEC,OAAQ,CACNnsB,OAAQ,EACR4L,MAAOmmB,GAAoB3F,cAUjC,aAJuBhO,EAAWkO,mBAAmBuF,GAAiB,CACpEsO,UAHgB,CAAEngC,OAAQ,GAAIpB,OAAQ,IAItCstB,WAEa,EASJkV,GAAoB,CAAChW,EAAgBiJ,KAChD,MAAMpU,OAAEA,EAAM+T,OAAEA,GAAWyM,GAAiBrV,GACtCsI,EAAsBgM,GAAkBzf,EAAOmM,YAMrD,OAL6BuT,GAC3BjM,EACAvB,GACAkC,EAAQL,OAAS3vB,EAEQ,EAShBg8B,GAA6B,CACxCgB,EACArN,KAEA,MAAMN,EAAsBgM,GAAkB2B,EAAUjV,YAMxD,OAL6BuT,GAC3BjM,EACAvB,GACA6B,EAEyB,EAGhBsN,GAAQ,CAACzkB,EAAe0kB,KACnC,IAAK1kB,EACH,MAAM,IAAI2D,GAAS+gB,EACpB,EASUC,GAAsBtjB,MACjCE,EACAK,KAEA,MAAMgjB,QAAmB5U,GAAgBzO,EAAYK,GAE/CwiB,QAAcpB,GAClBzhB,EACAqjB,EAAWhc,KAAKrlB,GAAMA,EAAE+oB,eAG1B,OAAO8X,EACJxb,KAAI,CAACrlB,EAAGuX,KACA,CACLwL,IAAKse,EAAW9pB,GAAKwR,YACrB5J,KAAMkiB,EAAW9pB,GAAKmT,QACtB5O,QAAS9b,MAGZ6sB,QAAQ7sB,KAAQA,EAAE8b,SAAQ,EASlBwlB,GAA0BnwB,IAGrC,OAFcowB,GAAepwB,GAEf3S,QACZ,KAAK,EACH,OAAO,IACT,KAAK,EACH,OAAO,IACT,KAAK,EACH,OAAO,IACT,KAAK,EACH,OAAO,IACT,QACE,OAAO,GACV,EAMG,SAAUghC,GACdn7B,GAEA,IAAKA,EAAM,OACX,MAAMmvB,EAAanvB,EAAKrB,MAAM,EAAG,GAAGkK,aAAa,GACjD,OAAO7I,EAAKrB,MAAM,EAAG,EAAIwwB,GAAY7uB,UACvC,CC1QA,IAAA0N,GAlHA,SAAemvB,GACb,GAAIA,EAAShjC,QAAU,IAAO,MAAM,IAAI+D,UAAU,qBAElD,IADA,IAAIk/B,EAAW,IAAIxiC,WAAW,KACrByH,EAAI,EAAGA,EAAI+6B,EAASjjC,OAAQkI,IACnC+6B,EAAS/6B,GAAK,IAEhB,IAAK,IAAI3I,EAAI,EAAGA,EAAIyjC,EAAShjC,OAAQT,IAAK,CACxC,IAAI8L,EAAI23B,EAASxF,OAAOj+B,GACpB2jC,EAAK73B,EAAEvL,WAAW,GACtB,GAAqB,MAAjBmjC,EAASC,GAAe,MAAM,IAAIn/B,UAAUsH,EAAI,iBACpD43B,EAASC,GAAM3jC,CAChB,CACD,IAAI4jC,EAAOH,EAAShjC,OAChBojC,EAASJ,EAASxF,OAAO,GACzB6F,EAASnhC,KAAKQ,IAAIygC,GAAQjhC,KAAKQ,IAAI,KACnC4gC,EAAUphC,KAAKQ,IAAI,KAAOR,KAAKQ,IAAIygC,GA8CvC,SAASI,EAAczM,GACrB,GAAsB,iBAAXA,EAAuB,MAAM,IAAI/yB,UAAU,mBACtD,GAAsB,IAAlB+yB,EAAO92B,OAAgB,OAAO,IAAIS,WAKtC,IAJA,IAAI+iC,EAAM,EAENC,EAAS,EACTzjC,EAAS,EACN82B,EAAO0M,KAASJ,GACrBK,IACAD,IAMF,IAHA,IAAIv9B,GAAU6wB,EAAO92B,OAASwjC,GAAOH,EAAU,IAAO,EAClDK,EAAO,IAAIjjC,WAAWwF,GAEnB6wB,EAAO0M,IAAM,CAElB,IAAIG,EAAQV,EAASnM,EAAOh3B,WAAW0jC,IAEvC,GAAc,MAAVG,EAAiB,OAErB,IADA,IAAIpkC,EAAI,EACCqkC,EAAM39B,EAAO,GAAc,IAAV09B,GAAepkC,EAAIS,KAAqB,IAAT4jC,EAAaA,IAAOrkC,IAC3EokC,GAAUR,EAAOO,EAAKE,KAAU,EAChCF,EAAKE,GAAQD,EAAQ,MAAS,EAC9BA,EAASA,EAAQ,MAAS,EAE5B,GAAc,IAAVA,EAAe,MAAM,IAAI/iC,MAAM,kBACnCZ,EAAST,EACTikC,GACD,CAGD,IADA,IAAIK,EAAM59B,EAAOjG,EACV6jC,IAAQ59B,GAAsB,IAAdy9B,EAAKG,IAC1BA,IAIF,IAFA,IAAIC,EAAM,IAAIrjC,WAAWgjC,GAAUx9B,EAAO49B,IACtC37B,EAAIu7B,EACDI,IAAQ59B,GACb69B,EAAI57B,KAAOw7B,EAAKG,KAElB,OAAOC,CACR,CAMD,MAAO,CACL1sB,OA7FF,SAAiB0f,GAOf,GANIA,aAAkBr2B,aACXiE,YAAYC,OAAOmyB,GAC5BA,EAAS,IAAIr2B,WAAWq2B,EAAO31B,OAAQ21B,EAAO9xB,WAAY8xB,EAAOzyB,YACxD3D,MAAMkF,QAAQkxB,KACvBA,EAASr2B,WAAWwD,KAAK6yB,OAErBA,aAAkBr2B,YAAe,MAAM,IAAIsD,UAAU,uBAC3D,GAAsB,IAAlB+yB,EAAO92B,OAAgB,MAAO,GAMlC,IAJA,IAAIyjC,EAAS,EACTzjC,EAAS,EACT+jC,EAAS,EACTC,EAAOlN,EAAO92B,OACX+jC,IAAWC,GAA2B,IAAnBlN,EAAOiN,IAC/BA,IACAN,IAMF,IAHA,IAAIx9B,GAAS+9B,EAAOD,GAAUT,EAAU,IAAO,EAC3CW,EAAM,IAAIxjC,WAAWwF,GAElB89B,IAAWC,GAAM,CAItB,IAHA,IAAIL,EAAQ7M,EAAOiN,GAEfxkC,EAAI,EACC2kC,EAAMj+B,EAAO,GAAc,IAAV09B,GAAepkC,EAAIS,KAAqB,IAATkkC,EAAaA,IAAO3kC,IAC3EokC,GAAU,IAAMM,EAAIC,KAAU,EAC9BD,EAAIC,GAAQP,EAAQR,IAAU,EAC9BQ,EAASA,EAAQR,IAAU,EAE7B,GAAc,IAAVQ,EAAe,MAAM,IAAI/iC,MAAM,kBACnCZ,EAAST,EACTwkC,GACD,CAGD,IADA,IAAII,EAAMl+B,EAAOjG,EACVmkC,IAAQl+B,GAAqB,IAAbg+B,EAAIE,IACzBA,IAIF,IADA,IAAIt7B,EAAMu6B,EAAOgB,OAAOX,GACjBU,EAAMl+B,IAAQk+B,EAAOt7B,GAAOm6B,EAASxF,OAAOyG,EAAIE,IACvD,OAAOt7B,CACR,EAkDC06B,aAAcA,EACdlsB,OARF,SAAiBnT,GACf,IAAI/C,EAASoiC,EAAar/B,GAC1B,GAAI/C,EAAU,OAAOA,EACrB,MAAM,IAAIP,MAAM,WAAauiC,EAAO,aACrC,EAMH,SCpHAkB,GAHcxhC,GACG,oFCDhB,SAAUyhC,GAKP,MAAMC,EAAW,uBACXC,EAAc,CAChBC,UAAW,IAAIC,OAAQ,IAAGH,OAAcA,OAAcA,OAAcA,KAAa,KACjFI,WAAY,IAAID,OAAQ,IAAGH,OAAcA,OAAcA,KAAa,KACpEK,SAAU,IAAIF,OAAQ,IAAGH,OAAcA,KAAa,KACpDM,UAAW,IAAIH,OAAQ,IAAGH,KAAa,MAIrCO,EAAa,IAAIJ,OAAQ,YAAY,KACrCK,EAAW,IAAIL,OAAQ,gBAAgB,KAEvCM,EAAY,gBAMZC,EAAW,oBACXC,EAAc,CAChBF,UAAW,IAAIN,OAAOM,EAAW,KACjCG,OAAU,IAAIT,OAAQ,UAASO,wBAA+BD,OAAgB,KAC9EI,uBAAwB,IAAIV,OAAQ,WAAUH,OAAcA,OAAcA,OAAcA,KAAYS,QAAiB,KACrHK,aAAc,IAAIX,OAAQ,QAAOO,eAAsBA,OAAcV,OAAcA,OAAcA,OAAcA,KAAYS,OAAgB,MAI/I,SAASM,EAAYphC,EAAQhE,GAEzB,GAAIgE,EAAOrD,QAAQ,QAAUqD,EAAOuD,YAAY,MAC5C,OAAO,KAGX,IAGI89B,EAAaC,EAHbC,EAAa,EACbC,GAAa,EACbC,GAAUzhC,EAAO0hC,MAAMV,EAAYF,YAAc,IAAI,GAUzD,IANIW,IACAA,EAASA,EAAO3iB,UAAU,GAC1B9e,EAASA,EAAOgI,QAAQ,OAAQ,MAI5Bw5B,EAAYxhC,EAAOrD,QAAQ,IAAK6kC,EAAY,KAAO,GACvDD,IAaJ,GAT4B,OAAxBvhC,EAAOuE,OAAO,EAAG,IACjBg9B,IAGyB,OAAzBvhC,EAAOuE,QAAQ,EAAG,IAClBg9B,IAIAA,EAAavlC,EACb,OAAO,KAMX,IAFAslC,EAAmBtlC,EAAQulC,EAC3BF,EAAc,IACPC,KACHD,GAAe,KA2BnB,MAnBkB,OAJlBrhC,EAASA,EAAOgI,QAAQ,KAAMq5B,IAInB,KACPrhC,EAASA,EAAOM,MAAM,IAGQ,MAA9BN,EAAOA,EAAOlE,OAAS,KACvBkE,EAASA,EAAOM,MAAM,GAAI,IAG9BtE,EAAS,WACL,MAAM2lC,EAAM3hC,EAAOyP,MAAM,KACnBmyB,EAAU,GAEhB,IAAK,IAAIvmC,EAAI,EAAGA,EAAIsmC,EAAI7lC,OAAQT,IAC5BumC,EAAQzlC,KAAKmI,SAASq9B,EAAItmC,GAAI,KAGlC,OAAOumC,CACnB,CATiB,GAWF,CACH5lC,MAAOA,EACPylC,OAAQA,EAEf,CAGD,SAASI,EAAW/2B,EAAOg3B,EAAQC,EAAUC,GACzC,GAAIl3B,EAAMhP,SAAWgmC,EAAOhmC,OACxB,MAAM,IAAIY,MAAM,gEAGpB,IACImZ,EADAosB,EAAO,EAGX,KAAOD,EAAW,GAAG,CAMjB,GALAnsB,EAAQksB,EAAWC,EACfnsB,EAAQ,IACRA,EAAQ,GAGR/K,EAAMm3B,IAASpsB,GAAUisB,EAAOG,IAASpsB,EACzC,OAAO,EAGXmsB,GAAYD,EACZE,GAAQ,CACX,CAED,OAAO,CACV,CAED,SAASC,EAAcliC,GAEnB,GAAI6gC,EAAS3H,KAAKl5B,GACd,OAAOsE,SAAStE,EAAQ,IAK5B,GAAkB,MAAdA,EAAO,KAAe1B,MAAMgG,SAAStE,EAAO,GAAI,KAAM,CAC1D,GAAI4gC,EAAW1H,KAAKl5B,GAChB,OAAOsE,SAAStE,EAAQ,GAExB,MAAM,IAAItD,MAAO,wBAAuBsD,aAC3C,CAED,OAAOsE,SAAStE,EAAQ,GAC3B,CAED,SAASmiC,EAASF,EAAMnmC,GACpB,KAAOmmC,EAAKnmC,OAASA,GACjBmmC,EAAQ,IAAGA,IAGf,OAAOA,CACV,CAED,MAAMG,EAAS,CAAA,EAGfA,EAAOC,KAAQ,WAIX,SAASA,EAAMC,GACX,GAAsB,IAAlBA,EAAOxmC,OACP,MAAM,IAAIY,MAAM,wCAGpB,IAAIrB,EAAGknC,EAEP,IAAKlnC,EAAI,EAAGA,EAAIinC,EAAOxmC,OAAQT,IAE3B,GADAknC,EAAQD,EAAOjnC,KACR,GAAKknC,GAASA,GAAS,KAC1B,MAAM,IAAI7lC,MAAM,2CAIxB+F,KAAK6/B,OAASA,CACjB,CAyHD,OArHAD,EAAK3iC,UAAU8iC,cAAgB,CAC3BC,YAAa,CAAC,CAAC,IAAIJ,EAAK,CAAC,EAAG,EAAG,EAAG,IAAK,IACvCK,UAAW,CAAC,CAAC,IAAIL,EAAK,CAAC,IAAK,IAAK,IAAK,MAAO,KAE7CM,UAAW,CAAC,CAAC,IAAIN,EAAK,CAAC,IAAK,EAAG,EAAG,IAAK,IAEvCO,UAAW,CAAC,CAAC,IAAIP,EAAK,CAAC,IAAK,IAAK,EAAG,IAAK,KAEzCQ,SAAU,CAAC,CAAC,IAAIR,EAAK,CAAC,IAAK,EAAG,EAAG,IAAK,IAEtCS,gBAAiB,CAAC,CAAC,IAAIT,EAAK,CAAC,IAAK,GAAI,EAAG,IAAK,KAE9CU,QAAW,CACP,CAAC,IAAIV,EAAK,CAAC,GAAI,EAAG,EAAG,IAAK,GAC1B,CAAC,IAAIA,EAAK,CAAC,IAAK,GAAI,EAAG,IAAK,IAC5B,CAAC,IAAIA,EAAK,CAAC,IAAK,IAAK,EAAG,IAAK,KAGjCW,SAAU,CACN,CAAC,IAAIX,EAAK,CAAC,IAAK,EAAG,EAAG,IAAK,IAC3B,CAAC,IAAIA,EAAK,CAAC,IAAK,EAAG,EAAG,IAAK,IAC3B,CAAC,IAAIA,EAAK,CAAC,IAAK,GAAI,GAAI,IAAK,IAC7B,CAAC,IAAIA,EAAK,CAAC,IAAK,GAAI,EAAG,IAAK,IAC5B,CAAC,IAAIA,EAAK,CAAC,IAAK,GAAI,IAAK,IAAK,IAC9B,CAAC,IAAIA,EAAK,CAAC,IAAK,EAAG,IAAK,IAAK,IAC7B,CAAC,IAAIA,EAAK,CAAC,IAAK,EAAG,EAAG,IAAK,KAKnCA,EAAK3iC,UAAUujC,KAAO,WAClB,MAAO,QAIXZ,EAAK3iC,UAAUgiC,MAAQ,SAAUwB,EAAOC,GACpC,IAAIxB,EAOJ,QANkBpgC,IAAd4hC,IACAxB,EAAMuB,EACNA,EAAQvB,EAAI,GACZwB,EAAYxB,EAAI,IAGC,SAAjBuB,EAAMD,OACN,MAAM,IAAIvmC,MAAM,uDAGpB,OAAOmlC,EAAUp/B,KAAK6/B,OAAQY,EAAMZ,OAAQ,EAAGa,IAMnDd,EAAK3iC,UAAU0jC,2BAA6B,WACxC,IAAIC,EAAO,EAEPC,GAAO,EAEX,MAAMC,EAAY,CACd,EAAG,EACH,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,GAET,IAAIloC,EAAGknC,EAAOiB,EAEd,IAAKnoC,EAAI,EAAGA,GAAK,EAAGA,GAAK,EAAG,CAExB,GADAknC,EAAQ9/B,KAAK6/B,OAAOjnC,KAChBknC,KAASgB,GAYT,OAAO,KAVP,GADAC,EAAQD,EAAUhB,GACde,GAAkB,IAAVE,EACR,OAAO,KAGG,IAAVA,IACAF,GAAO,GAGXD,GAAQG,CAIf,CAED,OAAO,GAAKH,GAIhBhB,EAAK3iC,UAAUmP,MAAQ,WACnB,OAAOuzB,EAAOqB,YAAYhhC,KAAMA,KAAK+/B,gBAIzCH,EAAK3iC,UAAU8P,YAAc,WACzB,OAAO/M,KAAK6/B,OAAOhiC,MAAM,IAI7B+hC,EAAK3iC,UAAUgkC,oBAAsB,WACjC,OAAOtB,EAAOuB,KAAKC,MAAO,UAASnhC,KAAKR,eAI5CogC,EAAK3iC,UAAUmkC,mBAAqB,WAChC,OAAOphC,KAAKR,YAIhBogC,EAAK3iC,UAAUuC,SAAW,WACtB,OAAOQ,KAAK6/B,OAAOhmC,KAAK,MAGrB+lC,CACf,CA7ImB,GAgJfD,EAAOC,KAAKyB,yBAA2B,SAAU9jC,GAE7C,IACI,MAAMqjC,EAAO5gC,KAAKshC,UAAU/jC,GACtBgkC,EAAoBX,EAAK,GAAG7zB,cAC5By0B,EAAmBxhC,KAAKyhC,2BAA2Bb,EAAK,IAAI7zB,cAC5D8yB,EAAS,GACf,IAAIjnC,EAAI,EACR,KAAOA,EAAI,GAEPinC,EAAOnmC,KAAKmI,SAAS0/B,EAAkB3oC,GAAI,IAA0C,IAApCiJ,SAAS2/B,EAAiB5oC,GAAI,KAC/EA,IAGJ,OAAO,IAAIoH,KAAK6/B,EACnB,CAAC,MAAOhlC,GACL,MAAM,IAAIZ,MAAM,qDACnB,GAIL0lC,EAAOC,KAAK8B,OAAS,SAAUnkC,GAC3B,OAA+B,OAAxByC,KAAK2hC,OAAOpkC,IAIvBoiC,EAAOC,KAAKzI,QAAU,SAAU55B,GAC5B,IAEI,OADA,IAAIyC,KAAKA,KAAK2hC,OAAOpkC,KACd,CACV,CAAC,MAAO1C,GACL,OAAO,CACV,GAIL8kC,EAAOC,KAAKgC,uBAAyB,SAAUrkC,GAC3C,SAAIoiC,EAAOC,KAAKzI,QAAQ55B,KAAWA,EAAO0hC,MAAM,uCAQpDU,EAAOC,KAAKiC,uBAAyB,SAAUtkC,GAC3C,IAAIqjC,EAAMhoC,EAAG2oC,EAAmB1B,EAAQ2B,EAExC,IAMI,IALAZ,EAAO5gC,KAAKshC,UAAU/jC,GACtBgkC,EAAoBX,EAAK,GAAG7zB,cAC5By0B,EAAmBxhC,KAAKyhC,2BAA2Bb,EAAK,IAAI7zB,cAC5D8yB,EAAS,GACTjnC,EAAI,EACGA,EAAI,GAEPinC,EAAOnmC,KAAKmI,SAAS0/B,EAAkB3oC,GAAI,IAAMiJ,SAAS2/B,EAAiB5oC,GAAI,KAC/EA,IAGJ,OAAO,IAAIoH,KAAK6/B,EACnB,CAAC,MAAOhlC,GACL,MAAM,IAAIZ,MAAM,qDACnB,GAKL0lC,EAAOC,KAAKuB,MAAQ,SAAU5jC,GAC1B,MAAMhE,EAAQyG,KAAK2hC,OAAOpkC,GAE1B,GAAc,OAAVhE,EACA,MAAM,IAAIU,MAAM,wDAGpB,OAAO,IAAI+F,KAAKzG,IAIpBomC,EAAOC,KAAK0B,UAAY,SAAU/jC,GAC9B,IAAI0hC,EAEJ,GAAKA,EAAQ1hC,EAAO0hC,MAAM,iBAAmB,CACzC,MAAM6C,EAAajgC,SAASo9B,EAAM,IAClC,GAAI6C,GAAc,GAAKA,GAAc,GAAI,CACrC,MAAMlgC,EAAS,CAAC5B,KAAKmhC,MAAMlC,EAAM,IAAK6C,GAMtC,OALA/kC,OAAOkH,eAAerC,EAAQ,WAAY,CACtCnG,MAAO,WACH,OAAOuE,KAAKnG,KAAK,IACpB,IAEE+H,CACV,CACJ,CAED,MAAM,IAAI3H,MAAM,4DAMpB0lC,EAAOC,KAAK+B,OAAS,SAAUpkC,GAC3B,IAAI0hC,EAAOO,EAAM/jC,EAGjB,GAAKwjC,EAAQ1hC,EAAO0hC,MAAMpB,EAAYC,WAClC,OAAQ,WACJ,MAAMoB,EAAMD,EAAMphC,MAAM,EAAG,GACrBshC,EAAU,GAEhB,IAAK,IAAIvmC,EAAI,EAAGA,EAAIsmC,EAAI7lC,OAAQT,IAC5B4mC,EAAON,EAAItmC,GACXumC,EAAQzlC,KAAK+lC,EAAaD,IAG9B,OAAOL,CACvB,CAVoB,GAWL,GAAKF,EAAQ1hC,EAAO0hC,MAAMpB,EAAYK,WAAa,CAEtD,GADAziC,EAAQgkC,EAAaR,EAAM,IACvBxjC,EAAQ,YAAcA,EAAQ,EAC9B,MAAM,IAAIxB,MAAM,yCAGpB,OAAS,WACL,MAAMklC,EAAU,GAChB,IAAI/rB,EAEJ,IAAKA,EAAQ,EAAGA,GAAS,GAAIA,GAAS,EAClC+rB,EAAQzlC,KAAM+B,GAAS2X,EAAS,KAGpC,OAAO+rB,CACvB,CATqB,GASHxoB,SAClB,CAAe,OAAKsoB,EAAQ1hC,EAAO0hC,MAAMpB,EAAYI,WACjC,WACJ,MAAMiB,EAAMD,EAAMphC,MAAM,EAAG,GACrBshC,EAAU,GAGhB,GADA1jC,EAAQgkC,EAAaP,EAAI,IACrBzjC,EAAQ,UAAYA,EAAQ,EAC5B,MAAM,IAAIxB,MAAM,yCAQpB,OALAklC,EAAQzlC,KAAK+lC,EAAaP,EAAI,KAC9BC,EAAQzlC,KAAM+B,GAAS,GAAM,KAC7B0jC,EAAQzlC,KAAM+B,GAAU,EAAK,KAC7B0jC,EAAQzlC,KAAqB,IAAf+B,GAEP0jC,CACvB,CAfoB,IAgBAF,EAAQ1hC,EAAO0hC,MAAMpB,EAAYG,aACjC,WACJ,MAAMkB,EAAMD,EAAMphC,MAAM,EAAG,GACrBshC,EAAU,GAGhB,GADA1jC,EAAQgkC,EAAaP,EAAI,IACrBzjC,EAAQ,OAAUA,EAAQ,EAC1B,MAAM,IAAIxB,MAAM,yCAQpB,OALAklC,EAAQzlC,KAAK+lC,EAAaP,EAAI,KAC9BC,EAAQzlC,KAAK+lC,EAAaP,EAAI,KAC9BC,EAAQzlC,KAAM+B,GAAS,EAAK,KAC5B0jC,EAAQzlC,KAAoB,IAAd+B,GAEP0jC,CACvB,CAfoB,GAiBD,MAKfQ,EAAOC,KAAK6B,2BAA6B,SAAUM,GAE/C,IADAA,EAASlgC,SAASkgC,IACL,GAAKA,EAAS,GACvB,MAAM,IAAI9nC,MAAM,sCAGpB,MAAM4lC,EAAS,CAAC,EAAG,EAAG,EAAG,GACzB,IAAIt+B,EAAI,EACR,MAAMygC,EAAmBzmC,KAAKO,MAAMimC,EAAS,GAE7C,KAAOxgC,EAAIygC,GACPnC,EAAOt+B,GAAK,IACZA,IAOJ,OAJIygC,EAAmB,IACnBnC,EAAOmC,GAAoBzmC,KAAKC,IAAI,EAAGumC,EAAS,GAAK,GAAK,EAAKA,EAAS,GAGrE,IAAI/hC,KAAK6/B,IAIpBF,EAAOuB,KAAQ,WAIX,SAASA,EAAM3nC,EAAOylC,GAClB,IAAIpmC,EAAG4mC,EAEP,GAAqB,KAAjBjmC,EAAMF,OAEN,IADA2G,KAAKzG,MAAQ,GACRX,EAAI,EAAGA,GAAK,GAAIA,GAAK,EACtBoH,KAAKzG,MAAMG,KAAMH,EAAMX,IAAM,EAAKW,EAAMX,EAAI,QAE7C,IAAqB,IAAjBW,EAAMF,OAGb,MAAM,IAAIY,MAAM,6CAFhB+F,KAAKzG,MAAQA,CAGhB,CAED,IAAKX,EAAI,EAAGA,EAAIoH,KAAKzG,MAAMF,OAAQT,IAE/B,GADA4mC,EAAOx/B,KAAKzG,MAAMX,KACX,GAAK4mC,GAAQA,GAAQ,OACxB,MAAM,IAAIvlC,MAAM,2CAIpB+kC,IACAh/B,KAAKg/B,OAASA,EAErB,CAuND,OApNAkC,EAAKjkC,UAAU8iC,cAAgB,CAE3BC,YAAa,CAAC,IAAIkB,EAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,KAClDf,UAAW,CAAC,IAAIe,EAAK,CAAC,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IACrDhB,UAAW,CAAC,IAAIgB,EAAK,CAAC,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GACrDd,SAAU,CAAC,IAAIc,EAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,KAC/Ce,YAAa,CAAC,IAAIf,EAAK,CAAC,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GACvDgB,WAAY,CAAC,IAAIhB,EAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,MAAQ,EAAG,IAAK,IAEtDiB,QAAS,CAAC,IAAIjB,EAAK,CAAC,EAAG,EAAG,EAAG,EAAG,MAAQ,EAAG,EAAG,IAAK,IAEnDkB,QAAS,CAAC,IAAIlB,EAAK,CAAC,IAAM,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAEtD,OAAQ,CAAC,IAAIA,EAAK,CAAC,KAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAElDmB,OAAQ,CAAC,IAAInB,EAAK,CAAC,KAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAElDX,SAAU,CAAC,CAAC,IAAIW,EAAK,CAAC,KAAQ,KAAO,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,KACzDoB,aAAc,CAAC,IAAIpB,EAAK,CAAC,KAAQ,EAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAC1DqB,IAAK,CAAC,IAAIrB,EAAK,CAAC,KAAQ,EAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IACjDsB,QAAS,CAAC,IAAItB,EAAK,CAAC,KAAQ,EAAK,IAAO,EAAG,EAAG,EAAG,EAAG,IAAK,IACzDuB,WAAY,CAAC,IAAIvB,EAAK,CAAC,KAAQ,GAAM,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IACzDwB,QAAS,CAAC,IAAIxB,EAAK,CAAC,KAAQ,GAAM,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,KAI1DA,EAAKjkC,UAAU0lC,oBAAsB,WACjC,MAAwB,eAAjB3iC,KAAKoM,SAIhB80B,EAAKjkC,UAAUujC,KAAO,WAClB,MAAO,QAIXU,EAAKjkC,UAAUgiC,MAAQ,SAAUwB,EAAOC,GACpC,IAAIxB,EAQJ,QANkBpgC,IAAd4hC,IACAxB,EAAMuB,EACNA,EAAQvB,EAAI,GACZwB,EAAYxB,EAAI,IAGC,SAAjBuB,EAAMD,OACN,MAAM,IAAIvmC,MAAM,uDAGpB,OAAOmlC,EAAUp/B,KAAKzG,MAAOknC,EAAMlnC,MAAO,GAAImnC,IAMlDQ,EAAKjkC,UAAU0jC,2BAA6B,WACxC,IAAIC,EAAO,EAEPC,GAAO,EAEX,MAAMC,EAAY,CACd,EAAG,GACH,MAAO,GACP,MAAO,GACP,MAAO,GACP,MAAO,GACP,MAAO,GACP,MAAO,GACP,MAAO,EACP,MAAO,EACP,MAAO,EACP,MAAO,EACP,MAAO,EACP,MAAO,EACP,MAAO,EACP,MAAO,EACP,MAAO,EACP,MAAO,GAEX,IAAItB,EAAMuB,EAEV,IAAK,IAAInoC,EAAI,EAAGA,GAAK,EAAGA,GAAK,EAAG,CAE5B,GADA4mC,EAAOx/B,KAAKzG,MAAMX,KACd4mC,KAAQsB,GAYR,OAAO,KAVP,GADAC,EAAQD,EAAUtB,GACdqB,GAAkB,IAAVE,EACR,OAAO,KAGG,KAAVA,IACAF,GAAO,GAGXD,GAAQG,CAIf,CAED,OAAO,IAAMH,GAKjBM,EAAKjkC,UAAUmP,MAAQ,WACnB,OAAOuzB,EAAOqB,YAAYhhC,KAAMA,KAAK+/B,gBAIzCmB,EAAKjkC,UAAU8P,YAAc,WACzB,IAAIyyB,EACJ,MAAMn5B,EAAQ,GACR64B,EAAMl/B,KAAKzG,MACjB,IAAK,IAAIX,EAAI,EAAGA,EAAIsmC,EAAI7lC,OAAQT,IAC5B4mC,EAAON,EAAItmC,GACXyN,EAAM3M,KAAK8lC,GAAQ,GACnBn5B,EAAM3M,KAAY,IAAP8lC,GAGf,OAAOn5B,GAKX66B,EAAKjkC,UAAU2lC,oBAAsB,WACjC,MAAMC,EAAS,WACX,MAAM1D,EAAU,GAChB,IAAK,IAAIvmC,EAAI,EAAGA,EAAIoH,KAAKzG,MAAMF,OAAQT,IACnCumC,EAAQzlC,KAAKgmC,EAAQ1/B,KAAKzG,MAAMX,GAAG4G,SAAS,IAAK,IAGrD,OAAO2/B,CACV,EAAEt+B,KAAKb,MAAOnG,KAAK,KAEpB,IAAIipC,EAAS,GAMb,OAJI9iC,KAAKg/B,SACL8D,EAAU,IAAG9iC,KAAKg/B,UAGf6D,EAAOC,GAKlB5B,EAAKjkC,UAAU8lC,cAAgB,WAC3B,IAAK/iC,KAAK2iC,sBACN,MAAM,IAAI1oC,MAAM,4DAGpB,MAAMilC,EAAMl/B,KAAKzG,MAAMsE,OAAO,GACxBmlC,EAAO9D,EAAI,GACX+D,EAAM/D,EAAI,GAEhB,OAAO,IAAIS,EAAOC,KAAK,CAACoD,GAAQ,EAAU,IAAPA,EAAaC,GAAO,EAAS,IAANA,KAO9D/B,EAAKjkC,UAAUmkC,mBAAqB,WAChC,MAAMyB,EAAS,WACX,MAAM1D,EAAU,GAEhB,IAAK,IAAIvmC,EAAI,EAAGA,EAAIoH,KAAKzG,MAAMF,OAAQT,IACnCumC,EAAQzlC,KAAKsG,KAAKzG,MAAMX,GAAG4G,SAAS,KAGxC,OAAO2/B,CACV,EAAEt+B,KAAKb,MAAOnG,KAAK,KAEpB,IAAIipC,EAAS,GAMb,OAJI9iC,KAAKg/B,SACL8D,EAAU,IAAG9iC,KAAKg/B,UAGf6D,EAAOC,GAMlB5B,EAAKjkC,UAAUimC,gBAAkB,WAC7B,MAAMC,EAAQ,uBACR5lC,EAASyC,KAAKohC,qBACpB,IAEInC,EAFAmE,EAAiB,EACjBC,GAAmB,EAGvB,KAAQpE,EAAQkE,EAAMG,KAAK/lC,IACnB0hC,EAAM,GAAG5lC,OAASgqC,IAClBD,EAAiBnE,EAAM9L,MACvBkQ,EAAkBpE,EAAM,GAAG5lC,QAInC,OAAIgqC,EAAkB,EACX9lC,EAGH,GAAEA,EAAO8e,UAAU,EAAG+mB,OAAoB7lC,EAAO8e,UAAU+mB,EAAiBC,MAMxFnC,EAAKjkC,UAAUuC,SAAW,WACtB,OAAOQ,KAAKkjC,mBAGThC,CAEf,CArPmB,GAwPfvB,EAAOuB,KAAKG,yBAA2B,SAAU9jC,GAC7C,IACI,MAAMqjC,EAAO5gC,KAAKshC,UAAU/jC,GACtBgkC,EAAoBX,EAAK,GAAG7zB,cAC5By0B,EAAmBxhC,KAAKyhC,2BAA2Bb,EAAK,IAAI7zB,cAC5D8yB,EAAS,GACf,IAAIjnC,EAAI,EACR,KAAOA,EAAI,IAEPinC,EAAOnmC,KAAKmI,SAAS0/B,EAAkB3oC,GAAI,IAA0C,IAApCiJ,SAAS2/B,EAAiB5oC,GAAI,KAC/EA,IAGJ,OAAO,IAAIoH,KAAK6/B,EACnB,CAAC,MAAOhlC,GACL,MAAM,IAAIZ,MAAO,uDAAsDY,KAC1E,GAIL8kC,EAAOuB,KAAKqC,OAAS,SAAUhmC,GAC3B,OAA+B,OAAxByC,KAAK2hC,OAAOpkC,IAIvBoiC,EAAOuB,KAAK/J,QAAU,SAAU55B,GAI5B,GAAsB,iBAAXA,IAAgD,IAAzBA,EAAOrD,QAAQ,KAC7C,OAAO,EAGX,IACI,MAAM2oC,EAAO7iC,KAAK2hC,OAAOpkC,GAEzB,OADA,IAAIyC,KAAK6iC,EAAKtpC,MAAOspC,EAAK7D,SACnB,CACV,CAAC,MAAOnkC,GACL,OAAO,CACV,GAIL8kC,EAAOuB,KAAKW,uBAAyB,SAAUtkC,GAC3C,IAAIqjC,EAAMhoC,EAAG2oC,EAAmB1B,EAAQ2B,EAExC,IAMI,IALAZ,EAAO5gC,KAAKshC,UAAU/jC,GACtBgkC,EAAoBX,EAAK,GAAG7zB,cAC5By0B,EAAmBxhC,KAAKyhC,2BAA2Bb,EAAK,IAAI7zB,cAC5D8yB,EAAS,GACTjnC,EAAI,EACGA,EAAI,IAEPinC,EAAOnmC,KAAKmI,SAAS0/B,EAAkB3oC,GAAI,IAAMiJ,SAAS2/B,EAAiB5oC,GAAI,KAC/EA,IAGJ,OAAO,IAAIoH,KAAK6/B,EACnB,CAAC,MAAOhlC,GACL,MAAM,IAAIZ,MAAO,uDAAsDY,KAC1E,GAKL8kC,EAAOuB,KAAKC,MAAQ,SAAU5jC,GAC1B,MAAMslC,EAAO7iC,KAAK2hC,OAAOpkC,GAEzB,GAAmB,OAAfslC,EAAKtpC,MACL,MAAM,IAAIU,MAAM,wDAGpB,OAAO,IAAI+F,KAAK6iC,EAAKtpC,MAAOspC,EAAK7D,SAGrCW,EAAOuB,KAAKI,UAAY,SAAU/jC,GAC9B,IAAIukC,EAAY7C,EAAOr9B,EAEvB,IAAKq9B,EAAQ1hC,EAAO0hC,MAAM,oBACtB6C,EAAajgC,SAASo9B,EAAM,IACxB6C,GAAc,GAAKA,GAAc,KAOjC,OANAlgC,EAAS,CAAC5B,KAAKmhC,MAAMlC,EAAM,IAAK6C,GAChC/kC,OAAOkH,eAAerC,EAAQ,WAAY,CACtCnG,MAAO,WACH,OAAOuE,KAAKnG,KAAK,IACpB,IAEE+H,EAIf,MAAM,IAAI3H,MAAM,4DAIpB0lC,EAAOuB,KAAKS,OAAS,SAAUpkC,GAC3B,IAAIslC,EAAMjqC,EAAGqmC,EAAOa,EAAOD,EAAQb,EAEnC,GAAKC,EAAQ1hC,EAAO0hC,MAAMV,EAAYE,wBAClC,OAAOz+B,KAAK2hC,OAAQ,UAAS1C,EAAM,MAEvC,GAAIV,EAAYC,OAAO/H,KAAKl5B,GACxB,OAAOohC,EAAWphC,EAAQ,GAE9B,IAAK0hC,EAAQ1hC,EAAO0hC,MAAMV,EAAYG,iBAClCM,EAASC,EAAM,IAAM,GACrB4D,EAAOlE,EAAWM,EAAM,GAAGphC,MAAM,GAAI,GAAKmhC,EAAQ,GAC9C6D,EAAKtpC,OAAO,CAOZ,IANAsmC,EAAS,CACLh+B,SAASo9B,EAAM,IACfp9B,SAASo9B,EAAM,IACfp9B,SAASo9B,EAAM,IACfp9B,SAASo9B,EAAM,KAEdrmC,EAAI,EAAGA,EAAIinC,EAAOxmC,OAAQT,IAE3B,GADAknC,EAAQD,EAAOjnC,KACR,GAAKknC,GAASA,GAAS,KAC1B,OAAO,KAMf,OAFA+C,EAAKtpC,MAAMG,KAAKmmC,EAAO,IAAM,EAAIA,EAAO,IACxCgD,EAAKtpC,MAAMG,KAAKmmC,EAAO,IAAM,EAAIA,EAAO,IACjC,CACHtmC,MAAOspC,EAAKtpC,MACZylC,OAAQ6D,EAAK7D,OAEpB,CAGL,OAAO,MAIXW,EAAOuB,KAAKO,2BAA6B,SAAUM,GAE/C,IADAA,EAASlgC,SAASkgC,IACL,GAAKA,EAAS,IACvB,MAAM,IAAI9nC,MAAM,sCAGpB,MAAM4lC,EAAS,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC7D,IAAIt+B,EAAI,EACR,MAAMygC,EAAmBzmC,KAAKO,MAAMimC,EAAS,GAE7C,KAAOxgC,EAAIygC,GACPnC,EAAOt+B,GAAK,IACZA,IAOJ,OAJIygC,EAAmB,KACnBnC,EAAOmC,GAAoBzmC,KAAKC,IAAI,EAAGumC,EAAS,GAAK,GAAK,EAAKA,EAAS,GAGrE,IAAI/hC,KAAK6/B,IAIpBF,EAAOh9B,cAAgB,SAAU0D,GAC7B,MAAMhN,EAASgN,EAAMhN,OAErB,GAAe,IAAXA,EACA,OAAO,IAAIsmC,EAAOC,KAAKv5B,GACpB,GAAe,KAAXhN,EACP,OAAO,IAAIsmC,EAAOuB,KAAK76B,GAEvB,MAAM,IAAIpM,MAAM,iEAKxB0lC,EAAOxI,QAAU,SAAU55B,GACvB,OAAOoiC,EAAOuB,KAAK/J,QAAQ55B,IAAWoiC,EAAOC,KAAKzI,QAAQ55B,IAM9DoiC,EAAOwB,MAAQ,SAAU5jC,GACrB,GAAIoiC,EAAOuB,KAAK/J,QAAQ55B,GACpB,OAAOoiC,EAAOuB,KAAKC,MAAM5jC,GACtB,GAAIoiC,EAAOC,KAAKzI,QAAQ55B,GAC3B,OAAOoiC,EAAOC,KAAKuB,MAAM5jC,GAEzB,MAAM,IAAItD,MAAM,yDAMxB0lC,EAAO2B,UAAY,SAAU/jC,GACzB,IACI,OAAOoiC,EAAOuB,KAAKI,UAAU/jC,EAChC,CAAC,MAAO1C,GACL,IACI,OAAO8kC,EAAOC,KAAK0B,UAAU/jC,EAChC,CAAC,MAAOimC,GACL,MAAM,IAAIvpC,MAAM,4DACnB,CACJ,GAIL0lC,EAAO1V,QAAU,SAAU1sB,GACvB,MAAMslC,EAAO7iC,KAAKmhC,MAAM5jC,GAExB,MAAoB,SAAhBslC,EAAKrC,QAAqBqC,EAAKF,sBACxBE,EAAKE,gBAELF,GAOflD,EAAOqB,YAAc,SAAUloB,EAAS2qB,EAAWC,GAC/C,IAAI9qC,EAAG+qC,EAAWC,EAAcC,EAMhC,IAAKF,KAJDD,UACAA,EAAc,WAGAD,EACd,GAAI1mC,OAAOE,UAAUoT,eAAexP,KAAK4iC,EAAWE,GAOhD,IANAC,EAAeH,EAAUE,IAErBC,EAAa,IAAQA,EAAa,aAAc7pC,QAChD6pC,EAAe,CAACA,IAGfhrC,EAAI,EAAGA,EAAIgrC,EAAavqC,OAAQT,IAEjC,GADAirC,EAASD,EAAahrC,GAClBkgB,EAAQ0nB,SAAWqD,EAAO,GAAGrD,QAAU1nB,EAAQmmB,MAAMz7B,MAAMsV,EAAS+qB,GACpE,OAAOF,EAMvB,OAAOD,GAI0BI,GAAOxnC,QACxCwnC,GAAAxnC,QAAiBqjC,EAGjBhC,EAAKgC,OAASA,CAGrB,CAv+BA,CAu+BC3/B,qBCp+BF,MAAM+jC,GAAS,WAGT7S,GAAO,GAeP3lB,GAAS,CACdy4B,SAAY,kDACZ,YAAa,iDACb,gBAAiB,iBAKZloC,GAAQP,KAAKO,MACbmoC,GAAqB/iC,OAAOqC,aAUlC,SAASS,GAAMhF,GACd,MAAM,IAAInC,WAAW0O,GAAOvM,GAC7B,CAqGA,MAwBMklC,GAAe,SAASC,EAAOC,GAGpC,OAAOD,EAAQ,GAAK,IAAMA,EAAQ,MAAgB,GAARC,IAAc,EACzD,EAOMC,GAAQ,SAASlT,EAAOmT,EAAWC,GACxC,IAAIzM,EAAI,EAGR,IAFA3G,EAAQoT,EAAYzoC,GAAMq1B,EA1Kd,KA0K8BA,GAAS,EACnDA,GAASr1B,GAAMq1B,EAAQmT,GACOnT,EAAQqT,IAA2B1M,GAAK5G,GACrEC,EAAQr1B,GAAMq1B,EA3JMD,IA6JrB,OAAOp1B,GAAMg8B,EAAI,GAAsB3G,GAASA,EAhLpC,IAiLb,EAuGM1gB,GAAS,SAAShE,GACvB,MAAMnS,EAAS,GAGfmS,EAjMD,SAAoBlP,GACnB,MAAMjD,EAAS,GACf,IAAImqC,EAAU,EACd,MAAMprC,EAASkE,EAAOlE,OACtB,KAAOorC,EAAUprC,GAAQ,CACxB,MAAMoC,EAAQ8B,EAAOpE,WAAWsrC,KAChC,GAAIhpC,GAAS,OAAUA,GAAS,OAAUgpC,EAAUprC,EAAQ,CAE3D,MAAMqrC,EAAQnnC,EAAOpE,WAAWsrC,KACR,QAAX,MAARC,GACJpqC,EAAOZ,OAAe,KAAR+B,IAAkB,KAAe,KAARipC,GAAiB,QAIxDpqC,EAAOZ,KAAK+B,GACZgpC,IAEF,MACCnqC,EAAOZ,KAAK+B,EAEd,CACA,OAAOnB,CACR,CA2KSqqC,CAAWl4B,GAGnB,MAAMm4B,EAAcn4B,EAAMpT,OAG1B,IAAImH,EA/RY,IAgSZ2wB,EAAQ,EACR0T,EAlSe,GAqSnB,IAAK,MAAMC,KAAgBr4B,EACtBq4B,EAAe,KAClBxqC,EAAOZ,KAAKuqC,GAAmBa,IAIjC,MAAMC,EAAczqC,EAAOjB,OAC3B,IAAI2rC,EAAiBD,EAWrB,IALIA,GACHzqC,EAAOZ,KAjTS,KAqTVsrC,EAAiBJ,GAAa,CAIpC,IAAI9pC,EAAIipC,GACR,IAAK,MAAMe,KAAgBr4B,EACtBq4B,GAAgBtkC,GAAKskC,EAAehqC,IACvCA,EAAIgqC,GAMN,MAAMG,EAAwBD,EAAiB,EAC3ClqC,EAAI0F,EAAI1E,IAAOioC,GAAS5S,GAAS8T,IACpCjhC,GAAM,YAGPmtB,IAAUr2B,EAAI0F,GAAKykC,EACnBzkC,EAAI1F,EAEJ,IAAK,MAAMgqC,KAAgBr4B,EAI1B,GAHIq4B,EAAetkC,KAAO2wB,EAAQ4S,IACjC//B,GAAM,YAEH8gC,IAAiBtkC,EAAG,CAEvB,IAAI0kC,EAAI/T,EACR,IAAK,IAAI2G,EAAI5G,IAA0B4G,GAAK5G,GAAM,CACjD,MAAMI,EAAIwG,GAAK+M,EAxVP,EAwVsB/M,GAAK+M,EAvV3B,MAuVgD/M,EAAI+M,EAC5D,GAAIK,EAAI5T,EACP,MAED,MAAM6T,EAAUD,EAAI5T,EACd8T,EAAalU,GAAOI,EAC1Bh3B,EAAOZ,KACNuqC,GAAmBC,GAAa5S,EAAI6T,EAAUC,EAAY,KAE3DF,EAAIppC,GAAMqpC,EAAUC,EACrB,CAEA9qC,EAAOZ,KAAKuqC,GAAmBC,GAAagB,EAAG,KAC/CL,EAAOR,GAAMlT,EAAO8T,EAAuBD,IAAmBD,GAC9D5T,EAAQ,IACN6T,CACH,GAGC7T,IACA3wB,CAEH,CACA,OAAOlG,EAAOT,KAAK,GACpB,ECvXMwrC,GAA6B1+B,OAAO,GAAK,GAAK,GAC9C2jB,GAAuB3jB,OAAO,IAGpC,SAAS2+B,GAAQ9kC,EAAW+kC,GAAK,GAC/B,OAAIA,EAAW,CAAE7a,EAAGjpB,OAAOjB,EAAI6kC,IAAa1a,EAAGlpB,OAAQjB,GAAK8pB,GAAQ+a,KAC7D,CAAE3a,EAAsC,EAAnCjpB,OAAQjB,GAAK8pB,GAAQ+a,IAAiB1a,EAA4B,EAAzBlpB,OAAOjB,EAAI6kC,IAClE,CAuCA,MAsBMluB,GAAM,CACVmuB,WAASt4B,MA5DX,SAAew4B,EAAeD,GAAK,GACjC,IAAIE,EAAK,IAAIxc,YAAYuc,EAAInsC,QACzBqsC,EAAK,IAAIzc,YAAYuc,EAAInsC,QAC7B,IAAK,IAAIT,EAAI,EAAGA,EAAI4sC,EAAInsC,OAAQT,IAAK,CACnC,MAAM8xB,EAAEA,EAACC,EAAEA,GAAM2a,GAAQE,EAAI5sC,GAAI2sC,IAChCE,EAAG7sC,GAAI8sC,EAAG9sC,IAAM,CAAC8xB,EAAGC,EACvB,CACA,MAAO,CAAC8a,EAAIC,EACd,EAoDkBC,MAlDJA,CAACjb,EAAWC,IAAehkB,OAAO+jB,IAAM,IAAMJ,GAAQ3jB,OAAOgkB,IAAM,GAmD/Eib,MAjDYA,CAAClb,EAAWmb,EAAYzqC,IAAcsvB,IAAMtvB,EAiDjD0qC,MAhDKA,CAACpb,EAAWC,EAAWvvB,IAAesvB,GAAM,GAAKtvB,EAAOuvB,IAAMvvB,EAiD1E2qC,OA/CaA,CAACrb,EAAWC,EAAWvvB,IAAesvB,IAAMtvB,EAAMuvB,GAAM,GAAKvvB,EA+ClE4qC,OA9CKA,CAACtb,EAAWC,EAAWvvB,IAAesvB,GAAM,GAAKtvB,EAAOuvB,IAAMvvB,EA8C3D6qC,OA5CHA,CAACvb,EAAWC,EAAWvvB,IAAesvB,GAAM,GAAKtvB,EAAOuvB,IAAOvvB,EAAI,GA4CxD8qC,OA3CXA,CAACxb,EAAWC,EAAWvvB,IAAesvB,IAAOtvB,EAAI,GAAQuvB,GAAM,GAAKvvB,EA4CjF+qC,QA1CcA,CAACC,EAAYzb,IAAcA,EA0ChC0b,QAzCKA,CAAC3b,EAAWmb,IAAenb,EA0CzC4b,OAxCaA,CAAC5b,EAAWC,EAAWvvB,IAAesvB,GAAKtvB,EAAMuvB,IAAO,GAAKvvB,EAwClEmrC,OAvCKA,CAAC7b,EAAWC,EAAWvvB,IAAeuvB,GAAKvvB,EAAMsvB,IAAO,GAAKtvB,EAuC1DorC,OArCHA,CAAC9b,EAAWC,EAAWvvB,IAAeuvB,GAAMvvB,EAAI,GAAQsvB,IAAO,GAAKtvB,EAqCzDqrC,OApCXA,CAAC/b,EAAWC,EAAWvvB,IAAesvB,GAAMtvB,EAAI,GAAQuvB,IAAO,GAAKvvB,EAqCjFumB,IAjCF,SAAa8jB,EAAYC,EAAYgB,EAAYC,GAC/C,MAAMhc,GAAK+a,IAAO,IAAMiB,IAAO,GAC/B,MAAO,CAAEjc,EAAI+a,EAAKiB,GAAO/b,EAAI,GAAK,GAAM,GAAM,EAAGA,EAAO,EAAJA,EACtD,EA8BOic,MA5BOA,CAAClB,EAAYiB,EAAYE,KAAgBnB,IAAO,IAAMiB,IAAO,IAAME,IAAO,GA4B1EC,MA3BAA,CAAC7D,EAAawC,EAAYiB,EAAYK,IACjDtB,EAAKiB,EAAKK,GAAO9D,EAAM,GAAK,GAAM,GAAM,EA0BtB+D,MAzBPA,CAACtB,EAAYiB,EAAYE,EAAYI,KAChDvB,IAAO,IAAMiB,IAAO,IAAME,IAAO,IAAMI,IAAO,GAwBrBC,MAvBdA,CAACjE,EAAawC,EAAYiB,EAAYK,EAAYI,IAC7D1B,EAAKiB,EAAKK,EAAKI,GAAOlE,EAAM,GAAK,GAAM,GAAM,EAsBbmE,MAnBrBA,CAACnE,EAAawC,EAAYiB,EAAYK,EAAYI,EAAYE,IACzE5B,EAAKiB,EAAKK,EAAKI,EAAKE,GAAOpE,EAAM,GAAK,GAAM,GAAM,EAkBXqE,MArB5BA,CAAC5B,EAAYiB,EAAYE,EAAYI,EAAYM,KAC5D7B,IAAO,IAAMiB,IAAO,IAAME,IAAO,IAAMI,IAAO,IAAMM,IAAO,IAsB9D,IAAAC,GAAerwB,GCtEf,MAAOswB,GAAWC,IAA6B,KAAOvwB,GAAInK,MAAM,CAC9D,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,sBAClEkT,KAAI1f,GAAKmG,OAAOnG,MArB6B,GAwBzCmnC,GAA6B,IAAI1e,YAAY,IAC7C2e,GAA6B,IAAI3e,YAAY,IAC7C,MAAO4e,WAAe/d,GAsB1Ble,WAAAA,GACEC,MAAM,IAAK,GAAI,IAAI,GAlBrB7L,KAAAylC,GAAK,WACLzlC,KAAA0lC,IAAK,UACL1lC,KAAA0mC,IAAK,WACL1mC,KAAA2mC,IAAK,WACL3mC,KAAA+mC,GAAK,WACL/mC,KAAA6mC,IAAK,SACL7mC,KAAAmnC,IAAK,WACLnnC,KAAAinC,GAAK,WACLjnC,KAAAqnC,GAAK,WACLrnC,KAAAunC,IAAK,WACLvnC,KAAA8nC,IAAK,WACL9nC,KAAA+nC,GAAK,UACL/nC,KAAAgoC,GAAK,UACLhoC,KAAAioC,IAAK,SACLjoC,KAAAkoC,GAAK,WACLloC,KAAAmoC,GAAK,SAIL,CAEUhkC,GAAAA,GAIR,MAAMshC,GAAEA,EAAEC,GAAEA,EAAEgB,GAAEA,EAAEC,GAAEA,EAAEI,GAAEA,EAAEF,GAAEA,EAAEM,GAAEA,EAAEF,GAAEA,EAAEI,GAAEA,EAAEE,GAAEA,EAAEO,GAAEA,EAAEC,GAAEA,EAAEC,GAAEA,EAAEC,GAAEA,EAAEC,GAAEA,EAAEC,GAAEA,GAAOnoC,KAC3E,MAAO,CAACylC,EAAIC,EAAIgB,EAAIC,EAAII,EAAIF,EAAIM,EAAIF,EAAII,EAAIE,EAAIO,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EACtE,CAEUpjC,GAAAA,CACR0gC,EAAYC,EAAYgB,EAAYC,EAAYI,EAAYF,EAAYM,EAAYF,EACpFI,EAAYE,EAAYO,EAAYC,EAAYC,EAAYC,EAAYC,EAAYC,GAEpFnoC,KAAKylC,GAAU,EAALA,EACVzlC,KAAK0lC,GAAU,EAALA,EACV1lC,KAAK0mC,GAAU,EAALA,EACV1mC,KAAK2mC,GAAU,EAALA,EACV3mC,KAAK+mC,GAAU,EAALA,EACV/mC,KAAK6mC,GAAU,EAALA,EACV7mC,KAAKmnC,GAAU,EAALA,EACVnnC,KAAKinC,GAAU,EAALA,EACVjnC,KAAKqnC,GAAU,EAALA,EACVrnC,KAAKunC,GAAU,EAALA,EACVvnC,KAAK8nC,GAAU,EAALA,EACV9nC,KAAK+nC,GAAU,EAALA,EACV/nC,KAAKgoC,GAAU,EAALA,EACVhoC,KAAKioC,GAAU,EAALA,EACVjoC,KAAKkoC,GAAU,EAALA,EACVloC,KAAKmoC,GAAU,EAALA,CACZ,CACUle,OAAAA,CAAQpO,EAAgBphB,GAEhC,IAAK,IAAI7B,EAAI,EAAGA,EAAI,GAAIA,IAAK6B,GAAU,EACrCktC,GAAW/uC,GAAKijB,EAAKiQ,UAAUrxB,GAC/BmtC,GAAWhvC,GAAKijB,EAAKiQ,UAAWrxB,GAAU,GAE5C,IAAK,IAAI7B,EAAI,GAAIA,EAAI,GAAIA,IAAK,CAE5B,MAAMwvC,EAA4B,EAArBT,GAAW/uC,EAAI,IACtByvC,EAA4B,EAArBT,GAAWhvC,EAAI,IACtB0vC,EAAMnxB,GAAI4uB,OAAOqC,EAAMC,EAAM,GAAKlxB,GAAI4uB,OAAOqC,EAAMC,EAAM,GAAKlxB,GAAIyuB,MAAMwC,EAAMC,EAAM,GACpFE,EAAMpxB,GAAI6uB,OAAOoC,EAAMC,EAAM,GAAKlxB,GAAI6uB,OAAOoC,EAAMC,EAAM,GAAKlxB,GAAI2uB,MAAMsC,EAAMC,EAAM,GAEpFG,EAA0B,EAApBb,GAAW/uC,EAAI,GACrB6vC,EAA0B,EAApBb,GAAWhvC,EAAI,GACrB8vC,EAAMvxB,GAAI4uB,OAAOyC,EAAKC,EAAK,IAAMtxB,GAAI8uB,OAAOuC,EAAKC,EAAK,IAAMtxB,GAAIyuB,MAAM4C,EAAKC,EAAK,GAChFE,EAAMxxB,GAAI6uB,OAAOwC,EAAKC,EAAK,IAAMtxB,GAAI+uB,OAAOsC,EAAKC,EAAK,IAAMtxB,GAAI2uB,MAAM0C,EAAKC,EAAK,GAEhFG,EAAOzxB,GAAI6vB,MAAMuB,EAAKI,EAAKf,GAAWhvC,EAAI,GAAIgvC,GAAWhvC,EAAI,KAC7DiwC,EAAO1xB,GAAI+vB,MAAM0B,EAAMN,EAAKI,EAAKf,GAAW/uC,EAAI,GAAI+uC,GAAW/uC,EAAI,KACzE+uC,GAAW/uC,GAAY,EAAPiwC,EAChBjB,GAAWhvC,GAAY,EAAPgwC,CAClB,CACA,IAAInD,GAAEA,EAAEC,GAAEA,EAAEgB,GAAEA,EAAEC,GAAEA,EAAEI,GAAEA,EAAEF,GAAEA,EAAEM,GAAEA,EAAEF,GAAEA,EAAEI,GAAEA,EAAEE,GAAEA,EAAEO,GAAEA,EAAEC,GAAEA,EAAEC,GAAEA,EAAEC,GAAEA,EAAEC,GAAEA,EAAEC,GAAEA,GAAOnoC,KAEzE,IAAK,IAAIpH,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAE3B,MAAMkwC,EAAU3xB,GAAI4uB,OAAOsB,EAAIE,EAAI,IAAMpwB,GAAI4uB,OAAOsB,EAAIE,EAAI,IAAMpwB,GAAI8uB,OAAOoB,EAAIE,EAAI,IAC/EwB,EAAU5xB,GAAI6uB,OAAOqB,EAAIE,EAAI,IAAMpwB,GAAI6uB,OAAOqB,EAAIE,EAAI,IAAMpwB,GAAI+uB,OAAOmB,EAAIE,EAAI,IAE/EyB,EAAQ3B,EAAKS,GAAQT,EAAKW,EAC1BiB,EAAQ1B,EAAKQ,GAAQR,EAAKU,EAG1BiB,EAAO/xB,GAAImwB,MAAMa,EAAIY,EAASE,EAAMvB,GAAU9uC,GAAIgvC,GAAWhvC,IAC7DuwC,EAAMhyB,GAAIiwB,MAAM8B,EAAMhB,EAAIY,EAASE,EAAMvB,GAAU7uC,GAAI+uC,GAAW/uC,IAClEwwC,EAAa,EAAPF,EAENG,EAAUlyB,GAAI4uB,OAAON,EAAIC,EAAI,IAAMvuB,GAAI8uB,OAAOR,EAAIC,EAAI,IAAMvuB,GAAI8uB,OAAOR,EAAIC,EAAI,IAC/E4D,EAAUnyB,GAAI6uB,OAAOP,EAAIC,EAAI,IAAMvuB,GAAI+uB,OAAOT,EAAIC,EAAI,IAAMvuB,GAAI+uB,OAAOT,EAAIC,EAAI,IAC/E6D,EAAQ9D,EAAKiB,EAAOjB,EAAKsB,EAAOL,EAAKK,EACrCyC,EAAQ9D,EAAKiB,EAAOjB,EAAKmB,EAAOF,EAAKE,EAC3CqB,EAAU,EAALF,EACLG,EAAU,EAALF,EACLD,EAAU,EAALF,EACLG,EAAU,EAALF,EACLD,EAAU,EAALT,EACLU,EAAU,EAALR,IACF7c,EAAG2c,EAAI1c,EAAG4c,GAAOpwB,GAAIwK,IAAS,EAALwlB,EAAa,EAALF,EAAc,EAANkC,EAAe,EAANC,IACrDjC,EAAU,EAALJ,EACLE,EAAU,EAALJ,EACLE,EAAU,EAALL,EACLG,EAAU,EAALF,EACLD,EAAU,EAALjB,EACLkB,EAAU,EAALjB,EACL,MAAM+D,EAAMtyB,GAAIyvB,MAAMwC,EAAKE,EAASE,GACpC/D,EAAKtuB,GAAI2vB,MAAM2C,EAAKN,EAAKE,EAASE,GAClC7D,EAAW,EAAN+D,CACP,GAEG/e,EAAG+a,EAAI9a,EAAG+a,GAAOvuB,GAAIwK,IAAc,EAAV3hB,KAAKylC,GAAkB,EAAVzlC,KAAK0lC,GAAa,EAALD,EAAa,EAALC,MAC3Dhb,EAAGgc,EAAI/b,EAAGgc,GAAOxvB,GAAIwK,IAAc,EAAV3hB,KAAK0mC,GAAkB,EAAV1mC,KAAK2mC,GAAa,EAALD,EAAa,EAALC,MAC3Djc,EAAGqc,EAAIpc,EAAGkc,GAAO1vB,GAAIwK,IAAc,EAAV3hB,KAAK+mC,GAAkB,EAAV/mC,KAAK6mC,GAAa,EAALE,EAAa,EAALF,MAC3Dnc,EAAGyc,EAAIxc,EAAGsc,GAAO9vB,GAAIwK,IAAc,EAAV3hB,KAAKmnC,GAAkB,EAAVnnC,KAAKinC,GAAa,EAALE,EAAa,EAALF,MAC3Dvc,EAAG2c,EAAI1c,EAAG4c,GAAOpwB,GAAIwK,IAAc,EAAV3hB,KAAKqnC,GAAkB,EAAVrnC,KAAKunC,GAAa,EAALF,EAAa,EAALE,MAC3D7c,EAAGod,EAAInd,EAAGod,GAAO5wB,GAAIwK,IAAc,EAAV3hB,KAAK8nC,GAAkB,EAAV9nC,KAAK+nC,GAAa,EAALD,EAAa,EAALC,MAC3Drd,EAAGsd,EAAIrd,EAAGsd,GAAO9wB,GAAIwK,IAAc,EAAV3hB,KAAKgoC,GAAkB,EAAVhoC,KAAKioC,GAAa,EAALD,EAAa,EAALC,MAC3Dvd,EAAGwd,EAAIvd,EAAGwd,GAAOhxB,GAAIwK,IAAc,EAAV3hB,KAAKkoC,GAAkB,EAAVloC,KAAKmoC,GAAa,EAALD,EAAa,EAALC,IAC9DnoC,KAAK+E,IAAI0gC,EAAIC,EAAIgB,EAAIC,EAAII,EAAIF,EAAIM,EAAIF,EAAII,EAAIE,EAAIO,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EACvE,CACUhe,UAAAA,GACRwd,GAAWtjC,KAAK,GAChBujC,GAAWvjC,KAAK,EAClB,CACA0mB,OAAAA,GACE/qB,KAAKxF,OAAO6J,KAAK,GACjBrE,KAAK+E,IAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EACxD,EA8EK,MAAM2kC,GAAyBngB,IAAgB,IAAM,IAAIse;sEC7OpDlhC,OAAO,GACnB,MAAMgjC,GAAMhjC,OAAO,GACbijC,GAAMjjC,OAAO,GAWb,SAAU4hB,GAAQ9jB,GACtB,OACEA,aAAa3K,YACP,MAAL2K,GAA0B,iBAANA,GAAyC,eAAvBA,EAAEmH,YAAYI,IAEzD,CAGA,MAAM69B,GAAwB9vC,MAAMuD,KAAK,CAAEjE,OAAQ,MAAO,CAACywC,EAAGlxC,IAC5DA,EAAE4G,SAAS,IAAIyX,SAAS,EAAG,OAKvB,SAAU8yB,GAAW1jC,GACzB,IAAKkiB,GAAQliB,GAAQ,MAAM,IAAIpM,MAAM,uBAErC,IAAI2c,EAAM,GACV,IAAK,IAAIhe,EAAI,EAAGA,EAAIyN,EAAMhN,OAAQT,IAChCge,GAAOizB,GAAMxjC,EAAMzN,IAErB,OAAOge,CACT,CAOM,SAAUozB,GAAYpzB,GAC1B,GAAmB,iBAARA,EAAkB,MAAM,IAAI3c,MAAM,mCAAqC2c,GAElF,OAAOjQ,OAAe,KAARiQ,EAAa,IAAM,KAAKA,IACxC,CAGA,MAAMqzB,GAAS,CAAEC,GAAI,GAAIC,GAAI,GAAIC,GAAI,GAAIC,GAAI,GAAIlqB,GAAI,GAAImqB,GAAI,KAC7D,SAASC,GAAcC,GACrB,OAAIA,GAAQP,GAAOC,IAAMM,GAAQP,GAAOE,GAAWK,EAAOP,GAAOC,GAC7DM,GAAQP,GAAOG,IAAMI,GAAQP,GAAOI,GAAWG,GAAQP,GAAOG,GAAK,IACnEI,GAAQP,GAAO9pB,IAAMqqB,GAAQP,GAAOK,GAAWE,GAAQP,GAAO9pB,GAAK,SAAvE,CAEF,CAKM,SAAUsqB,GAAW7zB,GACzB,GAAmB,iBAARA,EAAkB,MAAM,IAAI3c,MAAM,mCAAqC2c,GAClF,MAAM8zB,EAAK9zB,EAAIvd,OACTsxC,EAAKD,EAAK,EAChB,GAAIA,EAAK,EAAG,MAAM,IAAIzwC,MAAM,0DAA4DywC,GACxF,MAAMnrC,EAAQ,IAAIzF,WAAW6wC,GAC7B,IAAK,IAAIC,EAAK,EAAGpoC,EAAK,EAAGooC,EAAKD,EAAIC,IAAMpoC,GAAM,EAAG,CAC/C,MAAMqoC,EAAKN,GAAc3zB,EAAIzd,WAAWqJ,IAClCsoC,EAAKP,GAAc3zB,EAAIzd,WAAWqJ,EAAK,IAC7C,QAAW1D,IAAP+rC,QAA2B/rC,IAAPgsC,EAAkB,CACxC,MAAMN,EAAO5zB,EAAIpU,GAAMoU,EAAIpU,EAAK,GAChC,MAAM,IAAIvI,MAAM,+CAAiDuwC,EAAO,cAAgBhoC,EAC1F,CACAjD,EAAMqrC,GAAW,GAALC,EAAUC,CACxB,CACA,OAAOvrC,CACT,CAMM,SAAUwrC,GAAgB1kC,GAC9B,IAAKkiB,GAAQliB,GAAQ,MAAM,IAAIpM,MAAM,uBACrC,OAAO+vC,GAAYD,GAAWjwC,WAAWwD,KAAK+I,GAAOsQ,WACvD,CAEM,SAAUq0B,GAAgBxqC,EAAoBvH,GAClD,OAAOwxC,GAAWjqC,EAAEhB,SAAS,IAAIyX,SAAe,EAANhe,EAAS,KACrD,CACM,SAAUgyC,GAAgBzqC,EAAoBvH,GAClD,OAAO+xC,GAAgBxqC,EAAGvH,GAAK0d,SACjC,CAeM,SAAUu0B,GAAYC,EAAev0B,EAAUw0B,GACnD,IAAIvoC,EACJ,GAAmB,iBAAR+T,EACT,IACE/T,EAAM4nC,GAAW7zB,EAClB,CAAC,MAAO/b,GACP,MAAM,IAAIZ,MAAM,GAAGkxC,oCAAwCv0B,cAAgB/b,IAC7E,KACK,KAAI0tB,GAAQ3R,GAKjB,MAAM,IAAI3c,MAAM,GAAGkxC,sCAFnBtoC,EAAM/I,WAAWwD,KAAKsZ,EAGxB,CACA,MAAM3d,EAAM4J,EAAIxJ,OAChB,GAA8B,iBAAnB+xC,GAA+BnyC,IAAQmyC,EAChD,MAAM,IAAInxC,MAAM,GAAGkxC,cAAkBC,gBAA6BnyC,KACpE,OAAO4J,CACT,CAKM,SAAUwoC,MAAeC,GAC7B,IAAIz1B,EAAM,EACV,IAAK,IAAIjd,EAAI,EAAGA,EAAI0yC,EAAOjyC,OAAQT,IAAK,CACtC,MAAM6L,EAAI6mC,EAAO1yC,GACjB,IAAK2vB,GAAQ9jB,GAAI,MAAM,IAAIxK,MAAM,uBACjC4b,GAAOpR,EAAEpL,MACX,CACA,IAAIwJ,EAAM,IAAI/I,WAAW+b,GACrBwf,EAAM,EACV,IAAK,IAAIz8B,EAAI,EAAGA,EAAI0yC,EAAOjyC,OAAQT,IAAK,CACtC,MAAM6L,EAAI6mC,EAAO1yC,GACjBiK,EAAIkC,IAAIN,EAAG4wB,GACXA,GAAO5wB,EAAEpL,MACX,CACA,OAAOwJ,CACT,CAsDO,MAAM0oC,GAAW/qC,IAAeopC,IAAOjjC,OAAOnG,EAAI,IAAMmpC,GAkEzD6B,GAAe,CACnBC,OAAS/qC,GAA4B,iBAARA,EAC7BgrC,SAAWhrC,GAA4B,mBAARA,EAC/BirC,QAAUjrC,GAA4B,kBAARA,EAC9BnD,OAASmD,GAA4B,iBAARA,EAC7BkrC,mBAAqBlrC,GAA4B,iBAARA,GAAoB6nB,GAAQ7nB,GACrEmrC,cAAgBnrC,GAAae,OAAOoqC,cAAcnrC,GAClDnB,MAAQmB,GAAa3G,MAAMkF,QAAQyB,GACnCorC,MAAOA,CAACprC,EAAUqrC,IAAiBA,EAAeC,GAAG7U,QAAQz2B,GAC7DurC,KAAOvrC,GAA4B,mBAARA,GAAsBe,OAAOoqC,cAAcnrC,EAAIkpB,YAMtE,SAAUsiB,GACdH,EACAI,EACAC,EAA2B,CAAA,GAE3B,MAAMC,EAAaA,CAACC,EAAoBttC,EAAiButC,KACvD,MAAMC,EAAWhB,GAAaxsC,GAC9B,GAAwB,mBAAbwtC,EACT,MAAM,IAAIvyC,MAAM,sBAAsB+E,yBAExC,MAAM0B,EAAMqrC,EAAOO,GACnB,KAAIC,QAAsBztC,IAAR4B,GACb8rC,EAAS9rC,EAAKqrC,IACjB,MAAM,IAAI9xC,MACR,iBAAiBiH,OAAOorC,MAAc5rC,aAAeA,gBAAkB1B,IAE3E,EAEF,IAAK,MAAOstC,EAAWttC,KAASjC,OAAO0vC,QAAQN,GAAaE,EAAWC,EAAWttC,GAAO,GACzF,IAAK,MAAOstC,EAAWttC,KAASjC,OAAO0vC,QAAQL,GAAgBC,EAAWC,EAAWttC,GAAO,GAC5F,OAAO+sC,CACT;sECvSA,MAAMW,GAAM/lC,OAAO,GAAIgjC,GAAMhjC,OAAO,GAAIijC,GAAMjjC,OAAO,GAAIgmC,GAAMhmC,OAAO,GAEhEimC,GAAMjmC,OAAO,GAAIkmC,GAAMlmC,OAAO,GAAImmC,GAAMnmC,OAAO,GAK/C,SAAUomC,GAAItoC,EAAW/F,GAC7B,MAAMgjB,EAASjd,EAAI/F,EACnB,OAAOgjB,GAAUgrB,GAAMhrB,EAAShjB,EAAIgjB,CACtC,CAQM,SAAUlmB,GAAInB,EAAa2yC,EAAeC,GAC9C,GAAIA,GAAUP,IAAOM,EAAQN,GAAK,MAAM,IAAIzyC,MAAM,6BAClD,GAAIgzC,IAAWtD,GAAK,OAAO+C,GAC3B,IAAI7pC,EAAM8mC,GACV,KAAOqD,EAAQN,IACTM,EAAQrD,KAAK9mC,EAAOA,EAAMxI,EAAO4yC,GACrC5yC,EAAOA,EAAMA,EAAO4yC,EACpBD,IAAUrD,GAEZ,OAAO9mC,CACT,CAGM,SAAUqqC,GAAKxoC,EAAWsoC,EAAeC,GAC7C,IAAIpqC,EAAM6B,EACV,KAAOsoC,KAAUN,IACf7pC,GAAOA,EACPA,GAAOoqC,EAET,OAAOpqC,CACT,CAGM,SAAUsqC,GAAOC,EAAgBH,GACrC,GAAIG,IAAWV,IAAOO,GAAUP,GAC9B,MAAM,IAAIzyC,MAAM,6CAA6CmzC,SAAcH,KAI7E,IAAIxoC,EAAIsoC,GAAIK,EAAQH,GAChBvuC,EAAIuuC,EAEJvoC,EAAIgoC,GAAczW,EAAI0T,GAC1B,KAAOllC,IAAMioC,IAAK,CAEhB,MACMrrB,EAAI3iB,EAAI+F,EACR3J,EAAI4J,EAAIuxB,GAFJv3B,EAAI+F,GAKd/F,EAAI+F,EAAGA,EAAI4c,EAAG3c,EAAIuxB,EAAUA,EAAIn7B,CAClC,CAEA,GADY4D,IACAirC,GAAK,MAAM,IAAI1vC,MAAM,0BACjC,OAAO8yC,GAAIroC,EAAGuoC,EAChB,CAkEM,SAAUI,GAAOC,GAMrB,GAAIA,EAAIV,KAAQD,GAAK,CAKnB,MAAMY,GAAUD,EAAI3D,IAAOiD,GAC3B,OAAO,SAAsBZ,EAAexrC,GAC1C,MAAMm9B,EAAOqO,EAAGxwC,IAAIgF,EAAG+sC,GAEvB,IAAKvB,EAAGwB,IAAIxB,EAAGyB,IAAI9P,GAAOn9B,GAAI,MAAM,IAAIvG,MAAM,2BAC9C,OAAO0jC,EAEX,CAGA,GAAI2P,EAAIR,KAAQD,GAAK,CACnB,MAAM3X,GAAMoY,EAAIT,IAAOC,GACvB,OAAO,SAAsBd,EAAexrC,GAC1C,MAAMsqC,EAAKkB,EAAG1kC,IAAI9G,EAAGopC,IACfp3B,EAAIw5B,EAAGxwC,IAAIsvC,EAAI5V,GACfwY,EAAK1B,EAAG1kC,IAAI9G,EAAGgS,GACf5Z,EAAIozC,EAAG1kC,IAAI0kC,EAAG1kC,IAAIomC,EAAI9D,IAAMp3B,GAC5BmrB,EAAOqO,EAAG1kC,IAAIomC,EAAI1B,EAAGxhC,IAAI5R,EAAGozC,EAAG2B,MACrC,IAAK3B,EAAGwB,IAAIxB,EAAGyB,IAAI9P,GAAOn9B,GAAI,MAAM,IAAIvG,MAAM,2BAC9C,OAAO0jC,EAEX,CA0BA,OAlHI,SAAwB2P,GAM5B,MAAMM,GAAaN,EAAI3D,IAAOC,GAE9B,IAAIiE,EAAWC,EAAWC,EAG1B,IAAKF,EAAIP,EAAI3D,GAAKmE,EAAI,EAAGD,EAAIjE,KAAQ8C,GAAKmB,GAAKjE,GAAKkE,KAGpD,IAAKC,EAAInE,GAAKmE,EAAIT,GAAK9xC,GAAIuyC,EAAGH,EAAWN,KAAOA,EAAI3D,GAAKoE,KAGzD,GAAU,IAAND,EAAS,CACX,MAAMP,GAAUD,EAAI3D,IAAOiD,GAC3B,OAAO,SAAwBZ,EAAexrC,GAC5C,MAAMm9B,EAAOqO,EAAGxwC,IAAIgF,EAAG+sC,GACvB,IAAKvB,EAAGwB,IAAIxB,EAAGyB,IAAI9P,GAAOn9B,GAAI,MAAM,IAAIvG,MAAM,2BAC9C,OAAO0jC,EAEX,CAGA,MAAMqQ,GAAUH,EAAIlE,IAAOC,GAC3B,OAAO,SAAwBoC,EAAexrC,GAE5C,GAAIwrC,EAAGxwC,IAAIgF,EAAGotC,KAAe5B,EAAGiC,IAAIjC,EAAG2B,KAAM,MAAM,IAAI1zC,MAAM,2BAC7D,IAAIonB,EAAIysB,EAEJI,EAAIlC,EAAGxwC,IAAIwwC,EAAG1kC,IAAI0kC,EAAG2B,IAAKI,GAAIF,GAC9BnpC,EAAIsnC,EAAGxwC,IAAIgF,EAAGwtC,GACdtvC,EAAIstC,EAAGxwC,IAAIgF,EAAGqtC,GAElB,MAAQ7B,EAAGwB,IAAI9uC,EAAGstC,EAAG2B,MAAM,CACzB,GAAI3B,EAAGwB,IAAI9uC,EAAGstC,EAAGmC,MAAO,OAAOnC,EAAGmC,KAElC,IAAIrzC,EAAI,EACR,IAAK,IAAIszC,EAAKpC,EAAGyB,IAAI/uC,GAAI5D,EAAIumB,IACvB2qB,EAAGwB,IAAIY,EAAIpC,EAAG2B,KADY7yC,IAE9BszC,EAAKpC,EAAGyB,IAAIW,GAGd,MAAMC,EAAKrC,EAAGxwC,IAAI0yC,EAAGvE,IAAOhjC,OAAO0a,EAAIvmB,EAAI,IAC3CozC,EAAIlC,EAAGyB,IAAIY,GACX3pC,EAAIsnC,EAAG1kC,IAAI5C,EAAG2pC,GACd3vC,EAAIstC,EAAG1kC,IAAI5I,EAAGwvC,GACd7sB,EAAIvmB,CACN,CACA,OAAO4J,EAEX,CA4DS4pC,CAAchB,EACvB,CAxLY3mC,OAAO,GAAWA,OAAO,IA2L9B,MA6CD4nC,GAAe,CACnB,SAAU,UAAW,MAAO,MAAO,MAAO,OAAQ,MAClD,MAAO,MAAO,MAAO,MAAO,MAAO,MACnC,OAAQ,OAAQ,OAAQ,QA2EpB,SAAUC,GAAQhuC,EAAWiuC,GAEjC,MAAMC,OAA6B5vC,IAAf2vC,EAA2BA,EAAajuC,EAAEhB,SAAS,GAAGnG,OAE1E,MAAO,CAAEo1C,WAAYC,EAAaC,YADdpzC,KAAKqzC,KAAKF,EAAc,GAE9C;;ACvUA,MAAMhC,GAAM/lC,OAAO,GACbgjC,GAAMhjC,OAAO,GAgLb,SAAUkoC,GAAqBC,GAgBnC,ODmEO5C,GClFO4C,EAAM9C,GD8EPuC,GAAah8B,QAAO,CAAC2N,EAAKxf,KACrCwf,EAAIxf,GAAO,WACJwf,IARO,CACd6uB,MAAO,SACPC,KAAM,SACNC,MAAO,gBACPC,KAAM,mBC3ERhD,GACE4C,EACA,CACEtuC,EAAG,SACHkqB,EAAG,SACHykB,GAAI,QACJC,GAAI,SAEN,CACEX,WAAY,gBACZE,YAAa,kBAIV5xC,OAAOsyC,OAAO,IAChBb,GAAQM,EAAMtuC,EAAGsuC,EAAML,eACvBK,EACEhyB,EAAGgyB,EAAM9C,GAAG+C,OAErB;sECjMA,MAAMrC,GAAM/lC,OAAO,GAAIgjC,GAAMhjC,OAAO,GAAIijC,GAAMjjC,OAAO,GAAImmC,GAAMnmC,OAAO,GAgBhE2oC,GAAiB,CAAEC,QAAQ,GAyE3B,SAAUC,GAAeC,GAC7B,MAAMC,EAxER,SAAsBZ,GACpB,MAAMa,EAAOd,GAAcC,GAiB3B,OAhBAc,GACEd,EACA,CACE7C,KAAM,WACNxnC,EAAG,SACHtJ,EAAG,SACH00C,YAAa,YAEf,CACEC,kBAAmB,WACnBjqB,OAAQ,WACRkqB,QAAS,WACTC,WAAY,aAITjzC,OAAOsyC,OAAO,IAAKM,GAC5B,CAqDgBM,CAAaR,IACrBzD,GACJA,EACAxrC,EAAG0vC,EACHC,QAASA,EACTlE,KAAMmE,EAAKP,YACXA,EAAWlB,YACXA,EACAjkB,EAAG2lB,GACDX,EACEV,EAAOpF,IAAQjjC,OAAqB,EAAdgoC,GAAmBhF,GACzC2G,EAAOtE,EAAGn8B,OAGVkgC,EACJL,EAAMK,SAAO,EACX9Z,EAAWzjB,KACX,IACE,MAAO,CAAE2kB,SAAS,EAAM17B,MAAOuwC,EAAGuE,KAAKta,EAAI+V,EAAGwE,IAAIh+B,IACnD,CAAC,MAAO3X,GACP,MAAO,CAAEs8B,SAAS,EAAO17B,MAAOixC,GAClC,CACD,GACGoD,EAAoBJ,EAAMI,mBAAiB,CAAMzpC,GAAsBA,GACvEwf,EACJ6pB,EAAM7pB,QACL,EAAC3mB,EAAkBuxC,EAAiBC,KACnC,GAAID,EAAIp3C,QAAUq3C,EAAQ,MAAM,IAAIz2C,MAAM,uCAC1C,OAAOiF,CACR,GACGyxC,EAASnwC,GAA2B,iBAANA,GAAkBksC,GAAMlsC,EACtDowC,EAAUA,CAACpwC,EAAW8E,IAAgBqrC,EAAMnwC,IAAMmwC,EAAMrrC,IAAQ9E,EAAI8E,EACpEurC,EAAgBrwC,GAAcA,IAAMksC,IAAOkE,EAAQpwC,EAAGwuC,GAC5D,SAAS8B,EAActwC,EAAW8E,GAEhC,GAAIsrC,EAAQpwC,EAAG8E,GAAM,OAAO9E,EAC5B,MAAM,IAAIvG,MAAM,2BAA2BqL,iBAAmB9E,KAAKA,IACrE,CACA,SAASuwC,EAAUvwC,GAEjB,OAAOA,IAAMksC,GAAMlsC,EAAIswC,EAActwC,EAAG0vC,EAC1C,CACA,MAAMc,EAAmB,IAAIhxB,IAC7B,SAASixB,EAAQxQ,GACf,KAAMA,aAAiByQ,GAAQ,MAAM,IAAIj3C,MAAM,yBACjD,CAGA,MAAMi3C,EAIJtlC,WAAAA,CACWulC,EACAC,EACAC,EACAC,GAET,GALStxC,KAAAmxC,GAAAA,EACAnxC,KAAAoxC,GAAAA,EACApxC,KAAAqxC,GAAAA,EACArxC,KAAAsxC,GAAAA,GAEJT,EAAaM,GAAK,MAAM,IAAIl3C,MAAM,cACvC,IAAK42C,EAAaO,GAAK,MAAM,IAAIn3C,MAAM,cACvC,IAAK42C,EAAaQ,GAAK,MAAM,IAAIp3C,MAAM,cACvC,IAAK42C,EAAaS,GAAK,MAAM,IAAIr3C,MAAM,aACzC,CAEA,KAAIyK,GACF,OAAO1E,KAAKuxC,WAAW7sC,CACzB,CACA,KAAIC,GACF,OAAO3E,KAAKuxC,WAAW5sC,CACzB,CAEA,iBAAO6sC,CAAW10B,GAChB,GAAIA,aAAao0B,EAAO,MAAM,IAAIj3C,MAAM,8BACxC,MAAMyK,EAAEA,EAACC,EAAEA,GAAMmY,GAAK,CAAA,EACtB,IAAK+zB,EAAansC,KAAOmsC,EAAalsC,GAAI,MAAM,IAAI1K,MAAM,wBAC1D,OAAO,IAAIi3C,EAAMxsC,EAAGC,EAAGglC,GAAK2G,EAAK5rC,EAAIC,GACvC,CACA,iBAAO8sC,CAAWC,GAChB,MAAMC,EAAQ3F,EAAG4F,YAAYF,EAAOxxB,KAAKpD,GAAMA,EAAEu0B,MACjD,OAAOK,EAAOxxB,KAAI,CAACpD,EAAGlkB,IAAMkkB,EAAEy0B,SAASI,EAAM/4C,MAAKsnB,IAAIgxB,EAAMM,WAC9D,CAQAK,cAAAA,CAAeC,GACb9xC,KAAK+xC,aAAeD,EACpBd,EAAiBgB,OAAOhyC,KAC1B,CAGAiyC,cAAAA,GACE,MAAMxtC,EAAEA,EAACtJ,EAAEA,GAAMu0C,EACjB,GAAI1vC,KAAKkyC,MAAO,MAAM,IAAIj4C,MAAM,mBAGhC,MAAQk3C,GAAIgB,EAAGf,GAAIgB,EAAGf,GAAItD,EAAGuD,GAAIzY,GAAM74B,KACjCqyC,EAAK/B,EAAK6B,EAAIA,GACdG,EAAKhC,EAAK8B,EAAIA,GACdG,EAAKjC,EAAKvC,EAAIA,GACdyE,EAAKlC,EAAKiC,EAAKA,GACfE,EAAMnC,EAAK+B,EAAK5tC,GAGtB,GAFa6rC,EAAKiC,EAAKjC,EAAKmC,EAAMH,MACpBhC,EAAKkC,EAAKlC,EAAKn1C,EAAIm1C,EAAK+B,EAAKC,KACvB,MAAM,IAAIr4C,MAAM,yCAIpC,GAFWq2C,EAAK6B,EAAIC,KACT9B,EAAKvC,EAAIlV,GACL,MAAM,IAAI5+B,MAAM,wCACjC,CAGAmL,MAAAA,CAAOq7B,GACLwQ,EAAQxQ,GACR,MAAQ0Q,GAAIuB,EAAItB,GAAIuB,EAAItB,GAAIuB,GAAO5yC,MAC3BmxC,GAAIkB,EAAIjB,GAAIkB,EAAIjB,GAAIkB,GAAO9R,EAC7BoS,EAAOvC,EAAKoC,EAAKH,GACjBO,EAAOxC,EAAK+B,EAAKO,GACjBG,EAAOzC,EAAKqC,EAAKJ,GACjBS,EAAO1C,EAAKgC,EAAKM,GACvB,OAAOC,IAASC,GAAQC,IAASC,CACnC,CAEUd,GAAAA,GACR,OAAOlyC,KAAKoF,OAAO8rC,EAAM/C,KAC3B,CAEA8E,MAAAA,GAEE,OAAO,IAAI/B,EAAMZ,GAAMtwC,KAAKmxC,IAAKnxC,KAAKoxC,GAAIpxC,KAAKqxC,GAAIf,GAAMtwC,KAAKsxC,IAChE,CAKA4B,MAAAA,GACE,MAAMzuC,EAAEA,GAAMirC,GACNyB,GAAIuB,EAAItB,GAAIuB,EAAItB,GAAIuB,GAAO5yC,KAC7BurB,EAAI+kB,EAAKoC,EAAKA,GACdlnB,EAAI8kB,EAAKqC,EAAKA,GACdlnB,EAAI6kB,EAAK1G,GAAM0G,EAAKsC,EAAKA,IACzBlnB,EAAI4kB,EAAK7rC,EAAI8mB,GACb4nB,EAAOT,EAAKC,EACZnnC,EAAI8kC,EAAKA,EAAK6C,EAAOA,GAAQ5nB,EAAIC,GACjCI,EAAIF,EAAIF,EACRG,EAAIC,EAAIH,EACRI,EAAIH,EAAIF,EACR4nB,EAAK9C,EAAK9kC,EAAImgB,GACd0nB,EAAK/C,EAAK1kB,EAAIC,GACdynB,EAAKhD,EAAK9kC,EAAIqgB,GACd0nB,EAAKjD,EAAK3kB,EAAIC,GACpB,OAAO,IAAIslB,EAAMkC,EAAIC,EAAIE,EAAID,EAC/B,CAKA3xB,GAAAA,CAAI8e,GACFwQ,EAAQxQ,GACR,MAAMh8B,EAAEA,EAACtJ,EAAEA,GAAMu0C,GACTyB,GAAIuB,EAAItB,GAAIuB,EAAItB,GAAIuB,EAAItB,GAAInlB,GAAOnsB,MACnCmxC,GAAIkB,EAAIjB,GAAIkB,EAAIjB,GAAIkB,EAAIjB,GAAIllB,GAAOqU,EAK3C,GAAIh8B,IAAMkC,QAAQ,GAAI,CACpB,MAAM4kB,EAAI+kB,GAAMqC,EAAKD,IAAOJ,EAAKD,IAC3B7mB,EAAI8kB,GAAMqC,EAAKD,IAAOJ,EAAKD,IAC3B1mB,EAAI2kB,EAAK9kB,EAAID,GACnB,GAAII,IAAM+gB,GAAK,OAAO1sC,KAAKkzC,SAC3B,MAAMznB,EAAI6kB,EAAKsC,EAAKhJ,GAAMxd,GACpBV,EAAI4kB,EAAKnkB,EAAKyd,GAAM2I,GACpB/mC,EAAIkgB,EAAID,EACRG,EAAIJ,EAAID,EACRM,EAAIH,EAAID,EACR2nB,EAAK9C,EAAK9kC,EAAImgB,GACd0nB,EAAK/C,EAAK1kB,EAAIC,GACdynB,EAAKhD,EAAK9kC,EAAIqgB,GACd0nB,EAAKjD,EAAK3kB,EAAIC,GACpB,OAAO,IAAIslB,EAAMkC,EAAIC,EAAIE,EAAID,EAC/B,CACA,MAAM/nB,EAAI+kB,EAAKoC,EAAKL,GACd7mB,EAAI8kB,EAAKqC,EAAKL,GACd7mB,EAAI6kB,EAAKnkB,EAAKhxB,EAAIixB,GAClBV,EAAI4kB,EAAKsC,EAAKL,GACd/mC,EAAI8kC,GAAMoC,EAAKC,IAAON,EAAKC,GAAM/mB,EAAIC,GACrCG,EAAID,EAAID,EACRG,EAAIF,EAAID,EACRI,EAAIykB,EAAK9kB,EAAI/mB,EAAI8mB,GACjB6nB,EAAK9C,EAAK9kC,EAAImgB,GACd0nB,EAAK/C,EAAK1kB,EAAIC,GACdynB,EAAKhD,EAAK9kC,EAAIqgB,GACd0nB,EAAKjD,EAAK3kB,EAAIC,GAEpB,OAAO,IAAIslB,EAAMkC,EAAIC,EAAIE,EAAID,EAC/B,CAEAE,QAAAA,CAAS/S,GACP,OAAOzgC,KAAK2hB,IAAI8e,EAAMwS,SACxB,CAEQQ,IAAAA,CAAKjzC,GACX,OAAOkzC,EAAKC,WAAW3zC,KAAMgxC,EAAkBxwC,EAAG0wC,EAAMO,WAC1D,CAGAmC,QAAAA,CAASC,GACP,MAAM/2B,EAAEA,EAACg3B,EAAEA,GAAM9zC,KAAKyzC,KAAK3C,EAAc+C,EAAQ3D,IACjD,OAAOgB,EAAMO,WAAW,CAAC30B,EAAGg3B,IAAI,EAClC,CAMAC,cAAAA,CAAeF,GACb,IAAIrzC,EAAIuwC,EAAU8C,GAClB,OAAIrzC,IAAMksC,GAAYsH,EAClBh0C,KAAKoF,OAAO4uC,IAAMxzC,IAAMmpC,GAAY3pC,KACpCA,KAAKoF,OAAOwmB,GAAW5rB,KAAKyzC,KAAKjzC,GAAGsc,EACjC42B,EAAKO,aAAaj0C,KAAMQ,EACjC,CAMA0zC,YAAAA,GACE,OAAOl0C,KAAK+zC,eAAe1D,GAAU6B,KACvC,CAIAiC,aAAAA,GACE,OAAOT,EAAKO,aAAaj0C,KAAMkwC,GAAagC,KAC9C,CAIAX,QAAAA,CAAS6C,GACP,MAAQjD,GAAIzsC,EAAG0sC,GAAIzsC,EAAG0sC,GAAIgD,GAAMr0C,KAC1BkyC,EAAMlyC,KAAKkyC,MACP,MAANkC,IAAYA,EAAKlC,EAAMpF,GAAOd,EAAGwE,IAAI6D,IACzC,MAAMC,EAAKhE,EAAK5rC,EAAI0vC,GACdG,EAAKjE,EAAK3rC,EAAIyvC,GACdI,EAAKlE,EAAK+D,EAAID,GACpB,GAAIlC,EAAK,MAAO,CAAExtC,EAAGgoC,GAAK/nC,EAAGglC,IAC7B,GAAI6K,IAAO7K,GAAK,MAAM,IAAI1vC,MAAM,oBAChC,MAAO,CAAEyK,EAAG4vC,EAAI3vC,EAAG4vC,EACrB,CAEAE,aAAAA,GACE,MAAQ/pB,EAAG2lB,GAAaX,EACxB,OAAIW,IAAa1G,GAAY3pC,KACtBA,KAAK+zC,eAAe1D,EAC7B,CAIA,cAAOqE,CAAQ99B,EAAU24B,GAAS,GAChC,MAAMp0C,EAAEA,EAACsJ,EAAEA,GAAMirC,EACXz2C,EAAM+yC,EAAGiD,MAET0F,GADN/9B,EAAMs0B,GAAY,WAAYt0B,EAAK3d,IAChB4E,QACb+2C,EAAWh+B,EAAI3d,EAAM,GAC3B07C,EAAO17C,EAAM,IAAgB,IAAX27C,EAClB,MAAMjwC,EAAIirC,GAAmB+E,GACzBhwC,IAAM+nC,IAIIoE,EAAcnsC,EAAtB4qC,EAAyBP,EACPhD,EAAG+C,OAK3B,MAAM8F,EAAKvE,EAAK3rC,EAAIA,GACdsxB,EAAIqa,EAAKuE,EAAKlL,IACdn3B,EAAI89B,EAAKn1C,EAAI05C,EAAKpwC,GACxB,IAAI0yB,QAAEA,EAAS17B,MAAOiJ,GAAMqrC,EAAQ9Z,EAAGzjB,GACvC,IAAK2kB,EAAS,MAAM,IAAIl9B,MAAM,uCAC9B,MAAM66C,GAAUpwC,EAAIilC,MAASA,GACvBoL,EAAsC,IAAV,IAAXH,GACvB,IAAKrF,GAAU7qC,IAAMgoC,IAAOqI,EAE1B,MAAM,IAAI96C,MAAM,gCAElB,OADI86C,IAAkBD,IAAQpwC,EAAI4rC,GAAM5rC,IACjCwsC,EAAMM,WAAW,CAAE9sC,IAAGC,KAC/B,CACA,qBAAOqwC,CAAeC,GACpB,OAAOC,EAAqBD,GAASE,KACvC,CACAC,UAAAA,GACE,MAAM1wC,EAAEA,EAACC,EAAEA,GAAM3E,KAAKuxC,WAChBlrC,EAAQupC,GAAmBjrC,EAAGqnC,EAAGiD,OAEvC,OADA5oC,EAAMA,EAAMhN,OAAS,IAAMqL,EAAIilC,GAAM,IAAO,EACrCtjC,CACT,CACAgvC,KAAAA,GACE,OAAOzF,GAAc5vC,KAAKo1C,aAC5B,EAhQgBlE,EAAA1U,KAAO,IAAI0U,EAAMxB,EAAMP,GAAIO,EAAMN,GAAIzF,GAAK2G,EAAKZ,EAAMP,GAAKO,EAAMN,KAChE8B,EAAA/C,KAAO,IAAI+C,EAAMxE,GAAK/C,GAAKA,GAAK+C,IAiQlD,MAAQlQ,KAAM5Q,EAAGuiB,KAAM6F,GAAM9C,EACvBwC,EDjXF,SAAmCh4C,EAAwB0S,GAC/D,MAAMknC,EAAkBA,CAACC,EAAoBC,KAC3C,MAAMvH,EAAMuH,EAAKvC,SACjB,OAAOsC,EAAYtH,EAAMuH,CAAI,EAEzB7F,EAAQ8F,IAGL,CAAEC,QAFOn6C,KAAKqzC,KAAKxgC,EAAOqnC,GAAK,EAEpB3D,WADC,IAAM2D,EAAI,KAG/B,MAAO,CACLH,kBAEArB,YAAAA,CAAa0B,EAAQn1C,GACnB,IAAIsc,EAAIphB,EAAEyyC,KACNhzC,EAAOw6C,EACX,KAAOn1C,EAAIksC,IACLlsC,EAAImpC,KAAK7sB,EAAIA,EAAE6E,IAAIxmB,IACvBA,EAAIA,EAAE+3C,SACN1yC,IAAMmpC,GAER,OAAO7sB,CACR,EAYD84B,gBAAAA,CAAiBD,EAAQF,GACvB,MAAMC,QAAEA,EAAO5D,WAAEA,GAAenC,EAAK8F,GAC/B/D,EAAc,GACpB,IAAI50B,EAAO64B,EACPzkB,EAAOpU,EACX,IAAK,IAAI0W,EAAS,EAAGA,EAASkiB,EAASliB,IAAU,CAC/CtC,EAAOpU,EACP40B,EAAOh4C,KAAKw3B,GAEZ,IAAK,IAAIt4B,EAAI,EAAGA,EAAIk5C,EAAYl5C,IAC9Bs4B,EAAOA,EAAKvP,IAAI7E,GAChB40B,EAAOh4C,KAAKw3B,GAEdpU,EAAIoU,EAAKgiB,QACX,CACA,OAAOxB,CACR,EASD+B,IAAAA,CAAKgC,EAAWI,EAAkBr1C,GAGhC,MAAMk1C,QAAEA,EAAO5D,WAAEA,GAAenC,EAAK8F,GAErC,IAAI34B,EAAIphB,EAAEyyC,KACN2F,EAAIp4C,EAAE8gC,KAEV,MAAMsZ,EAAOnvC,OAAO,GAAK8uC,EAAI,GACvBM,EAAY,GAAKN,EACjBO,EAAUrvC,OAAO8uC,GAEvB,IAAK,IAAIjiB,EAAS,EAAGA,EAASkiB,EAASliB,IAAU,CAC/C,MAAM/4B,EAAS+4B,EAASse,EAExB,IAAImE,EAAQx0C,OAAOjB,EAAIs1C,GAGvBt1C,IAAMw1C,EAIFC,EAAQnE,IACVmE,GAASF,EACTv1C,GAAKmpC,IAWP,MAAMuM,EAAUz7C,EACV07C,EAAU17C,EAASc,KAAKK,IAAIq6C,GAAS,EACrCG,EAAQ5iB,EAAS,GAAM,EACvB6iB,EAAQJ,EAAQ,EACR,IAAVA,EAEFnC,EAAIA,EAAEnyB,IAAI2zB,EAAgBc,EAAOP,EAAYK,KAE7Cp5B,EAAIA,EAAE6E,IAAI2zB,EAAgBe,EAAOR,EAAYM,IAEjD,CAMA,MAAO,CAAEr5B,IAAGg3B,IACb,EAEDH,UAAAA,CAAWrG,EAAMgJ,EAA6B91C,EAAW+1C,GAEvD,MAAMd,EAAYnI,EAAEyE,cAAgB,EAEpC,IAAIyE,EAAOF,EAAenyC,IAAImpC,GAO9B,OANKkJ,IACHA,EAAOx2C,KAAK41C,iBAAiBtI,EAAGmI,GACtB,IAANA,GACFa,EAAevxC,IAAIuoC,EAAGiJ,EAAUC,KAG7Bx2C,KAAKyzC,KAAKgC,EAAGe,EAAMh2C,EAC5B,EAEJ,CCkPeizC,CAAKvC,EAAqB,EAAdvC,GAEzB,SAAS8H,EAAKhyC,GACZ,OAAOsoC,GAAItoC,EAAGyrC,EAChB,CAEA,SAASwG,EAAQzK,GACf,OAAOwK,EAAK7G,GAAmB3D,GACjC,CAGA,SAASiJ,EAAqBt3B,GAC5B,MAAM3kB,EAAM01C,EACZ/wB,EAAMstB,GAAY,cAAettB,EAAK3kB,GAGtC,MAAM60B,EAASod,GAAY,qBAAsBkF,EAAMxyB,GAAM,EAAI3kB,GAC3D09C,EAAO7G,EAAkBhiB,EAAOjwB,MAAM,EAAG5E,IACzC8oC,EAASjU,EAAOjwB,MAAM5E,EAAK,EAAIA,GAC/B46C,EAAS6C,EAAQC,GACjBxB,EAAQvpB,EAAEgoB,SAASC,GACnB+C,EAAazB,EAAMC,aACzB,MAAO,CAAEuB,OAAM5U,SAAQ8R,SAAQsB,QAAOyB,aACxC,CAQA,SAASC,EAAmBC,EAAe,IAAIh9C,cAAiBi9C,GAC9D,MAAMrqC,EAAMkjC,MAAkBmH,GAC9B,OAAOL,EAAQtG,EAAMvqB,EAAOnZ,EAAKw+B,GAAY,UAAW4L,KAAY3G,IACtE,CAgBA,MAAM6G,EAAkD1H,GA2BxD1jB,EAAEimB,eAAe,GAoBjB,MAAO,CACLnC,QACAuH,aAzEF,SAAsBhC,GACpB,OAAOC,EAAqBD,GAAS2B,UACvC,EAwEEM,KA/DF,SAAcxqC,EAAUuoC,EAAckC,EAA6B,CAAA,GACjEzqC,EAAMw+B,GAAY,UAAWx+B,GACzByjC,IAASzjC,EAAMyjC,EAAQzjC,IAC3B,MAAMq1B,OAAEA,EAAM8R,OAAEA,EAAM+C,WAAEA,GAAe1B,EAAqBD,GACtD5zB,EAAIw1B,EAAmBM,EAAQL,QAAS/U,EAAQr1B,GAChD0qC,EAAIxrB,EAAEgoB,SAASvyB,GAAG+zB,aAElBh6C,EAAIq7C,EAAKp1B,EADLw1B,EAAmBM,EAAQL,QAASM,EAAGR,EAAYlqC,GACtCmnC,GAGvB,OAFA9C,EAAU31C,GAEH8vC,GAAY,SADP0E,GAAewH,EAAGxH,GAAmBx0C,EAAG4wC,EAAGiD,QACP,EAAdN,EACpC,EAqDE0I,OAlDF,SAAgBC,EAAU5qC,EAAU+K,EAAgB0/B,EAAUH,GAC5D,MAAMF,QAAEA,EAAOvH,OAAEA,GAAW4H,EACtBl+C,EAAM+yC,EAAGiD,MACfqI,EAAMpM,GAAY,YAAaoM,EAAK,EAAIr+C,GACxCyT,EAAMw+B,GAAY,UAAWx+B,GACzByjC,IAASzjC,EAAMyjC,EAAQzjC,IAE3B,MAAMtR,EAAIw0C,GAAmB0H,EAAIz5C,MAAM5E,EAAK,EAAIA,IAGhD,IAAIsyB,EAAG6rB,EAAGG,EACV,IACEhsB,EAAI2lB,EAAMwD,QAAQj9B,EAAW83B,GAC7B6H,EAAIlG,EAAMwD,QAAQ4C,EAAIz5C,MAAM,EAAG5E,GAAMs2C,GACrCgI,EAAK3rB,EAAEmoB,eAAe34C,EACvB,CAAC,MAAO4I,GACP,OAAO,CACT,CACA,IAAKurC,GAAUhkB,EAAE2oB,eAAgB,OAAO,EAExC,MAAMpc,EAAI+e,EAAmBC,EAASM,EAAEhC,aAAc7pB,EAAE6pB,aAAc1oC,GAGtE,OAFY0qC,EAAEz1B,IAAI4J,EAAEwoB,eAAejc,IAExB0b,SAAS+D,GAAI9C,gBAAgBrvC,OAAO8rC,EAAM/C,KACvD,EA2BEqJ,cAAetG,EACfjyB,MAxBY,CACZi2B,uBAEAuC,iBAAkBA,IAAkB5H,EAAY7D,EAAGiD,OAQnDyI,WAAUA,CAAC5F,EAAa,EAAGqD,EAAQjE,EAAM1U,QACvC2Y,EAAMtD,eAAeC,GACrBqD,EAAMvB,SAASjtC,OAAO,IACfwuC,IAYb;sECxeA,MAAMwC,GAAYhxC,OAChB,iFAGIixC,GAAkBjxC,OACtB,iFAIUA,OAAO,GAAIgjC,MAAAA,GAAMhjC,OAAO,GAAIijC,GAAMjjC,OAAO,GAAIkmC,GAAMlmC,OAAO,GAEhEkxC,GAAOlxC,OAAO,IAAKmxC,GAAOnxC,OAAO,IAAKoxC,GAAOpxC,OAAO,IAAKqxC,GAAOrxC,OAAO,IA+D7E,MAAMqlC,GHwPA,SACJ+C,EACAkJ,EACAv9C,GAAO,EACPw9C,EAAiC,IAEjC,GAAInJ,GAASrC,GAAK,MAAM,IAAIzyC,MAAM,iCAAiC80C,KACnE,MAAQN,WAAYS,EAAMP,YAAaM,GAAUT,GAAQO,EAAOkJ,GAChE,GAAIhJ,EAAQ,KAAM,MAAM,IAAIh1C,MAAM,mDAClC,MAAMk+C,EAAQ9K,GAAO0B,GACf+E,EAAuB/2C,OAAOsyC,OAAO,CACzCN,QACAG,OACAD,QACAD,KAAMzD,GAAQ2D,GACdf,KAAMzB,GACNiB,IAAKhE,GACL95B,OAASxV,GAAQ0yC,GAAI1yC,EAAK00C,GAC1B5X,QAAU98B,IACR,GAAmB,iBAARA,EACT,MAAM,IAAIJ,MAAM,sDAAsDI,GACxE,OAAOqyC,IAAOryC,GAAOA,EAAM00C,CAAK,EAElCmD,IAAM73C,GAAQA,IAAQqyC,GACtB0L,MAAQ/9C,IAASA,EAAMsvC,MAASA,GAChCsE,IAAM5zC,GAAQ0yC,IAAK1yC,EAAK00C,GACxBvB,IAAKA,CAAC6K,EAAKC,IAAQD,IAAQC,EAE3B7K,IAAMpzC,GAAQ0yC,GAAI1yC,EAAMA,EAAK00C,GAC7BptB,IAAKA,CAAC02B,EAAKC,IAAQvL,GAAIsL,EAAMC,EAAKvJ,GAClCvkC,IAAKA,CAAC6tC,EAAKC,IAAQvL,GAAIsL,EAAMC,EAAKvJ,GAClCznC,IAAKA,CAAC+wC,EAAKC,IAAQvL,GAAIsL,EAAMC,EAAKvJ,GAClCvzC,IAAKA,CAACnB,EAAK2yC,IAzGT,SAAmB8G,EAAcz5C,EAAQ2yC,GAG7C,GAAIA,EAAQN,GAAK,MAAM,IAAIzyC,MAAM,sBACjC,GAAI+yC,IAAUN,GAAK,OAAOoH,EAAEnG,IAC5B,GAAIX,IAAUrD,GAAK,OAAOtvC,EAC1B,IAAIyiB,EAAIg3B,EAAEnG,IACNxyC,EAAId,EACR,KAAO2yC,EAAQN,IACTM,EAAQrD,KAAK7sB,EAAIg3B,EAAExsC,IAAIwV,EAAG3hB,IAC9BA,EAAI24C,EAAErG,IAAItyC,GACV6xC,IAAUrD,GAEZ,OAAO7sB,CACT,CA2FyBy7B,CAAMzE,EAAGz5C,EAAK2yC,GACnCwL,IAAKA,CAACH,EAAKC,IAAQvL,GAAIsL,EAAMlL,GAAOmL,EAAKvJ,GAAQA,GAGjD0J,KAAOp+C,GAAQA,EAAMA,EACrBq+C,KAAMA,CAACL,EAAKC,IAAQD,EAAMC,EAC1BK,KAAMA,CAACN,EAAKC,IAAQD,EAAMC,EAC1BM,KAAMA,CAACP,EAAKC,IAAQD,EAAMC,EAE1B9H,IAAMn2C,GAAQ8yC,GAAO9yC,EAAK00C,GAC1BwB,KAAM2H,EAAM3H,MAAU/vC,CAAAA,GAAM23C,EAAMrE,EAAGtzC,IACrCoxC,YAAcpM,GAhGZ,SAA2BsO,EAAc+E,GAC7C,MAAMlgD,EAAM,IAAIoB,MAAM8+C,EAAKx/C,QAErBy/C,EAAiBD,EAAKtmC,QAAO,CAACK,EAAKvY,EAAKzB,IACxCk7C,EAAE5B,IAAI73C,GAAauY,GACvBja,EAAIC,GAAKga,EACFkhC,EAAExsC,IAAIsL,EAAKvY,KACjBy5C,EAAEnG,KAECoL,EAAWjF,EAAEtD,IAAIsI,GAOvB,OALAD,EAAKz3B,aAAY,CAACxO,EAAKvY,EAAKzB,IACtBk7C,EAAE5B,IAAI73C,GAAauY,GACvBja,EAAIC,GAAKk7C,EAAExsC,IAAIsL,EAAKja,EAAIC,IACjBk7C,EAAExsC,IAAIsL,EAAKvY,KACjB0+C,GACIpgD,CACT,CA+E0BqgD,CAAclF,EAAGtO,GAGvCyT,KAAMA,CAACx0C,EAAG/F,EAAGhD,IAAOA,EAAIgD,EAAI+F,EAC5B0kB,QAAU9uB,GAASK,EAAOuwC,GAAgB5wC,EAAK40C,GAASjE,GAAgB3wC,EAAK40C,GAC7EiK,UAAY7yC,IACV,GAAIA,EAAMhN,SAAW41C,EACnB,MAAM,IAAIh1C,MAAM,0BAA0Bg1C,UAAc5oC,EAAMhN,UAChE,OAAOqB,EAAOqwC,GAAgB1kC,GDzT9B,SAA0BA,GAC9B,OAAO2jC,GAAYD,GAAW1jC,GAChC,CCuT6C8yC,CAAgB9yC,EAAM,IAGjE,OAAOtJ,OAAOsyC,OAAOyE,EACvB,CG/SWsF,CAAMzB,QAAW74C,GAAW,GAEjCu6C,GAAkB,CAEtB50C,EAAGkC,QAAQ,GAGXxL,EAAGwL,OAAO,iFAEVqlC,MAGAxrC,EAAGmG,OAAO,gFAEV+jB,EAAG/jB,OAAO,GAEVwoC,GAAIxoC,OAAO,iFACXyoC,GAAIzoC,OAAO,iFACXslC,KAAMvC,GACNmG,YxBsHI,SAAsByJ,EAAc,IACxC,GAAIzwB,IAA4C,mBAA3BA,GAAO0wB,gBAC1B,OAAO1wB,GAAO0wB,gBAAgB,IAAIz/C,WAAWw/C,IAE/C,MAAM,IAAIr/C,MAAM,yCAClB,EwB1HE61C,kBA/DF,SAA2BzpC,GAQzB,OALAA,EAAM,IAAM,IAEZA,EAAM,KAAO,IAEbA,EAAM,KAAO,GACNA,CACT,EA0DE0pC,QAvDF,SAAiB9Z,EAAWzjB,GAC1B,MAAM86B,EAAIqK,GACJ6B,EAAKzM,GAAIv6B,EAAIA,EAAIA,EAAG86B,GAGpB9xC,EAnCR,SAA6BkJ,GAC3B,MAAM4oC,EAAIqK,GAEJ8B,EADM/0C,EAAIA,EAAK4oC,EACJ5oC,EAAK4oC,EAChBoM,EAAMxM,GAAKuM,EAAI7P,GAAK0D,GAAKmM,EAAMnM,EAC/BqM,EAAMzM,GAAKwM,EAAI/P,GAAK2D,GAAK5oC,EAAK4oC,EAC9BsM,EAAO1M,GAAKyM,EAAI9M,GAAKS,GAAKqM,EAAMrM,EAChCuM,EAAO3M,GAAK0M,EAAK/B,GAAMvK,GAAKsM,EAAOtM,EACnCwM,EAAO5M,GAAK2M,EAAK/B,GAAMxK,GAAKuM,EAAOvM,EACnCyM,EAAO7M,GAAK4M,EAAK/B,GAAMzK,GAAKwM,EAAOxM,EACnC0M,EAAQ9M,GAAK6M,EAAK/B,GAAM1K,GAAKyM,EAAOzM,EACpC2M,EAAQ/M,GAAK8M,EAAMhC,GAAM1K,GAAKyM,EAAOzM,EACrC4M,EAAQhN,GAAK+M,EAAMpC,GAAMvK,GAAKsM,EAAOtM,EAG3C,MAAO,CAAE6M,UAFUjN,GAAKgN,EAAMtQ,GAAK0D,GAAK5oC,EAAK4oC,EAEzBmM,KACtB,CAmBcW,CAAoBnkB,EAFrB8W,GAAIyM,EAAKA,EAAKhnC,EAAG86B,IAEY6M,UACxC,IAAIz1C,EAAIqoC,GAAI9W,EAAIujB,EAAKh+C,EAAK8xC,GAC1B,MAAM+M,EAAMtN,GAAIv6B,EAAI9N,EAAIA,EAAG4oC,GACrBgN,EAAQ51C,EACR61C,EAAQxN,GAAIroC,EAAIkzC,GAAiBtK,GACjCkN,EAAWH,IAAQpkB,EACnBwkB,EAAWJ,IAAQtN,IAAK9W,EAAGqX,GAC3BoN,EAASL,IAAQtN,IAAK9W,EAAI2hB,GAAiBtK,GAIjD,OAHIkN,IAAU91C,EAAI41C,IACdG,GAAYC,KAAQh2C,EAAI61C,IH0HgCxN,GGzH3CroC,EAAG4oC,GHyH2D3D,MAASA,KGzHhEjlC,EAAIqoC,IAAKroC,EAAG4oC,IAC7B,CAAEnW,QAASqjB,GAAYC,EAAUh/C,MAAOiJ,EACjD,GAyCai2C,GAA0BnL,GAAe6J,IAuEtD,MAAMuB,IAAW5O,GAAG+C,MAAQpoC,OAAO,IAAMA,OAAO;;AC/LzC,SAASk0C,GAAar6C,GACzB,IAAKiB,OAAOoqC,cAAcrrC,GACtB,MAAM,IAAIvG,MAAO,kBAAiBuG,IAC1C,CAQA,SAASs6C,MAASC,GACd,MAAMC,EAAMv2C,GAAMA,EAEZw2C,EAAOA,CAACx2C,EAAG/F,IAAOhD,GAAM+I,EAAE/F,EAAEhD,IAKlC,MAAO,CAAE+U,OAHMsqC,EAAK76B,KAAKxb,GAAMA,EAAE+L,SAAQ2Q,YAAY65B,EAAMD,GAG1CtqC,OADFqqC,EAAK76B,KAAKxb,GAAMA,EAAEgM,SAAQ6B,OAAO0oC,EAAMD,GAE1D,CAKA,SAAS5tC,GAASA,GACd,MAAO,CACHqD,OAASyqC,IACL,IAAKnhD,MAAMkF,QAAQi8C,IAAYA,EAAO7hD,QAA+B,iBAAd6hD,EAAO,GAC1D,MAAM,IAAIjhD,MAAM,uDACpB,OAAOihD,EAAOh7B,KAAKtnB,IAEf,GADAiiD,GAAajiD,GACTA,EAAI,GAAKA,GAAKwU,EAAS/T,OACvB,MAAM,IAAIY,MAAO,iCAAgCrB,gBAAgBwU,EAAS/T,WAC9E,OAAO+T,EAASxU,EAAE,GACpB,EAEN8X,OAASjE,IACL,IAAK1S,MAAMkF,QAAQwN,IAAWA,EAAMpT,QAA8B,iBAAboT,EAAM,GACvD,MAAM,IAAIxS,MAAM,oDACpB,OAAOwS,EAAMyT,KAAKi7B,IACd,GAAsB,iBAAXA,EACP,MAAM,IAAIlhD,MAAO,uCAAsCkhD,KAC3D,MAAMhoB,EAAQ/lB,EAASlT,QAAQihD,GAC/B,IAAe,IAAXhoB,EACA,MAAM,IAAIl5B,MAAO,oBAAmBkhD,gBAAqB/tC,KAC7D,OAAO+lB,CAAK,GACd,EAGd,CAIA,SAASt5B,GAAKuhD,EAAY,IACtB,GAAyB,iBAAdA,EACP,MAAM,IAAInhD,MAAM,mCACpB,MAAO,CACHwW,OAASnT,IACL,IAAKvD,MAAMkF,QAAQ3B,IAAUA,EAAKjE,QAA6B,iBAAZiE,EAAK,GACpD,MAAM,IAAIrD,MAAM,gDACpB,IAAK,IAAIrB,KAAK0E,EACV,GAAiB,iBAAN1E,EACP,MAAM,IAAIqB,MAAO,iCAAgCrB,KACzD,OAAO0E,EAAKzD,KAAKuhD,EAAU,EAE/B1qC,OAASsa,IACL,GAAkB,iBAAPA,EACP,MAAM,IAAI/wB,MAAM,sCACpB,OAAO+wB,EAAGhe,MAAMouC,EAAU,EAGtC,CAKA,SAASC,GAAQjtC,EAAMktC,EAAM,KAEzB,GADAT,GAAazsC,GACM,iBAARktC,EACP,MAAM,IAAIrhD,MAAM,gCACpB,MAAO,CACHwW,MAAAA,CAAOvR,GACH,IAAKnF,MAAMkF,QAAQC,IAAUA,EAAK7F,QAA6B,iBAAZ6F,EAAK,GACpD,MAAM,IAAIjF,MAAM,mDACpB,IAAK,IAAIrB,KAAKsG,EACV,GAAiB,iBAANtG,EACP,MAAM,IAAIqB,MAAO,oCAAmCrB,KAC5D,KAAQsG,EAAK7F,OAAS+U,EAAQ,GAC1BlP,EAAKxF,KAAK4hD,GACd,OAAOp8C,CACV,EACDwR,MAAAA,CAAOjE,GACH,IAAK1S,MAAMkF,QAAQwN,IAAWA,EAAMpT,QAA8B,iBAAboT,EAAM,GACvD,MAAM,IAAIxS,MAAM,mDACpB,IAAK,IAAIrB,KAAK6T,EACV,GAAiB,iBAAN7T,EACP,MAAM,IAAIqB,MAAO,oCAAmCrB,KAC5D,IAAIwB,EAAMqS,EAAMpT,OAChB,GAAKe,EAAMgU,EAAQ,EACf,MAAM,IAAInU,MAAM,6DACpB,KAAOG,EAAM,GAAKqS,EAAMrS,EAAM,KAAOkhD,EAAKlhD,IACtC,MAAQA,EAAM,GAAKgU,EAAQ,GACvB,MAAM,IAAInU,MAAM,gDAExB,OAAOwS,EAAM5O,MAAM,EAAGzD,EAC1B,EAER,CAIA,SAASmhD,GAAUhuC,GACf,GAAkB,mBAAPA,EACP,MAAM,IAAItT,MAAM,mCACpB,MAAO,CAAEwW,OAASnT,GAASA,EAAMoT,OAASsa,GAAOzd,EAAGyd,GACxD,CD6EgBghB,GAAGxwC,IAAIouC,GAAKgR,IACZ5O,GAAGuE,KAAKvE,GAAGiC,IAAIjC,GAAG2B,MACjB3B,GAAG+C,MAAQpoC,OAAO,GAAMA,OAAO,GACjCA,OAAO,QHgNhB,SAAwBqlC,EAAe2J,GAC3C,IAAK3J,EAAGoM,MAAO,MAAM,IAAIn+C,MAAM,4BAC/B,MAAM0jC,EAAOqO,EAAGuE,KAAKoF,GACd3J,EAAGoM,MAAMza,IAAQqO,EAAGiC,IAAItQ,EACjC,CGvKwB6d,CAAWxP,GAAIA,GAAGiC,IAAItnC,OAAO,UA4C3BA,OACxB,iFAGwBA,OACxB,iFAGqBA,OACrB,gFAGqBA,OACrB,iFAKeA,OAAO,sECrIxB,MAAM80C,GAAiCA,CAACh3C,EAAG/F,IAAQA,EAAQ+8C,GAAI/8C,EAAG+F,EAAI/F,GAAf+F,EACjDi3C,GAAwCA,CAACp+C,EAAM0tB,IAAO1tB,GAAQ0tB,EAAKywB,GAAIn+C,EAAM0tB,IAKnF,SAAS2wB,GAAcz8C,EAAM5B,EAAM0tB,EAAIqwB,GACnC,IAAKthD,MAAMkF,QAAQC,GACf,MAAM,IAAIjF,MAAM,uCACpB,GAAIqD,GAAQ,GAAKA,EAAO,GACpB,MAAM,IAAIrD,MAAO,6BAA4BqD,KACjD,GAAI0tB,GAAM,GAAKA,EAAK,GAChB,MAAM,IAAI/wB,MAAO,2BAA0B+wB,KAC/C,GAAI0wB,GAAYp+C,EAAM0tB,GAAM,GACxB,MAAM,IAAI/wB,MAAO,sCAAqCqD,QAAW0tB,eAAgB0wB,GAAYp+C,EAAM0tB,MAEvG,IAAIgS,EAAQ,EACRl4B,EAAM,EACV,MAAMgxC,EAAO,GAAK9qB,EAAK,EACjBnoB,EAAM,GACZ,IAAK,MAAMrC,KAAKtB,EAAM,CAElB,GADA27C,GAAar6C,GACTA,GAAK,GAAKlD,EACV,MAAM,IAAIrD,MAAO,oCAAmCuG,UAAUlD,KAElE,GADA0/B,EAASA,GAAS1/B,EAAQkD,EACtBsE,EAAMxH,EAAO,GACb,MAAM,IAAIrD,MAAO,qCAAoC6K,UAAYxH,KAErE,IADAwH,GAAOxH,EACAwH,GAAOkmB,EAAIlmB,GAAOkmB,EACrBnoB,EAAInJ,MAAOsjC,GAAUl4B,EAAMkmB,EAAO8qB,KAAU,GAChD9Y,GAAS,GAAKl4B,EAAM,CACxB,CAEA,GADAk4B,EAASA,GAAUhS,EAAKlmB,EAAQgxC,GAC3BuF,GAAWv2C,GAAOxH,EACnB,MAAM,IAAIrD,MAAM,kBACpB,IAAKohD,GAAWre,EACZ,MAAM,IAAI/iC,MAAO,qBAAoB+iC,KAGzC,OAFIqe,GAAWv2C,EAAM,GACjBjC,EAAInJ,KAAKsjC,IAAU,GAChBn6B,CACX,CAwBA,SAAS+4C,GAAOxtC,EAAMytC,GAAa,GAE/B,GADAhB,GAAazsC,GACTA,GAAQ,GAAKA,EAAO,GACpB,MAAM,IAAInU,MAAM,qCACpB,GAAIyhD,GAAY,EAAGttC,GAAQ,IAAMstC,GAAYttC,EAAM,GAAK,GACpD,MAAM,IAAInU,MAAM,0BACpB,MAAO,CACHwW,OAASpK,IACL,IA9OZ,SAAiB5B,GACb,OAAQA,aAAa3K,YACX,MAAL2K,GAA0B,iBAANA,GAAyC,eAAvBA,EAAEmH,YAAYI,IAC7D,CA2OiBuc,CAAQliB,GACT,MAAM,IAAIpM,MAAM,4CACpB,OAAO0hD,GAAc5hD,MAAMuD,KAAK+I,GAAQ,EAAG+H,GAAOytC,EAAW,EAEjEnrC,OAASwqC,IACL,IAAKnhD,MAAMkF,QAAQi8C,IAAYA,EAAO7hD,QAA+B,iBAAd6hD,EAAO,GAC1D,MAAM,IAAIjhD,MAAM,kDACpB,OAAOH,WAAWwD,KAAKq+C,GAAcT,EAAQ9sC,EAAM,EAAGytC,GAAY,EAG9E,CAIA,SAASC,GAAcvuC,GACnB,GAAkB,mBAAPA,EACP,MAAM,IAAItT,MAAM,uCACpB,OAAO,YAAa8gD,GAChB,IACI,OAAOxtC,EAAG/J,MAAM,KAAMu3C,EAC1B,CACA,MAAOlgD,GAAK,EAEpB,CAqC4C+gD,GAAO,GAAIxuC,GAAS,oBAAqBvT,GAAK,IAC9C+hD,GAAO,GAAIxuC,GAAS,oCAAqCiuC,GAAQ,GAAIxhD,GAAK,IACvE+hD,GAAO,GAAIxuC,GAAS,oCAAqCiuC,GAAQ,GAAIxhD,GAAK,IACpE+hD,GAAO,GAAIxuC,GAAS,oCAAqCvT,GAAK,IAAK0hD,IAAWngD,GAAMA,EAAE2gD,cAAcx2C,QAAQ,KAAM,KAAKA,QAAQ,QAAS,OACjJq2C,GAAO,GAAIxuC,GAAS,oEAAqEiuC,GAAQ,GAAIxhD,GAAK,IACvG+hD,GAAO,GAAIxuC,GAAS,oEAAqEiuC,GAAQ,GAAIxhD,GAAK,IACrG+hD,GAAO,GAAIxuC,GAAS,oEAAqEvT,GAAK,IAsClJ,MAAMmiD,GAAgClB,GAAM1tC,GAAS,oCAAqCvT,GAAK,KACzFoiD,GAAqB,CAAC,UAAY,UAAY,UAAY,WAAY,WAI5E,SAASC,GAAcC,GACnB,MAAMz9C,EAAIy9C,GAAO,GACjB,IAAIC,GAAa,SAAND,IAAoB,EAC/B,IAAK,IAAIvjD,EAAI,EAAGA,EAAIqjD,GAAmB5iD,OAAQT,IACpB,IAAjB8F,GAAK9F,EAAK,KACZwjD,GAAOH,GAAmBrjD,IAElC,OAAOwjD,CACX,CAIA,SAASC,GAAata,EAAQua,EAAOC,EAAgB,GACjD,MAAMtjD,EAAM8oC,EAAO1oC,OACnB,IAAI+iD,EAAM,EACV,IAAK,IAAIxjD,EAAI,EAAGA,EAAIK,EAAKL,IAAK,CAC1B,MAAM8C,EAAIqmC,EAAO5oC,WAAWP,GAC5B,GAAI8C,EAAI,IAAMA,EAAI,IACd,MAAM,IAAIzB,MAAO,mBAAkB8nC,MACvCqa,EAAMF,GAAcE,GAAQ1gD,GAAK,CACrC,CACA0gD,EAAMF,GAAcE,GACpB,IAAK,IAAIxjD,EAAI,EAAGA,EAAIK,EAAKL,IACrBwjD,EAAMF,GAAcE,GAA+B,GAAvBra,EAAO5oC,WAAWP,GAClD,IAAK,IAAI4Z,KAAK8pC,EACVF,EAAMF,GAAcE,GAAO5pC,EAC/B,IAAK,IAAI5Z,EAAI,EAAGA,EAAI,EAAGA,IACnBwjD,EAAMF,GAAcE,GAExB,OADAA,GAAOG,EACAP,GAAcvrC,OAAOkrC,GAAc,CAACS,EAAM,GAAK,IAAK,GAAI,GAAG,GACtE,CAIA,SAASI,GAAUh/C,GACf,MAAMi/C,EAA8B,WAAbj/C,EAAwB,EAAI,UAC7Ck/C,EAASd,GAAO,GAChBe,EAAYD,EAAOhsC,OACnBksC,EAAUF,EAAOjsC,OACjBosC,EAAkBf,GAAca,GAatC,SAASjsC,EAAOxO,EAAKqI,EAAQ,IACzB,GAAmB,iBAARrI,EACP,MAAM,IAAIjI,MAAO,oDAAmDiI,GACxE,GAAIA,EAAI7I,OAAS,IAAgB,IAAVkR,GAAmBrI,EAAI7I,OAASkR,EACnD,MAAM,IAAInN,UAAW,wBAAuB8E,EAAI7I,WAAW6I,oBAAsBqI,MAErF,MAAMuyC,EAAU56C,EAAIpC,cACpB,GAAIoC,IAAQ46C,GAAW56C,IAAQA,EAAI65C,cAC/B,MAAM,IAAI9hD,MAAO,yCAErB,MAAM8iD,GADN76C,EAAM46C,GACeh8C,YAAY,KACjC,GAAiB,IAAbi8C,IAAgC,IAAdA,EAClB,MAAM,IAAI9iD,MAAO,2DACrB,MAAM8nC,EAAS7/B,EAAIrE,MAAM,EAAGk/C,GACtBL,EAASx6C,EAAIrE,MAAMk/C,EAAW,GACpC,GAAIL,EAAOrjD,OAAS,EAChB,MAAM,IAAIY,MAAM,2CACpB,MAAMqiD,EAAQN,GAActrC,OAAOgsC,GAAQ7+C,MAAM,GAAI,GAC/CgY,EAAMwmC,GAAata,EAAQua,EAAOG,GACxC,IAAKC,EAAO/tB,SAAS9Y,GACjB,MAAM,IAAI5b,MAAO,uBAAsBiI,gBAAkB2T,MAC7D,MAAO,CAAEksB,SAAQua,QACrB,CAMA,MAAO,CAAE7rC,OAxCT,SAAgBsxB,EAAQua,EAAO/xC,EAAQ,IACnC,GAAsB,iBAAXw3B,EACP,MAAM,IAAI9nC,MAAO,qDAAoD8nC,GACzE,IAAKhoC,MAAMkF,QAAQq9C,IAAWA,EAAMjjD,QAA8B,iBAAbijD,EAAM,GACvD,MAAM,IAAIriD,MAAO,8DAA6DqiD,GAClF,MAAMU,EAAejb,EAAO1oC,OAAS,EAAIijD,EAAMjjD,OAC/C,IAAc,IAAVkR,GAAmByyC,EAAezyC,EAClC,MAAM,IAAInN,UAAW,UAAS4/C,mBAA8BzyC,KAChE,MAAMuyC,EAAU/a,EAAOjiC,cACjB+V,EAAMwmC,GAAaS,EAASR,EAAOG,GACzC,MAAQ,GAAEK,KAAWd,GAAcvrC,OAAO6rC,KAASzmC,GACvD,EA6BiBnF,SAAQusC,cAJzB,SAAuB/6C,GACnB,MAAM6/B,OAAEA,EAAMua,MAAEA,GAAU5rC,EAAOxO,GAAK,GACtC,MAAO,CAAE6/B,SAAQua,QAAOj2C,MAAOs2C,EAAUL,GAC7C,EACwC1f,aALnBkf,GAAcprC,GAKmBisC,YAAWE,kBAAiBD,UACtF,CACO,MAAMM,GAAyBV,GAAU,UAMPZ,GAAO,GAAIxuC,GAAS,oBAAqBvT,GAAK,IAAK0hD,IAAWngD,IACnG,GAAiB,iBAANA,GAAkBA,EAAE/B,OAAS,EACpC,MAAM,IAAI+D,UAAW,2CAA0ChC,iBAAiBA,EAAE/B,UACtF,OAAO+B,EAAE0E,aAAa,IC9a1B,MAcaq9C,GAAiB,CAC5B/1B,EACAg2B,EACA1iC,IAEOigC,GAAQtD,OAAO+F,EAAch2B,EAAQ1M,EAAOyO,WASxCk0B,GAAmB,CAACx3B,EAAgBuB,KAC/C,MAAM1M,OAAEA,GAAWwgB,GAAiB9T,EAAS,IAAMvB,EAAQ+J,GAAc0tB,IACzE,OAAO5iC,CAAM,EA0BR/B,eAAe4kC,GACpB1kC,EACAgN,EACAuB,EACAtF,GAEA,MAAMpH,EAAS2iC,GAAiBx3B,EAAQuB,GACxC,IAAIjT,SAAEA,SAAmBwT,GAAkBrB,SAASzN,EAAY6B,GAEhE,IAAKvG,EAASjV,KACZ,MAAM,IAAI+b,GAASD,GAAUwiC,cAG/B,GAAI17B,EACF,OAAO27B,GAAkBtpC,EAAUiT,EAAQ1M,GAE7C,MAAMgjC,EAAaruB,GAAelrB,IAAIijB,GAGtC,OAFAjT,EAASjV,KAAOiV,EAASjV,KAAKrB,MAAM,EAAG6/C,GAEhCvpC,CACT,CAkBOwE,eAAeglC,GACpB9kC,EACAgN,EACA+3B,EACA97B,GAEA,MAAM+7B,EAAUD,EAAQ19B,KAAKkH,GAAWi2B,GAAiBx3B,EAAQuB,KAC3D02B,QAAmBn2B,GAAkBS,cAAcvP,EAAYglC,GAErE,OAAI/7B,EACKg8B,EAAW59B,KAAI,CAACrlB,EAAGuX,KACxB,GAAKvX,EACL,OAAO4iD,GACL5iD,EACA+iD,EAAQxrC,GACRirC,GAAiBx3B,EAAQ+3B,EAAQxrC,IAClC,IAGE0rC,CACT,CAQa,MAAAC,GAAgBplC,MAAOE,EAAwBgN,UAC7C03B,GAAU1kC,EAAYgN,EAAQuJ,GAAO4uB,MAAM,GAS7CC,GAAmBtlC,MAC9BE,EACAgN,UAEa03B,GAAU1kC,EAAYgN,EAAQuJ,GAAO8uB,MAAM,GAS7CC,GAAexlC,MAAOE,EAAwBgN,UAC5C03B,GAAU1kC,EAAYgN,EAAQuJ,GAAOG,KAAK,GAS5C6uB,GAAezlC,MAAOE,EAAwBgN,UAC5C03B,GAAU1kC,EAAYgN,EAAQuJ,GAAOivB,KAAK,GAS5CC,GAAe3lC,MAAOE,EAAwBgN,UAC5C03B,GAAU1kC,EAAYgN,EAAQuJ,GAAOmvB,KAAK,GAS5CC,GAAgB7lC,MAAOE,EAAwBgN,UAC7C03B,GAAU1kC,EAAYgN,EAAQuJ,GAAOqvB,MAAM,GAS7CC,GAAiB/lC,MAC5BE,EACAgN,UAEa03B,GAAU1kC,EAAYgN,EAAQuJ,GAAOuvB,OAAO,GAS9CC,GAAejmC,MAAOE,EAAwBgN,UAC5C03B,GAAU1kC,EAAYgN,EAAQuJ,GAAOyvB,KAAK,GAS5CC,GAAmBnmC,MAC9BE,EACAgN,UAEa03B,GAAU1kC,EAAYgN,EAAQuJ,GAAO2vB,SAAS,GAShDC,GAAkBrmC,MAC7BE,EACAgN,UAEa03B,GAAU1kC,EAAYgN,EAAQuJ,GAAO6vB,QAAQ,GAS/CC,GAAkBvmC,MAC7BE,EACAgN,UAEa03B,GAAU1kC,EAAYgN,EAAQuJ,GAAO+vB,QAAQ,GAS/CC,GAAmBzmC,MAC9BE,EACAgN,UAEa03B,GAAU1kC,EAAYgN,EAAQuJ,GAAOiwB,SAAS,GAShDC,GAAoB3mC,MAC/BE,EACAgN,UAEa03B,GAAU1kC,EAAYgN,EAAQuJ,GAAOmwB,UAAU,GASjDC,GAAe7mC,MAAOE,EAAwBgN,UAC5C03B,GAAU1kC,EAAYgN,EAAQuJ,GAAOqwB,KAAK,GAS5CC,GAAgB/mC,MAAOE,EAAwBgN,UAC7C03B,GAAU1kC,EAAYgN,EAAQuJ,GAAOuwB,MAAM,GAS7CC,GAAejnC,MAAOE,EAAwBgN,UAC5C03B,GAAU1kC,EAAYgN,EAAQuJ,GAAOE,KASvCuwB,GAAiBlnC,MAC5BE,EACAgN,UAEa03B,GAAU1kC,EAAYgN,EAAQuJ,GAAO0wB,OAAO,GAS9CC,GAAepnC,MAAOE,EAAwBgN,UAC5C03B,GAAU1kC,EAAYgN,EAAQuJ,GAAOI,KAAK,GAS5CwwB,GAAqBrnC,MAChCE,EACAgN,UAEa03B,GAAU1kC,EAAYgN,EAAQuJ,GAAOK,WAAW,GASlDwwB,GAAoBtnC,MAC/BE,EACAgN,UAEa03B,GAAU1kC,EAAYgN,EAAQuJ,GAAO8wB,UAAU,GAWjDC,GAAsBxnC,MACjCE,EACAgN,UAEa03B,GAAU1kC,EAAYgN,EAAQuJ,GAAOO,YAAY,GAUnD8tB,GAAoB,CAC/BtpC,EACAiT,EACAg5B,KAEA,MAAM5lD,EAAS2Z,aAAA,EAAAA,EAAUjV,KACzB,IAAK1E,EAAQ,OACb,GAAoD,IAAhDA,EAAOgK,QAAQjI,EAAMA,OAACE,MAAMjC,EAAOnB,SAAgB,OAEvD,MAAMiG,EAAO+vB,GAAelrB,IAAIijB,GAC1BhV,EA1XmB,CAAC5X,IAC1B,MAAM3B,EAAMkB,MAAMuD,KAAK9C,GAGvB,OADE3B,EAAIQ,OAAS,EAAIR,EAAI8d,UAAU0pC,WAAW9+B,GAAkB,IAATA,IAChC,CAAC,EAsXV++B,CAAmB9lD,GAE/B,IAAK8E,EACH,OAAO9E,EAAOqD,MAAM,EAAGuU,GAAK5S,SAAS,SAIvC,GAAI4nB,IAAWgI,GAAOE,IAAK,CACzB,MAAMixB,EAAU,IAAIr3B,YACds3B,EAAiBjkD,EAAMA,OAACqI,OAAO,CACnCpK,EAAOqD,MAAM,EAAG,IAChBuiD,EAAUzoC,aAENwF,EAAWojC,EAAQ9vC,OAAO+vC,EAAehhD,SAAS,QAMxD,GALc29C,GACZhgC,EACA3iB,EAAOqD,MAAM,GAAI,IACjBsW,EAAS+E,OAGT,OAAOunC,GAAAA,OAAWjmD,EAAOqD,MAAM,EAAG,IAErC,CAGD,GAAIyB,GAAQ8S,IAAQ9S,EAAM,CACxB,MAAMwZ,EAAUte,EAAOqD,MAAM,EAAGuU,GAAK5S,SAAS,SAC9C,GAAI4nB,IAAWgI,GAAOK,UAAW,CAC/B,MAAMixB,EAAUxD,GAAOD,cAAcnkC,GACrC,GAAuB,QAAnB4nC,EAAQ3e,QAA6C,KAAzB2e,EAAQr6C,MAAMhN,OAC5C,OAAOyf,CAEV,MAAM,GAAIsO,IAAWgI,GAAOI,KAAOpI,IAAWgI,GAAOG,IAAK,CACzD,MAAMwS,EAASjpB,EAAQjb,MAAM,EAAG,GAC1B+Y,EAAMkC,EAAQjb,MAAM,GAC1B,GAAe,OAAXkkC,GAAsD,KAAnCxlC,SAAOe,KAAKsZ,EAAK,OAAOvd,OAC7C,OAAOyf,CAEV,MAAM,IAAIsO,IAAWgI,GAAO7D,GAAKnE,IAAWgI,GAAOM,OAC9CixB,GAAAA,QAAU7nC,GACZ,OAAOA,EAGX,MAAM,IAAImC,GAASD,GAAU4lC,kBAC9B,CAED,GAAIx5B,IAAWgI,GAAOG,KAAOnI,IAAWgI,GAAOI,IAC7C,MAAO,KAAOh1B,EAAOqD,MAAM,EAAGyB,GAAME,SAAS,OACxC,GAAI4nB,IAAWgI,GAAOK,UAC3B,OAAOytB,GAAOzsC,OAAO,MAAOysC,GAAON,QAAQpiD,EAAOqD,MAAM,EAAGyB,KACtD,GAAI8nB,IAAWgI,GAAO7D,GAAKnE,IAAWgI,GAAOM,KAClD,OAAOmxB,GAAel+C,cAAC,IAAInI,EAAOqD,MAAM,EAAGyB,KAAQE,WAC9C,GAAI4nB,IAAWgI,GAAOO,WAC3B,OAAO,IAAIjiB,EAAUlT,EAAOqD,MAAM,EAAGyB,IAAOE,WAE9C,MAAM,IAAIyb,GAASD,GAAU4lC,kBAAkB,EAUpCE,GAAkB,CAAC5+C,EAAaklB,KAG3C,IAFaiI,GAAelrB,IAAIijB,GAM9B,OAHIA,IAAWgI,GAAO2xB,OAAS35B,IAAWgI,GAAO4xB,MAC/C9+C,EAAM++C,GAAe/+C,IAEhB3F,SAAOe,KAAK4E,EAAK,SAG1B,GAAIklB,IAAWgI,GAAOE,IACpB,MAAM,IAAIrU,GACRD,GAAUkmC,kBACV,2CAEG,GAAI95B,IAAWgI,GAAOG,KAAOnI,IAAWgI,GAAOI,IAEpD,OADAuM,GAA0B,OAApB75B,EAAIrE,MAAM,EAAG,GAAamd,GAAUmmC,mBACnC5kD,EAAAA,OAAOe,KAAK4E,EAAIrE,MAAM,GAAI,OAC5B,GAAIupB,IAAWgI,GAAOK,UAAW,CACtC,MAAMixB,EAAUxD,GAAOD,cAAc/6C,GAGrC,OAFA65B,GAAyB,QAAnB2kB,EAAQ3e,OAAkB/mB,GAAUomC,yBAC1CrlB,GAA+B,KAAzB2kB,EAAQr6C,MAAMhN,OAAe2hB,GAAUomC,yBACtC7kD,SAAOe,KAAKojD,EAAQr6C,MAC5B,CAAM,GAAI+gB,IAAWgI,GAAO7D,EAAG,CAC9B,MAAMhsB,EAAQ8hD,GAAOlgB,MAACj/B,GAAK6K,cAE3B,OADAgvB,GAAuB,IAAjBx8B,EAAMlG,OAAc2hB,GAAUsmC,gBAC7B/kD,EAAMA,OAACe,KAAKiC,EACpB,CAAM,GAAI6nB,IAAWgI,GAAOM,KAAM,CACjC,MAAMnwB,EAAQ8hD,GAAOlgB,MAACj/B,GAAK6K,cAE3B,OADAgvB,GAAuB,KAAjBx8B,EAAMlG,OAAe2hB,GAAUumC,mBAC9BhlD,EAAMA,OAACe,KAAKiC,EACpB,CAAM,GAAI6nB,IAAWgI,GAAOO,WAC3B,OAAO,IAAIjiB,EAAUxL,GAAKyV,WAG5B,MAAM,IAAIsD,GAASD,GAAUwmC,mBAAmB,EAWrCC,GAAqB,CAChCC,EACAtB,EACAuB,EACAC,KAEA,MAAMzkC,EAAW5gB,SAAOqI,OAAO,CAAC88C,EAAQ/pC,WAAYyoC,EAAUzoC,aACxDkqC,GAAiB,IAAI34B,aAAczY,OAAO0M,EAAS3d,SAAS,QAC5DsiD,EAAQ3E,GAAe0E,EAAgBD,EAAWD,GAGxD,OAFA5lB,GAAM+lB,EAAO9mC,GAAU+mC,kBAEhBxlD,EAAAA,OAAOqI,OAAO,CAAC88C,EAAQ/pC,WAAYiqC,GAAW,EChf1CI,GAAY,IAAIhiC,IAAuB,CAClD,CAACoP,GAAOyvB,IAAK,IAAInxC,EAAU,mDAMhBu0C,GAAkB,IAAIriC,IAAY,CAC7CwP,GAAOG,IACPH,GAAOK,UACPL,GAAOI,MAcI0yB,GAA2BvpC,MACtCE,EACAuO,EACAvB,EACAs8B,WAEA,MAAM/B,EAAYgC,GAAev8B,EAAQuB,GACnCi7B,QAAkBC,GAAUh8B,SAASzN,EAAYunC,GAEjDmC,EAAQF,EAAUG,WAElBC,EAAaR,GAAgBS,IAAIt7B,GACnCu7B,GAAWC,SACXD,GAAWE,OAGf,KADAV,EAAWA,QAAAA,EAAmC,QAAvBhiC,EAAA6hC,GAAU79C,IAAIijB,UAAS,IAAAjH,OAAA,EAAAA,EAAAxI,YAC/B,MAAM,IAAIsD,GAASD,GAAU8nC,iBAE5C,OAC8B,IAA5BX,EAAS39C,QAAQ+9C,IACjBF,EAAUU,OAAOC,+BAAiCP,CAClD,EAMSQ,GAAe,IAAIrjC,IAAY,CAC1CwP,GAAO4uB,KACP5uB,GAAO8uB,KACP9uB,GAAOmvB,IACPnvB,GAAOqvB,KACPrvB,GAAOuvB,MACPvvB,GAAOyvB,IACPzvB,GAAO2vB,QACP3vB,GAAO6vB,OACP7vB,GAAO+vB,OACP/vB,GAAOiwB,QACPjwB,GAAOmwB,SACPnwB,GAAOqwB,IACPrwB,GAAOuwB,KACPvwB,GAAO0wB,MACP1wB,GAAO8wB,SACP9wB,GAAO4xB,IACP5xB,GAAO2xB,MACP3xB,GAAOivB,MAOI6E,GAAc,IAAItjC,IAAY,CACzCwP,GAAOG,IACPH,GAAOK,UACPL,GAAOE,MAUI6zB,GAA6B,CACxCzB,EACAt6B,KAIA,GAFoB67B,GAAaP,IAAIt7B,GAEpB,CACf,MAAMs5B,EAAUgB,EAAQliD,SAAS,SACjC,OAAI4nB,IAAWgI,GAAO2xB,OAAS35B,IAAWgI,GAAO4xB,IV6EtC,SAASv0C,GAEvB,MAAMnS,EAAS,GACTsqC,EAAcn4B,EAAMpT,OAC1B,IAAIT,EAAI,EACJ4H,EA5LY,IA6LZqkC,EA9Le,GAoMfue,EAAQ32C,EAAM3L,YAlMD,KAmMbsiD,EAAQ,IACXA,EAAQ,GAGT,IAAK,IAAI7hD,EAAI,EAAGA,EAAI6hD,IAAS7hD,EAExBkL,EAAMtT,WAAWoI,IAAM,KAC1ByC,GAAM,aAEP1J,EAAOZ,KAAK+S,EAAMtT,WAAWoI,IAM9B,IAAK,IAAI4xB,EAAQiwB,EAAQ,EAAIA,EAAQ,EAAI,EAAGjwB,EAAQyR,GAAwC,CAO3F,MAAMye,EAAOzqD,EACb,IAAK,IAAI0qD,EAAI,EAAGxrB,EAAI5G,IAA0B4G,GAAK5G,GAAM,CAEpDiC,GAASyR,GACZ5gC,GAAM,iBAGP,MAAMmgC,GA9FqBphC,EA8FA0J,EAAMtT,WAAWg6B,OA7F7B,IAAQpwB,EAAY,GACvBA,EAAY,GAAlB,GAEJA,GAAa,IAAQA,EAAY,GAC7BA,EAAY,GAEhBA,GAAa,IAAQA,EAAY,IAC7BA,EAAY,GAEbmuB,GAsFDiT,GAASjT,IACZltB,GAAM,iBAEHmgC,EAAQroC,IAAOioC,GAASnrC,GAAK0qD,IAChCt/C,GAAM,YAGPpL,GAAKurC,EAAQmf,EACb,MAAMhyB,EAAIwG,GAAK+M,EAhPL,EAgPoB/M,GAAK+M,EA/OzB,MA+O8C/M,EAAI+M,EAE5D,GAAIV,EAAQ7S,EACX,MAGD,MAAM8T,EAAalU,GAAOI,EACtBgyB,EAAIxnD,GAAMioC,GAASqB,IACtBphC,GAAM,YAGPs/C,GAAKle,CAEN,CAEA,MAAMj/B,EAAM7L,EAAOjB,OAAS,EAC5BwrC,EAAOR,GAAMzrC,EAAIyqD,EAAMl9C,EAAa,GAARk9C,GAIxBvnD,GAAMlD,EAAIuN,GAAO49B,GAASvjC,GAC7BwD,GAAM,YAGPxD,GAAK1E,GAAMlD,EAAIuN,GACfvN,GAAKuN,EAGL7L,EAAO+tB,OAAOzvB,IAAK,EAAG4H,EAEvB,CAtIoB,IAASuC,EAwI7B,OAAO7B,OAAOsgB,iBAAiBlnB,EAChC,CUjKaipD,CAAgB7C,GAElBA,CACR,CAAM,GAAIt5B,IAAWgI,GAAOE,IAC3B,OAAO,IAAI5hB,EAAUg0C,GAAS76B,WACzB,GAAIO,IAAWgI,GAAOG,KAAOnI,IAAWgI,GAAOI,IACpD,MAAO,KAAOkyB,EAAQliD,SAAS,OAC1B,GAAI4nB,IAAWgI,GAAOK,UAC3B,OAAOytB,GAAOzsC,OAAO,MAAOysC,GAAON,QAAQ8E,IACtC,GAAIt6B,IAAWgI,GAAO7D,GAAKnE,IAAWgI,GAAOM,KAClD,OAAOmxB,GAAel+C,cAAC,IAAI++C,IAAUliD,WAErC,MAAM,IAAIyb,GAASD,GAAUsmC,eAC9B,EAUUkC,GAA2B,CACtC9B,EACAt6B,KAGA,GADoB67B,GAAaP,IAAIt7B,GAKnC,OAHIA,IAAWgI,GAAO2xB,OAAS35B,IAAWgI,GAAO4xB,MAC/CU,EAAUT,GAAeS,IAEpBnlD,OAAOe,KAAKokD,EAAS,SACvB,GAAIt6B,IAAWgI,GAAOE,IAC3B,OAAO,IAAI5hB,EAAUg0C,GAAS/pC,WACzB,GAAIyP,IAAWgI,GAAOG,KAAOnI,IAAWgI,GAAOI,IAEpD,OADAuM,GAA8B,OAAxB2lB,EAAQ7jD,MAAM,EAAG,GAAamd,GAAUmmC,mBACvC5kD,OAAOe,KAAKokD,EAAQ7jD,MAAM,GAAI,OAChC,GAAIupB,IAAWgI,GAAOK,UAAW,CACtC,MAAMixB,EAAUxD,GAAOD,cAAcyE,GAGrC,OAFA3lB,GAAyB,QAAnB2kB,EAAQ3e,OAAkB/mB,GAAUomC,yBAC1CrlB,GAA+B,KAAzB2kB,EAAQr6C,MAAMhN,OAAe2hB,GAAUomC,yBACtC7kD,OAAOe,KAAKojD,EAAQr6C,MAC5B,CAAM,GAAI+gB,IAAWgI,GAAO7D,EAAG,CAC9B,MAAMhsB,EAAQ8hD,GAAOlgB,MAACugB,GAAS30C,cAE/B,OADAgvB,GAAuB,IAAjBx8B,EAAMlG,OAAc2hB,GAAUsmC,gBAC7B/kD,OAAOe,KAAKiC,EACpB,CAAM,GAAI6nB,IAAWgI,GAAOM,KAAM,CACjC,MAAMnwB,EAAQ8hD,GAAOlgB,MAACugB,GAAS30C,cAE/B,OADAgvB,GAAuB,KAAjBx8B,EAAMlG,OAAe2hB,GAAUumC,mBAC9BhlD,OAAOe,KAAKiC,EACpB,CACC,MAAM,IAAI0b,GAASD,GAAUsmC,eAC9B,EASUc,GAAiB,CAACv8B,EAAgBuB,KAC7C,MAAM1M,OAAEA,GAAWwgB,GAAiBrV,GAC9BiI,EAASqM,GAAkB,IAAOv1B,OAAOwiB,IAC/C,OAAOgT,GAAsBtM,EAAQuN,GAA2B3gB,EAAO,EAsBlE/B,eAAe8qC,GACpB5qC,EACAgN,EACAuB,EACA+vB,EAA8B,CAAA,GAE9B,MAAMz8B,EAAS0nC,GAAev8B,EAAQuB,GAChCs8B,QAAwBpB,GAAUh8B,SAASzN,EAAY6B,GAE7D,OAAIy8B,EAAQr1B,YACH,CACL4hC,kBACAC,oBAAqBR,GACnBO,EAAgBE,aAChBx8B,IAKC,CAAEs8B,kBACX,CASO/qC,eAAekrC,GACpBhrC,EACAgN,EACA+3B,EACAzG,EAA8B,CAAA,GAE9B,MAAM0G,EAAUD,EAAQ19B,KAAKkH,GAAWg7B,GAAev8B,EAAQuB,KACzD08B,QAAyBxB,GAAUl6B,cAAcvP,EAAYglC,GAEnE,OAAI1G,EAAQr1B,YACHgiC,EAAiB5jC,KAAI,CAACrlB,EAAGuX,KAC9B,GAAKvX,EACL,MAAO,CACL6oD,gBAAiB7oD,EACjBusB,OAAQw2B,EAAQxrC,GAChBuxC,oBAAqBR,GACnBtoD,EAAE+oD,aACFhG,EAAQxrC,IAEX,IAIE0xC,EAAiB5jC,KAAI,CAACrlB,EAAGuX,KAC9B,GAAKvX,EACL,MAAO,CACL6oD,gBAAiB7oD,EACjBusB,OAAQw2B,EAAQxrC,GACjB,GAEL,CC/LOuG,eAAeorC,GACpBlrC,EACA7M,EACAuW,EACAH,EACA4hC,EACA1hC,EACA0L,EACAvJ,GAEA,MAAMpC,EAAc8X,GAAkBnuB,GAChC8W,EAAiBsX,GACrB/X,EACA2L,EACAvJ,GAGIw/B,EAAU3hC,SAENzJ,EAAWqrC,kCAAkC3hC,GAEvD,IAAIG,EACJ,GAAI+B,EAAY,CACd,MAAQtQ,SAAUgwC,SAAwBv2B,GACxC/U,EACA4L,GAEF/B,EAAkByhC,EAAcjrC,KACjC,CAgBD,OAdwB6I,GACtBuK,GACAzR,EAAc7B,UACd8J,EACAkhC,EACA5hC,EACAC,EACA,IAAI9G,GAAU0oC,GACd,IAAI9oC,GAAUoH,GACdyL,EACAvJ,EACA/B,EAIJ,CAYO/J,eAAeyrC,GACpBvrC,EACA7M,EACAvR,EACAsoB,EACAiL,EACAvL,GAEA,MAAMJ,EAAc8X,GAAkBnuB,GAChC8W,EAAiBsX,GACrB/X,EACA2L,EACAvL,GAGF,IAAIk/B,EAEFA,EADE3zB,UAGcrG,GAAkBrB,SAASzN,EAAYiK,IACpD3O,SAAS+E,MAWd,OARoB2J,GAClByJ,GACAxJ,EACA,IAAI3H,GAAU1gB,GACdsoB,EACA4+B,EAIJ,CAaOhpC,eAAe0rC,GACpBxrC,EACA7M,EACAs4C,EACAt2B,EACAvL,EACAW,GAEA,MAAMf,EAAc8X,GAAkBnuB,GAChC8W,EAAiBsX,GACrB/X,EACA2L,EACAvL,GAGF,IAAI8hC,EAEFA,EADEv2B,UAIMrG,GAAkBrB,SAASzN,EAAYiK,IAC7C3O,SAAS+E,MAab,OAVsB+J,GACpBqJ,GACAxJ,EACAwhC,EACAC,EACAv2B,EACAvL,EACAW,EAIJ,CAYOzK,eAAe6rC,GACpB3rC,EACA7M,EACAuX,EACAyK,EACAvL,GAEA,MAAMJ,EAAc8X,GAAkBnuB,GAChC8W,EAAiBsX,GACrB/X,EACA2L,EACAvL,GAGF,IAAIuhC,EAEFA,EADEh2B,UAGiBrG,GAAkBrB,SAASzN,EAAYiK,IACvD3O,SAAS+E,MAUd,OAP+BoK,GAC7BgJ,GACAxJ,EACAS,EACAygC,EAIJ,OAaaS,GAAqB9rC,MAChCE,EACA7M,EACAuW,EACAwB,EACAC,EACAhK,EAAOiT,GACPy3B,KAGA,GAAI14C,EAAKlG,SAAS,MAAQkG,EAAKxG,OAAO1F,gBAAkBkM,EACtD,MAAM,IAAIiP,GAASD,GAAU2pC,eAE/B,MAAOC,GAAMl3C,EAAU0M,uBACrB,CAACqS,GAAoB9U,YACrB8U,IAGIqB,EAASqM,GAAkBnuB,GAC3B4X,EAAcwW,GAClBtM,OACAhvB,EACA0tB,IAGI2B,EAAsBgM,GAAkBvW,EAAYiD,YACpDhD,EAAuBuW,GAAsBjM,EAAqBy2B,IAEjEC,GAAiBn3C,EAAU0M,uBAChC,CAACwJ,EAAYjM,YACb8U,IAGIq4B,EAAS53B,GAAUmzB,WAAWxlD,GAAM6pD,eAAAA,EAAat/C,OAAOvK,KAC9D,IAAIkqD,EAEJ,MAAMC,EAAgC,GAEtC,IAAgB,IAAZF,GAAmBJ,EAAa,CAClCK,EAAkBhrC,GAA8BC,EAAM0qC,GAAa,GACnE,MAAM9xC,QAAYiG,EAAWiB,eAAeirC,GAC5C,KAAKnyC,aAAA,EAAAA,EAAK1T,MAAM,CACd,MAAM+lD,EAAK5qC,GACT0J,EACAghC,EACAL,EACA1qC,GAEFgrC,EAAItrD,KAAKurD,EACV,CACF,CAED,MAAMhgC,EAAQlL,GAA8BC,EAAMwT,IAC5C03B,EAAW93B,GAAWjpB,IAAI6V,EAAK6M,YAErC,IAAKq+B,EACH,MAAM,IAAIjqC,GAASD,GAAUmqC,kBAG/B,MAAMF,EAAK,IAAItgC,GAAoB,CACjC3Y,OACAuW,QACAqC,gBAA2B,GAAXkgC,EAAeA,EAAS,OACvCrhC,eACDgJ,GACAH,GACAE,GACA5I,EACAC,EACAhJ,EAAc7B,UACd4rC,EACA7gC,EACAC,EACAuJ,GACA,IAAI7f,EAAUw3C,EAAS53B,SACvB,IAAI5f,EAAUw3C,EAAS73B,OACvBpI,EACAxX,EACA23C,EACAP,EACAE,GAIF,OAFAC,EAAItrD,KAAKurD,GAEF,CAAC,GAAID,EAAI,EAYLK,GAAoB1sC,MAC/BiL,EACA5X,EACAuY,EACAE,EACAC,KAEA,IAAKZ,SAAsBpW,EAAU+Y,mBACnC,CAACgG,GAAoB9U,YACrB8U,IAGE0B,EAAsBgM,GAAkBvW,EAAYiD,YACpDhD,EAAuBuW,GACzBjM,EACArK,EACAW,GAoBF,MAAO,CAAC,GAFW,CAfe,IAAIN,GAAyB,CAC7DnY,SACCyX,eACDgJ,GACAH,GACAE,GACA3I,EACAhJ,EAAc7B,UACd8K,EACAS,EACA6gC,EACA3gC,EACAC,IAKuB,EAUd4gC,GAAkB3sC,MAC7BE,EACA0sC,EACArsC,EACAqJ,EAAQ,OAER,MAAMyiC,EAAgC,GAChCx6C,EAAM+6C,EAAUv4C,MAAM,KAAK,GACjC,IAAKxC,EACH,MAAM,IAAIyQ,GAASD,GAAUwqC,kBAG/B,MAAM/2B,OAAEA,EAAM/T,OAAEA,GAAWwgB,GAAiBqqB,GAGtCjjC,QAAiBzJ,EAAWqrC,kCAChC3hC,EAAQoF,GAAkBE,YAGtB49B,QAAkB1B,GACtBlrC,EACA,KAAKjU,OAAO4F,GACZ+X,EACArJ,EACAA,EACAoJ,OACAxjB,EACA2vB,GAEFu2B,EAAItrD,KAAK+rD,GAGT,MAAMC,EAAa7pB,GAAkB0pB,GAAW,GAC1CtsC,QAAaJ,EAAWiB,eAAe4rC,GAC7C,KAAKzsC,aAAA,EAAAA,EAAM/Z,MAAM,CACf,OAASymD,SAAoBN,GAC3B3qC,EACA,KAAK9V,OAAO4F,GACZ0O,EACAuV,EACAvV,GAEF8rC,EAAItrD,QAAQisD,EACb,CAED,MAAO,CAAC,GAAIX,EAAI,EAcLY,GAA0BjtC,MACrCE,EACAgN,EACAuB,EACAloB,EACAga,EACAoB,KAEAyhB,GAAM3U,IAAWgI,GAAOE,IAAKtU,GAAUkmC,mBACvC,MAAMxmC,OAAEA,EAAMoT,OAAEA,EAAMW,OAAEA,GAAWyM,GACjC,GAAG9T,KAAUvB,IACb+J,GAAc0tB,IAIV/6B,EADau+B,GAAgB5hD,EAAMkoB,GAChB/tB,OACnBipB,QAAiBzJ,EAAWqrC,kCAChC3hC,EAAQoF,GAAkBE,YAiB5B,OAdW9F,GACTuK,GACAzR,EAAc7B,UACd0B,EACAxB,EACAoB,EACAwT,EACA,IAAIvS,GAAU+G,GACd,IAAInH,GAAUoH,QACdzjB,EACA2vB,EACAvV,EAGO,EAYE2sC,GAA4B,CACvChgC,EACAuB,EACAs6B,EACAxoC,EACAoB,KAEA,IAAII,OAAEA,EAAM+T,OAAEA,EAAMK,MAAEA,GAAUoM,GAC9B,GAAG9T,KAAUvB,IACb+J,GAAcwL,IAOhB,GAJItM,IACFL,EAASyM,GAAiBrV,GAAQnL,SAG/B+T,EACH,MAAM,IAAIx0B,MAAM,kBAGlB,MAAMgrD,0GAAKa,CACTxrC,EACAI,EACA+T,EACAvV,EACAoT,GACA,IAAO1nB,OAAOwiB,GACdo8B,GAAyB9B,EAASt6B,GAClC2+B,IAEF,OAAOd,CAAE,EAGEe,GAA0BrtC,MACrCE,EACAgN,EACAuB,EACAloB,EACAga,EACAoB,KAEAyhB,GAAM3U,IAAWgI,GAAOE,IAAKtU,GAAUkmC,mBACvC,MAAMxmC,OAAEA,GAAWwgB,GAAiB,GAAG9T,KAAUvB,IAAU+J,GAAc0tB,IAEnErkC,QAAaJ,EAAWiB,eAAeY,GAC7CqhB,MAAQ9iB,aAAI,EAAJA,EAAM/Z,MAAM8b,GAAU8M,qBAE9B,MAAMm+B,EAAanF,GAAgB5hD,EAAMkoB,GACzC,IAAInO,aAAA,EAAAA,EAAM/Z,KAAKrB,MAAM,IAAIxE,UAAW4sD,EAAW5sD,OAE7C,MAAO,CACLiqB,GAAkBgJ,GAAiB5R,EAAQJ,EAAOpB,SAC5C0sC,GACJ/sC,EACAgN,EACAuB,EACAloB,EACAga,EACAoB,IAaN,MAAO,CARIuI,GACTyJ,GACA5R,EACA,IAAIS,GAAU,GACd8qC,EACA/sC,GAGS,EAaAgtC,GAA4B,CACvCrgC,EACAuB,EACAs6B,EACAxoC,EACAoB,KAEA,IAAII,OAAEA,EAAM+T,OAAEA,EAAMK,MAAEA,GAAUoM,GAC9B,GAAG9T,KAAUvB,IACb+J,GAAcwL,IAOhB,GAJItM,IACFL,EAASyM,GAAiBrV,GAAQnL,SAG/B+T,EACH,MAAM,IAAIx0B,MAAM,kBAGlB,MAAMgrD,0GAAKkB,CACT7rC,EACAI,EACA+T,EACAvV,EACAoT,GACA,IAAO1nB,OAAOwiB,GACdo8B,GAAyB9B,EAASt6B,GAClC2+B,IAGF,OAAOd,CAAE,EAWEmB,GAAiB,CAC5BvgC,EACAuB,EACAlO,EACAoB,KAEA,IAAII,OAAEA,EAAM+T,OAAEA,EAAMK,MAAEA,GAAUoM,GAC9B,GAAG9T,KAAUvB,IACb+J,GAAcwL,IAOhB,GAJItM,IACFL,EAASyM,GAAiBrV,GAAQnL,SAG/B+T,EACH,MAAM,IAAIx0B,MAAM,kBAGlB,MAAMgrD,sEAAKoB,CACT/rC,EACAmU,EACAvV,EACAwB,EACA4R,GACAy5B,IAEF,OAAOd,CAAE,EAGEqB,GAA0B,CACrCC,EACA1gC,EACAuB,EACAlO,EACAoB,EACA6nC,KAEA,IAAIznC,OAAEA,EAAM+T,OAAEA,EAAMK,MAAEA,GAAUoM,GAC9B,GAAG9T,KAAUvB,IACb+J,GAAcwL,IAOhB,GAJItM,IACFL,EAASyM,GAAiBrV,GAAQnL,SAG/B+T,EACH,MAAM,IAAIx0B,MAAM,kBAGlB,MAAMgrD,yFAAKuB,CACTlsC,EACAI,EACA+T,EACAvV,EACAipC,EACA71B,GACAi6B,EACAR,IAEF,OAAOd,CAAE,EAGEwB,GAAkB,CAC7B5gC,EACAuB,EACAlO,EACAoB,EACAioC,KAEA,IAAI7nC,OAAEA,EAAM+T,OAAEA,EAAMK,MAAEA,GAAUoM,GAC9B,GAAG9T,KAAUvB,IACb+J,GAAcwL,IAOhB,GAJItM,IACFL,EAASyM,GAAiBrV,GAAQnL,SAG/B+T,EACH,MAAM,IAAIx0B,MAAM,kBAElB,MAAMgrD,wGAAKyB,CACTpsC,EACAgS,GACA5R,EACA+T,EACAvV,EACAqpC,EACAwD,IAEF,OAAOd,CAAE,EAGE0B,GAA6B,CACxC9gC,EACAuB,EACAlO,EACAoB,EACAsnC,EACAgF,KAEA,IAAIlsC,OAAEA,EAAM+T,OAAEA,EAAMK,MAAEA,GAAUoM,GAC9B,GAAG9T,KAAUvB,IACb+J,GAAcwL,IAOhB,GAJItM,IACFL,EAASyM,GAAiBrV,GAAQnL,SAG/B+T,EACH,MAAM,IAAIx0B,MAAM,kBAGlB,MAAMgrD,+IAAK4B,CACTvsC,EACAI,EACA+T,EACAvV,EACAoT,GACAq2B,GAAWC,SACXhB,EACAgF,EACAb,IAEF,OAAOd,CAAE,EAaE6B,GAA6BnuC,MACxCE,EACAgN,EACA67B,EACAC,EACAC,EACAtnC,KAEA,MAAMI,OAAEA,EAAMoT,OAAEA,EAAMW,OAAEA,GAAWyM,GACjC,GAAG9L,GAAOE,OAAOzJ,IACjB+J,GAAc0tB,IAGV/6B,EADak/B,GAAmBC,EAAShnC,EAAQinC,EAAQC,GACtCvoD,OACnBipB,QAAiBzJ,EAAWqrC,kCAChC3hC,EAAQoF,GAAkBE,YAiB5B,MAAO,CAdI9F,GACTuK,GACAzR,EAAc7B,UACd0B,EACAinC,EACArnC,EACAwT,EACA,IAAIvS,GAAU+G,GACd,IAAInH,GAAUoH,QACdzjB,EACA2vB,EACAkzB,GAGS,EAGAoF,GAA6BpuC,MACxCE,EACAgN,EACA67B,EACAC,EACAC,EACAtnC,KAEA,MAAMI,OAAEA,GAAWwgB,GACjB,GAAG9L,GAAOE,OAAOzJ,IACjB+J,GAAc0tB,IAGVrkC,QAAaJ,EAAWiB,eAAeY,GAG7C,GAFAqhB,MAAQ9iB,aAAI,EAAJA,EAAM/Z,MAAM8b,GAAU8M,qBAEJ,MAAtB7O,aAAA,EAAAA,EAAM/Z,KAAK7F,QACb,MAAO,CACLiqB,GAAkBgJ,GAAiB5R,EAAQJ,EAAOqnC,SAC5CmF,GACJjuC,EACAgN,EACA67B,EACAC,EACAC,EACAtnC,IAKN,MAAM2rC,EAAaxE,GAAmBC,EAAShnC,EAAQinC,EAAQC,GAS/D,MAAO,CARI/+B,GACTyJ,GACA5R,EACA,IAAIS,GAAU,GACd8qC,EACAtE,GAGS,EAGAqF,GAAa,CACxBnhC,EACA3M,EACAzT,KAEA,MAAMiV,OAAEA,GAAWwgB,GAAiBrV,IAC7B3B,GAASxW,EAAU0M,uBACxB,CAACM,EAAO/C,YACR8U,KAEK3G,GAAkBpY,EAAU0M,uBACjC,CAACM,EAAO/C,WAAY7d,WAAWwD,KAAK,CAAC,EAAG,KACxCmvB,IAeF,OAZW,IAAI9G,IAAkBlC,eAC/BgJ,GACAH,GACAzR,EAAc7B,UACd0B,EACAmhB,GAAkBhW,GAClBC,EACA5B,EACA0I,GACA1T,EACAzT,EAEO,EAGEwhD,GAAkB,CAC7Bj7C,EACAuW,EACAqB,EACAC,EACAE,EACAsB,EACAC,EACAC,EACAC,KAEA,MAAOtB,GAASxW,EAAU0M,uBACxB,CAACwJ,EAAYjM,YACb8U,IAqBF,OAnBW,IAAIrH,GAAyB,CAAE7C,QAAOvW,SAAQyX,eACvDgJ,GACAH,GACAE,GACA5I,EACAC,EACAhJ,EAAc7B,UACd4T,GACA7I,EACAsB,EACAC,EACAC,EACAC,EACAkI,GACAjgB,EACA23C,EACAlhC,EACAyJ,GAEO,EAcEu5B,GAAoBvuC,MAC/BE,EACA0sC,EACAjB,EACA6C,EACAjuC,KAEA,MAAMwB,OAAEA,EAAMoU,MAAEA,EAAKL,OAAEA,GAAWyM,GAAiBqqB,GAEnD,IAAK92B,IAAWK,EACd,MAAM,IAAI7T,GAASD,GAAUwqC,kBAG/B,IAAKtsC,EAAO,CACV,MAAM/E,SAAEA,SAAmBwT,GAAkBrB,SAASzN,EAAY6B,GAClExB,EAAQ/E,EAAS+E,KAClB,CAED,IAAIuJ,EACAC,EAEAykC,IACF1kC,EAAagM,EACb/L,SAAyBiF,GAAkBrB,SAASzN,EAAY4V,IAC7Dta,SAAS+E,OAad,OAVW+J,GACTqJ,GACA5R,EACA4pC,EACAprC,OACApa,EACA2jB,EACAC,EAGO,EC96BJ/J,eAAeyuC,GACpBvuC,EACAwuC,EACAC,EACA/kC,EACAH,GAGA,MAAMmlC,EAAsBptB,GAAkBktB,GACxCG,EAA2BptB,GAC/BmtB,OACAzoD,EACAguB,IAGIxK,QAAiBzJ,EAAWqrC,kCAChC3hC,EAAQoF,GAAkBE,YAG5B,IAAI4/B,EAAe,CACjB1lC,GACEuK,GACAzR,EAAc7B,UACdwuC,EACAF,EACAllC,EACAmlC,EACA,IAAIhsC,GAAU+G,GACd,IAAInH,GAAUoH,QACdzjB,EACAguB,GACAD,KAcJ,OAVA46B,EAAeA,EAAa7iD,aACpB8iD,GACJ7uC,EACAwuC,EACAG,EACAF,EACAllC,IAIGqlC,CACT,CAIO9uC,eAAegvC,GACpBN,EACAC,EACA7sD,EACAsoB,GAEA,MAAMwkC,EAAsBptB,GAAkBktB,GACxCG,EAA2BptB,GAC/BmtB,OACAzoD,EACAguB,IAaF,MAVqB,CACnBjK,GACEyJ,GACAk7B,EACA,IAAIrsC,GAAU1gB,GACdsoB,EACAukC,GAKN,CAIO3uC,eAAeivC,GACpB/uC,EACAwuC,EACAQ,EACAC,EACA1lC,GAEA,MAAMmlC,EAAsBptB,GAAkBktB,GACxCG,EAA2BptB,GAC/BmtB,OACAzoD,EACAguB,IAIF,IAAI26B,EAAe,CACjBxkC,GACEqJ,GACAk7B,EACAM,EACAD,OACA/oD,IAyBJ,OArBA2oD,EAAa/tD,WACL8qD,GACJ3rC,EACAgvC,EAAsBroD,WACtB4iB,EACAyK,GACAC,KAKJ26B,EAAeA,EAAa7iD,aACpB8iD,GACJ7uC,EACAwuC,EACAG,EACAM,EACA1lC,IAIGqlC,CACT,CAIO9uC,eAAeovC,GACpBV,EACAC,GAEA,MAAMC,EAAsBptB,GAAkBktB,GACxCG,EAA2BptB,GAC/BmtB,OACAzoD,EACAguB,IAGIk7B,EAAuB7tB,GAAkBmtB,EAAe9nD,YACxDyoD,EAAqB7tB,GACzB4tB,EACAn7B,GACAC,IAoBF,MAjBqB,CAEnBxJ,GACEgJ,GACAk7B,EACAF,EACAA,GAGFhkC,GACEgJ,GACA27B,EACAX,EACAA,GAKN,CAMO3uC,eAAeuvC,GACpBC,GAEA,MAAMZ,EAAsBptB,GAAkBguB,GAC9C,OAAO/tB,GACLmtB,OACAzoD,EACAguB,GAEJ,CAEOnU,eAAeyvC,GACpBvvC,EACAsvC,GAEA,MAAMZ,EAAsBptB,GAAkBguB,GACxCX,EAA2BptB,GAC/BmtB,OACAzoD,EACAguB,KAEI3Y,SAAEA,SAAmBwT,GAAkBrB,SAC3CzN,EACA2uC,GAEF,OAAOrzC,CACT,CAEOwE,eAAe0vC,GACpBxvC,EACAyuC,GAEA,MAAMU,EAAuB7tB,GAAkBmtB,EAAe9nD,YACxDyoD,EAAqB7tB,GACzB4tB,EACAn7B,GACAC,IAGF,IAAIw7B,QAA6BC,GAA4BjiC,SAC3DzN,EACAovC,GAEF,MAAO,CACLK,EAAqBjB,cACrB,IAAI35C,EAAU46C,EAAqBE,oBAEvC,CAGO7vC,eAAe8vC,GACpB5vC,EACAyuC,GAEA,MAAM3gC,EAAU,CACd,CACEC,OAAQ,CACNnsB,OAAQ,EACR4L,MAAOymB,GAAiCjG,aAG5C,CACED,OAAQ,CACNnsB,OAAQ,GACR4L,MAAOihD,EAAezgC,aAG1B,CACED,OAAQ,CACNnsB,OAAQ,GACR4L,MAAOwmB,GAA+BhG,cAItC6hC,QAAyB7vC,EAAWkO,mBACxCuF,GACA,CAAE3F,YAGJ,IAAK,MAAMmtB,KAAK4U,EACd,GAAI5U,EAAE9sB,QAAQ9nB,KAAK7F,OAASsuB,GAAkBE,WAAa,GAAI,CAC7D,MAAM3oB,EAAO40C,EAAE9sB,QAAQ9nB,KAAKrB,MAAM8pB,GAAkBE,YAC9C3D,EAAQ,IAAIqkC,GAChBzmC,GAAYymC,GAA4B/qC,OAAQte,IAElD,MAAO,CAACglB,EAAMmjC,cAAe,IAAI35C,EAAUwW,EAAMskC,oBAClD,CAEH,MAAM,IAAIvtC,GAASD,GAAU8M,oBAC/B,CAIOnP,eAAegwC,GACpB9vC,EACAyuC,GAEA,MAAM3gC,EAAU,CACd,CACEC,OAAQ,CACNnsB,OAAQ,EACR4L,MAAOymB,GAAiCjG,aAG5C,CACED,OAAQ,CACNnsB,OAAQ,GACR4L,MAAOihD,EAAezgC,aAG1B,CACED,OAAQ,CACNnsB,OAAQ,GACR4L,MAAO,IAAIqH,EAAUnR,SAAOE,MAAM,GAAI,IAAIoqB,cAK1C6hC,QAAyB7vC,EAAWkO,mBACxCuF,GACA,CAAE3F,YAGJ,GAAI+hC,EAAiBrvD,OAAS,EAC5B,MAAM,IAAI4hB,GAASD,GAAU4tC,oBAG/B,OAAOF,EAAiB,GAAG1hC,QAAQ9nB,KAAKrB,MAAM8pB,GAAkBE,WAClE,OAKa0gC,GAWX,WAAA38C,CAAYjN,GACVqB,KAAKwoD,mBAAqB7pD,EAAI6pD,mBAC9BxoD,KAAKqnD,cAAgB1oD,EAAI0oD,aAC1B,CAEM,qBAAa/gC,CAClBzN,EACAgwC,GAEA,IAAIC,QAA8BjwC,EAAWiB,eAC3C+uC,EACA,aAEF,IAAKC,EACH,MAAM,IAAI7tC,GAASD,GAAU+tC,uBAU/B,OAPY,IAAIR,GACdzmC,GACEymC,GAA4B/qC,OAC5BsrC,EAAsB5pD,KAAKrB,MAAM8pB,GAAkBE,aAKxD,EAGIlP,eAAe+uC,GACpB7uC,EACAwuC,EACAmB,EACAlB,EACAllC,GAGA,MAAM4lC,EAAuB7tB,GAAkBmtB,EAAe9nD,YACxDyoD,EAAqB7tB,GACzB4tB,EACAn7B,GACAC,IAEF,IAAIk8B,EAAkCpnC,GACpC2mC,GAA4B/qC,OAC5B,IAAI+qC,GAA4B,CAC9BC,mBAAoBA,EAAmBr/B,UACvCk+B,mBAGJ,MAAO,CACLtlC,GACEuK,GACAzR,EAAc7B,UACdivC,EACAX,EACAllC,EACA4lC,EACA,IAAIzsC,SACI1C,EAAWqrC,kCACf8E,EAAgC3vD,OAASsuB,GAAkBE,aAG/D,IAAI1M,GAAU6tC,EAAgC3vD,QAC9CwzB,GACAC,GACAD,IAEFhK,GACEyJ,GACA27B,EACA,IAAI9sC,GAAU,GACd5e,EAAAA,OAAOe,KAAK0rD,GACZn8B,IAGN,CAlFS07B,GAAA/qC,OAAS,CACdnP,OAAQ,CACNm6C,mBAAoB,CAAEjpD,MAAO,CAAEP,KAAM,KAAM/F,IAAK,KAChDouD,cAAe,WCpUR,MAAA4B,GAAUtwC,MAAOE,EAAwBgN,KACpD,MAAMnL,OAAEA,GAAWwgB,GAAiBrV,IAE9B1R,SAAEA,EAAQ4T,SAAEA,SAAmBJ,GAAkBrB,SACrDzN,EACA6B,GAGF,GAAIqN,EACF,OAAOA,EAGT,IAIE,MAAMmhC,QAAmBC,GACvBtwC,EACA1E,EAAS+E,MACT2M,GAEF,QAAmB/mB,IAAfoqD,EACF,OAAOA,EAYT,aANyBE,GACvBvwC,EACA1E,EAAS+E,MACT2M,EAIH,CAAC,MAAOwjC,GACP,GAAIA,aAAepvD,OACA,eAAbovD,EAAIr9C,KACN,MAAMq9C,CAGX,CAED,OAAOl1C,EAAS+E,KAAK,EAGVkwC,GAAqBzwC,MAChCE,EACAK,EACA2M,KAEA,MAAMu6B,EAAY/C,GAAiBx3B,EAAQuJ,GAAOE,KAC5Cg6B,QAAkB1J,GAAa/mC,EAAYgN,GAEjD,KAAKyjC,aAAA,EAAAA,EAAWpqD,MACd,MAAM,IAAI+b,GAASD,GAAUwiC,cAG/B,MAAM+C,EAAU,IAAIr3B,YACds3B,EAAiBjkD,EAAMA,OAACqI,OAAO,CACnC0kD,EAAUpqD,KAAKrB,MAAM,EAAG,IACxBuiD,EAAUzoC,aAENwF,EAAWojC,EAAQ9vC,OAAO+vC,EAAehhD,SAAS,QAGxD,IAFc29C,GAAehgC,EAAUmsC,EAAUpqD,KAAKrB,MAAM,IAAKqb,GAG/D,MAAM,IAAI+B,GAASD,GAAU+mC,kBAG/B,OAAO,IAAIr0C,EAAU47C,EAAUpqD,KAAKrB,MAAM,EAAG,IAAI,EAGtCsrD,GAAqBxwC,MAChCE,EACAK,EACA2M,KAEA,IACE,MAAM0jC,EAAcnH,GAAev8B,EAAQuJ,GAAOE,KAC5Ck6B,QAAoBlH,GAAUh8B,SAASzN,EAAY0wC,GACnDE,EAAcD,EAAYE,iBAC1BnH,EAAQiH,EAAYhH,WACpBd,EAAU8H,EAAY5F,aAE5B,GAE4C,IAA1C6F,EAAYjlD,QAAQ0U,EAAMvB,aAC1B6xC,EAAYzG,OAAO4G,sBAAwBhH,GAAWE,QAE3B,IAA3BN,EAAM/9C,QAAQk9C,IACd8H,EAAYzG,OAAOC,+BAAiCL,GAAWE,OAE/D,OAAO,IAAIn1C,EAAUg0C,EAExB,CAAC,MAAO2H,GACP,GAAIA,aAAepvD,OACA,eAAbovD,EAAIr9C,KACN,MAAMq9C,CAGX,GCrGUO,GAAiB,IAAIl8C,EAChC,sDAGWm8C,GAUX,WAAAj+C,CAAYjN,GACVqB,KAAKoU,IAAMzV,EAAIyV,IACfpU,KAAK4jB,YAAc,IAAIlW,EAAU/O,EAAIilB,YACtC,CAOD,kBAAO9B,CAAY5iB,GACjB,OAAO,IAAI2qD,GAAgB/nC,GAAY9hB,KAAKwd,OAAQte,GACrD,CAQD,qBAAaonB,CAASzN,EAAwB+E,GAC5C,MAAM2I,QAAoB1N,EAAWiB,eAAe8D,GACpD,IAAK2I,IAAgBA,EAAYrnB,KAC/B,MAAM,IAAI+b,GAASD,GAAU8uC,yBAE/B,OAAO9pD,KAAK8hB,YAAYyE,EAAYrnB,KACrC,CAQD,mBAAa6qD,CAAO/wC,EAAsBE,GACxC,aAAaxL,EAAU+Y,mBACrB,CAAClqB,EAAMA,OAACe,KAAK,oBAAqB4b,EAAMvB,YACxCqB,EAEH,CAQD,iBAAOgxC,CAAWhxC,EAAsBE,GACtC,OAAOxL,EAAU0M,uBACf,CAAC7d,EAAAA,OAAOe,KAAK,oBAAqB4b,EAAMvB,YACxCqB,EAEH,EA3DM6wC,GAAArsC,OAAS,CACdnP,OAAQ,CACN+F,IAAK,KACLwP,YAAa,CAAErkB,MAAO,CAAEP,KAAM,KAAM/F,IAAK,OAiElC,MAAAgxD,GAAoBtxC,MAC/BE,EACAK,KAEA,MAAOgxC,GAAUL,GAAgBG,WAC/BJ,GACA,IAAIl8C,EAAUwL,IAGVixC,QAAiBN,GAAgBvjC,SAASzN,EAAYqxC,GAEtDvzC,QAAgB0N,GAAcxL,EAAYsxC,EAASvmC,aACnDwmC,QAAoBnB,GAAQpwC,EAAYlC,GAE9C,MAAO,CACLkP,OAAQskC,EAASvmC,YACjBjN,UACA0zC,OAAQnxC,EAAM9T,OAAOglD,GACtB,EAWUE,GAA6B3xC,MACxCE,EACA0xC,KAEA,MAAM7oC,EAAiC,GAEjC8oC,EAAUD,EAAQrqC,KACrBrlB,GAAMgvD,GAAgBG,WAAWJ,GAAgB/uD,GAAG,KAEjD4vD,SAAoB5xC,EAAWsP,wBAAwBqiC,IAAUtqC,KACpErlB,IACOA,aAAA,EAAAA,EAAGqE,MACA2qD,GAAgB/nC,YAAYjnB,aAAA,EAAAA,EAAGqE,MAAM0kB,YAEvClW,EAAU2V,UAGfqnC,EAAUD,EAAWvqC,KAAKrlB,GAAMigC,GAA2BjgC,KAC3D8vD,EAAOF,EAAWvqC,KAAI,CAACrlB,EAAGuX,IAElB2H,GADCmM,GAAcrrB,GACqB0vD,EAAQn4C,IAAM,MAIzDw4C,EAAaC,EAAMC,SAAmBtjC,QAAQC,IAAI,CACvD5O,EAAWsP,wBAAwBsiC,GACnC5xC,EAAWsP,wBAAwBuiC,GACnC7xC,EAAWsP,wBAAwBwiC,KAGrC,IAAK,IAAI/xD,EAAI,EAAGA,EAAI2xD,EAAQlxD,OAAQT,IAAK,CACvC,MAAMmyD,EAAaH,EAAYhyD,GACzBmiC,EAAM8vB,EAAKjyD,GACXoyD,EAAWF,EAAUlyD,GAE3B,IAAKmyD,IAAehwB,EAAK,CACvBrZ,EAAOhoB,UAAKoF,GACZ,QACD,CAID,GAFoB,IAAI4O,EAAUq9C,aAAA,EAAAA,EAAY7rD,KAAKrB,MAAM,GAAI,KAE7CuH,OAAOmlD,EAAQ3xD,IAAK,CAClC8oB,EAAOhoB,KAAK2gC,GAAmBU,aAAG,EAAHA,EAAK77B,KAAKrB,MAAM,MAC/C,QACD,CAED,IAAKmtD,EAAU,CACbtpC,EAAOhoB,UAAKoF,GACZ,QACD,CAED,MAAM4hD,EAAUpoC,GAAc5H,OAAOs6C,EAAS9rD,MAEf,IAA3BuC,OAAOi/C,EAAQuK,QAMnBvpC,EAAOhoB,UAAKoF,GALV4iB,EAAOhoB,KAAK2gC,GAAmBU,aAAG,EAAHA,EAAK77B,KAAKrB,MAAM,KAMlD,CAED,OAAO6jB,CAAM,MCvLHwpC,IAAZ,SAAYA,GACVA,EAAA,WAAA,cACAA,EAAA,SAAA,WACD,CAHD,CAAYA,KAAAA,GAGX,CAAA,ICGD,MAAMC,GAAiB,IAAIz9C,EACzB,gDAEI09C,GAAe,IAAI19C,EACvB,gDAGW29C,GAAkB,CAACxlC,EAAgBylC,KAC9C,MAAMC,EAAWpxB,GAAkBmxB,GAC7BE,EAAerxB,GAAkBtU,GAEjCiW,EAAY1B,GAChBoxB,OACA1sD,EACA2uB,IAIF,MAAO,CAAEqO,YAAW2vB,MAFNrxB,GAAsBmxB,OAAUzsD,EAAWg9B,GAE9B,EAGhB4vB,GAAmBC,IAC9B,OAAQA,GACN,KAAKT,GAASU,WACZ,OAAOT,GACT,KAAKD,GAASW,SACZ,OAAOT,GACT,QACE,MAAM,IAAInwC,GAASD,GAAU8wC,iBAChC,ECtBUC,GAAkBpzC,MAC7BE,EACAuO,EACAvB,KAEA,MAAMu6B,EAAYgC,GAAev8B,EAAQuB,GACnClO,QAAc+vC,GAAQpwC,EAAYgN,GAClCw8B,QAAkBC,GAAUh8B,SAASzN,EAAYunC,GAEjDqJ,EAAcpH,EAAUqH,iBAE9B,OACExwC,EAAM9T,OAAO,IAAIsI,EAAU+7C,KAC3BpH,EAAUU,OAAO4G,sBAAwBhH,GAAWE,MACpD,ECCEmJ,GAAY,CAIhB1/B,gBAAiB,IAAI5e,EAAU,+CAK/B6e,YAAa,mBAKbC,oBAAqB,IAAI9e,EACvB,gDAMF+e,oBAAqB,IAAI/e,EACvB,+CAMFkf,qBAAsB,IAAIlf,EACxB,gDAGFuf,UAAW,IAAIvf,EAAU,gDAEzBwf,UAAW,CACT,IAAIxf,EAAU,iDAGhByf,gBAAiB,IAAInN,IAAoB,CACvC,CAAC,+CAAgD,QACjD,CAAC,+CAAgD,QACjD,CAAC,8CAA+C,OAChD,CAAC,8CAA+C,QAChD,CAAC,+CAAgD,SAGnDoN,WAAY,IAAIpN,IAAgD,CAC9D,CACE,+CACA,CACEqN,MAAO,+CACPC,QAAS,iDAGb,CACE,+CACA,CACED,MAAO,+CACPC,QAAS,iDAGb,CACE,8CACA,CACED,MAAO,+CACPC,QAAS,iDAGb,CACE,+CACA,CACED,MAAO,+CACPC,QAAS,iDAGb,CACE,+CACA,CACED,MAAO,+CACPC,QAAS,mDAKfC,iBAAkB,IAAI7f,EACpB,gDAGF8f,YAAa,IAAI9f,EAAU,gDAGvB0sB,GAAwB,CAC5B/X,EACA2L,EACAvL,KAEA,MAAMwL,EAAQ,CAAC5L,GACX2L,EACFC,EAAMv0B,KAAKs0B,EAAUrW,YAErBsW,EAAMv0B,KAAK6C,EAAAA,OAAOE,MAAM,KAEtBgmB,EACFwL,EAAMv0B,KAAK+oB,EAAW9K,YAEtBsW,EAAMv0B,KAAK6C,EAAAA,OAAOE,MAAM,KAE1B,MAAOqmB,GAAkBpV,EAAU0M,uBACjC6T,EACA+9B,GAAU1/B,iBAEZ,OAAOxJ,CAAc,EAuBjBkY,GAAc,CAClBhvB,EACAyiB,EAAoBu9B,GAAUx/B,oBAC9ByO,KAEA,IAAInN,EAASqM,GAAkBnuB,GAE/B,MAAO,CAAE0O,OADI0f,GAAsBtM,EAAQmN,EAAUxM,GACpCX,SAAQ,EAGrBoN,GAAoBrV,IACpBA,EAAO8I,SAAS,UAClB9I,EAASA,EAAOhoB,MAAM,GAAI,IAG5B,MAAM+wB,EAAW/I,EAAO7Y,MAAM,KAC9B,GAAwB,IAApB4hB,EAASv1B,OAAc,CACzB,MACMmR,EADS,KACI5F,OAAOgqB,EAAS,KAC3BlU,OAAQmU,GAAcmM,GAAYpM,EAAS,IAEnD,MAAO,IADQoM,GAAYxwB,EAAKqkB,GACZC,OAAO,EAAML,OAAQI,EAC1C,CAAM,GAAID,EAASv1B,QAAU,EAC5B,MAAM,IAAI4hB,GAASD,GAAUkU,cAG/B,MAAO,IADQ8L,GAAYnV,EAAQmmC,GAAUx/B,qBACzBsC,OAAO,EAAOL,YAAQ3vB,EAAW,EAGjD+8B,GAAoB,CAAChW,EAAgBiJ,KACzC,MAAMpU,OAAEA,EAAM+T,OAAEA,GAAWyM,GAAiBrV,GACtCsI,EAAsBgM,GAAkBzf,EAAOmM,YAMrD,OAL6BuT,GAC3BjM,EACA69B,GAAUp/B,qBACVkC,EAAQL,OAAS3vB,EAEQ,EAgB7B6Z,eAAeorC,GACblrC,EACA7M,EACAuW,EACAH,EACA4hC,EACA1hC,EACA0L,EACAvJ,GAEA,MAAMpC,QAAoBwL,GAAc7hB,GAClC8W,QAAuBsX,GAC3B/X,EACA2L,EACAvJ,GAGIw/B,EAAU3hC,SAENzJ,EAAWqrC,kCAAkC3hC,GAEvD,IAAIG,EACJ,GAAI+B,EAAY,CACd,MAAQtQ,SAAUgwC,SAAwBv2B,GACxC/U,EACA4L,GAEF/B,EAAkByhC,EAAcjrC,KACjC,CAgBD,OAdwB6I,GACtBiqC,GAAU1/B,gBACVzR,EAAc7B,UACd8J,EACAkhC,EACA5hC,EACAC,EACA,IAAI9G,GAAU0oC,GACd,IAAI9oC,GAAUoH,GACdyL,EACAvJ,EACA/B,EAIJ,CAmJA,MAgGM2iC,GAAoB1sC,MACxBiL,EACA5X,EACAuY,EACAE,EACAC,KAEA,IAAKZ,SAAsBpW,EAAU+Y,mBACnC,CAACulC,GAAUv/B,oBAAoB9U,YAC/Bq0C,GAAUv/B,qBAGR0B,QAA4BN,GAAcjK,EAAYiD,YACtDhD,EAAuBuW,GACzBjM,EACArK,EACAW,GAoBF,MAAO,CAAC,GAFW,CAfe,IAAIN,GAAyB,CAC7DnY,SACCyX,eACDuoC,GAAUv/B,oBACVu/B,GAAU1/B,gBACV0/B,GAAUx/B,oBACV3I,EACAhJ,EAAc7B,UACd8K,EACAS,EACA6gC,EACA3gC,EACAC,IAKuB,EAuIdunC,GAAS,CACpBhtC,MAAO,CACLmb,yBACA/V,cAvhBkB1L,MACpBE,EACA+K,KAEA,MAAMuK,EAAsBgM,GAAkBvW,EAAYiD,YACpDhD,EAAuBuW,GAC3BjM,EACA69B,GAAUp/B,uBAGNzY,SAAEA,SAAmBwT,GAAkBrB,SAC3CzN,EACAgL,GAEF,IAAK1P,EAASjV,KACZ,MAAM,IAAI+b,GAASD,GAAUoT,eAE/B,OAAOiM,GAAmBlmB,EAASjV,KAAK,EAugBtC87B,eACAE,oBACAW,sBAEFmwB,aACAE,SAAU,CACRnI,sBACAK,uBA7ZJzrC,eACEE,EACA7M,EACAvR,EACAsoB,EACAiL,EACAvL,GAEA,MAAMJ,QAAoBwL,GAAc7hB,GAClC8W,EAAiBsX,GACrB/X,EACA2L,EACAvL,GAGF,IAAIk/B,EAgBJ,OAdEA,EADE3zB,UAGcrG,GAAkBrB,SAASzN,EAAYiK,IACpD3O,SAAS+E,MAGM2J,GAClBmpC,GAAU1/B,gBACVxJ,EACA,IAAI3H,GAAU1gB,GACdsoB,EACA4+B,EAIJ,EA8XI0C,sBAjXJ1rC,eACEE,EACA7M,EACAs4C,EACAt2B,EACAvL,EACAW,GAEA,MAAMf,QAAoBwL,GAAc7hB,GAClC8W,EAAiBsX,GACrB/X,EACA2L,EACAvL,GAGF,IAAI8hC,EAmBJ,OAjBEA,EADEv2B,UAIMrG,GAAkBrB,SAASzN,EAAYiK,IAC7C3O,SAAS+E,MAGS+J,GACpB+oC,GAAU1/B,gBACVxJ,EACAwhC,EACAC,EACAv2B,EACAvL,EACAW,EAIJ,EA+UIohC,mBAnUJ7rC,eACEE,EACA7M,EACAuX,EACAyK,EACAvL,GAEA,MAAMJ,QAAoBwL,GAAc7hB,GAClC8W,EAAiBsX,GACrB/X,EACA2L,EACAvL,GAGF,IAAIuhC,EAeJ,OAbEA,EADEh2B,UAGiBrG,GAAkBrB,SAASzN,EAAYiK,IACvD3O,SAAS+E,MAGiBoK,GAC7B0oC,GAAU1/B,gBACVxJ,EACAS,EACAygC,EAIJ,EAsSIS,mBAzRuB9rC,MACzBE,EACA7M,EACAuW,EACAwB,EACAC,EACAhK,EAAOgyC,GAAU/+B,UACjBy3B,KAGA,GAAI14C,EAAKlG,SAAS,MAAQkG,EAAKxG,OAAO1F,gBAAkBkM,EACtD,MAAM,IAAIiP,GAASD,GAAU2pC,eAE/B,MAAOC,GAAMl3C,EAAU0M,uBACrB,CAAC4xC,GAAUv/B,oBAAoB9U,YAC/Bq0C,GAAUv/B,qBAGNqB,EAASqM,GAAkBnuB,GAC3B4X,EAAcwW,GAClBtM,OACAhvB,EACAktD,GAAUx/B,qBAGN2B,EAAsBgM,GAAkBvW,EAAYiD,YACpDhD,EAAuBuW,GAAsBjM,EAAqBy2B,IAEjEC,GAAiBn3C,EAAU0M,uBAChC,CAACwJ,EAAYjM,YACbq0C,GAAUv/B,qBAGNq4B,EAASkH,GAAU9+B,UAAUmzB,WAAWxlD,GAAM6pD,aAAW,EAAXA,EAAat/C,OAAOvK,KACxE,IAAIkqD,EAEJ,MAAMC,EAAgC,GAEtC,IAAgB,IAAZF,GAAmBJ,EAAa,CAClCK,EAAkBhrC,GAA8BC,EAAM0qC,GAAa,GACnE,MAAM9xC,QAAYiG,EAAWiB,eAAeirC,GAC5C,KAAKnyC,aAAA,EAAAA,EAAK1T,MAAM,CACd,MAAM+lD,EAAK5qC,GACT0J,EACAghC,EACAL,EACA1qC,GAEFgrC,EAAItrD,KAAKurD,EACV,CACF,CAED,MAAMhgC,EAAQlL,GAA8BC,EAAMgyC,GAAUx+B,aACtD03B,EAAW+G,GAAOD,UAAU5+B,WAAWjpB,IAAI6V,EAAK6M,YAEtD,IAAKq+B,EACH,MAAM,IAAIjqC,GAASD,GAAUmqC,kBAG/B,MAAMF,EAAK,IAAItgC,GAAoB,CACjC3Y,OACAuW,QACAqC,gBAA2B,GAAXkgC,EAAeA,EAAS,OACvCrhC,eACDuoC,GAAUv/B,oBACVu/B,GAAU1/B,gBACV0/B,GAAUx/B,oBACV5I,EACAC,EACAhJ,EAAc7B,UACd4rC,EACA7gC,EACAC,EACAgoC,GAAUz+B,iBACV,IAAI7f,EAAUw3C,EAAS53B,SACvB,IAAI5f,EAAUw3C,EAAS73B,OACvBpI,EACAxX,EACA23C,EACAP,EACAE,GAIF,OAFAC,EAAItrD,KAAKurD,GAEF,CAAC,GAAID,EAAI,EAsMdK,qBACAC,gBA7IoB3sC,MACtBE,EACA0sC,EACArsC,EACAqJ,EAAQ,OAER,MAAMyiC,EAAgC,GAChCx6C,EAAM+6C,EAAUv4C,MAAM,KAAK,GACjC,IAAKxC,EACH,MAAM,IAAIyQ,GAASD,GAAUwqC,kBAG/B,MAAM/2B,OAAEA,EAAM/T,OAAEA,GAAWwgB,GAAiBqqB,GAGtCjjC,QAAiBzJ,EAAWqrC,kCAChC3hC,EAAQoF,GAAkBE,YAGtB49B,QAAkB1B,GACtBlrC,EACA,KAAKjU,OAAO4F,GACZ+X,EACArJ,EACAA,EACAoJ,OACAxjB,EACA2vB,GAEFu2B,EAAItrD,KAAK+rD,GAGT,MAAMC,EAAa7pB,GAAkB0pB,GAAW,GAC1CtsC,QAAaJ,EAAWiB,eAAe4rC,GAC7C,KAAKzsC,aAAA,EAAAA,EAAM/Z,MAAM,CACf,OAASymD,SAAoBN,GAC3B3qC,EACA,KAAK9V,OAAO4F,GACZ0O,EACAuV,EACAvV,GAEF8rC,EAAItrD,QAAQisD,EACb,CAED,MAAO,CAAC,GAAIX,EAAI,EAiGdgC,WA9Fe,CAACnhC,EAAgB3M,EAAkBzT,KACpD,MAAMiV,OAAEA,GAAWwgB,GAAiBrV,IAC7B3B,GAASxW,EAAU0M,uBACxB,CAACM,EAAO/C,YACRq0C,GAAUv/B,sBAEL3G,GAAkBpY,EAAU0M,uBACjC,CAACM,EAAO/C,WAAY7d,WAAWwD,KAAK,CAAC,EAAG,KACxC0uD,GAAUv/B,qBAeZ,OAZW,IAAI9G,IAAkBlC,eAC/BuoC,GAAUv/B,oBACVu/B,GAAU1/B,gBACVzR,EAAc7B,UACd0B,EACAmhB,GAAkBhW,GAClBC,EACA5B,EACA8nC,GAAUp/B,qBACV1T,EACAzT,EAEO,EAwEPyhD,kBA1DsBvuC,MACxBE,EACA0sC,EACAjB,EACA6C,EACAjuC,KAEA,MAAMwB,OAAEA,EAAMoU,MAAEA,EAAKL,OAAEA,GAAWyM,GAAiBqqB,GAEnD,IAAK92B,IAAWK,EACd,MAAM,IAAI7T,GAASD,GAAUwqC,kBAG/B,IAAKtsC,EAAO,CACV,MAAM/E,SAAEA,SAAmBwT,GAAkBrB,SAASzN,EAAY6B,GAClExB,EAAQ/E,EAAS+E,KAClB,CAED,IAAIuJ,EACAC,EAEAykC,IACF1kC,EAAagM,EACb/L,SAAyBiF,GAAkBrB,SAASzN,EAAY4V,IAC7Dta,SAAS+E,OAad,OAVW+J,GACT+oC,GAAU1/B,gBACV5R,EACA4pC,EACAprC,OACApa,EACA2jB,EACAC,EAGO"}