1 line
1.7 MiB
1 line
1.7 MiB
{"version":3,"file":"ethers.umd.js","sources":["../../../node_modules/bn.js/lib/bn.js","../../logger/src.ts/_version.ts","../../logger/src.ts/index.ts","../../bytes/src.ts/_version.ts","../../bytes/src.ts/index.ts","../../bignumber/src.ts/_version.ts","../../bignumber/src.ts/bignumber.ts","../../bignumber/src.ts/fixednumber.ts","../../bignumber/src.ts/index.ts","../../properties/src.ts/_version.ts","../../properties/src.ts/index.ts","../../abi/src.ts/_version.ts","../../abi/src.ts/fragments.ts","../../abi/src.ts/coders/abstract-coder.ts","../../../node_modules/js-sha3/src/sha3.js","../../keccak256/src.ts/index.ts","../../rlp/src.ts/_version.ts","../../rlp/src.ts/index.ts","../../address/src.ts/_version.ts","../../address/src.ts/index.ts","../../abi/src.ts/coders/address.ts","../../abi/src.ts/coders/anonymous.ts","../../abi/src.ts/coders/array.ts","../../abi/src.ts/coders/boolean.ts","../../abi/src.ts/coders/bytes.ts","../../abi/src.ts/coders/fixed-bytes.ts","../../abi/src.ts/coders/null.ts","../../constants/src.ts/addresses.ts","../../constants/src.ts/bignumbers.ts","../../constants/src.ts/hashes.ts","../../constants/src.ts/strings.ts","../../constants/src.ts/index.ts","../../abi/src.ts/coders/number.ts","../../strings/src.ts/_version.ts","../../strings/src.ts/utf8.ts","../../strings/src.ts/bytes32.ts","../../strings/src.ts/idna.ts","../../strings/src.ts/index.ts","../../abi/src.ts/coders/string.ts","../../abi/src.ts/coders/tuple.ts","../../abi/src.ts/abi-coder.ts","../../hash/src.ts/id.ts","../../hash/src.ts/_version.ts","../../hash/src.ts/namehash.ts","../../hash/src.ts/message.ts","../../hash/src.ts/typed-data.ts","../../hash/src.ts/index.ts","../../abi/src.ts/interface.ts","../../abi/src.ts/index.ts","../../abstract-provider/src.ts/_version.ts","../../abstract-provider/src.ts/index.ts","../../abstract-signer/src.ts/_version.ts","../../abstract-signer/src.ts/index.ts","../../contracts/src.ts/_version.ts","../../contracts/src.ts/index.ts","../../basex/src.ts/index.ts","../../../node_modules/minimalistic-assert/index.js","../../../node_modules/inherits/inherits_browser.js","../../../node_modules/hash.js/lib/hash/utils.js","../../../node_modules/hash.js/lib/hash/common.js","../../../node_modules/hash.js/lib/hash/sha/common.js","../../../node_modules/hash.js/lib/hash/sha/1.js","../../../node_modules/hash.js/lib/hash/sha/256.js","../../../node_modules/hash.js/lib/hash/sha/224.js","../../../node_modules/hash.js/lib/hash/sha/512.js","../../../node_modules/hash.js/lib/hash/sha/384.js","../../../node_modules/hash.js/lib/hash/sha.js","../../../node_modules/hash.js/lib/hash/ripemd.js","../../../node_modules/hash.js/lib/hash/hmac.js","../../../node_modules/hash.js/lib/hash.js","../../sha2/src.ts/types.ts","../../sha2/src.ts/_version.ts","../../sha2/src.ts/browser-sha2.ts","../../sha2/src.ts/index.ts","../../pbkdf2/src.ts/browser-pbkdf2.ts","../../pbkdf2/src.ts/index.ts","../../../node_modules/minimalistic-crypto-utils/lib/utils.js","../../../node_modules/elliptic/lib/elliptic/utils.js","../../../node_modules/elliptic/lib/elliptic/curve/base.js","../../../node_modules/elliptic/lib/elliptic/curve/short.js","../../../node_modules/elliptic/lib/elliptic/curve/index.js","../../../node_modules/elliptic/lib/elliptic/curves.js","../../../node_modules/hmac-drbg/lib/hmac-drbg.js","../../../node_modules/elliptic/lib/elliptic/ec/key.js","../../../node_modules/elliptic/lib/elliptic/ec/signature.js","../../../node_modules/elliptic/lib/elliptic/ec/index.js","../../../node_modules/elliptic/lib/elliptic.js","../../signing-key/src.ts/elliptic.ts","../../signing-key/src.ts/_version.ts","../../signing-key/src.ts/index.ts","../../transactions/src.ts/_version.ts","../../transactions/src.ts/index.ts","../../wordlists/src.ts/_version.ts","../../wordlists/src.ts/wordlist.ts","../../wordlists/src.ts/lang-cz.ts","../../wordlists/src.ts/lang-en.ts","../../wordlists/src.ts/lang-es.ts","../../wordlists/src.ts/lang-fr.ts","../../wordlists/src.ts/lang-ja.ts","../../wordlists/src.ts/lang-ko.ts","../../wordlists/src.ts/lang-it.ts","../../wordlists/src.ts/lang-zh.ts","../../wordlists/src.ts/wordlists.ts","../../wordlists/src.ts/index.ts","../../hdnode/src.ts/_version.ts","../../hdnode/src.ts/index.ts","../../random/src.ts/_version.ts","../../random/src.ts/browser-random.ts","../../random/src.ts/shuffle.ts","../../random/src.ts/index.ts","../../../node_modules/aes-js/index.js","../../json-wallets/src.ts/_version.ts","../../json-wallets/src.ts/utils.ts","../../json-wallets/src.ts/crowdsale.ts","../../json-wallets/src.ts/inspect.ts","../../../node_modules/scrypt-js/scrypt.js","../../json-wallets/src.ts/keystore.ts","../../json-wallets/src.ts/index.ts","../../wallet/src.ts/_version.ts","../../wallet/src.ts/index.ts","../../networks/src.ts/_version.ts","../../networks/src.ts/index.ts","../../base64/src.ts/browser-base64.ts","../../base64/src.ts/index.ts","../../web/src.ts/_version.ts","../../web/src.ts/browser-geturl.ts","../../web/src.ts/index.ts","../../../node_modules/bech32/index.js","../../providers/src.ts/_version.ts","../../providers/src.ts/formatter.ts","../../providers/src.ts/base-provider.ts","../../providers/src.ts/json-rpc-provider.ts","../../providers/src.ts/browser-ws.ts","../../providers/src.ts/websocket-provider.ts","../../providers/src.ts/url-json-rpc-provider.ts","../../providers/src.ts/alchemy-provider.ts","../../providers/src.ts/cloudflare-provider.ts","../../providers/src.ts/etherscan-provider.ts","../../providers/src.ts/fallback-provider.ts","../../providers/src.ts/browser-ipc-provider.ts","../../providers/src.ts/infura-provider.ts","../../providers/src.ts/nodesmith-provider.ts","../../providers/src.ts/pocket-provider.ts","../../providers/src.ts/web3-provider.ts","../../providers/src.ts/index.ts","../../solidity/src.ts/index.ts","../../units/src.ts/_version.ts","../../units/src.ts/index.ts","../src.ts/utils.ts","../src.ts/_version.ts","../src.ts/ethers.ts","../src.ts/index.ts"],"sourcesContent":["(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 Buffer = require('buffer').Buffer;\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 }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\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 parseHex (str, start, end) {\n var r = 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 <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\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 var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 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 r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\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\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 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 BN.prototype.inspect = 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 if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\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.modn(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);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\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 this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\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] & (1 << wbit)) >>> wbit;\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 var fftm = new FFTM();\n return fftm.mulp(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 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 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.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(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.modn = function modn (num) {\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 acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\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 return this.strip();\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 BN v4 instance\n r.strip();\n } else {\n // r is 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 return a.umod(this.m)._forceRed(this);\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","export const version = \"logger/5.0.8\";\n","\"use strict\";\n\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\n\nconst LogLevels: { [ name: string ]: number } = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\n\nimport { version } from \"./_version\";\n\nlet _globalLogger: Logger = null;\n\nfunction _checkNormalize(): string {\n try {\n const missing: Array<string> = [ ];\n\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n };\n } catch(error) {\n missing.push(form);\n }\n });\n\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\")\n }\n } catch (error) {\n return error.message;\n }\n\n return null;\n}\n\nconst _normalizeError = _checkNormalize();\n\nexport enum LogLevel {\n DEBUG = \"DEBUG\",\n INFO = \"INFO\",\n WARNING = \"WARNING\",\n ERROR = \"ERROR\",\n OFF = \"OFF\"\n}\n\n\nexport enum ErrorCode {\n\n ///////////////////\n // Generic Errors\n\n // Unknown Error\n UNKNOWN_ERROR = \"UNKNOWN_ERROR\",\n\n // Not Implemented\n NOT_IMPLEMENTED = \"NOT_IMPLEMENTED\",\n\n // Unsupported Operation\n // - operation\n UNSUPPORTED_OPERATION = \"UNSUPPORTED_OPERATION\",\n\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n NETWORK_ERROR = \"NETWORK_ERROR\",\n\n // Some sort of bad response from the server\n SERVER_ERROR = \"SERVER_ERROR\",\n\n // Timeout\n TIMEOUT = \"TIMEOUT\",\n\n ///////////////////\n // Operational Errors\n\n // Buffer Overrun\n BUFFER_OVERRUN = \"BUFFER_OVERRUN\",\n\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n NUMERIC_FAULT = \"NUMERIC_FAULT\",\n\n\n ///////////////////\n // Argument Errors\n\n // Missing new operator to an object\n // - name: The name of the class\n MISSING_NEW = \"MISSING_NEW\",\n\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n INVALID_ARGUMENT = \"INVALID_ARGUMENT\",\n\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n MISSING_ARGUMENT = \"MISSING_ARGUMENT\",\n\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n UNEXPECTED_ARGUMENT = \"UNEXPECTED_ARGUMENT\",\n\n\n ///////////////////\n // Blockchain Errors\n\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n CALL_EXCEPTION = \"CALL_EXCEPTION\",\n\n // Insufficien funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n INSUFFICIENT_FUNDS = \"INSUFFICIENT_FUNDS\",\n\n // Nonce has already been used\n // - transaction: the transaction attempted\n NONCE_EXPIRED = \"NONCE_EXPIRED\",\n\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n REPLACEMENT_UNDERPRICED = \"REPLACEMENT_UNDERPRICED\",\n\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n UNPREDICTABLE_GAS_LIMIT = \"UNPREDICTABLE_GAS_LIMIT\",\n};\n\nexport class Logger {\n readonly version: string;\n\n static errors = ErrorCode;\n\n static levels = LogLevel;\n\n constructor(version: string) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n\n _log(logLevel: LogLevel, args: Array<any>): void {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) { return; }\n console.log.apply(console, args);\n }\n\n debug(...args: Array<any>): void {\n this._log(Logger.levels.DEBUG, args);\n }\n\n info(...args: Array<any>): void {\n this._log(Logger.levels.INFO, args);\n }\n\n warn(...args: Array<any>): void {\n this._log(Logger.levels.WARNING, args);\n }\n\n makeError(message: string, code?: ErrorCode, params?: any): Error {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, { });\n }\n\n if (!code) { code = Logger.errors.UNKNOWN_ERROR; }\n if (!params) { params = {}; }\n\n const messageDetails: Array<string> = [];\n Object.keys(params).forEach((key) => {\n try {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key]));\n } catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${ code }`);\n messageDetails.push(`version=${ this.version }`);\n\n const reason = message;\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n\n // @TODO: Any??\n const error: any = new Error(message);\n error.reason = reason;\n error.code = code\n\n Object.keys(params).forEach(function(key) {\n error[key] = params[key];\n });\n\n return error;\n }\n\n throwError(message: string, code?: ErrorCode, params?: any): never {\n throw this.makeError(message, code, params);\n }\n\n throwArgumentError(message: string, name: string, value: any): never {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n\n assert(condition: any, message: string, code?: ErrorCode, params?: any): void {\n if (!!condition) { return; }\n this.throwError(message, code, params);\n }\n\n assertArgument(condition: any, message: string, name: string, value: any): void {\n if (!!condition) { return; }\n this.throwArgumentError(message, name, value);\n }\n\n checkNormalize(message?: string): void {\n if (message == null) { message = \"platform missing String.prototype.normalize\"; }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n\n checkSafeUint53(value: number, message?: string): void {\n if (typeof(value) !== \"number\") { return; }\n\n if (message == null) { message = \"value not safe\"; }\n\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n\n checkArgumentCount(count: number, expectedCount: number, message?: string): void {\n if (message) {\n message = \": \" + message;\n } else {\n message = \"\";\n }\n\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n\n checkNew(target: any, kind: any): void {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n checkAbstract(target: any, kind: any): void {\n if (target === kind) {\n this.throwError(\n \"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { name: target.name, operation: \"new\" }\n );\n } else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n static globalLogger(): Logger {\n if (!_globalLogger) { _globalLogger = new Logger(version); }\n return _globalLogger;\n }\n\n static setCensorship(censorship: boolean, permanent?: boolean): void {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n if (_permanentCensorErrors) {\n if (!censorship) { return; }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n\n static setLogLevel(logLevel: LogLevel): void {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n\n static from(version: string): Logger {\n return new Logger(version);\n }\n}\n","export const version = \"bytes/5.0.8\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\nexport type Bytes = ArrayLike<number>;\n\nexport type BytesLike = Bytes | string;\n\nexport type DataOptions = {\n allowMissingPrefix?: boolean;\n hexPad?: \"left\" | \"right\" | null;\n};\n\nexport interface Hexable {\n toHexString(): string;\n}\n\n\n/*\nexport interface HexString {\n length: number;\n substring: (start: number, end?: number) => string;\n\n [index: number]: string;\n}\n*/\n\nexport type SignatureLike = {\n r: string;\n s?: string;\n _vs?: string,\n recoveryParam?: number;\n v?: number;\n} | BytesLike;\n\nexport interface Signature {\n r: string;\n\n s: string;\n _vs: string,\n\n recoveryParam: number;\n v: number;\n}\n\n///////////////////////////////\n\n\nfunction isHexable(value: any): value is Hexable {\n return !!(value.toHexString);\n}\n\nfunction addSlice(array: Uint8Array): Uint8Array {\n if (array.slice) { return array; }\n\n array.slice = function() {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n }\n\n return array;\n}\n\nexport function isBytesLike(value: any): value is BytesLike {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\n\nexport function isBytes(value: any): value is Bytes {\n if (value == null) { return false; }\n\n if (value.constructor === Uint8Array) { return true; }\n if (typeof(value) === \"string\") { return false; }\n if (value.length == null) { return false; }\n\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (typeof(v) !== \"number\" || v < 0 || v >= 256 || (v % 1)) {\n return false;\n }\n }\n return true;\n}\n\n\nexport function arrayify(value: BytesLike | Hexable | number, options?: DataOptions): Uint8Array {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) { result.push(0); }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { value = value.toHexString(); }\n\n if (isHexString(value)) {\n let hex = (<string>value).substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0x0\" + hex.substring(2);\n } else if (options.hexPad === \"right\") {\n hex += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\n\nexport function concat(items: Array<BytesLike>): Uint8Array {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n\n const result = new Uint8Array(length);\n\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n\n return addSlice(result);\n}\n\nexport function stripZeros(value: BytesLike): Uint8Array {\n let result: Uint8Array = arrayify(value);\n\n if (result.length === 0) { return result; }\n\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) { start++ }\n\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n\n return result;\n}\n\nexport function zeroPad(value: BytesLike, length: number): Uint8Array {\n value = arrayify(value);\n\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\n\n\nexport function isHexString(value: any, length?: number): boolean {\n if (typeof(value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false\n }\n if (length && value.length !== 2 + 2 * length) { return false; }\n return true;\n}\n\nconst HexCharacters: string = \"0123456789abcdef\";\n\nexport function hexlify(value: BytesLike | Hexable | number, options?: DataOptions): string {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0x0f] + hex;\n value = Math.floor(value / 16);\n }\n\n if (hex.length) {\n if (hex.length % 2) { hex = \"0\" + hex; }\n return \"0x\" + hex;\n }\n\n return \"0x00\";\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { return value.toHexString(); }\n\n if (isHexString(value)) {\n if ((<string>value).length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + (<string>value).substring(2);\n } else if (options.hexPad === \"right\") {\n value += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return (<string>value).toLowerCase();\n }\n\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data: BytesLike) {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n\n return (data.length - 2) / 2;\n}\n\nexport function hexDataSlice(data: BytesLike, offset: number, endOffset?: number): string {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data );\n }\n\n offset = 2 + 2 * offset;\n\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n\n return \"0x\" + data.substring(offset);\n}\n\nexport function hexConcat(items: Array<BytesLike>): string {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\n\nexport function hexValue(value: BytesLike | Hexable | number): string {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") { return \"0x0\"; }\n return trimmed;\n}\n\nexport function hexStripZeros(value: BytesLike): string {\n if (typeof(value) !== \"string\") { value = hexlify(value); }\n\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") { offset++; }\n return \"0x\" + value.substring(offset);\n}\n\nexport function hexZeroPad(value: BytesLike, length: number): string {\n if (typeof(value) !== \"string\") {\n value = hexlify(value);\n } else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n\n return value;\n}\n\nexport function splitSignature(signature: SignatureLike): Signature {\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0\n };\n\n if (isBytesLike(signature)) {\n const bytes: Uint8Array = arrayify(signature);\n if (bytes.length !== 65) {\n logger.throwArgumentError(\"invalid signature string; must be 65 bytes\", \"signature\", signature);\n }\n\n // Get the r, s and v\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n } else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) { bytes[32] |= 0x80; }\n result._vs = hexlify(bytes.slice(32, 64))\n\n } else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1: 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n } else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n } else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n } else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n } else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n } else if (result.recoveryParam !== (1 - (result.v % 2))) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n } else {\n result.r = hexZeroPad(result.r, 32);\n }\n\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n } else {\n result.s = hexZeroPad(result.s, 32);\n }\n\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) { vs[0] |= 0x80; }\n const _vs = hexlify(vs);\n\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n } else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n\n return result;\n}\n\nexport function joinSignature(signature: SignatureLike): string {\n signature = splitSignature(signature);\n\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\": \"0x1b\")\n ]));\n}\n\n","export const version = \"bignumber/5.0.12\";\n","\"use strict\";\n\n/**\n * BigNumber\n *\n * A wrapper around the BN.js object. We use the BN.js library\n * because it is used by elliptic, so it is required regardless.\n *\n */\n\nimport _BN from \"bn.js\";\nimport BN = _BN.BN;\n\nimport { Bytes, Hexable, hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst _constructorGuard = { };\n\nconst MAX_SAFE = 0x1fffffffffffff;\n\n\nexport type BigNumberish = BigNumber | Bytes | string | number;\n\nexport function isBigNumberish(value: any): value is BigNumberish {\n return (value != null) && (\n BigNumber.isBigNumber(value) ||\n (typeof(value) === \"number\" && (value % 1) === 0) ||\n (typeof(value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n isHexString(value) ||\n (typeof(value) === \"bigint\") ||\n isBytes(value)\n );\n}\n\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\n\nexport class BigNumber implements Hexable {\n readonly _hex: string;\n readonly _isBigNumber: boolean;\n\n constructor(constructorGuard: any, hex: string) {\n logger.checkNew(new.target, BigNumber);\n\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n });\n }\n\n this._hex = hex;\n this._isBigNumber = true;\n\n Object.freeze(this);\n }\n\n fromTwos(value: number): BigNumber {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n\n toTwos(value: number): BigNumber {\n return toBigNumber(toBN(this).toTwos(value));\n }\n\n abs(): BigNumber {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n\n add(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n\n sub(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n\n div(other: BigNumberish): BigNumber {\n const o = BigNumber.from(other);\n if (o.isZero()) {\n throwFault(\"division by zero\", \"div\");\n }\n return toBigNumber(toBN(this).div(toBN(other)));\n }\n\n mul(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n\n mod(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"cannot modulo negative values\", \"mod\");\n }\n return toBigNumber(toBN(this).umod(value));\n }\n\n pow(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"cannot raise to negative values\", \"pow\");\n }\n return toBigNumber(toBN(this).pow(value));\n }\n\n and(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"cannot 'and' negative values\", \"and\");\n }\n return toBigNumber(toBN(this).and(value));\n }\n\n or(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"cannot 'or' negative values\", \"or\");\n }\n return toBigNumber(toBN(this).or(value));\n }\n\n xor(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"cannot 'xor' negative values\", \"xor\");\n }\n return toBigNumber(toBN(this).xor(value));\n }\n\n mask(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"cannot mask negative values\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n\n shl(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"cannot shift negative values\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n\n shr(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"cannot shift negative values\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n\n eq(other: BigNumberish): boolean {\n return toBN(this).eq(toBN(other));\n }\n\n lt(other: BigNumberish): boolean {\n return toBN(this).lt(toBN(other));\n }\n\n lte(other: BigNumberish): boolean {\n return toBN(this).lte(toBN(other));\n }\n\n gt(other: BigNumberish): boolean {\n return toBN(this).gt(toBN(other));\n }\n\n gte(other: BigNumberish): boolean {\n return toBN(this).gte(toBN(other));\n }\n\n isNegative(): boolean {\n return (this._hex[0] === \"-\");\n }\n\n isZero(): boolean {\n return toBN(this).isZero();\n }\n\n toNumber(): number {\n try {\n return toBN(this).toNumber();\n } catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n\n toString(): string {\n // Lots of people expect this, which we do not support, so check (See: #889)\n if (arguments.length > 0) {\n if (arguments[0] === 10) {\n if (!_warnedToStringRadix) {\n _warnedToStringRadix = true;\n logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n }\n } else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, { });\n } else {\n logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, { });\n }\n }\n return toBN(this).toString(10);\n }\n\n toHexString(): string {\n return this._hex;\n }\n\n toJSON(key?: string): any {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n\n static from(value: any): BigNumber {\n if (value instanceof BigNumber) { return value; }\n\n if (typeof(value) === \"string\") {\n if (value.match(/^-?0x[0-9a-f]+$/i)) {\n return new BigNumber(_constructorGuard, toHex(value));\n }\n\n if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n\n if (typeof(value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n\n return BigNumber.from(String(value));\n }\n\n const anyValue = <any>value;\n\n if (typeof(anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n\n if (anyValue) {\n\n // Hexable interface (takes piority)\n if (anyValue.toHexString) {\n const hex = anyValue.toHexString();\n if (typeof(hex) === \"string\") {\n return BigNumber.from(hex);\n }\n\n } else {\n // For now, handle legacy JSON-ified values (goes away in v6)\n let hex = anyValue._hex;\n\n // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\n }\n\n if (typeof(hex) === \"string\") {\n if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n return BigNumber.from(hex);\n }\n }\n }\n }\n\n return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n\n static isBigNumber(value: any): value is BigNumber {\n return !!(value && value._isBigNumber);\n }\n}\n\n// Normalize the hex string\nfunction toHex(value: string | BN): string {\n\n // For BN, call on the hex string\n if (typeof(value) !== \"string\") {\n return toHex(value.toString(16));\n }\n\n // If negative, prepend the negative sign to the normalized positive value\n if (value[0] === \"-\") {\n // Strip off the negative sign\n value = value.substring(1);\n\n // Cannot have mulitple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") { logger.throwArgumentError(\"invalid hex\", \"value\", value); }\n\n // Call toHex on the positive component\n value = toHex(value);\n\n // Do not allow \"-0x00\"\n if (value === \"0x00\") { return value; }\n\n // Negate the value\n return \"-\" + value;\n }\n\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") { value = \"0x\" + value; }\n\n // Normalize zero\n if (value === \"0x\") { return \"0x00\"; }\n\n // Make the string even length\n if (value.length % 2) { value = \"0x0\" + value.substring(2); }\n\n // Trim to smallest even-length string\n while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n value = \"0x\" + value.substring(4);\n }\n\n return value;\n}\n\nfunction toBigNumber(value: BN): BigNumber {\n return BigNumber.from(toHex(value));\n}\n\nfunction toBN(value: BigNumberish): BN {\n const hex = BigNumber.from(value).toHexString();\n if (hex[0] === \"-\") {\n return (new BN(\"-\" + hex.substring(3), 16));\n }\n return new BN(hex.substring(2), 16);\n}\n\nfunction throwFault(fault: string, operation: string, value?: any): never {\n const params: any = { fault: fault, operation: operation };\n if (value != null) { params.value = value; }\n\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n\n// value should have no prefix\nexport function _base36To16(value: string): string {\n return (new BN(value, 36)).toString(16);\n}\n\n// value should have no prefix\nexport function _base16To36(value: string): string {\n return (new BN(value, 16)).toString(36);\n}\n","\"use strict\";\n\nimport { arrayify, BytesLike, hexZeroPad, isBytes } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { BigNumber, BigNumberish, isBigNumberish } from \"./bignumber\";\n\nconst _constructorGuard = { };\n\nconst Zero = BigNumber.from(0);\nconst NegativeOne = BigNumber.from(-1);\n\nfunction throwFault(message: string, fault: string, operation: string, value?: any): never {\n const params: any = { fault: fault, operation: operation };\n if (value !== undefined) { params.value = value; }\n return logger.throwError(message, Logger.errors.NUMERIC_FAULT, params);\n}\n\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) { zeros += zeros; }\n\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals: BigNumberish): string {\n\n if (typeof(decimals) !== \"number\") {\n try {\n decimals = BigNumber.from(decimals).toNumber();\n } catch (e) { }\n }\n\n if (typeof(decimals) === \"number\" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {\n return (\"1\" + zeros.substring(0, decimals));\n }\n\n return logger.throwArgumentError(\"invalid decimal size\", \"decimals\", decimals);\n}\n\nexport function formatFixed(value: BigNumberish, decimals?: string | BigNumberish): string {\n if (decimals == null) { decimals = 0; }\n const multiplier = getMultiplier(decimals);\n\n // Make sure wei is a big number (convert as necessary)\n value = BigNumber.from(value);\n\n const negative = value.lt(Zero);\n if (negative) { value = value.mul(NegativeOne); }\n\n let fraction = value.mod(multiplier).toString();\n while (fraction.length < multiplier.length - 1) { fraction = \"0\" + fraction; }\n\n // Strip training 0\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n\n const whole = value.div(multiplier).toString();\n\n value = whole + \".\" + fraction;\n\n if (negative) { value = \"-\" + value; }\n\n return value;\n}\n\nexport function parseFixed(value: string, decimals?: BigNumberish): BigNumber {\n if (decimals == null) { decimals = 0; }\n const multiplier = getMultiplier(decimals);\n\n if (typeof(value) !== \"string\" || !value.match(/^-?[0-9.,]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n\n if (multiplier.length - 1 === 0) {\n return BigNumber.from(value);\n }\n\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) { value = value.substring(1); }\n\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\n }\n\n // Split it into a whole and fractional part\n const comps = value.split(\".\");\n if (comps.length > 2) {\n logger.throwArgumentError(\"too many decimal points\", \"value\", value);\n }\n\n let whole = comps[0], fraction = comps[1];\n if (!whole) { whole = \"0\"; }\n if (!fraction) { fraction = \"0\"; }\n\n // Prevent underflow\n if (fraction.length > multiplier.length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n\n // Fully pad the string with zeros to get to wei\n while (fraction.length < multiplier.length - 1) { fraction += \"0\"; }\n\n const wholeValue = BigNumber.from(whole);\n const fractionValue = BigNumber.from(fraction);\n\n let wei = (wholeValue.mul(multiplier)).add(fractionValue);\n\n if (negative) { wei = wei.mul(NegativeOne); }\n\n return wei;\n}\n\nexport class FixedFormat {\n readonly signed: boolean;\n readonly width: number;\n readonly decimals: number;\n readonly name: string;\n readonly _multiplier: string;\n\n constructor(constructorGuard: any, signed: boolean, width: number, decimals: number) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n\n this.name = (signed ? \"\": \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n\n this._multiplier = getMultiplier(decimals);\n\n Object.freeze(this);\n }\n\n static from(value: any): FixedFormat {\n if (value instanceof FixedFormat) { return value; }\n\n let signed = true;\n let width = 128;\n let decimals = 18;\n\n if (typeof(value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n } else if (value === \"ufixed\") {\n signed = false;\n } else if (value != null) {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) { logger.throwArgumentError(\"invalid fixed format\", \"format\", value); }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n } else if (value) {\n const check = (key: string, type: string, defaultValue: any): any => {\n if (value[key] == null) { return defaultValue; }\n if (typeof(value[key]) !== type) {\n logger.throwArgumentError(\"invalid fixed format (\" + key + \" not \" + type +\")\", \"format.\" + key, value[key]);\n }\n return value[key];\n }\n signed = check(\"signed\", \"boolean\", signed);\n width = check(\"width\", \"number\", width);\n decimals = check(\"decimals\", \"number\", decimals);\n }\n\n if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\n\nexport class FixedNumber {\n readonly format: FixedFormat;\n readonly _hex: string;\n readonly _value: string;\n\n readonly _isFixedNumber: boolean;\n\n constructor(constructorGuard: any, hex: string, value: string, format?: FixedFormat) {\n logger.checkNew(new.target, FixedNumber);\n\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n\n this.format = format;\n this._hex = hex;\n this._value = value;\n\n this._isFixedNumber = true;\n\n Object.freeze(this);\n }\n\n _checkFormat(other: FixedNumber): void {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n }\n\n addUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.add(b), this.format.decimals, this.format);\n }\n\n subUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.sub(b), this.format.decimals, this.format);\n }\n\n mulUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(b).div(this.format._multiplier), this.format.decimals, this.format);\n }\n\n divUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(this.format._multiplier).div(b), this.format.decimals, this.format);\n }\n\n floor(): FixedNumber {\n let comps = this.toString().split(\".\");\n\n let result = FixedNumber.from(comps[0], this.format);\n\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE);\n }\n\n return result;\n }\n\n ceiling(): FixedNumber {\n let comps = this.toString().split(\".\");\n\n let result = FixedNumber.from(comps[0], this.format);\n\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE);\n }\n\n return result;\n }\n\n // @TODO: Support other rounding algorithms\n round(decimals?: number): FixedNumber {\n if (decimals == null) { decimals = 0; }\n\n // If we are already in range, we're done\n let comps = this.toString().split(\".\");\n\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n\n if (comps[1].length <= decimals) { return this; }\n\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals));\n return this.mulUnsafe(factor).addUnsafe(BUMP).floor().divUnsafe(factor);\n }\n\n isZero(): boolean {\n return (this._value === \"0.0\");\n }\n\n isNegative(): boolean {\n return (this._value[0] === \"-\");\n }\n\n toString(): string { return this._value; }\n\n toHexString(width?: number): string {\n if (width == null) { return this._hex; }\n if (width % 8) { logger.throwArgumentError(\"invalid byte width\", \"width\", width); }\n const hex = BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return hexZeroPad(hex, width / 8);\n }\n\n toUnsafeFloat(): number { return parseFloat(this.toString()); }\n\n toFormat(format: FixedFormat | string): FixedNumber {\n return FixedNumber.fromString(this._value, format);\n }\n\n\n static fromValue(value: BigNumber, decimals?: BigNumberish, format?: FixedFormat | string): FixedNumber {\n // If decimals looks more like a format, and there is no format, shift the parameters\n if (format == null && decimals != null && !isBigNumberish(decimals)) {\n format = decimals;\n decimals = null;\n }\n\n if (decimals == null) { decimals = 0; }\n if (format == null) { format = \"fixed\"; }\n\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n\n\n static fromString(value: string, format?: FixedFormat | string): FixedNumber {\n if (format == null) { format = \"fixed\"; }\n\n const fixedFormat = FixedFormat.from(format);\n\n const numeric = parseFixed(value, fixedFormat.decimals);\n\n if (!fixedFormat.signed && numeric.lt(Zero)) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n\n let hex: string = null;\n if (fixedFormat.signed) {\n hex = numeric.toTwos(fixedFormat.width).toHexString();\n } else {\n hex = numeric.toHexString();\n hex = hexZeroPad(hex, fixedFormat.width / 8);\n }\n\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n\n static fromBytes(value: BytesLike, format?: FixedFormat | string): FixedNumber {\n if (format == null) { format = \"fixed\"; }\n\n const fixedFormat = FixedFormat.from(format);\n\n if (arrayify(value).length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n\n let numeric = BigNumber.from(value);\n if (fixedFormat.signed) { numeric = numeric.fromTwos(fixedFormat.width); }\n\n const hex = numeric.toTwos((fixedFormat.signed ? 0: 1) + fixedFormat.width).toHexString();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n\n static from(value: any, format?: FixedFormat | string) {\n if (typeof(value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n\n if (isBytes(value)) {\n return FixedNumber.fromBytes(value, format);\n }\n\n try {\n return FixedNumber.fromValue(value, 0, format);\n } catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== Logger.errors.INVALID_ARGUMENT) {\n throw error;\n }\n }\n\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n\n static isFixedNumber(value: any): value is FixedNumber {\n return !!(value && value._isFixedNumber);\n }\n}\n\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n","export { BigNumber, BigNumberish } from \"./bignumber\";\nexport { formatFixed, FixedFormat, FixedNumber, parseFixed } from \"./fixednumber\";\n\n// Internal methods used by address\nexport { _base16To36, _base36To16 } from \"./bignumber\";\n","export const version = \"properties/5.0.6\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport function defineReadOnly<T, K extends keyof T>(object: T, name: K, value: T[K]): void {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n\n// Crawl up the constructor chain to find a static method\nexport function getStatic<T>(ctor: any, key: string): T {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) { return ctor[key]; }\n if (!ctor.prototype || typeof(ctor.prototype) !== \"object\") { break; }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\n\nexport type Deferrable<T> = {\n [ K in keyof T ]: T[K] | Promise<T[K]>;\n}\n\n\ntype Result = { key: string, value: any};\n\nexport async function resolveProperties<T>(object: Readonly<Deferrable<T>>): Promise<T> {\n const promises: Array<Promise<Result>> = Object.keys(object).map((key) => {\n const value = object[<keyof Deferrable<T>>key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n\n const results = await Promise.all(promises);\n\n return results.reduce((accum, result) => {\n accum[<keyof T>(result.key)] = result.value;\n return accum;\n }, <T>{ });\n}\n\nexport function checkProperties(object: any, properties: { [ name: string ]: boolean }): void {\n if (!object || typeof(object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\n\nexport function shallowCopy<T>(object: T): T {\n const result: any = {};\n for (const key in object) { result[key] = object[key]; }\n return result;\n}\n\nconst opaque: { [key: string]: boolean } = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\n\nfunction _isFrozen(object: any): boolean {\n\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof(object)]) { return true; }\n\n if (Array.isArray(object) || typeof(object) === \"object\") {\n if (!Object.isFrozen(object)) { return false; }\n\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n if (!_isFrozen(object[keys[i]])) { return false; }\n }\n\n return true;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object: any): any {\n\n if (_isFrozen(object)) { return object; }\n\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n\n if (typeof(object) === \"object\") {\n const result: { [ key: string ]: any } = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) { continue; }\n defineReadOnly(result, key, deepCopy(value));\n }\n\n return result;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\nexport function deepCopy<T>(object: T): T {\n return _deepCopy(object);\n}\n\nexport class Description<T = any> {\n constructor(info: { [ K in keyof T ]: T[K] }) {\n for (const key in info) {\n (<any>this)[key] = deepCopy(info[key]);\n }\n }\n}\n","export const version = \"abi/5.0.9\";\n","\"use strict\";\n\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport interface JsonFragmentType {\n name?: string;\n indexed?: boolean;\n type?: string;\n components?: Array<JsonFragmentType>;\n}\n\nexport interface JsonFragment {\n name?: string;\n type?: string;\n\n anonymous?: boolean;\n\n payable?: boolean;\n constant?: boolean;\n stateMutability?: string;\n\n inputs?: Array<JsonFragmentType>;\n outputs?: Array<JsonFragmentType>;\n\n gas?: string;\n};\n\n\nconst _constructorGuard = { };\n\n// AST Node parser state\ntype ParseState = {\n allowArray?: boolean,\n allowName?: boolean,\n allowParams?: boolean,\n allowType?: boolean,\n readArray?: boolean,\n};\n\n// AST Node\ntype ParseNode = {\n parent?: any,\n type?: string,\n name?: string,\n state?: ParseState,\n indexed?: boolean,\n components?: Array<ParseNode>\n};\n\nlet ModifiersBytes: { [ name: string ]: boolean } = { calldata: true, memory: true, storage: true };\nlet ModifiersNest: { [ name: string ]: boolean } = { calldata: true, memory: true };\nfunction checkModifier(type: string, name: string): boolean {\n if (type === \"bytes\" || type === \"string\") {\n if (ModifiersBytes[name]) { return true; }\n } else if (type === \"address\") {\n if (name === \"payable\") { return true; }\n } else if (type.indexOf(\"[\") >= 0 || type === \"tuple\") {\n if (ModifiersNest[name]) { return true; }\n }\n if (ModifiersBytes[name] || name === \"payable\") {\n logger.throwArgumentError(\"invalid modifier\", \"name\", name);\n }\n return false;\n}\n\n// @TODO: Make sure that children of an indexed tuple are marked with a null indexed\nfunction parseParamType(param: string, allowIndexed: boolean): ParseNode {\n\n let originalParam = param;\n function throwError(i: number) {\n logger.throwArgumentError(`unexpected character at position ${ i }`, \"param\", param);\n }\n param = param.replace(/\\s/g, \" \");\n\n function newNode(parent: ParseNode): ParseNode {\n let node: ParseNode = { type: \"\", name: \"\", parent: parent, state: { allowType: true } };\n if (allowIndexed) { node.indexed = false; }\n return node\n }\n\n let parent: ParseNode = { type: \"\", name: \"\", state: { allowType: true } };\n let node = parent;\n\n for (let i = 0; i < param.length; i++) {\n let c = param[i];\n switch (c) {\n case \"(\":\n if (node.state.allowType && node.type === \"\") {\n node.type = \"tuple\";\n } else if (!node.state.allowParams) {\n throwError(i);\n }\n node.state.allowType = false;\n node.type = verifyType(node.type);\n node.components = [ newNode(node) ];\n node = node.components[0];\n break;\n\n case \")\":\n delete node.state;\n\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(i); }\n node.indexed = true;\n node.name = \"\";\n }\n\n if (checkModifier(node.type, node.name)) { node.name = \"\"; }\n\n node.type = verifyType(node.type);\n\n let child = node;\n node = node.parent;\n if (!node) { throwError(i); }\n delete child.parent;\n node.state.allowParams = false;\n node.state.allowName = true;\n node.state.allowArray = true;\n break;\n\n case \",\":\n delete node.state;\n\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(i); }\n node.indexed = true;\n node.name = \"\";\n }\n\n if (checkModifier(node.type, node.name)) { node.name = \"\"; }\n\n node.type = verifyType(node.type);\n\n let sibling: ParseNode = newNode(node.parent);\n //{ type: \"\", name: \"\", parent: node.parent, state: { allowType: true } };\n node.parent.components.push(sibling);\n delete node.parent;\n node = sibling;\n break;\n\n // Hit a space...\n case \" \":\n\n // If reading type, the type is done and may read a param or name\n if (node.state.allowType) {\n if (node.type !== \"\") {\n node.type = verifyType(node.type);\n delete node.state.allowType;\n node.state.allowName = true;\n node.state.allowParams = true;\n }\n }\n\n // If reading name, the name is done\n if (node.state.allowName) {\n if (node.name !== \"\") {\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(i); }\n if (node.indexed) { throwError(i); }\n node.indexed = true;\n node.name = \"\";\n } else if (checkModifier(node.type, node.name)) {\n node.name = \"\";\n } else {\n node.state.allowName = false;\n }\n }\n }\n\n break;\n\n case \"[\":\n if (!node.state.allowArray) { throwError(i); }\n\n node.type += c;\n\n node.state.allowArray = false;\n node.state.allowName = false;\n node.state.readArray = true;\n break;\n\n case \"]\":\n if (!node.state.readArray) { throwError(i); }\n\n node.type += c;\n\n node.state.readArray = false;\n node.state.allowArray = true;\n node.state.allowName = true;\n break;\n\n default:\n if (node.state.allowType) {\n node.type += c;\n node.state.allowParams = true;\n node.state.allowArray = true;\n } else if (node.state.allowName) {\n node.name += c;\n delete node.state.allowArray;\n } else if (node.state.readArray) {\n node.type += c;\n } else {\n throwError(i);\n }\n }\n }\n\n if (node.parent) { logger.throwArgumentError(\"unexpected eof\", \"param\", param); }\n\n delete parent.state;\n\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(originalParam.length - 7); }\n if (node.indexed) { throwError(originalParam.length - 7); }\n node.indexed = true;\n node.name = \"\";\n } else if (checkModifier(node.type, node.name)) {\n node.name = \"\";\n }\n\n parent.type = verifyType(parent.type);\n\n return parent;\n}\n\nfunction populate(object: any, params: any) {\n for (let key in params) { defineReadOnly(object, key, params[key]); }\n}\n\nexport const FormatTypes: { [ name: string ]: string } = Object.freeze({\n // Bare formatting, as is needed for computing a sighash of an event or function\n sighash: \"sighash\",\n\n // Human-Readable with Minimal spacing and without names (compact human-readable)\n minimal: \"minimal\",\n\n // Human-Readble with nice spacing, including all names\n full: \"full\",\n\n // JSON-format a la Solidity\n json: \"json\"\n});\n\nconst paramTypeArray = new RegExp(/^(.*)\\[([0-9]*)\\]$/);\n\nexport class ParamType {\n\n // The local name of the parameter (of null if unbound)\n readonly name: string;\n\n // The fully qualified type (e.g. \"address\", \"tuple(address)\", \"uint256[3][]\"\n readonly type: string;\n\n // The base type (e.g. \"address\", \"tuple\", \"array\")\n readonly baseType: string;\n\n // Indexable Paramters ONLY (otherwise null)\n readonly indexed: boolean;\n\n // Tuples ONLY: (otherwise null)\n // - sub-components\n readonly components: Array<ParamType>;\n\n // Arrays ONLY: (otherwise null)\n // - length of the array (-1 for dynamic length)\n // - child type\n readonly arrayLength: number;\n readonly arrayChildren: ParamType;\n\n readonly _isParamType: boolean;\n\n constructor(constructorGuard: any, params: any) {\n if (constructorGuard !== _constructorGuard) { logger.throwError(\"use fromString\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new ParamType()\"\n }); }\n populate(this, params);\n\n let match = this.type.match(paramTypeArray);\n if (match) {\n populate(this, {\n arrayLength: parseInt(match[2] || \"-1\"),\n arrayChildren: ParamType.fromObject({\n type: match[1],\n components: this.components\n }),\n baseType: \"array\"\n });\n } else {\n populate(this, {\n arrayLength: null,\n arrayChildren: null,\n baseType: ((this.components != null) ? \"tuple\": this.type)\n });\n }\n\n this._isParamType = true;\n\n Object.freeze(this);\n }\n\n // Format the parameter fragment\n // - sighash: \"(uint256,address)\"\n // - minimal: \"tuple(uint256,address) indexed\"\n // - full: \"tuple(uint256 foo, addres bar) indexed baz\"\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n let result: any = {\n type: ((this.baseType === \"tuple\") ? \"tuple\": this.type),\n name: (this.name || undefined)\n };\n if (typeof(this.indexed) === \"boolean\") { result.indexed = this.indexed; }\n if (this.components) {\n result.components = this.components.map((comp) => JSON.parse(comp.format(format)));\n }\n return JSON.stringify(result);\n }\n\n let result = \"\";\n\n // Array\n if (this.baseType === \"array\") {\n result += this.arrayChildren.format(format);\n result += \"[\" + (this.arrayLength < 0 ? \"\": String(this.arrayLength)) + \"]\";\n } else {\n if (this.baseType === \"tuple\") {\n if (format !== FormatTypes.sighash) {\n result += this.type;\n }\n result += \"(\" + this.components.map(\n (comp) => comp.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \")\";\n } else {\n result += this.type;\n }\n }\n\n if (format !== FormatTypes.sighash) {\n if (this.indexed === true) { result += \" indexed\"; }\n if (format === FormatTypes.full && this.name) {\n result += \" \" + this.name;\n }\n }\n\n return result;\n }\n\n static from(value: string | JsonFragmentType | ParamType, allowIndexed?: boolean): ParamType {\n if (typeof(value) === \"string\") {\n return ParamType.fromString(value, allowIndexed);\n }\n return ParamType.fromObject(value);\n }\n\n static fromObject(value: JsonFragmentType | ParamType): ParamType {\n if (ParamType.isParamType(value)) { return value; }\n\n return new ParamType(_constructorGuard, {\n name: (value.name || null),\n type: verifyType(value.type),\n indexed: ((value.indexed == null) ? null: !!value.indexed),\n components: (value.components ? value.components.map(ParamType.fromObject): null)\n });\n }\n\n static fromString(value: string, allowIndexed?: boolean): ParamType {\n function ParamTypify(node: ParseNode): ParamType {\n return ParamType.fromObject({\n name: node.name,\n type: node.type,\n indexed: node.indexed,\n components: node.components\n });\n }\n\n return ParamTypify(parseParamType(value, !!allowIndexed));\n }\n\n static isParamType(value: any): value is ParamType {\n return !!(value != null && value._isParamType);\n }\n};\n\nfunction parseParams(value: string, allowIndex: boolean): Array<ParamType> {\n return splitNesting(value).map((param) => ParamType.fromString(param, allowIndex));\n}\n\ntype TypeCheck<T> = { -readonly [ K in keyof T ]: T[K] };\n\ninterface _Fragment {\n readonly type: string;\n readonly name: string;\n readonly inputs: Array<ParamType>;\n}\n\nexport abstract class Fragment {\n\n readonly type: string;\n readonly name: string;\n readonly inputs: Array<ParamType>;\n\n readonly _isFragment: boolean;\n\n constructor(constructorGuard: any, params: any) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"use a static from method\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new Fragment()\"\n });\n }\n populate(this, params);\n\n this._isFragment = true;\n\n Object.freeze(this);\n }\n\n abstract format(format?: string): string;\n\n static from(value: Fragment | JsonFragment | string): Fragment {\n if (Fragment.isFragment(value)) { return value; }\n\n if (typeof(value) === \"string\") {\n return Fragment.fromString(value);\n }\n\n return Fragment.fromObject(value);\n }\n\n static fromObject(value: Fragment | JsonFragment): Fragment {\n if (Fragment.isFragment(value)) { return value; }\n\n switch (value.type) {\n case \"function\":\n return FunctionFragment.fromObject(value);\n case \"event\":\n return EventFragment.fromObject(value);\n case \"constructor\":\n return ConstructorFragment.fromObject(value);\n case \"fallback\":\n case \"receive\":\n // @TODO: Something? Maybe return a FunctionFragment? A custom DefaultFunctionFragment?\n return null;\n }\n\n return logger.throwArgumentError(\"invalid fragment object\", \"value\", value);\n }\n\n static fromString(value: string): Fragment {\n // Make sure the \"returns\" is surrounded by a space and all whitespace is exactly one space\n value = value.replace(/\\s/g, \" \");\n value = value.replace(/\\(/g, \" (\").replace(/\\)/g, \") \").replace(/\\s+/g, \" \");\n value = value.trim();\n\n if (value.split(\" \")[0] === \"event\") {\n return EventFragment.fromString(value.substring(5).trim());\n } else if (value.split(\" \")[0] === \"function\") {\n return FunctionFragment.fromString(value.substring(8).trim());\n } else if (value.split(\"(\")[0].trim() === \"constructor\") {\n return ConstructorFragment.fromString(value.trim());\n }\n\n return logger.throwArgumentError(\"unsupported fragment\", \"value\", value);\n }\n\n static isFragment(value: any): value is Fragment {\n return !!(value && value._isFragment);\n }\n}\n\ninterface _EventFragment extends _Fragment {\n readonly anonymous: boolean;\n}\n\nexport class EventFragment extends Fragment {\n readonly anonymous: boolean;\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"event\",\n anonymous: this.anonymous,\n name: this.name,\n inputs: this.inputs.map((input) => JSON.parse(input.format(format)))\n });\n }\n\n let result = \"\";\n\n if (format !== FormatTypes.sighash) {\n result += \"event \";\n }\n\n result += this.name + \"(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n if (format !== FormatTypes.sighash) {\n if (this.anonymous) {\n result += \"anonymous \";\n }\n }\n\n return result.trim();\n }\n\n static from(value: EventFragment | JsonFragment | string): EventFragment {\n if (typeof(value) === \"string\") {\n return EventFragment.fromString(value);\n }\n return EventFragment.fromObject(value);\n }\n\n static fromObject(value: JsonFragment | EventFragment): EventFragment {\n if (EventFragment.isEventFragment(value)) { return value; }\n\n if (value.type !== \"event\") {\n logger.throwArgumentError(\"invalid event object\", \"value\", value);\n }\n\n const params: TypeCheck<_EventFragment> = {\n name: verifyIdentifier(value.name),\n anonymous: value.anonymous,\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject) : []),\n type: \"event\"\n };\n\n return new EventFragment(_constructorGuard, params);\n }\n\n static fromString(value: string): EventFragment {\n\n let match = value.match(regexParen);\n if (!match) {\n logger.throwArgumentError(\"invalid event string\", \"value\", value);\n }\n\n let anonymous = false;\n match[3].split(\" \").forEach((modifier) => {\n switch(modifier.trim()) {\n case \"anonymous\":\n anonymous = true;\n break;\n case \"\":\n break;\n default:\n logger.warn(\"unknown modifier: \" + modifier);\n }\n });\n\n return EventFragment.fromObject({\n name: match[1].trim(),\n anonymous: anonymous,\n inputs: parseParams(match[2], true),\n type: \"event\"\n });\n }\n\n static isEventFragment(value: any): value is EventFragment {\n return (value && value._isFragment && value.type === \"event\");\n }\n}\n\nfunction parseGas(value: string, params: any): string {\n params.gas = null;\n\n let comps = value.split(\"@\");\n if (comps.length !== 1) {\n if (comps.length > 2) {\n logger.throwArgumentError(\"invalid human-readable ABI signature\", \"value\", value);\n }\n if (!comps[1].match(/^[0-9]+$/)) {\n logger.throwArgumentError(\"invalid human-readable ABI signature gas\", \"value\", value);\n }\n params.gas = BigNumber.from(comps[1]);\n return comps[0];\n }\n\n return value;\n}\n\nfunction parseModifiers(value: string, params: any): void {\n params.constant = false;\n params.payable = false;\n params.stateMutability = \"nonpayable\";\n\n value.split(\" \").forEach((modifier) => {\n switch (modifier.trim()) {\n case \"constant\":\n params.constant = true;\n break;\n case \"payable\":\n params.payable = true;\n params.stateMutability = \"payable\";\n break;\n case \"nonpayable\":\n params.payable = false;\n params.stateMutability = \"nonpayable\";\n break;\n case \"pure\":\n params.constant = true;\n params.stateMutability = \"pure\";\n break;\n case \"view\":\n params.constant = true;\n params.stateMutability = \"view\";\n break;\n case \"external\":\n case \"public\":\n case \"\":\n break;\n default:\n console.log(\"unknown modifier: \" + modifier);\n }\n });\n}\n\ntype StateInputValue = {\n constant?: boolean;\n payable?: boolean;\n stateMutability?: string;\n type?: string;\n};\n\ntype StateOutputValue = {\n constant: boolean;\n payable: boolean;\n stateMutability: string;\n};\n\nfunction verifyState(value: StateInputValue): StateOutputValue {\n let result: any = {\n constant: false,\n payable: true,\n stateMutability: \"payable\"\n };\n\n if (value.stateMutability != null) {\n result.stateMutability = value.stateMutability;\n\n // Set (and check things are consistent) the constant property\n result.constant = (result.stateMutability === \"view\" || result.stateMutability === \"pure\");\n if (value.constant != null) {\n if ((!!value.constant) !== result.constant) {\n logger.throwArgumentError(\"cannot have constant function with mutability \" + result.stateMutability, \"value\", value);\n }\n }\n\n // Set (and check things are consistent) the payable property\n result.payable = (result.stateMutability === \"payable\");\n if (value.payable != null) {\n if ((!!value.payable) !== result.payable) {\n logger.throwArgumentError(\"cannot have payable function with mutability \" + result.stateMutability, \"value\", value);\n }\n }\n\n } else if (value.payable != null) {\n result.payable = !!value.payable;\n\n // If payable we can assume non-constant; otherwise we can't assume\n if (value.constant == null && !result.payable && value.type !== \"constructor\") {\n logger.throwArgumentError(\"unable to determine stateMutability\", \"value\", value);\n }\n\n result.constant = !!value.constant;\n\n if (result.constant) {\n result.stateMutability = \"view\";\n } else {\n result.stateMutability = (result.payable ? \"payable\": \"nonpayable\");\n }\n\n if (result.payable && result.constant) {\n logger.throwArgumentError(\"cannot have constant payable function\", \"value\", value);\n }\n\n } else if (value.constant != null) {\n result.constant = !!value.constant;\n result.payable = !result.constant;\n result.stateMutability = (result.constant ? \"view\": \"payable\");\n\n } else if (value.type !== \"constructor\") {\n logger.throwArgumentError(\"unable to determine stateMutability\", \"value\", value);\n }\n\n return result;\n}\n\ninterface _ConstructorFragment extends _Fragment {\n stateMutability: string;\n payable: boolean;\n gas?: BigNumber;\n}\n\nexport class ConstructorFragment extends Fragment {\n stateMutability: string;\n payable: boolean;\n gas?: BigNumber;\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"constructor\",\n stateMutability: ((this.stateMutability !== \"nonpayable\") ? this.stateMutability: undefined),\n payble: this.payable,\n gas: (this.gas ? this.gas.toNumber(): undefined),\n inputs: this.inputs.map((input) => JSON.parse(input.format(format)))\n });\n }\n\n if (format === FormatTypes.sighash) {\n logger.throwError(\"cannot format a constructor for sighash\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"format(sighash)\"\n });\n }\n\n let result = \"constructor(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n if (this.stateMutability && this.stateMutability !== \"nonpayable\") {\n result += this.stateMutability + \" \";\n }\n\n return result.trim();\n }\n\n static from(value: ConstructorFragment | JsonFragment | string): ConstructorFragment {\n if (typeof(value) === \"string\") {\n return ConstructorFragment.fromString(value);\n }\n return ConstructorFragment.fromObject(value);\n }\n\n static fromObject(value: ConstructorFragment | JsonFragment): ConstructorFragment {\n if (ConstructorFragment.isConstructorFragment(value)) { return value; }\n\n if (value.type !== \"constructor\") {\n logger.throwArgumentError(\"invalid constructor object\", \"value\", value);\n }\n\n let state = verifyState(value);\n if (state.constant) {\n logger.throwArgumentError(\"constructor cannot be constant\", \"value\", value);\n }\n\n const params: TypeCheck<_ConstructorFragment> = {\n name: null,\n type: value.type,\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): []),\n payable: state.payable,\n stateMutability: state.stateMutability,\n gas: (value.gas ? BigNumber.from(value.gas): null)\n };\n\n return new ConstructorFragment(_constructorGuard, params);\n }\n\n static fromString(value: string): ConstructorFragment {\n let params: any = { type: \"constructor\" };\n\n value = parseGas(value, params);\n\n let parens = value.match(regexParen);\n if (!parens || parens[1].trim() !== \"constructor\") {\n logger.throwArgumentError(\"invalid constructor string\", \"value\", value);\n }\n\n params.inputs = parseParams(parens[2].trim(), false);\n\n parseModifiers(parens[3].trim(), params);\n\n return ConstructorFragment.fromObject(params);\n }\n\n static isConstructorFragment(value: any): value is ConstructorFragment {\n return (value && value._isFragment && value.type === \"constructor\");\n }\n}\n\ninterface _FunctionFragment extends _ConstructorFragment {\n constant: boolean;\n outputs?: Array<ParamType>;\n}\n\nexport class FunctionFragment extends ConstructorFragment {\n constant: boolean;\n outputs?: Array<ParamType>;\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"function\",\n name: this.name,\n constant: this.constant,\n stateMutability: ((this.stateMutability !== \"nonpayable\") ? this.stateMutability: undefined),\n payble: this.payable,\n gas: (this.gas ? this.gas.toNumber(): undefined),\n inputs: this.inputs.map((input) => JSON.parse(input.format(format))),\n ouputs: this.outputs.map((output) => JSON.parse(output.format(format))),\n });\n }\n\n let result = \"\";\n\n if (format !== FormatTypes.sighash) {\n result += \"function \";\n }\n\n result += this.name + \"(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n if (format !== FormatTypes.sighash) {\n if (this.stateMutability) {\n if (this.stateMutability !== \"nonpayable\") {\n result += (this.stateMutability + \" \");\n }\n } else if (this.constant) {\n result += \"view \";\n }\n\n if (this.outputs && this.outputs.length) {\n result += \"returns (\" + this.outputs.map(\n (output) => output.format(format)\n ).join(\", \") + \") \";\n }\n\n if (this.gas != null) {\n result += \"@\" + this.gas.toString() + \" \";\n }\n }\n\n return result.trim();\n }\n\n static from(value: FunctionFragment | JsonFragment | string): FunctionFragment {\n if (typeof(value) === \"string\") {\n return FunctionFragment.fromString(value);\n }\n return FunctionFragment.fromObject(value);\n }\n\n static fromObject(value: FunctionFragment | JsonFragment): FunctionFragment {\n if (FunctionFragment.isFunctionFragment(value)) { return value; }\n\n if (value.type !== \"function\") {\n logger.throwArgumentError(\"invalid function object\", \"value\", value);\n }\n\n let state = verifyState(value);\n\n const params: TypeCheck<_FunctionFragment> = {\n type: value.type,\n name: verifyIdentifier(value.name),\n constant: state.constant,\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): []),\n outputs: (value.outputs ? value.outputs.map(ParamType.fromObject): [ ]),\n payable: state.payable,\n stateMutability: state.stateMutability,\n gas: (value.gas ? BigNumber.from(value.gas): null)\n };\n\n return new FunctionFragment(_constructorGuard, params);\n }\n\n static fromString(value: string): FunctionFragment {\n let params: any = { type: \"function\" };\n value = parseGas(value, params);\n\n let comps = value.split(\" returns \");\n if (comps.length > 2) {\n logger.throwArgumentError(\"invalid function string\", \"value\", value);\n }\n\n let parens = comps[0].match(regexParen);\n if (!parens) {\n logger.throwArgumentError(\"invalid function signature\", \"value\", value);\n }\n\n params.name = parens[1].trim();\n if (params.name) { verifyIdentifier(params.name); }\n\n params.inputs = parseParams(parens[2], false);\n\n parseModifiers(parens[3].trim(), params);\n\n // We have outputs\n if (comps.length > 1) {\n let returns = comps[1].match(regexParen);\n if (returns[1].trim() != \"\" || returns[3].trim() != \"\") {\n logger.throwArgumentError(\"unexpected tokens\", \"value\", value);\n }\n params.outputs = parseParams(returns[2], false);\n } else {\n params.outputs = [ ];\n }\n\n return FunctionFragment.fromObject(params);\n }\n\n static isFunctionFragment(value: any): value is FunctionFragment {\n return (value && value._isFragment && value.type === \"function\");\n }\n}\n\n//export class ErrorFragment extends Fragment {\n//}\n\n//export class StructFragment extends Fragment {\n//}\n\nfunction verifyType(type: string): string {\n\n // These need to be transformed to their full description\n if (type.match(/^uint($|[^1-9])/)) {\n type = \"uint256\" + type.substring(4);\n } else if (type.match(/^int($|[^1-9])/)) {\n type = \"int256\" + type.substring(3);\n }\n\n // @TODO: more verification\n\n return type;\n}\n\nconst regexIdentifier = new RegExp(\"^[A-Za-z_][A-Za-z0-9_]*$\");\nfunction verifyIdentifier(value: string): string {\n if (!value || !value.match(regexIdentifier)) {\n logger.throwArgumentError(`invalid identifier \"${ value }\"`, \"value\", value);\n }\n return value;\n}\n\nconst regexParen = new RegExp(\"^([^)(]*)\\\\((.*)\\\\)([^)(]*)$\");\n\nfunction splitNesting(value: string): Array<any> {\n value = value.trim();\n\n let result = [];\n let accum = \"\";\n let depth = 0;\n for (let offset = 0; offset < value.length; offset++) {\n let c = value[offset];\n if (c === \",\" && depth === 0) {\n result.push(accum);\n accum = \"\";\n } else {\n accum += c;\n if (c === \"(\") {\n depth++;\n } else if (c === \")\") {\n depth--;\n if (depth === -1) {\n logger.throwArgumentError(\"unbalanced parenthesis\", \"value\", value);\n }\n }\n }\n }\n if (accum) { result.push(accum); }\n\n return result;\n}\n\n","\"use strict\";\n\nimport { arrayify, BytesLike, concat, hexConcat, hexlify } from \"@ethersproject/bytes\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"../_version\";\nconst logger = new Logger(version);\n\nexport interface Result extends ReadonlyArray<any> {\n readonly [key: string]: any;\n}\n\nexport function checkResultErrors(result: Result): Array<{ path: Array<string | number>, error: Error }> {\n // Find the first error (if any)\n const errors: Array<{ path: Array<string | number>, error: Error }> = [ ];\n\n const checkErrors = function(path: Array<string | number>, object: any): void {\n if (!Array.isArray(object)) { return; }\n for (let key in object) {\n const childPath = path.slice();\n childPath.push(key);\n\n try {\n checkErrors(childPath, object[key]);\n } catch (error) {\n errors.push({ path: childPath, error: error });\n }\n }\n }\n checkErrors([ ], result);\n\n return errors;\n\n}\n\nexport type CoerceFunc = (type: string, value: any) => any;\n\nexport abstract class Coder {\n\n // The coder name:\n // - address, uint256, tuple, array, etc.\n readonly name: string;\n\n // The fully expanded type, including composite types:\n // - address, uint256, tuple(address,bytes), uint256[3][4][], etc.\n readonly type: string;\n\n // The localName bound in the signature, in this example it is \"baz\":\n // - tuple(address foo, uint bar) baz\n readonly localName: string;\n\n // Whether this type is dynamic:\n // - Dynamic: bytes, string, address[], tuple(boolean[]), etc.\n // - Not Dynamic: address, uint256, boolean[3], tuple(address, uint8)\n readonly dynamic: boolean;\n\n constructor(name: string, type: string, localName: string, dynamic: boolean) {\n // @TODO: defineReadOnly these\n this.name = name;\n this.type = type;\n this.localName = localName;\n this.dynamic = dynamic;\n }\n\n _throwError(message: string, value: any): void {\n logger.throwArgumentError(message, this.localName, value);\n }\n\n abstract encode(writer: Writer, value: any): number;\n abstract decode(reader: Reader): any;\n\n abstract defaultValue(): any;\n}\n\nexport class Writer {\n readonly wordSize: number;\n\n _data: Array<Uint8Array>;\n _dataLength: number;\n _padding: Uint8Array;\n\n constructor(wordSize?: number) {\n defineReadOnly(this, \"wordSize\", wordSize || 32);\n this._data = [ ];\n this._dataLength = 0;\n this._padding = new Uint8Array(wordSize);\n }\n\n get data(): string {\n return hexConcat(this._data);\n }\n get length(): number { return this._dataLength; }\n\n _writeData(data: Uint8Array): number {\n this._data.push(data);\n this._dataLength += data.length;\n return data.length;\n }\n\n appendWriter(writer: Writer): number {\n return this._writeData(concat(writer._data));\n }\n\n // Arrayish items; padded on the right to wordSize\n writeBytes(value: BytesLike): number {\n let bytes = arrayify(value);\n const paddingOffset = bytes.length % this.wordSize;\n if (paddingOffset) {\n bytes = concat([ bytes, this._padding.slice(paddingOffset) ])\n }\n return this._writeData(bytes);\n }\n\n _getValue(value: BigNumberish): Uint8Array {\n let bytes = arrayify(BigNumber.from(value));\n if (bytes.length > this.wordSize) {\n logger.throwError(\"value out-of-bounds\", Logger.errors.BUFFER_OVERRUN, {\n length: this.wordSize,\n offset: bytes.length\n });\n }\n if (bytes.length % this.wordSize) {\n bytes = concat([ this._padding.slice(bytes.length % this.wordSize), bytes ]);\n }\n return bytes;\n }\n\n // BigNumberish items; padded on the left to wordSize\n writeValue(value: BigNumberish): number {\n return this._writeData(this._getValue(value));\n }\n\n writeUpdatableValue(): (value: BigNumberish) => void {\n const offset = this._data.length;\n this._data.push(this._padding);\n this._dataLength += this.wordSize;\n return (value: BigNumberish) => {\n this._data[offset] = this._getValue(value);\n };\n }\n}\n\nexport class Reader {\n readonly wordSize: number;\n readonly allowLoose: boolean;\n\n readonly _data: Uint8Array;\n readonly _coerceFunc: CoerceFunc;\n\n _offset: number;\n\n constructor(data: BytesLike, wordSize?: number, coerceFunc?: CoerceFunc, allowLoose?: boolean) {\n defineReadOnly(this, \"_data\", arrayify(data));\n defineReadOnly(this, \"wordSize\", wordSize || 32);\n defineReadOnly(this, \"_coerceFunc\", coerceFunc);\n defineReadOnly(this, \"allowLoose\", allowLoose);\n\n this._offset = 0;\n }\n\n get data(): string { return hexlify(this._data); }\n get consumed(): number { return this._offset; }\n\n // The default Coerce function\n static coerce(name: string, value: any): any {\n let match = name.match(\"^u?int([0-9]+)$\");\n if (match && parseInt(match[1]) <= 48) { value = value.toNumber(); }\n return value;\n }\n\n coerce(name: string, value: any): any {\n if (this._coerceFunc) { return this._coerceFunc(name, value); }\n return Reader.coerce(name, value);\n }\n\n _peekBytes(offset: number, length: number, loose?: boolean): Uint8Array {\n let alignedLength = Math.ceil(length / this.wordSize) * this.wordSize;\n if (this._offset + alignedLength > this._data.length) {\n if (this.allowLoose && loose && this._offset + length <= this._data.length) {\n alignedLength = length;\n } else {\n logger.throwError(\"data out-of-bounds\", Logger.errors.BUFFER_OVERRUN, {\n length: this._data.length,\n offset: this._offset + alignedLength\n });\n }\n }\n return this._data.slice(this._offset, this._offset + alignedLength)\n }\n\n subReader(offset: number): Reader {\n return new Reader(this._data.slice(this._offset + offset), this.wordSize, this._coerceFunc, this.allowLoose);\n }\n\n readBytes(length: number, loose?: boolean): Uint8Array {\n let bytes = this._peekBytes(0, length, !!loose);\n this._offset += bytes.length;\n // @TODO: Make sure the length..end bytes are all 0?\n return bytes.slice(0, length);\n }\n\n readValue(): BigNumber {\n return BigNumber.from(this.readBytes(this.wordSize));\n }\n}\n","/**\r\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\r\n *\r\n * @version 0.5.7\r\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\r\n * @copyright Chen, Yi-Cyuan 2015-2016\r\n * @license MIT\r\n */\r\n/*jslint bitwise: true */\r\n(function () {\r\n 'use strict';\r\n\r\n var root = typeof window === 'object' ? window : {};\r\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\r\n if (NODE_JS) {\r\n root = global;\r\n }\r\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\r\n var HEX_CHARS = '0123456789abcdef'.split('');\r\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\r\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\r\n var PADDING = [6, 1536, 393216, 100663296];\r\n var SHIFT = [0, 8, 16, 24];\r\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\r\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\r\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\r\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\r\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\r\n var BITS = [224, 256, 384, 512];\r\n var SHAKE_BITS = [128, 256];\r\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array'];\r\n\r\n var createOutputMethod = function (bits, padding, outputType) {\r\n return function (message) {\r\n return new Keccak(bits, padding, bits).update(message)[outputType]();\r\n };\r\n };\r\n\r\n var createShakeOutputMethod = function (bits, padding, outputType) {\r\n return function (message, outputBits) {\r\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\r\n };\r\n };\r\n\r\n var createMethod = function (bits, padding) {\r\n var method = createOutputMethod(bits, padding, 'hex');\r\n method.create = function () {\r\n return new Keccak(bits, padding, bits);\r\n };\r\n method.update = function (message) {\r\n return method.create().update(message);\r\n };\r\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\r\n var type = OUTPUT_TYPES[i];\r\n method[type] = createOutputMethod(bits, padding, type);\r\n }\r\n return method;\r\n };\r\n\r\n var createShakeMethod = function (bits, padding) {\r\n var method = createShakeOutputMethod(bits, padding, 'hex');\r\n method.create = function (outputBits) {\r\n return new Keccak(bits, padding, outputBits);\r\n };\r\n method.update = function (message, outputBits) {\r\n return method.create(outputBits).update(message);\r\n };\r\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\r\n var type = OUTPUT_TYPES[i];\r\n method[type] = createShakeOutputMethod(bits, padding, type);\r\n }\r\n return method;\r\n };\r\n\r\n var algorithms = [\r\n {name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod},\r\n {name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod},\r\n {name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod}\r\n ];\r\n\r\n var methods = {}, methodNames = [];\r\n\r\n for (var i = 0; i < algorithms.length; ++i) {\r\n var algorithm = algorithms[i];\r\n var bits = algorithm.bits;\r\n for (var j = 0; j < bits.length; ++j) {\r\n var methodName = algorithm.name +'_' + bits[j];\r\n methodNames.push(methodName);\r\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\r\n }\r\n }\r\n\r\n function Keccak(bits, padding, outputBits) {\r\n this.blocks = [];\r\n this.s = [];\r\n this.padding = padding;\r\n this.outputBits = outputBits;\r\n this.reset = true;\r\n this.block = 0;\r\n this.start = 0;\r\n this.blockCount = (1600 - (bits << 1)) >> 5;\r\n this.byteCount = this.blockCount << 2;\r\n this.outputBlocks = outputBits >> 5;\r\n this.extraBytes = (outputBits & 31) >> 3;\r\n\r\n for (var i = 0; i < 50; ++i) {\r\n this.s[i] = 0;\r\n }\r\n }\r\n\r\n Keccak.prototype.update = function (message) {\r\n var notString = typeof message !== 'string';\r\n if (notString && message.constructor === ArrayBuffer) {\r\n message = new Uint8Array(message);\r\n }\r\n var length = message.length, blocks = this.blocks, byteCount = this.byteCount,\r\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\r\n\r\n while (index < length) {\r\n if (this.reset) {\r\n this.reset = false;\r\n blocks[0] = this.block;\r\n for (i = 1; i < blockCount + 1; ++i) {\r\n blocks[i] = 0;\r\n }\r\n }\r\n if (notString) {\r\n for (i = this.start; index < length && i < byteCount; ++index) {\r\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\r\n }\r\n } else {\r\n for (i = this.start; index < length && i < byteCount; ++index) {\r\n code = message.charCodeAt(index);\r\n if (code < 0x80) {\r\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\r\n } else if (code < 0x800) {\r\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n } else if (code < 0xd800 || code >= 0xe000) {\r\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n } else {\r\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\r\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n }\r\n }\r\n }\r\n this.lastByteIndex = i;\r\n if (i >= byteCount) {\r\n this.start = i - byteCount;\r\n this.block = blocks[blockCount];\r\n for (i = 0; i < blockCount; ++i) {\r\n s[i] ^= blocks[i];\r\n }\r\n f(s);\r\n this.reset = true;\r\n } else {\r\n this.start = i;\r\n }\r\n }\r\n return this;\r\n };\r\n\r\n Keccak.prototype.finalize = function () {\r\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\r\n blocks[i >> 2] |= this.padding[i & 3];\r\n if (this.lastByteIndex === this.byteCount) {\r\n blocks[0] = blocks[blockCount];\r\n for (i = 1; i < blockCount + 1; ++i) {\r\n blocks[i] = 0;\r\n }\r\n }\r\n blocks[blockCount - 1] |= 0x80000000;\r\n for (i = 0; i < blockCount; ++i) {\r\n s[i] ^= blocks[i];\r\n }\r\n f(s);\r\n };\r\n\r\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var hex = '', block;\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n block = s[i];\r\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\r\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\r\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\r\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n i = 0;\r\n }\r\n }\r\n if (extraBytes) {\r\n block = s[i];\r\n if (extraBytes > 0) {\r\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\r\n }\r\n if (extraBytes > 1) {\r\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\r\n }\r\n if (extraBytes > 2) {\r\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\r\n }\r\n }\r\n return hex;\r\n };\r\n\r\n Keccak.prototype.arrayBuffer = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var bytes = this.outputBits >> 3;\r\n var buffer;\r\n if (extraBytes) {\r\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\r\n } else {\r\n buffer = new ArrayBuffer(bytes);\r\n }\r\n var array = new Uint32Array(buffer);\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n array[j] = s[i];\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n }\r\n }\r\n if (extraBytes) {\r\n array[i] = s[i];\r\n buffer = buffer.slice(0, bytes);\r\n }\r\n return buffer;\r\n };\r\n\r\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\r\n\r\n Keccak.prototype.digest = Keccak.prototype.array = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var array = [], offset, block;\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n offset = j << 2;\r\n block = s[i];\r\n array[offset] = block & 0xFF;\r\n array[offset + 1] = (block >> 8) & 0xFF;\r\n array[offset + 2] = (block >> 16) & 0xFF;\r\n array[offset + 3] = (block >> 24) & 0xFF;\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n }\r\n }\r\n if (extraBytes) {\r\n offset = j << 2;\r\n block = s[i];\r\n if (extraBytes > 0) {\r\n array[offset] = block & 0xFF;\r\n }\r\n if (extraBytes > 1) {\r\n array[offset + 1] = (block >> 8) & 0xFF;\r\n }\r\n if (extraBytes > 2) {\r\n array[offset + 2] = (block >> 16) & 0xFF;\r\n }\r\n }\r\n return array;\r\n };\r\n\r\n var f = function (s) {\r\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\r\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\r\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\r\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\r\n for (n = 0; n < 48; n += 2) {\r\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\r\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\r\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\r\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\r\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\r\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\r\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\r\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\r\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\r\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\r\n\r\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\r\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\r\n s[0] ^= h;\r\n s[1] ^= l;\r\n s[10] ^= h;\r\n s[11] ^= l;\r\n s[20] ^= h;\r\n s[21] ^= l;\r\n s[30] ^= h;\r\n s[31] ^= l;\r\n s[40] ^= h;\r\n s[41] ^= l;\r\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\r\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\r\n s[2] ^= h;\r\n s[3] ^= l;\r\n s[12] ^= h;\r\n s[13] ^= l;\r\n s[22] ^= h;\r\n s[23] ^= l;\r\n s[32] ^= h;\r\n s[33] ^= l;\r\n s[42] ^= h;\r\n s[43] ^= l;\r\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\r\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\r\n s[4] ^= h;\r\n s[5] ^= l;\r\n s[14] ^= h;\r\n s[15] ^= l;\r\n s[24] ^= h;\r\n s[25] ^= l;\r\n s[34] ^= h;\r\n s[35] ^= l;\r\n s[44] ^= h;\r\n s[45] ^= l;\r\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\r\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\r\n s[6] ^= h;\r\n s[7] ^= l;\r\n s[16] ^= h;\r\n s[17] ^= l;\r\n s[26] ^= h;\r\n s[27] ^= l;\r\n s[36] ^= h;\r\n s[37] ^= l;\r\n s[46] ^= h;\r\n s[47] ^= l;\r\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\r\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\r\n s[8] ^= h;\r\n s[9] ^= l;\r\n s[18] ^= h;\r\n s[19] ^= l;\r\n s[28] ^= h;\r\n s[29] ^= l;\r\n s[38] ^= h;\r\n s[39] ^= l;\r\n s[48] ^= h;\r\n s[49] ^= l;\r\n\r\n b0 = s[0];\r\n b1 = s[1];\r\n b32 = (s[11] << 4) | (s[10] >>> 28);\r\n b33 = (s[10] << 4) | (s[11] >>> 28);\r\n b14 = (s[20] << 3) | (s[21] >>> 29);\r\n b15 = (s[21] << 3) | (s[20] >>> 29);\r\n b46 = (s[31] << 9) | (s[30] >>> 23);\r\n b47 = (s[30] << 9) | (s[31] >>> 23);\r\n b28 = (s[40] << 18) | (s[41] >>> 14);\r\n b29 = (s[41] << 18) | (s[40] >>> 14);\r\n b20 = (s[2] << 1) | (s[3] >>> 31);\r\n b21 = (s[3] << 1) | (s[2] >>> 31);\r\n b2 = (s[13] << 12) | (s[12] >>> 20);\r\n b3 = (s[12] << 12) | (s[13] >>> 20);\r\n b34 = (s[22] << 10) | (s[23] >>> 22);\r\n b35 = (s[23] << 10) | (s[22] >>> 22);\r\n b16 = (s[33] << 13) | (s[32] >>> 19);\r\n b17 = (s[32] << 13) | (s[33] >>> 19);\r\n b48 = (s[42] << 2) | (s[43] >>> 30);\r\n b49 = (s[43] << 2) | (s[42] >>> 30);\r\n b40 = (s[5] << 30) | (s[4] >>> 2);\r\n b41 = (s[4] << 30) | (s[5] >>> 2);\r\n b22 = (s[14] << 6) | (s[15] >>> 26);\r\n b23 = (s[15] << 6) | (s[14] >>> 26);\r\n b4 = (s[25] << 11) | (s[24] >>> 21);\r\n b5 = (s[24] << 11) | (s[25] >>> 21);\r\n b36 = (s[34] << 15) | (s[35] >>> 17);\r\n b37 = (s[35] << 15) | (s[34] >>> 17);\r\n b18 = (s[45] << 29) | (s[44] >>> 3);\r\n b19 = (s[44] << 29) | (s[45] >>> 3);\r\n b10 = (s[6] << 28) | (s[7] >>> 4);\r\n b11 = (s[7] << 28) | (s[6] >>> 4);\r\n b42 = (s[17] << 23) | (s[16] >>> 9);\r\n b43 = (s[16] << 23) | (s[17] >>> 9);\r\n b24 = (s[26] << 25) | (s[27] >>> 7);\r\n b25 = (s[27] << 25) | (s[26] >>> 7);\r\n b6 = (s[36] << 21) | (s[37] >>> 11);\r\n b7 = (s[37] << 21) | (s[36] >>> 11);\r\n b38 = (s[47] << 24) | (s[46] >>> 8);\r\n b39 = (s[46] << 24) | (s[47] >>> 8);\r\n b30 = (s[8] << 27) | (s[9] >>> 5);\r\n b31 = (s[9] << 27) | (s[8] >>> 5);\r\n b12 = (s[18] << 20) | (s[19] >>> 12);\r\n b13 = (s[19] << 20) | (s[18] >>> 12);\r\n b44 = (s[29] << 7) | (s[28] >>> 25);\r\n b45 = (s[28] << 7) | (s[29] >>> 25);\r\n b26 = (s[38] << 8) | (s[39] >>> 24);\r\n b27 = (s[39] << 8) | (s[38] >>> 24);\r\n b8 = (s[48] << 14) | (s[49] >>> 18);\r\n b9 = (s[49] << 14) | (s[48] >>> 18);\r\n\r\n s[0] = b0 ^ (~b2 & b4);\r\n s[1] = b1 ^ (~b3 & b5);\r\n s[10] = b10 ^ (~b12 & b14);\r\n s[11] = b11 ^ (~b13 & b15);\r\n s[20] = b20 ^ (~b22 & b24);\r\n s[21] = b21 ^ (~b23 & b25);\r\n s[30] = b30 ^ (~b32 & b34);\r\n s[31] = b31 ^ (~b33 & b35);\r\n s[40] = b40 ^ (~b42 & b44);\r\n s[41] = b41 ^ (~b43 & b45);\r\n s[2] = b2 ^ (~b4 & b6);\r\n s[3] = b3 ^ (~b5 & b7);\r\n s[12] = b12 ^ (~b14 & b16);\r\n s[13] = b13 ^ (~b15 & b17);\r\n s[22] = b22 ^ (~b24 & b26);\r\n s[23] = b23 ^ (~b25 & b27);\r\n s[32] = b32 ^ (~b34 & b36);\r\n s[33] = b33 ^ (~b35 & b37);\r\n s[42] = b42 ^ (~b44 & b46);\r\n s[43] = b43 ^ (~b45 & b47);\r\n s[4] = b4 ^ (~b6 & b8);\r\n s[5] = b5 ^ (~b7 & b9);\r\n s[14] = b14 ^ (~b16 & b18);\r\n s[15] = b15 ^ (~b17 & b19);\r\n s[24] = b24 ^ (~b26 & b28);\r\n s[25] = b25 ^ (~b27 & b29);\r\n s[34] = b34 ^ (~b36 & b38);\r\n s[35] = b35 ^ (~b37 & b39);\r\n s[44] = b44 ^ (~b46 & b48);\r\n s[45] = b45 ^ (~b47 & b49);\r\n s[6] = b6 ^ (~b8 & b0);\r\n s[7] = b7 ^ (~b9 & b1);\r\n s[16] = b16 ^ (~b18 & b10);\r\n s[17] = b17 ^ (~b19 & b11);\r\n s[26] = b26 ^ (~b28 & b20);\r\n s[27] = b27 ^ (~b29 & b21);\r\n s[36] = b36 ^ (~b38 & b30);\r\n s[37] = b37 ^ (~b39 & b31);\r\n s[46] = b46 ^ (~b48 & b40);\r\n s[47] = b47 ^ (~b49 & b41);\r\n s[8] = b8 ^ (~b0 & b2);\r\n s[9] = b9 ^ (~b1 & b3);\r\n s[18] = b18 ^ (~b10 & b12);\r\n s[19] = b19 ^ (~b11 & b13);\r\n s[28] = b28 ^ (~b20 & b22);\r\n s[29] = b29 ^ (~b21 & b23);\r\n s[38] = b38 ^ (~b30 & b32);\r\n s[39] = b39 ^ (~b31 & b33);\r\n s[48] = b48 ^ (~b40 & b42);\r\n s[49] = b49 ^ (~b41 & b43);\r\n\r\n s[0] ^= RC[n];\r\n s[1] ^= RC[n + 1];\r\n }\r\n };\r\n\r\n if (COMMON_JS) {\r\n module.exports = methods;\r\n } else {\r\n for (var i = 0; i < methodNames.length; ++i) {\r\n root[methodNames[i]] = methods[methodNames[i]];\r\n }\r\n }\r\n})();\r\n","\"use strict\";\n\nimport sha3 from \"js-sha3\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nexport function keccak256(data: BytesLike): string {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n","export const version = \"rlp/5.0.6\";\n","\"use strict\";\n\n//See: https://github.com/ethereum/wiki/wiki/RLP\n\nimport { arrayify, BytesLike, hexlify, isBytesLike } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction arrayifyInteger(value: number): Array<number> {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\n\nfunction unarrayifyInteger(data: Uint8Array, offset: number, length: number): number {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\n\nfunction _encode(object: Array<any> | string): Array<number> {\n if (Array.isArray(object)) {\n let payload: Array<number> = [];\n object.forEach(function(child) {\n payload = payload.concat(_encode(child));\n });\n\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length)\n return payload;\n }\n\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n\n return length.concat(payload);\n\n }\n\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n\n const data: Array<number> = Array.prototype.slice.call(arrayify(object));\n\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n\n } else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n\n return length.concat(data);\n}\n\nexport function encode(object: any): string {\n return hexlify(_encode(object));\n}\n\ntype Decoded = {\n result: any;\n consumed: number;\n};\n\nfunction _decodeChildren(data: Uint8Array, offset: number, childOffset: number, length: number): Decoded {\n const result = [];\n\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n\n result.push(decoded.result);\n\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n }\n\n return {consumed: (1 + length), result: result};\n}\n\n// returns { consumed: number, result: Object }\nfunction _decode(data: Uint8Array, offset: number): { consumed: number, result: any } {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n\n } else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n return _decodeChildren(data, offset, offset + 1, length);\n\n } else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result }\n\n } else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result }\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\n\nexport function decode(data: BytesLike): any {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n\n","export const version = \"address/5.0.8\";\n","\"use strict\";\n\nimport { arrayify, BytesLike, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, BigNumberish, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction getChecksumAddress(address: string): string {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n address = address.toLowerCase();\n\n const chars = address.substring(2).split(\"\");\n\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n\n const hashed = arrayify(keccak256(expanded));\n\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n\n return \"0x\" + chars.join(\"\");\n}\n\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER: number = 0x1fffffffffffff;\n\nfunction log10(x: number): number {\n if (Math.log10) { return Math.log10(x); }\n return Math.log(x) / Math.LN10;\n}\n\n\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n\n// Create lookup table\nconst ibanLookup: { [character: string]: string } = { };\nfor (let i = 0; i < 10; i++) { ibanLookup[String(i)] = String(i); }\nfor (let i = 0; i < 26; i++) { ibanLookup[String.fromCharCode(65 + i)] = String(10 + i); }\n\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\n\nfunction ibanChecksum(address: string): string {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits){\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) { checksum = \"0\" + checksum; }\n\n return checksum;\n};\n\nexport function getAddress(address: string): string {\n let result = null;\n\n if (typeof(address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") { address = \"0x\" + address; }\n\n result = getChecksumAddress(address);\n\n // It is a checksummed address with a bad checksum\n if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n }\n\n // Maybe ICAP? (we only support direct mode)\n } else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n\n // It is an ICAP address with a bad checksum\n if (address.substring(2, 4) !== ibanChecksum(address)) {\n logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n }\n\n result = _base36To16(address.substring(4));\n while (result.length < 40) { result = \"0\" + result; }\n result = getChecksumAddress(\"0x\" + result);\n\n } else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n return result;\n}\n\nexport function isAddress(address: string): boolean {\n try {\n getAddress(address);\n return true;\n } catch (error) { }\n return false;\n}\n\nexport function getIcapAddress(address: string): string {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) { base36 = \"0\" + base36; }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction: { from: string, nonce: BigNumberish }) {\n let from: string = null;\n try {\n from = getAddress(transaction.from);\n } catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n\n return getAddress(hexDataSlice(keccak256(encode([ from, nonce ])), 12));\n}\n\nexport function getCreate2Address(from: string, salt: BytesLike, initCodeHash: BytesLike): string {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([ \"0xff\", getAddress(from), salt, initCodeHash ])), 12))\n}\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { hexZeroPad } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class AddressCoder extends Coder {\n\n constructor(localName: string) {\n super(\"address\", \"address\", localName, false);\n }\n\n defaultValue(): string {\n return \"0x0000000000000000000000000000000000000000\";\n }\n\n encode(writer: Writer, value: string): number {\n try {\n getAddress(value);\n } catch (error) {\n this._throwError(error.message, value);\n }\n return writer.writeValue(value);\n }\n\n decode(reader: Reader): any {\n return getAddress(hexZeroPad(reader.readValue().toHexString(), 20));\n }\n}\n\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\n// Clones the functionality of an existing Coder, but without a localName\nexport class AnonymousCoder extends Coder {\n private coder: Coder;\n\n constructor(coder: Coder) {\n super(coder.name, coder.type, undefined, coder.dynamic);\n this.coder = coder;\n }\n\n defaultValue(): any {\n return this.coder.defaultValue();\n }\n\n encode(writer: Writer, value: any): number {\n return this.coder.encode(writer, value);\n }\n\n decode(reader: Reader): any {\n return this.coder.decode(reader);\n }\n}\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"../_version\";\nconst logger = new Logger(version);\n\nimport { Coder, Reader, Result, Writer } from \"./abstract-coder\";\nimport { AnonymousCoder } from \"./anonymous\";\n\nexport function pack(writer: Writer, coders: ReadonlyArray<Coder>, values: Array<any> | { [ name: string ]: any }): number {\n let arrayValues: Array<any> = null;\n\n if (Array.isArray(values)) {\n arrayValues = values;\n\n } else if (values && typeof(values) === \"object\") {\n let unique: { [ name: string ]: boolean } = { };\n\n arrayValues = coders.map((coder) => {\n const name = coder.localName;\n if (!name) {\n logger.throwError(\"cannot encode object for signature with missing names\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"values\",\n coder: coder,\n value: values\n });\n }\n\n if (unique[name]) {\n logger.throwError(\"cannot encode object for signature with duplicate names\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"values\",\n coder: coder,\n value: values\n });\n }\n\n unique[name] = true;\n\n return values[name];\n });\n\n } else {\n logger.throwArgumentError(\"invalid tuple value\", \"tuple\", values);\n }\n\n if (coders.length !== arrayValues.length) {\n logger.throwArgumentError(\"types/value length mismatch\", \"tuple\", values);\n }\n\n let staticWriter = new Writer(writer.wordSize);\n let dynamicWriter = new Writer(writer.wordSize);\n\n let updateFuncs: Array<(baseOffset: number) => void> = [];\n coders.forEach((coder, index) => {\n let value = arrayValues[index];\n\n if (coder.dynamic) {\n // Get current dynamic offset (for the future pointer)\n let dynamicOffset = dynamicWriter.length;\n\n // Encode the dynamic value into the dynamicWriter\n coder.encode(dynamicWriter, value);\n\n // Prepare to populate the correct offset once we are done\n let updateFunc = staticWriter.writeUpdatableValue();\n updateFuncs.push((baseOffset: number) => {\n updateFunc(baseOffset + dynamicOffset);\n });\n\n } else {\n coder.encode(staticWriter, value);\n }\n });\n\n // Backfill all the dynamic offsets, now that we know the static length\n updateFuncs.forEach((func) => { func(staticWriter.length); });\n\n let length = writer.appendWriter(staticWriter);\n length += writer.appendWriter(dynamicWriter);\n return length;\n}\n\nexport function unpack(reader: Reader, coders: Array<Coder>): Result {\n let values: any = [];\n\n // A reader anchored to this base\n let baseReader = reader.subReader(0);\n\n coders.forEach((coder) => {\n let value: any = null;\n\n if (coder.dynamic) {\n let offset = reader.readValue();\n let offsetReader = baseReader.subReader(offset.toNumber());\n try {\n value = coder.decode(offsetReader);\n } catch (error) {\n // Cannot recover from this\n if (error.code === Logger.errors.BUFFER_OVERRUN) { throw error; }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n\n } else {\n try {\n value = coder.decode(reader);\n } catch (error) {\n // Cannot recover from this\n if (error.code === Logger.errors.BUFFER_OVERRUN) { throw error; }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n }\n\n if (value != undefined) {\n values.push(value);\n }\n });\n\n // We only output named properties for uniquely named coders\n const uniqueNames = coders.reduce((accum, coder) => {\n const name = coder.localName;\n if (name) {\n if (!accum[name]) { accum[name] = 0; }\n accum[name]++;\n }\n return accum;\n }, <{ [ name: string ]: number }>{ });\n\n // Add any named parameters (i.e. tuples)\n coders.forEach((coder: Coder, index: number) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) { return; }\n\n if (name === \"length\") { name = \"_length\"; }\n\n if (values[name] != null) { return; }\n\n const value = values[index];\n\n if (value instanceof Error) {\n Object.defineProperty(values, name, {\n get: () => { throw value; }\n });\n } else {\n values[name] = value;\n }\n });\n\n for (let i = 0; i < values.length; i++) {\n const value = values[i];\n if (value instanceof Error) {\n Object.defineProperty(values, i, {\n get: () => { throw value; }\n });\n }\n }\n\n return Object.freeze(values);\n}\n\n\nexport class ArrayCoder extends Coder {\n readonly coder: Coder;\n readonly length: number;\n\n constructor(coder: Coder, length: number, localName: string) {\n const type = (coder.type + \"[\" + (length >= 0 ? length: \"\") + \"]\");\n const dynamic = (length === -1 || coder.dynamic);\n super(\"array\", type, localName, dynamic);\n\n this.coder = coder;\n this.length = length;\n }\n\n defaultValue(): Array<any> {\n // Verifies the child coder is valid (even if the array is dynamic or 0-length)\n const defaultChild = this.coder.defaultValue();\n\n const result: Array<any> = [];\n for (let i = 0; i < this.length; i++) {\n result.push(defaultChild);\n }\n return result;\n }\n\n encode(writer: Writer, value: Array<any>): number {\n if (!Array.isArray(value)) {\n this._throwError(\"expected array value\", value);\n }\n\n let count = this.length;\n\n if (count === -1) {\n count = value.length;\n writer.writeValue(value.length);\n }\n\n logger.checkArgumentCount(value.length, count, \"coder array\" + (this.localName? (\" \"+ this.localName): \"\"));\n\n let coders = [];\n for (let i = 0; i < value.length; i++) { coders.push(this.coder); }\n\n return pack(writer, coders, value);\n }\n\n decode(reader: Reader): any {\n let count = this.length;\n if (count === -1) {\n count = reader.readValue().toNumber();\n }\n\n let coders = [];\n for (let i = 0; i < count; i++) { coders.push(new AnonymousCoder(this.coder)); }\n\n return reader.coerce(this.name, unpack(reader, coders));\n }\n}\n\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class BooleanCoder extends Coder {\n\n constructor(localName: string) {\n super(\"bool\", \"bool\", localName, false);\n }\n\n defaultValue(): boolean {\n return false;\n }\n\n encode(writer: Writer, value: boolean): number {\n return writer.writeValue(value ? 1: 0);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.type, !reader.readValue().isZero());\n }\n}\n\n","\"use strict\";\n\nimport { arrayify, hexlify } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class DynamicBytesCoder extends Coder {\n constructor(type: string, localName: string) {\n super(type, type, localName, true);\n }\n\n defaultValue(): string {\n return \"0x\";\n }\n\n encode(writer: Writer, value: any): number {\n value = arrayify(value);\n let length = writer.writeValue(value.length);\n length += writer.writeBytes(value);\n return length;\n }\n\n decode(reader: Reader): any {\n return reader.readBytes(reader.readValue().toNumber(), true);\n }\n}\n\nexport class BytesCoder extends DynamicBytesCoder {\n constructor(localName: string) {\n super(\"bytes\", localName);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.name, hexlify(super.decode(reader)));\n }\n}\n\n\n","\"use strict\";\n\nimport { arrayify, BytesLike, hexlify } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\n// @TODO: Merge this with bytes\nexport class FixedBytesCoder extends Coder {\n readonly size: number;\n\n constructor(size: number, localName: string) {\n let name = \"bytes\" + String(size);\n super(name, name, localName, false);\n this.size = size;\n }\n\n defaultValue(): string {\n return (\"0x0000000000000000000000000000000000000000000000000000000000000000\").substring(0, 2 + this.size * 2);\n }\n\n encode(writer: Writer, value: BytesLike): number {\n let data = arrayify(value);\n if (data.length !== this.size) { this._throwError(\"incorrect data length\", value); }\n return writer.writeBytes(data);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.name, hexlify(reader.readBytes(this.size)));\n }\n}\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class NullCoder extends Coder {\n\n constructor(localName: string) {\n super(\"null\", \"\", localName, false);\n }\n\n defaultValue(): null {\n return null;\n }\n\n encode(writer: Writer, value: any): number {\n if (value != null) { this._throwError(\"not null\", value); }\n return writer.writeBytes([ ]);\n }\n\n decode(reader: Reader): any {\n reader.readBytes(0);\n return reader.coerce(this.name, null);\n }\n}\n","export const AddressZero = \"0x0000000000000000000000000000000000000000\";\n\n","import { BigNumber } from \"@ethersproject/bignumber\";\n\nconst NegativeOne: BigNumber = (/*#__PURE__*/BigNumber.from(-1));\nconst Zero: BigNumber = (/*#__PURE__*/BigNumber.from(0));\nconst One: BigNumber = (/*#__PURE__*/BigNumber.from(1));\nconst Two: BigNumber = (/*#__PURE__*/BigNumber.from(2));\nconst WeiPerEther: BigNumber = (/*#__PURE__*/BigNumber.from(\"1000000000000000000\"));\nconst MaxUint256: BigNumber = (/*#__PURE__*/BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"));\n\nexport {\n NegativeOne,\n Zero,\n One,\n Two,\n WeiPerEther,\n MaxUint256\n};\n","export const HashZero = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\n\n","// NFKC (composed) // (decomposed)\nexport const EtherSymbol = \"\\u039e\"; // \"\\uD835\\uDF63\";\n","\"use strict\";\n\nexport { AddressZero } from \"./addresses\";\nexport {\n NegativeOne,\n Zero,\n One,\n Two,\n WeiPerEther,\n MaxUint256\n} from \"./bignumbers\";\nexport { HashZero } from \"./hashes\";\nexport { EtherSymbol } from \"./strings\";\n\n","\"use strict\";\n\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { MaxUint256, NegativeOne, One, Zero } from \"@ethersproject/constants\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class NumberCoder extends Coder {\n readonly size: number;\n readonly signed: boolean;\n\n constructor(size: number, signed: boolean, localName: string) {\n const name = ((signed ? \"int\": \"uint\") + (size * 8));\n super(name, name, localName, false);\n\n this.size = size;\n this.signed = signed;\n }\n\n defaultValue(): number {\n return 0;\n }\n\n encode(writer: Writer, value: BigNumberish): number {\n let v = BigNumber.from(value);\n\n // Check bounds are safe for encoding\n let maxUintValue = MaxUint256.mask(writer.wordSize * 8);\n if (this.signed) {\n let bounds = maxUintValue.mask(this.size * 8 - 1);\n if (v.gt(bounds) || v.lt(bounds.add(One).mul(NegativeOne))) {\n this._throwError(\"value out-of-bounds\", value);\n }\n } else if (v.lt(Zero) || v.gt(maxUintValue.mask(this.size * 8))) {\n this._throwError(\"value out-of-bounds\", value);\n }\n\n v = v.toTwos(this.size * 8).mask(this.size * 8);\n\n if (this.signed) {\n v = v.fromTwos(this.size * 8).toTwos(8 * writer.wordSize);\n }\n\n return writer.writeValue(v);\n }\n\n decode(reader: Reader): any {\n let value = reader.readValue().mask(this.size * 8);\n\n if (this.signed) {\n value = value.fromTwos(this.size * 8);\n }\n\n return reader.coerce(this.name, value);\n }\n}\n\n","export const version = \"strings/5.0.7\";\n","\"use strict\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n\nexport enum UnicodeNormalizationForm {\n current = \"\",\n NFC = \"NFC\",\n NFD = \"NFD\",\n NFKC = \"NFKC\",\n NFKD = \"NFKD\"\n};\n\nexport enum Utf8ErrorReason {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n UNEXPECTED_CONTINUE = \"unexpected continuation byte\",\n\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n BAD_PREFIX = \"bad codepoint prefix\",\n\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n OVERRUN = \"string overrun\",\n\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n MISSING_CONTINUE = \"missing continuation byte\",\n\n // The computed code point is outside the range for UTF-8\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; outside the UTF-8 range\n OUT_OF_RANGE = \"out of UTF-8 range\",\n\n // UTF-8 strings may not contain UTF-16 surrogate pairs\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n UTF16_SURROGATE = \"UTF-16 surrogate\",\n\n // The string is an overlong reperesentation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n OVERLONG = \"overlong representation\",\n};\n\n\nexport type Utf8ErrorFunc = (reason: Utf8ErrorReason, offset: number, bytes: ArrayLike<number>, output: Array<number>, badCodepoint?: number) => number;\n\nfunction errorFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike<number>, output: Array<number>, badCodepoint?: number): number {\n return logger.throwArgumentError(`invalid codepoint at offset ${ offset }; ${ reason }`, \"bytes\", bytes);\n}\n\nfunction ignoreFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike<number>, output: Array<number>, badCodepoint?: number): number {\n\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) { break; }\n i++;\n }\n return i;\n }\n\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === Utf8ErrorReason.OVERRUN) {\n return bytes.length - offset - 1;\n }\n\n // Nothing to skip\n return 0;\n}\n\nfunction replaceFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike<number>, output: Array<number>, badCodepoint?: number): number {\n\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push(badCodepoint);\n return 0;\n }\n\n // Put the replacement character into the output\n output.push(0xfffd);\n\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n\n// Common error handing strategies\nexport const Utf8ErrorFuncs: { [ name: string ]: Utf8ErrorFunc } = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes: BytesLike, onError?: Utf8ErrorFunc): Array<number> {\n if (onError == null) { onError = Utf8ErrorFuncs.error; }\n\n bytes = arrayify(bytes);\n\n const result: Array<number> = [];\n let i = 0;\n\n // Invalid bytes are ignored\n while(i < bytes.length) {\n\n const c = bytes[i++];\n\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n\n // 1110 xxxx 10xx xxxx 10xx xxxx\n } else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n } else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n\n } else {\n if ((c & 0xc0) === 0x80) {\n i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n } else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\n }\n\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n continue;\n }\n\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n res = null;\n break;\n };\n\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n\n // See above loop for invalid contimuation byte\n if (res === null) { continue; }\n\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n result.push(res);\n }\n\n return result;\n}\n\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str: string, form: UnicodeNormalizationForm = UnicodeNormalizationForm.current): Uint8Array {\n\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n\n if (c < 0x80) {\n result.push(c);\n\n } else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n\n } else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\n }\n\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n\n } else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n\n return arrayify(result);\n};\n\nfunction escapeChar(value: number) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\n\nexport function _toEscapedUtf8String(bytes: BytesLike, onError?: Utf8ErrorFunc): string {\n return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n if (codePoint < 256) {\n switch (codePoint) {\n case 8: return \"\\\\b\";\n case 9: return \"\\\\t\";\n case 10: return \"\\\\n\"\n case 13: return \"\\\\r\";\n case 34: return \"\\\\\\\"\";\n case 92: return \"\\\\\\\\\";\n }\n\n if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\n\nexport function _toUtf8String(codePoints: Array<number>): string {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode(\n (((codePoint >> 10) & 0x3ff) + 0xd800),\n ((codePoint & 0x3ff) + 0xdc00)\n );\n }).join(\"\");\n}\n\nexport function toUtf8String(bytes: BytesLike, onError?: Utf8ErrorFunc): string {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\n\nexport function toUtf8CodePoints(str: string, form: UnicodeNormalizationForm = UnicodeNormalizationForm.current): Array<number> {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n","\"use strict\";\n\nimport { HashZero } from \"@ethersproject/constants\";\nimport { arrayify, BytesLike, concat, hexlify } from \"@ethersproject/bytes\";\n\nimport { toUtf8Bytes, toUtf8String } from \"./utf8\";\n\n\nexport function formatBytes32String(text: string): string {\n\n // Get the bytes\n const bytes = toUtf8Bytes(text);\n\n // Check we have room for null-termination\n if (bytes.length > 31) { throw new Error(\"bytes32 string must be less than 32 bytes\"); }\n\n // Zero-pad (implicitly null-terminates)\n return hexlify(concat([ bytes, HashZero ]).slice(0, 32));\n}\n\nexport function parseBytes32String(bytes: BytesLike): string {\n const data = arrayify(bytes);\n\n // Must be 32 bytes with a null-termination\n if (data.length !== 32) { throw new Error(\"invalid bytes32 - not 32 bytes long\"); }\n if (data[31] !== 0) { throw new Error(\"invalid bytes32 string - no null terminator\"); }\n\n // Find the null termination\n let length = 31;\n while (data[length - 1] === 0) { length--; }\n\n // Determine the string value\n return toUtf8String(data.slice(0, length));\n}\n\n","\"use strict\";\n\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8\";\n\ntype Ranged = {\n l: number, // Lo value\n h: number, // High value (less the lo)\n d?: number, // Delta/stride (default: 1)\n s?: number, // Shift (default: 1)\n e?: Array<number> // Exceptions to skip\n};\n\ntype Table = { [ src: number ]: Array<number> };\n\nfunction bytes2(data: string): Array<number> {\n if ((data.length % 4) !== 0) { throw new Error(\"bad data\"); }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\n\nfunction createTable(data: string, func?: (value: string) => Array<number>): Table {\n if (!func) {\n func = function(value: string) { return [ parseInt(value, 16) ]; }\n }\n\n let lo = 0;\n\n let result: Table = { };\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n\n return result;\n}\n\nfunction createRangeTable(data: string): Array<Ranged> {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n } else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\n\nfunction matchMap(value: number, ranges: Array<Ranged>): Ranged {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) { continue; }\n return range;\n }\n }\n return null;\n}\n\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\n\nconst Table_B_2_ranges: Array<Ranged> = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [ 23 ], l: 127 },\n { h: 54, s: 1, e: [ 48 ], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [ 2, 6, 8 ], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [ 18, 24, 66 ], l: 19, d: 2 },\n { h: 26, s: 32, e: [ 17 ], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [ 38 ], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [ 1, 4, 5, 7, 8, 11, 12, 17 ], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [ 2, 7, 8, 17 ], l: 52 },\n { h: 24, s: -120023, e: [ 2, 7, 13, 15, 16, 17 ], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [ 17 ], l: 56 },\n { h: 24, s: -119601, e: [ 17 ], l: 58 },\n { h: 24, s: -119659, e: [ 17 ], l: 58 },\n { h: 24, s: -119717, e: [ 17 ], l: 58 },\n { h: 24, s: -119775, e: [ 17 ], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\n\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\n\n\nfunction flatten(values: Array<Array<number>>): Array<number> {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, [ ]);\n}\n\nexport function _nameprepTableA1(codepoint: number): boolean {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\n\nexport function _nameprepTableB2(codepoint: number): Array<number> {\n let range = matchMap(codepoint, Table_B_2_ranges);\n if (range) { return [ codepoint + range.s ]; }\n\n let codes = Table_B_2_lut_abs[codepoint];\n if (codes) { return codes; }\n\n let shift = Table_B_2_lut_rel[codepoint];\n if (shift) { return [ codepoint + shift[0] ]; }\n\n let complex = Table_B_2_complex[codepoint];\n if (complex) { return complex; }\n\n return null;\n}\n\nexport function _nameprepTableC(codepoint: number): boolean {\n return !!matchMap(codepoint, Table_C_ranges);\n}\n\nexport function nameprep(value: string): string {\n\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) { return value.toLowerCase(); }\n\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) { return [ ]; }\n if (code >= 0xfe00 && code <= 0xfe0f) { return [ ]; }\n\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) { return codesTableB2; }\n\n // No Substitution\n return [ code ];\n }));\n\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_PROHIBITED\");\n }\n });\n\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_UNASSIGNED\");\n }\n });\n\n // IDNA extras\n let name = _toUtf8String(codes);\n\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n throw new Error(\"invalid hyphen\");\n }\n\n // IDNA: 4.2.4\n if (name.length > 63) { throw new Error(\"too long\"); }\n\n\n\n return name;\n}\n\n","\"use strict\";\n\nimport { formatBytes32String, parseBytes32String } from \"./bytes32\";\nimport { nameprep } from \"./idna\";\nimport { _toEscapedUtf8String, toUtf8Bytes, toUtf8CodePoints, toUtf8String, UnicodeNormalizationForm, Utf8ErrorFunc, Utf8ErrorFuncs, Utf8ErrorReason } from \"./utf8\";\n\nexport {\n _toEscapedUtf8String,\n toUtf8Bytes,\n toUtf8CodePoints,\n toUtf8String,\n\n Utf8ErrorFunc,\n Utf8ErrorFuncs,\n Utf8ErrorReason,\n\n UnicodeNormalizationForm,\n\n formatBytes32String,\n parseBytes32String,\n\n nameprep\n}\n","\"use strict\";\n\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { Reader, Writer } from \"./abstract-coder\";\nimport { DynamicBytesCoder } from \"./bytes\";\n\nexport class StringCoder extends DynamicBytesCoder {\n\n constructor(localName: string) {\n super(\"string\", localName);\n }\n\n defaultValue(): string {\n return \"\";\n }\n\n encode(writer: Writer, value: any): number {\n return super.encode(writer, toUtf8Bytes(value));\n }\n\n decode(reader: Reader): any {\n return toUtf8String(super.decode(reader));\n }\n}\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\nimport { pack, unpack } from \"./array\";\n\nexport class TupleCoder extends Coder {\n readonly coders: Array<Coder>;\n\n constructor(coders: Array<Coder>, localName: string) {\n let dynamic = false;\n const types: Array<string> = [];\n coders.forEach((coder) => {\n if (coder.dynamic) { dynamic = true; }\n types.push(coder.type);\n });\n const type = (\"tuple(\" + types.join(\",\") + \")\");\n\n super(\"tuple\", type, localName, dynamic);\n this.coders = coders;\n }\n\n defaultValue(): any {\n const values: any = [ ];\n this.coders.forEach((coder) => {\n values.push(coder.defaultValue());\n });\n\n // We only output named properties for uniquely named coders\n const uniqueNames = this.coders.reduce((accum, coder) => {\n const name = coder.localName;\n if (name) {\n if (!accum[name]) { accum[name] = 0; }\n accum[name]++;\n }\n return accum;\n }, <{ [ name: string ]: number }>{ });\n\n // Add named values\n this.coders.forEach((coder: Coder, index: number) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) { return; }\n\n if (name === \"length\") { name = \"_length\"; }\n\n if (values[name] != null) { return; }\n\n values[name] = values[index];\n });\n\n return Object.freeze(values);\n }\n\n encode(writer: Writer, value: Array<any> | { [ name: string ]: any }): number {\n return pack(writer, this.coders, value);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.name, unpack(reader, this.coders));\n }\n}\n\n","\"use strict\";\n\n// See: https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Coder, Reader, Result, Writer } from \"./coders/abstract-coder\";\nimport { AddressCoder } from \"./coders/address\";\nimport { ArrayCoder } from \"./coders/array\";\nimport { BooleanCoder } from \"./coders/boolean\";\nimport { BytesCoder } from \"./coders/bytes\";\nimport { FixedBytesCoder } from \"./coders/fixed-bytes\";\nimport { NullCoder } from \"./coders/null\";\nimport { NumberCoder } from \"./coders/number\";\nimport { StringCoder } from \"./coders/string\";\nimport { TupleCoder } from \"./coders/tuple\";\n\nimport { ParamType } from \"./fragments\";\n\n\nconst paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);\nconst paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);\n\n\nexport type CoerceFunc = (type: string, value: any) => any;\n\nexport class AbiCoder {\n readonly coerceFunc: CoerceFunc;\n\n constructor(coerceFunc?: CoerceFunc) {\n logger.checkNew(new.target, AbiCoder);\n defineReadOnly(this, \"coerceFunc\", coerceFunc || null);\n }\n\n _getCoder(param: ParamType): Coder {\n\n switch (param.baseType) {\n case \"address\":\n return new AddressCoder(param.name);\n case \"bool\":\n return new BooleanCoder(param.name);\n case \"string\":\n return new StringCoder(param.name);\n case \"bytes\":\n return new BytesCoder(param.name);\n case \"array\":\n return new ArrayCoder(this._getCoder(param.arrayChildren), param.arrayLength, param.name);\n case \"tuple\":\n return new TupleCoder((param.components || []).map((component) => {\n return this._getCoder(component);\n }), param.name);\n case \"\":\n return new NullCoder(param.name);\n }\n\n // u?int[0-9]*\n let match = param.type.match(paramTypeNumber);\n if (match) {\n let size = parseInt(match[2] || \"256\");\n if (size === 0 || size > 256 || (size % 8) !== 0) {\n logger.throwArgumentError(\"invalid \" + match[1] + \" bit length\", \"param\", param);\n }\n return new NumberCoder(size / 8, (match[1] === \"int\"), param.name);\n }\n\n // bytes[0-9]+\n match = param.type.match(paramTypeBytes);\n if (match) {\n let size = parseInt(match[1]);\n if (size === 0 || size > 32) {\n logger.throwArgumentError(\"invalid bytes length\", \"param\", param);\n }\n return new FixedBytesCoder(size, param.name);\n }\n\n return logger.throwArgumentError(\"invalid type\", \"type\", param.type);\n }\n\n _getWordSize(): number { return 32; }\n\n _getReader(data: Uint8Array, allowLoose?: boolean): Reader {\n return new Reader(data, this._getWordSize(), this.coerceFunc, allowLoose);\n }\n\n _getWriter(): Writer {\n return new Writer(this._getWordSize());\n }\n\n getDefaultValue(types: Array<string | ParamType>): Result {\n const coders: Array<Coder> = types.map((type) => this._getCoder(ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.defaultValue();\n }\n\n encode(types: Array<string | ParamType>, values: Array<any>): string {\n if (types.length !== values.length) {\n logger.throwError(\"types/values length mismatch\", Logger.errors.INVALID_ARGUMENT, {\n count: { types: types.length, values: values.length },\n value: { types: types, values: values }\n });\n }\n\n const coders = types.map((type) => this._getCoder(ParamType.from(type)));\n const coder = (new TupleCoder(coders, \"_\"));\n\n const writer = this._getWriter();\n coder.encode(writer, values);\n return writer.data;\n }\n\n decode(types: Array<string | ParamType>, data: BytesLike, loose?: boolean): Result {\n const coders: Array<Coder> = types.map((type) => this._getCoder(ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.decode(this._getReader(arrayify(data), loose));\n }\n}\n\nexport const defaultAbiCoder: AbiCoder = new AbiCoder();\n\n","import { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\n\nexport function id(text: string): string {\n return keccak256(toUtf8Bytes(text));\n}\n","export const version = \"hash/5.0.9\";\n","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { nameprep, toUtf8Bytes } from \"@ethersproject/strings\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\n\nconst Partition = new RegExp(\"^((.*)\\\\.)?([^.]+)$\");\n\nexport function isValidName(name: string): boolean {\n try {\n const comps = name.split(\".\");\n for (let i = 0; i < comps.length; i++) {\n if (nameprep(comps[i]).length === 0) {\n throw new Error(\"empty\")\n }\n }\n return true;\n } catch (error) { }\n return false;\n}\n\nexport function namehash(name: string): string {\n /* istanbul ignore if */\n if (typeof(name) !== \"string\") {\n logger.throwArgumentError(\"invalid address - \" + String(name), \"name\", name);\n }\n\n let result: string | Uint8Array = Zeros;\n while (name.length) {\n const partition = name.match(Partition);\n const label = toUtf8Bytes(nameprep(partition[3]));\n result = keccak256(concat([result, keccak256(label)]));\n\n name = partition[2] || \"\";\n }\n\n return hexlify(result);\n}\n\n","import { Bytes, concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\n\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\n\nexport function hashMessage(message: Bytes | string): string {\n if (typeof(message) === \"string\") { message = toUtf8Bytes(message); }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n\n","import { TypedDataDomain, TypedDataField } from \"@ethersproject/abstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, hexConcat, hexlify, hexValue, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { id } from \"./id\";\n\nconst padding = new Uint8Array(32);\npadding.fill(0);\n\nconst NegativeOne: BigNumber = BigNumber.from(-1);\nconst Zero: BigNumber = BigNumber.from(0);\nconst One: BigNumber = BigNumber.from(1);\nconst MaxUint256: BigNumber = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n\nfunction hexPadRight(value: BytesLike) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32\n if (padOffset) {\n return hexConcat([ bytes, padding.slice(padOffset) ]);\n }\n return hexlify(bytes);\n}\n\nconst hexTrue = hexZeroPad(One.toHexString(), 32);\nconst hexFalse = hexZeroPad(Zero.toHexString(), 32);\n\nconst domainFieldTypes: Record<string, string> = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\n\nconst domainFieldNames: Array<string> = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\n\nfunction checkString(key: string): (value: any) => string {\n return function (value: any){\n if (typeof(value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${ JSON.stringify(key) }`, `domain.${ key }`, value);\n }\n return value;\n }\n}\n\nconst domainChecks: Record<string, (value: any) => any> = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function(value: any) {\n try {\n return BigNumber.from(value).toString()\n } catch (error) { }\n return logger.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n },\n verifyingContract: function(value: any) {\n try {\n return getAddress(value).toLowerCase();\n } catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function(value: any) {\n try {\n const bytes = arrayify(value);\n if (bytes.length !== 32) { throw new Error(\"bad length\"); }\n return hexlify(bytes);\n } catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n}\n\nfunction getBaseEncoder(type: string): (value: any) => string {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\n\n const width = parseInt(match[2] || \"256\");\n if (width % 8 !== 0 || width > 256 || (match[2] && match[2] !== String(width))) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n\n const boundsUpper = MaxUint256.mask(signed ? (width - 1): width);\n const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne): Zero;\n\n return function(value: BigNumberish) {\n const v = BigNumber.from(value);\n\n if (v.lt(boundsLower) || v.gt(boundsUpper)) {\n logger.throwArgumentError(`value out-of-bounds for ${ type }`, \"value\", value);\n }\n\n return hexZeroPad(v.toTwos(256).toHexString(), 32);\n };\n }\n }\n\n // bytesXX\n {\n const match = type.match(/^bytes(\\d+)$/);\n if (match) {\n const width = parseInt(match[1]);\n if (width === 0 || width > 32 || match[1] !== String(width)) {\n logger.throwArgumentError(\"invalid bytes width\", \"type\", type);\n }\n\n return function(value: BytesLike) {\n const bytes = arrayify(value);\n if (bytes.length !== width) {\n logger.throwArgumentError(`invalid length for ${ type }`, \"value\", value);\n }\n return hexPadRight(value);\n };\n }\n }\n\n switch (type) {\n case \"address\": return function(value: string) {\n return hexZeroPad(getAddress(value), 32);\n };\n case \"bool\": return function(value: boolean) {\n return ((!value) ? hexFalse: hexTrue);\n };\n case \"bytes\": return function(value: BytesLike) {\n return keccak256(value);\n };\n case \"string\": return function(value: string) {\n return id(value);\n };\n }\n\n return null;\n}\n\nfunction encodeType(name: string, fields: Array<TypedDataField>): string {\n return `${ name }(${ fields.map(({ name, type }) => (type + \" \" + name)).join(\",\") })`;\n}\n\nexport class TypedDataEncoder {\n readonly primaryType: string;\n readonly types: Record<string, Array<TypedDataField>>;\n\n readonly _encoderCache: Record<string, (value: any) => string>;\n readonly _types: Record<string, string>;\n\n constructor(types: Record<string, Array<TypedDataField>>) {\n defineReadOnly(this, \"types\", Object.freeze(deepCopy(types)));\n\n defineReadOnly(this, \"_encoderCache\", { });\n defineReadOnly(this, \"_types\", { });\n\n // Link struct types to their direct child structs\n const links: Record<string, Record<string, boolean>> = { };\n\n // Link structs to structs which contain them as a child\n const parents: Record<string, Array<string>> = { };\n\n // Link all subtypes within a given struct\n const subtypes: Record<string, Record<string, boolean>> = { };\n\n Object.keys(types).forEach((type) => {\n links[type] = { };\n parents[type] = [ ];\n subtypes[type] = { }\n });\n\n for (const name in types) {\n\n const uniqueNames: Record<string, boolean> = { };\n\n types[name].forEach((field) => {\n\n // Check each field has a unique name\n if (uniqueNames[field.name]) {\n logger.throwArgumentError(`duplicate variable name ${ JSON.stringify(field.name) } in ${ JSON.stringify(name) }`, \"types\", types);\n }\n uniqueNames[field.name] = true;\n\n // Get the base type (drop any array specifiers)\n const baseType = field.type.match(/^([^\\x5b]*)(\\x5b|$)/)[1];\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${ JSON.stringify(baseType) }`, \"types\", types);\n }\n\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) { return ;}\n\n if (!parents[baseType]) {\n logger.throwArgumentError(`unknown type ${ JSON.stringify(baseType) }`, \"types\", types);\n }\n\n // Add linkage\n parents[baseType].push(name);\n links[name][baseType] = true;\n });\n }\n\n // Deduce the primary type\n const primaryTypes = Object.keys(parents).filter((n) => (parents[n].length === 0));\n\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n } else if (primaryTypes.length > 1) {\n logger.throwArgumentError(`ambiguous primary types or unused types: ${ primaryTypes.map((t) => (JSON.stringify(t))).join(\", \") }`, \"types\", types);\n }\n\n defineReadOnly(this, \"primaryType\", primaryTypes[0]);\n\n // Check for circular type references\n function checkCircular(type: string, found: Record<string, boolean>) {\n if (found[type]) {\n logger.throwArgumentError(`circular type reference to ${ JSON.stringify(type) }`, \"types\", types);\n }\n\n found[type] = true;\n\n Object.keys(links[type]).forEach((child) => {\n if (!parents[child]) { return; }\n\n // Recursively check children\n checkCircular(child, found);\n\n // Mark all ancestors as having this decendant\n Object.keys(found).forEach((subtype) => {\n subtypes[subtype][child] = true;\n });\n });\n\n delete found[type];\n }\n checkCircular(this.primaryType, { });\n\n // Compute each fully describe type\n for (const name in subtypes) {\n const st = Object.keys(subtypes[name]);\n st.sort();\n this._types[name] = encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\");\n }\n }\n\n getEncoder(type: string): (value: any) => string {\n let encoder = this._encoderCache[type];\n if (!encoder) {\n encoder = this._encoderCache[type] = this._getEncoder(type);\n }\n return encoder;\n }\n\n _getEncoder(type: string): (value: any) => string {\n\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) { return encoder; }\n }\n\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const subEncoder = this.getEncoder(subtype);\n const length = parseInt(match[3]);\n return (value: Array<any>) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n\n let result = value.map(subEncoder);\n if (this._types[subtype]) {\n result = result.map(keccak256);\n }\n\n return keccak256(hexConcat(result));\n };\n }\n\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this._types[type]);\n return (value: Record<string, any>) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this._types[type]) { return keccak256(result); }\n return result;\n });\n values.unshift(encodedType);\n return hexConcat(values);\n }\n }\n\n return logger.throwArgumentError(`unknown type: ${ type }`, \"type\", type);\n }\n\n encodeType(name: string): string {\n const result = this._types[name];\n if (!result) {\n logger.throwArgumentError(`unknown type: ${ JSON.stringify(name) }`, \"name\", name);\n }\n return result;\n }\n\n encodeData(type: string, value: any): string {\n return this.getEncoder(type)(value);\n }\n\n hashStruct(name: string, value: Record<string, any>): string {\n return keccak256(this.encodeData(name, value));\n }\n\n encode(value: Record<string, any>): string {\n return this.encodeData(this.primaryType, value);\n }\n\n hash(value: Record<string, any>): string {\n return this.hashStruct(this.primaryType, value);\n }\n\n _visit(type: string, value: any, callback: (type: string, data: any) => any): any {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) { return callback(type, value); }\n }\n\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const length = parseInt(match[3]);\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n return value.map((v: any) => this._visit(subtype, v, callback));\n }\n\n // Struct\n const fields = this.types[type];\n if (fields) {\n return fields.reduce((accum, { name, type }) => {\n accum[name] = this._visit(type, value[name], callback);\n return accum;\n }, <Record<string, any>>{});\n }\n\n return logger.throwArgumentError(`unknown type: ${ type }`, \"type\", type);\n }\n\n visit(value: Record<string, any>, callback: (type: string, data: any) => any): any {\n return this._visit(this.primaryType, value, callback);\n }\n\n static from(types: Record<string, Array<TypedDataField>>): TypedDataEncoder {\n return new TypedDataEncoder(types);\n }\n\n static getPrimaryType(types: Record<string, Array<TypedDataField>>): string {\n return TypedDataEncoder.from(types).primaryType;\n }\n\n static hashStruct(name: string, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): string {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n\n static hashDomain(domain: TypedDataDomain): string {\n const domainFields: Array<TypedDataField> = [ ];\n for (const name in domain) {\n const type = domainFieldTypes[name];\n if (!type) {\n logger.throwArgumentError(`invalid typed-data domain key: ${ JSON.stringify(name) }`, \"domain\", domain);\n }\n domainFields.push({ name, type });\n }\n\n domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n\n static encode(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): string {\n return hexConcat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n\n static hash(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): string {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n\n // Replaces all address types with ENS names with their looked up address\n static async resolveNames(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>, resolveName: (name: string) => Promise<string>): Promise<{ domain: TypedDataDomain, value: any }> {\n // Make a copy to isolate it from the object passed in\n domain = shallowCopy(domain);\n\n // Look up all ENS names\n const ensCache: Record<string, string> = { };\n\n // Do we need to look up the domain's verifyingContract?\n if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n ensCache[domain.verifyingContract] = \"0x\";\n }\n\n // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n\n // Get a list of all the addresses\n encoder.visit(value, (type: string, value: any) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = await resolveName(name);\n }\n\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n\n // Replace all ENS names with their address\n value = encoder.visit(value, (type: string, value: any) => {\n if (type === \"address\" && ensCache[value]) { return ensCache[value]; }\n return value;\n });\n\n return { domain, value };\n }\n\n static getPayload(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): any {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n\n // Derive the EIP712Domain Struct reference type\n const domainValues: Record<string, any> = { };\n const domainTypes: Array<{ name: string, type:string }> = [ ];\n\n domainFieldNames.forEach((name) => {\n const value = (<any>domain)[name];\n if (value == null) { return; }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n\n const encoder = TypedDataEncoder.from(types);\n\n const typesWithDomain = shallowCopy(types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n } else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n\n // Validate the data structures and types\n encoder.encode(value);\n\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type: string, value: any) => {\n\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(arrayify(value));\n }\n\n // uint or int\n if (type.match(/^u?int/)) {\n let prefix = \"\";\n let v = BigNumber.from(value);\n if (v.isNegative()) {\n prefix = \"-\";\n v = v.mul(-1);\n }\n return prefix + hexValue(v.toHexString());\n }\n\n switch (type) {\n case \"address\":\n return value.toLowerCase();\n case \"bool\":\n return !!value;\n case \"string\":\n if (typeof(value) !== \"string\") {\n logger.throwArgumentError(`invalid string`, \"value\", value);\n }\n return value;\n }\n\n return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n\n","\"use strict\";\n\nimport { id } from \"./id\";\nimport { isValidName, namehash } from \"./namehash\";\nimport { hashMessage, messagePrefix } from \"./message\";\n\nimport { TypedDataEncoder as _TypedDataEncoder } from \"./typed-data\";\n\nexport {\n id,\n\n namehash,\n isValidName,\n\n messagePrefix,\n hashMessage,\n\n _TypedDataEncoder,\n}\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, concat, hexDataSlice, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { id } from \"@ethersproject/hash\";\nimport { keccak256 } from \"@ethersproject/keccak256\"\nimport { defineReadOnly, Description, getStatic } from \"@ethersproject/properties\";\n\nimport { AbiCoder, defaultAbiCoder } from \"./abi-coder\";\nimport { checkResultErrors, Result } from \"./coders/abstract-coder\";\nimport { ConstructorFragment, EventFragment, FormatTypes, Fragment, FunctionFragment, JsonFragment, ParamType } from \"./fragments\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport { checkResultErrors, Result };\n\nexport class LogDescription extends Description<LogDescription> {\n readonly eventFragment: EventFragment;\n readonly name: string;\n readonly signature: string;\n readonly topic: string;\n readonly args: Result\n}\n\nexport class TransactionDescription extends Description<TransactionDescription> {\n readonly functionFragment: FunctionFragment;\n readonly name: string;\n readonly args: Result;\n readonly signature: string;\n readonly sighash: string;\n readonly value: BigNumber;\n}\n\nexport class Indexed extends Description<Indexed> {\n readonly hash: string;\n readonly _isIndexed: boolean;\n\n static isIndexed(value: any): value is Indexed {\n return !!(value && value._isIndexed);\n }\n}\n\nfunction wrapAccessError(property: string, error: Error): Error {\n const wrap = new Error(`deferred error during ABI decoding triggered accessing ${ property }`);\n (<any>wrap).error = error;\n return wrap;\n}\n\n/*\nfunction checkNames(fragment: Fragment, type: \"input\" | \"output\", params: Array<ParamType>): void {\n params.reduce((accum, param) => {\n if (param.name) {\n if (accum[param.name]) {\n logger.throwArgumentError(`duplicate ${ type } parameter ${ JSON.stringify(param.name) } in ${ fragment.format(\"full\") }`, \"fragment\", fragment);\n }\n accum[param.name] = true;\n }\n return accum;\n }, <{ [ name: string ]: boolean }>{ });\n}\n*/\nexport class Interface {\n readonly fragments: Array<Fragment>;\n\n readonly errors: { [ name: string ]: any };\n readonly events: { [ name: string ]: EventFragment };\n readonly functions: { [ name: string ]: FunctionFragment };\n readonly structs: { [ name: string ]: any };\n\n readonly deploy: ConstructorFragment;\n\n readonly _abiCoder: AbiCoder;\n\n readonly _isInterface: boolean;\n\n constructor(fragments: string | Array<Fragment | JsonFragment | string>) {\n logger.checkNew(new.target, Interface);\n\n let abi: Array<Fragment | JsonFragment | string> = [ ];\n if (typeof(fragments) === \"string\") {\n abi = JSON.parse(fragments);\n } else {\n abi = fragments;\n }\n\n defineReadOnly(this, \"fragments\", abi.map((fragment) => {\n return Fragment.from(fragment);\n }).filter((fragment) => (fragment != null)));\n\n defineReadOnly(this, \"_abiCoder\", getStatic<() => AbiCoder>(new.target, \"getAbiCoder\")());\n\n defineReadOnly(this, \"functions\", { });\n defineReadOnly(this, \"errors\", { });\n defineReadOnly(this, \"events\", { });\n defineReadOnly(this, \"structs\", { });\n\n // Add all fragments by their signature\n this.fragments.forEach((fragment) => {\n let bucket: { [ name: string ]: Fragment } = null;\n switch (fragment.type) {\n case \"constructor\":\n if (this.deploy) {\n logger.warn(\"duplicate definition - constructor\");\n return;\n }\n //checkNames(fragment, \"input\", fragment.inputs);\n defineReadOnly(this, \"deploy\", <ConstructorFragment>fragment);\n return;\n case \"function\":\n //checkNames(fragment, \"input\", fragment.inputs);\n //checkNames(fragment, \"output\", (<FunctionFragment>fragment).outputs);\n bucket = this.functions;\n break;\n case \"event\":\n //checkNames(fragment, \"input\", fragment.inputs);\n bucket = this.events;\n break;\n default:\n return;\n }\n\n let signature = fragment.format();\n if (bucket[signature]) {\n logger.warn(\"duplicate definition - \" + signature);\n return;\n }\n\n bucket[signature] = fragment;\n });\n\n // If we do not have a constructor add a default\n if (!this.deploy) {\n defineReadOnly(this, \"deploy\", ConstructorFragment.from({\n payable: false,\n type: \"constructor\"\n }));\n }\n\n defineReadOnly(this, \"_isInterface\", true);\n }\n\n format(format?: string): string | Array<string> {\n if (!format) { format = FormatTypes.full; }\n if (format === FormatTypes.sighash) {\n logger.throwArgumentError(\"interface does not support formatting sighash\", \"format\", format);\n }\n\n const abi = this.fragments.map((fragment) => fragment.format(format));\n\n // We need to re-bundle the JSON fragments a bit\n if (format === FormatTypes.json) {\n return JSON.stringify(abi.map((j) => JSON.parse(j)));\n }\n\n return abi;\n }\n\n // Sub-classes can override these to handle other blockchains\n static getAbiCoder(): AbiCoder {\n return defaultAbiCoder;\n }\n\n static getAddress(address: string): string {\n return getAddress(address);\n }\n\n static getSighash(functionFragment: FunctionFragment): string {\n return hexDataSlice(id(functionFragment.format()), 0, 4);\n }\n\n static getEventTopic(eventFragment: EventFragment): string {\n return id(eventFragment.format());\n }\n\n // Find a function definition by any means necessary (unless it is ambiguous)\n getFunction(nameOrSignatureOrSighash: string): FunctionFragment {\n if (isHexString(nameOrSignatureOrSighash)) {\n for (const name in this.functions) {\n if (nameOrSignatureOrSighash === this.getSighash(name)) {\n return this.functions[name];\n }\n }\n logger.throwArgumentError(\"no matching function\", \"sighash\", nameOrSignatureOrSighash);\n }\n\n // It is a bare name, look up the function (will return null if ambiguous)\n if (nameOrSignatureOrSighash.indexOf(\"(\") === -1) {\n const name = nameOrSignatureOrSighash.trim();\n const matching = Object.keys(this.functions).filter((f) => (f.split(\"(\"/* fix:) */)[0] === name));\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching function\", \"name\", name);\n } else if (matching.length > 1) {\n logger.throwArgumentError(\"multiple matching functions\", \"name\", name);\n }\n\n return this.functions[matching[0]];\n }\n\n // Normlize the signature and lookup the function\n const result = this.functions[FunctionFragment.fromString(nameOrSignatureOrSighash).format()];\n if (!result) {\n logger.throwArgumentError(\"no matching function\", \"signature\", nameOrSignatureOrSighash);\n }\n return result;\n }\n\n // Find an event definition by any means necessary (unless it is ambiguous)\n getEvent(nameOrSignatureOrTopic: string): EventFragment {\n if (isHexString(nameOrSignatureOrTopic)) {\n const topichash = nameOrSignatureOrTopic.toLowerCase();\n for (const name in this.events) {\n if (topichash === this.getEventTopic(name)) {\n return this.events[name];\n }\n }\n logger.throwArgumentError(\"no matching event\", \"topichash\", topichash);\n }\n\n // It is a bare name, look up the function (will return null if ambiguous)\n if (nameOrSignatureOrTopic.indexOf(\"(\") === -1) {\n const name = nameOrSignatureOrTopic.trim();\n const matching = Object.keys(this.events).filter((f) => (f.split(\"(\"/* fix:) */)[0] === name));\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching event\", \"name\", name);\n } else if (matching.length > 1) {\n logger.throwArgumentError(\"multiple matching events\", \"name\", name);\n }\n\n return this.events[matching[0]];\n }\n\n // Normlize the signature and lookup the function\n const result = this.events[EventFragment.fromString(nameOrSignatureOrTopic).format()];\n if (!result) {\n logger.throwArgumentError(\"no matching event\", \"signature\", nameOrSignatureOrTopic);\n }\n return result;\n }\n\n // Get the sighash (the bytes4 selector) used by Solidity to identify a function\n getSighash(functionFragment: FunctionFragment | string): string {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n return getStatic<(f: FunctionFragment) => string>(this.constructor, \"getSighash\")(functionFragment);\n }\n\n // Get the topic (the bytes32 hash) used by Solidity to identify an event\n getEventTopic(eventFragment: EventFragment | string): string {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n return getStatic<(e: EventFragment) => string>(this.constructor, \"getEventTopic\")(eventFragment);\n }\n\n\n _decodeParams(params: Array<ParamType>, data: BytesLike): Result {\n return this._abiCoder.decode(params, data)\n }\n\n _encodeParams(params: Array<ParamType>, values: Array<any>): string {\n return this._abiCoder.encode(params, values)\n }\n\n encodeDeploy(values?: Array<any>): string {\n return this._encodeParams(this.deploy.inputs, values || [ ]);\n }\n\n // Decode the data for a function call (e.g. tx.data)\n decodeFunctionData(functionFragment: FunctionFragment | string, data: BytesLike): Result {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n const bytes = arrayify(data);\n\n if (hexlify(bytes.slice(0, 4)) !== this.getSighash(functionFragment)) {\n logger.throwArgumentError(`data signature does not match function ${ functionFragment.name }.`, \"data\", hexlify(bytes));\n }\n\n return this._decodeParams(functionFragment.inputs, bytes.slice(4));\n }\n\n // Encode the data for a function call (e.g. tx.data)\n encodeFunctionData(functionFragment: FunctionFragment | string, values?: Array<any>): string {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n return hexlify(concat([\n this.getSighash(functionFragment),\n this._encodeParams(functionFragment.inputs, values || [ ])\n ]));\n }\n\n // Decode the result from a function call (e.g. from eth_call)\n decodeFunctionResult(functionFragment: FunctionFragment | string, data: BytesLike): Result {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n let bytes = arrayify(data);\n\n let reason: string = null;\n let errorSignature: string = null;\n switch (bytes.length % this._abiCoder._getWordSize()) {\n case 0:\n try {\n return this._abiCoder.decode(functionFragment.outputs, bytes);\n } catch (error) { }\n break;\n\n case 4:\n if (hexlify(bytes.slice(0, 4)) === \"0x08c379a0\") {\n errorSignature = \"Error(string)\";\n reason = this._abiCoder.decode([ \"string\" ], bytes.slice(4))[0];\n }\n break;\n }\n\n return logger.throwError(\"call revert exception\", Logger.errors.CALL_EXCEPTION, {\n method: functionFragment.format(),\n errorSignature: errorSignature,\n errorArgs: [ reason ],\n reason: reason\n });\n }\n\n // Encode the result for a function call (e.g. for eth_call)\n encodeFunctionResult(functionFragment: FunctionFragment | string, values?: Array<any>): string {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n return hexlify(this._abiCoder.encode(functionFragment.outputs, values || [ ]));\n }\n\n // Create the filter for the event with search criteria (e.g. for eth_filterLog)\n encodeFilterTopics(eventFragment: EventFragment, values: Array<any>): Array<string | Array<string>> {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n if (values.length > eventFragment.inputs.length) {\n logger.throwError(\"too many arguments for \" + eventFragment.format(), Logger.errors.UNEXPECTED_ARGUMENT, {\n argument: \"values\",\n value: values\n })\n }\n\n let topics: Array<string | Array<string>> = [];\n if (!eventFragment.anonymous) { topics.push(this.getEventTopic(eventFragment)); }\n\n const encodeTopic = (param: ParamType, value: any): string => {\n if (param.type === \"string\") {\n return id(value);\n } else if (param.type === \"bytes\") {\n return keccak256(hexlify(value));\n }\n\n // Check addresses are valid\n if (param.type === \"address\") { this._abiCoder.encode( [ \"address\" ], [ value ]); }\n return hexZeroPad(hexlify(value), 32);\n };\n\n values.forEach((value, index) => {\n\n let param = eventFragment.inputs[index];\n\n if (!param.indexed) {\n if (value != null) {\n logger.throwArgumentError(\"cannot filter non-indexed parameters; must be null\", (\"contract.\" + param.name), value);\n }\n return;\n }\n\n if (value == null) {\n topics.push(null);\n } else if (param.baseType === \"array\" || param.baseType === \"tuple\") {\n logger.throwArgumentError(\"filtering with tuples or arrays not supported\", (\"contract.\" + param.name), value);\n } else if (Array.isArray(value)) {\n topics.push(value.map((value) => encodeTopic(param, value)));\n } else {\n topics.push(encodeTopic(param, value));\n }\n });\n\n // Trim off trailing nulls\n while (topics.length && topics[topics.length - 1] === null) {\n topics.pop();\n }\n\n return topics;\n }\n\n encodeEventLog(eventFragment: EventFragment, values: Array<any>): { data: string, topics: Array<string> } {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n const topics: Array<string> = [ ];\n\n const dataTypes: Array<ParamType> = [ ];\n const dataValues: Array<string> = [ ];\n\n if (!eventFragment.anonymous) {\n topics.push(this.getEventTopic(eventFragment));\n }\n\n if (values.length !== eventFragment.inputs.length) {\n logger.throwArgumentError(\"event arguments/values mismatch\", \"values\", values);\n }\n\n eventFragment.inputs.forEach((param, index) => {\n const value = values[index];\n if (param.indexed) {\n if (param.type === \"string\") {\n topics.push(id(value))\n } else if (param.type === \"bytes\") {\n topics.push(keccak256(value))\n } else if (param.baseType === \"tuple\" || param.baseType === \"array\") {\n // @TOOD\n throw new Error(\"not implemented\");\n } else {\n topics.push(this._abiCoder.encode([ param.type] , [ value ]));\n }\n } else {\n dataTypes.push(param);\n dataValues.push(value);\n }\n });\n\n return {\n data: this._abiCoder.encode(dataTypes , dataValues),\n topics: topics\n };\n }\n\n // Decode a filter for the event and the search criteria\n decodeEventLog(eventFragment: EventFragment | string, data: BytesLike, topics?: Array<string>): Result {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n if (topics != null && !eventFragment.anonymous) {\n let topicHash = this.getEventTopic(eventFragment);\n if (!isHexString(topics[0], 32) || topics[0].toLowerCase() !== topicHash) {\n logger.throwError(\"fragment/topic mismatch\", Logger.errors.INVALID_ARGUMENT, { argument: \"topics[0]\", expected: topicHash, value: topics[0] });\n }\n topics = topics.slice(1);\n }\n\n let indexed: Array<ParamType> = [];\n let nonIndexed: Array<ParamType> = [];\n let dynamic: Array<boolean> = [];\n\n eventFragment.inputs.forEach((param, index) => {\n if (param.indexed) {\n if (param.type === \"string\" || param.type === \"bytes\" || param.baseType === \"tuple\" || param.baseType === \"array\") {\n indexed.push(ParamType.fromObject({ type: \"bytes32\", name: param.name }));\n dynamic.push(true);\n } else {\n indexed.push(param);\n dynamic.push(false);\n }\n } else {\n nonIndexed.push(param);\n dynamic.push(false);\n }\n });\n\n let resultIndexed = (topics != null) ? this._abiCoder.decode(indexed, concat(topics)): null;\n let resultNonIndexed = this._abiCoder.decode(nonIndexed, data, true);\n\n let result: (Array<any> & { [ key: string ]: any }) = [ ];\n let nonIndexedIndex = 0, indexedIndex = 0;\n eventFragment.inputs.forEach((param, index) => {\n if (param.indexed) {\n if (resultIndexed == null) {\n result[index] = new Indexed({ _isIndexed: true, hash: null });\n\n } else if (dynamic[index]) {\n result[index] = new Indexed({ _isIndexed: true, hash: resultIndexed[indexedIndex++] });\n\n } else {\n try {\n result[index] = resultIndexed[indexedIndex++];\n } catch (error) {\n result[index] = error;\n }\n }\n } else {\n try {\n result[index] = resultNonIndexed[nonIndexedIndex++];\n } catch (error) {\n result[index] = error;\n }\n }\n\n // Add the keyword argument if named and safe\n if (param.name && result[param.name] == null) {\n const value = result[index];\n\n // Make error named values throw on access\n if (value instanceof Error) {\n Object.defineProperty(result, param.name, {\n get: () => { throw wrapAccessError(`property ${ JSON.stringify(param.name) }`, value); }\n });\n } else {\n result[param.name] = value;\n }\n }\n });\n\n // Make all error indexed values throw on access\n for (let i = 0; i < result.length; i++) {\n const value = result[i];\n if (value instanceof Error) {\n Object.defineProperty(result, i, {\n get: () => { throw wrapAccessError(`index ${ i }`, value); }\n });\n }\n }\n\n return Object.freeze(result);\n }\n\n // Given a transaction, find the matching function fragment (if any) and\n // determine all its properties and call parameters\n parseTransaction(tx: { data: string, value?: BigNumberish }): TransactionDescription {\n let fragment = this.getFunction(tx.data.substring(0, 10).toLowerCase())\n\n if (!fragment) { return null; }\n\n return new TransactionDescription({\n args: this._abiCoder.decode(fragment.inputs, \"0x\" + tx.data.substring(10)),\n functionFragment: fragment,\n name: fragment.name,\n signature: fragment.format(),\n sighash: this.getSighash(fragment),\n value: BigNumber.from(tx.value || \"0\"),\n });\n }\n\n // Given an event log, find the matching event fragment (if any) and\n // determine all its properties and values\n parseLog(log: { topics: Array<string>, data: string}): LogDescription {\n let fragment = this.getEvent(log.topics[0]);\n\n if (!fragment || fragment.anonymous) { return null; }\n\n // @TODO: If anonymous, and the only method, and the input count matches, should we parse?\n // Probably not, because just because it is the only event in the ABI does\n // not mean we have the full ABI; maybe jsut a fragment?\n\n\n return new LogDescription({\n eventFragment: fragment,\n name: fragment.name,\n signature: fragment.format(),\n topic: this.getEventTopic(fragment),\n args: this.decodeEventLog(fragment, log.data, log.topics)\n });\n }\n\n\n /*\n static from(value: Array<Fragment | string | JsonAbi> | string | Interface) {\n if (Interface.isInterface(value)) {\n return value;\n }\n if (typeof(value) === \"string\") {\n return new Interface(JSON.parse(value));\n }\n return new Interface(value);\n }\n */\n\n static isInterface(value: any): value is Interface {\n return !!(value && value._isInterface);\n }\n}\n\n","\"use strict\";\n\nimport { ConstructorFragment, EventFragment, FormatTypes, Fragment, FunctionFragment, JsonFragment, JsonFragmentType, ParamType } from \"./fragments\";\nimport { AbiCoder, CoerceFunc, defaultAbiCoder } from \"./abi-coder\";\nimport { checkResultErrors, Indexed, Interface, LogDescription, Result, TransactionDescription } from \"./interface\";\n\nexport {\n ConstructorFragment,\n EventFragment,\n Fragment,\n FunctionFragment,\n ParamType,\n FormatTypes,\n\n AbiCoder,\n defaultAbiCoder,\n\n Interface,\n Indexed,\n\n /////////////////////////\n // Types\n\n CoerceFunc,\n JsonFragment,\n JsonFragmentType,\n\n Result,\n checkResultErrors,\n\n LogDescription,\n TransactionDescription\n};\n","export const version = \"abstract-provider/5.0.7\";\n","\"use strict\";\n\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { BytesLike, isHexString } from \"@ethersproject/bytes\";\nimport { Network } from \"@ethersproject/networks\";\nimport { Deferrable, Description, defineReadOnly } from \"@ethersproject/properties\";\nimport { Transaction } from \"@ethersproject/transactions\";\nimport { OnceBlockable } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\n\nexport type TransactionRequest = {\n to?: string,\n from?: string,\n nonce?: BigNumberish,\n\n gasLimit?: BigNumberish,\n gasPrice?: BigNumberish,\n\n data?: BytesLike,\n value?: BigNumberish,\n chainId?: number\n}\n\nexport interface TransactionResponse extends Transaction {\n hash: string;\n\n // Only if a transaction has been mined\n blockNumber?: number,\n blockHash?: string,\n timestamp?: number,\n\n confirmations: number,\n\n // Not optional (as it is in Transaction)\n from: string;\n\n // The raw transaction\n raw?: string,\n\n // This function waits until the transaction has been mined\n wait: (confirmations?: number) => Promise<TransactionReceipt>\n};\n\nexport type BlockTag = string | number;\n\ninterface _Block {\n hash: string;\n parentHash: string;\n number: number;\n\n timestamp: number;\n nonce: string;\n difficulty: number;\n\n gasLimit: BigNumber;\n gasUsed: BigNumber;\n\n miner: string;\n extraData: string;\n}\n\nexport interface Block extends _Block {\n transactions: Array<string>;\n}\n\nexport interface BlockWithTransactions extends _Block {\n transactions: Array<TransactionResponse>;\n}\n\n\nexport interface Log {\n blockNumber: number;\n blockHash: string;\n transactionIndex: number;\n\n removed: boolean;\n\n address: string;\n data: string;\n\n topics: Array<string>;\n\n transactionHash: string;\n logIndex: number;\n}\n\nexport interface TransactionReceipt {\n to: string;\n from: string;\n contractAddress: string,\n transactionIndex: number,\n root?: string,\n gasUsed: BigNumber,\n logsBloom: string,\n blockHash: string,\n transactionHash: string,\n logs: Array<Log>,\n blockNumber: number,\n confirmations: number,\n cumulativeGasUsed: BigNumber,\n byzantium: boolean,\n status?: number\n};\n\nexport interface EventFilter {\n address?: string;\n topics?: Array<string | Array<string>>;\n}\n\nexport interface Filter extends EventFilter {\n fromBlock?: BlockTag,\n toBlock?: BlockTag,\n}\n\nexport interface FilterByBlockHash extends EventFilter {\n blockHash?: string;\n}\n\n//export type CallTransactionable = {\n// call(transaction: TransactionRequest): Promise<TransactionResponse>;\n//};\n\nexport abstract class ForkEvent extends Description {\n readonly expiry: number;\n\n readonly _isForkEvent?: boolean;\n\n static isForkEvent(value: any): value is ForkEvent {\n return !!(value && value._isForkEvent);\n }\n}\n\nexport class BlockForkEvent extends ForkEvent {\n readonly blockHash: string;\n\n readonly _isBlockForkEvent?: boolean;\n\n constructor(blockHash: string, expiry?: number) {\n if (!isHexString(blockHash, 32)) {\n logger.throwArgumentError(\"invalid blockHash\", \"blockHash\", blockHash);\n }\n\n super({\n _isForkEvent: true,\n _isBlockForkEvent: true,\n expiry: (expiry || 0),\n blockHash: blockHash\n });\n }\n}\n\nexport class TransactionForkEvent extends ForkEvent {\n readonly hash: string;\n\n readonly _isTransactionOrderForkEvent?: boolean;\n\n constructor(hash: string, expiry?: number) {\n if (!isHexString(hash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"hash\", hash);\n }\n\n super({\n _isForkEvent: true,\n _isTransactionForkEvent: true,\n expiry: (expiry || 0),\n hash: hash\n });\n }\n}\n\nexport class TransactionOrderForkEvent extends ForkEvent {\n readonly beforeHash: string;\n readonly afterHash: string;\n\n constructor(beforeHash: string, afterHash: string, expiry?: number) {\n if (!isHexString(beforeHash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"beforeHash\", beforeHash);\n }\n if (!isHexString(afterHash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"afterHash\", afterHash);\n }\n\n super({\n _isForkEvent: true,\n _isTransactionOrderForkEvent: true,\n expiry: (expiry || 0),\n beforeHash: beforeHash,\n afterHash: afterHash\n });\n }\n}\n\nexport type EventType = string | Array<string | Array<string>> | EventFilter | ForkEvent;\n\nexport type Listener = (...args: Array<any>) => void;\n\n///////////////////////////////\n// Exported Abstracts\n\nexport abstract class Provider implements OnceBlockable {\n\n // Network\n abstract getNetwork(): Promise<Network>;\n\n // Latest State\n abstract getBlockNumber(): Promise<number>;\n abstract getGasPrice(): Promise<BigNumber>;\n\n // Account\n abstract getBalance(addressOrName: string | Promise<string>, blockTag?: BlockTag | Promise<BlockTag>): Promise<BigNumber>;\n abstract getTransactionCount(addressOrName: string | Promise<string>, blockTag?: BlockTag | Promise<BlockTag>): Promise<number>;\n abstract getCode(addressOrName: string | Promise<string>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string> ;\n abstract getStorageAt(addressOrName: string | Promise<string>, position: BigNumberish | Promise<BigNumberish>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string>;\n\n // Execution\n abstract sendTransaction(signedTransaction: string | Promise<string>): Promise<TransactionResponse>;\n abstract call(transaction: Deferrable<TransactionRequest>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string>;\n abstract estimateGas(transaction: Deferrable<TransactionRequest>): Promise<BigNumber>;\n\n // Queries\n abstract getBlock(blockHashOrBlockTag: BlockTag | string | Promise<BlockTag | string>): Promise<Block>;\n abstract getBlockWithTransactions(blockHashOrBlockTag: BlockTag | string | Promise<BlockTag | string>): Promise<BlockWithTransactions>;\n abstract getTransaction(transactionHash: string): Promise<TransactionResponse>;\n abstract getTransactionReceipt(transactionHash: string): Promise<TransactionReceipt>;\n\n // Bloom-filter Queries\n abstract getLogs(filter: Filter): Promise<Array<Log>>;\n\n // ENS\n abstract resolveName(name: string | Promise<string>): Promise<string>;\n abstract lookupAddress(address: string | Promise<string>): Promise<string>;\n\n // Event Emitter (ish)\n abstract on(eventName: EventType, listener: Listener): Provider;\n abstract once(eventName: EventType, listener: Listener): Provider;\n abstract emit(eventName: EventType, ...args: Array<any>): boolean\n abstract listenerCount(eventName?: EventType): number;\n abstract listeners(eventName?: EventType): Array<Listener>;\n abstract off(eventName: EventType, listener?: Listener): Provider;\n abstract removeAllListeners(eventName?: EventType): Provider;\n\n // Alias for \"on\"\n addListener(eventName: EventType, listener: Listener): Provider {\n return this.on(eventName, listener);\n }\n\n // Alias for \"off\"\n removeListener(eventName: EventType, listener: Listener): Provider {\n return this.off(eventName, listener);\n }\n\n // @TODO: This *could* be implemented here, but would pull in events...\n abstract waitForTransaction(transactionHash: string, confirmations?: number, timeout?: number): Promise<TransactionReceipt>;\n\n readonly _isProvider: boolean;\n\n constructor() {\n logger.checkAbstract(new.target, Provider);\n defineReadOnly(this, \"_isProvider\", true);\n }\n\n static isProvider(value: any): value is Provider {\n return !!(value && value._isProvider);\n }\n\n/*\n static getResolver(network: Network, callable: CallTransactionable, namehash: string): string {\n // No ENS...\n if (!network.ensAddress) {\n errors.throwError(\n \"network does support ENS\",\n errors.UNSUPPORTED_OPERATION,\n { operation: \"ENS\", network: network.name }\n );\n }\n\n // Not a namehash\n if (!isHexString(namehash, 32)) {\n errors.throwArgumentError(\"invalid name hash\", \"namehash\", namehash);\n }\n\n // keccak256(\"resolver(bytes32)\")\n let data = \"0x0178b8bf\" + namehash.substring(2);\n let transaction = { to: network.ensAddress, data: data };\n\n return provider.call(transaction).then((data) => {\n return provider.formatter.callAddress(data);\n });\n }\n\n static resolveNamehash(network: Network, callable: CallTransactionable, namehash: string): string {\n return this.getResolver(network, callable, namehash).then((resolverAddress) => {\n if (!resolverAddress) { return null; }\n\n // keccak256(\"addr(bytes32)\")\n let data = \"0x3b3b57de\" + namehash(name).substring(2);\n let transaction = { to: resolverAddress, data: data };\n return callable.call(transaction).then((data) => {\n return this.formatter.callAddress(data);\n });\n\n })\n }\n*/\n}\n","export const version = \"abstract-signer/5.0.9\";\n","\"use strict\";\n\nimport { BlockTag, Provider, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { Bytes, BytesLike } from \"@ethersproject/bytes\";\nimport { Deferrable, defineReadOnly, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst allowedTransactionKeys: Array<string> = [\n \"chainId\", \"data\", \"from\", \"gasLimit\", \"gasPrice\", \"nonce\", \"to\", \"value\"\n];\n\nconst forwardErrors = [\n Logger.errors.INSUFFICIENT_FUNDS,\n Logger.errors.NONCE_EXPIRED,\n Logger.errors.REPLACEMENT_UNDERPRICED,\n];\n\n// EIP-712 Typed Data\n// See: https://eips.ethereum.org/EIPS/eip-712\n\nexport interface TypedDataDomain {\n name?: string;\n version?: string;\n chainId?: BigNumberish;\n verifyingContract?: string;\n salt?: BytesLike;\n};\n\nexport interface TypedDataField {\n name: string;\n type: string;\n};\n\n// Sub-classes of Signer may optionally extend this interface to indicate\n// they have a private key available synchronously\nexport interface ExternallyOwnedAccount {\n readonly address: string;\n readonly privateKey: string;\n}\n\n// Sub-Class Notes:\n// - A Signer MUST always make sure, that if present, the \"from\" field\n// matches the Signer, before sending or signing a transaction\n// - A Signer SHOULD always wrap private information (such as a private\n// key or mnemonic) in a function, so that console.log does not leak\n// the data\n\n// @TODO: This is a temporary measure to preserse backwards compatibility\n// In v6, the method on TypedDataSigner will be added to Signer\nexport interface TypedDataSigner {\n _signTypedData(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): Promise<string>;\n}\n\nexport abstract class Signer {\n readonly provider?: Provider;\n\n ///////////////////\n // Sub-classes MUST implement these\n\n // Returns the checksum address\n abstract getAddress(): Promise<string>\n\n // Returns the signed prefixed-message. This MUST treat:\n // - Bytes as a binary message\n // - string as a UTF8-message\n // i.e. \"0x1234\" is a SIX (6) byte string, NOT 2 bytes of data\n abstract signMessage(message: Bytes | string): Promise<string>;\n\n // Signs a transaxction and returns the fully serialized, signed transaction.\n // The EXACT transaction MUST be signed, and NO additional properties to be added.\n // - This MAY throw if signing transactions is not supports, but if\n // it does, sentTransaction MUST be overridden.\n abstract signTransaction(transaction: Deferrable<TransactionRequest>): Promise<string>;\n\n // Returns a new instance of the Signer, connected to provider.\n // This MAY throw if changing providers is not supported.\n abstract connect(provider: Provider): Signer;\n\n readonly _isSigner: boolean;\n\n\n ///////////////////\n // Sub-classes MUST call super\n constructor() {\n logger.checkAbstract(new.target, Signer);\n defineReadOnly(this, \"_isSigner\", true);\n }\n\n\n ///////////////////\n // Sub-classes MAY override these\n\n async getBalance(blockTag?: BlockTag): Promise<BigNumber> {\n this._checkProvider(\"getBalance\");\n return await this.provider.getBalance(this.getAddress(), blockTag);\n }\n\n async getTransactionCount(blockTag?: BlockTag): Promise<number> {\n this._checkProvider(\"getTransactionCount\");\n return await this.provider.getTransactionCount(this.getAddress(), blockTag);\n }\n\n // Populates \"from\" if unspecified, and estimates the gas for the transation\n async estimateGas(transaction: Deferrable<TransactionRequest>): Promise<BigNumber> {\n this._checkProvider(\"estimateGas\");\n const tx = await resolveProperties(this.checkTransaction(transaction));\n return await this.provider.estimateGas(tx);\n }\n\n // Populates \"from\" if unspecified, and calls with the transation\n async call(transaction: Deferrable<TransactionRequest>, blockTag?: BlockTag): Promise<string> {\n this._checkProvider(\"call\");\n const tx = await resolveProperties(this.checkTransaction(transaction));\n return await this.provider.call(tx, blockTag);\n }\n\n // Populates all fields in a transaction, signs it and sends it to the network\n sendTransaction(transaction: Deferrable<TransactionRequest>): Promise<TransactionResponse> {\n this._checkProvider(\"sendTransaction\");\n return this.populateTransaction(transaction).then((tx) => {\n return this.signTransaction(tx).then((signedTx) => {\n return this.provider.sendTransaction(signedTx);\n });\n });\n }\n\n async getChainId(): Promise<number> {\n this._checkProvider(\"getChainId\");\n const network = await this.provider.getNetwork();\n return network.chainId;\n }\n\n async getGasPrice(): Promise<BigNumber> {\n this._checkProvider(\"getGasPrice\");\n return await this.provider.getGasPrice();\n }\n\n async resolveName(name: string): Promise<string> {\n this._checkProvider(\"resolveName\");\n return await this.provider.resolveName(name);\n }\n\n\n\n\n // Checks a transaction does not contain invalid keys and if\n // no \"from\" is provided, populates it.\n // - does NOT require a provider\n // - adds \"from\" is not present\n // - returns a COPY (safe to mutate the result)\n // By default called from: (overriding these prevents it)\n // - call\n // - estimateGas\n // - populateTransaction (and therefor sendTransaction)\n checkTransaction(transaction: Deferrable<TransactionRequest>): Deferrable<TransactionRequest> {\n for (const key in transaction) {\n if (allowedTransactionKeys.indexOf(key) === -1) {\n logger.throwArgumentError(\"invalid transaction key: \" + key, \"transaction\", transaction);\n }\n }\n\n const tx = shallowCopy(transaction);\n\n if (tx.from == null) {\n tx.from = this.getAddress();\n } else {\n // Make sure any provided address matches this signer\n tx.from = Promise.all([\n Promise.resolve(tx.from),\n this.getAddress()\n ]).then((result) => {\n if (result[0] !== result[1]) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", transaction);\n }\n return result[0];\n });\n }\n\n return tx;\n }\n\n // Populates ALL keys for a transaction and checks that \"from\" matches\n // this Signer. Should be used by sendTransaction but NOT by signTransaction.\n // By default called from: (overriding these prevents it)\n // - sendTransaction\n async populateTransaction(transaction: Deferrable<TransactionRequest>): Promise<TransactionRequest> {\n\n const tx: Deferrable<TransactionRequest> = await resolveProperties(this.checkTransaction(transaction))\n\n if (tx.to != null) { tx.to = Promise.resolve(tx.to).then((to) => this.resolveName(to)); }\n if (tx.gasPrice == null) { tx.gasPrice = this.getGasPrice(); }\n if (tx.nonce == null) { tx.nonce = this.getTransactionCount(\"pending\"); }\n\n if (tx.gasLimit == null) {\n tx.gasLimit = this.estimateGas(tx).catch((error) => {\n if (forwardErrors.indexOf(error.code) >= 0) {\n throw error;\n }\n\n return logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error: error,\n tx: tx\n });\n });\n }\n\n if (tx.chainId == null) {\n tx.chainId = this.getChainId();\n } else {\n tx.chainId = Promise.all([\n Promise.resolve(tx.chainId),\n this.getChainId()\n ]).then((results) => {\n if (results[1] !== 0 && results[0] !== results[1]) {\n logger.throwArgumentError(\"chainId address mismatch\", \"transaction\", transaction);\n }\n return results[0];\n });\n }\n\n return await resolveProperties(tx);\n }\n\n\n ///////////////////\n // Sub-classes SHOULD leave these alone\n\n _checkProvider(operation?: string): void {\n if (!this.provider) { logger.throwError(\"missing provider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: (operation || \"_checkProvider\") });\n }\n }\n\n static isSigner(value: any): value is Signer {\n return !!(value && value._isSigner);\n }\n}\n\nexport class VoidSigner extends Signer implements TypedDataSigner {\n readonly address: string;\n\n constructor(address: string, provider?: Provider) {\n logger.checkNew(new.target, VoidSigner);\n super();\n defineReadOnly(this, \"address\", address);\n defineReadOnly(this, \"provider\", provider || null);\n }\n\n getAddress(): Promise<string> {\n return Promise.resolve(this.address);\n }\n\n _fail(message: string, operation: string): Promise<any> {\n return Promise.resolve().then(() => {\n logger.throwError(message, Logger.errors.UNSUPPORTED_OPERATION, { operation: operation });\n });\n }\n\n signMessage(message: Bytes | string): Promise<string> {\n return this._fail(\"VoidSigner cannot sign messages\", \"signMessage\");\n }\n\n signTransaction(transaction: Deferrable<TransactionRequest>): Promise<string> {\n return this._fail(\"VoidSigner cannot sign transactions\", \"signTransaction\");\n }\n\n _signTypedData(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): Promise<string> {\n return this._fail(\"VoidSigner cannot sign typed data\", \"signTypedData\");\n }\n\n connect(provider: Provider): VoidSigner {\n return new VoidSigner(this.address, provider);\n }\n}\n\n","export const version = \"contracts/5.0.8\";\n","\"use strict\";\n\nimport { checkResultErrors, EventFragment, Fragment, FunctionFragment, Indexed, Interface, JsonFragment, LogDescription, ParamType, Result } from \"@ethersproject/abi\";\nimport { Block, BlockTag, Filter, FilterByBlockHash, Listener, Log, Provider, TransactionReceipt, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { Signer, VoidSigner } from \"@ethersproject/abstract-signer\";\nimport { getAddress, getContractAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, concat, hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\nimport { Deferrable, defineReadOnly, deepCopy, getStatic, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\n// @TOOD remove dependences transactions\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\n\nconst logger = new Logger(version);\n\nexport interface Overrides {\n gasLimit?: BigNumberish | Promise<BigNumberish>;\n gasPrice?: BigNumberish | Promise<BigNumberish>;\n nonce?: BigNumberish | Promise<BigNumberish>;\n};\n\nexport interface PayableOverrides extends Overrides {\n value?: BigNumberish | Promise<BigNumberish>;\n}\n\nexport interface CallOverrides extends PayableOverrides {\n blockTag?: BlockTag | Promise<BlockTag>;\n from?: string | Promise<string>;\n}\n\n// @TODO: Better hierarchy with: (in v6)\n// - abstract-provider:TransactionRequest\n// - transactions:Transaction\n// - transaction:UnsignedTransaction\n\nexport interface PopulatedTransaction {\n to?: string;\n from?: string;\n nonce?: number;\n\n gasLimit?: BigNumber;\n gasPrice?: BigNumber;\n\n data?: string;\n value?: BigNumber;\n chainId?: number;\n};\n\nexport type EventFilter = {\n address?: string;\n topics?: Array<string|Array<string>>;\n};\n\n\nexport type ContractFunction<T = any> = (...args: Array<any>) => Promise<T>;\n\n\n// The (n + 1)th parameter passed to contract event callbacks\nexport interface Event extends Log {\n\n // The event name\n event?: string;\n\n // The event signature\n eventSignature?: string;\n\n // The parsed arguments to the event\n args?: Result;\n\n // If parsing the arguments failed, this is the error\n decodeError?: Error;\n\n // A function that can be used to decode event data and topics\n decode?: (data: string, topics?: Array<string>) => any;\n\n // A function that will remove the listener responsible for this event (if any)\n removeListener: () => void;\n\n // Get blockchain details about this event's block and transaction\n getBlock: () => Promise<Block>;\n getTransaction: () => Promise<TransactionResponse>;\n getTransactionReceipt: () => Promise<TransactionReceipt>;\n}\n\nexport interface ContractReceipt extends TransactionReceipt {\n events?: Array<Event>;\n}\n\nexport interface ContractTransaction extends TransactionResponse {\n wait(confirmations?: number): Promise<ContractReceipt>;\n}\n\n///////////////////////////////\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n chainId: true, data: true, from: true, gasLimit: true, gasPrice:true, nonce: true, to: true, value: true\n}\n\nasync function resolveName(resolver: Signer | Provider, nameOrPromise: string | Promise<string>): Promise<string> {\n const name = await nameOrPromise;\n\n // If it is already an address, just use it (after adding checksum)\n try {\n return getAddress(name);\n } catch (error) { }\n\n if (!resolver) {\n logger.throwError(\"a provider or signer is needed to resolve ENS names\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resolveName\"\n });\n }\n\n const address = await resolver.resolveName(name);\n\n if (address == null) {\n logger.throwArgumentError(\"resolver or addr is not configured for ENS name\", \"name\", name);\n }\n\n return address;\n}\n\n// Recursively replaces ENS names with promises to resolve the name and resolves all properties\nasync function resolveAddresses(resolver: Signer | Provider, value: any, paramType: ParamType | Array<ParamType>): Promise<any> {\n if (Array.isArray(paramType)) {\n return await Promise.all(paramType.map((paramType, index) => {\n return resolveAddresses(\n resolver,\n ((Array.isArray(value)) ? value[index]: value[paramType.name]),\n paramType\n );\n }));\n }\n\n if (paramType.type === \"address\") {\n return await resolveName(resolver, value);\n }\n\n if (paramType.type === \"tuple\") {\n return await resolveAddresses(resolver, value, paramType.components);\n }\n\n if (paramType.baseType === \"array\") {\n if (!Array.isArray(value)) { return Promise.reject(new Error(\"invalid value for array\")); }\n return await Promise.all(value.map((v) => resolveAddresses(resolver, v, paramType.arrayChildren)));\n }\n\n return value;\n}\n\nasync function populateTransaction(contract: Contract, fragment: FunctionFragment, args: Array<any>): Promise<PopulatedTransaction> {\n // If an extra argument is given, it is overrides\n let overrides: CallOverrides = { };\n if (args.length === fragment.inputs.length + 1 && typeof(args[args.length - 1]) === \"object\") {\n overrides = shallowCopy(args.pop());\n }\n\n // Make sure the parameter count matches\n logger.checkArgumentCount(args.length, fragment.inputs.length, \"passed to contract\");\n\n // Populate \"from\" override (allow promises)\n if (contract.signer) {\n if (overrides.from) {\n // Contracts with a Signer are from the Signer's frame-of-reference;\n // but we allow overriding \"from\" if it matches the signer\n overrides.from = resolveProperties({\n override: resolveName(contract.signer, overrides.from),\n signer: contract.signer.getAddress()\n }).then(async (check) => {\n if (getAddress(check.signer) !== check.override) {\n logger.throwError(\"Contract with a Signer cannot override from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides.from\"\n });\n }\n\n return check.override;\n });\n\n } else {\n overrides.from = contract.signer.getAddress();\n }\n\n } else if (overrides.from) {\n overrides.from = resolveName(contract.provider, overrides.from);\n\n //} else {\n // Contracts without a signer can override \"from\", and if\n // unspecified the zero address is used\n //overrides.from = AddressZero;\n }\n\n // Wait for all dependencies to be resolved (prefer the signer over the provider)\n const resolved = await resolveProperties({\n args: resolveAddresses(contract.signer || contract.provider, args, fragment.inputs),\n address: contract.resolvedAddress,\n overrides: (resolveProperties(overrides) || { })\n });\n\n // The ABI coded transaction\n const data = contract.interface.encodeFunctionData(fragment, resolved.args);\n const tx: PopulatedTransaction = {\n data: data,\n to: resolved.address\n };\n\n // Resolved Overrides\n const ro = resolved.overrides;\n\n // Populate simple overrides\n if (ro.nonce != null) { tx.nonce = BigNumber.from(ro.nonce).toNumber(); }\n if (ro.gasLimit != null) { tx.gasLimit = BigNumber.from(ro.gasLimit); }\n if (ro.gasPrice != null) { tx.gasPrice = BigNumber.from(ro.gasPrice); }\n if (ro.from != null) { tx.from = ro.from; }\n\n // If there was no \"gasLimit\" override, but the ABI specifies a default, use it\n if (tx.gasLimit == null && fragment.gas != null) {\n // Conmpute the intrinisic gas cost for this transaction\n // @TODO: This is based on the yellow paper as of Petersburg; this is something\n // we may wish to parameterize in v6 as part of the Network object. Since this\n // is always a non-nil to address, we can ignore G_create, but may wish to add\n // similar logic to the ContractFactory.\n let intrinsic = 21000;\n const bytes = arrayify(data);\n for (let i = 0; i < bytes.length; i++) {\n intrinsic += 4;\n if (bytes[i]) { intrinsic += 64; }\n }\n tx.gasLimit = BigNumber.from(fragment.gas).add(intrinsic);\n }\n\n // Populate \"value\" override\n if (ro.value) {\n const roValue = BigNumber.from(ro.value);\n if (!roValue.isZero() && !fragment.payable) {\n logger.throwError(\"non-payable method cannot override value\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides.value\",\n value: overrides.value\n });\n }\n tx.value = roValue;\n }\n\n // Remvoe the overrides\n delete overrides.nonce;\n delete overrides.gasLimit;\n delete overrides.gasPrice;\n delete overrides.from;\n delete overrides.value;\n\n // Make sure there are no stray overrides, which may indicate a\n // typo or using an unsupported key.\n const leftovers = Object.keys(overrides).filter((key) => ((<any>overrides)[key] != null));\n if (leftovers.length) {\n logger.throwError(`cannot override ${ leftovers.map((l) => JSON.stringify(l)).join(\",\") }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides\",\n overrides: leftovers\n });\n }\n\n return tx;\n}\n\n\nfunction buildPopulate(contract: Contract, fragment: FunctionFragment): ContractFunction<PopulatedTransaction> {\n return function(...args: Array<any>): Promise<PopulatedTransaction> {\n return populateTransaction(contract, fragment, args);\n };\n}\n\nfunction buildEstimate(contract: Contract, fragment: FunctionFragment): ContractFunction<BigNumber> {\n const signerOrProvider = (contract.signer || contract.provider);\n return async function(...args: Array<any>): Promise<BigNumber> {\n if (!signerOrProvider) {\n logger.throwError(\"estimate require a provider or signer\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"estimateGas\"\n })\n }\n\n const tx = await populateTransaction(contract, fragment, args);\n return await signerOrProvider.estimateGas(tx);\n };\n}\n\nfunction buildCall(contract: Contract, fragment: FunctionFragment, collapseSimple: boolean): ContractFunction {\n const signerOrProvider = (contract.signer || contract.provider);\n\n return async function(...args: Array<any>): Promise<any> {\n // Extract the \"blockTag\" override if present\n let blockTag = undefined;\n if (args.length === fragment.inputs.length + 1 && typeof(args[args.length - 1]) === \"object\") {\n const overrides = shallowCopy(args.pop());\n if (overrides.blockTag != null) {\n blockTag = await overrides.blockTag;\n }\n delete overrides.blockTag;\n args.push(overrides);\n }\n\n // If the contract was just deployed, wait until it is mined\n if (contract.deployTransaction != null) {\n await contract._deployed(blockTag);\n }\n\n // Call a node and get the result\n const tx = await populateTransaction(contract, fragment, args);\n const result = await signerOrProvider.call(tx, blockTag);\n\n try {\n let value = contract.interface.decodeFunctionResult(fragment, result);\n if (collapseSimple && fragment.outputs.length === 1) {\n value = value[0];\n }\n return value;\n\n } catch (error) {\n if (error.code === Logger.errors.CALL_EXCEPTION) {\n error.address = contract.address;\n error.args = args;\n error.transaction = tx;\n }\n throw error;\n }\n };\n}\n\nfunction buildSend(contract: Contract, fragment: FunctionFragment): ContractFunction<TransactionResponse> {\n return async function(...args: Array<any>): Promise<TransactionResponse> {\n if (!contract.signer) {\n logger.throwError(\"sending a transaction requires a signer\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"sendTransaction\"\n })\n }\n\n // If the contract was just deployed, wait until it is minded\n if (contract.deployTransaction != null) {\n await contract._deployed();\n }\n\n const txRequest = await populateTransaction(contract, fragment, args);\n\n const tx = await contract.signer.sendTransaction(txRequest);\n\n // Tweak the tw.wait so the receipt has extra properties\n const wait = tx.wait.bind(tx);\n tx.wait = (confirmations?: number) => {\n return wait(confirmations).then((receipt: ContractReceipt) => {\n receipt.events = receipt.logs.map((log) => {\n let event: Event = (<Event>deepCopy(log));\n let parsed: LogDescription = null;\n try {\n parsed = contract.interface.parseLog(log);\n } catch (e){ }\n\n // Successfully parsed the event log; include it\n if (parsed) {\n event.args = parsed.args;\n event.decode = (data: BytesLike, topics?: Array<any>) => {\n return contract.interface.decodeEventLog(parsed.eventFragment, data, topics);\n };\n event.event = parsed.name;\n event.eventSignature = parsed.signature;\n }\n\n // Useful operations\n event.removeListener = () => { return contract.provider; }\n event.getBlock = () => {\n return contract.provider.getBlock(receipt.blockHash);\n }\n event.getTransaction = () => {\n return contract.provider.getTransaction(receipt.transactionHash);\n }\n event.getTransactionReceipt = () => {\n return Promise.resolve(receipt);\n }\n\n return event;\n });\n\n return receipt;\n });\n };\n return tx;\n };\n}\n\nfunction buildDefault(contract: Contract, fragment: FunctionFragment, collapseSimple: boolean): ContractFunction {\n if (fragment.constant) {\n return buildCall(contract, fragment, collapseSimple);\n }\n return buildSend(contract, fragment);\n}\n\nfunction getEventTag(filter: EventFilter): string {\n if (filter.address && (filter.topics == null || filter.topics.length === 0)) {\n return \"*\";\n }\n\n return (filter.address || \"*\") + \"@\" + (filter.topics ? filter.topics.map((topic) => {\n if (Array.isArray(topic)) {\n return topic.join(\"|\");\n }\n return topic;\n }).join(\":\"): \"\");\n}\n\nclass RunningEvent {\n readonly tag: string;\n readonly filter: EventFilter;\n private _listeners: Array<{ listener: Listener, once: boolean }>;\n\n constructor(tag: string, filter: EventFilter) {\n defineReadOnly(this, \"tag\", tag);\n defineReadOnly(this, \"filter\", filter);\n this._listeners = [ ];\n }\n\n addListener(listener: Listener, once: boolean): void {\n this._listeners.push({ listener: listener, once: once });\n }\n\n removeListener(listener: Listener): void {\n let done = false;\n this._listeners = this._listeners.filter((item) => {\n if (done || item.listener !== listener) { return true; }\n done = true;\n return false;\n });\n }\n\n removeAllListeners(): void {\n this._listeners = [];\n }\n\n listeners(): Array<Listener> {\n return this._listeners.map((i) => i.listener);\n }\n\n listenerCount(): number {\n return this._listeners.length;\n }\n\n run(args: Array<any>): number {\n const listenerCount = this.listenerCount();\n this._listeners = this._listeners.filter((item) => {\n\n const argsCopy = args.slice();\n\n // Call the callback in the next event loop\n setTimeout(() => {\n item.listener.apply(this, argsCopy);\n }, 0);\n\n // Reschedule it if it not \"once\"\n return !(item.once);\n });\n\n return listenerCount;\n }\n\n prepareEvent(event: Event): void {\n }\n\n // Returns the array that will be applied to an emit\n getEmit(event: Event): Array<any> {\n return [ event ];\n }\n}\n\nclass ErrorRunningEvent extends RunningEvent {\n constructor() {\n super(\"error\", null);\n }\n}\n\n\n// @TODO Fragment should inherit Wildcard? and just override getEmit?\n// or have a common abstract super class, with enough constructor\n// options to configure both.\n\n// A Fragment Event will populate all the properties that Wildcard\n// will, and additioanlly dereference the arguments when emitting\nclass FragmentRunningEvent extends RunningEvent {\n readonly address: string;\n readonly interface: Interface;\n readonly fragment: EventFragment;\n\n constructor(address: string, contractInterface: Interface, fragment: EventFragment, topics?: Array<string|Array<string>>) {\n const filter: EventFilter = {\n address: address\n }\n\n let topic = contractInterface.getEventTopic(fragment);\n if (topics) {\n if (topic !== topics[0]) { logger.throwArgumentError(\"topic mismatch\", \"topics\", topics); }\n filter.topics = topics.slice();\n } else {\n filter.topics = [ topic ];\n }\n\n super(getEventTag(filter), filter);\n defineReadOnly(this, \"address\", address);\n defineReadOnly(this, \"interface\", contractInterface);\n defineReadOnly(this, \"fragment\", fragment);\n }\n\n\n prepareEvent(event: Event): void {\n super.prepareEvent(event);\n\n event.event = this.fragment.name;\n event.eventSignature = this.fragment.format();\n\n event.decode = (data: BytesLike, topics?: Array<string>) => {\n return this.interface.decodeEventLog(this.fragment, data, topics);\n };\n\n try {\n event.args = this.interface.decodeEventLog(this.fragment, event.data, event.topics);\n } catch (error) {\n event.args = null;\n event.decodeError = error;\n }\n }\n\n getEmit(event: Event): Array<any> {\n const errors = checkResultErrors(event.args);\n if (errors.length) { throw errors[0].error; }\n\n const args = (event.args || []).slice();\n args.push(event);\n return args;\n }\n}\n\n// A Wildard Event will attempt to populate:\n// - event The name of the event name\n// - eventSignature The full signature of the event\n// - decode A function to decode data and topics\n// - args The decoded data and topics\nclass WildcardRunningEvent extends RunningEvent {\n readonly address: string;\n readonly interface: Interface;\n\n constructor(address: string, contractInterface: Interface) {\n super(\"*\", { address: address });\n defineReadOnly(this, \"address\", address);\n defineReadOnly(this, \"interface\", contractInterface);\n }\n\n prepareEvent(event: Event): void {\n super.prepareEvent(event);\n\n try {\n const parsed = this.interface.parseLog(event);\n event.event = parsed.name;\n event.eventSignature = parsed.signature;\n\n event.decode = (data: BytesLike, topics?: Array<string>) => {\n return this.interface.decodeEventLog(parsed.eventFragment, data, topics);\n };\n\n event.args = parsed.args;\n } catch (error) {\n // No matching event\n }\n }\n}\n\nexport type ContractInterface = string | Array<Fragment | JsonFragment | string> | Interface;\n\ntype InterfaceFunc = (contractInterface: ContractInterface) => Interface;\n\n\nexport class Contract {\n readonly address: string;\n readonly interface: Interface;\n\n readonly signer: Signer;\n readonly provider: Provider;\n\n readonly functions: { [ name: string ]: ContractFunction };\n\n readonly callStatic: { [ name: string ]: ContractFunction };\n readonly estimateGas: { [ name: string ]: ContractFunction<BigNumber> };\n readonly populateTransaction: { [ name: string ]: ContractFunction<PopulatedTransaction> };\n\n readonly filters: { [ name: string ]: (...args: Array<any>) => EventFilter };\n\n // The meta-class properties\n readonly [ key: string ]: ContractFunction | any;\n\n // This will always be an address. This will only differ from\n // address if an ENS name was used in the constructor\n readonly resolvedAddress: Promise<string>;\n\n // This is only set if the contract was created with a call to deploy\n readonly deployTransaction: TransactionResponse;\n\n _deployedPromise: Promise<Contract>;\n\n // A list of RunningEvents to track listsners for each event tag\n _runningEvents: { [ eventTag: string ]: RunningEvent };\n\n // Wrapped functions to call emit and allow deregistration from the provider\n _wrappedEmits: { [ eventTag: string ]: (...args: Array<any>) => void };\n\n constructor(addressOrName: string, contractInterface: ContractInterface, signerOrProvider?: Signer | Provider) {\n logger.checkNew(new.target, Contract);\n\n // @TODO: Maybe still check the addressOrName looks like a valid address or name?\n //address = getAddress(address);\n defineReadOnly(this, \"interface\", getStatic<InterfaceFunc>(new.target, \"getInterface\")(contractInterface));\n\n if (signerOrProvider == null) {\n defineReadOnly(this, \"provider\", null);\n defineReadOnly(this, \"signer\", null);\n } else if (Signer.isSigner(signerOrProvider)) {\n defineReadOnly(this, \"provider\", signerOrProvider.provider || null);\n defineReadOnly(this, \"signer\", signerOrProvider);\n } else if (Provider.isProvider(signerOrProvider)) {\n defineReadOnly(this, \"provider\", signerOrProvider);\n defineReadOnly(this, \"signer\", null);\n } else {\n logger.throwArgumentError(\"invalid signer or provider\", \"signerOrProvider\", signerOrProvider);\n }\n\n defineReadOnly(this, \"callStatic\", { });\n defineReadOnly(this, \"estimateGas\", { });\n defineReadOnly(this, \"functions\", { });\n defineReadOnly(this, \"populateTransaction\", { });\n\n defineReadOnly(this, \"filters\", { });\n\n {\n const uniqueFilters: { [ name: string ]: Array<string> } = { };\n Object.keys(this.interface.events).forEach((eventSignature) => {\n const event = this.interface.events[eventSignature];\n defineReadOnly(this.filters, eventSignature, (...args: Array<any>) => {\n return {\n address: this.address,\n topics: this.interface.encodeFilterTopics(event, args)\n }\n });\n if (!uniqueFilters[event.name]) { uniqueFilters[event.name] = [ ]; }\n uniqueFilters[event.name].push(eventSignature);\n });\n\n Object.keys(uniqueFilters).forEach((name) => {\n const filters = uniqueFilters[name];\n if (filters.length === 1) {\n defineReadOnly(this.filters, name, this.filters[filters[0]]);\n } else {\n logger.warn(`Duplicate definition of ${ name } (${ filters.join(\", \")})`);\n }\n });\n }\n\n defineReadOnly(this, \"_runningEvents\", { });\n defineReadOnly(this, \"_wrappedEmits\", { });\n\n defineReadOnly(this, \"address\", addressOrName);\n if (this.provider) {\n defineReadOnly(this, \"resolvedAddress\", resolveName(this.provider, addressOrName));\n } else {\n try {\n defineReadOnly(this, \"resolvedAddress\", Promise.resolve(getAddress(addressOrName)));\n } catch (error) {\n // Without a provider, we cannot use ENS names\n logger.throwError(\"provider is required to use ENS name as contract address\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new Contract\"\n });\n }\n }\n\n const uniqueNames: { [ name: string ]: Array<string> } = { };\n const uniqueSignatures: { [ signature: string ]: boolean } = { };\n Object.keys(this.interface.functions).forEach((signature) => {\n const fragment = this.interface.functions[signature];\n\n // Check that the signature is unique; if not the ABI generation has\n // not been cleaned or may be incorrectly generated\n if (uniqueSignatures[signature]) {\n logger.warn(`Duplicate ABI entry for ${ JSON.stringify(name) }`);\n return;\n }\n uniqueSignatures[signature] = true;\n\n // Track unique names; we only expose bare named functions if they\n // are ambiguous\n {\n const name = fragment.name;\n if (!uniqueNames[name]) { uniqueNames[name] = [ ]; }\n uniqueNames[name].push(signature);\n }\n\n if (this[signature] == null) {\n defineReadOnly<any, any>(this, signature, buildDefault(this, fragment, true));\n }\n\n // We do not collapse simple calls on this bucket, which allows\n // frameworks to safely use this without introspection as well as\n // allows decoding error recovery.\n if (this.functions[signature] == null) {\n defineReadOnly(this.functions, signature, buildDefault(this, fragment, false));\n }\n\n if (this.callStatic[signature] == null) {\n defineReadOnly(this.callStatic, signature, buildCall(this, fragment, true));\n }\n\n if (this.populateTransaction[signature] == null) {\n defineReadOnly(this.populateTransaction, signature, buildPopulate(this, fragment));\n }\n\n if (this.estimateGas[signature] == null) {\n defineReadOnly(this.estimateGas, signature, buildEstimate(this, fragment));\n }\n });\n\n Object.keys(uniqueNames).forEach((name) => {\n\n // Ambiguous names to not get attached as bare names\n const signatures = uniqueNames[name];\n if (signatures.length > 1) { return; }\n\n const signature = signatures[0];\n\n if (this[name] == null) {\n defineReadOnly(this, name, this[signature]);\n }\n\n if (this.functions[name] == null) {\n defineReadOnly(this.functions, name, this.functions[signature]);\n }\n\n if (this.callStatic[name] == null) {\n defineReadOnly(this.callStatic, name, this.callStatic[signature]);\n }\n\n if (this.populateTransaction[name] == null) {\n defineReadOnly(this.populateTransaction, name, this.populateTransaction[signature]);\n }\n\n if (this.estimateGas[name] == null) {\n defineReadOnly(this.estimateGas, name, this.estimateGas[signature]);\n }\n });\n }\n\n static getContractAddress(transaction: { from: string, nonce: BigNumberish }): string {\n return getContractAddress(transaction);\n }\n\n static getInterface(contractInterface: ContractInterface): Interface {\n if (Interface.isInterface(contractInterface)) {\n return contractInterface;\n }\n return new Interface(contractInterface);\n }\n\n // @TODO: Allow timeout?\n deployed(): Promise<Contract> {\n return this._deployed();\n }\n\n _deployed(blockTag?: BlockTag): Promise<Contract> {\n if (!this._deployedPromise) {\n\n // If we were just deployed, we know the transaction we should occur in\n if (this.deployTransaction) {\n this._deployedPromise = this.deployTransaction.wait().then(() => {\n return this;\n });\n\n } else {\n // @TODO: Once we allow a timeout to be passed in, we will wait\n // up to that many blocks for getCode\n\n // Otherwise, poll for our code to be deployed\n this._deployedPromise = this.provider.getCode(this.address, blockTag).then((code) => {\n if (code === \"0x\") {\n logger.throwError(\"contract not deployed\", Logger.errors.UNSUPPORTED_OPERATION, {\n contractAddress: this.address,\n operation: \"getDeployed\"\n });\n }\n return this;\n });\n }\n }\n\n return this._deployedPromise;\n }\n\n // @TODO:\n // estimateFallback(overrides?: TransactionRequest): Promise<BigNumber>\n\n // @TODO:\n // estimateDeploy(bytecode: string, ...args): Promise<BigNumber>\n\n fallback(overrides?: TransactionRequest): Promise<TransactionResponse> {\n if (!this.signer) {\n logger.throwError(\"sending a transactions require a signer\", Logger.errors.UNSUPPORTED_OPERATION, { operation: \"sendTransaction(fallback)\" })\n }\n\n const tx: Deferrable<TransactionRequest> = shallowCopy(overrides || {});\n\n [\"from\", \"to\"].forEach(function(key) {\n if ((<any>tx)[key] == null) { return; }\n logger.throwError(\"cannot override \" + key, Logger.errors.UNSUPPORTED_OPERATION, { operation: key })\n });\n\n tx.to = this.resolvedAddress;\n return this.deployed().then(() => {\n return this.signer.sendTransaction(tx);\n });\n }\n\n // Reconnect to a different signer or provider\n connect(signerOrProvider: Signer | Provider | string): Contract {\n if (typeof(signerOrProvider) === \"string\") {\n signerOrProvider = new VoidSigner(signerOrProvider, this.provider);\n }\n\n const contract = new (<{ new(...args: any[]): Contract }>(this.constructor))(this.address, this.interface, signerOrProvider);\n if (this.deployTransaction) {\n defineReadOnly(contract, \"deployTransaction\", this.deployTransaction);\n }\n return contract;\n }\n\n // Re-attach to a different on-chain instance of this contract\n attach(addressOrName: string): Contract {\n return new (<{ new(...args: any[]): Contract }>(this.constructor))(addressOrName, this.interface, this.signer || this.provider);\n }\n\n static isIndexed(value: any): value is Indexed {\n return Indexed.isIndexed(value);\n }\n\n private _normalizeRunningEvent(runningEvent: RunningEvent): RunningEvent {\n // Already have an instance of this event running; we can re-use it\n if (this._runningEvents[runningEvent.tag]) {\n return this._runningEvents[runningEvent.tag];\n }\n return runningEvent\n }\n\n private _getRunningEvent(eventName: EventFilter | string): RunningEvent {\n if (typeof(eventName) === \"string\") {\n\n // Listen for \"error\" events (if your contract has an error event, include\n // the full signature to bypass this special event keyword)\n if (eventName === \"error\") {\n return this._normalizeRunningEvent(new ErrorRunningEvent());\n }\n\n // Listen for any event that is registered\n if (eventName === \"event\") {\n return this._normalizeRunningEvent(new RunningEvent(\"event\", null));\n }\n\n // Listen for any event\n if (eventName === \"*\") {\n return this._normalizeRunningEvent(new WildcardRunningEvent(this.address, this.interface));\n }\n\n // Get the event Fragment (throws if ambiguous/unknown event)\n const fragment = this.interface.getEvent(eventName)\n return this._normalizeRunningEvent(new FragmentRunningEvent(this.address, this.interface, fragment));\n }\n\n // We have topics to filter by...\n if (eventName.topics && eventName.topics.length > 0) {\n\n // Is it a known topichash? (throws if no matching topichash)\n try {\n const topic = eventName.topics[0];\n if (typeof(topic) !== \"string\") {\n throw new Error(\"invalid topic\"); // @TODO: May happen for anonymous events\n }\n const fragment = this.interface.getEvent(topic);\n return this._normalizeRunningEvent(new FragmentRunningEvent(this.address, this.interface, fragment, eventName.topics));\n } catch (error) { }\n\n // Filter by the unknown topichash\n const filter: EventFilter = {\n address: this.address,\n topics: eventName.topics\n }\n\n return this._normalizeRunningEvent(new RunningEvent(getEventTag(filter), filter));\n }\n\n return this._normalizeRunningEvent(new WildcardRunningEvent(this.address, this.interface));\n }\n\n _checkRunningEvents(runningEvent: RunningEvent): void {\n if (runningEvent.listenerCount() === 0) {\n delete this._runningEvents[runningEvent.tag];\n\n // If we have a poller for this, remove it\n const emit = this._wrappedEmits[runningEvent.tag];\n if (emit) {\n this.provider.off(runningEvent.filter, emit);\n delete this._wrappedEmits[runningEvent.tag];\n }\n }\n }\n\n // Subclasses can override this to gracefully recover\n // from parse errors if they wish\n _wrapEvent(runningEvent: RunningEvent, log: Log, listener: Listener): Event {\n const event = <Event>deepCopy(log);\n\n event.removeListener = () => {\n if (!listener) { return; }\n runningEvent.removeListener(listener);\n this._checkRunningEvents(runningEvent);\n };\n\n event.getBlock = () => { return this.provider.getBlock(log.blockHash); }\n event.getTransaction = () => { return this.provider.getTransaction(log.transactionHash); }\n event.getTransactionReceipt = () => { return this.provider.getTransactionReceipt(log.transactionHash); }\n\n // This may throw if the topics and data mismatch the signature\n runningEvent.prepareEvent(event);\n\n return event;\n }\n\n private _addEventListener(runningEvent: RunningEvent, listener: Listener, once: boolean): void {\n if (!this.provider) {\n logger.throwError(\"events require a provider or a signer with a provider\", Logger.errors.UNSUPPORTED_OPERATION, { operation: \"once\" })\n }\n\n runningEvent.addListener(listener, once);\n\n // Track this running event and its listeners (may already be there; but no hard in updating)\n this._runningEvents[runningEvent.tag] = runningEvent;\n\n // If we are not polling the provider, start polling\n if (!this._wrappedEmits[runningEvent.tag]) {\n const wrappedEmit = (log: Log) => {\n let event = this._wrapEvent(runningEvent, log, listener);\n\n // Try to emit the result for the parameterized event...\n if (event.decodeError == null) {\n try {\n const args = runningEvent.getEmit(event);\n this.emit(runningEvent.filter, ...args);\n } catch (error) {\n event.decodeError = error.error;\n }\n }\n\n // Always emit \"event\" for fragment-base events\n if (runningEvent.filter != null) {\n this.emit(\"event\", event);\n }\n\n // Emit \"error\" if there was an error\n if (event.decodeError != null) {\n this.emit(\"error\", event.decodeError, event);\n }\n };\n this._wrappedEmits[runningEvent.tag] = wrappedEmit;\n\n // Special events, like \"error\" do not have a filter\n if (runningEvent.filter != null) {\n this.provider.on(runningEvent.filter, wrappedEmit);\n }\n }\n }\n\n queryFilter(event: EventFilter, fromBlockOrBlockhash?: BlockTag | string, toBlock?: BlockTag): Promise<Array<Event>> {\n const runningEvent = this._getRunningEvent(event);\n const filter = shallowCopy(runningEvent.filter);\n\n if (typeof(fromBlockOrBlockhash) === \"string\" && isHexString(fromBlockOrBlockhash, 32)) {\n if (toBlock != null) {\n logger.throwArgumentError(\"cannot specify toBlock with blockhash\", \"toBlock\", toBlock);\n }\n (<FilterByBlockHash>filter).blockHash = fromBlockOrBlockhash;\n } else {\n (<Filter>filter).fromBlock = ((fromBlockOrBlockhash != null) ? fromBlockOrBlockhash: 0);\n (<Filter>filter).toBlock = ((toBlock != null) ? toBlock: \"latest\");\n }\n\n return this.provider.getLogs(filter).then((logs) => {\n return logs.map((log) => this._wrapEvent(runningEvent, log, null));\n });\n }\n\n on(event: EventFilter | string, listener: Listener): this {\n this._addEventListener(this._getRunningEvent(event), listener, false);\n return this;\n }\n\n once(event: EventFilter | string, listener: Listener): this {\n this._addEventListener(this._getRunningEvent(event), listener, true);\n return this;\n }\n\n emit(eventName: EventFilter | string, ...args: Array<any>): boolean {\n if (!this.provider) { return false; }\n\n const runningEvent = this._getRunningEvent(eventName);\n const result = (runningEvent.run(args) > 0);\n\n // May have drained all the \"once\" events; check for living events\n this._checkRunningEvents(runningEvent);\n\n return result;\n }\n\n listenerCount(eventName?: EventFilter | string): number {\n if (!this.provider) { return 0; }\n return this._getRunningEvent(eventName).listenerCount();\n }\n\n listeners(eventName?: EventFilter | string): Array<Listener> {\n if (!this.provider) { return []; }\n\n if (eventName == null) {\n const result: Array<Listener> = [ ];\n for (let tag in this._runningEvents) {\n this._runningEvents[tag].listeners().forEach((listener) => {\n result.push(listener)\n });\n }\n return result;\n }\n\n return this._getRunningEvent(eventName).listeners();\n }\n\n removeAllListeners(eventName?: EventFilter | string): this {\n if (!this.provider) { return this; }\n\n if (eventName == null) {\n for (const tag in this._runningEvents) {\n const runningEvent = this._runningEvents[tag];\n runningEvent.removeAllListeners();\n this._checkRunningEvents(runningEvent);\n }\n return this;\n }\n\n // Delete any listeners\n const runningEvent = this._getRunningEvent(eventName);\n runningEvent.removeAllListeners();\n this._checkRunningEvents(runningEvent);\n\n return this;\n }\n\n off(eventName: EventFilter | string, listener: Listener): this {\n if (!this.provider) { return this; }\n const runningEvent = this._getRunningEvent(eventName);\n runningEvent.removeListener(listener);\n this._checkRunningEvents(runningEvent);\n return this;\n }\n\n removeListener(eventName: EventFilter | string, listener: Listener): this {\n return this.off(eventName, listener);\n }\n\n}\n\nexport class ContractFactory {\n\n readonly interface: Interface;\n readonly bytecode: string;\n readonly signer: Signer;\n\n constructor(contractInterface: ContractInterface, bytecode: BytesLike | { object: string }, signer?: Signer) {\n\n let bytecodeHex: string = null;\n\n if (typeof(bytecode) === \"string\") {\n bytecodeHex = bytecode;\n } else if (isBytes(bytecode)) {\n bytecodeHex = hexlify(bytecode);\n } else if (bytecode && typeof(bytecode.object) === \"string\") {\n // Allow the bytecode object from the Solidity compiler\n bytecodeHex = (<any>bytecode).object;\n } else {\n // Crash in the next verification step\n bytecodeHex = \"!\";\n }\n\n // Make sure it is 0x prefixed\n if (bytecodeHex.substring(0, 2) !== \"0x\") { bytecodeHex = \"0x\" + bytecodeHex; }\n\n // Make sure the final result is valid bytecode\n if (!isHexString(bytecodeHex) || (bytecodeHex.length % 2)) {\n logger.throwArgumentError(\"invalid bytecode\", \"bytecode\", bytecode);\n }\n\n // If we have a signer, make sure it is valid\n if (signer && !Signer.isSigner(signer)) {\n logger.throwArgumentError(\"invalid signer\", \"signer\", signer);\n }\n\n defineReadOnly(this, \"bytecode\", bytecodeHex);\n defineReadOnly(this, \"interface\", getStatic<InterfaceFunc>(new.target, \"getInterface\")(contractInterface));\n defineReadOnly(this, \"signer\", signer || null);\n }\n\n // @TODO: Future; rename to populteTransaction?\n getDeployTransaction(...args: Array<any>): TransactionRequest {\n let tx: TransactionRequest = { };\n\n // If we have 1 additional argument, we allow transaction overrides\n if (args.length === this.interface.deploy.inputs.length + 1 && typeof(args[args.length - 1]) === \"object\") {\n tx = shallowCopy(args.pop());\n for (const key in tx) {\n if (!allowedTransactionKeys[key]) {\n throw new Error(\"unknown transaction override \" + key);\n }\n }\n }\n\n // Do not allow these to be overridden in a deployment transaction\n [\"data\", \"from\", \"to\"].forEach((key) => {\n if ((<any>tx)[key] == null) { return; }\n logger.throwError(\"cannot override \" + key, Logger.errors.UNSUPPORTED_OPERATION, { operation: key })\n });\n\n // Make sure the call matches the constructor signature\n logger.checkArgumentCount(args.length, this.interface.deploy.inputs.length, \" in Contract constructor\");\n\n // Set the data to the bytecode + the encoded constructor arguments\n tx.data = hexlify(concat([\n this.bytecode,\n this.interface.encodeDeploy(args)\n ]));\n\n return tx\n }\n\n async deploy(...args: Array<any>): Promise<Contract> {\n\n let overrides: any = { };\n\n // If 1 extra parameter was passed in, it contains overrides\n if (args.length === this.interface.deploy.inputs.length + 1) {\n overrides = args.pop();\n }\n\n // Make sure the call matches the constructor signature\n logger.checkArgumentCount(args.length, this.interface.deploy.inputs.length, \" in Contract constructor\");\n\n // Resolve ENS names and promises in the arguments\n const params = await resolveAddresses(this.signer, args, this.interface.deploy.inputs);\n params.push(overrides);\n\n // Get the deployment transaction (with optional overrides)\n const unsignedTx = this.getDeployTransaction(...params);\n\n // Send the deployment transaction\n const tx = await this.signer.sendTransaction(unsignedTx);\n\n const address = getStatic<(tx: TransactionResponse) => string>(this.constructor, \"getContractAddress\")(tx);\n const contract = getStatic<(address: string, contractInterface: ContractInterface, signer?: Signer) => Contract>(this.constructor, \"getContract\")(address, this.interface, this.signer);\n defineReadOnly(contract, \"deployTransaction\", tx);\n return contract;\n }\n\n attach(address: string): Contract {\n return (<any>(this.constructor)).getContract(address, this.interface, this.signer);\n }\n\n connect(signer: Signer) {\n return new (<{ new(...args: any[]): ContractFactory }>(this.constructor))(this.interface, this.bytecode, signer);\n }\n\n static fromSolidity(compilerOutput: any, signer?: Signer): ContractFactory {\n if (compilerOutput == null) {\n logger.throwError(\"missing compiler output\", Logger.errors.MISSING_ARGUMENT, { argument: \"compilerOutput\" });\n }\n\n if (typeof(compilerOutput) === \"string\") {\n compilerOutput = JSON.parse(compilerOutput);\n }\n\n const abi = compilerOutput.abi;\n\n let bytecode: any = null;\n if (compilerOutput.bytecode) {\n bytecode = compilerOutput.bytecode;\n } else if (compilerOutput.evm && compilerOutput.evm.bytecode) {\n bytecode = compilerOutput.evm.bytecode;\n }\n\n return new this(abi, bytecode, signer);\n }\n\n static getInterface(contractInterface: ContractInterface) {\n return Contract.getInterface(contractInterface);\n }\n\n static getContractAddress(tx: { from: string, nonce: BytesLike | BigNumber | number }): string {\n return getContractAddress(tx);\n }\n\n static getContract(address: string, contractInterface: ContractInterface, signer?: Signer): Contract {\n return new Contract(address, contractInterface, signer);\n }\n}\n","/**\n * var basex = require(\"base-x\");\n *\n * This implementation is heavily based on base-x. The main reason to\n * deviate was to prevent the dependency of Buffer.\n *\n * Contributors:\n *\n * base-x encoding\n * Forked from https://github.com/cryptocoinjs/bs58\n * Originally written by Mike Hearn for BitcoinJ\n * Copyright (c) 2011 Google Inc\n * Ported to JavaScript by Stefan Thomas\n * Merged Buffer refactorings from base58-native by Stephen Pair\n * Copyright (c) 2013 BitPay Inc\n *\n * The MIT License (MIT)\n *\n * Copyright base-x contributors (c) 2016\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is 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\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *\n */\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nexport class BaseX {\n readonly alphabet: string;\n readonly base: number;\n\n _alphabetMap: { [ character: string ]: number };\n _leader: string;\n\n constructor(alphabet: string) {\n defineReadOnly(this, \"alphabet\", alphabet);\n defineReadOnly(this, \"base\", alphabet.length);\n\n defineReadOnly(this, \"_alphabetMap\", { });\n defineReadOnly(this, \"_leader\", alphabet.charAt(0));\n\n // pre-compute lookup table\n for (let i = 0; i < alphabet.length; i++) {\n this._alphabetMap[alphabet.charAt(i)] = i;\n }\n }\n\n encode(value: BytesLike): string {\n let source = arrayify(value);\n\n if (source.length === 0) { return \"\"; }\n\n let digits = [ 0 ]\n for (let i = 0; i < source.length; ++i) {\n let carry = source[i];\n for (let j = 0; j < digits.length; ++j) {\n carry += digits[j] << 8;\n digits[j] = carry % this.base;\n carry = (carry / this.base) | 0;\n }\n\n while (carry > 0) {\n digits.push(carry % this.base);\n carry = (carry / this.base) | 0;\n }\n }\n\n let string = \"\"\n\n // deal with leading zeros\n for (let k = 0; source[k] === 0 && k < source.length - 1; ++k) {\n string += this._leader;\n }\n\n // convert digits to a string\n for (let q = digits.length - 1; q >= 0; --q) {\n string += this.alphabet[digits[q]];\n }\n\n return string;\n }\n\n decode(value: string): Uint8Array {\n if (typeof(value) !== \"string\") {\n throw new TypeError(\"Expected String\");\n }\n\n let bytes: Array<number> = [];\n if (value.length === 0) { return new Uint8Array(bytes); }\n\n bytes.push(0);\n for (let i = 0; i < value.length; i++) {\n let byte = this._alphabetMap[value[i]];\n\n if (byte === undefined) {\n throw new Error(\"Non-base\" + this.base + \" character\");\n }\n\n let carry = byte;\n for (let j = 0; j < bytes.length; ++j) {\n carry += bytes[j] * this.base;\n bytes[j] = carry & 0xff;\n carry >>= 8;\n }\n\n while (carry > 0) {\n bytes.push(carry & 0xff);\n carry >>= 8;\n }\n }\n\n // deal with leading zeros\n for (let k = 0; value[k] === this._leader && k < value.length - 1; ++k) {\n bytes.push(0)\n }\n\n return arrayify(new Uint8Array(bytes.reverse()))\n }\n}\n\nconst Base32 = new BaseX(\"abcdefghijklmnopqrstuvwxyz234567\");\nconst Base58 = new BaseX(\"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\");\n\nexport { Base32, Base58 };\n\n//console.log(Base58.decode(\"Qmd2V777o5XvJbYMeMb8k2nU5f8d3ciUQ5YpYuWhzv8iDj\"))\n//console.log(Base58.encode(Base58.decode(\"Qmd2V777o5XvJbYMeMb8k2nU5f8d3ciUQ5YpYuWhzv8iDj\")))\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (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}\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","export enum SupportedAlgorithm { sha256 = \"sha256\", sha512 = \"sha512\" };\n\n","export const version = \"sha2/5.0.6\";\n","\"use strict\";\n\nimport hash from \"hash.js\";\n//const _ripemd160 = _hash.ripemd160;\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nimport { SupportedAlgorithm } from \"./types\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport function ripemd160(data: BytesLike): string {\n return \"0x\" + (hash.ripemd160().update(arrayify(data)).digest(\"hex\"));\n}\n\nexport function sha256(data: BytesLike): string {\n return \"0x\" + (hash.sha256().update(arrayify(data)).digest(\"hex\"));\n}\n\nexport function sha512(data: BytesLike): string {\n return \"0x\" + (hash.sha512().update(arrayify(data)).digest(\"hex\"));\n}\n\nexport function computeHmac(algorithm: SupportedAlgorithm, key: BytesLike, data: BytesLike): string {\n if (!SupportedAlgorithm[algorithm]) {\n logger.throwError(\"unsupported algorithm \" + algorithm, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"hmac\",\n algorithm: algorithm\n });\n }\n\n return \"0x\" + hash.hmac((<any>hash)[algorithm], arrayify(key)).update(arrayify(data)).digest(\"hex\");\n}\n\n","import { computeHmac, ripemd160, sha256, sha512 } from \"./sha2\";\n\nimport { SupportedAlgorithm } from \"./types\";\n\nexport {\n computeHmac,\n\n ripemd160,\n\n sha256,\n sha512,\n\n SupportedAlgorithm\n}\n","\"use strict\";\n\nimport { arrayify, BytesLike, hexlify } from \"@ethersproject/bytes\";\nimport { computeHmac, SupportedAlgorithm } from \"@ethersproject/sha2\";\n\nexport function pbkdf2(password: BytesLike, salt: BytesLike, iterations: number, keylen: number, hashAlgorithm: string): string {\n password = arrayify(password);\n salt = arrayify(salt);\n let hLen;\n let l = 1;\n const DK = new Uint8Array(keylen)\n const block1 = new Uint8Array(salt.length + 4)\n block1.set(salt);\n //salt.copy(block1, 0, 0, salt.length)\n\n let r: number;\n let T: Uint8Array;\n\n for (let i = 1; i <= l; i++) {\n //block1.writeUInt32BE(i, salt.length)\n block1[salt.length] = (i >> 24) & 0xff;\n block1[salt.length + 1] = (i >> 16) & 0xff;\n block1[salt.length + 2] = (i >> 8) & 0xff;\n block1[salt.length + 3] = i & 0xff;\n\n //let U = createHmac(password).update(block1).digest();\n let U = arrayify(computeHmac(<SupportedAlgorithm>hashAlgorithm, password, block1));\n\n if (!hLen) {\n hLen = U.length\n T = new Uint8Array(hLen)\n l = Math.ceil(keylen / hLen)\n r = keylen - (l - 1) * hLen\n }\n\n //U.copy(T, 0, 0, hLen)\n T.set(U);\n\n\n for (let j = 1; j < iterations; j++) {\n //U = createHmac(password).update(U).digest();\n U = arrayify(computeHmac(<SupportedAlgorithm>hashAlgorithm, password, U));\n for (let k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n\n const destPos = (i - 1) * hLen\n const len = (i === l ? r : hLen)\n //T.copy(DK, destPos, 0, len)\n DK.set(arrayify(T).slice(0, len), destPos);\n }\n\n return hexlify(DK)\n}\n\n","\nexport { pbkdf2 } from \"./pbkdf2\";\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n []\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n var m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n var m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n for (var j = 0; j < naf.length; j += doubles.step) {\n var nafW = 0;\n for (var k = j + doubles.step - 1; k >= j; k--)\n nafW = (nafW << 1) + naf[k];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (var j = 0; j < repr.length; j++) {\n var nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var k = 0; i >= 0 && naf[i] === 0; i--)\n k++;\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n for (var i = 0; i < len; i++) {\n var p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (var i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b] /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3 /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (var j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (var i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (var j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (var j = 0; j < len; j++) {\n var z = tmp[j];\n var p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (var i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16)\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 }\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n};\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul)\n }\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1)\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1)\n }\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point))\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point))\n }\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n ' y: ' + this.y.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate)\n }\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (var i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (var i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '<EC JPoint Infinity>';\n return '<EC JPoint x: ' + this.x.toString(16, 2) +\n ' y: ' + this.y.toString(16, 2) +\n ' z: ' + this.z.toString(16, 2) + '>';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve\n });\n return curve;\n }\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'\n ]\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'\n ]\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'\n ]\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'\n ]\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650'\n ]\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9'\n ]\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658'\n ]\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3'\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15'\n }\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre\n ]\n});\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +\n ' pub: ' + (this.pub && this.pub.inspect()) + ' >';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(curves.hasOwnProperty(options), 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray()\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n do {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n } while (true);\n};\n\nEC.prototype._truncateToN = function truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8'\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; true; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n\n if (!this.curve._maxwellTrick) {\n var p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n var p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","import _ec from \"elliptic\";\nimport EC = _ec.ec;\n\nexport { EC }\n","export const version = \"signing-key/5.0.7\";\n","\"use strict\";\n\nimport { EC } from \"./elliptic\";\n\nimport { arrayify, BytesLike, hexlify, hexZeroPad, Signature, SignatureLike, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nlet _curve: EC = null\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\n\nexport class SigningKey {\n\n readonly curve: string;\n\n readonly privateKey: string;\n readonly publicKey: string;\n readonly compressedPublicKey: string;\n\n //readonly address: string;\n\n readonly _isSigningKey: boolean;\n\n constructor(privateKey: BytesLike) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n\n _addPoint(other: BytesLike): string {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n\n signDigest(digest: BytesLike): Signature {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const signature = keyPair.sign(arrayify(digest), { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n })\n }\n\n computeSharedSecret(otherKey: BytesLike): string {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n\n static isSigningKey(value: any): value is SigningKey {\n return !!(value && value._isSigningKey);\n }\n}\n\nexport function recoverPublicKey(digest: BytesLike, signature: SignatureLike): string {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\n\nexport function computePublicKey(key: BytesLike, compressed?: boolean): string {\n const bytes = arrayify(key);\n\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n\n } else if (bytes.length === 33) {\n if (compressed) { return hexlify(bytes); }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n\n } else if (bytes.length === 65) {\n if (!compressed) { return hexlify(bytes); }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n\n","export const version = \"transactions/5.0.8\";\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, DataOptions, hexDataSlice, hexlify, hexZeroPad, isBytesLike, SignatureLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\nexport type UnsignedTransaction = {\n to?: string;\n nonce?: number;\n\n gasLimit?: BigNumberish;\n gasPrice?: BigNumberish;\n\n data?: BytesLike;\n value?: BigNumberish;\n chainId?: number;\n}\n\nexport interface Transaction {\n hash?: string;\n\n to?: string;\n from?: string;\n nonce: number;\n\n gasLimit: BigNumber;\n gasPrice: BigNumber;\n\n data: string;\n value: BigNumber;\n chainId: number;\n\n r?: string;\n s?: string;\n v?: number;\n}\n\n///////////////////////////////\n\nfunction handleAddress(value: string): string {\n if (value === \"0x\") { return null; }\n return getAddress(value);\n}\n\nfunction handleNumber(value: string): BigNumber {\n if (value === \"0x\") { return Zero; }\n return BigNumber.from(value);\n}\n\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n chainId: true, data: true, gasLimit: true, gasPrice:true, nonce: true, to: true, value: true\n}\n\nexport function computeAddress(key: BytesLike | string): string {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\n\nexport function recoverAddress(digest: BytesLike, signature: SignatureLike): string {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\n\n\nexport function serialize(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n checkProperties(transaction, allowedTransactionKeys);\n\n const raw: Array<string | Uint8Array> = [];\n\n transactionFields.forEach(function(fieldInfo) {\n let value = (<any>transaction)[fieldInfo.name] || ([]);\n const options: DataOptions = { };\n if (fieldInfo.numeric) { options.hexPad = \"left\"; }\n value = arrayify(hexlify(value, options));\n\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value );\n }\n }\n\n raw.push(hexlify(value));\n });\n\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n\n if (typeof(chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n\n } else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n\n // Requesting an unsigned transation\n if (!signature) {\n return RLP.encode(raw);\n }\n\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n } else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n\n return RLP.encode(raw);\n}\n\nexport function parse(rawTransaction: BytesLike): Transaction {\n const transaction = RLP.decode(rawTransaction);\n\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n\n const tx: Transaction = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n\n // Legacy unsigned transaction\n if (transaction.length === 6) { return tx; }\n\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n\n } catch (error) {\n console.log(error);\n return tx;\n }\n\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n\n } else {\n // Signed Tranasaction\n\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) { tx.chainId = 0; }\n\n let recoveryParam = tx.v - 27;\n\n const raw = transaction.slice(0, 6);\n\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n } catch (error) {\n console.log(error);\n }\n\n tx.hash = keccak256(rawTransaction);\n }\n\n return tx;\n}\n\n","export const version = \"wordlists/5.0.7\";\n","\"use strict\";\n\n// This gets overridden by rollup\nconst exportWordlist = false;\n\nimport { id } from \"@ethersproject/hash\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nexport const logger = new Logger(version);\n\nexport abstract class Wordlist {\n readonly locale: string;\n\n constructor(locale: string) {\n logger.checkAbstract(new.target, Wordlist);\n defineReadOnly(this, \"locale\", locale);\n }\n\n abstract getWord(index: number): string;\n abstract getWordIndex(word: string): number;\n\n // Subclasses may override this\n split(mnemonic: string): Array<string> {\n return mnemonic.toLowerCase().split(/ +/g)\n }\n\n // Subclasses may override this\n join(words: Array<string>): string {\n return words.join(\" \");\n }\n\n static check(wordlist: Wordlist): string {\n const words = [];\n for (let i = 0; i < 2048; i++) {\n const word = wordlist.getWord(i);\n /* istanbul ignore if */\n if (i !== wordlist.getWordIndex(word)) { return \"0x\"; }\n words.push(word);\n }\n return id(words.join(\"\\n\") + \"\\n\");\n }\n\n static register(lang: Wordlist, name?: string): void {\n if (!name) { name = lang.locale; }\n\n /* istanbul ignore if */\n if (exportWordlist) {\n try {\n const anyGlobal = (window as any)\n if (anyGlobal._ethers && anyGlobal._ethers.wordlists) {\n if (!anyGlobal._ethers.wordlists[name]) {\n defineReadOnly(anyGlobal._ethers.wordlists, name, lang);\n }\n }\n } catch (error) { }\n }\n }\n\n}\n\n","\"use strict\";\n\nimport { Wordlist } from \"./wordlist\";\n\nconst words = \"AbdikaceAbecedaAdresaAgreseAkceAktovkaAlejAlkoholAmputaceAnanasAndulkaAnekdotaAnketaAntikaAnulovatArchaAroganceAsfaltAsistentAspiraceAstmaAstronomAtlasAtletikaAtolAutobusAzylBabkaBachorBacilBaculkaBadatelBagetaBagrBahnoBakterieBaladaBaletkaBalkonBalonekBalvanBalzaBambusBankomatBarbarBaretBarmanBarokoBarvaBaterkaBatohBavlnaBazalkaBazilikaBazukaBednaBeranBesedaBestieBetonBezinkaBezmocBeztakBicyklBidloBiftekBikinyBilanceBiografBiologBitvaBizonBlahobytBlatouchBlechaBleduleBleskBlikatBliznaBlokovatBlouditBludBobekBobrBodlinaBodnoutBohatostBojkotBojovatBokorysBolestBorecBoroviceBotaBoubelBouchatBoudaBouleBouratBoxerBradavkaBramboraBrankaBratrBreptaBriketaBrkoBrlohBronzBroskevBrunetkaBrusinkaBrzdaBrzyBublinaBubnovatBuchtaBuditelBudkaBudovaBufetBujarostBukviceBuldokBulvaBundaBunkrBurzaButikBuvolBuzolaBydletBylinaBytovkaBzukotCapartCarevnaCedrCeduleCejchCejnCelaCelerCelkemCelniceCeninaCennostCenovkaCentrumCenzorCestopisCetkaChalupaChapadloCharitaChataChechtatChemieChichotChirurgChladChlebaChlubitChmelChmuraChobotChocholChodbaCholeraChomoutChopitChorobaChovChrapotChrlitChrtChrupChtivostChudinaChutnatChvatChvilkaChvostChybaChystatChytitCibuleCigaretaCihelnaCihlaCinkotCirkusCisternaCitaceCitrusCizinecCizostClonaCokolivCouvatCtitelCtnostCudnostCuketaCukrCupotCvaknoutCvalCvikCvrkotCyklistaDalekoDarebaDatelDatumDceraDebataDechovkaDecibelDeficitDeflaceDeklDekretDemokratDepreseDerbyDeskaDetektivDikobrazDiktovatDiodaDiplomDiskDisplejDivadloDivochDlahaDlouhoDluhopisDnesDobroDobytekDocentDochutitDodnesDohledDohodaDohraDojemDojniceDokladDokolaDoktorDokumentDolarDolevaDolinaDomaDominantDomluvitDomovDonutitDopadDopisDoplnitDoposudDoprovodDopustitDorazitDorostDortDosahDoslovDostatekDosudDosytaDotazDotekDotknoutDoufatDoutnatDovozceDozaduDoznatDozorceDrahotaDrakDramatikDravecDrazeDrdolDrobnostDrogerieDrozdDrsnostDrtitDrzostDubenDuchovnoDudekDuhaDuhovkaDusitDusnoDutostDvojiceDvorecDynamitEkologEkonomieElektronElipsaEmailEmiseEmoceEmpatieEpizodaEpochaEpopejEposEsejEsenceEskortaEskymoEtiketaEuforieEvoluceExekuceExkurzeExpediceExplozeExportExtraktFackaFajfkaFakultaFanatikFantazieFarmacieFavoritFazoleFederaceFejetonFenkaFialkaFigurantFilozofFiltrFinanceFintaFixaceFjordFlanelFlirtFlotilaFondFosforFotbalFotkaFotonFrakceFreskaFrontaFukarFunkceFyzikaGalejeGarantGenetikaGeologGilotinaGlazuraGlejtGolemGolfistaGotikaGrafGramofonGranuleGrepGrilGrogGroteskaGumaHadiceHadrHalaHalenkaHanbaHanopisHarfaHarpunaHavranHebkostHejkalHejnoHejtmanHektarHelmaHematomHerecHernaHesloHezkyHistorikHladovkaHlasivkyHlavaHledatHlenHlodavecHlohHloupostHltatHlubinaHluchotaHmatHmotaHmyzHnisHnojivoHnoutHoblinaHobojHochHodinyHodlatHodnotaHodovatHojnostHokejHolinkaHolkaHolubHomoleHonitbaHonoraceHoralHordaHorizontHorkoHorlivecHormonHorninaHoroskopHorstvoHospodaHostinaHotovostHoubaHoufHoupatHouskaHovorHradbaHraniceHravostHrazdaHrbolekHrdinaHrdloHrdostHrnekHrobkaHromadaHrotHroudaHrozenHrstkaHrubostHryzatHubenostHubnoutHudbaHukotHumrHusitaHustotaHvozdHybnostHydrantHygienaHymnaHysterikIdylkaIhnedIkonaIluzeImunitaInfekceInflaceInkasoInovaceInspekceInternetInvalidaInvestorInzerceIronieJablkoJachtaJahodaJakmileJakostJalovecJantarJarmarkJaroJasanJasnoJatkaJavorJazykJedinecJedleJednatelJehlanJekotJelenJelitoJemnostJenomJepiceJeseterJevitJezdecJezeroJinakJindyJinochJiskraJistotaJitrniceJizvaJmenovatJogurtJurtaKabaretKabelKabinetKachnaKadetKadidloKahanKajakKajutaKakaoKaktusKalamitaKalhotyKalibrKalnostKameraKamkolivKamnaKanibalKanoeKantorKapalinaKapelaKapitolaKapkaKapleKapotaKaprKapustaKapybaraKaramelKarotkaKartonKasaKatalogKatedraKauceKauzaKavalecKazajkaKazetaKazivostKdekolivKdesiKedlubenKempKeramikaKinoKlacekKladivoKlamKlapotKlasikaKlaunKlecKlenbaKlepatKlesnoutKlidKlimaKlisnaKloboukKlokanKlopaKloubKlubovnaKlusatKluzkostKmenKmitatKmotrKnihaKnotKoaliceKoberecKobkaKoblihaKobylaKocourKohoutKojenecKokosKoktejlKolapsKoledaKolizeKoloKomandoKometaKomikKomnataKomoraKompasKomunitaKonatKonceptKondiceKonecKonfeseKongresKoninaKonkursKontaktKonzervaKopanecKopieKopnoutKoprovkaKorbelKorektorKormidloKoroptevKorpusKorunaKorytoKorzetKosatecKostkaKotelKotletaKotoulKoukatKoupelnaKousekKouzloKovbojKozaKozorohKrabiceKrachKrajinaKralovatKrasopisKravataKreditKrejcarKresbaKrevetaKriketKritikKrizeKrkavecKrmelecKrmivoKrocanKrokKronikaKropitKroupaKrovkaKrtekKruhadloKrupiceKrutostKrvinkaKrychleKryptaKrystalKrytKudlankaKufrKujnostKuklaKulajdaKulichKulkaKulometKulturaKunaKupodivuKurtKurzorKutilKvalitaKvasinkaKvestorKynologKyselinaKytaraKyticeKytkaKytovecKyvadloLabradorLachtanLadnostLaikLakomecLamelaLampaLanovkaLasiceLasoLasturaLatinkaLavinaLebkaLeckdyLedenLedniceLedovkaLedvinaLegendaLegieLegraceLehceLehkostLehnoutLektvarLenochodLentilkaLepenkaLepidloLetadloLetecLetmoLetokruhLevhartLevitaceLevobokLibraLichotkaLidojedLidskostLihovinaLijavecLilekLimetkaLinieLinkaLinoleumListopadLitinaLitovatLobistaLodivodLogikaLogopedLokalitaLoketLomcovatLopataLopuchLordLososLotrLoudalLouhLoukaLouskatLovecLstivostLucernaLuciferLumpLuskLustraceLviceLyraLyrikaLysinaMadamMadloMagistrMahagonMajetekMajitelMajoritaMakakMakoviceMakrelaMalbaMalinaMalovatMalviceMaminkaMandleMankoMarnostMasakrMaskotMasopustMaticeMatrikaMaturitaMazanecMazivoMazlitMazurkaMdlobaMechanikMeditaceMedovinaMelasaMelounMentolkaMetlaMetodaMetrMezeraMigraceMihnoutMihuleMikinaMikrofonMilenecMilimetrMilostMimikaMincovnaMinibarMinometMinulostMiskaMistrMixovatMladostMlhaMlhovinaMlokMlsatMluvitMnichMnohemMobilMocnostModelkaModlitbaMohylaMokroMolekulaMomentkaMonarchaMonoklMonstrumMontovatMonzunMosazMoskytMostMotivaceMotorkaMotykaMouchaMoudrostMozaikaMozekMozolMramorMravenecMrkevMrtvolaMrzetMrzutostMstitelMudrcMuflonMulatMumieMuniceMusetMutaceMuzeumMuzikantMyslivecMzdaNabouratNachytatNadaceNadbytekNadhozNadobroNadpisNahlasNahnatNahodileNahraditNaivitaNajednouNajistoNajmoutNaklonitNakonecNakrmitNalevoNamazatNamluvitNanometrNaokoNaopakNaostroNapadatNapevnoNaplnitNapnoutNaposledNaprostoNaroditNarubyNarychloNasaditNasekatNaslepoNastatNatolikNavenekNavrchNavzdoryNazvatNebeNechatNeckyNedalekoNedbatNeduhNegaceNehetNehodaNejenNejprveNeklidNelibostNemilostNemocNeochotaNeonkaNepokojNerostNervNesmyslNesouladNetvorNeuronNevinaNezvykleNicotaNijakNikamNikdyNiklNikterakNitroNoclehNohaviceNominaceNoraNorekNositelNosnostNouzeNovinyNovotaNozdraNudaNudleNugetNutitNutnostNutrieNymfaObalObarvitObavaObdivObecObehnatObejmoutObezitaObhajobaObilniceObjasnitObjektObklopitOblastOblekOblibaOblohaObludaObnosObohatitObojekOboutObrazecObrnaObrubaObrysObsahObsluhaObstaratObuvObvazObvinitObvodObvykleObyvatelObzorOcasOcelOcenitOchladitOchotaOchranaOcitnoutOdbojOdbytOdchodOdcizitOdebratOdeslatOdevzdatOdezvaOdhadceOdhoditOdjetOdjinudOdkazOdkoupitOdlivOdlukaOdmlkaOdolnostOdpadOdpisOdploutOdporOdpustitOdpykatOdrazkaOdsouditOdstupOdsunOdtokOdtudOdvahaOdvetaOdvolatOdvracetOdznakOfinaOfsajdOhlasOhniskoOhradaOhrozitOhryzekOkapOkeniceOklikaOknoOkouzlitOkovyOkrasaOkresOkrsekOkruhOkupantOkurkaOkusitOlejninaOlizovatOmakOmeletaOmezitOmladinaOmlouvatOmluvaOmylOnehdyOpakovatOpasekOperaceOpiceOpilostOpisovatOporaOpoziceOpravduOprotiOrbitalOrchestrOrgieOrliceOrlojOrtelOsadaOschnoutOsikaOsivoOslavaOslepitOslnitOslovitOsnovaOsobaOsolitOspalecOstenOstrahaOstudaOstychOsvojitOteplitOtiskOtopOtrhatOtrlostOtrokOtrubyOtvorOvanoutOvarOvesOvlivnitOvoceOxidOzdobaPachatelPacientPadouchPahorekPaktPalandaPalecPalivoPalubaPamfletPamlsekPanenkaPanikaPannaPanovatPanstvoPantoflePaprikaParketaParodiePartaParukaParybaPasekaPasivitaPastelkaPatentPatronaPavoukPaznehtPazourekPeckaPedagogPejsekPekloPelotonPenaltaPendrekPenzePeriskopPeroPestrostPetardaPeticePetrolejPevninaPexesoPianistaPihaPijavicePiklePiknikPilinaPilnostPilulkaPinzetaPipetaPisatelPistolePitevnaPivnicePivovarPlacentaPlakatPlamenPlanetaPlastikaPlatitPlavidloPlazPlechPlemenoPlentaPlesPletivoPlevelPlivatPlnitPlnoPlochaPlodinaPlombaPloutPlukPlynPobavitPobytPochodPocitPoctivecPodatPodcenitPodepsatPodhledPodivitPodkladPodmanitPodnikPodobaPodporaPodrazPodstataPodvodPodzimPoeziePohankaPohnutkaPohovorPohromaPohybPointaPojistkaPojmoutPokazitPoklesPokojPokrokPokutaPokynPolednePolibekPolknoutPolohaPolynomPomaluPominoutPomlkaPomocPomstaPomysletPonechatPonorkaPonurostPopadatPopelPopisekPoplachPoprositPopsatPopudPoradcePorcePorodPoruchaPoryvPosaditPosedPosilaPoskokPoslanecPosouditPospoluPostavaPosudekPosypPotahPotkanPotleskPotomekPotravaPotupaPotvoraPoukazPoutoPouzdroPovahaPovidlaPovlakPovozPovrchPovstatPovykPovzdechPozdravPozemekPoznatekPozorPozvatPracovatPrahoryPraktikaPralesPraotecPraporekPrasePravdaPrincipPrknoProbuditProcentoProdejProfeseProhraProjektProlomitPromilePronikatPropadProrokProsbaProtonProutekProvazPrskavkaPrstenPrudkostPrutPrvekPrvohoryPsanecPsovodPstruhPtactvoPubertaPuchPudlPukavecPuklinaPukrlePultPumpaPuncPupenPusaPusinkaPustinaPutovatPutykaPyramidaPyskPytelRacekRachotRadiaceRadniceRadonRaftRagbyRaketaRakovinaRamenoRampouchRandeRarachRaritaRasovnaRastrRatolestRazanceRazidloReagovatReakceReceptRedaktorReferentReflexRejnokReklamaRekordRekrutRektorReputaceRevizeRevmaRevolverRezervaRiskovatRizikoRobotikaRodokmenRohovkaRokleRokokoRomanetoRopovodRopuchaRorejsRosolRostlinaRotmistrRotopedRotundaRoubenkaRouchoRoupRouraRovinaRovniceRozborRozchodRozdatRozeznatRozhodceRozinkaRozjezdRozkazRozlohaRozmarRozpadRozruchRozsahRoztokRozumRozvodRubrikaRuchadloRukaviceRukopisRybaRybolovRychlostRydloRypadloRytinaRyzostSadistaSahatSakoSamecSamizdatSamotaSanitkaSardinkaSasankaSatelitSazbaSazeniceSborSchovatSebrankaSeceseSedadloSedimentSedloSehnatSejmoutSekeraSektaSekundaSekvojeSemenoSenoServisSesaditSeshoraSeskokSeslatSestraSesuvSesypatSetbaSetinaSetkatSetnoutSetrvatSeverSeznamShodaShrnoutSifonSilniceSirkaSirotekSirupSituaceSkafandrSkaliskoSkanzenSkautSkeptikSkicaSkladbaSkleniceSkloSkluzSkobaSkokanSkoroSkriptaSkrzSkupinaSkvostSkvrnaSlabikaSladidloSlaninaSlastSlavnostSledovatSlepecSlevaSlezinaSlibSlinaSlizniceSlonSloupekSlovoSluchSluhaSlunceSlupkaSlzaSmaragdSmetanaSmilstvoSmlouvaSmogSmradSmrkSmrtkaSmutekSmyslSnadSnahaSnobSobotaSochaSodovkaSokolSopkaSotvaSoubojSoucitSoudceSouhlasSouladSoumrakSoupravaSousedSoutokSouvisetSpalovnaSpasitelSpisSplavSpodekSpojenecSpoluSponzorSpornostSpoustaSprchaSpustitSrandaSrazSrdceSrnaSrnecSrovnatSrpenSrstSrubStaniceStarostaStatikaStavbaStehnoStezkaStodolaStolekStopaStornoStoupatStrachStresStrhnoutStromStrunaStudnaStupniceStvolStykSubjektSubtropySucharSudostSuknoSundatSunoutSurikataSurovinaSvahSvalstvoSvetrSvatbaSvazekSvisleSvitekSvobodaSvodidloSvorkaSvrabSykavkaSykotSynekSynovecSypatSypkostSyrovostSyselSytostTabletkaTabuleTahounTajemnoTajfunTajgaTajitTajnostTaktikaTamhleTamponTancovatTanecTankerTapetaTaveninaTazatelTechnikaTehdyTekutinaTelefonTemnotaTendenceTenistaTenorTeplotaTepnaTeprveTerapieTermoskaTextilTichoTiskopisTitulekTkadlecTkaninaTlapkaTleskatTlukotTlupaTmelToaletaTopinkaTopolTorzoTouhaToulecTradiceTraktorTrampTrasaTraverzaTrefitTrestTrezorTrhavinaTrhlinaTrochuTrojiceTroskaTroubaTrpceTrpitelTrpkostTrubecTruchlitTruhliceTrusTrvatTudyTuhnoutTuhostTundraTuristaTurnajTuzemskoTvarohTvorbaTvrdostTvrzTygrTykevUbohostUbozeUbratUbrousekUbrusUbytovnaUchoUctivostUdivitUhraditUjednatUjistitUjmoutUkazatelUklidnitUklonitUkotvitUkrojitUliceUlitaUlovitUmyvadloUnavitUniformaUniknoutUpadnoutUplatnitUplynoutUpoutatUpravitUranUrazitUsednoutUsilovatUsmrtitUsnadnitUsnoutUsouditUstlatUstrnoutUtahovatUtkatUtlumitUtonoutUtopenecUtrousitUvalitUvolnitUvozovkaUzdravitUzelUzeninaUzlinaUznatVagonValchaValounVanaVandalVanilkaVaranVarhanyVarovatVcelkuVchodVdovaVedroVegetaceVejceVelbloudVeletrhVelitelVelmocVelrybaVenkovVerandaVerzeVeselkaVeskrzeVesniceVespoduVestaVeterinaVeverkaVibraceVichrVideohraVidinaVidleVilaViniceVisetVitalitaVizeVizitkaVjezdVkladVkusVlajkaVlakVlasecVlevoVlhkostVlivVlnovkaVloupatVnucovatVnukVodaVodivostVodoznakVodstvoVojenskyVojnaVojskoVolantVolbaVolitVolnoVoskovkaVozidloVozovnaVpravoVrabecVracetVrahVrataVrbaVrcholekVrhatVrstvaVrtuleVsaditVstoupitVstupVtipVybavitVybratVychovatVydatVydraVyfotitVyhledatVyhnoutVyhoditVyhraditVyhubitVyjasnitVyjetVyjmoutVyklopitVykonatVylekatVymazatVymezitVymizetVymysletVynechatVynikatVynutitVypadatVyplatitVypravitVypustitVyrazitVyrovnatVyrvatVyslovitVysokoVystavitVysunoutVysypatVytasitVytesatVytratitVyvinoutVyvolatVyvrhelVyzdobitVyznatVzaduVzbuditVzchopitVzdorVzduchVzdychatVzestupVzhledemVzkazVzlykatVznikVzorekVzpouraVztahVztekXylofonZabratZabydletZachovatZadarmoZadusitZafoukatZahltitZahoditZahradaZahynoutZajatecZajetZajistitZaklepatZakoupitZalepitZamezitZamotatZamysletZanechatZanikatZaplatitZapojitZapsatZarazitZastavitZasunoutZatajitZatemnitZatknoutZaujmoutZavalitZaveletZavinitZavolatZavrtatZazvonitZbavitZbrusuZbudovatZbytekZdalekaZdarmaZdatnostZdivoZdobitZdrojZdvihZdymadloZeleninaZemanZeminaZeptatZezaduZezdolaZhatitZhltnoutZhlubokaZhotovitZhrubaZimaZimniceZjemnitZklamatZkoumatZkratkaZkumavkaZlatoZlehkaZlobaZlomZlostZlozvykZmapovatZmarZmatekZmijeZmizetZmocnitZmodratZmrzlinaZmutovatZnakZnalostZnamenatZnovuZobrazitZotavitZoubekZoufaleZploditZpomalitZpravaZprostitZprudkaZprvuZradaZranitZrcadloZrnitostZrnoZrovnaZrychlitZrzavostZtichaZtratitZubovinaZubrZvednoutZvenkuZveselaZvonZvratZvukovodZvyk\";\n\nlet wordlist: Array<string> = null;\n\nfunction loadWords(lang: Wordlist): void {\n if (wordlist != null) { return; }\n wordlist = words.replace(/([A-Z])/g, \" $1\").toLowerCase().substring(1).split(\" \");\n\n // Verify the computed list matches the official list\n /* istanbul ignore if */\n if (Wordlist.check(lang) !== \"0x25f44555f4af25b51a711136e1c7d6e50ce9f8917d39d6b1f076b2bb4d2fac1a\") {\n wordlist = null;\n throw new Error(\"BIP39 Wordlist for en (English) FAILED\");\n }\n}\n\nclass LangCz extends Wordlist {\n constructor() {\n super(\"cz\");\n }\n\n getWord(index: number): string {\n loadWords(this);\n return wordlist[index];\n }\n\n getWordIndex(word: string): number {\n loadWords(this);\n return wordlist.indexOf(word);\n }\n}\n\nconst langCz = new LangCz();\nWordlist.register(langCz);\n\nexport { langCz };\n\n","\"use strict\";\n\nimport { Wordlist } from \"./wordlist\";\n\n\nconst words = \"AbandonAbilityAbleAboutAboveAbsentAbsorbAbstractAbsurdAbuseAccessAccidentAccountAccuseAchieveAcidAcousticAcquireAcrossActActionActorActressActualAdaptAddAddictAddressAdjustAdmitAdultAdvanceAdviceAerobicAffairAffordAfraidAgainAgeAgentAgreeAheadAimAirAirportAisleAlarmAlbumAlcoholAlertAlienAllAlleyAllowAlmostAloneAlphaAlreadyAlsoAlterAlwaysAmateurAmazingAmongAmountAmusedAnalystAnchorAncientAngerAngleAngryAnimalAnkleAnnounceAnnualAnotherAnswerAntennaAntiqueAnxietyAnyApartApologyAppearAppleApproveAprilArchArcticAreaArenaArgueArmArmedArmorArmyAroundArrangeArrestArriveArrowArtArtefactArtistArtworkAskAspectAssaultAssetAssistAssumeAsthmaAthleteAtomAttackAttendAttitudeAttractAuctionAuditAugustAuntAuthorAutoAutumnAverageAvocadoAvoidAwakeAwareAwayAwesomeAwfulAwkwardAxisBabyBachelorBaconBadgeBagBalanceBalconyBallBambooBananaBannerBarBarelyBargainBarrelBaseBasicBasketBattleBeachBeanBeautyBecauseBecomeBeefBeforeBeginBehaveBehindBelieveBelowBeltBenchBenefitBestBetrayBetterBetweenBeyondBicycleBidBikeBindBiologyBirdBirthBitterBlackBladeBlameBlanketBlastBleakBlessBlindBloodBlossomBlouseBlueBlurBlushBoardBoatBodyBoilBombBoneBonusBookBoostBorderBoringBorrowBossBottomBounceBoxBoyBracketBrainBrandBrassBraveBreadBreezeBrickBridgeBriefBrightBringBriskBroccoliBrokenBronzeBroomBrotherBrownBrushBubbleBuddyBudgetBuffaloBuildBulbBulkBulletBundleBunkerBurdenBurgerBurstBusBusinessBusyButterBuyerBuzzCabbageCabinCableCactusCageCakeCallCalmCameraCampCanCanalCancelCandyCannonCanoeCanvasCanyonCapableCapitalCaptainCarCarbonCardCargoCarpetCarryCartCaseCashCasinoCastleCasualCatCatalogCatchCategoryCattleCaughtCauseCautionCaveCeilingCeleryCementCensusCenturyCerealCertainChairChalkChampionChangeChaosChapterChargeChaseChatCheapCheckCheeseChefCherryChestChickenChiefChildChimneyChoiceChooseChronicChuckleChunkChurnCigarCinnamonCircleCitizenCityCivilClaimClapClarifyClawClayCleanClerkCleverClickClientCliffClimbClinicClipClockClogCloseClothCloudClownClubClumpClusterClutchCoachCoastCoconutCodeCoffeeCoilCoinCollectColorColumnCombineComeComfortComicCommonCompanyConcertConductConfirmCongressConnectConsiderControlConvinceCookCoolCopperCopyCoralCoreCornCorrectCostCottonCouchCountryCoupleCourseCousinCoverCoyoteCrackCradleCraftCramCraneCrashCraterCrawlCrazyCreamCreditCreekCrewCricketCrimeCrispCriticCropCrossCrouchCrowdCrucialCruelCruiseCrumbleCrunchCrushCryCrystalCubeCultureCupCupboardCuriousCurrentCurtainCurveCushionCustomCuteCycleDadDamageDampDanceDangerDaringDashDaughterDawnDayDealDebateDebrisDecadeDecemberDecideDeclineDecorateDecreaseDeerDefenseDefineDefyDegreeDelayDeliverDemandDemiseDenialDentistDenyDepartDependDepositDepthDeputyDeriveDescribeDesertDesignDeskDespairDestroyDetailDetectDevelopDeviceDevoteDiagramDialDiamondDiaryDiceDieselDietDifferDigitalDignityDilemmaDinnerDinosaurDirectDirtDisagreeDiscoverDiseaseDishDismissDisorderDisplayDistanceDivertDivideDivorceDizzyDoctorDocumentDogDollDolphinDomainDonateDonkeyDonorDoorDoseDoubleDoveDraftDragonDramaDrasticDrawDreamDressDriftDrillDrinkDripDriveDropDrumDryDuckDumbDuneDuringDustDutchDutyDwarfDynamicEagerEagleEarlyEarnEarthEasilyEastEasyEchoEcologyEconomyEdgeEditEducateEffortEggEightEitherElbowElderElectricElegantElementElephantElevatorEliteElseEmbarkEmbodyEmbraceEmergeEmotionEmployEmpowerEmptyEnableEnactEndEndlessEndorseEnemyEnergyEnforceEngageEngineEnhanceEnjoyEnlistEnoughEnrichEnrollEnsureEnterEntireEntryEnvelopeEpisodeEqualEquipEraEraseErodeErosionErrorEruptEscapeEssayEssenceEstateEternalEthicsEvidenceEvilEvokeEvolveExactExampleExcessExchangeExciteExcludeExcuseExecuteExerciseExhaustExhibitExileExistExitExoticExpandExpectExpireExplainExposeExpressExtendExtraEyeEyebrowFabricFaceFacultyFadeFaintFaithFallFalseFameFamilyFamousFanFancyFantasyFarmFashionFatFatalFatherFatigueFaultFavoriteFeatureFebruaryFederalFeeFeedFeelFemaleFenceFestivalFetchFeverFewFiberFictionFieldFigureFileFilmFilterFinalFindFineFingerFinishFireFirmFirstFiscalFishFitFitnessFixFlagFlameFlashFlatFlavorFleeFlightFlipFloatFlockFloorFlowerFluidFlushFlyFoamFocusFogFoilFoldFollowFoodFootForceForestForgetForkFortuneForumForwardFossilFosterFoundFoxFragileFrameFrequentFreshFriendFringeFrogFrontFrostFrownFrozenFruitFuelFunFunnyFurnaceFuryFutureGadgetGainGalaxyGalleryGameGapGarageGarbageGardenGarlicGarmentGasGaspGateGatherGaugeGazeGeneralGeniusGenreGentleGenuineGestureGhostGiantGiftGiggleGingerGiraffeGirlGiveGladGlanceGlareGlassGlideGlimpseGlobeGloomGloryGloveGlowGlueGoatGoddessGoldGoodGooseGorillaGospelGossipGovernGownGrabGraceGrainGrantGrapeGrassGravityGreatGreenGridGriefGritGroceryGroupGrowGruntGuardGuessGuideGuiltGuitarGunGymHabitHairHalfHammerHamsterHandHappyHarborHardHarshHarvestHatHaveHawkHazardHeadHealthHeartHeavyHedgehogHeightHelloHelmetHelpHenHeroHiddenHighHillHintHipHireHistoryHobbyHockeyHoldHoleHolidayHollowHomeHoneyHoodHopeHornHorrorHorseHospitalHostHotelHourHoverHubHugeHumanHumbleHumorHundredHungryHuntHurdleHurryHurtHusbandHybridIceIconIdeaIdentifyIdleIgnoreIllIllegalIllnessImageImitateImmenseImmuneImpactImposeImproveImpulseInchIncludeIncomeIncreaseIndexIndicateIndoorIndustryInfantInflictInformInhaleInheritInitialInjectInjuryInmateInnerInnocentInputInquiryInsaneInsectInsideInspireInstallIntactInterestIntoInvestInviteInvolveIronIslandIsolateIssueItemIvoryJacketJaguarJarJazzJealousJeansJellyJewelJobJoinJokeJourneyJoyJudgeJuiceJumpJungleJuniorJunkJustKangarooKeenKeepKetchupKeyKickKidKidneyKindKingdomKissKitKitchenKiteKittenKiwiKneeKnifeKnockKnowLabLabelLaborLadderLadyLakeLampLanguageLaptopLargeLaterLatinLaughLaundryLavaLawLawnLawsuitLayerLazyLeaderLeafLearnLeaveLectureLeftLegLegalLegendLeisureLemonLendLengthLensLeopardLessonLetterLevelLiarLibertyLibraryLicenseLifeLiftLightLikeLimbLimitLinkLionLiquidListLittleLiveLizardLoadLoanLobsterLocalLockLogicLonelyLongLoopLotteryLoudLoungeLoveLoyalLuckyLuggageLumberLunarLunchLuxuryLyricsMachineMadMagicMagnetMaidMailMainMajorMakeMammalManManageMandateMangoMansionManualMapleMarbleMarchMarginMarineMarketMarriageMaskMassMasterMatchMaterialMathMatrixMatterMaximumMazeMeadowMeanMeasureMeatMechanicMedalMediaMelodyMeltMemberMemoryMentionMenuMercyMergeMeritMerryMeshMessageMetalMethodMiddleMidnightMilkMillionMimicMindMinimumMinorMinuteMiracleMirrorMiseryMissMistakeMixMixedMixtureMobileModelModifyMomMomentMonitorMonkeyMonsterMonthMoonMoralMoreMorningMosquitoMotherMotionMotorMountainMouseMoveMovieMuchMuffinMuleMultiplyMuscleMuseumMushroomMusicMustMutualMyselfMysteryMythNaiveNameNapkinNarrowNastyNationNatureNearNeckNeedNegativeNeglectNeitherNephewNerveNestNetNetworkNeutralNeverNewsNextNiceNightNobleNoiseNomineeNoodleNormalNorthNoseNotableNoteNothingNoticeNovelNowNuclearNumberNurseNutOakObeyObjectObligeObscureObserveObtainObviousOccurOceanOctoberOdorOffOfferOfficeOftenOilOkayOldOliveOlympicOmitOnceOneOnionOnlineOnlyOpenOperaOpinionOpposeOptionOrangeOrbitOrchardOrderOrdinaryOrganOrientOriginalOrphanOstrichOtherOutdoorOuterOutputOutsideOvalOvenOverOwnOwnerOxygenOysterOzonePactPaddlePagePairPalacePalmPandaPanelPanicPantherPaperParadeParentParkParrotPartyPassPatchPathPatientPatrolPatternPausePavePaymentPeacePeanutPearPeasantPelicanPenPenaltyPencilPeoplePepperPerfectPermitPersonPetPhonePhotoPhrasePhysicalPianoPicnicPicturePiecePigPigeonPillPilotPinkPioneerPipePistolPitchPizzaPlacePlanetPlasticPlatePlayPleasePledgePluckPlugPlungePoemPoetPointPolarPolePolicePondPonyPoolPopularPortionPositionPossiblePostPotatoPotteryPovertyPowderPowerPracticePraisePredictPreferPreparePresentPrettyPreventPricePridePrimaryPrintPriorityPrisonPrivatePrizeProblemProcessProduceProfitProgramProjectPromoteProofPropertyProsperProtectProudProvidePublicPuddingPullPulpPulsePumpkinPunchPupilPuppyPurchasePurityPurposePursePushPutPuzzlePyramidQualityQuantumQuarterQuestionQuickQuitQuizQuoteRabbitRaccoonRaceRackRadarRadioRailRainRaiseRallyRampRanchRandomRangeRapidRareRateRatherRavenRawRazorReadyRealReasonRebelRebuildRecallReceiveRecipeRecordRecycleReduceReflectReformRefuseRegionRegretRegularRejectRelaxReleaseReliefRelyRemainRememberRemindRemoveRenderRenewRentReopenRepairRepeatReplaceReportRequireRescueResembleResistResourceResponseResultRetireRetreatReturnReunionRevealReviewRewardRhythmRibRibbonRiceRichRideRidgeRifleRightRigidRingRiotRippleRiskRitualRivalRiverRoadRoastRobotRobustRocketRomanceRoofRookieRoomRoseRotateRoughRoundRouteRoyalRubberRudeRugRuleRunRunwayRuralSadSaddleSadnessSafeSailSaladSalmonSalonSaltSaluteSameSampleSandSatisfySatoshiSauceSausageSaveSayScaleScanScareScatterSceneSchemeSchoolScienceScissorsScorpionScoutScrapScreenScriptScrubSeaSearchSeasonSeatSecondSecretSectionSecuritySeedSeekSegmentSelectSellSeminarSeniorSenseSentenceSeriesServiceSessionSettleSetupSevenShadowShaftShallowShareShedShellSheriffShieldShiftShineShipShiverShockShoeShootShopShortShoulderShoveShrimpShrugShuffleShySiblingSickSideSiegeSightSignSilentSilkSillySilverSimilarSimpleSinceSingSirenSisterSituateSixSizeSkateSketchSkiSkillSkinSkirtSkullSlabSlamSleepSlenderSliceSlideSlightSlimSloganSlotSlowSlushSmallSmartSmileSmokeSmoothSnackSnakeSnapSniffSnowSoapSoccerSocialSockSodaSoftSolarSoldierSolidSolutionSolveSomeoneSongSoonSorrySortSoulSoundSoupSourceSouthSpaceSpareSpatialSpawnSpeakSpecialSpeedSpellSpendSphereSpiceSpiderSpikeSpinSpiritSplitSpoilSponsorSpoonSportSpotSpraySpreadSpringSpySquareSqueezeSquirrelStableStadiumStaffStageStairsStampStandStartStateStaySteakSteelStemStepStereoStickStillStingStockStomachStoneStoolStoryStoveStrategyStreetStrikeStrongStruggleStudentStuffStumbleStyleSubjectSubmitSubwaySuccessSuchSuddenSufferSugarSuggestSuitSummerSunSunnySunsetSuperSupplySupremeSureSurfaceSurgeSurpriseSurroundSurveySuspectSustainSwallowSwampSwapSwarmSwearSweetSwiftSwimSwingSwitchSwordSymbolSymptomSyrupSystemTableTackleTagTailTalentTalkTankTapeTargetTaskTasteTattooTaxiTeachTeamTellTenTenantTennisTentTermTestTextThankThatThemeThenTheoryThereTheyThingThisThoughtThreeThriveThrowThumbThunderTicketTideTigerTiltTimberTimeTinyTipTiredTissueTitleToastTobaccoTodayToddlerToeTogetherToiletTokenTomatoTomorrowToneTongueTonightToolToothTopTopicToppleTorchTornadoTortoiseTossTotalTouristTowardTowerTownToyTrackTradeTrafficTragicTrainTransferTrapTrashTravelTrayTreatTreeTrendTrialTribeTrickTriggerTrimTripTrophyTroubleTruckTrueTrulyTrumpetTrustTruthTryTubeTuitionTumbleTunaTunnelTurkeyTurnTurtleTwelveTwentyTwiceTwinTwistTwoTypeTypicalUglyUmbrellaUnableUnawareUncleUncoverUnderUndoUnfairUnfoldUnhappyUniformUniqueUnitUniverseUnknownUnlockUntilUnusualUnveilUpdateUpgradeUpholdUponUpperUpsetUrbanUrgeUsageUseUsedUsefulUselessUsualUtilityVacantVacuumVagueValidValleyValveVanVanishVaporVariousVastVaultVehicleVelvetVendorVentureVenueVerbVerifyVersionVeryVesselVeteranViableVibrantViciousVictoryVideoViewVillageVintageViolinVirtualVirusVisaVisitVisualVitalVividVocalVoiceVoidVolcanoVolumeVoteVoyageWageWagonWaitWalkWallWalnutWantWarfareWarmWarriorWashWaspWasteWaterWaveWayWealthWeaponWearWeaselWeatherWebWeddingWeekendWeirdWelcomeWestWetWhaleWhatWheatWheelWhenWhereWhipWhisperWideWidthWifeWildWillWinWindowWineWingWinkWinnerWinterWireWisdomWiseWishWitnessWolfWomanWonderWoodWoolWordWorkWorldWorryWorthWrapWreckWrestleWristWriteWrongYardYearYellowYouYoungYouthZebraZeroZoneZoo\";\n\nlet wordlist: Array<string> = null;\n\n\nfunction loadWords(lang: Wordlist): void {\n if (wordlist != null) { return; }\n wordlist = words.replace(/([A-Z])/g, \" $1\").toLowerCase().substring(1).split(\" \");\n\n // Verify the computed list matches the official list\n /* istanbul ignore if */\n if (Wordlist.check(lang) !== \"0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60\") {\n wordlist = null;\n throw new Error(\"BIP39 Wordlist for en (English) FAILED\");\n }\n}\n\nclass LangEn extends Wordlist {\n constructor() {\n super(\"en\");\n }\n\n getWord(index: number): string {\n loadWords(this);\n return wordlist[index];\n }\n\n getWordIndex(word: string): number {\n loadWords(this);\n return wordlist.indexOf(word);\n }\n}\n\nconst langEn = new LangEn();\nWordlist.register(langEn);\n\nexport { langEn };\n","\"use strict\";\n\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { logger, Wordlist } from \"./wordlist\";\n\n\nconst words = \"A/bacoAbdomenAbejaAbiertoAbogadoAbonoAbortoAbrazoAbrirAbueloAbusoAcabarAcademiaAccesoAccio/nAceiteAcelgaAcentoAceptarA/cidoAclararAcne/AcogerAcosoActivoActoActrizActuarAcudirAcuerdoAcusarAdictoAdmitirAdoptarAdornoAduanaAdultoAe/reoAfectarAficio/nAfinarAfirmarA/gilAgitarAgoni/aAgostoAgotarAgregarAgrioAguaAgudoA/guilaAgujaAhogoAhorroAireAislarAjedrezAjenoAjusteAlacra/nAlambreAlarmaAlbaA/lbumAlcaldeAldeaAlegreAlejarAlertaAletaAlfilerAlgaAlgodo/nAliadoAlientoAlivioAlmaAlmejaAlmi/barAltarAltezaAltivoAltoAlturaAlumnoAlzarAmableAmanteAmapolaAmargoAmasarA/mbarA/mbitoAmenoAmigoAmistadAmorAmparoAmplioAnchoAncianoAnclaAndarAnde/nAnemiaA/nguloAnilloA/nimoAni/sAnotarAntenaAntiguoAntojoAnualAnularAnuncioA~adirA~ejoA~oApagarAparatoApetitoApioAplicarApodoAporteApoyoAprenderAprobarApuestaApuroAradoAra~aArarA/rbitroA/rbolArbustoArchivoArcoArderArdillaArduoA/reaA/ridoAriesArmoni/aArne/sAromaArpaArpo/nArregloArrozArrugaArteArtistaAsaAsadoAsaltoAscensoAsegurarAseoAsesorAsientoAsiloAsistirAsnoAsombroA/speroAstillaAstroAstutoAsumirAsuntoAtajoAtaqueAtarAtentoAteoA/ticoAtletaA/tomoAtraerAtrozAtu/nAudazAudioAugeAulaAumentoAusenteAutorAvalAvanceAvaroAveAvellanaAvenaAvestruzAvio/nAvisoAyerAyudaAyunoAzafra/nAzarAzoteAzu/carAzufreAzulBabaBaborBacheBahi/aBaileBajarBalanzaBalco/nBaldeBambu/BancoBandaBa~oBarbaBarcoBarnizBarroBa/sculaBasto/nBasuraBatallaBateri/aBatirBatutaBau/lBazarBebe/BebidaBelloBesarBesoBestiaBichoBienBingoBlancoBloqueBlusaBoaBobinaBoboBocaBocinaBodaBodegaBoinaBolaBoleroBolsaBombaBondadBonitoBonoBonsa/iBordeBorrarBosqueBoteBoti/nBo/vedaBozalBravoBrazoBrechaBreveBrilloBrincoBrisaBrocaBromaBronceBroteBrujaBruscoBrutoBuceoBucleBuenoBueyBufandaBufo/nBu/hoBuitreBultoBurbujaBurlaBurroBuscarButacaBuzo/nCaballoCabezaCabinaCabraCacaoCada/verCadenaCaerCafe/Cai/daCaima/nCajaCajo/nCalCalamarCalcioCaldoCalidadCalleCalmaCalorCalvoCamaCambioCamelloCaminoCampoCa/ncerCandilCanelaCanguroCanicaCantoCa~aCa~o/nCaobaCaosCapazCapita/nCapoteCaptarCapuchaCaraCarbo/nCa/rcelCaretaCargaCari~oCarneCarpetaCarroCartaCasaCascoCaseroCaspaCastorCatorceCatreCaudalCausaCazoCebollaCederCedroCeldaCe/lebreCelosoCe/lulaCementoCenizaCentroCercaCerdoCerezaCeroCerrarCertezaCe/spedCetroChacalChalecoChampu/ChanclaChapaCharlaChicoChisteChivoChoqueChozaChuletaChuparCiclo/nCiegoCieloCienCiertoCifraCigarroCimaCincoCineCintaCipre/sCircoCiruelaCisneCitaCiudadClamorClanClaroClaseClaveClienteClimaCli/nicaCobreCoccio/nCochinoCocinaCocoCo/digoCodoCofreCogerCoheteCoji/nCojoColaColchaColegioColgarColinaCollarColmoColumnaCombateComerComidaCo/modoCompraCondeConejoCongaConocerConsejoContarCopaCopiaCorazo/nCorbataCorchoCordo/nCoronaCorrerCoserCosmosCostaCra/neoCra/terCrearCrecerCrei/doCremaCri/aCrimenCriptaCrisisCromoCro/nicaCroquetaCrudoCruzCuadroCuartoCuatroCuboCubrirCucharaCuelloCuentoCuerdaCuestaCuevaCuidarCulebraCulpaCultoCumbreCumplirCunaCunetaCuotaCupo/nCu/pulaCurarCuriosoCursoCurvaCutisDamaDanzaDarDardoDa/tilDeberDe/bilDe/cadaDecirDedoDefensaDefinirDejarDelfi/nDelgadoDelitoDemoraDensoDentalDeporteDerechoDerrotaDesayunoDeseoDesfileDesnudoDestinoDesvi/oDetalleDetenerDeudaDi/aDiabloDiademaDiamanteDianaDiarioDibujoDictarDienteDietaDiezDifi/cilDignoDilemaDiluirDineroDirectoDirigirDiscoDise~oDisfrazDivaDivinoDobleDoceDolorDomingoDonDonarDoradoDormirDorsoDosDosisDrago/nDrogaDuchaDudaDueloDue~oDulceDu/oDuqueDurarDurezaDuroE/banoEbrioEcharEcoEcuadorEdadEdicio/nEdificioEditorEducarEfectoEficazEjeEjemploElefanteElegirElementoElevarElipseE/liteElixirElogioEludirEmbudoEmitirEmocio/nEmpateEmpe~oEmpleoEmpresaEnanoEncargoEnchufeEnci/aEnemigoEneroEnfadoEnfermoEnga~oEnigmaEnlaceEnormeEnredoEnsayoEnse~arEnteroEntrarEnvaseEnvi/oE/pocaEquipoErizoEscalaEscenaEscolarEscribirEscudoEsenciaEsferaEsfuerzoEspadaEspejoEspi/aEsposaEspumaEsqui/EstarEsteEstiloEstufaEtapaEternoE/ticaEtniaEvadirEvaluarEventoEvitarExactoExamenExcesoExcusaExentoExigirExilioExistirE/xitoExpertoExplicarExponerExtremoFa/bricaFa/bulaFachadaFa/cilFactorFaenaFajaFaldaFalloFalsoFaltarFamaFamiliaFamosoFarao/nFarmaciaFarolFarsaFaseFatigaFaunaFavorFaxFebreroFechaFelizFeoFeriaFerozFe/rtilFervorFesti/nFiableFianzaFiarFibraFiccio/nFichaFideoFiebreFielFieraFiestaFiguraFijarFijoFilaFileteFilialFiltroFinFincaFingirFinitoFirmaFlacoFlautaFlechaFlorFlotaFluirFlujoFlu/orFobiaFocaFogataFogo/nFolioFolletoFondoFormaForroFortunaForzarFosaFotoFracasoFra/gilFranjaFraseFraudeFrei/rFrenoFresaFri/oFritoFrutaFuegoFuenteFuerzaFugaFumarFuncio/nFundaFurgo/nFuriaFusilFu/tbolFuturoGacelaGafasGaitaGajoGalaGaleri/aGalloGambaGanarGanchoGangaGansoGarajeGarzaGasolinaGastarGatoGavila/nGemeloGemirGenGe/neroGenioGenteGeranioGerenteGermenGestoGiganteGimnasioGirarGiroGlaciarGloboGloriaGolGolfoGolosoGolpeGomaGordoGorilaGorraGotaGoteoGozarGradaGra/ficoGranoGrasaGratisGraveGrietaGrilloGripeGrisGritoGrosorGru/aGruesoGrumoGrupoGuanteGuapoGuardiaGuerraGui/aGui~oGuionGuisoGuitarraGusanoGustarHaberHa/bilHablarHacerHachaHadaHallarHamacaHarinaHazHaza~aHebillaHebraHechoHeladoHelioHembraHerirHermanoHe/roeHervirHieloHierroHi/gadoHigieneHijoHimnoHistoriaHocicoHogarHogueraHojaHombreHongoHonorHonraHoraHormigaHornoHostilHoyoHuecoHuelgaHuertaHuesoHuevoHuidaHuirHumanoHu/medoHumildeHumoHundirHuraca/nHurtoIconoIdealIdiomaI/doloIglesiaIglu/IgualIlegalIlusio/nImagenIma/nImitarImparImperioImponerImpulsoIncapazI/ndiceInerteInfielInformeIngenioInicioInmensoInmuneInnatoInsectoInstanteIntere/sI/ntimoIntuirInu/tilInviernoIraIrisIroni/aIslaIsloteJabali/Jabo/nJamo/nJarabeJardi/nJarraJaulaJazmi/nJefeJeringaJineteJornadaJorobaJovenJoyaJuergaJuevesJuezJugadorJugoJugueteJuicioJuncoJunglaJunioJuntarJu/piterJurarJustoJuvenilJuzgarKiloKoalaLabioLacioLacraLadoLadro/nLagartoLa/grimaLagunaLaicoLamerLa/minaLa/mparaLanaLanchaLangostaLanzaLa/pizLargoLarvaLa/stimaLataLa/texLatirLaurelLavarLazoLealLeccio/nLecheLectorLeerLegio/nLegumbreLejanoLenguaLentoLe~aLeo/nLeopardoLesio/nLetalLetraLeveLeyendaLibertadLibroLicorLi/derLidiarLienzoLigaLigeroLimaLi/miteLimo/nLimpioLinceLindoLi/neaLingoteLinoLinternaLi/quidoLisoListaLiteraLitioLitroLlagaLlamaLlantoLlaveLlegarLlenarLlevarLlorarLloverLluviaLoboLocio/nLocoLocuraLo/gicaLogroLombrizLomoLonjaLoteLuchaLucirLugarLujoLunaLunesLupaLustroLutoLuzMacetaMachoMaderaMadreMaduroMaestroMafiaMagiaMagoMai/zMaldadMaletaMallaMaloMama/MamboMamutMancoMandoManejarMangaManiqui/ManjarManoMansoMantaMa~anaMapaMa/quinaMarMarcoMareaMarfilMargenMaridoMa/rmolMarro/nMartesMarzoMasaMa/scaraMasivoMatarMateriaMatizMatrizMa/ximoMayorMazorcaMechaMedallaMedioMe/dulaMejillaMejorMelenaMelo/nMemoriaMenorMensajeMenteMenu/MercadoMerengueMe/ritoMesMeso/nMetaMeterMe/todoMetroMezclaMiedoMielMiembroMigaMilMilagroMilitarMillo/nMimoMinaMineroMi/nimoMinutoMiopeMirarMisaMiseriaMisilMismoMitadMitoMochilaMocio/nModaModeloMohoMojarMoldeMolerMolinoMomentoMomiaMonarcaMonedaMonjaMontoMo~oMoradaMorderMorenoMorirMorroMorsaMortalMoscaMostrarMotivoMoverMo/vilMozoMuchoMudarMuebleMuelaMuerteMuestraMugreMujerMulaMuletaMultaMundoMu~ecaMuralMuroMu/sculoMuseoMusgoMu/sicaMusloNa/carNacio/nNadarNaipeNaranjaNarizNarrarNasalNatalNativoNaturalNa/useaNavalNaveNavidadNecioNe/ctarNegarNegocioNegroNeo/nNervioNetoNeutroNevarNeveraNichoNidoNieblaNietoNi~ezNi~oNi/tidoNivelNoblezaNocheNo/minaNoriaNormaNorteNotaNoticiaNovatoNovelaNovioNubeNucaNu/cleoNudilloNudoNueraNueveNuezNuloNu/meroNutriaOasisObesoObispoObjetoObraObreroObservarObtenerObvioOcaOcasoOce/anoOchentaOchoOcioOcreOctavoOctubreOcultoOcuparOcurrirOdiarOdioOdiseaOesteOfensaOfertaOficioOfrecerOgroOi/doOi/rOjoOlaOleadaOlfatoOlivoOllaOlmoOlorOlvidoOmbligoOndaOnzaOpacoOpcio/nO/peraOpinarOponerOptarO/pticaOpuestoOracio/nOradorOralO/rbitaOrcaOrdenOrejaO/rganoOrgi/aOrgulloOrienteOrigenOrillaOroOrquestaOrugaOsadi/aOscuroOseznoOsoOstraOto~oOtroOvejaO/vuloO/xidoOxi/genoOyenteOzonoPactoPadrePaellaPa/ginaPagoPai/sPa/jaroPalabraPalcoPaletaPa/lidoPalmaPalomaPalparPanPanalPa/nicoPanteraPa~ueloPapa/PapelPapillaPaquetePararParcelaParedParirParoPa/rpadoParquePa/rrafoPartePasarPaseoPasio/nPasoPastaPataPatioPatriaPausaPautaPavoPayasoPeato/nPecadoPeceraPechoPedalPedirPegarPeinePelarPelda~oPeleaPeligroPellejoPeloPelucaPenaPensarPe~o/nPeo/nPeorPepinoPeque~oPeraPerchaPerderPerezaPerfilPericoPerlaPermisoPerroPersonaPesaPescaPe/simoPesta~aPe/taloPetro/leoPezPezu~aPicarPicho/nPiePiedraPiernaPiezaPijamaPilarPilotoPimientaPinoPintorPinzaPi~aPiojoPipaPirataPisarPiscinaPisoPistaPito/nPizcaPlacaPlanPlataPlayaPlazaPleitoPlenoPlomoPlumaPluralPobrePocoPoderPodioPoemaPoesi/aPoetaPolenPolici/aPolloPolvoPomadaPomeloPomoPompaPonerPorcio/nPortalPosadaPoseerPosiblePostePotenciaPotroPozoPradoPrecozPreguntaPremioPrensaPresoPrevioPrimoPri/ncipePrisio/nPrivarProaProbarProcesoProductoProezaProfesorProgramaProlePromesaProntoPropioPro/ximoPruebaPu/blicoPucheroPudorPuebloPuertaPuestoPulgaPulirPulmo/nPulpoPulsoPumaPuntoPu~alPu~oPupaPupilaPure/QuedarQuejaQuemarQuererQuesoQuietoQui/micaQuinceQuitarRa/banoRabiaRaboRacio/nRadicalRai/zRamaRampaRanchoRangoRapazRa/pidoRaptoRasgoRaspaRatoRayoRazaRazo/nReaccio/nRealidadReba~oReboteRecaerRecetaRechazoRecogerRecreoRectoRecursoRedRedondoReducirReflejoReformaRefra/nRefugioRegaloRegirReglaRegresoRehe/nReinoRei/rRejaRelatoRelevoRelieveRellenoRelojRemarRemedioRemoRencorRendirRentaRepartoRepetirReposoReptilResRescateResinaRespetoRestoResumenRetiroRetornoRetratoReunirReve/sRevistaReyRezarRicoRiegoRiendaRiesgoRifaRi/gidoRigorRinco/nRi~o/nRi/oRiquezaRisaRitmoRitoRizoRobleRoceRociarRodarRodeoRodillaRoerRojizoRojoRomeroRomperRonRoncoRondaRopaRoperoRosaRoscaRostroRotarRubi/RuborRudoRuedaRugirRuidoRuinaRuletaRuloRumboRumorRupturaRutaRutinaSa/badoSaberSabioSableSacarSagazSagradoSalaSaldoSaleroSalirSalmo/nSalo/nSalsaSaltoSaludSalvarSambaSancio/nSandi/aSanearSangreSanidadSanoSantoSapoSaqueSardinaSarte/nSastreSata/nSaunaSaxofo/nSeccio/nSecoSecretoSectaSedSeguirSeisSelloSelvaSemanaSemillaSendaSensorSe~alSe~orSepararSepiaSequi/aSerSerieSermo/nServirSesentaSesio/nSetaSetentaSeveroSexoSextoSidraSiestaSieteSigloSignoSi/labaSilbarSilencioSillaSi/mboloSimioSirenaSistemaSitioSituarSobreSocioSodioSolSolapaSoldadoSoledadSo/lidoSoltarSolucio/nSombraSondeoSonidoSonoroSonrisaSopaSoplarSoporteSordoSorpresaSorteoSoste/nSo/tanoSuaveSubirSucesoSudorSuegraSueloSue~oSuerteSufrirSujetoSulta/nSumarSuperarSuplirSuponerSupremoSurSurcoSure~oSurgirSustoSutilTabacoTabiqueTablaTabu/TacoTactoTajoTalarTalcoTalentoTallaTalo/nTama~oTamborTangoTanqueTapaTapeteTapiaTapo/nTaquillaTardeTareaTarifaTarjetaTarotTarroTartaTatuajeTauroTazaTazo/nTeatroTechoTeclaTe/cnicaTejadoTejerTejidoTelaTele/fonoTemaTemorTemploTenazTenderTenerTenisTensoTeori/aTerapiaTercoTe/rminoTernuraTerrorTesisTesoroTestigoTeteraTextoTezTibioTiburo/nTiempoTiendaTierraTiesoTigreTijeraTildeTimbreTi/midoTimoTintaTi/oTi/picoTipoTiraTiro/nTita/nTi/tereTi/tuloTizaToallaTobilloTocarTocinoTodoTogaToldoTomarTonoTontoToparTopeToqueTo/raxToreroTormentaTorneoToroTorpedoTorreTorsoTortugaTosToscoToserTo/xicoTrabajoTractorTraerTra/ficoTragoTrajeTramoTranceTratoTraumaTrazarTre/bolTreguaTreintaTrenTreparTresTribuTrigoTripaTristeTriunfoTrofeoTrompaTroncoTropaTroteTrozoTrucoTruenoTrufaTuberi/aTuboTuertoTumbaTumorTu/nelTu/nicaTurbinaTurismoTurnoTutorUbicarU/lceraUmbralUnidadUnirUniversoUnoUntarU~aUrbanoUrbeUrgenteUrnaUsarUsuarioU/tilUtopi/aUvaVacaVaci/oVacunaVagarVagoVainaVajillaValeVa/lidoValleValorVa/lvulaVampiroVaraVariarVaro/nVasoVecinoVectorVehi/culoVeinteVejezVelaVeleroVelozVenaVencerVendaVenenoVengarVenirVentaVenusVerVeranoVerboVerdeVeredaVerjaVersoVerterVi/aViajeVibrarVicioVi/ctimaVidaVi/deoVidrioViejoViernesVigorVilVillaVinagreVinoVi~edoVioli/nViralVirgoVirtudVisorVi/speraVistaVitaminaViudoVivazViveroVivirVivoVolca/nVolumenVolverVorazVotarVotoVozVueloVulgarYacerYateYeguaYemaYernoYesoYodoYogaYogurZafiroZanjaZapatoZarzaZonaZorroZumoZurdo\";\n\nconst lookup: { [word: string]: number } = {};\nlet wordlist: Array<string> = null;\n\nfunction dropDiacritic(word: string): string {\n logger.checkNormalize();\n return toUtf8String(Array.prototype.filter.call(toUtf8Bytes(word.normalize(\"NFD\").toLowerCase()), (c: number) => {\n return ((c >= 65 && c <= 90) || (c >= 97 && c <= 123));\n }));\n}\n\nfunction expand(word: string): string {\n const output: Array<number> = [];\n Array.prototype.forEach.call(toUtf8Bytes(word), (c: number) => {\n // Acute accent\n if (c === 47) {\n output.push(204);\n output.push(129);\n // n-tilde\n } else if (c === 126) {\n output.push(110);\n output.push(204);\n output.push(131);\n } else {\n output.push(c);\n }\n });\n\n return toUtf8String(output);\n}\n\nfunction loadWords(lang: Wordlist): void {\n if (wordlist != null) { return; }\n wordlist = words.replace(/([A-Z])/g, \" $1\").toLowerCase().substring(1).split(\" \").map((w) => expand(w));\n wordlist.forEach((word, index) => {\n lookup[dropDiacritic(word)] = index;\n });\n\n // Verify the computed list matches the official list\n /* istanbul ignore if */\n if (Wordlist.check(lang) !== \"0xf74fb7092aeacdfbf8959557de22098da512207fb9f109cb526994938cf40300\") {\n wordlist = null;\n throw new Error(\"BIP39 Wordlist for es (Spanish) FAILED\");\n }\n}\n\nclass LangEs extends Wordlist {\n constructor() {\n super(\"es\");\n }\n\n getWord(index: number): string {\n loadWords(this);\n return wordlist[index];\n }\n\n getWordIndex(word: string): number {\n loadWords(this);\n return lookup[dropDiacritic(word)];\n }\n}\n\nconst langEs = new LangEs();\nWordlist.register(langEs);\n\nexport { langEs };\n","\"use strict\";\n\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { logger, Wordlist } from \"./wordlist\";\n\n\nconst words = \"AbaisserAbandonAbdiquerAbeilleAbolirAborderAboutirAboyerAbrasifAbreuverAbriterAbrogerAbruptAbsenceAbsoluAbsurdeAbusifAbyssalAcade/mieAcajouAcarienAccablerAccepterAcclamerAccoladeAccrocheAccuserAcerbeAchatAcheterAcidulerAcierAcompteAcque/rirAcronymeActeurActifActuelAdepteAde/quatAdhe/sifAdjectifAdjugerAdmettreAdmirerAdopterAdorerAdoucirAdresseAdroitAdulteAdverbeAe/rerAe/ronefAffaireAffecterAfficheAffreuxAffublerAgacerAgencerAgileAgiterAgraferAgre/ableAgrumeAiderAiguilleAilierAimableAisanceAjouterAjusterAlarmerAlchimieAlerteAlge-breAlgueAlie/nerAlimentAlle/gerAlliageAllouerAllumerAlourdirAlpagaAltesseAlve/oleAmateurAmbiguAmbreAme/nagerAmertumeAmidonAmiralAmorcerAmourAmovibleAmphibieAmpleurAmusantAnalyseAnaphoreAnarchieAnatomieAncienAne/antirAngleAngoisseAnguleuxAnimalAnnexerAnnonceAnnuelAnodinAnomalieAnonymeAnormalAntenneAntidoteAnxieuxApaiserApe/ritifAplanirApologieAppareilAppelerApporterAppuyerAquariumAqueducArbitreArbusteArdeurArdoiseArgentArlequinArmatureArmementArmoireArmureArpenterArracherArriverArroserArsenicArte/rielArticleAspectAsphalteAspirerAssautAsservirAssietteAssocierAssurerAsticotAstreAstuceAtelierAtomeAtriumAtroceAttaqueAttentifAttirerAttraperAubaineAubergeAudaceAudibleAugurerAuroreAutomneAutrucheAvalerAvancerAvariceAvenirAverseAveugleAviateurAvideAvionAviserAvoineAvouerAvrilAxialAxiomeBadgeBafouerBagageBaguetteBaignadeBalancerBalconBaleineBalisageBambinBancaireBandageBanlieueBannie-reBanquierBarbierBarilBaronBarqueBarrageBassinBastionBatailleBateauBatterieBaudrierBavarderBeletteBe/lierBeloteBe/ne/ficeBerceauBergerBerlineBermudaBesaceBesogneBe/tailBeurreBiberonBicycleBiduleBijouBilanBilingueBillardBinaireBiologieBiopsieBiotypeBiscuitBisonBistouriBitumeBizarreBlafardBlagueBlanchirBlessantBlinderBlondBloquerBlousonBobardBobineBoireBoiserBolideBonbonBondirBonheurBonifierBonusBordureBorneBotteBoucleBoueuxBougieBoulonBouquinBourseBoussoleBoutiqueBoxeurBrancheBrasierBraveBrebisBre-cheBreuvageBricolerBrigadeBrillantBriocheBriqueBrochureBroderBronzerBrousseBroyeurBrumeBrusqueBrutalBruyantBuffleBuissonBulletinBureauBurinBustierButinerButoirBuvableBuvetteCabanonCabineCachetteCadeauCadreCafe/ineCaillouCaissonCalculerCalepinCalibreCalmerCalomnieCalvaireCamaradeCame/raCamionCampagneCanalCanetonCanonCantineCanularCapableCaporalCapriceCapsuleCapterCapucheCarabineCarboneCaresserCaribouCarnageCarotteCarreauCartonCascadeCasierCasqueCassureCauserCautionCavalierCaverneCaviarCe/dilleCeintureCe/lesteCelluleCendrierCensurerCentralCercleCe/re/bralCeriseCernerCerveauCesserChagrinChaiseChaleurChambreChanceChapitreCharbonChasseurChatonChaussonChavirerChemiseChenilleChe/quierChercherChevalChienChiffreChignonChime-reChiotChlorureChocolatChoisirChoseChouetteChromeChuteCigareCigogneCimenterCine/maCintrerCirculerCirerCirqueCiterneCitoyenCitronCivilClaironClameurClaquerClasseClavierClientClignerClimatClivageClocheClonageCloporteCobaltCobraCocasseCocotierCoderCodifierCoffreCognerCohe/sionCoifferCoincerCole-reColibriCollineColmaterColonelCombatCome/dieCommandeCompactConcertConduireConfierCongelerConnoterConsonneContactConvexeCopainCopieCorailCorbeauCordageCornicheCorpusCorrectCorte-geCosmiqueCostumeCotonCoudeCoupureCourageCouteauCouvrirCoyoteCrabeCrainteCravateCrayonCre/atureCre/diterCre/meuxCreuserCrevetteCriblerCrierCristalCrite-reCroireCroquerCrotaleCrucialCruelCrypterCubiqueCueillirCuille-reCuisineCuivreCulminerCultiverCumulerCupideCuratifCurseurCyanureCycleCylindreCyniqueDaignerDamierDangerDanseurDauphinDe/battreDe/biterDe/borderDe/briderDe/butantDe/calerDe/cembreDe/chirerDe/ciderDe/clarerDe/corerDe/crireDe/cuplerDe/daleDe/ductifDe/esseDe/fensifDe/filerDe/frayerDe/gagerDe/givrerDe/glutirDe/graferDe/jeunerDe/liceDe/logerDemanderDemeurerDe/molirDe/nicherDe/nouerDentelleDe/nuderDe/partDe/penserDe/phaserDe/placerDe/poserDe/rangerDe/roberDe/sastreDescenteDe/sertDe/signerDe/sobe/irDessinerDestrierDe/tacherDe/testerDe/tourerDe/tresseDevancerDevenirDevinerDevoirDiableDialogueDiamantDicterDiffe/rerDige/rerDigitalDigneDiluerDimancheDiminuerDioxydeDirectifDirigerDiscuterDisposerDissiperDistanceDivertirDiviserDocileDocteurDogmeDoigtDomaineDomicileDompterDonateurDonjonDonnerDopamineDortoirDorureDosageDoseurDossierDotationDouanierDoubleDouceurDouterDoyenDragonDraperDresserDribblerDroitureDuperieDuplexeDurableDurcirDynastieE/blouirE/carterE/charpeE/chelleE/clairerE/clipseE/cloreE/cluseE/coleE/conomieE/corceE/couterE/craserE/cre/merE/crivainE/crouE/cumeE/cureuilE/difierE/duquerEffacerEffectifEffigieEffortEffrayerEffusionE/galiserE/garerE/jecterE/laborerE/largirE/lectronE/le/gantE/le/phantE/le-veE/ligibleE/litismeE/logeE/luciderE/luderEmballerEmbellirEmbryonE/meraudeE/missionEmmenerE/motionE/mouvoirEmpereurEmployerEmporterEmpriseE/mulsionEncadrerEnche-reEnclaveEncocheEndiguerEndosserEndroitEnduireE/nergieEnfanceEnfermerEnfouirEngagerEnginEngloberE/nigmeEnjamberEnjeuEnleverEnnemiEnnuyeuxEnrichirEnrobageEnseigneEntasserEntendreEntierEntourerEntraverE/nume/rerEnvahirEnviableEnvoyerEnzymeE/olienE/paissirE/pargneE/patantE/pauleE/picerieE/pide/mieE/pierE/pilogueE/pineE/pisodeE/pitapheE/poqueE/preuveE/prouverE/puisantE/querreE/quipeE/rigerE/rosionErreurE/ruptionEscalierEspadonEspe-ceEspie-gleEspoirEspritEsquiverEssayerEssenceEssieuEssorerEstimeEstomacEstradeE/tage-reE/talerE/tancheE/tatiqueE/teindreE/tendoirE/ternelE/thanolE/thiqueEthnieE/tirerE/tofferE/toileE/tonnantE/tourdirE/trangeE/troitE/tudeEuphorieE/valuerE/vasionE/ventailE/videnceE/viterE/volutifE/voquerExactExage/rerExaucerExcellerExcitantExclusifExcuseExe/cuterExempleExercerExhalerExhorterExigenceExilerExisterExotiqueExpe/dierExplorerExposerExprimerExquisExtensifExtraireExulterFableFabuleuxFacetteFacileFactureFaiblirFalaiseFameuxFamilleFarceurFarfeluFarineFaroucheFascinerFatalFatigueFauconFautifFaveurFavoriFe/brileFe/conderFe/de/rerFe/linFemmeFe/murFendoirFe/odalFermerFe/roceFerveurFestivalFeuilleFeutreFe/vrierFiascoFicelerFictifFide-leFigureFilatureFiletageFilie-reFilleulFilmerFilouFiltrerFinancerFinirFioleFirmeFissureFixerFlairerFlammeFlasqueFlatteurFle/auFle-cheFleurFlexionFloconFloreFluctuerFluideFluvialFolieFonderieFongibleFontaineForcerForgeronFormulerFortuneFossileFoudreFouge-reFouillerFoulureFourmiFragileFraiseFranchirFrapperFrayeurFre/gateFreinerFrelonFre/mirFre/ne/sieFre-reFriableFrictionFrissonFrivoleFroidFromageFrontalFrotterFruitFugitifFuiteFureurFurieuxFurtifFusionFuturGagnerGalaxieGalerieGambaderGarantirGardienGarnirGarrigueGazelleGazonGe/antGe/latineGe/luleGendarmeGe/ne/ralGe/nieGenouGentilGe/ologieGe/ome-treGe/raniumGermeGestuelGeyserGibierGiclerGirafeGivreGlaceGlaiveGlisserGlobeGloireGlorieuxGolfeurGommeGonflerGorgeGorilleGoudronGouffreGoulotGoupilleGourmandGoutteGraduelGraffitiGraineGrandGrappinGratuitGravirGrenatGriffureGrillerGrimperGrognerGronderGrotteGroupeGrugerGrutierGruye-reGue/pardGuerrierGuideGuimauveGuitareGustatifGymnasteGyrostatHabitudeHachoirHalteHameauHangarHannetonHaricotHarmonieHarponHasardHe/liumHe/matomeHerbeHe/rissonHermineHe/ronHe/siterHeureuxHibernerHibouHilarantHistoireHiverHomardHommageHomoge-neHonneurHonorerHonteuxHordeHorizonHorlogeHormoneHorribleHouleuxHousseHublotHuileuxHumainHumbleHumideHumourHurlerHydromelHygie-neHymneHypnoseIdylleIgnorerIguaneIlliciteIllusionImageImbiberImiterImmenseImmobileImmuableImpactImpe/rialImplorerImposerImprimerImputerIncarnerIncendieIncidentInclinerIncoloreIndexerIndiceInductifIne/ditIneptieInexactInfiniInfligerInformerInfusionInge/rerInhalerInhiberInjecterInjureInnocentInoculerInonderInscrireInsecteInsigneInsoliteInspirerInstinctInsulterIntactIntenseIntimeIntrigueIntuitifInutileInvasionInventerInviterInvoquerIroniqueIrradierIrre/elIrriterIsolerIvoireIvresseJaguarJaillirJambeJanvierJardinJaugerJauneJavelotJetableJetonJeudiJeunesseJoindreJoncherJonglerJoueurJouissifJournalJovialJoyauJoyeuxJubilerJugementJuniorJuponJuristeJusticeJuteuxJuve/nileKayakKimonoKiosqueLabelLabialLabourerLace/rerLactoseLaguneLaineLaisserLaitierLambeauLamelleLampeLanceurLangageLanterneLapinLargeurLarmeLaurierLavaboLavoirLectureLe/galLe/gerLe/gumeLessiveLettreLevierLexiqueLe/zardLiasseLibe/rerLibreLicenceLicorneLie-geLie-vreLigatureLigoterLigueLimerLimiteLimonadeLimpideLine/aireLingotLionceauLiquideLisie-reListerLithiumLitigeLittoralLivreurLogiqueLointainLoisirLombricLoterieLouerLourdLoutreLouveLoyalLubieLucideLucratifLueurLugubreLuisantLumie-reLunaireLundiLuronLutterLuxueuxMachineMagasinMagentaMagiqueMaigreMaillonMaintienMairieMaisonMajorerMalaxerMale/ficeMalheurMaliceMalletteMammouthMandaterManiableManquantManteauManuelMarathonMarbreMarchandMardiMaritimeMarqueurMarronMartelerMascotteMassifMate/rielMatie-reMatraqueMaudireMaussadeMauveMaximalMe/chantMe/connuMe/dailleMe/decinMe/diterMe/duseMeilleurMe/langeMe/lodieMembreMe/moireMenacerMenerMenhirMensongeMentorMercrediMe/riteMerleMessagerMesureMe/talMe/te/oreMe/thodeMe/tierMeubleMiaulerMicrobeMietteMignonMigrerMilieuMillionMimiqueMinceMine/ralMinimalMinorerMinuteMiracleMiroiterMissileMixteMobileModerneMoelleuxMondialMoniteurMonnaieMonotoneMonstreMontagneMonumentMoqueurMorceauMorsureMortierMoteurMotifMoucheMoufleMoulinMoussonMoutonMouvantMultipleMunitionMurailleMure-neMurmureMuscleMuse/umMusicienMutationMuterMutuelMyriadeMyrtilleMyste-reMythiqueNageurNappeNarquoisNarrerNatationNationNatureNaufrageNautiqueNavireNe/buleuxNectarNe/fasteNe/gationNe/gligerNe/gocierNeigeNerveuxNettoyerNeuroneNeutronNeveuNicheNickelNitrateNiveauNobleNocifNocturneNoirceurNoisetteNomadeNombreuxNommerNormatifNotableNotifierNotoireNourrirNouveauNovateurNovembreNoviceNuageNuancerNuireNuisibleNume/roNuptialNuqueNutritifObe/irObjectifObligerObscurObserverObstacleObtenirObturerOccasionOccuperOce/anOctobreOctroyerOctuplerOculaireOdeurOdorantOffenserOfficierOffrirOgiveOiseauOisillonOlfactifOlivierOmbrageOmettreOnctueuxOndulerOne/reuxOniriqueOpaleOpaqueOpe/rerOpinionOpportunOpprimerOpterOptiqueOrageuxOrangeOrbiteOrdonnerOreilleOrganeOrgueilOrificeOrnementOrqueOrtieOscillerOsmoseOssatureOtarieOuraganOursonOutilOutragerOuvrageOvationOxydeOxyge-neOzonePaisiblePalacePalmare-sPalourdePalperPanachePandaPangolinPaniquerPanneauPanoramaPantalonPapayePapierPapoterPapyrusParadoxeParcelleParesseParfumerParlerParoleParrainParsemerPartagerParureParvenirPassionPaste-quePaternelPatiencePatronPavillonPavoiserPayerPaysagePeignePeintrePelagePe/licanPellePelousePeluchePendulePe/ne/trerPe/niblePensifPe/nuriePe/pitePe/plumPerdrixPerforerPe/riodePermuterPerplexePersilPertePeserPe/talePetitPe/trirPeuplePharaonPhobiePhoquePhotonPhrasePhysiquePianoPicturalPie-cePierrePieuvrePilotePinceauPipettePiquerPiroguePiscinePistonPivoterPixelPizzaPlacardPlafondPlaisirPlanerPlaquePlastronPlateauPleurerPlexusPliagePlombPlongerPluiePlumagePochettePoe/siePoe-tePointePoirierPoissonPoivrePolairePolicierPollenPolygonePommadePompierPonctuelPonde/rerPoneyPortiquePositionPosse/derPosturePotagerPoteauPotionPoucePoulainPoumonPourprePoussinPouvoirPrairiePratiquePre/cieuxPre/direPre/fixePre/ludePre/nomPre/sencePre/textePre/voirPrimitifPrincePrisonPriverProble-meProce/derProdigeProfondProgre-sProieProjeterProloguePromenerPropreProspe-reProte/gerProuesseProverbePrudencePruneauPsychosePublicPuceronPuiserPulpePulsarPunaisePunitifPupitrePurifierPuzzlePyramideQuasarQuerelleQuestionQuie/tudeQuitterQuotientRacineRaconterRadieuxRagondinRaideurRaisinRalentirRallongeRamasserRapideRasageRatisserRavagerRavinRayonnerRe/actifRe/agirRe/aliserRe/animerRecevoirRe/citerRe/clamerRe/colterRecruterReculerRecyclerRe/digerRedouterRefaireRe/flexeRe/formerRefrainRefugeRe/galienRe/gionRe/glageRe/gulierRe/ite/rerRejeterRejouerRelatifReleverReliefRemarqueReme-deRemiseRemonterRemplirRemuerRenardRenfortReniflerRenoncerRentrerRenvoiReplierReporterRepriseReptileRequinRe/serveRe/sineuxRe/soudreRespectResterRe/sultatRe/tablirRetenirRe/ticuleRetomberRetracerRe/unionRe/ussirRevancheRevivreRe/volteRe/vulsifRichesseRideauRieurRigideRigolerRincerRiposterRisibleRisqueRituelRivalRivie-reRocheuxRomanceRompreRonceRondinRoseauRosierRotatifRotorRotuleRougeRouilleRouleauRoutineRoyaumeRubanRubisRucheRuelleRugueuxRuinerRuisseauRuserRustiqueRythmeSablerSaboterSabreSacocheSafariSagesseSaisirSaladeSaliveSalonSaluerSamediSanctionSanglierSarcasmeSardineSaturerSaugrenuSaumonSauterSauvageSavantSavonnerScalpelScandaleSce/le/ratSce/narioSceptreSche/maScienceScinderScoreScrutinSculpterSe/anceSe/cableSe/cherSecouerSe/cre/terSe/datifSe/duireSeigneurSe/jourSe/lectifSemaineSemblerSemenceSe/minalSe/nateurSensibleSentenceSe/parerSe/quenceSereinSergentSe/rieuxSerrureSe/rumServiceSe/sameSe/virSevrageSextupleSide/ralSie-cleSie/gerSifflerSigleSignalSilenceSiliciumSimpleSince-reSinistreSiphonSiropSismiqueSituerSkierSocialSocleSodiumSoigneuxSoldatSoleilSolitudeSolubleSombreSommeilSomnolerSondeSongeurSonnetteSonoreSorcierSortirSosieSottiseSoucieuxSoudureSouffleSouleverSoupapeSourceSoutirerSouvenirSpacieuxSpatialSpe/cialSphe-reSpiralStableStationSternumStimulusStipulerStrictStudieuxStupeurStylisteSublimeSubstratSubtilSubvenirSucce-sSucreSuffixeSugge/rerSuiveurSulfateSuperbeSupplierSurfaceSuricateSurmenerSurpriseSursautSurvieSuspectSyllabeSymboleSyme/trieSynapseSyntaxeSyste-meTabacTablierTactileTaillerTalentTalismanTalonnerTambourTamiserTangibleTapisTaquinerTarderTarifTartineTasseTatamiTatouageTaupeTaureauTaxerTe/moinTemporelTenailleTendreTeneurTenirTensionTerminerTerneTerribleTe/tineTexteThe-meThe/orieThe/rapieThoraxTibiaTie-deTimideTirelireTiroirTissuTitaneTitreTituberTobogganTole/rantTomateToniqueTonneauToponymeTorcheTordreTornadeTorpilleTorrentTorseTortueTotemToucherTournageTousserToxineTractionTraficTragiqueTrahirTrainTrancherTravailTre-fleTremperTre/sorTreuilTriageTribunalTricoterTrilogieTriompheTriplerTriturerTrivialTromboneTroncTropicalTroupeauTuileTulipeTumulteTunnelTurbineTuteurTutoyerTuyauTympanTyphonTypiqueTyranUbuesqueUltimeUltrasonUnanimeUnifierUnionUniqueUnitaireUniversUraniumUrbainUrticantUsageUsineUsuelUsureUtileUtopieVacarmeVaccinVagabondVagueVaillantVaincreVaisseauValableValiseVallonValveVampireVanilleVapeurVarierVaseuxVassalVasteVecteurVedetteVe/ge/talVe/hiculeVeinardVe/loceVendrediVe/ne/rerVengerVenimeuxVentouseVerdureVe/rinVernirVerrouVerserVertuVestonVe/te/ranVe/tusteVexantVexerViaducViandeVictoireVidangeVide/oVignetteVigueurVilainVillageVinaigreViolonVipe-reVirementVirtuoseVirusVisageViseurVisionVisqueuxVisuelVitalVitesseViticoleVitrineVivaceVivipareVocationVoguerVoileVoisinVoitureVolailleVolcanVoltigerVolumeVoraceVortexVoterVouloirVoyageVoyelleWagonXe/nonYachtZe-breZe/nithZesteZoologie\";\n\nlet wordlist: Array<string> = null;\nconst lookup: { [word: string]: number } = { }\n\nfunction dropDiacritic(word: string): string {\n logger.checkNormalize();\n return toUtf8String(Array.prototype.filter.call(toUtf8Bytes(word.normalize(\"NFD\").toLowerCase()), (c: number) => {\n return ((c >= 65 && c <= 90) || (c >= 97 && c <= 123));\n }));\n}\n\nfunction expand(word: string): string {\n const output: Array<number> = [];\n\n Array.prototype.forEach.call(toUtf8Bytes(word), (c: number) => {\n // Acute accent\n if (c === 47) {\n output.push(204);\n output.push(129);\n\n // Grave accent\n } else if (c === 45) {\n output.push(204);\n output.push(128);\n\n } else {\n output.push(c);\n }\n });\n\n return toUtf8String(output);\n}\n\nfunction loadWords(lang: Wordlist): void {\n if (wordlist != null) { return; }\n wordlist = words.replace(/([A-Z])/g, \" $1\").toLowerCase().substring(1).split(\" \").map((w) => expand(w));\n wordlist.forEach((word, index) => {\n lookup[dropDiacritic(word)] = index;\n });\n\n // Verify the computed list matches the official list\n /* istanbul ignore if */\n if (Wordlist.check(lang) !== \"0x51deb7ae009149dc61a6bd18a918eb7ac78d2775726c68e598b92d002519b045\") {\n wordlist = null;\n throw new Error(\"BIP39 Wordlist for fr (French) FAILED\");\n }\n}\n\nclass LangFr extends Wordlist {\n constructor() {\n super(\"fr\");\n }\n\n getWord(index: number): string {\n loadWords(this);\n return wordlist[index];\n }\n\n getWordIndex(word: string): number {\n loadWords(this);\n return lookup[dropDiacritic(word)];\n }\n}\n\nconst langFr = new LangFr();\nWordlist.register(langFr);\n\nexport { langFr };\n","\"use strict\";\n\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { logger, Wordlist } from \"./wordlist\";\n\n\nconst data = [\n\n // 4-kana words\n \"AQRASRAGBAGUAIRAHBAghAURAdBAdcAnoAMEAFBAFCBKFBQRBSFBCXBCDBCHBGFBEQBpBBpQBIkBHNBeOBgFBVCBhBBhNBmOBmRBiHBiFBUFBZDBvFBsXBkFBlcBjYBwDBMBBTBBTRBWBBWXXaQXaRXQWXSRXCFXYBXpHXOQXHRXhRXuRXmXXbRXlXXwDXTRXrCXWQXWGaBWaKcaYgasFadQalmaMBacAKaRKKBKKXKKjKQRKDRKCYKCRKIDKeVKHcKlXKjHKrYNAHNBWNaRNKcNIBNIONmXNsXNdXNnBNMBNRBNrXNWDNWMNFOQABQAHQBrQXBQXFQaRQKXQKDQKOQKFQNBQNDQQgQCXQCDQGBQGDQGdQYXQpBQpQQpHQLXQHuQgBQhBQhCQuFQmXQiDQUFQZDQsFQdRQkHQbRQlOQlmQPDQjDQwXQMBQMDQcFQTBQTHQrDDXQDNFDGBDGQDGRDpFDhFDmXDZXDbRDMYDRdDTRDrXSAhSBCSBrSGQSEQSHBSVRShYShkSyQSuFSiBSdcSoESocSlmSMBSFBSFKSFNSFdSFcCByCaRCKcCSBCSRCCrCGbCEHCYXCpBCpQCIBCIHCeNCgBCgFCVECVcCmkCmwCZXCZFCdRClOClmClFCjDCjdCnXCwBCwXCcRCFQCFjGXhGNhGDEGDMGCDGCHGIFGgBGVXGVEGVRGmXGsXGdYGoSGbRGnXGwXGwDGWRGFNGFLGFOGFdGFkEABEBDEBFEXOEaBEKSENBENDEYXEIgEIkEgBEgQEgHEhFEudEuFEiBEiHEiFEZDEvBEsXEsFEdXEdREkFEbBEbRElFEPCEfkEFNYAEYAhYBNYQdYDXYSRYCEYYoYgQYgRYuRYmCYZTYdBYbEYlXYjQYRbYWRpKXpQopQnpSFpCXpIBpISphNpdBpdRpbRpcZpFBpFNpFDpFopFrLADLBuLXQLXcLaFLCXLEhLpBLpFLHXLeVLhILdHLdRLoDLbRLrXIABIBQIBCIBsIBoIBMIBRIXaIaRIKYIKRINBINuICDIGBIIDIIkIgRIxFIyQIiHIdRIbYIbRIlHIwRIMYIcRIRVITRIFBIFNIFQOABOAFOBQOaFONBONMOQFOSFOCDOGBOEQOpBOLXOIBOIFOgQOgFOyQOycOmXOsXOdIOkHOMEOMkOWWHBNHXNHXWHNXHDuHDRHSuHSRHHoHhkHmRHdRHkQHlcHlRHwBHWcgAEgAggAkgBNgBQgBEgXOgYcgLXgHjgyQgiBgsFgdagMYgWSgFQgFEVBTVXEVKBVKNVKDVKYVKRVNBVNYVDBVDxVSBVSRVCjVGNVLXVIFVhBVhcVsXVdRVbRVlRhBYhKYhDYhGShxWhmNhdahdkhbRhjohMXhTRxAXxXSxKBxNBxEQxeNxeQxhXxsFxdbxlHxjcxFBxFNxFQxFOxFoyNYyYoybcyMYuBQuBRuBruDMuCouHBudQukkuoBulVuMXuFEmCYmCRmpRmeDmiMmjdmTFmFQiADiBOiaRiKRiNBiNRiSFiGkiGFiERipRiLFiIFihYibHijBijEiMXiWBiFBiFCUBQUXFUaRUNDUNcUNRUNFUDBUSHUCDUGBUGFUEqULNULoUIRUeEUeYUgBUhFUuRUiFUsXUdFUkHUbBUjSUjYUwXUMDUcHURdUTBUrBUrXUrQZAFZXZZaRZKFZNBZQFZCXZGBZYdZpBZLDZIFZHXZHNZeQZVRZVFZmXZiBZvFZdFZkFZbHZbFZwXZcCZcRZRBvBQvBGvBLvBWvCovMYsAFsBDsaRsKFsNFsDrsSHsSFsCXsCRsEBsEHsEfspBsLBsLDsIgsIRseGsbRsFBsFQsFSdNBdSRdCVdGHdYDdHcdVbdySduDdsXdlRdwXdWYdWcdWRkBMkXOkaRkNIkNFkSFkCFkYBkpRkeNkgBkhVkmXksFklVkMBkWDkFNoBNoaQoaFoNBoNXoNaoNEoSRoEroYXoYCoYbopRopFomXojkowXorFbBEbEIbdBbjYlaRlDElMXlFDjKjjSRjGBjYBjYkjpRjLXjIBjOFjeVjbRjwBnXQnSHnpFnLXnINnMBnTRwXBwXNwXYwNFwQFwSBwGFwLXwLDweNwgBwuHwjDwnXMBXMpFMIBMeNMTHcaQcNBcDHcSFcCXcpBcLXcLDcgFcuFcnXcwXccDcTQcrFTQErXNrCHrpFrgFrbFrTHrFcWNYWNbWEHWMXWTR\",\n\n // 5-kana words\n \"ABGHABIJAEAVAYJQALZJAIaRAHNXAHdcAHbRAZJMAZJRAZTRAdVJAklmAbcNAjdRAMnRAMWYAWpRAWgRAFgBAFhBAFdcBNJBBNJDBQKBBQhcBQlmBDEJBYJkBYJTBpNBBpJFBIJBBIJDBIcABOKXBOEJBOVJBOiJBOZJBepBBeLXBeIFBegBBgGJBVJXBuocBiJRBUJQBlXVBlITBwNFBMYVBcqXBTlmBWNFBWiJBWnRBFGHBFwXXKGJXNJBXNZJXDTTXSHSXSVRXSlHXCJDXGQJXEhXXYQJXYbRXOfXXeNcXVJFXhQJXhEJXdTRXjdXXMhBXcQTXRGBXTEBXTnQXFCXXFOFXFgFaBaFaBNJaBCJaBpBaBwXaNJKaNJDaQIBaDpRaEPDaHMFamDJalEJaMZJaFaFaFNBaFQJaFLDaFVHKBCYKBEBKBHDKXaFKXGdKXEJKXpHKXIBKXZDKXwXKKwLKNacKNYJKNJoKNWcKDGdKDTRKChXKGaRKGhBKGbRKEBTKEaRKEPTKLMDKLWRKOHDKVJcKdBcKlIBKlOPKFSBKFEPKFpFNBNJNJBQNBGHNBEPNBHXNBgFNBVXNBZDNBsXNBwXNNaRNNJDNNJENNJkNDCJNDVDNGJRNJiDNZJNNsCJNJFNNFSBNFCXNFEPNFLXNFIFQJBFQCaRQJEQQLJDQLJFQIaRQOqXQHaFQHHQQVJXQVJDQhNJQmEIQZJFQsJXQJrFQWbRDJABDBYJDXNFDXCXDXLXDXZDDXsJDQqXDSJFDJCXDEPkDEqXDYmQDpSJDOCkDOGQDHEIDVJDDuDuDWEBDJFgSBNDSBSFSBGHSBIBSBTQSKVYSJQNSJQiSJCXSEqXSJYVSIiJSOMYSHAHSHaQSeCFSepQSegBSHdHSHrFShSJSJuHSJUFSkNRSrSrSWEBSFaHSJFQSFCXSFGDSFYXSFODSFgBSFVXSFhBSFxFSFkFSFbBSFMFCADdCJXBCXaFCXKFCXNFCXCXCXGBCXEJCXYBCXLDCXIBCXOPCXHXCXgBCXhBCXiBCXlDCXcHCJNBCJNFCDCJCDGBCDVXCDhBCDiDCDJdCCmNCpJFCIaRCOqXCHCHCHZJCViJCuCuCmddCJiFCdNBCdHhClEJCnUJCreSCWlgCWTRCFBFCFNBCFYBCFVFCFhFCFdSCFTBCFWDGBNBGBQFGJBCGBEqGBpBGBgQGNBEGNJYGNkOGNJRGDUFGJpQGHaBGJeNGJeEGVBlGVKjGiJDGvJHGsVJGkEBGMIJGWjNGFBFGFCXGFGBGFYXGFpBGFMFEASJEAWpEJNFECJVEIXSEIQJEOqXEOcFEeNcEHEJEHlFEJgFEhlmEmDJEmZJEiMBEUqXEoSREPBFEPXFEPKFEPSFEPEFEPpFEPLXEPIBEJPdEPcFEPTBEJnXEqlHEMpREFCXEFODEFcFYASJYJAFYBaBYBVXYXpFYDhBYCJBYJGFYYbRYeNcYJeVYiIJYZJcYvJgYvJRYJsXYsJFYMYMYreVpBNHpBEJpBwXpQxFpYEJpeNDpJeDpeSFpeCHpHUJpHbBpHcHpmUJpiiJpUJrpsJuplITpFaBpFQqpFGBpFEfpFYBpFpBpFLJpFIDpFgBpFVXpFyQpFuFpFlFpFjDpFnXpFwXpJFMpFTBLXCJLXEFLXhFLXUJLXbFLalmLNJBLSJQLCLCLGJBLLDJLHaFLeNFLeSHLeCXLepFLhaRLZsJLsJDLsJrLocaLlLlLMdbLFNBLFSBLFEHLFkFIBBFIBXFIBaQIBKXIBSFIBpHIBLXIBgBIBhBIBuHIBmXIBiFIBZXIBvFIBbFIBjQIBwXIBWFIKTRIQUJIDGFICjQIYSRIINXIJeCIVaRImEkIZJFIvJRIsJXIdCJIJoRIbBQIjYBIcqXITFVIreVIFKFIFSFIFCJIFGFIFLDIFIBIJFOIFgBIFVXIJFhIFxFIFmXIFdHIFbBIJFrIJFWOBGBOQfXOOKjOUqXOfXBOqXEOcqXORVJOFIBOFlDHBIOHXiFHNTRHCJXHIaRHHJDHHEJHVbRHZJYHbIBHRsJHRkDHWlmgBKFgBSBgBCDgBGHgBpBgBIBgBVJgBuBgBvFgKDTgQVXgDUJgGSJgOqXgmUMgZIJgTUJgWIEgFBFgFNBgFDJgFSFgFGBgFYXgJFOgFgQgFVXgFhBgFbHgJFWVJABVQKcVDgFVOfXVeDFVhaRVmGdViJYVMaRVFNHhBNDhBCXhBEqhBpFhBLXhNJBhSJRheVXhhKEhxlmhZIJhdBQhkIJhbMNhMUJhMZJxNJgxQUJxDEkxDdFxSJRxplmxeSBxeCXxeGFxeYXxepQxegBxWVcxFEQxFLXxFIBxFgBxFxDxFZtxFdcxFbBxFwXyDJXyDlcuASJuDJpuDIBuCpJuGSJuIJFueEFuZIJusJXudWEuoIBuWGJuFBcuFKEuFNFuFQFuFDJuFGJuFVJuFUtuFdHuFTBmBYJmNJYmQhkmLJDmLJomIdXmiJYmvJRmsJRmklmmMBymMuCmclmmcnQiJABiJBNiJBDiBSFiBCJiBEFiBYBiBpFiBLXiBTHiJNciDEfiCZJiECJiJEqiOkHiHKFieNDiHJQieQcieDHieSFieCXieGFieEFieIHiegFihUJixNoioNXiFaBiFKFiFNDiFEPiFYXitFOitFHiFgBiFVEiFmXiFitiFbBiFMFiFrFUCXQUIoQUIJcUHQJUeCEUHwXUUJDUUqXUdWcUcqXUrnQUFNDUFSHUFCFUFEfUFLXUtFOZBXOZXSBZXpFZXVXZEQJZEJkZpDJZOqXZeNHZeCDZUqXZFBQZFEHZFLXvBAFvBKFvBCXvBEPvBpHvBIDvBgFvBuHvQNJvFNFvFGBvFIBvJFcsXCDsXLXsXsXsXlFsXcHsQqXsJQFsEqXseIFsFEHsFjDdBxOdNpRdNJRdEJbdpJRdhZJdnSJdrjNdFNJdFQHdFhNkNJDkYaRkHNRkHSRkVbRkuMRkjSJkcqDoSJFoEiJoYZJoOfXohEBoMGQocqXbBAFbBXFbBaFbBNDbBGBbBLXbBTBbBWDbGJYbIJHbFQqbFpQlDgQlOrFlVJRjGEBjZJRnXvJnXbBnEfHnOPDngJRnxfXnUJWwXEJwNpJwDpBwEfXwrEBMDCJMDGHMDIJMLJDcQGDcQpHcqXccqNFcqCXcFCJRBSBRBGBRBEJRBpQTBNFTBQJTBpBTBVXTFABTFSBTFCFTFGBTFMDrXCJrXLDrDNJrEfHrFQJrFitWNjdWNTR\",\n\n // 6-kana words\n \"AKLJMANOPFASNJIAEJWXAYJNRAIIbRAIcdaAeEfDAgidRAdjNYAMYEJAMIbRAFNJBAFpJFBBIJYBDZJFBSiJhBGdEBBEJfXBEJqXBEJWRBpaUJBLXrXBIYJMBOcfXBeEfFBestXBjNJRBcDJOBFEqXXNvJRXDMBhXCJNYXOAWpXONJWXHDEBXeIaRXhYJDXZJSJXMDJOXcASJXFVJXaBQqXaBZJFasXdQaFSJQaFEfXaFpJHaFOqXKBNSRKXvJBKQJhXKEJQJKEJGFKINJBKIJjNKgJNSKVElmKVhEBKiJGFKlBgJKjnUJKwsJYKMFIJKFNJDKFIJFKFOfXNJBSFNJBCXNBpJFNJBvQNJBMBNJLJXNJOqXNJeCXNJeGFNdsJCNbTKFNwXUJQNFEPQDiJcQDMSJQSFpBQGMQJQJeOcQyCJEQUJEBQJFBrQFEJqDXDJFDJXpBDJXIMDGiJhDIJGRDJeYcDHrDJDVXgFDkAWpDkIgRDjDEqDMvJRDJFNFDJFIBSKclmSJQOFSJQVHSJQjDSJGJBSJGJFSECJoSHEJqSJHTBSJVJDSViJYSZJNBSJsJDSFSJFSFEfXSJFLXCBUJVCJXSBCJXpBCXVJXCJXsXCJXdFCJNJHCLIJgCHiJFCVNJMChCJhCUHEJCsJTRCJdYcCoQJCCFEfXCFIJgCFUJxCFstFGJBaQGJBIDGQJqXGYJNRGJHKFGeQqDGHEJFGJeLXGHIiJGHdBlGUJEBGkIJTGFQPDGJFEqEAGegEJIJBEJVJXEhQJTEiJNcEJZJFEJoEqEjDEqEPDsXEPGJBEPOqXEPeQFEfDiDEJfEFEfepQEfMiJEqXNBEqDIDEqeSFEqVJXEMvJRYXNJDYXEJHYKVJcYYJEBYJeEcYJUqXYFpJFYFstXpAZJMpBSJFpNBNFpeQPDpHLJDpHIJFpHgJFpeitFpHZJFpJFADpFSJFpJFCJpFOqXpFitBpJFZJLXIJFLIJgRLVNJWLVHJMLwNpJLFGJBLFLJDLFOqXLJFUJIBDJXIBGJBIJBYQIJBIBIBOqXIBcqDIEGJFILNJTIIJEBIOiJhIJeNBIJeIBIhiJIIWoTRIJFAHIJFpBIJFuHIFUtFIJFTHOSBYJOEcqXOHEJqOvBpFOkVJrObBVJOncqDOcNJkHhNJRHuHJuHdMhBgBUqXgBsJXgONJBgHNJDgHHJQgJeitgHsJXgJyNagyDJBgZJDrgsVJQgkEJNgkjSJgJFAHgFCJDgFZtMVJXNFVXQfXVJXDJVXoQJVQVJQVDEfXVDvJHVEqNFVeQfXVHpJFVHxfXVVJSRVVmaRVlIJOhCXVJhHjYkhxCJVhWVUJhWiJcxBNJIxeEqDxfXBFxcFEPxFSJFxFYJXyBDQJydaUJyFOPDuYCJYuLvJRuHLJXuZJLDuFOPDuFZJHuFcqXmKHJdmCQJcmOsVJiJAGFitLCFieOfXiestXiZJMEikNJQirXzFiFQqXiFIJFiFZJFiFvtFUHpJFUteIcUteOcUVCJkUhdHcUbEJEUJqXQUMNJhURjYkUFitFZDGJHZJIxDZJVJXZJFDJZJFpQvBNJBvBSJFvJxBrseQqDsVFVJdFLJDkEJNBkmNJYkFLJDoQJOPoGsJRoEAHBoEJfFbBQqDbBZJHbFVJXlFIJBjYIrXjeitcjjCEBjWMNBwXQfXwXOaFwDsJXwCJTRwrCZJMDNJQcDDJFcqDOPRYiJFTBsJXTQIJBTFEfXTFLJDrXEJFrEJXMrFZJFWEJdEWYTlm\",\n\n // 7-kana words\n \"ABCDEFACNJTRAMBDJdAcNJVXBLNJEBXSIdWRXErNJkXYDJMBXZJCJaXMNJaYKKVJKcKDEJqXKDcNJhKVJrNYKbgJVXKFVJSBNBYBwDNJeQfXNJeEqXNhGJWENJFiJRQlIJbEQJfXxDQqXcfXQFNDEJQFwXUJDYcnUJDJIBgQDIUJTRDJFEqDSJQSJFSJQIJFSOPeZtSJFZJHCJXQfXCTDEqFGJBSJFGJBOfXGJBcqXGJHNJDGJRLiJEJfXEqEJFEJPEFpBEJYJBZJFYBwXUJYiJMEBYJZJyTYTONJXpQMFXFpeGIDdpJFstXpJFcPDLBVSJRLHQJqXLJFZJFIJBNJDIJBUqXIBkFDJIJEJPTIYJGWRIJeQPDIJeEfHIJFsJXOqGDSFHXEJqXgJCsJCgGQJqXgdQYJEgFMFNBgJFcqDVJwXUJVJFZJchIgJCCxOEJqXxOwXUJyDJBVRuscisciJBiJBieUtqXiJFDJkiFsJXQUGEZJcUJFsJXZtXIrXZDZJDrZJFNJDZJFstXvJFQqXvJFCJEsJXQJqkhkNGBbDJdTRbYJMEBlDwXUJMEFiJFcfXNJDRcNJWMTBLJXC\",\n\n // 8-kana words\n \"BraFUtHBFSJFdbNBLJXVJQoYJNEBSJBEJfHSJHwXUJCJdAZJMGjaFVJXEJPNJBlEJfFiJFpFbFEJqIJBVJCrIBdHiJhOPFChvJVJZJNJWxGFNIFLueIBQJqUHEJfUFstOZJDrlXEASJRlXVJXSFwVJNJWD\",\n\n // 9-kana words\n \"QJEJNNJDQJEJIBSFQJEJxegBQJEJfHEPSJBmXEJFSJCDEJqXLXNJFQqXIcQsFNJFIFEJqXUJgFsJXIJBUJEJfHNFvJxEqXNJnXUJFQqD\",\n\n // 10-kana words\n \"IJBEJqXZJ\"\n];\n\n// Maps each character into its kana value (the index)\nconst mapping = \"~~AzB~X~a~KN~Q~D~S~C~G~E~Y~p~L~I~O~eH~g~V~hxyumi~~U~~Z~~v~~s~~dkoblPjfnqwMcRTr~W~~~F~~~~~Jt\"\n\nlet wordlist: Array<string> = null;\n\nfunction hex(word: string) {\n return hexlify(toUtf8Bytes(word));\n}\n\nconst KiYoKu = \"0xe3818de38284e3818f\";\nconst KyoKu = \"0xe3818de38283e3818f\"\n\nfunction loadWords(lang: Wordlist) {\n if (wordlist !== null) { return; }\n\n wordlist = [];\n\n // Transforms for normalizing (sort is a not quite UTF-8)\n const transform: { [key: string]: string | boolean } = {};\n\n // Delete the diacritic marks\n transform[toUtf8String([227, 130, 154])] = false;\n transform[toUtf8String([227, 130, 153])] = false;\n\n // Some simple transforms that sort out most of the order\n transform[toUtf8String([227, 130, 133])] = toUtf8String([227, 130, 134]);\n transform[toUtf8String([227, 129, 163])] = toUtf8String([227, 129, 164]);\n transform[toUtf8String([227, 130, 131])] = toUtf8String([227, 130, 132]);\n transform[toUtf8String([227, 130, 135])] = toUtf8String([227, 130, 136]);\n\n\n // Normalize words using the transform\n function normalize(word: string) {\n let result = \"\";\n for (let i = 0; i < word.length; i++) {\n let kana = word[i];\n const target = transform[kana];\n if (target === false) { continue; }\n if (target) { kana = <string>target; }\n result += kana;\n }\n return result;\n }\n\n // Sort how the Japanese list is sorted\n function sortJapanese(a: string, b: string) {\n a = normalize(a);\n b = normalize(b);\n if (a < b) { return -1; }\n if (a > b) { return 1; }\n return 0;\n }\n\n // Load all the words\n for (let length = 3; length <= 9; length++) {\n const d = data[length - 3];\n for (let offset = 0; offset < d.length; offset += length) {\n const word = [];\n for (let i = 0; i < length; i++) {\n const k = mapping.indexOf(d[offset + i]);\n word.push(227);\n word.push((k & 0x40) ? 130: 129);\n word.push((k & 0x3f) + 128);\n }\n wordlist.push(toUtf8String(word));\n }\n }\n wordlist.sort(sortJapanese);\n\n // For some reason kyoku and kiyoku are flipped in node (!!).\n // The order SHOULD be:\n // - kyoku\n // - kiyoku\n\n // This should ignore \"if\", but that doesn't work here??\n /* istanbul ignore next */\n if (hex(wordlist[442]) === KiYoKu && hex(wordlist[443]) === KyoKu) {\n const tmp = wordlist[442];\n wordlist[442] = wordlist[443];\n wordlist[443] = tmp;\n }\n\n // Verify the computed list matches the official list\n /* istanbul ignore if */\n if (Wordlist.check(lang) !== \"0xcb36b09e6baa935787fd762ce65e80b0c6a8dabdfbc3a7f86ac0e2c4fd111600\") {\n wordlist = null;\n throw new Error(\"BIP39 Wordlist for ja (Japanese) FAILED\");\n }\n}\n\nclass LangJa extends Wordlist {\n constructor() {\n super(\"ja\");\n }\n\n getWord(index: number): string {\n loadWords(this);\n return wordlist[index];\n }\n\n getWordIndex(word: string): number {\n loadWords(this);\n return wordlist.indexOf(word);\n }\n\n split(mnemonic: string): Array<string> {\n logger.checkNormalize();\n return mnemonic.split(/(?:\\u3000| )+/g);\n }\n\n join(words: Array<string>): string {\n return words.join(\"\\u3000\");\n }\n}\n\nconst langJa = new LangJa();\nWordlist.register(langJa);\n\nexport { langJa };\n\n","\"use strict\";\n\nimport { toUtf8String } from \"@ethersproject/strings\";\n\nimport { Wordlist } from \"./wordlist\";\n\n\nconst data = [\n \"OYAa\",\n \"ATAZoATBl3ATCTrATCl8ATDloATGg3ATHT8ATJT8ATJl3ATLlvATLn4ATMT8ATMX8ATMboATMgoAToLbAToMTATrHgATvHnAT3AnAT3JbAT3MTAT8DbAT8JTAT8LmAT8MYAT8MbAT#LnAUHT8AUHZvAUJXrAUJX8AULnrAXJnvAXLUoAXLgvAXMn6AXRg3AXrMbAX3JTAX3QbAYLn3AZLgvAZrSUAZvAcAZ8AaAZ8AbAZ8AnAZ8HnAZ8LgAZ8MYAZ8MgAZ8OnAaAboAaDTrAaFTrAaJTrAaJboAaLVoAaMXvAaOl8AaSeoAbAUoAbAg8AbAl4AbGnrAbMT8AbMXrAbMn4AbQb8AbSV8AbvRlAb8AUAb8AnAb8HgAb8JTAb8NTAb8RbAcGboAcLnvAcMT8AcMX8AcSToAcrAaAcrFnAc8AbAc8MgAfGgrAfHboAfJnvAfLV8AfLkoAfMT8AfMnoAfQb8AfScrAfSgrAgAZ8AgFl3AgGX8AgHZvAgHgrAgJXoAgJX8AgJboAgLZoAgLn4AgOX8AgoATAgoAnAgoCUAgoJgAgoLXAgoMYAgoSeAgrDUAgrJTAhrFnAhrLjAhrQgAjAgoAjJnrAkMX8AkOnoAlCTvAlCV8AlClvAlFg4AlFl6AlFn3AloSnAlrAXAlrAfAlrFUAlrFbAlrGgAlrOXAlvKnAlvMTAl3AbAl3MnAnATrAnAcrAnCZ3AnCl8AnDg8AnFboAnFl3AnHX4AnHbrAnHgrAnIl3AnJgvAnLXoAnLX4AnLbrAnLgrAnLhrAnMXoAnMgrAnOn3AnSbrAnSeoAnvLnAn3OnCTGgvCTSlvCTvAUCTvKnCTvNTCT3CZCT3GUCT3MTCT8HnCUCZrCULf8CULnvCU3HnCU3JUCY6NUCbDb8CbFZoCbLnrCboOTCboScCbrFnCbvLnCb8AgCb8HgCb$LnCkLfoClBn3CloDUDTHT8DTLl3DTSU8DTrAaDTrLXDTrLjDTrOYDTrOgDTvFXDTvFnDT3HUDT3LfDUCT9DUDT4DUFVoDUFV8DUFkoDUGgrDUJnrDULl8DUMT8DUMXrDUMX4DUMg8DUOUoDUOgvDUOg8DUSToDUSZ8DbDXoDbDgoDbGT8DbJn3DbLg3DbLn4DbMXrDbMg8DbOToDboJXGTClvGTDT8GTFZrGTLVoGTLlvGTLl3GTMg8GTOTvGTSlrGToCUGTrDgGTrJYGTrScGTtLnGTvAnGTvQgGUCZrGUDTvGUFZoGUHXrGULnvGUMT8GUoMgGXoLnGXrMXGXrMnGXvFnGYLnvGZOnvGZvOnGZ8LaGZ8LmGbAl3GbDYvGbDlrGbHX3GbJl4GbLV8GbLn3GbMn4GboJTGboRfGbvFUGb3GUGb4JnGgDX3GgFl$GgJlrGgLX6GgLZoGgLf8GgOXoGgrAgGgrJXGgrMYGgrScGgvATGgvOYGnAgoGnJgvGnLZoGnLg3GnLnrGnQn8GnSbrGnrMgHTClvHTDToHTFT3HTQT8HToJTHToJgHTrDUHTrMnHTvFYHTvRfHT8MnHT8SUHUAZ8HUBb4HUDTvHUoMYHXFl6HXJX6HXQlrHXrAUHXrMnHXrSbHXvFYHXvKXHX3LjHX3MeHYvQlHZrScHZvDbHbAcrHbFT3HbFl3HbJT8HbLTrHbMT8HbMXrHbMbrHbQb8HbSX3HboDbHboJTHbrFUHbrHgHbrJTHb8JTHb8MnHb8QgHgAlrHgDT3HgGgrHgHgrHgJTrHgJT8HgLX@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!Ln$CTGXMnCToLZ4CTrHT8CT3JTrCT3RZrCT#GTvCU6GgvCU8Db8CU8GZrCU8HT8CboLl3CbrGgrCbrMU8Cb8DT3Cb8GnrCb8LX4Cb8MT8Cb8ObrCgrGgvCgrKX4Cl8FZoDTrAbvDTrDboDTrGT6DTrJgrDTrMX3DTrRZrDTrRg8DTvAVvDTvFZoDT3DT8DT3Ln3DT4HZrDT4MT8DT8AlrDT8MT8DUAkGbDUDbJnDYLnQlDbDUOYDbMTAnDbMXSnDboAT3DboFn4DboLnvDj6JTrGTCgFTGTGgFnGTJTMnGTLnPlGToJT8GTrCT3GTrLVoGTrLnvGTrMX3GTrMboGTvKl3GZClFnGZrDT3GZ8DTrGZ8FZ8GZ8MXvGZ8On8GZ8ST3GbCnQXGbMbFnGboFboGboJg3GboMXoGb3JTvGb3JboGb3Mn6Gb3Qb8GgDXLjGgMnAUGgrDloGgrHX4GgrSToGgvAXrGgvAZvGgvFbrGgvLl3GgvMnvGnDnLXGnrATrGnrMboGnuLl3HTATMnHTAgCnHTCTCTHTrGTvHTrHTvHTrJX8HTrLl8HTrMT8HTrMgoHTrOTrHTuOn3HTvAZrHTvDTvHTvGboHTvJU8HTvLl3HTvMXrHTvQb4HT4GT6HT4JT8HT4Jb#HT8Al3HT8GZrHT8GgrHT8HX4HT8Jb8HT8JnoHT8LTrHT8LgvHT8SToHT8SV8HUoJUoHUoJX8HUoLnrHXrLZoHXvAl3HX3LnrHX4FkvHX4LhrHX4MXoHX4OnoHZrAZ8HZrDb8HZrGZ8HZrJnrHZvGZ8HZvLnvHZ8JnvHZ8LhrHbCXJlHbMTAnHboJl4HbpLl3HbrJX8HbrLnrHbrMnvHbvRYrHgoSTrHgrFV8HgrGZ8HgrJXoHgrRnvHgvBb!HgvGTrHgvHX4HgvHn!HgvLTrHgvSU8HnDnLbHnFbJbHnvDn8Hn6GgvHn!BTvJTCTLnJTQgFnJTrAnvJTrLX4JTrOUoJTvFn3JTvLnrJTvNToJT3AgoJT3Jn4JT3LhvJT3ObrJT8AcrJT8Al3JT8JT8JT8JnoJT8LX4JT8LnrJT8MX3JT8Rg3JT8Sc8JUoBTvJU8AToJU8GZ8JU8GgvJU8JTrJU8JXrJU8JnrJU8LnvJU8ScvJXHnJlJXrGgvJXrJU8JXrLhrJXrMT8JXrMXrJXrQUoJXvCTvJXvGZ8JXvGgrJXvQT8JX8Ab8JX8DT8JX8GZ8JX8HZvJX8LnrJX8MT8JX8MXoJX8MnvJX8ST3JYGnCTJbAkGbJbCTAnJbLTAcJboDT3JboLb6JbrAnvJbrCn3JbrDl8JbrGboJbrIZoJbrJnvJbrMnvJbrQb4Jb8RZrJeAbAnJgJnFbJgScAnJgrATrJgvHZ8JgvMn4JlJlFbJlLiQXJlLjOnJlRbOlJlvNXoJlvRl3Jl4AcrJl8AUoJl8MnrJnFnMlJnHgGbJnoDT8JnoFV8JnoGgvJnoIT8JnoQToJnoRg3JnrCZ3JnrGgrJnrHTvJnrLf8JnrOX8JnvAT3JnvFZoJnvGT8JnvJl4JnvMT8JnvMX8JnvOXrJnvPX6JnvSX3JnvSZrJn3MT8Jn3MX8Jn3RTrLTATKnLTJnLTLTMXKnLTRTQlLToGb8LTrAZ8LTrCZ8LTrDb8LTrHT8LT3PX6LT4FZoLT$CTvLT$GgrLUvHX3LVoATrLVoAgoLVoJboLVoMX3LVoRg3LV8CZ3LV8FZoLV8GTvLXrDXoLXrFbrLXvAgvLXvFlrLXvLl3LXvRn6LX4Mb8LX8GT8LYCXMnLYrMnrLZoSTvLZrAZvLZrAloLZrFToLZrJXvLZrJboLZrJl4LZrLnrLZrMT8LZrOgvLZrRnvLZrST4LZvMX8LZvSlvLZ8AgoLZ8CT3LZ8JT8LZ8LV8LZ8LZoLZ8Lg8LZ8SV8LZ8SbrLZ$HT8LZ$Mn4La6CTvLbFbMnLbRYFTLbSnFZLboJT8LbrAT9LbrGb3LbrQb8LcrJX8LcrMXrLerHTvLerJbrLerNboLgrDb8LgrGZ8LgrHTrLgrMXrLgrSU8LgvJTrLgvLl3Lg6Ll3LhrLnrLhrMT8LhvAl4LiLnQXLkoAgrLkoJT8LkoJn4LlrSU8Ll3FZoLl3HTrLl3JX8Ll3JnoLl3LToLmLeFbLnDUFbLnLVAnLnrATrLnrAZoLnrAb8LnrAlrLnrGgvLnrJU8LnrLZrLnrLhrLnrMb8LnrOXrLnrSZ8LnvAb4LnvDTrLnvDl8LnvHTrLnvHbrLnvJT8LnvJU8LnvJbrLnvLhvLnvMX8LnvMb8LnvNnoLnvSU8Ln3Al3Ln4FZoLn4GT6Ln4JgvLn4LhrLn4MT8Ln4SToMToCZrMToJX8MToLX4MToLf8MToRg3MTrEloMTvGb6MT3BTrMT3Lb6MT8AcrMT8AgrMT8GZrMT8JnoMT8LnrMT8MX3MUOUAnMXAbFnMXoAloMXoJX8MXoLf8MXoLl8MXrAb8MXrDTvMXrGT8MXrGgrMXrHTrMXrLf8MXrMU8MXrOXvMXrQb8MXvGT8MXvHTrMXvLVoMX3AX3MX3Jn3MX3LhrMX3MX3MX4AlrMX4OboMX8GTvMX8GZrMX8GgrMX8JT8MX8JX8MX8LhrMX8MT8MYDUFbMYMgDbMbGnFfMbvLX4MbvLl3Mb8Mb8Mb8ST4MgGXCnMg8ATrMg8AgoMg8CZrMg8DTrMg8DboMg8HTrMg8JgrMg8LT8MloJXoMl8AhrMl8JT8MnLgAUMnoJXrMnoLX4MnoLhrMnoMT8MnrAl4MnrDb8MnrOTvMnrOgvMnrQb8MnrSU8MnvGgrMnvHZ8Mn3MToMn4DTrMn4LTrMn4Mg8NnBXAnOTFTFnOToAToOTrGgvOTrJX8OT3JXoOT6MTrOT8GgrOT8HTpOT8MToOUoHT8OUoJT8OUoLn3OXrAgoOXrDg8OXrMT8OXvSToOX6CTvOX8CZrOX8OgrOb6HgvOb8AToOb8MT8OcvLZ8OgvAlrOgvHTvOgvJTrOgvJnrOgvLZrOgvLn4OgvMT8OgvRTrOg8AZoOg8DbvOnrOXoOnvJn4OnvLhvOnvRTrOn3GgoOn3JnvOn6JbvOn8OTrPTGYFTPbBnFnPbGnDnPgDYQTPlrAnvPlrETvPlrLnvPlrMXvPlvFX4QTMTAnQTrJU8QYCnJlQYJlQlQbGTQbQb8JnrQb8LZoQb8LnvQb8MT8Qb8Ml8Qb8ST4QloAl4QloHZvQloJX8QloMn8QnJZOlRTrAZvRTrDTrRTvJn4RTvLhvRT4Jb8RZrAZrRZ8AkrRZ8JU8RZ8LV8RZ8LnvRbJlQXRg3GboRg3MnvRg8AZ8Rg8JboRg8Jl4RnLTCbRnvFl3RnvQb8SToAl4SToCZrSToFZoSToHXrSToJU8SToJgvSToJl4SToLhrSToMX3STrAlvSTrCT9STrCgrSTrGgrSTrHXrSTrHboSTrJnoSTrNboSTvLnrST4AZoST8Ab8ST8JT8SUoJn3SU6HZ#SU6JTvSU8Db8SU8HboSU8LgrSV8JT8SZrAcrSZrAl3SZrJT8SZrJnvSZrMT8SZvLUoSZ4FZoSZ8JnoSZ8RZrScoLnrScoMT8ScoMX8ScrAT4ScrAZ8ScrLZ8ScrLkvScvDb8ScvLf8ScvNToSgrFZrShvKnrSloHUoSloLnrSlrMXoSl8HgrSmrJUoSn3BX6\",\n \"ATFlOn3ATLgrDYAT4MTAnAT8LTMnAYJnRTrAbGgJnrAbLV8LnAbvNTAnAeFbLg3AgOYMXoAlQbFboAnDboAfAnJgoJTBToDgAnBUJbAl3BboDUAnCTDlvLnCTFTrSnCYoQTLnDTwAbAnDUDTrSnDUHgHgrDX8LXFnDbJXAcrETvLTLnGTFTQbrGTMnGToGT3DUFbGUJlPX3GbQg8LnGboJbFnGb3GgAYGgAg8ScGgMbAXrGgvAbAnGnJTLnvGnvATFgHTDT6ATHTrDlJnHYLnMn8HZrSbJTHZ8LTFnHbFTJUoHgSeMT8HgrLjAnHgvAbAnHlFUrDlHnDgvAnHnHTFT3HnQTGnrJTAaMXvJTGbCn3JTOgrAnJXvAXMnJbMg8SnJbMnRg3Jb8LTMnJnAl3OnJnGYrQlJnJlQY3LTDlCn3LTJjLg3LTLgvFXLTMg3GTLV8HUOgLXFZLg3LXNXrMnLX8QXFnLX9AlMYLYLXPXrLZAbJU8LZDUJU8LZMXrSnLZ$AgFnLaPXrDULbFYrMnLbMn8LXLboJgJgLeFbLg3LgLZrSnLgOYAgoLhrRnJlLkCTrSnLkOnLhrLnFX%AYLnFZoJXLnHTvJbLnLloAbMTATLf8MTHgJn3MTMXrAXMT3MTFnMUITvFnMXFX%AYMXMXvFbMXrFTDbMYAcMX3MbLf8SnMb8JbFnMgMXrMTMgvAXFnMgvGgCmMnAloSnMnFnJTrOXvMXSnOX8HTMnObJT8ScObLZFl3ObMXCZoPTLgrQXPUFnoQXPU3RXJlPX3RkQXPbrJXQlPlrJbFnQUAhrDbQXGnCXvQYLnHlvQbLfLnvRTOgvJbRXJYrQlRYLnrQlRbLnrQlRlFT8JlRlFnrQXSTClCn3STHTrAnSTLZQlrSTMnGTrSToHgGbSTrGTDnSTvGXCnST3HgFbSU3HXAXSbAnJn3SbFT8LnScLfLnv\",\n \"AT3JgJX8AT8FZoSnAT8JgFV8AT8LhrDbAZ8JT8DbAb8GgLhrAb8SkLnvAe8MT8SnAlMYJXLVAl3GYDTvAl3LfLnvBUDTvLl3CTOn3HTrCT3DUGgrCU8MT8AbCbFTrJUoCgrDb8MTDTLV8JX8DTLnLXQlDT8LZrSnDUQb8FZ8DUST4JnvDb8ScOUoDj6GbJl4GTLfCYMlGToAXvFnGboAXvLnGgAcrJn3GgvFnSToGnLf8JnvGn#HTDToHTLnFXJlHTvATFToHTvHTDToHTvMTAgoHT3STClvHT4AlFl6HT8HTDToHUoDgJTrHUoScMX3HbRZrMXoHboJg8LTHgDb8JTrHgMToLf8HgvLnLnoHnHn3HT4Hn6MgvAnJTJU8ScvJT3AaQT8JT8HTrAnJXrRg8AnJbAloMXoJbrATFToJbvMnoSnJgDb6GgvJgDb8MXoJgSX3JU8JguATFToJlPYLnQlJlQkDnLbJlQlFYJlJl8Lf8OTJnCTFnLbJnLTHXMnJnLXGXCnJnoFfRg3JnrMYRg3Jn3HgFl3KT8Dg8LnLTRlFnPTLTvPbLbvLVoSbrCZLXMY6HT3LXNU7DlrLXNXDTATLX8DX8LnLZDb8JU8LZMnoLhrLZSToJU8LZrLaLnrLZvJn3SnLZ8LhrSnLaJnoMT8LbFlrHTvLbrFTLnrLbvATLlvLb6OTFn3LcLnJZOlLeAT6Mn4LeJT3ObrLg6LXFlrLhrJg8LnLhvDlPX4LhvLfLnvLj6JTFT3LnFbrMXoLnQluCTvLnrQXCY6LnvLfLnvLnvMgLnvLnvSeLf8MTMbrJn3MT3JgST3MT8AnATrMT8LULnrMUMToCZrMUScvLf8MXoDT8SnMX6ATFToMX8AXMT8MX8FkMT8MX8HTrDUMX8ScoSnMYJT6CTvMgAcrMXoMg8SToAfMlvAXLg3MnFl3AnvOT3AnFl3OUoATHT8OU3RnLXrOXrOXrSnObPbvFn6Og8HgrSnOg8OX8DbPTvAgoJgPU3RYLnrPXrDnJZrPb8CTGgvPlrLTDlvPlvFUJnoQUvFXrQlQeMnoAl3QlrQlrSnRTFTrJUoSTDlLiLXSTFg6HT3STJgoMn4STrFTJTrSTrLZFl3ST4FnMXoSUrDlHUoScvHTvSnSfLkvMXo\",\n \"AUoAcrMXoAZ8HboAg8AbOg6ATFgAg8AloMXoAl3AT8JTrAl8MX8MXoCT3SToJU8Cl8Db8MXoDT8HgrATrDboOT8MXoGTOTrATMnGT8LhrAZ8GnvFnGnQXHToGgvAcrHTvAXvLl3HbrAZoMXoHgBlFXLg3HgMnFXrSnHgrSb8JUoHn6HT8LgvITvATrJUoJUoLZrRnvJU8HT8Jb8JXvFX8QT8JXvLToJTrJYrQnGnQXJgrJnoATrJnoJU8ScvJnvMnvMXoLTCTLgrJXLTJlRTvQlLbRnJlQYvLbrMb8LnvLbvFn3RnoLdCVSTGZrLeSTvGXCnLg3MnoLn3MToLlrETvMT8SToAl3MbrDU6GTvMb8LX4LhrPlrLXGXCnSToLf8Rg3STrDb8LTrSTvLTHXMnSb3RYLnMnSgOg6ATFg\",\n \"HUDlGnrQXrJTrHgLnrAcJYMb8DULc8LTvFgGnCk3Mg8JbAnLX4QYvFYHnMXrRUoJnGnvFnRlvFTJlQnoSTrBXHXrLYSUJgLfoMT8Se8DTrHbDb\",\n \"AbDl8SToJU8An3RbAb8ST8DUSTrGnrAgoLbFU6Db8LTrMg8AaHT8Jb8ObDl8SToJU8Pb3RlvFYoJl\"\n]\n\nconst codes = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*\"\n\nfunction getHangul(code: number): string {\n if (code >= 40) {\n code = code + 168 - 40;\n } else if (code >= 19) {\n code = code + 97 - 19;\n }\n\n return toUtf8String([ 225, (code >> 6) + 132, (code & 0x3f) + 128]);\n}\n\nlet wordlist: Array<string> = null;\n\nfunction loadWords(lang: Wordlist): void {\n if (wordlist != null) { return; }\n\n wordlist = [];\n\n data.forEach((data, length) => {\n length += 4;\n for (let i = 0; i < data.length; i += length) {\n let word = \"\";\n for (let j = 0; j < length; j++) {\n word += getHangul(codes.indexOf(data[i + j]));\n }\n wordlist.push(word)\n }\n });\n\n wordlist.sort();\n\n // Verify the computed list matches the official list\n /* istanbul ignore if */\n if (Wordlist.check(lang) !== \"0xf9eddeace9c5d3da9c93cf7d3cd38f6a13ed3affb933259ae865714e8a3ae71a\") {\n wordlist = null;\n throw new Error(\"BIP39 Wordlist for ko (Korean) FAILED\");\n }\n}\n\n\nclass LangKo extends Wordlist {\n constructor() {\n super(\"ko\");\n }\n\n getWord(index: number): string {\n loadWords(this);\n return wordlist[index];\n }\n\n getWordIndex(word: string): number {\n loadWords(this);\n return wordlist.indexOf(word);\n }\n}\n\nconst langKo = new LangKo();\nWordlist.register(langKo);\n\nexport { langKo }\n","\"use strict\";\n\nimport { Wordlist } from \"./wordlist\";\n\nconst words = \"AbacoAbbaglioAbbinatoAbeteAbissoAbolireAbrasivoAbrogatoAccadereAccennoAccusatoAcetoneAchilleAcidoAcquaAcreAcrilicoAcrobataAcutoAdagioAddebitoAddomeAdeguatoAderireAdipeAdottareAdulareAffabileAffettoAffissoAffrantoAforismaAfosoAfricanoAgaveAgenteAgevoleAggancioAgireAgitareAgonismoAgricoloAgrumetoAguzzoAlabardaAlatoAlbatroAlberatoAlboAlbumeAlceAlcolicoAlettoneAlfaAlgebraAlianteAlibiAlimentoAllagatoAllegroAllievoAllodolaAllusivoAlmenoAlogenoAlpacaAlpestreAltalenaAlternoAlticcioAltroveAlunnoAlveoloAlzareAmalgamaAmanitaAmarenaAmbitoAmbratoAmebaAmericaAmetistaAmicoAmmassoAmmendaAmmirareAmmonitoAmoreAmpioAmpliareAmuletoAnacardoAnagrafeAnalistaAnarchiaAnatraAncaAncellaAncoraAndareAndreaAnelloAngeloAngolareAngustoAnimaAnnegareAnnidatoAnnoAnnuncioAnonimoAnticipoAnziApaticoAperturaApodeApparireAppetitoAppoggioApprodoAppuntoAprileArabicaArachideAragostaAraldicaArancioAraturaArazzoArbitroArchivioArditoArenileArgentoArgineArgutoAriaArmoniaArneseArredatoArringaArrostoArsenicoArsoArteficeArzilloAsciuttoAscoltoAsepsiAsetticoAsfaltoAsinoAsolaAspiratoAsproAssaggioAsseAssolutoAssurdoAstaAstenutoAsticeAstrattoAtavicoAteismoAtomicoAtonoAttesaAttivareAttornoAttritoAttualeAusilioAustriaAutistaAutonomoAutunnoAvanzatoAvereAvvenireAvvisoAvvolgereAzioneAzotoAzzimoAzzurroBabeleBaccanoBacinoBacoBadessaBadilataBagnatoBaitaBalconeBaldoBalenaBallataBalzanoBambinoBandireBaraondaBarbaroBarcaBaritonoBarlumeBaroccoBasilicoBassoBatostaBattutoBauleBavaBavosaBeccoBeffaBelgioBelvaBendaBenevoleBenignoBenzinaBereBerlinaBetaBibitaBiciBidoneBifidoBigaBilanciaBimboBinocoloBiologoBipedeBipolareBirbanteBirraBiscottoBisestoBisnonnoBisonteBisturiBizzarroBlandoBlattaBollitoBonificoBordoBoscoBotanicoBottinoBozzoloBraccioBradipoBramaBrancaBravuraBretellaBrevettoBrezzaBrigliaBrillanteBrindareBroccoloBrodoBronzinaBrulloBrunoBubboneBucaBudinoBuffoneBuioBulboBuonoBurloneBurrascaBussolaBustaCadettoCaducoCalamaroCalcoloCalesseCalibroCalmoCaloriaCambusaCamerataCamiciaCamminoCamolaCampaleCanapaCandelaCaneCaninoCanottoCantinaCapaceCapelloCapitoloCapogiroCapperoCapraCapsulaCarapaceCarcassaCardoCarismaCarovanaCarrettoCartolinaCasaccioCascataCasermaCasoCassoneCastelloCasualeCatastaCatenaCatrameCautoCavilloCedibileCedrataCefaloCelebreCellulareCenaCenoneCentesimoCeramicaCercareCertoCerumeCervelloCesoiaCespoCetoChelaChiaroChiccaChiedereChimeraChinaChirurgoChitarraCiaoCiclismoCifrareCignoCilindroCiottoloCircaCirrosiCitricoCittadinoCiuffoCivettaCivileClassicoClinicaCloroCoccoCodardoCodiceCoerenteCognomeCollareColmatoColoreColposoColtivatoColzaComaCometaCommandoComodoComputerComuneConcisoCondurreConfermaCongelareConiugeConnessoConoscereConsumoContinuoConvegnoCopertoCopioneCoppiaCopricapoCorazzaCordataCoricatoCorniceCorollaCorpoCorredoCorsiaCorteseCosmicoCostanteCotturaCovatoCratereCravattaCreatoCredereCremosoCrescitaCretaCricetoCrinaleCrisiCriticoCroceCronacaCrostataCrucialeCruscaCucireCuculoCuginoCullatoCupolaCuratoreCursoreCurvoCuscinoCustodeDadoDainoDalmataDamerinoDanielaDannosoDanzareDatatoDavantiDavveroDebuttoDecennioDecisoDeclinoDecolloDecretoDedicatoDefinitoDeformeDegnoDelegareDelfinoDelirioDeltaDemenzaDenotatoDentroDepositoDerapataDerivareDerogaDescrittoDesertoDesiderioDesumereDetersivoDevotoDiametroDicembreDiedroDifesoDiffusoDigerireDigitaleDiluvioDinamicoDinnanziDipintoDiplomaDipoloDiradareDireDirottoDirupoDisagioDiscretoDisfareDisgeloDispostoDistanzaDisumanoDitoDivanoDiveltoDividereDivoratoDobloneDocenteDoganaleDogmaDolceDomatoDomenicaDominareDondoloDonoDormireDoteDottoreDovutoDozzinaDragoDruidoDubbioDubitareDucaleDunaDuomoDupliceDuraturoEbanoEccessoEccoEclissiEconomiaEderaEdicolaEdileEditoriaEducareEgemoniaEgliEgoismoEgregioElaboratoElargireEleganteElencatoElettoElevareElficoElicaElmoElsaElusoEmanatoEmblemaEmessoEmiroEmotivoEmozioneEmpiricoEmuloEndemicoEnduroEnergiaEnfasiEnotecaEntrareEnzimaEpatiteEpilogoEpisodioEpocaleEppureEquatoreErarioErbaErbosoEredeEremitaErigereErmeticoEroeErosivoErranteEsagonoEsameEsanimeEsaudireEscaEsempioEsercitoEsibitoEsigenteEsistereEsitoEsofagoEsortatoEsosoEspansoEspressoEssenzaEssoEstesoEstimareEstoniaEstrosoEsultareEtilicoEtnicoEtruscoEttoEuclideoEuropaEvasoEvidenzaEvitatoEvolutoEvvivaFabbricaFaccendaFachiroFalcoFamigliaFanaleFanfaraFangoFantasmaFareFarfallaFarinosoFarmacoFasciaFastosoFasulloFaticareFatoFavolosoFebbreFecolaFedeFegatoFelpaFeltroFemminaFendereFenomenoFermentoFerroFertileFessuraFestivoFettaFeudoFiabaFiduciaFifaFiguratoFiloFinanzaFinestraFinireFioreFiscaleFisicoFiumeFlaconeFlamencoFleboFlemmaFloridoFluenteFluoroFobicoFocacciaFocosoFoderatoFoglioFolataFolcloreFolgoreFondenteFoneticoFoniaFontanaForbitoForchettaForestaFormicaFornaioForoFortezzaForzareFosfatoFossoFracassoFranaFrassinoFratelloFreccettaFrenataFrescoFrigoFrollinoFrondeFrugaleFruttaFucilataFucsiaFuggenteFulmineFulvoFumanteFumettoFumosoFuneFunzioneFuocoFurboFurgoneFuroreFusoFutileGabbianoGaffeGalateoGallinaGaloppoGamberoGammaGaranziaGarboGarofanoGarzoneGasdottoGasolioGastricoGattoGaudioGazeboGazzellaGecoGelatinaGelsoGemelloGemmatoGeneGenitoreGennaioGenotipoGergoGhepardoGhiaccioGhisaGialloGildaGineproGiocareGioielloGiornoGioveGiratoGironeGittataGiudizioGiuratoGiustoGlobuloGlutineGnomoGobbaGolfGomitoGommoneGonfioGonnaGovernoGracileGradoGraficoGrammoGrandeGrattareGravosoGraziaGrecaGreggeGrifoneGrigioGrinzaGrottaGruppoGuadagnoGuaioGuantoGuardareGufoGuidareIbernatoIconaIdenticoIdillioIdoloIdraIdricoIdrogenoIgieneIgnaroIgnoratoIlareIllesoIllogicoIlludereImballoImbevutoImboccoImbutoImmaneImmersoImmolatoImpaccoImpetoImpiegoImportoImprontaInalareInarcareInattivoIncantoIncendioInchinoIncisivoInclusoIncontroIncrocioIncuboIndagineIndiaIndoleIneditoInfattiInfilareInflittoIngaggioIngegnoIngleseIngordoIngrossoInnescoInodoreInoltrareInondatoInsanoInsettoInsiemeInsonniaInsulinaIntasatoInteroIntonacoIntuitoInumidireInvalidoInveceInvitoIperboleIpnoticoIpotesiIppicaIrideIrlandaIronicoIrrigatoIrrorareIsolatoIsotopoIstericoIstitutoIstriceItaliaIterareLabbroLabirintoLaccaLaceratoLacrimaLacunaLaddoveLagoLampoLancettaLanternaLardosoLargaLaringeLastraLatenzaLatinoLattugaLavagnaLavoroLegaleLeggeroLemboLentezzaLenzaLeoneLepreLesivoLessatoLestoLetteraleLevaLevigatoLiberoLidoLievitoLillaLimaturaLimitareLimpidoLineareLinguaLiquidoLiraLiricaLiscaLiteLitigioLivreaLocandaLodeLogicaLombareLondraLongevoLoquaceLorenzoLotoLotteriaLuceLucidatoLumacaLuminosoLungoLupoLuppoloLusingaLussoLuttoMacabroMacchinaMaceroMacinatoMadamaMagicoMagliaMagneteMagroMaiolicaMalafedeMalgradoMalintesoMalsanoMaltoMalumoreManaManciaMandorlaMangiareManifestoMannaroManovraMansardaMantideManubrioMappaMaratonaMarcireMarettaMarmoMarsupioMascheraMassaiaMastinoMaterassoMatricolaMattoneMaturoMazurcaMeandroMeccanicoMecenateMedesimoMeditareMegaMelassaMelisMelodiaMeningeMenoMensolaMercurioMerendaMerloMeschinoMeseMessereMestoloMetalloMetodoMettereMiagolareMicaMicelioMicheleMicroboMidolloMieleMiglioreMilanoMiliteMimosaMineraleMiniMinoreMirinoMirtilloMiscelaMissivaMistoMisurareMitezzaMitigareMitraMittenteMnemonicoModelloModificaModuloMoganoMogioMoleMolossoMonasteroMoncoMondinaMonetarioMonileMonotonoMonsoneMontatoMonvisoMoraMordereMorsicatoMostroMotivatoMotosegaMottoMovenzaMovimentoMozzoMuccaMucosaMuffaMughettoMugnaioMulattoMulinelloMultiploMummiaMuntoMuovereMuraleMusaMuscoloMusicaMutevoleMutoNababboNaftaNanometroNarcisoNariceNarratoNascereNastrareNaturaleNauticaNaviglioNebulosaNecrosiNegativoNegozioNemmenoNeofitaNerettoNervoNessunoNettunoNeutraleNeveNevroticoNicchiaNinfaNitidoNobileNocivoNodoNomeNominaNordicoNormaleNorvegeseNostranoNotareNotiziaNotturnoNovellaNucleoNullaNumeroNuovoNutrireNuvolaNuzialeOasiObbedireObbligoObeliscoOblioOboloObsoletoOccasioneOcchioOccidenteOccorrereOccultareOcraOculatoOdiernoOdorareOffertaOffrireOffuscatoOggettoOggiOgnunoOlandeseOlfattoOliatoOlivaOlogrammaOltreOmaggioOmbelicoOmbraOmegaOmissioneOndosoOnereOniceOnnivoroOnorevoleOntaOperatoOpinioneOppostoOracoloOrafoOrdineOrecchinoOreficeOrfanoOrganicoOrigineOrizzonteOrmaOrmeggioOrnativoOrologioOrrendoOrribileOrtensiaOrticaOrzataOrzoOsareOscurareOsmosiOspedaleOspiteOssaOssidareOstacoloOsteOtiteOtreOttagonoOttimoOttobreOvaleOvestOvinoOviparoOvocitoOvunqueOvviareOzioPacchettoPacePacificoPadellaPadronePaesePagaPaginaPalazzinaPalesarePallidoPaloPaludePandoroPannelloPaoloPaonazzoPapricaParabolaParcellaParerePargoloPariParlatoParolaPartireParvenzaParzialePassivoPasticcaPataccaPatologiaPattumePavonePeccatoPedalarePedonalePeggioPelosoPenarePendicePenisolaPennutoPenombraPensarePentolaPepePepitaPerbenePercorsoPerdonatoPerforarePergamenaPeriodoPermessoPernoPerplessoPersuasoPertugioPervasoPesatorePesistaPesoPestiferoPetaloPettinePetulantePezzoPiacerePiantaPiattinoPiccinoPicozzaPiegaPietraPifferoPigiamaPigolioPigroPilaPiliferoPillolaPilotaPimpantePinetaPinnaPinoloPioggiaPiomboPiramidePireticoPiritePirolisiPitonePizzicoPlaceboPlanarePlasmaPlatanoPlenarioPochezzaPoderosoPodismoPoesiaPoggiarePolentaPoligonoPollicePolmonitePolpettaPolsoPoltronaPolverePomicePomodoroPontePopolosoPorfidoPorosoPorporaPorrePortataPosaPositivoPossessoPostulatoPotassioPoterePranzoPrassiPraticaPreclusoPredicaPrefissoPregiatoPrelievoPremerePrenotarePreparatoPresenzaPretestoPrevalsoPrimaPrincipePrivatoProblemaProcuraProdurreProfumoProgettoProlungaPromessaPronomePropostaProrogaProtesoProvaPrudentePrugnaPruritoPsichePubblicoPudicaPugilatoPugnoPulcePulitoPulsantePuntarePupazzoPupillaPuroQuadroQualcosaQuasiQuerelaQuotaRaccoltoRaddoppioRadicaleRadunatoRafficaRagazzoRagioneRagnoRamarroRamingoRamoRandagioRantolareRapatoRapinaRappresoRasaturaRaschiatoRasenteRassegnaRastrelloRataRavvedutoRealeRecepireRecintoReclutaReconditoRecuperoRedditoRedimereRegalatoRegistroRegolaRegressoRelazioneRemareRemotoRennaReplicaReprimereReputareResaResidenteResponsoRestauroReteRetinaRetoricaRettificaRevocatoRiassuntoRibadireRibelleRibrezzoRicaricaRiccoRicevereRiciclatoRicordoRicredutoRidicoloRidurreRifasareRiflessoRiformaRifugioRigareRigettatoRighelloRilassatoRilevatoRimanereRimbalzoRimedioRimorchioRinascitaRincaroRinforzoRinnovoRinomatoRinsavitoRintoccoRinunciaRinvenireRiparatoRipetutoRipienoRiportareRipresaRipulireRisataRischioRiservaRisibileRisoRispettoRistoroRisultatoRisvoltoRitardoRitegnoRitmicoRitrovoRiunioneRivaRiversoRivincitaRivoltoRizomaRobaRoboticoRobustoRocciaRocoRodaggioRodereRoditoreRogitoRollioRomanticoRompereRonzioRosolareRospoRotanteRotondoRotulaRovescioRubizzoRubricaRugaRullinoRumineRumorosoRuoloRupeRussareRusticoSabatoSabbiareSabotatoSagomaSalassoSaldaturaSalgemmaSalivareSalmoneSaloneSaltareSalutoSalvoSapereSapidoSaporitoSaracenoSarcasmoSartoSassosoSatelliteSatiraSatolloSaturnoSavanaSavioSaziatoSbadiglioSbalzoSbancatoSbarraSbattereSbavareSbendareSbirciareSbloccatoSbocciatoSbrinareSbruffoneSbuffareScabrosoScadenzaScalaScambiareScandaloScapolaScarsoScatenareScavatoSceltoScenicoScettroSchedaSchienaSciarpaScienzaScindereScippoSciroppoScivoloSclerareScodellaScolpitoScompartoSconfortoScoprireScortaScossoneScozzeseScribaScrollareScrutinioScuderiaScultoreScuolaScuroScusareSdebitareSdoganareSeccaturaSecondoSedanoSeggiolaSegnalatoSegregatoSeguitoSelciatoSelettivoSellaSelvaggioSemaforoSembrareSemeSeminatoSempreSensoSentireSepoltoSequenzaSerataSerbatoSerenoSerioSerpenteSerraglioServireSestinaSetolaSettimanaSfaceloSfaldareSfamatoSfarzosoSfaticatoSferaSfidaSfilatoSfingeSfocatoSfoderareSfogoSfoltireSforzatoSfrattoSfruttatoSfuggitoSfumareSfusoSgabelloSgarbatoSgonfiareSgorbioSgrassatoSguardoSibiloSiccomeSierraSiglaSignoreSilenzioSillabaSimboloSimpaticoSimulatoSinfoniaSingoloSinistroSinoSintesiSinusoideSiparioSismaSistoleSituatoSlittaSlogaturaSlovenoSmarritoSmemoratoSmentitoSmeraldoSmilzoSmontareSmottatoSmussatoSnellireSnervatoSnodoSobbalzoSobrioSoccorsoSocialeSodaleSoffittoSognoSoldatoSolenneSolidoSollazzoSoloSolubileSolventeSomaticoSommaSondaSonettoSonniferoSopireSoppesoSopraSorgereSorpassoSorrisoSorsoSorteggioSorvolatoSospiroSostaSottileSpadaSpallaSpargereSpatolaSpaventoSpazzolaSpecieSpedireSpegnereSpelaturaSperanzaSpessoreSpettraleSpezzatoSpiaSpigolosoSpillatoSpinosoSpiraleSplendidoSportivoSposoSprangaSprecareSpronatoSpruzzoSpuntinoSquilloSradicareSrotolatoStabileStaccoStaffaStagnareStampatoStantioStarnutoStaseraStatutoSteloSteppaSterzoStilettoStimaStirpeStivaleStizzosoStonatoStoricoStrappoStregatoStriduloStrozzareStruttoStuccareStufoStupendoSubentroSuccosoSudoreSuggeritoSugoSultanoSuonareSuperboSupportoSurgelatoSurrogatoSussurroSuturaSvagareSvedeseSveglioSvelareSvenutoSveziaSviluppoSvistaSvizzeraSvoltaSvuotareTabaccoTabulatoTacciareTaciturnoTaleTalismanoTamponeTanninoTaraTardivoTargatoTariffaTarpareTartarugaTastoTatticoTavernaTavolataTazzaTecaTecnicoTelefonoTemerarioTempoTemutoTendoneTeneroTensioneTentacoloTeoremaTermeTerrazzoTerzettoTesiTesseratoTestatoTetroTettoiaTifareTigellaTimbroTintoTipicoTipografoTiraggioTiroTitanioTitoloTitubanteTizioTizzoneToccareTollerareToltoTombolaTomoTonfoTonsillaTopazioTopologiaToppaTorbaTornareTorroneTortoraToscanoTossireTostaturaTotanoTraboccoTracheaTrafilaTragediaTralcioTramontoTransitoTrapanoTrarreTraslocoTrattatoTraveTrecciaTremolioTrespoloTributoTrichecoTrifoglioTrilloTrinceaTrioTristezzaTrituratoTrivellaTrombaTronoTroppoTrottolaTrovareTruccatoTubaturaTuffatoTulipanoTumultoTunisiaTurbareTurchinoTutaTutelaUbicatoUccelloUccisoreUdireUditivoUffaUfficioUgualeUlisseUltimatoUmanoUmileUmorismoUncinettoUngereUnghereseUnicornoUnificatoUnisonoUnitarioUnteUovoUpupaUraganoUrgenzaUrloUsanzaUsatoUscitoUsignoloUsuraioUtensileUtilizzoUtopiaVacanteVaccinatoVagabondoVagliatoValangaValgoValicoVallettaValorosoValutareValvolaVampataVangareVanitosoVanoVantaggioVanveraVaporeVaranoVarcatoVarianteVascaVedettaVedovaVedutoVegetaleVeicoloVelcroVelinaVellutoVeloceVenatoVendemmiaVentoVeraceVerbaleVergognaVerificaVeroVerrucaVerticaleVescicaVessilloVestaleVeteranoVetrinaVetustoViandanteVibranteVicendaVichingoVicinanzaVidimareVigiliaVignetoVigoreVileVillanoViminiVincitoreViolaViperaVirgolaVirologoVirulentoViscosoVisioneVispoVissutoVisuraVitaVitelloVittimaVivandaVividoViziareVoceVogaVolatileVolereVolpeVoragineVulcanoZampognaZannaZappatoZatteraZavorraZefiroZelanteZeloZenzeroZerbinoZibettoZincoZirconeZittoZollaZoticoZuccheroZufoloZuluZuppa\";\n\nlet wordlist: Array<string> = null;\n\nfunction loadWords(lang: Wordlist): void {\n if (wordlist != null) { return; }\n wordlist = words.replace(/([A-Z])/g, \" $1\").toLowerCase().substring(1).split(\" \");\n\n // Verify the computed list matches the official list\n /* istanbul ignore if */\n if (Wordlist.check(lang) !== \"0x5c1362d88fd4cf614a96f3234941d29f7d37c08c5292fde03bf62c2db6ff7620\") {\n wordlist = null;\n throw new Error(\"BIP39 Wordlist for it (Italian) FAILED\");\n }\n}\n\nclass LangIt extends Wordlist {\n constructor() {\n super(\"it\");\n }\n\n getWord(index: number): string {\n loadWords(this);\n return wordlist[index];\n }\n\n getWordIndex(word: string): number {\n loadWords(this);\n return wordlist.indexOf(word);\n }\n}\n\nconst langIt = new LangIt();\nWordlist.register(langIt);\n\nexport { langIt }\n","\"use strict\";\n\nimport { toUtf8String } from \"@ethersproject/strings\";\n\nimport { Wordlist } from \"./wordlist\";\n\n\nconst data = \"}aE#4A=Yv&co#4N#6G=cJ&SM#66|/Z#4t&kn~46#4K~4q%b9=IR#7l,mB#7W_X2*dl}Uo~7s}Uf&Iw#9c&cw~6O&H6&wx&IG%v5=IQ~8a&Pv#47$PR&50%Ko&QM&3l#5f,D9#4L|/H&tQ;v0~6n]nN<di,AM=W5%QO&ka&ua,hM^tm=zV=JA=wR&+X]7P&NB#4J#5L|/b[dA}tJ<Do&6m&u2[U1&Kb.HM&mC=w0&MW<rY,Hq#6M}QG,13&wP}Jp]Ow%ue&Kg<HP<D9~4k~9T&I2_c6$9T#9/[C5~7O~4a=cs&O7=KK=An&l9$6U$8A&uD&QI|/Y&bg}Ux&F2#6b}E2&JN&kW&kp=U/&bb=Xl<Cj}k+~5J#6L&5z&9i}b4&Fo,ho(X0_g3~4O$Fz&QE<HN=Ww]6/%GF-Vw=tj&/D&PN#9g=YO}cL&Of&PI~5I&Ip=vU=IW#9G;0o-wU}ss&QR<BT&R9=tk$PY_dh&Pq-yh]7T,nj.Xu=EP&76=cI&Fs*Xg}z7$Gb&+I=DF,AF=cA}rL#7j=Dz&3y<Aa$52=PQ}b0(iY$Fa}oL&xV#6U=ec=WZ,xh%RY<dp#9N&Fl&44=WH*A7=sh&TB&8P=07;u+&PK}uh}J5#72)V/=xC,AB$k0&f6;1E|+5=1B,3v]6n&wR%b+&xx]7f=Ol}fl;+D^wG]7E;nB;uh^Ir&l5=JL,nS=cf=g5;u6|/Q$Gc=MH%Hg#5d%M6^86=U+$Gz,l/,ir^5y&Ba&/F-IY&FI&be%IZ#77&PW_Nu$kE(Yf&NX]7Z,Jy&FJ(Xo&Nz#/d=y7&MX<Ag}Z+;nE]Dt(iG#4D=13&Pj~4c%v8&Zo%OL&/X#4W<HR&ie~6J_1O(Y2=y5=Ad*cv_eB#6k&PX:BU#7A;uk&Ft&Fx_dD=U2;vB=U5=4F}+O&GN.HH:9s=b0%NV(jO&IH=JT}Z9=VZ<Af,Kx^4m&uJ%c6,6r;9m#+L}cf%Kh&F3~4H=vP}bu,Hz|++,1w]nv}k6;uu$jw*Kl*WX&uM[x7&Fr[m7$NO&QN]hu=JN}nR^8g#/h(ps|KC;vd}xz=V0}p6&FD$G1#7K<bG_4p~8g&cf;u4=tl}+k%5/}fz;uw<cA=u1}gU}VM=LJ=eX&+L&Pr#4U}p2:nC,2K]7H:jF&9x}uX#9O=MB<fz~8X~5m&4D&kN&u5%E/(h7(ZF&VG<de(qM|/e-Wt=3x(a+,/R]f/&ND$Ro&nU}0g=KA%kH&NK$Ke<dS}cB&IX~5g$TN]6m=Uv,Is&Py=Ef%Kz#+/%bi&+A<F4$OG&4C&FL#9V<Zk=2I_eE&6c]nw&kq$HG}y+&A8$P3}OH=XP]70%IS(AJ_gH%GZ&tY&AZ=vb~6y&/r=VI=Wv<Zi=fl=xf&eL}c8}OL=MJ=g8$F7=YT}9u=0+^xC}JH&nL^N0~4T]K2,Cy%OC#6s;vG(AC^xe^cG&MF}Br#9P;wD-7h$O/&xA}Fn^PC]6i]7G&8V$Qs;vl(TB~73~4l<mW&6V=2y&uY&+3)aP}XF;LP&kx$wU=t7;uy<FN&lz)7E=Oo*Y+;wI}9q}le;J6&Ri&4t&Qr#8B=cb&vG=J5|Ql(h5<Yy~4+}QD,Lx=wn%K/&RK=dO&Pw,Q9=co%4u;9u}g0@6a^4I%b0=zo|/c&tX=dQ=OS#+b=yz_AB&wB&Pm=W9$HP_gR=62=AO=ti=hI,oA&jr&dH=tm&b6$P2(x8=zi;nG~7F;05]0n[Ix&3m}rg=Xp=cd&uz]7t;97=cN;vV<jf&FF&F1=6Q&Ik*Kk&P4,2z=fQ]7D&3u,H0=d/}Uw<ZN<7R}Kv;0f$H7,MD]7n$F0#88~9Z%da=by;+T#/u=VF&fO&kr^kf<AB]sU,I5$Ng&Pz;0i&QD&vM=Yl:BM;nJ_xJ]U7&Kf&30,3f|Z9*dC)je_jA&Q4&Kp$NH(Yz#6S&Id%Ib=KX,AD=KV%dP}tW&Pk^+E_Ni=cq,3R}VZ(Si=b+}rv;0j}rZ]uA,/w(Sx&Jv$w9&4d&wE,NJ$Gy=J/]Ls#7k<ZQ<Y/&uj]Ov$PM;v3,2F&+u:up=On&3e,Jv;90=J+&Qm]6q}bK#+d~8Y(h2]hA;99&AS=I/}qB&dQ}yJ-VM}Vl&ui,iB&G3|Dc]7d=eQ%dX%JC_1L~4d^NP;vJ&/1)ZI#7N]9X[bQ&PL=0L(UZ,Lm&kc&IR}n7(iR<AQ<dg=33=vN}ft}au]7I,Ba=x9=dR~6R&Tq=Xi,3d$Nr&Bc}DI&ku&vf]Dn,/F&iD,Ll&Nw=0y&I7=Ls=/A&tU=Qe}Ua&uk&+F=g4=gh=Vj#+1&Qn}Uy*44#5F,Pc&Rz*Xn=oh=5W;0n_Nf(iE<Y7=vr=Zu]oz#5Z%mI=kN=Bv_Jp(T2;vt_Ml<FS&uI=L/&6P]64$M7}86<bo%QX(SI%IY&VK=Al&Ux;vv;ut*E/%uh<ZE|O3,M2(yc]yu=Wk&tp:Ex}hr,Cl&WE)+Z=8U}I2_4Q,hA_si=iw=OM=tM=yZ%Ia=U7;wT}b+;uo=Za}yS!5x}HD}fb#5O_dA;Nv%uB(yB;01(Sf}Fk;v7}Pt#8v<mZ#7L,/r&Pl~4w&f5=Ph$Fw_LF&8m,bL=yJ&BH}p/*Jn}tU~5Q;wB(h6]Df]8p^+B;E4&Wc=d+;Ea&bw$8C&FN,DM=Yf}mP~5w=fT#6V=mC=Fi=AV}jB&AN}lW}aH#/D)dZ;hl;vE}/7,CJ;31&w8,hj%u9_Js=jJ&4M~8k=TN&eC}nL&uc-wi&lX}dj=Mv=e2#6u=cr$uq$6G]8W}Jb:nm=Yg<b3(UA;vX&6n&xF=KT,jC,De&R8&oY=Zv&oB]7/=Z2&Oa}bf,hh(4h^tZ&72&Nx;D2&xL~5h~40)ZG)h+=OJ&RA]Bv$yB=Oq=df,AQ%Jn}OJ;11,3z&Tl&tj;v+^Hv,Dh(id=s+]7N&N3)9Q~8f,S4=uW=w4&uX,LX&3d]CJ&yp&8x<b2_do&lP=y/<cy_dG=Oi=7R(VH(lt_1T,Iq_AA;12^6T%k6#8K[B1{oO<AU[Bt;1b$9S&Ps<8T=St{bY,jB(Zp&63&Uv$9V,PM]6v&Af}zW[bW_oq}sm}nB&Kq&gC&ff_eq_2m&5F&TI}rf}Gf;Zr_z9;ER&jk}iz_sn<BN~+n&vo=Vi%97|ZR=Wc,WE&6t]6z%85(ly#84=KY)6m_5/=aX,N3}Tm&he&6K]tR_B2-I3;u/&hU&lH<AP=iB&IA=XL;/5&Nh=wv<BH#79=vS=zl<AA=0X_RG}Bw&9p$NW,AX&kP_Lp&/Z(Tc]Mu}hs#6I}5B&cI<bq&H9#6m=K9}vH(Y1(Y0#4B&w6,/9&gG<bE,/O=zb}I4_l8<B/;wL%Qo<HO[Mq=XX}0v&BP&F4(mG}0i}nm,EC=9u{I3,xG&/9=JY*DK&hR)BX=EI=cx=b/{6k}yX%A+&wa}Xb=la;wi^lL;0t}jo&Qb=xg=XB}iO<qo{bR=NV&8f=a0&Jy;0v=uK)HK;vN#6h&jB(h/%ud&NI%wY.X7=Pt}Cu-uL&Gs_hl%mH,tm]78=Lb^Q0#7Y=1u<Bt&+Q=Co_RH,w3;1e}ux<aU;ui}U3&Q5%bt]63&UQ|0l&uL}O7&3o,AV&dm|Nj(Xt*5+(Uu&Hh(p7(UF=VR=Bp^Jl&Hd[ix)9/=Iq]C8<67]66}mB%6f}bb}JI]8T$HA}db=YM&pa=2J}tS&Y0=PS&y4=cX$6E,hX,XP&nR;04,FQ&l0&Vm_Dv#5Y~8Z=Bi%MA]6x=JO:+p,Az&9q,Hj~6/}SD=K1:EJ}nA;Qo#/E]9R,Ie&6X%W3]61&v4=xX_MC=0q;06(Xq=fs}IG}Dv=0l}o7$iZ;9v&LH&DP-7a&OY,SZ,Kz,Cv&dh=fx|Nh,F/~7q=XF&w+;9n&Gw;0h}Z7<7O&JK(S7&LS<AD<ac=wo<Dt&zw%4B=4v#8P;9o~6p*vV=Tm,Or&I6=1q}nY=P0=gq&Bl&Uu,Ch%yb}UY=zh}dh}rl(T4_xk(YA#8R*xH,IN}Jn]7V}C4&Ty}j3]7p=cL=3h&wW%Qv<Z3=f0&RI&+S(ic_zq}oN&/Y=z1;Td=LW=0e=OI(Vc,+b^ju(UL;0r:Za%8v=Rp=zw&58&73&wK}qX]6y&8E)a2}WR=wP^ur&nQ<cH}Re=Aq&wk}Q0&+q=PP,Gc|/d^k5,Fw]8Y}Pg]p3=ju=ed}r5_yf&Cs]7z$/G<Cm&Jp&54_1G_gP_Ll}JZ;0u]k8_7k(Sg]65{9i=LN&Sx&WK,iW&fD&Lk{9a}Em-9c#8N&io=sy]8d&nT&IK(lx#7/$lW(Td<s8~49,3o<7Y=MW(T+_Jr&Wd,iL}Ct=xh&5V;v4&8n%Kx=iF&l2_0B{B+,If(J0,Lv;u8=Kx-vB=HC&vS=Z6&fU&vE^xK;3D=4h=MR#45:Jw;0d}iw=LU}I5=I0]gB*im,K9}GU,1k_4U&Tt=Vs(iX&lU(TF#7y,ZO}oA&m5#5P}PN}Uz=hM<B1&FB<aG,e6~7T<tP(UQ_ZT=wu&F8)aQ]iN,1r_Lo&/g:CD}84{J1_Ki&Na&3n$jz&FE=dc;uv;va}in}ll=fv(h1&3h}fp=Cy}BM(+E~8m}lo%v7=hC(T6$cj=BQ=Bw(DR,2j=Ks,NS|F+;00=fU=70}Mb(YU;+G&m7&hr=Sk%Co]t+(X5_Jw}0r}gC(AS-IP&QK<Z2#8Q$WC]WX}T2&pG_Ka,HC=R4&/N;Z+;ch(C7,D4$3p_Mk&B2$8D=n9%Ky#5z(CT&QJ#7B]DC]gW}nf~5M;Iw#80}Tc_1F#4Z-aC}Hl=ph=fz,/3=aW}JM}nn;DG;vm}wn,4P}T3;wx&RG$u+}zK=0b;+J_Ek{re<aZ=AS}yY#5D]7q,Cp}xN=VP*2C}GZ}aG~+m_Cs=OY#6r]6g<GS}LC(UB=3A=Bo}Jy<c4}Is;1P<AG}Op<Z1}ld}nS=1Z,yM&95&98=CJ(4t:2L$Hk=Zo}Vc;+I}np&N1}9y=iv}CO*7p=jL)px]tb^zh&GS&Vl%v/;vR=14=zJ&49|/f]hF}WG;03=8P}o/&Gg&rp;DB,Kv}Ji&Pb;aA^ll(4j%yt}+K$Ht#4y&hY]7Y<F1,eN}bG(Uh%6Z]t5%G7;+F_RE;it}tL=LS&Da=Xx(S+(4f=8G=yI}cJ}WP=37=jS}pX}hd)fp<A8=Jt~+o$HJ=M6}iX=g9}CS=dv=Cj(mP%Kd,xq|+9&LD(4/=Xm&QP=Lc}LX&fL;+K=Op(lu=Qs.qC:+e&L+=Jj#8w;SL]7S(b+#4I=c1&nG_Lf&uH;+R)ZV<bV%B/,TE&0H&Jq&Ah%OF&Ss(p2,Wv&I3=Wl}Vq;1L&lJ#9b_1H=8r=b8=JH(SZ=hD=J2#7U,/U#/X~6P,FU<eL=jx,mG=hG=CE&PU=Se(qX&LY=X6=y4&tk&QQ&tf=4g&xI}W+&mZ=Dc#7w}Lg;DA;wQ_Kb(cJ=hR%yX&Yb,hw{bX_4X;EP;1W_2M}Uc=b5(YF,CM&Tp^OJ{DD]6s=vF=Yo~8q}XH}Fu%P5(SJ=Qt;MO]s8<F3&B3&8T(Ul-BS*dw&dR<87}/8]62$PZ]Lx<Au}9Q]7c=ja=KR,Go,Us&v6(qk}pG&G2=ev^GM%w4&H4]7F&dv]J6}Ew:9w=sj-ZL}Ym$+h(Ut(Um~4n=Xs(U7%eE=Qc_JR<CA#6t<Fv|/I,IS,EG<F2(Xy$/n<Fa(h9}+9_2o&N4#7X<Zq|+f_Dp=dt&na,Ca=NJ)jY=8C=YG=s6&Q+<DO}D3=xB&R1(lw;Qn<bF(Cu|/B}HV=SS&n7,10&u0]Dm%A6^4Q=WR(TD=Xo<GH,Rj(l8)bP&n/=LM&CF,F5&ml=PJ;0k=LG=tq,Rh,D6@4i=1p&+9=YC%er_Mh;nI;0q=Fw]80=xq=FM$Gv;v6&nc;wK%H2&Kj;vs,AA=YP,66}bI(qR~5U=6q~4b$Ni=K5.X3$So&Iu(p+]8G=Cf=RY(TS_O3(iH&57=fE=Dg_Do#9z#7H;FK{qd_2k%JR}en&gh_z8;Rx}9p<cN_Ne,DO;LN_7o~/p=NF=5Y}gN<ce<C1,QE]Wv=3u<BC}GK]yq}DY&u/_hj=II(pz&rC,jV&+Z}ut=NQ;Cg-SR_ZS,+o=u/;Oy_RK_QF(Fx&xP}Wr&TA,Uh&g1=yr{ax[VF$Pg(YB;Ox=Vy;+W(Sp}XV%dd&33(l/]l4#4Y}OE=6c=bw(A7&9t%wd&N/&mo,JH&Qe)fm=Ao}fu=tH\";\nconst deltaData = \"FAZDC6BALcLZCA+GBARCW8wNCcDDZ8LVFBOqqDUiou+M42TFAyERXFb7EjhP+vmBFpFrUpfDV2F7eB+eCltCHJFWLFCED+pWTojEIHFXc3aFn4F68zqjEuKidS1QBVPDEhE7NA4mhMF7oThD49ot3FgtzHFCK0acW1x8DH1EmLoIlrWFBLE+y5+NA3Cx65wJHTaEZVaK1mWAmPGxgYCdxwOjTDIt/faOEhTl1vqNsKtJCOhJWuio2g07KLZEQsFBUpNtwEByBgxFslFheFbiEPvi61msDvApxCzB6rBCzox7joYA5UdDc+Cb4FSgIabpXFAj3bjkmFAxCZE+mD/SFf/0ELecYCt3nLoxC6WEZf2tKDB4oZvrEmqFkKk7BwILA7gtYBpsTq//D4jD0F0wEB9pyQ1BD5Ba0oYHDI+sbDFhvrHXdDHfgFEIJLi5r8qercNFBgFLC4bo5ERJtamWBDFy73KCEb6M8VpmEt330ygCTK58EIIFkYgF84gtGA9Uyh3m68iVrFbWFbcbqiCYHZ9J1jeRPbL8yswhMiDbhEhdNoSwFbZrLT740ABEqgCkO8J1BLd1VhKKR4sD1yUo0z+FF59Mvg71CFbyEhbHSFBKEIKyoQNgQppq9T0KAqePu0ZFGrXOHdKJqkoTFhYvpDNyuuznrN84thJbsCoO6Cu6Xlvntvy0QYuAExQEYtTUBf3CoCqwgGFZ4u1HJFzDVwEy3cjcpV4QvsPaBC3rCGyCF23o4K3pp2gberGgFEJEHo4nHICtyKH2ZqyxhN05KBBJIQlKh/Oujv/DH32VrlqFdIFC7Fz9Ct4kaqFME0UETLprnN9kfy+kFmtQBB0+5CFu0N9Ij8l/VvJDh2oq3hT6EzjTHKFN7ZjZwoTsAZ4Exsko6Fpa6WC+sduz8jyrLpegTv2h1EBeYpLpm2czQW0KoCcS0bCVXCmuWJDBjN1nQNLdF58SFJ0h7i3pC3oEOKy/FjBklL70XvBEEIWp2yZ04xObzAWDDJG7f+DbqBEA7LyiR95j7MDVdDViz2RE5vWlBMv5e4+VfhP3aXNPhvLSynb9O2x4uFBV+3jqu6d5pCG28/sETByvmu/+IJ0L3wb4rj9DNOLBF6XPIODr4L19U9RRofAG6Nxydi8Bki8BhGJbBAJKzbJxkZSlF9Q2Cu8oKqggB9hBArwLLqEBWEtFowy8XK8bEyw9snT+BeyFk1ZCSrdmgfEwFePTgCjELBEnIbjaDDPJm36rG9pztcEzT8dGk23SBhXBB1H4z+OWze0ooFzz8pDBYFvp9j9tvFByf9y4EFdVnz026CGR5qMr7fxMHN8UUdlyJAzlTBDRC28k+L4FB8078ljyD91tUj1ocnTs8vdEf7znbzm+GIjEZnoZE5rnLL700Xc7yHfz05nWxy03vBB9YGHYOWxgMQGBCR24CVYNE1hpfKxN0zKnfJDmmMgMmBWqNbjfSyFCBWSCGCgR8yFXiHyEj+VtD1FB3FpC1zI0kFbzifiKTLm9yq5zFmur+q8FHqjoOBWsBPiDbnCC2ErunV6cJ6TygXFYHYp7MKN9RUlSIS8/xBAGYLzeqUnBF4QbsTuUkUqGs6CaiDWKWjQK9EJkjpkTmNCPYXL\";\n\n// @TODO: Load lazily\n\nconst wordlist: { [key: string]: Array<string> } = {\n zh_cn: null,\n zh_tw: null\n}\n\nconst Checks: { [key: string]: string } = {\n zh_cn: \"0x17bcc4d8547e5a7135e365d1ab443aaae95e76d8230c2782c67305d4f21497a1\",\n zh_tw: \"0x51e720e90c7b87bec1d70eb6e74a21a449bd3ec9c020b01d3a40ed991b60ce5d\"\n}\n\nconst codes = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nconst style = \"~!@#$%^&*_-=[]{}|;:,.()<>?\"\n\nfunction loadWords(lang: Wordlist) {\n if (wordlist[lang.locale] !== null) { return; }\n\n wordlist[lang.locale] = [];\n\n let deltaOffset = 0;\n for (let i = 0; i < 2048; i++) {\n const s = style.indexOf(data[i * 3]);\n const bytes = [\n 228 + (s >> 2),\n 128 + codes.indexOf(data[i * 3 + 1]),\n 128 + codes.indexOf(data[i * 3 + 2]),\n ];\n\n if (lang.locale === \"zh_tw\") {\n const common = s % 4;\n for (let i = common; i < 3; i++) {\n bytes[i] = codes.indexOf(deltaData[deltaOffset++]) + ((i == 0) ? 228: 128);\n }\n }\n\n wordlist[lang.locale].push(toUtf8String(bytes));\n }\n\n // Verify the computed list matches the official list\n /* istanbul ignore if */\n if (Wordlist.check(lang) !== Checks[lang.locale]) {\n wordlist[lang.locale] = null;\n throw new Error(\"BIP39 Wordlist for \" + lang.locale + \" (Chinese) FAILED\");\n }\n}\n\nclass LangZh extends Wordlist {\n constructor(country: string) {\n super(\"zh_\" + country);\n }\n\n getWord(index: number): string {\n loadWords(this);\n return wordlist[this.locale][index];\n }\n\n getWordIndex(word: string): number {\n loadWords(this);\n return wordlist[this.locale].indexOf(word);\n }\n\n split(mnemonic: string): Array<string> {\n mnemonic = mnemonic.replace(/(?:\\u3000| )+/g, \"\");\n return mnemonic.split(\"\");\n }\n}\n\nconst langZhCn = new LangZh(\"cn\");\nWordlist.register(langZhCn);\nWordlist.register(langZhCn, \"zh\");\n\nconst langZhTw = new LangZh(\"tw\");\nWordlist.register(langZhTw);\n\nexport { langZhCn, langZhTw };\n","import { Wordlist } from \"./wordlist\";\n\nimport { langCz as cz } from \"./lang-cz\";\nimport { langEn as en } from \"./lang-en\";\nimport { langEs as es } from \"./lang-es\";\nimport { langFr as fr } from \"./lang-fr\";\nimport { langJa as ja } from \"./lang-ja\";\nimport { langKo as ko } from \"./lang-ko\";\nimport { langIt as it } from \"./lang-it\";\nimport { langZhCn as zh_cn, langZhTw as zh_tw } from \"./lang-zh\";\n\nexport const wordlists: { [ locale: string ]: Wordlist } = {\n cz: cz,\n en: en,\n es: es,\n fr: fr,\n it: it,\n ja: ja,\n ko: ko,\n zh: zh_cn,\n zh_cn: zh_cn,\n zh_tw: zh_tw\n};\n\n\n","\"use strict\";\n\n// Wordlists\n// See: https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md\n\nimport { logger, Wordlist } from \"./wordlist\";\n\nimport { wordlists } from \"./wordlists\";\n\nexport {\n logger,\n Wordlist,\n wordlists\n}\n","export const version = \"hdnode/5.0.7\";\n","\"use strict\";\n\n// See: https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki\n// See: https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\n\n\nimport { ExternallyOwnedAccount } from \"@ethersproject/abstract-signer\";\nimport { Base58 } from \"@ethersproject/basex\";\nimport { arrayify, BytesLike, concat, hexDataSlice, hexZeroPad, hexlify } from \"@ethersproject/bytes\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from \"@ethersproject/strings\";\nimport { pbkdf2 } from \"@ethersproject/pbkdf2\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { computeHmac, ripemd160, sha256, SupportedAlgorithm } from \"@ethersproject/sha2\";\nimport { computeAddress } from \"@ethersproject/transactions\";\nimport { Wordlist, wordlists } from \"@ethersproject/wordlists\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst N = BigNumber.from(\"0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141\");\n\n\n// \"Bitcoin seed\"\nconst MasterSecret = toUtf8Bytes(\"Bitcoin seed\");\n\nconst HardenedBit = 0x80000000;\n\n// Returns a byte with the MSB bits set\nfunction getUpperMask(bits: number): number {\n return ((1 << bits) - 1) << (8 - bits);\n}\n\n// Returns a byte with the LSB bits set\nfunction getLowerMask(bits: number): number {\n return (1 << bits) - 1;\n}\n\nfunction bytes32(value: BigNumber | Uint8Array): string {\n return hexZeroPad(hexlify(value), 32);\n}\n\nfunction base58check(data: Uint8Array): string {\n return Base58.encode(concat([ data, hexDataSlice(sha256(sha256(data)), 0, 4) ]));\n}\n\nfunction getWordlist(wordlist: string | Wordlist): Wordlist {\n if (wordlist == null) {\n return wordlists[\"en\"];\n }\n\n if (typeof(wordlist) === \"string\") {\n const words = wordlists[wordlist];\n if (words == null) {\n logger.throwArgumentError(\"unknown locale\", \"wordlist\", wordlist);\n }\n return words;\n }\n\n return wordlist;\n}\n\nconst _constructorGuard: any = {};\n\nexport const defaultPath = \"m/44'/60'/0'/0/0\";\n\nexport interface Mnemonic {\n readonly phrase: string;\n readonly path: string;\n readonly locale: string;\n};\n\nexport class HDNode implements ExternallyOwnedAccount {\n readonly privateKey: string;\n readonly publicKey: string;\n\n readonly fingerprint: string;\n readonly parentFingerprint: string;\n\n readonly address: string;\n\n readonly mnemonic?: Mnemonic;\n readonly path: string;\n\n readonly chainCode: string;\n\n readonly index: number;\n readonly depth: number;\n\n /**\n * This constructor should not be called directly.\n *\n * Please use:\n * - fromMnemonic\n * - fromSeed\n */\n constructor(constructorGuard: any, privateKey: string, publicKey: string, parentFingerprint: string, chainCode: string, index: number, depth: number, mnemonicOrPath: Mnemonic | string) {\n logger.checkNew(new.target, HDNode);\n\n /* istanbul ignore if */\n if (constructorGuard !== _constructorGuard) {\n throw new Error(\"HDNode constructor cannot be called directly\");\n }\n\n if (privateKey) {\n const signingKey = new SigningKey(privateKey);\n defineReadOnly(this, \"privateKey\", signingKey.privateKey);\n defineReadOnly(this, \"publicKey\", signingKey.compressedPublicKey);\n } else {\n defineReadOnly(this, \"privateKey\", null);\n defineReadOnly(this, \"publicKey\", hexlify(publicKey));\n }\n\n defineReadOnly(this, \"parentFingerprint\", parentFingerprint);\n defineReadOnly(this, \"fingerprint\", hexDataSlice(ripemd160(sha256(this.publicKey)), 0, 4));\n\n defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n\n defineReadOnly(this, \"chainCode\", chainCode);\n\n defineReadOnly(this, \"index\", index);\n defineReadOnly(this, \"depth\", depth);\n\n if (mnemonicOrPath == null) {\n // From a source that does not preserve the path (e.g. extended keys)\n defineReadOnly(this, \"mnemonic\", null);\n defineReadOnly(this, \"path\", null);\n\n } else if (typeof(mnemonicOrPath) === \"string\") {\n // From a source that does not preserve the mnemonic (e.g. neutered)\n defineReadOnly(this, \"mnemonic\", null);\n defineReadOnly(this, \"path\", mnemonicOrPath);\n\n } else {\n // From a fully qualified source\n defineReadOnly(this, \"mnemonic\", mnemonicOrPath);\n defineReadOnly(this, \"path\", mnemonicOrPath.path);\n }\n }\n\n get extendedKey(): string {\n // We only support the mainnet values for now, but if anyone needs\n // testnet values, let me know. I believe current senitment is that\n // we should always use mainnet, and use BIP-44 to derive the network\n // - Mainnet: public=0x0488B21E, private=0x0488ADE4\n // - Testnet: public=0x043587CF, private=0x04358394\n\n if (this.depth >= 256) { throw new Error(\"Depth too large!\"); }\n\n return base58check(concat([\n ((this.privateKey != null) ? \"0x0488ADE4\": \"0x0488B21E\"),\n hexlify(this.depth),\n this.parentFingerprint,\n hexZeroPad(hexlify(this.index), 4),\n this.chainCode,\n ((this.privateKey != null) ? concat([ \"0x00\", this.privateKey ]): this.publicKey),\n ]));\n }\n\n neuter(): HDNode {\n return new HDNode(_constructorGuard, null, this.publicKey, this.parentFingerprint, this.chainCode, this.index, this.depth, this.path);\n }\n\n private _derive(index: number): HDNode {\n if (index > 0xffffffff) { throw new Error(\"invalid index - \" + String(index)); }\n\n // Base path\n let path = this.path;\n if (path) { path += \"/\" + (index & ~HardenedBit); }\n\n const data = new Uint8Array(37);\n\n if (index & HardenedBit) {\n if (!this.privateKey) {\n throw new Error(\"cannot derive child of neutered node\");\n }\n\n // Data = 0x00 || ser_256(k_par)\n data.set(arrayify(this.privateKey), 1);\n\n // Hardened path\n if (path) { path += \"'\"; }\n\n } else {\n // Data = ser_p(point(k_par))\n data.set(arrayify(this.publicKey));\n }\n\n // Data += ser_32(i)\n for (let i = 24; i >= 0; i -= 8) { data[33 + (i >> 3)] = ((index >> (24 - i)) & 0xff); }\n\n const I = arrayify(computeHmac(SupportedAlgorithm.sha512, this.chainCode, data));\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n\n // The private key\n let ki: string = null\n\n // The public key\n let Ki: string = null;\n\n if (this.privateKey) {\n ki = bytes32(BigNumber.from(IL).add(this.privateKey).mod(N));\n } else {\n const ek = new SigningKey(hexlify(IL));\n Ki = ek._addPoint(this.publicKey);\n }\n\n let mnemonicOrPath: Mnemonic | string = path;\n\n const srcMnemonic = this.mnemonic;\n if (srcMnemonic) {\n mnemonicOrPath = Object.freeze({\n phrase: srcMnemonic.phrase,\n path: path,\n locale: (srcMnemonic.locale || \"en\")\n });\n }\n\n return new HDNode(_constructorGuard, ki, Ki, this.fingerprint, bytes32(IR), index, this.depth + 1, mnemonicOrPath);\n }\n\n derivePath(path: string): HDNode {\n const components = path.split(\"/\");\n\n if (components.length === 0 || (components[0] === \"m\" && this.depth !== 0)) {\n throw new Error(\"invalid path - \" + path);\n }\n\n if (components[0] === \"m\") { components.shift(); }\n\n let result: HDNode = this;\n for (let i = 0; i < components.length; i++) {\n const component = components[i];\n if (component.match(/^[0-9]+'$/)) {\n const index = parseInt(component.substring(0, component.length - 1));\n if (index >= HardenedBit) { throw new Error(\"invalid path index - \" + component); }\n result = result._derive(HardenedBit + index);\n } else if (component.match(/^[0-9]+$/)) {\n const index = parseInt(component);\n if (index >= HardenedBit) { throw new Error(\"invalid path index - \" + component); }\n result = result._derive(index);\n } else {\n throw new Error(\"invalid path component - \" + component);\n }\n }\n\n return result;\n }\n\n\n static _fromSeed(seed: BytesLike, mnemonic: Mnemonic): HDNode {\n const seedArray: Uint8Array = arrayify(seed);\n if (seedArray.length < 16 || seedArray.length > 64) { throw new Error(\"invalid seed\"); }\n\n const I: Uint8Array = arrayify(computeHmac(SupportedAlgorithm.sha512, MasterSecret, seedArray));\n\n return new HDNode(_constructorGuard, bytes32(I.slice(0, 32)), null, \"0x00000000\", bytes32(I.slice(32)), 0, 0, mnemonic);\n }\n\n static fromMnemonic(mnemonic: string, password?: string, wordlist?: string | Wordlist): HDNode {\n\n // If a locale name was passed in, find the associated wordlist\n wordlist = getWordlist(wordlist);\n\n // Normalize the case and spacing in the mnemonic (throws if the mnemonic is invalid)\n mnemonic = entropyToMnemonic(mnemonicToEntropy(mnemonic, wordlist), wordlist);\n\n return HDNode._fromSeed(mnemonicToSeed(mnemonic, password), {\n phrase: mnemonic,\n path: \"m\",\n locale: wordlist.locale\n });\n }\n\n static fromSeed(seed: BytesLike): HDNode {\n return HDNode._fromSeed(seed, null);\n }\n\n static fromExtendedKey(extendedKey: string): HDNode {\n const bytes = Base58.decode(extendedKey);\n\n if (bytes.length !== 82 || base58check(bytes.slice(0, 78)) !== extendedKey) {\n logger.throwArgumentError(\"invalid extended key\", \"extendedKey\", \"[REDACTED]\");\n }\n\n const depth = bytes[4];\n const parentFingerprint = hexlify(bytes.slice(5, 9));\n const index = parseInt(hexlify(bytes.slice(9, 13)).substring(2), 16);\n const chainCode = hexlify(bytes.slice(13, 45));\n const key = bytes.slice(45, 78);\n\n switch (hexlify(bytes.slice(0, 4))) {\n // Public Key\n case \"0x0488b21e\": case \"0x043587cf\":\n return new HDNode(_constructorGuard, null, hexlify(key), parentFingerprint, chainCode, index, depth, null);\n\n // Private Key\n case \"0x0488ade4\": case \"0x04358394 \":\n if (key[0] !== 0) { break; }\n return new HDNode(_constructorGuard, hexlify(key.slice(1)), null, parentFingerprint, chainCode, index, depth, null);\n }\n\n return logger.throwArgumentError(\"invalid extended key\", \"extendedKey\", \"[REDACTED]\");\n }\n}\n\nexport function mnemonicToSeed(mnemonic: string, password?: string): string {\n if (!password) { password = \"\"; }\n\n const salt = toUtf8Bytes(\"mnemonic\" + password, UnicodeNormalizationForm.NFKD);\n\n return pbkdf2(toUtf8Bytes(mnemonic, UnicodeNormalizationForm.NFKD), salt, 2048, 64, \"sha512\");\n}\n\nexport function mnemonicToEntropy(mnemonic: string, wordlist?: string | Wordlist): string {\n wordlist = getWordlist(wordlist);\n\n logger.checkNormalize();\n\n const words = wordlist.split(mnemonic);\n if ((words.length % 3) !== 0) { throw new Error(\"invalid mnemonic\"); }\n\n const entropy = arrayify(new Uint8Array(Math.ceil(11 * words.length / 8)));\n\n let offset = 0;\n for (let i = 0; i < words.length; i++) {\n let index = wordlist.getWordIndex(words[i].normalize(\"NFKD\"));\n if (index === -1) { throw new Error(\"invalid mnemonic\"); }\n\n for (let bit = 0; bit < 11; bit++) {\n if (index & (1 << (10 - bit))) {\n entropy[offset >> 3] |= (1 << (7 - (offset % 8)));\n }\n offset++;\n }\n }\n\n const entropyBits = 32 * words.length / 3;\n\n const checksumBits = words.length / 3;\n const checksumMask = getUpperMask(checksumBits);\n\n const checksum = arrayify(sha256(entropy.slice(0, entropyBits / 8)))[0] & checksumMask;\n\n if (checksum !== (entropy[entropy.length - 1] & checksumMask)) {\n throw new Error(\"invalid checksum\");\n }\n\n return hexlify(entropy.slice(0, entropyBits / 8));\n}\n\nexport function entropyToMnemonic(entropy: BytesLike, wordlist?: string | Wordlist): string {\n wordlist = getWordlist(wordlist);\n\n entropy = arrayify(entropy);\n\n if ((entropy.length % 4) !== 0 || entropy.length < 16 || entropy.length > 32) {\n throw new Error(\"invalid entropy\");\n }\n\n const indices: Array<number> = [ 0 ];\n\n let remainingBits = 11;\n for (let i = 0; i < entropy.length; i++) {\n\n // Consume the whole byte (with still more to go)\n if (remainingBits > 8) {\n indices[indices.length - 1] <<= 8;\n indices[indices.length - 1] |= entropy[i];\n\n remainingBits -= 8;\n\n // This byte will complete an 11-bit index\n } else {\n indices[indices.length - 1] <<= remainingBits;\n indices[indices.length - 1] |= entropy[i] >> (8 - remainingBits);\n\n // Start the next word\n indices.push(entropy[i] & getLowerMask(8 - remainingBits));\n\n remainingBits += 3;\n }\n }\n\n // Compute the checksum bits\n const checksumBits = entropy.length / 4;\n const checksum = arrayify(sha256(entropy))[0] & getUpperMask(checksumBits);\n\n // Shift the checksum into the word indices\n indices[indices.length - 1] <<= checksumBits;\n indices[indices.length - 1] |= (checksum >> (8 - checksumBits));\n\n return wordlist.join(indices.map((index) => (<Wordlist>wordlist).getWord(index)));\n}\n\nexport function isValidMnemonic(mnemonic: string, wordlist?: Wordlist): boolean {\n try {\n mnemonicToEntropy(mnemonic, wordlist);\n return true;\n } catch (error) { }\n return false;\n}\n","export const version = \"random/5.0.6\";\n","\"use strict\";\n\nimport { arrayify } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nlet anyGlobal: any = null;\ntry {\n anyGlobal = (window as any);\n if (anyGlobal == null) { throw new Error(\"try next\"); }\n} catch (error) {\n try {\n anyGlobal = (global as any);\n if (anyGlobal == null) { throw new Error(\"try next\"); }\n } catch (error) {\n anyGlobal = { };\n }\n}\n\nlet crypto: any = anyGlobal.crypto || anyGlobal.msCrypto;\nif (!crypto || !crypto.getRandomValues) {\n\n logger.warn(\"WARNING: Missing strong random number source\");\n\n crypto = {\n getRandomValues: function(buffer: Uint8Array): Uint8Array {\n return logger.throwError(\"no secure random source avaialble\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"crypto.getRandomValues\"\n });\n }\n };\n}\n\nexport function randomBytes(length: number): Uint8Array {\n if (length <= 0 || length > 1024 || (length % 1)) {\n logger.throwArgumentError(\"invalid length\", \"length\", length);\n }\n\n const result = new Uint8Array(length);\n crypto.getRandomValues(result);\n return arrayify(result);\n};\n","\"use strict\";\n\nexport function shuffled(array: Array<any>): Array<any> {\n array = array.slice();\n\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const tmp = array[i];\n array[i] = array[j];\n array[j] = tmp;\n }\n\n return array;\n}\n","\"use strict\";\n\nexport { randomBytes } from \"./random\";\nexport { shuffled } from \"./shuffle\";\n","\"use strict\";\n\n(function(root) {\n\n function checkInt(value) {\n return (parseInt(value) === value);\n }\n\n function checkInts(arrayish) {\n if (!checkInt(arrayish.length)) { return false; }\n\n for (var i = 0; i < arrayish.length; i++) {\n if (!checkInt(arrayish[i]) || arrayish[i] < 0 || arrayish[i] > 255) {\n return false;\n }\n }\n\n return true;\n }\n\n function coerceArray(arg, copy) {\n\n // ArrayBuffer view\n if (arg.buffer && ArrayBuffer.isView(arg) && arg.name === 'Uint8Array') {\n\n if (copy) {\n if (arg.slice) {\n arg = arg.slice();\n } else {\n arg = Array.prototype.slice.call(arg);\n }\n }\n\n return arg;\n }\n\n // It's an array; check it is a valid representation of a byte\n if (Array.isArray(arg)) {\n if (!checkInts(arg)) {\n throw new Error('Array contains invalid value: ' + arg);\n }\n\n return new Uint8Array(arg);\n }\n\n // Something else, but behaves like an array (maybe a Buffer? Arguments?)\n if (checkInt(arg.length) && checkInts(arg)) {\n return new Uint8Array(arg);\n }\n\n throw new Error('unsupported array-like object');\n }\n\n function createArray(length) {\n return new Uint8Array(length);\n }\n\n function copyArray(sourceArray, targetArray, targetStart, sourceStart, sourceEnd) {\n if (sourceStart != null || sourceEnd != null) {\n if (sourceArray.slice) {\n sourceArray = sourceArray.slice(sourceStart, sourceEnd);\n } else {\n sourceArray = Array.prototype.slice.call(sourceArray, sourceStart, sourceEnd);\n }\n }\n targetArray.set(sourceArray, targetStart);\n }\n\n\n\n var convertUtf8 = (function() {\n function toBytes(text) {\n var result = [], i = 0;\n text = encodeURI(text);\n while (i < text.length) {\n var c = text.charCodeAt(i++);\n\n // if it is a % sign, encode the following 2 bytes as a hex value\n if (c === 37) {\n result.push(parseInt(text.substr(i, 2), 16))\n i += 2;\n\n // otherwise, just the actual byte\n } else {\n result.push(c)\n }\n }\n\n return coerceArray(result);\n }\n\n function fromBytes(bytes) {\n var result = [], i = 0;\n\n while (i < bytes.length) {\n var c = bytes[i];\n\n if (c < 128) {\n result.push(String.fromCharCode(c));\n i++;\n } else if (c > 191 && c < 224) {\n result.push(String.fromCharCode(((c & 0x1f) << 6) | (bytes[i + 1] & 0x3f)));\n i += 2;\n } else {\n result.push(String.fromCharCode(((c & 0x0f) << 12) | ((bytes[i + 1] & 0x3f) << 6) | (bytes[i + 2] & 0x3f)));\n i += 3;\n }\n }\n\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n var convertHex = (function() {\n function toBytes(text) {\n var result = [];\n for (var i = 0; i < text.length; i += 2) {\n result.push(parseInt(text.substr(i, 2), 16));\n }\n\n return result;\n }\n\n // http://ixti.net/development/javascript/2011/11/11/base64-encodedecode-of-utf8-in-browser-with-js.html\n var Hex = '0123456789abcdef';\n\n function fromBytes(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i++) {\n var v = bytes[i];\n result.push(Hex[(v & 0xf0) >> 4] + Hex[v & 0x0f]);\n }\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n\n // Number of rounds by keysize\n var numberOfRounds = {16: 10, 24: 12, 32: 14}\n\n // Round constant words\n var rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91];\n\n // S-box and Inverse S-box (S is for Substitution)\n var S = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16];\n var Si =[0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d];\n\n // Transformations for encryption\n var T1 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a];\n var T2 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616];\n var T3 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16];\n var T4 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c];\n\n // Transformations for decryption\n var T5 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742];\n var T6 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857];\n var T7 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8];\n var T8 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0];\n\n // Transformations for decryption key expansion\n var U1 = [0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3];\n var U2 = [0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697];\n var U3 = [0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46];\n var U4 = [0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d];\n\n function convertToInt32(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i += 4) {\n result.push(\n (bytes[i ] << 24) |\n (bytes[i + 1] << 16) |\n (bytes[i + 2] << 8) |\n bytes[i + 3]\n );\n }\n return result;\n }\n\n var AES = function(key) {\n if (!(this instanceof AES)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n Object.defineProperty(this, 'key', {\n value: coerceArray(key, true)\n });\n\n this._prepare();\n }\n\n\n AES.prototype._prepare = function() {\n\n var rounds = numberOfRounds[this.key.length];\n if (rounds == null) {\n throw new Error('invalid key size (must be 16, 24 or 32 bytes)');\n }\n\n // encryption round keys\n this._Ke = [];\n\n // decryption round keys\n this._Kd = [];\n\n for (var i = 0; i <= rounds; i++) {\n this._Ke.push([0, 0, 0, 0]);\n this._Kd.push([0, 0, 0, 0]);\n }\n\n var roundKeyCount = (rounds + 1) * 4;\n var KC = this.key.length / 4;\n\n // convert the key into ints\n var tk = convertToInt32(this.key);\n\n // copy values into round key arrays\n var index;\n for (var i = 0; i < KC; i++) {\n index = i >> 2;\n this._Ke[index][i % 4] = tk[i];\n this._Kd[rounds - index][i % 4] = tk[i];\n }\n\n // key expansion (fips-197 section 5.2)\n var rconpointer = 0;\n var t = KC, tt;\n while (t < roundKeyCount) {\n tt = tk[KC - 1];\n tk[0] ^= ((S[(tt >> 16) & 0xFF] << 24) ^\n (S[(tt >> 8) & 0xFF] << 16) ^\n (S[ tt & 0xFF] << 8) ^\n S[(tt >> 24) & 0xFF] ^\n (rcon[rconpointer] << 24));\n rconpointer += 1;\n\n // key expansion (for non-256 bit)\n if (KC != 8) {\n for (var i = 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n\n // key expansion for 256-bit keys is \"slightly different\" (fips-197)\n } else {\n for (var i = 1; i < (KC / 2); i++) {\n tk[i] ^= tk[i - 1];\n }\n tt = tk[(KC / 2) - 1];\n\n tk[KC / 2] ^= (S[ tt & 0xFF] ^\n (S[(tt >> 8) & 0xFF] << 8) ^\n (S[(tt >> 16) & 0xFF] << 16) ^\n (S[(tt >> 24) & 0xFF] << 24));\n\n for (var i = (KC / 2) + 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n }\n\n // copy values into round key arrays\n var i = 0, r, c;\n while (i < KC && t < roundKeyCount) {\n r = t >> 2;\n c = t % 4;\n this._Ke[r][c] = tk[i];\n this._Kd[rounds - r][c] = tk[i++];\n t++;\n }\n }\n\n // inverse-cipher-ify the decryption round key (fips-197 section 5.3)\n for (var r = 1; r < rounds; r++) {\n for (var c = 0; c < 4; c++) {\n tt = this._Kd[r][c];\n this._Kd[r][c] = (U1[(tt >> 24) & 0xFF] ^\n U2[(tt >> 16) & 0xFF] ^\n U3[(tt >> 8) & 0xFF] ^\n U4[ tt & 0xFF]);\n }\n }\n }\n\n AES.prototype.encrypt = function(plaintext) {\n if (plaintext.length != 16) {\n throw new Error('invalid plaintext size (must be 16 bytes)');\n }\n\n var rounds = this._Ke.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(plaintext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Ke[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T1[(t[ i ] >> 24) & 0xff] ^\n T2[(t[(i + 1) % 4] >> 16) & 0xff] ^\n T3[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T4[ t[(i + 3) % 4] & 0xff] ^\n this._Ke[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Ke[rounds][i];\n result[4 * i ] = (S[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (S[(t[(i + 1) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (S[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (S[ t[(i + 3) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n AES.prototype.decrypt = function(ciphertext) {\n if (ciphertext.length != 16) {\n throw new Error('invalid ciphertext size (must be 16 bytes)');\n }\n\n var rounds = this._Kd.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(ciphertext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Kd[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T5[(t[ i ] >> 24) & 0xff] ^\n T6[(t[(i + 3) % 4] >> 16) & 0xff] ^\n T7[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T8[ t[(i + 1) % 4] & 0xff] ^\n this._Kd[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Kd[rounds][i];\n result[4 * i ] = (Si[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (Si[(t[(i + 3) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (Si[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (Si[ t[(i + 1) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n\n /**\n * Mode Of Operation - Electonic Codebook (ECB)\n */\n var ModeOfOperationECB = function(key) {\n if (!(this instanceof ModeOfOperationECB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Electronic Code Block\";\n this.name = \"ecb\";\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationECB.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n block = this._aes.encrypt(block);\n copyArray(block, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationECB.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n copyArray(block, plaintext, i);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Block Chaining (CBC)\n */\n var ModeOfOperationCBC = function(key, iv) {\n if (!(this instanceof ModeOfOperationCBC)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Block Chaining\";\n this.name = \"cbc\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastCipherblock = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCBC.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n\n for (var j = 0; j < 16; j++) {\n block[j] ^= this._lastCipherblock[j];\n }\n\n this._lastCipherblock = this._aes.encrypt(block);\n copyArray(this._lastCipherblock, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationCBC.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n\n for (var j = 0; j < 16; j++) {\n plaintext[i + j] = block[j] ^ this._lastCipherblock[j];\n }\n\n copyArray(ciphertext, this._lastCipherblock, 0, i, i + 16);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Feedback (CFB)\n */\n var ModeOfOperationCFB = function(key, iv, segmentSize) {\n if (!(this instanceof ModeOfOperationCFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Feedback\";\n this.name = \"cfb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 size)');\n }\n\n if (!segmentSize) { segmentSize = 1; }\n\n this.segmentSize = segmentSize;\n\n this._shiftRegister = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCFB.prototype.encrypt = function(plaintext) {\n if ((plaintext.length % this.segmentSize) != 0) {\n throw new Error('invalid plaintext size (must be segmentSize bytes)');\n }\n\n var encrypted = coerceArray(plaintext, true);\n\n var xorSegment;\n for (var i = 0; i < encrypted.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n for (var j = 0; j < this.segmentSize; j++) {\n encrypted[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(encrypted, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return encrypted;\n }\n\n ModeOfOperationCFB.prototype.decrypt = function(ciphertext) {\n if ((ciphertext.length % this.segmentSize) != 0) {\n throw new Error('invalid ciphertext size (must be segmentSize bytes)');\n }\n\n var plaintext = coerceArray(ciphertext, true);\n\n var xorSegment;\n for (var i = 0; i < plaintext.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n\n for (var j = 0; j < this.segmentSize; j++) {\n plaintext[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(ciphertext, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return plaintext;\n }\n\n /**\n * Mode Of Operation - Output Feedback (OFB)\n */\n var ModeOfOperationOFB = function(key, iv) {\n if (!(this instanceof ModeOfOperationOFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Output Feedback\";\n this.name = \"ofb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastPrecipher = coerceArray(iv, true);\n this._lastPrecipherIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationOFB.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._lastPrecipherIndex === 16) {\n this._lastPrecipher = this._aes.encrypt(this._lastPrecipher);\n this._lastPrecipherIndex = 0;\n }\n encrypted[i] ^= this._lastPrecipher[this._lastPrecipherIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationOFB.prototype.decrypt = ModeOfOperationOFB.prototype.encrypt;\n\n\n /**\n * Counter object for CTR common mode of operation\n */\n var Counter = function(initialValue) {\n if (!(this instanceof Counter)) {\n throw Error('Counter must be instanitated with `new`');\n }\n\n // We allow 0, but anything false-ish uses the default 1\n if (initialValue !== 0 && !initialValue) { initialValue = 1; }\n\n if (typeof(initialValue) === 'number') {\n this._counter = createArray(16);\n this.setValue(initialValue);\n\n } else {\n this.setBytes(initialValue);\n }\n }\n\n Counter.prototype.setValue = function(value) {\n if (typeof(value) !== 'number' || parseInt(value) != value) {\n throw new Error('invalid counter value (must be an integer)');\n }\n\n for (var index = 15; index >= 0; --index) {\n this._counter[index] = value % 256;\n value = value >> 8;\n }\n }\n\n Counter.prototype.setBytes = function(bytes) {\n bytes = coerceArray(bytes, true);\n\n if (bytes.length != 16) {\n throw new Error('invalid counter bytes size (must be 16 bytes)');\n }\n\n this._counter = bytes;\n };\n\n Counter.prototype.increment = function() {\n for (var i = 15; i >= 0; i--) {\n if (this._counter[i] === 255) {\n this._counter[i] = 0;\n } else {\n this._counter[i]++;\n break;\n }\n }\n }\n\n\n /**\n * Mode Of Operation - Counter (CTR)\n */\n var ModeOfOperationCTR = function(key, counter) {\n if (!(this instanceof ModeOfOperationCTR)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Counter\";\n this.name = \"ctr\";\n\n if (!(counter instanceof Counter)) {\n counter = new Counter(counter)\n }\n\n this._counter = counter;\n\n this._remainingCounter = null;\n this._remainingCounterIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCTR.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._remainingCounterIndex === 16) {\n this._remainingCounter = this._aes.encrypt(this._counter._counter);\n this._remainingCounterIndex = 0;\n this._counter.increment();\n }\n encrypted[i] ^= this._remainingCounter[this._remainingCounterIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationCTR.prototype.decrypt = ModeOfOperationCTR.prototype.encrypt;\n\n\n ///////////////////////\n // Padding\n\n // See:https://tools.ietf.org/html/rfc2315\n function pkcs7pad(data) {\n data = coerceArray(data, true);\n var padder = 16 - (data.length % 16);\n var result = createArray(data.length + padder);\n copyArray(data, result);\n for (var i = data.length; i < result.length; i++) {\n result[i] = padder;\n }\n return result;\n }\n\n function pkcs7strip(data) {\n data = coerceArray(data, true);\n if (data.length < 16) { throw new Error('PKCS#7 invalid length'); }\n\n var padder = data[data.length - 1];\n if (padder > 16) { throw new Error('PKCS#7 padding byte out of range'); }\n\n var length = data.length - padder;\n for (var i = 0; i < padder; i++) {\n if (data[length + i] !== padder) {\n throw new Error('PKCS#7 invalid padding byte');\n }\n }\n\n var result = createArray(length);\n copyArray(data, result, 0, 0, length);\n return result;\n }\n\n ///////////////////////\n // Exporting\n\n\n // The block cipher\n var aesjs = {\n AES: AES,\n Counter: Counter,\n\n ModeOfOperation: {\n ecb: ModeOfOperationECB,\n cbc: ModeOfOperationCBC,\n cfb: ModeOfOperationCFB,\n ofb: ModeOfOperationOFB,\n ctr: ModeOfOperationCTR\n },\n\n utils: {\n hex: convertHex,\n utf8: convertUtf8\n },\n\n padding: {\n pkcs7: {\n pad: pkcs7pad,\n strip: pkcs7strip\n }\n },\n\n _arrayTest: {\n coerceArray: coerceArray,\n createArray: createArray,\n copyArray: copyArray,\n }\n };\n\n\n // node.js\n if (typeof exports !== 'undefined') {\n module.exports = aesjs\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define(aesjs);\n\n // Web Browsers\n } else {\n\n // If there was an existing library at \"aesjs\" make sure it's still available\n if (root.aesjs) {\n aesjs._aesjs = root.aesjs;\n }\n\n root.aesjs = aesjs;\n }\n\n\n})(this);\n","export const version = \"json-wallets/5.0.9\";\n","\"use strict\";\n\nimport { arrayify, Bytes, BytesLike, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from '@ethersproject/strings';\n\nexport function looseArrayify(hexString: string): Uint8Array {\n if (typeof(hexString) === 'string' && hexString.substring(0, 2) !== '0x') {\n hexString = '0x' + hexString;\n }\n return arrayify(hexString);\n}\n\nexport function zpad(value: String | number, length: number): String {\n value = String(value);\n while (value.length < length) { value = '0' + value; }\n return value;\n}\n\nexport function getPassword(password: Bytes | string): Uint8Array {\n if (typeof(password) === 'string') {\n return toUtf8Bytes(password, UnicodeNormalizationForm.NFKC);\n }\n return arrayify(password);\n}\n\nexport function searchPath(object: any, path: string): string {\n let currentChild = object;\n\n const comps = path.toLowerCase().split('/');\n for (let i = 0; i < comps.length; i++) {\n\n // Search for a child object with a case-insensitive matching key\n let matchingChild = null;\n for (const key in currentChild) {\n if (key.toLowerCase() === comps[i]) {\n matchingChild = currentChild[key];\n break;\n }\n }\n\n // Didn't find one. :'(\n if (matchingChild === null) {\n return null;\n }\n\n // Now check this child...\n currentChild = matchingChild;\n }\n\n return currentChild;\n}\n\n// See: https://www.ietf.org/rfc/rfc4122.txt (Section 4.4)\nexport function uuidV4(randomBytes: BytesLike): string {\n const bytes = arrayify(randomBytes);\n\n // Section: 4.1.3:\n // - time_hi_and_version[12:16] = 0b0100\n bytes[6] = (bytes[6] & 0x0f) | 0x40;\n\n // Section 4.4\n // - clock_seq_hi_and_reserved[6] = 0b0\n // - clock_seq_hi_and_reserved[7] = 0b1\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n\n const value = hexlify(bytes);\n\n return [\n value.substring(2, 10),\n value.substring(10, 14),\n value.substring(14, 18),\n value.substring(18, 22),\n value.substring(22, 34),\n ].join(\"-\");\n}\n\n","\"use strict\";\n\nimport aes from \"aes-js\";\n\nimport { ExternallyOwnedAccount } from \"@ethersproject/abstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, Bytes } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { pbkdf2 } from \"@ethersproject/pbkdf2\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { Description } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { getPassword, looseArrayify, searchPath } from \"./utils\";\n\nexport interface _CrowdsaleAccount {\n address: string;\n privateKey: string;\n\n _isCrowdsaleAccount: boolean;\n}\n\nexport class CrowdsaleAccount extends Description<_CrowdsaleAccount> implements ExternallyOwnedAccount {\n readonly address: string;\n readonly privateKey: string;\n readonly mnemonic?: string;\n readonly path?: string;\n\n readonly _isCrowdsaleAccount: boolean;\n\n isCrowdsaleAccount(value: any): value is CrowdsaleAccount {\n return !!(value && value._isCrowdsaleAccount);\n }\n}\n\n// See: https://github.com/ethereum/pyethsaletool\nexport function decrypt(json: string, password: Bytes | string): ExternallyOwnedAccount {\n const data = JSON.parse(json);\n\n password = getPassword(password);\n\n // Ethereum Address\n const ethaddr = getAddress(searchPath(data, \"ethaddr\"));\n\n // Encrypted Seed\n const encseed = looseArrayify(searchPath(data, \"encseed\"));\n if (!encseed || (encseed.length % 16) !== 0) {\n logger.throwArgumentError(\"invalid encseed\", \"json\", json);\n }\n\n const key = arrayify(pbkdf2(password, password, 2000, 32, \"sha256\")).slice(0, 16);\n\n const iv = encseed.slice(0, 16);\n const encryptedSeed = encseed.slice(16);\n\n // Decrypt the seed\n const aesCbc = new aes.ModeOfOperation.cbc(key, iv);\n const seed = aes.padding.pkcs7.strip(arrayify(aesCbc.decrypt(encryptedSeed)));\n\n // This wallet format is weird... Convert the binary encoded hex to a string.\n let seedHex = \"\";\n for (let i = 0; i < seed.length; i++) {\n seedHex += String.fromCharCode(seed[i]);\n }\n\n const seedHexBytes = toUtf8Bytes(seedHex);\n\n const privateKey = keccak256(seedHexBytes);\n\n return new CrowdsaleAccount ({\n _isCrowdsaleAccount: true,\n address: ethaddr,\n privateKey: privateKey\n });\n}\n\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\n\n\nexport function isCrowdsaleWallet(json: string): boolean {\n let data: any = null;\n try {\n data = JSON.parse(json);\n } catch (error) { return false; }\n\n return (data.encseed && data.ethaddr);\n}\n\nexport function isKeystoreWallet(json: string): boolean {\n let data: any = null;\n try {\n data = JSON.parse(json);\n } catch (error) { return false; }\n\n if (!data.version || parseInt(data.version) !== data.version || parseInt(data.version) !== 3) {\n return false;\n }\n\n // @TODO: Put more checks to make sure it has kdf, iv and all that good stuff\n return true;\n}\n\n//export function isJsonWallet(json: string): boolean {\n// return (isSecretStorageWallet(json) || isCrowdsaleWallet(json));\n//}\n\nexport function getJsonWalletAddress(json: string): string {\n if (isCrowdsaleWallet(json)) {\n try {\n return getAddress(JSON.parse(json).ethaddr);\n } catch (error) { return null; }\n }\n\n if (isKeystoreWallet(json)) {\n try {\n return getAddress(JSON.parse(json).address);\n } catch (error) { return null; }\n }\n\n return null;\n}\n\n","\"use strict\";\n\n(function(root) {\n const MAX_VALUE = 0x7fffffff;\n\n // The SHA256 and PBKDF2 implementation are from scrypt-async-js:\n // See: https://github.com/dchest/scrypt-async-js\n function SHA256(m) {\n const K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ]);\n\n let h0 = 0x6a09e667, h1 = 0xbb67ae85, h2 = 0x3c6ef372, h3 = 0xa54ff53a;\n let h4 = 0x510e527f, h5 = 0x9b05688c, h6 = 0x1f83d9ab, h7 = 0x5be0cd19;\n const w = new Uint32Array(64);\n\n function blocks(p) {\n let off = 0, len = p.length;\n while (len >= 64) {\n let a = h0, b = h1, c = h2, d = h3, e = h4, f = h5, g = h6, h = h7, u, i, j, t1, t2;\n\n for (i = 0; i < 16; i++) {\n j = off + i*4;\n w[i] = ((p[j] & 0xff)<<24) | ((p[j+1] & 0xff)<<16) |\n ((p[j+2] & 0xff)<<8) | (p[j+3] & 0xff);\n }\n\n for (i = 16; i < 64; i++) {\n u = w[i-2];\n t1 = ((u>>>17) | (u<<(32-17))) ^ ((u>>>19) | (u<<(32-19))) ^ (u>>>10);\n\n u = w[i-15];\n t2 = ((u>>>7) | (u<<(32-7))) ^ ((u>>>18) | (u<<(32-18))) ^ (u>>>3);\n\n w[i] = (((t1 + w[i-7]) | 0) + ((t2 + w[i-16]) | 0)) | 0;\n }\n\n for (i = 0; i < 64; i++) {\n t1 = ((((((e>>>6) | (e<<(32-6))) ^ ((e>>>11) | (e<<(32-11))) ^\n ((e>>>25) | (e<<(32-25)))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n\n t2 = ((((a>>>2) | (a<<(32-2))) ^ ((a>>>13) | (a<<(32-13))) ^\n ((a>>>22) | (a<<(32-22)))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n\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\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n h4 = (h4 + e) | 0;\n h5 = (h5 + f) | 0;\n h6 = (h6 + g) | 0;\n h7 = (h7 + h) | 0;\n\n off += 64;\n len -= 64;\n }\n }\n\n blocks(m);\n\n let i, bytesLeft = m.length % 64,\n bitLenHi = (m.length / 0x20000000) | 0,\n bitLenLo = m.length << 3,\n numZeros = (bytesLeft < 56) ? 56 : 120,\n p = m.slice(m.length - bytesLeft, m.length);\n\n p.push(0x80);\n for (i = bytesLeft + 1; i < numZeros; i++) { p.push(0); }\n p.push((bitLenHi >>> 24) & 0xff);\n p.push((bitLenHi >>> 16) & 0xff);\n p.push((bitLenHi >>> 8) & 0xff);\n p.push((bitLenHi >>> 0) & 0xff);\n p.push((bitLenLo >>> 24) & 0xff);\n p.push((bitLenLo >>> 16) & 0xff);\n p.push((bitLenLo >>> 8) & 0xff);\n p.push((bitLenLo >>> 0) & 0xff);\n\n blocks(p);\n\n return [\n (h0 >>> 24) & 0xff, (h0 >>> 16) & 0xff, (h0 >>> 8) & 0xff, (h0 >>> 0) & 0xff,\n (h1 >>> 24) & 0xff, (h1 >>> 16) & 0xff, (h1 >>> 8) & 0xff, (h1 >>> 0) & 0xff,\n (h2 >>> 24) & 0xff, (h2 >>> 16) & 0xff, (h2 >>> 8) & 0xff, (h2 >>> 0) & 0xff,\n (h3 >>> 24) & 0xff, (h3 >>> 16) & 0xff, (h3 >>> 8) & 0xff, (h3 >>> 0) & 0xff,\n (h4 >>> 24) & 0xff, (h4 >>> 16) & 0xff, (h4 >>> 8) & 0xff, (h4 >>> 0) & 0xff,\n (h5 >>> 24) & 0xff, (h5 >>> 16) & 0xff, (h5 >>> 8) & 0xff, (h5 >>> 0) & 0xff,\n (h6 >>> 24) & 0xff, (h6 >>> 16) & 0xff, (h6 >>> 8) & 0xff, (h6 >>> 0) & 0xff,\n (h7 >>> 24) & 0xff, (h7 >>> 16) & 0xff, (h7 >>> 8) & 0xff, (h7 >>> 0) & 0xff\n ];\n }\n\n function PBKDF2_HMAC_SHA256_OneIter(password, salt, dkLen) {\n // compress password if it's longer than hash block length\n password = (password.length <= 64) ? password : SHA256(password);\n\n const innerLen = 64 + salt.length + 4;\n const inner = new Array(innerLen);\n const outerKey = new Array(64);\n\n let i;\n let dk = [];\n\n // inner = (password ^ ipad) || salt || counter\n for (i = 0; i < 64; i++) { inner[i] = 0x36; }\n for (i = 0; i < password.length; i++) { inner[i] ^= password[i]; }\n for (i = 0; i < salt.length; i++) { inner[64 + i] = salt[i]; }\n for (i = innerLen - 4; i < innerLen; i++) { inner[i] = 0; }\n\n // outerKey = password ^ opad\n for (i = 0; i < 64; i++) outerKey[i] = 0x5c;\n for (i = 0; i < password.length; i++) outerKey[i] ^= password[i];\n\n // increments counter inside inner\n function incrementCounter() {\n for (let i = innerLen - 1; i >= innerLen - 4; i--) {\n inner[i]++;\n if (inner[i] <= 0xff) return;\n inner[i] = 0;\n }\n }\n\n // output blocks = SHA256(outerKey || SHA256(inner)) ...\n while (dkLen >= 32) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))));\n dkLen -= 32;\n }\n if (dkLen > 0) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))).slice(0, dkLen));\n }\n\n return dk;\n }\n\n // The following is an adaptation of scryptsy\n // See: https://www.npmjs.com/package/scryptsy\n function blockmix_salsa8(BY, Yi, r, x, _X) {\n let i;\n\n arraycopy(BY, (2 * r - 1) * 16, _X, 0, 16);\n for (i = 0; i < 2 * r; i++) {\n blockxor(BY, i * 16, _X, 16);\n salsa20_8(_X, x);\n arraycopy(_X, 0, BY, Yi + (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2) * 16, BY, (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2 + 1) * 16, BY, (i + r) * 16, 16);\n }\n }\n\n function R(a, b) {\n return (a << b) | (a >>> (32 - b));\n }\n\n function salsa20_8(B, x) {\n arraycopy(B, 0, x, 0, 16);\n\n for (let i = 8; i > 0; i -= 2) {\n x[ 4] ^= R(x[ 0] + x[12], 7);\n x[ 8] ^= R(x[ 4] + x[ 0], 9);\n x[12] ^= R(x[ 8] + x[ 4], 13);\n x[ 0] ^= R(x[12] + x[ 8], 18);\n x[ 9] ^= R(x[ 5] + x[ 1], 7);\n x[13] ^= R(x[ 9] + x[ 5], 9);\n x[ 1] ^= R(x[13] + x[ 9], 13);\n x[ 5] ^= R(x[ 1] + x[13], 18);\n x[14] ^= R(x[10] + x[ 6], 7);\n x[ 2] ^= R(x[14] + x[10], 9);\n x[ 6] ^= R(x[ 2] + x[14], 13);\n x[10] ^= R(x[ 6] + x[ 2], 18);\n x[ 3] ^= R(x[15] + x[11], 7);\n x[ 7] ^= R(x[ 3] + x[15], 9);\n x[11] ^= R(x[ 7] + x[ 3], 13);\n x[15] ^= R(x[11] + x[ 7], 18);\n x[ 1] ^= R(x[ 0] + x[ 3], 7);\n x[ 2] ^= R(x[ 1] + x[ 0], 9);\n x[ 3] ^= R(x[ 2] + x[ 1], 13);\n x[ 0] ^= R(x[ 3] + x[ 2], 18);\n x[ 6] ^= R(x[ 5] + x[ 4], 7);\n x[ 7] ^= R(x[ 6] + x[ 5], 9);\n x[ 4] ^= R(x[ 7] + x[ 6], 13);\n x[ 5] ^= R(x[ 4] + x[ 7], 18);\n x[11] ^= R(x[10] + x[ 9], 7);\n x[ 8] ^= R(x[11] + x[10], 9);\n x[ 9] ^= R(x[ 8] + x[11], 13);\n x[10] ^= R(x[ 9] + x[ 8], 18);\n x[12] ^= R(x[15] + x[14], 7);\n x[13] ^= R(x[12] + x[15], 9);\n x[14] ^= R(x[13] + x[12], 13);\n x[15] ^= R(x[14] + x[13], 18);\n }\n\n for (let i = 0; i < 16; ++i) {\n B[i] += x[i];\n }\n }\n\n // naive approach... going back to loop unrolling may yield additional performance\n function blockxor(S, Si, D, len) {\n for (let i = 0; i < len; i++) {\n D[i] ^= S[Si + i]\n }\n }\n\n function arraycopy(src, srcPos, dest, destPos, length) {\n while (length--) {\n dest[destPos++] = src[srcPos++];\n }\n }\n\n function checkBufferish(o) {\n if (!o || typeof(o.length) !== 'number') { return false; }\n\n for (let i = 0; i < o.length; i++) {\n const v = o[i];\n if (typeof(v) !== 'number' || v % 1 || v < 0 || v >= 256) {\n return false;\n }\n }\n\n return true;\n }\n\n function ensureInteger(value, name) {\n if (typeof(value) !== \"number\" || (value % 1)) { throw new Error('invalid ' + name); }\n return value;\n }\n\n // N = Cpu cost, r = Memory cost, p = parallelization cost\n // callback(error, progress, key)\n function _scrypt(password, salt, N, r, p, dkLen, callback) {\n\n N = ensureInteger(N, 'N');\n r = ensureInteger(r, 'r');\n p = ensureInteger(p, 'p');\n\n dkLen = ensureInteger(dkLen, 'dkLen');\n\n if (N === 0 || (N & (N - 1)) !== 0) { throw new Error('N must be power of 2'); }\n\n if (N > MAX_VALUE / 128 / r) { throw new Error('N too large'); }\n if (r > MAX_VALUE / 128 / p) { throw new Error('r too large'); }\n\n if (!checkBufferish(password)) {\n throw new Error('password must be an array or buffer');\n }\n password = Array.prototype.slice.call(password);\n\n if (!checkBufferish(salt)) {\n throw new Error('salt must be an array or buffer');\n }\n salt = Array.prototype.slice.call(salt);\n\n let b = PBKDF2_HMAC_SHA256_OneIter(password, salt, p * 128 * r);\n const B = new Uint32Array(p * 32 * r)\n for (let i = 0; i < B.length; i++) {\n const j = i * 4;\n B[i] = ((b[j + 3] & 0xff) << 24) |\n ((b[j + 2] & 0xff) << 16) |\n ((b[j + 1] & 0xff) << 8) |\n ((b[j + 0] & 0xff) << 0);\n }\n\n const XY = new Uint32Array(64 * r);\n const V = new Uint32Array(32 * r * N);\n\n const Yi = 32 * r;\n\n // scratch space\n const x = new Uint32Array(16); // salsa20_8\n const _X = new Uint32Array(16); // blockmix_salsa8\n\n const totalOps = p * N * 2;\n let currentOp = 0;\n let lastPercent10 = null;\n\n // Set this to true to abandon the scrypt on the next step\n let stop = false;\n\n // State information\n let state = 0;\n let i0 = 0, i1;\n let Bi;\n\n // How many blockmix_salsa8 can we do per step?\n const limit = callback ? parseInt(1000 / r): 0xffffffff;\n\n // Trick from scrypt-async; if there is a setImmediate shim in place, use it\n const nextTick = (typeof(setImmediate) !== 'undefined') ? setImmediate : setTimeout;\n\n // This is really all I changed; making scryptsy a state machine so we occasionally\n // stop and give other evnts on the evnt loop a chance to run. ~RicMoo\n const incrementalSMix = function() {\n if (stop) {\n return callback(new Error('cancelled'), currentOp / totalOps);\n }\n\n let steps;\n\n switch (state) {\n case 0:\n // for (var i = 0; i < p; i++)...\n Bi = i0 * 32 * r;\n\n arraycopy(B, Bi, XY, 0, Yi); // ROMix - 1\n\n state = 1; // Move to ROMix 2\n i1 = 0;\n\n // Fall through\n\n case 1:\n\n // Run up to 1000 steps of the first inner smix loop\n steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (let i = 0; i < steps; i++) { // ROMix - 2\n arraycopy(XY, 0, V, (i1 + i) * Yi, Yi) // ROMix - 3\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 4\n }\n\n // for (var i = 0; i < N; i++)\n i1 += steps;\n currentOp += steps;\n\n if (callback) {\n // Call the callback with the progress (optionally stopping us)\n const percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n }\n\n if (i1 < N) { break; }\n\n i1 = 0; // Move to ROMix 6\n state = 2;\n\n // Fall through\n\n case 2:\n\n // Run up to 1000 steps of the second inner smix loop\n steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (let i = 0; i < steps; i++) { // ROMix - 6\n const offset = (2 * r - 1) * 16; // ROMix - 7\n const j = XY[offset] & (N - 1);\n blockxor(V, j * Yi, XY, Yi); // ROMix - 8 (inner)\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 9 (outer)\n }\n\n // for (var i = 0; i < N; i++)...\n i1 += steps;\n currentOp += steps;\n\n // Call the callback with the progress (optionally stopping us)\n if (callback) {\n const percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n }\n\n if (i1 < N) { break; }\n\n arraycopy(XY, 0, B, Bi, Yi); // ROMix - 10\n\n // for (var i = 0; i < p; i++)...\n i0++;\n if (i0 < p) {\n state = 0;\n break;\n }\n\n b = [];\n for (let i = 0; i < B.length; i++) {\n b.push((B[i] >> 0) & 0xff);\n b.push((B[i] >> 8) & 0xff);\n b.push((B[i] >> 16) & 0xff);\n b.push((B[i] >> 24) & 0xff);\n }\n\n const derivedKey = PBKDF2_HMAC_SHA256_OneIter(password, b, dkLen);\n\n // Send the result to the callback\n if (callback) { callback(null, 1.0, derivedKey); }\n\n // Done; don't break (which would reschedule)\n return derivedKey;\n }\n\n // Schedule the next steps\n if (callback) { nextTick(incrementalSMix); }\n }\n\n // Run the smix state machine until completion\n if (!callback) {\n while (true) {\n const derivedKey = incrementalSMix();\n if (derivedKey != undefined) { return derivedKey; }\n }\n }\n\n // Bootstrap the async incremental smix\n incrementalSMix();\n }\n\n const lib = {\n scrypt: function(password, salt, N, r, p, dkLen, progressCallback) {\n return new Promise(function(resolve, reject) {\n let lastProgress = 0;\n if (progressCallback) { progressCallback(0); }\n _scrypt(password, salt, N, r, p, dkLen, function(error, progress, key) {\n if (error) {\n reject(error);\n } else if (key) {\n if (progressCallback && lastProgress !== 1) {\n progressCallback(1);\n }\n resolve(new Uint8Array(key));\n } else if (progressCallback && progress !== lastProgress) {\n lastProgress = progress;\n return progressCallback(progress);\n }\n });\n });\n },\n syncScrypt: function(password, salt, N, r, p, dkLen) {\n return new Uint8Array(_scrypt(password, salt, N, r, p, dkLen));\n }\n };\n\n // node.js\n if (typeof(exports) !== 'undefined') {\n module.exports = lib;\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define(lib);\n\n // Web Browsers\n } else if (root) {\n\n // If there was an existing library \"scrypt\", make sure it is still available\n if (root.scrypt) {\n root._scrypt = root.scrypt;\n }\n\n root.scrypt = lib;\n }\n\n})(this);\n","\"use strict\";\n\nimport aes from \"aes-js\";\nimport scrypt from \"scrypt-js\";\n\nimport { ExternallyOwnedAccount } from \"@ethersproject/abstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, Bytes, BytesLike, concat, hexlify } from \"@ethersproject/bytes\";\nimport { defaultPath, entropyToMnemonic, HDNode, Mnemonic, mnemonicToEntropy } from \"@ethersproject/hdnode\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { pbkdf2 as _pbkdf2 } from \"@ethersproject/pbkdf2\";\nimport { randomBytes } from \"@ethersproject/random\";\nimport { Description } from \"@ethersproject/properties\";\nimport { computeAddress } from \"@ethersproject/transactions\";\n\nimport { getPassword, looseArrayify, searchPath, uuidV4, zpad } from \"./utils\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n// Exported Types\n\nfunction hasMnemonic(value: any): value is { mnemonic: Mnemonic } {\n return (value != null && value.mnemonic && value.mnemonic.phrase);\n}\n\nexport interface _KeystoreAccount {\n address: string;\n privateKey: string;\n mnemonic?: Mnemonic;\n\n _isKeystoreAccount: boolean;\n}\n\nexport class KeystoreAccount extends Description<_KeystoreAccount> implements ExternallyOwnedAccount {\n readonly address: string;\n readonly privateKey: string;\n readonly mnemonic?: Mnemonic;\n\n readonly _isKeystoreAccount: boolean;\n\n isKeystoreAccount(value: any): value is KeystoreAccount {\n return !!(value && value._isKeystoreAccount);\n }\n}\n\nexport type ProgressCallback = (percent: number) => void;\n\nexport type EncryptOptions = {\n iv?: BytesLike;\n entropy?: BytesLike;\n client?: string;\n salt?: BytesLike;\n uuid?: string;\n scrypt?: {\n N?: number;\n r?: number;\n p?: number;\n }\n}\n\nfunction _decrypt(data: any, key: Uint8Array, ciphertext: Uint8Array): Uint8Array {\n const cipher = searchPath(data, \"crypto/cipher\");\n if (cipher === \"aes-128-ctr\") {\n const iv = looseArrayify(searchPath(data, \"crypto/cipherparams/iv\"))\n const counter = new aes.Counter(iv);\n\n const aesCtr = new aes.ModeOfOperation.ctr(key, counter);\n\n return arrayify(aesCtr.decrypt(ciphertext));\n }\n\n return null;\n}\n\nfunction _getAccount(data: any, key: Uint8Array): KeystoreAccount {\n const ciphertext = looseArrayify(searchPath(data, \"crypto/ciphertext\"));\n\n const computedMAC = hexlify(keccak256(concat([ key.slice(16, 32), ciphertext ]))).substring(2);\n if (computedMAC !== searchPath(data, \"crypto/mac\").toLowerCase()) {\n throw new Error(\"invalid password\");\n }\n\n const privateKey = _decrypt(data, key.slice(0, 16), ciphertext);\n\n if (!privateKey) {\n logger.throwError(\"unsupported cipher\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"decrypt\"\n });\n }\n\n const mnemonicKey = key.slice(32, 64);\n\n const address = computeAddress(privateKey);\n if (data.address) {\n let check = data.address.toLowerCase();\n if (check.substring(0, 2) !== \"0x\") { check = \"0x\" + check; }\n\n if (getAddress(check) !== address) {\n throw new Error(\"address mismatch\");\n }\n }\n\n const account: _KeystoreAccount = {\n _isKeystoreAccount: true,\n address: address,\n privateKey: hexlify(privateKey)\n };\n\n // Version 0.1 x-ethers metadata must contain an encrypted mnemonic phrase\n if (searchPath(data, \"x-ethers/version\") === \"0.1\") {\n const mnemonicCiphertext = looseArrayify(searchPath(data, \"x-ethers/mnemonicCiphertext\"));\n const mnemonicIv = looseArrayify(searchPath(data, \"x-ethers/mnemonicCounter\"));\n\n const mnemonicCounter = new aes.Counter(mnemonicIv);\n const mnemonicAesCtr = new aes.ModeOfOperation.ctr(mnemonicKey, mnemonicCounter);\n\n const path = searchPath(data, \"x-ethers/path\") || defaultPath;\n const locale = searchPath(data, \"x-ethers/locale\") || \"en\";\n\n const entropy = arrayify(mnemonicAesCtr.decrypt(mnemonicCiphertext));\n\n try {\n const mnemonic = entropyToMnemonic(entropy, locale);\n const node = HDNode.fromMnemonic(mnemonic, null, locale).derivePath(path);\n\n if (node.privateKey != account.privateKey) {\n throw new Error(\"mnemonic mismatch\");\n }\n\n account.mnemonic = node.mnemonic;\n\n } catch (error) {\n // If we don't have the locale wordlist installed to\n // read this mnemonic, just bail and don't set the\n // mnemonic\n if (error.code !== Logger.errors.INVALID_ARGUMENT || error.argument !== \"wordlist\") {\n throw error;\n }\n }\n }\n\n return new KeystoreAccount(account);\n}\n\ntype ScryptFunc<T> = (pw: Uint8Array, salt: Uint8Array, n: number, r: number, p: number, dkLen: number, callback?: ProgressCallback) => T;\ntype Pbkdf2Func<T> = (pw: Uint8Array, salt: Uint8Array, c: number, dkLen: number, prfFunc: string) => T;\n\nfunction pbkdf2Sync(passwordBytes: Uint8Array, salt: Uint8Array, count: number, dkLen: number, prfFunc: string): Uint8Array {\n return arrayify(_pbkdf2(passwordBytes, salt, count, dkLen, prfFunc));\n}\n\nfunction pbkdf2(passwordBytes: Uint8Array, salt: Uint8Array, count: number, dkLen: number, prfFunc: string): Promise<Uint8Array> {\n return Promise.resolve(pbkdf2Sync(passwordBytes, salt, count, dkLen, prfFunc));\n}\n\nfunction _computeKdfKey<T>(data: any, password: Bytes | string, pbkdf2Func: Pbkdf2Func<T>, scryptFunc: ScryptFunc<T>, progressCallback?: ProgressCallback): T {\n const passwordBytes = getPassword(password);\n\n const kdf = searchPath(data, \"crypto/kdf\");\n\n if (kdf && typeof(kdf) === \"string\") {\n const throwError = function(name: string, value: any): never {\n return logger.throwArgumentError(\"invalid key-derivation function parameters\", name, value);\n }\n\n if (kdf.toLowerCase() === \"scrypt\") {\n const salt = looseArrayify(searchPath(data, \"crypto/kdfparams/salt\"));\n const N = parseInt(searchPath(data, \"crypto/kdfparams/n\"));\n const r = parseInt(searchPath(data, \"crypto/kdfparams/r\"));\n const p = parseInt(searchPath(data, \"crypto/kdfparams/p\"));\n\n // Check for all required parameters\n if (!N || !r || !p) { throwError(\"kdf\", kdf); }\n\n // Make sure N is a power of 2\n if ((N & (N - 1)) !== 0) { throwError(\"N\", N); }\n\n const dkLen = parseInt(searchPath(data, \"crypto/kdfparams/dklen\"));\n if (dkLen !== 32) { throwError(\"dklen\", dkLen); }\n\n return scryptFunc(passwordBytes, salt, N, r, p, 64, progressCallback);\n\n } else if (kdf.toLowerCase() === \"pbkdf2\") {\n\n const salt = looseArrayify(searchPath(data, \"crypto/kdfparams/salt\"));\n\n let prfFunc: string = null;\n const prf = searchPath(data, \"crypto/kdfparams/prf\");\n if (prf === \"hmac-sha256\") {\n prfFunc = \"sha256\";\n } else if (prf === \"hmac-sha512\") {\n prfFunc = \"sha512\";\n } else {\n throwError(\"prf\", prf);\n }\n\n const count = parseInt(searchPath(data, \"crypto/kdfparams/c\"));\n\n const dkLen = parseInt(searchPath(data, \"crypto/kdfparams/dklen\"));\n if (dkLen !== 32) { throwError(\"dklen\", dkLen); }\n\n return pbkdf2Func(passwordBytes, salt, count, dkLen, prfFunc);\n }\n }\n\n return logger.throwArgumentError(\"unsupported key-derivation function\", \"kdf\", kdf);\n}\n\n\nexport function decryptSync(json: string, password: Bytes | string): KeystoreAccount {\n const data = JSON.parse(json);\n\n const key = _computeKdfKey(data, password, pbkdf2Sync, scrypt.syncScrypt);\n return _getAccount(data, key);\n}\n\nexport async function decrypt(json: string, password: Bytes | string, progressCallback?: ProgressCallback): Promise<KeystoreAccount> {\n const data = JSON.parse(json);\n\n const key = await _computeKdfKey(data, password, pbkdf2, scrypt.scrypt, progressCallback);\n return _getAccount(data, key);\n}\n\n\nexport function encrypt(account: ExternallyOwnedAccount, password: Bytes | string, options?: EncryptOptions, progressCallback?: ProgressCallback): Promise<string> {\n\n try {\n // Check the address matches the private key\n if (getAddress(account.address) !== computeAddress(account.privateKey)) {\n throw new Error(\"address/privateKey mismatch\");\n }\n\n // Check the mnemonic (if any) matches the private key\n if (hasMnemonic(account)) {\n const mnemonic = account.mnemonic;\n const node = HDNode.fromMnemonic(mnemonic.phrase, null, mnemonic.locale).derivePath(mnemonic.path || defaultPath);\n\n if (node.privateKey != account.privateKey) {\n throw new Error(\"mnemonic mismatch\");\n }\n }\n\n } catch (e) {\n return Promise.reject(e);\n }\n\n // The options are optional, so adjust the call as needed\n if (typeof(options) === \"function\" && !progressCallback) {\n progressCallback = options;\n options = {};\n }\n if (!options) { options = {}; }\n\n const privateKey: Uint8Array = arrayify(account.privateKey);\n const passwordBytes = getPassword(password);\n\n let entropy: Uint8Array = null\n let path: string = null;\n let locale: string = null;\n if (hasMnemonic(account)) {\n const srcMnemonic = account.mnemonic;\n entropy = arrayify(mnemonicToEntropy(srcMnemonic.phrase, srcMnemonic.locale || \"en\"));\n path = srcMnemonic.path || defaultPath;\n locale = srcMnemonic.locale || \"en\";\n }\n\n let client = options.client;\n if (!client) { client = \"ethers.js\"; }\n\n // Check/generate the salt\n let salt: Uint8Array = null;\n if (options.salt) {\n salt = arrayify(options.salt);\n } else {\n salt = randomBytes(32);;\n }\n\n // Override initialization vector\n let iv: Uint8Array = null;\n if (options.iv) {\n iv = arrayify(options.iv);\n if (iv.length !== 16) { throw new Error(\"invalid iv\"); }\n } else {\n iv = randomBytes(16);\n }\n\n // Override the uuid\n let uuidRandom: Uint8Array = null;\n if (options.uuid) {\n uuidRandom = arrayify(options.uuid);\n if (uuidRandom.length !== 16) { throw new Error(\"invalid uuid\"); }\n } else {\n uuidRandom = randomBytes(16);\n }\n\n // Override the scrypt password-based key derivation function parameters\n let N = (1 << 17), r = 8, p = 1;\n if (options.scrypt) {\n if (options.scrypt.N) { N = options.scrypt.N; }\n if (options.scrypt.r) { r = options.scrypt.r; }\n if (options.scrypt.p) { p = options.scrypt.p; }\n }\n\n // We take 64 bytes:\n // - 32 bytes As normal for the Web3 secret storage (derivedKey, macPrefix)\n // - 32 bytes AES key to encrypt mnemonic with (required here to be Ethers Wallet)\n return scrypt.scrypt(passwordBytes, salt, N, r, p, 64, progressCallback).then((key) => {\n key = arrayify(key);\n\n // This will be used to encrypt the wallet (as per Web3 secret storage)\n const derivedKey = key.slice(0, 16);\n const macPrefix = key.slice(16, 32);\n\n // This will be used to encrypt the mnemonic phrase (if any)\n const mnemonicKey = key.slice(32, 64);\n\n // Encrypt the private key\n const counter = new aes.Counter(iv);\n const aesCtr = new aes.ModeOfOperation.ctr(derivedKey, counter);\n const ciphertext = arrayify(aesCtr.encrypt(privateKey));\n\n // Compute the message authentication code, used to check the password\n const mac = keccak256(concat([macPrefix, ciphertext]))\n\n // See: https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition\n const data: { [key: string]: any } = {\n address: account.address.substring(2).toLowerCase(),\n id: uuidV4(uuidRandom),\n version: 3,\n Crypto: {\n cipher: \"aes-128-ctr\",\n cipherparams: {\n iv: hexlify(iv).substring(2),\n },\n ciphertext: hexlify(ciphertext).substring(2),\n kdf: \"scrypt\",\n kdfparams: {\n salt: hexlify(salt).substring(2),\n n: N,\n dklen: 32,\n p: p,\n r: r\n },\n mac: mac.substring(2)\n }\n };\n\n // If we have a mnemonic, encrypt it into the JSON wallet\n if (entropy) {\n const mnemonicIv = randomBytes(16);\n const mnemonicCounter = new aes.Counter(mnemonicIv);\n const mnemonicAesCtr = new aes.ModeOfOperation.ctr(mnemonicKey, mnemonicCounter);\n const mnemonicCiphertext = arrayify(mnemonicAesCtr.encrypt(entropy));\n const now = new Date();\n const timestamp = (now.getUTCFullYear() + \"-\" +\n zpad(now.getUTCMonth() + 1, 2) + \"-\" +\n zpad(now.getUTCDate(), 2) + \"T\" +\n zpad(now.getUTCHours(), 2) + \"-\" +\n zpad(now.getUTCMinutes(), 2) + \"-\" +\n zpad(now.getUTCSeconds(), 2) + \".0Z\"\n );\n data[\"x-ethers\"] = {\n client: client,\n gethFilename: (\"UTC--\" + timestamp + \"--\" + data.address),\n mnemonicCounter: hexlify(mnemonicIv).substring(2),\n mnemonicCiphertext: hexlify(mnemonicCiphertext).substring(2),\n path: path,\n locale: locale,\n version: \"0.1\"\n };\n }\n\n return JSON.stringify(data);\n });\n}\n","\"use strict\";\n\nimport { Bytes } from \"@ethersproject/bytes\";\nimport { ExternallyOwnedAccount } from \"@ethersproject/abstract-signer\";\n\nimport { decrypt as decryptCrowdsale } from \"./crowdsale\";\nimport { getJsonWalletAddress, isCrowdsaleWallet, isKeystoreWallet } from \"./inspect\";\nimport { decrypt as decryptKeystore, decryptSync as decryptKeystoreSync, encrypt as encryptKeystore, EncryptOptions, ProgressCallback } from \"./keystore\";\n\nfunction decryptJsonWallet(json: string, password: Bytes | string, progressCallback?: ProgressCallback): Promise<ExternallyOwnedAccount> {\n if (isCrowdsaleWallet(json)) {\n if (progressCallback) { progressCallback(0); }\n const account = decryptCrowdsale(json, password)\n if (progressCallback) { progressCallback(1); }\n return Promise.resolve(account);\n }\n\n if (isKeystoreWallet(json)) {\n return decryptKeystore(json, password, progressCallback);\n }\n\n return Promise.reject(new Error(\"invalid JSON wallet\"));\n}\n\nfunction decryptJsonWalletSync(json: string, password: Bytes | string): ExternallyOwnedAccount {\n if (isCrowdsaleWallet(json)) {\n return decryptCrowdsale(json, password)\n }\n\n if (isKeystoreWallet(json)) {\n return decryptKeystoreSync(json, password);\n }\n\n throw new Error(\"invalid JSON wallet\");\n}\n\nexport {\n decryptCrowdsale,\n\n decryptKeystore,\n decryptKeystoreSync,\n encryptKeystore,\n\n isCrowdsaleWallet,\n isKeystoreWallet,\n getJsonWalletAddress,\n\n decryptJsonWallet,\n decryptJsonWalletSync,\n\n ProgressCallback,\n EncryptOptions,\n};\n","export const version = \"wallet/5.0.9\";\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { Provider, TransactionRequest } from \"@ethersproject/abstract-provider\";\nimport { ExternallyOwnedAccount, Signer, TypedDataDomain, TypedDataField, TypedDataSigner } from \"@ethersproject/abstract-signer\";\nimport { arrayify, Bytes, BytesLike, concat, hexDataSlice, isHexString, joinSignature, SignatureLike } from \"@ethersproject/bytes\";\nimport { hashMessage, _TypedDataEncoder } from \"@ethersproject/hash\";\nimport { defaultPath, HDNode, entropyToMnemonic, Mnemonic } from \"@ethersproject/hdnode\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { defineReadOnly, resolveProperties } from \"@ethersproject/properties\";\nimport { randomBytes } from \"@ethersproject/random\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { decryptJsonWallet, decryptJsonWalletSync, encryptKeystore, ProgressCallback } from \"@ethersproject/json-wallets\";\nimport { computeAddress, recoverAddress, serialize, UnsignedTransaction } from \"@ethersproject/transactions\";\nimport { Wordlist } from \"@ethersproject/wordlists\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction isAccount(value: any): value is ExternallyOwnedAccount {\n return (value != null && isHexString(value.privateKey, 32) && value.address != null);\n}\n\nfunction hasMnemonic(value: any): value is { mnemonic: Mnemonic } {\n const mnemonic = value.mnemonic;\n return (mnemonic && mnemonic.phrase);\n}\n\nexport class Wallet extends Signer implements ExternallyOwnedAccount, TypedDataSigner {\n\n readonly address: string;\n readonly provider: Provider;\n\n // Wrapping the _signingKey and _mnemonic in a getter function prevents\n // leaking the private key in console.log; still, be careful! :)\n readonly _signingKey: () => SigningKey;\n readonly _mnemonic: () => Mnemonic;\n\n constructor(privateKey: BytesLike | ExternallyOwnedAccount | SigningKey, provider?: Provider) {\n logger.checkNew(new.target, Wallet);\n\n super();\n\n if (isAccount(privateKey)) {\n const signingKey = new SigningKey(privateKey.privateKey);\n defineReadOnly(this, \"_signingKey\", () => signingKey);\n defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n\n if (this.address !== getAddress(privateKey.address)) {\n logger.throwArgumentError(\"privateKey/address mismatch\", \"privateKey\", \"[REDACTED]\");\n }\n\n if (hasMnemonic(privateKey)) {\n const srcMnemonic = privateKey.mnemonic;\n defineReadOnly(this, \"_mnemonic\", () => (\n {\n phrase: srcMnemonic.phrase,\n path: srcMnemonic.path || defaultPath,\n locale: srcMnemonic.locale || \"en\"\n }\n ));\n const mnemonic = this.mnemonic;\n const node = HDNode.fromMnemonic(mnemonic.phrase, null, mnemonic.locale).derivePath(mnemonic.path);\n if (computeAddress(node.privateKey) !== this.address) {\n logger.throwArgumentError(\"mnemonic/address mismatch\", \"privateKey\", \"[REDACTED]\");\n }\n } else {\n defineReadOnly(this, \"_mnemonic\", (): Mnemonic => null);\n }\n\n\n } else {\n if (SigningKey.isSigningKey(privateKey)) {\n /* istanbul ignore if */\n if (privateKey.curve !== \"secp256k1\") {\n logger.throwArgumentError(\"unsupported curve; must be secp256k1\", \"privateKey\", \"[REDACTED]\");\n }\n defineReadOnly(this, \"_signingKey\", () => (<SigningKey>privateKey));\n\n } else {\n // A lot of common tools do not prefix private keys with a 0x (see: #1166)\n if (typeof(privateKey) === \"string\") {\n if (privateKey.match(/^[0-9a-f]*$/i) && privateKey.length === 64) {\n privateKey = \"0x\" + privateKey;\n }\n }\n\n const signingKey = new SigningKey(privateKey);\n defineReadOnly(this, \"_signingKey\", () => signingKey);\n }\n\n defineReadOnly(this, \"_mnemonic\", (): Mnemonic => null);\n defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n }\n\n /* istanbul ignore if */\n if (provider && !Provider.isProvider(provider)) {\n logger.throwArgumentError(\"invalid provider\", \"provider\", provider);\n }\n\n defineReadOnly(this, \"provider\", provider || null);\n }\n\n get mnemonic(): Mnemonic { return this._mnemonic(); }\n get privateKey(): string { return this._signingKey().privateKey; }\n get publicKey(): string { return this._signingKey().publicKey; }\n\n getAddress(): Promise<string> {\n return Promise.resolve(this.address);\n }\n\n connect(provider: Provider): Wallet {\n return new Wallet(this, provider);\n }\n\n signTransaction(transaction: TransactionRequest): Promise<string> {\n return resolveProperties(transaction).then((tx) => {\n if (tx.from != null) {\n if (getAddress(tx.from) !== this.address) {\n logger.throwArgumentError(\"transaction from address mismatch\", \"transaction.from\", transaction.from);\n }\n delete tx.from;\n }\n\n const signature = this._signingKey().signDigest(keccak256(serialize(<UnsignedTransaction>tx)));\n return serialize(<UnsignedTransaction>tx, signature);\n });\n }\n\n async signMessage(message: Bytes | string): Promise<string> {\n return joinSignature(this._signingKey().signDigest(hashMessage(message)));\n }\n\n async _signTypedData(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): Promise<string> {\n // Populate any ENS names\n const populated = await _TypedDataEncoder.resolveNames(domain, types, value, (name: string) => {\n if (this.provider == null) {\n logger.throwError(\"cannot resolve ENS names without a provider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resolveName\",\n value: name\n });\n }\n return this.provider.resolveName(name);\n });\n\n return joinSignature(this._signingKey().signDigest(_TypedDataEncoder.hash(populated.domain, types, populated.value)));\n }\n\n encrypt(password: Bytes | string, options?: any, progressCallback?: ProgressCallback): Promise<string> {\n if (typeof(options) === \"function\" && !progressCallback) {\n progressCallback = options;\n options = {};\n }\n\n if (progressCallback && typeof(progressCallback) !== \"function\") {\n throw new Error(\"invalid callback\");\n }\n\n if (!options) { options = {}; }\n\n return encryptKeystore(this, password, options, progressCallback);\n }\n\n\n /**\n * Static methods to create Wallet instances.\n */\n static createRandom(options?: any): Wallet {\n let entropy: Uint8Array = randomBytes(16);\n\n if (!options) { options = { }; }\n\n if (options.extraEntropy) {\n entropy = arrayify(hexDataSlice(keccak256(concat([ entropy, options.extraEntropy ])), 0, 16));\n }\n\n const mnemonic = entropyToMnemonic(entropy, options.locale);\n return Wallet.fromMnemonic(mnemonic, options.path, options.locale);\n }\n\n static fromEncryptedJson(json: string, password: Bytes | string, progressCallback?: ProgressCallback): Promise<Wallet> {\n return decryptJsonWallet(json, password, progressCallback).then((account) => {\n return new Wallet(account);\n });\n }\n\n static fromEncryptedJsonSync(json: string, password: Bytes | string): Wallet {\n return new Wallet(decryptJsonWalletSync(json, password));\n }\n\n static fromMnemonic(mnemonic: string, path?: string, wordlist?: Wordlist): Wallet {\n if (!path) { path = defaultPath; }\n return new Wallet(HDNode.fromMnemonic(mnemonic, null, wordlist).derivePath(path));\n }\n}\n\nexport function verifyMessage(message: Bytes | string, signature: SignatureLike): string {\n return recoverAddress(hashMessage(message), signature);\n}\n\nexport function verifyTypedData(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>, signature: SignatureLike): string {\n return recoverAddress(_TypedDataEncoder.hash(domain, types, value), signature);\n}\n","export const version = \"networks/5.0.6\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Network, Networkish } from \"./types\";\n\nexport {\n Network,\n Networkish\n};\n\ntype DefaultProviderFunc = (providers: any, options?: any) => any;\n\ninterface Renetworkable extends DefaultProviderFunc {\n renetwork: (network: Network) => DefaultProviderFunc;\n};\n\nfunction isRenetworkable(value: any): value is Renetworkable {\n return (value && typeof(value.renetwork) === \"function\");\n}\n\nfunction ethDefaultProvider(network: string | Network): Renetworkable {\n const func = function(providers: any, options?: any): any {\n if (options == null) { options = { }; }\n const providerList: Array<any> = [];\n\n if (providers.InfuraProvider) {\n try {\n providerList.push(new providers.InfuraProvider(network, options.infura));\n } catch(error) { }\n }\n\n if (providers.EtherscanProvider) {\n try {\n providerList.push(new providers.EtherscanProvider(network, options.etherscan));\n } catch(error) { }\n }\n\n if (providers.AlchemyProvider) {\n try {\n providerList.push(new providers.AlchemyProvider(network, options.alchemy));\n } catch(error) { }\n }\n\n if (providers.CloudflareProvider) {\n try {\n providerList.push(new providers.CloudflareProvider(network));\n } catch(error) { }\n }\n\n if (providerList.length === 0) { return null; }\n\n if (providers.FallbackProvider) {\n let quorum = 1;\n if (options.quorum != null) {\n quorum = options.quorum;\n } else if (network === \"homestead\") {\n quorum = 2;\n }\n return new providers.FallbackProvider(providerList, quorum);\n }\n\n return providerList[0];\n };\n\n func.renetwork = function(network: Network) {\n return ethDefaultProvider(network);\n };\n\n return func;\n}\n\nfunction etcDefaultProvider(url: string, network: string | Network): Renetworkable {\n const func = function(providers: any, options?: any): any {\n if (providers.JsonRpcProvider) {\n return new providers.JsonRpcProvider(url, network);\n }\n\n return null;\n };\n\n func.renetwork = function(network: Network) {\n return etcDefaultProvider(url, network);\n };\n\n return func;\n}\n\nconst homestead: Network = {\n chainId: 1,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"homestead\",\n _defaultProvider: ethDefaultProvider(\"homestead\")\n};\n\nconst ropsten: Network = {\n chainId: 3,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"ropsten\",\n _defaultProvider: ethDefaultProvider(\"ropsten\")\n};\n\nconst classicMordor: Network = {\n chainId: 63,\n name: \"classicMordor\",\n _defaultProvider: etcDefaultProvider(\"https://www.ethercluster.com/mordor\", \"classicMordor\")\n};\n\nconst networks: { [name: string]: Network } = {\n unspecified: {\n chainId: 0,\n name: \"unspecified\"\n },\n\n homestead: homestead,\n mainnet: homestead,\n\n morden: {\n chainId: 2,\n name: \"morden\"\n },\n\n ropsten: ropsten,\n testnet: ropsten,\n\n rinkeby: {\n chainId: 4,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"rinkeby\",\n _defaultProvider: ethDefaultProvider(\"rinkeby\")\n },\n\n kovan: {\n chainId: 42,\n name: \"kovan\",\n _defaultProvider: ethDefaultProvider(\"kovan\")\n },\n\n goerli: {\n chainId: 5,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"goerli\",\n _defaultProvider: ethDefaultProvider(\"goerli\")\n },\n\n\n // ETC (See: #351)\n classic: {\n chainId: 61,\n name: \"classic\",\n _defaultProvider: etcDefaultProvider(\"https://www.ethercluster.com/etc\", \"classic\")\n },\n\n classicMorden: {\n chainId: 62,\n name: \"classicMorden\",\n },\n\n classicMordor: classicMordor,\n classicTestnet: classicMordor,\n\n classicKotti: {\n chainId: 6,\n name: \"classicKotti\",\n _defaultProvider: etcDefaultProvider(\"https://www.ethercluster.com/kotti\", \"classicKotti\")\n },\n}\n\n/**\n * getNetwork\n *\n * Converts a named common networks or chain ID (network ID) to a Network\n * and verifies a network is a valid Network..\n */\nexport function getNetwork(network: Networkish): Network {\n // No network (null)\n if (network == null) { return null; }\n\n if (typeof(network) === \"number\") {\n for (const name in networks) {\n const standard = networks[name];\n if (standard.chainId === network) {\n return {\n name: standard.name,\n chainId: standard.chainId,\n ensAddress: (standard.ensAddress || null),\n _defaultProvider: (standard._defaultProvider || null)\n };\n }\n }\n\n return {\n chainId: network,\n name: \"unknown\"\n };\n }\n\n if (typeof(network) === \"string\") {\n const standard = networks[network];\n if (standard == null) { return null; }\n return {\n name: standard.name,\n chainId: standard.chainId,\n ensAddress: standard.ensAddress,\n _defaultProvider: (standard._defaultProvider || null)\n };\n }\n\n const standard = networks[network.name];\n\n // Not a standard network; check that it is a valid network in general\n if (!standard) {\n if (typeof(network.chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid network chainId\", \"network\", network);\n }\n return network;\n }\n\n // Make sure the chainId matches the expected network chainId (or is 0; disable EIP-155)\n if (network.chainId !== 0 && network.chainId !== standard.chainId) {\n logger.throwArgumentError(\"network chainId mismatch\", \"network\", network);\n }\n\n // @TODO: In the next major version add an attach function to a defaultProvider\n // class and move the _defaultProvider internal to this file (extend Network)\n let defaultProvider: DefaultProviderFunc = network._defaultProvider || null;\n if (defaultProvider == null && standard._defaultProvider) {\n if (isRenetworkable(standard._defaultProvider)) {\n defaultProvider = standard._defaultProvider.renetwork(network);\n } else {\n defaultProvider = standard._defaultProvider;\n }\n }\n\n // Standard Network (allow overriding the ENS address)\n return {\n name: network.name,\n chainId: standard.chainId,\n ensAddress: (network.ensAddress || standard.ensAddress || null),\n _defaultProvider: defaultProvider\n };\n}\n","\"use strict\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nexport function decode(textData: string): Uint8Array {\n textData = atob(textData);\n const data = [];\n for (let i = 0; i < textData.length; i++) {\n data.push(textData.charCodeAt(i));\n }\n return arrayify(data);\n}\n\nexport function encode(data: BytesLike): string {\n data = arrayify(data);\n let textData = \"\";\n for (let i = 0; i < data.length; i++) {\n textData += String.fromCharCode(data[i]);\n }\n return btoa(textData);\n}\n\n\n","\"use strict\";\n\nexport { decode, encode } from \"./base64\";\n","export const version = \"web/5.0.11\";\n","\"use strict\";\n\nimport { arrayify } from \"@ethersproject/bytes\";\n\nimport type { GetUrlResponse, Options } from \"./types\";\n\nexport { GetUrlResponse, Options };\n\nexport async function getUrl(href: string, options?: Options): Promise<GetUrlResponse> {\n if (options == null) { options = { }; }\n\n const request = {\n method: (options.method || \"GET\"),\n headers: (options.headers || { }),\n body: (options.body || undefined),\n\n mode: <RequestMode>\"cors\", // no-cors, cors, *same-origin\n cache: <RequestCache>\"no-cache\", // *default, no-cache, reload, force-cache, only-if-cached\n credentials: <RequestCredentials>\"same-origin\", // include, *same-origin, omit\n redirect: <RequestRedirect>\"follow\", // manual, *follow, error\n referrer: \"client\", // no-referrer, *client\n };\n\n const response = await fetch(href, request);\n const body = await response.arrayBuffer();\n\n const headers: { [ name: string ]: string } = { };\n if (response.headers.forEach) {\n response.headers.forEach((value, key) => {\n headers[key.toLowerCase()] = value;\n });\n } else {\n (<() => Array<string>>((<any>(response.headers)).keys))().forEach((key) => {\n headers[key.toLowerCase()] = response.headers.get(key);\n });\n }\n\n return {\n headers: headers,\n statusCode: response.status,\n statusMessage: response.statusText,\n body: arrayify(new Uint8Array(body)),\n }\n}\n","\"use strict\";\n\nimport { encode as base64Encode } from \"@ethersproject/base64\";\nimport { hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { shallowCopy } from \"@ethersproject/properties\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { getUrl, GetUrlResponse, Options } from \"./geturl\";\n\nfunction staller(duration: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, duration);\n });\n}\n\nfunction bodyify(value: any, type: string): string {\n if (value == null) { return null; }\n\n if (typeof(value) === \"string\") { return value; }\n\n if (isBytesLike(value)) {\n if (type && (type.split(\"/\")[0] === \"text\" || type.split(\";\")[0].trim() === \"application/json\")) {\n try {\n return toUtf8String(value);\n } catch (error) { };\n }\n return hexlify(value);\n }\n\n return value;\n}\n\n// Exported Types\nexport type ConnectionInfo = {\n url: string,\n headers?: { [key: string]: string | number }\n\n user?: string,\n password?: string,\n\n allowInsecureAuthentication?: boolean,\n allowGzip?: boolean,\n\n throttleLimit?: number,\n throttleSlotInterval?: number;\n throttleCallback?: (attempt: number, url: string) => Promise<boolean>,\n\n timeout?: number,\n};\n\nexport interface OnceBlockable {\n once(eventName: \"block\", handler: () => void): void;\n}\n\nexport interface OncePollable {\n once(eventName: \"poll\", handler: () => void): void;\n}\n\nexport type PollOptions = {\n timeout?: number,\n floor?: number,\n ceiling?: number,\n interval?: number,\n retryLimit?: number,\n onceBlock?: OnceBlockable\n oncePoll?: OncePollable\n};\n\nexport type FetchJsonResponse = {\n statusCode: number;\n headers: { [ header: string ]: string };\n};\n\n\ntype Header = { key: string, value: string };\n\n// This API is still a work in progress; the future changes will likely be:\n// - ConnectionInfo => FetchDataRequest<T = any>\n// - FetchDataRequest.body? = string | Uint8Array | { contentType: string, data: string | Uint8Array }\n// - If string => text/plain, Uint8Array => application/octet-stream (if content-type unspecified)\n// - FetchDataRequest.processFunc = (body: Uint8Array, response: FetchDataResponse) => T\n// For this reason, it should be considered internal until the API is finalized\nexport function _fetchData<T = Uint8Array>(connection: string | ConnectionInfo, body?: Uint8Array, processFunc?: (value: Uint8Array, response: FetchJsonResponse) => T): Promise<T> {\n\n // How many times to retry in the event of a throttle\n const attemptLimit = (typeof(connection) === \"object\" && connection.throttleLimit != null) ? connection.throttleLimit: 12;\n logger.assertArgument((attemptLimit > 0 && (attemptLimit % 1) === 0),\n \"invalid connection throttle limit\", \"connection.throttleLimit\", attemptLimit);\n\n const throttleCallback = ((typeof(connection) === \"object\") ? connection.throttleCallback: null);\n const throttleSlotInterval = ((typeof(connection) === \"object\" && typeof(connection.throttleSlotInterval) === \"number\") ? connection.throttleSlotInterval: 100);\n logger.assertArgument((throttleSlotInterval > 0 && (throttleSlotInterval % 1) === 0),\n \"invalid connection throttle slot interval\", \"connection.throttleSlotInterval\", throttleSlotInterval);\n\n const headers: { [key: string]: Header } = { };\n\n let url: string = null;\n\n // @TODO: Allow ConnectionInfo to override some of these values\n const options: Options = {\n method: \"GET\",\n };\n\n let allow304 = false;\n\n let timeout = 2 * 60 * 1000;\n\n if (typeof(connection) === \"string\") {\n url = connection;\n\n } else if (typeof(connection) === \"object\") {\n if (connection == null || connection.url == null) {\n logger.throwArgumentError(\"missing URL\", \"connection.url\", connection);\n }\n\n url = connection.url;\n\n if (typeof(connection.timeout) === \"number\" && connection.timeout > 0) {\n timeout = connection.timeout;\n }\n\n if (connection.headers) {\n for (const key in connection.headers) {\n headers[key.toLowerCase()] = { key: key, value: String(connection.headers[key]) };\n if ([\"if-none-match\", \"if-modified-since\"].indexOf(key.toLowerCase()) >= 0) {\n allow304 = true;\n }\n }\n }\n\n options.allowGzip = !!connection.allowGzip;\n\n if (connection.user != null && connection.password != null) {\n if (url.substring(0, 6) !== \"https:\" && connection.allowInsecureAuthentication !== true) {\n logger.throwError(\n \"basic authentication requires a secure https url\",\n Logger.errors.INVALID_ARGUMENT,\n { argument: \"url\", url: url, user: connection.user, password: \"[REDACTED]\" }\n );\n }\n\n const authorization = connection.user + \":\" + connection.password;\n headers[\"authorization\"] = {\n key: \"Authorization\",\n value: \"Basic \" + base64Encode(toUtf8Bytes(authorization))\n };\n }\n }\n\n if (body) {\n options.method = \"POST\";\n options.body = body;\n if (headers[\"content-type\"] == null) {\n headers[\"content-type\"] = { key: \"Content-Type\", value: \"application/octet-stream\" };\n }\n if (headers[\"content-length\"] == null) {\n headers[\"content-length\"] = { key: \"Content-Length\", value: String(body.length) };\n }\n }\n\n const flatHeaders: { [ key: string ]: string } = { };\n Object.keys(headers).forEach((key) => {\n const header = headers[key];\n flatHeaders[header.key] = header.value;\n });\n options.headers = flatHeaders;\n\n const runningTimeout = (function() {\n let timer: NodeJS.Timer = null;\n const promise: Promise<never> = new Promise(function(resolve, reject) {\n if (timeout) {\n timer = setTimeout(() => {\n if (timer == null) { return; }\n timer = null;\n\n reject(logger.makeError(\"timeout\", Logger.errors.TIMEOUT, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n timeout: timeout,\n url: url\n }));\n }, timeout);\n }\n });\n\n const cancel = function() {\n if (timer == null) { return; }\n clearTimeout(timer);\n timer = null;\n }\n\n return { promise, cancel };\n })();\n\n const runningFetch = (async function() {\n\n for (let attempt = 0; attempt < attemptLimit; attempt++) {\n let response: GetUrlResponse = null;\n\n try {\n response = await getUrl(url, options);\n\n // Exponential back-off throttling\n if (response.statusCode === 429 && attempt < attemptLimit) {\n let tryAgain = true;\n if (throttleCallback) {\n tryAgain = await throttleCallback(attempt, url);\n }\n\n if (tryAgain) {\n let stall = 0;\n\n const retryAfter = response.headers[\"retry-after\"];\n if (typeof(retryAfter) === \"string\" && retryAfter.match(/^[1-9][0-9]*$/)) {\n stall = parseInt(retryAfter) * 1000;\n } else {\n stall = throttleSlotInterval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n }\n\n //console.log(\"Stalling 429\");\n await staller(stall);\n continue;\n }\n }\n\n } catch (error) {\n response = (<any>error).response;\n if (response == null) {\n runningTimeout.cancel();\n logger.throwError(\"missing response\", Logger.errors.SERVER_ERROR, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n serverError: error,\n url: url\n });\n }\n }\n\n\n let body = response.body;\n\n if (allow304 && response.statusCode === 304) {\n body = null;\n\n } else if (response.statusCode < 200 || response.statusCode >= 300) {\n runningTimeout.cancel();\n logger.throwError(\"bad response\", Logger.errors.SERVER_ERROR, {\n status: response.statusCode,\n headers: response.headers,\n body: bodyify(body, ((response.headers) ? response.headers[\"content-type\"]: null)),\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n }\n\n if (processFunc) {\n try {\n const result = await processFunc(body, response);\n runningTimeout.cancel();\n return result;\n\n } catch (error) {\n // Allow the processFunc to trigger a throttle\n if (error.throttleRetry && attempt < attemptLimit) {\n let tryAgain = true;\n if (throttleCallback) {\n tryAgain = await throttleCallback(attempt, url);\n }\n\n if (tryAgain) {\n const timeout = throttleSlotInterval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n //console.log(\"Stalling callback\");\n await staller(timeout);\n continue;\n }\n }\n\n runningTimeout.cancel();\n logger.throwError(\"processing response error\", Logger.errors.SERVER_ERROR, {\n body: bodyify(body, ((response.headers) ? response.headers[\"content-type\"]: null)),\n error: error,\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n }\n }\n\n runningTimeout.cancel();\n\n // If we had a processFunc, it eitehr returned a T or threw above.\n // The \"body\" is now a Uint8Array.\n return <T>(<unknown>body);\n }\n\n return logger.throwError(\"failed response\", Logger.errors.SERVER_ERROR, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n })();\n\n return Promise.race([ runningTimeout.promise, runningFetch ]);\n}\n\nexport function fetchJson(connection: string | ConnectionInfo, json?: string, processFunc?: (value: any, response: FetchJsonResponse) => any): Promise<any> {\n let processJsonFunc = (value: Uint8Array, response: FetchJsonResponse) => {\n let result: any = null;\n if (value != null) {\n try {\n result = JSON.parse(toUtf8String(value));\n } catch (error) {\n logger.throwError(\"invalid JSON\", Logger.errors.SERVER_ERROR, {\n body: value,\n error: error\n });\n }\n }\n\n if (processFunc) {\n result = processFunc(result, response);\n }\n\n return result;\n }\n\n // If we have json to send, we must\n // - add content-type of application/json (unless already overridden)\n // - convert the json to bytes\n let body: Uint8Array = null;\n if (json != null) {\n body = toUtf8Bytes(json);\n\n // Create a connection with the content-type set for JSON\n const updated: ConnectionInfo = (typeof(connection) === \"string\") ? ({ url: connection }): shallowCopy(connection);\n if (updated.headers) {\n const hasContentType = (Object.keys(updated.headers).filter((k) => (k.toLowerCase() === \"content-type\")).length) !== 0;\n if (!hasContentType) {\n updated.headers = shallowCopy(updated.headers);\n updated.headers[\"content-type\"] = \"application/json\";\n }\n } else {\n updated.headers = { \"content-type\": \"application/json\" };\n }\n connection = updated;\n }\n\n return _fetchData<any>(connection, body, processJsonFunc);\n}\n\nexport function poll<T>(func: () => Promise<T>, options?: PollOptions): Promise<T> {\n if (!options) { options = {}; }\n options = shallowCopy(options);\n if (options.floor == null) { options.floor = 0; }\n if (options.ceiling == null) { options.ceiling = 10000; }\n if (options.interval == null) { options.interval = 250; }\n\n return new Promise(function(resolve, reject) {\n\n let timer: NodeJS.Timer = null;\n let done: boolean = false;\n\n // Returns true if cancel was successful. Unsuccessful cancel means we're already done.\n const cancel = (): boolean => {\n if (done) { return false; }\n done = true;\n if (timer) { clearTimeout(timer); }\n return true;\n };\n\n if (options.timeout) {\n timer = setTimeout(() => {\n if (cancel()) { reject(new Error(\"timeout\")); }\n }, options.timeout)\n }\n\n const retryLimit = options.retryLimit;\n\n let attempt = 0;\n function check() {\n return func().then(function(result) {\n\n // If we have a result, or are allowed null then we're done\n if (result !== undefined) {\n if (cancel()) { resolve(result); }\n\n } else if (options.oncePoll) {\n options.oncePoll.once(\"poll\", check);\n\n } else if (options.onceBlock) {\n options.onceBlock.once(\"block\", check);\n\n // Otherwise, exponential back-off (up to 10s) our next request\n } else if (!done) {\n attempt++;\n if (attempt > retryLimit) {\n if (cancel()) { reject(new Error(\"retry limit reached\")); }\n return;\n }\n\n let timeout = options.interval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n if (timeout < options.floor) { timeout = options.floor; }\n if (timeout > options.ceiling) { timeout = options.ceiling; }\n\n setTimeout(check, timeout);\n }\n\n return null;\n }, function(error) {\n if (cancel()) { reject(error); }\n });\n }\n check();\n });\n}\n\n","'use strict'\nvar ALPHABET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l'\n\n// pre-compute lookup table\nvar ALPHABET_MAP = {}\nfor (var z = 0; z < ALPHABET.length; z++) {\n var x = ALPHABET.charAt(z)\n\n if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')\n ALPHABET_MAP[x] = z\n}\n\nfunction polymodStep (pre) {\n var b = pre >> 25\n return ((pre & 0x1FFFFFF) << 5) ^\n (-((b >> 0) & 1) & 0x3b6a57b2) ^\n (-((b >> 1) & 1) & 0x26508e6d) ^\n (-((b >> 2) & 1) & 0x1ea119fa) ^\n (-((b >> 3) & 1) & 0x3d4233dd) ^\n (-((b >> 4) & 1) & 0x2a1462b3)\n}\n\nfunction prefixChk (prefix) {\n var chk = 1\n for (var i = 0; i < prefix.length; ++i) {\n var c = prefix.charCodeAt(i)\n if (c < 33 || c > 126) return 'Invalid prefix (' + prefix + ')'\n\n chk = polymodStep(chk) ^ (c >> 5)\n }\n chk = polymodStep(chk)\n\n for (i = 0; i < prefix.length; ++i) {\n var v = prefix.charCodeAt(i)\n chk = polymodStep(chk) ^ (v & 0x1f)\n }\n return chk\n}\n\nfunction encode (prefix, words, LIMIT) {\n LIMIT = LIMIT || 90\n if ((prefix.length + 7 + words.length) > LIMIT) throw new TypeError('Exceeds length limit')\n\n prefix = prefix.toLowerCase()\n\n // determine chk mod\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') throw new Error(chk)\n\n var result = prefix + '1'\n for (var i = 0; i < words.length; ++i) {\n var x = words[i]\n if ((x >> 5) !== 0) throw new Error('Non 5-bit word')\n\n chk = polymodStep(chk) ^ x\n result += ALPHABET.charAt(x)\n }\n\n for (i = 0; i < 6; ++i) {\n chk = polymodStep(chk)\n }\n chk ^= 1\n\n for (i = 0; i < 6; ++i) {\n var v = (chk >> ((5 - i) * 5)) & 0x1f\n result += ALPHABET.charAt(v)\n }\n\n return result\n}\n\nfunction __decode (str, LIMIT) {\n LIMIT = LIMIT || 90\n if (str.length < 8) return str + ' too short'\n if (str.length > LIMIT) return 'Exceeds length limit'\n\n // don't allow mixed case\n var lowered = str.toLowerCase()\n var uppered = str.toUpperCase()\n if (str !== lowered && str !== uppered) return 'Mixed-case string ' + str\n str = lowered\n\n var split = str.lastIndexOf('1')\n if (split === -1) return 'No separator character for ' + str\n if (split === 0) return 'Missing prefix for ' + str\n\n var prefix = str.slice(0, split)\n var wordChars = str.slice(split + 1)\n if (wordChars.length < 6) return 'Data too short'\n\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') return chk\n\n var words = []\n for (var i = 0; i < wordChars.length; ++i) {\n var c = wordChars.charAt(i)\n var v = ALPHABET_MAP[c]\n if (v === undefined) return 'Unknown character ' + c\n chk = polymodStep(chk) ^ v\n\n // not in the checksum?\n if (i + 6 >= wordChars.length) continue\n words.push(v)\n }\n\n if (chk !== 1) return 'Invalid checksum for ' + str\n return { prefix: prefix, words: words }\n}\n\nfunction decodeUnsafe () {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n}\n\nfunction decode (str) {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n\n throw new Error(res)\n}\n\nfunction convert (data, inBits, outBits, pad) {\n var value = 0\n var bits = 0\n var maxV = (1 << outBits) - 1\n\n var result = []\n for (var i = 0; i < data.length; ++i) {\n value = (value << inBits) | data[i]\n bits += inBits\n\n while (bits >= outBits) {\n bits -= outBits\n result.push((value >> bits) & maxV)\n }\n }\n\n if (pad) {\n if (bits > 0) {\n result.push((value << (outBits - bits)) & maxV)\n }\n } else {\n if (bits >= inBits) return 'Excess padding'\n if ((value << (outBits - bits)) & maxV) return 'Non-zero padding'\n }\n\n return result\n}\n\nfunction toWordsUnsafe (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n}\n\nfunction toWords (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nfunction fromWordsUnsafe (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n}\n\nfunction fromWords (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nmodule.exports = {\n decodeUnsafe: decodeUnsafe,\n decode: decode,\n encode: encode,\n toWordsUnsafe: toWordsUnsafe,\n toWords: toWords,\n fromWordsUnsafe: fromWordsUnsafe,\n fromWords: fromWords\n}\n","export const version = \"providers/5.0.17\";\n","\"use strict\";\n\nimport { Block, TransactionReceipt, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { getAddress, getContractAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { hexDataLength, hexDataSlice, hexValue, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { AddressZero } from \"@ethersproject/constants\";\nimport { shallowCopy } from \"@ethersproject/properties\";\nimport { parse as parseTransaction } from \"@ethersproject/transactions\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport type FormatFunc = (value: any) => any;\n\nexport type FormatFuncs = { [ key: string ]: FormatFunc };\n\nexport type Formats = {\n transaction: FormatFuncs,\n transactionRequest: FormatFuncs,\n receipt: FormatFuncs,\n receiptLog: FormatFuncs,\n block: FormatFuncs,\n blockWithTransactions: FormatFuncs,\n filter: FormatFuncs,\n filterLog: FormatFuncs,\n};\n\nexport class Formatter {\n readonly formats: Formats;\n\n constructor() {\n logger.checkNew(new.target, Formatter);\n this.formats = this.getDefaultFormats();\n }\n\n getDefaultFormats(): Formats {\n const formats: Formats = <Formats>({ });\n\n const address = this.address.bind(this);\n const bigNumber = this.bigNumber.bind(this);\n const blockTag = this.blockTag.bind(this);\n const data = this.data.bind(this);\n const hash = this.hash.bind(this);\n const hex = this.hex.bind(this);\n const number = this.number.bind(this);\n\n const strictData = (v: any) => { return this.data(v, true); };\n\n formats.transaction = {\n hash: hash,\n\n blockHash: Formatter.allowNull(hash, null),\n blockNumber: Formatter.allowNull(number, null),\n transactionIndex: Formatter.allowNull(number, null),\n\n confirmations: Formatter.allowNull(number, null),\n\n from: address,\n\n gasPrice: bigNumber,\n gasLimit: bigNumber,\n to: Formatter.allowNull(address, null),\n value: bigNumber,\n nonce: number,\n data: data,\n\n r: Formatter.allowNull(this.uint256),\n s: Formatter.allowNull(this.uint256),\n v: Formatter.allowNull(number),\n\n creates: Formatter.allowNull(address, null),\n\n raw: Formatter.allowNull(data),\n };\n\n formats.transactionRequest = {\n from: Formatter.allowNull(address),\n nonce: Formatter.allowNull(number),\n gasLimit: Formatter.allowNull(bigNumber),\n gasPrice: Formatter.allowNull(bigNumber),\n to: Formatter.allowNull(address),\n value: Formatter.allowNull(bigNumber),\n data: Formatter.allowNull(strictData),\n };\n\n formats.receiptLog = {\n transactionIndex: number,\n blockNumber: number,\n transactionHash: hash,\n address: address,\n topics: Formatter.arrayOf(hash),\n data: data,\n logIndex: number,\n blockHash: hash,\n };\n\n formats.receipt = {\n to: Formatter.allowNull(this.address, null),\n from: Formatter.allowNull(this.address, null),\n contractAddress: Formatter.allowNull(address, null),\n transactionIndex: number,\n root: Formatter.allowNull(hash),\n gasUsed: bigNumber,\n logsBloom: Formatter.allowNull(data),// @TODO: should this be data?\n blockHash: hash,\n transactionHash: hash,\n logs: Formatter.arrayOf(this.receiptLog.bind(this)),\n blockNumber: number,\n confirmations: Formatter.allowNull(number, null),\n cumulativeGasUsed: bigNumber,\n status: Formatter.allowNull(number)\n };\n\n formats.block = {\n hash: hash,\n parentHash: hash,\n number: number,\n\n timestamp: number,\n nonce: Formatter.allowNull(hex),\n difficulty: this.difficulty.bind(this),\n\n gasLimit: bigNumber,\n gasUsed: bigNumber,\n\n miner: address,\n extraData: data,\n\n transactions: Formatter.allowNull(Formatter.arrayOf(hash)),\n };\n\n formats.blockWithTransactions = shallowCopy(formats.block);\n formats.blockWithTransactions.transactions = Formatter.allowNull(Formatter.arrayOf(this.transactionResponse.bind(this)));\n\n formats.filter = {\n fromBlock: Formatter.allowNull(blockTag, undefined),\n toBlock: Formatter.allowNull(blockTag, undefined),\n blockHash: Formatter.allowNull(hash, undefined),\n address: Formatter.allowNull(address, undefined),\n topics: Formatter.allowNull(this.topics.bind(this), undefined),\n };\n\n formats.filterLog = {\n blockNumber: Formatter.allowNull(number),\n blockHash: Formatter.allowNull(hash),\n transactionIndex: number,\n\n removed: Formatter.allowNull(this.boolean.bind(this)),\n\n address: address,\n data: Formatter.allowFalsish(data, \"0x\"),\n\n topics: Formatter.arrayOf(hash),\n\n transactionHash: hash,\n logIndex: number,\n };\n\n return formats;\n }\n\n // Requires a BigNumberish that is within the IEEE754 safe integer range; returns a number\n // Strict! Used on input.\n number(number: any): number {\n if (number === \"0x\") { return 0; }\n return BigNumber.from(number).toNumber();\n }\n\n // Strict! Used on input.\n bigNumber(value: any): BigNumber {\n return BigNumber.from(value);\n }\n\n // Requires a boolean, \"true\" or \"false\"; returns a boolean\n boolean(value: any): boolean {\n if (typeof(value) === \"boolean\") { return value; }\n if (typeof(value) === \"string\") {\n value = value.toLowerCase();\n if (value === \"true\") { return true; }\n if (value === \"false\") { return false; }\n }\n throw new Error(\"invalid boolean - \" + value);\n }\n\n hex(value: any, strict?: boolean): string {\n if (typeof(value) === \"string\") {\n if (!strict && value.substring(0, 2) !== \"0x\") { value = \"0x\" + value; }\n if (isHexString(value)) {\n return value.toLowerCase();\n }\n }\n return logger.throwArgumentError(\"invalid hash\", \"value\", value);\n }\n\n data(value: any, strict?: boolean): string {\n const result = this.hex(value, strict);\n if ((result.length % 2) !== 0) {\n throw new Error(\"invalid data; odd-length - \" + value);\n }\n return result;\n }\n\n // Requires an address\n // Strict! Used on input.\n address(value: any): string {\n return getAddress(value);\n }\n\n callAddress(value: any): string {\n if (!isHexString(value, 32)) { return null; }\n const address = getAddress(hexDataSlice(value, 12));\n return (address === AddressZero) ? null: address;\n }\n\n contractAddress(value: any): string {\n return getContractAddress(value);\n }\n\n // Strict! Used on input.\n blockTag(blockTag: any): string {\n if (blockTag == null) { return \"latest\"; }\n\n if (blockTag === \"earliest\") { return \"0x0\"; }\n\n if (blockTag === \"latest\" || blockTag === \"pending\") {\n return blockTag;\n }\n\n if (typeof(blockTag) === \"number\" || isHexString(blockTag)) {\n return hexValue(<number | string>blockTag);\n }\n\n throw new Error(\"invalid blockTag\");\n }\n\n // Requires a hash, optionally requires 0x prefix; returns prefixed lowercase hash.\n hash(value: any, strict?: boolean): string {\n const result = this.hex(value, strict);\n if (hexDataLength(result) !== 32) {\n return logger.throwArgumentError(\"invalid hash\", \"value\", value);\n }\n return result;\n }\n\n // Returns the difficulty as a number, or if too large (i.e. PoA network) null\n difficulty(value: any): number {\n if (value == null) { return null; }\n\n const v = BigNumber.from(value);\n\n try {\n return v.toNumber();\n } catch (error) { }\n\n return null;\n }\n\n uint256(value: any): string {\n if (!isHexString(value)) {\n throw new Error(\"invalid uint256\");\n }\n return hexZeroPad(value, 32);\n }\n\n _block(value: any, format: any): Block {\n if (value.author != null && value.miner == null) {\n value.miner = value.author;\n }\n return Formatter.check(format, value);\n }\n\n block(value: any): Block {\n return this._block(value, this.formats.block);\n }\n\n blockWithTransactions(value: any): Block {\n return this._block(value, this.formats.blockWithTransactions);\n }\n\n // Strict! Used on input.\n transactionRequest(value: any): any {\n return Formatter.check(this.formats.transactionRequest, value);\n }\n\n transactionResponse(transaction: any): TransactionResponse {\n\n // Rename gas to gasLimit\n if (transaction.gas != null && transaction.gasLimit == null) {\n transaction.gasLimit = transaction.gas;\n }\n\n // Some clients (TestRPC) do strange things like return 0x0 for the\n // 0 address; correct this to be a real address\n if (transaction.to && BigNumber.from(transaction.to).isZero()) {\n transaction.to = \"0x0000000000000000000000000000000000000000\";\n }\n\n // Rename input to data\n if (transaction.input != null && transaction.data == null) {\n transaction.data = transaction.input;\n }\n\n // If to and creates are empty, populate the creates from the transaction\n if (transaction.to == null && transaction.creates == null) {\n transaction.creates = this.contractAddress(transaction);\n }\n\n // @TODO: use transaction.serialize? Have to add support for including v, r, and s...\n /*\n if (!transaction.raw) {\n\n // Very loose providers (e.g. TestRPC) do not provide a signature or raw\n if (transaction.v && transaction.r && transaction.s) {\n let raw = [\n stripZeros(hexlify(transaction.nonce)),\n stripZeros(hexlify(transaction.gasPrice)),\n stripZeros(hexlify(transaction.gasLimit)),\n (transaction.to || \"0x\"),\n stripZeros(hexlify(transaction.value || \"0x\")),\n hexlify(transaction.data || \"0x\"),\n stripZeros(hexlify(transaction.v || \"0x\")),\n stripZeros(hexlify(transaction.r)),\n stripZeros(hexlify(transaction.s)),\n ];\n\n transaction.raw = rlpEncode(raw);\n }\n }\n */\n\n const result: TransactionResponse = Formatter.check(this.formats.transaction, transaction);\n\n if (transaction.chainId != null) {\n let chainId = transaction.chainId;\n\n if (isHexString(chainId)) {\n chainId = BigNumber.from(chainId).toNumber();\n }\n\n result.chainId = chainId;\n\n } else {\n let chainId = transaction.networkId;\n\n // geth-etc returns chainId\n if (chainId == null && result.v == null) {\n chainId = transaction.chainId;\n }\n\n if (isHexString(chainId)) {\n chainId = BigNumber.from(chainId).toNumber();\n }\n\n if (typeof(chainId) !== \"number\" && result.v != null) {\n chainId = (result.v - 35) / 2;\n if (chainId < 0) { chainId = 0; }\n chainId = parseInt(chainId);\n }\n\n if (typeof(chainId) !== \"number\") { chainId = 0; }\n\n result.chainId = chainId;\n }\n\n // 0x0000... should actually be null\n if (result.blockHash && result.blockHash.replace(/0/g, \"\") === \"x\") {\n result.blockHash = null;\n }\n\n return result;\n }\n\n transaction(value: any): any {\n return parseTransaction(value);\n }\n\n receiptLog(value: any): any {\n return Formatter.check(this.formats.receiptLog, value);\n }\n\n receipt(value: any): TransactionReceipt {\n const result: TransactionReceipt = Formatter.check(this.formats.receipt, value);\n\n if (value.status != null) {\n result.byzantium = true;\n }\n\n return result;\n }\n\n topics(value: any): any {\n if (Array.isArray(value)) {\n return value.map((v) => this.topics(v));\n\n } else if (value != null) {\n return this.hash(value, true);\n }\n\n return null;\n }\n\n filter(value: any): any {\n return Formatter.check(this.formats.filter, value);\n }\n\n filterLog(value: any): any {\n return Formatter.check(this.formats.filterLog, value);\n }\n\n static check(format: { [ name: string ]: FormatFunc }, object: any): any {\n const result: any = {};\n for (const key in format) {\n try {\n const value = format[key](object[key]);\n if (value !== undefined) { result[key] = value; }\n } catch (error) {\n error.checkKey = key;\n error.checkValue = object[key];\n throw error;\n }\n }\n return result;\n }\n\n // if value is null-ish, nullValue is returned\n static allowNull(format: FormatFunc, nullValue?: any): FormatFunc {\n return (function(value: any) {\n if (value == null) { return nullValue; }\n return format(value);\n });\n }\n\n // If value is false-ish, replaceValue is returned\n static allowFalsish(format: FormatFunc, replaceValue: any): FormatFunc {\n return (function(value: any) {\n if (!value) { return replaceValue; }\n return format(value);\n });\n }\n\n // Requires an Array satisfying check\n static arrayOf(format: FormatFunc): FormatFunc {\n return (function(array: any): Array<any> {\n if (!Array.isArray(array)) { throw new Error(\"not an array\"); }\n\n const result: any = [];\n\n array.forEach(function(value) {\n result.push(format(value));\n });\n\n return result;\n });\n }\n}\n\nexport interface CommunityResourcable {\n isCommunityResource(): boolean;\n}\n\nexport function isCommunityResourcable(value: any): value is CommunityResourcable {\n return (value && typeof(value.isCommunityResource) === \"function\");\n}\n\nexport function isCommunityResource(value: any): boolean {\n return (isCommunityResourcable(value) && value.isCommunityResource());\n}\n\n// Show the throttle message only once\nlet throttleMessage = false;\nexport function showThrottleMessage() {\n if (throttleMessage) { return; }\n throttleMessage = true;\n\n console.log(\"========= NOTICE =========\")\n console.log(\"Request-Rate Exceeded (this message will not be repeated)\");\n console.log(\"\");\n console.log(\"The default API keys for each service are provided as a highly-throttled,\");\n console.log(\"community resource for low-traffic projects and early prototyping.\");\n console.log(\"\");\n console.log(\"While your application will continue to function, we highly recommended\");\n console.log(\"signing up for your own API keys to improve performance, increase your\");\n console.log(\"request rate/limit and enable other perks, such as metrics and advanced APIs.\");\n console.log(\"\");\n console.log(\"For more details: https:/\\/docs.ethers.io/api-keys/\");\n console.log(\"==========================\");\n}\n\n","\"use strict\";\n\nimport {\n Block, BlockTag, BlockWithTransactions, EventType, Filter, FilterByBlockHash, ForkEvent,\n Listener, Log, Provider, TransactionReceipt, TransactionRequest, TransactionResponse\n} from \"@ethersproject/abstract-provider\";\nimport { Base58 } from \"@ethersproject/basex\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, concat, hexConcat, hexDataLength, hexDataSlice, hexlify, hexValue, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { HashZero } from \"@ethersproject/constants\";\nimport { namehash } from \"@ethersproject/hash\";\nimport { getNetwork, Network, Networkish } from \"@ethersproject/networks\";\nimport { Deferrable, defineReadOnly, getStatic, resolveProperties } from \"@ethersproject/properties\";\nimport { Transaction } from \"@ethersproject/transactions\";\nimport { sha256 } from \"@ethersproject/sha2\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { poll } from \"@ethersproject/web\";\n\nimport bech32 from \"bech32\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Formatter } from \"./formatter\";\n\n\n//////////////////////////////\n// Event Serializeing\n\nfunction checkTopic(topic: string): string {\n if (topic == null) { return \"null\"; }\n if (hexDataLength(topic) !== 32) {\n logger.throwArgumentError(\"invalid topic\", \"topic\", topic);\n }\n return topic.toLowerCase();\n}\n\nfunction serializeTopics(topics: Array<string | Array<string>>): string {\n // Remove trailing null AND-topics; they are redundant\n topics = topics.slice();\n while (topics.length > 0 && topics[topics.length - 1] == null) { topics.pop(); }\n\n return topics.map((topic) => {\n if (Array.isArray(topic)) {\n\n // Only track unique OR-topics\n const unique: { [ topic: string ]: boolean } = { }\n topic.forEach((topic) => {\n unique[checkTopic(topic)] = true;\n });\n\n // The order of OR-topics does not matter\n const sorted = Object.keys(unique);\n sorted.sort();\n\n return sorted.join(\"|\");\n\n } else {\n return checkTopic(topic);\n }\n }).join(\"&\");\n}\n\nfunction deserializeTopics(data: string): Array<string | Array<string>> {\n if (data === \"\") { return [ ]; }\n\n return data.split(/&/g).map((topic) => {\n if (topic === \"\") { return [ ]; }\n\n const comps = topic.split(\"|\").map((topic) => {\n return ((topic === \"null\") ? null: topic);\n });\n\n return ((comps.length === 1) ? comps[0]: comps);\n });\n}\n\nfunction getEventTag(eventName: EventType): string {\n if (typeof(eventName) === \"string\") {\n eventName = eventName.toLowerCase();\n\n if (hexDataLength(eventName) === 32) {\n return \"tx:\" + eventName;\n }\n\n if (eventName.indexOf(\":\") === -1) {\n return eventName;\n }\n\n } else if (Array.isArray(eventName)) {\n return \"filter:*:\" + serializeTopics(eventName);\n\n } else if (ForkEvent.isForkEvent(eventName)) {\n logger.warn(\"not implemented\");\n throw new Error(\"not implemented\");\n\n } else if (eventName && typeof(eventName) === \"object\") {\n return \"filter:\" + (eventName.address || \"*\") + \":\" + serializeTopics(eventName.topics || []);\n }\n\n throw new Error(\"invalid event - \" + eventName);\n}\n\n//////////////////////////////\n// Helper Object\n\nfunction getTime() {\n return (new Date()).getTime();\n}\n\nfunction stall(duration: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, duration);\n });\n}\n\n//////////////////////////////\n// Provider Object\n\n\n/**\n * EventType\n * - \"block\"\n * - \"poll\"\n * - \"didPoll\"\n * - \"pending\"\n * - \"error\"\n * - \"network\"\n * - filter\n * - topics array\n * - transaction hash\n */\n\nconst PollableEvents = [ \"block\", \"network\", \"pending\", \"poll\" ];\n\nexport class Event {\n readonly listener: Listener;\n readonly once: boolean;\n readonly tag: string;\n\n constructor(tag: string, listener: Listener, once: boolean) {\n defineReadOnly(this, \"tag\", tag);\n defineReadOnly(this, \"listener\", listener);\n defineReadOnly(this, \"once\", once);\n }\n\n get event(): EventType {\n switch (this.type) {\n case \"tx\":\n return this.hash;\n case \"filter\":\n return this.filter;\n }\n return this.tag;\n }\n\n get type(): string {\n return this.tag.split(\":\")[0]\n }\n\n get hash(): string {\n const comps = this.tag.split(\":\");\n if (comps[0] !== \"tx\") { return null; }\n return comps[1];\n }\n\n get filter(): Filter {\n const comps = this.tag.split(\":\");\n if (comps[0] !== \"filter\") { return null; }\n const address = comps[1];\n\n const topics = deserializeTopics(comps[2]);\n const filter: Filter = { };\n\n if (topics.length > 0) { filter.topics = topics; }\n if (address && address !== \"*\") { filter.address = address; }\n\n return filter;\n }\n\n pollable(): boolean {\n return (this.tag.indexOf(\":\") >= 0 || PollableEvents.indexOf(this.tag) >= 0);\n }\n}\n\nexport interface EnsResolver {\n\n // Name this Resolver is associated with\n readonly name: string;\n\n // The address of the resolver\n readonly address: string;\n\n // Multichain address resolution (also normal address resolution)\n // See: https://eips.ethereum.org/EIPS/eip-2304\n getAddress(coinType?: 60): Promise<string>\n\n // Contenthash field\n // See: https://eips.ethereum.org/EIPS/eip-1577\n getContentHash(): Promise<string>;\n\n // Storage of text records\n // See: https://eips.ethereum.org/EIPS/eip-634\n getText(key: string): Promise<string>;\n};\n\nexport interface EnsProvider {\n resolveName(name: string): Promise<string>;\n lookupAddress(address: string): Promise<string>;\n getResolver(name: string): Promise<EnsResolver>;\n}\n\ntype CoinInfo = {\n symbol: string,\n ilk?: string, // General family\n prefix?: string, // Bech32 prefix\n p2pkh?: number, // Pay-to-Public-Key-Hash Version\n p2sh?: number, // Pay-to-Script-Hash Version\n};\n\n// https://github.com/satoshilabs/slips/blob/master/slip-0044.md\nconst coinInfos: { [ coinType: string ]: CoinInfo } = {\n \"0\": { symbol: \"btc\", p2pkh: 0x00, p2sh: 0x05, prefix: \"bc\" },\n \"2\": { symbol: \"ltc\", p2pkh: 0x30, p2sh: 0x32, prefix: \"ltc\" },\n \"3\": { symbol: \"doge\", p2pkh: 0x1e, p2sh: 0x16 },\n \"60\": { symbol: \"eth\", ilk: \"eth\" },\n \"61\": { symbol: \"etc\", ilk: \"eth\" },\n \"700\": { symbol: \"xdai\", ilk: \"eth\" },\n};\n\nfunction bytes32ify(value: number): string {\n return hexZeroPad(BigNumber.from(value).toHexString(), 32);\n}\n\n// Compute the Base58Check encoded data (checksum is first 4 bytes of sha256d)\nfunction base58Encode(data: Uint8Array): string {\n return Base58.encode(concat([ data, hexDataSlice(sha256(sha256(data)), 0, 4) ]));\n}\n\nexport class Resolver implements EnsResolver {\n readonly provider: BaseProvider;\n\n readonly name: string;\n readonly address: string;\n\n constructor(provider: BaseProvider, address: string, name: string) {\n defineReadOnly(this, \"provider\", provider);\n defineReadOnly(this, \"name\", name);\n defineReadOnly(this, \"address\", provider.formatter.address(address));\n }\n\n async _fetchBytes(selector: string, parameters?: string): Promise<string> {\n\n // keccak256(\"addr(bytes32,uint256)\")\n const transaction = {\n to: this.address,\n data: hexConcat([ selector, namehash(this.name), (parameters || \"0x\") ])\n };\n\n const result = await this.provider.call(transaction);\n if (result === \"0x\") { return null; }\n\n const offset = BigNumber.from(hexDataSlice(result, 0, 32)).toNumber();\n const length = BigNumber.from(hexDataSlice(result, offset, offset + 32)).toNumber();\n return hexDataSlice(result, offset + 32, offset + 32 + length);\n }\n\n _getAddress(coinType: number, hexBytes: string): string {\n const coinInfo = coinInfos[String(coinType)];\n\n if (coinInfo == null) {\n logger.throwError(`unsupported coin type: ${ coinType }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: `getAddress(${ coinType })`\n });\n }\n\n if (coinInfo.ilk === \"eth\") {\n return this.provider.formatter.address(hexBytes);\n }\n\n const bytes = arrayify(hexBytes);\n\n // P2PKH: OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG\n if (coinInfo.p2pkh != null) {\n const p2pkh = hexBytes.match(/^0x76a9([0-9a-f][0-9a-f])([0-9a-f]*)88ac$/);\n if (p2pkh) {\n const length = parseInt(p2pkh[1], 16);\n if (p2pkh[2].length === length * 2 && length >= 1 && length <= 75) {\n return base58Encode(concat([ [ coinInfo.p2pkh ], (\"0x\" + p2pkh[2]) ]));\n }\n }\n }\n\n // P2SH: OP_HASH160 <scriptHash> OP_EQUAL\n if (coinInfo.p2sh != null) {\n const p2sh = hexBytes.match(/^0xa9([0-9a-f][0-9a-f])([0-9a-f]*)87$/);\n if (p2sh) {\n const length = parseInt(p2sh[1], 16);\n if (p2sh[2].length === length * 2 && length >= 1 && length <= 75) {\n return base58Encode(concat([ [ coinInfo.p2sh ], (\"0x\" + p2sh[2]) ]));\n }\n }\n }\n\n // Bech32\n if (coinInfo.prefix != null) {\n const length = bytes[1];\n\n // https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#witness-program\n let version = bytes[0];\n if (version === 0x00) {\n if (length !== 20 && length !== 32) {\n version = -1;\n }\n } else {\n version = -1;\n }\n\n if (version >= 0 && bytes.length === 2 + length && length >= 1 && length <= 75) {\n const words = bech32.toWords(bytes.slice(2));\n words.unshift(version);\n return bech32.encode(coinInfo.prefix, words);\n }\n }\n\n return null;\n }\n\n\n async getAddress(coinType?: number): Promise<string> {\n if (coinType == null) { coinType = 60; }\n\n // If Ethereum, use the standard `addr(bytes32)`\n if (coinType === 60) {\n // keccak256(\"addr(bytes32)\")\n const transaction = {\n to: this.address,\n data: (\"0x3b3b57de\" + namehash(this.name).substring(2))\n };\n const hexBytes = await this.provider.call(transaction);\n\n // No address\n if (hexBytes === \"0x\" || hexBytes === HashZero) { return null; }\n\n return this.provider.formatter.callAddress(hexBytes);\n }\n\n // keccak256(\"addr(bytes32,uint256\")\n const hexBytes = await this._fetchBytes(\"0xf1cb7e06\", bytes32ify(coinType));\n\n // No address\n if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n // Compute the address\n const address = this._getAddress(coinType, hexBytes);\n\n if (address == null) {\n logger.throwError(`invalid or unsupported coin data`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: `getAddress(${ coinType })`,\n coinType: coinType,\n data: hexBytes\n });\n }\n\n return address;\n }\n\n async getContentHash(): Promise<string> {\n\n // keccak256(\"contenthash()\")\n const hexBytes = await this._fetchBytes(\"0xbc1c58d1\");\n\n // No contenthash\n if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n // IPFS (CID: 1, Type: DAG-PB)\n const ipfs = hexBytes.match(/^0xe3010170(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n if (ipfs) {\n const length = parseInt(ipfs[3], 16);\n if (ipfs[4].length === length * 2) {\n return \"ipfs:/\\/\" + Base58.encode(\"0x\" + ipfs[1]);\n }\n }\n\n // Swarm (CID: 1, Type: swarm-manifest; hash/length hard-coded to keccak256/32)\n const swarm = hexBytes.match(/^0xe40101fa011b20([0-9a-f]*)$/)\n if (swarm) {\n if (swarm[1].length === (32 * 2)) {\n return \"bzz:/\\/\" + swarm[1]\n }\n }\n\n return logger.throwError(`invalid or unsupported content hash data`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"getContentHash()\",\n data: hexBytes\n });\n }\n\n async getText(key: string): Promise<string> {\n\n // The key encoded as parameter to fetchBytes\n let keyBytes = toUtf8Bytes(key);\n\n // The nodehash consumes the first slot, so the string pointer targets\n // offset 64, with the length at offset 64 and data starting at offset 96\n keyBytes = concat([ bytes32ify(64), bytes32ify(keyBytes.length), keyBytes ]);\n\n // Pad to word-size (32 bytes)\n if ((keyBytes.length % 32) !== 0) {\n keyBytes = concat([ keyBytes, hexZeroPad(\"0x\", 32 - (key.length % 32)) ])\n }\n\n const hexBytes = await this._fetchBytes(\"0x59d1d43c\", hexlify(keyBytes));\n if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n return toUtf8String(hexBytes);\n }\n}\n\nlet defaultFormatter: Formatter = null;\n\nlet nextPollId = 1;\n\n\nexport class BaseProvider extends Provider implements EnsProvider {\n _networkPromise: Promise<Network>;\n _network: Network;\n\n _events: Array<Event>;\n\n formatter: Formatter;\n\n // To help mitigate the eventually consistent nature of the blockchain\n // we keep a mapping of events we emit. If we emit an event X, we expect\n // that a user should be able to query for that event in the callback,\n // if the node returns null, we stall the response until we get back a\n // meaningful value, since we may be hitting a re-org, or a node that\n // has not indexed the event yet.\n // Events:\n // - t:{hash} - Transaction hash\n // - b:{hash} - BlockHash\n // - block - The most recent emitted block\n _emitted: { [ eventName: string ]: number | \"pending\" };\n\n _pollingInterval: number;\n _poller: NodeJS.Timer;\n _bootstrapPoll: NodeJS.Timer;\n\n _lastBlockNumber: number;\n\n _fastBlockNumber: number;\n _fastBlockNumberPromise: Promise<number>;\n _fastQueryDate: number;\n\n _maxInternalBlockNumber: number;\n _internalBlockNumber: Promise<{ blockNumber: number, reqTime: number, respTime: number }>;\n\n readonly anyNetwork: boolean;\n\n\n /**\n * ready\n *\n * A Promise<Network> that resolves only once the provider is ready.\n *\n * Sub-classes that call the super with a network without a chainId\n * MUST set this. Standard named networks have a known chainId.\n *\n */\n\n constructor(network: Networkish | Promise<Network>) {\n logger.checkNew(new.target, Provider);\n\n super();\n\n // Events being listened to\n this._events = [];\n\n this._emitted = { block: -2 };\n\n this.formatter = new.target.getFormatter();\n\n // If network is any, this Provider allows the underlying\n // network to change dynamically, and we auto-detect the\n // current network\n defineReadOnly(this, \"anyNetwork\", (network === \"any\"));\n if (this.anyNetwork) { network = this.detectNetwork(); }\n\n if (network instanceof Promise) {\n this._networkPromise = network;\n\n // Squash any \"unhandled promise\" errors; that do not need to be handled\n network.catch((error) => { });\n\n // Trigger initial network setting (async)\n this._ready().catch((error) => { });\n\n } else {\n const knownNetwork = getStatic<(network: Networkish) => Network>(new.target, \"getNetwork\")(network);\n if (knownNetwork) {\n defineReadOnly(this, \"_network\", knownNetwork);\n this.emit(\"network\", knownNetwork, null);\n\n } else {\n logger.throwArgumentError(\"invalid network\", \"network\", network);\n }\n }\n\n this._maxInternalBlockNumber = -1024;\n\n this._lastBlockNumber = -2;\n\n this._pollingInterval = 4000;\n\n this._fastQueryDate = 0;\n }\n\n async _ready(): Promise<Network> {\n if (this._network == null) {\n let network: Network = null;\n if (this._networkPromise) {\n try {\n network = await this._networkPromise;\n } catch (error) { }\n }\n\n // Try the Provider's network detection (this MUST throw if it cannot)\n if (network == null) {\n network = await this.detectNetwork();\n }\n\n // This should never happen; every Provider sub-class should have\n // suggested a network by here (or have thrown).\n if (!network) {\n logger.throwError(\"no network detected\", Logger.errors.UNKNOWN_ERROR, { });\n }\n\n // Possible this call stacked so do not call defineReadOnly again\n if (this._network == null) {\n if (this.anyNetwork) {\n this._network = network;\n } else {\n defineReadOnly(this, \"_network\", network);\n }\n this.emit(\"network\", network, null);\n }\n }\n\n return this._network;\n }\n\n // This will always return the most recently established network.\n // For \"any\", this can change (a \"network\" event is emitted before\n // any change is refelcted); otherwise this cannot change\n get ready(): Promise<Network> {\n return poll(() => {\n return this._ready().then((network) => {\n return network;\n }, (error) => {\n // If the network isn't running yet, we will wait\n if (error.code === Logger.errors.NETWORK_ERROR && error.event === \"noNetwork\") {\n return undefined;\n }\n throw error;\n });\n });\n }\n\n // @TODO: Remove this and just create a singleton formatter\n static getFormatter(): Formatter {\n if (defaultFormatter == null) {\n defaultFormatter = new Formatter();\n }\n return defaultFormatter;\n }\n\n // @TODO: Remove this and just use getNetwork\n static getNetwork(network: Networkish): Network {\n return getNetwork((network == null) ? \"homestead\": network);\n }\n\n // Fetches the blockNumber, but will reuse any result that is less\n // than maxAge old or has been requested since the last request\n async _getInternalBlockNumber(maxAge: number): Promise<number> {\n await this._ready();\n\n const internalBlockNumber = this._internalBlockNumber;\n\n if (maxAge > 0 && this._internalBlockNumber) {\n const result = await internalBlockNumber;\n if ((getTime() - result.respTime) <= maxAge) {\n return result.blockNumber;\n }\n }\n\n const reqTime = getTime();\n\n const checkInternalBlockNumber = resolveProperties({\n blockNumber: this.perform(\"getBlockNumber\", { }),\n networkError: this.getNetwork().then((network) => (null), (error) => (error))\n }).then(({ blockNumber, networkError }) => {\n if (networkError) {\n // Unremember this bad internal block number\n if (this._internalBlockNumber === checkInternalBlockNumber) {\n this._internalBlockNumber = null;\n }\n throw networkError;\n }\n\n const respTime = getTime();\n\n blockNumber = BigNumber.from(blockNumber).toNumber();\n if (blockNumber < this._maxInternalBlockNumber) { blockNumber = this._maxInternalBlockNumber; }\n\n this._maxInternalBlockNumber = blockNumber;\n this._setFastBlockNumber(blockNumber); // @TODO: Still need this?\n return { blockNumber, reqTime, respTime };\n });\n\n this._internalBlockNumber = checkInternalBlockNumber;\n\n return (await checkInternalBlockNumber).blockNumber;\n }\n\n async poll(): Promise<void> {\n const pollId = nextPollId++;\n\n // Track all running promises, so we can trigger a post-poll once they are complete\n const runners: Array<Promise<void>> = [];\n\n const blockNumber = await this._getInternalBlockNumber(100 + this.pollingInterval / 2);\n this._setFastBlockNumber(blockNumber);\n\n // Emit a poll event after we have the latest (fast) block number\n this.emit(\"poll\", pollId, blockNumber);\n\n // If the block has not changed, meh.\n if (blockNumber === this._lastBlockNumber) {\n this.emit(\"didPoll\", pollId);\n return;\n }\n\n // First polling cycle, trigger a \"block\" events\n if (this._emitted.block === -2) {\n this._emitted.block = blockNumber - 1;\n }\n\n if (Math.abs((<number>(this._emitted.block)) - blockNumber) > 1000) {\n logger.warn(\"network block skew detected; skipping block events\");\n this.emit(\"error\", logger.makeError(\"network block skew detected\", Logger.errors.NETWORK_ERROR, {\n blockNumber: blockNumber,\n event: \"blockSkew\",\n previousBlockNumber: this._emitted.block\n }));\n this.emit(\"block\", blockNumber);\n\n } else {\n // Notify all listener for each block that has passed\n for (let i = (<number>this._emitted.block) + 1; i <= blockNumber; i++) {\n this.emit(\"block\", i);\n }\n }\n\n // The emitted block was updated, check for obsolete events\n if ((<number>this._emitted.block) !== blockNumber) {\n this._emitted.block = blockNumber;\n\n Object.keys(this._emitted).forEach((key) => {\n // The block event does not expire\n if (key === \"block\") { return; }\n\n // The block we were at when we emitted this event\n const eventBlockNumber = this._emitted[key];\n\n // We cannot garbage collect pending transactions or blocks here\n // They should be garbage collected by the Provider when setting\n // \"pending\" events\n if (eventBlockNumber === \"pending\") { return; }\n\n // Evict any transaction hashes or block hashes over 12 blocks\n // old, since they should not return null anyways\n if (blockNumber - eventBlockNumber > 12) {\n delete this._emitted[key];\n }\n });\n }\n\n // First polling cycle\n if (this._lastBlockNumber === -2) {\n this._lastBlockNumber = blockNumber - 1;\n }\n\n // Find all transaction hashes we are waiting on\n this._events.forEach((event) => {\n switch (event.type) {\n case \"tx\": {\n const hash = event.hash;\n let runner = this.getTransactionReceipt(hash).then((receipt) => {\n if (!receipt || receipt.blockNumber == null) { return null; }\n this._emitted[\"t:\" + hash] = receipt.blockNumber;\n this.emit(hash, receipt);\n return null;\n }).catch((error: Error) => { this.emit(\"error\", error); });\n\n runners.push(runner);\n\n break;\n }\n\n case \"filter\": {\n const filter = event.filter;\n filter.fromBlock = this._lastBlockNumber + 1;\n filter.toBlock = blockNumber;\n\n const runner = this.getLogs(filter).then((logs) => {\n if (logs.length === 0) { return; }\n logs.forEach((log: Log) => {\n this._emitted[\"b:\" + log.blockHash] = log.blockNumber;\n this._emitted[\"t:\" + log.transactionHash] = log.blockNumber;\n this.emit(filter, log);\n });\n }).catch((error: Error) => { this.emit(\"error\", error); });\n runners.push(runner);\n\n break;\n }\n }\n });\n\n this._lastBlockNumber = blockNumber;\n\n // Once all events for this loop have been processed, emit \"didPoll\"\n Promise.all(runners).then(() => {\n this.emit(\"didPoll\", pollId);\n });\n\n return null;\n }\n\n // Deprecated; do not use this\n resetEventsBlock(blockNumber: number): void {\n this._lastBlockNumber = blockNumber - 1;\n if (this.polling) { this.poll(); }\n }\n\n get network(): Network {\n return this._network;\n }\n\n // This method should query the network if the underlying network\n // can change, such as when connected to a JSON-RPC backend\n async detectNetwork(): Promise<Network> {\n return logger.throwError(\"provider does not support network detection\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"provider.detectNetwork\"\n });\n }\n\n async getNetwork(): Promise<Network> {\n const network = await this._ready();\n\n // Make sure we are still connected to the same network; this is\n // only an external call for backends which can have the underlying\n // network change spontaneously\n const currentNetwork = await this.detectNetwork();\n if (network.chainId !== currentNetwork.chainId) {\n\n // We are allowing network changes, things can get complex fast;\n // make sure you know what you are doing if you use \"any\"\n if (this.anyNetwork) {\n this._network = currentNetwork;\n\n // Reset all internal block number guards and caches\n this._lastBlockNumber = -2;\n this._fastBlockNumber = null;\n this._fastBlockNumberPromise = null;\n this._fastQueryDate = 0;\n this._emitted.block = -2;\n this._maxInternalBlockNumber = -1024;\n this._internalBlockNumber = null;\n\n // The \"network\" event MUST happen before this method resolves\n // so any events have a chance to unregister, so we stall an\n // additional event loop before returning from /this/ call\n this.emit(\"network\", currentNetwork, network);\n await stall(0);\n\n return this._network;\n }\n\n const error = logger.makeError(\"underlying network changed\", Logger.errors.NETWORK_ERROR, {\n event: \"changed\",\n network: network,\n detectedNetwork: currentNetwork\n });\n\n this.emit(\"error\", error);\n throw error;\n }\n\n return network;\n }\n\n get blockNumber(): number {\n this._getInternalBlockNumber(100 + this.pollingInterval / 2).then((blockNumber) => {\n this._setFastBlockNumber(blockNumber);\n });\n\n return (this._fastBlockNumber != null) ? this._fastBlockNumber: -1;\n }\n\n get polling(): boolean {\n return (this._poller != null);\n }\n\n set polling(value: boolean) {\n if (value && !this._poller) {\n this._poller = setInterval(this.poll.bind(this), this.pollingInterval);\n\n if (!this._bootstrapPoll) {\n this._bootstrapPoll = setTimeout(() => {\n this.poll();\n\n // We block additional polls until the polling interval\n // is done, to prevent overwhelming the poll function\n this._bootstrapPoll = setTimeout(() => {\n // If polling was disabled, something may require a poke\n // since starting the bootstrap poll and it was disabled\n if (!this._poller) { this.poll(); }\n\n // Clear out the bootstrap so we can do another\n this._bootstrapPoll = null;\n }, this.pollingInterval);\n }, 0);\n }\n\n } else if (!value && this._poller) {\n clearInterval(this._poller);\n this._poller = null;\n }\n }\n\n get pollingInterval(): number {\n return this._pollingInterval;\n }\n\n set pollingInterval(value: number) {\n if (typeof(value) !== \"number\" || value <= 0 || parseInt(String(value)) != value) {\n throw new Error(\"invalid polling interval\");\n }\n\n this._pollingInterval = value;\n\n if (this._poller) {\n clearInterval(this._poller);\n this._poller = setInterval(() => { this.poll() }, this._pollingInterval);\n }\n }\n\n _getFastBlockNumber(): Promise<number> {\n const now = getTime();\n\n // Stale block number, request a newer value\n if ((now - this._fastQueryDate) > 2 * this._pollingInterval) {\n this._fastQueryDate = now;\n this._fastBlockNumberPromise = this.getBlockNumber().then((blockNumber) => {\n if (this._fastBlockNumber == null || blockNumber > this._fastBlockNumber) {\n this._fastBlockNumber = blockNumber;\n }\n return this._fastBlockNumber;\n });\n }\n\n return this._fastBlockNumberPromise;\n }\n\n _setFastBlockNumber(blockNumber: number): void {\n // Older block, maybe a stale request\n if (this._fastBlockNumber != null && blockNumber < this._fastBlockNumber) { return; }\n\n // Update the time we updated the blocknumber\n this._fastQueryDate = getTime();\n\n // Newer block number, use it\n if (this._fastBlockNumber == null || blockNumber > this._fastBlockNumber) {\n this._fastBlockNumber = blockNumber;\n this._fastBlockNumberPromise = Promise.resolve(blockNumber);\n }\n }\n\n async waitForTransaction(transactionHash: string, confirmations?: number, timeout?: number): Promise<TransactionReceipt> {\n if (confirmations == null) { confirmations = 1; }\n\n const receipt = await this.getTransactionReceipt(transactionHash);\n\n // Receipt is already good\n if ((receipt ? receipt.confirmations: 0) >= confirmations) { return receipt; }\n\n // Poll until the receipt is good...\n return new Promise((resolve, reject) => {\n let timer: NodeJS.Timer = null;\n let done = false;\n\n const handler = (receipt: TransactionReceipt) => {\n if (receipt.confirmations < confirmations) { return; }\n\n if (timer) { clearTimeout(timer); }\n if (done) { return; }\n done = true;\n\n this.removeListener(transactionHash, handler);\n resolve(receipt);\n }\n this.on(transactionHash, handler);\n\n if (typeof(timeout) === \"number\" && timeout > 0) {\n timer = setTimeout(() => {\n if (done) { return; }\n timer = null;\n done = true;\n\n this.removeListener(transactionHash, handler);\n reject(logger.makeError(\"timeout exceeded\", Logger.errors.TIMEOUT, { timeout: timeout }));\n }, timeout);\n if (timer.unref) { timer.unref(); }\n }\n });\n }\n\n async getBlockNumber(): Promise<number> {\n return this._getInternalBlockNumber(0);\n }\n\n async getGasPrice(): Promise<BigNumber> {\n await this.getNetwork();\n return BigNumber.from(await this.perform(\"getGasPrice\", { }));\n }\n\n async getBalance(addressOrName: string | Promise<string>, blockTag?: BlockTag | Promise<BlockTag>): Promise<BigNumber> {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n return BigNumber.from(await this.perform(\"getBalance\", params));\n }\n\n async getTransactionCount(addressOrName: string | Promise<string>, blockTag?: BlockTag | Promise<BlockTag>): Promise<number> {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n return BigNumber.from(await this.perform(\"getTransactionCount\", params)).toNumber();\n }\n\n async getCode(addressOrName: string | Promise<string>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string> {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n return hexlify(await this.perform(\"getCode\", params));\n }\n\n async getStorageAt(addressOrName: string | Promise<string>, position: BigNumberish | Promise<BigNumberish>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string> {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag),\n position: Promise.resolve(position).then((p) => hexValue(p))\n });\n return hexlify(await this.perform(\"getStorageAt\", params));\n }\n\n // This should be called by any subclass wrapping a TransactionResponse\n _wrapTransaction(tx: Transaction, hash?: string): TransactionResponse {\n if (hash != null && hexDataLength(hash) !== 32) { throw new Error(\"invalid response - sendTransaction\"); }\n\n const result = <TransactionResponse>tx;\n\n // Check the hash we expect is the same as the hash the server reported\n if (hash != null && tx.hash !== hash) {\n logger.throwError(\"Transaction hash mismatch from Provider.sendTransaction.\", Logger.errors.UNKNOWN_ERROR, { expectedHash: tx.hash, returnedHash: hash });\n }\n\n // @TODO: (confirmations? number, timeout? number)\n result.wait = async (confirmations?: number) => {\n\n // We know this transaction *must* exist (whether it gets mined is\n // another story), so setting an emitted value forces us to\n // wait even if the node returns null for the receipt\n if (confirmations !== 0) {\n this._emitted[\"t:\" + tx.hash] = \"pending\";\n }\n\n const receipt = await this.waitForTransaction(tx.hash, confirmations)\n if (receipt == null && confirmations === 0) { return null; }\n\n // No longer pending, allow the polling loop to garbage collect this\n this._emitted[\"t:\" + tx.hash] = receipt.blockNumber;\n\n if (receipt.status === 0) {\n logger.throwError(\"transaction failed\", Logger.errors.CALL_EXCEPTION, {\n transactionHash: tx.hash,\n transaction: tx,\n receipt: receipt\n });\n }\n return receipt;\n };\n\n return result;\n }\n\n async sendTransaction(signedTransaction: string | Promise<string>): Promise<TransactionResponse> {\n await this.getNetwork();\n const hexTx = await Promise.resolve(signedTransaction).then(t => hexlify(t));\n const tx = this.formatter.transaction(signedTransaction);\n try {\n const hash = await this.perform(\"sendTransaction\", { signedTransaction: hexTx });\n return this._wrapTransaction(tx, hash);\n } catch (error) {\n (<any>error).transaction = tx;\n (<any>error).transactionHash = tx.hash;\n throw error;\n }\n }\n\n async _getTransactionRequest(transaction: Deferrable<TransactionRequest>): Promise<Transaction> {\n const values: any = await transaction;\n\n const tx: any = { };\n\n [\"from\", \"to\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? this._getAddress(v): null))\n });\n\n [\"gasLimit\", \"gasPrice\", \"value\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? BigNumber.from(v): null));\n });\n\n [\"data\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? hexlify(v): null));\n });\n\n return this.formatter.transactionRequest(await resolveProperties(tx));\n }\n\n async _getFilter(filter: Filter | FilterByBlockHash | Promise<Filter | FilterByBlockHash>): Promise<Filter | FilterByBlockHash> {\n filter = await filter;\n\n const result: any = { };\n\n if (filter.address != null) {\n result.address = this._getAddress(filter.address);\n }\n\n [\"blockHash\", \"topics\"].forEach((key) => {\n if ((<any>filter)[key] == null) { return; }\n result[key] = (<any>filter)[key];\n });\n\n [\"fromBlock\", \"toBlock\"].forEach((key) => {\n if ((<any>filter)[key] == null) { return; }\n result[key] = this._getBlockTag((<any>filter)[key]);\n });\n\n return this.formatter.filter(await resolveProperties(result));\n }\n\n async call(transaction: Deferrable<TransactionRequest>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string> {\n await this.getNetwork();\n const params = await resolveProperties({\n transaction: this._getTransactionRequest(transaction),\n blockTag: this._getBlockTag(blockTag)\n });\n return hexlify(await this.perform(\"call\", params));\n }\n\n async estimateGas(transaction: Deferrable<TransactionRequest>): Promise<BigNumber> {\n await this.getNetwork();\n const params = await resolveProperties({\n transaction: this._getTransactionRequest(transaction)\n });\n return BigNumber.from(await this.perform(\"estimateGas\", params));\n }\n\n async _getAddress(addressOrName: string | Promise<string>): Promise<string> {\n const address = await this.resolveName(addressOrName);\n if (address == null) {\n logger.throwError(\"ENS name not configured\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: `resolveName(${ JSON.stringify(addressOrName) })`\n });\n }\n return address;\n }\n\n async _getBlock(blockHashOrBlockTag: BlockTag | string | Promise<BlockTag | string>, includeTransactions?: boolean): Promise<Block | BlockWithTransactions> {\n await this.getNetwork();\n\n blockHashOrBlockTag = await blockHashOrBlockTag;\n\n // If blockTag is a number (not \"latest\", etc), this is the block number\n let blockNumber = -128;\n\n const params: { [key: string]: any } = {\n includeTransactions: !!includeTransactions\n };\n\n if (isHexString(blockHashOrBlockTag, 32)) {\n params.blockHash = blockHashOrBlockTag;\n } else {\n try {\n params.blockTag = this.formatter.blockTag(await this._getBlockTag(blockHashOrBlockTag));\n if (isHexString(params.blockTag)) {\n blockNumber = parseInt(params.blockTag.substring(2), 16);\n }\n } catch (error) {\n logger.throwArgumentError(\"invalid block hash or block tag\", \"blockHashOrBlockTag\", blockHashOrBlockTag);\n }\n }\n\n return poll(async () => {\n const block = await this.perform(\"getBlock\", params);\n\n // Block was not found\n if (block == null) {\n\n // For blockhashes, if we didn't say it existed, that blockhash may\n // not exist. If we did see it though, perhaps from a log, we know\n // it exists, and this node is just not caught up yet.\n if (params.blockHash != null) {\n if (this._emitted[\"b:\" + params.blockHash] == null) { return null; }\n }\n\n // For block tags, if we are asking for a future block, we return null\n if (params.blockTag != null) {\n if (blockNumber > this._emitted.block) { return null; }\n }\n\n // Retry on the next block\n return undefined;\n }\n\n // Add transactions\n if (includeTransactions) {\n let blockNumber: number = null;\n for (let i = 0; i < block.transactions.length; i++) {\n const tx = block.transactions[i];\n if (tx.blockNumber == null) {\n tx.confirmations = 0;\n\n } else if (tx.confirmations == null) {\n if (blockNumber == null) {\n blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n }\n\n // Add the confirmations using the fast block number (pessimistic)\n let confirmations = (blockNumber - tx.blockNumber) + 1;\n if (confirmations <= 0) { confirmations = 1; }\n tx.confirmations = confirmations;\n }\n }\n return this.formatter.blockWithTransactions(block);\n }\n\n return this.formatter.block(block);\n }, { oncePoll: this });\n }\n\n getBlock(blockHashOrBlockTag: BlockTag | string | Promise<BlockTag | string>): Promise<Block> {\n return <Promise<Block>>(this._getBlock(blockHashOrBlockTag, false));\n }\n\n getBlockWithTransactions(blockHashOrBlockTag: BlockTag | string | Promise<BlockTag | string>): Promise<BlockWithTransactions> {\n return <Promise<BlockWithTransactions>>(this._getBlock(blockHashOrBlockTag, true));\n }\n\n async getTransaction(transactionHash: string | Promise<string>): Promise<TransactionResponse> {\n await this.getNetwork();\n transactionHash = await transactionHash;\n\n const params = { transactionHash: this.formatter.hash(transactionHash, true) };\n\n return poll(async () => {\n const result = await this.perform(\"getTransaction\", params);\n\n if (result == null) {\n if (this._emitted[\"t:\" + transactionHash] == null) {\n return null;\n }\n return undefined;\n }\n\n const tx = this.formatter.transactionResponse(result);\n\n if (tx.blockNumber == null) {\n tx.confirmations = 0;\n\n } else if (tx.confirmations == null) {\n const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n\n // Add the confirmations using the fast block number (pessimistic)\n let confirmations = (blockNumber - tx.blockNumber) + 1;\n if (confirmations <= 0) { confirmations = 1; }\n tx.confirmations = confirmations;\n }\n\n return this._wrapTransaction(tx);\n }, { oncePoll: this });\n }\n\n async getTransactionReceipt(transactionHash: string | Promise<string>): Promise<TransactionReceipt> {\n await this.getNetwork();\n\n transactionHash = await transactionHash;\n\n const params = { transactionHash: this.formatter.hash(transactionHash, true) };\n\n return poll(async () => {\n const result = await this.perform(\"getTransactionReceipt\", params);\n\n if (result == null) {\n if (this._emitted[\"t:\" + transactionHash] == null) {\n return null;\n }\n return undefined;\n }\n\n // \"geth-etc\" returns receipts before they are ready\n if (result.blockHash == null) { return undefined; }\n\n const receipt = this.formatter.receipt(result);\n\n if (receipt.blockNumber == null) {\n receipt.confirmations = 0;\n\n } else if (receipt.confirmations == null) {\n const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n\n // Add the confirmations using the fast block number (pessimistic)\n let confirmations = (blockNumber - receipt.blockNumber) + 1;\n if (confirmations <= 0) { confirmations = 1; }\n receipt.confirmations = confirmations;\n }\n\n return receipt;\n }, { oncePoll: this });\n }\n\n async getLogs(filter: Filter | FilterByBlockHash | Promise<Filter | FilterByBlockHash>): Promise<Array<Log>> {\n await this.getNetwork();\n const params = await resolveProperties({ filter: this._getFilter(filter) });\n const logs: Array<Log> = await this.perform(\"getLogs\", params);\n logs.forEach((log) => {\n if (log.removed == null) { log.removed = false; }\n });\n return Formatter.arrayOf(this.formatter.filterLog.bind(this.formatter))(logs);\n }\n\n async getEtherPrice(): Promise<number> {\n await this.getNetwork();\n return this.perform(\"getEtherPrice\", { });\n }\n\n async _getBlockTag(blockTag: BlockTag | Promise<BlockTag>): Promise<BlockTag> {\n blockTag = await blockTag;\n\n if (typeof(blockTag) === \"number\" && blockTag < 0) {\n if (blockTag % 1) {\n logger.throwArgumentError(\"invalid BlockTag\", \"blockTag\", blockTag);\n }\n\n let blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n blockNumber += blockTag;\n if (blockNumber < 0) { blockNumber = 0; }\n return this.formatter.blockTag(blockNumber)\n }\n\n return this.formatter.blockTag(blockTag);\n }\n\n\n async getResolver(name: string): Promise<Resolver> {\n const address = await this._getResolver(name);\n if (address == null) { return null; }\n return new Resolver(this, address, name);\n }\n\n async _getResolver(name: string): Promise<string> {\n // Get the resolver from the blockchain\n const network = await this.getNetwork();\n\n // No ENS...\n if (!network.ensAddress) {\n logger.throwError(\n \"network does not support ENS\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { operation: \"ENS\", network: network.name }\n );\n }\n\n // keccak256(\"resolver(bytes32)\")\n const transaction = {\n to: network.ensAddress,\n data: (\"0x0178b8bf\" + namehash(name).substring(2))\n };\n\n return this.formatter.callAddress(await this.call(transaction));\n }\n\n async resolveName(name: string | Promise<string>): Promise<string> {\n name = await name;\n\n // If it is already an address, nothing to resolve\n try {\n return Promise.resolve(this.formatter.address(name));\n } catch (error) {\n // If is is a hexstring, the address is bad (See #694)\n if (isHexString(name)) { throw error; }\n }\n\n if (typeof(name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name\", \"name\", name);\n }\n\n // Get the addr from the resovler\n const resolver = await this.getResolver(name);\n if (!resolver) { return null; }\n\n return await resolver.getAddress();\n }\n\n async lookupAddress(address: string | Promise<string>): Promise<string> {\n address = await address;\n address = this.formatter.address(address);\n\n const reverseName = address.substring(2).toLowerCase() + \".addr.reverse\";\n\n const resolverAddress = await this._getResolver(reverseName);\n if (!resolverAddress) { return null; }\n\n // keccak(\"name(bytes32)\")\n let bytes = arrayify(await this.call({\n to: resolverAddress,\n data: (\"0x691f3431\" + namehash(reverseName).substring(2))\n }));\n\n // Strip off the dynamic string pointer (0x20)\n if (bytes.length < 32 || !BigNumber.from(bytes.slice(0, 32)).eq(32)) { return null; }\n bytes = bytes.slice(32);\n\n // Not a length-prefixed string\n if (bytes.length < 32) { return null; }\n\n // Get the length of the string (from the length-prefix)\n const length = BigNumber.from(bytes.slice(0, 32)).toNumber();\n bytes = bytes.slice(32);\n\n // Length longer than available data\n if (length > bytes.length) { return null; }\n\n const name = toUtf8String(bytes.slice(0, length));\n\n // Make sure the reverse record matches the foward record\n const addr = await this.resolveName(name);\n if (addr != address) { return null; }\n\n return name;\n }\n\n perform(method: string, params: any): Promise<any> {\n return logger.throwError(method + \" not implemented\", Logger.errors.NOT_IMPLEMENTED, { operation: method });\n }\n\n _startEvent(event: Event): void {\n this.polling = (this._events.filter((e) => e.pollable()).length > 0);\n }\n\n _stopEvent(event: Event): void {\n this.polling = (this._events.filter((e) => e.pollable()).length > 0);\n }\n\n _addEventListener(eventName: EventType, listener: Listener, once: boolean): this {\n const event = new Event(getEventTag(eventName), listener, once)\n this._events.push(event);\n this._startEvent(event);\n\n return this;\n }\n\n on(eventName: EventType, listener: Listener): this {\n return this._addEventListener(eventName, listener, false);\n }\n\n once(eventName: EventType, listener: Listener): this {\n return this._addEventListener(eventName, listener, true);\n }\n\n\n emit(eventName: EventType, ...args: Array<any>): boolean {\n let result = false;\n\n let stopped: Array<Event> = [ ];\n\n let eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag) { return true; }\n\n setTimeout(() => {\n event.listener.apply(this, args);\n }, 0);\n\n result = true;\n\n if (event.once) {\n stopped.push(event);\n return false;\n }\n\n return true;\n });\n\n stopped.forEach((event) => { this._stopEvent(event); });\n\n return result;\n }\n\n listenerCount(eventName?: EventType): number {\n if (!eventName) { return this._events.length; }\n\n let eventTag = getEventTag(eventName);\n return this._events.filter((event) => {\n return (event.tag === eventTag);\n }).length;\n }\n\n listeners(eventName?: EventType): Array<Listener> {\n if (eventName == null) {\n return this._events.map((event) => event.listener);\n }\n\n let eventTag = getEventTag(eventName);\n return this._events\n .filter((event) => (event.tag === eventTag))\n .map((event) => event.listener);\n }\n\n off(eventName: EventType, listener?: Listener): this {\n if (listener == null) {\n return this.removeAllListeners(eventName);\n }\n\n const stopped: Array<Event> = [ ];\n\n let found = false;\n\n let eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag || event.listener != listener) { return true; }\n if (found) { return true; }\n found = true;\n stopped.push(event);\n return false;\n });\n\n stopped.forEach((event) => { this._stopEvent(event); });\n\n return this;\n }\n\n removeAllListeners(eventName?: EventType): this {\n let stopped: Array<Event> = [ ];\n if (eventName == null) {\n stopped = this._events;\n\n this._events = [ ];\n } else {\n const eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag) { return true; }\n stopped.push(event);\n return false;\n });\n }\n\n stopped.forEach((event) => { this._stopEvent(event); });\n\n return this;\n }\n}\n","\"use strict\";\n\n// See: https://github.com/ethereum/wiki/wiki/JSON-RPC\n\nimport { Provider, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { Signer, TypedDataDomain, TypedDataField, TypedDataSigner } from \"@ethersproject/abstract-signer\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { Bytes, hexlify, hexValue, isHexString } from \"@ethersproject/bytes\";\nimport { _TypedDataEncoder } from \"@ethersproject/hash\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { checkProperties, deepCopy, Deferrable, defineReadOnly, getStatic, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { ConnectionInfo, fetchJson, poll } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { BaseProvider, Event } from \"./base-provider\";\n\n\nconst errorGas = [ \"call\", \"estimateGas\" ];\n\nfunction checkError(method: string, error: any, params: any): any {\n // Undo the \"convenience\" some nodes are attempting to prevent backwards\n // incompatibility; maybe for v6 consider forwarding reverts as errors\n if (method === \"call\" && error.code === Logger.errors.SERVER_ERROR) {\n const e = error.error;\n if (e && e.message.match(\"reverted\") && isHexString(e.data)) {\n return e.data;\n }\n }\n\n let message = error.message;\n if (error.code === Logger.errors.SERVER_ERROR && error.error && typeof(error.error.message) === \"string\") {\n message = error.error.message;\n } else if (typeof(error.body) === \"string\") {\n message = error.body;\n } else if (typeof(error.responseText) === \"string\") {\n message = error.responseText;\n }\n message = (message || \"\").toLowerCase();\n\n const transaction = params.transaction || params.signedTransaction;\n\n // \"insufficient funds for gas * price + value + cost(data)\"\n if (message.match(/insufficient funds/)) {\n logger.throwError(\"insufficient funds for intrinsic transaction cost\", Logger.errors.INSUFFICIENT_FUNDS, {\n error, method, transaction\n });\n }\n\n // \"nonce too low\"\n if (message.match(/nonce too low/)) {\n logger.throwError(\"nonce has already been used\", Logger.errors.NONCE_EXPIRED, {\n error, method, transaction\n });\n }\n\n // \"replacement transaction underpriced\"\n if (message.match(/replacement transaction underpriced/)) {\n logger.throwError(\"replacement fee too low\", Logger.errors.REPLACEMENT_UNDERPRICED, {\n error, method, transaction\n });\n }\n\n if (errorGas.indexOf(method) >= 0 && message.match(/gas required exceeds allowance|always failing transaction|execution reverted/)) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error, method, transaction\n });\n }\n\n throw error;\n}\n\nfunction timer(timeout: number): Promise<any> {\n return new Promise(function(resolve) {\n setTimeout(resolve, timeout);\n });\n}\n\nfunction getResult(payload: { error?: { code?: number, data?: any, message?: string }, result?: any }): any {\n if (payload.error) {\n // @TODO: not any\n const error: any = new Error(payload.error.message);\n error.code = payload.error.code;\n error.data = payload.error.data;\n throw error;\n }\n\n return payload.result;\n}\n\nfunction getLowerCase(value: string): string {\n if (value) { return value.toLowerCase(); }\n return value;\n}\n\nconst _constructorGuard = {};\n\nexport class JsonRpcSigner extends Signer implements TypedDataSigner {\n readonly provider: JsonRpcProvider;\n _index: number;\n _address: string;\n\n constructor(constructorGuard: any, provider: JsonRpcProvider, addressOrIndex?: string | number) {\n logger.checkNew(new.target, JsonRpcSigner);\n\n super();\n\n if (constructorGuard !== _constructorGuard) {\n throw new Error(\"do not call the JsonRpcSigner constructor directly; use provider.getSigner\");\n }\n\n defineReadOnly(this, \"provider\", provider);\n\n if (addressOrIndex == null) { addressOrIndex = 0; }\n\n if (typeof(addressOrIndex) === \"string\") {\n defineReadOnly(this, \"_address\", this.provider.formatter.address(addressOrIndex));\n defineReadOnly(this, \"_index\", null);\n\n } else if (typeof(addressOrIndex) === \"number\") {\n defineReadOnly(this, \"_index\", addressOrIndex);\n defineReadOnly(this, \"_address\", null);\n\n } else {\n logger.throwArgumentError(\"invalid address or index\", \"addressOrIndex\", addressOrIndex);\n }\n }\n\n connect(provider: Provider): JsonRpcSigner {\n return logger.throwError(\"cannot alter JSON-RPC Signer connection\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"connect\"\n });\n }\n\n connectUnchecked(): JsonRpcSigner {\n return new UncheckedJsonRpcSigner(_constructorGuard, this.provider, this._address || this._index);\n }\n\n getAddress(): Promise<string> {\n if (this._address) {\n return Promise.resolve(this._address);\n }\n\n return this.provider.send(\"eth_accounts\", []).then((accounts) => {\n if (accounts.length <= this._index) {\n logger.throwError(\"unknown account #\" + this._index, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"getAddress\"\n });\n }\n return this.provider.formatter.address(accounts[this._index])\n });\n }\n\n sendUncheckedTransaction(transaction: Deferrable<TransactionRequest>): Promise<string> {\n transaction = shallowCopy(transaction);\n\n const fromAddress = this.getAddress().then((address) => {\n if (address) { address = address.toLowerCase(); }\n return address;\n });\n\n // The JSON-RPC for eth_sendTransaction uses 90000 gas; if the user\n // wishes to use this, it is easy to specify explicitly, otherwise\n // we look it up for them.\n if (transaction.gasLimit == null) {\n const estimate = shallowCopy(transaction);\n estimate.from = fromAddress;\n transaction.gasLimit = this.provider.estimateGas(estimate);\n }\n\n return resolveProperties({\n tx: resolveProperties(transaction),\n sender: fromAddress\n }).then(({ tx, sender }) => {\n if (tx.from != null) {\n if (tx.from.toLowerCase() !== sender) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", transaction);\n }\n } else {\n tx.from = sender;\n }\n\n const hexTx = (<any>this.provider.constructor).hexlifyTransaction(tx, { from: true });\n\n return this.provider.send(\"eth_sendTransaction\", [ hexTx ]).then((hash) => {\n return hash;\n }, (error) => {\n return checkError(\"sendTransaction\", error, hexTx);\n });\n });\n }\n\n signTransaction(transaction: Deferrable<TransactionRequest>): Promise<string> {\n return logger.throwError(\"signing transactions is unsupported\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"signTransaction\"\n });\n }\n\n sendTransaction(transaction: Deferrable<TransactionRequest>): Promise<TransactionResponse> {\n return this.sendUncheckedTransaction(transaction).then((hash) => {\n return poll(() => {\n return this.provider.getTransaction(hash).then((tx: TransactionResponse) => {\n if (tx === null) { return undefined; }\n return this.provider._wrapTransaction(tx, hash);\n });\n }, { onceBlock: this.provider }).catch((error: Error) => {\n (<any>error).transactionHash = hash;\n throw error;\n });\n });\n }\n\n async signMessage(message: Bytes | string): Promise<string> {\n const data = ((typeof(message) === \"string\") ? toUtf8Bytes(message): message);\n const address = await this.getAddress();\n\n // https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign\n return await this.provider.send(\"eth_sign\", [ address.toLowerCase(), hexlify(data) ]);\n }\n\n async _signTypedData(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): Promise<string> {\n // Populate any ENS names (in-place)\n const populated = await _TypedDataEncoder.resolveNames(domain, types, value, (name: string) => {\n return this.provider.resolveName(name);\n });\n\n const address = await this.getAddress();\n\n return await this.provider.send(\"eth_signTypedData_v4\", [\n address.toLowerCase(),\n JSON.stringify(_TypedDataEncoder.getPayload(populated.domain, types, populated.value))\n ]);\n }\n\n async unlock(password: string): Promise<boolean> {\n const provider = this.provider;\n\n const address = await this.getAddress();\n\n return provider.send(\"personal_unlockAccount\", [ address.toLowerCase(), password, null ]);\n }\n}\n\nclass UncheckedJsonRpcSigner extends JsonRpcSigner {\n sendTransaction(transaction: Deferrable<TransactionRequest>): Promise<TransactionResponse> {\n return this.sendUncheckedTransaction(transaction).then((hash) => {\n return <TransactionResponse>{\n hash: hash,\n nonce: null,\n gasLimit: null,\n gasPrice: null,\n data: null,\n value: null,\n chainId: null,\n confirmations: 0,\n from: null,\n wait: (confirmations?: number) => { return this.provider.waitForTransaction(hash, confirmations); }\n };\n });\n }\n}\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n chainId: true, data: true, gasLimit: true, gasPrice:true, nonce: true, to: true, value: true\n}\n\nexport class JsonRpcProvider extends BaseProvider {\n readonly connection: ConnectionInfo;\n\n _pendingFilter: Promise<number>;\n _nextId: number;\n\n constructor(url?: ConnectionInfo | string, network?: Networkish) {\n logger.checkNew(new.target, JsonRpcProvider);\n\n let networkOrReady: Networkish | Promise<Network> = network;\n\n // The network is unknown, query the JSON-RPC for it\n if (networkOrReady == null) {\n networkOrReady = new Promise((resolve, reject) => {\n setTimeout(() => {\n this.detectNetwork().then((network) => {\n resolve(network);\n }, (error) => {\n reject(error);\n });\n }, 0);\n });\n }\n\n super(networkOrReady);\n\n // Default URL\n if (!url) { url = getStatic<() => string>(this.constructor, \"defaultUrl\")(); }\n\n if (typeof(url) === \"string\") {\n defineReadOnly(this, \"connection\",Object.freeze({\n url: url\n }));\n } else {\n defineReadOnly(this, \"connection\", Object.freeze(shallowCopy(url)));\n }\n\n this._nextId = 42;\n }\n\n static defaultUrl(): string {\n return \"http:/\\/localhost:8545\";\n }\n\n async detectNetwork(): Promise<Network> {\n await timer(0);\n\n let chainId = null;\n try {\n chainId = await this.send(\"eth_chainId\", [ ]);\n } catch (error) {\n try {\n chainId = await this.send(\"net_version\", [ ]);\n } catch (error) { }\n }\n\n if (chainId != null) {\n const getNetwork = getStatic<(network: Networkish) => Network>(this.constructor, \"getNetwork\");\n try {\n return getNetwork(BigNumber.from(chainId).toNumber());\n } catch (error) {\n return logger.throwError(\"could not detect network\", Logger.errors.NETWORK_ERROR, {\n chainId: chainId,\n event: \"invalidNetwork\",\n serverError: error\n });\n }\n }\n\n return logger.throwError(\"could not detect network\", Logger.errors.NETWORK_ERROR, {\n event: \"noNetwork\"\n });\n }\n\n getSigner(addressOrIndex?: string | number): JsonRpcSigner {\n return new JsonRpcSigner(_constructorGuard, this, addressOrIndex);\n }\n\n getUncheckedSigner(addressOrIndex?: string | number): UncheckedJsonRpcSigner {\n return this.getSigner(addressOrIndex).connectUnchecked();\n }\n\n listAccounts(): Promise<Array<string>> {\n return this.send(\"eth_accounts\", []).then((accounts: Array<string>) => {\n return accounts.map((a) => this.formatter.address(a));\n });\n }\n\n send(method: string, params: Array<any>): Promise<any> {\n const request = {\n method: method,\n params: params,\n id: (this._nextId++),\n jsonrpc: \"2.0\"\n };\n\n this.emit(\"debug\", {\n action: \"request\",\n request: deepCopy(request),\n provider: this\n });\n\n return fetchJson(this.connection, JSON.stringify(request), getResult).then((result) => {\n this.emit(\"debug\", {\n action: \"response\",\n request: request,\n response: result,\n provider: this\n });\n\n return result;\n\n }, (error) => {\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: request,\n provider: this\n });\n\n throw error;\n });\n }\n\n prepareRequest(method: string, params: any): [ string, Array<any> ] {\n switch (method) {\n case \"getBlockNumber\":\n return [ \"eth_blockNumber\", [] ];\n\n case \"getGasPrice\":\n return [ \"eth_gasPrice\", [] ];\n\n case \"getBalance\":\n return [ \"eth_getBalance\", [ getLowerCase(params.address), params.blockTag ] ];\n\n case \"getTransactionCount\":\n return [ \"eth_getTransactionCount\", [ getLowerCase(params.address), params.blockTag ] ];\n\n case \"getCode\":\n return [ \"eth_getCode\", [ getLowerCase(params.address), params.blockTag ] ];\n\n case \"getStorageAt\":\n return [ \"eth_getStorageAt\", [ getLowerCase(params.address), params.position, params.blockTag ] ];\n\n case \"sendTransaction\":\n return [ \"eth_sendRawTransaction\", [ params.signedTransaction ] ]\n\n case \"getBlock\":\n if (params.blockTag) {\n return [ \"eth_getBlockByNumber\", [ params.blockTag, !!params.includeTransactions ] ];\n } else if (params.blockHash) {\n return [ \"eth_getBlockByHash\", [ params.blockHash, !!params.includeTransactions ] ];\n }\n return null;\n\n case \"getTransaction\":\n return [ \"eth_getTransactionByHash\", [ params.transactionHash ] ];\n\n case \"getTransactionReceipt\":\n return [ \"eth_getTransactionReceipt\", [ params.transactionHash ] ];\n\n case \"call\": {\n const hexlifyTransaction = getStatic<(t: TransactionRequest, a?: { [key: string]: boolean }) => { [key: string]: string }>(this.constructor, \"hexlifyTransaction\");\n return [ \"eth_call\", [ hexlifyTransaction(params.transaction, { from: true }), params.blockTag ] ];\n }\n\n case \"estimateGas\": {\n const hexlifyTransaction = getStatic<(t: TransactionRequest, a?: { [key: string]: boolean }) => { [key: string]: string }>(this.constructor, \"hexlifyTransaction\");\n return [ \"eth_estimateGas\", [ hexlifyTransaction(params.transaction, { from: true }) ] ];\n }\n\n case \"getLogs\":\n if (params.filter && params.filter.address != null) {\n params.filter.address = getLowerCase(params.filter.address);\n }\n return [ \"eth_getLogs\", [ params.filter ] ];\n\n default:\n break;\n }\n\n return null;\n }\n\n async perform(method: string, params: any): Promise<any> {\n const args = this.prepareRequest(method, params);\n\n if (args == null) {\n logger.throwError(method + \" not implemented\", Logger.errors.NOT_IMPLEMENTED, { operation: method });\n }\n try {\n return await this.send(args[0], args[1])\n } catch (error) {\n return checkError(method, error, params);\n }\n }\n\n _startEvent(event: Event): void {\n if (event.tag === \"pending\") { this._startPending(); }\n super._startEvent(event);\n }\n\n _startPending(): void {\n if (this._pendingFilter != null) { return; }\n const self = this;\n\n const pendingFilter: Promise<number> = this.send(\"eth_newPendingTransactionFilter\", []);\n this._pendingFilter = pendingFilter;\n\n pendingFilter.then(function(filterId) {\n function poll() {\n self.send(\"eth_getFilterChanges\", [ filterId ]).then(function(hashes: Array<string>) {\n if (self._pendingFilter != pendingFilter) { return null; }\n\n let seq = Promise.resolve();\n hashes.forEach(function(hash) {\n // @TODO: This should be garbage collected at some point... How? When?\n self._emitted[\"t:\" + hash.toLowerCase()] = \"pending\";\n seq = seq.then(function() {\n return self.getTransaction(hash).then(function(tx) {\n self.emit(\"pending\", tx);\n return null;\n });\n });\n });\n\n return seq.then(function() {\n return timer(1000);\n });\n }).then(function() {\n if (self._pendingFilter != pendingFilter) {\n self.send(\"eth_uninstallFilter\", [ filterId ]);\n return;\n }\n setTimeout(function() { poll(); }, 0);\n\n return null;\n }).catch((error: Error) => { });\n }\n poll();\n\n return filterId;\n }).catch((error: Error) => { });\n }\n\n _stopEvent(event: Event): void {\n if (event.tag === \"pending\" && this.listenerCount(\"pending\") === 0) {\n this._pendingFilter = null;\n }\n super._stopEvent(event);\n }\n\n\n // Convert an ethers.js transaction into a JSON-RPC transaction\n // - gasLimit => gas\n // - All values hexlified\n // - All numeric values zero-striped\n // - All addresses are lowercased\n // NOTE: This allows a TransactionRequest, but all values should be resolved\n // before this is called\n // @TODO: This will likely be removed in future versions and prepareRequest\n // will be the preferred method for this.\n static hexlifyTransaction(transaction: TransactionRequest, allowExtra?: { [key: string]: boolean }): { [key: string]: string } {\n // Check only allowed properties are given\n const allowed = shallowCopy(allowedTransactionKeys);\n if (allowExtra) {\n for (const key in allowExtra) {\n if (allowExtra[key]) { allowed[key] = true; }\n }\n }\n checkProperties(transaction, allowed);\n\n const result: { [key: string]: string } = {};\n\n // Some nodes (INFURA ropsten; INFURA mainnet is fine) do not like leading zeros.\n [\"gasLimit\", \"gasPrice\", \"nonce\", \"value\"].forEach(function(key) {\n if ((<any>transaction)[key] == null) { return; }\n const value = hexValue((<any>transaction)[key]);\n if (key === \"gasLimit\") { key = \"gas\"; }\n result[key] = value;\n });\n\n [\"from\", \"to\", \"data\"].forEach(function(key) {\n if ((<any>transaction)[key] == null) { return; }\n result[key] = hexlify((<any>transaction)[key]);\n });\n\n return result;\n }\n}\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\n\nlet WS: any = null;\n\ntry {\n WS = (WebSocket as any);\n if (WS == null) { throw new Error(\"inject please\"); }\n} catch (error) {\n const logger = new Logger(version);\n WS = function() {\n logger.throwError(\"WebSockets not supported in this environment\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new WebSocket()\"\n });\n }\n}\n//export default WS;\n//module.exports = WS;\nexport { WS as WebSocket };\n","\"use strict\";\n\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Event } from \"./base-provider\";\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\nimport { WebSocket } from \"./ws\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n/**\n * Notes:\n *\n * This provider differs a bit from the polling providers. One main\n * difference is how it handles consistency. The polling providers\n * will stall responses to ensure a consistent state, while this\n * WebSocket provider assumes the connected backend will manage this.\n *\n * For example, if a polling provider emits an event which indicats\n * the event occurred in blockhash XXX, a call to fetch that block by\n * its hash XXX, if not present will retry until it is present. This\n * can occur when querying a pool of nodes that are mildly out of sync\n * with each other.\n */\n\nlet NextId = 1;\n\nexport type InflightRequest = {\n callback: (error: Error, result: any) => void;\n payload: string;\n};\n\nexport type Subscription = {\n tag: string;\n processFunc: (payload: any) => void;\n};\n\n\n// For more info about the Real-time Event API see:\n// https://geth.ethereum.org/docs/rpc/pubsub\n\nexport class WebSocketProvider extends JsonRpcProvider {\n readonly _websocket: any;\n readonly _requests: { [ name: string ]: InflightRequest };\n readonly _detectNetwork: Promise<Network>;\n\n // Maps event tag to subscription ID (we dedupe identical events)\n readonly _subIds: { [ tag: string ]: Promise<string> };\n\n // Maps Subscription ID to Subscription\n readonly _subs: { [ name: string ]: Subscription };\n\n _wsReady: boolean;\n\n constructor(url: string, network?: Networkish) {\n // This will be added in the future; please open an issue to expedite\n if (network === \"any\") {\n logger.throwError(\"WebSocketProvider does not support 'any' network yet\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"network:any\"\n });\n }\n\n super(url, network);\n this._pollingInterval = -1;\n\n this._wsReady = false;\n\n defineReadOnly(this, \"_websocket\", new WebSocket(this.connection.url));\n defineReadOnly(this, \"_requests\", { });\n defineReadOnly(this, \"_subs\", { });\n defineReadOnly(this, \"_subIds\", { });\n defineReadOnly(this, \"_detectNetwork\", super.detectNetwork());\n\n // Stall sending requests until the socket is open...\n this._websocket.onopen = () => {\n this._wsReady = true;\n Object.keys(this._requests).forEach((id) => {\n this._websocket.send(this._requests[id].payload);\n });\n };\n\n this._websocket.onmessage = (messageEvent: { data: string }) => {\n const data = messageEvent.data;\n const result = JSON.parse(data);\n if (result.id != null) {\n const id = String(result.id);\n const request = this._requests[id];\n delete this._requests[id];\n\n if (result.result !== undefined) {\n request.callback(null, result.result);\n\n this.emit(\"debug\", {\n action: \"response\",\n request: JSON.parse(request.payload),\n response: result.result,\n provider: this\n });\n\n } else {\n let error: Error = null;\n if (result.error) {\n error = new Error(result.error.message || \"unknown error\");\n defineReadOnly(<any>error, \"code\", result.error.code || null);\n defineReadOnly(<any>error, \"response\", data);\n } else {\n error = new Error(\"unknown error\");\n }\n\n request.callback(error, undefined);\n\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: JSON.parse(request.payload),\n provider: this\n });\n\n }\n\n } else if (result.method === \"eth_subscription\") {\n // Subscription...\n const sub = this._subs[result.params.subscription];\n if (sub) {\n //this.emit.apply(this, );\n sub.processFunc(result.params.result)\n }\n\n } else {\n console.warn(\"this should not happen\");\n }\n };\n\n // This Provider does not actually poll, but we want to trigger\n // poll events for things that depend on them (like stalling for\n // block and transaction lookups)\n const fauxPoll = setInterval(() => {\n this.emit(\"poll\");\n }, 1000);\n if (fauxPoll.unref) { fauxPoll.unref(); }\n }\n\n detectNetwork(): Promise<Network> {\n return this._detectNetwork;\n }\n\n get pollingInterval(): number {\n return 0;\n }\n\n resetEventsBlock(blockNumber: number): void {\n logger.throwError(\"cannot reset events block on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resetEventBlock\"\n });\n }\n\n set pollingInterval(value: number) {\n logger.throwError(\"cannot set polling interval on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setPollingInterval\"\n });\n }\n\n async poll(): Promise<void> {\n return null;\n }\n\n set polling(value: boolean) {\n if (!value) { return; }\n\n logger.throwError(\"cannot set polling on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setPolling\"\n });\n }\n\n send(method: string, params?: Array<any>): Promise<any> {\n const rid = NextId++;\n\n return new Promise((resolve, reject) => {\n function callback(error: Error, result: any) {\n if (error) { return reject(error); }\n return resolve(result);\n }\n\n const payload = JSON.stringify({\n method: method,\n params: params,\n id: rid,\n jsonrpc: \"2.0\"\n });\n\n this.emit(\"debug\", {\n action: \"request\",\n request: JSON.parse(payload),\n provider: this\n });\n\n this._requests[String(rid)] = { callback, payload };\n\n if (this._wsReady) { this._websocket.send(payload); }\n });\n }\n\n static defaultUrl(): string {\n return \"ws:/\\/localhost:8546\";\n }\n\n async _subscribe(tag: string, param: Array<any>, processFunc: (result: any) => void): Promise<void> {\n let subIdPromise = this._subIds[tag];\n if (subIdPromise == null) {\n subIdPromise = Promise.all(param).then((param) => {\n return this.send(\"eth_subscribe\", param);\n });\n this._subIds[tag] = subIdPromise;\n }\n const subId = await subIdPromise;\n this._subs[subId] = { tag, processFunc };\n }\n\n _startEvent(event: Event): void {\n switch (event.type) {\n case \"block\":\n this._subscribe(\"block\", [ \"newHeads\" ], (result: any) => {\n const blockNumber = BigNumber.from(result.number).toNumber();\n this._emitted.block = blockNumber;\n this.emit(\"block\", blockNumber);\n });\n break;\n\n case \"pending\":\n this._subscribe(\"pending\", [ \"newPendingTransactions\" ], (result: any) => {\n this.emit(\"pending\", result);\n });\n break;\n\n case \"filter\":\n this._subscribe(event.tag, [ \"logs\", this._getFilter(event.filter) ], (result: any) => {\n if (result.removed == null) { result.removed = false; }\n this.emit(event.filter, this.formatter.filterLog(result));\n });\n break;\n\n case \"tx\": {\n const emitReceipt = (event: Event) => {\n const hash = event.hash;\n this.getTransactionReceipt(hash).then((receipt) => {\n if (!receipt) { return; }\n this.emit(hash, receipt);\n });\n };\n\n // In case it is already mined\n emitReceipt(event);\n\n // To keep things simple, we start up a single newHeads subscription\n // to keep an eye out for transactions we are watching for.\n // Starting a subscription for an event (i.e. \"tx\") that is already\n // running is (basically) a nop.\n this._subscribe(\"tx\", [ \"newHeads\" ], (result: any) => {\n this._events.filter((e) => (e.type === \"tx\")).forEach(emitReceipt);\n });\n break;\n }\n\n // Nothing is needed\n case \"debug\":\n case \"poll\":\n case \"willPoll\":\n case \"didPoll\":\n case \"error\":\n break;\n\n default:\n console.log(\"unhandled:\", event);\n break;\n }\n }\n\n _stopEvent(event: Event): void {\n let tag = event.tag;\n\n if (event.type === \"tx\") {\n // There are remaining transaction event listeners\n if (this._events.filter((e) => (e.type === \"tx\")).length) {\n return;\n }\n tag = \"tx\";\n } else if (this.listenerCount(event.event)) {\n // There are remaining event listeners\n return;\n }\n\n const subId = this._subIds[tag];\n if (!subId) { return; }\n\n delete this._subIds[tag];\n subId.then((subId) => {\n if (!this._subs[subId]) { return; }\n delete this._subs[subId];\n this.send(\"eth_unsubscribe\", [ subId ]);\n });\n }\n\n async destroy(): Promise<void> {\n // Wait until we have connected before trying to disconnect\n if (this._websocket.readyState === WebSocket.CONNECTING) {\n await (new Promise((resolve) => {\n this._websocket.onopen = function() {\n resolve(true);\n };\n\n this._websocket.onerror = function() {\n resolve(false);\n };\n }));\n }\n\n // Hangup\n // See: https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes\n this._websocket.close(1000);\n }\n}\n","\n\"use strict\";\n\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly, getStatic } from \"@ethersproject/properties\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { CommunityResourcable } from \"./formatter\";\nimport { JsonRpcProvider, JsonRpcSigner } from \"./json-rpc-provider\";\n\ntype getUrlFunc = (network: Network, apiKey: string) => string | ConnectionInfo;\n\n// A StaticJsonRpcProvider is useful when you *know* for certain that\n// the backend will never change, as it never calls eth_chainId to\n// verify its backend. However, if the backend does change, the effects\n// are undefined and may include:\n// - inconsistent results\n// - locking up the UI\n// - block skew warnings\n// - wrong results\n// If the network is not explicit (i.e. auto-detection is expected), the\n// node MUST be running and available to respond to requests BEFORE this\n// is instantiated.\nexport class StaticJsonRpcProvider extends JsonRpcProvider {\n async detectNetwork(): Promise<Network> {\n let network = this.network;\n if (network == null) {\n network = await super.detectNetwork();\n\n if (!network) {\n logger.throwError(\"no network detected\", Logger.errors.UNKNOWN_ERROR, { });\n }\n\n // If still not set, set it\n if (this._network == null) {\n // A static network does not support \"any\"\n defineReadOnly(this, \"_network\", network);\n\n this.emit(\"network\", network, null);\n }\n }\n return network;\n }\n}\n\nexport abstract class UrlJsonRpcProvider extends StaticJsonRpcProvider implements CommunityResourcable {\n readonly apiKey: any;\n\n constructor(network?: Networkish, apiKey?: any) {\n logger.checkAbstract(new.target, UrlJsonRpcProvider);\n\n // Normalize the Network and API Key\n network = getStatic<(network: Networkish) => Network>(new.target, \"getNetwork\")(network);\n apiKey = getStatic<(apiKey: string) => string>(new.target, \"getApiKey\")(apiKey);\n\n const connection = getStatic<getUrlFunc>(new.target, \"getUrl\")(network, apiKey);\n\n super(connection, network);\n\n if (typeof(apiKey) === \"string\") {\n defineReadOnly(this, \"apiKey\", apiKey);\n } else if (apiKey != null) {\n Object.keys(apiKey).forEach((key) => {\n defineReadOnly<any, any>(this, key, apiKey[key]);\n });\n }\n }\n\n _startPending(): void {\n logger.warn(\"WARNING: API provider does not support pending filters\");\n }\n\n isCommunityResource(): boolean {\n return false;\n }\n\n getSigner(address?: string): JsonRpcSigner {\n return logger.throwError(\n \"API provider does not support signing\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { operation: \"getSigner\" }\n );\n }\n\n listAccounts(): Promise<Array<string>> {\n return Promise.resolve([]);\n }\n\n // Return a defaultApiKey if null, otherwise validate the API key\n static getApiKey(apiKey: any): any {\n return apiKey;\n }\n\n // Returns the url or connection for the given network and API key. The\n // API key will have been sanitized by the getApiKey first, so any validation\n // or transformations can be done there.\n static getUrl(network: Network, apiKey: any): string | ConnectionInfo {\n return logger.throwError(\"not implemented; sub-classes must override getUrl\", Logger.errors.NOT_IMPLEMENTED, {\n operation: \"getUrl\"\n });\n }\n}\n","\"use strict\";\n\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { CommunityResourcable, showThrottleMessage } from \"./formatter\";\nimport { WebSocketProvider } from \"./websocket-provider\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\n// This key was provided to ethers.js by Alchemy to be used by the\n// default provider, but it is recommended that for your own\n// production environments, that you acquire your own API key at:\n// https://dashboard.alchemyapi.io\n\nconst defaultApiKey = \"_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC\"\n\nexport class AlchemyWebSocketProvider extends WebSocketProvider implements CommunityResourcable {\n readonly apiKey: string;\n\n constructor(network?: Networkish, apiKey?: any) {\n const provider = new AlchemyProvider(network, apiKey);\n\n const url = provider.connection.url.replace(/^http/i, \"ws\")\n .replace(\".alchemyapi.\", \".ws.alchemyapi.\");\n\n super(url, provider.network);\n defineReadOnly(this, \"apiKey\", provider.apiKey);\n }\n\n isCommunityResource(): boolean {\n return (this.apiKey === defaultApiKey);\n }\n}\n\nexport class AlchemyProvider extends UrlJsonRpcProvider {\n\n static getWebSocketProvider(network?: Networkish, apiKey?: any): AlchemyWebSocketProvider {\n return new AlchemyWebSocketProvider(network, apiKey);\n }\n\n static getApiKey(apiKey: any): any {\n if (apiKey == null) { return defaultApiKey; }\n if (apiKey && typeof(apiKey) !== \"string\") {\n logger.throwArgumentError(\"invalid apiKey\", \"apiKey\", apiKey);\n }\n return apiKey;\n }\n\n static getUrl(network: Network, apiKey: string): ConnectionInfo {\n let host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"eth-mainnet.alchemyapi.io/v2/\";\n break;\n case \"ropsten\":\n host = \"eth-ropsten.alchemyapi.io/v2/\";\n break;\n case \"rinkeby\":\n host = \"eth-rinkeby.alchemyapi.io/v2/\";\n break;\n case \"goerli\":\n host = \"eth-goerli.alchemyapi.io/v2/\";\n break;\n case \"kovan\":\n host = \"eth-kovan.alchemyapi.io/v2/\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n\n return {\n allowGzip: true,\n url: (\"https:/\" + \"/\" + host + apiKey),\n throttleCallback: (attempt: number, url: string) => {\n if (apiKey === defaultApiKey) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n }\n\n isCommunityResource(): boolean {\n return (this.apiKey === defaultApiKey);\n }\n}\n","\"use strict\";\n\nimport { Network } from \"@ethersproject/networks\";\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport class CloudflareProvider extends UrlJsonRpcProvider {\n\n static getApiKey(apiKey: any): any {\n if (apiKey != null) {\n logger.throwArgumentError(\"apiKey not supported for cloudflare\", \"apiKey\", apiKey);\n }\n return null;\n }\n\n static getUrl(network: Network, apiKey?: any): string {\n let host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"https://cloudflare-eth.com/\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n\n return host;\n }\n\n async perform(method: string, params: any): Promise<any> {\n // The Cloudflare provider does not support eth_blockNumber,\n // so we get the latest block and pull it from that\n if (method === \"getBlockNumber\") {\n const block = await super.perform(\"getBlock\", { blockTag: \"latest\" });\n return block.number;\n }\n\n return super.perform(method, params);\n }\n}\n","\"use strict\";\n\nimport { BlockTag, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { hexlify, hexValue, isHexString } from \"@ethersproject/bytes\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { deepCopy, defineReadOnly } from \"@ethersproject/properties\";\nimport { ConnectionInfo, fetchJson } from \"@ethersproject/web\";\n\nimport { showThrottleMessage } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { BaseProvider } from \"./base-provider\";\n\n\n// The transaction has already been sanitized by the calls in Provider\nfunction getTransactionPostData(transaction: TransactionRequest): Record<string, string> {\n const result: Record<string, string> = { };\n for (let key in transaction) {\n if ((<any>transaction)[key] == null) { continue; }\n let value = hexlify((<any>transaction)[key]);\n // Quantity-types require no leading zero, unless 0\n if ((<any>{ gasLimit: true, gasPrice: true, nonce: true, value: true })[key]) {\n value = hexValue(value);\n }\n result[key] = value;\n }\n return result;\n}\n\nfunction getResult(result: { status?: number, message?: string, result?: any }): any {\n // getLogs, getHistory have weird success responses\n if (result.status == 0 && (result.message === \"No records found\" || result.message === \"No transactions found\")) {\n return result.result;\n }\n\n if (result.status != 1 || result.message != \"OK\") {\n const error: any = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n if ((result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n error.throttleRetry = true;\n }\n throw error;\n }\n\n return result.result;\n}\n\nfunction getJsonResult(result: { jsonrpc: string, result?: any, error?: { code?: number, data?: any, message?: string} } ): any {\n // This response indicates we are being throttled\n if (result && (<any>result).status == 0 && (<any>result).message == \"NOTOK\" && (result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n const error: any = new Error(\"throttled response\");\n error.result = JSON.stringify(result);\n error.throttleRetry = true;\n throw error;\n }\n\n if (result.jsonrpc != \"2.0\") {\n // @TODO: not any\n const error: any = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n throw error;\n }\n\n if (result.error) {\n // @TODO: not any\n const error: any = new Error(result.error.message || \"unknown error\");\n if (result.error.code) { error.code = result.error.code; }\n if (result.error.data) { error.data = result.error.data; }\n throw error;\n }\n\n return result.result;\n}\n\n// The blockTag was normalized as a string by the Provider pre-perform operations\nfunction checkLogTag(blockTag: string): number | \"latest\" {\n if (blockTag === \"pending\") { throw new Error(\"pending not supported\"); }\n if (blockTag === \"latest\") { return blockTag; }\n\n return parseInt(blockTag.substring(2), 16);\n}\n\n\nconst defaultApiKey = \"9D13ZE7XSBTJ94N9BNJ2MA33VMAY2YPIRB\";\n\nfunction checkError(method: string, error: any, transaction: any): any {\n // Undo the \"convenience\" some nodes are attempting to prevent backwards\n // incompatibility; maybe for v6 consider forwarding reverts as errors\n if (method === \"call\" && error.code === Logger.errors.SERVER_ERROR) {\n const e = error.error;\n if (e && e.message.match(\"reverted\") && isHexString(e.data)) {\n return e.data;\n }\n }\n\n // Get the message from any nested error structure\n let message = error.message;\n if (error.code === Logger.errors.SERVER_ERROR) {\n if (error.error && typeof(error.error.message) === \"string\") {\n message = error.error.message;\n } else if (typeof(error.body) === \"string\") {\n message = error.body;\n } else if (typeof(error.responseText) === \"string\") {\n message = error.responseText;\n }\n }\n message = (message || \"\").toLowerCase();\n\n // \"Insufficient funds. The account you tried to send transaction from does not have enough funds. Required 21464000000000 and got: 0\"\n if (message.match(/insufficient funds/)) {\n logger.throwError(\"insufficient funds for intrinsic transaction cost\", Logger.errors.INSUFFICIENT_FUNDS, {\n error, method, transaction\n });\n }\n\n // \"Transaction with the same hash was already imported.\"\n if (message.match(/same hash was already imported|transaction nonce is too low/)) {\n logger.throwError(\"nonce has already been used\", Logger.errors.NONCE_EXPIRED, {\n error, method, transaction\n });\n }\n\n // \"Transaction gas price is too low. There is another transaction with same nonce in the queue. Try increasing the gas price or incrementing the nonce.\"\n if (message.match(/another transaction with same nonce/)) {\n logger.throwError(\"replacement fee too low\", Logger.errors.REPLACEMENT_UNDERPRICED, {\n error, method, transaction\n });\n }\n\n if (message.match(/execution failed due to an exception/)) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error, method, transaction\n });\n }\n\n throw error;\n}\n\nexport class EtherscanProvider extends BaseProvider{\n readonly baseUrl: string;\n readonly apiKey: string;\n\n constructor(network?: Networkish, apiKey?: string) {\n logger.checkNew(new.target, EtherscanProvider);\n\n super(network);\n\n let name = \"invalid\";\n if (this.network) { name = this.network.name; }\n\n let baseUrl = null;\n switch(name) {\n case \"homestead\":\n baseUrl = \"https://api.etherscan.io\";\n break;\n case \"ropsten\":\n baseUrl = \"https://api-ropsten.etherscan.io\";\n break;\n case \"rinkeby\":\n baseUrl = \"https://api-rinkeby.etherscan.io\";\n break;\n case \"kovan\":\n baseUrl = \"https://api-kovan.etherscan.io\";\n break;\n case \"goerli\":\n baseUrl = \"https://api-goerli.etherscan.io\";\n break;\n default:\n throw new Error(\"unsupported network\");\n }\n\n defineReadOnly(this, \"baseUrl\", baseUrl);\n defineReadOnly(this, \"apiKey\", apiKey || defaultApiKey);\n }\n\n async detectNetwork(): Promise<Network> {\n return this.network;\n }\n\n async perform(method: string, params: any): Promise<any> {\n let url = this.baseUrl + \"/api\";\n\n let apiKey = \"\";\n if (this.apiKey) { apiKey += \"&apikey=\" + this.apiKey; }\n\n const get = async (url: string, payload: Record<string, string>, procFunc?: (value: any) => any): Promise<any> => {\n this.emit(\"debug\", {\n action: \"request\",\n request: url,\n provider: this\n });\n\n\n const connection: ConnectionInfo = {\n url: url,\n throttleSlotInterval: 1000,\n throttleCallback: (attempt: number, url: string) => {\n if (this.isCommunityResource()) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n\n let payloadStr: string = null;\n if (payload) {\n connection.headers = { \"content-type\": \"application/x-www-form-urlencoded; charset=UTF-8\" };\n payloadStr = Object.keys(payload).map((key) => {\n return `${ key }=${ payload[key] }`\n }).join(\"&\");\n }\n\n const result = await fetchJson(connection, payloadStr, procFunc || getJsonResult);\n\n this.emit(\"debug\", {\n action: \"response\",\n request: url,\n response: deepCopy(result),\n provider: this\n });\n\n return result;\n };\n\n switch (method) {\n case \"getBlockNumber\":\n url += \"?module=proxy&action=eth_blockNumber\" + apiKey;\n return get(url, null);\n\n case \"getGasPrice\":\n url += \"?module=proxy&action=eth_gasPrice\" + apiKey;\n return get(url, null);\n\n case \"getBalance\":\n // Returns base-10 result\n url += \"?module=account&action=balance&address=\" + params.address;\n url += \"&tag=\" + params.blockTag + apiKey;\n return get(url, null, getResult);\n\n case \"getTransactionCount\":\n url += \"?module=proxy&action=eth_getTransactionCount&address=\" + params.address;\n url += \"&tag=\" + params.blockTag + apiKey;\n return get(url, null);\n\n\n case \"getCode\":\n url += \"?module=proxy&action=eth_getCode&address=\" + params.address;\n url += \"&tag=\" + params.blockTag + apiKey;\n return get(url, null);\n\n case \"getStorageAt\":\n url += \"?module=proxy&action=eth_getStorageAt&address=\" + params.address;\n url += \"&position=\" + params.position;\n url += \"&tag=\" + params.blockTag + apiKey;\n return get(url, null);\n\n\n case \"sendTransaction\":\n return get(url, {\n module: \"proxy\",\n action: \"eth_sendRawTransaction\",\n hex: params.signedTransaction,\n apikey: this.apiKey\n }).catch((error) => {\n return checkError(\"sendTransaction\", error, params.signedTransaction);\n });\n\n case \"getBlock\":\n if (params.blockTag) {\n url += \"?module=proxy&action=eth_getBlockByNumber&tag=\" + params.blockTag;\n if (params.includeTransactions) {\n url += \"&boolean=true\";\n } else {\n url += \"&boolean=false\";\n }\n url += apiKey;\n return get(url, null);\n }\n throw new Error(\"getBlock by blockHash not implemented\");\n\n case \"getTransaction\":\n url += \"?module=proxy&action=eth_getTransactionByHash&txhash=\" + params.transactionHash;\n url += apiKey;\n return get(url, null);\n\n case \"getTransactionReceipt\":\n url += \"?module=proxy&action=eth_getTransactionReceipt&txhash=\" + params.transactionHash;\n url += apiKey;\n return get(url, null);\n\n\n case \"call\": {\n if (params.blockTag !== \"latest\") {\n throw new Error(\"EtherscanProvider does not support blockTag for call\");\n }\n\n const postData = getTransactionPostData(params.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_call\";\n postData.apikey = this.apiKey;\n\n try {\n return await get(url, postData);\n } catch (error) {\n return checkError(\"call\", error, params.transaction);\n }\n }\n\n case \"estimateGas\": {\n const postData = getTransactionPostData(params.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_estimateGas\";\n postData.apikey = this.apiKey;\n\n try {\n return await get(url, postData);\n } catch (error) {\n return checkError(\"estimateGas\", error, params.transaction);\n }\n }\n\n case \"getLogs\": {\n url += \"?module=logs&action=getLogs\";\n\n if (params.filter.fromBlock) {\n url += \"&fromBlock=\" + checkLogTag(params.filter.fromBlock);\n }\n\n if (params.filter.toBlock) {\n url += \"&toBlock=\" + checkLogTag(params.filter.toBlock);\n }\n\n if (params.filter.address) {\n url += \"&address=\" + params.filter.address;\n }\n\n // @TODO: We can handle slightly more complicated logs using the logs API\n if (params.filter.topics && params.filter.topics.length > 0) {\n if (params.filter.topics.length > 1) {\n logger.throwError(\"unsupported topic count\", Logger.errors.UNSUPPORTED_OPERATION, { topics: params.filter.topics });\n }\n\n if (params.filter.topics.length === 1) {\n const topic0 = params.filter.topics[0];\n if (typeof(topic0) !== \"string\" || topic0.length !== 66) {\n logger.throwError(\"unsupported topic format\", Logger.errors.UNSUPPORTED_OPERATION, { topic0: topic0 });\n }\n url += \"&topic0=\" + topic0;\n }\n }\n\n url += apiKey;\n\n const logs: Array<any> = await get(url, null, getResult);\n\n // Cache txHash => blockHash\n let blocks: { [tag: string]: string } = {};\n\n // Add any missing blockHash to the logs\n for (let i = 0; i < logs.length; i++) {\n const log = logs[i];\n if (log.blockHash != null) { continue; }\n if (blocks[log.blockNumber] == null) {\n const block = await this.getBlock(log.blockNumber);\n if (block) {\n blocks[log.blockNumber] = block.hash;\n }\n }\n log.blockHash = blocks[log.blockNumber];\n }\n\n return logs;\n }\n\n case \"getEtherPrice\":\n if (this.network.name !== \"homestead\") { return 0.0; }\n url += \"?module=stats&action=ethprice\";\n url += apiKey;\n return parseFloat((await get(url, null, getResult)).ethusd);\n\n default:\n break;\n }\n\n return super.perform(method, params);\n }\n\n // @TODO: Allow startBlock and endBlock to be Promises\n getHistory(addressOrName: string | Promise<string>, startBlock?: BlockTag, endBlock?: BlockTag): Promise<Array<TransactionResponse>> {\n\n let url = this.baseUrl;\n\n let apiKey = \"\";\n if (this.apiKey) { apiKey += \"&apikey=\" + this.apiKey; }\n\n if (startBlock == null) { startBlock = 0; }\n if (endBlock == null) { endBlock = 99999999; }\n\n return this.resolveName(addressOrName).then((address) => {\n url += \"/api?module=account&action=txlist&address=\" + address;\n url += \"&startblock=\" + startBlock;\n url += \"&endblock=\" + endBlock;\n url += \"&sort=asc\" + apiKey;\n\n this.emit(\"debug\", {\n action: \"request\",\n request: url,\n provider: this\n });\n\n const connection = {\n url: url,\n throttleSlotInterval: 1000,\n throttleCallback: (attempt: number, url: string) => {\n if (this.apiKey === defaultApiKey) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n }\n\n return fetchJson(connection, null, getResult).then((result: Array<any>) => {\n this.emit(\"debug\", {\n action: \"response\",\n request: url,\n response: deepCopy(result),\n provider: this\n });\n\n let output: Array<TransactionResponse> = [];\n result.forEach((tx) => {\n [\"contractAddress\", \"to\"].forEach(function(key) {\n if (tx[key] == \"\") { delete tx[key]; }\n });\n if (tx.creates == null && tx.contractAddress != null) {\n tx.creates = tx.contractAddress;\n }\n let item = this.formatter.transactionResponse(tx);\n if (tx.timeStamp) { item.timestamp = parseInt(tx.timeStamp); }\n output.push(item);\n });\n return output;\n });\n });\n }\n\n isCommunityResource(): boolean {\n return (this.apiKey === defaultApiKey);\n }\n}\n","\"use strict\";\n\nimport { Block, BlockWithTransactions, Provider } from \"@ethersproject/abstract-provider\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { Network } from \"@ethersproject/networks\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { shuffled } from \"@ethersproject/random\";\nimport { poll } from \"@ethersproject/web\";\n\nimport { BaseProvider } from \"./base-provider\";\nimport { isCommunityResource } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction now() { return (new Date()).getTime(); }\n\n// Returns to network as long as all agree, or null if any is null.\n// Throws an error if any two networks do not match.\nfunction checkNetworks(networks: Array<Network>): Network {\n let result = null;\n\n for (let i = 0; i < networks.length; i++) {\n const network = networks[i];\n\n // Null! We do not know our network; bail.\n if (network == null) { return null; }\n\n if (result) {\n // Make sure the network matches the previous networks\n if (!(result.name === network.name && result.chainId === network.chainId &&\n ((result.ensAddress === network.ensAddress) || (result.ensAddress == null && network.ensAddress == null)))) {\n\n logger.throwArgumentError(\"provider mismatch\", \"networks\", networks);\n }\n } else {\n result = network;\n }\n }\n\n return result;\n}\n\nfunction median(values: Array<number>, maxDelta?: number): number {\n values = values.slice().sort();\n const middle = Math.floor(values.length / 2);\n\n // Odd length; take the middle\n if (values.length % 2) {\n return values[middle];\n }\n\n // Even length; take the average of the two middle\n const a = values[middle - 1], b = values[middle];\n\n if (maxDelta != null && Math.abs(a - b) > maxDelta) {\n return null;\n }\n\n return (a + b) / 2;\n}\n\nfunction serialize(value: any): string {\n if (value === null) {\n return \"null\";\n } else if (typeof(value) === \"number\" || typeof(value) === \"boolean\") {\n return JSON.stringify(value);\n } else if (typeof(value) === \"string\") {\n return value;\n } else if (BigNumber.isBigNumber(value)) {\n return value.toString();\n } else if (Array.isArray(value)) {\n return JSON.stringify(value.map((i) => serialize(i)));\n } else if (typeof(value) === \"object\") {\n const keys = Object.keys(value);\n keys.sort();\n return \"{\" + keys.map((key) => {\n let v = value[key];\n if (typeof(v) === \"function\") {\n v = \"[function]\";\n } else {\n v = serialize(v);\n }\n return JSON.stringify(key) + \":\" + v;\n }).join(\",\") + \"}\";\n }\n\n throw new Error(\"unknown value type: \" + typeof(value));\n}\n\n// Next request ID to use for emitting debug info\nlet nextRid = 1;\n\n\nexport interface FallbackProviderConfig {\n // The Provider\n provider: Provider;\n\n // The priority to favour this Provider; higher values are used first\n priority?: number;\n\n // Timeout before also triggering the next provider; this does not stop\n // this provider and if its result comes back before a quorum is reached\n // it will be incorporated into the vote\n // - lower values will cause more network traffic but may result in a\n // faster retult.\n stallTimeout?: number;\n\n // How much this provider contributes to the quorum; sometimes a specific\n // provider may be more reliable or trustworthy than others, but usually\n // this should be left as the default\n weight?: number;\n};\n\n// A Staller is used to provide a delay to give a Provider a chance to response\n// before asking the next Provider to try.\ntype Staller = {\n wait: (func: () => void) => Promise<void>\n getPromise: () => Promise<void>,\n cancel: () => void\n};\n\nfunction stall(duration: number): Staller {\n let cancel: () => void = null;\n\n let timer: NodeJS.Timer = null;\n let promise = <Promise<void>>(new Promise((resolve) => {\n cancel = function() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n resolve();\n }\n timer = setTimeout(cancel, duration);\n }));\n\n const wait = (func: () => void) => {\n promise = promise.then(func);\n return promise;\n }\n\n function getPromise(): Promise<void> {\n return promise;\n }\n\n return { cancel, getPromise, wait };\n}\n\nconst ForwardErrors = [\n Logger.errors.CALL_EXCEPTION,\n Logger.errors.INSUFFICIENT_FUNDS,\n Logger.errors.NONCE_EXPIRED,\n Logger.errors.REPLACEMENT_UNDERPRICED,\n Logger.errors.UNPREDICTABLE_GAS_LIMIT\n];\n\nconst ForwardProperties = [\n \"address\",\n \"args\",\n \"errorArgs\",\n \"errorSignature\",\n \"method\",\n \"transaction\",\n];\n\n\n// @TODO: Make this an object with staller and cancel built-in\ninterface RunningConfig extends FallbackProviderConfig {\n start?: number;\n done?: boolean;\n cancelled?: boolean;\n runner?: Promise<any>;\n staller?: Staller;\n result?: any;\n error?: Error;\n};\n\nfunction exposeDebugConfig(config: RunningConfig, now?: number): any {\n const result: any = {\n weight: config.weight\n };\n Object.defineProperty(result, \"provider\", { get: () => config.provider });\n if (config.start) { result.start = config.start; }\n if (now) { result.duration = (now - config.start); }\n if (config.done) {\n if (config.error) {\n result.error = config.error;\n } else {\n result.result = config.result || null;\n }\n }\n return result;\n}\n\nfunction normalizedTally(normalize: (value: any) => string, quorum: number): (configs: Array<RunningConfig>) => any {\n return function(configs: Array<RunningConfig>): any {\n\n // Count the votes for each result\n const tally: { [ key: string]: { count: number, result: any } } = { };\n configs.forEach((c) => {\n const value = normalize(c.result);\n if (!tally[value]) { tally[value] = { count: 0, result: c.result }; }\n tally[value].count++;\n });\n\n // Check for a quorum on any given result\n const keys = Object.keys(tally);\n for (let i = 0; i < keys.length; i++) {\n const check = tally[keys[i]];\n if (check.count >= quorum) {\n return check.result;\n }\n }\n\n // No quroum\n return undefined;\n }\n}\nfunction getProcessFunc(provider: FallbackProvider, method: string, params: { [ key: string ]: any }): (configs: Array<RunningConfig>) => any {\n\n let normalize = serialize;\n\n switch (method) {\n case \"getBlockNumber\":\n // Return the median value, unless there is (median + 1) is also\n // present, in which case that is probably true and the median\n // is going to be stale soon. In the event of a malicious node,\n // the lie will be true soon enough.\n return function(configs: Array<RunningConfig>): number {\n const values = configs.map((c) => c.result);\n\n // Get the median block number\n let blockNumber = median(configs.map((c) => c.result), 2);\n if (blockNumber == null) { return undefined; }\n\n blockNumber = Math.ceil(blockNumber);\n\n // If the next block height is present, its prolly safe to use\n if (values.indexOf(blockNumber + 1) >= 0) { blockNumber++; }\n\n // Don't ever roll back the blockNumber\n if (blockNumber >= provider._highestBlockNumber) {\n provider._highestBlockNumber = blockNumber;\n }\n\n return provider._highestBlockNumber;\n };\n\n case \"getGasPrice\":\n // Return the middle (round index up) value, similar to median\n // but do not average even entries and choose the higher.\n // Malicious actors must compromise 50% of the nodes to lie.\n return function(configs: Array<RunningConfig>): BigNumber {\n const values = configs.map((c) => c.result);\n values.sort();\n return values[Math.floor(values.length / 2)];\n }\n\n case \"getEtherPrice\":\n // Returns the median price. Malicious actors must compromise at\n // least 50% of the nodes to lie (in a meaningful way).\n return function(configs: Array<RunningConfig>): number {\n return median(configs.map((c) => c.result));\n }\n\n // No additional normalizing required; serialize is enough\n case \"getBalance\":\n case \"getTransactionCount\":\n case \"getCode\":\n case \"getStorageAt\":\n case \"call\":\n case \"estimateGas\":\n case \"getLogs\":\n break;\n\n // We drop the confirmations from transactions as it is approximate\n case \"getTransaction\":\n case \"getTransactionReceipt\":\n normalize = function(tx: any): string {\n if (tx == null) { return null; }\n\n tx = shallowCopy(tx);\n tx.confirmations = -1;\n return serialize(tx);\n }\n break;\n\n // We drop the confirmations from transactions as it is approximate\n case \"getBlock\":\n // We drop the confirmations from transactions as it is approximate\n if (params.includeTransactions) {\n normalize = function(block: BlockWithTransactions): string {\n if (block == null) { return null; }\n\n block = shallowCopy(block);\n block.transactions = block.transactions.map((tx) => {\n tx = shallowCopy(tx);\n tx.confirmations = -1;\n return tx;\n });\n return serialize(block);\n };\n } else {\n normalize = function(block: Block): string {\n if (block == null) { return null; }\n return serialize(block);\n }\n }\n break;\n\n default:\n throw new Error(\"unknown method: \" + method);\n }\n\n // Return the result if and only if the expected quorum is\n // satisfied and agreed upon for the final result.\n return normalizedTally(normalize, provider.quorum);\n\n}\n\n// If we are doing a blockTag query, we need to make sure the backend is\n// caught up to the FallbackProvider, before sending a request to it.\nasync function waitForSync(config: RunningConfig, blockNumber: number): Promise<BaseProvider> {\n const provider = <BaseProvider>(config.provider);\n\n if ((provider.blockNumber != null && provider.blockNumber >= blockNumber) || blockNumber === -1) {\n return provider;\n }\n\n return poll(() => {\n return new Promise((resolve, reject) => {\n setTimeout(function() {\n\n // We are synced\n if (provider.blockNumber >= blockNumber) { return resolve(provider); }\n\n // We're done; just quit\n if (config.cancelled) { return resolve(null); }\n\n // Try again, next block\n return resolve(undefined);\n }, 0);\n });\n }, { oncePoll: provider });\n}\n\nasync function getRunner(config: RunningConfig, currentBlockNumber: number, method: string, params: { [ key: string]: any }): Promise<any> {\n let provider = config.provider;\n\n switch (method) {\n case \"getBlockNumber\":\n case \"getGasPrice\":\n return provider[method]();\n case \"getEtherPrice\":\n if ((<any>provider).getEtherPrice) {\n return (<any>provider).getEtherPrice();\n }\n break;\n case \"getBalance\":\n case \"getTransactionCount\":\n case \"getCode\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n return provider[method](params.address, params.blockTag || \"latest\");\n case \"getStorageAt\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n return provider.getStorageAt(params.address, params.position, params.blockTag || \"latest\");\n case \"getBlock\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n return provider[(params.includeTransactions ? \"getBlockWithTransactions\": \"getBlock\")](params.blockTag || params.blockHash);\n case \"call\":\n case \"estimateGas\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n return provider[method](params.transaction);\n case \"getTransaction\":\n case \"getTransactionReceipt\":\n return provider[method](params.transactionHash);\n case \"getLogs\": {\n let filter = params.filter;\n if ((filter.fromBlock && isHexString(filter.fromBlock)) || (filter.toBlock && isHexString(filter.toBlock))) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n return provider.getLogs(filter);\n }\n }\n\n return logger.throwError(\"unknown method error\", Logger.errors.UNKNOWN_ERROR, {\n method: method,\n params: params\n });\n}\n\nexport class FallbackProvider extends BaseProvider {\n readonly providerConfigs: ReadonlyArray<FallbackProviderConfig>;\n readonly quorum: number;\n\n // Due to the highly asyncronous nature of the blockchain, we need\n // to make sure we never unroll the blockNumber due to our random\n // sample of backends\n _highestBlockNumber: number;\n\n constructor(providers: Array<Provider | FallbackProviderConfig>, quorum?: number) {\n logger.checkNew(new.target, FallbackProvider);\n\n if (providers.length === 0) {\n logger.throwArgumentError(\"missing providers\", \"providers\", providers);\n }\n\n const providerConfigs: Array<FallbackProviderConfig> = providers.map((configOrProvider, index) => {\n if (Provider.isProvider(configOrProvider)) {\n const stallTimeout = isCommunityResource(configOrProvider) ? 2000: 750;\n const priority = 1;\n return Object.freeze({ provider: configOrProvider, weight: 1, stallTimeout, priority });\n }\n\n const config: FallbackProviderConfig = shallowCopy(configOrProvider);\n\n if (config.priority == null) { config.priority = 1; }\n if (config.stallTimeout == null) {\n config.stallTimeout = isCommunityResource(configOrProvider) ? 2000: 750;\n }\n if (config.weight == null) { config.weight = 1; }\n\n const weight = config.weight;\n if (weight % 1 || weight > 512 || weight < 1) {\n logger.throwArgumentError(\"invalid weight; must be integer in [1, 512]\", `providers[${ index }].weight`, weight);\n }\n\n return Object.freeze(config);\n });\n\n const total = providerConfigs.reduce((accum, c) => (accum + c.weight), 0);\n\n if (quorum == null) {\n quorum = total / 2;\n } else if (quorum > total) {\n logger.throwArgumentError(\"quorum will always fail; larger than total weight\", \"quorum\", quorum);\n }\n\n // Are all providers' networks are known\n let networkOrReady: Network | Promise<Network> = checkNetworks(providerConfigs.map((c) => (<any>(c.provider)).network));\n\n // Not all networks are known; we must stall\n if (networkOrReady == null) {\n networkOrReady = new Promise((resolve, reject) => {\n setTimeout(() => {\n this.detectNetwork().then(resolve, reject);\n }, 0);\n });\n }\n\n super(networkOrReady);\n\n // Preserve a copy, so we do not get mutated\n defineReadOnly(this, \"providerConfigs\", Object.freeze(providerConfigs));\n defineReadOnly(this, \"quorum\", quorum);\n\n this._highestBlockNumber = -1;\n }\n\n async detectNetwork(): Promise<Network> {\n const networks = await Promise.all(this.providerConfigs.map((c) => c.provider.getNetwork()));\n return checkNetworks(networks);\n }\n\n async perform(method: string, params: { [name: string]: any }): Promise<any> {\n // Sending transactions is special; always broadcast it to all backends\n if (method === \"sendTransaction\") {\n const results: Array<string | Error> = await Promise.all(this.providerConfigs.map((c) => {\n return c.provider.sendTransaction(params.signedTransaction).then((result) => {\n return result.hash;\n }, (error) => {\n return error;\n });\n }));\n\n // Any success is good enough (other errors are likely \"already seen\" errors\n for (let i = 0; i < results.length; i++) {\n const result = results[i];\n if (typeof(result) === \"string\") { return result; }\n }\n\n // They were all an error; pick the first error\n throw results[0];\n }\n\n // We need to make sure we are in sync with our backends, so we need\n // to know this before we can make a lot of calls\n if (this._highestBlockNumber === -1 && method !== \"getBlockNumber\") {\n await this.getBlockNumber();\n }\n\n const processFunc = getProcessFunc(this, method, params);\n\n // Shuffle the providers and then sort them by their priority; we\n // shallowCopy them since we will store the result in them too\n const configs: Array<RunningConfig> = shuffled(this.providerConfigs.map(shallowCopy));\n configs.sort((a, b) => (a.priority - b.priority));\n\n const currentBlockNumber = this._highestBlockNumber;\n\n let i = 0;\n let first = true;\n while (true) {\n const t0 = now();\n\n // Compute the inflight weight (exclude anything past)\n let inflightWeight = configs.filter((c) => (c.runner && ((t0 - c.start) < c.stallTimeout)))\n .reduce((accum, c) => (accum + c.weight), 0);\n\n // Start running enough to meet quorum\n while (inflightWeight < this.quorum && i < configs.length) {\n const config = configs[i++];\n\n const rid = nextRid++;\n\n config.start = now();\n config.staller = stall(config.stallTimeout);\n config.staller.wait(() => { config.staller = null; });\n\n config.runner = getRunner(config, currentBlockNumber, method, params).then((result) => {\n config.done = true;\n config.result = result;\n\n if (this.listenerCount(\"debug\")) {\n this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, now()),\n request: { method: method, params: deepCopy(params) },\n provider: this\n });\n }\n\n }, (error) => {\n config.done = true;\n config.error = error;\n\n if (this.listenerCount(\"debug\")) {\n this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, now()),\n request: { method: method, params: deepCopy(params) },\n provider: this\n });\n }\n });\n\n if (this.listenerCount(\"debug\")) {\n this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, null),\n request: { method: method, params: deepCopy(params) },\n provider: this\n });\n }\n\n inflightWeight += config.weight;\n }\n\n // Wait for anything meaningful to finish or stall out\n const waiting: Array<Promise<any>> = [ ];\n configs.forEach((c) => {\n if (c.done || !c.runner) { return; }\n waiting.push(c.runner);\n if (c.staller) { waiting.push(c.staller.getPromise()); }\n });\n\n if (waiting.length) { await Promise.race(waiting); }\n\n // Check the quorum and process the results; the process function\n // may additionally decide the quorum is not met\n const results = configs.filter((c) => (c.done && c.error == null));\n if (results.length >= this.quorum) {\n const result = processFunc(results);\n if (result !== undefined) {\n // Shut down any stallers\n configs.forEach(c => {\n if (c.staller) { c.staller.cancel(); }\n c.cancelled = true;\n });\n return result;\n }\n if (!first) { await stall(100).getPromise(); }\n first = false;\n }\n\n // No result, check for errors that should be forwarded\n const errors = configs.reduce((accum, c) => {\n if (!c.done || c.error == null) { return accum; }\n\n const code = (<any>(c.error)).code;\n if (ForwardErrors.indexOf(code) >= 0) {\n if (!accum[code]) { accum[code] = { error: c.error, weight: 0 }; }\n accum[code].weight += c.weight;\n }\n\n return accum;\n }, <{ [ code: string ]: { error: Error, weight: number } }>({ }));\n\n Object.keys(errors).forEach((errorCode: string) => {\n const tally = errors[errorCode];\n if (tally.weight < this.quorum) { return; }\n\n // Shut down any stallers\n configs.forEach(c => {\n if (c.staller) { c.staller.cancel(); }\n c.cancelled = true;\n });\n\n const e = <any>(tally.error);\n\n const props: { [ name: string ]: any } = { };\n ForwardProperties.forEach((name) => {\n if (e[name] == null) { return; }\n props[name] = e[name];\n });\n\n logger.throwError(e.reason || e.message, <any>errorCode, props);\n });\n\n // All configs have run to completion; we will never get more data\n if (configs.filter((c) => !c.done).length === 0) { break; }\n }\n\n // Shut down any stallers; shouldn't be any\n configs.forEach(c => {\n if (c.staller) { c.staller.cancel(); }\n c.cancelled = true;\n });\n\n return logger.throwError(\"failed to meet quorum\", Logger.errors.SERVER_ERROR, {\n method: method,\n params: params,\n //results: configs.map((c) => c.result),\n //errors: configs.map((c) => c.error),\n results: configs.map((c) => exposeDebugConfig(c)),\n provider: this\n });\n }\n}\n","\"use strict\";\n\nconst IpcProvider: any = null;\n\nexport {\n IpcProvider\n};\n","\"use strict\";\n\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { WebSocketProvider } from \"./websocket-provider\";\nimport { CommunityResourcable, showThrottleMessage } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\n\nconst defaultProjectId = \"84842078b09946638c03157f83405213\"\n\nexport class InfuraWebSocketProvider extends WebSocketProvider implements CommunityResourcable {\n readonly apiKey: string;\n readonly projectId: string;\n readonly projectSecret: string;\n\n constructor(network?: Networkish, apiKey?: any) {\n const provider = new InfuraProvider(network, apiKey);\n const connection = provider.connection;\n if (connection.password) {\n logger.throwError(\"INFURA WebSocket project secrets unsupported\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"InfuraProvider.getWebSocketProvider()\"\n });\n }\n\n const url = connection.url.replace(/^http/i, \"ws\").replace(\"/v3/\", \"/ws/v3/\");\n super(url, network);\n\n defineReadOnly(this, \"apiKey\", provider.projectId);\n defineReadOnly(this, \"projectId\", provider.projectId);\n defineReadOnly(this, \"projectSecret\", provider.projectSecret);\n }\n\n isCommunityResource(): boolean {\n return (this.projectId === defaultProjectId);\n }\n}\n\nexport class InfuraProvider extends UrlJsonRpcProvider {\n readonly projectId: string;\n readonly projectSecret: string;\n\n static getWebSocketProvider(network?: Networkish, apiKey?: any): InfuraWebSocketProvider {\n return new InfuraWebSocketProvider(network, apiKey);\n }\n\n static getApiKey(apiKey: any): any {\n const apiKeyObj: { apiKey: string, projectId: string, projectSecret: string } = {\n apiKey: defaultProjectId,\n projectId: defaultProjectId,\n projectSecret: null\n };\n\n if (apiKey == null) { return apiKeyObj; }\n\n if (typeof(apiKey) === \"string\") {\n apiKeyObj.projectId = apiKey;\n\n } else if (apiKey.projectSecret != null) {\n logger.assertArgument((typeof(apiKey.projectId) === \"string\"),\n \"projectSecret requires a projectId\", \"projectId\", apiKey.projectId);\n logger.assertArgument((typeof(apiKey.projectSecret) === \"string\"),\n \"invalid projectSecret\", \"projectSecret\", \"[REDACTED]\");\n\n apiKeyObj.projectId = apiKey.projectId;\n apiKeyObj.projectSecret = apiKey.projectSecret;\n\n } else if (apiKey.projectId) {\n apiKeyObj.projectId = apiKey.projectId;\n }\n\n apiKeyObj.apiKey = apiKeyObj.projectId;\n\n return apiKeyObj;\n }\n\n static getUrl(network: Network, apiKey: any): ConnectionInfo {\n let host: string = null;\n switch(network ? network.name: \"unknown\") {\n case \"homestead\":\n host = \"mainnet.infura.io\";\n break;\n case \"ropsten\":\n host = \"ropsten.infura.io\";\n break;\n case \"rinkeby\":\n host = \"rinkeby.infura.io\";\n break;\n case \"kovan\":\n host = \"kovan.infura.io\";\n break;\n case \"goerli\":\n host = \"goerli.infura.io\";\n break;\n default:\n logger.throwError(\"unsupported network\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"network\",\n value: network\n });\n }\n\n const connection: ConnectionInfo = {\n allowGzip: true,\n url: (\"https:/\" + \"/\" + host + \"/v3/\" + apiKey.projectId),\n throttleCallback: (attempt: number, url: string) => {\n if (apiKey.projectId === defaultProjectId) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n\n if (apiKey.projectSecret != null) {\n connection.user = \"\";\n connection.password = apiKey.projectSecret\n }\n\n return connection;\n }\n\n isCommunityResource(): boolean {\n return (this.projectId === defaultProjectId);\n }\n}\n","/* istanbul ignore file */\n\n\"use strict\";\n\nimport { Network } from \"@ethersproject/networks\";\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n// Special API key provided by Nodesmith for ethers.js\nconst defaultApiKey = \"ETHERS_JS_SHARED\";\n\nexport class NodesmithProvider extends UrlJsonRpcProvider {\n\n static getApiKey(apiKey: any): any {\n if (apiKey && typeof(apiKey) !== \"string\") {\n logger.throwArgumentError(\"invalid apiKey\", \"apiKey\", apiKey);\n }\n return apiKey || defaultApiKey;\n }\n\n static getUrl(network: Network, apiKey?: any): string {\n logger.warn(\"NodeSmith will be discontinued on 2019-12-20; please migrate to another platform.\");\n\n let host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"https://ethereum.api.nodesmith.io/v1/mainnet/jsonrpc\";\n break;\n case \"ropsten\":\n host = \"https://ethereum.api.nodesmith.io/v1/ropsten/jsonrpc\";\n break;\n case \"rinkeby\":\n host = \"https://ethereum.api.nodesmith.io/v1/rinkeby/jsonrpc\";\n break;\n case \"goerli\":\n host = \"https://ethereum.api.nodesmith.io/v1/goerli/jsonrpc\";\n break;\n case \"kovan\":\n host = \"https://ethereum.api.nodesmith.io/v1/kovan/jsonrpc\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n\n return (host + \"?apiKey=\" + apiKey);\n }\n}\n","\"use strict\";\n\nimport { Network } from \"@ethersproject/networks\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nconst defaultApplicationId = \"5f7f8547b90218002e9ce9dd\";\n\nexport class PocketProvider extends UrlJsonRpcProvider {\n readonly applicationId: string;\n readonly applicationSecretKey: string;\n\n static getApiKey(apiKey: any): any {\n const apiKeyObj: { applicationId: string, applicationSecretKey: string } = {\n applicationId: defaultApplicationId,\n applicationSecretKey: null\n };\n\n if (apiKey == null) { return apiKeyObj; }\n\n // Parse applicationId and applicationSecretKey\n if (typeof (apiKey) === \"string\") {\n apiKeyObj.applicationId = apiKey;\n\n } else if (apiKey.applicationSecretKey != null) {\n logger.assertArgument((typeof (apiKey.applicationId) === \"string\"),\n \"applicationSecretKey requires an applicationId\", \"applicationId\", apiKey.applicationId);\n logger.assertArgument((typeof (apiKey.applicationSecretKey) === \"string\"),\n \"invalid applicationSecretKey\", \"applicationSecretKey\", \"[REDACTED]\");\n\n apiKeyObj.applicationId = apiKey.applicationId;\n apiKeyObj.applicationSecretKey = apiKey.applicationSecretKey;\n\n } else if (apiKey.applicationId) {\n apiKeyObj.applicationId = apiKey.applicationId;\n }\n\n return apiKeyObj;\n }\n\n static getUrl(network: Network, apiKey: any): ConnectionInfo {\n let host: string = null;\n switch (network ? network.name : \"unknown\") {\n case \"homestead\":\n host = \"eth-mainnet.gateway.pokt.network\";\n break;\n default:\n logger.throwError(\"unsupported network\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"network\",\n value: network\n });\n }\n\n const connection: ConnectionInfo = {\n url: (`https:/\\/${ host }/v1/${ apiKey.applicationId }`),\n };\n\n // Initialize empty headers\n connection.headers = {}\n\n // Apply application secret key\n if (apiKey.applicationSecretKey != null) {\n connection.user = \"\";\n connection.password = apiKey.applicationSecretKey\n }\n\n return connection;\n }\n\n isCommunityResource(): boolean {\n return (this.applicationId === defaultApplicationId);\n }\n}\n","\"use strict\";\n\nimport { Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\n\n// Exported Types\nexport type ExternalProvider = {\n isMetaMask?: boolean;\n host?: string;\n path?: string;\n sendAsync?: (request: { method: string, params?: Array<any> }, callback: (error: any, response: any) => void) => void\n send?: (request: { method: string, params?: Array<any> }, callback: (error: any, response: any) => void) => void\n request?: (request: { method: string, params?: Array<any> }) => Promise<any>\n}\n\nlet _nextId = 1;\n\nexport type JsonRpcFetchFunc = (method: string, params?: Array<any>) => Promise<any>;\n\ntype Web3LegacySend = (request: any, callback: (error: Error, response: any) => void) => void;\n\nfunction buildWeb3LegacyFetcher(provider: ExternalProvider, sendFunc: Web3LegacySend) : JsonRpcFetchFunc {\n return function(method: string, params: Array<any>): Promise<any> {\n\n // Metamask complains about eth_sign (and on some versions hangs)\n if (method == \"eth_sign\" && provider.isMetaMask) {\n // https://github.com/ethereum/go-ethereum/wiki/Management-APIs#personal_sign\n method = \"personal_sign\";\n params = [ params[1], params[0] ];\n }\n\n const request = {\n method: method,\n params: params,\n id: (_nextId++),\n jsonrpc: \"2.0\"\n };\n\n return new Promise((resolve, reject) => {\n sendFunc(request, function(error, result) {\n if (error) { return reject(error); }\n\n if (result.error) {\n const error = new Error(result.error.message);\n (<any>error).code = result.error.code;\n (<any>error).data = result.error.data;\n return reject(error);\n }\n\n resolve(result.result);\n });\n });\n }\n}\n\nfunction buildEip1193Fetcher(provider: ExternalProvider): JsonRpcFetchFunc {\n return function(method: string, params: Array<any>): Promise<any> {\n if (params == null) { params = [ ]; }\n\n // Metamask complains about eth_sign (and on some versions hangs)\n if (method == \"eth_sign\" && provider.isMetaMask) {\n // https://github.com/ethereum/go-ethereum/wiki/Management-APIs#personal_sign\n method = \"personal_sign\";\n params = [ params[1], params[0] ];\n }\n\n return provider.request({ method, params });\n }\n}\n\nexport class Web3Provider extends JsonRpcProvider {\n readonly provider: ExternalProvider;\n readonly jsonRpcFetchFunc: JsonRpcFetchFunc;\n\n constructor(provider: ExternalProvider | JsonRpcFetchFunc, network?: Networkish) {\n logger.checkNew(new.target, Web3Provider);\n\n if (provider == null) {\n logger.throwArgumentError(\"missing provider\", \"provider\", provider);\n }\n\n let path: string = null;\n let jsonRpcFetchFunc: JsonRpcFetchFunc = null;\n let subprovider: ExternalProvider = null;\n\n if (typeof(provider) === \"function\") {\n path = \"unknown:\";\n jsonRpcFetchFunc = provider;\n\n } else {\n path = provider.host || provider.path || \"\";\n if (!path && provider.isMetaMask) {\n path = \"metamask\";\n }\n\n subprovider = provider;\n\n if (provider.request) {\n if (path === \"\") { path = \"eip-1193:\"; }\n jsonRpcFetchFunc = buildEip1193Fetcher(provider);\n } else if (provider.sendAsync) {\n jsonRpcFetchFunc = buildWeb3LegacyFetcher(provider, provider.sendAsync.bind(provider));\n } else if (provider.send) {\n jsonRpcFetchFunc = buildWeb3LegacyFetcher(provider, provider.send.bind(provider));\n } else {\n logger.throwArgumentError(\"unsupported provider\", \"provider\", provider);\n }\n\n if (!path) { path = \"unknown:\"; }\n }\n\n super(path, network);\n\n defineReadOnly(this, \"jsonRpcFetchFunc\", jsonRpcFetchFunc);\n defineReadOnly(this, \"provider\", subprovider);\n }\n\n send(method: string, params: Array<any>): Promise<any> {\n return this.jsonRpcFetchFunc(method, params);\n }\n}\n","\"use strict\";\n\nimport {\n Block,\n BlockTag,\n EventType,\n Filter,\n Log,\n Listener,\n Provider,\n TransactionReceipt,\n TransactionRequest,\n TransactionResponse\n} from \"@ethersproject/abstract-provider\";\n\nimport { getNetwork } from \"@ethersproject/networks\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\n\nimport { BaseProvider, EnsProvider, EnsResolver, Resolver } from \"./base-provider\";\n\nimport { AlchemyProvider, AlchemyWebSocketProvider } from \"./alchemy-provider\";\nimport { CloudflareProvider } from \"./cloudflare-provider\";\nimport { EtherscanProvider } from \"./etherscan-provider\";\nimport { FallbackProvider } from \"./fallback-provider\";\nimport { IpcProvider } from \"./ipc-provider\";\nimport { InfuraProvider, InfuraWebSocketProvider } from \"./infura-provider\";\nimport { JsonRpcProvider, JsonRpcSigner } from \"./json-rpc-provider\";\nimport { NodesmithProvider } from \"./nodesmith-provider\";\nimport { PocketProvider } from \"./pocket-provider\";\nimport { StaticJsonRpcProvider, UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\nimport { Web3Provider } from \"./web3-provider\";\nimport { WebSocketProvider } from \"./websocket-provider\";\nimport { ExternalProvider, JsonRpcFetchFunc } from \"./web3-provider\";\n\nimport { CommunityResourcable, Formatter, isCommunityResourcable, isCommunityResource, showThrottleMessage } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n////////////////////////\n// Helper Functions\n\nfunction getDefaultProvider(network?: Network | string, options?: any): BaseProvider {\n if (network == null) { network = \"homestead\"; }\n\n // If passed a URL, figure out the right type of provider based on the scheme\n if (typeof(network) === \"string\") {\n // @TODO: Add support for IpcProvider; maybe if it ends in \".ipc\"?\n\n // Handle http and ws (and their secure variants)\n const match = network.match(/^(ws|http)s?:/i);\n if (match) {\n switch (match[1]) {\n case \"http\":\n return new JsonRpcProvider(network);\n case \"ws\":\n return new WebSocketProvider(network);\n default:\n logger.throwArgumentError(\"unsupported URL scheme\", \"network\", network);\n }\n }\n }\n\n const n = getNetwork(network);\n if (!n || !n._defaultProvider) {\n logger.throwError(\"unsupported getDefaultProvider network\", Logger.errors.NETWORK_ERROR, {\n operation: \"getDefaultProvider\",\n network: network\n });\n }\n\n return n._defaultProvider({\n FallbackProvider,\n\n AlchemyProvider,\n CloudflareProvider,\n EtherscanProvider,\n InfuraProvider,\n JsonRpcProvider,\n NodesmithProvider,\n PocketProvider,\n Web3Provider,\n\n IpcProvider,\n }, options);\n}\n\n////////////////////////\n// Exports\n\nexport {\n\n // Abstract Providers (or Abstract-ish)\n Provider,\n BaseProvider,\n\n Resolver,\n\n UrlJsonRpcProvider,\n\n ///////////////////////\n // Concreate Providers\n\n FallbackProvider,\n\n AlchemyProvider,\n AlchemyWebSocketProvider,\n CloudflareProvider,\n EtherscanProvider,\n InfuraProvider,\n InfuraWebSocketProvider,\n JsonRpcProvider,\n NodesmithProvider,\n PocketProvider,\n StaticJsonRpcProvider,\n Web3Provider,\n WebSocketProvider,\n\n IpcProvider,\n\n\n ///////////////////////\n // Signer\n\n JsonRpcSigner,\n\n\n ///////////////////////\n // Functions\n\n getDefaultProvider,\n getNetwork,\n isCommunityResource,\n isCommunityResourcable,\n showThrottleMessage,\n\n\n ///////////////////////\n // Objects\n\n Formatter,\n\n\n ///////////////////////\n // Types\n\n Block,\n BlockTag,\n EventType,\n Filter,\n Log,\n Listener,\n TransactionReceipt,\n TransactionRequest,\n TransactionResponse,\n\n ExternalProvider,\n JsonRpcFetchFunc,\n\n Network,\n Networkish,\n\n EnsProvider,\n EnsResolver,\n\n CommunityResourcable\n};\n\n","\"use strict\";\n\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, concat, hexlify, zeroPad } from \"@ethersproject/bytes\";\nimport { keccak256 as hashKeccak256 } from \"@ethersproject/keccak256\";\nimport { sha256 as hashSha256 } from \"@ethersproject/sha2\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\n\nconst regexBytes = new RegExp(\"^bytes([0-9]+)$\");\nconst regexNumber = new RegExp(\"^(u?int)([0-9]*)$\");\nconst regexArray = new RegExp(\"^(.*)\\\\[([0-9]*)\\\\]$\");\n\nconst Zeros = \"0000000000000000000000000000000000000000000000000000000000000000\";\n\nfunction _pack(type: string, value: any, isArray?: boolean): Uint8Array {\n switch(type) {\n case \"address\":\n if (isArray) { return zeroPad(value, 32); }\n return arrayify(value);\n case \"string\":\n return toUtf8Bytes(value);\n case \"bytes\":\n return arrayify(value);\n case \"bool\":\n value = (value ? \"0x01\": \"0x00\");\n if (isArray) { return zeroPad(value, 32); }\n return arrayify(value);\n }\n\n let match = type.match(regexNumber);\n if (match) {\n //let signed = (match[1] === \"int\")\n let size = parseInt(match[2] || \"256\")\n\n if ((match[2] && String(size) !== match[2]) || (size % 8 !== 0) || size === 0 || size > 256) {\n throw new Error(\"invalid number type - \" + type);\n }\n\n if (isArray) { size = 256; }\n\n value = BigNumber.from(value).toTwos(size);\n\n return zeroPad(value, size / 8);\n }\n\n match = type.match(regexBytes);\n if (match) {\n const size = parseInt(match[1]);\n\n if (String(size) !== match[1] || size === 0 || size > 32) {\n throw new Error(\"invalid bytes type - \" + type);\n }\n if (arrayify(value).byteLength !== size) { throw new Error(\"invalid value for \" + type); }\n if (isArray) { return arrayify((value + Zeros).substring(0, 66)); }\n return value;\n }\n\n match = type.match(regexArray);\n if (match && Array.isArray(value)) {\n const baseType = match[1];\n const count = parseInt(match[2] || String(value.length));\n if (count != value.length) { throw new Error(\"invalid value for \" + type); }\n const result: Array<Uint8Array> = [];\n value.forEach(function(value) {\n result.push(_pack(baseType, value, true));\n });\n return concat(result);\n }\n\n throw new Error(\"invalid type - \" + type);\n}\n\n// @TODO: Array Enum\n\nexport function pack(types: Array<string>, values: Array<any>) {\n if (types.length != values.length) { throw new Error(\"type/value count mismatch\"); }\n const tight: Array<Uint8Array> = [];\n types.forEach(function(type, index) {\n tight.push(_pack(type, values[index]));\n });\n return hexlify(concat(tight));\n}\n\nexport function keccak256(types: Array<string>, values: Array<any>) {\n return hashKeccak256(pack(types, values));\n}\n\nexport function sha256(types: Array<string>, values: Array<any>) {\n return hashSha256(pack(types, values));\n}\n","export const version = \"units/5.0.8\";\n","\"use strict\";\n\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { formatFixed, parseFixed } from \"@ethersproject/bignumber\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst names = [\n \"wei\",\n \"kwei\",\n \"mwei\",\n \"gwei\",\n \"szabo\",\n \"finney\",\n \"ether\",\n];\n\n\n// Some environments have issues with RegEx that contain back-tracking, so we cannot\n// use them.\nexport function commify(value: string | number): string {\n const comps = String(value).split(\".\");\n\n if (comps.length > 2 || !comps[0].match(/^-?[0-9]*$/) || (comps[1] && !comps[1].match(/^[0-9]*$/)) || value === \".\" || value === \"-.\") {\n logger.throwArgumentError(\"invalid value\", \"value\", value);\n }\n\n // Make sure we have at least one whole digit (0 if none)\n let whole = comps[0];\n\n let negative = \"\";\n if (whole.substring(0, 1) === \"-\") {\n negative = \"-\";\n whole = whole.substring(1);\n }\n\n // Make sure we have at least 1 whole digit with no leading zeros\n while (whole.substring(0, 1) === \"0\") { whole = whole.substring(1); }\n if (whole === \"\") { whole = \"0\"; }\n\n let suffix = \"\";\n if (comps.length === 2) { suffix = \".\" + (comps[1] || \"0\"); }\n while (suffix.length > 2 && suffix[suffix.length - 1] === \"0\") {\n suffix = suffix.substring(0, suffix.length - 1);\n }\n\n const formatted = [];\n while (whole.length) {\n if (whole.length <= 3) {\n formatted.unshift(whole);\n break;\n } else {\n const index = whole.length - 3;\n formatted.unshift(whole.substring(index));\n whole = whole.substring(0, index);\n }\n }\n\n return negative + formatted.join(\",\") + suffix;\n}\n\nexport function formatUnits(value: BigNumberish, unitName?: string | BigNumberish): string {\n if (typeof(unitName) === \"string\") {\n const index = names.indexOf(unitName);\n if (index !== -1) { unitName = 3 * index; }\n }\n return formatFixed(value, (unitName != null) ? unitName: 18);\n}\n\nexport function parseUnits(value: string, unitName?: BigNumberish): BigNumber {\n if (typeof(value) !== \"string\") {\n logger.throwArgumentError(\"value must be a string\", \"value\", value);\n }\n if (typeof(unitName) === \"string\") {\n const index = names.indexOf(unitName);\n if (index !== -1) { unitName = 3 * index; }\n }\n return parseFixed(value, (unitName != null) ? unitName: 18);\n}\n\nexport function formatEther(wei: BigNumberish): string {\n return formatUnits(wei, 18);\n}\n\nexport function parseEther(ether: string): BigNumber {\n return parseUnits(ether, 18);\n}\n\n","\"use strict\";\n\nimport { AbiCoder, checkResultErrors, defaultAbiCoder, EventFragment, FormatTypes, Fragment, FunctionFragment, Indexed, Interface, LogDescription, ParamType, Result, TransactionDescription }from \"@ethersproject/abi\";\nimport { getAddress, getCreate2Address, getContractAddress, getIcapAddress, isAddress } from \"@ethersproject/address\";\nimport * as base64 from \"@ethersproject/base64\";\nimport { Base58 as base58 } from \"@ethersproject/basex\";\nimport { arrayify, concat, hexConcat, hexDataSlice, hexDataLength, hexlify, hexStripZeros, hexValue, hexZeroPad, isBytes, isBytesLike, isHexString, joinSignature, zeroPad, splitSignature, stripZeros } from \"@ethersproject/bytes\";\nimport { _TypedDataEncoder, hashMessage, id, isValidName, namehash } from \"@ethersproject/hash\";\nimport { defaultPath, entropyToMnemonic, HDNode, isValidMnemonic, mnemonicToEntropy, mnemonicToSeed } from \"@ethersproject/hdnode\";\nimport { getJsonWalletAddress } from \"@ethersproject/json-wallets\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { computeHmac, ripemd160, sha256, sha512 } from \"@ethersproject/sha2\";\nimport { keccak256 as solidityKeccak256, pack as solidityPack, sha256 as soliditySha256 } from \"@ethersproject/solidity\";\nimport { randomBytes, shuffled } from \"@ethersproject/random\";\nimport { checkProperties, deepCopy, defineReadOnly, getStatic, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey, SigningKey } from \"@ethersproject/signing-key\";\nimport { formatBytes32String, nameprep, parseBytes32String, _toEscapedUtf8String, toUtf8Bytes, toUtf8CodePoints, toUtf8String, Utf8ErrorFuncs } from \"@ethersproject/strings\";\nimport { computeAddress, parse as parseTransaction, recoverAddress, serialize as serializeTransaction } from \"@ethersproject/transactions\";\nimport { commify, formatEther, parseEther, formatUnits, parseUnits } from \"@ethersproject/units\";\nimport { verifyMessage, verifyTypedData } from \"@ethersproject/wallet\";\nimport { _fetchData, fetchJson, poll } from \"@ethersproject/web\";\n\n////////////////////////\n// Enums\n\nimport { SupportedAlgorithm } from \"@ethersproject/sha2\";\nimport { UnicodeNormalizationForm, Utf8ErrorReason } from \"@ethersproject/strings\";\nimport { UnsignedTransaction } from \"@ethersproject/transactions\";\n\n////////////////////////\n// Types and Interfaces\n\nimport { CoerceFunc } from \"@ethersproject/abi\";\nimport { Bytes, BytesLike, Hexable } from \"@ethersproject/bytes\"\nimport { Mnemonic } from \"@ethersproject/hdnode\";\nimport { EncryptOptions, ProgressCallback } from \"@ethersproject/json-wallets\";\nimport { Deferrable } from \"@ethersproject/properties\";\nimport { Utf8ErrorFunc } from \"@ethersproject/strings\";\nimport { ConnectionInfo, FetchJsonResponse, OnceBlockable, OncePollable, PollOptions } from \"@ethersproject/web\";\n\n////////////////////////\n// Exports\n\nexport {\n AbiCoder,\n defaultAbiCoder,\n\n Fragment,\n EventFragment,\n FunctionFragment,\n ParamType,\n FormatTypes,\n\n checkResultErrors,\n Result,\n\n Logger,\n\n RLP,\n\n _fetchData,\n fetchJson,\n poll,\n\n checkProperties,\n deepCopy,\n defineReadOnly,\n getStatic,\n resolveProperties,\n shallowCopy,\n\n arrayify,\n\n concat,\n stripZeros,\n zeroPad,\n\n isBytes,\n isBytesLike,\n\n defaultPath,\n HDNode,\n SigningKey,\n\n Interface,\n\n LogDescription,\n TransactionDescription,\n\n base58,\n base64,\n\n hexlify,\n isHexString,\n hexConcat,\n hexStripZeros,\n hexValue,\n hexZeroPad,\n hexDataLength,\n hexDataSlice,\n\n nameprep,\n _toEscapedUtf8String,\n toUtf8Bytes,\n toUtf8CodePoints,\n toUtf8String,\n Utf8ErrorFuncs,\n\n formatBytes32String,\n parseBytes32String,\n\n hashMessage,\n namehash,\n isValidName,\n id,\n\n _TypedDataEncoder,\n\n getAddress,\n getIcapAddress,\n getContractAddress,\n getCreate2Address,\n isAddress,\n\n formatEther,\n parseEther,\n\n formatUnits,\n parseUnits,\n\n commify,\n\n computeHmac,\n keccak256,\n ripemd160,\n sha256,\n sha512,\n\n randomBytes,\n shuffled,\n\n solidityPack,\n solidityKeccak256,\n soliditySha256,\n\n splitSignature,\n joinSignature,\n\n parseTransaction,\n serializeTransaction,\n\n getJsonWalletAddress,\n\n computeAddress,\n recoverAddress,\n\n computePublicKey,\n recoverPublicKey,\n\n verifyMessage,\n verifyTypedData,\n\n mnemonicToEntropy,\n entropyToMnemonic,\n isValidMnemonic,\n mnemonicToSeed,\n\n\n ////////////////////////\n // Enums\n\n SupportedAlgorithm,\n\n UnicodeNormalizationForm,\n Utf8ErrorReason,\n\n ////////////////////////\n // Types\n\n Bytes,\n BytesLike,\n Hexable,\n\n UnsignedTransaction,\n\n CoerceFunc,\n\n Indexed,\n\n Mnemonic,\n\n Deferrable,\n\n Utf8ErrorFunc,\n\n ConnectionInfo,\n OnceBlockable,\n OncePollable,\n PollOptions,\n FetchJsonResponse,\n\n EncryptOptions,\n ProgressCallback\n}\n\n","export const version = \"ethers/5.0.24\";\n","\"use strict\";\n\nimport { Contract, ContractFactory } from \"@ethersproject/contracts\";\n\nimport { BigNumber, FixedNumber } from \"@ethersproject/bignumber\";\n\nimport { Signer, VoidSigner } from \"@ethersproject/abstract-signer\";\nimport { Wallet } from \"@ethersproject/wallet\";\n\nimport * as constants from \"@ethersproject/constants\";\n\nimport * as providers from \"@ethersproject/providers\";\nimport { getDefaultProvider } from \"@ethersproject/providers\";\n\nimport { Wordlist, wordlists} from \"@ethersproject/wordlists\";\n\nimport * as utils from \"./utils\";\n\nimport { ErrorCode as errors, Logger } from \"@ethersproject/logger\";\n\n////////////////////////\n// Types\n\nimport { BigNumberish } from \"@ethersproject/bignumber\";\nimport { Bytes, BytesLike, Signature } from \"@ethersproject/bytes\";\nimport { Transaction, UnsignedTransaction } from \"@ethersproject/transactions\";\n\n\n////////////////////////\n// Compile-Time Constants\n\n// This is generated by \"npm run dist\"\nimport { version } from \"./_version\";\n\nconst logger = new Logger(version);\n\n////////////////////////\n// Types\n\nimport {\n ContractFunction,\n ContractReceipt,\n ContractTransaction,\n\n Event,\n EventFilter,\n\n Overrides,\n PayableOverrides,\n CallOverrides,\n\n PopulatedTransaction,\n\n ContractInterface\n} from \"@ethersproject/contracts\";\n\n\n////////////////////////\n// Exports\n\nexport {\n Signer,\n\n Wallet,\n VoidSigner,\n\n getDefaultProvider,\n providers,\n\n Contract,\n ContractFactory,\n\n BigNumber,\n FixedNumber,\n\n constants,\n errors,\n\n logger,\n\n utils,\n\n wordlists,\n\n\n ////////////////////////\n // Compile-Time Constants\n\n version,\n\n\n ////////////////////////\n // Types\n\n ContractFunction,\n ContractReceipt,\n ContractTransaction,\n Event,\n EventFilter,\n\n Overrides,\n PayableOverrides,\n CallOverrides,\n\n PopulatedTransaction,\n\n ContractInterface,\n\n BigNumberish,\n\n Bytes,\n BytesLike,\n\n Signature,\n\n Transaction,\n UnsignedTransaction,\n\n Wordlist\n};\n\n","\"use strict\";\n\n// To modify this file, you must update ./misc/admin/lib/cmds/update-exports.js\n\nimport * as ethers from \"./ethers\";\n\ntry {\n const anyGlobal = (window as any);\n\n if (anyGlobal._ethers == null) {\n anyGlobal._ethers = ethers;\n }\n} catch (error) { }\n\nexport { ethers };\n\nexport {\n Signer,\n\n Wallet,\n VoidSigner,\n\n getDefaultProvider,\n providers,\n\n Contract,\n ContractFactory,\n\n BigNumber,\n FixedNumber,\n\n constants,\n errors,\n\n logger,\n\n utils,\n\n wordlists,\n\n\n ////////////////////////\n // Compile-Time Constants\n\n version,\n\n\n ////////////////////////\n // Types\n\n ContractFunction,\n ContractReceipt,\n ContractTransaction,\n Event,\n EventFilter,\n\n Overrides,\n PayableOverrides,\n CallOverrides,\n\n PopulatedTransaction,\n\n ContractInterface,\n\n BigNumberish,\n\n Bytes,\n BytesLike,\n\n Signature,\n\n Transaction,\n UnsignedTransaction,\n\n Wordlist\n} from \"./ethers\";\n"],"names":["this","_version_1","logger_1","bytes_1","bignumber_1","properties_1","global","keccak256_1","rlp_1","address_1","abstract_coder_1","anonymous_1","constants_1","utf8_1","bytes32_1","idna_1","strings_1","array_1","string_1","bytes_2","tuple_1","null_1","number_1","fixed_bytes_1","fragments_1","message_1","typed_data_1","fragments","abi_coder_1","hash_1","interface_1","abi_1","abstract_signer_1","abstract_provider_1","inherits","assert","rotr32","rotl32","sum32","sum32_5","ft_1","shaCommon","BlockHash","sum32_4","ch32","maj32","s0_256","s1_256","g0_256","g1_256","SHA256","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","SHA512","require$$0","require$$1","require$$2","require$$3","require$$4","sum32_3","types_1","sha2_1","minAssert","minUtils","BN","utils","Base","curve","hash","curves","KeyPair","HmacDRBG","Signature","signature","elliptic_1","signing_key_1","wordlist","wordlist_1","lang_cz_1","lang_en_1","lang_es_1","lang_fr_1","lang_it_1","lang_ja_1","lang_ko_1","lang_zh_1","wordlists_1","basex_1","transactions_1","pbkdf2_1","define","utils_1","hdnode_1","random_1","crowdsale_1","inspect_1","keystore_1","json_wallets_1","base64_1","geturl_1","web_1","formatter_1","networks_1","base_provider_1","ws_1","json_rpc_provider_1","websocket_provider_1","url_json_rpc_provider_1","alchemy_provider_1","cloudflare_provider_1","etherscan_provider_1","fallback_provider_1","ipc_provider_1","infura_provider_1","nodesmith_provider_1","pocket_provider_1","web3_provider_1","solidity_1","units_1","wallet_1","contracts_1","ethers"],"mappings":"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,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,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AAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACtD,IAAI,EAAE,IAAI,SAAS,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACtD,IAAI,EAAE,IAAI,SAAS,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACtD,IAAI,EAAE,IAAI,SAAS,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACtD,IAAI,EAAE,IAAI,SAAS,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACtD,IAAI,EAAE,IAAI,SAAS,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACtD,IAAI,EAAE,IAAI,SAAS,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACvD,IAAI,GAAG,IAAI,SAAS,CAAC;CACrB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACvD,IAAI,GAAG,IAAI,SAAS,CAAC;CACrB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAA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AE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACvD,IAAI,GAAG,IAAI,SAAS,CAAC;CACrB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EA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AM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;CAChD,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;CAChD,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;CAChD,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;CAChD,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;CAChD,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;CAChD,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;CAChD,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAChD;CACA,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CACzC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CACzC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CAChB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CAChB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CACzC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CACzC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CAChB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CAChB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CACzC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CACzC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CAChB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CAChB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CACzC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CACzC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CAChB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CAChB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CACzC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CACzC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CAChB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CAChB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB;CACA,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;CAChB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;CAChB,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;CACxC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;CACxC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;CACxC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;CACxC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;CACxC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;CACxC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;CACxC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;CACxC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C;CACA,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;CAC7B,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;CAC7B,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;CAC7B,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;CAC7B,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;CAC7B,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;CAC7B,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;CAC7B,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;CAC7B,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG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E,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;KAC5B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;KAC5B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;KAC5C,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;KAC5B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;KAC/C,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAE,EAAE,CAAE,EAAE,CAAC,EAAE,GAAG,EAAE;KACnC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;KAC5B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;KACvB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;KACvB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;KAC5B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;KAC5B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;KAC5B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAE,EAAE,CAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;KACvC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;KAC5B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;KACvB,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;KAC/B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;KAC7B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE;KACxB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE;KACxB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE;KAC1B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE;KACzB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE;KAC/B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;KAC5B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;KAC5B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,EAAE,CAAC,EAAE,EAAE,EAAE;KAC9D,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;KAC5B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAE,EAAE,CAAC,EAAE,EAAE,EAAE;KAChD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,EAAE,CAAC,EAAE,EAAE,EAAE;KACzD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;KAC5B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;KAC5B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;KAC5B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;KAC5B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;KAC5B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;KAC5B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAE,EAAE,CAAE,EAAE,CAAC,EAAE,EAAE,EAAE;KACvC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAE,EAAE,CAAE,EAAE,CAAC,EAAE,EAAE,EAAE;KACvC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAE,EAAE,CAAE,EAAE,CAAC,EAAE,EAAE,EAAE;KACvC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAE,EAAE,CAAE,EAAE,CAAC,EAAE,EAAE,EAAE;KACvC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAE,EAAE,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,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAA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,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;CACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;CACtD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;CACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;CACtD,CAAC,CAAC;AACF;CACA,IAAI,EAAE,GAAG;CACT,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;CACtD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CACtD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;CACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;CACtD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;CACtD,CAAC,CAAC;AACF;CACA,IAAI,CAAC,GAAG;CACR,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CACxD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;CACxD,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;CACxD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;CACxD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,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EAAE,EAAE,EAAC;AACjD;CACA;CACA,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACpM;CACA;CACA,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;CAC7gD,IAAI,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7gD;CACA;CACA,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;CAC9gG,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;CAC9gG,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;CAC9gG,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC9gG;CACA;CACA,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;CAC9gG,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;CAC9gG,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;CAC9gG,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC9gG;CACA;CACA,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;CAC9gG,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;CAC9gG,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;CAC9gG,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EA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Y,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CA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"} |